主要内容

找到图像旋转和尺度使用自动化特性匹配

这个例子展示了如何自动确定一对图像之间的几何变换。当一个图像扭曲相对于另一个旋转和尺度,使用detectSURFFeaturesestimateGeometricTransform2D旋转角度和比例因子。你可以改变扭曲的图像恢复原始图像。

步骤1:读取图像

把一个图像到工作区中。

原始= imread (“cameraman.tif”);imshow(原始);文本(大小(原始的,2),大小(原始的,1)+ 15,图片由麻省理工学院的,“字形大小”7“HorizontalAlignment”,“对”);

第二步:调整和旋转图像

规模= 0.7;J = imresize(原始、规模);%尝试改变比例因子。θ= 30;扭曲= imrotate (J,θ);%试着变换角度,θ。图中,imshow(扭曲)

你可以通过改变实验规模和输入图像的旋转。然而,请注意,是有限度的数量可以改变前的规模特征检测器无法找到足够的特性。

第三步:找到图像之间匹配特性

在图像检测功能。

ptsOriginal = detectSURFFeatures(原始);ptsDistorted = detectSURFFeatures(扭曲);

提取特征描述符。

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

通过他们的描述符匹配特性。

indexPairs = matchFeatures (featuresOriginal featuresDistorted);

检索为每个图像对应点的位置。

matchedOriginal = validPtsOriginal (indexPairs (: 1));matchedDistorted = validPtsDistorted (indexPairs (:, 2));

显示的点匹配。

图;showMatchedFeatures(原始、扭曲、matchedOriginal matchedDistorted);标题(“推定地匹配点(包括异常值)”);

第四步:估计转换

找到一个使用统计变换对应匹配点对健壮M-estimator样品一致(MSAC)算法,它是一个变种的RANSAC算法。删除离群值而计算的变换矩阵。您可能会看到不同的结果转换计算,由于采用的随机抽样MSAC算法。

[tform, inlierIdx] = estimateGeometricTransform2D (matchedDistorted matchedOriginal,“相似”);inlierDistorted = matchedDistorted (inlierIdx:);inlierOriginal = matchedOriginal (inlierIdx:);

显示匹配点对用于转换的计算。

图;showMatchedFeatures(原始、扭曲、inlierOriginal inlierDistorted);标题(“匹配点(仅内围层)”);传奇(“ptsOriginal”,“ptsDistorted”);

第五步:求解规模和角度

使用几何变换、tform恢复的规模和角度。因为我们计算转换从扭曲的原始图像,我们需要计算它的逆矩阵恢复失真。

让sc = * cos(θ)让学生= * sin(θ)
然后,Tinv = (sc - s 0;党卫军sc 0;tx泰1]
tx和泰x和y翻译,分别。

计算逆矩阵变换矩阵。

Tinv = tform.invert.T;党卫军= Tinv (2, 1);sc = Tinv (1,1);scaleRecovered =√党卫军* ss + sc * sc) thetaRecovered =量化(ss, sc) * 180 /π
scaleRecovered = 30.2351单0.7010 thetaRecovered =单

恢复值应该匹配您的比例和角度值中选择第二步:调整和旋转图像

第六步:恢复原始图像

恢复原始图像通过改变扭曲的形象。

outputView = imref2d(大小(原始));恢复= imwarp (tform扭曲,“OutputView”,outputView);

比较恢复原始通过观察他们并排在一个蒙太奇。

图,imshowpair(原始的,恢复,“蒙太奇”)

恢复(右)图像质量不匹配原始(左)图像由于变形和恢复过程。特别是,图像缩小导致信息丢失。工件边缘将转换的精度有限。如果你发现更多的点第三步:找到图像之间匹配特性,转换会更准确。举个例子,我们可以使用一个角落探测器,detectFASTFeatures,补充的冲浪特征检测器发现斑点。图像内容和图像大小也影响检测的数量特征。