彩色图像的快速高保真灰度化方法研究

2011-12-02 02:57张全法杨海彬任朝栋
郑州大学学报(理学版) 2011年3期
关键词:保真度彩色图像调色板

张全法,杨海彬,任朝栋,李 焕

(郑州大学 物理工程学院 河南 郑州 450052)

彩色图像的快速高保真灰度化方法研究

张全法,杨海彬,任朝栋,李 焕

(郑州大学 物理工程学院 河南 郑州 450052)

为了实现彩色图像到灰度图像的快速高保真转换,比较了几种现有的转换算法,分析了哪些因素限制着它们的转换速度以及它们是如何产生失真的.指出了提高转换速度的一般方法,包括采用合适的位图形式表示灰度图像、在VC 6.0中采取各种措施提高运算速度等.在此基础上,通过合理近似红、绿、蓝分量的权值,得到了保真度很高且转换速度很快的计算公式.实验比较了各种转换算法的转换效果、转换速度和转换误差,证明了新算法的优越性.

图像处理; 彩色图像; 灰度图像; 快速转换; 高保真

0 引言

灰度图像已广泛应用于图像模式识别、图像分割、图像增强[1]和图像检索[2]等领域.为了方便后续处理,在诸如车牌照识别、计算机视觉测量、运动物体的检测与跟踪等场合,都需要在预处理阶段将采集来的彩色图像转换为灰度图像.与此相适应,出现了多种彩色图像灰度化算法,包括单一分量法[3]、最大值法、平均值法、加权平均值法[1]、HLS模型算法[4]、改进的基于彩色空间距离的算法[5]、基于梯度域的算法[6]和基于TV复原模型的改进的Sapiro算法[7]等.

这些算法中,后面3种分别有利于保持图像的边缘信息、保留彩色图像中亮度相似但颜色不同的可视细节、在保持形状的同时提高边缘锐度.它们的共同缺点是算法复杂、速度慢,适合于对转换速度要求不高的场合.在对转换速度要求很高的基于视频的应用中,通常只能选择前5种简单算法之一.这5种算法中,第4种能获得最符合人眼视觉感受的灰度图像,然而速度最慢;其他几种算法速度比较快,却存在很严重的亮度失真.为了兼顾速度和保真度,提出了新的转换算法,可以用在对二者要求都比较高的场合.

1 彩色图像灰度化算法比较

为了获得比较快的转换速度和比较小的亮度失真,先对上述5种简单算法进行比较,分析哪些因素限制了转换速度、如何产生了亮度失真.为了方便,将这5种算法分为线性变换法和非线性变换法进行讨论.

1.1线性变换法

线性变换法包括单一分量法、平均值法和加权平均值法.加权平均值法的计算公式为

g=WRR+WGG+WBB,

(1)

式中,g为灰度图像中某个像素的灰度值;R、G、B分别为彩色图像中对应像素的红、绿、蓝分量;WR、WG、WB分别为红、绿、蓝分量的权值,并且应该满足WR+WG+WB=1.所谓线性变换是指在变换过程中权值固定.当WR=0.299,WG=0.587,WB=0.114时所得灰度图像最符合人眼的视觉感受[1],这3个值称为它们的最佳组合.一般情况下提到加权平均值法时皆意味着权值为最佳组合.

单一分量法和平均值法可以看成加权平均值法的变形.单一分量法只考虑一种分量,例如只考虑绿色分量时相当于取WG=1、WR=WB=0,只有赋值运算,其速度在这5种算法中是最快的.平均值法相当于取WR=WG=WB=1/3,编程时可以先对R、G、B求和再除以3,则既能减少运算量又能将浮点运算转化为整数运算,速度比加权平均值法快.但是,由于二者的权值偏离最佳组合很远,失真是显而易见的.

1.2非线性变换法

非线性变换法包括HLS模型算法和最大值法,它们的权值在变换过程中不固定.前者是为了让边缘亮度噪声少、平滑效果好而提出的[4],其计算公式为

g=[max(R,G,B)+min(R,G,B)]/2,

(2)

式中,max(R,G,B)和min(R,G,B)分别表示求R、G、B中的最大值和最小值.由于只有整数运算,其速度比加权平均值法快,其失真也是显而易见的.需要说明的是,文献[4]中还有乘以3的运算,这样做不仅降低了转换速度,还有可能使数据超出表示范围而导致更大的失真.

最大值法可以看成HLS模型算法的变形,其计算公式为

