본문 바로가기
AI 컴퓨터 비전프로젝트

[DL] 정규화

by 바다의 공간 2024. 9. 29.
4.정규화(normalization)
- 특정 영역에 값이 몰려있는 경우 화질을 개선하고,이미지 간의 연산 시 서로 조건이 다른경우 같은 조건으로 변경
- cv2.normalize()
   cv2.NORM_MINMAX: 최소값과 최대값을 0 ~ 255로 변경(가장 많이 사용됨)
    cv2.NORM_L1: 전체 합으로 나누어 정규화
    cv2.NORM_L2: 단위 벡터로 정규화(제곱합의 루트로 나누어 정규화)
    cv2.NORM_INF: 최대값으로 나누어 정규화

정규화를 하는 이유는 서로 조건을 다른걸 같은조건으로 만들어주고 비교할 수 있게 만드는 작업입니다.


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

img = cv2.imread('./Hawkes.jpg', cv2.IMREAD_GRAYSCALE)

img_norm = cv2.normalize(img, None, 0, 255, cv2.NORM_MINMAX)
hist = cv2.calcHist([img], [0], None, [256], [0, 255])
hist_norm = cv2.calcHist([img_norm], [0], None, [256], [0, 255])

cv2.imshow('img', img)
cv2.imshow('img_norm', img_norm)

hists = {'hist': hist, 'hist_norm': hist_norm}

plt.figure(figsize=(5, 9))
for i, (k, v) in enumerate(hists.items()):
    plt.subplot(1,2,i+1)
    plt.title(k)
    plt.plot(v)
plt.show()
cv2.waitKey()




노멀라이즈시키면서 규격을 맞춰주고 0~255값을 살짝 분포가 몰린것들을 볼 수 있었습니다.

확실히 보면 영상이 좀 더 화질개선이되었다는걸 알 수 있습니다.