张宏桥,曾晓华,郭旭升,李翔
(湘南学院电子信息与电气工程学院,郴州423000)
针对彩图的颜色量化是图像处理领域的基本技术,它主要是从真彩图的上万种颜色中分析并提取出较少数目的代表性颜色,并利用其作为图像特征或者作为调色板重构出对应的索引图,最终目标是使索引图与原图之间的差距最小[1]。颜色量化在图像处理领域有着很多的重要作用,如图像压缩、图像存储、图像分割[2]、图像复原等。
图像色彩量化的关键是获取图片中人类直觉上感兴趣区域的相关信息,这类区域往往有着较高的显著度,人们希望这些区域具有较好的质量,而其他显著度较低区域的图像质量可以容忍一定程度上的降低[3]。本文主要对颜色数远大于256 种的RGB 真彩图进行索引图生成,将提取的索引色限制在256 种以内。主要过程如下:首先针对色彩空间提出了一种新的颜色显著度模型,并利用该模型生成原图的显著度图;然后结合量化灰度、边缘纹理等信息进行索引色的提取与优化,最后对索引图用抖动算法进行平滑处理。
本文基于HSV 彩色空间提出了一种针对彩色信息的显著度模型:
其中,s 与v 分别为归一化的饱和度和明度分量,图1 显示了不同颜色对应的显著度,上半部分为彩色图,下半部分为对应的显著度,显著度接近1 越亮,接近0 越暗,可以看出该模型对灰度并不敏感。
图1 不同颜色下的显著度
为了降低杂色的影响,首先对原图I 的RGB 三通道Ir、Ig、Ib分别做9×9 窗口的中值滤波,然后重新合成滤波通道得到滤波彩图I1[4]。记图像的长宽为h×w 像素,最后利用式(1)对I1每个像素进行计算,并得到显著图P,需要注意滤波后的某些颜色不属于原图。处理效果如图2、3、4 所示(本文所处理的图片均来自免版权图片网站streetwill.co),其中图2 有126278 种颜色,宽高为1000×666。
图2 待处理原图I
图3 中值滤波图I1
图4 对应显著度图P
纹理是反映一个图像信息的重要内容,为保留更多纹理处的色彩信息,本文利用原图I 对应的灰度图G来获取边缘纹理图E,其中G 与E 的计算方式如下所示:
其中e1、e2为当前与左上位置、正上与左侧位置的灰度差值图,E 的效果如图6 所示。
图5 灰度图G
图6 纹理图E
对于彩色图片中大量的颜色,本文首先利用灰度直方图对灰度进行量化[5],然后按量化后灰度进行颜色分类,最后按类别进行颜色提取。首先记图G 的256级灰度直方图为H256,利用H256重心的水平位置将自身划分为左右两部分,完成256 级到2 级灰度的量化,接着对分割出的左右子直方图用同样的方式划分,重复此过程则可得到4 级、8 级、16 级、32 级、64 级、128 级的量化灰度,图7 展示了基于子直方图重心把灰度级从256 量化到8 级的过程。
图7 直方图灰度量化过程
对于灰度级为N 的直方图HN,其重心水平位置C的计算方法如式(4)所示,其中floor 为取整运算,c(i)为HN横轴第i 个位置的灰度级,HN(i)为该灰度级下像素的个数。
本文将G 量化为16 个灰度级,并把量化图记作G16,量化图中各像素的取值范围为[0,15],对应的量化灰度区间如图8 所示,灰度归一化后的量化效果如图9所示。可以看出量化之后图片与图G 较为接近,但在玻璃处灰度渐变部分已经出现龟裂。
图8 灰度H256与量化灰度H16
图9 量化灰度图G16
本文按16 个量化灰度级对颜色分类,产成16 个待取色列表Qn,n∈[0,15],每个列表存放相应量化灰度的颜色,并按照显著度从大到小排序。具体取色过程如下:扫描图E,对于非零位置(x,y),其对应的G16(x,y)即为取色列表的分类,记作n,将I1(x,y)的颜色按P(x,y)的大小插入到Qn中,记列表Qn的长度为LQn。扫描完成后,每个列表从第一个位置进行取色,其中Qn的取色间隔为floor(LQn/16),若间隔为0,则不在该列表取色,否则在当前列表按间隔距离取色16 次。索引色提取期间将所有采样颜色记录在索引色表CT 中,注意在采样过程中不记录重复色,CT 颜色的数目记作LCT且
由于CT 中某些颜色可能不在原图I 中,所以需要使用上一步得到的CT 对I 进行索引图J 的重构,并在重构后删除CT 中未使用的颜色。具体过程如下:扫描图I 所有位置,对于颜色I(x,y),在CT 中找到与其距离Dist 最近的索引色CT(idx),则J(x,y)为最近距离颜色在CT 中的下标idx,最后在CT 中删掉此过程中没有用到的颜色。其中颜色[r1,g1,b1]与[r2,g2,b2]距离Dist 的计算方法如下:
图10 初次重构的索引图J
若经上步后LCT仍小于256,则需从图I 中补充最多256-LCT个颜色到CT 中。过程如下:首先根据I 与J获取色差二值图D。D(x,y)的计算方法如式(6),其中max 为取最大值运算,Thr 为二值化阈值,本文为58。此外,为了减少孤立点的干扰,需进一步对D 进行7×7窗口的中值滤波,效果如图12 所示。
图11 色差二值图D
图12 中值滤波后的图D
然后扫描滤波后的图D,若D(x,y)非零,则将I(x,y)加入到补充颜色列表R 中,列表长度记作LR。同Qn类似,列表R 也按颜色的显著度从大到小排序,不同的是要将所有灰度级的颜色均插入到R 中。
最后,若LR>0,则从R 的第一个位置开始采样,且采样间隔为max(1,floor(LR/(256-LCT)),采样次数为floor(LR/采样间隔)。
在补充过程中,如果R 中采样到的颜色已在CT中,则忽略该颜色,所以该过程结束后,LCT仍有可能小于256。
至此,本文对原图I 完成了最终索引色的提取,并利用最后的CT 再次重构索引图J。图13 为图2 最终提取到的256 色调色板,重新生成的J 如图14 所示,可看出在亮度与色彩上J 与I 基本一致。
图13 索引色调色板
图14 抖动处理前的索引图J
如需获取视觉效果较好的索引图,则还要对渐变色进行抖动处理。由于灰度级的减少,图像的渐变效果会变差,甚至产生龟裂现象。为解决这个问题,本文采用网格抖动技术对边缘过渡段进行处理,具体过程如下:
首先,根据CT 生成LCT×LCT大小的抖动颜色表DT,计算方式见式(7),其中i 与j 均为大于等于0 且小于LCT的整数。
然后,以网格的形式扫描图E,即扫描位置(x,y)满足x%2==y%2 且1≤x 最后在J(x,y),J(x-1,y-1),J(x-1,y),J(x,y-1)四个位置,等概率的随机选择一处,并将索引值替换为jm即可。最终抖动后的效果如图15 所示,可以看出与图2所示的纹理与颜色均较为接近。 图15 抖动后的索引图J 包含图2,本文主要处理了四类不同风格的图像,大小均为1000×666,处理效果如下所示,左侧为原图,右侧为生成的索引图。 表1 中列出了原图I 与抖动索引图J 之间的不同通道的色差,使用均方误差MSE 进行计算[6]。计算方式如式(9)所示,其中MSEr、MSEg、MSEb与MSEall分别为红色、绿色、蓝色通道以及所有通道的平均色差。 图16 远景图索引化 图17 城市夜景图索引化 图18 植物近景图索引化 表1 索引图与原图色差表 从主观视觉上看,颜色量化后的索引图对原图色彩的损失度还在可以接受的范围内。从客观数据表1可以看出,生成的索引图对人眼较为敏感的绿色通道色差较小,而对人眼不敏感的蓝色通道色差一般较大,总体上符合人类对颜色的感知情况且通道色差均较小,证明了该算法的有效性与实用性。 本文首先对滤波彩图利用自定义的颜色显著度计算得到显著度图,同时获取原图的灰度图及其量化灰度图;接着针对灰度图的纹理位置处对应的彩色信息,按照量化灰度与显著度进行分类排序,生成待取色列表并从中获取索引色表;然后再次利用以上信息对索引色表进行优化;最后用优化后的索引色表对原图进行重构,并利用网格抖动算法处理边缘位置的龟裂现象。实现了从一个多颜色种类图像到256 索引色图像的一套生成方法,并通过索引图与原图的颜色距离对比,验证了该算法在图像信息压缩、索引色提取等相关技术上的可用性与有效性。3实验结果
4 结语