0
我用isosurface()渲染體積數據,但現在我想將它們渲染爲點來加速速度。從Matlab中的體積數據生成scatter3()的參數
我擁有的數據是一個3D數組,代表一個3D對象。如果一個體素屬於這個對象,那麼它的值是1,否則它是零。
爲了使用scatter3(),我需要生成那些具有價值1體素座標我目前使用下面的代碼來完成這項工作:
function [ x, y, z ] = scatter3_assist(volume)
[R, C, D] = size(volume);
x = zeros(size(volume(:)));
y = x;
z = x;
idx = 1;
for d=1:D
for r=1:R
for c=1:C
if volume(r, c, d) == 0
x(idx) = 0; y(idx) = 0; z(idx) = 0;
else
x(idx) = C - c + 1; y(idx) = R - r + 1; z(idx) = d;
end
idx = idx + 1;
end
end
end
x(x==0) = [];
y(y==0) = [];
z(z==0) = [];
x = x - 1;
y = y - 1;
z = z - 1;
end
返回值X,Y, z是屬於我的對象的體素的座標,然後我調用scatter3(x, y, z, '*');
來渲染它。
是否有任何更有效的方法來爲scatter3()使用的特定體素生成座標?
謝謝! Matlab總是提供更簡單的方法來做事情。 – shapeare