scikit-image 이미지와 NumPy 배열
scikit-image 이미지와 NumPy 배열
scikit-image에서 이미지는 곧 NumPy 배열이에요. 배열의 모양과 자료형을 이해하면 이미지 처리의 방향이 보여요. 이미지를 읽고, 값의 범위를 바꾸고, 저장하는 기본 흐름을 익혀 볼게요.
출처: https://scikit-image.org/docs/stable/user_guide/numpy_images.html
이미지 표현
그레이스케일 이미지는 (행, 열) 2차원 배열이고, 컬러 이미지는 (행, 열, 채널) 3차원 배열이에요. 채널 순서는 일반적으로 RGB예요.
from skimage import io
gray = io.imread("gray.png") # (h, w)
rgb = io.imread("color.png") # (h, w, 3)
값의 범위
scikit-image 함수는 이미지를 uint8(0255) 또는 1)로 취급해요. 많은 처리 함수는 float 입력을 기대하므로 float(0img_as_float() 같은 변환 함수를 써요.
from skimage import img_as_float
image_f = img_as_float(rgb) # 0~1 float으로 변환
이미지 저장
처리한 배열을 저장할 때는 skimage.io.imsave()를 써요.
from skimage import io
io.imsave("output.png", processed_image)
컬러와 그레이스케일 변환
skimage.color 모듈로 컬러공간을 변환할 수 있어요. 대표적으로 rgb2gray()가 있어요.
from skimage import color
gray = color.rgb2gray(rgb) # 0~1 float 그레이스케일