Imagem preto e branco (Transformar)

Pessoal…
Tem como passar uma imagem para preto e branco?

Pq eu tenho um programa que procura certa coisa na tela, e se achar, ele a move para tar lugar, com 1 robot…
Mas existe ela de várias cores… Por isso o ideal seria passar ela para preto e branco, em vez de comparar com várias imagens…
Postei uma parte de meu código para vcs verem (DE UMA OLHADA NA LINHA 106):

[code]import java.awt.AWTException;
import java.awt.Rectangle;
import java.awt.Robot;
import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.lang.Thread.State;

import javax.imageio.ImageIO;

public class PegaGps {

private BufferedImage ball1
private BufferedImage img1gp, img2gp, img3gp, img4gp, img5gp, img6gp, img7gp, img8gp
private BufferedImage[] variasimagens;
private Robot robot;
private int padLeft, padTop, w, h;
private boolean flag;
private TSThread t = new TSThread();

public void setflag(boolean m) {
	flag = m;
	
	if (flag) {
		if (!t.getState().equals(State.TIMED_WAITING)) {
			System.out.println("Esperando 5 segundos...");
			try {
				Thread.sleep(5000);
				System.out.println("On");
			} catch (InterruptedException e) {
			}
			t = new TSThread();
		}
		t.start();
	}
}

public PegaGps() {

	padLeft = 1114;
	padTop = 732;
	w = 35;
	h = 35;

	try {
		img1 = ImageIO.read(new File("Imagens", "image1gp.png"));
		img2 = ImageIO.read(new File("Imagens", "image2gp.png"));
		img3 = ImageIO.read(new File("Imagens", "image3gp.png"));
		img4 = ImageIO.read(new File("Imagens", "image4gp.png"));
		img5 = ImageIO.read(new File("Imagens", "image5gp.png"));
		img6 = ImageIO.read(new File("Imagens", "image6gp.png"));
		img7 = ImageIO.read(new File("Imagens", "image7gp.png"));
		img8 = ImageIO.read(new File("Imagens", "image8gp.png"));
	} catch (IOException e) {
		e.printStackTrace();
	}

	try {
		robot = new Robot();
	} catch (AWTException e) {
		e.printStackTrace();
	}

	BufferedImage[] listagps = new BufferedImage[] { img1gp, img2gp,
			img3gp, img4gp, img5gp, img6gp, img7gp, img8gp };

	this.variasimagens = listagps;
}

class TSThread extends Thread {

	boolean result;

	public void run() {
		while (flag) {
			ball1 = robot.createScreenCapture(new Rectangle(padLeft,
					padTop, w, h));

			for (int z = 0; z < variasimagens.length; z++) {
				result = compareImage(variasimagens[z], ball1); //compara as imagens

				if (result == true) {
					// faz um tanto de coisa com o robot, movendo, clicando, delay
				}

			try {
				Thread.sleep(100);
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
		}

	}
}

private boolean compareImage(BufferedImage image1, BufferedImage image2) {
	if (image1.getWidth() != image2.getWidth()
			|| image1.getHeight() != image2.getHeight()) {
		return false;

	}

//COMPARA VARIOS PIXELS DAS IMAGENS, QUERIA QUE A COR NÃO FOSSE IMPORTANTE… PASSAR TUDO PARA PRETO E BRANCO.
for (int x = 5; x < image1.getWidth() - 5; x++) {
for (int y = 5; y < image1.getHeight() - 5; y++) {
if (image1.getRGB(x, y) != image2.getRGB(x, y)) {
return false;
}
}
}
return true;
}

}
[/code]

Talvez não tenha ficado claro.
Tenho uma classe que fica batendo foto de 1 quadrado da tela de 1 robot (imagine que nesse quadrado tenha uma imagem de um penguin amarelo).
Então eu comparo a imagem do penguin amarelo com a que eu tenho na pasta, e se for igual, ele faz algo com o penguin.

Mas existem penguins de todas as cores, não só amarelo, mas o desenho deles é sempre o mesmo, por isso tenho a necessidade de “ignorar” a cor do penguin.
Uma das soluções que eu pensei, é que quando eu bater a foto, passar ela para preto e branco, e comparar com a da pasta (passada para preto e branco também)

Vlws !