CN109685715B - 一种显示系统中高精度图像无级旋转处理方法 - Google Patents
一种显示系统中高精度图像无级旋转处理方法 Download PDFInfo
- Publication number
- CN109685715B CN109685715B CN201811523050.2A CN201811523050A CN109685715B CN 109685715 B CN109685715 B CN 109685715B CN 201811523050 A CN201811523050 A CN 201811523050A CN 109685715 B CN109685715 B CN 109685715B
- Authority
- CN
- China
- Prior art keywords
- rotation
- pixel
- interpolation
- image
- unit
- 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 description 6
- 238000004364 calculation method Methods 0.000 claims abstract description 32
- 238000000034 method Methods 0.000 claims abstract description 31
- 239000000872 buffer Substances 0.000 claims abstract description 20
- 238000005516 engineering process Methods 0.000 abstract description 2
- 239000013598 vector Substances 0.000 description 5
- 230000003139 buffering effect Effects 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 238000009825 accumulation Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000007493 shaping process Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000004148 unit process Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T3/00—Geometric image transformations in the plane of the image
- G06T3/60—Rotation of whole images or parts thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T3/00—Geometric image transformations in the plane of the image
- G06T3/40—Scaling of whole images or parts thereof, e.g. expanding or contracting
- G06T3/4007—Scaling of whole images or parts thereof, e.g. expanding or contracting based on interpolation, e.g. bilinear interpolation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T3/00—Geometric image transformations in the plane of the image
- G06T3/40—Scaling of whole images or parts thereof, e.g. expanding or contracting
- G06T3/4023—Scaling of whole images or parts thereof, e.g. expanding or contracting based on decimating pixels or lines of pixels; based on inserting pixels or lines of pixels
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Image Processing (AREA)
Abstract
本发明属于集成电路设计技术。提供一种显示系统中高精度图像无级旋转处理方法,包括:步骤一:根据旋转方向、旋转角θ的三角函数值,采用逆向旋转法计算像素点坐标;步骤二:按照显示窗口的显示顺序对旋转后图像进行像素点坐标计算和像素值插值;步骤三:插值结果输出到行缓冲单元,同时行缓冲单元将数据送入DDR3中的帧缓冲区。本发明方法主要分为旋转计算和插值计算两部分,旋转计算将大量的三角函数乘法运算变为加减运算,提高了计算效率;插值计算采用了自适应算法的策略,针对运动图像和静止图像采用不同的插值方法,当图像旋转时首先保证实时性避免花屏,当图像静止时则主要保证图像的质量。
Description
技术领域
本发明属于集成电路设计技术。
背景技术
日常应用中为了适应不同的显示需求,需要对图像进行一定角度的旋转。设计人员采用计算机辅助设计软件进行机械设计时,可以通过数据手套或跟踪画笔操纵物体进行旋转。相比与±90度、±180度粗粒度旋转操作,图像的无级旋转操作对处理时间、处理效果和旋转角度都有更高的要求,无级旋转与普通图像旋转的区别主要在于无级旋转不仅保证了图像旋转角度的任意性,同时满足旋转后图像的不失真,因此无级旋转的硬件实现难度较大。
GPU的显示控制模块(Display Control,简称DC模块)对视频或图像信号进行处理的接口模块,目前大多数的图形处理器在其DC模块中都集成了视频叠加等复杂的显示功能和视频旋转、缩放等丰富的源处理功能,将无级旋转功能集成在GPU显示控制模块内部,可以实现显示控制模块对整幅图像的高效无级旋转操作。
发明内容
本发明提供一种显示系统中高精度图像无级旋转处理方法,基于某款GPU的实时图像旋转需求,确保无级旋转操作的实时性和图像质量。
本发明的技术方案是:
一种显示系统中高精度图像无级旋转处理方法,包括:
步骤一:根据旋转方向、旋转角θ的三角函数值,采用逆向旋转法计算像素点坐标;
步骤二:按照显示窗口的显示顺序对旋转后图像进行像素点坐标计算和像素值插值;
步骤三:插值结果输出到行缓冲单元,同时行缓冲单元将数据送入DDR3中的帧缓冲区。
步骤一中,旋转控制单元负责将主机接口发送的旋转中心、旋转方向、旋转角度和缩放比例进行运算后送入像素寻址单元。
步骤一中,像素寻址单元则负责按照最终显示顺序计算出像素点坐标,并按照显示顺序确定显示器每行有效像素点的起始位置和结束位置。
步骤二中,图像旋转单元负责计算像素点坐标,从像素Cache中取出数据存入寄存器堆。
步骤二中,插值选择逻辑根据图像运动状态选择插值算法。
步骤二中,像素插值单元完成整幅图像的插值操作。
本发明的有益效果是:
本设计采用一种适用于无级旋转操作的累加插值旋转算法,该算法主要分为旋转计算和插值计算两部分,旋转计算将大量的三角函数乘法运算变为加减运算,提高了计算效率;插值计算采用了自适应算法的策略,针对运动图像和静止图像采用不同的插值方法,当图像静止时主要保证图像的质量,当图像旋转时则首先保证实时性避免花屏。
附图说明
图1为本发明的电路结构框图。
图2为插值运算处理过程示意图。
图3像素块执行Catmull-Rom插值过程示意图。
具体实施方式
本发明采用图1的电路结构,旋转控制单元处理来自主机接口模块的旋转指令,解析指令得到图像的旋转中心、旋转方向、旋转角度和缩放比例;像素寻址单元按照最终显示顺序在旋转前图像找出特征像素点对应坐标;根据像素寻址单元的输出结果图像旋转单元输出旋转前图像的像素地址;插值选择逻辑首先根据像素坐标判断显示窗口中的像素点是否位于原始图像内部,丢弃非图像内部像素点;寄存器堆按照插值算法对像素数据的格式要求存储像素数据;像素插值单元完成操作后数据将被送入行缓冲单元,并通过输出接口完成输出,同时将旋转后图像存入DDR3中的帧缓冲区。
一种适用于无级旋转操作的累加插值旋转方法,该方法主要分为旋转计算和插值计算两部分,旋转计算将大量复杂的三角函数乘法运算变为简单的加减运算,提高了计算效率;插值计算采用了如图2所示的自适应算法策略,针对运动图像和静止图像采用不同的插值方法,当图像静止时主要保证图像的质量,当图像旋转时则主要保证实时性,避免花屏。算法涉及的功能模块如表1所示:
表1无级旋转模块各单元输入输出和功能描述
各模块的工作过程和原理为:
主机接口模块接收客户端发送的旋转指令,将指令转换为旋转操作相关参数后传输给旋转控制单元,像素寻址单元根据旋转控制单元发送的数据选择无级旋转需要操作的像素数据,数据准备完毕后进入图像旋转单元进行旋转操作。
旋转控制模块的功能主要是计算旋转角度θ的正余弦三角函数值,即接收到旋转角度θ后采用查找表法计算正余弦函数值,片外RAM存储所有的正余弦三角函数值。
像素寻址单元负责根据旋转控制单元的输出选择无级旋转需要操作的关键像素数据。根据输入的旋转角度θ得到旋转前图像顶点和旋转后图像显示窗口间的位置关系,进而确定了无级旋转模块中DDR3的数据tile和像素Cache之间的位置关系,为像素Cache的替换数据的地址计算提供了依据,即可以计算出相邻tile在DDR3中的偏移地址,通过简单地址操作完成数据的读取。
像素寻址单元只对图像四个顶点进行坐标旋转运算,有效避免旋转造成的像素重叠和无效像素,其他点则采用累加方法由图像旋转单元确定坐标。像素寻址单元中已经完成图像四个顶点坐标计算,图像旋转单元计算剩余像素点坐标。
插值选择逻辑的功能主要分为两部分:功能一是判断图像的状态是旋转中还是旋转结束;功能二是判断显示窗口通过图像旋转单元计算出的坐标是否位于旋转前图像内。
插值选择逻辑通过计数器和寄存器来判断图像状态,并选择相应的插值算法。计数器根据时钟频率进行计时,寄存器保存主机接口模块发送的旋转指令,寄存器数据每一个时间单位被读取一次,当连续三个时间单位旋转角度寄存器和旋转方向寄存器均无变化时,表示当前图像未发生旋转,否则表示图像正在旋转,两种情况下采用的像素插值算法不同。
图像旋转单元计算像素点坐标后,需要从像素Cache中数据完成像素插值。在无级旋转模块的存储结构设计中,由于旋转计算单元访问像素数据具有局部性,因此采用像素Cache提高整个模块的工作速率。由于图像旋转单元是按照像素块执行坐标计算的,无级旋转模块采用8x6规模的寄存器堆存储像素数据,保证寄存器堆中的数据能够满足最高性能情况下像素插值操作需要。
像素插值单元负责对非整数坐标像素点进行像素插值。根据插值选择逻辑的控制信号对寄存器堆数据进行操作。由于数据在像素Cache内已经按照图像块进行存储,因此像素寻址单元从像素Cache取回的数据可以直接使用,无需进行缓冲和格式调整。
像素插值单元通过设置行缓冲来进行像素数据的时钟整形和重排序,使输出的像素数据格式符合显示要求。行缓冲将数据送入输出显示接口和DDR3存储器的帧缓冲,帧缓冲中数据负责维持显示器的刷新操作。由于图像按照显示顺序逐行存储,因此无需进行数据的重新排序。
一种显示系统中高精度图像无级旋转处理方法为:
步骤一:根据旋转方向和旋转角等参数,采用逆向旋转法计算像素点坐标。其中旋转控制单元负责将主机接口发送的旋转中心、旋转方向、旋转角度和缩放比例等数据进行运算后送入像素寻址单元,像素寻址单元则负责按照最终显示顺序计算出像素点坐标,并按照显示顺序确定显示器每行有效像素点的起始位置和结束位置。
步骤二:按照显示窗口的显示顺序对旋转后图像进行像素点坐标计算和像素值插值,图像旋转单元负责计算像素点坐标,从像素Cache中取出数据存入寄存器堆,插值选择逻辑根据图像运动状态选择插值算法,像素插值单元完成整幅图像的插值操作。
步骤三:插值结果输出到行缓冲单元,同时行缓冲单元将数据送入DDR3中的帧缓冲区,以便显示设备刷新使用。
主机接口模块对收到的无级旋转命令进行解析,通过配置旋转控制单元寄存器实现旋转方向、旋转角度和缩放比例命令的下发。旋转控制单元接收到旋转角度后,采用查找表法或外输入法计算其三角函数值,查找表主要是通过片外RAM存储个旋转角度对应的正余弦三角函数值,外输入法则主要是将模块外部计算结果传输给无级旋转模块。本方法采用查找表计算三角函数值。
旋转控制单元接收的无级旋转参数包括图像分辨率、旋转中心坐标、图像旋转方向、图像旋转角度和图像缩放比例等。无级旋转操作指令包是由一个32bit包头和多个32bit的数据体构成,包头包含了命令包类型、数据体长度、寄存器起始基地址等,数据体为寄存器设置操作需要用到的寄存器值,包含了旋转方向、旋转角度和缩放比例信息。当图像不需要执行无级旋转操作时,无级旋转模块通过使能信号控制进入等待状态,图像数据直接被送到输出接口,完成颜色空间转换等操作后直接显示。
像素寻址单元通过两个旋转角度寄存器存储角度值,采用两个旋转方向寄存器存储旋转方向,分别存储旋转控制单元处理主机接口命令得到的实时旋转角度和旋转方向。
为了避免旋转造成的像素重叠等错误情况,像素寻址单元采用对图像四个顶点进行坐标旋转运算的策略剔除无效像素,除图像顶点外的其他像素点均由图像旋转单元采用累加方法确定坐标。完成像素点坐标计算后,像素插值单元根据色度属性值进行插值运算。由于坐标计算得到的像素点是逐像素逐行排列的,因此完成插值运算后可以直接输出到行缓冲单元输出显示。
当旋转操作产生无效像素区域时,该区域的像素点通过逆向旋转无法找到对应点,导致像素Cache缺失,该情况下像素Cache从DDR3中取回的数据也为无效数据,因此在无级旋转模块的设计中,通过以下两种策略剔除图像旋转单元产生的无效像素点:
1)根据显示窗口比例LxH,旋转前图像所有像素点的横坐标均位于[0,L]范围内,纵坐标均位于[0,H]范围内,因此超过坐标范围的像素点为无效像素点,即丢弃横坐标不在[0,L]或者纵坐标不在[0,H]范围内的像素点,具体的操作方法是将寄存器堆中32位像素使能寄存器的对应位置零。
2)当像素点的横纵坐标位于[0,H]范围内时,采用消隐策略进行无效像素点处理。平面的表面法向量S(视点向量)计算可以通过表面上任一点到视点的向量得到,即得到点与图像的位置关系:当像素点和图像顶点构成平面的所有法向量均指向观察者时,表明该像素点位于图像平面内部;当某个像素点和图像顶点构成的平面法向量与观察者视线垂直时,表明像素点位于图像平面边缘;其余情况表明像素点位于图像平面外部。
图像旋转和静止对应的插值算法不同,采用双线性插值法和采用Catmull-Rom插值法时寄存器堆数据装填的具体步骤为:
步骤一:按照Z字型顺序确定图像显示窗口中前两行像素点包含的第一个像素块在旋转前图像中所属的tile的位置。
步骤二:判断像素块完成像素插值计算需要的像素点所属的tile。
步骤三:根据tile的像素格式将数据送入寄存器堆。
插值选择逻辑负责判定像素插值单元采用双线性插值法或者Catmull-Rom样条插值法,但对应图像像素块的位置关系不变。当图像快速旋转时,采用双线性插值法计算目标像素点像素值。双线性插值法的计算公式为f(x+u,y+v)=(1-u)(1-v)*f(x,y)+(1-u)v*(x,y+1)+u(1-v)*f(x+1,y)+uv*f(x+1,y+1),其中f(x+u,y+v)为待插值点的像素值,u和v分别为待插值点和所在像素块中横坐标和纵坐标最小像素点在两个坐标轴上的距离。当图像静止时,采用了如图3所示的Catmull-Rom样条插值算法,首先从寄存器堆中对应的4x4像素点,完成行插值计算得到4个插值计算结果并存入寄存器中,然后通过列插值计算目标点的像素值,列插值计算结果即为最终插值结果。
行缓冲单元负责存储完成无级旋转操作的像素数据。行缓冲分为五种工作状态:空闲状态、读状态、读空状态、写状态和写满状态,空状态。行缓冲将数据送入输出接口和DDR3中的帧缓冲,图像无级旋转操作完成。
Claims (4)
1.一种显示系统中高精度图像无级旋转处理方法,其特征在于,包括:
步骤一:根据旋转方向、旋转角θ的三角函数值,采用逆向旋转法计算像素点坐标;
步骤二:按照显示窗口的显示顺序对旋转后图像进行像素点坐标计算和像素值插值,插值选择逻辑根据图像运动状态选择是否使用插值算法;插值选择逻辑通过计数器和寄存器来判断图像状态,并选择相应的插值算法:计数器根据时钟频率进行计时,寄存器保存主机接口模块发送的旋转指令,寄存器数据每一个时间单位被读取一次,当连续三个时间单位旋转角度寄存器和旋转方向寄存器中存储的图像状态信息均无变化时,确定当前图像未发生旋转,否则确定图像正在旋转,两种情况下采用的像素插值算法不同;步骤二中,图像旋转单元负责计算像素点坐标,从像素Cache中取出数据存入寄存器堆;
步骤三:插值结果输出到行缓冲单元,同时行缓冲单元将数据送入DDR3中的帧缓冲区。
2.如权利要求1所述的一种显示系统中高精度图像无级旋转处理方法,其特征在于,步骤一中,旋转控制单元负责将主机接口发送的旋转中心、旋转方向、旋转角度和缩放比例进行运算后送入像素寻址单元。
3.如权利要求1所述的一种显示系统中高精度图像无级旋转处理方法,其特征在于,步骤一中,像素寻址单元则负责按照最终显示顺序计算出像素点坐标,并按照显示顺序确定显示器每行有效像素点的起始位置和结束位置。
4.如权利要求1所述的一种显示系统中高精度图像无级旋转处理方法,其特征在于,步骤二中,像素插值单元完成整幅图像的插值操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811523050.2A CN109685715B (zh) | 2018-12-12 | 2018-12-12 | 一种显示系统中高精度图像无级旋转处理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811523050.2A CN109685715B (zh) | 2018-12-12 | 2018-12-12 | 一种显示系统中高精度图像无级旋转处理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109685715A CN109685715A (zh) | 2019-04-26 |
CN109685715B true CN109685715B (zh) | 2023-07-21 |
Family
ID=66187862
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811523050.2A Active CN109685715B (zh) | 2018-12-12 | 2018-12-12 | 一种显示系统中高精度图像无级旋转处理方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109685715B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113014991B (zh) * | 2021-03-03 | 2022-12-16 | 宏晶微电子科技股份有限公司 | 视频旋转的方法和装置、计算机可读介质 |
CN113920016A (zh) * | 2021-09-29 | 2022-01-11 | 杭州国芯科技股份有限公司 | 利用Cache存储器实现图像旋转的方法 |
CN114005395B (zh) * | 2021-10-11 | 2024-07-26 | 珠海亿智电子科技有限公司 | 图像实时显示容错系统、方法及芯片 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB8305713D0 (en) * | 1982-03-19 | 1983-04-07 | Quantel Ltd | Video processing system |
CN103226807A (zh) * | 2013-05-13 | 2013-07-31 | 天津大学 | 用于点阵显示设备的图像旋转方法和装置 |
CN105550991A (zh) * | 2015-12-11 | 2016-05-04 | 中国航空工业集团公司西安航空计算技术研究所 | 一种图形无极旋转方法 |
-
2018
- 2018-12-12 CN CN201811523050.2A patent/CN109685715B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB8305713D0 (en) * | 1982-03-19 | 1983-04-07 | Quantel Ltd | Video processing system |
CN103226807A (zh) * | 2013-05-13 | 2013-07-31 | 天津大学 | 用于点阵显示设备的图像旋转方法和装置 |
CN105550991A (zh) * | 2015-12-11 | 2016-05-04 | 中国航空工业集团公司西安航空计算技术研究所 | 一种图形无极旋转方法 |
Non-Patent Citations (2)
Title |
---|
基于DSP的图像旋转算法数据调度策略;李筱琳等;《微型电脑应用》;20080320(第03期);第6-8、26页 * |
基于FPGA的高速高质量图像旋转;李开宇等;《中国图象图形学报》;20040325(第03期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN109685715A (zh) | 2019-04-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109685715B (zh) | 一种显示系统中高精度图像无级旋转处理方法 | |
US11270492B2 (en) | Graphics processing systems | |
US6806883B2 (en) | System and method for handling display device requests for display data from a frame buffer | |
US20150194128A1 (en) | Generating a low-latency transparency effect | |
US5550961A (en) | Image processing apparatus and method of controlling the same | |
CN109785265B (zh) | 畸变矫正图像处理方法及图像处理装置 | |
US6864892B2 (en) | Graphics data synchronization with multiple data paths in a graphics accelerator | |
US20030174137A1 (en) | Frame buffer addressing scheme | |
US20200005719A1 (en) | Data processing systems | |
US5621866A (en) | Image processing apparatus having improved frame buffer with Z buffer and SAM port | |
US10692420B2 (en) | Data processing systems | |
US6812928B2 (en) | Performance texture mapping by combining requests for image data | |
CN109587500B (zh) | 一种基于fpga的动态可重配置视频缩放器 | |
JP4532746B2 (ja) | 3dパイプラインを使用したストレッチ・ブリッティングのための方法および装置 | |
KR910000203B1 (ko) | 화상처리장치 | |
CN117557480A (zh) | Hud图像畸变校正模块、方法及hud图像处理显示装置 | |
CN116312412A (zh) | 一种基于fpga的双三次插值电路 | |
CN115601223A (zh) | 一种图像预处理装置、方法和芯片 | |
US11481976B2 (en) | Instruction list generation | |
CN114900634B (zh) | 一种基于纹理贴图的超高清视频显示处理方法及装置 | |
Zhang et al. | A real-time image stitching method based on memory space conversion | |
JP3154741B2 (ja) | 画像処理装置及びその方式 | |
JP4137903B2 (ja) | グラフィックス表示装置およびグラフィックスプロセッサ | |
RU168781U1 (ru) | Устройство обработки стереоизображений | |
CN102129667A (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 |