Я хотел бы построить больше кривых в одном окне, я хочу увидеть наложение этих кривых. Конкретно сюжет RHO_start для 3 кривых в одном окне. Я не знаю, как писать в моем коде. Вот он:Сюжет больше кривых в одном графике
clear,clc,close all
abc='abc'; cal=18/230;
Results=[];
data=[];
for i=1:3
im=imread(['vz_' num2str(j) abc(i) '.jpg']);
im=imresize(im,0.5);
%figure,imshow(im)
I=rgb2gray(im);
%figure,imshow(I);
J=imadjust(I);
%figure,imshow(J);
T=graythresh (J);
BW=im2bw(J,T);
%figure,imshow(BW);
BWI=1-BW;
%figure,imshow(BWI);
B=imclearborder(BWI);
O=bwareaopen(B,40000);
H=imfill(O,'holes');
L=bwlabel(H);
S=regionprops(L,'Area','Perimeter');
SE=[0 1 0;1 1 1;0 1 0];
%figure,imshow(H);
D=imdilate(H,SE);
E=edge(D,'canny');
%imshow(E);
bound=bwboundaries(E);
%figure,imshow(E);hold on;
for k=1
b=bound{k};
%plot(b(:,2),b(:,1),'r','LineWidth',1.5);
end
for x=1:numel(S)
%plot(S(x).Centroid(1),S(x).Centroid(2),'ro');
end
xx=b(:,2);
yy=b(:,1);
%figure,plot(xx,yy);axis equal;
XX=xx-mean(xx);
YY=yy-mean(yy);
THETA=XX;
RHO=YY;
%figure,plot(XX,YY);axis equal;
[THETA,RHO]=cart2pol(XX,YY);
%figure,polar(THETA,RHO);
%figure,plot(THETA);
%figure,plot(RHO);
RHO_smooth=smooth(RHO,30);
[Mc,Xc]=min(RHO_smooth);
*RHO_start* =[RHO_smooth(Xc:size(RHO_smooth));RHO_smooth(1:Xc)];
tc=1:length(RHO_start);
[~,locsc]=findpeaks(RHO_start,'MinPeakHeight',160,'MinPeakDistance',50);
figure;hold on;
plot(tc,RHO_start);
plot(locsc,RHO_start(locsc),'rv','MarkerFaceColor','r');
grid on;
title('Number of peaks');
xlabel('angle');
ylabel('radius');
data=[data; i (S.Area)*cal^2 (S.Perimeter)*cal];
end
data
As=mean(data(:,2));
Results=[Results; j As];
end
Проверьте мой ответ. Также обратите внимание, что вы не должны использовать 'i' как имя переменной, так как оно используется для сложных (мнимых) чисел. Теперь ваш код будет работать, но что-то еще может сломаться позже, когда у вас все еще есть 'i' в вашей рабочей области, и вы запускаете другой скрипт. – Cat