一种多线宽线段端点反走样处理方法和系统

文档序号:31847565发布日期:2022-10-19 00:14阅读:48来源:国知局
一种多线宽线段端点反走样处理方法和系统

1.本发明属于图形图像处理技术领域,尤其涉及一种多线宽线段端点反走样处理方法和系统。


背景技术:

2.近年来,在机载嵌入式领域,小屏幕绘图需求越来越广泛,常见的与用户交互的设备都带交互小屏幕。此类设备有一定的显示需求,但是对显示的帧率要求不高,使用专用显示芯片将会增加功耗、体积和成本,因此一般使用单片机或者cpu直接进行图形的绘制,而绘制直线则是最为基础的部分。
3.嵌入式系统cpu计算能力相对于通用cpu要弱很多,因此绘制线段的算法在保证显示效果的情况下,速度要尽可能的快。目前公认的绘制直线最快的算法为bresenham算法,但是其仅仅支持单线宽(即线宽为一个像素),虽然可以通过绘制多条相邻线段来支持整数多线宽,但该方法不支持反走样,绘制出来的线段存在锯齿,显示效果较差,无法满足显示需求;而常用的快速反走样算法:wu反走样算法,虽然显示效果不错,但仅仅是针对单线宽的反走样,没有涉及到多线宽;四线渐变反走样算法绘制的多线宽线段在反走样的显示方面相较于wu反走样算法有较好的提升,但是四线渐变反走样算法并未考虑到多线宽线段端点为浮点数的情况,对于端点坐标为浮点数的情况直接采用取整的方法,而且四线渐变反走样算法只是对线段的上下两侧进行了反走样的处理,并没有对端点处进行反走样的处理,也就是端点处并无反走样的显示效果,这样使得多线宽线段的绘制不符合实际的显示。


技术实现要素:

