如何将图像量化为MxN块

时间:2014-12-02 05:49:34

标签: java image graphics ascii

当然,我正在编写一个关于图像到ASCII转换的程序。我已经将图像转换为灰度,但我不知道将图像量化为MxN块的代码

  1. 对于MxN大小的每个子图像,计算其平均灰度值
  2. 将计算出的平均灰度值存储到新图像中)。
  3. 以下是该计划:

    public static char[][] imageToASCII(Image img, int blockWidth, int blockHeight)
    {
        {
            // Convert image from type Image to BufferedImage
            BufferedImage bufImg = convert(img);
    
            // Scan through each row of the image
            for(int j=0; j<bufImg.getHeight(); j++)
            {
                // Scan through each columns of the image
                for(int i=0; i<bufImg.getWidth(); i++)
                {
                    // Returns an integer pixel in the default RGB color model
                    int values=bufImg.getRGB(i,j);
                    // Convert the single integer pixel value to RGB color
                    Color oldColor = new Color(values);
    
                    int red = oldColor.getRed();        // get red value
                    int green = oldColor.getGreen();    // get green value
                    int blue = oldColor.getBlue();  // get blue value
    
                    // Convert RGB to grayscale using formula
                    // gray = 0.299 * R + 0.587 * G + 0.114 * B
                    double grayVal = 0.299*red + 0.587*green + 0.114*blue;
    
                    // Assign each channel of RGB with the same value
                    Color newColor = new Color((int)grayVal, (int)grayVal, (int)grayVal);
    
                    // Get back the integer representation of RGB color
                    // and assign it back to the original position
                bufImg.setRGB(i, j, newColor.getRGB());
    
            }           
        return null;
    

1 个答案:

答案 0 :(得分:0)

也许你只需要将图像分成MxN大小的块。这类似于视频编码中的微块。