如何使用 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 保存空间参考的主要内容,如果未能解决你的问题,请参考以下文章