具体实施方式
下面结合说明书附图对本发明做进一步的描述。
振铃现象产生的主要原因是图像在缩放的过程中高频信息的丢失,高频分量丢失越多,振铃现象越严重。而低通滤波器的特点是“通低频阻高频”,尤其是理想低通滤波器的高频部分被完全滤掉。因此,当一帧图像的全部像素点通过低通滤波器后,图像中不同物体交界处的高频细节被丢失,振铃现象由此产生,并且低通滤波器越是趋于理想,振铃现象越明显。图像缩放过程中所采用的非线性滤波器(如多相滤波器),其抽头系数分布特性非常接近于理想低通滤波器的系数分布特性,而一般的线性滤波器(如三角线性滤波器)抽头系数分布特性与理想低通滤波器差别较大。
由上述振铃产生的原因可知,要降低图像缩放后的振铃现象且尽可能的保持原图像的真实细腻,只要在原图像的平坦区域保留多相滤波器输出的插值像素值,而在像素灰度值剧烈变化区域采用线性滤波器进行修正,即可以实现去振铃的目的。
因此,本发明所述减弱图像振铃噪声的方法,如图1所示,包括:
查找出图像在进行图像缩放处理中处于灰度值剧烈变化区域内的插值点;以及,
采用线性滤波器对上述各插值点的像素值进行修正。
作为本发明进一步地实施例,上述实施例中,所述的查找出图像在进行图像缩放处理中处于灰度值剧烈变化区域内的插值点,具体实现如下:
(1)、分别计算出图像在进行图像缩放处理中各插值点所对应的全局最大差值g_max和局部最大差值loc_max,包括如下步骤:
在同一方向上选取出与插值点临近的至少两个原像素点;
相邻两原像素点的像素值相减,比较得出差值绝对值最大的作为全局最大差值;
处于插值点第一侧的至少一个原像素点和处于插值点第二侧的一个原像素点,相邻两原像素点的像素值相减,比较得出差值绝对值最大的作为第一局部差值;
处于插值点第二侧的至少一个原像素点和处于插值点第一侧的一个原像素点,相邻两原像素点的像素值相减,比较得出差值绝对值最大的作为第二局部差值;
比较第一局部差值和第二局部差值,选择差值小的作为局部最大差值;
(2)、确定各插值点所在区域,具体实现如下:
判断各插值点的全局最大差值是否小于5倍的局部最大差值,是,该插值点处于平坦区域;否则,该插值点处于灰度值剧烈变化区域;
(3)、输出处于灰度值剧烈变化区域内的插值点。
在实际应用中,上述的在同一方向上选取出的与插值点临近的原像素点的个数通常是由图像在进行图像缩放处理中所采用的滤波器的抽头数来决定的,若滤波器的抽头数为2,则选取的与插值点临近的原像素点的个数即为2个;若滤波器的抽头数为4,则选取的与插值点临近的原像素点的个数即为4个,依次类推。当然,选取的滤波器抽头数越多最终缩放后图像的效果也就越好。另外,上述在计算第一局部差值和第二局部插值时,进行相邻两原像素点的像素值相减的原像素点个数应为图像在进行图像缩放处理中所采用的滤波器抽头数的1/2(具体的实现过程在如下的实施例中作详细的说明)。
于一具体实施例中,如图3和图4所示,分别为一具体插值点的全局最大差值和局部最大差值的求解示意图。该实施例,原图像是经非线性滤波插值的缩放技术生成的缩放后的图像,假设本实施例中所采用的非线性滤波器为多相滤波器,且该多相滤波器是6抽头的。因此经该多相滤波器计算得到的横向缩放的各插值点的像素值是由插值像素位置横向方向上临近的6个原像素点计算得出的,纵向缩放时插值点的像素值计算过程同理。如图3,与插值点11最临近的6个原像素点分别为①、②、③、④、⑤和⑥。两相邻原像素点相减,即计算|①-②|,|②-③|,|③-④|,|④-⑤|和|⑤-⑥|,比较差值绝对值并取出最大的作为全局最大差值g_max。图4所示,图中l_max(left_max)表示插值点11左侧差值绝对值的最大值,r_max(right_max)表示插值点11右侧差值绝对值的最大值。两者的具体求解过程同g_max类似,只是所涉及到的原像素点个数不同(图中B所示:左侧为实线连接的三个像素点②、③和④,右侧为虚线连接的三个像素点③、④和⑤,即参与第一局部差值和第二局部差值计算进行相邻两原像素点的像素值相减的原像素点个数均为3个)。计算|②-③|和|③-④|,比较差值绝对值并取出最大的值作为l_max,同时计算|③-④|和|④-⑤|差值绝对值并取出最大的值作为r_max,然后选则l_max和r_max较小者作为局部最大插值loc_max。
得出全局最大差值g_max和局部最大插值loc_max后,即可判断该插值点所处的区域。判断插值点的全局最大差值g_max是否小于5倍的局部最大差值loc_max,是,该插值点处于平坦区域;否则,该插值点处于灰度值剧烈变化区域;
最后,输出处于灰度值剧烈变化区域内的插值点。
作为本发明更进一步地实施例,采用线性滤波器对处于灰度值剧烈变化区域内的各插值点的像素值进行修正,具体实现如下:
若插值点所对应的全局最大差值大于5倍的局部最大差值且小于10倍的局部最大差值时,采用下述方式对该插值点像素值进行修正:
其中,lin_filter为线性滤波器的值,loc_max为局部最大差值,g_max为全局最大差值;
当插值点原像素值<min时,用min值作为该插值点像素值;
当插值点原像素值>max时,用max值作为该插值点像素值;
当min<插值点原像素值<max时,该插值点像素值不变;
若插值点所对应的全局最大差值大于10倍的局部最大插值时,用线性滤波器的值lin_filter作为该插值点的像素值。
本发明中所采用的线性滤波器优选是系数呈三角特性分布的六抽头滤波器,其频谱图如图2所示,从图中可以明显看出,相比理想低通滤波器的频谱特性,线性三角滤波器对高频信息的屏蔽就没那么“理想”,该特性在去除振铃现象是很有用的。其中,线性滤波器抽头系数的具体大小要依据具体插值点所处的相位大小计算得到。线性滤波器的各抽头的抽头系数计算过程如下:
如图6所示,假设,插值点14处的相位大小为96.4,则phase_frac(相位的小数部分)为0.4。
如果,线性滤波器是两抽头的(tap2和tap3),则其抽头系数计算:
c_tap2=1.0-phase_frac,
c_tap3=phase_frac;
这是两抽头的情况,也是最简单的情况。
如果,线性滤波器是六抽头的(tap0,tap1,tap2,tap3,tap4,tap5),则抽头系数计算:
c_tap0=(1.0-phase_frac)/64.0;
c_tap1=(15.0-8*phase_frac)/64.0;
c_tap2=(32.0-8*phase_frac)/64.0;
c_tap3=(15.0+8*phase_frac)/64.0;
c_tap4=(1.0+8*phase_frac)/64.0;
c_tap5=phase_frac/64.0。
从上述计算过程可以看出,上述各抽头系数之和等于1,其系数是线性分布。其中,在计算六抽头滤波器的抽头系数时,各抽头系数计算公式中分母数值的选择可以是16、32或64等等即2n值,而具体选择什么样的系数,实际上是由硬件设备来确定的。
抽头系数计算完成后,即可得到线性滤波器的值lin_filter,该值是由线性滤波器各抽头系数分别与对应的原像素点像素值的乘积之和计算得到,具体表现为:
如图6所示的实施例,lin_filter=c_tap0*tap0+c_tap1*tap1+c_tap2*tap2+c_tap3*tap3+c_tap4*tap4+c_tap5*tap5。
下面结合图5所示的实施例介绍准确寻找需要去振铃操作的目标插值像素点的方法。
从图5中可以看出该图像具有两个灰度具有明显差别的物体,分别为第一物体1和第二物体2,这两个物体的边界为图示中的边界线3。假设该图像经多相滤波器处理后得到的两个插值分别为第一插值点8和第二插值点9。因该多相滤波器为6抽头,因此第一插值点8的全局最大差值的计算范围为范围4(即选取临近第一插值点8的6个原像素点),第一插值点8的局部最大差值的计算范围为范围5。第二插值点9的全局最大差值的计算范围为范围7,第二插值点9的局部最大差值的计算范围为范围6。从图中可以看出,当插值点位于第一插值点8时,因为第一插值点8所用到的有效像素点都在同一个第一物体1中,根据图1所示算法流程图可知只要计算得到的g_max小于五倍的loc_max,即表示这六个像素点不包括边界信息,此时不需要对第一插值点8的像素值进行去振铃操作(进行修正)。当插值点位于第二插值点9时,其所用到的有效像素点分布于不同物体1和2中,依据上述区域判定方法得到g_max远远大于loc_max。根据算法流程图可知:只要g_max大于五倍的loc_max就认为此插值点包含了边界信息,需要对第二插值点9进行去振铃操作。这里分两种情况:
1)g_max大于五倍的loc_max且小于十倍的loc_max时,用线性三角滤波器的值lin_filter(linear_filter)、g_max及loc_max对插值点的像素值进行约束修正,约束公式为:
min=lin_filter-3/5×loc_max+1/6×g_max+1/32
max=lin_filter+3/5×loc_max-1/6×g_max-1/32
当插值像素小于min的值时,用min代替插值点像素值;当插值像素大于max的值时,用max代替插值点像素值;其它情况下插值点像素值保持不变。
2)g_max大于十倍的loc_max时,直接用lin_filter取代原插值像素点的值。
这里注意一点,如果插值点在如图5中像素点g、h之间时,此时实际情况是不需要对其进行去振铃操作的;此种情况刚好适用于求得的g_max与loc_max相等(即g_max与loc_max都是像素点g、h之间的差值的绝对值),符合g_max小于5*loc_max的情况,所以此时不会进行去振铃操作,这正与实际情况相吻合,所以这也是本发明所述方法的优点之一。
如图7所示,本发明所述减弱图像振铃噪声的装置,包括:
查找单元12,查找出图像在进行图像缩放处理中处于灰度值剧烈变化区域内的插值点并输出;及
去振铃单元13,采用线性滤波器对所述查找单元输出的插值点进行修正,以去除振铃噪声。
作为本发明进一步地实施例,所述查找单元12,包括计算单元、区域判定单元和查找结果输出单元;其中,
所述计算单元,分别计算出图像在进行图像缩放处理中各插值点所对应的全局最大差值和局部最大差值;
所述区域判定单元,判断各插值点的全局最大差值是否小于5倍的局部最大差值,是,该插值点处于平坦区域;否则,该插值点处于灰度值剧烈变化区域;
查找结果输出单元,输出处于灰度值剧烈变化区域内的插值点。
作为本发明更进一步地实施例,所述去振铃单元13,包括:修正方式判定单元和修正执行单元;
所述修正方式判定单元,若插值点所对应的全局最大差值大于5倍的局部最大差值且小于10倍的局部最大差值时,采用第一修正方式;若插值点所对应的全局最大差值大于10倍的局部最大插值时,采用第二修正方式;
所述修正执行单元,依据所述修正方式判定单元输出的修正判定结果对各插值点进行修正;
其中,所述第一修正方式具体为:采用下列公式对该插值点像素值进行修正:
其中,lin_filter为线性滤波器的值,loc_max为局部最大差值,g_max为全局最大差值;
当插值点原像素值<min时,用min值作为该插值点像素值;
当插值点原像素值>max时,用max值作为该插值点像素值;
当min<插值点原像素值<max时,该插值点像素值不变;
第二修正方式具体为:用线性滤波器的值lin_filter作为该插值点的像素值。
其中,本发明所述线性滤波器为线性三角滤波器。
综上所述,本发明只在物体交界处附近(如图5中第二插值点9)进行去振铃操作,而远离物体交界处(如图5中第一插值点8)不进行去振铃操作,从而达到“该去振铃区域尽量去振铃,不该去振铃区域尽量不去振铃”的目的。这样既减弱了振铃现象的影响,又尽可能地保持了原图像的整体画面质量。相比其它一些方法所介绍的,在离交界处相当大的区域内不加选择的一概进行去振铃操作效果要好很多。如图8和图9所示,图8是未经去振铃噪声操作的图像;图9是采用本发明减弱图像振铃噪声后的图像,对比两幅图可以看出,图9中减弱了原有图8所示图像中的振铃噪声,还保留了原图8所示图像画面的细节信息。
以上,仅为本发明的较佳实施例,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求所界定的保护范围为准。