相似、仿射、射影变换区别

2023-05-16

 

刚性变换:只有物体的位置(平移变换)和朝向(旋转变换)发生改变,而形状不变,得到的变换称为刚性变换。

下面分别从等距变换,相似变换,仿射变换,射影变换几个部分分别介绍:

1、等距变换(欧式变换)

它相当于是平移变换(t)和旋转变换(R)的复合,等距变换前后长度,面积,线线之间的角度都不变。

 自由度 6 (3+3)

2、相似变换

等距变换和均匀缩放(S)的一个复合,类似相似三角形,体积比不变。

自由度 7 (6+1)

3、仿射变换(正交投影)

一个平移变换(t)和一个非均匀变换(A)的复合,A是可逆矩阵,并不要求是正交矩阵。

仿射变换的不变量是:平行线,平行线的长度的比例,面积的比例

自由度12 (9+3)

可以看出,仿射变换就是对图像的旋转+平移+缩放+切变(shear),相比前两种变换图像的形状发生了改变,但是原图中的平行线仍然保持平行。

4、射影变换(透视变换)

当图像中的点的齐次坐标的一般非奇异线性变换

射影变换的不变量是:重合关系、长度的交比

自由度 15 (整个矩阵除以v右下角为1)

最后一行为0 0 0 1时就是仿射变换

可以看出,射影变换就是对图像的旋转+平移+缩放+切变+射影,相比前三种变换图像的形变更为自由,原图中的平行线经过变换之后已经不在平行,而可能相交于一点,射影变换就是把理想点(平行直线在无穷远处相交)变换到图像上

 

总结仿射变换位于射影变换和相似变换之间,仿射变换推广相似变换使得夹角不再保持不变,造成物体形状在变换后产生歪斜,他在变换中,直线只与方向有关,与位置无关,不会像射影变换那样,越远越小。。。。。。

仿真代码

