这个例子展示了如何使用空间引用对象来理解图像配准中两幅图像之间的空间关系,并有效地显示它们。本例提供了其中一个图像,称为移动
图像,与另一幅图像对齐,称为固定
的形象。
读一下同一场景的两张稍微错位的图片。
固定= imread(“westconcordorthophoto.png”);移动= imread (“westconcordaerial.png”);
显示移动的(未注册的)图像。
iptsetpref (“ImshowAxesVisible”,“上”)imshow(移动)文本(大小(移动,2),大小(移动,1)+ 30,...“图片由mPower3提供/浮现”,...“字形大小”7“HorizontalAlignment”,'对');
加载包含预选控制点的mat文件固定
和移动
图像和创建一个几何变换适合的控制点,使用fitgeotrans
。
负载westconcordpointstform = fitgeotrans(移动点,固定点,“射影”);
执行必要的转换以注册移动
图像的固定
图像,使用imwarp
。本例使用可选的“FillValues”
参数指定填充值(白色),这将有助于显示固定
变换后的图像移动
图像,以检查注册。注意,几何变换的全部内容移动
图像是存在的,现在调用注册
。还要注意没有空行或空列。
注册= imwarp(移动,变形,“FillValues”,255);图中,imshow(注册);
覆盖变换后的图像,注册
,在固定
图像,使用imshowpair
。请注意这两个图像是如何注册错误的。这是因为imshowpair
假设图像都在默认的固有坐标系统中。接下来的步骤提供了两种方法来修复这个显示问题。
图,imshowpair(固定的,注册,“混合”);
约束变换后的图像,注册
,以相同数量的行和列,和相同的空间限制的固定
的形象。这可以确保注册的图像看起来是用固定图像注册的,但是将超出固定图像范围外推的已注册图像的区域将被丢弃。为此,请创建一个默认空间引用对象,该对象指定的大小和位置固定
形象,并使用imwarp的
“OutputView”
参数来创建受约束的重采样图像registered1
。在固定图像上显示已注册的图像。在这个视图中,图像似乎已经注册,但是并不是所有未注册的图像都是可见的。
Rfixed = imref2d(大小(固定));tform registered1 = imwarp(移动,“FillValues”,255,“OutputView”,Rfixed);图,imshowpair (registered1固定,“混合”);
作为替代,使用optionalimwarp
方法返回的输出空间引用对象,该对象指示完整转换后的图像在相同的默认固有坐标系统中的位置固定
的形象。在固定的图像上显示已注册的图像,注意现在是完整的注册
图像是可见的。
[registered2, Rregistered] = imwarp(移动,tform,“FillValues”,255);图,imshowpair(固定,Rfixed、registered2 Rregistered,“混合”);
清理。
iptsetpref (“ImshowAxesVisible”,“关闭”)