1

我有一个心脏的 CT 扫描,我正在设计一个放在它上面的设备。因此,为某些属性获得正确的长度很重要。CT 扫描在 MeshLab 中进行分段,我的顾问给了我使用 PLY_IO 读取从 MeshLab 导出的层文件的代码。由此,我得到了表面地图。surf(Map.X, Map.Y,Map.Z) 输出 3D 模型。现在,我最理想的是能够通过图形窗口以图形方式选择点,并让 Matlab 告诉我这些点是什么,或者让我画一条测地线来确定它的长度。问题:有没有人知道我如何以简单的方式做到这一点?

最终,如果我能把它放在正确的方向上,那么只画图也可以。不过,理想情况下,我会选择起点和终点,然后 Matlab 会在表面上以图形方式显示测地线,我稍后可以找到它的长度。我愿意为此做一些编程,但希望你们可能已经知道了一些东西。

4

1 回答 1

1

在表面上交互式提取点的一种方法是使用datacursormode. 这是一个如何获得两分的简单示例:

surf(peaks);
dcm_obj = datacursormode(gcf);
set(dcm_obj,'DisplayStyle','datatip',...
    'SnapToDataVertex','off','Enable','on')
disp('Select first point then press any key')
pause                           
c_info{1} = getCursorInfo(dcm_obj);
disp('Select second point then press any key')
pause                           
c_info{2} = getCursorInfo(dcm_obj);

请注意,如果您(或用户)更改模式(例如通过单击旋转按钮)以选择点,则必须切换回数据光标模式以再次移动数据光标:

在此处输入图像描述

你现在应该有c_info{1}.positionc_info{2}.position是表面上的两个点。计算测地线是另一回事 - 看看文件交换,看看周围是否已经有任何东西可以为你已经拥有的数据类型完成工作。

于 2014-04-29T13:07:44.160 回答