一种面向人眼探测识别的图像伪彩色局部优化方法

2020-04-29 03:16蔡铁峰
铜陵职业技术学院学报 2020年1期
关键词:彩色图像人眼子集

蔡铁峰

(深圳职业技术学院,广东 深圳 518055)

1 引言

人眼能分辨的灰度级数量大概在40个左右,而灰度图像拥有的灰度级一般远多于这个数量,比如8位灰度图像有256个灰度级,10位灰度图像有1024个灰度级。由此灰度图像显示给人眼看时,常有部分甚至大部分景物信息无法显现出来。人眼能分辨的颜色有成千上万种, 把灰度图像用伪彩色显示,能使图像中景物信息更好地被人眼感知到。灰度图像伪彩色优化是寻找在一定意义上能最好显现出灰度图像景物信息的那幅伪彩色图像。

现有的灰度图像伪彩色方法大多是灰度级颜色映射。早期的灰度图像伪彩色方法(比如彩虹编码)是分别构造灰度级到颜色RGB三个颜色通道的映射函数,由此得到灰度级对应的颜色RGB值,使用的映射函数一般是分段线[1-3]。根据人眼视觉心理特性,人对颜色的认知并不是把颜色分成R、G、B三个分量,而是把颜色认知为亮度、饱和度、色调三个分量,所以Cao M Y等人先构造灰度级到亮度、饱和度、色调三个颜色分量的映射函数[4],其中亮度和色调的映射函数是线形的,而饱和度是分段线形,然后由颜色的这三个分量的值计算得到在显示设备上对应的RGB值。由于人眼对亮度、饱和度的感知是非线性的,Wang Huakui等人使用的灰度级到颜色亮度、饱和度和色调的映射函数是非线性的[5]。前面这些方法的共同特点是:不同灰度图像使用的却是相同且固定的灰度级颜色映射函数。肖斌等人根据图像直方图自适用地确定灰度级颜色映射函数,其中颜色的饱和度值与图像直方图中灰度级所拥有的像素数相关[6]。除了灰度级颜色映射方法外,另外一些伪彩色方法使用小波等滤波器把图像分解成三个不同频谱的图像,然后把这三个频谱图像分别转成伪彩色图像的R、G、B通道图像[7,8]。

现有的灰度图像伪彩色方法往往没有明确的评价指标,更没有面向人眼探测识别的评价指标,做不到在评价指标指导下,自适应地对灰度图像伪彩色化。在本人前期研究工作中,设计了一种基于全局灰度级颜色映射的灰度图像伪彩色映射方法[9],在确保不同灰度级映射成不同颜色的前提下最优化伪彩色图像。在此伪彩色全局优化方法中,部分灰度图像生成的伪彩色图像中相邻像素间色调变化过大,不便于人推断原灰度大小。本文方法将根据人眼分辨颜色能力,确保灰度值不同的相邻像素会映射到人眼可分辨的不同颜色,在此前提下,根据图像局部信息确定每个像素的颜色值,使相邻像素间色调差异尽量小,以尽量方便人从伪彩色图像准确获取原灰度图像的探测识别信息。

2 原理

2.1 人眼感知颜色差异视觉特性

人眼并不能感知所有颜色差异,颜色间差异小人眼会难以感知此颜色差异。以图1为例,在一个均匀背景里,从左到右有一系列同样大小的圆,其中圆和背景的颜色值只有R通道的值不相同,在图中标示出了背景与所有的圆的R通道的值,从左到右圆与背景的颜色差异由小变大,而当人眼从左依次往右看时,人眼由看不见圆到能模模糊糊看见圆,再到能清晰的看见圆。从看不见到能看见之间可以认为存在一个人眼可感知颜色差异的颜色差阈值。不同颜色之间人眼感知到的颜色差异可以通过实验测得,其中人眼感知颜色差异越大就表示人眼越能清晰感知到像素间颜色发生了变化。人眼感知颜色差不仅由颜色之间差值决定,还受颜色值本身影响,国际照明委员会(CIE)通过实验数据拟合出了颜色人眼感知差异度量公式。在不同时期,CIE给出了多个度量公式,公布时间越晚的度量公式越准确也越复杂。本文将使用CIE推出的最新的颜色人眼差异度度量公式CIEDE2000①,如式(1)所示,其中为人眼感知亮度差,为人眼感知饱和度差,而为人眼感知色调差,公式中各符号的具体含义请见参考文献[6]。

图1 人眼感知颜色差异视觉特性示例

根据视觉心理学,人眼感知颜色由三个分量组成:亮度、饱和度与色调。由于颜色的亮度大小、饱和度大小与灰度大小能天然的对应上,色调却不能。所以灰度图像伪彩色优化时,不同颜色的差异尽可能体现在亮度分量、饱和度分量带来的颜色差异上。

