图1 原图像 3.32、输入以下语句显示直方图
[m,n]=size(PS); %测量图像尺寸参数 GP=zeros(1,256); %预创建存放灰度出现概率的向量
for k=0:255
GP(k+1)=length(find(PS==k))/(m*n); %计算每级灰度出现的概率,将其存入GP中相应位置
end
figure,bar(0:255,GP,'g') %绘制直方图 title('原图像直方图') xlabel('灰度值') ylabel('出现概率') 原图像直方图
- 5 -
图2原图像直方图
由图1 显示的图像及其直方图(图2)可知这幅图像最为突出的特点是较暗且动态范围较低。直方图的宽度相对于整个灰度范围来说非常狭窄,图像质量比较差,地物可分性较差;在Matlab 环境下进行直方图的均衡化,对图像的亮度范围进行拉伸,以提高对比度。 3.33、输入语句,进行直方图均衡化
S1=zeros(1,256); for i=1:256 for j=1:i
S1(i)=GP(j)+S1(i); 计算Sk end end
S2=round((S1*256)+0.5); 将Sk归到相近级的灰度
for i=1:256
GPeq(i)=sum(GP(find(S2==i))); 计算现有每个灰度级出现的概率 end
figure,bar(0:255,GPeq,'b') 显示均衡化后的直方图 title('均衡化后的直方图') xlabel('灰度值')
- 6 -
ylabel('出现概率')
图3 直方图均衡化后的直方图
3.34、均衡化后的图像的直方图 PA=PS; or i=0:255
PA(find(PS==i))=S2(i+1); 将各个像素归一化后的灰度值赋给这个像素
end
figure,imshow(PA) 显示均衡化后的图像 title('均衡化后图像') imwrite(PA,'PicEqual.bmp');
- 7 -
图4 直方图均衡化后的图像
经过直方图均衡化,图像的对比度及平均亮度明显提高,直方图在整个亮度标度上显著扩展,图像质量提高。
3.35、下面使用函数 cumsum来实现变换功能
>> hnorm=imhist(I)./numel(I); >> cdf=cumsum(hnorm); >> x=linspace(0,1,256); >> plot(x,cdf) >> axis([0 1 0 1])
>> set(gca,'xtick',0:.2:1) >> set(gca,'ytick',0:.2:1)
>> xlabel('输入亮度值','fontsize',20) >> ylabel('输出亮度值','fontsize',20) >> text(0.18,0.5,'变换函数','fontsize',20)
- 8 -
图5 变换函数
其中横轴表示输入亮度值,纵轴表示输出亮度值。由图5 显示的变换函数能够直观地分辨出该变换函数将较窄的输入灰度级范围变换到了输出图像的整个亮度范围内。 对比图1 和图3 发现:经过直方图均衡化,图像的对比度明显增强,地物的轮廓变的更清晰,因此,直方图均衡化有助于改善对比度过低引起的遥感图像模糊。
- 9 -