이미지에서 색상 선택 (Color Selection) - 2

2017. 2. 23. 19:49Udacity Nanodegree/(OLD) Self-Driving

그럼 파이썬으로 코드를 작성해봅시다.

우선, 이미지를 그려내기위해서 pyplot과 Matplotlib에 있는 image라이브러리를 불러옵시다.

이미지를 수정/관리하기 위한 용도로 Numpy또한 사용합시다.

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

그다음, 이미지를 불러옵시다. 그런후에 몇가지 속성을 출력해봅니다.

그리고 이미지의 크기를 확인하기위한 x,y사이즈를 측정한 다음, 복사본을 만듭니다.


(노트: 이미지를 수정/관리할때는 항상 Copy를 만들도록 합시다. 이미지에 직접 수정을 가하게 된다면 돌이킬수 없을수도있어요!)


# 이미지를 읽고 몇가지 속성을 출력해봅니다.
image = mpimg.imread('test.jpg')
print('This image is: ',type(image), 
         'with dimensions:', image.shape)

# x와 y의 사이즈를 측정하고, 복사본을 만듭니다.
ysize = image.shape[0]
xsize = image.shape[1]
# Note: always make a copy rather than simply using "="
color_select = np.copy(image)

다음으로 색상별 시작점(?)을 만들어줍니다. 여기서는 threshold라고 하는데, 각 색상별로 만들어줍니다.

(red_threshold, green_threshold, blue_threshold)

그리고 이 3개의 조합인 rgb_threshold를 만들어줍니다.

이 시작점들은 해당 픽셀의 색상별 최소값이 얼마나 되는지 알려주는 역할입니다.


# 색상 선택 기준을 정의해봅시다.
# Note: 이 코드들을 실행하게되면 아마도 눈에 보이지는 않을거에요!!
red_threshold = 0
green_threshold = 0
blue_threshold = 0
rgb_threshold = [red_threshold, green_threshold, blue_threshold]

다음으로 픽셀이 해당 threshold 미만이라면 0으로 만들어줍니다. (흰색으로 변경해준다는 말이에요)


그런다음 제가 설정해놓은 조건들에 대해 만족하는 픽셀이면 (threshold 이상의 경우를 말합니다) 


# 기준점 미만의 픽셀들의 정의
thresholds = (image[:,:,0] < rgb_threshold[0]) \
            | (image[:,:,1] < rgb_threshold[1]) \
            | (image[:,:,2] < rgb_threshold[2])
color_select[thresholds] = [0,0,0]

# 이미지를 출력합니다.           
plt.imshow(color_select)
plt.show()


여기서는 threshold가 0,0,0으로 되어있는데,

이 말은 모든 픽셀들을 포함하겠다는 말이에요!


이 수치들을 조정해서 화면에서 보이는 흰색 (또는 흰색 비스무레한것들)을 추출해내는 것입니다.



오늘은 여기까지입니다~