Zpracování obrázků a obrázků
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:
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:
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:
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 |
---|---|
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ů.