所以我有上面的轮廓,我想绘制轮廓的主轴和次轴线,我做的就是这样
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);
但到目前为止我得到的是下面的图片
我做错了吗? 提前谢谢。
答案 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);