如何使用Imcrop和Matlab保留空间参考

时间:2016-08-06 20:35:30

标签: matlab image-processing

我有一个图像和该图像的空间参考对象。 现在我想根据空间参考对象按坐标裁剪图像。 函数Imcrop只能根据像素坐标进行裁剪。有没有办法根据世界坐标进行裁剪? 我试图使用Imcrop并计算新的参考对象,但我在坐标转换中迷失了。

扭曲图像后的参考对象示例。

imref2d with properties:

       XWorldLimits: [-775.4357 555.5643]
       YWorldLimits: [-488.3694 523.6306]
          ImageSize: [1012 1331]
PixelExtentInWorldX: 1
PixelExtentInWorldY: 1
ImageExtentInWorldX: 1331
ImageExtentInWorldY: 1012
XIntrinsicLimits: [0.5000 1.3315e+03]
YIntrinsicLimits: [0.5000 1.0125e+03]

我真正想做的是裁剪图像,使点(0,0)成为裁剪图像的中心。

1 个答案:

答案 0 :(得分:1)

根据您的空间参考,每个像素在世界坐标中的尺寸为1 x 1。因此,如果您想在世界坐标(Xw,Yw)和图片坐标(Xi,Yi)之间进行转换,请执行以下操作:

Xi = round(abs(-775.4357 - Xw))

Yi = round(abs(-488.3694 - Yw))

因此,如果您想要裁剪图像,使得真实世界坐标(0,0)将成为新裁剪图像的中心,并且新图像的大小将是高度宽度,而不是{{1将是

imcrop