You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MATLAB代码在细胞图像上绘制长短轴显示异常问题求助

问题原因与修复方案

核心错误原因

  • Matlab的imshow使用图像坐标系,原点在左上角,y轴向下为正,和常规笛卡尔坐标系y轴向上的方向完全相反,你之前使用的是常规笛卡尔坐标系的三角函数计算逻辑,和图像坐标系不匹配导致坐标偏移。
  • regionprops返回的Orientation参数单位为度,定义是长轴与x轴正方向(水平向右)的夹角,角度计算适配图像坐标系,直接套用常规坐标系的角度计算规则会出错。
  • 短轴的坐标计算逻辑没有和坐标系适配,符号规则混乱导致错位。

修正后的代码

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)
    % 长轴绘制:适配图像y轴向下的规则,y坐标计算用减号
    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);

    % 短轴绘制:长轴角度+90度即为短轴角度,统一使用相同的坐标系转换规则,避免符号错误
    xMinor = ctr(k,1) + [-1 1]*(minors(k)/2)*cosd(theta(k)+90);
    yMinor = ctr(k,2) - [-1 1]*(minors(k)/2)*sind(theta(k)+90);
    plot(xMinor,yMinor,'b','LineWidth',2);
end
hold off

相关参考图

原始细胞分割图像:
Original Segmentation
原代码错误输出效果:
Major and Minor Axes

内容的提问来源于stack exchange,提问作者stanatomist

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 21:45:05