从DV磁带上移除静止图像上的颜色伪影的方法

时间:2016-11-21 20:27:10

标签: colors imagemagick video-processing artifacts

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

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

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

示例全帧图片 Full still frame

带文字的裁剪区域样本(注意颜色流失和白色文字混合到背景中):
Cropped region

1 个答案:

答案 0 :(得分:2)

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

Fx预处理

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

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

intensity.png

形态学预处理

形态学允许普通&自定义内核可以改变周围的像素。由于视频扫描线+其他工件正在扭曲文本,我建议探索Dilate,但Usage documents中列出了许多其他技术。

金刚石

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

diamond.png

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

square.png

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

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 

user_defined.png

但是YMMV。另请查看Fred's TextCleaner脚本。 -deskew& -sharpen运营商将帮助减少噪音。

  

带文字的裁剪区域样本(注意颜色流失和白色文字混合到背景中):   _

我认为有一句话“你不能用汉堡包做牛排。”或类似的东西。在某些时候,背景会清除前景中的文本,现在花费更多时间来创建一个能够承认这一点的解决方案。