Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 基于Ransac的仿射模型_Matlab_Opencv_Machine Learning_Computer Vision_Affinetransform - Fatal编程技术网

Matlab 基于Ransac的仿射模型

Matlab 基于Ransac的仿射模型,matlab,opencv,machine-learning,computer-vision,affinetransform,Matlab,Opencv,Machine Learning,Computer Vision,Affinetransform,RANSAC用于寻找两幅图像之间的单应矩阵。为了计算矩阵,我们需要至少4个对应关系。齐次矩阵是描述任何透视变换的一般3*3矩阵。如果我们只给出3个对应,那么如何计算齐次矩阵?由于这两幅图像是仿射相关的,因此我们可以只使用3个对应来计算矩阵 首先查找有关该主题文献的可能是哈特利和齐瑟曼的《计算机视觉中的多视图几何》一书 从3个对应关系中,您可以找到大小为3x3的仿射单应A,该单应A使用以下等式将每个2D图像点p映射到每个点q(假设p和q是齐次形式的2D点): 要找到一个匹配三组点对的矩阵:{p1,

RANSAC用于寻找两幅图像之间的单应矩阵。为了计算矩阵,我们需要至少4个对应关系。齐次矩阵是描述任何透视变换的一般3*3矩阵。如果我们只给出3个对应,那么如何计算齐次矩阵?由于这两幅图像是仿射相关的,因此我们可以只使用3个对应来计算矩阵

首先查找有关该主题文献的可能是哈特利和齐瑟曼的《计算机视觉中的多视图几何》一书

从3个对应关系中,您可以找到大小为3x3的仿射单应A,该单应A使用以下等式将每个2D图像点p映射到每个点q(假设p和q是齐次形式的2D点):

要找到一个匹配三组点对的矩阵:{p1,p2,p3}->{q1,q2,q3},只需将点堆叠在两个矩阵p和Q中,两个矩阵的大小均为3x3

矩阵‘p’是指单元格p(1,i)和p(2,i)应包含第i点p的第一和第二坐标。矩阵Q使得单元Q(1,i)和Q(2,i)应包含第i点Q的第一和第二坐标

当i=1..3时,单元p(3,i)和Q(3,i)将包含1(对于齐次坐标)

形成这些矩阵后,您可以通过求解以下方程来找到:

A*P = Q
即,简单地说:

A = Q*P.inv()
然而,请注意,您正在寻找的是一个投影平面单应性,您需要至少4个点来计算它,并且使用不同的方法。你必须解这个方程:

H * p α q
其中,H是您要寻找的单应性,α表示比例性。要从四个对应中找到H,必须使用以下方法。然而,在OpenCV中,您可以使用来查找H

希望对您有所帮助。

与单应矩阵“透视变换”不同,仿射变换矩阵是具有6个自由度的2X3矩阵。因此,计算只需要3个点对应

只需在底部添加一行条目[01],即可将该矩阵转换为3X3齐次矩阵。原因是在仿射矩阵中没有预期变形(键控/啁啾)


如果您需要进一步解释,请告诉我

您的问题太广泛,可以通过阅读课本或论文来解决@康斯坦丁:你能给我推荐一些文献吗?“三维计算机视觉邀请书”或“计算机视觉的多视图几何”是很好的开始!在OpenCV中,有一个
getAffineTransform
函数(),用于计算与3点对应相关的3x3仿射变换的前两行。对于具有多个不可靠通信的RANSAC估计,您必须使用此函数自己进行实现。
H * p α q