如何在matlab中获取图像角点的坐标

时间:2010-12-15 16:32:21

标签: matlab

我想获得图像的四个角点或坐标。怎么能让我在MatLab中得到它们?

1 个答案:

答案 0 :(得分:2)

如果您使用IMSHOWIMAGE / IMAGESC在轴上绘制图像时指的是图像边角的坐标,那么您可以通过以下方式找到它们:

  • 如果您在不指定范围的情况下绘制图像:

    image(img);
    imshow(img);
    

    然后在轴上绘制img,其中像素水平1:size(img,2)水平,垂直1:size(img,1)。由于这些值表示像素中心,并且像素大小为1,因此图像在每个方向上延伸超过上述范围的半个像素。因此,图像的范围是:

    xmin = 0.5;
    xmax = size(img,2)+0.5;
    ymin = 0.5;
    ymax = size(img,1)+0.5;
    

    您可以从中获得角点坐标[xmin ymin][xmin ymax][xmax ymin][xmax ymax]

  • 如果指定绘图范围,例如:

    image([x1 x2],[y1 y2],img);
    

    您可能认为您指定的这些限制是绘制图像的,但它们实际上是像素中心的范围,因此实际范围也是如此所绘制图像的每个方向上的半个像素。每个方向的像素大小可以如下计算:

    dx = abs(x2-x1)/size(img,2);
    dy = abs(y2-y1)/size(img,1);
    

    因此,图像的范围是:

    xmin = min(x1,x2)-0.5*dx;
    xmax = max(x1,x2)+0.5*dx;
    ymin = min(y1,y2)-0.5*dy;
    ymax = max(y1,y2)+0.5*dy;
    

    您可以从中轻松获得角坐标。