基于Matlab的图像对比度增强方法比较
Comparison of Contrast Enhancement Methods Based on Matlab
DOI: 10.12677/CSA.2020.107142, PDF, HTML, XML, 下载: 585  浏览: 5,037 
作者: 郑 鑫*, 庞丽媛*:青岛大学,电子信息学院,山东 青岛
关键词: 图像对比度图像增强计算机分析Picture Contrast Photographic Enhancement Computer Analysis
摘要: 实际采集的图像最普遍的弱点是对比度不理想,也即客体与背景的灰度级相差太小,难以辨别;此外,为减少噪声而进行平滑化后,会使图像对比度进一步缩小。图像对比度增强处理的作用就在于增大图像的对比度,以使图像黑白较为分明,细节清晰可辨。它是改善图像的视觉效果,使之更适合于人眼的观察判断或计算机分析处理的一种比较简单有效的理论、经验和技巧相结合的技术手段,在图像增强技术中占有重要地位,并在实际中(如红外、雷达、卫星遥感、生物医学、工业视觉、字符、新闻等图像)得到广泛应用。图像对比度增强大多在空域上直接进行,其方法大都是面向问题的,当处理一幅可视图像时,常用主观视觉评定经过对比度增强后的图像质量。目前还没有一种通用而有效的定量评价准则。因此,实际应用中要找到一种行之有效的方法常需针对具体给定的图像广泛地进行实验,再从中选择最为合适的一种或者综合其中的几种。
Abstract: The most common weakness of the actual images is that the contrast is not ideal, that is, the gray-scale difference between the object and the background is too small to distinguish. In addition, the image contrast will be further reduced after smoothing to reduce noise. The function of image contrast enhancement processing is to increase the contrast of the image, so that the black and white of the image are more distinct, and the details are clearly distinguishable. It is a simple effective theory that improves the image visual effect, making it more suitable for the human eye observation or computer analysis, with the combination of experience, skills, and technology, plays an important role in image enhancement technology, and is widely used in practice, such as infrared, radar, satellite remote sensing, biomedical, industrial, visual images, characters, news, and so on. Image contrast enhancement is mostly carried out directly in airspace, and its methods are mostly problem-oriented. When processing a visual image, subjective vision is often used to evaluate the image quality after contrast enhancement. At present there is no general and effective quantitative evaluation criterion. Therefore, to find an effective method in practical application, it is often necessary to conduct extensive experiments on specific given images, and then select the most appropriate one or combine several of them.
文章引用:郑鑫, 庞丽媛. 基于Matlab的图像对比度增强方法比较[J]. 计算机科学与应用, 2020, 10(7): 1373-1390. https://doi.org/10.12677/CSA.2020.107142

1. 国内外研究现状

在借鉴国外相对成熟理论体系和技术应用体系的条件下,国内的增强技术和应用也有了很大的发展。总体来说,图像增强技术的发展大致经历了初创期、发展期、普及期和应用期4个阶段。初创期开始于20世纪60年代,当时的图像采用像素型光栅进行扫描显示,大多采用中、大型机对其进行处理。在这一时期由于图像存储成本高,处理设备造价高,因而其应用面很窄。20世纪70年代进入了发展期,开始大量采用中、大型机进行处理,图像处理也逐渐改用光栅扫描显示方式,特别是出现了CT和卫星遥感图像,对图像增强处理提出了一个更高的要求。到了20世纪80年代,图像增强技术进入普及期,此时的计算机已经能够承担起图形图像处理的任务。20世纪90年代进入了应用期,人们运用数字图像增强技术处理和分析遥感图像,以有效地进行资源和矿藏的勘探、调查、农业和城市的土地规划、作物估产、气象预报、灾害及军事目标的监视等。在生物医学工程方面,运用图像增强技术对X射线图像、超声图像和生物切片显微图像等进行处理,提高图像的清晰度和分辨率。在工业和工程方面,主要应用于无损探伤、质量检测和过程自动控制等方面。在公共安全方面,人像、指纹及其他痕迹的处理和识别,以及交通监控、事故分析等都在不同程度上使用了图像增强技术。图像增强是图像处理的重要组成部分,传统的图像增强方法对于改善图像质量发挥了极其重要的作用。随着对图像技术研究的不断深入和发展,新的图像增强方法不断出现。例如一些学者将模糊映射理论引入到图像增强算法中,提出了包括模糊松弛、模糊熵、模糊类等增强算法来解决增强算法中映射函数选择问题,并且随着交互式图像增强技术的应用,可以主观控制图像增强效果。同时利用直方图均衡技术的图像增强也有许多新的进展:例如提出了多层直方图结合亮度保持的均衡算法、动态分层直方图均衡算法。这些算法通过分割图像,然后在子层图像内做均衡处理,较好地解决了直方图均衡过程中的对比度过拉伸问题,并且可以控制子层灰度映射范围,增强效果较好。

