【PCL】ICP(Iterative Closest Point)原理剖析——仿射变换(Affine Transformation)数学模型

本文主要是介绍【PCL】ICP(Iterative Closest Point)原理剖析——仿射变换(Affine Transformation)数学模型,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录&索引

  • 1 几何变换
  • 2 仿射变换
    • 2.1 平移
    • 2.2 缩放
    • 2.3 剪切
    • 2.4 旋转
    • 2.5 组合
  • 3 结论


包含相同内容的两幅图像可能由于成像角度、透视关系乃至镜头自身原因所造成的几何失真而呈现出截然不同的外观,这就给观测者或是图像识别程序带来了困扰。通过适当的几何变换可以最大程度地消除这些几何失真所产生的负面影响,有利于我们在后续的处理和识别工作中将注意力集中子图像内容本身,更确切地说是图像中的对象,而不是该对象的角度和位置等。因此,几何变换常常作为其他图像处理应用的预处理步骤, 是图像归一化的核心工作之一。

1 几何变换

变换模型是指根据待匹配图像与背景图像之间几何畸变的情况,所选择的能最佳拟合两幅图像之间变化的几何变换模型。可采用的变换模型有如下几种:刚性变换、仿射变换、透视(投影)变换和非线性变换等,如下图:

c 和 d 的区别可以看下图:

其中仿射变换就是我们本文要讨论的,而仿射变换中的平移、旋转则是刚性 ICP 的重点,本文将以二维仿射变换为例,阐述仿射变化的数学模型。


2 仿射变换

仿射变换(Affine Transformation)

Affine Transformation 是一种二维坐标到二维坐标之间的线性变换,保持二维图形的“平直性”(译注:straightness,即变换后直线还是直线不会打弯,圆弧还是圆弧)和“平行性”(译注:parallelness,其实是指保二维图形间的相对位置关系不变,平行线还是平行线,相交直线的交角不变)。

仿射变换可以通过一系列的原子变换的复合来实现,包括:平移(Translation)、缩放(Scale)、翻转(Flip)、旋转(Rotation)和剪切(Shear)

仿射变换(二维)可以用下面公式表示:

参考:图像变换的基本模型

矩阵乘法的规则如下所示:
在这里插入图片描述
具体到二维的仿射变换的计算如下:

2.1 平移

将每一点移动到 (x+tx, y+ty),变换矩阵为:
在这里插入图片描述
平移变换是一种“刚体变换”,rigid-body transformation,就是不会产生形变的理想物体。

效果:
在这里插入图片描述

2.2 缩放

将每一点的横坐标放大(缩小)至 sx 倍,纵坐标放大(缩小)至 sy 倍,变换矩阵为:
在这里插入图片描述
变换效果如下:
在这里插入图片描述

2.3 剪切

变换矩阵为:
在这里插入图片描述
相当于一个横向剪切与一个纵向剪切的复合:
在这里插入图片描述
效果:
在这里插入图片描述

2.4 旋转

目标图形围绕原点顺时针旋转 theta 弧度,变换矩阵为:
在这里插入图片描述
效果:
在这里插入图片描述

2.5 组合

旋转变换,目标图形以 (x, y) 为轴心顺时针旋转 theta 弧度,变换矩阵为:
在这里插入图片描述
相当于两次平移变换与一次原点旋转变换的复合:
在这里插入图片描述
先移动到中心节点,然后旋转,然后再移动回去。

这个转换矩阵也可以下面这样描述:


3 结论

常用转换矩阵如下:


这篇关于【PCL】ICP(Iterative Closest Point)原理剖析——仿射变换(Affine Transformation)数学模型的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/222011

相关文章

Python中使用uv创建环境及原理举例详解

《Python中使用uv创建环境及原理举例详解》uv是Astral团队开发的高性能Python工具,整合包管理、虚拟环境、Python版本控制等功能,:本文主要介绍Python中使用uv创建环境及... 目录一、uv工具简介核心特点:二、安装uv1. 通过pip安装2. 通过脚本安装验证安装:配置镜像源(可

Mysql的主从同步/复制的原理分析

《Mysql的主从同步/复制的原理分析》:本文主要介绍Mysql的主从同步/复制的原理分析,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录为什么要主从同步?mysql主从同步架构有哪些?Mysql主从复制的原理/整体流程级联复制架构为什么好?Mysql主从复制注意

Nacos注册中心和配置中心的底层原理全面解读

《Nacos注册中心和配置中心的底层原理全面解读》:本文主要介绍Nacos注册中心和配置中心的底层原理的全面解读,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录临时实例和永久实例为什么 Nacos 要将服务实例分为临时实例和永久实例?1.x 版本和2.x版本的区别

apache的commons-pool2原理与使用实践记录

《apache的commons-pool2原理与使用实践记录》ApacheCommonsPool2是一个高效的对象池化框架,通过复用昂贵资源(如数据库连接、线程、网络连接)优化系统性能,这篇文章主... 目录一、核心原理与组件二、使用步骤详解(以数据库连接池为例)三、高级配置与优化四、典型应用场景五、注意事

电脑系统Hosts文件原理和应用分享

《电脑系统Hosts文件原理和应用分享》Hosts是一个没有扩展名的系统文件,当用户在浏览器中输入一个需要登录的网址时,系统会首先自动从Hosts文件中寻找对应的IP地址,一旦找到,系统会立即打开对应... Hosts是一个没有扩展名的系统文件,可以用记事本等工具打开,其作用就是将一些常用的网址域名与其对应

Dubbo之SPI机制的实现原理和优势分析

《Dubbo之SPI机制的实现原理和优势分析》:本文主要介绍Dubbo之SPI机制的实现原理和优势,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Dubbo中SPI机制的实现原理和优势JDK 中的 SPI 机制解析Dubbo 中的 SPI 机制解析总结Dubbo中

Android与iOS设备MAC地址生成原理及Java实现详解

《Android与iOS设备MAC地址生成原理及Java实现详解》在无线网络通信中,MAC(MediaAccessControl)地址是设备的唯一网络标识符,本文主要介绍了Android与iOS设备M... 目录引言1. MAC地址基础1.1 MAC地址的组成1.2 MAC地址的分类2. android与I

Spring框架中@Lazy延迟加载原理和使用详解

《Spring框架中@Lazy延迟加载原理和使用详解》:本文主要介绍Spring框架中@Lazy延迟加载原理和使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、@Lazy延迟加载原理1.延迟加载原理1.1 @Lazy三种配置方法1.2 @Component

spring IOC的理解之原理和实现过程

《springIOC的理解之原理和实现过程》:本文主要介绍springIOC的理解之原理和实现过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、IoC 核心概念二、核心原理1. 容器架构2. 核心组件3. 工作流程三、关键实现机制1. Bean生命周期2.

Redis实现分布式锁全解析之从原理到实践过程

《Redis实现分布式锁全解析之从原理到实践过程》:本文主要介绍Redis实现分布式锁全解析之从原理到实践过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、背景介绍二、解决方案(一)使用 SETNX 命令(二)设置锁的过期时间(三)解决锁的误删问题(四)Re