관리 메뉴

Bull

[Image Processing] 명도변환 (Power-Law Transformations)하기 (by MATLAB) 본문

Computer Science/Image Processing

[Image Processing] 명도변환 (Power-Law Transformations)하기 (by MATLAB)

Bull_ 2024. 3. 19. 16:59

개념


Digital Image Processing (Rafael C . Gonzalez , Richard E. Woods) 책에서 제시한 바에 따르면

 

명도 변환을 위해 기존의 픽셀 값은 다음과 같은 공식을 적용할 수 있다.

$${s=cr^γ}$$

 

여기서 c와  γ는 내가 정해줄 상수이다.

출처:  Digital Image Processing (Rafael C . Gonzalez , Richard E. Woods)

$c$는 상수이고 $γ$값을 조절할 때 input-output 관계는 위 사진같은 그래프를 따른다.

 

$γ$ = 1을 기준으로,  

 

$γ$  > 1은 밝아지고 $γ$  < 1은 어두워진다.

 

또한, $γ$값이 너무 커 범위 255를 넘어버리면 uint8()로 인해 최대 255값을 나타낸다.

 

어떤 $c$와 $γ$값이 최적화된 값인지는 잘 모르겠지만

 

보통 $c=1$ 상태에서 $γ$를 조절해주는 것이 일반적인 것으로 보인다.

사진


출처:&nbsp;https://mypetlife.co.kr/150519/

 

생성형 AI로 만들어진 듯한 사진같지만 귀여운 사진으로 골라봤다.

스크립트

pow_trans_dog.m


img = imread("dog.jpg");
grayscale_img = uint8(mean(img,3));
pow_img = uint8(double(grayscale_img).^(1.231));
imshow(pow_img);​
 
여기서 제곱 연산자에 .^에 .연산자를 사용하는 이유는 배열의 원소 별 지수승을 해주는 문법이라고 생각하면 된다.
 
 

결과


$γ > 1$

 

명암이 조절된 것의 확연한 차이를 느낄 수 있다.

 

$γ < 1$

다음은 감마의 값을 1보다 낮춰보았다.

pow_img = uint8(double(grayscale_img).^(0.7423))

 

감마가 1보다 낮아지니 어두워 진 것을 알 수 있다.