【问题标题】:Adaptive Bilateral Filter to preserve edges自适应双边滤波器以保留边缘
【发布时间】:2014-04-29 02:40:38
【问题描述】:

我需要能够检测卡片的边缘,目前它在背景无干扰时有效,在对比时效果最佳,但在非对比背景上仍能很好地工作。

当卡处于破坏性背景时会出现问题,双边滤波器会引入过多的噪声并导致边缘检测不准确。

这是我正在使用的代码:

bilateralFilter(imgGray, detectedEdges, 0, 175, 3, 0);
Canny( detectedEdges, detectedEdges, 20, 65, 3 );

dilate(detectedEdges, detectedEdges, Mat::ones(3,3,CV_8UC1));

imgGray 是原始图像的灰度版本。

以下是对破坏性背景的一些测试和结果(所有图像中的联系信息都失真):

彩卡:

结果:

这是一张白卡:

结果:

谁能告诉我如何在不考虑背景、颜色的情况下保留卡片的边缘,同时去除噪点?

【问题讨论】:

  • canny 可以从灰度图像中计算边缘吗?也许你可以尝试在色调通道上工作?
  • 我尝试使用色调通道作为双边滤波器和canny的输入,这对蓝卡来说效果很好,但对白卡来说效果很差。但我认为诀窍是在边缘检测中也考虑颜色信息!

标签: c++ opencv imagefilter


【解决方案1】:

使用您已经在做的canny 找到边缘,然后在图像中找到contour 并找到合适的rectangle using bounding box 并对矩形的占用和尺寸应用一些阈值。这应该归零到您的矩形,即您的卡片边缘,并将其作为ROI,您可以进一步工作。

【讨论】:

  • 投反对票的人应该在投反对票时做出解释。这与我的答案无关,但应该会更好。
  • 我的想法,你必须用你的代码解释你的想法。因为让像你这样正在寻找解决方案的人失望。
  • 大声笑,你可能是对的 Can,但我不想用勺子喂食,这些都是非常基本的结构,可以很容易地在 google 上找到。无论如何,美好的一天:)。
  • +1 为 Pervez Alam。这个答案完全没问题,并且没有针对此类问题的神奇单行 API。一些代码本来是一个加号,但如果你知道 OpenCV(并且询问的人知道它......),实现 canny + 轮廓 + 边界框并不是很困难。至于Can Urek,先学英语再评论,因为你的帖子看不懂……!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-06-15
相关资源
最近更新 更多