对带有背景的图像进行倾斜(Python)
问题描述
我正在处理一个项目,在该项目中,我正在对标签上的文本进行OCR。我的工作是对图像进行倾斜,使其可用tesseract读取。
我一直在使用this approach,对图片进行灰度和阈值处理,获取黑色像素坐标,在其周围绘制minAreaRect,然后根据此矩形的倾斜角度校正倾斜。这适用于,但不适用于具有背景的图像,如所显示的图像。在那里,它计算的倾斜角度为0.0,并且不旋转图像。(预期结果:17°)我怀疑这是因为背景中有黑色像素。正因为如此,minAreaRect绕着整个图片旋转,因此导致倾斜角度为0。
我尝试删除背景,但找不到工作得足够好的方法,因此只留下带有文本的标签
我尝试的另一种方法是通过k均值聚类对像素进行聚类。但是,即使手动选择好的k,包含文本的群集仍包含部分背景。
更不用说我还需要另一个方法来遍历所有群集,并使用某种启发式方法来确定哪个群集是文本群集,哪个群集是背景群集,这将耗费大量的运行时间。
对有背景的图像进行倾斜的最佳方法是什么?
解决方案
您可以尝试基于深度学习的natural scene text detection
方法。使用这些方法,您可以获得每个文本的旋转边界框。在此基础上得到覆盖所有方框的旋转边界矩形。然后使用该矩形的4个角更正图像。
RRPN_plusplus
基于示例图像RRPN_plusplus在极端角度下似乎做得相当好。
东部
PyimageSearch提供了EAST
场景文本检测器教程。虽然不确定东方在极端角度下会做得很好。
https://www.pyimagesearch.com/2018/08/20/opencv-text-detection-east-text-detector/
图像来源,https://github.com/argman/EAST。
这些应该可以帮助您找到最近更好的报告和方法,
- https://github.com/topics/scene-text-detection
- https://paperswithcode.com/task/scene-text-detection
- https://paperswithcode.com/task/curved-text-detection
相关文章