g=max(R,G,B),

(3)

由于运算更加简单,其速度比HLS模型算法还要快,9日其失真也是显而易见的.

2 彩色图像的快速高保真灰度化方法

根据以上分析可知,若要获得比较快的转换速度,应该设法减少运算量并且尽量采用高速运算代替低速运算,若要获得比较高的保真度,应该保证WR、WG和WB的取值不偏离最佳组合太远.

2.1选用合适的位图形式

在Windows环境下灰度图像实际上是一种特殊的彩色图像,其表示形式可以分为不用调色板和用调色板2种.不用调色板时位图像素长度为24位,每个像素都用3个字节表示其红、绿、蓝分量,但是每种分量都等于其灰度值.由于每个像素都需要进行3次赋值运算,速度比较慢.用调色板时调色板中应该包含256种颜色,但是每种颜色的红、绿、蓝分量相等,取值依次从0到255.此时位图像素长度只有8位,仅用1个字节表示其颜色在调色板中的索引值,而这个索引值等于其灰度值.由于每个像素只需要进行1次赋值运算,可以节省大量的时间,只要图像稍微大一些,创建调色板所需要的时间就微不足道了.对于视频图像处理来说,调色板只需要创建1次,其速度优势就更突出了.

2.2选择高效率的程序设计语言和方法

单从提高程序运行速度的角度来说,汇编语言是最好的选择.但是对于图像处理等比较复杂的问题,还需要考虑编程效率的高低、用户界面设计的难易等问题.通常选择VC 6.0.用VC 6.0编程时,提高程序运行速度的最简单措施是生成release版的程序.除此之外,还可以采用如下方法:

1)采用整数运算代替浮点运算.例如加权平均值法,如果根据式(1)计算灰度值将很慢,因为存在浮点运算.若将其转化为整数运算,即把式(1)写成

g=(299R+587G+114B)/1 000,

(4)

速度将大大提高.尽管如此,相对于其他4种简单算法来说仍然是最慢的,参见后面的实验结果.文献[8]中隐含了这种方法,不幸的是相当于取WR=0.39,WG=0.50,WB=0.11,失真比较大.

2)采用左移或右移n位运算代替乘以或除以2n运算(n为大于0的整数).例如根据式(2)计算灰度值时,若用右移1位运算代替除以2运算,速度将有所提高,参见后面的实验结果.

3)采用指针法代替下标法访问图像数据.图像数据在内存中是一维线性排列的.若按照数组看待而通过下标法访问则比较慢.若用指针法访问则比较快,因为此时可以用自增或自减运算高效率地改变指针.

4)其他.包括直接读写内存图像数据[1]、采用自增或自减运算代替加1或减1运算等.

2.3选取合适的权值

为了在编程时能够充分利用上述方法提高运算速度,提出计算公式

g=R/22+R/24-R/26+G/2+G/24+G/25+B/23-B/26,

(5)

由于将浮点运算转化成了整数运算,并且可以用右移运算代替除法运算,运算速度提高了很多.此时相当于取WR=0.297,WG=0.594,WB=0.109,虽然偏离了权值的最佳组合,但是与其他算法相比失真还是很小的,参见后面的实验结果.

根据对于转换速度和保真度的不同要求,式(5)还有2种变形可供选用,

g=R/22+R/24+G/2+G/24+B/23,

(6)

g=R/22+G/2+B/22.

(7)

与式(5)相比,它们的速度越来越快,失真也越来越大,不过相对于其他算法来说失真还是比较小的.

3 实验结果

实验目的是比较新提出的灰度化算法与已有的5种简单算法在视觉效果、转换速度和保真度等方面的差异.所用图像来自于一段视频,为384 288像素的24位彩色图像;所用计算机的CPU为奔腾系列的,主频1.70 GHz;程序用VC 6.0编写.

3.1视觉效果比较

转换效果如图1所示.图中新算法1、2、3分别是指根据式(5)、(6)、(7)转换.可以看出,加权平均值法的效果最好,最大值法的亮度有明显升高,单一分量法(考虑绿色分量,下同)、平均值法和HLS模型算法的亮度有明显升高或降低,新算法1与加权平均值法的差别最小,新算法2和3与它的差别也不大.

(a)加权平均值法 (b)单一分量法 (c)平均值法 (d)HLS模型算法

(e)最大值法 (f)新算法1 (g)新算法2 (h)新算法3

图1各种算法的视觉效果
Fig.1Visual effect of each algorithm

