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

Posted

技术标签:

【中文标题】如何使用 Imcrop 和 Matlab 保存空间参考【英文标题】:How to preserve spatial reference using Imcrop with Matlab 【发布时间】:2016-08-06 20:35:29 【问题描述】:

我有一个图像和该图像的空间参考对象。 现在我想根据空间参考对象通过坐标裁剪图像。 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】:

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

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

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

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

[(755 - width) (488 - height) width height]

【讨论】:

以上是关于如何使用 Imcrop 和 Matlab 保存空间参考的主要内容,如果未能解决你的问题,请参考以下文章

带有特定掩码的Matlab imcrop

请问,matlab中,如何将一幅从原图截取出来的一部分,还保存为原图的格式呢?

如何把matlab中的变量输入到工作空间

在MATLAB中的另一个图像中插入图像区域[关闭]

matlAB如何保存变量

Matlab:将图像序列写入文件夹