4.本发明针对现有技术中的不足,提供一种多线宽线段端点反走样处理方法和系统。
5.第一方面,本发明提供一种多线宽线段端点反走样处理方法,包括:获取多线宽线段的起始点坐标、终止点坐标和线宽;所述起始点和终止点分别为多线宽线段两端的中点;根据线宽计算起始点坐标或终止点坐标的上方添加的像素点个数;根据线宽计算起始点坐标或终止点坐标的下方添加的像素点个数;根据起始点坐标计算起始点的权重值;根据终止点坐标计算终止点的权重值;根据起始点的权重值,计算起始点坐标上下方添加的像素点的像素值;根据终止点的权重值,计算终止点坐标上下方添加的像素点的像素值;以起始点坐标上下方添加的像素点的像素值为基础像素值,通过四线渐变反走样算法完成起始点处待反走样处理的像素点的反走样;以终止点坐标上下方添加的像素点的像素值为基础像素值,通过四线渐变反走样算法完成终止点处待反走样处理的像素点的反走样。
6.进一步地,所述根据线宽计算起始点坐标或终止点坐标的上方添加的像素点个数,包括:根据以下公式计算起始点坐标和或终止点坐标的上方添加的像素点个数:dn=ceil((w-2)/2);其中,dn为起始点坐标和或终止点坐标的上方添加的像素点个数;w为线段的线宽。
7.进一步地,所述根据线宽计算起始点坐标或终止点坐标的下方添加的像素点个数,包括:根据以下公式计算起始点坐标和或终止点坐标的下方添加的像素点个数:un=floor((w-2)/2;其中,un为起始点坐标和或终止点坐标的下方添加的像素点个数;w为线段的线宽。
8.进一步地,所述根据起始点坐标计算起始点的权重值,包括:根据以下公式计算起始点的权重值:sw=1-(x
s-floor(xs));其中,sw为起始点的权重值;xs为起始点坐标的横坐标值。
9.进一步地,所述根据终止点坐标计算终止点的权重值,包括:根据以下公式计算终止点的权重值:ew=1-(ceil(xe)-xe);其中,ew为终止点的权重值;xe为终止点坐标的横坐标值。
10.进一步地,所述根据起始点的权重值,计算起始点坐标上下方添加的像素点的像素值,包括:根据以下公式计算起始点坐标上下方添加的像素点的像素值:gs=g
×
sw;其中,gs为起始点坐标上下方添加的像素点的像素值;g为像素点的基础像素值;sw为起始点的权重值。
11.进一步地,所述根据终止点的权重值,计算终止点坐标上下方添加的像素点的像素值,包括:根据以下公式计算终止点坐标上下方添加的像素点的像素值:ge=g
×ew
;其中,ge为终止点终止点坐标上下方添加的像素点的像素值;g为像素点的基础像素值;ew为终止点的权重值。
12.进一步地,所述以起始点坐标上下方添加的像素点的像素值为基础像素值,通过四线渐变反走样算法完成起始点处待反走样处理的像素点的反走样,包括:以起始点坐标上下方添加的像素点的像素值对起始点处位于线段线宽部分的像素点进行像素值赋值;以经过起始点的垂直线为基准,选取垂直线上在线段线宽范围外距离起始点最近的四个像素点,其中y轴负方向上距离起始点最近的像素点作为第一像素点,距离起始点第二近的像素点作为第二像素点;y轴正方向上距离起始点最近的像素点作为第三像素点,距
离起始点第二近的像素点作为第四像素点;计算第一像素点与起始点在y轴方向上的距离;根据第一像素点与起始点在y轴方向上的距离分别计算四个像素点的权重;根据四个像素点的权重分别计算对应像素点的像素值。
13.进一步地,所述以终止点坐标上下方添加的像素点的像素值为基础像素值,通过四线渐变反走样算法完成终止点处待反走样处理的像素点的反走样,包括:以终止点坐标上下方添加的像素点的像素值对终止点处位于线段线宽部分的像素点进行像素值赋值;以经过终止点的垂直线为基准,选取垂直线上在线段线宽范围外距离终止点最近的四个像素点,其中y轴负方向上距离终止点最近的像素点作为第五像素点,距离终止点第二近的像素点作为第六像素点;y轴正方向上距离终止点最近的像素点作为第七像素点,距离终止点第二近的像素点作为第八像素点;计算第五像素点与终止点在y轴方向上的距离;根据第五像素点与终止点在y轴方向上的距离分别计算四个像素点的权重;根据四个像素点的权重分别计算对应像素点的像素值。
14.第二方面,本发明提供一种多线宽线段端点反走样处理系统,包括:获取模块,用于获取多线宽线段的起始点坐标、终止点坐标和线宽;所述起始点和终止点分别为多线宽线段两端的中点;第一计算模块,用于根据线宽计算起始点坐标或终止点坐标的上方添加的像素点个数;第二计算模块,用于根据线宽计算起始点坐标或终止点坐标的下方添加的像素点个数;第三计算模块,用于根据起始点坐标计算起始点的权重值;第四计算模块,用于根据终止点坐标计算终止点的权重值;第五计算模块,用于根据起始点的权重值,计算起始点坐标上下方添加的像素点的像素值;第六就算模块,用于根据终止点的权重值,计算终止点坐标上下方添加的像素点的像素值;第一反走样模块,用于以起始点坐标上下方添加的像素点的像素值为基础像素值,通过四线渐变反走样算法完成起始点处待反走样处理的像素点的反走样;第二反走样模块,用于以终止点坐标上下方添加的像素点的像素值为基础像素值,通过四线渐变反走样算法完成终止点处待反走样处理的像素点的反走样。
15.本发明提供一种多线宽线段端点反走样处理方法和系统,其中方法包括获取多线宽线段的起始点坐标、终止点坐标和线宽;所述起始点和终止点分别为多线宽线段两端的中点;根据线宽计算起始点坐标或终止点坐标的上方添加的像素点个数;根据线宽计算起始点坐标或终止点坐标的下方添加的像素点个数;根据起始点坐标计算起始点的权重值;根据终止点坐标计算终止点的权重值;根据起始点的权重值,计算起始点坐标上下方添加的像素点的像素值;根据终止点的权重值,计算终止点坐标上下方添加的像素点的像素值;以起始点坐标上下方添加的像素点的像素值为基础像素值,通过四线渐变反走样算法完成
起始点处待反走样处理的像素点的反走样;以终止点坐标上下方添加的像素点的像素值为基础像素值,通过四线渐变反走样算法完成终止点处待反走样处理的像素点的反走样。本发明解决了通过四线渐变反走样算法绘制的多线宽线段未对端点处做反走样处理的问题,使得多线宽线段的显示效果好,更符合实际的显示。
附图说明
16.为了更清楚地说明本发明的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
17.图1为本发明实施例提供的一种多线宽线段端点反走样处理方法的流程图;图2为本发明实施例提供的多线宽线段端点反走样的示意图;图3为本发明实施例提供的多线宽线段端点权重值计算的示意图;图4为本发明实施例提供的多线宽线段四线渐变反走样端点处的绘制仿真显示效果图;图5为本发明实施例提供的多线宽线段端点处的绘制仿真显示效果图;图6为本发明实施例提供的一种多线宽线段端点反走样处理系统的结构示意图。
具体实施方式
18.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
19.如图1所示,本发明实施例部分提供一种多线宽线段端点反走样处理方法,包括:步骤101,获取多线宽线段的起始点坐标、终止点坐标和线宽;所述起始点和终止点分别为多线宽线段两端的中点。
20.其中,如图2所示,起始点坐标(xs,ys),终止点坐标(xe,ye),线宽w。起始点坐标和终止点坐标的横坐标或纵坐标为浮点数。例如起始点坐标(36.5,50),横坐标就为浮点数。
21.步骤102,根据线宽计算起始点坐标或终止点坐标的上方添加的像素点个数。
22.根据以下公式计算起始点坐标和或终止点坐标的上方添加的像素点个数:dn=ceil((w-2)/2)。
23.其中,dn为起始点坐标和或终止点坐标的上方添加的像素点个数;w为线段的线宽。
24.采用四线渐变反走样算法绘制的多线宽线段的基础线宽为2。每个像素点的基础像素值为g,当线宽发生改变时,只需要在线段上下的反走样部分添加像素值为的像素点即可。
25.步骤103,根据线宽计算起始点坐标或终止点坐标的下方添加的像素点个数。
26.根据以下公式计算起始点坐标和或终止点坐标的下方添加的像素点个数:un=floor((w-2)/2。
27.其中,un为起始点坐标和或终止点坐标的下方添加的像素点个数;w为线段的线
宽。
28.当线宽w为奇数时,起始点坐标和或终止点坐标上方需要添加的像素点为优先考虑级,即靠近起始点坐标和或终止点坐标添加的像素点的个数dn多于起始点坐标和或终止点坐标的下方添加的像素点个数un。
29.步骤104,根据起始点坐标计算起始点的权重值。
30.如图3所示,根据以下公式计算起始点的权重值:sw=1-(x
s-floor(xs))。
31.其中,sw为起始点的权重值;xs为起始点坐标的横坐标值。
32.步骤105,根据终止点坐标计算终止点的权重值。
33.根据以下公式计算终止点的权重值:ew=1-(ceil(xe)-xe)。
34.其中,ew为终止点的权重值;xe为终止点坐标的横坐标值。
35.步骤106,根据起始点的权重值,计算起始点坐标上下方添加的像素点的像素值。
36.根据以下公式计算起始点坐标上下方添加的像素点的像素值:gs=g
×
sw。
37.其中,gs为起始点坐标上下方添加的像素点的像素值,对sw进行加权处理得到;g为像素点的基础像素值;sw为起始点的权重值。
38.步骤107,根据终止点的权重值,计算终止点坐标上下方添加的像素点的像素值。
39.根据以下公式计算终止点坐标上下方添加的像素点的像素值:ge=g
×ew

40.其中,ge为终止点终止点坐标上下方添加的像素点的像素值,对ew进行加权处理得到;g为像素点的基础像素值;ew为终止点的权重值。
41.步骤108,以起始点坐标上下方添加的像素点的像素值为基础像素值,通过四线渐变反走样算法完成起始点处待反走样处理的像素点的反走样。
42.本步骤中,以起始点坐标上下方添加的像素点的像素值对起始点处位于线段线宽部分的像素点进行像素值赋值。
43.以经过起始点的垂直线为基准,选取垂直线上在线段线宽范围外距离起始点最近的四个像素点,其中y轴负方向上距离起始点最近的像素点作为第一像素点a,距离起始点第二近的像素点作为第二像素点b;y轴正方向上距离起始点最近的像素点作为第三像素点c,距离起始点第二近的像素点作为第四像素点d。
44.计算第一像素点a与起始点在y轴方向上的距离。
45.根据第一像素点a与起始点在y轴方向上的距离分别计算四个像素点的权重。
46.其中,aw=(2-(d-dn))/2=(2-d+dn)/2;bw=(2-(1+d-dn))/2=(1-d+dn)/2;cw=(2-(1-d+un))/2=(1+d-un)/2;dw=(2-(2-d+un))/2=(d-un)/2;d为第一像素点a与起始点在y轴方向上的距离;aw为第一像素点的权重;bw为第二像素点的权重;cw为第三像素点的权重;dw为第四像素点的权重。
47.根据四个像素点的权重分别计算对应像素点的像素值。
48.其中,ga=aw×gs
;gb=bw×gs
;gc=cw×gs
;gd=dw×gs
;ga为第一像素点的像素值;gb为第二像素点的像素值;gc为第三像素点的像素值;gd为第四像素点的像素值。
49.步骤109,以终止点坐标上下方添加的像素点的像素值为基础像素值,通过四线渐变反走样算法完成终止点处待反走样处理的像素点的反走样。
50.本步骤中,以终止点坐标上下方添加的像素点的像素值对终止点处位于线段线宽部分的像素点进行像素值赋值。
51.以经过终止点的垂直线为基准,选取垂直线上在线段线宽范围外距离终止点最近的四个像素点,其中y轴负方向上距离终止点最近的像素点作为第五像素点a',距离终止点第二近的像素点作为第六像素点b';y轴正方向上距离终止点最近的像素点作为第七像素点c',距离终止点第二近的像素点作为第八像素点d'。
52.计算第五像素点a'与终止点在y轴方向上的距离。
53.根据第五像素点a'与终止点在y轴方向上的距离分别计算四个像素点的权重。
54.其中,a'w=(2-(d'-dn))/2=(2-d'+dn)/2;b'w=(2-(1+d'-dn))/2=(1-d'+dn)/2;c'w=(2-(1-d'+un))/2=(1+d'-un)/2;d'w=(2-(2-d'+un))/2=(d'-un)/2;d'为第五像素点a'与终止点在y轴方向上的距离;a'w为第五像素点的权重;b'w为第六像素点的权重;c'w为第七像素点的权重;d'w为第八像素点的权重。
55.根据四个像素点的权重分别计算对应像素点的像素值。
56.其中,g
a'
=a'w×
ge;g
b'
=b'w×
ge;g
c'
=c'w×
ge;g
d'
=d'w×
ge;g
a'
为第五像素点的像素值;g
b'
为第六像素点的像素值;g
c'
为第七像素点的像素值;g
d'
为第八像素点的像素值。
57.图4为多线宽线段四线渐变反走样端点处的绘制仿真显示效果图,图5为多线宽线段端点处的绘制仿真显示效果图,通过对比可以看出,本发明方法很好的解决了四线渐变反走样算法未对端点处做反走样处理的问题,绘制方法更符合实际,显示效果更好。
58.基于同一发明构思,本发明实施例还提供了一种多线宽线段端点反走样处理系统,由于该系统解决问题的原理与前述一种多线宽线段端点反走样处理方法相似,因此该系统的实施可以参见多线宽线段端点反走样处理方法的实施,重复之处不再赘述。
59.本发明一个实施例提供的多线宽线段端点反走样处理系统,如图6所示,包括:获取模块10,用于获取多线宽线段的起始点坐标、终止点坐标和线宽;所述起始点和终止点分别为多线宽线段两端的中点。
60.第一计算模块20,用于根据线宽计算起始点坐标或终止点坐标的上方添加的像素点个数。
61.第二计算模块30,用于根据线宽计算起始点坐标或终止点坐标的下方添加的像素点个数。
62.第三计算模块40,用于根据起始点坐标计算起始点的权重值。
63.第四计算模块50,用于根据终止点坐标计算终止点的权重值。
64.第五计算模块60,用于根据起始点的权重值,计算起始点坐标上下方添加的像素点的像素值。
65.第六就算模块70,用于根据终止点的权重值,计算终止点坐标上下方添加的像素点的像素值。
66.第一反走样模块80,用于以起始点坐标上下方添加的像素点的像素值为基础像素值,通过四线渐变反走样算法完成起始点处待反走样处理的像素点的反走样。
67.第二反走样模块90,用于以终止点坐标上下方添加的像素点的像素值为基础像素
值,通过四线渐变反走样算法完成终止点处待反走样处理的像素点的反走样。
68.可选地,所述第一计算模块包括:第一计算单元,用于根据以下公式计算起始点坐标和或终止点坐标的上方添加的像素点个数:dn=ceil((w-2)/2)。
69.其中,dn为起始点坐标和或终止点坐标的上方添加的像素点个数;w为线段的线宽。
70.可选地,所述第二计算模块包括:第二计算单元,用于根据以下公式计算起始点坐标和或终止点坐标的下方添加的像素点个数:un=floor((w-2)/2。
71.其中,un为起始点坐标和或终止点坐标的下方添加的像素点个数;w为线段的线宽。
72.可选地,所述第三计算模块包括:第三计算单元,用于根据以下公式计算起始点的权重值:sw=1-(x
s-floor(xs))。
73.其中,sw为起始点的权重值;xs为起始点坐标的横坐标值。
74.可选地,所述第四计算模块包括:第四计算单元,用于根据以下公式计算终止点的权重值:ew=1-(ceil(xe)-xe)。
75.其中,ew为终止点的权重值;xe为终止点坐标的横坐标值。
76.可选地,所述第五计算模块包括:第五计算单元,用于根据以下公式计算起始点坐标上下方添加的像素点的像素值:gs=g
×
sw。
77.其中,gs为起始点坐标上下方添加的像素点的像素值;g为像素点的基础像素值;sw为起始点的权重值。
78.可选地,所述第六计算模块包括:第六计算单元,用于根据以下公式计算终止点坐标上下方添加的像素点的像素值:ge=g
×ew

79.其中,ge为终止点终止点坐标上下方添加的像素点的像素值;g为像素点的基础像素值;ew为终止点的权重值。
80.可选地,所述第一反走样模块包括:第一赋值单元,用于以起始点坐标上下方添加的像素点的像素值对起始点处位于线段线宽部分的像素点进行像素值赋值。
81.第一选取单元,用于以经过起始点的垂直线为基准,选取垂直线上在线段线宽范围外距离起始点最近的四个像素点,其中y轴负方向上距离起始点最近的像素点作为第一像素点a,距离起始点第二近的像素点作为第二像素点b;y轴正方向上距离起始点最近的像
素点作为第三像素点c,距离起始点第二近的像素点作为第四像素点d。
82.第七计算单元,用于计算第一像素点a与起始点在y轴方向上的距离。
83.第八计算单元,用于根据第一像素点a与起始点在y轴方向上的距离分别计算四个像素点的权重。
84.第九计算单元,用于根据四个像素点的权重分别计算对应像素点的像素值。
85.可选地,所述第二反走样模块包括:第二赋值单元,用于以终止点坐标上下方添加的像素点的像素值对终止点处位于线段线宽部分的像素点进行像素值赋值。
86.第二选取单元,用于以经过终止点的垂直线为基准,选取垂直线上在线段线宽范围外距离终止点最近的四个像素点,其中y轴负方向上距离终止点最近的像素点作为第五像素点a',距离终止点第二近的像素点作为第六像素点b';y轴正方向上距离终止点最近的像素点作为第七像素点c',距离终止点第二近的像素点作为第八像素点d'。
87.第十计算单元,用于计算第五像素点a'与终止点在y轴方向上的距离。
88.第十一计算单元,用于根据第五像素点a'与终止点在y轴方向上的距离分别计算四个像素点的权重。
89.第十二计算单元,用于根据四个像素点的权重分别计算对应像素点的像素值。
90.关于上述各个模块更加具体的工作过程可以参考前述实施例公开的相应内容,在此不再进行赘述。
91.相应的,本发明实施例还提供了一种计算机设备,包括处理器和存储器;其中,处理器执行存储器中保存的计算机程序时实现前述实施例公开的多线宽线段端点反走样处理方法。
92.关于上述方法更加具体的过程可以参考前述实施例中公开的相应内容,在此不再进行赘述。
93.进一步的,本发明实施例还提供一种计算机可读存储介质,用于存储计算机程序;计算机程序被处理器执行时实现前述公开的多线宽线段端点反走样处理方法。
94.关于上述方法更加具体的过程可以参考前述实施例中公开的相应内容,在此不再进行赘述。
95.本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的系统、设备、存储介质而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
96.本领域的技术人员可以清楚地了解到本发明实施例中的技术可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明实施例中的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。
97.以上结合具体实施方式和范例性实例对本发明进行了详细说明,不过这些说明并不能理解为对本发明的限制。本领域技术人员理解,在不偏离本发明精神和范围的情况下,
可以对本发明技术方案及其实施方式进行多种等价替换、修饰或改进,这些均落入本发明的范围内。本发明的保护范围以所附权利要求为准。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1