20世纪20年代图片第一次通过海底电缆从伦敦传往纽约。当时人们通过字符模拟得到中间色调的方法来还原图像。早期的图像增强技术往往涉及硬件参数的设置,如打印过程的选择和亮度等级的分布等问题。在1921年年底提出了一种基于光学还原的新技术。在这一时期由于引入了一种用编码图像纸带去调制光束达到调节底片感光程度的方法,使灰度等级从5个灰度级增加到15个灰度等级,这种方法明显改善了图像复原的效果。到20世纪60年代早期第一台可以执行数字图像处理任务的大型计算机制造出来了,这标志着利用计算机技术处理数字图像时代的到来。1964年,研究人员在美国喷气推进实验室(JPL)里使用计算机以及其它硬件设备,采用几何校正、灰度变换、去噪声、傅里叶变换以及二维线性滤波等增强方法对航天探测器“徘徊者7号”发回的几千张月球照片进行处理,同时他们也考虑太阳位置和月球环境的影响,最终成功地绘制出了月球表面地图。随后他们又对1965年“徘徊者8号”发回地球的几万张照片进行了较为复杂的数字图像处理,使图像质量进一步提高。这些成绩不仅引起世界许多有关方面的注意而且JPL本身也更加重视对数字图像处理的研究和设备的改进,并专门成立了图像处理实验室IPL。在IPL里成功地对后来探测飞船发回的几十万张照片进行了更为复杂的图像处理,最终获得了月球的地形图、彩色图以及全景镶嵌图。从此数字图像增强技术走进了航空航天领域。

2. 本课题采用的方法

图像对比度增强的方法可以分为两类:一类是直接对比度增强方法;另一类是间接对比度增强方法。直方图拉伸和直方图均衡化是两种最常见的间接对比度增强方法。直方图拉伸是通过对比度拉伸对直方图进行调整,从而“扩大”前景和背景灰度的差别,以达到增强对比度的目的,这种方法可以利用线性或非线性的方法来实现;直方图均衡化则通过使用累积函数对灰度值进行“调整”以实现对比度的增强。

2.1. 灰度变换

灰度变换可使图像动态范围增大,对比度得到扩展,使图像清晰、特征明显,是图像增强的重要手段之一。它主要利用了点运算来修正像素灰度,由输入像素点的灰度值确定相应输出点的灰度值,是一种基于图像变换的操作。灰度变换不改变图像内的空间关系,除了灰度级的改变是根据某种特定的灰度变换函数进行以外,可以看作是“从像素到像素”的复制操作。基于点运算的灰度变换可表示为 [2]:

g ( x , y ) = T [ f ( x , y ) ] (2.1.1)

其中T被称为灰度变换函数,它描述了输入灰度值和输出灰度值之间的转换关系。一旦灰度变换函数确定,该灰度变换就被完全确定下来。

灰度变换包含的方法很多,如逆反处理、阈值变换、灰度拉伸、灰度切分、灰度级修正、动态范围调整等。虽然它们对图像的处理效果不同,但处理过程中都运用了点运算,通常可分为线性变换、分段线性变换、非线性变换。

