Como te falei, depois que você tem uma instância da classe Raster, fica fácil manipular os samples.
Supondo que você quer abrir um arquivo JPEG, você pode usar a classe JPEGImageDecoder. Seria mais ou menos assim:
InputStream arquivoJpeg = // abra seu arquivo Jpeg aqui, como qualquer outro
JPEGImageDecoder jpegCodec = JPEGCodec.createJPEGDecoder(arquivoJpeg);
Raster raster = jpegCodec.decodeAsRaster();
Pronto, dessa forma você tem um objeto da classe Raster, que representa os samples da imagem. Com essa instância você consegue chamar o getPixels para obter um array com os samples da imagem. Dá uma olhada na documentação java doc da classe: http://java.sun.com/j2se/1.4.2/docs/api/java/awt/image/Raster.html
Bom, acho que isso responde sua pergunta inicial, de como adquirir os pixels da imagem.
Quanto a questão da binarização, Java já possui classes para isso, procure na documentação do Java 2D. Tem um tutorial no java world também, dá uma olhada em http://www.javaworld.com/javaworld/jw-09-1998/jw-09-media.html . Tem um livro sobre Java 2D no site da sun, http://java.sun.com/j2se/1.4.2/docs/guide/2d/spec/j2d-bookTOC.html
Bom, se o que você precisa fazer é algo mais avançado, existe a API Java Advanced Imaging API, mas essa eu nunca usei e não sei o que tem nela. Na Java 2D você consegue fazer operações básicas, rotacionar, binarização, usar lookup table, algumas transformações etc.
É isso, espero que tenha ajudado um pouco.
[]'s
carisio