automatyczna funkcja ustawiania jasności

0

np wyszukuje w obrazie najjasniejszy piksel RGB i przeskalowuje go tak by byl bialy proszę o jakieś podpowiedzi, wskazówki za bardzo nie wiem jak to ugryźć, ogarnąć

trochę już sobie to poukładałam

  1. funkcja wyszukująca najjaśnieszy piksel
  2. zmiana "najjaśniejszego" piksela w biały - czyli dodanie pewnych wartości
  3. zmiana jaśności wszystkich pikseli obrazu o wartość dodaną do wczśniej wyznaczonego najjaśniejszego piksela

jakieś podpowiedzi odnośnie zastosowanych funkcji ?

0

Idea jest taka:

var min,max,temp:byte;
    i,j:integer;
begin
//Za najmniejszy i największy uznaj pierwszy piksel
min:=byte(Image1.Canvas.Pixels[0,0] and $FF);
max:=byte(Image1.Canvas.Pixels[0,0] and $FF);

//Jesli na obrazku znajdziesz mniejszy od najmniejszego, niech ten nowy bedzie
//  najmniejszym. Analogicznie najwiekszy.
for j:=Image1.Height-1 downto 0 do
  for i:=Image1.Width-1 downto 0 do
    begin
    temp:=byte(Image1.Canvas.Pixels[i,j] and $FF);
    if temp<min then min:=temp;
    if temp>max then max:=temp;
    Application.ProcessMessages;
    end;

//Przechodzac przez wszystkie piksele obrazka, przeskaluj je z zakresu
//  (min-max) na (0-255)
for j:=Image1.Height-1 downto 0 do
  for i:=Image1.Width-1 downto 0 do
    begin
    if max-min=0 then
      temp:=0
    else
      temp:=byte(MulDiv((Image1.Canvas.Pixels[i,j] and $FF)-min, 255, max-min ));
    Image1.Canvas.Pixels[i,j]:=RGB(temp,temp,temp);
    Application.ProcessMessages;
    end;
end;

Powyższe jest dobre dla obrazów skali szarości. Jak chcesz mieć ustawianie nasycenia obrazów kolorowych, to dla każdej składowej RGB robisz to osobno.

Ważne jest przy skalowaniu sprawdzenie: jaki kolor pokazać, gdy (min=max) [cały obraz w jednym odcieniu].

Powyższy przekład jest ideowy - dobrze chyba wyjaśnia, ale jak chcesz analizować duże obrazki, to ze względu na szybkość zapomnij o Canvas.Pixels[x,y], tylko rozejrzyj się za ScanLine.

0

Moj program obsługuje zdjecia kolorowe jest dostępna opcja zmaiany jasności fotografii "manualnie ", kod który mi przedstawiłes próbuje jakoś przekształcic czy wyciągnąć wnioski niestety na razie mi nie idzie :-/ może dlatego ze jakiś czas odpoczywałam od delphi. Jesli pozwoli zebym cię zasypała pytaniami podaje swoj adres [email protected] . Nie chce być natrętna, dlatego będe czekała aż pierwszy się odezwiesz. Pozdrawiam

0

Jeśl ktos wie jak napisac ten programik prosze o kontakt nawet za kasę, goni mnie termin sobota 02.07 a sama nie zrobie.

1 użytkowników online, w tym zalogowanych: 0, gości: 1