一种多线宽线段绘制反走样处理方法技术

技术编号:32913704 阅读:14 留言:0更新日期:2022-04-07 12:04
本发明专利技术提出一种多线宽线段绘制反走样处理方法,首先根据要绘制的线段起点及终点坐标,计算要绘制的线段斜率,判断斜率以及起点及终点坐标是否满足条件,若不满足则进行预处理;然后以线宽m为基准,计算起点(X0,Y0)及附近点的亮度系数;基于起点(X0,Y0)及附近点的亮度系数,通过循环迭代方式计算起点及终点之间各个点的亮度系数。本发明专利技术支持线宽的设定,可设置带小数的数值。计算过程没有求平方根等复杂运算,仅使用CPU或者单片机即可,不需要显示核心,减少了设备的体积功耗。减少了设备的体积功耗。减少了设备的体积功耗。

【技术实现步骤摘要】
一种多线宽线段绘制反走样处理方法


[0001]本专利技术涉及图形图像处理领域,具体为一种适合嵌入式系统使用的多线宽线段绘制反走样处理方法,支持非整数线宽线段的绘制和反走样处理。

技术介绍

[0002]近年来,在机载嵌入式领域,小屏幕绘图需求越来越广泛,常见的与用户交互的设备都带交互小屏幕。此类设备有一定的显示需求,但是对显示的帧率要求不高,使用专用显示芯片将会增加功耗、体积和成本,因此一般使用单片机或者CPU直接进行图形的绘制,而绘制直线则是最为基础的部分。
[0003]嵌入式系统CPU计算能力相对于通用CPU要弱很多,因此绘制线段的算法在保证显示效果的情况下,速度要尽可能的快。目前公认的绘制直线最快的算法为Bresenham算法,但是其仅仅支持单线宽(即线宽为一个像素),虽然可以通过绘制多条相邻线段来支持整数多线宽,但该方法不支持反走样,绘制出来的线段存在锯齿,显示效果较差,无法满足显示需求;而常用的快速反走样算法:Wu反走样算法,虽然显示效果不错,但仅仅是针对单线宽的反走样,没有涉及到多线宽,且无法通过绘制多条相邻线段拼凑的方法实现多线宽线段的绘制。
[0004]因此,需要针对嵌入式系统设计一种多线宽且支持小数线宽的反走样算法,以满足实际应用需要。

技术实现思路

[0005]为解决现有技术存在的问题,本专利技术提出一种多线宽线段绘制反走样处理方法,包括以下步骤:
[0006]步骤1:获取要绘制的线段起点坐标(X0,Y0)和终点坐标(X
n
,Y
n<br/>),计算线段的斜率k,确定是否满足斜率k∈(0.0,1.0)且X0不大于X
n
的条件,若满足,则进行之后步骤,若不满足,则对线段起点坐标和终点坐标进行预处理,使其满足上述条件;
[0007]步骤2:确定起始点(X0,Y0)及附近点的亮度系数:
[0008]以线宽m为基准,计算出(X0,Y0)上下各个点的亮度系数,亮度系数的计算方法为:
[0009]当m为1.0时,仅计算(X0,Y0)一个点,亮度系数为1.0;
[0010]当m∈(1.0,3.0]时,计算(X0,Y0‑
1)(X0,Y0)(X0,Y0+1)三个点,系数分别为(m

1.0)/2.0,1.0,(m

1.0)/2.0;
[0011]当m∈(3.0,5.0]时,计算(X0,Y0‑
2)(X0,Y0‑
1)(X0,Y0)(X0,Y0+1)(X0,Y0+2)五个点,系数分别为(m

3.0)/2.0,1.0,1.0,1.0,(m

3.0)/2.0;
[0012]当m∈(5.0,7.0]时,计算(X0,Y0‑
3)(X0,Y0‑
2)(X0,Y0‑
1)(X0,Y0)(X0,Y0+1)(X0,Y0+2)(X0,Y0+3)七个点,系数分别为(m

5.0)/2.0,1.0,1.0,1.0,1.0,1.0,(m

5.0)/2.0;
[0013]当m∈(7.0,9.0]时,计算(X0,Y0‑
4)(X0,Y0‑
3)(X0,Y0‑
2)(X0,Y0‑
1)(X0,Y0)(X0,Y0+1)(X0,Y0+2)(X0,Y0+3)(X0,Y0+4)九个点,系数分别为(m

7.0)/2.0,1.0,1.0,1.0,1.0,1.0,
1.0,1.0,(m

7.0)/2.0;
[0014]当m∈(9.0,11.0]时,计算(X0,Y0‑
5)(X0,Y0‑
4)(X0,Y0‑
3)(X0,Y0‑
2)(X0,Y0‑
1)(X0,Y0)(X0,Y0+1)(X0,Y0+2)(X0,Y0+3)(X0,Y0+4)(X0,Y0+5)十一个点,系数分别为(m

9.0)/2.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,(m

9.0)/2.0;
[0015]依此类推,当m∈(M1,M2]时,计算(X0,Y0‑
(M1+M2)/4)(X0,Y0‑
(M1+M2)/4+1)

