من کدتو دیدم کاملا درست بود. الآن xx,yy نرمالیزه شدند. من چک کردم میانگین صفر بودند یعنی خیلی نزدیک به صفر بود 12-^10
بعد یه پلات به کد اضافه کردم نتیجه رو ببینی. کدت کاملا صحیح بود من هیچ تغییری ندادم
می تونی با v که جهتو نشون میده و d که یه ضریبی از مقدار طولشونه اون خطها رو رسم کنی. نتیجه خوبه
clear all
Image = imread('image.jpg');
Image=imresize(Image,0.25);
dImage = im2double(Image);
logicalImage = im2bw(dImage, 0.75);
BW=imcomplement(logicalImage);
BW = bwareaopen(BW,30);
BW2 = bwmorph(BW,'remove'); % get the contour
[X Y]=find(BW2==1);
xc=mean(X);
yc=mean(Y);
xx=X-xc;
yy=Y-yc;
r=[xx yy];
co=cov(r);
[v d]=eig(co);
length_diam1=2*sqrt(d(1,1))*v(:,1); % the length of diameter
length_diam2=2*sqrt(d(2,2))*v(:,2); % the length of diameter
figure;
plot(yy,xx,'.b');
hold on;plot([0,length_diam1(1)],[0,length_diam1(2)],'r');
hold on;plot([0,length_diam2(1)],[0,length_diam2(2)],'r');
|