【问题标题】:Bilateral filtering with cvSmooth() function使用 cvSmooth() 函数进行双边滤波
【发布时间】:2016-08-14 15:48:30
【问题描述】:
cvSmooth(img, dst, CV_BILATERAL, 3,3,0,0);

根据函数定义,它应该可以工作,但我得到的图片与输入相同,没有任何平滑效果。我不明白为什么其他平滑类型(高斯、中值等)工作得很好。

【问题讨论】:

标签: c opencv image-processing


【解决方案1】:

尝试增加您的 sigma 值。 Sigma1 确定颜色在内核中的交互方式。 Sigma2 根据空间距离确定权重。双边过滤器中的 Sigma 值为零意味着您使用的空间和颜色域为零,这意味着没有执行过滤。

【讨论】:

  • cvSmooth(img, dst, CV_BILATERAL, 10,20,10,20);这种方式我也试过了,但是输出图片没有效果。
  • 还是有一些误会。双边滤波器的窗口大小必须为正方形。您正在使用 10,20。 cvSmooth 将只使用第一个大小参数,因此它实际上运行的是 10x10 内核孔径。您的空间 sigma 为 20,比内核大。根据输入图像的位深度,颜色 sigma 值可能太低而无法明显影响图像。如果输入是 8 位,请尝试类似 (img,dst,CV_BILATERAL,10,10,120,10)。另外值得注意的是 cvSmooth 函数已被弃用。您可能应该改用双边过滤器()。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-06-15
  • 2023-03-16
  • 2012-05-23
  • 1970-01-01
  • 2017-04-15
  • 1970-01-01
  • 2021-05-22
相关资源
最近更新 更多