8
public class BlackWhite {

    public static void main(String[] args) 
    {
        try 
        {
         BufferedImage original = ImageIO.read(new File("colorimage"));
         BufferedImage binarized = new BufferedImage(original.getWidth(), original.getHeight(),BufferedImage.TYPE_BYTE_BINARY);

         int red;
         int newPixel;
         int threshold =230;

            for(int i=0; i<original.getWidth(); i++) 
            {
                for(int j=0; j<original.getHeight(); j++)
                {

                    // Get pixels
                  red = new Color(original.getRGB(i, j)).getRed();

                  int alpha = new Color(original.getRGB(i, j)).getAlpha();

                  if(red > threshold)
                    {
                        newPixel = 0;
                    }
                    else
                    {
                        newPixel = 255;
                    }
                    newPixel = colorToRGB(alpha, newPixel, newPixel, newPixel);
                    binarized.setRGB(i, j, newPixel);

                }
            } 
            ImageIO.write(binarized, "jpg",new File("blackwhiteimage") );
         }
        catch (IOException e) 
        {
                e.printStackTrace();
        }    
    }

     private static int colorToRGB(int alpha, int red, int green, int blue) {
            int newPixel = 0;
            newPixel += alpha;
            newPixel = newPixel << 8;
            newPixel += red; newPixel = newPixel << 8;
            newPixel += green; newPixel = newPixel << 8;
            newPixel += blue;

            return newPixel;
        }
}

白黒の出力画像が得られましたが、画像をズームすると、灰色の領域が見つかりました。出力画像に黒または白の色のみを含めたい。

現在のアプローチが正しいか間違っているか教えてください。もし私がそうなら、別の方法を提案してください。

4

1 に答える 1

16

画像をカラーから白黒に正しく変換しています。ただし、非可逆圧縮JPEGの結果として一部の色が作成されるため、出力を保存すると.

PNG出力を(またはそれ以外の場所に)保存するだけJPEGで、予想どおり、出力は白黒のみになります。

ImageIO.write(binarized, "png",new File("blackwhiteimage") );

たとえばPNG、ヒストグラムとして保存されたバイナリ イメージがある場合は、次のようになります (厳密には黒と白のピクセルのみ)。

PNG ヒストグラム

同じ画像を として保存した場合JPEG、ヒストグラムに白と黒の色に近いいくつかのピクセルが現れ始めることがわかります。

JPEG ヒストグラム

于 2013-02-13T10:12:55.490 に答える