主要内容

estgeotform2d

从匹配点对估计二维几何变换

    描述

    例子

    tform= estgeotform2d (matchedPoints1matchedPoints2transformType通过映射一个图像中匹配点的内线来估计两个图像之间的二维几何变换matchedPoints1到另一幅图像中匹配点的内线matchedPoints2

    tforminlierIndex] = estgeotform2d(___additional返回一个向量,使用前面语法中的输入参数将每个匹配的点对指定为内参值或离群值。

    tforminlierIndex状态] = estgeotform2d(___此外,返回一个状态代码,指示函数是否可以估计转换,如果不能,则说明为什么会失败。如果没有指定状态输出时,对于不能产生结果的条件,函数会返回一个错误。

    ___] = estgeotform2d(___名称=值使用一个或多个名称-值参数指定其他选项,以及使用以前语法中的任何参数组合。例如,信心= 99将寻找最大内嵌数的置信度值设置为99

    例子

    全部折叠

    读取图像并显示它。

    原文= imread(“cameraman.tif”);imshow(原始)标题(的“原始图像”

    图中包含一个轴对象。标题为Original Image的axes对象包含一个Image类型的对象。

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

    扭曲= imresize(原始,0.7);扭曲= imrotate(扭曲,31);imshow(扭曲)标题(“改变了形象”

    图中包含一个轴对象。标题为Transformed Image的axes对象包含一个Image类型的对象。

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

    ptsorigoriginal =检测特征(原始);ptsdistortion = detectsurfeatuatures(扭曲的);[featresoriginal, validptsorigoriginal] = extractFeatures(original, ptsorigoriginal);[featuresdistortion, validptsdistortion] = extractFeatures(扭曲,ptsdistortion);

    匹配和显示图像之间的特征。

    index_pairs = matchFeatures(featuresOriginal, featuresdistortion);matchedPtsOriginal = validPtsOriginal(index_pairs(:,1));matchedpts失真= validpts失真(index_pairs(:,2));showMatchedFeatures(原始、扭曲、matchedPtsOriginal matchedPtsDistorted)标题(“SURF点与离群值匹配”

    图中包含一个轴对象。带有标题Matched SURF Points with Outliers的axes对象包含4个类型为image、line的对象。

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

    [tform,inlierIdx] = estgeotform2d(matchedptsdistortion, matchedptsorigoriginal,“相似”);inlierpts失真= matchedpts失真(inlierIdx,:);inlierptsorigoriginal = matchedptsorigoriginal (inlierIdx,:);showMatchedFeatures(原始、扭曲、inlierPtsOriginal inlierPtsDistorted)标题(“匹配的Inlier点”

    图中包含一个轴对象。标题为Matched Inlier Points的axes对象包含4个类型为image、line的对象。

    使用估计的变换从失真图像中恢复并显示原始图像。

    outputView = imref2d(size(original));Ir =扭曲的,变形的,变形的“OutputView”, outputView);imshow (Ir)标题(“恢复图像”

    图中包含一个轴对象。标题为Recovered Image的axes对象包含一个Image类型的对象。

    输入参数

    全部折叠

    匹配第一个图像中的点,指定为的-by-2矩阵[数目]x y中描述的点特征对象之一点特征类型

    匹配第一个图像中的点,指定为的-by-2矩阵[数目]x y中描述的点特征对象之一点特征类型

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

    转换类型 tform对象 匹配点对的最小数目
    “刚性” rigidtform2d 2
    “相似” simtform2d 2
    “仿射” affinetform2d 3.
    “射影” projtform2d 4

    数据类型:字符串

    名称-值参数

    指定可选参数对为Name1 = Value1,…,以=家,在那里的名字参数名称和价值对应的值。名称-值参数必须出现在其他参数之后,但对的顺序无关紧要。

    例子:信心= 99将寻找最大内嵌数的置信度值设置为99

    随机试验的最大次数,指定为正整数。此值指定函数为查找匹配点对而进行的随机尝试次数。指定更高的值会导致函数执行额外的计算,这增加了查找内线的可能性。

    数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

    找到最大内嵌数的置信度,指定为范围(0,100)中的正数值标量。增加这个值会导致函数执行额外的计算,从而增加找到更多内线的可能性。

    数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

    从一点到相应点投影的最大距离,用正数值标量表示。MaxDistance指定一个点与其对应点的投影位置可以不同的最大距离(以像素为单位)。相应的投影是基于估计的变换。

    函数检查从的变换matchedPoints1matchedPoints2,然后应用变换后计算每对匹配点之间的距离。如果配对点之间的距离大于MaxDistance值时,则该对被认为是该转换的离群值。如果距离小于MaxDistance,那么这对被认为是内线。

    图1和图2中的匹配点。图1显示了从图2投影回图1的点。

    数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

    输出参数

    全部折叠

    几何变换,返回为arigidtform2dsimtform2daffinetform2d,或projtform2d对象。

    返回的几何变换矩阵将内线映射到matchedPoints1到里面去matchedPoints2.类指定的转换类型所指定的对象transformType输入参数。

    transformType 几何变换对象
    “刚性” rigidtform2d
    “相似” simtform2d
    “仿射” affinetform2d
    “射影” projtform2d

    返回的inlier索引-by-1逻辑向量,其中是点对的数目。每个元素包含一个逻辑1真正的),表示对应的点对是inlier,或逻辑的0),表示对应的点对为离群值。

    数据类型:逻辑

    状态代码,返回为01,或2.状态码表示函数是否可以估计转换,如果不能,说明为什么会失败。

    价值 描述
    0 没有错误
    1 matchedPoints1而且matchedPoints2输入没有包含足够的点数
    2 没有找到足够的内线

    如果没有指定状态代码输出时,如果函数不能产生结果,则返回错误。

    数据类型:int32

    算法

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

    参考文献

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

    [2]Torr, p.h.s., A. Zisserman。MLESAC:一种新的鲁棒估计器与应用于估计图像几何。计算机视觉与图像理解“,”78年,没有。1 (April 2000): 138-56。https://doi.org/10.1006/cviu.1999.0832。

    扩展功能

    版本历史

    R2022b中引入

    全部展开