2.2 图像信息保真约束

灰度图像的伪彩色优化过程中需要保真图像信息,避免人眼看到的图像信息是失真的信息。相对于像素灰度值本身,景物的纹理轮廓等信息主要体现在相邻像素间的灰度值大小关系上,不相邻像素间灰度大小关系包含较少景物信息。由于距离远的像素之间的灰度大小关系往往不包含景物信息或者包含很少的信息,本文将选择放弃保持距离远的像素间的灰度大小关系不变。进一步,为了有更多的优化空间,本文将允许伪彩色图像中每个像素与以它为中心的局部区域内的其它像素的颜色亮度大小关系可以有轻微的失真,但确保此失真不被人眼发觉。

具体来说,在局部区域内,像素间亮度大小关系可以倒序,但必须保证倒序后人眼感知不到像素间亮度已倒序,从而像素间亮度大小逆转了,人眼也感知不到,这样可以争取到更多空间来减小相邻像素间伪彩色化后的可能色调差。其中为了使倒序后人眼感知不到像素间亮度存在差异只需要让人眼感知亮度差值足够小即可,在本文中指定当人眼感知不到亮度差异的人眼感知亮度差阈值,此阈值设定为T0=1。对于每个像素,周围需要与此像素人眼感知不倒序的范围可以根据实际需要确定, 依据的最重要原则是不破坏景物内部信息的完整性,其中最简单的方法就是让每个像素与以它为中心的一个正方形窗口内的像素亮度大小关系人眼感知不倒序。

像素之间相邻关系根据远近可以分别定义直接相邻和局部相邻 (在后文中如果只提到相邻那么此相邻指的就是直接相邻),其中直接相邻指的是对于两个像素其中一个像素在另外一个像素4邻域或者8邻域内,局部相邻指的是对于两个像素其中一个像素在另外一个像素的指定大小的周围范围内。局部相邻包含直接相邻。

以一对局部相邻的像素为例,它们在原图中的灰度值分别为Ia、Ib,l'a与l'b为它们在伪彩色图像中颜色的亮度值。图像局部信息人眼感知保真要求如下:

(1)原本灰度值相同的像素在伪彩色图像中可以亮度差不为0,但必须人眼不能看到此亮度变化。所以假如Ia=Ib,如果映射成伪彩色图像后l'a≠l'b,则必须有:

其中函数J(x)是人眼感知不到亮度变化的亮度差阈值,根据人眼感知颜色差计算公式(1)J(x)可由计算得到。

(2)原本灰度值不同的像素在伪彩色图像中像素间亮度值大小关系可以逆转,但逆转后人眼不能看到此逆转,所以如果Ia<Ib,则必须有:

同样如果 Ia>Ib,则必须有:

2.3 最优化目标

本文方法将在图像局部信息人眼感知保真约束下,在确保灰度图像中相邻像素间不同灰度值会映射到人眼可分辨的不同颜色的前提下,使灰度值不同的相邻像素在为彩色图像中色调差尽量小,从而使伪彩色图像最便于人感知出原灰度图像中相邻像素间的灰度大小关系。这是一个带约束的优化问题,下面将给出详细的介绍。

给定一幅图像 A,它包含的像素有 P1、P2、P3、…、PN,这些像素的灰度值分别为 I1、I2、I3、…、IN。图像中任意两个像素组成一个像素对,其中灰度值不等的相邻像素对组成的集合为W,局部相邻像素对组成的集合为 S。W 中的元素分别为 W1、W2、W3、…。 令 f△h(Wi)是计算相邻像素对Wi在伪彩色图像中的色调差而△E(Wi)是计算人眼感知颜色差。求这样一幅伪彩色图像,像素 P1、P2、P3、…、PN的新颜色值(l1,c1,h1)、(l2,c2,h2)、(l3,c3,h3)、…、(lN,cN,hN)满足如下优化目标和约束条件。

目标:min{f△h(w1),f△h(w2),f△h(w3),…}

约束条件:中像素对的新颜色值满足式(2)、(3)、(4)、(5);

其中T是前文提到的人眼清晰感知颜色变化的人眼感知颜色差异阈值。

以一幅500×500大小的图像为例,上面这个优化问题所需要求解的自变量有750000个,且优化目标也包含多个子目标,子目标数量与自变量的数量是同一数量级。由此可见此问题的求解极其复杂。本文的优化求解策略是:让图像中所有灰度差不为0的相邻像素在伪彩色图像中,先只通过拉大亮度差来拉大像素间的人眼感知颜色差到视觉阈值,当部分像素间人眼感知颜色差异无法拉大到时,就需要拉大像素间的饱和度差,此时如果仍有部分像素间人眼感知颜色差异仍无法拉大到时,就通过尽量少的变动色调来使图像中所有原灰度差不为0的相邻像素间人眼感知颜色差异不小于。下面将通过一个简单的示例来引出本文的求解方法。

