본문 바로가기

전생의 기억/영상처리

이미지 대비 향상 기법 Contrast Enhancement Method ( gamma correction and addition based histogram modification)

안녕하세요. 손톱귀신 블로그를 운영하는 easyJin 입니다.

이번에 이미지 대비 향상(Image Contrast Enhancement) 과 관련하여 논문 준비중, 좋은 논문을 알게 되어 이를 참고하여 히스토그램 수정과 감마 보정을 이용한 이미지 대비 기술에 대해 알아보게 되었어요.

이번 챕터는 앞선 포스팅을 총 정리하였어요.


An effective histogram modification schema for contrast enhancement 논문을 참고하였습니다.



- intro -

Contrast Enhancement, 줄여서 CE라고 해요.


 CE, 즉 이미지의 대비를 향상시킨다는 것은 이미지 프로세싱 이라는 기술에서 굉장히 중요한 부분을 차지하고 있어요.

인간의 시각 입장에서도 대비가 좋은 이미지는 인지력을 높여줄 수 있는 부분이에요.

마찬가지로 컴퓨터 비전 입장에서도 대비가 더 좋은 이미지일수록 더 좋은 이미지 데이터가 될 수 있어요.


주로 이 CE 기술이 쓰이는 분야 중 하나는 의료 영상 처리 분야에요.

이는 의료분야에서 영상을 가지고 X-Ray, CT, MIR, 초음파 사진 등을 분석하기 위해서는 알아보기 힘든 세세한 부분까지 대비를 향상시켜야 하기 때문이죠.

이 때문에 자연스럽게 의료 영상처리 분야에서는 대비 향상과 관련된 연구가 매우 광범위하게 이용되고 있어요.

외에도, 식별 감시 시스템이나 인공위성 이미지 분석, 안개 제거와 관련된 시스템 등에서도 이 CE 기술이 필요해요.


2017년에는 머신러닝 분야가 대두가 되면서, 최근에 아주 많은 양의 Contrast Enhancement 기술들이 제안, 발표되었어요.


CE 기술은 대략적으로는 두개의 기법으로 분류할 수 있답니다.


두가지 기법 (이렇게 표현하는게 맞는지 잘 모르겠네요) 

1. 직접 향상 기법(Direct enhancement method)

2. 간접 향상 기법(Indirect enhancement method)


_Direct 기법의 경우에는, 미리 정의된 어떠한 대비 수치에 의해서 이미지의 대비가 표현이 되요. 그리고 난 다음에, 이 측정된 대비 수치를 향상시키기 위해서 알고리즘들을 고안하는 방식이에요.


_InDirect 기법은 특정 대비 조건을 정하지 않고, 확률 밀도를 재분배해서 대비를 향상시키려고 하는 기법이에요.


특히, indirect 기법은 직관적이고 효율적인 결과가 나타난다는 특징을 가지고 있어서, 많은 연구자들이 주로 이 방법을 쓰고 있어요. 이 간접적 기법은 두 그룹으로 나눠지는데요.

첫번째는 멱급수 변환, 로그함수 변환, 그레이 레벨 분할 방식 등이 있어요.

두번째는 히스토그램 명확화(Histogram specification), 히스토그램 평활화(Histogram Equalization), (Histogram Modification) 등이 있어요.


다양한 대비 향상 기법들 중에서, 히스토그램 처리기술들이 가장 주목을 받고 있어요.

아래에서 히스토그램 처리기술들을 같이 알아봐요!


 Histogram Specificaton(Histogram Matching 이라고도 해요)는 원본 히스토그램의 입력을 변환 함수에 의해 변형된 좀더 바람직해진 히스토그램으로 수정하는 방식의 히스토그램 처리 기술이에요.

바람직한 히스토그램 출력을 위한 전형적인 분배 방식은, 지수함수와 가우시안 규칙을 따르는 것이에요.

히스토그램의 바람직한 출력 모양을 얻으려면, 사전 지식이 필요하게 되는데요. 이는 특정 어플리케이션에서는 얻는것이 불가능에 가까워요. 왜냐하면 자연에서 얻어진 영상은 규칙에 의해 히스토그램을 modifying 했을 때, 서로 너무나도 다른 특징을 가지는 히스토그램을 보여주기 때문이죠.


Histogram Equlization 은 히스토그램 처리 기술 중, 정말 가장 대표적인 기술이에요.

하지만, 가장 많이 쓰인다고 해서 항상 좋은것은 아니에요.

특정 이미지에서는 Equlization 처리가 만족스러운 결과를 내주지 못하죠.


대표적으로 이러한 만족스러운 결과는 세가지로 나타나요.

첫번째는 원본이미지와 너무 다른 밝기의 변화가 일어나는 경우에요.

두번째는 이미지 자체가 전체적으로 너무 밝게 변하는 포화상태가 되는 경우에요.

세번째는 많은 노이즈가 생기거나, 원본 영상의 데이터를 많이 잃어버리는 부작용이 나타나는 경우에요.



- Histogram Separation Techinques- 

히스토그램 분할 기술


