[ hlavní stránka cvičení ]

X33ZS1 – 1. Cvičení: Teoretické úlohy

Předpokládáme základní zkušenosti s Matlabem a s manipulací s obrazy v něm z dříve absolvovaných předmětů. Pokud jste se s tím nikdy nesetkali, projděte si první cvičení obrazové části 383ZS.

V tomto cvičení se budeme zabývat zejména početním řešením jednoduchých úloh z partie digitálního zpracování obrazů, se kterými jste se setkali v první přednášce. V druhé části hodiny si osvěžíme základní znalosti programového prostředí Matlab, ve kterém si početně řešené úlohy naprogramujeme.

Úkoly

  1. Afinní transformace.

    Uvažujte následující situaci: Jsou dány body x1 = (10, 20), x2 = (15, 15) a x3 = (32, 0); po afinní transformaci souřadnic těchto bodů mají souřadnice x1' = (60, 145), x2' = (55, 135) a x3' = (42, 111). Vaším úkolem je:

    1. Vypočítat parametry této transformace A: xi' = A xi .
    2. Nalézt obraz bodu x4 = (20, 35);
    3. Nalézt vzor bodu x5' = (10, 25).

  2. Nalezení nejlepší rovinné translace.

    V této úloze budeme hledat vektor t, určující nejlepší rovinnou translaci ve smyslu nejmenších čtverců Euklidovské vzdálenosti. Mějme tedy body x1 = (12, 20), x2 = (25, 10) a x3 = (65, 50) a jejich obrazy po rovinném posunutí: x1' = (30, 26), x2' = (40, 17) a x3' = (86, 55). Naším úkolem je nalézt již zmíněný vektor t.

  3. Implementace předcházejících úloh.

    Pro osvěžení a procvičení Matlabu je vaším úkolem naprogramovat řešení předcházejících úloh. Váš kód by pro jednotlivé úlohy měl splňovat následující specifika:

    1. Implementujte funkci A = findAffineTransform(x, x_transformed), kde vstupem x = (x1 ; x2 ; ... ; xn) je matice (2, n) bodů před transformací, x_transformed = (x1 ; x2 ; ... ; xn) je matice (2, n) bodů po transformaci a výstupem je matice A, určující parametry použité afinní transformace.
    2. Implementujte funkci x_out = affineTransform(A, x_in, {'inverse'}), kde vstupem je A afinní transformační matice, bod x_in = (x1 x2), jehož souřadnice chceme transformovat a volitelný flag 'inverse', který pokud je zadán, tak na vstupní bod x_in buda aplikována inverzní afinní transformace (bude se hledat vzor bodu před transformací), v opačném případě se bude hledat obraz vstupního bodu. Výstupem funkce má být bod x_out = (x1 x2), odpovídající souřadnicím bodu x_in po (inverzní) afinní transformaci.
    3. Implementujte funkci t = findTranslation(x, x_translated), kde vstupem x = (x1 ; x2 ; ... ; xn) je matice (2, n) bodů před translací, x_translated = (x1 ; x2 ; ... ; xn) je matice (2, n) bodů po translaci a výstupem je vektor určující nejlepší rovinnou translaci ve smyslu nejmenších čtverců Euklidovské vzdálenosti.

Pozn.: Snažte o optimální implementaci využívající specifik programového prostředí Matlab.