Python计算机视觉编程第三章——图像到图像的映射

图像到图像的映射

(一)单应性变换

定义:单应性变换是将一个平面内的点映射到另一个平面内的二维投影变换。在这里,平面是指图像或者三维中的平面表面。单应性变换具有很强的实用性,比如图像配准、 图像纠正和纹理扭曲,以及创建全景图像。我们将频繁地使用单应性变换。本质上, 单应性变换 H,按照下面的方程映射二维中的点(齐次坐标意义下):
在这里插入图片描述

对于图像平面内的点,齐次坐标是个非常有用的表示方式。点的齐次坐标是依赖于其尺度定义的,所以 x=[x,y,w]=[αx,αy,αw]=[x/w,y/w,1] 都表示同一个二维点。因此,单应性矩阵H 也仅依赖尺度定义,所以,单应性矩阵具有 8 个独立的自由度。我们通常使用 w=1 来归 一化点,这样,点具有唯一的图像坐标 x 和 y。这个额外的坐标使得我们可以简单地使用一个矩阵来表示变换。

矩阵H会将一幅图像上的一个点的坐标a=(x,y,1)映射成另一幅图像上的点的坐标b=(x1,y1,1),也就是说,我们已知a和b,它们是在同一平面上。 则有下面的公式:

即:
在这里插入图片描述
得:
在这里插入图片描述
得:
在这里插入图片描述
在这里插入图片描述
对于方程:
在这里插入图片描述
可写成一个矩阵与一个向量相乘,即:
在这里插入图片描述
其中,
在这里插入图片描述
是一个9维的列向量,若令:
在这里插入图片描述

在这里插入图片描述
可记为
在这里插入图片描述
这里的
在这里插入图片描述
这只是1对点所得到的矩阵A,若有4对点,则得到的矩阵:
在这里插入图片描述
由于我们是采用齐次坐标(即(x,y,1))来表示平面上的点,所以存在一个非零的标量s,使得 b 1 b_1 b1=sH a T a^T aT与b=sH a T a^T aT都表示同一个点b。若令

在这里插入图片描述
则:
在这里插入图片描述
可以看出,其实H只有8个变量(8个自由度)。因此,只需要4个点对,然后通过解线性方程组就可以求得H。也可以多于4个点对。

假设有n≥4个点对,则得到的矩阵:
在这里插入图片描述

求解向量h,直接对A进行SVD分解,即
在这里插入图片描述
然后取V的最后一列出来作为求解h。因为矩阵A是行满秩,即只有一个自由度。具体实现时,先要得到两幅图,然后在两幅图之间找到4对点的坐标,由此得到矩阵A。

1.1 直接线性变换算法

DLT(Direct Linear Transformation,直接线性变换)是给定4个或者更多对应点对矩阵,来计算单应性矩阵 H 的算法。

我们首先讨论由给定2D到4D的四组点对应
在这里插入图片描述
确定H的直接线性算法。变换由方程
在这里插入图片描述
给出。注意这是一个齐次矢量方程;因此3维矢量 X i X_i Xi’和H X i X_i Xi不相等,它们有相同的方向,但在大小上可能相差一个非零因子。该等式可以用矢量叉乘:
在这里插入图片描述
表示,由该表示式可推出H的一个简单线性解。
如果将矩阵H的第j行记为 h j T h^jT hjT,那么:
在这里插入图片描述

在这里插入图片描述
则叉积可以显示地写成:
在这里插入图片描述
因为对j=1,2,3,
在这里插入图片描述
皆成立,这就给出关于H元素的三个方程,并可以写成下列形式:
在这里插入图片描述
这些方程都有 A i A_i Aih=0的形式,其中 A i A_i Ai是3x9的矩阵,h是由矩阵H的元素组成的9维矢量。
在这里插入图片描述
在这里插入图片描述
其中 h i h_i hi是h的第i个元素。

求解H:每组点对应给出关于H元素的两个独立的方程。给定四组这样的点对应,便获得方程组 Ah=0,其中A是由每组点对应产生的矩阵行 A i

  • 5
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值