灰度直方圖均衡化及其實現
直方圖均衡化
定義
當直方圖中畫素值集中在狹窄的灰度級範圍內或分佈極不均勻時,影像呈現較差的對比度。直方圖均衡化的目的就是將直方圖的灰度級概率分佈變換為均勻分佈。(如下圖所。注意,p(x)是概率密度函式,P(x)是概率分佈函式)
由於直方圖中概率較小的灰度級合併為更少的幾個或一個灰度級內,從而降低了影像的灰度級解析度,且某些細節資訊處於概率較小的灰度級中,這樣的灰度級歸併到其他灰度級內,從而造成影像細節資訊的丟失。
公式
輸入r,輸出s
s
=
T
(
r
)
=
(
L
−
1
)
∑
j
=
0
k
P
(
r
j
)
=
L
−
1
M
N
∑
j
=
0
k
n
j
,
(
k
=
0
,
1...
L
−
1
)
s=T(r)=(L-1)\sum_{j=0}^k{P(r_j)}=\frac{L-1}{MN}\sum_{j=0}^kn_j ,(k=0,1...L-1)
s=T(r)=(L−1)j=0∑kP(rj)=MNL−1j=0∑knj,(k=0,1...L−1)
對於輸入影像中每個具有r值的畫素值產生一個輸出灰度值s.
略微證明
先
定
義
兩
個
函
數
s
=
T
(
r
)
,
r
=
T
−
1
(
s
)
。
兩
個
互
為
反
函
數
先定義兩個函式s=T(r),r=T^{-1}(s)。 兩個互為反函式
先定義兩個函數s=T(r),r=T−1(s)。兩個互為反函數
接下來,F(x)是概率分佈函式,P(x)概率分佈。
F
s
(
s
)
=
P
r
(
S
<
s
)
=
P
r
(
T
(
R
)
<
s
)
=
P
r
(
R
<
T
−
1
(
s
)
)
=
P
r
(
R
<
r
)
=
F
r
(
r
)
F_{s}(s)=P_{r}(S<s)=P_{r}(T(R)<s)=P_{r}(R<T^{-1}(s))=P_{r}(R<r)=F_{r}(r)
Fs(s)=Pr(S<s)=Pr(T(R)<s)=Pr(R<T−1(s))=Pr(R<r)=Fr(r)
接下來對上式兩邊求導s(概率分佈函式的導數是概率密度函式),可得如下
p
s
(
s
)
=
p
r
(
r
)
d
r
d
s
p_{s}(s)=p_{r}(r)\frac{dr}{ds}
ps(s)=pr(r)dsdr
當直方圖均衡化的變換函式T( r )是連續型隨機變數R的概率分佈函式Fr( r),也就是輸入灰度級r的累計直方圖時,可表示為
s
=
F
r
(
r
)
=
∫
0
r
p
r
(
x
)
d
x
,
s=F_{r}(r)=\int_{0}^{r}p_r(x)dx,
s=Fr(r)=∫0rpr(x)dx,
對上面兩邊求導r,得到
d
s
d
r
=
p
r
(
r
)
\frac{ds}{dr}=p_{r}(r)
drds=pr(r)
將這個式子帶入當初求的哪個,得到
p
s
(
s
)
=
1
p_{s}(s)=1
ps(s)=1
這說明什麼??
當直方圖均衡化的變換函式T( r)是連續型隨機變數R的概率分佈函式Fr( r),也就是輸入灰度級r的累計直方圖時,變換後的概率密度函式是均勻分佈的!!!
所以
s
=
T
(
r
)
=
(
L
−
1
)
∑
j
=
0
k
P
(
r
j
)
=
L
−
1
M
N
∑
j
=
0
k
n
j
,
(
k
=
0
,
1...
L
−
1
)
s=T(r)=(L-1)\sum_{j=0}^k{P(r_j)}=\frac{L-1}{MN}\sum_{j=0}^kn_j ,(k=0,1...L-1)
s=T(r)=(L−1)j=0∑kP(rj)=MNL−1j=0∑knj,(k=0,1...L−1)
計算步驟
- 計算
P
(
r
k
)
=
n
k
M
N
(
k
=
0
,
1
,
2
,
3...
L
−
1
)
P(r_k)=\frac{n_k}{MN}(k=0,1,2,3...L-1)
P(rk)=MNnk(k=0,1,2,3...L−1)
其中nk是出現的次數。L是離散灰度級數 - 計算 s k = ( L − 1 ) ∑ j = 0 k P ( r j ) , ( K = 0 , 1 , . . . L − 1 ) 四 舍 五 入 為 整 數 s_k=(L-1)\sum_{j=0}^kP(r_j),(K=0,1,...L-1) 四捨五入為整數 sk=(L−1)j=0∑kP(rj),(K=0,1,...L−1)四舍五入為整數
- 確定 r k 與 s k 的 對 應 關 系 r_k與s_k的對應關係 rk與sk的對應關系
- 確定概率分佈
matlab實現
i=imread('d:\\cat.jpg');
i=rgb2gray(i);//rgb轉化為灰度圖
j=histeq(i);//灰度直方圖均衡化
figure('name','contrast');
subplot(1,2,1);imshow(i);title('raw pic');
subplot(1,2,2);imshow(j);title('process pic');
相關文章
- 灰度影像直方圖均衡化公式及實現直方圖公式
- 直方圖均衡化原理與實現直方圖
- 影像演算法之直方圖均衡化(灰度影像)演算法直方圖
- 直方圖均衡化直方圖
- OpenCV之影象直方圖均衡化OpenCV直方圖
- OpenCV計算機視覺學習(9)——影像直方圖 & 直方圖均衡化OpenCV計算機視覺直方圖
- halcon-直方圖均衡直方圖
- 【數字影像處理】直方圖均衡化詳解及程式設計實現直方圖程式設計
- [Python影象處理] 十一.灰度直方圖概念及OpenCV繪製直方圖Python直方圖OpenCV
- 一文搞懂直方圖均衡直方圖
- 關於高度均衡和頻率均衡的直方圖直方圖
- 【16位RAW影像處理三】直方圖均衡化及區域性直方圖均衡用於16點陣圖像的細節增強。直方圖
- 【效能優化】直方圖優化直方圖
- 【火爐煉AI】機器學習047-影像的直方圖均衡化操作AI機器學習直方圖
- 將彩色圖轉化為灰度圖及其原理介紹
- 【數字影象處理】四.MFC對話方塊繪製灰度直方圖直方圖
- 影像增強 | CLAHE 限制對比度自適應直方圖均衡化直方圖
- 【影像增強】CLAHE 限制對比度自適應直方圖均衡化直方圖
- 灰度共生矩陣GLCM及其matlab實現矩陣Matlab
- 直方圖直方圖
- 【效能優化】Oracle直方圖解析優化Oracle直方圖圖解
- 收集直方圖及檢視直方圖資訊直方圖
- 個人實驗程式碼記錄 | 數字影像處理實驗3·影像直方圖與均衡化處理直方圖
- MATLAB實現頻數直方圖——hist的使用Matlab直方圖
- 直方圖(histograms)直方圖Histogram
- 7.3 直方圖直方圖
- oracle 直方圖Oracle直方圖
- 04:垂直直方圖直方圖
- oracle直方圖使用Oracle直方圖
- 直方圖學習直方圖
- Oracle直方圖解析Oracle直方圖圖解
- [zt] Histograms - 直方圖Histogram直方圖
- 【影像處理】基於OpenCV實現影像直方圖的原理OpenCV直方圖
- dba_histograms等高直方圖和等頻直方圖的理解Histogram直方圖
- OpenCV-Python教程(9)(10)(11): 使用霍夫變換檢測直線 直方圖均衡化 輪廓檢測OpenCVPython直方圖
- 【效能優化】執行計劃與直方圖優化直方圖
- [20170615]直方圖-高度直方圖(11g).txt直方圖
- 直方圖中最大矩形直方圖