히스토그램 처리 기술의 여러 단점들을 극복하기 위해서, 여러 연구집단들 에서는 HE를 기반으로 해서 향상된 기법들을 제시했어요.

Brightness preserving bi-histogram equalization (BBHE)가 대표적이에요.

BBHE 기법에서는 가장 처음으로, 출력 영상에서도 원본 영상의 밝기를 유지하기 위한 작업을 해요.


이를 위해서는 맨처음, 영상의 밝기 평균을 기반으로 해서 원본 히스토그램을 두개의 서브 히스토그램으로 나누는 작업을 하게 되요.


그리고 나서, 나눠진 두개의 서브 히스토그램에 전통적인 방법인 HE 기법을 각각 적용하게 되죠.


Wang 이라는 중국인 학자는 Dualistic Sub-image Histogram Equalization (DSIHE) 를 제안했어요.

이 방법은 앞서 보여드렸던 BBHE 기법과 다르게, mean값 대신 밝기의 median값을 사용해서 히스토그램을 두개의 서브 히스토그램으로 나누었어요.


뿐만 아니라, 이 BBHE 기법을 기초로 해서 그와 유사한 많은 기법들이 제안되었어요.

예를들어, minimum mean brightness error bi- HE,recursive mean-separate HE, brightness preserving dynamic HE, brightness preserving weight clustering HE 등이 대표적이죠.


위의 기술들이 기존의 전통적인 방식의 HE보다 시각적으로는 만족스러울지라도, 해당 기법을 제어하는 파라미터를 제공하지 못할 뿐더러, 잡음에 매우 취약하다는 특징을 지니게 되요.


최근의 입력 영상의 밝기를 보전하는 연구로, Image Contrast Enhancement method for preserving mean brightness

ICEPMB 기법이 제안되었어요. 2013년도에...


이 기법에서는 자동으로 히스토그램을 분리하는 모듈과 명도를 변환해주는 모듈로 구성되어있어요.


이 기법을 이용하면, 효과적으로 영상의 평균 밝기를 보존하고 영상의 특징을 잘 살려낼 수 있어요.

하지만, 대비의 향상에 대해서는, 부족한 면이 있어요.


중요한건, 이 원본 영상의 밝기 보존 기법들의 핵심 아이디어가 각각의 미리 정의된 메소드들에 의해서 그레이 스케일 레벨에서의 매핑 간격에 강제로 제약을 가한다는 것이에요.

ex) 0~50 : Weight - Various A , 50~ 100: Weight - Various B, 100~150: Weight - Various C ... 이런 식으로 말이죠.

이 기법들은 기존의 HE에 대해서 엄청나게 좋은 성능을 보여주고 있어요.

하지만, 이 기법들은 히스토그램의 뾰족한 부분이나, 구멍난 부분들과 같은 문제를 잘 다룰 수 없는 문제가 있어요.


이러한 문제때문에, 영상의 특징을 잘 보존시키면서 동시에 영상의 대비를 향상시킬 수 없는, 두마리 토끼를 다 잡을 수 없는 사태가 일어나게 되죠...


- Histogram Modification Techniques -

히스토그램 수정 기술들


영상에서 감마값을 교정하는 기술들은 원론적으로 브라운관 모니터의 input과 output의 특징들을 교정하는 역할을 하며, Histogram Modification 기술과 같이 구성되어 있어요.

Weight thresholded histogram이라고 불리는 WTHE에서는, 히스토그램 이퀄라이제이션을 하기 전에  가중치와 쓰레스홀딩을 이용하여 히스토그램을 수정하게 되요. 이렇게 함으로써 대비 향상에 있어서 제어성을 제공하죠.

하지만, 이 기법도 몇몇 이미지에서는 스파이크나 심한 굴곡과 같은 부분을 히스토그램에 생기게끔 하는 부작용을 초래할 수 있어요.

Huang이라는 사람은 이에 맞추어 적응적 감마 교정 및 가중치 배분을 적용한 기법을 적용하였어요.




대비를 향상시킨다는 것은, 전체 이미지에 있는 픽셀들의 그레이 스케일 레벨이 전반적으로 고르게 분포되어 있다는 뜻이 되죠. 물론 영상의 밝기에 따라서 전반적으로 어둡거나 밝은 영역의 데이터가 많이 있을 수 있지만, 좁은 레벨로 많은 양의 픽셀을 표현하다보니, 자연스럽게 대비가 안좋아지는 것이죠. 이렇게 좋지 않은 대비를 가지는 영상들에서 무언가를 분석하거나, 특징을 찾아야 하기 위해서는, 어떠한 방법을 사용하여 대비를 향상시켜야 할까요?

위의 포스트는 openCV 영상처리 라이브러리를 이용하여 Python에서 Histogram을 그린 것이에요.

Wiki.jpg 이미지는 전체적으로 120~ 200 레벨 구간에 픽셀들이 몰려있는 분포를 가지고 있어요.

따라서 전체적으로 영상이 회색으로 보이죠.



다음 영상은, 앞의 wiki.jpg 이미지에 대해 Histogram Equalization 을 한거에요.

