Warning
This page is located in archive.

Úvod do Matlab-u

Na cvičeních z MPV budeme intenzívne využívat programovací prostředí MATLAB. V případě, že jste ještě neprišli do styku s tímhle prostředím, nastudujte si následující části z "Getting started with MATLAB":

  • Matrices and Arrays - (Expressions, Working with Matrices, More About Matrices and Arrays)
  • Graphics - (Editing Plots, Mesh and Surface Plots, Images)
  • Programming - (Flow Control, Other Data Structures, Scripts and Functions)

(samostudium doma)

Opakování základů zpracování obrazu

Další potřebnou součásti přípravy na cvičení z MPV je zvládnutí základů spracování obrazu v jazyku MATLAB.

Konvoluce, vyhlazení obrazu a gradient

  • Gaussián se v zpracování obrazu často používa ako model ideálního bodu, dolnopropustní filtr na odstranění šumu a tzv. okenní funkce, kterou pozorujeme (vážime) okolí bodu v obraze. Implementujte funkci G=gauss(x,sigma), která vygeneruje diskrétní vzorky Gaussiánu
    <latex>G = \frac{1}{\sqrt{2\pi}\sigma}\cdot e^\frac{-x^2}{2\sigma^2}</latex>
    v bodech daných vektorem <latex>x</latex> s variancí <latex>\sigma^2</latex> a strědní hodnotou 0.
  • Implementujte funkci D=dgauss(x,sigma), která vratí diskrétní vzorky první derivace Gaussiánu
    <latex>\frac{d}{dx}G = \frac{d}{dx}\frac{1}{\sqrt{2\pi}\sigma}\cdot e^{-\frac{x^2}{2\sigma^2}} = -\frac{1}{\sqrt{2\pi}\sigma^3}\cdot x\cdot e^{-\frac{x^2}{2\sigma^2}} </latex>
    v bodech daných vektorem <latex>x</latex> s variancí <latex>\sigma^2</latex> a strědní hodnotou 0.
  • Seznamte se s funkcí conv2.
  • Efekt filtrování Gaussiánem můžeme prozkoumat na impulzní odezvě:
    sigma = 6.0;
    x = [-ceil(3.0*sigma):ceil(3.0*sigma)];
    G = gauss(x, sigma);
    D = dgauss(x, sigma);
    imp = zeros(51); imp(25,25) = 255;
    out = conv2(G,G,imp);
    ...
    
    imagesc(out); % nebo surf(out);
    vyzkoušejte impulzní odezvy na ostatní kombinace Gaussiánu a jeho derivace.
  • Ukázka impulsních odezev:

  • Napište funkci out=gaussfilter(in,sigma), která aplikuje vyhlazení Gaussovým filtrem o velikosti 2*(sigma*3.0)+1 s variancí <latex>\sigma^2</latex> na vstupní obrázek in a vrátí vyhlazený obrázek out (např. Lenna). Využijte separability Gaussovského filtru, a vyhlazení implementujte jako dvě konvoluce s 1D Gaussiánem (vid. funkce conv2).
  • Upravte funkci gaussfilter na [dx,dy]=gaussderiv(in,sigma), která vrátí odhad gradientu (gx, gy) v každém bodě vstupního obrázku in (MxN matice) po vyhlazení Gaussiánem s variancí <latex>\sigma^2</latex>. Použijte buď derivaci Gaussiánu nebo konvoluci se symetrickou differenci.
  • [dxx,dxy,dyy]=gaussderiv2(in,sigma), která vrátí všechy druhé derivace vstupního obrazu in (MxN matice) po vyhlazení Gaussiánem s variancí <latex>\sigma^2</latex>.

Kapitoly [3,4,5] o Gaussiánu a jeho derivacích a jejich úloze pri zpracování obrazu (další kapitoly)

Geometrické transformace a interpolace jasové funkce

  • Napište funkci, A=affine(x1,y1,x2,y2,x3,y3), která vráti 3×3 matici A, která transformuje body v homogénních souřadnicích z kanonického souřadného systému do obrázku: (0,0,1)→(x1,y1,1), (1,0,1)→(x2,y2,1) a (0,1,1)→(x3,y3,1).

  • Napište funkci out=affinetr(in,A,ps,ext), která transformuje výřez obrázku in (MxN matice) do kanonického souřadného systému. Afinní transformace A (3×3 matice) je transformace z kanonického souřadného systému do obrázku v homogénních souřadnicích. ps určuje délku strany výsledního obrázku a ext je reálné číslo, velikost výřezu v kanonickém souřadném systému. Příklad: out=affinetr(in,A,41,3.0), vrátí výrěz obrázku o velikosti 41×41 odpovídajíci okolí (-3.0,-3.0)x(3.0,3.0) v kanonickém souřadném systému. Levý horní roh obrázku má souřadnice (0,0). Použijte bilineární interpolaci. Testujte na img1.png.

Co odevzdat

Do odevzdávacího systému nahrajte .zip archiv s funkcemi implementovanými v MATLABu: gauss.m, dgauss.m, gaussfilter.m, gaussderiv.m, gaussderiv2.m, affine.m a affinetr.m v kořenovém adresáři. Archiv musí obsahovat všechny potřebné použité funkce. Dodržujte pořadí a počet parametrů.

Reference

Kontrola výsledků

Pro kontrolu výsledků vašich funkcií jsme použili skript a funkci MATLABu publish. Nakopírujte test.m do cesty MATLABu (nebo adresáře s vašimi funkcemi) a spusťte. Výsledky si ověrte na referenčním řešení (opraveno 16.2.2011, 18:10).

courses/a4m33mpv/cviceni/1_uvod/start.txt · Last modified: 2013/10/04 13:02 (external edit)