2015-04-03 107 views
1

Contour画出轮廓的长轴和短轴

所以我有以上的轮廓,我想绘制长轴和轮廓短轴行,我做的是完全一样

s=regionprops(image,'Centroid','Orientation','MajorAxisLength','MinorAxisLength'); 

xMajor=s.Centroid(1) + [-1 1]*(s.MajorAxisLength/2)*cosd(s.Orientation); 
yMajor=s.Centroid(2) + [-1 1]*(s.MajorAxisLength/2)*sind(s.Orientation); 

xMinor=s.Centroid(1) + [-1 1]*(s.MinorAxisLength/2)*sind(s.Orientation); 
yMinor=s.Centroid(2) + [-1 1]*(s.MinorAxisLength/2)*cosd(s.Orientation); 

line(xMajor,yMajor); 
line(xMinor,yMinor); 

但我弄到低于

Result

图片我做错了? 在此先感谢。

回答

2

对于短轴,方向为s.Orientation+90,所以cosd(s.Orientation+90) = sind(s.Orientation)sind(s.Orientation+90) = -cosd(s.Orientation)

所以,你必须使用:

xMinor=s.Centroid(1) + [-1 1]*(s.MinorAxisLength/2)*sind(s.Orientation); 
yMinor=s.Centroid(2) - [-1 1]*(s.MinorAxisLength/2)*cosd(s.Orientation); 
+0

但是在regionprops的“定位”的输出为度? – 2015-04-03 14:14:59

+0

@AbdullahAlMubarok:你说得对,这不是问题,对不起。我编辑了我的答案。 – Ratbert 2015-04-03 14:26:02