查找图像旋转和比例
此示例显示了如何对齐或注册两个因旋转和比例更改而不同的图像。您可以使用fitgeotrans
在手动选择相应点后找到旋转角度和比例因子。然后,您可以转换失真的图像以恢复原始图像。
步骤1:阅读图像
在工作区中阅读图像。
原始= imread('cameraman.tif');imshow(原始)文本(大小(原始,2),大小(原始,1)+15,...“马萨诸塞州技术研究所的图像”,,,,...'字体大小',7,'水平对齐',,,,'正确的')
步骤2:调整并旋转图像大小
比例= 0.7;扭曲= imresize(原始,比例);%尝试改变量表因子。theta = 30;扭曲= imrotate(扭曲,theta);%尝试改变角度,theta。imshow(扭曲)
步骤3:选择控制点
使用控制点选择工具至少选择两对控制点。
移动点= [151.52 164.79;131.40 79.04];固定点= [135.26 200.15;170.30 79.30];
您可以使用这些预选积分来运行其余的示例,但尝试选择自己的积分以查看结果的变化。
cpSelect(变形,原始,移动点,固定点);
通过选择文件菜单,然后将点保存到工作区选项。保存点,覆盖变量移动点
和固定点
。
步骤4:估计转换
将非反射相似性转换拟合到您的控制点。
tform = fitgeotrans(移动点,固定点,“非反射激素”);
完成步骤5和6后,重复步骤4至6,但请尝试使用“仿射”
代替“非反射激素”
。怎么了?结果与与之一样好“非反射激素”
?
步骤5:求解尺度和角度
几何变换,tform
,包含一个转换矩阵tform.T
。由于您知道转换仅包括旋转和缩放,因此数学相对简单,可以恢复尺度和角度。
让
让
然后,tinv =倒置(tform)
, 和tinv.t =
在哪里TX
和泰
分别是x和y翻译。
tforminv = invert(tform);tinv = tforminv.t;SS = TINV(2,1);sc = tinv(1,1);scale_recovered = sqrt(ss*ss + sc*sc)
scale_recovered = 0.7000
theta_recovered = atan2(ss,sc)*180/pi
theta_recovered = 29.3741
恢复的值scale_recovered
和theta_recovered
应该匹配您设置的值步骤2:调整并旋转图像大小。
步骤6:恢复原始图像
通过转换恢复原始图像扭曲
,使用几何变换,旋转和缩放图像tform
以及您对空间参考的了解原来的
。这'outputview'
名称值参数用于指定重采样输出图像的分辨率和网格大小。
roriginal = imref2d(size(onigral));恢复= imwarp(变形,tform,'outputview',Roriginal);
相比恢复
至原来的
通过在蒙太奇上并排看它们。
蒙太奇({原始,恢复})
这恢复
(右)图像质量与原来的
(左)图像由于失真和恢复过程。特别是,图像缩小会导致信息丢失。边缘周围的伪影是由于转换的准确性有限。如果您要选择更多积分步骤3:选择控制点,转换将更加准确。
也可以看看
精加工
|imrotate
|CPSELECT
|fitgeotrans
|IMWARP
|imref2d
相关话题
- 选择匹配控制点对
- 控制点选择步骤
- 使用自动化功能匹配查找图像旋转和比例(计算机视觉工具箱)