我正在尝试获取 OCR 可读的黑板图像。自然,大多数 OCR 软件不喜欢脏图像。我应该尝试通过什么图像处理来清理图像?
6 回答
你试过OCR软件了吗?OCR 软件很可能非常适合读取本质上已经是黑白图像的内容。
但是,如果您被要求这样做,您可以尝试:
- 阈值图像。
- 本质上取图像的灰度版本并将其转换为黑/白像素
- 执行二元膨胀以增长剩余的对象
- 执行二元腐蚀
这个想法是通过扩张然后侵蚀,您将删除任何粗糙/嘈杂的边缘,然后您可以将骨架化图像传递给 OCR。
可能有很多方法可以达到类似的结果。鉴于有整本专门讨论计算机视觉的书籍,这个答案很难做到公正。
我仅有的文本是 1997 年的,但从那以后肯定有更多关于这个主题的文章。
- 图像处理和计算机视觉算法 - JR Parker
- 数字图像处理 - Gonzalez / Woods
顺便说一下,我会说反转图像(反转颜色,以便文字是白底黑字)并稍微增加对比度。您可以尝试修改亮度以使已擦除的粉笔模糊消失在背景中。
在 Photoshop 中,色阶对话框可能是您最有用的图像调整。在代码中模仿这个完全是另一个主题。
级别的基础是您调整亮度级别的最大值、最小值和中点。通常显示在直方图上,您可以调整点以获得所需的对比度,但还要移动中点以使图像中的文本最清晰;对 OCR 应用至关重要。通过移动中点,您可以通过使其消失在图像的亮(或暗)区域中来“消除”通常围绕手写的灰度绒毛。
您也可以尝试在进行此类调整后将图像转换为 1 位,将所有内容强制为黑色或白色。有时这会加快 OCR 过程。但要小心,它也会丢弃细节。
您是否尝试过诸如 Roberts Cross 和 Sobel 算子之类的边缘检测技术来过滤图像中的噪声?在没有看到图像质量的情况下,不能说它的效果如何。
不确定您在选择 OCR 解决方案时有多大限制,但 ABBYY OCR 引擎(以及基于它的 Web API,http://www.wisetrend.com/wisetrend_ocr_cloud.shtml)包括自动图像清理/纹理删除选项。
有商业解决方案,但清理电路板图像似乎是一个悬而未决的问题。将 OCR 添加到未解决的问题中,您会得到……未解决的问题。