面试-仿射变换

面试-仿射变换

面试题目

仿射变换,给出一个点在平面旋转$ heta$角的仿射矩阵.

题目内容

仿射变换(ATF,Affine Transformation) 是图像的线性变换,对于一个集合$X$ 的仿射变换可以表示为:
$$
f(x) = Ax+b, x in X.
$$
对于我们需要处理的图像集合而言,可以表示为:
$$
g(x,y) = Af(x,y)+b.
$$
其中$A$矩阵就是仿射变换矩阵.

仿射变换

内容介绍可以参考链接:仿射变换介绍

常用的仿射变换包括:
缩放: Scale
旋转: Rotate
平移: Transform
反射: Reflection
错切: Shear

可以参考图:

仿射变换图示--wiki
仿射变换图示--wiki

仿射变换中集合中的一些性质保持不变:
(1)凸性
(2)共线性:若几个点变换前在一条线上,则仿射变换后仍然在一条线上
(3)平行性:若两条线变换前平行,则变换后仍然平行
(4)共线比例不变性:变换前一条线上两条线段的比例,在变换后比例仍然步

注:所有的三角形都能通过仿射变化为其他三角形,所有平行四边形也能仿射变换为另一个平行四边形。

由于仿射变换是线性的,所以仿射变换的任意组合仍然是线性的.

仿射变换矩阵推导

仿射变换矩阵推导以 矩阵旋转为例,也是面试题目的内容:
假设原本点为 $C$ 点,旋转 $ heta$ 角度之后到达 $B$ 点, 计算旋转矩阵 A. 以二维矩阵为例

仿射变换旋转矩阵推导示意图
仿射变换旋转矩阵推导示意图

对于$C,B$两点表示成极坐标为 $C(rcosalpha,rsinalpha)$,$B(rcos(alpha+ heta),rsin(alpha+ heta))$,
对于
$$
x_B = rcos(alpha+ heta) = r(cosalphacos heta-sinalphasin heta) = (cos heta -sin heta)x_C
$$

$$
y_B = rsin(alpha+ heta) = r(sinalphacos heta+cosalphasin heta) = (sin heta+cos heta)y_C
$$
所以可以推导出如下矩阵
$$
left[
egin{array}{l}
{mathrm{x_B}}
{y_B}
end{array}
ight]
=left[
egin{array}{cc}
{cos heta} & {-sin heta}
{sin heta} & {cos heta}
end{array}
ight]
left[
egin{array}{l}
{mathrm{x_C}}
{y_C}
end{array}
ight]
$$

内容延展

原文地址:https://www.cnblogs.com/hugochen1024/p/12570678.html