利用最小二乘法求解仿射变换参数

图像配准中的仿射变换细节

可以从百度文库下载原文:https://wenku.baidu.com/view/1faa10867cd184254a353540.html

仿射变换的定义

仿射变换(Affine Transformation或 Affine Map),是指在几何中,一个向量空间进行一次线性变换并接上一个平移,变换为另一个向量空间。

仿射变换可以由以下基本变换复合而成:平移(Translation)、缩放(Scale)、翻转(Flip)、旋转(Rotation)和错切(Shear),这些基本的变换如下图1表示:

图1

下图2中变换矩阵将原坐标(x, y)变换为新坐标(x‘, y‘)

图2

最小二乘法

最小二乘法(又称最小平方法)是一种数学优化技术。它通过最小化误差的平方和寻找数据的最佳函数匹配。

这是一个示例:某次实验得到了四个数据点 :(图3红色的点)。我们希望找出一条和这四个点最匹配的直线 ,即找出在某种“最佳情况”下能够大致符合如下超定线性方程组的

图3

最小二乘法采用的手段是尽量使得等号两边的方差最小,也就是找出这个函数的最小值:

如此就得到了一个只有两个未知数的方程组,很容易就可以解出:

仿射变换最小二乘法

景物在成像过程中产生的扭曲,会使图像的比例失调,可用仿射变换来校正各种畸变。而仿射变换的参数可以用最小二乘法进行估算。

设原图像为f(x,y),畸变后的图像为F(X‘,Y‘),要将F(X‘,Y‘)恢复为f(x,y),就是要找到(X‘,Y‘)坐标与(x,y)坐标的转换关系,这个转换关系称为坐标变换,表示为(x,y)=T(X‘,Y‘)。

景物在成像过程中产生的扭曲,会使图像的比例失调,可用仿射变换来校正各种畸变。先计算出坐标变换的系数,仿射变换的表达式为:R(x)=Px+Q, x=(x,y)是像素的平面位置,P是2*2的旋转矩阵,Q是2*1的平移向量,P、Q即为仿射变换参数,即:

x= AX‘ + BY‘ + C

y= DX‘ + EY‘ + F

因此,几何畸变的校正归根结底为坐标转换系数A,B,C,D,E,F的求解。

为了防止出现空像素,一般采用反向映射,由最小二乘法得(matlab):

vec1 = inv([X Y I]‘*[X Y I])*[X Y I]‘*U;

vec2 = inv([X Y I]‘*[X Y I])*[X Y I]‘*V;

其中vec1=[A B C]‘; vec2 =[D E F]‘; X Y U V I分别是x,y,X‘, Y‘, 1构成的向量。

最小二乘法估计就是估计原始坐标点与经过变换后的坐标点之间的关系,从通过这种关系进行矫正图像,大体步骤如下:

应用

对于处理图形畸变上,最小二乘仿射变换可以通过处理畸变的图形,还原图像原始形状。

另外,在测绘方面,最小二乘与仿射变换有着巨大的应用价值。文献7给出了一种不同坐标系统间转换的方法,在不同的地图坐标系中,使用最小二乘与仿射变换求取变换矩阵,完成坐标系间的转换。文献8则是研究地图数字化扫描的问题,使用最小二乘与仿射变换解决因分辨率、扫描设备带来的地图扫描不精确的问题。

参考资料

[1] 百度百科.仿射变换. http://baike.baidu.com/view/954621.htm 2013.09.17

[2] wiki百科.仿射变换.http://zh.wikipedia.org/wiki/仿射变换 2014.09.13

[3] ChenLee_1.仿射变换.http://blog.csdn.net/carson2005/article/details/7540936 2012.05.07

[4] wiki百科.最小二乘法. http://zh.wikipedia.org/wiki/最小二乘法 2014.11.11

[5] 百度百科.超定线性. http://baike.baidu.com/view/5113042.htm 2011.01.20

[6] fengbingchun.在图像变换中用最小二乘法求解仿射变换参. http://blog.csdn.net/fengbingchun/article/details/5969193 2010.10.27

[7] 孔建, 姚宜斌, 许双安. 整体最小二乘求取坐标转换参数[J]. 大地测量与地球动力学, 2010, (3).

[8] 岳东杰, 梅红. 地图扫描矢量化误差的最小二乘配置法处理研究[J]. 测绘科学, 2007, (2):51-53.

时间: 2024-08-05 11:13:18

利用最小二乘法求解仿射变换参数的相关文章

在图像变换中用最小二乘法求解仿射变换参数