图2 图像优化方法示例

在伪彩色图像中,每个颜色饱含三个分量,分别是亮度、饱和度和色调,根据LCH颜色模型他们的取值范围分别为:亮度0-100,饱和度0-100,色调0-2π.在图2中,给出了一个示例来说明灰度图像伪彩色优化过程。为了方便,在也仅在本例中,颜色人眼差异度简化为颜色间亮度差、饱和度差和色调差的绝对值的和,而亮度、饱和度和色调取值区间也都简化为0-9,并且假设人眼清晰辨别颜色的人眼感知颜色差阈值为T=8,人眼感知不到相邻像素间亮度变化阈值为1。图2.a给出一幅大小2×3的图像的各像素灰度值。图2.b对像素进行编号。图2.c给出了像素间的关系,像素间的相邻关系是4邻域相邻,用带方向的实线表示像素是相邻且灰度值不相等 (连线是由较小灰度值像素指向较大灰度值像素),它所对应的像素间的颜色差需要拉大到人眼视觉阈值;而不带方向的虚线和带方向虚线是为了图像信息局部人眼感知保真所添加的约束,其中不带方向的虚线表示两个像素在原图中灰度值相等,带方向虚线表示像素是不相邻且灰度值不相等 (连线是由较小亮度值像素指向较大亮度值像素),在本示例中为了简便分别只添加了一条带方向的虚线和一条不带方向的虚线。对于像素P1和Pj,人眼感知颜色差用dij表示。在本例中,像素P1的灰度值比其所有相邻像素灰度值都要小,所以此像素为极小值像素。为了有更多空间拉大其它相邻像素间颜色差,亮度取值为0、饱和度为9、色调为0。

首先在不变动色调的前提下,尽量只拉大亮度差使灰度不等的相邻像素间人眼感知颜色差达到清晰分辨颜色的阈值T,当只拉大亮度差无法使原灰度值不等的相邻像素间人眼感知颜色差无法达到T,才变化饱和度,然后才变化色调值。图2.d给出的在人眼感知颜色差拉大到1时,根据原图灰度大小关系依次从小到大计算得到的各像素颜色值,令像素 Pi的颜色值用(li,ci,hi)表示,其中 li为亮度值,hi为色调值、ci为饱和度值,其中由于现在只变化亮度值,所以初始图像中所有像素的饱和度值为9,色调值为0,亮度值为0,具体计算过程如下:

1)相邻像素间人眼感知颜色差要拉大到1,所以由 l1=0、l0-l1=1、l2-l1=1、l4-l1=1 得:l0=0、l2=1、l4=1。

2)由式(2)和(3)可知,|l3-l0|≤1,由|l3-l0|≤1 和l0=1,则0≤l3≤2,为了有最多的灰度空间去拉大其它像素间亮度差,所以l1的值要尽可能的小,则l3=0。当根据原图像灰度关系从小到大计算伪彩色图像时,像素亮度值一定要选满足约束要求的最小亮度值,下文如果遇到此类情况将同样处理不再提示。

3)l2=1 由,根据式(4)和(5)知道 l4≥l2-1,也就是l4≥0,则 l4取值应为 0,但步骤 1)计算得到 l4=1,为了确保图像中相邻像素对人眼感知颜色差不小于给定差值1,像素亮度值需要取计算得到亮度值中最大的那一个,所以l4取值为1。当根据灰度关系从小到大计算伪彩色图像各像素亮度值时,对于每一个像素,可能由与它相关的多个像素计算得到值,为了确保图像中相邻像素对颜色差不小于给颜色差值,像素亮度值一定要选这些值里面最大的那一个,下文如果遇到此类情况将同样处理不再提示。由,l2=1,以及 l5-l2=1,则 l5=2。

4)由l3=0和l4-l3=1计算得到l5应该取值为1,和步骤3)计算得到l4的值比较正好相等,所以l4=1保持不变。

5)由l4=1和l5-l4=1计算得到l5应该取值为2,和步骤3)计算得到的l5值比较正好相等,所以l5的值仍然为2。

图2.e给出的在人眼感知颜色差拉大到2时,根据灰度关系从小到大计算得到的各像素颜色值,初始各像素亮度值为0,色调值为0,饱和度值为9,具体计算过程如下:

1)由 l1=0、l0-l1=2、l2-l1=2、l4-l1=2 得:l0=2、l2=2、l4=2。

2)同样由式(2)和(3)可知|l3-l0|≤1,由|l3-l0|≤1和 l0=2,得 1≤l3≤3,则 l3=1。

3)由 l2=2,根据式(4)和(5)知道,则 l4≥l2-1,则 l4≥1则l4应该为1,但步骤1)计算得到的l4=2,所以 l4仍然为 2。 由 l2=2,以及 l5-l2=2,则 l5=4。

