用于FPGA 平台上图像快速旋转的改进CORDIC 算法
2024-05-21高宇杰李武森戚云菲陈文建
高宇杰,李武森,戚云菲,陈文建
(1.南京理工大学 电子工程与光电技术学院,江苏 南京 210094;2.澳门城市大学 数据科学学院,澳门 999078)
0 引言
在移动摄像及显示系统中,当摄像头发生旋转的时候,显示屏中的画面也会随之产生不可避免的旋转,从而对目标的观察和操作产生较大的影响,此时就需要在显示前,先对摄像头传输过来的图像进行消旋处理。为此,本文提出了一种基于坐标旋转数字算法(Coordinate Rotation Digital Algorithm,CORDIC)的优化的图像消旋算法。
在硬件系统中,传统的CORDIC 算法只需要通过加法和移位运算就可以实现三角计算。其基本思想是用一系列与运算基数相关的角度的不断迭代来逼近所需旋转的角度,从而避免三角函数表的查找操作。它的速度更快,占据的内存量更少,每次旋转的角度的精度也有了提升。CORDIC 算法还被用于线性、圆和双曲函数的迭代运算,使得硬件系统可以计算更加复杂的数学函数,广泛应用于无线电、雷达和滤波器[1-3]等领域。随着现代科学技术的发展、电路集成度的提高,对计算速度、精度的要求也更高,而传统CORDIC 算法的计算精度以及速度已经满足不了设计需求。为此,国内外的学者也在通过减少迭代次数、增加计算精度、扩展使用范围、免去迭代因子等方法来对CORDIC 算法进行优化。
为了减少迭代次数,文献[4]提出了一种贪婪算法,通过挑选每一次的最优解来跳过不必要的旋转,以减少迭代次数,但这同时也增加了搜索模块,使得每一次迭代的计算时间大量增加,并且使得本来固定的缩放因子变为一个不确定的数。文献[5]以及文献[6]结合了贪婪算法以及查找表法,虽然相对于贪婪算法提升了精度,但查找表的地址依然需要对比搜索,而且缩放因子问题依然存在,并且又增加了内存的使用。文献[7]去掉了缩放因子的影响,也减少了迭代次数,但