java.awt.image.BufferedImage的二进制化规则是什么?

时间:2014-12-26 07:28:51

标签: java image awt bufferedimage color-space

我可以使用此代码

BufferedImage image = ImageIO.read(new File("toolbar.png"));
BufferedImage grayImage = new BufferedImage(image.getWidth(), image.getHeight(), BufferedImage.TYPE_BYTE_BINARY);
Graphics graphics = grayImage.getGraphics();
graphics.drawImage(image, 0, 0, null);
graphics.dispose();

将BufferedImage从TYPE_3BYTE_BGR转换为TYPE_3BYTE_BGR。

例如,输入:

enter image description here

输出:

enter image description here

我知道基于计算规则将彩色像素变成白色像素或黑色像素。它是什么,我该怎么做才能调整它?感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

上面代码中的转换是一种隐式转换,因为输入图像(RGB)具有更多的目标颜色(二进制索引颜色)。

这种转换为二进制颜色的“规则”可以简单地描述为“选择目的地中最接近输入颜色的颜色”。由于您唯一的颜色是黑色和白色,所有平均R,G和B小于50%的颜色将变为黑色,其余颜色为白色。没有办法直接“调整”这个。

但是,您可以直接控制阈值或从输入计算阈值,以获得更好的图像。有关示例,请参阅示例this blog