为了突出图像中感兴趣的目标或灰度区间,相对抑制那些不感兴趣的灰度区间,可采用分段线性变化,把0~255整个灰度值区间分为若干线段,每一个直线段都对应一个局部的线性变换关系,常用的是三段线性变换方法,如图1所示。

其中 f ( x , y ) g ( x , y ) 分别为原图像和变换后的图像的灰度级,max f、max g分别为原图像和变换后的图像的最大灰度级。灰度区间[a,b]为要增强的目标所对应的灰度范围,变换后灰度范围扩展至[c,d]。变换时对[a,b]进行了线性拉伸,而[0,a]和[b,max]则被压缩,这两部分对应的细节信息损失了。若这两部分对应的像素数较少,则损失的信息也相应较少。其数学表达式如式(2.1) [3] 所示。

Figure 1. Three linear transformations

图1. 三段线性变换

g ( x , y ) = { c a × f ( x , y ) 0 f ( x , y ) b d c b a × [ f ( x , y ) a ] + c a f ( x , y ) b max g d max f b × [ f ( x , y ) b ] + d b < f ( x , y ) max f (2.1.2)

分段线性变换可以根据用户的需要,拉伸特征物体的灰度细节,虽然其他灰度区间对应的细节信息有所损失,这对于识别目标来说没有什么影响。

MATLAB软件中,imadjust函数可以实现图像的灰度变换,通过直方图变换调整图像的对比度。

J = imadjust ( I , [ low high ] , [ bottom top ] , gamma ) (2.1.3)

其中,gamma为校正量r,[low high]为原图像中要变换的灰度范围,[bottom top]指定了变换后的灰度范围。

2.2. 直方图均衡化

直方图的基本数学原理:

直方图均衡化方法可以产生一幅灰度级分布概率均匀的图像。以概率论中的概率密度和分布函数为基础,在这里我们举例来理解直方图的概念。

比如有如图2所示矩阵数据:

Figure 2. Image matrix date

图2. 图像矩阵数据

代表着数值为4的个数有5个,数值为6的个数有6个,数值为8的个数有4个,数值为10的个数有5个,则直方图如图3所示:

Figure 3. Histogram

图3. 直方图

真实的直方图灰度级是从0~255的,上图应该将灰度级为0的也标注出来才是正确的。

f ( x ) = x k n , k = 0 , 1 , 2 , , 10

f ( 4 ) = 5 20 = 0.25 , f ( 6 ) = 6 20 = 0.3

F ( 6 ) = f ( 0 ) + f ( 1 ) + f ( 2 ) + f ( 3 ) + f ( 4 ) + f ( 5 ) + f ( 6 ) = 0.55

原图中,灰度级为6的大小为6,直方图均衡化之后,灰度级为6的大小为20 × (0.25 + 0.55) = 14。

通过上述原理,我们不难发现,概率密度表示对应的某一灰度级数在图片中出现的概率,某一灰度级数的分布函数值则表示小于等于该灰度级数的所有灰度值在图片中所占概率。正如前文所述,直方图均衡化作用在于将原始直方图变为更均匀分布的图片。因此,基于上述数学原理,我们便可在此基础上推出直方图均衡化的实现原理:用分布函数代替概率密度函数,实现熵最大化 [4]。

综上所述,直方图均衡化方法是图像增强中最常用、最重要的方法之一。直方图均衡化是把原图像的直方图通过灰度变换函数修正为灰度均匀分布的直方图,然后按均衡直方图修正原图像。它以概率论为基础,运用灰度点运算来实现,从而达到增强的目的。它的变换函数取决于图像灰度直方图的累积分布函数。概括的说,就是把一已知灰度概率分布的图像,经过一种变换,使之演变成一幅具有均匀概率分布的新图像。有些图像在低值灰度区间上频率较大,使得图像中较暗区域中的细节看不清楚。这时可以将图像的灰度范围分开,并且让灰度频率较小的灰度级变大。当图像的直方图为一均匀分布时,图像的信息熵最大,此时图像包含的信息量最大,图像看起来就显得清晰 [5]。

直方图均衡化变换函数如图4所示,设r,s分别表示原图像和增强后图像的灰度。为了简单,假定所有像素的灰度已被归一化。当 r = s = 0 时,表示黑色;当 r = s = 1 时,表示白色;当r,s在[0,1]之间时,表示像素灰度在黑白之间变化。灰度变换函数为: s = T ( r )

Figure 4. Histogram equalization transformation function

图4. 直方图均衡化变换函数

实际上,由于直方图是近似的概率密度函数,用离散灰度级作变换时很少能够得到完全平坦的结果,而且,变换后往往会出现灰度级减少的现象,这种现象被称为“简并”现象。这是像素灰度有限的必然结果。由于上述原因,数字图像的直方图只能是近似的。直方图均衡化处理可大大改善图像灰度的动态范围。减少简并现象通常可采用两种方法:一种简单的方法是增加像素的比特数。

直方图均衡化处理的“中心思想”是把原始图像的灰度直方图从比较集中的某个灰度区间变成在全部灰度范围内的均匀分布。直方图均衡化就是对图像进行非线性拉伸,重新分配图像像素值,使一定灰度范围内的像素数量大致相同。直方图均衡化就是把给定图像的直方图分布改变成“均匀”分布直方图分布 [6]。

直方图均衡化过程如下:

1) 计算原图像的灰度直方图 P r ( r k )

