文本的彩色图像对二进制图像

时间:2015-10-30 12:17:20

标签: java image-processing colors ocr grayscale

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

对于黑色(或深色)背景下的白色字体,这非常简单。如果我的字体颜色和背景颜色高度对比,那仍然很容易。但是,我很难同时颜色都很暗或很浅。

我一直在使用此代码将彩色BufferedImage转换为二进制代码。它适用于对比色。但是当两种颜色都是黑暗或浅色时它会失败。

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) black-over-red 我得到一个坚实的黑色图像。

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

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

提前谢谢

修改 如果找到代码here。这可能对某些人有用。

0 个答案:

没有答案