天天看點

MATLAB實作彩色圖像的直方圖均衡化算法

實驗内容

實作彩色圖像的直方圖均衡化算法

實驗步驟

算法流程可以參考灰階圖像的直方圖均衡化算法

傳送門:MATLAB實作灰階圖像的直方圖均衡化算法

實作源碼

function [J] = imhisteq_C(Im) 
[M,N,C]=size(Im);  %獲得輸入圖像尺寸M、N、C(size函數)

for index_d=1:C
I = Im(:,:,index_d);

I0 = double(I);%矩陣F中的資料由uint8類型轉換為double類型以便後續處理。

%計算圖像F的灰階直方圖h(imhist函數)
%或者通過兩重循環周遊每個像素點進而得到每個灰階值的累計像素點個數)。
h = imhist(I,256)';
%計算原圖的灰階分布機率Pf =h/(M*N)    (i=0,1,…,255)。
Pf = h/(M*N);
%計算原圖灰階的累計分布Pa(使用cumsum函數)
Pa = cumsum(Pf);
%令Pa(1)=0
Pa(1)=0;
%Pa_1= Pa *255。将Pa_1四舍五入.
Pa_1 = round(Pa*255);

%置兩重循環周遊圖像F中所有像素點,求出每一個像素點的灰階值F(i,j)
for i=1:M
    for j=1:N
        J(i,j,index_d) = Pa_1(round(I0(i,j)+1));
    end
end
%計算得到的新圖像矩陣中所有點的灰階值由double轉換為uint8
J = uint8(J);  %轉換uint8編碼
end;


           

測試代碼

F=imread('');
[G] = imhisteq_C(F);
figure,imshow(F);figure,imshow(G);
           

效果示範

MATLAB實作彩色圖像的直方圖均衡化算法
MATLAB實作彩色圖像的直方圖均衡化算法

繼續閱讀