CN114283222B - 一种多线宽线段绘制反走样处理方法 - Google Patents
一种多线宽线段绘制反走样处理方法 Download PDFInfo
- Publication number
- CN114283222B CN114283222B CN202111557520.9A CN202111557520A CN114283222B CN 114283222 B CN114283222 B CN 114283222B CN 202111557520 A CN202111557520 A CN 202111557520A CN 114283222 B CN114283222 B CN 114283222B
- Authority
- CN
- China
- Prior art keywords
- point
- coordinates
- luminance coefficient
- points
- line segment
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 8
- 238000000034 method Methods 0.000 claims abstract description 14
- 238000004364 calculation method Methods 0.000 claims abstract description 7
- 238000007781 pre-processing Methods 0.000 claims abstract description 4
- 230000003247 decreasing effect Effects 0.000 claims description 2
- 125000004122 cyclic group Chemical group 0.000 abstract 1
- 230000000694 effects Effects 0.000 description 5
- 238000010586 diagram Methods 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
Landscapes
- Control Of Indicators Other Than Cathode Ray Tubes (AREA)
- Image Generation (AREA)
Abstract
本发明提出一种多线宽线段绘制反走样处理方法,首先根据要绘制的线段起点及终点坐标,计算要绘制的线段斜率,判断斜率以及起点及终点坐标是否满足条件,若不满足则进行预处理;然后以线宽m为基准,计算起点(X0,Y0)及附近点的亮度系数;基于起点(X0,Y0)及附近点的亮度系数,通过循环迭代方式计算起点及终点之间各个点的亮度系数。本发明支持线宽的设定,可设置带小数的数值。计算过程没有求平方根等复杂运算,仅使用CPU或者单片机即可,不需要显示核心,减少了设备的体积功耗。
Description
技术领域
本发明涉及图形图像处理领域,具体为一种适合嵌入式系统使用的多线宽线段绘制反走样处理方法,支持非整数线宽线段的绘制和反走样处理。
背景技术
近年来,在机载嵌入式领域,小屏幕绘图需求越来越广泛,常见的与用户交互的设备都带交互小屏幕。此类设备有一定的显示需求,但是对显示的帧率要求不高,使用专用显示芯片将会增加功耗、体积和成本,因此一般使用单片机或者CPU直接进行图形的绘制,而绘制直线则是最为基础的部分。
嵌入式系统CPU计算能力相对于通用CPU要弱很多,因此绘制线段的算法在保证显示效果的情况下,速度要尽可能的快。目前公认的绘制直线最快的算法为Bresenham算法,但是其仅仅支持单线宽(即线宽为一个像素),虽然可以通过绘制多条相邻线段来支持整数多线宽,但该方法不支持反走样,绘制出来的线段存在锯齿,显示效果较差,无法满足显示需求;而常用的快速反走样算法:Wu反走样算法,虽然显示效果不错,但仅仅是针对单线宽的反走样,没有涉及到多线宽,且无法通过绘制多条相邻线段拼凑的方法实现多线宽线段的绘制。
因此,需要针对嵌入式系统设计一种多线宽且支持小数线宽的反走样算法,以满足实际应用需要。
发明内容
为解决现有技术存在的问题,本发明提出一种多线宽线段绘制反走样处理方法,包括以下步骤:
步骤1:获取要绘制的线段起点坐标(X0,Y0)和终点坐标(Xn,Yn),计算线段的斜率k,确定是否满足斜率k∈(0.0,1.0)且X0不大于Xn的条件,若满足,则进行之后步骤,若不满足,则对线段起点坐标和终点坐标进行预处理,使其满足上述条件;
步骤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∈(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;
当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;
依此类推,当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=Xm时,Xm为起点与终点之间某一点的X坐标,对应Y方向上亮度系数不为0的点中:Y值最大的点的坐标为(Xm,Ym+p),亮度系数为a,Y值最小的点的坐标为(Xm,Ym+q),亮度系数为b;
则点(Xm+1,Ym+q)的亮度系数为max(0.0,b-k),(Xm+1,Yn+q+1)亮度系数为1.0+min(0.0,b-k),(Xm+1,Ym+p)亮度系数为min(1.0,a+k),(Xm+1,Ym+p+1)亮度系数为max(0.0,a+k-1.0);(Xm+1,Ym+q+2)到(Xm+1,Ym+p-1)点的亮度系数为1.0;
步骤4:基于步骤2确定的起始点(X0,Y0)及附近点的亮度系数,将初始条件X=X0带入步骤3中,计算出X=X1时,点(X1,Y1)附近点的亮度系数,重复步骤3的计算过程,计算出从起始点(X0,Y0)到终止点(Xn,Yn)所有点的亮度系数。
有益效果
本发明提出的多线宽线段绘制反走样处理方法,支持线宽的设定,范围为[1.0,10.0],可设置带小数的数值。计算过程没有求平方根等复杂运算,仅使用CPU或者单片机即可,不需要显示核心,减少了设备的体积功耗。
本发明的附加方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
本发明的上述和/或附加的方面和优点从结合下面附图对实施例的描述中将变得明显和容易理解,其中:
图1是线段示意图。
图2是反走样处理流程图。
具体实施方式
本发明设计了一种多线宽线段绘制反走样处理方法,在满足显示效果的情况下,支持非整数线宽,并解决了偶数线宽用线段拼凑圆、曲线时的错位问题。可用于OpenGL的底层线段算法,而且该方法不需要显示芯片,减少了硬件电路的设计难度与资源开销,适用于嵌入式系统。
由于线段的对称性,为了方便描述,下面的描述仅讨论斜率在(0,1)范围内,X轴起点坐标不大于终点坐标的情况;其他情况皆可以通过预处理来转换:
当斜率在[1,+∞)时,可以通过交换X、Y坐标来绘制;
当斜率在(-1,0]时,可以通过改变Y坐标由递增改为递减来绘制;
当斜率在(-∞,-1]时,可以通过交换X、Y坐标并改变Y坐标由递增改为递减来绘制;
当X轴起点坐标大于终点坐标时,可以交换起点坐标和终点坐标来绘制。
使用的输入数据为起始点整数坐标(X0,Y0)、终止点整数坐标(Xn,Yn)、线宽m∈[1.0,10.0],其中线宽m=1表示线宽为1个像素,本发明中m可以为小数;输出为计算出每个点的亮度系数s∈[0.0,1.0],获取亮度系数后,根据不同的色彩类型,乘以对应的系数即可计算出对应点的颜色值,由于不同的系统,颜色类型不同,这里仅仅描述亮度系数。具体步骤如下:
1、根据提供的线段两个端点坐标,计算出直线的斜率k,k∈(0.0,1.0);
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∈(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;
当m∈(9.0,10.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;
3、假设X=Xm时,Xm为起点与终点之间某一点的X坐标,对应Y方向上亮度系数不为0的点中:Y值最大的点的坐标为(Xm,Ym+p),亮度系数为a,Y值最小的点的坐标为(Xm,Ym+q),亮度系数为b;则点(Xm+1,Ym+q)的亮度系数为max(0.0,b-k),(Xm+1,Yn+q+1)亮度系数为1.0+min(0.0,b-k),(Xm+1,Ym+p)亮度系数为min(1.0,a+k),(Xm+1,Ym+p+1)亮度系数为max(0.0,a+k-1.0);(Xm+1,Ym+q+2)到(Xm+1,Ym+p-1)点的亮度系数为1.0;
4、由于初始条件X=X0时,(X0,Y0)附近点的亮度系数已知,带入第3步中,即可计算出X=X1时(X1,Y1)附近点的亮度系数,重复第3步的计算过程,即可计算出从起始点(X0,Y0)到终止点(Xn,Yn)所有点的亮度系数。
尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在不脱离本发明的原理和宗旨的情况下在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。
Claims (2)
1.一种多线宽线段绘制反走样处理方法,其特征在于:包括以下步骤:
步骤1:获取要绘制的线段起点坐标(X0,Y0)和终点坐标(Xn,Yn),计算线段的斜率k,确定是否满足斜率k∈(0.0,1.0)且X0不大于Xn的条件,若满足,则进行之后步骤,若不满足,则对线段起点坐标和终点坐标进行预处理,使其满足上述条件;
步骤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=Xm时,Xm为起点与终点之间某一点的X坐标,对应Y方向上亮度系数不为0的点中:Y值最大的点的坐标为(Xm,Ym+p),亮度系数为a,Y值最小的点的坐标为(Xm,Ym+q),亮度系数为b;
则点(Xm+1,Ym+q)的亮度系数为max(0.0,b-k),(Xm+1,Yn+q+1)亮度系数为1.0+min(0.0,b-k),(Xm+1,Ym+p)亮度系数为min(1.0,a+k),(Xm+1,Ym+p+1)亮度系数为max(0.0,a+k-1.0);(Xm+1,Ym+q+2)到(Xm+1,Ym+p-1)点的亮度系数为1.0;
步骤4:基于步骤2确定的起始点(X0,Y0)及附近点的亮度系数,将初始条件X=X0带入步骤3中,计算出X=X1时,点(X1,Y1)附近点的亮度系数,重复步骤3的计算过程,计算出从起始点(X0,Y0)到终止点(Xn,Yn)所有点的亮度系数。
2.根据权利要求1所述一种多线宽线段绘制反走样处理方法,其特征在于:如果要绘制的线段起点坐标(X0,Y0)和终点坐标(Xn,Yn),不满足斜率k∈(0.0,1.0)且X0不大于Xn的条件,则通过以下过程进行预处理:
当斜率在[1,+∞)时,通过交换X、Y坐标来绘制;
当斜率在(-1,0]时,通过改变Y坐标由递增改为递减来绘制;
当斜率在(-∞,-1]时,通过交换X、Y坐标并改变Y坐标由递增改为递减来绘制;
当X轴起点坐标大于终点坐标时,通过交换起点坐标和终点坐标来绘制。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111557520.9A CN114283222B (zh) | 2021-12-19 | 2021-12-19 | 一种多线宽线段绘制反走样处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111557520.9A CN114283222B (zh) | 2021-12-19 | 2021-12-19 | 一种多线宽线段绘制反走样处理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114283222A CN114283222A (zh) | 2022-04-05 |
CN114283222B true CN114283222B (zh) | 2024-03-29 |
Family
ID=80873001
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111557520.9A Active CN114283222B (zh) | 2021-12-19 | 2021-12-19 | 一种多线宽线段绘制反走样处理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114283222B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6791569B1 (en) * | 1999-07-01 | 2004-09-14 | Microsoft Corporation | Antialiasing method using barycentric coordinates applied to lines |
CN105513023A (zh) * | 2015-12-03 | 2016-04-20 | 中国航空工业集团公司洛阳电光设备研究所 | 一种平显字符画面全屏反走样方法及装置 |
CN105701855A (zh) * | 2016-01-11 | 2016-06-22 | 南京师范大学 | 基于符号结构的线型地图符号反走样绘制方法 |
WO2017024443A1 (zh) * | 2015-08-07 | 2017-02-16 | 浙江大学 | 一种高效并行矢量数据可视化方法 |
CN111028353A (zh) * | 2019-12-26 | 2020-04-17 | 南京师范大学 | 顾及线宽一致性的矢量地图线符号燕尾形箭头绘制方法 |
-
2021
- 2021-12-19 CN CN202111557520.9A patent/CN114283222B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6791569B1 (en) * | 1999-07-01 | 2004-09-14 | Microsoft Corporation | Antialiasing method using barycentric coordinates applied to lines |
WO2017024443A1 (zh) * | 2015-08-07 | 2017-02-16 | 浙江大学 | 一种高效并行矢量数据可视化方法 |
CN105513023A (zh) * | 2015-12-03 | 2016-04-20 | 中国航空工业集团公司洛阳电光设备研究所 | 一种平显字符画面全屏反走样方法及装置 |
CN105701855A (zh) * | 2016-01-11 | 2016-06-22 | 南京师范大学 | 基于符号结构的线型地图符号反走样绘制方法 |
CN111028353A (zh) * | 2019-12-26 | 2020-04-17 | 南京师范大学 | 顾及线宽一致性的矢量地图线符号燕尾形箭头绘制方法 |
Non-Patent Citations (4)
Title |
---|
Ultrafast imaging with anti-aliasing based on optical time-division multiplexing;Bo Bai et al.;《Optics Letters》;20161231;第41卷(第5期);第882-885页 * |
一种快速的多线宽直线反走样算法;骆朝亮等;《计算机工程与应用》;20110721;第47卷(第21期);第188-190页 * |
一种快速精确的反走样直线算法及其嵌入式实现;刘小燕;李秋生;袁新娣;;安徽大学学报(自然科学版);20150315;第39卷(第02期);第32-36页 * |
基于亚像素精度的任意宽度直线反走样算法;桂丽娟;申闫春;;计算机仿真;20130915;第30卷(第09期);第244-247页 * |
Also Published As
Publication number | Publication date |
---|---|
CN114283222A (zh) | 2022-04-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2910979B2 (ja) | コンピュータグラフィックシステムのサブピクセルマスク発生方法および装置 | |
US7986330B2 (en) | Method and apparatus for generating gammacorrected antialiased lines | |
US20110199381A1 (en) | Bezier curve drawing device, bezier curve drawing method, and recording medium | |
JP7175197B2 (ja) | 画像処理方法および装置、記憶媒体、コンピュータ装置 | |
KR100200818B1 (ko) | 분할된 룩업테이블을 이용한 효과적인 앤티에일리어싱 방법 | |
CN114862897B (zh) | 一种图像背景处理方法、装置及电子设备 | |
JP4947351B2 (ja) | 画像処理装置、及び、プログラム | |
JP4201338B2 (ja) | 画像処理装置、画像処理方法、画像表示装置、携帯用情報機器、制御プログラムおよび可読記録媒体 | |
CN114283222B (zh) | 一种多线宽线段绘制反走样处理方法 | |
US7528814B2 (en) | Method and device providing enhanced characters | |
US8004526B2 (en) | Waveform data display device and method | |
JPWO2019041842A5 (zh) | ||
CN114332296B (zh) | 一种两像素宽度线段的反走样方法 | |
CN115775215A (zh) | 图像处理方法、装置、电子设备和存储介质 | |
CN113139921B (zh) | 图像处理方法、显示装置、电子设备及存储介质 | |
US6570562B1 (en) | Method for drawing patterned lines in a system supporting off-screen graphics | |
US7116339B2 (en) | Image rendering method using recursive interpolation | |
CN103456255B (zh) | 显示器像素驱动系统及显示器子像素驱动流程 | |
US20120154429A1 (en) | Apparatus and method for smoothed aliasing on a two-dimensional plane | |
CN114582301B (zh) | 一种信息显示方法、装置、电子设备及存储介质 | |
CN113434820B (zh) | 图表y轴坐标优化方法、装置、设备及存储介质 | |
CN111340706B (zh) | 图像缩小方法与图像缩小系统 | |
CN115393167A (zh) | 一种图形处理器中双精度数据舍位计算结构及其计算方法 | |
CN109783746B (zh) | 网页图片加载方法及终端设备 | |
CN118036541A (zh) | 控制冗余图形填充密度的方法、装置、存储介质及终端设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |