【问题标题】:Is there any way to know the RGB values of the colors below a particular value is lighter color有没有办法知道低于特定值的颜色的RGB值是较浅的颜色
【发布时间】:2017-11-17 01:36:36
【问题描述】:

我正在尝试使用 Tesseract OCR 和 Cuneiform OCR 从图像中获取文本。

但是,如果文本为小字体或字体较细,则生成的文本会出现错误。

我们需要获取文本的大多数图像都以较深的颜色返回文本,而图像的其余部分以较浅的颜色返回。所以我正在考虑将所有较浅的颜色转换为白色,然后增加缓冲图像的大小,以便生成的文本正确。 (如果我的方法有误,请纠正我)。

谁能提供有关如何实现这一目标的任何信息将非常有帮助

【问题讨论】:

    标签: java image-processing colors ocr rgb


    【解决方案1】:

    如果文本对于您的 OCR 引擎来说太小/太薄,那么您无能为力。

    如果是对比度问题导致 OCR 引擎出现问题,那么让“暗”更暗而“亮”更亮是一个不错的方法。

    下面是我以前用过的一个对比公式,效果很好:

    float contrast = 0.2;
    float factor = (x*(contrast + y)) / (x - contrast);
    

    其中 x > 1.0 表示对比度更高,x

    编辑:判断一种颜色是否比另一种颜色浅:

    1. 通过以下方式之一将颜色转换为灰度:

    亮度方法平均最突出和最不突出的颜色: (max(R, G, B) + min(R, G, B)) / 2.

    平均方法只是对值进行平均:(R + G + B) / 3。

    光度法是平均值的更复杂的版本 方法。它还对值进行平均,但它形成加权平均值 来解释人类的感知。我们对绿色比 其他颜色,所以绿色的权重最大。公式为 光度为 0.21 R + 0.72 G + 0.07 B。

    1. 比较结果值,看看哪个更轻。

    【讨论】:

    • 我意识到我从来没有完全回答过你的问题。我编辑了答案以反映解决方案。
    • 我会试试你的答案。我有了另一个想法。我可以考虑是否 R
    • 转换为灰度将比检查单个组件提供更稳定的结果。在某些情况下,您的方法会将颜色定义为深色,但如果您查看它,它会是浅色,反之亦然。亮度最适合人类感知,第二平均方法 (R + G + B)/3 可能最适合 OCR。
    猜你喜欢
    • 1970-01-01
    • 2015-07-25
    • 2019-10-04
    • 2011-06-08
    • 1970-01-01
    • 2020-07-24
    • 1970-01-01
    • 2020-09-02
    • 2013-04-10
    相关资源
    最近更新 更多