Programy

Adaptive Thresholding / Adaptivní Prahování

Autor: handy
Přidáno: 2011-02-17 22:12:06

The application is written in C# and it can be downloaded from the following link: Adaptive Thresholding. The algorithm converts the image's color palette into black and white (enriched by the optional colorization) using the threshold value computed from the neighbourhood of each pixel. The method is resistant against the uneven lighting and as can be seen on the picture to the right the text is filtered even from the really damaged image. The application contains several options to enable the user to optimize the fitering to achieve the better result. It doesn't support batch processing but if you would like this functionality, send me a message and I'll consider to add this feature.

Aplikace je napsána v jazyce C# a lze ji stáhnout z následující adresy: Adaptivní Prahování. Algoritmus převádí barevnou paletu obrazu do černobílé (rozšířeno o volitelné obarvení) s využitím lokálního určení hodnoty prahu z okolí každého pixelu. Metoda je odolná proti nerovnoměrnému nasvícení, což je viditelné na přiloženém obrázku. Aplikace dále poskytuje několik možností nastavení, aby bylo možné dosáhnout optimálního výsledku. Prozatím není podporováno hromadné zpracování souborů, ale pokud by byl o tuto funkcionalitu zájem, napište, zvážím její přidání.

Prioritní fronta Meyerova algoritmu

Autor: handy
Přidáno: 2010-01-16 09:40:10

Lineárně spojovaný seznam s polem ukazatelů na diskrétní hodnoty

V popisu Meyerova algoritmu pro Watershed segmentaci je zmiňována nutnost vkládat hodnoty do prioritní fronty. Pojmem prioritní fronta se rozumí taková struktura, která umožňuje vkládání hodnoty na takovou pozici, aby posloupnost hodnot ve frontě zůstala seřazena, a vyjímání prvního prvku fronty.

Z výše uvedeného popisu je zřejmá výhodnost implementace nějaké z dynamických datových struktur, protože počet prvků ve frontě je velmi proměnný. Dále je, vzhledem k nutnosti udržovat data seřazená, vhodnější využít spojovaného seznamu spíš, než upravovat klasickou strukturu fronty. Data je třeba vyjímat pouze ze začátku fronty, a tedy postačí pouze lineárně spojovaný seznam.

Zde však opět nastává problém se seřazeností. Pro vložení na korektní pozici je třeba od prvního prvku seznamu procházet postupně prvky až k pozici, na který má být vkládaný prvek zařazen. Toto vyhledávání je však vzhledem k obrovskému množství hodnot, jež jsou během segmentace zpracovávány, zbytečně náročné a způsobuje výrazný nárůst složitosti.

Právě zde je uplatněno jednoduché vylepšení využívající faktu, že hodnoty vkládané do seznamu náleží konečné množině. Klasicky se při segmentaci obrazu jedná o jasové celočíselné hodnoty v intervalu <0,255>. Pokud bychom tedy vytvořili pole ukazatelů směrující na místa v lineárním spojovaném seznamu, na která náleží jednotlivé hodnoty z intervalu, bylo by možno vynechat celý postup vyhledávání pozice pro zařazení a hodnotu vložit přímo na místo určené konkrétním ukazatelem. Pochopitelně takový postup předpokládá nutnost udržovat pole ukazatelů aktuální, ale toho lze dosáhnout mnohem jednodušeji, než vyhledávání v seznamu.

Celá myšlenka je zjednodušeně vysvětlena na přiloženém obrázku, kde je znázorněn takto upravený seznam pro celé hodnoty z itervalu <1,5>. Jednotlivé ukazatele jsou nastaveny na místa v seznamu, na kterých, při zařazené příslušné hodnoty, bude zachována seřazenost seznamu. Pokud je nejnižší hodnota přítomná v seznamu vyšší, než nejnižší přípustná hodnota, jsou ukazatele na hodnoty.

Pro snadnější pochopení přikládám ještě kód v C++ s jednoduchou implementací takového seznamu.

3D Terrain Generator

Autor: handy
Přidáno: 2010-01-15 17:34:10

Pro předmět Pokročilá počítačová grafika jsem si jako projekt vybral implementaci metod pro generování trojrozměrného terénu. Výsledkem je, myslím, poměrně zdařilá aplikace, která umožňuje generování terénu trojicí metod:

  • Fraktální generování,
  • Fault formation,
  • Perlinův šum.

3D Terrain Generator

Aplikace Watershed algoritmu

Autor: handy
Přidáno: 2009-05-27 14:29:33

Pro předmět Zpracování obrazu vznikla relativně jednoduchá aplikace demonstrující segmentaci obrazu s využitím Watershed algoritmu. Ten dělí gradientní obraz, který chápe jako výškovou mapu, na rozvodí. Rozvodí jsou oddělena hrázemi v místech, kde by došlo k jejich splynutí a reprezentují výsledné segmenty obrazu. Aplikace má implementovanou pouze jednoduchou variantu slučování regionů, která nemá stoprocentní výsledky. Výsledný obraz je tedy většinou přesegmentovaný, ale pro demonstraci principu je výsledek dostačující. Připojen je jeden obrázek silnice s ukázkovým výstupem segmentace. Stáhnout je možno zde: Watershed segmentation

Hra do předmětu MUL

Autor: handy
Přidáno: 2009-05-19 17:34:42

