【发布时间】:2014-10-27 09:31:06
【问题描述】:
我在 MATLAB 中绘制了一个等值面,例如:
对于我目前拥有的给定视图设置,我想从中提取轮廓。我期望的输出是这样的(由 GIMP 制作):
有没有办法以编程方式执行此操作,因此我不必在 GIMP 中手动执行此操作?
【问题讨论】:
标签: matlab
我在 MATLAB 中绘制了一个等值面,例如:
对于我目前拥有的给定视图设置,我想从中提取轮廓。我期望的输出是这样的(由 GIMP 制作):
有没有办法以编程方式执行此操作,因此我不必在 GIMP 中手动执行此操作?
【问题讨论】:
标签: matlab
这够好吗?边缘检测取自 bwboundaries 文档。
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
结果:
【讨论】: