直方圖均衡原理及Matlab實現
阿新 • • 發佈:2019-01-01
直方圖均衡(Histogram Equalization)
- 預備知識(PMF、CDF)
- 概述
- 實現
- Matlab程式碼
預備知識(PMF、CDF)
1.PMF
概率質量函式(Probability Mass Function)是離散隨機變數在各特定點取值上的概率。概率質量函式與概率密度函式的不同之處在於前者是對離散隨機變數定義的,而後者對連續隨機變數。
考慮一個離散的灰度影象{X},令
其中,L為影象所有的灰度數(通常為256)。
2.CDF
累積分佈函式(Cumulative Distribution Function),又叫分佈函式,是概率密度函式(概率質量函式)的積分(求和),能完整描述一個實隨機變數X的概率分佈。
考慮離散灰度影象{X},對應
概述
直方圖均衡是影象處理領域用於增強影象對比度的方法,尤其是當影象的有用資料的對比度相當接近的時候。通過這種方法,亮度可以更好地在直方圖上分佈。這樣就可以用於增強區域性的對比度而不影響整體的對比度,直方圖均衡化通過有效地擴充套件常用的亮度來實現這種功能。
缺點:直方圖均衡對處理的資料不加以選擇,它可能會增加背景噪聲的對比度並且降低有用訊號的對比度。
直方圖均衡化的基本思想是把原始影象的灰度分佈直方圖變換為均勻分佈的形式,擴大了畫素灰度值的動態範圍,從而增強影象對比度。把原始影象{X}對映為處理後圖像{Y}的對映函式需要滿足以下兩個條件:
(1)對映函式單調遞增。
(2)對映函式值域不超過原始影象灰度的動態範圍(即 ≤i<L
實現步驟
1.求原始影象灰度的PMF。
2.由PMF求出CDF。
3.將CDF對映為新影象的灰度值。
Matlab程式碼
I = imread('test.jpg');
[row,col] = size(I);
%display the original image
subplot(221);imshow(I);title('原始影象');
subplot(222);imhist(I);title('原始影象直方圖');
%Compute the PMF of all pixels of the image
PMF = zeros(1,256);
for i = 1:row
for j = 1:col
PMF(I(i,j) + 1) = PMF(I(i,j) + 1) + 1;
end
end
%Compute the CDF of all pixels of the image
CDF = zeros(1,256);
CDF(1) = PMF(1);
for i = 2:256
CDF(i) = CDF(i - 1) + PMF(i);
end
%Mapping
for i = 1:256
Map(i) = round((CDF(i)-1)*255/(row*col));
end
for i = 1:row
for j = 1:col
I(i,j) = Map(I(i,j) + 1);
end
end
subplot(223);imshow(I);title('處理後圖像');
subplot(224);imhist(I);title('處理後圖像直方圖');
執行結果: