SW/Python

파이썬 : 영상 처리 : 이미지 읽기, RGB 최대값, 평균값, 교환

얇은생각 2019. 6. 23. 12:30
반응형

영상 처리 기본

(가) (5점) MatplotLib에 포함된 imread 함수를 사용하여 주어진 ‘q1.png’ 영상 파일을 읽고, 이를 화 면에 display하는 python code를 작성하시오.

(나) (10점) 영상 파일은 Red, Green, Blue의 세 가지 색으로 구성되어 있다. (가)에서 읽은 데이터로 부터 R, G, B 값의 최댓값 (R_max, G_max, B_max)과 평균값 (R_avg, G_avg, B_avg)을 구하시 오.

(다) (10점) (가)에서 읽은 영상 데이터의 각 픽셀 값의 컬러를 다음과 같이 바꾸어 화면에 display 하시오. (R → G, G → B, B → R)


import matplotlib.pyplot as plt
import matplotlib.image as mpimg
import numpy as np

# 2-가
img = mpimg.imread('q1.png')
plt.imshow(img)
plt.show()

# 2-나
Red = []
Green = []
Blue = []

for x in img:
for y in x:
Red.append(y[0])
Green.append(y[1])
Blue.append(y[2])

R_max = max(Red)
G_max = max(Green)
B_max = max(Blue)

R_avg = sum(Red) / len(Red)
G_avg = sum(Green) / len(Green)
B_avg = sum(Blue) / len(Blue)

print("Max Value")
print("R : ", R_max)
print("G : ", G_max)
print("B : ", B_max)

print("Avg Value")
print("R : ", R_avg)
print("G : ", G_avg)
print("B : ", B_avg)


# 2-다
for x in img:
for y in x:
swap = y[0]
y[0] = y[2]
y[2] = y[1]
y[1] = swap

plt.imshow(img)
plt.show()


(가) 우선 이미지 파일을 읽고 코드 상에서 출력하는 소스를 구현하였습니다. 


(나) 그리고 해당 이미지 파일의 RGB 값을 읽어오고, 해당 값들의 최대값과 평균값을 구해보았습니다. 이미 파이썬에서 제공하는 함수들을 활용하면 큰 어려움 없이 문제를 해결할 수 있었습니다.


(다) RGB 값을 교체하는 문제입니다. 전형적인 스왑을 활용해서 구현을 하였지, numpy를 활용한 더 쉬운 방법도 있을 것 같습니다. 해당 도메인 지식이 많이 부족하다는 것을 느끼게 되었습니다. 지금 공부하는 C++이 마무리 되는대로, 파이썬 인강도 꾸준히 수강할 계획입니다.

반응형