4)步骤 3)计算得 l4=2,而由 l3=1和 l4-l3=2算得l4=3,则 l4=3。

5)步骤 3)计算得到l5=4,由 l4=3和 l54-l4=2算得l5=5,则 l5=5。

图2.f给出的在人眼感知颜色差拉大到4时,根据灰度关系从小到大得到的各像素颜色值,初始图像中所有像素的饱和度值为9,色调值为0,亮度值为0,具体计算过程如下:

1)由 l1=0、l0-l1=4、l2-l1=4、l4-l1=4 得:l0=4、l2=4、l4=4。

2)同样由式(2)和(3)可知|l3-l0|≤1,由|l3-l0|≤1和 l0=4,得,3≤l3≤5,则 l3=3。

3)由 l2=2,根据式(4)和(5)知道,则 l4≥l2-1,则 l4≥3,则 l4应该为 3,但步骤 1)计算得到的 l4=4,所以 l4仍然为 4。 由 l2=4,以及 l5-l2=4,则 l5=8。

4)步骤 3)计算得 l4=4,而由 l3=3和 l4-l3=4算得l4=7,则 l4=7。

5)步骤 3)计算得到 l5=8,由 l4=7和 l5-l4=4算得l5=11,则l5=11。但l5=11已经超过亮度的取值范围,所以必须要变动饱和度,由 l4=7、c4=9、l5-l4+c4-c5=4、l5≤9,则 l5=9、c5=7。

图2.g给出的在人眼感知颜色差拉大到6时,根据灰度关系从小到大计算得到各像素颜色值,初始图像中所有像素的饱和度值为9,色调值为0,亮度值为0,具体计算过程如下:

1) 由 l1=0、l0-l1=6、l2-l1=6、l4-l1=6 得 :l0=6、l2=6、l4=6。

2)同样由式(2)和(3)可知|l3-l0|≤1,由|l3-l0|≤1和 l0=6,得 5≤l3≤7,则 l3=5。

3)由 l2=6,根据式(4)和(5)知道 l4≥l2-1,则 l4≥5,则l4应该为5,但步骤1)计算得到的l4=6,所以l4仍然为 6。由 l2=6,以及 l5-l2=6,则 l5=12。但 l5=12已经超过亮度的取值范围,所以必须要变动饱和度,由l2=6、c2=9、l5-l2+c3-c4=6、l5≤9,则 l5=9、c5=6。

4)步骤 3)计算得 l4=5,而由 l3=5和 l4-l3=6算得l4=11,则l4=11。但l4=11已经超过亮度的取值范围,所以必须要变动饱和度,由l3=5、c3=9、l4-l3+c3-c4=6、l4≤9,则 l4=9、c4=7。

5)由 l4=9、c4=2 和 l5-l4+c4-c5=6 算得 l5=9、c5=1,步骤 3)计算得到 l5=9、c5=6,则 l5=9、c5=1。 当根据原图灰度关系从小到大计算伪彩色图像各像素颜色值时,对于每一个像素,可能由与它相关的多个像素计算得到不同的饱和度值,为了确保图像中相邻像素对颜色差不小于给颜色差值,像素亮度值一定要选这些饱和度值里面最小的那一个,下文如果遇到此类情况将同样处理不再提示。

图2.h给出的在人眼感知颜色差拉大到7时,根据原图灰度关系从小到大计算得到的各像素颜色值, 初始图像中所有像素的饱和度值为9,色调值为0,亮度值为0具体计算过程如下:

1)由 l1=0、l0-l1=7、l2-l1=7、l4-l1=7 得:l0=7、l2=7、l4=7。

2)同样由式(2)和(3)可知|l3-l0|≤1,由|l3-l0|≤1和 l0=7,得 6≤l3≤8,则 l3=6。

3)由 l2=7,根据式(4)和(5)知道 l4≥l2-1,则 l4≥6,则l4应该为6,但步骤1)计算得到的l4=7,所以 l4仍然为 7。由 l2=7,以及 l5-l2=7,则 l5=14。但 l5=14已经超过亮度的取值范围,所以必须要变动饱和度,由l2=7、c2=9、l5-l2+c2-c5=7、l5≤9,则 l5=9、c5=4。

4)步骤 3)计算得 l4=7,而由 l3=6和 l4-l3=7算得l4=13,则l4=13。但l4=13已经超过亮度的取值范围,所以必须要变动饱和度,由l3=6、c3=9、l4-l3+c3-c4=7、l4≤9,则 l4=9、c4=5。

5)由 l4=9、c4=5 和 l5-l4+c4-c5=7 算得 l5=9、c4=-2,步骤 3)计算得到 l5=9、c5=4,则 l5=9、c5=-2。

