主要内容

estimateGeometricTransform2D

(不推荐)估计二维几何变换从匹配点对

estimateGeometricTransform2D不推荐。使用estgeotform2d函数来代替。有关更多信息,请参见兼容性的考虑

描述

例子

tform= estimateGeometricTransform2D (matchedPoints1,matchedPoints2,transformType)估计二维几何变换将内围层映射两个图像之间的匹配点从一个形象matchedPoints1的内围层从另一个图像匹配点matchedPoints2

(tform,inlierIndex)= estimateGeometricTransform2D (___)另外返回一个向量指定每个匹配点对一个窗或局外人使用输入参数从之前的语法。

(tform,inlierIndex,状态)= 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)标题(“匹配窗点”)

恢复使用估计转换和显示的原始图像扭曲的形象。

outputView = imref2d(大小(原始));Ir = imwarp (tform扭曲,“OutputView”,outputView);图imshow (Ir);标题(恢复图像的);

输入参数

全部折叠

从第一个图像匹配点,指定为一个KAZEPoints对象,cornerPoints对象,SURFPoints对象,MSERRegions对象,ORBPoints对象,BRISKPoints对象,或一个2矩阵中每一行是一对的x,y坐标和是匹配点的数量。

从第二个图像匹配点,指定为一个KAZEPoints对象,cornerPoints对象,SURFPoints对象,MSERRegions对象,ORBPoints对象,BRISKPoints对象,或一个2矩阵中每一行是一对的x,y坐标和是匹配点的数量。

转换类型,指定为一个字符串。你可以设置转换类型“刚性”,“相似”,“仿射”,或“射影”。每个变换类型需要一个最小数量的配对的点来估计一个变换。你通常可以提高转换精度通过使用大量的配对的点。这个表显示了与每个转换关联类型的对象类型和最小数量的点转换需要的配对。

转换类型 tform对象 最小数量的配对的点
“刚性” rigid2d 2
“相似” affine2d 2
“仿射” affine2d 3
“射影” projective2d 4

数据类型:字符串

名称-值参数

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

R2021a之前,用逗号来分隔每一个名称和值,并附上的名字在报价。

例子:“信心”,99年设置信任值寻找内围层的最大数量99年

最大数量的随机试验,指定为逗号分隔组成的“MaxNumTrials”和一个正整数。这个值指定数量的随机函数使得试图找到匹配点对。指定一个更高的价值导致函数执行额外的计算,这就增加了发现窗的可能性。

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

信心找到内围层的最大数量,指定为逗号分隔组成的“信心”和积极的数字标量范围(0,100)。增加这个值会导致函数执行额外的计算,这就增加了寻找更多的内围层的可能性。

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

最大距离从一个点到相应的投影点,指定为逗号分隔组成的“MaxDistance”和积极的数字标量。“MaxDistance”指定的最大距离,以像素为单位,一个点可以不同的投影位置对应的点被认为是一个窗。相应的投影是基于估计变换。

检查转换功能matchedPoints1matchedPoints2,然后计算匹配点之间的距离在每一对应用转换。如果在一对匹配点之间的距离大于“MaxDistance”值,然后两人被认为是一个异类的转换。如果距离小于“MaxDistance”,然后两人被认为是一个窗。

一个匹配点显示在图片1和图片2。图像显示了一点从图像2预计回到图像1。

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

输出参数

全部折叠

几何变换,作为一个返回rigid2d,affine2d,或projective2d对象。

返回的几何变换矩阵内围层的地图matchedPoints1的窗matchedPoints2。该函数返回一个对象特定于指定的转换类型transformType输入参数。

transformType 几何变换对象
“刚性” rigid2d
“相似” affine2d
“仿射” affine2d
“射影” projective2d

内围层指数,作为一个返回1逻辑向量,是对数量的点。每个元素包含一个逻辑1(真正的),这表明对应点对是一个窗,或逻辑0(),表明对应点对是个例外。

数据类型:逻辑

状态码,返回0,1,或2。状态码表示的函数是否可以估计的转换,如果不是,为什么它失败了。

价值 描述
0 没有错误
1 matchedPoints1matchedPoints2输入不包含足够的点
2 没有足够的内围层发现

如果你不指定状态代码输出,函数返回一个错误如果不能产生的结果。

数据类型:int32

算法

函数使用M-estimator排除异常值样本共识(MSAC)算法。MSAC算法随机样本共识的一种变体(RANSAC)算法。结果可能不是相同的运行之间由于MSAC算法的随机性质。

引用

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

[2]托,P.H.S.,和A. Zisserman. "MLESAC: A New Robust Estimator with Application to Estimating Image Geometry."计算机视觉和图像理解。78年,没有。1(2000年4月):138 - 56。https://doi.org/10.1006/cviu.1999.0832。

扩展功能

版本历史

介绍了R2020b

全部展开