【发布时间】: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