gpt4 book ai didi

c++ - OpenCV 中的 3D 图像梯度

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:17:08 39 4
gpt4 key购买 nike

我有一个通过 3D OCT 扫描获得的 3D 图像数据。数据可以表示为 I(x,y,z),这意味着每个体素都有一个强度值。

我正在编写一个算法,该算法涉及在 C++ 中查找图像在 x、y 和 z 方向上的梯度。 我已经使用 OpenCV 在 C++ 中为 2D 编写了代码,并希望在对现有 2D 代码进行最小更改的情况下将其扩展到 3D。

我熟悉使用 Sobel or Scharr 的二维渐变运营商。我的搜索将我带到了 this post , 答案推荐ITKPoint Cloud Library .但是,这些库有很多可能不需要的功能。由于我对 C++ 不是很有经验,所以这些库需要阅读一些内容,但时间不允许。此外,这些库不使用 cv::Mat 对象。如果我使用 cv::Mat 以外的任何东西,我的整个代码可能必须更改。

谁能帮我解决这个问题?

更新 1:使用内核可分离性的可能解决方案

根据@Photon 的回答,我正在更新问题。

根据@Photon 所说,我了解了如何在 3D 中构建 Sobel 内核。但是,即使我构建了一个 3x3x3 的立方体,如何在 OpenCV 中实现它? OpenCV 中使用 filter2d 的卷积运算仅针对 2D。

可以有一种方法。由于 Sobel 核是可分离的,这意味着我们可以将 3D 卷积分解为更低维度的卷积。 this link 的评论 20 和 21|也讲同样的话。现在,我们可以分离 3D 内核,但即使这样也不能使用 filter2D,因为图像仍然是 3D。有没有办法分解图像?有一个 interesting post这暗示了这样的事情。对此有进一步的想法吗?

最佳答案

由于 Sobel 算子是可分离的,因此很容易想象如何添加第 3 维。

例如,当您在您发布的链接中查看 Gx 的过滤器定义时,您会看到它是将周围的像素乘以系数,这些系数的符号取决于相对 X 位置,以及相对于 Y 偏移量的幅度.

当你扩展到 3D 时,Gx 梯度应该以相同的方式计算,但你需要在 3x3x3 立方体上工作,并且系数符号保持相同的定义,并且幅度现在取决于 Y 或 Z 的变化或两者兼而有之。

其他梯度(Gy、Gz)相同但围绕其轴。

关于c++ - OpenCV 中的 3D 图像梯度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31983621/

39 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com