设原图像为f(x,y),畸变后的图像为F(X',Y'),要将F(X',Y')恢复为f(x,y),就是要找到(X',Y')坐标与(x,y)坐标的转换关系,这个转换关系称为坐标变换,表示为(x,y)=T(X',Y'). 景物在成像过程中产生的扭曲,会使图像的比例失调,可用仿射变换来校正各种畸变.先计算出坐标变换的系数,仿射变换的表达式为:R(x)=Px+Q, x=(x,y)是像素的平面位置,P是2*2的旋转矩阵,Q是2*1的平移向量,P.Q即为仿射变换参数,即: x= AX' + BY' + C y

隐马尔科夫模型HMM(三)鲍姆-韦尔奇算法求解HMM参数

隐马尔科夫模型HMM(一)HMM模型 隐马尔科夫模型HMM(二)前向后向算法评估观察序列概率 隐马尔科夫模型HMM(三)鲍姆-韦尔奇算法求解HMM参数(TODO) 隐马尔科夫模型HMM(四)维特比算法解码隐藏状态序列(TODO) 在本篇我们会讨论HMM模型参数求解的问题,这个问题在HMM三个问题里算是最复杂的.在研究这个问题之前,建议先阅读这个系列的前两篇以熟悉HMM模型和HMM的前向后向算法,以及EM算法原理总结,这些在本篇里会用到.在李航的<统计学习方法>中,这个算法的讲解只考虑了单个观测

利用栈求解迷宫问题

利用栈求解迷宫问题 源代码: #include<stdio.h> #include<stdlib.h> #define M 8 #define N 8 #define MaxSize M*N typedef struct { int i;//当前方块的行号 int j;//当前方块的列号 int di; //di是下一个可走的相邻方块的方位号 }Box; typedef struct { Box data[MaxSize]; int top;      //栈顶指针 }StType

131. 利用脚本判断输入参数个数

利用脚本判断输入参数个数,具体题目我记不起来了. tar命令 压缩与解压缩 cpio 在Unix上的应用方法 tail滚屏浏览命令 ln 建立软连接 format的应用 ifconfig配置ip地址 cp文件夹 覆盖文件 crontab 的应用 对信息服务的理解 原文地址:https://blog.51cto.com/13823798/2408135

java与js利用隐藏标签传参数

在网页开发中,经常会用到服务器与前端的数据打交道. 刚接触web,对参数传递不是太清楚,自己也通过一个小的管理系统学习一下. 下面简单说说关于在jsp.html中参数的传递.其实就是利用了隐藏标签,type="hidden" //.java servlet传到网页   request.setAttribute("sex", sex); //.jsp页面  先判断该参数是否存在 //其实这段代码完全可以不写,不过为了练习,我们暂时先写上  if (request.ge

CreateThread传递多个参数的方法(利用结构体的参数指针)

很多朋友一直都在问CreateThread如何传递多个参数,CreateThread传递参数的方式是指针传递的,所以这里也可以利用指针来做!Demo 关键代码如下: type  TfrmTestThread = class(TForm)    Button1: TButton;    procedure Button1Click(Sender: TObject);  private    { Private declarations }  public    { Public declarati

使用excel结合线性规划求解Holt-Winters参数

其实上面这个是Holt-Winters无季节趋势模型, 上面的S(t)对应下面的a(t)——截距(平滑值) b(t)仍然对应b(t)——趋势,T对应k. 阿尔法对应阿尔法 伽马对应贝塔 因为(t)-hat是阿尔法和伽马的函数,所以TSS是阿尔法和伽马的函数. 为使方便理解和操作,该我们使用excel求解的. 原始数据如下: 设计表格结果如下: 也就是我们设定了初始值,S1=143,b1=- 0.65 把H2和H3看做值会变化的单元格,而H4是我们要通过变化H2和H3的取值使其取得最小值的单元格.

利用ParameterizedType获取泛型参数类型

//利用ParameterizedType获取java泛型的参数类型 public class Demo { public static void main(String[] args) { classTest(); interfaceTest(); } private static void classTest() { MySuperClass<Student, String> mySuperClass = new MySuperClass<Student, String>() 

【翻译】利用加速度求解位置的算法——三轴传感器

摘要 此文档描述并使用MMA7260QT三轴加速计和低功耗的9S08QG8八位单片机实现求解位置的算法 . 在今天先进的电子市场,有不少增加了许多特性和智能的多功能的产品.定位和游戏只是得益于获取到的位置信息的一部分市场.一个获取这种信息的可选方案是通过使用惯性传感器.从这些传感器中取得的信号需要进行一些处理,因为在加速度和位置之间没有一种直接转换. 为了获得位置,需要对加速度进行二次积分.本文介绍一种简单的算法实现加速度的二重积分.为了获取加速度的二重积分,一个简单的积分要进行两次,因为这样也