2) 计算原图像的灰度累积分布函数Sk,进一步求出灰度变换表;

3) 根据灰度变换表,将原图像各灰度级映射为新的灰度级。

在MATLAB中,histeq函数可以实现直方图均衡化。函数调用方法为:

J = histeq ( I , N ) (2.2.1)

该命令对灰度图像I进行变换,返回有N级灰度的图像J,J中的每个灰度级具有大致相同的像素点,所以图像J的直方图较为平坦,当N小于I中灰度级数时,J的直方图更为平坦,缺省的N值为64。

2.3. 自适应直方图均衡化

1) 简述

自适应直方图均衡化(AHE)用来提升图像的对比度的一种计算机图像处理技术。和普通的直方图均衡算法不同,AHE算法通过计算图像的局部直方图,然后重新分布亮度来来改变图像对比度。因此,该算法更适合于改进图像的局部对比度以及获得更多的图像细节。

2) 算法的解释

普通的直方图均衡算法对于整幅图像的像素使用相同的直方图变换,对于那些像素值分布比较均衡的图像来说,算法的效果很好。然后,如果图像中包括明显比图像其它区域暗或者亮的部分,在这些部分的对比度将得不到有效的增强。

AHE算法通过对局部区域执行响应的直方图均衡来改变上述问题。该算法首先被开发出来适用于改进航天器驾驶舱的显示效果。其最简单的形式,就是每个像素通过其周边一个矩形范围内的像素的直方图进行均衡化。均衡的方式则完全同普通的均衡化算法:变换函数同像素周边的累积直方图函数(CDF)成比例。

图像边缘的像素需要特殊处理,因为边缘像素的领域不完全在图像内部。这个通过镜像图像边缘的行像素或列像素来解决。直接复制边缘的像素进行扩充是不合适的。因为这会导致带有剑锋的领域直方图。

3) AHE的属性

邻域的大小是该方法的一个参数。邻域小,对比度得到增强,邻域大,则对比度降低。当某个区域包含的像素值非常相似,其直方图就会尖状化,此时直方图的变换函数会将一个很窄范围内的像素映射到整个像素范围。这将使得某些平坦区域中的少量噪音经AHE处理后过度放大。

2.4. 对比度受限的自适应直方图均衡化

1) 简述

CLAHE同普通的自适应直方图均衡不同的地方主要是其对比度限幅。这个特性也可以应用到全局直方图均衡化中,即构成所谓的限制对比度直方图均衡(CLHE),但这在实际中很少使用。在CLAHE中,对于每个小区域都必须使用对比度限幅。CLAHE主要是用来克服AHE的过度放大噪音的问题。

