Как заполнить пустое пространство между изображениями для объемной визуализации / 3D реконструкции в Matlab - PullRequest
0 голосов
/ 18 апреля 2019

Я пытаюсь создать трехмерную модель упакованных сферических бусин с кусочками изображения. Эти изображения представляют собой сферические бусины с различными диаметрами, разнесенные на 0,0015. Куб имеет размер 2,154х2,154х2,154. Мне удалось «сложить» изображения друг на друга и отменить пустое место для компиляции модели. Теперь у меня есть проблема заполнения пространства между срезами изображения, чтобы запустить симуляции / оценить пространство, незанятое сферами.

Я пытался использовать функцию matlab interp3, но у меня возникли проблемы с ее применением. Я также не уверен, является ли это правильным методом «заполнить» или «завершить» сферы. Следующий код использует только каждое третье изображение в диапазоне первых 43 из 1408 изображений.

изометрический вид сложенных изображений - высота 0,0643

Вид сбоку сложенных изображений

for i = 1:3:43 %height - 0.0643 out of 2.154
    filename = ['10000_test_packing_' sprintf('%0.0f',i) '.tif'];
    temp=double(imread(filename));
    image(:,:,i) = .5*(temp(:,:,1)==1) +(temp(:,:,2)==0) + 2*(temp(:,:,3)==0);
end

volumeViewer(image)

%% "Filling in the Spheres"
%Interpolation using interp3?

[X, Y, Z] = meshgrid(0:656, 0:875, 0:20);
[x, y, z] = meshgrid(0:656, 0:875, 0:.24:20);
test = interp3(X, Y, Z, image(:,:,1), x, y, z, 'cubic');

Первый раздел кода только складывает изображения, но не позволяет оценить объем «пустого пространства» внутри куба. Это связано с тем, что срезы не содержат объема и в пространстве между изображениями ничего нет.

Мне нужно найти способ затвердеть сфер, чтобы между срезами не было места и чтобы сферы были полными.

...