Domáce zadania

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šenia odovzdávate cez Github classroom. Úlohy 2-5 sú zverejnené hromadne 28.10. Deadline je 16.12. Priebežne odovzdaným úloham budem dávať feedback.

2. úloha: Pôdorys (LINK na github classroom)

Cieľ: Na obrázku, kde je pôdorys budovy, identifikovať steny.
Vstup: Plán budovy (v githube sú obrázky)
Výstup: V pôvodnom obrázku zakreslené steny (technicky je výsledkom binárny obrázok s označenými stenami).

Úloha vychádza z diplomovej práce Martiny Hrehovej a následnej publikácie Opiela, M., Hrehová, M. and Galčík, F., 2023. Map Model Extraction from Image Floor Plans. In IPIN-WiP. Všetky odkazy sú dostupné na stránke.

Postup z diplomovky na detekciu stien (klastrovanie bude na prednášk a cvičení 8.11.):

  1. Odstrániť text z obrázka pomocou OCR (kód je v githube)
  2. Nájsť čiary pomocou LSD
  3. Eliminovať duplicitné čiary pomocou mean shift klastrovania. Jednotlivé konce čiar sú nahradené centrami klastrov.
  4. Zarovnať body použitím mean shift po zložkách (osobitne po osiach x a y)

Úloha pre vás:

Implementujte postup z diplomovky a vyskúšajte. Môžete pridať vlastné obrázky budov (odkazy na datasety sú v diplomovke, resp. si nájdite niečo nové). Ak je potrebné, tak urobte nejaký preprocessing alebo krok navyše. Alternatívou je vyskúšať úplne iný postup (aj horší výsledok je ok).

Zapíšte svoje pozorovania z tohto procesu do nejakého textového súboru (alebo priamo do jupyter notebooku resp. ako komentár do kódu).

3. úloha: Dopravné značky (LINK na github classroom)

Cieľ: klasifikovať krajinu podľa dopravnej značky zobrazujúcej maximálu povolenú rýchlosť
Vstup: obrázok z google street view
Výstup: označená kruhová značka a klasifikovanie

Chceme sa snažiť o klasifikáciu do dvoch tried. V repozitári nájdete dva obrázky – ukážku značiek, ktoré sa ľahko rozoznávajú – Španielsko (červený okraj, biele vnútro) a Švédsko (červený okraj, žlté vnútro). Môžete si vybrať aj iné dve krajiny. Tieto vybrané majú výhodu, že okolo červeného okraju nie je tenký okraj inej farby a zároveň sú dobré rozpoznateľné. Alternatívou je použiť iný typ značiek (napr. modrá označujúca prikázaný smer a pod.)

Aplikujte Hough transformáciu na nájdenie kruhov a vymyslite klasifikátor – podmienku, na základe ktorej sa určí o aký typ značky ide. Je to jedno, čo použijete – či nejakú reprezentáciu farieb vo vnútri kruhu a pod. Aj neúspešný pokus o klasifikáciu je v poriadku.

Vyskúšajte na vlastných obrázkoch. Môžete vyskúšať aj nie priamy pohľad na značku ale trochu zboku. Výsledky a pozorovania zapíšte do textového súboru alebo do kódu.

4. úloha: Vanishing point (LINK na github classroom)

Implementujte algoritmus popísaný v č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.).

Článok na stiahnutie: tu alebo tu (ak by bol problém so stiahnutím, napíšte mi, prepošlem pdf).

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. Postačuje jeden obrázok, ideálne vyskúšať aspoň na 2-3 obrázkoch.
  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. 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.

5. úloha: Puzzle (LINK na github classroom)

Cieľom tejto úlohy je vyskúšať si rôzne spôsoby ako sa dopracovať k segmentácii obrázku. Hlavná úloha je nájsť jednotlivé kúsky puzzle na obrázku.

Prioritne si vyberte jeden z obrázkov v repozitári 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é. Alternatívne ak to bude vhodnejšie, tak môžete zakresliť výsledok do pôvodného obrázka. Ú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.

Zopár tipov, čo môžete vyskúšať (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
  • kontúry
  • grabcut resp. iná forma klastrovania

 


1. úloha: Maratón (LINK na github classroom)

Termín odovzdania: 21.10.2024 8:00

V repozitári nájdete obrázok z TV vysielania Medzinárodného maratónu mieru (png) a tiež krátke video (mp4). Obraz nie je dobre viditeľný – ľavá časť a čiastočne obloha sú svetlé, pričom zvyšok videa je tmavý.

Povinná časť úlohy (vstupom je obrázok):

  • obrázok prekonvertujte na šedotónový
  • vykreslite histogram a vložte ho priamo do obrázka (napr. vpravo dole, stratíme tým časť pôvodného obrázka, ale to nevadí)
  • použite nejakú metódu na vyhladenie histogramu (inšpirujte sa tu)

Doplňujúca časť úlohy (vyberte si jednu z možností, urobte aspoň jednu):

  • aplikujte vykreslenie histogramu a vyhladenie na celom videu. Vytvoríte tým nové video. Prečítajte si návod na prácu s videom (toto v jupyter notebookoch asi nepôjde).
  • vyskúšajte pracovať s farebným obrázkom, vykreslite histogram pre každú RGB zložku osobitne. Skúste vyhladiť histogram.
  • nájdite a vyskúšajte nejakú inú metódu na vyhladzovanie histogramov (CLAHE je prvá možnosť, ktorú sa oplatí vyskúšať).

Ak nebudete používať jupyter notebook, pripojte k riešeniu aj výstupný obrázok/video, aby som nemusel spúšťať kód. Ku svojmu riešeniu pripojte krátky komentár – zhodnotenie svojho riešenia.