Obter RGB de um BufferedImage

Alguém pode explicar como obter uma matriz de valor de rgb de um BufferedImage?

Eu tenho uma imagem em escala de cinza em um BufferedImage e preciso extrair uma matriz de 0 a 255 valores que descrevem a imagem.
Eu sei que o BufferedImage está correto porque eu posso salvá-lo em PNG. No entanto, se eu usarint[] dataBuffInt = ((DataBufferInt) heightMap.getDataBuffer()).getData(); Eu recebo um monte de números negativos enormes.

Eu procurei por um tempo e vi algumas referências para mudar alguns valores (postar) mas realmente não entendem o que estão dizendo.

Basicamente eu quero ir de um BufferedImage para uma matriz de 0 a 255 valores de RBG.
Eu não tenho certeza se expliquei corretamente, plaese pedir mais detalhes é necessário.

Editar:
@Garbage Obrigado pela dica. Eu tentei int [] dataBuffInt = heightMap.getRGB (0, 0, heightMap.getWidth (), heightMap.getHeight (), nulo, 0, heightMap.getWidth ()); Mas obtenha o mesmo resultado.
@Greg Kopff O resultado é 2 e foi definido como TYPE_INT_ARGB

questionAnswers(1)

yourAnswerToTheQuestion