Domáce zadania 2022

Článok ku skúške (struny – Canny, Hough; prsty – RGB filter, kontury findContours; video)


Podmienky odovzdávania domácich zadaní:

  • Pre každú úlohu očakávam zdrojový kód, vstupný obrázok/video a výstupný obrázok/video (prípadne všetky medzi-obrázky) – dôležité je, aby som mohol vidieť výsledok bez nutnosti spúšťať kód.
  • Riešenie uploadnite niekde – onedrive, gitlab, moodle
  • Riešenie odovzdávate do moodle v zadanom termíne – vložíte link na svoje úložisko s riešením konkrétnej úlohy alebo odošlite súbory priamo
  • Na riešenie zadaní bude zhruba 10 dní, termín odovzdania bude vždy pondelok ráno. Feedback budem dávať v daný deň v LMS moodle dopoludnia.
  • 5 zadaní:
    1. zverejnené po cvičení 12.10., deadline 24.10.
    2. zverejnené po cvičení 26.10., deadline 7.11.
    3. zverejnené po cvičení 9.11., deadline 21.11.
    4. zverejnené po cvičení 23.11., deadline 5.12.
    5. zverejnené po cvičení 7.12., deadline 19.12.

5. úloha: Panoráma

Termín odovzdania: 19.12.2022 5:00

Spojte viacero obrázkov dohromady tak ako na cvičení (SIFT, homography, perspective transform). Hlavná podmienka je, aby boli použité aspoň 3 obrázky.

Podľa vlastného záujmu (a dosiahnutého výstupu) môžete vyskúšať niektorú z nasledovných vecí:

  • namiesto streetview použiť fotografie, prípadne robiť pohyb aj hore-dole nie iba do strán
  • distance transform na hladší prechod medzi obrázkami (viď video)
  • niektorú inú metódu na features (napr. SURF, FAST, BRIEF …)
  • použiť 4 a viac obrázkov
  • … (priestor pre vlastné nápady)

4. úloha: Vanishing point

Termín odovzdania: 5.12.2022 5:00

Implementujte algoritmus popísaný v tomto článku (Ebrahimpour, R., Rasoolinezhad, R., Hajiabolhasani, Z. and Ebrahimi, M., 2012. Vanishing point detection in corridors: using Hough transform and K-means clustering. IET computer vision, 6(1), pp.40-51.).

Konkrétne kroky:

  1. Nájdite si obrázok chodby. Môžete prispôsobiť rozlíšenie. Môžete použiť aj vlastnú fotku nejakej chodby.
  2. Obrázok konvertujte na šedotónový
  3. Ekvalizujte histogram
  4. Aplikujte 45° masku (je v článku – ide o maticu 3×3 kde na diagonále sú 2 a na ostatných miestach -1), [[-1,-1,2],[-1,2,-1],[2,-1,-1]]
  5. Aplikujte Cannyho detektor na detekciu hrán
  6. Použite Hough transformáciu na získanie čiar. Odporúčam HoughLinesP, kde je výstupom zoznam čiar, ktoré sú tvorené štvoricou čísel (x a y súradnice začiatočného a koncového bodu)
  7. Aplikujte K-means (k=4) na množine bodov – koncových bodov detegovaných čiar. Výsledné centroidy pre klastre vykreslite do pôvodného obrázka.
  8. Aplikujte K-means (k=1) na množine 4 centroidov. Zakreslite výsledný centroid – v ideálnom prípade by to mal byť vanishing point.

Poznámky k detekcii čiar:

  • vo výslednom obrázku nech sú iba pozície centroidov. Avšak vykreslite osobitne aj čiastkové riešenia vrátane výstupu po detekcii čiar
  • vykresľovanie čiar podľa návodu nie je korektné. Vykreslí to len jednu čiaru. Je potrebné použiť dva vnorené cykly napr. takto:

for line in lines:
    for x1,y1,x2,y2 in line:
        cv2.line(img,(x1,y1),(x2,y2),(0,255,0),2)

3. úloha: Transformácie biliardového stola

Termín odovzdania: 21.11.2022 5:00

