Если вы строите изображение без указания диапазонов:
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;
, из которого вы снова можете легко получить свои угловые координаты.