我有一个输入作为3D二进制图像,并且在下面是首选输出:

输入:



首选输出: br />

如上面的首选输出一样,如果我只剩下尖刺的对象,我应该寻找什么图像处理方法?

评论

3D二进制图像是什么意思?您可以轻松地将图像分割成各个部分吗?

3D表示断层图像。

您能解释什么是尖刺物体吗?真正叫它尖刻的是什么?识别尖刺物体的主要特征是什么?

在这种情况下,尖锐的对象是一个不平滑的3D区域,并且整个区域都具有这些刺状的形状。

#1 楼

“尖峰对象”的边界上有更多的角,因此一种方法是为此调整一个角检测器。例如,我计算了结构张量的行列式(下面的Mathematica代码)的距离转换后的图像:



通过滞后二值化可以生成此图像,这应该是您选择的分割算法的良好起点:



Mathematica代码(src是您发布的源图像)

首先,我计算输入图像的距离变换。这样会在整个对象区域(而不只是边界)上形成对比度,因此可以检测到整个对象。

下一步,我准备结构张量的分量。高斯导数的过滤器大小(如果为5),窗口大小为20。张量的形式:

dist = ImageData[DistanceTransform[src]];


与以下基本相同:

gx = GaussianFilter[dist, 5, {1, 0}];
gy = GaussianFilter[dist, 5, {0, 1}];
gx2 = GaussianFilter[gx^2, 20];
gxy = GaussianFilter[gx*gy, 20];
gy2 = GaussianFilter[gy^2, 20];   


将其转换为图像并将其缩放到0..1范围会产生上面的拐角检测器图像。最后,使用正确的阈值对它进行二值化处理,得到最终的二进制图像: br />

评论


$ \ begingroup $
很酷的答案! =)
$ \ endgroup $
– Phonon
2012年3月4日在1:54

$ \ begingroup $
您的答案是惊人的,我从中学到了很多。
$ \ endgroup $
–安德烈(Andrey Rubshtein)
2012年10月11日上午11:40