【问题标题】:Is there a 3D version of nlfilter in Matlab?Matlab 中有 3D 版本的 nlfilter 吗?
【发布时间】:2015-10-02 11:48:57
【问题描述】:

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

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

【问题讨论】:

    标签: image matlab image-processing 3d


    【解决方案1】:

    我不知道是否存在 nlfilter 的 3D 等效项,但您是否尝试过通过形态学运算解决这个问题?

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

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

    将在输出时给出以下图像:

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

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

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

    str=true(3,3,3);

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

    我希望这就是你要找的。​​p>

    【讨论】:

    • 嗯,不是真的。在 2D 切片上使用 nlfilter 通常仍然可以提供更好的结果。只是需要多做一些工作才能得到正确的形状。
    • 好吧,祝你好运,然后寻找解决方案。我不能再帮你了。我只能说,你在形态学中使用的“strel”可以是你喜欢的任何类型,而扩张是基于那个“strel”。如果您知道/尝试过但仍然没有帮助,那么我再次祝您好运:) 干杯!
    猜你喜欢
    • 2013-02-09
    • 1970-01-01
    • 1970-01-01
    • 2020-06-12
    • 1970-01-01
    • 1970-01-01
    • 2014-04-10
    • 1970-01-01
    • 2015-06-10
    相关资源
    最近更新 更多