2

我正在编写一个系统来从表单图像中删除某些字段边界。字段中可能有文字,即使笔迹跨越字段边界,我也需要正确保留。

我有 2 个图像:1 个彩色图像(转换为 HSV 颜色空间)和 1 个按像素排列的黑白图像(这些由扫描仪生成)

鉴于彩色图像中的颜色,我想从黑白图像中删除(采摘)字段边界像素。

我有一个优势,因为我先验地知道场地的确切位置,以及场地边界线的宽度/高度。

我当前的实现包括(对于每个字段),扫描彩色图像上的字段边界并计算该字段边界的平均 HSV 值(因为我确切知道字段边界在哪里,所以我只访问“字段边界”像素,但是如果它们越过字段边界,我也可能会访问一些手写像素,这个想法是它们不会使平均值产生很大的偏差)。一旦我有了字段边界的“平均” HSV 值,我再次扫描字段边界,并为每个像素计算以下 delta 函数:

在此处输入图像描述

如果“当前”像素和平均 HSV 之间的 Delta 值小于 0.07(根据经验发现),那么我将像素设置为白色(颜色接近),否则我将像素保持为黑色。

以下是字段的一些示例:

彩色图像: 在此处输入图像描述 黑白图像 非漏失: 在此处输入图像描述 漏掉了未在方程式中使用饱和度的黑白图像: 在此处输入图像描述 实际漏掉了完全使用公式的黑白图像(使用所有 3 个分量 H、S 和 V) 在此处输入图像描述

我用来获取第三张图像的公式是上面的公式,但是我将饱和度排除在等式之外(我只是在玩弄东西)。
这显然对颜色变化不够敏感,但公式对饱和度变化非常敏感(这主要是由图像中存在的 JPEG 压缩伪影引起的(示例伪影):

在此处输入图像描述

我认为第 4 个示例是最好的,因为它对颜色变化非常敏感,因此您不太可能删除笔迹,但问题是由于简单的扫描或压缩伪影引起的轻微颜色差异,您更容易拾取边框.

您有什么想法可以减轻在场边界内发生的一些颜色(饱和度)变化,是使用直方图吗?那里涉及一些量化以减少垃圾箱的数量?

我想听听人们有什么想法。

谢谢你。

4

2 回答 2

0

You might get some good results if you apply machine learning techniques to this problem.

For instance, if you want to label every pixel in your image as either a field border or not a field border you could try hand labeling the pixels in a few images, computing a bunch of features (you are currently only using color but I think oriented gradients might give some good results as well) and dump everything into a support vector machine (SVM).

OpenCV provides implementations of SVMs and gradient based features (descriptors) if you are familiar with C++ or Python:

Alternatively Matlab provides code to train SVMs and compute gradient features as well.

于 2013-04-25T18:01:54.183 回答
0

我不确定我是否完全理解您在这里的优先事项 - 第三张图片对我来说看起来不错(比第四张好得多)。我确实注意到第一个“S”的底部有一个间隙。

无论如何,由于您知道边界的位置并正在扫描这些像素,我建议为它们编译 H、S 和 V 的统计数据。对于 S 和 VI,假设您可以只计算平均值和标准差。由于角度的环绕性质并且它可以是未定义的,因此色调更加棘手。您可以量化并找到模式(或窗口加权模式)。你可以对盒子的非白色内容做同样的事情,这样你就可以量化笔触与盒子像素的性质。要缩小分布范围,您可以丢弃 x SD 之外的任何像素作为异常值并重新计算平均值和 SD。从那时起,您可以简单地根据像素接近的概率分布对像素进行分类。

对此的优化包括:

  • 忽略低饱和度的 H 分量。
  • 如果不确定,如果靠近已知边界位置,则偏向边界。
  • 不确定时,如果相邻像素已被归类为笔划,则运行第二遍偏向笔划。
于 2013-05-01T02:19:53.200 回答