本文內容來自博客專欄《DIP數字圖像處理》
更多內容請點擊閱讀原文
1
前言
直方圖均衡(Histogram equalization)是利用直方圖分布,計算累加函數,按照累加函數做映射,能夠提升圖像對比度。
本文我會從每一個小的步驟編寫,說明,並給出每一階段的結果,讓你完全搞懂其原理。
直方圖均衡示例:
2
代碼
2.1 自己寫一個
還是那句話, 【要想搞明白真正原理,尤其你是做圖像算法的,還是得自己動手寫】
代碼如下:
%直方圖均衡Histogram equalization 原始碼Iin = imread('tire.tif');[numRows,numCols]=size(Iin);numBins=2^8;%直方圖統計,概率分布函數pdf(Probability distribution function)pdf=zeros(1,numBins);for ii=1:numRows for jj=1:numCols pdf(Iin(ii,jj)+1)=pdf(Iin(ii,jj)+1)+1; endendfigure()plot(pdf,'.-');grid on;title('直方圖統計');%累加直方圖得到,累加函數cdf(Cumulative distribution function)cdf=cumsum(pdf);cdf=cdf./cdf(end); %歸一化處理figure()plot(cdf,'.-');grid on;title('直方圖累加函數計算');
% 根據累加函數映射Iout=zeros(numRows,numCols);for ii=1:numRows for jj=1:numCols Iout(ii,jj)=255*cdf(Iin(ii,jj)+1); endendfigure()imshow([Iin,Iout]);title('左:原圖 右:處理圖')2.2 使用Matlab 自帶函數histeq
%直方圖均衡 Histogram equalizationIin = imread('tire.tif');Iout=histeq(Iin);imshow([Iin,Iout]);title('左:原圖 右:處理圖')
3
總結
直方圖均衡方法是一種很好的圖像對比度提升方法,但是並不適應所有場景,所以需要在其基礎上做改進,歷來學者做了不少創新。
不過,這種處理思想以及上述代碼,是經典,先搞懂經典,再去優化。【END】
本文內容來自博客專欄《DIP數字圖像處理》
更多內容請掃碼或者點擊閱讀原文