Zpracování obrázků a obrázků

Dokončeno

Než začneme zkoumat zpracování obrázků a další funkce počítačového zpracování obrazu, je užitečné zvážit, co je ve skutečnosti obrázek v kontextu dat počítačového programu.

Obrázky jako pole pixelů

Pro počítač je obrázek pole číselných hodnot pixelů . Představte si například následující pole:

 0   0   0   0   0   0   0  
 0   0   0   0   0   0   0
 0   0  255 255 255  0   0
 0   0  255 255 255  0   0
 0   0  255 255 255  0   0
 0   0   0   0   0   0   0
 0   0   0   0   0   0   0

Matice se skládá ze sedmi řádků a sedmi sloupců, které představují hodnoty pixelů obrázku o velikosti 7 ×7 pixelů (což se označuje jako rozlišení obrázku). Každý pixel má hodnotu mezi 0 (černou) a 255 (bílou); s hodnotami mezi těmito hranicemi představujícími odstíny šedé. Obrázek reprezentovaný tímto polem vypadá podobně jako následující (zvětšený) obrázek:

Diagram of a grayscale image.

Matice hodnot pixelů pro tento obrázek je dvojrozměrná (představující řádky a sloupce nebo souřadnice x a y ) a definuje jeden obdélník hodnot pixelů. Jedna vrstva hodnot pixelů, jako je tato, představuje obrázek ve stupních šedé. Ve skutečnosti je většina digitálních obrázků multidimenzionální a skládá se ze tří vrstev (označovaných jako kanály), které představují červené, zelené a modré barevné odstíny (RGB). Mohli bychom například reprezentovat barevný obrázek definováním tří kanálů hodnot pixelů, které vytvoří stejný čtvercový obrazec jako v předchozím příkladu stupně šedé:

Red:
 150  150  150  150  150  150  150  
 150  150  150  150  150  150  150
 150  150  255  255  255  150  150
 150  150  255  255  255  150  150
 150  150  255  255  255  150  150
 150  150  150  150  150  150  150
 150  150  150  150  150  150  150

Green:
 0    0    0    0    0    0    0          
 0    0    0    0    0    0    0
 0    0   255  255  255   0    0
 0    0   255  255  255   0    0
 0    0   255  255  255   0    0
 0    0    0    0    0    0    0
 0    0    0    0    0    0    0

Blue:
 255  255  255  255  255  255  255  
 255  255  255  255  255  255  255
 255  255   0    0    0   255  255
 255  255   0    0    0   255  255
 255  255   0    0    0   255  255
 255  255  255  255  255  255  255
 255  255  255  255  255  255  255

Tady je výsledný obrázek:

Diagram of a color image.

Fialové čtverce jsou reprezentovány kombinací:

Red: 150 
Green: 0 
Blue: 255 

Žluté čtverce ve středu jsou reprezentovány kombinací:

Red: 255
Green: 255
Blue: 0

Zpracování obrázků pomocí filtrů

Běžným způsobem, jak provádět úlohy zpracování obrázků, je použít filtry , které upravují hodnoty pixelů obrázku tak, aby vytvořily vizuální efekt. Filtr je definován jedním nebo více poli hodnot pixelů, označovanými jako jádra filtru. Můžete například definovat filtr s jádrem 3x3, jak je znázorněno v tomto příkladu:

-1 -1 -1
-1  8 -1
-1 -1 -1

Jádro se pak splete napříč obrázkem, vypočítá vážený součet pro každou 3x3 opravu pixelů a přiřadí výsledek novému obrázku. Je jednodušší pochopit, jak filtrování funguje, a to prozkoumáním podrobného příkladu.

Začněme obrázkem ve stupních šedé, který jsme prozkoumali dříve:

 0   0   0   0   0   0   0  
 0   0   0   0   0   0   0
 0   0  255 255 255  0   0
 0   0  255 255 255  0   0
 0   0  255 255 255  0   0
 0   0   0   0   0   0   0
 0   0   0   0   0   0   0

Nejprve použijeme jádro filtru na levou horní opravu obrázku a vynásobíme každou hodnotu pixelu odpovídající hodnotou váhy v jádru a přidáme výsledky:

(0 x -1) + (0 x -1) + (0 x -1) +
(0 x -1) + (0 x 8) + (0 x -1) +
(0 x -1) + (0 x -1) + (255 x -1) = -255

Výsledek (-255) se stane první hodnotou v nové matici. Pak přesuneme jádro filtru o jeden pixel doprava a zopakujeme operaci:

(0 x -1) + (0 x -1) + (0 x -1) +
(0 x -1) + (0 x 8) + (0 x -1) +
(0 x -1) + (255 x -1) + (255 x -1) = -510

Výsledek se opět přidá do nového pole, které teď obsahuje dvě hodnoty:

-255  -510

Proces se opakuje, dokud se filtr nepřekonvolí na celý obrázek, jak je znázorněno v této animaci:

Diagram of a filter.

Filtr se přepočítá přes obrázek a vypočítá novou matici hodnot. Některé hodnoty můžou být mimo rozsah hodnot 0 až 255 pixelů, takže se hodnoty upraví tak, aby se vešel do tohoto rozsahu. Vzhledem k tvaru filtru se nevypočítá vnější okraj pixelů, takže se použije hodnota odsazení (obvykle 0). Výsledné pole představuje nový obrázek, ve kterém filtr transformoval původní obrázek. V tomto případě měl filtr vliv na zvýraznění okrajů obrazců na obrázku.

Pokud chcete vidět efekt filtru jasněji, tady je příklad stejného filtru použitého na skutečný obrázek:

Původní obrázek Filtrovaný obrázek
Diagram of a banana. Diagram of a filtered banana.

Vzhledem k tomu, že je filtr konvolvovaný napříč obrázkem, tento druh manipulace s obrázky se často označuje jako konvoluční filtrování. Filtr použitý v tomto příkladu je konkrétním typem filtru (označovaného jako laplace filtr), který zvýrazní hrany na objektech na obrázku. Existuje mnoho dalších druhů filtrů, které můžete použít k vytváření rozmazaných, zaostřování, inverze barev a dalších efektů.