说明:
这个函数执行所谓对比度受限的自适应直方图均衡(CLAHE),此处的方法与直方图均衡化、规定化不同,这个方法是由用直方图规定化方法处理图像的小区域(称为小片)组成。然后用双线性内插将相邻小片组合起来以消除人工引入的边界效应,特别是可以限制均匀亮度区域的对比度,以免放大噪声。adapthisteq函数语法如下:
g=adapthisteq(f,param1,val1,param2,val2,...) %f是输入图像,g是输出图像,param/val 是表中所列的内容
参数 | 值 |
---|---|
‘NumTiles’ | 一个有正整数组成的两元素向量[r, c],由向量的行和列指定小片数。r和c都必须至少是2,小片总数等于r*c。默认值是[ 8 8] |
‘ClipLimit’ | 范围是[0 1]内的标量,用于指定对比度增强的限制。较高的值产生较强的对比度。默认值是0.01 |
‘NBins’ | 针对建立对比度增强变黄所用的直方图容器数目指定的正整数标量。较高的值会在较慢的处理速度下导致较大的动态范围。默认值是256 |
‘Range’ | 规定输出图像数据范围的字符串: ‘original’——范围被限制到原始图像的范围,[min(f(: )) max(f(: ))]。‘full’——使用输出图像类的整个范围。例如,对于uint8类的数据,范围是[0 255]。这是默认值 |
‘Distribution’ | 字符串,用于指定图像小片所需的直方图形状: ‘uniform’——平坦的直方图(默认值),‘rayleigh’——钟形直方图,‘exponential’——曲线直方图 |
‘Alpha’ | 适用于瑞利和指数分布的非负标量。默认值为0.4 |
示例:(冈萨雷斯书上的代码)
f=imread('D:\My Documents\桌面\house.jpg');
f=rgb2gray(f);
g1 = adapthisteq(f);
g2 = adapthisteq(f, 'NumTiles', [25 25]);
g3 = adapthisteq(f, 'NumTiles', [25 25], 'ClipLimit', 0.05);
subplot(221),imshow(f),title('原图像');
subplot(222),imshow(g1),title('默认值图像');
subplot(223),imshow(g2),title('设置参数NumTiles为[25 25]的图像');
subplot(224),imshow(g3),title('使用小片数量,且ClipLimit=0.05的图像');
运行结果效果图如下:(图1)
经过修改某些参数,获得如下的效果:
代码如下:
f=imread('D:\My Documents\桌面\house.jpg');
f=rgb2gray(f);
g1 = adapthisteq(f);
g2 = adapthisteq(f, 'NumTiles', [25 25], 'ClipLimit', 0.08);
g3 = adapthisteq(f, 'NumTiles', [25 25], 'ClipLimit', 0.08, 'NBins',255);
subplot(221),imshow(f),title('原图像');
subplot(222),imshow(g1),title('默认值图像');
subplot(223),imshow(g2),title('设置参数NumTiles为[25 25]的图像');
subplot(224),imshow(g3),title('使用小片数量,且ClipLimit=0.08的图像');
运行后得到的结果如下:(图2)
实验结论:
从上图中所示的结果相比较,设置参数会增加细节。比如说,设置’ClipLimit’参数,值越高对比度则越高。就图1和图2左下方的两幅图相比较,同样的NumTiles’, [25 25],但’ClipLimit’不同,图1的’ClipLimit’为0.01(默认值),图2的’ClipLimit’为0.08(自己设置的),得到的图像图2的图像细节比图1的多很多。图1与图2中右下方的两幅图对比,只是添加了一个参数’NBins’,255,得到的结果也不一样。由于图像中对比度增大,图像中出现了棋盘效应。