zoukankan      html  css  js  c++  java
  • 面试-仿射变换

    面试-仿射变换

    面试题目

    仿射变换,给出一个点在平面旋转$ 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]
    $$

    内容延展

  • 相关阅读:
    Linux的中文输入法Fcitx-国货精品
    Linux内核编译与安装[转]
    Linux内核编译与安装[转]
    修改镜像地址加快Ubuntu更新速度
    修改镜像地址加快Ubuntu更新速度
    OSX操作技巧:快速锁定系统(类似Windows+L)
    NDK编程入门笔记[转]
    NDK编程入门笔记[转]
    内置函数图形分类
    函数的定义
  • 原文地址:https://www.cnblogs.com/hugochen1024/p/12570678.html
Copyright © 2011-2022 走看看