这主要是通过限制AHE算法的对比提高程度来达到的。在指定的像素值周边的对比度放大主要是由变换函数的斜度决定的。这个斜度和领域的累积直方图的斜度成比例。CLAHE通过在计算CDF前用预先定义的阈值来裁剪直方图以达到限制放大幅度的目的。这限制了CDF的斜度因此,也限制了变换函数的斜度。直方图被裁剪的值,也就是所谓的裁剪限幅,取决于直方图的分布因此也取决于领域大小的取值。

通常,直接忽略掉那些超出直方图裁剪限幅的部分是不好的,而应该将这些裁剪掉的部分均匀的分布到直方图的其他部分。如下图5所示。

Figure 5. Schematic diagram of uniform distribution

图5. 均匀分布示意图

这个重分布的过程可能会导致那些倍裁剪掉的部分由重新超过了裁剪值(如上图的绿色部分所示)。如果这不是所希望的,可以不带使用重复的过程指导这个超出的部分已经变得微不足道了。

2) 通过插值加快计算速度

如上所述的直接的自适应直方图,不管是否带有对比度限制,都需要对图像中的每个像素计算器领域直方图以及对应的变换函数,这使得算法及其耗时。而插值使得上述算法效率上有极大的提升,并且质量上没有下降。首先,将图像均匀分成等份矩形大小,如下图6的右侧部分所示(8行8列64个块是常用的选择)。然后计算个块的直方图、CDF以及对应的变换函数。这个变换函数对于块的中心像素(下图左侧部分的黑色小方块)是完全符合原始定义的。而其他的像素通过哪些于其临近的四个块的变换函数插值获取。位于图6中蓝色阴影部分的像素采用双线性查插值,而位于图6边缘的(绿色阴影)部分采用线性插值,角点处(红色阴影处)直接使用块所在的变换函数。

Figure 6. Interpolation schematic diagram

图6. 插值算法示意图

这样的过程极大的降低了变换函数需要计算的次数,只是增加了一些双线性插值的计算量。

3) 函数实现

在MATLAB中,adapthisteq函数 [7] 可以执行对比度受限的自适应直方图均衡,该函数语法如下所示:

J = adapthisteq ( I , param 1 , val 1 , param 2 , val 2 , ) (2.4.1)

其中,I是输入图像,J是输出图像,parma/val是图7中所列的内容:

Figure 7. Adapthisteq function parameter table

图7. Adapthisteq函数参数表

3. 实验结果及分析

3.1. 开发工具介绍

MATLAB是MATrix LABoratory (“矩阵实验室”)的缩写,是由美国MathWorks公司开发的集数值计算、符号计算和图形可视化三大基本功能于一体的,功能强大、操作简单的语言。是国际公认的优秀数学应用软件之一。

MATLAB的基本数据单位是矩阵,它的指令表达式与数学,工程中常用的形式十分相似,故用MATLAB来解算问题要比用C,FORTRAN等语言完相同的事情简捷得多。

MATLAB包括拥有数百个内部函数的主包和三十几种工具包Toolbox。工具包又可以分为功能性工具包和学科工具包。功能工具包用来扩充MATLAB的符号计算,可视化建模仿真,文字处理及实时控制等功能。学科工具包是专业性比较强的工具包,控制工具包,信号处理工具包,通信工具包等都属于此类。

开放性使MATLAB广受用户欢迎。除内部函数外,所有MATLAB主包文件和各种工具包都是可读可修改的文件,用户通过对源程序的修改或加入自己编写程序构造新的专用工具包。

3.2. Imadjust函数对图像的处理

3.2.1. 通过函数imadjust()调整灰度图像灰度范围

代码1:

I = imread('F:layblack.jpg');

J = imadjust(I,[0.2,0.5],[0,1]);

figure

subplot(121),imshow(I);

subplot(122),imshow(J);

实验结果如图8

Figure 8. The left is the original image, and the right is the processed image

图8. 左边是原图,右边是处理后图像

结果分析:

在程序中通过函数imadjust()调整灰度图像的灰度范围。原图像灰度范围为0~255,程序将小于255 × 0.2的灰度值设为0,将大于255 × 0.5的灰度值设为255。

