Cześć, kwestia polega na tym. Wczytuję bitmapę czarno-białą. Pokazuję jej histogram. Następnie użytkownik może sobie rozciągnąć histogram. Prosta operacja.

Ale albo mam zły wzór na otrzymanie koloru nowego piksela, albo coś źle robię:

for i:=0 to Bitmap.Height do
    for j:=0 to Bitmap.Width do
    begin
      r:=GetRValue(Bitmap.Canvas.Pixels[i,j]);
      new:=Trunc((255/(b-a))*(r-a));
      Bitmap.Canvas.Pixels[i, j]:=RGB(new, new, new);
    end;

Gdzie:
a - to lewa "granica" rozciągania histogramu
b - prawa

Po pierwsze - nie dość, że zmienia się tylko część bitmapy(ok 2/3 - dolna część pozostaje bez zmian), to jeszcze zmienia się źle. Tzn. zamiast się zaciemniać/rozjaśniać, pojawia się zupełnie inny, aczkolwiek ciekawy efekt :)