代码不在图像上显示长轴和短轴
Code not displaying major and minor axes over image
我正在使用以下代码:
majors = cell_props.MajorAxisLength;
minors = cell_props.MinorAxisLength;
ctr = cell_props.Centroid;
theta = cell_props.Orientation;
imshow(cell_full)
hold on
for k = 1:length(measurements)
xMajor=ctr(k,1) + [-1 1]*(majors(k)/2)*cosd(theta(k));
yMajor=ctr(k,2) + [-1 1]*(majors(k)/2)*sind(theta(k));
plot(xMajor,yMajor,'r','LineWidth',2);
xMinor=ctr(k,1) + [-1 1]*(minors(k)/2)*sind(theta(k));
yMinor=ctr(k,2) - [-1 1]*(minors(k)/2)*cosd(theta(k));
plot(xMinor,yMinor,'b','LineWidth',2);
end
hold off
我的形象是:
当我尝试 运行 前面提到的代码时,出于某种原因它创建了这些行:
我意识到我可能在数学上做错了,但我不确定是什么。我试过将 theta 转换为弧度,切换线的次坐标和主坐标。似乎没有任何效果。
如有任何帮助,我们将不胜感激。
正如 Christoph 在他的评论中指出的那样,轴应该垂直反射。这意味着方向角的正方向是错误的。 theta(k)
前面的负号应该可以修复它。
xMajor=ctr(k,1) + [-1 1]*(majors(k)/2)*cosd(-theta(k));
我正在使用以下代码:
majors = cell_props.MajorAxisLength;
minors = cell_props.MinorAxisLength;
ctr = cell_props.Centroid;
theta = cell_props.Orientation;
imshow(cell_full)
hold on
for k = 1:length(measurements)
xMajor=ctr(k,1) + [-1 1]*(majors(k)/2)*cosd(theta(k));
yMajor=ctr(k,2) + [-1 1]*(majors(k)/2)*sind(theta(k));
plot(xMajor,yMajor,'r','LineWidth',2);
xMinor=ctr(k,1) + [-1 1]*(minors(k)/2)*sind(theta(k));
yMinor=ctr(k,2) - [-1 1]*(minors(k)/2)*cosd(theta(k));
plot(xMinor,yMinor,'b','LineWidth',2);
end
hold off
我的形象是:
当我尝试 运行 前面提到的代码时,出于某种原因它创建了这些行:
我意识到我可能在数学上做错了,但我不确定是什么。我试过将 theta 转换为弧度,切换线的次坐标和主坐标。似乎没有任何效果。
如有任何帮助,我们将不胜感激。
正如 Christoph 在他的评论中指出的那样,轴应该垂直反射。这意味着方向角的正方向是错误的。 theta(k)
前面的负号应该可以修复它。
xMajor=ctr(k,1) + [-1 1]*(majors(k)/2)*cosd(-theta(k));