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

Pillow 라이브러리로 이미지 각 채널의 픽셀 중앙값(Median) 계산하기

이 프로그램에서는 Python의 Pillow 라이브러리를 사용하여 이미지의 각 채널(밴드)에 있는 모든 픽셀 값의 중앙값(median)을 계산하는 방법을 알아봅니다.

일반적인 RGB 컬러 이미지는 빨강(Red), 초록(Green), 파랑(Blue)의 세 가지 색상 채널로 구성되어 있습니다. 따라서 중앙값을 계산하면 각 채널별 중앙값이 담긴 길이 3의 리스트를 얻게 됩니다.

중앙값은 모든 픽셀 값을 크기 순으로 정렬했을 때 정확히 가운데 위치하는 값으로, 평균값보다 극단적인 이상치(outlier)의 영향을 덜 받는 통계적 지표입니다. 이미지 분석이나 전처리 작업에서 유용하게 활용됩니다.

원본 이미지

Pillow 라이브러리로 이미지 각 채널의 픽셀 중앙값(Median) 계산하기

알고리즘

1단계: PIL에서 Image와 ImageStat 모듈을 임포트합니다.
2단계: Image.open() 함수로 이미지 파일을 엽니다.
3단계: 열린 이미지 객체를 ImageStat.Stat() 클래스에 전달합니다.
4단계: stat.median 속성을 출력하여 각 채널의 중앙값을 확인합니다.

예제 코드

from PIL import Image, ImageStat

im = Image.open('image_test.jpg')
stat = ImageStat.Stat(im)
print(stat.median)

실행 결과

[41, 43, 40]

위 출력 결과에서 볼 수 있듯이, 첫 번째 값(R), 두 번째 값(G), 세 번째 값(B) 순서대로 각 채널의 픽셀 중앙값이 리스트 형태로 반환됩니다. 즉, 이 이미지에서 빨강 채널의 중앙값은 41, 초록 채널은 43, 파랑 채널은 40입니다.

참고로 ImageStat.Stat 클래스는 median 외에도 mean(평균), stddev(표준편차), extrema(최솟값·최댓값) 등 다양한 이미지 통계 정보를 함께 제공하므로, 이미지의 밝기 분포나 특성을 분석할 때 매우 편리하게 사용할 수 있습니다.