自适应双边滤波器以保留边缘

时间:2014-04-29 02:40:39

标签: c++ opencv imagefilter

我需要能够检测到卡片的边缘,目前它在背景无中断的情况下有效,而且在对比度最佳但在非对比背景下仍能很好地工作。

当卡处于破坏性背景时,双边滤波器会产生过多噪音并导致边缘检测不准确,从而出现问题。

以下是我正在使用的代码:

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

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

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

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

彩卡:

enter image description here

结果:

enter image description here

这是一张白卡:

enter image description here

结果:

enter image description here

任何人都能告诉我如何在消除噪音的同时保留卡片的边缘,无论背景,颜色如何?

1 个答案:

答案 0 :(得分:1)

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