Java 将文本的彩色图像转换为二值图像

Java 将文本的彩色图像转换为二值图像,java,image-processing,colors,ocr,grayscale,Java,Image Processing,Colors,Ocr,Grayscale,我正在开发和OCR。OCR应在任何其他颜色的普通背景上接受任何颜色字体的文本图片。为此,我需要将输入图像转换为二进制(1位图像) 在黑色(或黑色)背景上使用白色字体时,这非常简单。如果我的字体颜色和背景颜色对比度很高,这仍然很容易。然而,当两种颜色同时相当暗或亮时,我遇到了困难 我一直在使用此代码将彩色buffereImage转换为二进制。它适用于对比色。但当两种颜色都是深色或浅色时,它就失效了 public static BufferedImage binarizeImage(Buffered

我正在开发和OCR。OCR应在任何其他颜色的普通背景上接受任何颜色字体的文本图片。为此,我需要将输入图像转换为二进制(1位图像)

在黑色(或黑色)背景上使用白色字体时,这非常简单。如果我的字体颜色和背景颜色对比度很高,这仍然很容易。然而,当两种颜色同时相当暗或亮时,我遇到了困难

我一直在使用此代码将彩色
buffereImage
转换为二进制。它适用于对比色。但当两种颜色都是深色或浅色时,它就失效了

public static BufferedImage binarizeImage(BufferedImage img_param)
{
    //grey
    BufferedImage img_grey = new BufferedImage(img_param.getWidth(), img_param.getHeight(),
            BufferedImage.TYPE_BYTE_GRAY);
    Graphics g1 = img_grey.getGraphics();
    g1.drawImage(img_param, 0, 0, null);
    g1.dispose();
    //showImageBuffer(img_grey);

    //b&w
    BufferedImage image = new BufferedImage(img_grey.getWidth(), img_grey.getHeight(),
            BufferedImage.TYPE_BYTE_BINARY);
    Graphics g2 = image.getGraphics();
    g2.drawImage(img_grey, 0, 0, null);
    g2.dispose();
    //showImageBuffer(img_grey);
    return image;
}
例如,如果我尝试对该图像进行二值化:(红色通道:255,蓝色和绿色通道:0) 我得到了一张纯黑的照片

有人能帮助我,并提示我采取更可靠的方法吗。根据上下文转换为二进制的代码

此外,我还希望在转换为二进制后,字体颜色始终为白色,背景为黑色

先谢谢你

编辑: 如果找到一个代码。这可能对某些人有用