Qt를 이용하여 Histogram specification(Equalization) 구현하기
Qt Creator를 이용하여 Histogram specification를 구현해보자.
먼저, Histogram specification이란 무엇일까?
1. Histogram specification이란?
영상의 Histogram을 사용자가 원하는 모양의 Histogram으로 변형하고 싶을 때 사용하는 방법이다.
명암 대비를 개선 시키는 것은 Histogram Equalization과 비슷하다.
하지만 특정 부분을 향상시키거나, 원하는 모양의 Histogram을 만들 때 사용한다.
Histogram specification과 Histogram matching은 서로 비슷한 의미이다.
그렇다면, Histogram specification을 하기 위해서는 어떤 과정을 거쳐야 할까?
2. Histogram specification을 하기 위한 단계
1 . Input Image의 Histogram과 Target Image의 Histogram을 각각 구한다.
2 . 각각 구한 Histogram에 각각 누적 Histogram을 구한다.
3 . 누적 Histogram을 이용하여 정규화된 누적 Histogram을 만든다.
- $H(i)_n$은 정규화된 히스토그램 값,
- $Qmax$는 명도의 최대값 (여기서는 255)
- $H(i)$는 누적 히스토그램 값, n은 픽셀의 수(가로*세로)를 뜻한다.
자세한 설명은 아래의 동영상을 참고하자. (사진을 클릭하면 링크로 넘어갑니다.)
4 . 정규화된 누적 Histogram을 형변환을 통해 unsigned char 형식으로 바꾼다.
5 . QImage, QPixmap, QLabel을 이용하여 Histogram specification을 한 이미지를 출력한다.
3. Histogram specification 정리 및 소스 코드
내가 구현한 Histogram specification은 raw 파일을 기준으로 Grayscale 이미지에 대해서 구현을 하였다.
Histogram equalization의 단점을 보완할 수 있는 알고리즘이라고 생각한다.
내가 구현한 이미지에 대해서는 Histogram equalization 과 Histogram specification의 차이를 눈으로 확인하기는 어려웠다.
전체 코드는 Histogram Specification 를 참고하면 된다.
댓글남기기