实施3D索贝尔算子

时间:2011-09-07 08:15:11

标签: image 3d

我目前正致力于从包含体素的MRI数据量中去除不均匀性。 我想在这些卷上应用sobel运算符来找到梯度。我熟悉2d sobel面具和2D图像的邻域。

索贝尔面具:     1 2 1     0 0 0     -1 -2 -1     1 0 -1     2 0 -2     1 0 -1

邻域(x,y):     (x + 1,y-1)(x + 1,y)(x + 1,y + 1)     (x,y-1)(x,y)(x,y + 1)     (x-1,y-1)(x-1,y)(x-1,y + 1)

现在我想在3d上应用它。 请建议我怎么办? 谢谢。

2 个答案:

答案 0 :(得分:4)

维基百科对此有一个很好的介绍:http://en.wikipedia.org/wiki/Sobel_operator

基本上,由于sobel滤波器是可分离的,因此可以连续在x,y和z方向的每个方向应用1D滤波器。这些过滤器是维基百科上给出的h(x)和h'(x)。这样做可以让你在你应用h'(x)的方向上获得边缘 例如,如果你做h(x)* h(y)* h'(z),你将得到z方向的边。

或者(并且更昂贵),您可以计算整个3D 3x3x3内核并在3D中应用卷积。 z方向的内核也在维基百科上给出。

答案 1 :(得分:0)

好问题!对于 3D 图像,您必须使用 3 个不同的 3x3x3 sobel 算子:每个方向 1 个,即 x、y 和 z。请注意,在数字图像处理中,x 坐标轴指向右侧,y 坐标向下,z 坐标指向屏幕! 我将所有三个 3D sobel 操作符可视化以使其更直观。这里是 X directionY directionZ direction 中的 sobel 过滤器。

此外,如果您想查看其背后的方程式(基本上是您的代码必须计算的内容),请访问:SobelFilterEquations