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()
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 |
댓글