c++ - 对导致不连续边缘的图像实现均值平移滤波器

标签 c++ c opencv image-processing blur

如图所示,我对源图像实现了 3 种模糊处理。 高斯和中值模糊看起来不错,但 Meanshift 结果让我困惑。 右侧有不连续的区域。

3kindblur

我实现的代码是 pyrMeanShiftFiltering(src2, dst2, 5, 25, 3);,修改为pyrMeanShiftFiltering(src2, dst2, 2, 25, 3);还是一样.

所以我认为这与空间窗口半径无关。

谁能解释一下为什么会发生这种情况,以及如何为我避免这种情况?

非常感谢!

================================================== =========

8/13

添加代码:

int border = 1;
copyMakeBorder(src2, src2, border, border, border, border, BORDER_CONSTANT, 0);

不幸的是,还是一样..

border

最佳答案

Here我可以看到相同的效果,所以看起来像是实现中的一个错误(看起来像卷积边缘效应)。您可以尝试在应用滤镜之前为图像添加边框,并在处理完成后删除边框(请参阅 opencv 的 copyMakeBorder 方法)。

关于c++ - 对导致不连续边缘的图像实现均值平移滤波器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31920868/

相关文章:

visual-studio-2010 - 使用 Qt Creator 设置 OpenCV 2.4.2

c++ - 重载运算符在使用 std::map 时产生错误

c++ - 声明和初始化struct类型变量时出错

c - 强制 printf 忽略格式

c++ - OpenCV 3.4 相机校准产生奇怪的主点

c++ - 创建依赖于其他共享对象的共享对象

java - C++ 抽象类

c++ - 恒定时间访问列表中的任意元素 (C++)

C++:用多个定界符拆分字符串并在结果中保留定界符?

c - 执行 "reg query"作为新进程不显示所有键