Cvičení 6 - Diskrétní konvoluce

A) Teoretický úvod

Vzhledem k tomu, že konvoluce je důležitou operací v teorii signálů a že obraz sám je dvojrozměrný diskrétní signál, používá se konvoluce v souvislosti se zpracováním obrazu velmi často. Kromě toho, že konvoluce je jádrem téměř všech pokročilejších transformací obrazu je rovněž nedílnou součástí některých základních metod jako např. detekce hran, kde se jako konvoluční jádro používá některý ze známých hranových detektorů.

Operaci konvoluce lze pro dvojrozměrný obraz vyjádřit následujícím vztahem, v němž symbol g(x,y) značí výstupní obraz, f(x,y) vstupní obraz a h(x,y) konvoluční jádro o rozměrech RxS.

Graficky si lze konvoluci dvou signálů (zde zpravidla obrazu a masky) představit jako postupné prostorové posouvání převrácené masky (konvolučního jádra) po obrazu a stanovení odezvy. Pro každou vzájemnou polohu obrazu a masky je vypočítán součet hodnot pixelů obrazu vážených příslušnými koeficienty masky přičemž tento součet určuje výstupní hodnotu signálu (obrazu) v daném bodě.

B) Úkoly

  1. Vytvořte funkci [J] = ImageConv(I,M) realizující konvoluci vstupního obrazu I a konvolučního jádra M. Funkci implementujte pro obecný rozměr jádra RxS podle definičního vzorce bez použití interní funkce tak, aby rozměry vstupního a výstupního obrazu byly totožné.

  2. Navrhněte a pomocí funkce z minulého bodu ověřte správnost jádra pro tyto operace:

    • posunutí obrazu o pět pixelů vpravo s ořezáním
    • roztažení histogramu obrazu o 30 % se saturací
    • inverze obrazu
    • průměrování maskou velikosti 3x3, 5x5 a 7x7, určete časovou náročnost všech tří výpočtů a odhadněte typ časové závislosti výpočtu na velikosti masky
  3. Proveďte časové srovnání vámi implementované funkce a knihovních funkcí conv2 a imfilter nad obrazem [obraz01.bmp] při průměrování maskou o velikosti 3x3, 5x5 a 7x7. Výsledky zobrazte přehledně do jednoho okna včetně časových poměrů.

C) Dobré vědět

  • Z hlediska realizovatelnosti různých výpočtů pomocí konvoluce je důležité uvědomit si mechanismus výpočtu výsledné hodnoty. Matematicky se jedná o součet součinů, čili ve funkci se objevují pouze aditivní a multiplikativní složky. Pomocí konvoluce např. nelze na obraz aplikovat operaci přičtení konstanty (změna jasu).

  • Povolené funkce: imread, conv2, imfilter, tic, toc, clock, etime

  • Nepovolené funkce: -

D) Ilustrace výsledků