代码2:

I = imread('F:layblack.jpg');

J = imadjust(I,[0.5,0.9],[0,1]);

figure

subplot(121),imshow(I);title('原图');

subplot(122),imshow(J);title('处理后图像')

实验结果如图9

Figure 9. The left is the original image, and the right is the processed image

图9. 左边是原图,右边是处理后图像

结果分析:代码2相对于代码1,更改了[low_in;high_in]的值,对比两个处理后的图像可以得到low_in的值越大,图像就越容易变黑色,而high_in的值越小,就越容易变白色。

3.2.2. 通过函数Imadjust()调整灰度图像的亮度

代码:

close all;clear all;clc;

%调整灰度图像的灰度和显示亮度

I=imread('F:layblack.jpg');

J=imadjust(I,[0.1 0.5],[0 1],0.4);%调整图像灰度并调高亮度

K=imadjust(I,[0.1 0.5],[0 1],4);%调整图像灰度并调低亮度

figure,

subplot(131),imshow(uint8(I));title('原图');

subplot(132),imshow(uint8(J));title('调整图像灰度调高亮度');

subplot(133),imshow(uint8(K));title('调整图像灰度调低亮度');

实验结果如图10

结果分析:

左侧是原图,中间是调整图像灰度并加强亮色值的输出后显示的图像,右侧是调整图像灰度并加强暗色值的输出后显示的图像。之所以处理后的图像一个加强亮色,而另一个加强暗色,是因为它们的Gamma值不同,Gamma曲线是一种特殊的色调曲线,当Gamma值等于1的时候,曲线为与坐标轴成45˚的直线,这个时候表示输入和输出密度相同;当Gamma值大于1的时候,将会造成输出亮化;当Gamma值小于1的时候,将会造成输出暗化。

Figure 10. The left is the original image, the middle is the image of increasing the brightness, the right is the image of reducing the brightness

图10. 左边原图,中间调高亮度图,右边调低亮度图

3.2.3. 通过函数Imadjust()对彩色图像进行增强

代码:

close all;clear all;clc;

%imadjust()对彩色图像进行增强

I=imread('F:lay.jpg');

J=imadjust(I,[0.2 0.3 0;0.6 0.7 1],[]);%imadjust()对RGB图像进行处理

figure,

subplot(121),imshow(uint8(I));

subplot(122),imshow(uint8(J));

实验结果如图11

Figure 11. The left is the original image, and the right is the processed image

图11. 左边是原图,右边是处理后图像

结果分析:

左侧为原图,右侧为处理后的图像,可以看到图像亮度明显增强。

3.3. Histeq函数对图像的处理

3.3.1. Histeq函数对灰度图像的处理

代码:

I = imread('F:beijing.jpg');

J = histeq(I);

imshowpair(I,J,'montage')

axis off

figure

subplot(121),imhist(I,64),title('原图的直方图')

subplot(122),imhist(J,64),title('直方图均衡化后的直方图')

实验结果如图12图13所示:

Figure 12. Histogram of original image and histogram of equalized image

图12. 原图直方图和均衡化后的直方图

Figure 13. The left is the original image, and the right is the processed image

图13. 左边是原图,右边是处理后图像

结果分析:

由直方图对比可知,原图像的直方图通过灰度变换函数修正为灰度均匀分布的直方图,同时,histeq函数处理后的图像对比度明显增强。

缺点:1) 变化后图像的灰度级减少,某些细节消失;2) 某些图像,如直方图有高峰,经处理后对比度不自然的过分增强。

3.3.2. Histeq函数对彩色图像的处理

代码1:

close all;clc;

rgb=imread('F:night.jpg');

% 对饱和度与亮度进行histeq处理

hsv=rgb2hsv(rgb);

h=hsv(:,:,1);

s=hsv(:,:,2);

v=hsv(:,:,3);

V=histeq(v);

result_hsv=hsv2rgb(h,s,V);

% 对RGB每个通道进行histeq处理

r=rgb(:,:,1);

g=rgb(:,:,2);