(X0,Y0‑
1)(X0,Y0)(X0,Y0+1)

(X0,Y0+(M1+M2)/4

1)(X0,Y0+(M1+M2)/4)共M2个点,系数分别为(m

M1)/2.0,1.0,

,1.0,(m

M1)/2.0;
[0016]步骤3:假设X=X
m
时,X
m
为起点与终点之间某一点的X坐标,对应Y方向上亮度系数不为0的点中:Y值最大的点的坐标为(X
m
,Y
m
+p),亮度系数为a,Y值最小的点的坐标为(X
m
,Y
m
+q),亮度系数为b;
[0017]则点(X
m+1
,Y
m
+q)的亮度系数为max(0.0,b

k),(X
m+1
,Y
n
+q+1)亮度系数为1.0+min(0.0,b

k),(X
m+1
,Y
m
+p)亮度系数为min(1.0,a+k),(X
m+1
,Y
m
+p+1)亮度系数为max(0.0,a+k

1.0);(X
m+1
,Y
m
+q+2)到(X
m+1
,Y
m
+p

1)点的亮度系数为1.0;
[0018]步骤4:基于步骤2确定的起始点(X0,Y0)及附近点的亮度系数,将初始条件X=X0带入步骤3中,计算出X=X1时,点(X1,Y1)附近点的亮度系数,重复步骤3的计算过程,计算出从起始点(X0,Y0)到终止点(X
n
,Y
n
)所有点的亮度系数。
[0019]有益效果
[0020]本专利技术提出的多线宽线段绘制反走样处理方法,支持线宽的设定,范围为[1.0,10.0],可设置带小数的数值。计算过程没有求平方根等复杂运算,仅使用CPU或者单片机即可,不需要显示核心,减少了设备的体积功耗。
[0021]本专利技术的附加方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本专利技术的实践了解到。
附图说明
[0022]本专利技术的上述和/或附加的方面和优点从结合下面附图对实施例的描述中将变得明显和容易理解,其中:
[0023]图1是线段示意图。
[0024]本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种多线宽线段绘制反走样处理方法,其特征在于:包括以下步骤:步骤1:获取要绘制的线段起点坐标(X0,Y0)和终点坐标(X
n
,Y
n
),计算线段的斜率k,确定是否满足斜率k∈(0.0,1.0)且X0不大于X
n
的条件,若满足,则进行之后步骤,若不满足,则对线段起点坐标和终点坐标进行预处理,使其满足上述条件;步骤2:确定起始点(X0,Y0)及附近点的亮度系数:以线宽m为基准,计算出(X0,Y0)上下各个点的亮度系数,亮度系数的计算方法为:当m为1.0时,仅计算(X0,Y0)一个点,亮度系数为1.0;当m∈(1.0,3.0]时,计算(X0,Y0‑
1)(X0,Y0)(X0,Y0+1)三个点,系数分别为(m

1.0)/2.0,1.0,(m

1.0)/2.0;当m∈(3.0,5.0]时,计算(X0,Y0‑
2)(X0,Y0‑
1)(X0,Y0)(X0,Y0+1)(X0,Y0+2)五个点,系数分别为(m

3.0)/2.0,1.0,1.0,1.0,(m

3.0)/2.0;当m∈(5.0,7.0]时,计算(X0,Y0‑
3)(X0,Y0‑
2)(X0,Y0‑
1)(X0,Y0)(X0,Y0+1)(X0,Y0+2)(X0,Y0+3)七个点,系数分别为(m

5.0)/2.0,1.0,1.0,1.0,1.0,1.0,(m

5.0)/2.0;依此类推,当m∈(M1,M2]时,计算(X0,Y0‑
(M1+M2)/4)(X0,Y0‑
(M1+M2)/4+1)

(X0,Y0‑
1)(X0,Y0)(X0,Y0+1)

(X0,Y0+(M1+M2)/4

1)(X0,Y0+(M1+M2)/4)共M2个点,系数分别为(m

M1)/2.0,1.0,

,1.0,(m

M1)/2.0;步骤3:假设X=X
m
时,...

【专利技术属性】
技术研发人员:于黎明冯红斌王静静
申请(专利权)人:中国航空工业集团公司洛阳电光设备研究所
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1