MATLAB等值面轮廓提取

MATLAB等值面轮廓提取,matlab,Matlab,我在MATLAB中绘制了一个等值面,例如: 我想从中提取轮廓,对于我目前拥有的给定视图设置。我期望的输出是由GIMP生成的: 有没有办法通过编程实现这一点,这样我就不必在GIMP中手动实现了?这足够好吗?边缘检测取自文档 clear, close all [x y z v] = flow; figure(1) p = patch(isosurface(x, y, z, v, -3)); set(p, 'FaceColor', 'red', 'EdgeColor', 'none'); daspec

我在MATLAB中绘制了一个等值面,例如:

我想从中提取轮廓,对于我目前拥有的给定视图设置。我期望的输出是由GIMP生成的:


有没有办法通过编程实现这一点,这样我就不必在GIMP中手动实现了?

这足够好吗?边缘检测取自文档

clear, close all
[x y z v] = flow;
figure(1)
p = patch(isosurface(x, y, z, v, -3));
set(p, 'FaceColor', 'red', 'EdgeColor', 'none');
daspect([1 1 1])
view(3)
grid off
axis off
print -dbmp test

I=imread('test.bmp');
G = im2bw(I, graythresh(I));
[B,L] = bwboundaries(~G,'noholes');

for k = 1:length(B)
    boundary = B{k};
    plot(boundary(:,2), -boundary(:,1), 'k', 'LineWidth', 2)
    hold on
end
hold off
其结果是:


这真是太好了,除了一次只能在一个视角下工作-我需要重新运行保存图像过程来平移3d图像。你会的。如果您可以自动化平移,那么您也可以轻松地自动化其余过程。如果你只是用鼠标拖动,它将不起作用,但我想不出任何东西可以帮助你这么做,除了当你释放鼠标按钮时可能会执行的某种回调函数。