gpt4 book ai didi

opencv - 使用 OpenCV OCR 锐化图像

转载 作者:太空宇宙 更新时间:2023-11-03 20:53:02 26 4
gpt4 key购买 nike

我一直在尝试开发一个图像处理脚本/OCR,它允许我从下图中的框中提取字母(使用 tesseract)。

http://i622.photobucket.com/albums/tt310/seraphelitis/rename_zps80dcdd06.png

经过大量的处理,我能够让图片看起来像这样

3

为了去除噪点,我反转图像,然后进行填充和高斯模糊以去除噪点。这就是我接下来的结果。

4

在通过一些阈值和侵 eclipse 来消除噪音后(侵 eclipse 是扭曲文本的步骤)我能够在通过 tesseract 运行它之前让图像看起来像这样

enter image description here

虽然这是一个非常好的渲染,但可以通过 tesseract 获得相当准确的结果。虽然它有时会失败,因为它将哈希 (#) 读取为 H 或 W。这引出了我的问题!

有没有办法使用 opencv、skimage、PIL(最好是 opencv)我可以锐化这个图像以增加 tesseract 正确读取我的图像的机会?或者有没有一种方法可以让我从第三张图像到最终图像,而不必使用最终扭曲图像中文本的腐 eclipse 。

如有任何帮助,我们将不胜感激!

最佳答案

OpenCV 确实有类似 filter2D 的功能将任意内核与给定图像进行卷积。特别是您可以使用用于图像锐化的内核。主要问题是这是否会改善 OCR 库的结果。图像已经非常清晰,图像中的噪点不是模糊的结果。我自己从未使用过 teseract,但我相当确定它已经完成了所有可能的降噪工作。而在这个过程中“帮助”他实际上可能会产生相反的效果。例如,任何锐化过程都会放大噪声(与通常使图像模糊的降噪过程相反)。大多数计算机视觉库在提供原始(未处理)图像时都能提供更好的结果。

编辑(问题更新后):有多种方法可以这样做。我要测试的第一个是:您的第一个二进制图像非常干净和清晰。不是使用降低字母质量的形态学操作,而是切换到过滤轮廓。使用 findContours函数来查找图像中的所有轮廓并存储它们的层次结构(即哪个轮廓在哪个内部)。从所有找到的轮廓中,您实际上只需要第一层和第二层的轮廓,即每个字母的外部和内部轮廓(零层的轮廓是最外层的轮廓)。可以丢弃其他轮廓。在属于第一层的轮廓中,您可以丢弃那些边界框太小而不能成为真实字母的轮廓。在这两个丢弃程序之后,我希望剩下的大部分轮廓都是字母的一部分。在白色图像上绘制它们并运行 OCR。 (如果你想要黑色背景上的白色字母,你需要颠倒轮廓中顶点的顺序)。

关于opencv - 使用 OpenCV OCR 锐化图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21110482/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com