Obtener RGB de un BufferedImage

¿Alguien puede explicar cómo obtener una matriz de valor rgb de un BufferedImage?

Tengo una imagen en escala de grises en un BufferedImage y necesito extraer una matriz de 0 a 255 valores que describen la imagen.
Sé que el BufferedImage es correcto porque puedo guardarlo en PNG. Sin embargo, si usoint[] dataBuffInt = ((DataBufferInt) heightMap.getDataBuffer()).getData(); Tengo un montón de grandes números negativos.

He buscado por un tiempo y he visto algunas referencias para cambiar algunos valores (enviar) pero realmente no entiendo lo que están diciendo.

Básicamente, quiero pasar de un BufferedImage a una matriz de 0 a 255 valores RBG.
No estoy seguro de que me haya explicado correctamente, es necesario pedir más detalles.

Editar:
Gracias @Garbage por la punta. Intenté int [] dataBuffInt = heightMap.getRGB (0, 0, heightMap.getWidth (), heightMap.getHeight (), null, 0, heightMap.getWidth ()); Pero consigue el mismo resultado.
@Greg Kopff El resultado es 2 y se estableció en TYPE_INT_ARGB

Respuestas a la pregunta(1)

Su respuesta a la pregunta