提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
尽管histeq函数可以很有效地实现直方图均衡化,达到对比度增强的效果,但是有时候由于原图像的直方图变化过于剧烈,也就是过于陡峭,因此往往均衡化之后的图像会出现很不好的“退化效果”,这是我们不希望看到的,所以在这里就需要引入matlab中自适应直方图均衡函数adapthisteq。
一、举例并说明
给出一幅火星表面图像并进行直方图均衡化操作
I1=imread('MAR.tif');
I2=histeq(I1);
subplot(221),imshow(I1);
subplot(222),imhist(I1);
subplot(223),imshow(I2);
subplot(224),imhist(I2);
可以看到221的原图整体色调是偏暗的,为了得到较好的细节,我们采用了直方图均衡化的方法进行处理,但是处理的结果并没有我们预期的那么好。处理后的223图像产生了”褪色现象“。根据直方图我们可以发现,这是因为均衡化后的直方图中灰度级都移动到了较高侧一边。原本的直方图显示,原图的灰度级在0附近集中并且变化非常陡峭,因此在均衡化过程中出现了低端过于集中的像素点映射到了灰度级高端这种情况。
这时为了得到不褪色并且有充分细节的图像,我们需要采用adapthisteq函数
二、代码及结果展示
I3=adapthisteq(I1);
I4=adapthisteq(I1,'NumTiles',[25 25]);%将小片尺寸增加到[25 25]范围增大对比度
I5=adapthisteq(I1,'Numtiles',[25 25],'ClipLimit',0.1);%采用ClipLimit方法指定对比度增强的限制
figure(2)
subplot(221),imshow(I1),title('原图');
subplot(222),imshow(I3),title('默认值处理结果');
subplot(223),imshow(I4),title('扩大小片尺寸后处理结果');
subplot(224),imshow(I5),title('增强对比度限制后处理结果');
可以看到,采用默认值处理后的222图像尽管有所改善,但暗处的对比度仍然不能达到我们的预期要求;采用'NumTiles'将小片尺寸扩展到[25 25]后得到223图像的对比度得到了进一步的改善;最后再采用‘ClipLimit’指定对比度增强的限制,令处理值为0.1,该值越大则对比度增强越明显,最终我们得到了224图像,该图像对比度得到了明显的改善并且没有褪色现象。
总结
在histeq函数进行直方图均衡化不能达到预期效果时应该引入adapthisteq函数进行自适应的直方图均衡,并且引入各种参数,通过调试达到最好的图像对比度增强效果。