其中Ps的饱和度值已经超越了取值区间。所以图像中有部分相邻像素颜色差不能通过拉大亮度差和饱和度差达到人眼清晰分辨颜色的人眼感知颜色差阈值。由灰度关系从小到大计算得到的各像素颜色值确定了图像中像素可以取的最小亮度值和最大饱和度值,由灰度关系从大到小求伪彩色图像可以确定图像像素可以取的最大亮度值和最小饱和度值,当像素的最大饱和度值小于最小饱和度值时或最小亮度值大于最大亮度值时,则有包含此像素的像素对无法通过拉大亮度差与饱和度差来拉大人眼感知颜色差到,此像素亮度和饱和度值需要确定下来。图2.i给出的在颜色差为7时,根据灰度关系从大到小计算得到的伪彩色图像,初始图像中所有像素的饱和度值为0,色调值为0,亮度值为9,具体计算过程如下:

1)赋给极大值像素亮度空间内最小饱和度值,也就是c5=0;

2)由 c5=0、c4-c5=7、c2-c5=7 得:c2=7、c4=7;

3)由 c4=7,根据式(2)和(3)得 l2≤l4+1,则 l2≤9,为了有最多的亮度空间去拉大其它像素间亮度差,所以l2的值要尽可能的大,应该取值为9。由c4=7、c1-c4=7、c3-c4=7得:c1=14、c3=14。 c1与 c4已经超出了饱和度取值范围,所以需要变动亮度,由 c1≤9、l4=9、c4=7、c1-c4+l4-l1=7 得:l1=4、c1=9;同理得:l3=4、c3=9。

4)由 c1≤9、l2=9、c2=7、c1-c2+l2-l1=7 得 c1=9、l1=4,和步骤3)计算得到l1、c1比较刚好相等,所以保持不变。

5)由式(2)和(3)可知|l3-l0|≤1,由|l3-l0|≤1 和c3≥c1,得 5≤l0≤3,c3=9 为了有最多的灰度空间去拉大其它像素间亮度差,所以l0的值要尽可能的大,应该取值为5。

6)由 l0=5、c1≥c0、c1-c0+l1-l0=7 得 l1=-2、c1=9,而和步骤4)计算得到的l1=4比较,为了确保图像中相邻像素对灰度差不小于给定人眼感知颜色差值7,像素亮度值需要取计算得到的亮度值中最小的那一个,所以l1=-2。

比较在人眼感知颜色差7下从小到大和从大到小计算得到的图像,像素 p0、p1、p3、p4、p5可以取的最大亮度值小于可以取的最小亮度值,或者可以取的最小饱和度值大于可以取的最大饱和度值,所以有包含这些像素的像素对人眼感知颜色差无法通过拉大饱和度差与亮度差进一步拉大,这些像素的亮度值与饱和度值需要确定下来。这些无法通过拉大饱和度差和亮度差进一步拉大灰度差的像素对的人眼感知颜色差有可能能拉大到7也有可能只能拉大到6,比较在人眼感知颜色差6从小到大计算得到的图像(用I6.1表示)和在人眼感知颜色差7从大到小计算得到的图像(用I7.2表示),其中,满足在I7.2亮度值大于I6.1或I7.2饱和度值小于I6.1的那些需要确定饱和度与亮度值的像素,它们的饱和度值和亮度值根据人眼感知颜色差7确定为I7.2中对应的饱和度值与亮度值,而在I7.2亮度值不大于I6.1且I7.2饱和度值不小于I6.1的那些需要确定亮度值与饱和度值的像素,它们的亮度值与饱和度值根据人眼感知颜色差6确定为I6.1中对应的亮度值与饱和度值。所以有:

1)p1在图2.i中亮度值不大于图2.g中亮度值且饱和度值不小于图2.g中饱和度值,则p1亮度值与饱和度值确定为图2.g中对应值0、9;

2)p0在图2.i中亮度值不大于图2.g中亮度值且饱和度值不小于图2.g中饱和度值,则p0亮度值与饱和度值确定为图2.g中对应值6、9;

3)p3在图2.i中亮度值不大于图2.g中亮度值且饱和度值不小于图2.g中饱和度值,则p3亮度值与饱和度值确定为图2.g中对应值5、9;

4)p4在图2.i中亮度值不大于图2.g中亮度值且饱和度值不小于图2.g中饱和度值,则p4亮度值与饱和度值确定为图2.g中对应值9、7;

5)p5在图2.i中饱和度值小于图2.g中饱和度值,则p5亮度值与饱和度值确定为图2.i中对应值9、0;

图2.k给出的在人眼感知颜色差拉大到8时,根据原图灰度关系从小到大得到的各像素颜色值,初始图像中所有像素的色调值为0,以及初始所有亮度值与饱和度值未确定的像素的亮度值为0、饱和度值为9,具体计算过程如下:

