Jeffrey Cross
Jeffrey Cross

Kódové pole: Vytváření obrazových filtrů s množstvím matic

Barevné filtry umožňují měnit obraz o… dobře… filtrování barev z obrázku. Zpracování má sice vestavěné filtry, ale často je užitečné vytvořit si vlastní filtry. Například, Anaglyph Metody porovnávání stránek podrobně popisuje řadu různých filtrů, které jsou užitečné při vytváření 3D obrazů.

Jak uvidíte z webu, filtry jsou v podstatě matematické transformace, které jsou aplikovány na červené, zelené a modré složky obrazových bodů v obraze. Chcete-li vytvořit filtr, jako je filtr na stereo anaglyph místě, musíme vytáhnout každý pixel v původním obrazu, aplikovat maticovou operaci na jeho barevné komponenty a pak použít tuto novou hodnotu v odpovídajícím pixelu v novém obrazu. Tento Codebox vám ukáže, jak vytvořit vlastní filtry, jako jsou tyto.

Za prvé, trochu přezkoumání (potenciálně) chlupatě vypadající matematiky. Matice je dvojrozměrné pole čísel nazývaných prvky. Matice se používají v mnoha různých aplikacích, reprezentujících množiny rovnic, transformace na 3D objekty a barevné filtry (jako v tomto příkladu).

Matice je obvykle charakterizována svými rozměry: počtem prvků v jejích řádcích (čísla, která procházejí) a sloupci (čísla směřující nahoru a dolů). Podle konvencí je vždy vždy první řádek. Následující obrázek ukazuje 2 matice. Na levé straně je matice 2 řádky po 3, která se obecně nazývá matice 2 × 3. Vpravo je matice 3 řádků po 2 sloupcích, také nazývaná matice 3 × 2:

Chcete-li násobit dvě matice dohromady (pojmenujme je matice A a matice B), počet sloupců v matici A se musí rovnat počtu řádků v matici B. To je kritické - pokud to není pravda, pak násobení není definováno . (Toto je něco jako dělení nulou - je to prostě nemožné.)

Za předpokladu, že tato kritéria jsou splněna, bude mít produkt dvou matic (dovolí to matice C) stejný počet řádků jako matice A a stejný počet sloupců jako matice B. Prvky v matici C se rovnají součtu hodnot produkty odpovídajícího elementu sloupce v A časech elementů řádků v B. To je trochu složitější, ale následující obrázek by měl (doufejme!) toto trochu jasnější:

Následující náčrt, matrix_mult.pde, ukazuje, jak provést operaci Zpracování:

Při spuštění náčrtu byste měli vidět následující výstup:

[0][0] = 2.0 [0][1] = 0.0 [1][0] = 5.5 [1][1] = 2.0

Se základní matematikou jsme připraveni napsat kód filtru. Zbývající vráska je to obrazy v Zpracování jsou drženy v jednorozměrných polích barev, spíše než 2 dimenzionální pole (x, y) souřadnice, jak vysvětlil to v tomto velkém Images a Pixels konzultace Daniel Shiffman. V tutoriálu dává pěkný vzorec, který můžete použít k mapování souřadnic (x, y) na pozici v poli obrázků:

pozice v poli = x + IMAGE_WIDTH * y

Následující obrázek by měl pomoci ilustrovat většinu konceptů v práci:

Bez dalšího průzkumu je zde náčrt nazvaný filter.pde, který implementuje filtr pomocí násobení matice:

Více: Zde naleznete všechny sloupce Codebox

V hale Maker:


Začínáme se zpracováním Naučte se programování počítače jednoduchým způsobem pomocí zpracování, což je jednoduchý jazyk, který umožňuje používat kód pro vytváření výkresů, animací a interaktivní grafiky. Kurzy programování obvykle začínají teorií, ale tato kniha vám umožňuje skočit přímo do kreativních a zábavných projektů. Je ideální pro každého, kdo se chce naučit základní programování a slouží jako jednoduchý úvod do grafiky pro lidi s některými programovacími dovednostmi.

Podíl

Zanechat Komentář