【问题标题】:Method to remove color artifacts on stills from DV tapes从 DV 磁带中去除静止图像上的颜色伪影的方法
【发布时间】:2016-11-21 20:27:10
【问题描述】:

我正在尝试使用光学字符识别 (OCR) 来读取打印在数字视频 (DV) 磁带上的文本。我将视频中的裁剪静止帧用于 OCR 过程。文本是白色的,但存在颜色伪影(可能是复合色伪影),因此白色文本上有颜色渗色(参见下面的示例)。颜色看起来是洋红色-青色-黄色的色彩空间,也许吧?

如果我可以删除/过滤这些颜色以在文本上只留下白色,那么 OCR 结果可能会得到改善。然后我可以创建一个二进制黑白图像。我现在可以这样做,但我怀疑如果我可以在 OCR 之前从白色文本中删除颜色,结果会有所改善,这将有助于将白色文本与背景图像分开。

是否有任何方法,最好使用 Imagemagick,从白色文本中过滤掉这些颜色?我不确定解决此问题的最佳方法,因为有多种颜色溢出,并且每一帧的背景都会发生变化。目前在 Windows 7 上使用 Imagemagick 版本 6.9.2-3 Q16 x64。

示例全帧图像:

带有文本的裁剪区域示例(注意彩色出血和白色文本混合到背景中):

【问题讨论】:

  • 如果您在图像中的特定位置以已知字体查找已知字母/数字,则最好使用 模板匹配 类型的方法。看看我的回答stackoverflow.com/a/40085218/2836621

标签: colors imagemagick video-processing artifacts


【解决方案1】:

我建议利用 ImageMagick 的 FXMorphology Dilate 来预处理图像。但老实说,要找到适合您的解决方案需要一些试验和错误。我还建议您开发的任何解决方案都允许优雅的错误处理(即,如果尝试的 OCR 过程不成功,发出警告,并将视频前进到下一个 I 帧并重复。)

Fx 预处理

-fx 运算符将允许您创建用户定义的数学表达式。一些关于 chrome-keys 的快速谷歌搜索和其他容差方法可能会有所帮助。但对于许多 OCR 技术,通常会将颜色降低到“统一”的灰度级。

convert aaA7b.png -fx 'intensity' intensity.png

形态预处理

形态学允许通用和自定义内核改变周围的像素。由于视频扫描线 + 其他伪影会扭曲文本,我建议您探索 Dilate,但Usage documents 中列出了许多其他技术。

钻石

convert aaA7b.png -fx 'intensity' \
        -morphology Dilate Diamond:1 diamond.png

方形

convert aaA7b.png -fx 'intensity' \
        -morphology Dilate Square:1 square.png

加号

convert aaA7b.png -fx 'intensity' \
        -morphology Dilate Plus:1 plus.png

自定义

如果您需要更精确的内容,请通过提供以下格式 size: row1 row2 ... rowN 创建您自己的内核。在此示例中,我创建了一个 3x3 内核,其中包含一条垂直线来偏移视频扫描线。

 convert aaA7b.png -fx 'intensity' \
         -morphology Dilate \
         '3x3: nan,1,nan nan,1,nan nan,1,nan'  user_defined.png 

但是YMMV。另请查看Fred's TextCleaner 脚本。 -deskew & -sharpen 运算符将有助于减少噪音。

带有文本的裁剪区域示例(注意彩色出血和白色文本混合到背景中):

我认为有一句话“你不能用汉堡包做牛排。” 或类似的东西。在某些时候,背景会冲刷前景中的文本,现在是时候更好地创建一个承认这一点的解决方案了。

【讨论】:

    猜你喜欢
    • 2018-10-21
    • 2015-12-22
    • 2020-04-11
    • 2018-07-10
    • 2021-10-01
    • 2021-10-18
    • 2013-04-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多