在Matlab中有nlfilter的3D版本吗?

时间:2015-10-02 11:48:58

标签: image matlab image-processing 3d

我想使用Matlab的nlfilter(或类似的功能/工具)在黑白图像中生成3D(白色)对象。

在2D中,我从一些白色种子点开始,最终定义2D图像中的区域/对象。通过连续应用nlfilter,我可以自然地生长这些区域,直到所有像素都被标记。我想在3D中做类似的事情,但是nlfilter只适用于2D图像。将3D图像作为一叠2D图像处理并在每个这样的切片上应用nlfilter是克服该问题的可能方法之一,但它并不是次优的。相反,nlfilter3d()函数会更方便。 Matlab或其他地方是否存在类似的功能?

1 个答案:

答案 0 :(得分:0)

我不知道是否有相当于nlfilter的3D,但您是否尝试使用形态学操作来解决这个问题?

由于您使用的是二进制图像,我认为形态可以帮助您。 例如,对于以下2D图像,

seed

temp=imdilate(temp0,strel('disk',3));

将在输出中显示以下图像:

dilate

如果您有一个3D二进制矩阵,定义为,

temp0=false(11,11,11); temp0(5,5,5)=true;

相当于2D矩阵(它只有一个白点,其余所有三维都是黑色),然后是具有以下strel的3D形态:

str=true(3,3,3);

将输出这11个图像(对于每个Z平面):

3Ddilate

我希望这就是你要找的东西。