• 图像中常见变换类型辨析


      在图像处理过程中,经常涉及许多关于图像变换的概念,比如:刚体变换、欧式变换、相似变换、仿射变换、透视变换等等,但他们之间的关系和区别经常混淆。因此本文简单的介绍和辨析一下这几种变换的区别与联系,帮助自己的理解和记忆。如有纰漏,望请指出。

    1. 刚体变换(Rigid Transformation)

    [ x ′ y ′ 1 ] = [ R t 0 1 ] [ x y 1 ] = [ cos ⁡ θ − sin ⁡ θ t x sin ⁡ θ cos ⁡ θ t y 0 0 1 ] [ x y 1 ]

    [xy1]" role="presentation">[xy1]
    =
    [Rt01]" role="presentation">[Rt01]
    [xy1]" role="presentation">[xy1]
    =
    [cosθsinθtxsinθcosθty001]" role="presentation">[cosθsinθtxsinθcosθty001]
    [xy1]" role="presentation">[xy1]
    xy1=[R0t1]xy1=cosθsinθ0sinθcosθ0txty1xy1
    刚体变换也叫刚性变换、欧式变换,是最基础的变换形式。其中 R R R表示旋转矩阵,是一个正交阵 R R T = I RR^T=I RRT=I t t t表示平移向量。

    • 变换形式:旋转和平移
    • 自由度:三个自由度(一个旋转角 θ \theta θ,两个平移向量 t x , t y t_x,t_y tx,ty
    • 求解方式:需要两组点,四个方程求解
    • 不变量:长度、角度、面积

    2. 等距变换(Isometric Transformation)

    [ x ′ y ′ 1 ] = [ ϵ cos ⁡ θ − sin ⁡ θ t x ϵ sin ⁡ θ cos ⁡ θ t y 0 0 1 ] [ x y 1 ] , ϵ = ± 1

    [xy1]" role="presentation">[xy1]
    =
    [ϵcosθsinθtxϵsinθcosθty001]" role="presentation">[ϵcosθsinθtxϵsinθcosθty001]
    [xy1]" role="presentation">[xy1]
    ,\epsilon=\pm1 xy1=ϵcosθϵsinθ0sinθcosθ0txty1xy1,ϵ=±1
    等距变换前后两点之间的距离不变。 ϵ = 1 \epsilon=1 ϵ=1时,等距变换就等价于刚性变换、欧式变换,是保向的; ϵ = − 1 \epsilon=-1 ϵ=1时,是逆向的,表示关于 Y Y Y轴对称的反射变换。

    • 变换形式: ϵ = 1 \epsilon=1 ϵ=1时,旋转和平移; ϵ = − 1 \epsilon=-1 ϵ=1时,旋转、平移和反射(对称)
    • 自由度:三个自由度(一个旋转角 θ \theta θ,两个平移向量 t x , t y t_x,t_y tx,ty
    • 求解方式:需要两组点,四个方程求解
    • 不变量:长度、角度、面积

    3. 相似变换(Similar Transformation)

    [ x ′ y ′ 1 ] = [ s R t 0 1 ] [ x y 1 ] = [ s cos ⁡ θ − s sin ⁡ θ t x s sin ⁡ θ s cos ⁡ θ t y 0 0 1 ] [ x y 1 ]

    [xy1]" role="presentation">[xy1]
    =
    [sRt01]" role="presentation" style="position: relative;">[sRt01]
    [xy1]" role="presentation" style="position: relative;">[xy1]
    =
    [scosθssinθtxssinθscosθty001]" role="presentation" style="position: relative;">[scosθssinθtxssinθscosθty001]
    [xy1]" role="presentation" style="position: relative;">[xy1]
    xy1=[sR0t1]xy1=scosθssinθ0ssinθscosθ0txty1xy1
    相似变换是在刚性变换的基础上增加一个均匀放缩系数 s s s

    • 变换形式:旋转、平移、放缩
    • 自由度:四个自由度(一个旋转角 θ \theta θ,两个平移向量 t x , t y t_x,t_y tx,ty,一个放缩系数 s s s
    • 求解方式:需要两组点,四个方程求解
    • 不变量:角度、长度的比例和面积比例

    4. 线性变换(Linear Transformation)

    [ x ′ y ′ 1 ] = [ A 0 0 1 ] [ x y 1 ] = [ a 11 a 12 0 a 21 a 22 0 0 0 1 ] [ x y 1 ]

    [xy1]" role="presentation" style="position: relative;">[xy1]
    =
    [A001]" role="presentation" style="position: relative;">[A001]
    [xy1]" role="presentation" style="position: relative;">[xy1]
    =
    [a11a120a21a220001]" role="presentation" style="position: relative;">[a11a120a21a220001]
    [xy1]" role="presentation" style="position: relative;">[xy1]
    xy1=[A001]xy1=a11a210a12a220001xy1
    线性变换要求变换前后的直线仍是直线,且直线之间的比例保持不变。

    • 变换形式:旋转、放缩、反射(对称)、倾斜(错切)
    • 自由度:四个自由度(四个线性变换元素 a 11 , a 12 , a 21 , a 22 a_{11},a_{12},a_{21},a_{22} a11,a12,a21,a22
    • 求解方式:需要两组点,四个方程求解
    • 不变量:长度的比例和面积比例

    5. 仿射变换(Affine Transformation)

    [ x ′ y ′ 1 ] = [ A t 0 1 ] [ x y 1 ] = [ a 11 a 12 t x a 21 a 22 t y 0 0 1 ] [ x y 1 ]

    [xy1]" role="presentation" style="position: relative;">[xy1]
    =
    [At01]" role="presentation" style="position: relative;">[At01]
    [xy1]" role="presentation" style="position: relative;">[xy1]
    =
    [a11a12txa21a22ty001]" role="presentation" style="position: relative;">[a11a12txa21a22ty001]
    [xy1]" role="presentation" style="position: relative;">[xy1]
    xy1=[A0t1]xy1=a11a210a12a220txty1xy1
    仿射变换是线性变换和平移变换的组合,能够保持二维图形的“平直性”和“平行性”,但是角度会改变。 A A A表示仿射矩阵。

    “平直性”:变换后直线还是直线、圆弧还是圆弧
    “平行性”:平行线还是平行线,直线上点的位置顺序不变

    • 变换形式:旋转、平移、放缩、反射(对称)、倾斜(错切)
    • 自由度:六个自由度(四个仿射矩阵元素 a 11 , a 12 , a 21 , a 22 a_{11},a_{12},a_{21},a_{22} a11,a12,a21,a22,两个平移向量 t x , t y t_x,t_y tx,ty
    • 求解方式:需要三组点,六个方程求解
    • 不变量:平行线,平行线所分割线段长度的比例和面积的比例

    5. 透视变换(Perspective Transformation)

    [ x ′ y ′ 1 ] = [ A t v 1 ] [ x y z ] = [ a 11 a 12 t x a 21 a 22 t y v 1 v 2 1 ] [ x y z ]

    [xy1]" role="presentation" style="position: relative;">[xy1]
    =
    [Atv1]" role="presentation" style="position: relative;">[Atv1]
    [xyz]" role="presentation" style="position: relative;">[xyz]
    =
    [a11a12txa21a22tyv1v21]" role="presentation" style="position: relative;">[a11a12txa21a22tyv1v21]
    [xyz]" role="presentation" style="position: relative;">[xyz]
    xy1=[Avt1]xyz=a11a21v1a12a22v2txty1xyz
    透视变换也叫做射影变换(Projection Transformation),是将图像投影到一个新的视平面。其中 v v v用于产生图像透视变换。

    • 变换形式:旋转、平移、放缩、反射(对称)、倾斜(错切)、透视
    • 自由度:八个自由度(四个仿射矩阵元素 a 11 , a 12 , a 21 , a 22 a_{11},a_{12},a_{21},a_{22} a11,a12,a21,a22,两个平移向量 t x , t y t_x,t_y tx,ty、两个透视变换元素 v 1 , v 2 v_1,v_2 v1,v2
    • 求解方式:需要四组点,八个方程求解
    • 不变量:长度的交比
  • 相关阅读:
    Go 并发编程 - Goroutine 基础 (一)
    基于 SPI 的增强式插件框架设计
    【太阳能多电平逆变器】采用SPWM技术的太阳能供电多电平逆变器研究(simulink)
    有哪些比较流行的 C、C++和Java 的入门级项目?
    Python Scrapy中的POST请求发送和递归爬取
    2019年1+X 证书 Web 前端开发中级理论考试题目原题+答案——第五套
    笔记本电脑没有声音如何解决
    在路径上没有找到 “java.lang.Math8 “类
    CMake教程系列-01-最小配置示例
    springboot整合solr,solr设置登录用户密码连接
  • 原文地址:https://blog.csdn.net/qq_36104364/article/details/127929160