Algorithm HSV颜色删除/表单退出字段

Algorithm HSV颜色删除/表单退出字段,algorithm,colors,computer-vision,imaging,document-imaging,Algorithm,Colors,Computer Vision,Imaging,Document Imaging,我正在写一个从表单图像中删除某些字段边界的系统。 字段中可能有手写内容,即使手写内容跨越字段边界,我也需要正确保留这些内容 我有两张图像:一张彩色图像(转换为HSV颜色空间)和一张黑白图像,每像素一行(这些图像由扫描仪生成) 我想从黑白图像中删除(提取)字段边界像素,因为 彩色图像中的颜色 我有一个优势,因为我事先知道场地的确切位置 字段边界线的宽度/高度 我当前的实现包括(针对每个字段),扫描彩色图像上的字段边框,并计算该字段边框的平均HSV值(因为我确切知道字段边框的位置,所以我只访问“字段

我正在写一个从表单图像中删除某些字段边界的系统。 字段中可能有手写内容,即使手写内容跨越字段边界,我也需要正确保留这些内容

我有两张图像:一张彩色图像(转换为HSV颜色空间)和一张黑白图像,每像素一行(这些图像由扫描仪生成)

我想从黑白图像中删除(提取)字段边界像素,因为 彩色图像中的颜色

我有一个优势,因为我事先知道场地的确切位置 字段边界线的宽度/高度

我当前的实现包括(针对每个字段),扫描彩色图像上的字段边框,并计算该字段边框的平均HSV值(因为我确切知道字段边框的位置,所以我只访问“字段边框”像素,但我也可以访问一些手写像素,如果它们穿过字段边界,其想法是它们不会使平均值倾斜太多)。一旦我有了场边界的“平均”HSV值,我再次扫描场边界,并为每个像素计算以下增量函数:

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

以下是一些字段示例:

彩色图像: 黑白图像未退出: 方程式中未使用饱和度的已删除黑白图像: 实际丢失的黑白图像和完整使用的公式(使用所有3个分量H、S和V)

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

我认为第四个例子是最好的,因为它对颜色变化非常敏感,所以 你不太可能删除笔迹,但问题是你更容易删除笔迹 由于简单的扫描或压缩造成的轻微色差而拾取边框 人工制品

你有什么想法来缓解一些颜色(饱和度)的变化 在字段边界内,是否使用直方图?其中涉及一些量化以 减少垃圾箱的数量

我想听听人们有什么想法


谢谢。

如果你将机器学习技术应用到这个问题上,你可能会得到一些好的结果

例如,如果您想将图像中的每个像素标记为场边界或非场边界,您可以尝试手动标记一些图像中的像素,计算一系列特征(您目前仅使用颜色,但我认为定向渐变也可能会提供一些好的结果)并将所有内容都转储到支持向量机(SVM)中

OpenCV提供了支持向量机和基于梯度的特征(描述符)的实现,如果您熟悉C++或Python:


或者,Matlab提供了训练支持向量机和计算梯度特征的代码。

我不确定我是否完全理解您在这里的优先级-第三个图像在我看来非常好(比第四个图像好得多)。我确实注意到第一个“S”的底部有一个间隙

在任何情况下,当你知道边界的位置并且正在扫描这些像素时,我建议为它们编辑H、S和V的统计数据。对于S和V,我想你可以只计算平均值和标准偏差。由于角度的环绕性质,色调更复杂,而且它可以是未定义的。你可以量化并找到模型e(或窗口加权模式)。您可以对方框中的非白色内容执行相同的操作,以便量化笔划与方框像素的性质。若要缩小分布范围,您可以将x SD之外的任何像素作为离群值丢弃,并重新计算平均值和SD。从这一点开始,您可以简单地根据其概率分布对像素进行分类更接近内在

这方面的优化包括:

  • 忽略低饱和度的H分量
  • 不确定时,如果靠近已知边界位置,则偏向边界
  • 当不确定时,如果相邻像素已被分类为笔划,则运行第二遍,偏向笔划

您是否尝试过对图像应用均值或中值滤波?这些滤波器可能会减少一些噪声/压缩伪影。噪声问题的一个经典答案是。对于这个特定的示例,您可以轻松地使用亮度作为阈值。如果亮度低于约50%,则是用户输入,否则就是表单。是吗你的输入比这里的更多?(既然你有HSV,你可以用V代替亮度。)