[发明专利]2D图形任意角度旋转的实现方法及介质在审
申请号: | 202110419500.9 | 申请日: | 2021-04-19 |
公开(公告)号: | CN113284053A | 公开(公告)日: | 2021-08-20 |
发明(设计)人: | 方宁;原顺 | 申请(专利权)人: | 广州匠芯创科技有限公司 |
主分类号: | G06T3/60 | 分类号: | G06T3/60;G06T1/60 |
代理公司: | 广州嘉权专利商标事务所有限公司 44205 | 代理人: | 尹凡华 |
地址: | 510700 广东省广州市*** | 国省代码: | 广东;44 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 图形 任意 角度 旋转 实现 方法 介质 | ||
本发明公开了2D图形任意角度旋转的实现方法及介质,其中方法包括:对原图进行分块;从DDR中将分块读取到SRAM中;基于设定角度对原图分块进行正向映射,将原图分块中四个顶点的坐标通过坐标映射得到四个顶点在目标图中的坐标;通过Bresenham画线算法计算出四条边界在目标图中的边界点的所有坐标;每个目标像素点反向映射得到在原图中对应的4个相邻像素点,并通过双线性插值运算,计算出当前目标像素点的像素;将目标像素点的像素写回DDR中。本发明可以降低CPU的负载,降低系统的功耗,并明显提升图形旋转的速度。
技术领域
本发明涉及图像处理技术,特别涉及一种2D图形任意角度旋转的实现方法及介质。
背景技术
目前市场上的SOC针对2D图形的硬件加速只支持90度,180度,270度旋转,这几种固定角度旋转,实现过程比较简单,只需要改变硬件从DDR读取数据的流程即可。并不能支持0~360任意角度的旋转。当用户在相应的SOC平台上实现仪表盘界面的指针转动的功能的时候,转动的角度可能是任意的,就不能使用2D Engine的图形旋转硬件加速功能。只有用软件计算来旋转图形,会占用大量的CPU资源。
发明内容
本发明旨在至少解决现有技术中存在的技术问题之一。为此,本发明提出一种2D图形任意角度旋转的实现方法,能够通过给2D Engine增加一种图形任意角度旋转的硬件实现,可以使图形任意角度操作交给硬件去做,可以大大降低需要图形任意角度旋转场景下的CPU的负载。
本发明还提出一种实施上述方法的计算机可读存储介质。
根据本发明的第一方面实施例2D图形任意角度旋转的实现方法,包括:对原图按NxN大小进行分块,所述分块包括四个顶点以及四条边界;N为行列数;从DDR中将所述分块读取到SRAM中;基于设定角度对原图分块进行正向映射,将原图分块中四个顶点的坐标通过坐标映射得到所述四个顶点在目标图中的坐标;基于所述四个顶点在目标图中的坐标,通过Bresenham画线算法计算出所述四条边界在目标图中的边界点的所有坐标,得到目标块的边界坐标;通过所述目标块的边界坐标,逐行扫描目标像素点的坐标;扫描过程中,每个目标像素点反向映射得到在原图中对应的4个相邻像素点,从SRAM中读出这4个相邻像素点,并通过双线性插值运算,计算出当前目标像素点的像素;将目标像素点的像素写回DDR中。
根据本发明的一些实施例,所述四条边界中的第一边界和第二边界的像素点包含在所述分块内,第三边界和第四边界的像素点不包含在所述分块内,其中,所述第一边界和第二边界相邻。本实施例中,原图每个分块旋转后对应的目标分块都有清晰的边界归属,在计算目标像素过程中,目标块之间的边界像素不会重复写回DDR,也不会在目标块之间有漏掉操作的点。
根据本发明的一些实施例,所述基于设定角度对原图分块进行正向映射,将原图分块中四个顶点的坐标通过坐标映射得到所述四个顶点在目标图中的坐标包括:获取各个顶点的坐标,基于旋转中心和旋转半径通过旋转公式将所述顶点的坐标进行正向映射,得到所述顶点在目标图中对应的坐标;若原图的旋转中心与目标图的旋转中心坐标相同,所述旋转公式如下:
x1=x0*cosa+y0*sina
y1=-x0*sina+y0*cosa
其中,x1和y1分别为顶点目标图中的横纵坐标,x0和y0分别为顶点在原图中的横纵坐标,a为旋转角度。
根据本发明的一些实施例,所述方法还包括:若原图与目标图的旋转中心坐标不同,则旋转公式为:
x1=x0*cosa-y0*sina-m*cosa+n*sina+c
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于广州匠芯创科技有限公司,未经广州匠芯创科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110419500.9/2.html,转载请声明来源钻瓜专利网。