快速的图像旋转方法与流程

文档序号:11135247阅读:1118来源:国知局
快速的图像旋转方法与制造工艺

本发明涉及图像处理及计算机图形学领域,尤其涉及快速实现图像旋转的方法。



背景技术:

图像旋转作为基本的图像几何变换,被广泛应用于图像融合、图像拼接等图像处理领域及汽车电子、无人机、军事、遥感等实际应用领域。图像旋转示意图如图1所示。

图像旋转的公式如下:

其中,θ为旋转角度,(i,j)为原始图像中的像素坐标,(xi,j,yi,j)为旋转后(i,j)在旋转图像中的映射坐标。由于采用公式(1)计算得到的映射坐标不一定是整数,因此如果直接映射,在目标图像中会产生空洞或重合。传统的图像旋转方法常采用插值的方法,如最近邻插值、双线性插值和双三次插值等技术消除空洞,实现旋转。然而,这些插值方法需要频繁的浮点乘法、取整运算甚至卷积运算,大大降低了计算效率,难以满足实际应用中的实时处理需求。



技术实现要素:

为克服现有技术的不足,针对传统图像旋转方法计算复杂,计算速度慢的问题,本发明旨在提出一种计算复杂度低的快速图像旋转方法,该方法便于硬件实现,适合实时处理。本发明采用的技术方案是,快速的图像旋转方法,利用固定步长值计算映射坐标,并计算其它像素点的映射坐标;由于映射坐标必须是整数,步长值根据旋转角度的正切值采用近似的方法得到,如下,设步长值为N,旋转角度为θ,N与tanθ有倒数关系:

其中,round代表取整运算,步长值为N,即意味着每隔N个像素点,映射坐标变换一行;每隔N行,首列像素的映射坐标变换一列。

具体步骤进一步细化如下:

首先由公式(1)计算出原始图像首行首列像素的映射坐标(x1,1,y1,1):

其中,θ为旋转角度,(i,j)为原始图像中的像素坐标,(xi,j,yi,j)为旋转后(i,j)在旋转图像中的映射坐标,根据旋转参数sinθ,cosθ求得N值,然后,其他像素的映射坐标在(x1,1,y1,1)的基础上根据步长值计算得到:

(1)对于同一行内的像素,每隔N个像素,像素的映射位置将变换一行,即每当mod(i,N)==1时,映射的纵坐标yi,j将变化1。对于逆时针旋转,向上移动一行,即yi,j减1,对于顺时针旋转,向下移动一行,即yi,j加1;

(2)相应地,对于每行的首列像素,每隔N行,首列像素的映射位置将变换一列,即每当mod(j,N)==1时,映射的横坐标xi,j将变化1;对于逆时针旋转,向右移动一列,即xi,j加1,对于顺时针旋转,向左移动一列yi,j减1;

(3)如果只按照步骤(1)和(2),对于顺时针,当原始像素坐标i,j满足公式(3)的条件时,像素需要向左移动填充空洞;对于逆时针,当原始像素坐标i,j满足公式(4)的条件时,像素需要向左移动填充空洞:

i=k×N2+[N+1-(mod(j-1,N)+1)]×N+1 k=0,1,2,......(3)

i=k×N2+[mod(j-1,N)+1]×N+1 k=0,1,2,......(4)

其中k为自然数。

本发明的特点及有益效果是:

1.本发明采取一种近似的方法,根据旋转角度的正切值,确定出计算映射坐标的步长值,只需精确计算首行首列像素的映射坐标,然后其它像素的映射坐标根据步长值得到。这种方法将传统旋转方法中的浮点运算和取整运算转化为简单的整数加减法,大大降低了计算复杂度,便于硬件实现,能够快速图像旋转的效果。

2.本发明精确计算出空洞出现的位置,并采用左移像素的方法填充空洞,解决了空洞的问题,充分保留了原始图像中的所有像素点的信息。

附图说明:

图1图像旋转示意图。

