Zielony Smok - logo witryny

Splot i jądro splotu

Przy obliczaniu danych koloru piksela wyjściowego można wykorzystywać wartości pikseli źródłowych otaczających dany piksel. Takie obliczenia nazywamy splotem:

rgb(r0,g0,b0) rgb(r1,g1,b1) rgb(r2,g2,b2)
rgb(r3,g3,b3) rgb(r4,g4,b4) rgb(r5,g5,b5)
rgb(r6,g6,b6) rgb(r7,g7,b7) rgb(r8,g8,b8)

Aby obliczyć wartości koloru dla piksela wynikowego używamy jądra splotu. Jądro splotu to macierz liczb:

która może być przedstawiona w postaci zwykłej tablicy 1-wymiarowej:

Wartości kolorów dla koloru wynikowego obliczamy następująco:

Mamy zestaw pikseli o kolorach:

rgb(20,185,250) rgb(40,165,240) rgb(60,145,230)
rgb(80,125,220) rgb(100,105,210) rgb(120,85,205)
rgb(140,66,200) rgb(160,45,195) rgb(180,25,190)

Stosujemy jądro:

Wykonujemy obliczenia:

Rysujemy piksel wynikowy:

     
  rgb(100,105,217)  
     

Jak widzimy – zgodnie z oczekiwaniami – piksel ma nieco więcej komponentu niebieskiego.

Jak widzimy przy obliczeniu jednego piksela należy przeprowadzić wiele obliczeń obciążających procesor komputera.

Przy obrazku o wymiarach 300 x 150 z jądrem 3 x 3 procesor musi wykonać 300 x 150 x 3 x 17 = 2 295 000 operacji

Dlatego filtrowanie splotowe najlepiej wykonać wcześniej, a następnie załadować gotowy, zapamiętany obraz.

Wartości w macierzy (jądra) splotu sumują się do 1.0. Gdy wartości te nie sumują się do jedności nastąpi zmiana jasności obrazu (co oczywiście można wykorzystać).

Wartości w macierzy jądra splotu mogą być również wyższe od jedności. Mogą też być liczbami ujemnymi.

Jądro nie musi mieć rozmiaru m x n = 3 x 3. m i n mogą być dowolnymi liczbami nieparzystymi (liczby parzyste prowadzą do zakłócenia symetrii tworzonego efektu). Należy jednak pamiętać o
zwiększeniu się obciążenia procesora.

Algorytmy pozwalające na zastosowanie filtrów splotowych przedstawiamy dalej w tekście.