我必须编写一个openCV应用程序来从图像(购物账单)中提取某些部分。我不确定应该使用哪些过滤器或功能来实现这一点(即去除背景噪音,如手)。可以给我一些暗示,哪些功能和过滤器最能消除这些背景噪音并提取购物单部分来自图像。
由于
答案 0 :(得分:0)
这是一个非常主观的问题,因为高度取决于您的图像拍摄方式。
知道并控制如果可能的话,诸如票据的颜色,几何形状,背景的可能颜色,票据与相机之间的距离范围,照明等等,在这里是极其重要的,并且最终将是最终的。定义最好的方法,所以我不能给你客观的答案。
但我可以尝试指出正确的方向,因此我建议您应该查看OpenCV tutorials,特殊segmentation algorithms,hough transforms和generic object detectors
答案 1 :(得分:0)
一般降噪:高斯或中值模糊将帮助您实现低通滤波操作。
事实1:购物单是黑白的
方法:使用color detection。使用HLS相当于您的图像 - 使用cvtColor-并查看亮度通道将有助于您。
事实2:购物账单有白色背景
方法:使用二进制阈值并添加轮廓查找算法 - 使用findContours-可以帮助您提取账单区域。
事实3:购物账单有数字
方法:您可以添加OCR来过滤掉内部没有任何数字的区域。但是很难实现。
事实4:购物账单是quadliteral
方法:形状检测并不难实现。我假设有很多作品。我曾经用“胡子比较”方法成功地认出了方块。如果你有一个矩形的票据镜头,可能会有开源实现,搜索“检测最大的矩形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
基本上,你需要以某种方式找到blob的“极值点”,而不是决定它是否是一个四边形。