灰度图像对比度提高方法及其评价
2018-10-15王建卫曲中水
王建卫,曲中水
(1.东北林业大学 机电工程学院,黑龙江 哈尔滨 150040;2.哈尔滨理工大学 计算机科学与技术学院,黑龙江 哈尔滨 150080)
0 引 言
灰度图像的增强是图像处理研究领域的基础问题,其中对比度的提高是图像分割的基础[1-3],决定了图像分析和理解的质量[4],因此灰度图像对比度的提高对于数字图像处理技术具有重大的意义。
由于灰度图像对比度的提高是图像增强的一个重要方面[5-7],根据图像处理的空域理论[8-9],直接灰度变换是基于像素的点处理的典型方法,如图像求反、线性灰度变换、对数变换、灰度分层和位图切割等,分别可实现图像求反、图像的分层和对比度伸缩等不同的增强效果,具有方法简单和易于实现的优点[10-11]。为了实现灰度图像对比度的提高,对数变换是一种比较有效的方法[12]。一般地,所选取的对数的底为大于1的实数,分析对数函数的增减性可知,对数变换的方法适用于亮度差异较小、对比度较大的图像;当应用对数变换处理亮度差异较大和低对比度的灰度图像时,增强效果不理想,难以实现对比度的动态提高。
综上所述,对数函数是一种典型的非线性变换,研究基于幂函数等非线性的对比度提高方法是有必要的,可见,应用幂函数等非线性变换用于对比度的提高将是有效的方法。因此,文中提出了基于幂函数的非线性变换的对比度提高算法;为了客观地评价灰度图像对比度提高的质量,定义了度量增强后图像的对比度与原图对比度的比例关系的对比度增量参数,并给出了原始图像和结果图像的亮度、标准差、对比度增量等参数的主要计算公式。
1 基于对数变换的图像对比度提高方法
设f(x,y)(0≤x≤M-1,0≤y≤N-1)是原始灰度图像(以下用f表示),g(x,y)是结果图像(以下用g表示),灰度级级数L=2n(n为表示像素值的二进制数的位数),T定义在每个点(x,y)上,则T称为点操作。初等函数变换是基于像素的点处理操作T的常用方法。常用的基本初等函数有:
幂函数:
y=xu(u∈R是常数)
(1)
指数函数:
y=ax(a>0且a≠1)
(2)
对数函数:
y=logax(a>0且a≠1)
(3)
因此,灰度图像的对数函数变换的计算公式如下:
g=Cloga(1+f)
(4)
其中,C为常数;a>0且a≠1。
2 基于幂函数的灰度图像对比度提高方法
2.1 基于二次函数的灰度图像对比度提高算法
一般地,灰度图像的幂函数变换计算公式为g=fα(α>0且α≠1),式4可拟合为α=2的抛物线,计算公式如下:
g=-αf2+(α+1)f
(5)
其中,α∈[0,1]。
基于二次函数变换的灰度图像对比度算法的核心思想是,大于等于1的正整数所表示的原始图像的像素值按照式5计算的取值是大于0的数值且具有连续性,可作为结果图像的像素值;原理是依次读取原始灰度图像的像素值f,使像素值的取值范围是[1,2n]的正整数,计算g=-αf2+(α+1)f的值作为结果图像的像素值。
基于二次函数变换的灰度图像对比度提高算法如下所述:
g=contrastquadratic(f)
Input:原始图像f
Output:结果图像g
Step1:初始化,设置i和j分别为0;
Step2:输入原始图像f,并统计其行数M和列数N;
Step3:计算
Step4:若i>M且j>N,则转Step10;
Step5:按照行(或列)优先的原则依次读入原始图像f的像素值f(i,j);
Step6:根据式5,计算像素值g'(i,j)=-αf(i,j)2+(α+1)f(i,j);
Step7:计算g'(i,j)的整型数据g''(i,j);
Step8:若g''(i,j)≥255,g(i,j)≥255;
Step9:i和j分别加1后转Step4;
Step10:输出结果图像g,结束。
2.2 改进的基于二次函数的对比度提高算法
为了有效地改善视觉效果,需要在像素值较低的区域进行有效增强(即提高对比度)而在像素值较高的区域进行适当地抑制(即降低对比度),修改式5,新的二次函数计算公式如下:
g=pgh+(1-p)gl
(6)
gh=-αf2+(α+1)f
(7)
gl=1+α(1-f)2-(α+1)(1-f)=αf2+
(1-α)f,α∈[0,1]
(8)
改进算法的过程如下:
g=contrastquadratic2(f)
Input:原始图像f
Output:结果图像g
Step1:初始化,设置i和j分别为0;
Step2:输入原始图像f,并统计其行数M和列数N;
Step4:若i>M且j>N,则转Step12;
Step5:按照行(或列)优先的原则依次读入原始图像f的像素值f(i,j);
Step9:计算g'(i,j)的整型数据g''(i,j);
Step10:若g''(i,j)≥255,g(i,j)=255;
Step11:i和j分别加1后,转Step4;
Step12:输出结果图像g,结束。
2.3 基于指数为分数的幂函数变换的对比度提高算法
当f为整数且f∈[0,2n-1]时,式5可拟合为指数为分数的幂函数,计算公式如下:
(9)
其中,α∈[2,3]。
基于指数为分数的幂函数变换的对比度提高算法的核心思想是,大于等于1的正整数所表示的原始图像的像素值的按照式9计算的数值可作为结果图像的像素值。基于指数为分数的幂函数变换的对比度提高算法简述如下:
g=contrastdecimal(f)
Input:灰度图像f
Output:灰度图像g
Step1:读入灰度图像f;
Step4:若g≥255,g=255;
Step5:输出灰度图像g,结束。
(10)
其中,β∈[10,20]。
3 灰度图像增强质量的评价
根据图像质量的评价准则[13-17],灰度图像的增强效果的评价分为客观评价准则和主观评价准则[18-19]。下面主要用亮度、标准差和对比度增量等客观评价参数来评估图像增强算法的效果。
亮度是图像像素值的平均值,计算公式如下:
(11)
亮度的标准差反映灰度图像中黑白反差的程度,计算公式如下:
(12)
对比度增量是用来度量增强后图像的对比度与原图对比度的比例关系,反映了图像变换前后对比度的变化程度。如果对比度增量大于1,表明图像的对比度在原图的基础上有所增强,更有利于人眼观察。对比度增量C的计算公式如下:
(13)
其中,局部对比度的均值的计算公式为:
(14)
局部对比度的计算公式为:
(15)
滑动窗口W为w×w(通常w=3,5,7)。
4 实验结果与分析
为研究问题的需要,在MATLAB 2014a环境下对算法进行了编程实现。
例1:采用256×256的256级灰度值的灰度图像cameraman.tif为参考图像,并以不同的幂函数类型操作与对数变换做比较。根据第2节的计算方法,各种变换方法的结果图像如图1所示。
图1 结果图像(1)
由图1可见,与原始图像相比,结果图像的视觉效果均有一定程度的改善,其中图像b的对比度得到了动态调整,但细节信息未强调;图像d在图像c的基础上,对比度进一步提高,细节信息保留完整并适当加以强调,非常有利于进一步进行分割、分析等处理;图像e是将图像a的对比度较小提高的结果图像,视觉效果良好,也有利于进一步进行分割、分析等处理;与图像c和图像d的对比度不同,在对比度提高的同时,图像f的亮度进一步进行了均衡化处理。
根据第3节的计算公式,结果图像的客观评价数据如表1所示。
表1 客观评价数据比较(1)
分析表1的数据可知,结果图像的客观评价数据与图1的结果图像的观察效果是一致的。与原始图像的像素值均值相比较,结果图像b、c、d、e和f的像素值均值变化较大;c、d、e和f的像素值标准差变化较小;b、c和d的局部对比度均值较接近,属于开区间(0.1,0.3),而b和f数值较小,约为小于0.1;b、c和d的对比度增量均大于1,f的对比度增量与e相比有一定的提高。
例2;原始图像coins.png的大小为246×300,灰度级为256。各种变换方法的结果图像如图2所示。结果图像的客观评价数据如表2所示。
在图2中,结果图像的对比度提高效果与例1类似,结果图像的视觉效果均有一定程度的改善。
分析表2的数据可知,结果图像的客观评价数据与图2的结果图像的观察效果是一致的。
例3:原始图像circuit.tif的大小为280×272,灰度级为256。各种变换方法的结果图像如图3所示。
图2 结果图像(2)
算法名称参数像素值均值像素值标准差局部对比度均值对比度增量对数变换35157.729 13.862 00.071 80.224 8Contrastquadratic0.010 147.300 48.098 40.016 11.893 8Contrastquadratic20.078 544.446 86.748 70.135 92.085 1Contrastdecimal2.041 5109.424 97.315 90.149 61.004 2Contrastdecimal215.856 0155.139 66.017 20.072 10.522 9
图3 结果图像(3)
图像的像素值的均值为76.258 2,像素值的标准差为6.388 9,局部对比度的均值为0.176 7。在图3中,结果图像的对比度提高效果与例1类似,结果图像的视觉效果有一定程度的改善。
5 结束语
在分析灰度图像的对数变换的基础上,给出了基于幂函数变换的灰度图像的对比度提高算法过程。图像质量的主观评价表明,结果图像对比度在原图的基础上有所增强且更有利于人眼观察。同时定义了局部对比度参数,通过计算原始图像和结果图像的像素值的均值、标准差,局部对比度的均值、对比度增量等参数,客观地评价了灰度图像对比度提高的质量。结果表明,文中方法能提高灰度图像的对比度,与对数变换相比较效果显著。当图像数据越来越多时,基于像素点的幂函数操作的复杂度也提高了,因此还需要进一步研究提高算法的执行速度,在分析局部对比度参数的基础上可以定义基于邻域的幂函数运算。