Image processing 在OCR处理之前删除背景颜色或纹理

Image processing 在OCR处理之前删除背景颜色或纹理,image-processing,computer-vision,ocr,Image Processing,Computer Vision,Ocr,当一个典型的手机用户为一个卡片大小的物体拍照时,图像中通常会包含一些背景纹理——请参考随附的样本。在某些情况下,这种背景可能会影响OCR的准确性 我想知道,是否有解决方案或不删除背景(我肯定有),或检测背景区域,以便人们可以在OCR之前将其裁剪掉。如果是附件中的图片,木桌和台面将被移除。我想对比色可能是一个解决方案,但不是很确定 在某些情况下,作为一个人,你很难分辨背景和前景,因此肯定没有方法正确地做你想做的事情。既然你提到了OCR,我想你实际上想消除所有不是文本的东西。实际上,这并没有

当一个典型的手机用户为一个卡片大小的物体拍照时,图像中通常会包含一些背景纹理——请参考随附的样本。在某些情况下,这种背景可能会影响OCR的准确性

我想知道,是否有解决方案或不删除背景(我肯定有),或检测背景区域,以便人们可以在OCR之前将其裁剪掉。如果是附件中的图片,木桌和台面将被移除。我想对比色可能是一个解决方案,但不是很确定


在某些情况下,作为一个人,你很难分辨背景和前景,因此肯定没有方法正确地做你想做的事情。既然你提到了OCR,我想你实际上想消除所有不是文本的东西。实际上,这并没有使问题变得更容易,所以我实际上假设的是,您希望保持与其他对象(例如,前景和背景,或白色背景上的黑色文本)形成高度对比的对象。同样,没有完美的方法

所以,这个答案所要做的就是提供一个简单的方法,可以帮助你完成任务。该方法是现成的形态学工具和用于二值化的大津方法的组合,因为它在统计上是最优的。结果是有可能值得一看的地区。请注意,您肯定需要将这些结果与许多其他不同的分析相结合,好的OCR系统远远超出这些直接方法

方法:1)将图像转换为灰度(对颜色不感兴趣,但可以使用不同的方法);2) 利用h-dome变换去除不相关的极大值;3) 计算形态梯度;4) 大津二值化;5) 通过区域打开移除小对象。去除不相关的最大值对于你的任务很重要,因为你可能会有非常可怕的区域,这些区域是由坏相机和坏相机的闪光灯以及没有经验的摄影师组合而成的。H-dome变换基于形态学重建,因此,如果您的库中有后者但没有前者,那么实现它很简单(否则您可以学习如何有效地实现后者)。对于离散图像来说,形态学梯度是一种非常简单的方法,因为它是一种局部方法,所以即使在光照不好的情况下也能很好地工作。Otsu结果的阈值保留了最强的边缘(可能包括噪声和其他次要特征)。在所有这些之前,可以先进行高斯平滑,这可能是噪声抑制的初始工具。通过区域打开,可以很容易地去除小特征。在Matlab中,这可以按照以下步骤进行:

f = rgb2gray(imread(yourimage));
se = strel('square', 3);
g = imhmax(f, 50);                    % h-dome with h = 50
g = imdilate(g, se) - imerode(g, se); % morphological gradient
h = im2bw(g, graythresh(g));          % graythresh applies Otsu's method
w = bwareaopen(h, 50);
假设小于50像素的对象是不相关的(对于小文本可能并不总是如此)

以下是示例的
w
图像:

这些输出指示应在何处查找文本,即连接部件的内部