clear;close all;clc
I=imread('1.png');
figure(1),subplot(1,5,1);imshow(I);title("原图");
[w,h]=size(I);
theta=pi/4;
t=[100,100];
s=0.2;
% 等距变换
H_e=projective2d([cos(theta) -sin(theta) t(1);
              sin(theta)  cos(theta) t(2);
                  0           0       1]');
newimg=imwarp(I,H_e);
subplot(1,5,2);imshow(newimg);title("等距变换");
% 相似变换
H_s=projective2d([s*cos(theta) -s*sin(theta) t(1);
                  s*sin(theta)  s*cos(theta) t(2);
                     0           0       1]');
newimg=imwarp(I,H_s);
subplot(1,5,3);imshow(newimg);title("相似变换");
% 仿射变换
H_a=projective2d([1 0.5 t(1);
                 0 0.5 t(2);
                 0 0  1]');
newimg=imwarp(I,H_a);
subplot(1,5,4);imshow(newimg);title("仿射变换");
% 射影变换
H_P=projective2d([0.765,-0.122,-0.0002;
                 -0.174,0.916,9.050e-05;
                  105.018,123.780,1]);
newimg=imwarp(I,H_P);
subplot(1,5,5);imshow(newimg);title("射影变换");


 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

相似、仿射、射影变换区别 的相关文章

随机推荐

  • 智能车摄像头算法——圆环元素

    入环 1 入环的函数 xff08 1 xff09 搜上下边线 xff08 2 xff09 找凸起的弧 xff08 3 xff09 两点之间补线 xff08 4 xff09 判断上线是否单调 2 找圆环3 补线入环出环 1 入环的函数 xff
  • ROS的代价地图与AMCL定位原理

    地图服务与AMCL定位 costmap xff08 代价地图 xff09 AMCL定位 xff08 自适应蒙特卡罗定位 xff09 costmap xff08 代价地图 xff09 1 地图文件格式 xff1a 除了pgm xff08 便携
  • ROS路径规划算法

    ROS路径规划算法 全局路径规划Dijkstra算法A 算法 局部路径规划DWA算法TEB算法 全局路径规划 提供Dijkstra和A算法 xff0c 默认使用Dijkstra Dijkstra是把从出发点到终点的整个栅格地图上的所有的点
  • STM32常用功能配置

    STM32基本代码 设置外部中断定时器中断定时器产生pwmAD多通道转换DMA 43 AD扫描多通道转换iic协议读取数据SPI协议读取数据 设置外部中断 中断优先级分组 外部中断 AFIO作用 注意 xff1a 1 相同的Pin不能同时触
  • Ogre-渐变背景色(gradient background)的实现

    转载自 xff1a http blog csdn net hefee article details 6287341 背景色在ogre里面是通过ViewPort类中的setBackgroundColour xff08 xff09 这个成员函
  • Qt::WindowFlags

    查了些资料 xff0c 整理了一下 xff0c 以备查询 枚举类型 Qt WindowFlags低位的一个字节用于定义窗口部件的窗口类型 Qt WindowFlags的高位字节定义了窗口提示 xff0c 窗口提示能够进行位或操作 xff0c
  • java学习记录8

    什么是File 文件夹和文件 xff1a 文件夹是用来组织和管理磁盘文件的一种数据结构 文件是在电脑中 xff0c 以实现某种功能或某个软件的部分功能为目的定义的一个单位 xff0c 文件是由文件名和图标组成 xff0c 一种类型的文件具有
  • 保护模式编程之(一)——分段机制与GDT/LDT

    概述 xff1a 若想理解操作系统程序中的启动相关的部分 xff0c 必须要理解保护模式下的编程 xff0c 而分段机制是保护模式编程下的基础 另外 xff0c 由于实模式与保护模式的不同 xff0c 对保护模式下的分段机制更需要注意 同时
  • C++ 网络编程

    socket通信 xff1a socket 创建TCP套接字 bind 将套接字绑定到本地地址端口上 listen 监听端口 connect accept 接受用户请求 xff0c 返回对应此连接的新套接字 read write close
  • ROS学习(2)——rviz与gazebo问题记录

    ROS学习 xff08 2 xff09 rviz与gazebo问题记录 继续按照教程学习 xff0c 踩了很多坑 1 工作环境配置问题 实践6 2 4在rviz中显示模型时 xff0c 运行launch文件出现如下报错 原因 xff1a 出
  • VINS-Mono 代码详细解读——基础储备:在线Cam到IMU的外参标定 InitialEXRotation类

    本讲还是为了estimator类中最主要的函数processImage xff08 xff09 做知识储备 前面两讲知识储备主要讲了IMU预积分相关的integrationBase类以及图像特征点管理器feature manager cpp
  • VINS-Mono 代码详细解读——回环检测与重定位、四自由度位姿图优化

    本文主要介绍VINS的闭环检测重定位与位姿图优化部分 xff0c 作为系列文章的最后一节 回环检测的关键就是如何有效检测出相机曾经经过同一个地方 xff0c 这样可以避免较大的累积误差 xff0c 使得当前帧和之前的某一帧迅速建立约束 xf
  • VS Code创建、调试ROS项目

    前言 xff1a 在vs code下配置ROS项目开发的环境 包括catkin创建编译工作空间 xff0c 创建ROS项目 xff0c 调试ROS节点 一 创建工作空间 首先创建一个cMake工作空间 xff0c 用到了catkin mak
  • 《wiki官网教程》2 编写简单的服务器service和客户端 client(C++)

    服务 xff08 services xff09 是节点之间通讯的另一种方式 服务允许节点发送请求 xff08 request xff09 并获得一个响应 xff08 response xff09 之前讲的是两个节点如果要通信需要经过话题to
  • 进程和线程主要区别与定义

    抽象理解 直接上图 xff0c CPU是工厂 电力资源是cpu 时间片 进程是车间 线程是车间工人 操作系统的资源分配与调度逻辑 以多进程形式 xff0c 允许多个任务同时运行 xff1b 以多线程形式 xff0c 允许单个任务分成不同的部
  • Ogre场景中管道透明之后为黑色的问题

    depth write 设置此渲染通路的深度缓冲写入的状态是打开状态还是关闭状态 格式 depth write lt on off gt 如果深度缓冲写入处于打开状态 xff0c 无论何时一个像素想要写入画面缓冲 xff0c 深度缓冲都会更
  • 移动机器人定位方法概述

    引言 自主移动机器人导航过程需要回答三个问题 xff1a 我在哪里 xff1f 我要去哪儿 xff1f 和 我怎样到达那里 xff1f 定位就是要回答第一个问题 xff0c 确切的 xff0c 移动机器人定位就是确定机器人在其运动环境中的世
  • 运动图像目标检测与跟踪简述

    运动图像跟踪问题分为目标检测与目标跟踪两部分 一 目标检测 目标检测即为从序列图像中将变化区域从背景图像中提取出来 xff0c 依照目标与相机之间的关系可以分为静态背景下运动检测与动态背景下运动检测 1 静态背景 指的是相机在监视过程中不发
  • 遗传算法 差分进化算法 粒子群优化算法区别

    一 遗传算法 遗传算法 GA 作为一种经典的进化算法 xff0c 自 Holland提出之后在国际上已经形成了一个比较活跃的研究领域 人们对 GA 进行了大量的研究 xff0c 提出了各种改进算法用于提高算法的收敛速度和精确性 遗传算法采用
  • 相似、仿射、射影变换区别

    刚性变换 xff1a 只有物体的位置 平移变换 和朝向 旋转变换 发生改变 xff0c 而形状不变 xff0c 得到的变换称为刚性变换 下面分别从等距变换 xff0c 相似变换 xff0c 仿射变换 xff0c 射影变换几个部分分别介绍 x