Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python scikit-learn으로 회색조 이미지에 특정 색조 추가하기

회색조 이미지에 원하는 색조(tint)를 입히려면 'R'(빨강), 'G'(초록), 'B'(파랑) 채널의 배율값을 조정한 뒤, 이를 원본 이미지에 곱해주면 됩니다. 각 채널에 서로 다른 가중치를 부여하면 이미지 전체에 특정 색감이 자연스럽게 드러납니다.

아래는 scikit-learn(흔히 sklearn이라고 불림) 생태계의 skimage 모듈을 활용해 이를 구현한 Python 프로그램입니다. scikit-learn은 머신러닝 알고리즘 구현을 위해 널리 사용되는 Python 라이브러리로, 이미지 변환과 같은 전처리 작업에 유용한 유틸리티도 함께 제공합니다.

예제 코드

import matplotlib.pyplot as plt
from skimage import data
from skimage import color
path = "path to puppy_1.jpg"
orig_img = io.imread(path)
grayscale_img = rgb2gray(orig_img)
image = color.gray2rgb(grayscale_img)
red_multiplier = [0.7, 0, 0]
yellow_multiplier = [1, 0.9, 0]
fig, (ax1, ax2) = plt.subplots(ncols=2, figsize=(8, 4),
sharex=True, sharey=True)
ax1.imshow(red_multiplier * image)
ax1.set_title('Original image')
ax2.imshow(yellow_multiplier * image)
ax2.set_title('Tinted image')

실행 결과

Python scikit-learn으로 회색조 이미지에 특정 색조 추가하기

코드 설명

먼저 필요한 패키지들을 환경으로 가져옵니다. 이후 진행 과정은 다음과 같습니다.

  • 이미지가 저장된 파일 경로를 정의합니다.

  • 'imread' 함수를 사용해 해당 경로에 접근하여 이미지를 읽어옵니다.

  • 'rgb2gray' 함수는 이미지를 RGB 색상 공간에서 회색조(grayscale) 색상 공간으로 변환합니다.

  • 'gray2rgb' 함수는 회색조 이미지를 다시 RGB 색상 공간으로 되돌립니다. 색조를 입히려면 각 픽셀이 R, G, B 세 채널 값을 가져야 하기 때문에 이 과정이 필요합니다.

  • 멀티플라이어(multiplier)로 사용할 R, G, B 배율값을 정의합니다. 예제에서는 붉은 계열의 [0.7, 0, 0]과 노란 계열의 [1, 0.9, 0] 두 가지를 준비했습니다.

  • matplotlib 라이브러리를 사용해 두 개의 축(ax1, ax2)에 나란히 이미지를 시각화하고, 'imshow' 함수로 화면에 표시합니다.

  • 배율값을 이미지에 곱하면 각 색상 채널의 강도가 조절되어 최종적으로 색조가 적용된 이미지가 출력됩니다.

이처럼 채널별 배율만 바꿔주면 파란색, 초록색 등 어떤 색조든 손쉽게 적용할 수 있어, 이미지 분석 전 전처리 단계나 시각적 강조가 필요한 경우에 활용도가 높습니다.