视频旋转中,可以将每一帧看成是一个图像。对每一帧图像进行旋转就是可以实现对视频的旋转。此文要说明图像旋转的原理,前面已经得到每个像素点的值了,那么图像旋转要怎么做呢?
照我的理解,图像旋转是将比如(x0,y0)像素点绕某一点旋转(比如图像的左上角、图像中心,屏幕左上角等)后成为(x0',y0'),然后将原来(x0,y0)像素点的像素值赋给新点(x0',y0'),不断的重复这过程。直到把有点完成。这就是我的一个大概思路。不知道对不对呢?
好了,废话不说,先来看看图像旋转的原理吧!
一、旋转原理和旋转公式
先看看旋转图像的坐标
旋转示意图
有: tg(b)=y/x ----(1)
tg(a+b)=y'/x' ----(2)
x*x + y*y = x'*x' + y'*y' ----(3)
有公式:tg(a+b) = ( tg(a)+tg(b) ) / ( 1-tg(a)*tg(b) ) ----(4)
把(1)代入(4)从而消除参数b;
tg(a)+y/x = y'/x'*( 1-tg(a)*y/x ) ----(5)
由(5)可以得x'=y'*(x-y*tg(a))/( x*tg(a)+y ) ----(6)
把(6)代入(3)从而消除参数x',化简后求得:
y'=x*sin(a)+y*cos(a); ----(7)
把(7)代入(6),有:
x'=x*cos(a)-y*sin(a); ----(8)
考虑到视频处理中,一般只有旋转90度和180度两种可能。
1.那么逆时针旋转90度:
y'=x*sin(a)+y*cos(a)=x;
x'=x*cos(a)-y*sin(a)=-y;
2.那么逆时针旋转90度:
y'=x*sin(a)+y*cos(a)=-y;
x'=x*cos(a)-y*sin(a)=-x;
都是整数。