我需要能够检测到卡片的边缘,目前它在背景无中断的情况下有效,而且在对比度最佳但在非对比背景下仍能很好地工作。
当卡处于破坏性背景时,双边滤波器会产生过多噪音并导致边缘检测不准确,从而出现问题。
以下是我正在使用的代码:
bilateralFilter(imgGray, detectedEdges, 0, 175, 3, 0);
Canny( detectedEdges, detectedEdges, 20, 65, 3 );
dilate(detectedEdges, detectedEdges, Mat::ones(3,3,CV_8UC1));
imgGray
是原始图像的灰度版本。
以下是对破坏性背景和结果的一些测试(所有图像中的联系信息失真):
彩卡:
结果:
这是一张白卡:
结果:
任何人都能告诉我如何在消除噪音的同时保留卡片的边缘,无论背景,颜色如何?
答案 0 :(得分:1)
使用您正在执行的canny
查找边缘,然后在图像中找到contour
并找到合适的rectangle using bounding box
,并对占用率和矩形尺寸应用一些阈值。这应该归零到您的矩形,即您的卡片边缘,并将其作为ROI
,您可以进一步工作。