1)由 p1颜色为(0,9,0)、p2的亮度值与饱和度值已确定为6、9,以及它们之间的人眼感知颜色差需拉大到 8,所以有 p2的颜色为(6,9,2)。 p4的亮度值与饱和度值已确定为9、7,p4与p1的人眼感知颜色差已经不小8,所以p4颜色值保持不变。p1由p2与人眼感知颜色差需拉大到8,计算得p2到颜色为(8,9,2)。

2)由 p0颜色为(6,9,2),p3的亮度值与饱和度值已经确定,而由p0于p3与在原灰度图像中灰度值相等,所以要求它们色调值相等,所以p3颜色值为(5,9,2)。

3)p1由颜色为(8,9,0),根据式(3)知道 l4≥l2-1,则 l4≥7,而 l4已经确定为 9,所以 l4保持,且 c4≤c2、h4≥h2,所以饱和度值与色调值不需要改变。p5的饱和度值与亮度值已确定,p1与p5由饱和度差与亮度差带来的人眼感知颜色差为10,已经大于8,所以p5的颜色保持不变。

4)由 p1计算 p4的颜色值得 p4颜色为(9,7,4)。

5)由 p4计算 p5的颜色值得 p5颜色为(9,0,5)。

如图2.m所示各像素的颜色值。

3 算法

对于任意图像I,在图像局部信息人眼感知保真约束下,在确保相邻像素不同灰度值映射到人眼可分辨的不同颜色前提下,本方法让图像相邻像素色调差尽量小的具体步骤如下:

3.1 对图像中所有像素编号, 分别用Pa、Pb、Pc、…表示。任意两个像素Px和Py组成像素对,由于Px<Py必然有Py>Px,为了避免重复,Px和Py组成像素对用(Px,Py)表示(要求 Px<Py)。这些像素对可以组成如下几个像素对集合:

(1)图像中所有相邻且灰度值不等的像素对组成集合R,R中像素对在伪彩色图像中的颜色需要人眼可分辨,且色调差尽量的小。

(2)图像局部信息人眼感知保真要求部分像素对在伪彩色图像中的亮度值人眼感知不倒序。在这些像素对中灰度值相等的像素对组成集合E,而满足不相邻且灰度值不相等的像素对组成集合S。S和E中像素对在伪彩色图像中的颜色不要求人眼可分辨。

3.2 根据像素对集合,图像可以由等于关系聚类得到许多像素子集,具体如下:先由图像中每个像素都独自生成一个像素子集,分别用 P1、P2、P3、…PM表示,如果对有两个子集Pa和Pb存在一对像素(a,b)∈E,其中 a∈Pa,b∈Pb,则这两个子集合并得到新的像素子集Pa,b=Pa∪Pb,直到不再存在可以合并的子集才停止合并,并把得到的像素子集组成子集的集合L。像素对集合E中的像素对必然是由L内同一像素子集内像素组成的,而集合R和S中的像素对必然是L内不同像素子集间的像素组成的。其中,当子集Pa与任意其他子集Pc间不存在像素对(c,a)∈S∪R(像素c的灰度值小于像素a的灰度值),则子集Pa为极小值子集;而当子集Pb与任意其他子集Pc间不存在像素对(b,c)∈S∪R(像素b的灰度值小于像素c的灰度值),则子集Pb为极大值子集。

3.3 在拉大灰度值不相等的相邻像素间人眼感知颜色差时,每个像素会在不同的状态之间进行转换。为了标示像素的这些状态,建立三个状态标示数组 F1、F2、F3,其中数组元素 F2[x]和 F3[x]表示像素Px的状态。每个像素的颜色值需要从多个与它相关的像素颜色值计算而来,F2[x]就是用来标示是否这些原灰度关系不为等于的相关的像素都已遍历到,当都已遍历过则F2[x]=1,否则F2[x]=0,在后面会更具体的解释。F3[x]是用来在计算像素灰度值时标示是否这些原灰度关系为等于的相关的像素都已遍历到,当已遍历过则F3[x]=1,否则,F3[x]=0同样在后面会有更具体的解释。

3.4 由于数字图像灰度值取值是离散的,像素对之间亮度值、饱和度值、色度值以及人眼感知颜色差取值也是离散的。遍历像素的颜色取值空间,得到:亮度值序列 V=<v0,v1,v2,…,vm>,其中 v0=0,vm=256,从小到大排序;饱和度值序列S=<s0,s1,s2,…,sN>,其中sN=0,s0=1,从大到小排序;色调值序列 H<h0,h1,h2,…,hB>,其中 h0=0,hB=2π;人眼感知颜色差序列 D=<d0,d1,d2,…>,其中 d0=0。

3.5 初始图像中所有像素的饱和度值设为最大值1,色调值为0,亮度值为0。

