CS/영상처리

[영상처리] Intensity Transformations(2)[Histogram Equalization][컴공과고씨]

시간빌게이츠 2022. 3. 22. 23:32
반응형

저번 글에서 기본적이 intensity transformations에서 공부했습니다.

이번에는 histogram equalization에 대해서 알아보겠습니다.

 

unnormalized histogram

위 그림 처럼 m*n의 픽셀들이 나열되어있을 때 각 픽셀이 나타내는 밝기가 0~n까지 있다면 밝기가 0인 칸의 개수 1인 칸의 개수 쭉쭉 세어서 옆의 그래프 처럼 나타낸 것이다. 

히스토그램의 bin을 이용해서 범위를 지정해 그 범위 밝기에 속한 칸의 개수를 세어 그래프를 만들어준 것이다. 이 때 이 범위를 bins라고 합니다.

 

unnormalized histogram가 있으니 normalized histogram도 있다.

normalized histogram는 unnormalized histogram에서 모든 값이 1이 되어지도록 만들어 준 것이다.

즉, 각 값을 총 픽셀의 개수로 나누어 주면 된다.

p(r) = h(r)/MN 여기서 p(r)의 모든 합은 1.

 

 

Histogram Equaliztion

이런식으로 몰려있는 부분을 uniform 분포로 바꾸어 주는 것을 말한다.

여기서 각각의 밝기 값들을 T(r)의 밝기 값으로 바꾸어 주는것인데 중요한 것은 이 T(r) 값은 monotonic increasing이여야 한다. Monotonic increasing은 값은 같아도 되지만 감소해서는 안되는 것을 뜻한다.

monotonic increasing

 

그러나 컴퓨터는 discrete 값을 원하기 때문에 contiuous에서 discrete 값으로 변환을 해주어야한다.

그래서 s=round(T(r))  => 반올림을 해주어 discrete하게 만들어 준다. 

이런식이 나오게 된다. 

 

원래는 왼쪽을 히스토그램 평탄화를 해주면 1/7인 0.143이 나와야 하지만 discrete하게 값을 바꿔주기 위해 반올림을 하다 보니 0 과 2는 나오지 않아 전체합을 1로 맞추어 주기위해 어떤 값은 좀 더 크게 어떤 값은 낮게 나오게 됨을 볼 수 있다.

 

 

Histogram Matching 

이것은 히스토그램 평탄화가 평탄하게 만드는 것이였다면 히스토그램 매칭은 원하는 모양으로 바꾸어 주는 것을 말한다.

원리는 위 그림처럼 원하는 것을 먼저 uniform하게 만들어 그것의 역함수를 구해준다. 그 후 origin을 uniform하게 만든 후 아까 구한 역함수에 origin을 uniform하게 만든 것에 값을 넣어주어 출력해주면 된다. 이렇게 하면 우리가 원하는 히스토그램의 분포를 만들 수 있다.

 

 

Local Histogram Statics 

이것은 이제 부분적인 곳을 변환할때 쓰는 것인데 예를 들면

 

지금 보면 가운데에 a가있는데 잘 보이지 않아 global 이퀄라이즈를 했지만 영상이 나아지지 않는 모습이다.

반면 local로 해준다면 전체 픽셀의 평균에 이 아닌 이웃한 픽셀의 평균을 가지고 계산을 해준다.  

그래서 이런식으로 글자를 강조할 수 있다. 

보면 1번째 조건식(K0 = 0.4 일 때)은 부분적인 평균이 mg를 k0만큼 어둡게 했을 때 보다 밝다면

2번째 조건식(k1 = 0.02, k2=0.4) 검은 쪽의 분산은 거의 0이 될거고 글자의 분산쪽은 0보다는 클것이다 그렇기 때문에 이것을 이용해서 분산이 저 식 사이에 있다면

-> E를 곱하여 강조를 해주는 것이다. 

반응형