Pillow 라이브러리를 활용하면 이미지의 각 채널(밴드)에 포함된 모든 픽셀 값의 RMS(Root Mean Square, 제곱평균제곱근)를 손쉽게 계산할 수 있습니다. 일반적인 컬러 이미지는 R(빨강), G(초록), B(파랑) 세 개의 채널로 구성되어 있으므로, 계산 결과 역시 세 개의 값이 담긴 리스트 형태로 반환됩니다.
RMS는 각 픽셀 값을 제곱한 뒤 평균을 구하고, 그 값에 다시 제곱근을 적용한 통계량입니다. 이미지 전체의 밝기와 강도 분포를 하나의 수치로 표현할 수 있어, 이미지 분석이나 품질 평가 등에 유용하게 활용됩니다.
알고리즘
- PIL 패키지에서 Image 모듈과 ImageStat 모듈을 임포트합니다.
- 이미지 파일을 엽니다.
- 이미지 객체를 ImageStat 클래스의 Stat 함수에 전달합니다.
- rms 속성을 출력하여 각 채널별 픽셀 제곱평균제곱근 값을 확인합니다.
예제 코드
from PIL import Image, ImageStat
im = Image.open('image_test.jpg')
stat = ImageStat.Stat(im)
print(stat.rms)실행 결과
[104.86876722259062, 96.13661429330132, 91.8480515464677]
위 실행 결과에서 리스트의 첫 번째 값은 R 채널, 두 번째 값은 G 채널, 세 번째 값은 B 채널의 RMS에 해당합니다. 이처럼 ImageStat.Stat 객체는 단 한 줄의 코드만으로 이미지의 다양한 통계 정보(평균, 중앙값, 분산, RMS 등)를 제공하므로, 별도의 복잡한 연산 없이도 이미지 특성을 빠르게 파악할 수 있습니다.