Nájdite si nejaký obrázok biliardového/snookrového stola (odporúčaný obrázok), kde je pohľad nie priamo zhora. Vo výsledku sa očakáva pohľad na hraciu časť stola (väčšinou je to zelené) so zafarbenými guľami.

  1. Použite transformáciu (perspective) na vytvorenie pohľadu zhora. Inšpirujte sa cvičením, kde sme prelepovali bilboardy.
  2. Body pre transformáciu nájdite automaticky – nevkladajte ich manuálne do kódu. Niekoľko tipov ako tieto body nájsť: hough transformácia nájde čiary a ich priesečníky budú označovať tie body alebo použiť detekciu rohov a zobrať tie, ktoré sú najviac vľavo hore, vpravo dole … Použite ľubovoľnú metódu. Stačí ak to bude fungovať na jednom obrázku, ale nezadávajte súradnice manuálne. Ak by bolo potrebné, môžete si upraviť vstupný obrázok (napríklad si niečo zvýraznite, zamaľujete a pod.) – buď automaticky alebo manuálne (skicár, …). Samozrejme, použite vhodný preprocessing obrázku ak bude potrebné (rozostrenie, zmena rozlíšenia…)
  3. Biliardové gule nech sú zafarbené jednou farbou (funkcia circle). Odporúčam Hough transformáciu. Zistite, či lepší výsledok bude použitím zafarbenia pred alebo po perspective transformácii.

2. úloha: Segmentácia puzzle

Termín odovzdania: 7.11.2022 5:00

Pokúste sa nájsť jednotlivé kúsky puzzle na obrázku. Stiahnite si obrázky puzzle (ak by ste mali problém s otvorením odkazu, zip súbor s obrázkami nájdete aj v moodle). Prioritne si vyberte jeden z nich a na ňom vyskúšajte rôzne metódy. Nakoniec spustite svoje riešenie na všetkých obrázkoch.

Výstupom pre každú fotku nech je čiernobiely obrázok, ktorý bude mať v ideálnom prípade bielou farbou označené hranice jednotlivých dielikov a čiernou všetko ostatné. Úloha nie je jednoduchá a nepredpokladám, že sa podarí získať ideálny výstup. Pokúste sa o čo najlepšie riešenie.

Vyhnite sa veciam, ktorým sme sa nevenovali (zvlášť kontúram a nejakým pokročilým metódam segmentácie – to si vyskúšame pri inej príležitosti).

Zopár tipov, čo použiť (samozrejme aj čokoľvek mimo tohto zoznamu):

  • preprocessing obrázka – zmena rozlíšenia (cv.resize), filtrovanie, konvolúcia, rozostrenie
  • canny edge detector
  • matematická morfológia – erózia, dilatácia, otvorenie, zatvorenie
  • použitie vhodnej konvolučnej masky – laplacian, sharpen

Konzultovanie s ostatnými je vítané, implementujte to ale samostatne. Odporúčam v takom prípade do komentára uviesť, s kým ste to konzultovali.

Môžete odovzdať aj viacero riešení. Ak neodovzdávate jupyter notebook, tak pripojte k riešeniu aj výstupné obrázky.


1. úloha: Histogram vo videu

Termín odovzdania: 24.10.2022 05:00

Vytvorte funkciu, ktorá bude do zadaného farebného obrázka pridávať histogram.  Obrázok histogramu sa môže nachádzať na ľubovoľnom mieste v obraze (napr. vpravo dole). Histogram prekrýva časť pôvodného obrázka. Upravte video, tak aby sa v ňom nachádzal vždy histogram pre aktuálny snímok.

Poznámka: Ak by bol problém s videom, tak alternatívne môžete odovzdať upravený jeden obrázok, ale pridajte tam niečo navyše – clahe vyrovnanie histogramu alebo prahovanie na binárny obrázok. Do obrázka vložte dva histogramy – jeden pre pôvodný a jeden pre výsledný obrázok.

Tipy:

  • pozrite si riešenia z cvičení (uloženie histogramu ako obrázka, kopírovanie časti obrázka v Numpy poli)
  • v prípade potreby je možné použiť vhodnú opencv funkciu na zmenu rozlíšenia obrázku s histogramom
  • pozrite si prácu s videom v opencv