{"id":90,"date":"2022-10-11T14:41:02","date_gmt":"2022-10-11T12:41:02","guid":{"rendered":"https:\/\/ics.science.upjs.sk\/ano\/?page_id=90"},"modified":"2023-09-07T14:22:44","modified_gmt":"2023-09-07T12:22:44","slug":"domace-zadania-2022","status":"publish","type":"page","link":"https:\/\/ics.science.upjs.sk\/ano\/domace-zadania-2022\/","title":{"rendered":"Dom\u00e1ce zadania 2022"},"content":{"rendered":"<p><a href=\"https:\/\/ics.science.upjs.sk\/ano\/wp-content\/uploads\/sites\/17\/2023\/01\/Duke-Salgian2019_Chapter_GuitarTablatureGenerationUsing.pdf\">\u010cl\u00e1nok<\/a> ku sk\u00fa\u0161ke (struny &#8211; Canny, Hough; prsty &#8211; RGB filter, kontury findContours; video)<\/p>\n<hr \/>\n<p>Podmienky odovzd\u00e1vania dom\u00e1cich zadan\u00ed:<\/p>\n<ul>\n<li>Pre ka\u017ed\u00fa \u00falohu o\u010dak\u00e1vam zdrojov\u00fd k\u00f3d, vstupn\u00fd obr\u00e1zok\/video a v\u00fdstupn\u00fd obr\u00e1zok\/video (pr\u00edpadne v\u0161etky medzi-obr\u00e1zky) &#8211; d\u00f4le\u017eit\u00e9 je, aby som mohol vidie\u0165 v\u00fdsledok bez nutnosti sp\u00fa\u0161\u0165a\u0165 k\u00f3d.<\/li>\n<li>Rie\u0161enie uploadnite niekde &#8211; onedrive, gitlab, moodle<\/li>\n<li>Rie\u0161enie odovzd\u00e1vate do <strong>moodle v zadanom term\u00edne<\/strong> &#8211; vlo\u017e\u00edte link na svoje \u00falo\u017eisko s rie\u0161en\u00edm konkr\u00e9tnej \u00falohy alebo odo\u0161lite s\u00fabory priamo<\/li>\n<li>Na rie\u0161enie zadan\u00ed bude zhruba 10 dn\u00ed, term\u00edn odovzdania bude v\u017edy pondelok r\u00e1no. Feedback budem d\u00e1va\u0165 v dan\u00fd de\u0148 v LMS moodle dopoludnia.<\/li>\n<li>5 zadan\u00ed:\n<ol>\n<li>zverejnen\u00e9 po cvi\u010den\u00ed 12.10., deadline 24.10.<\/li>\n<li>zverejnen\u00e9 po cvi\u010den\u00ed 26.10., deadline 7.11.<\/li>\n<li>zverejnen\u00e9 po cvi\u010den\u00ed 9.11., deadline 21.11.<\/li>\n<li>zverejnen\u00e9 po cvi\u010den\u00ed 23.11., deadline 5.12.<\/li>\n<li>zverejnen\u00e9 po cvi\u010den\u00ed 7.12., deadline 19.12.<\/li>\n<\/ol>\n<\/li>\n<\/ul>\n<hr \/>\n<h2>5. \u00faloha: Panor\u00e1ma<\/h2>\n<p><em>Term\u00edn odovzdania: 19.12.2022 5:00<\/em><\/p>\n<p>Spojte viacero obr\u00e1zkov dohromady tak ako na <a href=\"https:\/\/gitlab.science.upjs.sk\/analyza-obrazu\/ano-2022\/-\/blob\/master\/panorama.py\">cvi\u010den\u00ed<\/a> (SIFT, homography, perspective transform). Hlavn\u00e1 podmienka je, aby boli pou\u017eit\u00e9 aspo\u0148 3 obr\u00e1zky.<\/p>\n<p>Pod\u013ea vlastn\u00e9ho z\u00e1ujmu (a dosiahnut\u00e9ho v\u00fdstupu) m\u00f4\u017eete vysk\u00fa\u0161a\u0165 niektor\u00fa z nasledovn\u00fdch vec\u00ed:<\/p>\n<ul>\n<li>namiesto streetview pou\u017ei\u0165 fotografie, pr\u00edpadne robi\u0165 pohyb aj hore-dole nie iba do str\u00e1n<\/li>\n<li>distance transform na hlad\u0161\u00ed prechod medzi obr\u00e1zkami (vi\u010f <a href=\"https:\/\/www.youtube.com\/watch?v=D9rAOAL12SY&amp;t=658s\">video<\/a>)<\/li>\n<li>niektor\u00fa in\u00fa met\u00f3du na features (napr. <a href=\"https:\/\/opencv24-python-tutorials.readthedocs.io\/en\/latest\/py_tutorials\/py_feature2d\/py_table_of_contents_feature2d\/py_table_of_contents_feature2d.html\">SURF, FAST, BRIEF &#8230;<\/a>)<\/li>\n<li>pou\u017ei\u0165 4 a viac obr\u00e1zkov<\/li>\n<li>&#8230; (priestor pre vlastn\u00e9 n\u00e1pady)<\/li>\n<\/ul>\n<hr \/>\n<h3>4. \u00faloha: Vanishing point<\/h3>\n<p><em>Term\u00edn odovzdania: 5.12.2022 5:00<\/em><\/p>\n<p>Implementujte algoritmus pop\u00edsan\u00fd <a href=\"https:\/\/www.researchgate.net\/profile\/Zeinab-Hajiabolhasani\/publication\/260584378_Vanishing_point_detection_in_corridors_Using_Hough_transform_and_K-means_clustering\/links\/53e423e70cf2fb748710b0b9\/Vanishing-point-detection-in-corridors-Using-Hough-transform-and-K-means-clustering.pdf\">v tomto \u010dl\u00e1nku<\/a> (<em>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.<\/em>).<\/p>\n<p>Konkr\u00e9tne kroky:<\/p>\n<ol>\n<li>N\u00e1jdite si obr\u00e1zok chodby. M\u00f4\u017eete prisp\u00f4sobi\u0165 rozl\u00ed\u0161enie. M\u00f4\u017eete pou\u017ei\u0165 aj vlastn\u00fa fotku nejakej chodby.<\/li>\n<li>Obr\u00e1zok konvertujte na \u0161edot\u00f3nov\u00fd<\/li>\n<li>Ekvalizujte histogram<\/li>\n<li>Aplikujte 45\u00b0 masku (je v \u010dl\u00e1nku &#8211; ide o maticu 3&#215;3 kde na diagon\u00e1le s\u00fa 2 a na ostatn\u00fdch miestach -1), [[-1,-1,2],[-1,2,-1],[2,-1,-1]]<\/li>\n<li>Aplikujte Cannyho detektor na detekciu hr\u00e1n<\/li>\n<li>Pou\u017eite Hough transform\u00e1ciu na z\u00edskanie \u010diar. Odpor\u00fa\u010dam HoughLinesP, kde je v\u00fdstupom zoznam \u010diar, ktor\u00e9 s\u00fa tvoren\u00e9 \u0161tvoricou \u010d\u00edsel (x a y s\u00faradnice za\u010diato\u010dn\u00e9ho a koncov\u00e9ho bodu)<\/li>\n<li>Aplikujte K-means (k=4) na mno\u017eine bodov &#8211; koncov\u00fdch bodov detegovan\u00fdch \u010diar. V\u00fdsledn\u00e9 centroidy pre klastre vykreslite do p\u00f4vodn\u00e9ho obr\u00e1zka.<\/li>\n<li>Aplikujte K-means (k=1) na mno\u017eine 4 centroidov. Zakreslite v\u00fdsledn\u00fd centroid &#8211; v ide\u00e1lnom pr\u00edpade by to mal by\u0165 vanishing point.<\/li>\n<\/ol>\n<p>Pozn\u00e1mky k detekcii \u010diar:<\/p>\n<ul>\n<li>vo v\u00fdslednom obr\u00e1zku nech s\u00fa iba poz\u00edcie centroidov. Av\u0161ak vykreslite osobitne aj \u010diastkov\u00e9 rie\u0161enia vr\u00e1tane v\u00fdstupu po detekcii \u010diar<\/li>\n<li>vykres\u013eovanie \u010diar pod\u013ea <a href=\"https:\/\/opencv24-python-tutorials.readthedocs.io\/en\/latest\/py_tutorials\/py_imgproc\/py_houghlines\/py_houghlines.html\">n\u00e1vodu<\/a> nie je korektn\u00e9. Vykresl\u00ed to len jednu \u010diaru. Je potrebn\u00e9 pou\u017ei\u0165 dva vnoren\u00e9 cykly napr. takto:<\/li>\n<\/ul>\n<pre>\n\n<div class=\"codecolorer-container python default\" style=\"overflow:auto;white-space:nowrap;width:435px;\"><div class=\"python codecolorer\"><span class=\"kw1\">for<\/span> line <span class=\"kw1\">in<\/span> lines:<br \/>\n&nbsp; &nbsp; <span class=\"kw1\">for<\/span> x1<span class=\"sy0\">,<\/span>y1<span class=\"sy0\">,<\/span>x2<span class=\"sy0\">,<\/span>y2 <span class=\"kw1\">in<\/span> line:<br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; cv2.<span class=\"me1\">line<\/span><span class=\"br0\">&#40;<\/span>img<span class=\"sy0\">,<\/span><span class=\"br0\">&#40;<\/span>x1<span class=\"sy0\">,<\/span>y1<span class=\"br0\">&#41;<\/span><span class=\"sy0\">,<\/span><span class=\"br0\">&#40;<\/span>x2<span class=\"sy0\">,<\/span>y2<span class=\"br0\">&#41;<\/span><span class=\"sy0\">,<\/span><span class=\"br0\">&#40;<\/span><span class=\"nu0\">0<\/span><span class=\"sy0\">,<\/span><span class=\"nu0\">255<\/span><span class=\"sy0\">,<\/span><span class=\"nu0\">0<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">,<\/span><span class=\"nu0\">2<\/span><span class=\"br0\">&#41;<\/span><\/div><\/div>\n\n<\/pre>\n<hr \/>\n<h3>3. \u00faloha: Transform\u00e1cie biliardov\u00e9ho stola<\/h3>\n<p><em>Term\u00edn odovzdania: 21.11.2022 5:00<\/em><\/p>\n<p>N\u00e1jdite si nejak\u00fd obr\u00e1zok biliardov\u00e9ho\/snookrov\u00e9ho stola (<a href=\"https:\/\/www.keithprowse.co.uk\/-\/media\/blog\/general\/everything-you-need-to-know-about-snooker\/snooker-table.jpg\">odpor\u00fa\u010dan\u00fd obr\u00e1zok<\/a>), kde je poh\u013ead nie priamo zhora. Vo v\u00fdsledku sa o\u010dak\u00e1va poh\u013ead na hraciu \u010das\u0165 stola (v\u00e4\u010d\u0161inou je to zelen\u00e9) so zafarben\u00fdmi gu\u013eami.<\/p>\n<ol>\n<li>Pou\u017eite transform\u00e1ciu (perspective) na vytvorenie <em>poh\u013eadu zhora.\u00a0<\/em>In\u0161pirujte sa cvi\u010den\u00edm, kde sme prelepovali bilboardy.<\/li>\n<li>Body pre transform\u00e1ciu n\u00e1jdite automaticky &#8211; nevkladajte ich manu\u00e1lne do k\u00f3du. Nieko\u013eko tipov ako tieto body n\u00e1js\u0165: hough transform\u00e1cia n\u00e1jde \u010diary a ich priese\u010dn\u00edky bud\u00fa ozna\u010dova\u0165 tie body alebo pou\u017ei\u0165 detekciu rohov a zobra\u0165 tie, ktor\u00e9 s\u00fa najviac v\u013eavo hore, vpravo dole &#8230; Pou\u017eite \u013eubovo\u013en\u00fa met\u00f3du. Sta\u010d\u00ed ak to bude fungova\u0165 na jednom obr\u00e1zku, ale nezad\u00e1vajte s\u00faradnice manu\u00e1lne. Ak by bolo potrebn\u00e9, m\u00f4\u017eete si upravi\u0165 vstupn\u00fd obr\u00e1zok (napr\u00edklad si nie\u010do zv\u00fdraznite, zama\u013eujete a pod.) &#8211; bu\u010f automaticky alebo manu\u00e1lne (skic\u00e1r, &#8230;). Samozrejme, pou\u017eite vhodn\u00fd preprocessing obr\u00e1zku ak bude potrebn\u00e9 (rozostrenie, zmena rozl\u00ed\u0161enia&#8230;)<\/li>\n<li>Biliardov\u00e9 gule nech s\u00fa zafarben\u00e9 jednou farbou (funkcia <a href=\"https:\/\/docs.opencv.org\/4.x\/d6\/d6e\/group__imgproc__draw.html#gaf10604b069374903dbd0f0488cb43670\">circle<\/a>). Odpor\u00fa\u010dam Hough transform\u00e1ciu. Zistite, \u010di lep\u0161\u00ed v\u00fdsledok bude pou\u017eit\u00edm zafarbenia pred alebo po perspective transform\u00e1cii.<\/li>\n<\/ol>\n<hr \/>\n<h2>2. \u00faloha: Segment\u00e1cia puzzle<\/h2>\n<p><em>Term\u00edn odovzdania: 7.11.2022 5:00<\/em><\/p>\n<p>Pok\u00faste sa n\u00e1js\u0165 jednotliv\u00e9 k\u00fasky puzzle na obr\u00e1zku.\u00a0<a href=\"https:\/\/upjs-my.sharepoint.com\/personal\/miroslav_opiela_upjs_sk\/_layouts\/15\/onedrive.aspx?id=%2Fpersonal%2Fmiroslav%5Fopiela%5Fupjs%5Fsk%2FDocuments%2Fzdielane%20pre%20studentov%2Fjigsaw&amp;ga=1\">Stiahnite<\/a> si obr\u00e1zky puzzle (ak by ste mali probl\u00e9m s otvoren\u00edm odkazu, zip s\u00fabor s obr\u00e1zkami n\u00e1jdete aj v moodle). Prioritne si vyberte jeden z nich a na \u0148om vysk\u00fa\u0161ajte r\u00f4zne met\u00f3dy. Nakoniec spustite svoje rie\u0161enie na v\u0161etk\u00fdch obr\u00e1zkoch.<\/p>\n<p>V\u00fdstupom pre ka\u017ed\u00fa fotku nech je \u010diernobiely obr\u00e1zok, ktor\u00fd bude ma\u0165 v ide\u00e1lnom pr\u00edpade bielou farbou ozna\u010den\u00e9 hranice jednotliv\u00fdch dielikov a \u010diernou v\u0161etko ostatn\u00e9. \u00daloha nie je jednoduch\u00e1 a nepredpoklad\u00e1m, \u017ee sa podar\u00ed z\u00edska\u0165 ide\u00e1lny v\u00fdstup. Pok\u00faste sa o \u010do najlep\u0161ie rie\u0161enie.<\/p>\n<p>Vyhnite sa veciam, ktor\u00fdm sme sa nevenovali (zvl\u00e1\u0161\u0165 kont\u00faram a nejak\u00fdm pokro\u010dil\u00fdm met\u00f3dam segment\u00e1cie &#8211; to si vysk\u00fa\u0161ame pri inej pr\u00edle\u017eitosti).<\/p>\n<p>Zop\u00e1r tipov, \u010do pou\u017ei\u0165 (samozrejme aj \u010doko\u013evek mimo tohto zoznamu):<\/p>\n<ul>\n<li>preprocessing obr\u00e1zka &#8211; zmena rozl\u00ed\u0161enia (cv.resize), filtrovanie, konvol\u00facia, rozostrenie<\/li>\n<li>canny edge detector<\/li>\n<li>matematick\u00e1 morfol\u00f3gia &#8211; er\u00f3zia, dilat\u00e1cia, otvorenie, zatvorenie<\/li>\n<li>pou\u017eitie vhodnej konvolu\u010dnej masky &#8211; laplacian, sharpen<\/li>\n<\/ul>\n<p>Konzultovanie s ostatn\u00fdmi je v\u00edtan\u00e9, implementujte to ale samostatne. Odpor\u00fa\u010dam v takom pr\u00edpade do koment\u00e1ra uvies\u0165, s k\u00fdm ste to konzultovali.<\/p>\n<p>M\u00f4\u017eete odovzda\u0165 aj viacero rie\u0161en\u00ed. Ak neodovzd\u00e1vate jupyter notebook, tak pripojte k rie\u0161eniu aj v\u00fdstupn\u00e9 obr\u00e1zky.<\/p>\n<hr \/>\n<h2>1. \u00faloha: Histogram vo videu<\/h2>\n<p><em>Term\u00edn odovzdania: 24.10.2022 05:00<\/em><\/p>\n<p>Vytvorte funkciu, ktor\u00e1 bude do zadan\u00e9ho farebn\u00e9ho obr\u00e1zka prid\u00e1va\u0165 histogram.\u00a0 Obr\u00e1zok histogramu sa m\u00f4\u017ee nach\u00e1dza\u0165 na \u013eubovo\u013enom mieste v obraze (napr. vpravo dole). Histogram prekr\u00fdva \u010das\u0165 p\u00f4vodn\u00e9ho obr\u00e1zka. Upravte video, tak aby sa v \u0148om nach\u00e1dzal v\u017edy histogram pre aktu\u00e1lny sn\u00edmok.<\/p>\n<p>Pozn\u00e1mka: Ak by bol probl\u00e9m s videom, tak alternat\u00edvne m\u00f4\u017eete odovzda\u0165 upraven\u00fd jeden obr\u00e1zok, ale pridajte tam nie\u010do navy\u0161e &#8211; clahe vyrovnanie histogramu alebo prahovanie na bin\u00e1rny obr\u00e1zok. Do obr\u00e1zka vlo\u017ete dva histogramy &#8211; jeden pre p\u00f4vodn\u00fd a jeden pre v\u00fdsledn\u00fd obr\u00e1zok.<\/p>\n<p><i>Tipy:<\/i><\/p>\n<ul>\n<li>pozrite si rie\u0161enia z cvi\u010den\u00ed (ulo\u017eenie histogramu ako obr\u00e1zka, kop\u00edrovanie \u010dasti obr\u00e1zka v Numpy poli)<\/li>\n<li>v pr\u00edpade potreby je mo\u017en\u00e9 pou\u017ei\u0165 vhodn\u00fa opencv funkciu na zmenu rozl\u00ed\u0161enia obr\u00e1zku s histogramom<\/li>\n<li>pozrite si <a href=\"https:\/\/opencv24-python-tutorials.readthedocs.io\/en\/latest\/py_tutorials\/py_gui\/py_video_display\/py_video_display.html\">pr\u00e1cu s videom v opencv<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>\u010cl\u00e1nok ku sk\u00fa\u0161ke (struny &#8211; Canny, Hough; prsty &#8211; RGB filter, kontury findContours; video) Podmienky odovzd\u00e1vania dom\u00e1cich zadan\u00ed: Pre ka\u017ed\u00fa \u00falohu o\u010dak\u00e1vam zdrojov\u00fd k\u00f3d, vstupn\u00fd obr\u00e1zok\/video a v\u00fdstupn\u00fd obr\u00e1zok\/video (pr\u00edpadne&hellip;<\/p>\n","protected":false},"author":22,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-90","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/ics.science.upjs.sk\/ano\/wp-json\/wp\/v2\/pages\/90","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ics.science.upjs.sk\/ano\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/ics.science.upjs.sk\/ano\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/ics.science.upjs.sk\/ano\/wp-json\/wp\/v2\/users\/22"}],"replies":[{"embeddable":true,"href":"https:\/\/ics.science.upjs.sk\/ano\/wp-json\/wp\/v2\/comments?post=90"}],"version-history":[{"count":16,"href":"https:\/\/ics.science.upjs.sk\/ano\/wp-json\/wp\/v2\/pages\/90\/revisions"}],"predecessor-version":[{"id":174,"href":"https:\/\/ics.science.upjs.sk\/ano\/wp-json\/wp\/v2\/pages\/90\/revisions\/174"}],"wp:attachment":[{"href":"https:\/\/ics.science.upjs.sk\/ano\/wp-json\/wp\/v2\/media?parent=90"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}