프로그래밍 공부
작성일
2022. 9. 27. 19:55
작성자
WDmil
728x90

히스토그램 평탄화

대비를 강화하는 기법중 가장 많이 사용하는 기법

 

Histogram

$ h(r_{k}) = n_{k} $

$r_{k}$ = k번째 gray level 값이다. 그레이 픽셀 값이다.

$n_{k}$ = 픽셀 계수. $r_{k}$ 에 h라는 값을 통과시키면 나오는 값.

4 4 3 3
4 4 3 3
4 1 2 3
0 1 2 3

input image

r이 0인경우 1개 r이 1인경우 1이 2개 r이 2인경우 2개 r이 3인경우 6개 등 픽셀값이 n인 값이 몃개 있느냐 에 따라 gray level이 정해진다.

 

일반적으로 히스토그램은 막대 그레프로 많이 그리게 된다.

 

Normalized Histogram 정규화된 히스토그렘 = 확률 개념과 같다.

$p(r_{k}) \equiv \frac{n_{k}}{n}$

위 그래프에서 gray level의 수는 16개 임으로 확률로 계산하면 $n_{0}$이 나올 확률은 $\frac{1}{16}$ 이다.

$n_{3}$이 나올 확률은 $\frac{6}{16}$ 이다.

노멀라이즈 된 히스토그램 = 확률분포로 나타낼 수 있다.

히스토그램 이미지

위 히스토그램 이미지로 보았을 떄 각명암도에 따른 gray level의 분포를 확인할 수 있다.

이미지의 위부터 3번째까지의 이미지는 히스토그램이 전반적으로 고르게 분포되어 있지 않기 떄문에 대비가 높은 영상 이라고 할 수 있다.

마지막 이미지는 고르게 분포되어 있어 대비도가 훨씬 높은 데이터를 얻을 수 있다.

이러한 균등한 확률분포를 uniform distribution 이라고 한다.

 

히스토그램 평탄화

HIstogram Equalization

히스토그램 이미지의 윗부터 3번째까지의 이미지를 4번째 이미지처럼 바꿔주는것. 히스토그램을 평탄화 시켜주는것.

 

입력의 히스토그렘 모양을 바꿔주는것. 모든 픽셀값의 범위가 동일한 값을 가지도록 transformation function  을 이용해 계산해주는것 log, power low 등의 방법을 이용한다.

https://inradestrt.tistory.com/101

 

위를 수식으로 표현하면

$s = T(r)$  이때 $ 0 \leq r \leq 1 $

r은 0 과 1사이에 위치하며

r = 0 : black

r = 1 : white

이때 값의 수는 256단계로 이루어져 있다.

T(r) : 단조 증가 r이 증가하면 s값도 증가해야 한다는것.

T = 255 - r 로 표현할 수 있다.

T = log(r) 이 될 수 있다.

단조증가는 위와 같은 그래프를 가져야만 한다.

Probability mass function [ PMF ] p(x) of random variable x

x = 랜덤변수

만약 n = 6일 경우[ 히스토그램 분포도가 6개 일경우 ] x = 1~6 사이의 랜덤한 수가 될 수 있다.

p(x=1) = 1이 될 확률. 이때, n = 6이라고 가정한다면,  $\frac{1}{6}$ 이다. 그러한 1~6까지는 확률이 모두 같아야 한다.

 

Probability density function p(x) of random variable x [PDF]

연속적일 경우.

x의 범위가$ 0 \leq x \leq 30 $ 일때 x의 범위는 무한의 범위를 갖는다. [ x는 실수가 아니기 때문 ]

x가 연속적으로 변하기 때문에 가지수는 무한이 된다.

이때 값 하나를 취했을 때 10~20 사이에 있을 확률 = 넓이로 계산한다.

전체넓이에서 10~20사이의 넓이가 확률이 되는것이다.

전체 값중 한개가 나올 확률이 $\frac{1}{30}$ 이라면, 파란 넓이 위치에 나올 확률은 10이기에 $\frac{1}{3}$  이 된다.

 

만약 p(x=15)일 확률을 구한다면 전체 범위는 0~30이지만 내부에 존재할 수 있는 x의 값은 무한대이기 때문에 0에 무한히 가깝다.

 

그래서 Probability density function 으로 확률을 구할 때는 면적범위로 확률을 구하게 된다.

 

Histogram Equalization

히스토그램 평탄화

입력영상 의 히스토그램 분포가 한쪽에 치우쳐져[ 이산적인 확률을 가지고 있다는 가정] 있을 때 출력을 고르게 분포시켜 출력시키는것.

 

디지털 영상 내부에서는 이산적인 확률을 가지게 되기 때문에 PMF에 대응하여 작업하게 된다.

[ 0,1로 나뉘어지기에 이산적이다 ]

 

일단은 이산적이지 않다는 가정하에 PDF방식으로 확률을 계산하고 구할 수 있다면 그때 PMF로 작업한다.

 

$p_{s}(s) = p_{r}(r)\mid\frac{dr}{ds}\mid $

 

$ p_{r}(r)$ = 입력 영상의 히스토그램

$p_{s}(s)$ = 출력 영상의 히스토그램

위 과정을 평탄화 라고 함.

그리고 평탄화를 하기 위한 T(r)값이 있다.

 

Transformation Function

Cumulative Distribution Function ( CDF ) [ 누적분포함수 ]

$s= T(r) =  \int_{0}^{r} p_{r}(\omega )d\omega $ p 를 r로 적분 0 ~ r 까지

$ \int_{0}^{r} p_{r} $ : 수식을 해석하면 [ 0 ~ r까지의 면적을 구하라. ] 라는 이야기 이다.

r = 0 이라면 $S = \int_{0}^{r} p_{r}(\omega )d\omega$하여 균등하게 분배한다.

r 이 1이라고 한다면. $ \int_{0}^{1} p_{r}(\omega )d\omega $ 이값으로 바뀜.

r이 0.1 이라면 s값은  일반화 했기에 $ \int_{0}^{\frac{1}{255}} p_{r}(\omega )d\omega $ 이다. 

r이 2라면 s값은 $ \int_{0}^{\frac{2}{255}} p_{r}(\omega )d\omega $

입력값 r을 받아서 T를 통과하면 s가 나오게되는 식이다.

 

Discrete Version

Probaility density function

Integrals > summations

r값이 이산적일 때 적분기호가 summations로 바뀐다.

$\frac{n_{j}}{n} = p(r_{j})$ 이다.

 

평탄화를 했을 때의 결과물
히스토그램 구현 예시

 

728x90