A função abaixo converte uma imagem colorida em preto e branco, retornando uma BufferedImage.
import java.awt.color.ColorSpace;
import java.awt.image.ColorConvertOp;
import java.awt.image.BufferedImage;
import java.awt.image.BufferedImageOp;
public static BufferedImage converterParapretobranco(BufferedImage source) {
BufferedImageOp op = new ColorConvertOp(
ColorSpace.getInstance(ColorSpace.CS_GRAY), null);
return op.filter(source, null);
}