Č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í:
- zverejnené po cvičení 12.10., deadline 24.10.
- zverejnené po cvičení 26.10., deadline 7.11.
- zverejnené po cvičení 9.11., deadline 21.11.
- zverejnené po cvičení 23.11., deadline 5.12.
- 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:
- Nájdite si obrázok chodby. Môžete prispôsobiť rozlíšenie. Môžete použiť aj vlastnú fotku nejakej chodby.
- Obrázok konvertujte na šedotónový
- Ekvalizujte histogram
- 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]]
- Aplikujte Cannyho detektor na detekciu hrán
- 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)
- 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.
- 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.
- Použite transformáciu (perspective) na vytvorenie pohľadu zhora. Inšpirujte sa cvičením, kde sme prelepovali bilboardy.
- 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…)
- 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