Matlab - 来自两个不同来源的对齐图像的配准和裁剪

时间:2014-05-20 15:24:20

标签: image matlab image-processing

美好的一天,

在MATLAB中,我有多个不同样本的图像对。成对的图像由不同的相机拍摄。虽然我已经创建了可以应用于其中的变换(对于每个图像对),但是图像处于不同的方向。它们的边界包含相同的物理区域,但是一个图像具有较小的尺寸(即50x50对250x250)。另外,较小的图像不在较大图像内的一致位置。但是,较小的图像位于较大图像的边界内。

我想做的事情如下:将我预先确定的变换应用于较大的图像后,我想裁剪较大图像中与较小图像相同的部分。

我知道我可以在应用变换时指定XDataYData来输出变换图像的子集,但我不知道如何将其与较小图像的位置相关联。 (注意:变换是从控制点结构创建的)

如果有任何不清楚的地方,请告诉我。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:3)

看看你如何指定控制点来实现从一个图像到另一个图像的转换,我假设这是注册问题。因此,我还假设您正在使用imtransform将一个图像转换为另一个图像。

imtransform允许您指定两个额外的输出参数:

[out, xdata, ydata] = imtransform(in, tform);

此处,in将是较小的图像,tform将是您创建的用于注册较小图像以变形为较大图像的变换。您无需在此处指定XDataYData输入。 XDataYData的输入将绑定您要进行转换的位置。通常人们指定图像的尺寸以确保输出图像始终包含在图像的边界内。但是在你的情况下,我认为这不是必要的。

输出变量out是由tform对象指示的扭曲变换图像。另外两个输出变量xdataydata是坐标系统中的最小和最大xy值,它们将完全包含变换后的图像。因此,您可以使用这些变量来帮助您在较大的图像中找到精确的位置。如果您想进行比较,可以使用它们裁剪出较大的图像,看看转换的效果如何。

NB:有时,xdataydata的限制将超出您图片的尺寸。但是,因为您说较小的图像将始终包含在较大的图像中(我假设完全包含),那么这应该不是问题。此外,限制也可能是浮点数,因此如果您想使用这些坐标来裁剪最小跨越边界框,则需要小心。