Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 有没有办法知道颜色的RGB值低于某一特定值的颜色是浅颜色_Java_Image Processing_Colors_Ocr_Rgb - Fatal编程技术网

Java 有没有办法知道颜色的RGB值低于某一特定值的颜色是浅颜色

Java 有没有办法知道颜色的RGB值低于某一特定值的颜色是浅颜色,java,image-processing,colors,ocr,rgb,Java,Image Processing,Colors,Ocr,Rgb,我正在尝试使用Tesseract OCR和楔形文字OCR从图像中提取文本 但是,如果文本为小字体或字体较薄,则生成的文本中会出现错误 我们需要获取文本的大多数图像返回的文本颜色较深,图像的其余部分颜色较浅。所以我想把所有较浅的颜色转换成白色,然后增加缓冲图像的大小,这样得到的文本就会正确。如果我的方法错误,请纠正我 任何人都可以提供关于如何实现这一点的任何信息,这将非常有帮助如果文本对于OCR引擎来说太小/太薄,那么您对此无能为力 如果是对比度问题导致OCR引擎出现问题,那么让暗色变暗、灯光变亮

我正在尝试使用Tesseract OCR和楔形文字OCR从图像中提取文本

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

我们需要获取文本的大多数图像返回的文本颜色较深,图像的其余部分颜色较浅。所以我想把所有较浅的颜色转换成白色,然后增加缓冲图像的大小,这样得到的文本就会正确。如果我的方法错误,请纠正我


任何人都可以提供关于如何实现这一点的任何信息,这将非常有帮助

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

如果是对比度问题导致OCR引擎出现问题,那么让暗色变暗、灯光变亮是一个好办法

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

float contrast = 0.2;
float factor = (x*(contrast + y)) / (x - contrast);
其中x>1.0表示对比度更大,x<1.0表示对比度更小,且 y是任何颜色分量的最大值,通常为1.0或255

编辑:判断颜色是否比其他颜色亮:

通过以下方式之一将颜色转换为灰度: 亮度法平均最突出和最不突出的颜色: 最大,G,B+minR,G,B/2

平均法只是简单地对值进行平均:R+G+B/3

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

比较结果值以查看哪一个更轻。
我意识到我从来没有完全回答过你的问题。我编辑了我的答案以反映解决方案。我将尝试您的答案。我有另一个主意。我可以考虑R<125 g<125 b<125作为较轻的颜色,如果任何一个RGB值大于125,则较暗的颜色转换为灰度比给出单独的成分将得到更稳定的结果。在某些情况下,您的方法会将颜色定义为深色,但如果您查看它,它将是浅色,反之亦然。亮度最适合人类感知,第二平均法R+G+B/3可能最适合OCR。