Brillo incorrecto que convierte la imagen a escala de grises en Java

Estoy convirtiendo una imagen a escala de grises en Java con el siguiente código:

BufferedImage originalImage = ImageIO.read(new File("/home/david/input.bmp"));
BufferedImage grayImage = new BufferedImage(originalImage.getWidth()
                                          , originalImage.getHeight()
                                          , BufferedImage.TYPE_BYTE_GRAY);

ColorSpace gray = ColorSpace.getInstance(ColorSpace.CS_GRAY);
ColorConvertOp colorConvert = new ColorConvertOp(gray, null);
colorConvert.filter(originalImage, grayImage);

ImageIO.write(grayImage, "bmp", new File("/home/david/output_java.bmp"));

Eso parece funcionar, pero el problema es que la imagen de salida es muy diferente de la imagen en escala de grises generada por gimp (ver ejemplos a continuación).

¿Puedo controlar de alguna manera cómo se genera la imagen? ¿Cómo puedo hacer que el resultado sea más similar al resultado de gimp?

Imagen original

Imagen en escala de grises generada en Java:

magen de escala de grises generada en Gimp Image -> Mode -> Grayscale):

BTW: Tengo un montón de imágenes que provienen de ffmpeg (con opción de gris) y son como imágenes de Gimp, por eso quiero mi imagen de esa manera.

Respuestas a la pregunta(2)

Su respuesta a la pregunta