使用控制点注册带有投影失真的图像
这个示例展示了如何通过选择两个图像的公共控制点并推断一个使控制点对齐的几何变换来注册两个图像。
读取图像
阅读图片westconcordorthophoto.png
进入工作区。这张图片是一张已经被登记在地面上的正射影像。
Ortho = imread(“westconcordorthophoto.png”);imshow(正的)文本(大小(邻位的,2),大小(邻位的,1)+ 15,...图片由马萨诸塞州环境事务执行办公室提供,...字形大小= 7,HorizontalAlignment =“正确”);
阅读图片westconcordaerial.png
进入工作区。这张照片是从飞机上拍摄的,相对于正射影像来说是扭曲的。由于未配准的图像是从远处拍摄的,地形相对平坦,很可能大部分失真是投影的。
未注册= imread(“westconcordaerial.png”);imshow(未注册)文本(大小(未注册,2),大小(未注册,1)+ 15,...“图片由mPower3/Emerge提供”,...字形大小= 7,HorizontalAlignment =“正确”);
选择控制点对
要以交互方式选择控制点,请使用控件打开控制点选择工具cpselect
函数。控制点是你在两张图片中都能找到的地标,比如十字路口或自然景观。选择至少四对控制点,以便cpselect
可以对控制点拟合一个射影变换。选择了相应的移动点和固定点后,关闭工具返回工作空间。
[mp,fp] = cpselect(unregistered,ortho,Wait=true);
推断几何变换
,求出能使运动点和不动点最佳对齐的射影变换的参数fitgeotform2d
函数。
T = fitgeotform2d(mp,fp,“射影”)
t = projtform2d属性:维度:2 A: [3×3 double]
转换未配准图像
若要将转换应用于未配准的航拍图像,请使用imwarp
函数。属性指定转换后图像的大小和位置与ortho图像的大小和位置匹配OutputView
名称-值参数。
Rfixed = imref2d(size(ortho));注册= imwarp(unregistered,t,OutputView=Rfixed);
通过将变换后的图像叠加在原始正射影像上,可以看到配准的结果。
imshowpair(邻位的注册,“混合”)
另请参阅
cpselect
|cpcorr
|cpstruct2pairs
|fitgeotrans