Данная функция на Delphi преобразовывает цветное изображение в черно-белое(оттенки серого):
function CreateGrayBmp (Source: TBitmap): TBitmap;
var
Table: array[Byte] of TRGBQuad;
I: Integer;
begin
Result := TBitmap.Create;
with Result do
begin
PixelFormat := pf8Bit;
Width := Source.Width;
Height := Source.Height;
for I := Low(Table) to High(Table) do
with Table[I] do
begin
rgbRed := I;
rgbGreen := I;
rgbBlue := I;
rgbReserved := 0;
end;
if (SetDIBColorTable(Canvas.Handle, Low(Table), High(Table), Table) = 0) then
RaiseLastWin32Error;
Canvas.Draw(0, 0, Source);
end;
end;