旋转矩阵

在跑代码的时候,遇到一个问题是对训练图像数据做旋转(数据增强),以前的训练代码转就转了,一句代码 imrotate 就能搞定,但是目前自己跑的方法中,CNN 的输入还有图像中曲线的控制点坐标矩阵,图像旋转了就必须对坐标矩阵也做出相应的处理,要求出旋转 angle 角度以后原来的控制点所在的新坐标。

解决方案:使用 旋转矩阵。通过旋转矩阵,可以在知道原坐标的情况下,通过乘一个旋转矩阵,得到旋转 angle 度之后的新坐标。

旋转在二维中是绕着某一个点旋转,在三维中是绕着某个轴旋转。

二维旋转

绕原点的二维旋转

旋转矩阵_第1张图片
设:初始点 v v v 绕原点旋转 θ \theta θ 角度,得到点 v ′ v' v,已知 v v v 点坐标为 ( x , y ) (x,y) (x,y) v v v 点到原点距离为 r r r,原点到 v v v 点的向量与 x x x 轴夹角为 ϕ \phi ϕ,则:
x = r c o s ϕ y = r s i n ϕ x ′ = r c o s ( θ + ϕ ) y ′ = r s i n ( θ + ϕ ) x = rcos\phi \\ y = rsin\phi \\ x' = rcos(\theta + \phi) \\ y' = rsin(\theta + \phi) x=rcosϕy=rsinϕx=rcos(θ+ϕ)y=rsin(θ+ϕ)
由三角展开式: c o s ( A + B ) = c o s A c o s B − s i n A s i n B cos(A+B) = cosAcosB - sinAsinB cos(A+B)=cosAcosBsinAsinB s i n ( A + B ) = s i n A c o s B + c o s A s i n B sin(A+B) = sinAcosB + cosAsinB sin(A+B)=sinAcosB+cosAsinB 知:
x ′ = r c o s θ c o s ϕ − r s i n θ s i n ϕ y ′ = r s i n θ c o s ϕ + c o s θ s i n ϕ x' = rcos \theta cos \phi - rsin \theta sin \phi \\ y' = r sin \theta cos \phi + cos \theta sin \phi x=rcosθcosϕrsinθsinϕy=rsinθcosϕ+cosθsinϕ
x x x y y y 带入得:
x ′ = x c o s θ − y s i n θ y ′ = x s i n θ + y c o s θ x' = xcos\theta - ysin\theta \\ y' = xsin\theta + ycos\theta x=xcosθysinθy=xsinθ+ycosθ
写成矩阵形式:
[ x ′ y ′ ] = [ c o s θ    − s i n θ s i n θ     c o s θ ] × [ x y ] = [ x     y ] × [ c o s θ     s i n θ − s i n θ     c o s θ ] \left[ \begin{matrix} x' \\ y' \end{matrix} \right] = \left[ \begin{matrix} cos \theta \ \ -sin\theta \\ sin\theta \ \ \ cos\theta \end{matrix} \right] \times \left[ \begin{matrix} x \\ y \end{matrix} \right] = \left[ \begin{matrix} x \ \ \ y\\ \end{matrix} \right] \times \left[ \begin{matrix} cos \theta \ \ \ sin\theta \\ -sin\theta \ \ \ cos\theta \end{matrix} \right] [xy]=[cosθ  sinθsinθ   cosθ]×[xy]=[x   y]×[cosθ   sinθsinθ   cosθ]
尽管图示中仅仅表示的是旋转一个锐角θ的情形,但是我们推导中使用的是三角函数的基本定义来计算坐标的,因此当旋转的角度是任意角度(例如大于180度,导致v’点进入到第四象限)结论仍然是成立的。

绕任意点的二维旋转

绕原点的旋转是二维旋转最基本的情况,需要绕任意点旋转时,可以把这种情况转换到绕原点的旋转,思路如下:

  1. 将旋转点移动到原点处
  2. 执行绕原点的旋转
  3. 再将旋转点移回原本的位置

也就是说在处理绕任意点旋转的情况下需要执行两次平移的操作


参考:
https://blog.csdn.net/csxiaoshui/article/details/65446125

你可能感兴趣的:(深度学习,#,芝士就是力量)