opencv

OpenCV Gamma Correction or Power Law Transform

hoon1016 2021. 4. 30. 14:58

Gamma Correction or Power Law Transform는 무엇일까?

디지털카메라 센서에 의해 기록된 이미지는 선형 이미지입니다. 즉, 한 장면에 두 개의 물체가 있고

한 물체가 다른 물체보다 두배 더 밝으면 센서는 강도도 두 배로 밝게 기록합니다. 그러나 인간의 눈은 동일한 방식으로 강도를 

인식하지 않습니다. 이 예에서 밝은 물체는 눈에 1.5 배 더 밝게 보일 수 있습니다.

사람의 눈을 모방하기 위해 카메라 하드웨어는 비선형 곡선을 사용하여 센서에 의해 기록된 강도를 수정합니다!

이 곡선의 모양을 제어하는 매개 변수를 감마라고하므로 감마 보정이라고 합니다!

참고해주시면 좋겠어요!

실제 실습으로 한 코드와 결과물을 보여드리겠습니다!

왼쪽이 기본 이미지입니다. 오른쪽은 코드로 인해 바뀐 이미지입니다.
코드입니다! 아래에 쉽게 복사 붙이기 할 수 있게 올려두겠습니다

import cv2

import numpy as np

 

img = cv2.imread('data/images/candle.jpg',1)

# 감마 조정

gamma = 10.5

 

fullRange = np.arange(0,256)

 

lookupTable = np.uint8(255 * np.power((fullRange / 255.0),gamma))

 

output = cv2.LUT(img, lookupTable)

 

combined = np.hstack([img, output])

 

cv2.imshow("combined" ,combined)

 

cv2.waitKey()

cv2.destroyAllWindows()