Zmiana kontarstu

0

Witam.

Poszukuje algorytmu realizującego zmiane kontrastu w przediale od -100% do 100% w przestrzeni HSV i HSL. W sieci jest dużo stron z opisem tych przestrzeni ale nie znalazłem ani jendej opisującej jakieś operacje na obrazach zapisanych w tych systemach kodowania kolorów :/

0

Takie operacje robi się na liczbach a nie na rgb, hls, czy innym takim cmyku.

0

Rozumiem że takie operacje wykonuje się na liczbach. Jeżeli obraz zapisany jest w systemie RGB to operacje wykonujemy na 3 skłaowych R(0-255), G(0-255) i B(0-255).

To przykład zmiany kontrastu na obrazie którego kolory są kodowane w systemie RGB:

void Kontrast(Graphics::TBitmap OBRAZ, int kontrast)
{
double V = 1.2725
kontrast;
double V1 = 255/(255-2V);
double V2 = (255+2
V)/255;

int x1 = 0;
int x2 = OBRAZ->Width;

for( x1; x1 < x2; x1++ )
{
int y1 = 0;
int y2 = OBRAZ->Height;

 for( y1; y1 < y2; y1++ )
     {
     //pobierz kolor piksela i wyodrębnij 3 skladowe RGB
     //po wyodrębnieniu odwró kolor
     int R = (OBRAZ->Canvas->Pixels[x1][y1] & 0xFF);
     int G = (OBRAZ->Canvas->Pixels[x1][y1] & 0xFF00) >> 8;
     int B = (OBRAZ->Canvas->Pixels[x1][y1] & 0xFF0000) >> 16;

     //zmodyfikuj składowe r,g,b
     if( V > 0 )
         {
         R = (R < V)?0: (R > 255-V)?255: V1*(R-V);
         G = (G < V)?0: (G > 255-V)?255: V1*(G-V);
         B = (B < V)?0: (B > 255-V)?255: V1*(B-V);
         }

     else if( V < 0 )
         {
         R = -V + V2*R;
         G = -V + V2*G;
         B = -V + V2*B;
         }

      //sprawdź zakresy
      R = (R > 255)?255: (R < 0)?0: R;
      G = (G > 255)?255: (G < 0)?0: G;
      B = (B > 255)?255: (B < 0)?0: B;

      //zapisz nowy kolor piksela na OBRAZ
      OBRAZ->Canvas->Pixels[x1][y1] = (TColor)RGB(R,G,B);
      }
}      

}

Ale co zrobić gdy kolor na obrazie jest kodowany za pomocą systemu HSL lub HSV. Wtedy operacje będziemy przeprowadzać na liczbach H(0-360), S(0-1), L(0-1) lub V(0-1). Tylko jakie te operacje należy wykonać ?? Czy ktoś posiada algorytm zmiany kontrastu na składowych w tych systemach ??

0

Teoria koloru + matematyka + kod źródłowy w pascalu (nie tylko o kontraście) http://www.fho-emden.de/~hoffmann/hlscone03052001.pdf

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