Java 如何使用BuffereImage在图像上应用黑白过滤器?

Java 如何使用BuffereImage在图像上应用黑白过滤器?,java,image,swing,image-processing,filter,Java,Image,Swing,Image Processing,Filter,我有这个代码,可以使用BufferedImageOp class DecreaseSharpenFilter implements MyFilter{ public BufferedImage processImage(BufferedImage image) { float[] decreaseSharpnessMatrix = {0.0f, +1.0f, 0.0f, +1.0f , -5.0f, +1.0f, 0.0f, +1.0f, 0.0f };

我有这个代码,可以使用
BufferedImageOp

class DecreaseSharpenFilter implements MyFilter{
    public BufferedImage processImage(BufferedImage image) {
        float[] decreaseSharpnessMatrix = {0.0f, +1.0f, 0.0f, +1.0f , -5.0f, +1.0f, 0.0f, +1.0f, 0.0f };
         BufferedImageOp DecreaseSharpenFilter = new ConvolveOp(new Kernel(3, 3, decreaseSharpnessMatrix),
                    ConvolveOp.EDGE_NO_OP, null);
                return DecreaseSharpenFilter.filter(image, null);
    }
}

现在我想通过修改这些线将图像转换为黑白,但我真的不知道在矩阵中使用什么值以及如何卷积它

您只需创建一个颜色空间,然后将其传递给您的转换器

ColorSpace cs = ColorSpace.getInstance(ColorSpace.CS_GRAY);  
ColorConvertOp op = new ColorConvertOp(cs, null);
BufferedImage image = op.filter(image, null);

您只需要创建一个颜色空间,然后将其传递给您的convertOP

ColorSpace cs = ColorSpace.getInstance(ColorSpace.CS_GRAY);  
ColorConvertOp op = new ColorConvertOp(cs, null);
BufferedImage image = op.filter(image, null);

您还可以告诉我如何调整对比度和裁剪图像使用相同的上述行吗?裁剪可以使用内置于getSubimage(x,y,w,h)函数的BuffereImage。对比度控制是有点棘手,所以看看这个家伙的方法,并尝试修补它。您还可以告诉我如何调整对比度和裁剪图像使用相同的上述行吗?裁剪可以使用内置于getSubimage(x,y,w,h)函数的BuffereImage。对比度控制是有点棘手,所以看看这个家伙的方法,并尝试修补它。