우리 말로는 평활화라고 하여, 한곳에 집중적으로 몰려있는 히스토그램을, 모양은 유지시키면서 모든 레벨에 걸쳐서 균등하게 분포하도록, 옆으로 펴준다는 느낌으로 이해하시면 될거에요.

눈으로 보기에도, 전체적으로 영상의 대비가 많이 향상이 되었어요.

그에 따라, 누적 분포 함수를 보시면, 정비례 그래프의 형태를 뛰고, 누적값이 일정하게 증가하는 것을 볼 수 있어요.

이 말은 즉, 어느 한곳에서 심하게 값이 누적되어 있는 명암값이 없다는 뜻이고, 대비가 좋을 확률이 높다는 것을 의미해요.


다음은 또 다른 테스트 이미지 사진의 원본 히스토그램과, 히스토그램 평활화를 진행한 히스토그램이에요.

마찬가지로 CDF(누적분포함수)가 정비례 모양을 하고 있기 때문에, 과연 원본 이미지에 비해 대비가 좋아졌을까요?

정답은 바로 밑에서 확인하실 수 있어요.



네. 예상하셨겠지만, 대비가 향상되었다기보다는, 무언가 자연스럽지 않은 영상으로 바뀌었어요.

이것은 히스토그램 평활화 기법에서 자주 나타나는 부작용들이랍니다.

이 부작용들 중에 꼽을 수 있는 세가지가 있어요.


1. 밝기의 과포화

위의 사진같은 경우, 배경이 매우 어두운 영역으로 표현이 되어있기 때문에, 평활화를 진행하게 되면서 0에 가까이 있던 명암값들 중 일부가 50~ 100 사이의 값을 가지는 회색으로 변해버렸어요. 따라서 전반적으로 영상의 밝기가 증가했다고 볼 수 있어요. 따라서, 예기치 않게 무언가 걸레로 문댄듯 한 현상이 일어나게 되죠.

이를 밝기의 과포화, Brightness supersaturation이라고 해요.


2. 이미지의 세밀한 정보의 손실

평활화를 하면서, 이미지에서 표현되었던 디테일한 부분은, 명암값이 거의 차이가 나지 않는 영역들에서 조그마한 차이로 디테일한 부분이 표현이 되었던 것이에요. 그런데 평활화를 하게 되면, 대비를 향상시키기 위해 히스토그램의 명암값 분포를 모든 범위에 대해 늘어뜨리게 되기때문에, 디테일한 부분에 정보 손실을 가져올 수 있어요.


3. 노이즈

노이즈는, 1번의 과포화 현상과 마찬가지로, 검은색 영역이었던 부분이 회색으로 바뀌면서, 마치 잡음이 생긴 듯한 모습을 볼 수 있어요. 이러한 것을 해결하기 위해서 블러링을 하거나, 그레이 스케일 레벨에 따라서 히스토그램을 나누어서 이퀄라이제이션을 한 후 합치는 등의 방식으로 해결을 하기도 해요.


아무튼, 이러한 히스토그램 평활화의 부작용들에 대해 간단하게 살펴보았어요.



영상의 대비를 향상시키기 위한 기법으로는 주로 2그룹으로 나뉘어 연구가 진행되고 있어요.

 direct, 그리고 indirect 기법으로 나누어져 있어요.

direct 기법은 멱급수나 로그함수를 이용한 히스토그램 자체를 변형 시키는 것이에요.

또는 그레이 레벨을 분할 해서 처리하는 방법등이 direct 기법에 속해요.


그에 비해 indirect 기법은, equalization, specification, modification 등과 같이, 원본 이미지의 히스토그램에 CDF나 PDF를 변형시켜서 대비를 향상 시키는 방법이에요.

direct보다는 indirect 방법이 히스토그램의 변화를 눈으로 관찰할 수 있기때문에, 매우 직관적이고 인기가 많은 연구 분야랍니다.





본론으로 돌아가보면, 왜 이 달 사진에 대해서 진행한 히스토그램 평활화가 실패했는지 알 수 있어요.

그 이유는 바로 히스토그램에서 갑자기 확 솟아난 spike 부분과 갑자기 값이 뚝 떨어지는 pit 부분 때문이에요.

이러한 부분들은, 결국에는 CDF(누적 분포 함수)에서 그래프에 수평과 수직으로 표현이 되게 되요.

다시 말하면, 이러한 부분들은 이미지에서 어떠한 하나의 명암값으로 많이 표현이 되어있고, 어떤 구간 대의 명암값들은 아예 표현이 안되었다는 뜻이 되요. 위의 이미지에서는 48, 90 두 명암값들이 픽셀값의 상당부분을 차지하고 있구요.

50~90사이의 명암값(gray-scale-level)들은 거의 표현이 안된다는 뜻이 되죠. 이는 애초에 평활화를 하는 이유와 맞지 않는 결과를 얻게 됩니다. 그럼 어떻게 이러한 현상을 해결할 수 있을까요?

어떻게 해야 spike와 pit 부분을 해결할 수 있을까요?



방법은, 원본 Histogram에 대해서 수정을 하는 것이에요.