b=rgb(:,:,3);

R=histeq(r);

G=histeq(g);

B=histeq(b);

result_rgb=cat(3,R,G,B);

% 结果显示

montage({rgb,result_hsv,result_rgb},'Size',[1 3])

title(原始图像和HSV以及RGB)

实验结果如图14

Figure 14. Original image, HSV image, RGB image

图14. 原始图像,HSV图像,RGB图像)

结果分析:

对彩色图像进行直方图均衡化的两种主要策略 [8]:一种是对R,G,B三个通道分别进行处理;另外一种是转换到另外一个色彩空间中再进行处理,例如HSV (转换后只需要对V通道进行处理即可)。

代码2

clear all;clc;close all;

ImgFile='F:lay.jpg';

ImgIn=imread(ImgFile);

ImgHistEq=histeq(ImgIn,256);

figure;subplot(121);imshow(uint8(ImgIn));title('原图');

subplot(122);imshow(ImgHistEq);title('全局灰度增强 - 直方图均衡');

figure;subplot(121);imhist(ImgIn,256);

axis([0 255 0 1e4]);title('原图的直方图');

subplot(122);imhist(ImgHistEq,256);axis([0 255 0 1e4]);title('直方图均衡化后的直方图');

实验结果如图15图16所示:

Figure 15. The left is the original image, and the right is the processed image

图15. 左边是原图,右边是处理后图像

Figure 16. Histogram of original image and histogram of equalized image

图16. 原图直方图和均衡化后的直方图

结果分析:用histeq和imadjust处理同一张彩色图像,histeq处理后的视觉效果明显好于imadjust。

3.4. Adapthisteq函数对图像处理

3.4.1. Adapthisteq函数对灰度图像处理

代码:

I = imread('F:beijing.jpg');

J = adapthisteq(I,'clipLimit',0.02);

imshowpair(I,J,'montage');%%使用蒙太奇显示图像,把大小相同的连续图像显示出来

title('原始图像 (left) and 对比度增强后图像 (right)')

实验结果如图17

Figure 17. The left is the original image, and the right is the processed image

图17. 左边是原图,右边是处理后图像

结果分析:

用adapthisteq处理图像,设置Cliplimit为0.02用来限制对比度,Cliplimit值越高对比度越强,处理后的图像细节越突出。

3.4.2. Adapthisteq函数对彩色图像处理

代码:

RGB = imread('F:night.jpg');

%imshow(RGB)

I = rgb2gray(RGB);

%figure

%imshow(I)

montage({RGB,I},'Size',[1 2]),title('原图和灰度图像')

g1 = adapthisteq(I);

g2 = adapthisteq(I, 'NumTiles', [25 25]);

g3 = adapthisteq(I, 'NumTiles', [25 25], 'ClipLimit', 0.05);

figure%%图1

subplot(221),imshow(I),title('原图像');

subplot(222),imshow(g1),title('默认值图像');

subplot(223),imshow(g2),title('设置参数NumTiles为[25 25]的图像');

subplot(224),imshow(g3),title('使用小片数量,且ClipLimit=0.05的图像');

%%更改参数以后

g4 = adapthisteq(I);

g5 = adapthisteq(I, 'NumTiles', [25 25], 'ClipLimit', 0.08);

g6 = adapthisteq(I, 'NumTiles', [25 25], 'ClipLimit', 0.08, 'NBins',255);

figure%%图2

subplot(221),imshow(I),title('原图像');

subplot(222),imshow(g4),title('默认值图像');

subplot(223),imshow(g5),title('使用小片数量,且ClipLimit=0.08的图像');

subplot(224),imshow(g6),title('使用小片数量,且ClipLimit=0.08的图像,且NBins=255');

实验结果如图18图19图20

Figure 18. Original and grayscale images

图18. 原图和灰度图像

Figure 19. The top left is the original image, the top right is the default image, and the bottom is the set parameter images)

图19. 左上为原图,右上为默认值图像,下面为设置参数的图像

Figure 20. The top left is the original image, the top right is the default image, and the bottom is the set parameter images

