在旋转过程中,需要进行两次坐标转换
1. 旋转操作前
图像的旋转是按照图像的中心点旋转指定角度,为了转换方便,需要以图像的中心作为坐标原点,所以进行旋转操作前,需要先对坐标进行变换,即将图像坐标系转换到数学坐标系。
设原始图像的宽和高分别为W和H,则第一次变换的映射关系为
x= x0 -0.5W
y = -y0 + 0.5H
矩阵表示为(x,y,1) =(x0,y0,1)(1,0,0;0,-1,0;-0.5W,0.5H,1)
逆运算为(x0,y0,1)=(x,y,1)(1,0,0;0,-1,0;0.5W,0.5H,1)
2.旋转操作后
图像进行旋转后,需要再次进行坐标转换,将数学坐标系转换为数字图像的坐标系。转换方式与1相似,唯一不同的是输出图像中心不再是(0.5W,0.5H),而是转换后的宽和高
newW和newH
矩阵表示为(x,y,1)=(x0,y0,1)(1,0,0;0,-1,0;0.5newW,0.5newH,1)
逆运算为(x0,y0,1)=(x,y,1)(1,0,0;0,-1,0;-0.5newW,0.5newH,1)
3.旋转公式
图像的每个像素需要经过如下3步完成旋转
a. 由输入图像的坐标系转换为数学坐标系
b.通过数学旋转坐标系计算指定像素旋转后的坐标
c.由旋转坐标系转换为输出图像的坐标系
(x,y,1)=(x0,y0,1)(1,0,0;0,-1,0;-0.5W,0.5H,1)(cos,-sin,0;sin,cos,0;0,0,1)(1,0,0;0,-1,0;0.5newW,0.5newH,1)
逆运算为:(x0,y0,1) =(x,y,1)(1,0,0;0,-1,0;-0.5newW,0.5newH,1)(cos,sin,0;-sin,cos,0;0,0,1)(1,0,0;0,-1,0;0.5W,0.5H,1)
4.利用插值进行图像的旋转
参考:https://wenku.baidu.com/view/d4ce6de30b1c59eef9c7b461.html