?? myhisteq.m
字號:
function pimproved=myhidteq(pmat)
%直方圖均衡化,輸入為原始圖像的灰度值,輸出為均衡化的圖像灰度值
pmax=max(max(pmat)); %原始圖像最大的灰度值
[row col]=size(pmat); %原始圖像的大小
s=int(log2(pmax)); %原始圖像灰度級個數L-1
%nf用來統計各灰度級的像素數,pin_grade用來記錄圖像各點所在的灰度級
nf=zeros(s+1);
pin_grade=zeros(row,col);
for m=1:s+1
for i=1:row
for j=1:col
if(pmat(i,j)>=2^(m-1))&(pmat(i,j)<2^m)
nf(m)=nf(m)+1; %統計各灰度級的像素數
pin_grade(i,j)=m-1; %記錄圖像各點所在的灰度級
end
end
end
end
%統計原始圖像直方圖個灰度級的頻數
pf=zeros(s+1);
for m=1:s+1
pf(m)=nf(m)/sum(nf);
end
%計算累計分布函數
cf=cumsum(pf);
%灰度級映射時用到的常數gmax和gmin
gmax=2^(s+1)-1;
gmin=0;
%灰度級映射公式
g=int((gmax-gmin)*cf+gmin+0.5);
%統計映射后各灰度級的像素數目
ng=zeros(s+1);
for m=1:s+1
for i=1:s+1
if(g(i)==m)
ng(m)=ng(m)+nf(i);
end
end
end
%輸出圖像直方圖的頻數
pg=ng./sum(ng);
%計算輸出圖像各點的灰度值
pimproved=pmat+(2^g(pin_grade)-2^pin_grade);
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -