主要内容

估计几何变换2D

从匹配点对估算2-D几何变换

描述

例子

tform.= estimateGeometricTransform2D (匹配点1匹配点2转换型通过从一个图像映射匹配点中的inliver来估计两个图像之间的2-D几何变换匹配点1从另一个图像的匹配点中的inliers匹配点2

tform.内部索引] = estimateGeometricTransform2D(___另外,返回一个向量,使用前面语法的输入参数将每个匹配点对指定为inlier或离群值。

tform.内部索引地位] = estimateGeometricTransform2D(___此外,还返回一个状态代码,指示函数是否可以估计转换,如果不能,则指示转换失败的原因。如果未指定地位如果条件不能产生结果,函数将返回一个错误。

___] = estimateGeometricTransform2D(___名称,价值除了前面语法中的任何参数组合外,还使用一个或多个名称-值对参数指定其他选项。例如,“信心”,99设置找到最大置换最大数量的置信度值99.

例子

全部收缩

读取图像并显示它。

原始= imread ('cameraman.tif'); imshow(原始)标题('基础图像'

扭曲并显示转换后的图像。

扭曲= Imresize(原版,0.7);扭曲= imrotate(扭曲,31);数字imshow(扭曲)标题('转换图像'

从原始图像和变换图像中检测和提取特征。

ptsOriginal = detectSURFFeatures(原始);ptsDistorted = detectSURFFeatures(扭曲);[featuresOriginal, validPtsOriginal] = extractFeatures(原始ptsOriginal);[featuresDistorted, validPtsDistorted] = extractFeatures(扭曲,ptsDistorted);

匹配和显示图像之间的显示功能。

index_pairs = matchFeatures (featuresOriginal featuresDistorted);matchedPtsOriginal = validPtsOriginal (index_pairs (: 1));matchedPtsDistorted = validPtsDistorted (index_pairs (:, 2));图showMatchedFeatures(原始的、扭曲、matchedPtsOriginal matchedPtsDistorted)标题('匹配的冲浪点与异常值');

排除异常值,估计转换矩阵,并显示结果。

[tform, inlierIdx] = estimateGeometricTransform2D (matchedPtsDistorted matchedPtsOriginal,'相似');inlierPtsDistorted = matchedPtsDistorted (inlierIdx:);inlierPtsOriginal = matchedPtsOriginal (inlierIdx:);图showMatchedFeatures(原始的、扭曲、inlierPtsOriginal inlierPtsDistorted)标题('匹配的inlier积分'

使用估计的转换从扭曲的图像中恢复并显示原始图像。

OutputView = IMREF2D(大小(原始));ir = imwarp(扭曲,tform,'OutputView',OutputView);数字imshow(IR);标题('恢复图像');

输入参数

全部收缩

第一张图像中的匹配点,指定为aKazepoints.对象拐点对象surfpoints.对象MSERRegions对象圆点对象BRISKPoints对象,或者-2矩阵,其中每行是一对[xy]坐标和为匹配点的个数。

来自第二个图像的匹配点,指定为aKazepoints.对象拐点对象surfpoints.对象MSERRegions对象圆点对象BRISKPoints对象,或者-2矩阵,其中每行是一对[xy]坐标和为匹配点的个数。

转换类型,指定为字符串。可以将变换类型设置为“刚性”'相似'仿射的,或“射影”.每个转换类型都需要最少数量的匹配点对来估计一个转换。通常可以通过使用更多匹配的点对来提高转换的准确性。该表显示了与每个转换类型相关联的对象类型,以及转换所需的匹配点对的最小数目。

转型类型 tform.目的 最小匹配点数
“刚性” rigid2d 2
'相似' affine2d 2
仿射的 affine2d 3.
“射影” Projective2d. 4

数据类型:字符串

名称值对参数

指定可选的逗号分离对名称,价值论点。的名字参数名和价值是对应的值。的名字必须出现在引号内。您可以以任何顺序指定多个名称和值对参数名称1,值1,…,名称,值

例子:'信心'99.设置找到最大置换最大数量的置信度值99.

最大随机试验数,指定为逗号分隔对,由“MaxNumTrials”一个正整数。该值指定函数寻找匹配点对的随机尝试次数。指定较高的值会导致函数执行额外的计算,从而增加查找嵌套的可能性。

数据类型:|双倍的|int8|int16|INT32.|INT64.|uint8|uint16|uint32|uint64

查找由逗号分隔的对组成的最大嵌套数的置信度'信心'以及在(0,100)范围内的正数值标量。增加这个值会导致函数执行额外的计算,这增加了找到更多嵌套的可能性。

数据类型:|双倍的|int8|int16|INT32.|INT64.|uint8|uint16|uint32|uint64

从指定的点到相应点的投影的最大距离指定为逗号分隔的对“MaxDistance”和一个正数标量。“MaxDistance”指定最大距离,以像素为单位,即点可能与其对应点的投影位置不同,以被视为Inlier。相应的投影基于估计的变换。

该函数检查从的转换匹配点1匹配点2然后,在应用变换后计算每对匹配点之间的距离。如果一对匹配点之间的距离大于“MaxDistance”值,则将该对视为该转换的离群值。如果距离小于“MaxDistance”,那对被认为是一个Inlier。

图像1和图像2中的匹配点示出。图像一个从图像2投影回图像1的图像显示。

数据类型:|双倍的|int8|int16|INT32.|INT64.|uint8|uint16|uint32|uint64

输出参数

全部收缩

几何变换,作为一个返回rigid2daffine2d,或Projective2d.对象

返回的几何变换矩阵映射匹配点1到内嵌匹配点2.该函数返回特定于转换类型的对象转换型输入参数。

转换型 tform.
“刚性” rigid2d
'相似' affine2d
仿射的 affine2d
“射影” Projective2d.

状态代码,返回为01,或2.状态代码指示功能是否可以估计转换,如果不是,则为为什么它失败。

价值 描述
0 无误
1 匹配点1匹配点2输入不包含足够的积分
2 没有足够的inliers找到了

如果您没有指定地位代码输出时,如果函数不能产生结果,则返回一个错误。

数据类型:INT32.

索引的嵌套,返回为逻辑向量,其中为点对的个数。每个元素包含一个逻辑1真的),表示相应的点对是Inlier或逻辑的0错误的),表示相应的点对是一个异常值。

算法

该函数使用M估计样本一致性(MSAC)算法排除异常值。MSAC算法是随机样本一致性(RANSAC)算法的一种变体。由于MSAC算法的随机性,两次运行的结果可能不相同。

工具书类

[1]哈特利,理查德和安德鲁·Zisserman。计算机视觉中的多视图几何.2 .剑桥,英国 ;纽约:剑桥大学出版社,2003。

[2] Torr,P.H.S.和A. Zisserman。“MLESAC:一种具有应用于估计图像几何的新的强大估算器。”计算机视觉与图像理解78,没有。1(2000年4月):138-56。https://do.org/10.1006/cviu.1999.0832。

扩展功能

在R2020B中介绍