【发布时间】:2017-12-01 21:09:08
【问题描述】:
我正在对电视镜头中的字幕应用 OCR。 (我正在使用带有 C++ 的 Tesseact 3.x)我正在尝试将文本和背景部分拆分为 OCR 的预处理。
这是原图:
还有,预处理图像:
OCR 结果为:Sicemn 克隆
如上图所示,字母周围还残留着一些“雾”,这会阻止 OCR 模块正常工作。
有什么方法可以通过编程识别那些“雾”来移除,或者做一些图像处理来从预处理图像中移除/减少它?
由于预处理逻辑经过大量优化以处理不同的图像,我宁愿找到一种方法来“清理”预处理图像,而不是修改预处理逻辑(因为优化此图片会影响其他图片)
非常欢迎任何建议。
更新
显然,sixela 的答案很棒,并且适用于大多数情况。 它不起作用的情况是背景也包括相似颜色的文本
无效案例示例:
结果示例:
看起来,高斯过滤器似乎在这类素材中造成了问题。 这意味着,不同的镜头可能需要不同的方法。
【问题讨论】:
-
当背景发生变化时,标题可能在连续几帧中保持不变。您可以尝试在保持大致相同的像素与在 n 帧上发生变化的像素之间进行分区。它并不完美,但在许多情况下可能会有所帮助。
-
嗨,阿德里安,感谢您的建议。是的,我已经尝试过使用 OpenCV 中的 absdiff 和 MOG 过滤器的方法。它效果不佳,因为在通常的镜头中,框架中的对象不会移动得那么快。假设如果字幕重叠在人身上,他们不会移动得那么快,但字幕只会出现 1-2 秒。如果是汽车追逐场景,它会工作..