====== Semestrální práce ====== Tato jsou zveřejněna témata nabízené jako semestrální práce. V zásadě je možné si jako semestrální práci vybrat libovolné téma z nabídky (tj. bez ohledu na to, zda téma řeší i někdo jiný), nebo si vymyslet téma vlastní. Odevzdání semestrální práce nejpozději **7.2. 2021** ===== Obecné požadavky ===== * vlastní práce * vhodně strukturovaný kód * délka cca 200 řádků kódu * správná funkcionalita s ohledem na zadání :-) ===== Odevzdání semestrální práce ===== Ideální stav: * kód odevzdán ve fakultním repozitáři [[https://gitlab.fel.cvut.cz]] * do BRUTE (úloha SEM) je odevzdána krátká zpráva o funkcionalitě (rozsah max 1/2 A4) a umístění kódu * program je demonstrován cvičícímu/přednášejícímu v MS Teams Alternativně lze kód (včetně zprávy zabalený do zip balíčku) odevzdávat přímo do BRUTE. ===== Témata ===== **1. Vlastní téma** Řešení problému dle vlastního uvážení, např. zpracování dat z vlastního projektu, vlastní SW projekt, atd. Téma je vhodné konzultovat se cvičícím nebo přednášejícím. **2. Textová hra** Počítačová hra, která popisuje děj pouze pomocí textů vypisovaných na obrazovku a je ovládaná pomocí příkazů zadávaných z klávesnice. V této úloze si promyslete zejména způsob uložení dat (vhodně strukurované textové soubory, SQLite databáze, ...) **3. Grafická hra** Hra podle vašeho výběru. Nemusí mít GUI, může být i v ASCII. Náměty: miny, piškvorky, tic-tac toe, ... **4. Databázové aplikace** Aplikace, která pro svoji činnost využívá databázi (např. SQLite, případně některou z nabídky NoSQL); TODO list, kniha jízd, odečty elektřiny/plynu **5. Zpracování obrazu - základní operace** Aplikace pro základní operace s obrazem: změna jasu, kontrastu, threshold. Buď jako řádková utilita, nebo s GUI. Data buď z datových souborů na disku, nebo např. z webkamery. **6. Zpracování obrazu - pokročilé operace** **7. Generátor fraktálů** **8. Jednoduché OCR** OCR (//Optical character recognition//) je sotvér, schopný identifikovať znaky v rukou písanom texte. Vo všeobecnosti ide o značne komplikovaný problém, nakoľko variabilita písma je obrovská, či už sa jedná o jednotlivé glyfy, alebo spôsob ich spojenia. V tejto úlohe je cieľom vytvoriť veľmi jednoduchý OCR softvér, ktorý by bol schopný rozoznať „úhľadne napísané“ //veľké písmená// anglickej abecedy a znaky //bodka// (.), //čiarka// (,) a //medzera// (veľký prázdny znak, oddeľujúci slová). Vstupom takéhoto softvéru by mal byť obrázok (fotografia alebo sken) textu, výstupom potom textový súbor, reprezentujúci onen text. Úlohu je možné riešiť buď priamou parametrizáciou písmeniek, alebo pomocou machine learning. Pomôcť by mohol tutoriál [[https://scikit-learn.org/stable/auto_examples/classification/plot_digits_classification.html|Recognizing hand-written digits]] ako súčasť dokumentácie balíčka //scikit-learn//. **9. Plánovač bežeckej/turistickej trasy** Terminálová aplikácia, ktorá by pre zadanú dĺžku trasy a súradnice (zemepisná šírka a dĺžka) počiatočného a štartového bodu vytvorila //gpx// súbor s trasou, ktorá by najviac odpovedala týmto parametrom. Išlo by prakticky o úlohu hľadania cesty o konkrétnej cene na grafe. Mapové dáta je možné získať napríklad z portálu [[https://www.openstreetmap.org/|openstreetmap]]. **10. Jupyter notebook via docstrings** Program, ktorý by textový súbor tvaru import math """ ## Nadpis ### Podnadpis * Jedna vec * Druha vec """ a = 5 b = 6 a, b = b, a """ * Komentar | A | B | | --- | --- | | 1 | 2 | | .5 | 7 | """ print('Hello World!') do formátu Jupyter notebook-u. Cieľom je oddeliť markdown bloky (docstringy) a bloky kódu a uložiť všetko potrebné do štruktúry, ktorá je vlastná programu Jupyter notebook. **11. Snímání dat z grafů na obrázcích** Aplikace, která umožní otevřít graf (obecně bitmapový obrázek) a uživateli umožní sejmout hodnoty grafu (alespoň v některých bodech) a uloží je do souboru. V nejjednoduší verzi uživatel vše zadá manuálně a snímání v určitých bodech provede kurzorem myši. Je možné se zamyslet i nad více sofistikovaným přístupem. **12. Generátor signálů pro psychoakustické experimenty** Aplikace, která umožní vygenerovat různé typy akustických signálů: čisté tóny, šumy (širokopásmové, pásmově omezené, notched), komplexní signály, AM a FM tóny, pulse train... Uživatel může zadat parametry signálů a výsledný signál bude možné přehrát a například uložit do souboru typu wav. Program by měl umožnit zobrazit signál v časové i frekvenční doméně (spektrum). **13. Obsluha externí zvukové karty** Vytvořte komunikaci mezi programem a (externí) zvukovou kartou tak, aby bylo možné současně přehrávat a nahrávat signál. Latence nahrávaného signálu by měla být co nejmenší a hlavně stabilní. Můžete využít modul audiomath https://pypi.org/project/audiomath/ a psychtoolbox který používá portaudio. Možné testovat na vlastní zvukové kartě nebo popřípadě po domluvě na kartě zapůjčené katedrou radioelektroniky. **14. Auditory chimeras** Generátor tzv. Auditory chimeras https://research.meei.harvard.edu/chimera/index.html sloužících pro studium zpracování komplexních zvukových signálů (např. řeči) ve sluchovém systému. Auditory chimeras vznikají tak, že se zvukový signál zpracuje bankou filtrů typu pásmová propusť a poté se získá obálka a nosná v každém pásmu. Auditory chimeras pak umožňují různou manipulaci obálkou a nosnou dekomponovaného signálu. **15. Detekce frekvence určující vjem výšky komplexních signálů** Navrhněte a vytvořte aplikaci, která umožní zjistit základní frekvenci (může být v čase proměnná) komplexních zvukových signálů. Jedna varianta je použít model sluchové dráhy (banku filtrů pro kochleu + usměrnění a filtraci signálu) a na výstup modelu aplikovat tzv. summary autocorrelation function která najde společnou periodu opakování signálu ve všech pásmech (výstupech) banky filtrů. **16. Systém pro měření spontánních otoakustických emisí** Implementujte systém pro měření otoakustických emisí, které mohou vznikat uvnitř ucha bez cílené akustické stimulace (spontánní otoakustické emise, SOAE). Tyto signály se dají měřit vložným "sluchátkem" ve kterém je mikrofon (sondu máme v laboratoři). Systém bude umět nahrávat zvukový signál a zobrazovat průměrované amplitudové spektrum. Volitelně je možné systém rozšířit o další algoritmy zpracování těchto emisí. SOAE nejsou přítomny u všech lidí. Jsou studovány zejména ve snaze porozumět tomu, jak funguje vnitřní ucho. **17. Systém pro měření audiometrických experimentů** Implementujte systém, který umožní měřit práh sluchu pro čisté tóny (tóny o jedné frekvenci). Systém by měl mít grafické rozhraní pomocí kterého bude experimentátor provádět měření. Je možné volit z více variant řešení, také varianty, které umožní provádět automatické měření. **18. Tlumený harmonický oscilátor** Vytvořte demonstrační software s různými metodami řešení tlumeného harmonického oscilátoru (těleso na pružině). Mezi implementovanými metodami by měly být 1. numerické řešení pohybové rovnice; 2. analytické řešení pomocí Fourierovy transformace; 3. výpočet přenosové funkce z impulsové odezvy oscilátoru; 4. Laplacova transformace impulsové odezvy; 5. Konvoluce impulsové odezvy se sinovou funkcí.