Ваш первый шаг должен избавиться от вашего шума. Поскольку у вас есть какой-то солевой и перцовый шум, вы можете сделать это, используя медианный фильтр на 2D-изображении с medfilt2()
в matlab. После этого вы можете использовать крайний дитектор, чтобы найти ваши краевые пиксели. Код для этого может выглядеть следующим образом. Если вы хотите поверхность, вы должны зациклить это, по 3-му измерению вашего 3D-изображения. Код будет выглядеть так:
for ii=1:16
I=imread('image.tif',ii);
I_bs=boundarymask(I);
I_filt=medfilt2(I_bs,[7 7]);
boundarysurface(:,:,ii)=edge(I_filt,'Canny');
end
Детектор контуров, который я здесь использовал, безусловно, слишком сложен для этого легкого случая, но это была самая легкая вещь, о которой я мог подумать в краткосрочной перспективе. Если производительность важна, дайте мне знать, и я предложу вам другой подход.