[파이썬] Pillow 이미지의 색상 분포 분석하기

이미지 처리를 위한 파이썬 라이브러리인 Pillow는 다양한 이미지 조작 기능을 제공합니다. 이 중에서 이미지의 색상 분포를 분석해보는 방법에 대해 알아보겠습니다.

필요한 라이브러리 설치하기

먼저, Pillow 라이브러리를 설치해야 합니다. 아래 명령어를 사용하여 설치할 수 있습니다.

pip install pillow

코드 예제

이제, Pillow를 사용하여 이미지의 색상 분포를 분석하는 코드를 작성해보겠습니다. 아래는 예제 코드입니다.

from PIL import Image
import numpy as np
import matplotlib.pyplot as plt

# 이미지 불러오기
image = Image.open('image.jpg')

# RGB 색상으로 변환
image = image.convert('RGB')

# 이미지 데이터를 numpy 배열로 변환
pixels = np.array(image)

# 각 색상 채널별 히스토그램 계산
red_hist = np.histogram(pixels[:, :, 0], bins=256, range=[0, 256])
green_hist = np.histogram(pixels[:, :, 1], bins=256, range=[0, 256])
blue_hist = np.histogram(pixels[:, :, 2], bins=256, range=[0, 256])

# 히스토그램 시각화
plt.figure(figsize=(10, 4))

plt.subplot(131)
plt.plot(red_hist[1][:-1], red_hist[0], color='red')
plt.title('Red Histogram')
plt.xlabel('Intensity')
plt.ylabel('Frequency')

plt.subplot(132)
plt.plot(green_hist[1][:-1], green_hist[0], color='green')
plt.title('Green Histogram')
plt.xlabel('Intensity')
plt.ylabel('Frequency')

plt.subplot(133)
plt.plot(blue_hist[1][:-1], blue_hist[0], color='blue')
plt.title('Blue Histogram')
plt.xlabel('Intensity')
plt.ylabel('Frequency')

plt.tight_layout()
plt.show()

위 코드에서는 Pillow의 Image 모듈을 사용하여 이미지를 불러온 후, RGB 색상으로 변환합니다. 그리고 numpy 배열로 변환한 후, 각 색상 채널별로 히스토그램을 계산하고 이를 시각화합니다.

사용 방법

  1. 이미지 파일을 불러오려면 코드의 image.jpg 부분을 해당 이미지 파일의 경로로 수정합니다.
  2. 코드를 실행하면 RGB 색상 채널별로 계산된 히스토그램이 시각화되어 나타납니다.

결론

Pillow의 강력한 이미지 처리 기능을 활용하여 이미지의 색상 분포를 분석하는 방법에 대해 알아보았습니다. 이를 통해 이미지의 색상 특성을 파악할 수 있고, 향후 이미지 처리 작업에 도움이 될 수 있습니다.