opencv - 如何从细节丰富的图像中指定计算机感兴趣的区域?

标签 opencv image-processing computer-vision ocr

背景:

我正在做我最后一年的本科大学项目,我涉及的主题是通过光学字符识别检测纸币。我已经开始研究基本的图像处理技术,并且由于我是使用 Java 进行图像处理 的新手,所以进度有点慢。

自从上学期的一篇论文以来,我对图像处理有了一个基本的了解。

基本上,我正在研究尼泊尔纸质笔记,我的想法是从中提取关键信息。我使用的纸币是 100、500 和 1000 卢比的尼泊尔纸币。

enter image description here

上图是500卢比的尼泊尔货币,思路是从图像中提取信息,识别图像属于哪种货币。

enter image description here

我这个项目的主要目标是判断币种,基本上是通过右下区域的识别来完成的。图像的右下方区域定义了货币的值(value)。

次要目标是获取货币数量(唯一)并将其存储在数据库中。

问题:

好吧,我的问题是,这个问题的解决有多公平?进入这个项目之前有哪些必要的先决条件?如何从图像中选择感兴趣的区域?

下面列出了我的项目应该认可的另外两篇论文笔记:

enter image description here

尼泊尔纸币注:Rs. 1000

enter image description here

尼泊尔纸币注:Rs. 100

Since I am new to Image Processing with Java, I need a fair suggestion on how to achieve my problem to success.

最佳答案

我将尝试逐步回答这个问题,因为这些是连续的,您的准确性将取决于您在每一步中的表现。

  1. 确定和提取 ROI:考虑到您正在处理纸币,可以安全地假设您的输入测试/训练数据将按照给定图像中的方式对齐多于。尝试使用等高线来提取数字周围的感兴趣区域。您可以做的另一件事是创建一个蒙版,它将过滤掉图像的剩余区域,只留下您需要的区域。第二种方法更像是硬编码,如果图像未对齐就会失败。

  2. 预处理:一旦您获得了 ROI,在将数据提供给 OCR 之前,您需要通过一些预处理技术。大多数 OCR 在二值图像上表现出更好的准确性,有时在灰度图像上也是如此。此步骤对于从 OCR 获得良好结果至关重要。

  3. 应用OCR:你可以随时使用Tesseract OCR或其他,但由于纸币的类型有限,我也建议你看看物体检测模型。其中许多都可以在线轻松获得,您可以通过提供货币图像并手动标记相应的值(value)来自行训练它们。 OCR 并不总能返回最佳结果,在您的用例中,我建议您尝试其他替代方法,例如图像匹配或制作模型。

关于opencv - 如何从细节丰富的图像中指定计算机感兴趣的区域?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50906306/

相关文章:

python - 计算 Python 中的 Yaw 和 Roll 头部姿势估计 MTCNN

python - 如何在 if 语句中收集元组值?

python - 使用 patchify 库创建补丁时出现的问题

image-processing - 如何识别图像中的不同对象?

opencv - 为旋转图像构建正样本以在 OpenCV 中进行级联训练

python - 向模型发出请求的正确方法(通过 Azure ML Designer 部署)

algorithm - 为什么我的逻辑回归迭代重新加权最小二乘算法的权重总是以 NaN 结尾?

opencv - Kinect 深度图像

ios - 检测您所在的 GPS 环境的算法

python - 用不同的方法寻找候选板 block