绘制轮廓的长轴和短轴
Draw Major Axis and Minor Axis of 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);
但目前我得到的是下面的图片
我做错了吗?
提前致谢。
对于短轴,方向是 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);
所以我有上面的等高线,我想绘制等高线的长轴和短轴线,我所做的就是这样
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);
但目前我得到的是下面的图片
我做错了吗? 提前致谢。
对于短轴,方向是 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);