Причина, по которой у вас несколько синих линий, заключается в том, что вы строите по одной для каждого прохода в цикле с линией:
plot(parabola_x,parabola_polyval,'b-');
На самом деле, вы строите все (изображения, точки и линии) снова и снова в цикле, не стирая старые.
Вместо этого вы должны инициализировать объекты графика вне вашего цикла for и использовать команду SET , чтобы обновить их внутри цикла, вместо того, чтобы просто реплотировать их. Я привел один пример этого в этом ответе на вопрос, который вы ранее задавали, где я обсуждаю использование ручек для построения объектов для их изменения. Для примера кода, который вы даете здесь, вы можете сделать что-то вроде этого:
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