본문 바로가기
Image Processing (Python)

Z-Score Standardization (표준화)

by HanByol Jang 2021. 11. 8.
728x90

함수 설명

Z-score를 통해 데이터를 표준화하는 방법입니다.

 

Z-score란 각 값이 평균에서 얼마나 떨어져 있는지를 나타내는 척도로서 Z-score 변환 식은 다음과 같습니다.


x= 
원본 이미지의 픽셀 값
µ= 
원본 이미지의 픽셀 평균 값
σ = 원본 이미지의 픽셀의 표준편차

 

위의 수식을 이용하면 이미지의 픽셀값들을 종 모양의 정규 분포 형태로 바꿔줍니다.

Min-Max Normalization은 무조건 [0-1] 사이의 값으로 만들지만, Standardization은 데이터에 따라 값의 범위가 조금씩 달라집니다. 


코드 설명

python3 기반 numpy 라이브러리를 사용했습니다. 

 

mean_value = np.mean(image)
std_value = np.std(image)
output = (image - mean_value) / std_value

 

이미지의 평균과 표준편차를 구한 뒤, 수식처럼 평균을 빼고 표준편차로 나누어줍니다.


예제

import cv2
import numpy as np
import matplotlib.pyplot as plt

image = cv2.imread("test.jpg")

mean_value = np.mean(image)
std_value = np.std(image)
output = (image - mean_value) / std_value

plt.subplot(2, 1, 1)
plt.hist(np.ravel(image), bins=32)
plt.title('Before')
plt.subplot(2, 1, 2)
plt.hist(np.ravel(output), bins=32)
plt.title('After')
plt.subplots_adjust(hspace=0.5)
plt.show()

Z-score Standardization 을 적용하기 전후의 pixel value 변화

standardization을 한 뒤, pixel value의 분포가 정규분포 형태로 바뀐것을 확인 할 수 있습니다.

728x90

'Image Processing (Python)' 카테고리의 다른 글

Image Read (이미지 불러오기)  (0) 2021.11.11
Invert (색반전)  (0) 2021.11.10
Zero Padding  (0) 2021.11.09
Min-Max Normalization (정규화)  (0) 2021.11.04
Resize  (0) 2021.11.03

댓글