0

我必须编写一个 openCV 应用程序来从图像中提取某些部分(购物单)。我不确定我应该使用哪些过滤器或功能来完成此操作(即去除手等背景噪音)。有人能给我一些提示,哪些功能和过滤器最适合去除这种背景噪音并提取购物账单从图像的一部分。

谢谢

4

2 回答 2

0

一般降噪:高斯或中值模糊将帮助您实现低通滤波操作。

事实1:购物账单是黑白的

方法:使用颜色检测。获取图像的 HLS 等效项 - 使用 cvtColor - 并查看亮度通道将对您有所帮助。

事实 2:购物账单有纯白色背景

方法:使用二进制阈值并添加轮廓查找算法 - 使用 findContours - 可以帮助您提取票据区域。

事实3:购物账单有数字

方法:您可以添加 OCR 以过滤掉内部没有任何数字的区域。不过很难实施。

事实 4:购物账单是四字的

方法:形状检测不难实现。我想这方面有很多作品。我曾经用“胡矩比较”的方法成功地识别出正方形。如果你有一张长方形的钞票,可能有开源实现,搜索“检测最大的长方形 opencv”。如果您从不同角度拍摄,请阅读这些论文、代码和教程:

http://users.cecs.anu.edu.au/~nmb/papers/06-PRD.pdf

http://opencv-code.com/tutorials/automatic-perspective-correction-for-quadrilateral-objects/

https://github.com/drewnoakes/quadrilateral-finder

http://aishack.in/tutorials/an-introduction-to-contours/

http://www.scielo.org.mx/pdf/cys/v15n2/v15n2a5.pdf

基本上,您需要以某种方式找到 blob 的“极端点”,而不是确定它是否是四字形。

于 2013-09-09T00:59:58.847 回答
0

这是一个非常主观的问题,因为它高度依赖于您的图像是如何拍摄的。

了解并尽可能控制钞票的颜色、几何形状、背景的可能颜色、钞票和相机之间的距离范围、照明等,在这里至关重要,最终将定义最佳方法,所以我不能客观地回答你的问题。

但是,我可以尝试为您指出正确的方向,因此我建议您查看OpenCV 教程,了解特殊分割算法霍夫变换通用对象检测器

于 2013-09-08T22:18:07.893 回答