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

Matlab技术问询:如何在原始图像上绘制骨架端点?

如何将图像骨架的端点绘制在原始图像上(MATLAB实现)

嘿,我看了你这段MATLAB代码,问题出在坐标顺序上啦!咱们来一步步修正,把骨架端点准确画在原始图像上:

核心问题说明

你已经成功用bwmorph提取出了骨架端点,也用find拿到了坐标,但MATLAB里图像的坐标逻辑和plot函数的参数顺序是反的:

  • find(bw_endpoints)返回的i_end是行索引(对应图像的垂直方向,也就是y轴)
  • j_end是列索引(对应图像的水平方向,也就是x轴)
    而plot函数的参数要求是plot(x, y),所以你原来写的plot(i_end,j_end)把坐标搞反了,导致点的位置不对。

修正后的完整代码

clc; clear; close all;
% 读取原始二值图像
bw = imread('circles.png');
% 执行骨架化操作(两步thin可以优化骨架的精细度)
bw_skeleton = bwmorph(bw,'skel',Inf);
bw_skeleton = bwmorph(bw_skeleton,'thin',Inf);
% 提取骨架的端点
bw_endpoints = bwmorph(bw_skeleton, 'endpoints');
% 获取端点的坐标:i是行(y轴),j是列(x轴)
[i_end,j_end] = find(bw_endpoints);
% 在原始图像上叠加端点标记
figure
imshow(bw); 
hold on; % 保持当前图像窗口,方便叠加绘图
% 用红色实心圆圈标记端点,调整大小让标记更醒目
plot(j_end, i_end, 'ro', 'MarkerSize', 6, 'MarkerFaceColor', 'r');
hold off;
title('原始图像叠加骨架端点');

额外优化小贴士

  • 如果你不需要中间的bw2(移除孤立点的结果),可以直接删掉那部分代码,简化流程
  • 调整MarkerSize和MarkerFaceColor参数可以让端点标记更清晰,比如用红色实心圆比默认的空心圈更容易观察
  • 记得用hold on和hold off配合,避免后续绘图覆盖原始图像

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:49:44