CN102609961A - 基于参考点的矢量图形复合编、解码方法 - Google Patents
基于参考点的矢量图形复合编、解码方法 Download PDFInfo
- Publication number
- CN102609961A CN102609961A CN2012100129545A CN201210012954A CN102609961A CN 102609961 A CN102609961 A CN 102609961A CN 2012100129545 A CN2012100129545 A CN 2012100129545A CN 201210012954 A CN201210012954 A CN 201210012954A CN 102609961 A CN102609961 A CN 102609961A
- Authority
- CN
- China
- Prior art keywords
- vector
- point
- component object
- vector graphics
- reference frame
- 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.)
- Pending
Links
Images
Abstract
本发明提供了一套完整的矢量图形编码、解码方法。利用本发明可以对任意矢量图形进行高效、快速的编解码,并且保证了矢量图形在缩放中过程中不失真。本发明在对具有一定规律的矢量图形编码时,可以极大的降低存储容量。本发明还可解决矢量图形在缩小时变得模糊的技术难题,通过参考点进行栅格调整,能够保证缩放到很小时图形清晰易辨,这对于小字号矢量字库屏幕显示,具有重要意义。本发明可以应用到各种矢量图形场合例如曲线字库、电路原理图,工程图、动漫画等。
Description
技术领域
本发明涉及一种矢量图形编解码规则,具体的说是一种用于矢量图形存储和还原的方法。
背景技术
目前,矢量图一般采用直接保存轮廓点和矩阵变换的方式进行编码,这种方法原理简单,解码效率高,但是编码效率低,占用存储空间大,且不利于传输。在需要大量用到矢量图形的地方,如曲线字库、工程图、电路图、动漫画等会占用大量资源,尤其不适合在系统资源有限的嵌入式设备上使用。
发明内容
本发明的目的是为了解决上述技术问题的不足,提供一种高效的矢量图形编解码方法。本发明为解决上述技术问题的不足而采用的技术方案是:在原始坐标系基础上,引入参考坐标系,采用原始坐标系和参考坐标系同时对矢量图形轮廓点进行存储;在对复杂矢量图形编码的时候,最大限度地利用复合规则,重复使用一系列相对简单的矢量图对象,复合生成复杂矢量图形。该技术方案共包含两部分:1,基于参考点的矢量图形编码方法。2,基于参考点的矢量图形解码方法。
1.基于参考点的矢量图形编码方法
在利用本发明时,按照以下方法对矢量图形进行编码。该方法包含以下内容:矢量图形、环路和路径、轮廓点、参考点、基本矢量图形、基础坐标系、参考坐标系、组件对象和复合方法。
矢量图形:也称为面向对象的图像或绘图图像,在数学上定义为一系列由线连接的点。
环路和路径:由曲线所构成的一段闭合或者开放的曲线段称之为路径,闭合的路径称之为环路。矢量图形可以由路径构成。
轮廓点:形成矢量图形轮廓的,由线连接的点我们称之为轮廓点,为了形成复杂的轮廓,我们定义了轮廓点属性,例如可以把轮廓点可以分为直线点、控制点(包含样条曲线、贝塞尔曲线控制点)等。在连接这些点时我们需要根据轮廓点的属性进行不同的连接处理。对于曲线字而言,轮廓点就是环路(闭合路径)上的点。
参考点:在本发明中,对矢量图形编码时,保存轮廓点的坐标可以选择原始坐标系或者参考坐标系。参考坐标系原点就称之为参考点。参考点也是具有属性的,该属性可以用来标识参考坐标系特点,例如我们可以定义自由移动、横向移动、竖向移动等。在解码时如果有必要,可以根据这些属性可以对图形进行栅格调整。
基本矢量图形:基本矢量图形由一条或多条路径构成。路径是由一系列的直线点或曲线点构成的,闭合的路径可以使用奇偶填充算法或非零填充算法进行填充。开放的路径一般表达平面内具有粗细、颜色的一条曲线。因此基本矢量图形是只由轮廓点或(轮廓点和参考点)组成的矢量图形,在本发明中它是组件对象的叶节点。
基础坐标系:即原始坐标系,矢量图形编码、解码时所依赖的一个统一的坐标系;
参考坐标系:根据编码需要,基础坐标系上的任一点都可以作为一个相对坐标系原点,编码时轮廓点的坐标可以用这个坐标系为基准保存,这个相对坐标系就称之为参考坐标系,因此相关的变换、修改也可以用这个坐标系作为基准。参考坐标系主要是针对基本矢量图形的局部变换设置的,在重复利用时可以使基本矢量图形更加自由的适应多种形状,达到节省编码空间的目的。
组件对象:组件对象是包含基本矢量图形和其他组件对象的集合,每个组件对象解码后都是一个仅由路径构成的可直接用来填充和渲染的矢量图形,它可以具有形状、轮廓、大小和位置、颜色等属性。通过定义的操作(例如矩阵变换等)一个组件对象可以调用另一个或几个组件对象并形成新的组件对象。我们称这种情况为组件复合。在实际使用中,组件对象是一棵树,树的每一个节点都是一个组件对象,树的叶节点就是基本矢量图形,其他节点称之为复合矢量图形。通过组件复合我们可由简单图形形成复杂的矢量图形。在本发明中所有矢量图形都是以组件对象进行编码保存的。
复合方法:一个组件对象调用另一个组件对象时,对该组件对象进行的一系列操作称之为复合方法,它可以包含矩阵变换、点的插入、删除和改变点的属性、改变点的位置、改变对象颜色,指定填充方法以及被调用组件对象子组件的删除等各项操作。组件对象中根节点可以对这棵树上子节点以下的其它任何节点(包括叶节点)使用附加的复合方法来进行微调控制,对于矩阵变换而言,一般是把附加调整使用前置矩阵的方式来实现,这样利用基本矢量图形和复合方法,在编码时我们就可以在降低存储容量的同时生成任意复杂的高精度矢量图形。
2.基于参考点的矢量图形解码方法
实际使用中,由于组件对象在计算机中都是以树的形式保存,对组件对象解码时实际上就是进行树的遍历。我们从根节点出发,到达叶节点时开始根据复合方法中的参数向父节点进行融合,最后在根节点上得到完整的矢量图形,图9中组件对象C4最终由三个基本矢量图形P1,P2,P3复合构成,其解码可以参照以下公式进行。
·P1的复合:M(C4C5)*M(C5P1)*M(C4P1)[P1+C4.P1+C5.P1]
·P2的复合:M(C4C5)*M(C5P2)*M(C4P2)[P2+C4.P2+C5.P2]
P3的复合:M(C4P3)*[P3+C4.P3]
其中M表示复合方法,P表示基本矢量图形,*表示融合。
M(C4C5)表示组件对象C4的对组件对象C5的复合方法,其余类推;
C4.P1表示组件对象C4的对组件对象P1的修改结果,其余类推;
上述P1,P2,P3复合后的结果得到的矢量图形就是C4所表达的最终矢量图形。
附图说明
图1组件对象(仅有轮廓点的基本矢量图形,汉字笔划“点”)
图2组件对象(含有参考点的基本矢量图形,汉字“一”)
图3组件对象(含有参考点的基本矢量图形,汉字笔划“撇”)
图4组件对象(含有参考点的基本矢量图形,汉字笔划“捺”)
图5组件对象(由两个环路构成的基本矢量图形,汉字“口”)
图6组件对象(复合矢量图形,汉字“口”的一种变形)
图7组件对象(复合矢量图形,汉字“口”的一种变形)
图8组件对象(复合矢量图形,汉字“口”的一种变形)
图9组件对象树状图,曲线汉字字库的编码示意图。
图10栅格调整示意图
具体实施方式
下面以曲线字库字形图例的方式讲述具体的概念和编码过程,图中的点凡是以P表示点的都是环路上的点(轮廓点),轮廓点中以实心方块表示的点称之为直线点或线上点,为空心圆的表示曲线控制点或线外点(贝塞尔曲线或B样条曲线的控制点,实现时不同的控制点类型也需要记录,图中未做标记),以C开头的点表示参考点。图10中的组件对象凡是以C表示的是复合矢量图形,以P表示的是基本矢量图形。
1.基础坐标系和轮廓点设置。
基础坐标系(原始坐标系)是每一个组件对象编码和解码时的统一坐标系。路径或环路上的所有点,如果没有明确指定参考坐标系,那么其保存的坐标值就是相对于基础坐标系的,所有组件对象完整解码得到的可用于渲染的矢量图形坐标都是相对于基础坐标系的。图1是一个基本矢量图形,由一个环路构成,包含六个轮廓点,其中P0,P1,P3,P4是线上点,P2,P5是线外点;编码时需要保存所有轮廓点相对于基础坐标系或参考坐标系的位置以及点的属性等。
2.参考坐标系和参考点设置。
图2是一个基本矢量图形,包含4个轮廓点P0,P1,P2,P3和2个参考点C0,C1;编码时需要存储2个参考点的位置、属性以及轮廓点在对应参考坐标系下的坐标位置和属性。
图5是一个包含2个环路的基本矢量图形,其中P0,P1,P2,P3,P4,P5,P6,P7构成第1个环路(点P7有环路结束标志,图中未标明),P8,P9,P10,P11构成第2个环路,在汉字字形上表达一个“口”字。
利用参考点调整图形是本发明的关键之一,图1中参考点可在字号很小时对横线进行栅格调整,使横线变得清晰,如果使用其他复合方法,我们也可以让横线变成斜线或竖线。图5中轮廓点P0和P1是相对于参考点C0的,轮廓点P4和P5是相对于参考点C5的,轮廓点P7和P8是相对于参考点C1的,轮廓点P6和P9是相对于参考点C4的,轮廓点P2和P11是相对于参考点C2的,轮廓点P3和P10是相对于参考点C3的。让图5中的参考点C2和C3向下移动,就可以在不改变粗细的情况下,把“口”字变成如图6所示形态。如果令C0和C5向上移动至P7或P6所处位置,此时P0与P7重合,P5与P6重合,则“口”字将变成图7中的形状。如果要调整粗细,只要把轮廓点相对于参考点的坐标乘以一个放大或缩小系数即可,图8是由图5调整粗细后得到。对于图3(表达汉字的“撇”)和图4(表达汉字的“捺”),改变线上点对应的参考点的位置,可以很容易实现撇、捺变长或缩短,改变线外点对应的参考点的位置,就可改变曲线的形状,再加上粗细调整,这样就可以满足不同的汉字里面地方撇、捺的需求。参考点的设置根据需要可以放在图形或图形某个局部的形心上,也可以与轮廓点重合,还可以放在图形之外,也可以让几个参考点共线。
图10是利用参考点进行栅格调整的说明,若参考点C0,C1处在同一条直线上,且C1,C2处在同一条直线上,就可以在图形缩小到很小的时候利用C0,C1,C2进行栅格调整,以让这个笔划“横折”反走样(一种灰度填充算法)处理后看上去清晰。具体步骤如下,如果C0,C1,C2处在中线上,则令,C0,C1的Y坐标在移动到最近的半个栅格之处,对应的轮廓点P0,P1,P2,P3相对于参考点C0,C1的相对Y坐标均设为半个栅格,C1,C2的X坐标移动到最近的半个栅格之处,对应的轮廓点P2,P3,P4,P5相对于参考点C1,C2的相对X坐标均设为半个栅格。这样反走样后就就是实心的一条横线和竖线,而不会出现“发虚”的现象。如果C0,C1,C2与轮廓点P1,P2,P5重合,调整方法类似,区别在于让其X,Y坐标处于栅格的边界上,对应的P0,P3,P4需要调整的相对坐标调整为一个栅格。
3.组件复合。
利用已经有的组件对象按照复合方法形成新的组件对象也是本发明的关键所在,它在形成各种复杂图形的同时可以大大提高编码效率和减小存储容量。参考点给出了多个空间自由度,使得图形大小、形状、粗细可以分别调整,配合其他复合方法(包括增加或删除点、改变轮廓点位置、矩阵变换等)就可以任意生成矢量图形并且保证了存储开销很小。组件对象中根节点可以对子节点以下的每一个节点使用附加的复合方法来进行调整控制,这也是本发明的关键点之一,图9中汉字“器”需要用到组件“犬”,“犬”由两个组件“大”和“、”构成,器需要分别使用附加的复合方法来调整这两个节点上的组件对象,才能使字形满足要求。
基于本发明下面给出几个汉字在计算机中的表达形式。图9是曲线汉字的树状关系图,7个汉字(“器”、“犬”、“太”、“大”、“人”、“一”、“口”)仅仅由5个基本矢量图形P1,P2,P3,P4,P5构成,其他都是通过复合方法得到,因此编码时实际存储的轮廓点是非常少的,存储的都是复合方法中的参数。大大节省了存储容量,编码时只需要调用不同的组件对象,减小了直接保存原始轮廓点的描点工作,效率得到极大提升。基于以上过程,我们可以看出,给出几个简单的基本矢量图形,通过组件复合形成可重复利用的组件对象,由于复合过程仅仅保存了一些复合参数,因此这种编码方法的结果是大大减小了存储空间和降低了编码复杂度。
5.解码速度的提高处理和编码时的注意事项。
由于组件对象是一颗树,如果这棵树节点很多,比较复杂,这无疑增加了解码的空间复杂度,在一些资源有限的设备上可能会造成解码速度不够理想,可以从两个方面着手来解决这个问题。首先在编码时,找出矢量图形有共性的地方,把它做成一个组件对象,如果这个组件对象出现频率很高,则把他标记下来。其次在解码时,把标记好的组件对象和部分基本矢量图形事先缓存起来,这样既可以保证编码文件尺寸很小同时解码速度又大大提高。
Claims (6)
1.利用原始坐标系和参考坐标系(参考点)对基本矢量图形进行编码,根据编码需要路径上的点保存的坐标既可是相对于原始坐标系,也可以是相对于参考坐标系。这样路径上的点可以在原始坐标系和参考坐标系下进行各种变换,包括旋转、缩放、平移、修改等。参考坐标系主要是针对基本矢量图形的局部变换设置的,以更加自由的适应多种形状,达到节省编码空间的目的。
2.利用复合方法将一个或多个基本矢量图形进行变换、修改后得到复合矢量图形,再利用复合方法对复合矢量图形进行多次变换、修改,从而形成更加复杂的矢量图形。
3.基本矢量图形和复合矢量图形编码时都以组件对象来表达,利用一颗树来表示一个组件对象,这颗树的叶节点是基本矢量图形,其他节点是复合矢量图形。组件对象解码后是可以直接用来填充和渲染的矢量图形。
4.组件对象中根节点可以对这棵树上子节点以下的其它任何节点使用附加的复合方法来进行调整控制,其目的是最大限度的共用组件对象,节省编码空间,同时又确保编码精度。
5.利用参考坐标系(参考点)对基本矢量图形进行栅格调整,以改善矢量图形缩小时的清晰度。
6.标记频度出现很高的组件对象事先缓存以加快解码速度。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2012100129545A CN102609961A (zh) | 2012-01-16 | 2012-01-16 | 基于参考点的矢量图形复合编、解码方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2012100129545A CN102609961A (zh) | 2012-01-16 | 2012-01-16 | 基于参考点的矢量图形复合编、解码方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102609961A true CN102609961A (zh) | 2012-07-25 |
Family
ID=46527305
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2012100129545A Pending CN102609961A (zh) | 2012-01-16 | 2012-01-16 | 基于参考点的矢量图形复合编、解码方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102609961A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9317489B2 (en) | 2013-06-27 | 2016-04-19 | Adobe Systems Incorporated | Vector graphic conversion into fonts |
CN113052939A (zh) * | 2019-12-10 | 2021-06-29 | 辉达公司 | 对路径描边的补丁区段、顶端和连接统一编码 |
US11769298B2 (en) | 2019-12-10 | 2023-09-26 | Nvidia Corporation | Polar stroking for vector graphics |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1450499A (zh) * | 2003-04-29 | 2003-10-22 | 上海城市发展信息研究中心 | 基于地理信息系统的城市基本实体编码方法及自动化算法 |
US20070057943A1 (en) * | 2001-10-18 | 2007-03-15 | Microsoft Corporation | Multiple-level graphics processing system and method |
CN102255873A (zh) * | 2010-05-21 | 2011-11-23 | 南京师范大学 | 基于有序点集像素无损压缩的矢量数据高效传输方法 |
CN102289464A (zh) * | 2011-07-18 | 2011-12-21 | 南京师范大学 | 一种矢量数据空间特征的编码方法 |
-
2012
- 2012-01-16 CN CN2012100129545A patent/CN102609961A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070057943A1 (en) * | 2001-10-18 | 2007-03-15 | Microsoft Corporation | Multiple-level graphics processing system and method |
CN1450499A (zh) * | 2003-04-29 | 2003-10-22 | 上海城市发展信息研究中心 | 基于地理信息系统的城市基本实体编码方法及自动化算法 |
CN102255873A (zh) * | 2010-05-21 | 2011-11-23 | 南京师范大学 | 基于有序点集像素无损压缩的矢量数据高效传输方法 |
CN102289464A (zh) * | 2011-07-18 | 2011-12-21 | 南京师范大学 | 一种矢量数据空间特征的编码方法 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9317489B2 (en) | 2013-06-27 | 2016-04-19 | Adobe Systems Incorporated | Vector graphic conversion into fonts |
CN113052939A (zh) * | 2019-12-10 | 2021-06-29 | 辉达公司 | 对路径描边的补丁区段、顶端和连接统一编码 |
US11769298B2 (en) | 2019-12-10 | 2023-09-26 | Nvidia Corporation | Polar stroking for vector graphics |
CN113052939B (zh) * | 2019-12-10 | 2024-03-08 | 辉达公司 | 对路径描边的补丁区段、顶端和连接统一编码 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110751696B (zh) | 将BIM模型数据转化为glTF数据的方法、装置、设备及介质 | |
EP1566769B1 (en) | Method and apparatus for encoding and decoding 3D data | |
CN101610411B (zh) | 一种视频序列混合编解码的方法和系统 | |
CN107180443B (zh) | 一种手绘动画生成方法及其装置 | |
CN105678683A (zh) | 一种三维模型的二维存储方法 | |
JP2011070326A (ja) | 画像処理装置、画像処理方法 | |
CN111402380B (zh) | 一种gpu压缩纹理处理方法 | |
WO2020248879A1 (zh) | 动画数据编码、解码方法、装置、存储介质和计算机设备 | |
CN104658027A (zh) | 一种面向不规则海洋流场数据的三维流线动态可视化算法 | |
CN102609961A (zh) | 基于参考点的矢量图形复合编、解码方法 | |
CN104867186A (zh) | 基于gpu的可交互海洋三维流场动态可视化算法 | |
CN101394489B (zh) | 一种基于模板和参数步长的字幕渲染效率瓶颈自动定位的方法 | |
CN103260030B (zh) | 面向移动终端三维模型流式传输方法 | |
CN103150749B (zh) | 用于多层体积光线投射的方法、系统和装置 | |
CN108010126A (zh) | 基于体素构建大规模复杂地形的方法及系统 | |
CN101795410A (zh) | 一种细粒度高压缩率的纹理压缩和合成方法 | |
CN111695293A (zh) | 一种面向纺织品类超大尺寸设计图基于调色板的全自动智能配色方法及监控方法 | |
CN103731153A (zh) | 计算机图像处理中对矢量化图形进行数据压缩的方法及装置 | |
CN110111380A (zh) | 基于深度相机的3d图像传输及重建方法 | |
CN113453009B (zh) | 基于拟合平面几何误差最小的点云空间可伸缩编码几何重构方法 | |
CN109360263B (zh) | 一种面向资源受限移动设备的实时软阴影生成方法及装置 | |
CN102306402A (zh) | 一种移动可视媒体的三维图形处理系统 | |
Samus et al. | 3D image mesh entropy coding | |
CN105338359B (zh) | 一种处理视频数据的方法及装置 | |
Kim et al. | A low-complexity patch segmentation in the V-PCC encoder |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20120725 |