scikit-learn(sklearn)이란?
Scikit-learn, 흔히 sklearn이라고 불리는 이 라이브러리는 파이썬에서 머신러닝 알고리즘을 구현하기 위해 널리 사용되는 대표적인 라이브러리입니다.
색 공간 변환이 필요한 이유
이미지를 하나의 색 공간(color space)에서 다른 색 공간으로 변환하는 작업은, 변환된 색 공간이 후속 연산을 수행하기에 더 적합한 입력값이 되도록 하기 위해 자주 활용됩니다. 여기에는 색상(hue), 명도(luminosity), 채도(saturation) 수준을 분리하는 작업 등이 포함됩니다.
이미지가 RGB 방식으로 표현될 경우, 색상과 명도 속성은 R, G, B 세 채널의 선형 결합(linear combination) 형태로 나타나게 됩니다.
RGB에서 회색조로 변환하는 원리
RGB 색 공간의 이미지를 회색조(grayscale)로 변환할 때, 각 픽셀 값은 빨강(R), 초록(G), 파랑(B) 픽셀 값의 가중 합(weighted sum)으로 계산됩니다. 수식은 아래와 같습니다.
Y = 0.2125 R + 0.7154 G + 0.0721 B
이처럼 특정 가중치를 사용하는 이유는, 세 값에 동일한 가중치를 부여하는 것보다 CRT 형광체 기준으로 인간이 빨강·초록·파랑 색상을 인식하는 방식을 더 정확하게 반영할 수 있기 때문입니다.
변환 예제 코드
다음은 RGB 이미지를 회색조 이미지로 변환하는 실제 코드 예제입니다.
from skimage import io
import matplotlib.pyplot as plt
from skimage import data
from skimage.color import rgb2gray
from skimage import data
path = "path to puppy_1.JPG"
orig_img = io.imread(path)
grayscale_img = rgb2gray(orig_img)
fig, axes = plt.subplots(1, 2, figsize=(8, 4))
ax = axes.ravel()
ax[0].imshow(orig_img)
ax[0].set_title("Original image")
ax[1].imshow(grayscale_img, cmap=plt.cm.gray)
ax[1].set_title("Grayscale image")
fig.tight_layout()
plt.show()실행 결과

코드 설명
- 필요한 라이브러리들을 임포트합니다.
- 이미지가 저장되어 있는 파일 경로를 정의합니다.
- 'imread' 함수를 사용하여 해당 경로에 접근하고 이미지를 읽어옵니다.
- 'imshow' 함수를 사용하여 이미지를 화면에 표시합니다.
- 'rgb2gray' 함수를 통해 이미지를 RGB 색 공간에서 회색조 색 공간으로 변환합니다.
- matplotlib 라이브러리를 활용해 데이터를 시각화하고, 원본 이미지와 회색조로 변환된 이미지를 나란히 보여줍니다.
- 최종 결과가 화면에 출력됩니다.