在matlab中通过getposition方法获得位置向量返回之间的关系



我编写了一个图像裁剪代码。我使用imrect在图像上画一个矩形,然后使用getposition方法获得它的位置。我写了一个使用图像像素坐标进行裁剪操作的函数。如何创建getposition方法返回的值与图像像素坐标之间的关系我的裁剪代码如下,

 [rnum cnum dim]=size(img);
    for h=1:dim
        for i=1:width
            for j=1:height
                negative(i,j,h)=img(xmin+i,ymin+j,h);
            end
        end
    end

宽度,高度,xmin,ymin必须从getposition方法

就像你说的,imrectgetPosition方法将返回:

 [xmin ymin width height] = getPosition( h );

前两个值是矩形的左上角,后两个值是矩形边长。如果你使用的是imrect,这些应该都是像素坐标。

要根据这些位置值裁剪图像,您将从(xmin, ymin)的左上角开始,然后转到(xmin+width-1, ymin+height-1)的右下角。

您不应该使用for循环来获取像素数据,您可以利用MATLAB的矢量化特性并执行以下操作:

CroppedImageMatrix = OriginalImageMatrix( [ymin : 1 : ymin+height-1],
                                          [xmin : 1 : xmin+width-1],
                                          : );

这将立即"裁剪"图像并将裁剪后的数据放入新的矩阵中。你可以这样做,因为你使用的是矩形裁剪,所有的指标都对应于创建一个矩形点阵。如果这不是矩形裁剪,那就更"棘手"了。

这对于彩色或灰度图像也是一样的,因为你不需要索引通道尺寸,你只需要从每个可用的通道中获取值。

注:- imrect文档页面:http://www.mathworks.com/help/images/ref/imrect.html

最新更新