接下来我们就来解释一下关于单应矩阵不太好理解的一些内容,
一、单应与其次坐标
一个单应矩阵是大小为的矩阵,他满足给定一个点, 把点变成一个新的点。 注意由于它们都是其次坐标,对映的图像上的两个点分别是和。
二、单应的自由度
如果给定一个单应,给它的元素乘上同一个数, 得到的单应和作用相同,因为新单元无非把齐次点,和对应的图像上的点相同。所以一个单应中只有8个自由元素,一般令右下角的那个元素来归一化。
三、求解单应
8个未知数,需要8个方程来求解,之所以四对点能求解,是因为一对点能够提供两个方程。我们假设有两个图像上的点和带到上面的推导里可以得到:
把这两个式子重新组织一下,得到等价的矩阵形式:
其中:
如果有四对不共线匹配点对,这个方程组就能够垒到8行,存在唯一解。如果有n对点,方程就垒到2n行,通过最小二乘法或者SVD分解就可以求解。
四、程序实现
由于点对中存在不少误匹配,往往需要通过RANSAC
提出outliers(错误匹配点对),对整个流程在OpenCV中已经集成为函数findhomography
,对输入点对坐标,输出单应和一个标记哪些点是正确匹配哪些点是正确匹配哪些点是错误匹配。
网友评论