Mudar pixel de uma imagem

Galera seguinte preciso pegar uma imagem bmp, e convertela para cinza, eu sei que tem o método

ColorSpace cs = ColorSpace.getInstance(ColorSpace.CS_GRAY);
ColorConvertOp op = new ColorConvertOp(cs, null);
image = op.filter(image, null);

ele faz isso automaticamente, mas como é um trabalho de faculdade preciso fazer isso manualmente, bom em c++ seria desta forma:

int R,G,B, i,j,L;
TColor cor;
for(i=0; i<=Image1->Width; i++)
for(j=0; j<=Image1->Height; j++)
{
cor=Image1->Canvas->Pixels[i][j];
R=GetRValue(cor);
G=GetGValue(cor);
B=GetBValue(cor);
L=0.299R + 0.587G + 0.114*B;
Image2->Canvas->Pixels[i][j]=RGB(L,L,L);
}

em java eu fiz assim:

image2=new BufferedImage(image.getWidth(),image.getHeight(),BufferedImage.TYPE_INT_RGB);
int lar=image.getWidth(),alt=image.getHeight();
int i=0,j=0,r,g,b,l,rgb;
while(i<alt){
while(j<lar){
Color cor=new Color(image.getRGB(j,i));
Color c=new Color(Math.round(0.299fcor.getRed()) + Math.round(0.587fcor.getGreen()) + Math.round(0.114f*cor.getBlue()));
image.setRGB(j,i,c.getRGB());
j++;
}
i++;
}

icon=new ImageIcon(image);
img=new JLabel(icon);
JFrame frame = new JFrame();
frame.setTitle(“Imagem”);
Container contentPane = frame.getContentPane();
contentPane.setLayout(new BorderLayout());
contentPane.add(new JScrollPane(img),BorderLayout.CENTER);
frame.setSize(500,500);
frame.setVisible(true);

bom deveria funcionar mas a imagem, não sofre nenhuma alteração, ela continua do mesmo jeito alguem pode me dar uma dica de como resolver isso?