Do předmětu MUL jsem se přihlásil na variantu projektu, jejímž cílem bylo vytvoření libovolné počítačové hry v jazyce C, která by pracovala se zvuky a videosekvencemi. Mým řešením byla variace na klasickou vesmírnou arkádu. Výsledek si můžete prohlédnout zde: Space arcade. Ještě doplním, že hra má (z důvodu časového omezení projektu) pouze jedinou úroveň a 3 druhy nepřátel. Jako hudební doprovod byly použity soubory ze serveru http://www.incompetech.com. Pokud se vám líbí,přispějte, prosím, autorovi dobrovolnou dotací, ke které na svých stránkách vybízí.

Ovládání:
směrové klávesy - pohyb
mezerník - výstřel
caps lock - automatická střelba zapnuto/vypnuto

Duha, odrazy v kapce vody

Autor: handy
Přidáno: 2009-04-16 09:55:43

Pro předmět Fyzikální optika jsme s kamarádem vypracovali projekt simulující vznik duhy pomocí odrazů v kapce vody. Konkrétně aplikace zobrazuje, jakým způsobem se paprsek lomí a odráží v kapce a znázorňuje chromatickou disperzi. Aplikaci je možné stáhnout zde Duha, odrazy v kapce.

FloodFilling Art

Autor: handy
Přidáno: 2009-04-11 09:14:56

floodfillingProgram vytvořený pro předmět Výtvarná informatika umožňuje vytvářet zajímavé obrázky pomocí různých variací na semínkové vyplňování. FloodFilling Art můžete stáhnout nejen jako program, ale rozhodl jsem se uveřejnit také C# zdrojový kód. Pro osobní potřeby ho můžete použít dle libosti, v případě jiného využití mi raději předem napište.
Přikládám několik obrázků, které stručně demonstrují možnosti tvorby s pomocí tohoto programu.
Uživatelskou příručku k programu naleznete zde: FloodFilling Art příručka.

Composite diagram simulator

Autor: handy
Přidáno: 2009-01-19 16:35:42

Simulátor Turingova stroje ve tvaru kompozitního diagramu je aplikace s grafickým rozhraním vytvořená v jazyku C#.
Nápad pro její vytvoření přišel během práce na domácí úloze do předmětu TIN, kdy se mi takovou aplikaci nepovedlo na internetu dohledat. Zkusil jsem tedy něco takového sám vytvořit.

Protože se jedná o vyloženě zájmovou práci, která má poměrně značný rozsah, není ještě zdaleka kompletní.

Současná omezení:

  • pouze jednopáskový TS
  • pouze jediná varianta přijímání / odmítání řetězců (přijme, pokud není možnost dalšího přechodu, odmítne v případě abnormálního zastavení - např hlava přepadne přes levý okraj pásky)
  • nelze ukládat / načítat
  • text nad přechody v diagramu má pozici určovanou jednoduchým (a tedy nevyhovujícím) způsobem
  • pravděpodobné chyby v anglickém textu
  • neexistuje nápověda

Program je možno stáhnout zde: TuringMachine.exe.

Jelikož je program, jak již bylo zmíněno, vytvořen v MSVS08 C#, je pro jeho spuštění třeba splnit náležité prerekvizity co do programového vybavení. Časem možná poskytnu zdrojové kódy, pokud bude zájem.
Snad ještě poznámka k licenci: Program je možno využít pro soukromé neziskové účely, případně se obrátit na autora.

Update: Přidány možnosti ukládání a načítání diagramů včetně aktuálního stavu zpracování.

OpenGL Accumulation buffer

Autor: handy
Přidáno: 2008-12-08 08:01:18

Poměrně zajímavá a přitom jednoduchá aplikace, která zobrazuje vzájemně se přitahující 'planety'. Ty za sebou zanechávají stopu s využitím accumulation bufferu. Jednoduché a přitom relativně dobře vypadající.

Stáhnout je možno zde: acc_buffer.exe

Dijkstrův algoritmus

Autor: handy
Přidáno: 2008-12-08 07:40:58

Jednoduchý program demonstrující vyhledávání nejkratší cesty pomocí dijkstrova algoritmu. Lze zvolit start a cíl, zadat zpoždění a spustit.

Zde je možno program stáhnout: Pathfinding.exe

Fallout Tycoon

Autor: handy
Přidáno: 2008-11-15 10:16:16

Fallout Tycoon je moje oficiální prvotina. Práce na něm začala již v roce 2001, postupně s vývojem pomohlo několik dalších lidí (část grafiky, příběh, webové stránky) a vydání se hra dočkala v roce 2003.
Jedná se o budovatelskou strategii z prostředí hry populární herní série Fallout. Hra se dočkala značného úspěchu. Za vše mohu jmenovat ocenění serveru plnehry.cz, kde hra získala 1. místo v kategorii freewarových strategií za rok 2003 a reportáž v pořadu ČT GamePage.
Dodnes se jedná o nejobsáhlejší projekt, který jsem vytvořil (v současné době není časově únosné se do takto rozsáhlého projektu pustit, snad po dokončení studií na VUT).

Hru je možné stáhnout na této adrese: http://www.madbrahmin.cz/download/ftycoon.exe
Malé upozornění závěrem: na některých konfiguracích nebylo možné hru spustit.