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 :)