具体实施方式
下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
图1是本发明一个实施例的图像边缘的抗锯齿方法流程图。
在步骤110,用户触发源图像,使源图像横向缩放(行缩放)或者纵向缩放(列缩放),从而得到目的图像(即图像缩放后的图像)。
需要说明的是,本发明可以仅对图像的行缩放进行抗锯齿处理,也可以仅对图像的列缩放进行抗锯齿处理,还可以兼容行、列缩放抗锯齿处理两种情况。对于此种兼容情况,在进行抗锯齿处理之前,首先需要判断是先进行行缩放抗锯齿处理还是先进行列缩放抗锯齿处理。
在步骤120,获取目的图像中的一个像素点(即待处理像素点)dst(n)在源图像中的位置,如图2、图3中的dst位置。
具体地,该待处理像素点(以下简称待处理点)在源图像中的位置是其在源图像中的坐标。现设源图像中每一像素点之间距离为1,则待处理点dst(n)的横坐标或者纵坐标为小数,例如其横坐标或纵坐标为3.2。如果对源图像行缩放,则待处理点dst(n)的横坐标是小数,如果对源图像列缩放,则待处理点dst(n)纵坐标是小数。
在步骤130,获取距离该待处理点dst(n)最近的行或列方向的源图像中的第一像素点和/或第二像素点。
具体地,对该待处理点dst(n)在源图像中的横坐标或纵坐标取整数部分以得到上述第一像素点。对该第一像素点的横坐标或纵坐标加1以得到上述第二像素点。例如,待处理点dst(n)横坐标为3.2,则第一像素点横坐标为3,第二像素点横坐标为4。
一个例子中,对源图像行缩放,则获取的是距离dst(n)最近的行方向的像素点,如图2中的像素点B和/或C;对源图像列缩放,则获取的是距离dst(n)最近的列方向的像素点,如图3中的像素点B和/或E。
在步骤140,判定上述第一像素点和/或第二像素点是否为源图像的边缘点。
具体地,判断上述第一像素点是否为边缘点的方法为:对该待处理点dst(n)在源图像中的横坐标或纵坐标取整数部分后再减1,以得到第三像素点;例如,在行缩放时,图2中的像素点A为第三像素点;在进行列缩放时,图3中的像素点G为第三像素点;然后计算该第一像素点的像素值与该第三像素点的像素值的差值绝对值sub1,并计算该第一像素点的像素值与该第二像素点的像素值的差值绝对值sub2,再计算sub1与sub2的差值绝对值sub3;最后判定该值sub3是否大于系统设定的阈值,以获知该第一像素点是否为源图像的边缘点。
判定上述第二像素点(图2中的C点,图3中的E点)是否为边缘点的方法为:对该待处理点dst(n)在源图像中的横坐标或纵坐标取整数部分后再加1,以得到第四像素点;例如,在行缩放时,图2中的像素点K为第四像素点;在进行列缩放时,图3中的像素点L为第四像素点;然后计算该第二像素点的像素值与该第四像素点的像素值的差值绝对值sub4,并计算该第二像素点的像素值与该第一像素点的像素值的差值绝对值sub1,再计算sub4与sub1的差值绝对值sub5;最后判断sub5是否大于系统设定的阈值,以获知该第二像素点是否为边缘点。
在步骤150,在该第一像素点和/或第二像素点为边缘点情况下,以该待处理点dst(n)为中心选取源图像中的多个像素点,基于该多个像素点得到与该多个像素点相关的均值davg。
具体地,以该待处理点dst(n)为中心,在行或列向选取源图像中的6个像素点;将该6个像素点的像素值分别与该待处理点dst(n)的当前像素值做差值绝对值,选取其中最小的4个差值绝对值所对应的像素点,将该4个像素点的像素值做均值,从而得到上述均值davg。
需要说明的是,本发明不限于选取6个像素点,也可以选取任意多个像素点,如选取8个像素点;将该8个像素点的像素值与该待处理点dst(n)的当前像素值做差值绝对值,再选取其中最小的若干个(如4个)差值绝对值所对应的像素点;将该若干个(如4个)像素点的像素值做均值,从而得到上述均值davg。
一个例子中,在源图像行缩放情况下,上述选取6个像素点是在列方向选取的;在源图像列缩放情况下,上述选取6个像素点是在行方向选取的。
在步骤160,对该第一像素点像素值、第二像素点像素值中的一个,以及上述均值davg分别做加权平均,得到加权平均值dj-p,并将该dj-p作为修正的像素值赋予所述待处理点dst(n)。
具体地,通过将davg代入下述公式(1)或(2),以得到dst(n)修正后的像素值dj-p。
在待处理点dst(n)与该第一像素点之间的距离Δx<=1/2时,
其中,B是该第一像素点的像素值。
在待处理点dst(n)与该第一像素点之间的距离Δx>1/2时,
其中,C是该第二像素点的像素值。
在步骤170,判定目标图像中所有待处理点dst(n)的像素值已经修正完,若目标图像中的全部像素点均已修正完,则结束,否则继续获取目标图像中的尚未处理的像素点。
下面分别详述行缩放后的抗锯齿方法及列缩放后的抗锯齿方法。
图2是本发明一个实施例的行缩放后待处理点dst(n)与源图像中像素点位置关系示意图;其中,圆点代表源图像中的像素点,“X”代表缩放后的待处理点dst,并设源图像中像素点与像素点之间的距离为1。具体处理过程如下:
(1)对该待处理点dst在源图像中的横坐标取整数部分,从而得到源图像中的像素点B,且该像素点B是行向距离该待处理点dst最近的像素点之一。
例如,该待处理点dst在源图像中的横坐标为3.2,则取整数部分后为3,因此像素点B横坐标为3。
(2)判断点像素点B是否为源图像的边缘点。
具体地,计算该像素点B的像素值与像素点A的像素值的差值绝对值sub1,计算像素点B的像素值与像素点C的像素值的差值绝对值sub2,再计算sub1与sub2的差值绝对值sub3,然后将sub3与系统设定的阈值相比较,若sub3大于等于该阈值,则判定该像素点B为边缘点,否则判定该像素点B为非边缘点。
一个例子中,将像素点B的横坐标加1,得到像素点C的横坐标,且该像素点C为行向距离该待处理点dst最近的另一个像素点C;将像素点B的横坐标减1,得到上述像素点A的横坐标;其中,像素点B、C、A纵坐标与待处理点dst在源图像中的纵坐标相同。
(3)若该像素点B为边缘点,则以待处理点dst为中心纵向选取6个像素点B、C、D、E、G、H,分别计算该6个像素点与待处理点dst的差值绝对值,再选取其中4个最小差值绝对值所对应的像素点,假设为点B、C、E、H,则计算该4个像素点的像素值均值,即根据davg=(B+C+E+H)/4得到均值davg。
(4)在该待处理点dst与该像素点B的行向距离Δx<=1/2情况下,则dst修正后的像素值满足 其中,B为像素点B的像素值。
在该待处理点dst与该像素点B的行向距离Δx>1/2情况下,则dst修正后的像素值满足 其中,C为像素点C的像素值。
图3是本发明一个实施例的列缩放后待处理点dst(n)与源图像中像素点位置关系示意图;其中,圆点代表源图像的像素点,“X”代表缩放后的待处理点dst,并设源图像中像素点与像素点之间的距离为1。具体处理过程如下:
(1)对该待处理点dst在源图像中的纵坐标取整数部分,从而得到源图像中的像素点B,且该像素点B是纵向距离该待处理点dst最近的像素点之一。
例如,该待处理点dst在源图像中的纵坐标为4.1,则取整数部分后为4,因此像素点B纵坐标为4。
(2)判断像素点B是否为源图像的边缘点。
具体地,计算该像素点B的像素值与该像素点G的像素值的差值绝对值sub1,计算像素点B的像素值与像素点E的像素值的差值绝对值sub2,再计算sub1与sub2的差值绝对值sub3,然后将sub3与系统设定的阈值相比较,若sub3大于等于该阈值,则判定该像素点B为边缘点,否则判定该相似度B为非边缘点。
一个例子中,将像素点B的纵坐标加1,得到上述像素点G的纵坐标,且该像素点G为列向距离该待处理点dst最近的另一个像素点;将像素点B的纵坐标减1,得到上述像素点E的纵坐标;其中,像素点B、E、G的横坐标与待处理点dst在源图像中的横坐标相同。
(3)若该像素点B为边缘点,则以待处理dst为中心点横向选取6个像素点A、B、C、D、E、F,分别计算该6个像素点与待处理点dst的差值绝对值,再选取其中4个最小差值绝对值所对应的像素点,假设为点B、C、E、F,则计算该4个像素点的像素值均值,即根据davg=(B+C+E+F)/4得到均值davg。
(4)在该待处理点dst与像素点B的列向距离Δx<=1/2情况下,则dst修正后的像素值满足 其中,B为像素点B的像素值。
在该待处理点dst与像素点B的列向距离Δx>1/2情况下,则dst修正后的像素值满足 其中,E为像素点E的像素值。
图4是本发明一个实施例的图像抗锯齿设备框图。该图像抗锯齿设备包括待处理点位置获取模块410、最近像素点获取模块420、边缘点判断模块430、均值计算模块440、待处理点像素值修正模块450。
该待处理点位置获取模块410用于获取目的图像的待处理点dst(n)在源图像中位置。
该最近像素点获取模块420用于获取距离该待处理点dst(n)最近的行或列方向的源图像中的第一像素点和/或第二像素点。
具体地,对该待处理点dst(n)在源图像中的横坐标或纵坐标取整,从而得到该第一像素点。对该待处理点dst(n)在源图像中的横坐标或纵坐标取整后加1,从而得到该第二像素点。
边缘点判断模块430用于判断第一像素点和/或第二像素点是否为边缘点。
该均值计算模块440在该第一像素点和/或第二像素点为边缘点情况下,以该待处理点dst(n)为中心列或行向选取源图像中的多个像素,基于该多个像素的像素值得到与该多个像素相关的均值davg。
具体地,该均值计算模块440选取源图像中的6个像素点,计算该6个像素点的像素值分别与待处理点dst(n)的当前像素值的差值绝对值,选取其中4个最小差值绝对值所对应的像素点,将该4个像素点的像素值做均值,从而得到上述davg。
待处理点像素值修正模块450对所述第一像素点的像素值、第二像素点的像素值中的一个,以及上述均值davg分别做加权平均运算,并将该加权平均值作为修正的像素值赋予该待处理点dst(n)。
具体地,在该待处理点dst(n)与该第一像素点的距离Δx<=1/2时,
其中,B是该第一像素点的像素值。
在该待处理点dst(n)与该第一像素点的距离Δx>1/2时,
其中,C是该第二像素点的像素值。
图5是本发明另一个实施例的图像抗锯齿设备框图。该图像抗锯齿设备包括处理模块510、行抗锯齿设备520、列抗锯齿设备530。该行抗锯齿设备520包括待处理点横坐标获取模块521、最近像素点获取模块522、边缘点判断模块523、均值计算模块524、待处理点像素值修正模块525。该列抗锯齿设备530包括待处理点纵坐标获取模块531、最近像素点获取模块532、边缘点判断模块533、均值计算模块534、待处理点像素值修正模块535。
该处理模块510基于用户的触发,确定源图像是进行行缩放或者进行列缩放;并在源图像进行行缩放情况下,将源图像及目的图像(缩放后的图像)发送至该行抗锯齿设备520;在源图像进行列缩放情况下,将源图像及目的图像发送至列抗锯齿设备530。
该行抗锯齿设备520中的待处理点横坐标获取模块521获取图像缩放后的待处理点dst(n)在源图像中的横坐标。
该最近像素点获取模块522依据该待处理点dst(n)的横坐标,获取行向距离该待处理点dst(n)最近的源图像中的第一像素点和第二像素点。
该边缘点判断模块523用于判断第一像素点和/或第二像素点是否为行向边缘点。
该均值计算模块524在该第一像素点和/或第二像素定为边缘点情况下,以该待处理点dst(n)为中心纵向选取源图像中的多个像素,并基于该多个像素得到与该多个像素相关的均值davg。
该待处理点像素值修正模块525对该第一像素点的像素值、第二像素点的像素值中的一个,以及上述均值davg分别做加权平均运算,并将该加权平均值作为修正的像素值赋予该待处理点dst(n)。
该列抗锯齿设备530中的待处理点纵坐标获取模块531获取图像缩放后的待处理点dst(n)在源图像中的纵坐标。
该最近像素点获取模块532依据该待处理点dst(n)的纵坐标,获取列向距离该待处理点dst(n)最近的源图像中的第一像素点和第二像素点。
该边缘点判断模块533用于判断第一像素点和/或第二像素点是否为列向边缘点。
该均值计算模块534在该第一像素点和/或第二像素点为边缘点情况下,以该待处理点dst(n)为中心横向选取源图像中的多个像素,基于该多个像素得到与该多个像素相关的均值davg。
该待处理点像素值修正模块535对该第一像素点的像素值、第二像素点的像素值中的一个,以及上述均值davg分别做加权平均运算,并将该加权平均值作为修正的像素值赋予该待处理点dst(n)。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤。其中,前述存储介质包括ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质等。
最后所应说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明技术方案的精神和范围。