为什么在预处理中使用负像?

时间:2015-02-09 22:37:56

标签: c++ opencv image-processing ocr image-recognition

我观察到,对于许多预处理操作(我的意思是主要是对OCR进行预处理),通常使用负像?

例如: http://felix.abecassis.me/2011/10/opencv-rotation-deskewing/ http://felix.abecassis.me/2011/09/opencv-detect-skew-angle/

我在使用kNN算法找到对象时也发现了它。

为什么要使用倒像?那只是为了表明它只是预处理步骤吗?使用倒置图像有什么好处吗?

4 个答案:

答案 0 :(得分:2)

答案或多或少是second example you linked

  

在图像处理中,对象为白色,背景为黑色,   我们正好相反,我们需要反转图像的颜色

按照惯例,大多数图像处理检测算法假设应该检测到的是白色而背景是黑色的。然而,现实世界中的大多数文本是白色背景上的黑色文本,例如书的页面,因此需要反转许多真实世界图像以匹配图像检测算法的假设。

答案 1 :(得分:2)

不,使用倒置图像绝对没有优势。线性滤波和边缘检测对对比度反转严格不敏感。形态滤波器总是以双对(两个极性)定义。二值化和斑点分析也是对比独立的。 (当然假设你正确地建立了背景/前景和黑/白的关联。)有一个完全对称。

某些文字在黑色上显示为白色的原因通常是纯粹实用的:您可以看到感兴趣区域的限制! (其他原因可能是手头的图书馆缺少白色背景选项。)

答案 2 :(得分:1)

处理时,黑白图像比彩色图像更方便。

答案 3 :(得分:1)

在OCR和文档处理行业工作了19年后,这是我第一次听到这个。它可能是特定于工具的,但绝对不是一种广泛接受的做法。所有图像预处理都发生在我们使用的商业OCR包中的正常黑色白色图像上,代表真实世界的文档。可以在低对比度情况下尝试反转,但这种情况很少发生。

我每天仍然学到新东西。是否经常使用此方法的其他参考?