主要内容

查找图像旋转和缩放

这个示例演示了如何对齐或注册两个因旋转和缩放变化而不同的图像。您可以使用fitgeotrans手动选取相应的点,求出旋转角度和比例因子。然后,您可以转换扭曲的图像,以恢复原始图像。

第一步:阅读图像

将图像读入工作区。

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

图中包含一个轴对象。axis对象包含两个类型为image, text的对象。

步骤2:调整大小和旋转图像

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

图中包含一个轴对象。axis对象包含一个image类型的对象。

步骤3:选择控制点

使用控制点选择工具选择至少两对控制点。

movepoints = [151.52 164.79;131.40 - 79.04);fixedPoints = [135.26 200.15;]170.30 - 79.30);

您可以使用这些预先选择的点运行示例的其余部分,但请尝试选择您自己的点,以查看结果如何变化。

cpselect(扭曲,原来,movingPoints定点);

保存控制点通过选择文件菜单,然后将点保存到工作区选择。保存点,覆盖变量movingPoints定点

步骤4:评估转换

对控制点进行非反射的相似变换。

tform = fitgeotrans (movingPoints定点,“nonreflectivesimilarity”);

当你完成了第5步和第6步之后,重复第4步到第6步,但是尝试使用仿射的而不是“NonreflectiveSimilarity”.会发生什么呢?结果和之前一样好吗“NonreflectiveSimilarity”

第五步:求出比例和角度

几何变换,tform,其中包含一个变换矩阵tform。T.由于您知道转换只包括旋转和缩放,恢复缩放和角度的数学比较简单。

sc 规模 因为 θ

党卫军 规模 θ

然后,Tinv =反转(tform),Tinv。T = sc - 党卫军 0 党卫军 sc 0 tx 1

在哪里tx分别为x和y的平移。

tformInv =反转(tform);Tinv = tformInv.T;党卫军= Tinv (2, 1);sc = Tinv (1,1);(ss*ss + sc*sc)
scale_recovered = 0.7000
theta_recovered =量化(ss, sc) * 180 /π
theta_recovered = 29.3741

的恢复值scale_recoveredtheta_recovered应该匹配你设置的值吗步骤2:调整大小和旋转图像

步骤6:恢复原始图像

通过变换恢复原始图像扭曲的的图像,使用几何变换tform以及你对空间参照的了解原始.的“OutputView”参数Name-value用于指定重采样输出图像的分辨率和网格大小。

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

比较恢复原始通过在蒙太奇里并排看他们。

蒙太奇({原始,恢复})

图中包含一个轴对象。axis对象包含一个image类型的对象。

恢复(右)图像质量不匹配原始(左)图像因失真而恢复的过程。特别是图像的缩小会导致信息的丢失。边缘周围的伪影是由于转换的精度有限。如果你选择更多的点步骤3:选择控制点,转换会更准确。

另请参阅

|||||

相关的话题