图像在java中的平均阈值

时间:2015-11-02 11:42:34

标签: java image

我想找到图像的每个像素,然后我将得到像素值的总和,然后我会找到平均值。我将每个像素值与我得到的平均值进行比较,如果它是> 255,则像素值将变为1(表示黑色),如果< 255则将变为0(表示白色)。之后,我设置了新的RGB颜色,并绘制输出图像。 Input

根据我的概念,我认为输出图像将是黑白图像,但它只显示黑色。 Output

public class Imej {
    public void mapping(BufferedImage image) throws IOException {
        BufferedImage binary = new BufferedImage(image.getWidth(),
            image.getHeight(), BufferedImage.TYPE_BYTE_BINARY);
        int i, j;
        int w = image.getWidth();
        int h = image.getHeight();

        image.setRGB(i, j, new Color(pixel[i][j]).getRGB());
        ImageIO.write(binary,"png",output);
    }
}

这是readimage

public void readimage() {
    BufferedImage image = null;
    File f = null;
    try {
        image = ImageIO.read(new File(/** path **/));
        //System.out.println(image);
        mapping(image);
    } catch (Exception e) {
        e.printStackTrace();
        System.exit(1);
    }
}

public static void main(String[] args) {
    Imej a = new Imej();
    a.readimage();
}

1 个答案:

答案 0 :(得分:1)

你应该创建一个平均函数,它返回像素的平均值。像int mean(int[][] pixels, int i, int j)这样的东西。然后,您应该将if语句中的第一行更改为if (mean(pixel, i, j) > mean) { //...

        if (pixel[i][j] > mean)
                pixel[i][j]=1;

应该是

        if (mean(pixel, i, j) > mean)
                pixel[i][j]=0xFFFFFF;