Приведенный ниже код (из этой темы: Как использовать новую функцию WIC в Delphi 2010 для файлов Canon? ) открывает изображение WIC в BitMap.
Однако, если динамический диапазон значений пикселей WIC велик, этот код теряет много информации, поскольку он должен масштабировать широкий динамический диапазон в нижний диапазон, который может принять пиксель битовой карты.
procedure TForm116.Button1Click(Sender: TObject);
var
WIC: TWICImage;
begin
WIC := TWICImage.Create;
try
WIC.LoadFromFile('MyFilename.raw');
Image1.Picture.Graphic.Assign(WIC);
finally
WIC.Free;
end;
end;
Может кто-нибудь показать мне пример кода, который позволил бы мне считывать значения пикселей непосредственно из TWICImage, чтобы я мог получить доступ к данным изображения без потери информации? Мне нужны значения интенсивности (серая шкала) каждого пикселя, которые, возможно, можно рассчитать из значений RGB, если они не доступны напрямую?
Что-то вроде:
var
PixelValue: Integer; // Grayscale
for Row := 0 to WIC.Width do
for Col := 0 to WIC.Height
PixelValue := WIC.GetPixelValue(Row, Col);