绘制轮廓的主轴和次轴

时间:2015-04-03 14:00:56

标签: matlab plot line

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

我做错了吗? 提前谢谢。

1 个答案:

答案 0 :(得分: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);