如何在OpenCV中做3D高斯滤波
How to do 3D Gaussian filtering in OpenCV?
我有一个多维矩阵,我不仅想在二维中沿x
和y
进行高斯平滑,而且还想在三维中对通道进行平滑。我如何在OpenCV中做到这一点?
我知道有一个叫做GaussianBlur的函数可以在2D中应用高斯滤波器,但是3D呢?你可以这样调用它:
GaussianBlur(frame, frame2, Size(sigma, sigma), 0, 0);
OpenCV本身不支持此功能。但是,由于高斯滤波是可分离的,所以可以分别过滤每个维度。
使用BaseRowFilter
: http://docs.opencv.org/modules/imgproc/doc/filtering.html#BaseRowFilter和BaseColumnFilter
: http://docs.opencv.org/modules/imgproc/doc/filtering.html#BaseColumnFilter的组合,并指定高斯核为1D。
使用getGaussianKernel
: http://docs.opencv.org/modules/imgproc/doc/filtering.html?highlight=gauss#getgaussiankernel来帮助你计算一维高斯核,而不必自己动手。
现在,对于第三维度,这将是棘手的。您必须在特定空间位置对每个3D切片应用单独的行/列过滤器。例如,如果您有5个切片的体积,并且一张图像的大小为10 x 10,那么在3D中最终过滤的结果是您必须提取100个大小为5的1D信号,然后分别对这些1D信号应用内核。
看看这篇文章,了解更多:如何在3D中进行高斯滤波。过去也有人试过这样做。
祝你好运!
相关文章:
- 在C++上实现高斯赛德尔迭代方法
- C++:矩阵高斯消除不起作用:使用单维数组来存储元素
- (C++)(Visual Studio) 将高斯模糊滤镜应用于 RGB 中的灰度图像
- 用于创建高斯随机数的 c++ 函数
- 将高斯模糊应用于灰度图像
- 高斯雅各比法
- 用高斯Seidel红色黑色求解1D泊松方程
- 如何改变高斯分布(提升)中的种子
- 并行化高斯模糊链
- 为什么在 C++ 中实现高斯勒让德算法没有产生结果
- 生成高斯噪声
- 部分透视/高斯消除 - 交换列而不是产生错误输出的行
- 使用高斯模糊进行图像卷积,可以加速
- 如何使用 1D 高斯内核在 Filter2D 上创建自定义 2D 内核
- ***检测到堆栈粉碎***:在高斯消除中
- 使用C 加入高斯噪声
- 高斯滤波器核值
- 用于高斯过程的准随机数生成器
- 如何在OpenCV中做3D高斯滤波
- 3D纹理的OpenGL高斯内核