neděle 15. února 2015

Analýza obrazu a databáze

Brzo bych chtěl zkusit začít pracovat na importování zdrojů do databáze. Ve skutečnosti je tolik věcí o kterých přemýšlím a pořádně se nemohu rozhodnout co dřív dělat. Jen ty nápady dostat z hlavy a zrealizovat. Přemýšlím o předběžné rychlo-analýze zdroje, ta by probíhala hned po uložení do počítače.

Co užitečného se dá ze zdroje vyčíst?

Máme dva typy obrazů: jpeg (snímek ortofoto) a png (mapka v několika málo barvách). Ty dva obrázky se musí dokonale vzájemně překrývat což není problém. Analýzou bych chtěl spočítat průměrné barvy náležící určitým "logickým vrstvám". Dejme tomu, že logickou vrstvou myslím řeku, strom, nebo červenou střechu baráku. Chci zjistit co je na fotce, kolik je tam stromů, jak moc jsou zelené (jako mají zhruba průměrnou barvu), chci zjistit jestli je tam voda a jakou má barvu, chci zjistit jakou barvu má tráva.

Předběžný postup analýzy:
Nejdříve potřebuju soubor s definicemi logických vrstev a rozsahů barev. Například pro řeku či vodu přiřadím odstín 80°-131°, 28-31% saturace, světlost 29-36% ... to se týká fotky. Pokud jde o mapku, tak tam jsou jiné barvy, potřebuju znát modrou barvu, která patří k řece. Nejdříve budu hledat v png barvy odpovídající řece, pokud najdu, zjistím jaká barva je na fotce na stejné souřadnici x,y. Pokud splňuje výše uvedené podmínky pak je to řeka a přidám hodnotu barvy do pole. Nakonci mohu spočítat průměrnou barvu, průměrnou minimální a průměrnou maximální barvu řeky či vodního povrchu. Musím dodat, že budu sbírat vzorky každých 5 pixelů, tzn. mělo by to jít asi 18x rychleji než.u kompletní analýzy všech pixelů.

Podobným způsobem mohu zjistit barvu stromů, rozdíl je jen v tom, že to nebudu porovnávat se mapkou png. V tomto případě budu obrázek procházet a každých 5 pixelů se podívám jestli barva odpovídá barvě stromu. Pokud ano, pak hledám další pixel, pokud jsem našel, pak vím, že když jsou už dva, tak je tam skutečně strom. Případně bych mohl jednotlivé stromy ukládat (tj. souřadnice x,y těch dvou nalezených vzorků) a pak porovnávat následující řadu y, s předchozím nálezem v řadě y-1, a tak bych mohl opět potvrdit zda tam leží strom a pokud ano, znám vlastně i jeho středový bod. Otázka je co pak s takovými výsledky udělám. Určitě mohu díky tomu zjisti alespoň průměrnou barvu stromu.

U trávy se očekává, že bude světlejší než stromy a mají trochu jinou barvu, takže díky tomu mohu zjistit i to, kde je tráva a jakou barvu má tráva. Mohu například zjistit kde leží pole nebo vyschlá půda či lom.

Všechny nalezené údaje by mělo být možné uložit do palety barev + množství nalezených způměrovaných barev dané logické vrstvy by také bylo možné zapsat do palety. S těmito čísly mohu později provést proces korekce barev a doladit například ty fotky které jsou moc tmavé, nebo jinak využít informací o tom co se nalézá na obrázku.

Předběžný postup importování dat:

Importování se týká přesunu obrazů do databáze, aby se na disku neválelo mnoho souborů. fotky přesunu do databáze, která bude tvořit asi cca 26kb na jeden soubor. Každý db soubor bude obsahovat jeden zdroj. Tak např. zoom 18 by měl být v databázi pro zoom 18 (originály). Přesun znamená pouze zkopírovat soubor, ale odstranit přitom informaci o tom jakého zoomu se foto týká. 

Výhoda: rychlý přístup k souborům.
Nevýhoda: zabere více místa na disku.

Poté co bude staženo určité množství zdrojů potřebných k vytvoření určitého LODu (e.g oblast lodu 8) by bylo možné přesunout soubory z této databáze do databáze "komprimovaného" typu, která by obsahovala 1000kbyte na řádek.

Výhoda: tato databáze by zabírala podstatně méně místa (ušetříte min. 2x tolik místa na disku). Výhodou je také celková rychlost načítání dat.
Nevýhoda: bude vyhledávání souboru bude malinko pomalejší než u předchozího typu nekomprimované databáze, ale stále mnohem rychlejší než hledání jednotlivých souborů na disku (máte-li ve složce stovky, tisíce ba desetitisíce či statisíce souborů tak to trvá než systém najde požadovaný soubor.

Nevýhoda databází:
Pokud si databázi nevypálíte na DVD a dojde u vás k nějaké ztrátě dat na disku, tak přijdete o všechno co jste si uložili (veškeré originální zdroje). Možná to systém zvládne opravit, ale je otázka jestli takový opravený databázový soubor ještě bude funkční).


Aktualizováno:Naštěstí se soubory jpg i png dají zkrátit o hlavičku, čímž se zmenší velikost databázového souboru. Tvar hlavičky JPEG . Je tam několik bytů, které mohu vypustit a se tím při velkém množství souborů zmenší velikost databáze o desítky až stovky megabyte. U jpg souboru veskutečnosti vidím 250 bytů které se zdá se vůbec nemění. Předpokládám tedy, že pokud zdroj a velikost obrázků budou stejné dá se do vypustit a ušetřit slušný kus místa (těch 250 bytů je možné přesunout na začátek databáze).

Žádné komentáře:

Okomentovat