3.6 由可感知度d0,根据灰度值大小关系从小到大计算得到伪彩色图像I0.1,I0.1中所有像素饱和度值为1,色调值为0,亮度值为0。

3.7 在原灰度值不相等的相邻像素间人眼感知颜色差已经拉大到di-1前提下,从人眼可感知度序列D中找到di-1的下一个可感知度di。在可感知度di下,根据像素间灰度大小关系从小到大计算各像素颜色值,得到一幅伪彩色Ii,1,令在新的Ii,1图像中,像素Px的颜色值以Ii,1(x)=[hi,1(x)si,1(x)vi,1(x)]表示。

(1)初始Ii,1为由上一个感知度di-1计算得到的图像。清零F2和F3。极小值像素子集内的像素状态标示F2和F3置1。

(2)遍历所有F3等于1的像素,计算在集合R中与这些像素相关像素的颜色值。以满足F3[a]等于1的像素 Pa为例,对任意包含 Pa像素对(Pa,Px)∈R,根据式(1)计算满足△E(Ii,1(a),g)=vi的颜色值 g=[hgsgvg],其中 hg≥hi,1(a)、sg≤si,1(a)、vg≥vi,1(a),且相对于 Ii,1(a)优先只亮度值序列V变动g的亮度,其次才是饱和度,最后才是色调。分别比较颜色的三个分量,如果hg>hi,1(x)则 hi,1(x)=hg,如 果 sg<si,1(x)则 si,1(x)=sg,如果vg>vi,1(x)则 vi,1(x)=vg。

