Cvičení 3 - Aritmetické operace

A) Teoretický úvod

Obdobně jako u veličin skalárních jsou i u vektorových a maticových definovány elementární aritmetické operace součet, rozdíl, násobení a dělení. Vzhledem k tomu, že na libovolný diskrétní obraz lze pohlížet jako na matici konečných hodnot, je patrné, že tyto elementární operace jsou definovány i pro obrazy.

Na šedotónovém obrazu lze provádět aritmetické operace přímo s prvky matic a výsledky uložit do výstupního pole, které bude mít stejný rozměr jako vstupní. Pokud jde o barevné obrazy, pak se operace provádí pro každou barevnou složku zvlášť a zvlášť se také ukládá výsledek do výstupního (barevného) obrazu. Mezi základní aritmetické operace s obrazem patří součet, rozdíl, součin, dělení a míchání. Každou uvedenou operaci lze navíc provádět se dvěma obrazy nebo jedním obrazem a konstantou. Matematické definice aritmetických operací součtu (S), rozdílu (D) a míchání (B) uvádí následující vztahy.

Aritmetické operace lze aplikovat jak na šedotónové, na barevné tak i na binární obrazy. Nejedná se ovšem o binární operace s obrazy, ale o aritmetické operace s binárními obrazy. Binární obrazy se zpravidla vyskytují jako masky aplikované na jiný šedotónový nebo barevný obraz.

V případě barevných obrazů se operace provádí pro každou barevnou složku zvlášť a zvlášť se také ukládá výsledek do výstupního obrazu. Pokud je třeba provést aritmetickou operaci nad jedním barevným a jedním šedotónovým obrazem, má situace tři řešení. Za prvé je možné provést aritmetickou operaci nad šedotónovým obrazem a jednou složkou barevného obrazu a zbylé dvě ponechat nezměněné. Za druhé lze tentýž postup aplikovat na všechny tři složky barevného obrazu s třetinovou vahou prvků šedotónového obrazu a výsledky sečíst a nakonec za třetí lze barevný obraz převést na šedotónový podle následujícího vzorce a dále pokračovat jako v případě dvou šedotónových obrazů.

Při převodu barevného obrazu na šedotónový za účelem strojového zpracování obrazových dat je možné koeficienty CR, CG a CB volit libovolně, nejčastěji však rovné 1/3, kdy mají všechny tři spektrální složky stejnou váhu. V případě převodu barevného obrazu na šedotónový pro interpretaci lidským okem je ale situace odlišná. Vzhledem k rozdílné citlivosti lidského oka na různé spektrální složky nejsou jednotlivé koeficienty Ci rovny přesně 1/3, ale empiricky zjištěným konstantám CR=0.299, CG=0.587, CB=0.114.

B) Úkoly

  1. Pomocí syntaxe pro přístup k jasové hodnotě pixelu obrazu nebo pomocí maticových operací Matlabu proveďte s obrazy [obraz01.bmp] a [obraz03.bmp] popř. jedním obrazem a konstantou následující aritmetické operace:

    • součet obrazů: S(i,j)=P1(i,j)+P2(i,j) a R(i,j)=P1(i,j)+C
    • rozdíl obrazů: D(i,j)=P1(i,j)-P2(i,j) a R(i,j)=P1(i,j)-C
    • součin obrazů: M(i,j)=P1(i,j)*P2(i,j) a R(i,j)=P1(i,j)*C
    • dělení obrazů: Q(i,j)=P1(i,j)/P2(i,j) a R(i,j)=P1(i,j)/C
    • míchání obrazů: B(i,j)=X*P1(i,j)+(1-X)*P2(i,j) a R(i,j)=X*P1(i,j)+(1-X)*C, X<0;1>
  2. Pro barevný obraz [lenaC.bmp] proveďte konverzi na šedotónový obraz s různými koeficienty {CR, CG, CB} jednotlivých spektrálních složek včetně koeficientů ve výše uvedeném vztahu.

  3. Vygenerujte syntetický obraz o rozměrech 512x512 pixelů jako šachovnicovou masku pro binární filtraci přičemž rozměr jednoho políčka volte tak, aby byla celá maska rozdělena na 8x8 políček. Poté proveďte s obrazem [lenaM.bmp] prostorovou filtraci (operace násobení obrazu a masky).

C) Dobré vědět

  • Všechny aritmetické operace z prvního bodu lze provést pro saturované (255+1 -> 255 ; 0-1 -> 0) a přetékající (255+1 -> 0 ; 0-1 -> 255) mezní hodnoty.

  • Operace nad obrazem a konstantou jsou implementačně identické operaci nad dvěma obrazy, z nichž jeden je konstantní.

  • U rozdílu a dělení sledujte rozdílné výsledky při záměně operandů.

  • Pro správné zobrazení obrazu masky pomocí funkce imshow je nutné před vykreslením prvky matice masky buďto násobit hodnotou 255 nebo využít automatické zjištění mezí matice pomocí [] na místě druhého parametru funkce imshow.

  • Povolené funkce: imread

  • Nepovolené funkce: im2bw, imadd, imsubtract, immultiply, imdivide, imlincomb, rgb2gray

D) Ilustrace výsledků