图20. 左上为原图,右上为默认值图像,下面为设置参数的图像

结果分析:

从上图中所示的结果相比较,设置参数会增加细节。比如说,设置“ClipLimit”参数,值越高对比度则越高。就图19图20左下方的两幅图相比较,同样的NumTiles[2525],但“ClipLimit”不同,图19的“ClipLimit”为0.01(默认值),图20的“ClipLimit”为0.08 (自己设置的),得到的图像图20的图像细节比图19的多很多。图19图20中右下方的两幅图对比,只是添加了一个参数“NBins”,255,得到的结果也不一样。由于图像中对比度增大,图像中出现了棋盘效应。

3.5. Imadjust、Histeq、Adapthisteq三种函数对图像处理的比较

对灰度图像处理结果如图21

Figure 21. Original image, imadjust image, histeq image, adapthisteq image

图21. 原图和imadjust图像,histeq图像,adapthisteq图像

对彩色图像处理结果如图22

Figure 22. Original image, imadjust image, histeq image, adapthisteq image

图22. 原图和imadjust图像,histeq图像,adapthisteq图像

4. 总结与展望

4.1. 全文总结

本文介绍了图像对比度增强的几种方法,常见的方法有灰度变换,直方图均衡化,自适应直方图均衡化以及对比度受限的自适应均衡化等等,重点介绍了MATLAB中imadjust、histeq和adapthisteq三种函数分别对灰度图像和彩色图像的处理,并且对比了这三种方法的性能,imadjust对图像处理后的图片不如histeq处理后的图像视觉效果好,但是histeq也会引起过饱和现象,histeq函数对于整幅图像的像素使用相同的直方图变换,对于那些像素值分布比较均衡的图像来说,算法的效果很好。然而,如果图像中包括明显比图像其它区域暗或者亮的部分,在这些部分的对比度将得不到有效的增强。相比之下,adapthisteq函数执行对比度受限的自适应直方图均衡化,在突出图像细节的同时又避免了放大噪声。

总而言之,处理不同的图像要用不同的对比度增强方法去处理,由于处理效果也是主观判断,没有一个统一的标准,所以在处理图像的时候就要多尝试多选择。

4.2. 今后研究展望

本文在对一些图像处理时有的效果不理想,可能是图片本身就已经有很好的视觉效果导致,也可能是对MATLAB中的处理图像的函数使用不当,比如各种参数的设置等,希望自己可以通过今后的学习弥补不足。

图像处理广阔的领域中,还有很多需要研究和探索的领域,例如:如何找到一种客观的评价标准,该标准能客观地评价一幅图像的好与坏;如何对图像进行分类等等,这些都是数字图像处理未来研究的方向。

NOTES

*共同第一作者。

参考文献

[1] 吴一全, 王厚枢. 图像对比度增强处理方法(一) [J]. 数据采集与处理, 1989(4): 39-49.
[2] 王耀南. 计算机图像处理与识别技术[M]. 北京: 高等教育出版社, 2001.
[3] 杨乐. 图像增强算法及其实现[J]. 现代电子技术, 2007, 16(3): 33-34.
[4] 叶松, 赵文昌. 基于直方图均衡化的图像增强技术分析与Matlab实现[J]. 数字技术与应用, 2012(1): 174-174.
[5] 孙蕾, 李丙春. 图像增强算法与评价方法研究[J]. 计算机工程, 2007, 33(8): 21-23.
[6] 王超, 孙玉秋, 徐石瑶, 等. 自适应直方图均衡化图像增强算法研究[J]. 长江大学学报(自科版), 2018, 15(1): 55-59.
[7] Zuiderveld, K. (1994) Contrast Limited Adaptive Histograph Equalization. Graphic Gems IV. Academic Press Professional, San Diego, 474-485.
https://doi.org/10.1016/B978-0-12-336156-1.50061-6
[8] 顾明, 郑林涛, 尤政. 基于颜色空间转换的交通图像增强算法[J]. 仪器仪表学报, 2015, 36(8): 1901-1907.