(3)同样对任意包含 Pa像素对(Pa,Px)∈S,由式(2)和(3)计算满足J(vg)=va的亮度值vg,分别比较颜色的三个分量,如果 hi,1(a)>hi,1(x)则 hi,1(x)=hi,1(a),如果 si,1(a)<si,1(x)则 si,1(x=si,1(a),如果 vg≥vi,1(x)则 vi,1(x)=vg。

(4)当像素子集的集合L内有像素子集P,它的所有像素状态标示F2都为1时而F3都为0,则根据人眼感知不倒序对等于的要求对子集内所有像素灰度值进行调整。先在此像素子集内挑出灰度值最大的那个像素 Pa,然后找出所有满足(Pa,Px)∈E 或(Px,Pa)∈E的像素 Px(Px状态标示F3(x)要求等于 0),如果Pa和Px在Ii,1的亮度值不满足人眼感知不倒序对于等于关系的要求(见式(4)和式(5))时,若 Px的标示 F1(x)为 1,则根据式(4)和式(5)计算满足J(vg)=va的亮度值vg,分别比较颜色的三个分量,如果hi,1(a)>hi,1(x)则 hi,1(x)=hi,1(a),如果 si,1(a)<si,1(x)则 si,1(x)=si,1(a),如果 vg≥vi,1(x)则 vi,1(x)=vg。 当所有满足(Pa,Px)∈E 或(Px,Pa)∈E的像素都已被遍历过时,像素a的状态标示F3(a)置为1。然后从P中F3为0的像素中再一次挑出在Ii,1中亮度值最大的像素,然后重复前面的步骤。直到P中所有像素F3都为1时,如果像素子集的集合L内存在所有像素状态标示F2都为1而F3都为0的像素子集时,再回到本步骤(4)的开头。当像素子集的集合L内不存在所有像素状态标示F2都为1的像素子集时回到步骤(2),直到所有像素的F3都已经置 1 结束计算。如果在步骤(2)(3)和(4)计算过程中所有灰度差非0的相邻像素对人眼可感知度颜色差已经拉大到或超过视觉阈值T1,则需要在感知度T1下,根据像素间灰度大小关系从大到小计算一幅灰度图像 Ii,2,进入步骤 (3.8);否则如果di<T1,回到步骤(3.7)的开头,根据下一个感知度 di+1计算一幅新的伪彩色图像图像。

3.8 在感知度di下,根据像素间灰度大小关系从大到小计算一幅灰度图像Ii,2,令在新的图像Ii,2中,像素x的灰度值以Ii,2(x)表示。

(1)初始Ii,2为由上一个感知度di-1计算得到的图像,也就是Ii,2=Ii-1.3。保留在感知度di-1下计算图像时的状态标示数组F1中的值。清零F2和F3。像素极大值子集内的像素的状态标示F2和F3置1,且它们灰度值都设置为灰度空间最大灰度值。

(2)遍历所有F3等于1的像素,计算在集合 R中与这些像素相关的像素灰度值。以满足F3[a]等于1的像素 Pa为例,对任意包含 Pa像素对(Px,Pa)∈R,根据式(1)计算满足△E(Ii,1(a),g)=vi的颜色值 g=[hgsgvg]P(g,Ii,2(a))=vi的灰度值 g,其中 hg≤hi,2(a)、sg≥Si,2(a)、Vg≤Vi,2(a),且相对于Ii,1(a)优先只变动g的亮度,其次才是饱和度,最后才是色调。分别比较颜色的三个分量,如果 hg<hi,2(x)则 hi,2(x)=hg,如果 sg>Si,2(x)则 Si,2(x)=Sg,如果 Vg<Vi,2(x)则 Vi,2(x)=Vg。

(3)同样对任意包含 Pa像素对(Px,Pa)∈S,由式(2)根据式(1)计算满足 J(va)=vg的亮度值 vg,分别比较颜色的三个分量,如果hi,1(a)<hi,2(x)则hi,2(x)=hi,1(a),如果 Si,1(a)>Si,2(x)则 Si,2(x)=Si,1(a),如果 Vg<Vi,2(x)则 Vi,2(x)=Vg。对于任意像素Px,如果所有包含它的像素对(Px,Py)∈R∪S 都已根据步骤(2)和(3)计算过时,则像素Px的状态标示F2(x)置1。

(4)当像素子集的集合L内有像素子集P,它的所有像素状态标示F2都为1而F3都为0时,则根据人眼感知不倒序对等于的要求对子集内所有像素颜色值进行调整。先在此像素子集内挑出灰度值最小的那个像素 Pa,然后找出所有满足(Pa,Px)∈E 或(Px,Pa)∈E的像素 Px(Px状态标示 F3(x)等于 0),如果 Px的标示 F1(x)为 0,则根据式(2)、(3)由(1)计算满足J(va)=vg的新亮度值vg,分别比较颜色的三个分量,如果 hi,1(a)<hi,2(x)则 hi,2(x)=hi,1(a),如果 Si,1(a)>Si,2(x)则Si,2(x)=Si,1(a),如果 Vg<Vi,2(x)则 Vi,2(x)=Vg。 当所有满足(Pa,Px)∈E的像素都已被遍历过时,像素a的状态标示F3(a)置为1。然后从P中F3为0的像素中再一次挑出在Ii,2中灰度值最小的像素,然后重复前面的步骤。直到P中所有像素都F3为1时,如果像素子集L的集合内存在所有像素状态标示F2都为1而F3都为0的像素子集时回到本步骤(4)的开头,否则回到步骤(2),直到所有像素的F3都已经置1结束计算。

图 3 算法性能比较(a)原图,(b)彩虹编码,(c)曹方法,(d)全局方法,(e)本方法

4 实验结果与分析

本实验选用大小为500×500的灰度图像进行对比实验。为了体现该算法的性能,该实验分别选用了一幅灰度级少和一幅灰度级多的图像,其中图3第一行原图有73个灰度级,第二行原图有176个灰度级。该方法将和彩虹编码、参考文献[4]中曹方法以及参考文献[9]中本人前期研究的全局伪彩色优化方法这三个具有代表性的伪彩色优化算法做比较。

比较图3第一行图像,可以发现只有本方法和文献[9]的方法把相邻像素间人眼感知颜色差拉大到人眼能看清图像中的所有景物,彩虹编码生成的伪彩色图像不如原图清晰,曹方法生成的伪彩色图像仍然有部分景物不清晰,比较本方法与文献[9]全局方法,本方法像素间色调差明显要小,更有利于人感知原灰度图像景物信息。比较图3第二行图像,彩虹编码生成的伪彩色图像在图像上部比原图清晰很多,但在图像下部不如原图清晰,而且由于色调差异大,人眼感知原景物信息很困难;曹方法生成的伪彩色图像中上部与下部都很清晰,但图像中部景物仍然看不清;在本方法与文献[9]全局方法生成的伪彩色图像中,相邻像素间人眼感知颜色差都被拉大到人眼能看清图像中的所有景物,但本方法像素间色调差异小,优化效果更佳。

5 结论

本文在相邻像素亮度人眼感知不倒序约束下,提出一种伪彩色局部优化方法,以人可以通过伪彩色图像最好地获得原灰度图像包含的图像信息为优化目标,通过循序渐进的优化策略依次调整相邻像素亮度差、饱和度差与色调差得到优化目标值最佳伪彩色图像。

注:

①Wikipedia."Color difference".http://en.wikipedia.org/wiki/Color_difference.

猜你喜欢
彩色图像人眼子集
田志强
拓扑空间中紧致子集的性质研究
基于二维直方图的彩色图像全局阈值分割方法研究
Carmichael猜想的一个标注
关于奇数阶二元子集的分离序列
基于FPGA的实时彩色图像边缘检测
基于DCT—DWT—SVD的彩色图像安全存储方案
闪瞎人眼的,还有唇
看人,星光璀璨缭人眼
每一次爱情都只是爱情的子集