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

Pillow 라이브러리로 이미지 각 채널의 픽셀 RMS(제곱평균제곱근) 계산하기

Pillow 라이브러리를 활용하면 이미지의 각 채널(밴드)에 포함된 모든 픽셀 값의 RMS(Root Mean Square, 제곱평균제곱근)를 손쉽게 계산할 수 있습니다. 일반적인 컬러 이미지는 R(빨강), G(초록), B(파랑) 세 개의 채널로 구성되어 있으므로, 계산 결과 역시 세 개의 값이 담긴 리스트 형태로 반환됩니다.

RMS는 각 픽셀 값을 제곱한 뒤 평균을 구하고, 그 값에 다시 제곱근을 적용한 통계량입니다. 이미지 전체의 밝기와 강도 분포를 하나의 수치로 표현할 수 있어, 이미지 분석이나 품질 평가 등에 유용하게 활용됩니다.

알고리즘

  1. PIL 패키지에서 Image 모듈과 ImageStat 모듈을 임포트합니다.
  2. 이미지 파일을 엽니다.
  3. 이미지 객체를 ImageStat 클래스의 Stat 함수에 전달합니다.
  4. 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 등)를 제공하므로, 별도의 복잡한 연산 없이도 이미지 특성을 빠르게 파악할 수 있습니다.