我有一个奇怪的问题,即图表在图表中重叠,但不在同一轴的图像中。
我确信我没有留在某处,否则它也会在图像本身重叠。
编辑:我想摆脱蓝色重叠的线条,我只想在那张照片中出现一条蓝线。
以下是一个示例:
(注意:黑色图像是RGB图像,但我没有绘制该图像,因此它意味着图形上从黑色到白色的过渡。)
alt text http://img541.imageshack.us/img541/3212/parabolaaaaa.png
代码的某些部分:
for K=1:23
hold on
I = fig.img.(['p' num2str(K)]);
bw=(I);
imshow(bw)
ss = bwlabel(bw);
s = regionprops(ss,'centroid');
centroids{K} = cat(1,s.Centroid);
hold(imgca,'on')
plot(imgca,centroids{K}(:,1), centroids{K}(:,2), 'r*'); hold on;
x=centroids{K}(:,1);
y=centroids{K}(:,2);
points=plot(x,y,'go',x,y,'rx');
hold on
axis on
axis fill
ccentroids = cat(1,centroids{:});
C1=ccentroids(:,1);
C2=ccentroids(:,2);
set(points,'XData',C1,'YData',C2);
.
.
.
p= polyfit(x2,y2,2)
parabola_x = linspace(-250,640,500);
parabola_polyval = polyval(p,parabola_x);
plot(parabola_x,parabola_polyval,'b-');
.
.
.
end
有什么想法吗?
答案 0 :(得分:2)
你有多条蓝线的原因是因为你使用以下几行为你的循环绘制一个:
plot(parabola_x,parabola_polyval,'b-');
事实上,你正在循环中一遍又一遍地绘制所有(图像,点和线)而不清除旧的。
您应该初始化for循环的外的绘图对象,并使用SET命令在循环内更新,而不是仅重新绘制它们。我在this answer中给出了一个问题的例子,你先前问我在哪里讨论使用句柄绘制对象来修改它们。对于您在此处提供的示例代码,您可以执行以下操作:
hImage = imshow(bw(fig.img.p1)); %# Initialize the image
hold on; %# Add to the existing plot
hStar = plot(nan,nan,'r*'); %# Initialize the red star
hPoints = plot(nan,nan,'go',... %# Initialize the other points
nan,nan,'rx');
hLine = plot(nan,nan,'b-'); %# Initialize the blue line
for K = 1:23
I = fig.img.(['p' num2str(K)]);
bw = (I);
set(hImage,'CData',bw); %# Update the image
ss = bwlabel(bw);
s = regionprops(ss,'centroid');
centroids{K} = cat(1,s.Centroid);
set(hStar,'XData',centroids{K}(:,1),... %# Update the red star
'YData',centroids{K}(:,2));
ccentroids = cat(1,centroids{:});
C1 = ccentroids(:,1);
C2 = ccentroids(:,2);
set(hPoints,'XData',C1,'YData',C2); %# Update the other points
...
p = polyfit(x2,y2,2);
parabola_x = linspace(-250,640,500);
parabola_polyval = polyval(p,parabola_x);
set(hLine,'XData',parabola_x,... %# Update the blue line
'YData',parabola_polyval);
...
end