我想获得图像的四个角点或坐标。怎么能让我在MatLab中得到它们?
答案 0 :(得分:2)
如果您使用IMSHOW或IMAGE / 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;
您可以从中轻松获得角坐标。