資源簡介
提高圖像對比度和亮度,改進圖像質(zhì)量,適用于偏暗、低對比度的圖像
代碼片段和文件信息
%直方圖均衡化??
clear?all
close?all
clc
DIR=‘D:\直方圖均衡\data\Imgs_MSRA\‘;
str=dirr(DIR);
for?k=1:length(str)
?close?all
I_in?=?imread(strcat(DIRstr(k).name));?
I_in?=?imresize(I_in[300400]);
%%%%%%%%%%%%%%%%計算標準差%%%%%%%%%%%%%%%%%%%%%%%%%
%?std_m=std_function(I_in);
%%%%%%%%%%%%%%%%%%end%%%%%%%%%%%%%%%%%%%%%%%
%?if?std_m<0.0249
I=rgb2gray(I_in);
I_gray?=?I;
%for?cn=1:size(I_in3)
I_matlab=histeq(I);?
I_o=I;
[heightwidth]?=?size(I);???
S_I_gray?=?0;
S_I_e?=?0;
%進行像素灰度統(tǒng)計;??
NumPixel?=?zeros(1256);%統(tǒng)計各灰度數(shù)目,共256個灰度級??
for?i?=?1:height??
????for?j?=?1:?width??
????????NumPixel(I(ij)?+?1)?=?NumPixel(I(ij)?+?1)?+?1;%對應(yīng)灰度值像素點數(shù)量增加一??
????end??
end??
%計算灰度分布密度??
for?i?=?1:256??
????ProbPixel(i)?=?NumPixel(i)?/?(height?*?width?*?0.8);??
end?
%計算累計直方圖分布??
CumuPixel?=?zeros(1256);??
for?i?=?1:256??
????if?i?==?1??
????????CumuPixel(i)?=?ProbPixel(i);??
????else??
%?j=(sum(ProbPixel(1:i)))/(height?*?width?*?1.0-(sum(ProbPixel(1:i))));
?j=(sum(ProbPixel(1:i)))/(1+sum(ProbPixel(1:i)));
%?j=(sum(ProbPixel(1:i-1)))*(1-ProbPixel(i)+0.5);
CumuPixel(i)=j;?
????end??
end??
CumuPixel=CumuPixel/(max(CumuPixel)-min(CumuPixel));
%累計分布取整??
CumuPixel?=?uint8(255?.*?CumuPixel?+?0.8);??
%對灰度值進行映射(均衡化)??
I2=im2double(I);
Im=filter2(fspecial(‘a(chǎn)verage‘5)I)/255;?
for?i?=?1:height??
????for?j?=?1:?width
????????if?I(ij)==0
?????????I(ij)=1;
????????end
?????????I_e(ij)?=?CumuPixel(I(ij))+(I2(ij)-Im(ij))*255;
%???????????I_e(ij)?=?CumuPixel(I(ij));
????????%方案一
%?????????if?I_e(ij)>=230
%??????????
評論
共有 條評論