как-то так:
Код:
procedure TForm1.ButtonClick(Sender: TObject);
var
x,y,t: integer;
c: byte;
img: pByteArray;
begin
t:=128; //порог
for y:=0 to image1.Picture.Height-1 do begin
img:=image1.Picture.Bitmap.ScanLine[y];
for x:=0 to image1.Picture.Width-1 do begin
c:=(img[x*3+0]+img[x*3+1]+img[x*3+2]) div 3; //(r+g+b)/3
if c<t then c:=0 else c:=255;
img[x*3+0]:=c;
img[x*3+1]:=c;
img[x*3+2]:=c;
end;
end;
end;
Писал прямо тут, на работоспособность естественно не проверял, но вроде не ошибся. Возможно в конце понадобится image1.Repaint;