Różnica w odczycie sredniej z photoshopem

0

Witam,pisze program, który z danego prostakata wylicza srednia z pixeli na wzor photoshopa(w opcji image->histogram).Problem w tym, ze wyniki sa troszke inne niz w photoshopie,mimo odczytu z tego samego obszaru rzecz jasna.Zastosowalem algorytm liczacy srednia arytmetyczna, byc moze w w sofcie adobe zastosowano jakas inna srednia.Zalezy mi,zeby te wyniki byly identyczne.Program jest dosc krótki.
Na formie sa 4 pola edit,button,obiekt Image.W buttonie jest ponizszy kodzik

p_x=StrToInt(this->Edit1->Text);
p_y=StrToInt(this->Edit2->Text);
e_x=StrToInt(this->Edit3->Text);
e_y=StrToInt(this->Edit4->Text);

float suma_srednich=0;
float srednia_pixela=0;
float liczba_pixeli=(e_x-p_x)*(e_y-p_y);
for (int x=p_x;x<=e_x;x++)
   {
      for (int y=p_y;y<=e_y;y++)
         {
            int kolor=this->Image1->Canvas->Pixels[x][y];
            int czerwony=GetRValue(kolor);
            int zielony=GetGValue(kolor);
            int niebieski=GetBValue(kolor);
            srednia_pixela=(czerwony+zielony+niebieski)/3;
            suma_srednich+=srednia_pixela;
          }
    }
float srednia_calk=suma_srednich/liczba_pixeli;
this->Edit5->Text=FloatToStr(srednia_calk);

Dzięki za pomoc

0

srednia_pixela=(czerwony+zielony+niebieski)/3;

a korekcja gamma

0

A mogłbyś troszke jaśniej??o co chodzi z ta korekcja gamma. i jaki to ma zwiazek ze srednia??

0

Średnia piksela to nie średnia arytmetyczna składowych, tylko średnia wg. wzoru:

Y = 0.3R + 0.59G + 0.11*B

Ponieważ uwzględnia on różną wrażliwość ludzkiego oka na poszczególne składowe.

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