Już powoli się gubię. Chcę obliczyć histogram dla kolorowego obrazu. Robię to tak:

dla koloru czerwonego (analogicznie zielony i niebieski) pseudokodopodobne coś:

int hCzerwony[256];
for(i=0;i<wys_obrazka;i++)
{
 for(j=0;j<szer_obrazka;j++)
 {
  pixel = obrazek.pixel(i,j);
  czerwony = pixel.red();
  hCzerwony[czerwony]++
 }
}

jak wyglądałoby to dla tablicy hWszystkie, czyli całego koloru?

I teraz: chcę wyrównać ten histogram. Czyli obliczyć histogram kumulacyjny na podstawie histogramu, przekształcić odpowiednio obraz [obliczając nowe wartości pikseli ze wzoru i histogramu kumulacyjnego]. Mam to zrobione, ale mam też niestety wątpliowści.

Czy wyrównanie histogramu stosuję do tablicy hCzerwony, hNiebieski, hZielony czy hWszystkie? Tzn. czy ten histogram kumulacyjny buduję używając we wzorze na kumulacyjny, czyli:

kumulacyjny[0] = histogram[0];
for(i=1;i<=255;i++)
 kumulacyjny[i+1] = kumulacyjny[i] + histogram[i-1];

histogramu hWszystkie? [Może inaczej: czy dla powyższego wzoru, zamiast tablicy 'histogram' poprawnie powinienem użyć tablicy hWszystkie?]

Kolejne pytanie: jeśli zastosuję wyrównanie dla całego histogramu, automatycznie zmieni się mój obraz. Ale czy jak po tym wyrównaniu narysuję "zwyły" histogram, dla zmienionego już obrazu, np. dla czerwonego, to czy on też powinien się zmienić?

Trochę namieszane, ale nie potrafię tego dokładniej opisać :/