6 Python knihoven pro zpracování obrazu pro efektivní vizuální manipulaci

Lidské vnímání světa je silně ovlivněno zrakem. Dokážeme rozpoznávat objekty, vnímat hloubku a dokonce odhadovat povrch jen na základě vizuálního vjemu.

Přestože se zdá, že vidění je přirozené a nenáročné, programování počítačů k napodobení této schopnosti je poměrně složitý úkol. Nicméně, v průběhu let byly vyvinuty specializované algoritmy, které počítačům umožňují analyzovat a interpretovat obrazová data. Tyto postupy jsou shrnuty pod pojmem zpracování obrazu.

Tyto algoritmické postupy jsou implementovány v kódu a distribuovány jako softwarové knihovny, kterým se podíváme na zoubek v tomto textu.

Co je zpracování obrazu?

Zpracování obrazu je specifická disciplína v rámci širší oblasti počítačového vidění. Zahrnuje sadu operací aplikovaných na obrázky s cílem připravit je pro strojové učení a obecné použití v umělé inteligenci.

Je to mocný nástroj pro detekci a identifikaci objektů na obrázcích. Tato schopnost má široké uplatnění, od vývoje autonomních vozidel a robotů po klasifikaci obrázků s cílem odhalovat například nevhodný obsah.

Možnosti využití zpracování obrazu

Zpracování obrazu má uplatnění v celé řadě odvětví. Mezi nejběžnější a nejužitečnější příklady patří:

  • Lékařské zobrazování a diagnostika, kde umělá inteligence analyzuje snímky z vyšetření a pomáhá s diagnostikou.
  • Zabezpečení, kde se využívá pro biometrické systémy a bezpečnostní systémy budov.
  • Robotika, pro vývoj robotů, kteří jsou schopni „vidět“ a vnímat své okolí. Příkladem jsou autonomní vozidla.
  • Rozšířená realita, například aplikace filtrů na objekty. Zpracování obrazu umožňuje rozpoznávat objekty a aplikovat na ně vybrané filtry.
  • Analýza dopravy, včetně čtení registračních značek vozidel. To se využívá pro účely vymáhání práva, například identifikace řidičů, kteří projedou na červenou, nebo při měření rychlosti.

Při zpracování obrazu se používá celá škála algoritmů, například morfologická dilatace a eroze, Gaussova transformace, Fourierova transformace, detekce hran a zpracování obrazu pomocí vlnkové transformace.

Bez softwarových knihoven by bylo nutné tyto algoritmy implementovat od nuly. Naštěstí existují předem napsané knihovny, které implementují tyto požadované funkce. Zde je přehled některých z nejpoužívanějších:

OpenCV

OpenCV je jednou z nejpoužívanějších knihoven pro zpracování obrazu. Používá se pro implementaci algoritmů počítačového vidění a pro strojové učení a zpracování obrazu.

Navíc je volně dostupná jako open-source. OpenCV je také velmi flexibilní, protože ho lze používat s celou řadou programovacích jazyků, včetně Pythonu, C++ a Javy.

Knihovna obsahuje mnoho funkcí a algoritmů, které jsou potřeba pro zpracování obrazu. Patří mezi ně detekce hran, extrakce prvků, transformace, rotace, změna velikosti a vylepšení obrazu.

Scikit-obraz

Scikit-image nabízí intuitivní a efektivní způsob manipulace s obrazem. Umožňuje vstup/výstup obrazových dat, transformaci, filtrování, segmentaci, extrakci rysů, obnovu obrazu a geometrické transformace.

Tato knihovna se bez problémů integruje s dalšími knihovnami pro vědecké výpočty, což uživatelům umožňuje snadno upravovat a vylepšovat obrázky pro různé účely, od jednoduchých operací jako je změna velikosti až po pokročilé úkoly jako je rozpoznávání objektů nebo obnova poškozených obrázků.

SimpleITK

SimpleITK je zjednodušená verze knihovny ITK. ITK (Insight Toolkit) je multiplatformní open-source knihovna pro analýzu obrazu. SimpleITK podporuje čtení a zápis obrázků z více než 20 formátů souborů.

Kromě Pythonu podporuje i další programovací jazyky, jako je R, Java, Ruy, Lua, C++ a C#. Poskytuje bohatou škálu funkcí pro práci s obrázky.

SimpleITK je také výkonná, protože umožňuje zpracování 2D, 3D, 4D a dokonce i 5D obrazů. Podporuje také paralelní zpracování pro urychlení operací.

SciPy

SciPy je blízká příbuzná populární knihovny NumPy pro numerické analýzy. SciPy se používá pro vědecké výpočty, zatímco NumPy se specializuje na numerické výpočty. Protože SciPy využívá NumPy, je velmi rychlá a efektivní.

Podporuje i zpracování vícerozměrných obrazů. Knihovna má funkce pro filtrování, morfologii, měření objektů a B-spline interpolaci.

Pillow

Pillow je nástupce knihovny Python Imaging Library (PIL). PIL byla knihovna pro zpracování obrazu v Pythonu, ale fungovala jen s Pythonem 2 a byla ukončena v roce 2011.

Pillow je forkovaná verze tohoto projektu. Umožňuje načítání obrázků z různých formátů souborů do vlastní interní reprezentace. S vnitřní reprezentací Pillow se pracuje efektivně a poskytuje poměrně robustní funkce pro zpracování obrazu. Podporuje rychlý přístup k datům a provádění operací jako je rotace a změna velikosti.

pgmagick

pgmagick je open-source knihovna pro Python, kterou vytvořil Hideo Huttori. Funguje jako wrapper pro knihovnu GraphicsMagick, která slouží pro čtení, zápis a manipulaci s obrázky.

Tato knihovna podporuje více než 88 různých formátů obrázků a nabízí množství funkcí, včetně zjišťování rozměrů obrázků, ostření nebo rozmazání, detekce hran, jejich otáčení, solarizace, porovnávání a ukládání na disk.

pgmagick lze použít i pro vytváření GIFů, vkládání textu do obrázků a převod obrázků z různých formátů.

Závěrem

Tento seznam sice není úplný, ale zmiňované knihovny patří k nejrozšířenějším v oblasti zpracování obrazu. Používá je mnoho výzkumníků i komerčních subjektů pro implementaci systémů, které jsou schopny detekovat, segmentovat a analyzovat objekty.

To se ukázalo jako velmi přínosné v oblasti umělé inteligence a robotiky. Alternativně lze pro analýzu obrazu používat rozhraní API místo knihoven.