3.2转换误差比较

这里的转换误差是指其他算法的灰度值g与加权平均值法的灰度值g0的差别.通过程序求出R、G、B在所有可能组合下的转换误差(g-g0),进而求出其最大值、最小值及方均根误差,并除以255,用百分数表示,结果如表1所示.可以看出,新算法的转换误差是非常小的,因此其保真度是非常高的.

表1 各种算法的转换误差

3.3转换速度比较

为了在相同条件下比较各种算法的速度差异,在实现每种算法时皆通过指针直接访问图像数据,皆通过自增运算改变指针,皆采用带调色板的位图表示灰度图像,皆预先创建好调色板,皆用release版的程序测试运行时间.生成release版的程序时所用的优化策略是maximize speed,即最大速度.

利用VC 6.0的build/profile功能可以测试程序中每个函数的运行时间,但是在测试过程中发现同一个函数可能偶然出现某次运行时间很长,这可能是Windows的多任务特性造成的.为了避免这种情况的影响,为每种算法编写一个函数,在每次测试中各调用1次,共测试5次,求平均值时剔除显著偏大的数据.结果如表2所示,删除线表示被剔除的数据.可以看出,新算法的运行速度非常快,与最大值法不相上下,甚至可逼近单一分量法.

表2 各种算法的运行时间

4 结束语

新算法具有很快的速度和很高的保真度,包含了3个计算公式,可以根据对速度和保真度的综合要求进行选择.将其应用到所开发的智能视频交通管理系统中,取得了很好的效果.所采用的提高程序运行速度的方法也具有一定的普适性,不仅可以应用到彩色图像灰度化算法中,还可以应用到其他算法中.

[1] 李贞培,李平,郭新宇,等.三种基于GDI+的图像灰度化实现方法[J].计算机技术与发展,2009,19(7):73-75.

[2] 孙忠贵.基于小波和位平面技术的图像检索方法[J].郑州大学学报:理学版,2009,41(1):23-26.

[3] 张俊霞.VC编程实现彩色图像与灰度图像之间的相互转换[J].河套大学学报,2006,3(2):70-73.

[4] 刘庆祥,蒋天发.彩色与灰度图像间转换算法的研究[J].武汉理工大学学报:交通科学与工程版,2003,27(3):344-346.

[5] 张建德,邵定宏.改进的基于彩色空间距离的图像灰度化算法[J].机械与电子,2008(1):63-65.

[6] 章卫祥,周秉锋.一种基于梯度域的彩色图像转灰度图像的方法[J].影像技术,2007(3):20-22.

[7] 郭彦伶,彭进业,王大凯.改进TV复原模型的彩色-灰度图像变换方法[J].计算机工程与应用,2009,45(7):192-194.

[8] 张志军,孙志辉.基于VC平台的彩色图像的灰度化技术[J].自动化技术与应用,2005,24(1):61-63.

StudyonFastColor-to-GrayImageTransformationwithHighFidelity

ZHANG Quan-fa, YANG Hai-bin, REN Chao-dong, LI Huan

(SchoolofPhysics&Engineering,ZhengzhouUniversity,Zhengzhou450052,China)

To transform color images into gray images quickly and with high fidelity, factors that affect the transformation speed and fidelity were analyzed by comparing existing algorithms. Several methods universal for improving the speed of image transforming programs were proposed, such as expressing gray images in the most suitable bitmap form, developing programs with Visual C++ 6.0 and making full use of its features that could speed up the programs, and so on. Appropriate approximations were introduced to the weight values of red, green and blue component for developing programs with these methods, and it was possible of fast transformation with high fidelity. These advantages of the new algorithm were demonstrated by experiment results of speed, error and visual effect.

image processing; color image; gray image; fast transforming; high fidelity

TP 391.41

A

1671-6841(2011)03-0066-04

2010-04-07

张全法(1966-),男,副教授,主要从事传感器与计算机应用技术研究,E-mail:zhangquanfa@zzu.edu.cn.

猜你喜欢
保真度彩色图像调色板
大自然的调色板——张掖七彩丹霞
Film review:WALL·E
实施性研究中保真度测评的研究进展
基于位相翻转噪声信道的量子态辅助克隆
大地调色板
实现超冷原子光晶格中大规模高保真度原子纠缠对制备
基于FPGA的实时彩色图像边缘检测
基于专家模糊技术的彩色图像对比度增强方法
无限维量子系统上的保真度
基于视觉注意的全参考彩色图像质量评价方法