图2以不同的点为旋转中心:(a)以图像外的点为旋转中心;(b)以图像内的点为旋转中心。

图3左移像素填充空洞。

图4快速图像旋转方法的流程图。

图5旋转角θ=7.125°时,旋转图像示意图。

具体实施方式

图像旋转实际上是像素点映射坐标的计算。由于像素的坐标是连续的,因此相邻像素的映射坐标之间有一定的联系性。一幅图像由多行像素组成,可以先计算出首行首列像素的映射坐标,然后其他像素的坐标在此基础上得到。本发明提出一种利用固定步长值计算映射坐标的方法,计算其它像素点的映射坐标。由于映射坐标必须是整数,步长值根据旋转角度的正切值采用近似的方法得到,如下,设步长值为N,旋转角度为θ,N与tanθ有倒数关系:

其中,round代表取整运算。步长值为N,即意味着每隔N个像素点,映射坐标变换一行;每隔N行,首列像素的映射坐标变换一列。这种方法只需要计算一次步长值,通过将旋转角度近似为某些离散的旋转角度,从而避免了频繁的浮点计算。旋转可以以图像内的像素点为旋转中心,也可以以图像外的点为旋转中心,如图2所示。提出的方法对以任意点为旋转中心均适用。具体实现方法如下:

首先由公式(1)计算出原始图像首行首列像素的映射坐标(x1,1,y1,1)。并根据旋转参数sinθ,cosθ求得N值。然后,其他像素的映射坐标在(x1,1,y1,1)的基础上根据步长值计算得到。旋转后像素点的位置示意图如图3所示。

(4)对于同一行内的像素,每隔N个像素,像素的映射位置将变换一行,即每当mod(i,N)==1时,映射的纵坐标yi,j将变化1。对于逆时针旋转,向上移动一行,即yi,j减1,对于顺时针旋转,向下移动一行,即yi,j加1。

(5)相应地,对于每行的首列像素,每隔N行,首列像素的映射位置将变换一列,即每当mod(j,N)==1时,映射的横坐标xi,j将变化1。对于逆时针旋转,向右移动一列,即xi,j加1,对于顺时针旋转,向左移动一列yi,j减1。

(6)如果只按照步骤(1)和(2),旋转后的图像会产生空洞,如图3所示。本发明采用向左移动像素填充空洞的方式消除空洞。经过精确计算,对于顺时针,当原始像素坐标i,j满足公式(3)的条件时,像素需要向左移动填充空洞;对于逆时针,当原始像素坐标i,j满足公式(4)的条件时,像素需要向左移动填充空洞。

i=k×N2+[N+1-(mod(j-1,N)+1)]×N+1 k=0,1,2,......(3)

i=k×N2+[mod(j-1,N)+1]×N+1 k=0,1,2,......(4)

图4为本发明提出的快速图像旋转方法的流程图。可以看出,整个过程中,除了计算N值和首行首列像素的映射坐标需要用乘法和取整运算外,其它像素的映射坐标全部由加减法得到。而且每个像素映射坐标的计算只需要两次整数加法或减法运算,而按照公式(1)直接计算则需要四次浮点乘法,两次浮点加法和两次取整运算。因此,本发明大大降低了计算复杂度和计算量。

如图5所示,以图像左上角第一个像素点为旋转中心,以tanθ=1/8,即逆时针旋转7.125°为例给出本发明的一种实施方式。此时N值为8,首列像素的映射坐标(x1,1,y1,1)=(round(0.8682),round(1.1163))=(1,1)。一行内的像素,每当mod(j,8)==1时,即第9,17,25……个像素的映射位置都需要向上移动一行;每隔8行,即第9,17,25……行的首列像素的映射位置也需要向右移动一列。而当i=64k+[mod(j-1,8)+1]×8+1时,像素向左移动填充空洞。这样,采用基于步长值累加的方式计算每个原始像素的映射坐标,然后将原始像素值映射到该坐标处即可得到旋转后的图像。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1