图像上的绘图出现偏移

Plot over image appears offset

我正在尝试在导入的图像上画一个圆和一条直线 a=b。情节出现了,但我 运行 遇到了两个问题:

clear;close all;
I0 = imread('temp.png');
I1 = im2double(I0);
I = imresize(I1,[320 320]);
a=0:1:320;
b = a;

r=320/2;
xc=0; yc=0;
th = linspace( 0, 2*pi, 100);
x = r * cos(th) + xc;
y = r * sin(th) + yc;

figure,imshow(I)
hold on
plot(b,a,'linewidth',3)
hold on
plot(x,y,'white','linewidth',3)

我可以通过绘制 (b,-a,'linewidth',3) 来修正直线的斜率,但直线不会绘制在图像上。

如有任何帮助,我们将不胜感激。是的,这是一个作业,但它根本不是最终答案:)

  1. 点(0,0)不是图像的中心。由于您使用 imshow 显示图像 I,因此轴的大小为 I,在您的情况下为 0320。所以你需要根据它来选择圆心。请参阅下面代码中带有注释 %1 的修改行。

  2. imshow 设置轴 ij mode,用于图像,反转垂直轴。要正常绘制线条,您可以设置 xy 模式。请参阅代码中带有注释 %2 的添加行。

clear;close all;
I0 = imread('temp.png');
I1 = im2double(I0);
I = imresize(I1,[320 420]);
a=0:1:320;
b = a;

r=320/2;
xc = size(I, 2)/2; yc = size(I, 1)/2;    %1
th = linspace( 0, 2*pi, 100);
x = r * cos(th) + xc;
y = r * sin(th) + yc;

figure,imshow(I)
hold on
axis xy                                  %2
plot(b,a,'r','linewidth',3)
hold on
plot(x,y,'white','linewidth',3)