perjantai 2. joulukuuta 2016

Prototyypin kehittäminen, osa 2



Kuluva viikko on sujunut prototyypin kehittämisen kannalta erittäin hyvin, sillä työn alla ollut toinen algoritmi saatiin viimeinkin toimimaan. Algoritmi perustuu edellisessä postauksessa mainittuun tutkimukseen, jonka ovat kirjoittaneet Halder, Tahtali ja Anavatti vuonna 2014 [1]. Kirjoittajien nimien pohjalta olemme ristineet menetelmän HTA-algoritmiksi. 

HTA-algoritmi on iteratiivinen kuten Oreifej'n menetelmä. Siinä missä Oreifej'n menetelmä perustuu kuvan rekisteröimiseen aikakeskiarvoa vastaan, HTA:ssa referenssikuvana käytetään videon ensimmäistä kuvaa. Kun muut kuvat on rekisteröity ensimmäistä vastaan, lasketaan pikseleiden keskimääräinen siirtymä ja siirretään jokaisen kuvan pikseleitä tämän perusteella. Alkuperäisessä tutkimuksessa menetelmän todettiin tuottavan parempilaatuista kuvaa ja olevan laskennallisesti Oreifej'n menetelmää kevyempi.

Tutkimuksen väitteet kuvanlaadusta on helppo todentaa yksinkertaisilla esimerkeillä. Kuvissa 1, 2 ja 3 on esitetty vertailu Oreifej'n ja HTA-algoritmin välillä. Kuvien 1 ja 2 lähdemateriaalina käytetty video löytyy Githubista.

 


Kuva 1. Vertailu tiiliseinävideolla. Vasemmalla pysäytyskuva, oikealla Oreifej'n menetelmän lopputulos ja alla HTA-algoritmin lopputulos.



 

Kuva 2. Vertailu shakkilautavideolla. Alla HTA-algoritmin lopputulos.


Kuva 3. Vertailu tekstivideolla. Alla HTA-algoritmin lopputulos.

Kaikista kolmesta kuvasta voidaan todeta, että HTA-algoritmin kuvanlaatu on selvästi parempi. Erityisesti kuvassa 3 teksti saadaan rekonstruoitua lähes täydellisesti, ja teksti on täysin luettavaa. Tämä on vaikuttava tulos erityisesti siksi, että luettavuuden kannalta yksityiskohdilla on suuri merkitys. Kuvassa 2 HTA-algoritmin tuottama ruudukko on paljon vähemmän vääristynyt kuin Oreifej'n vastaava. Kuvassa tosin esiintyy pieniä artefakteja, joita Oreifej'n lopputuloksessa ei ole.

Vaativammissa testeissä algoritmien välillä ei kuitenkaan havaittu kuvanlaatueroja. Kuvissa 4 ja 5 on vertailtu Oreifej'n ja HTA:n lopputuloksia kahdessa testissä, jotka esiteltiin jo edellisessä postauksessa.




 Kuva 4. Oreifej'n algoritmin lopputulos yllä, HTA:n alla.



Kuva 5. Oreifej'n menetelmän tulos yllä, HTA:n alla.

Kuvissa 4 ja 5 kahden menetelmän väliset erot ovat hyvin pienet, ja samat yksityiskohdat erottuvat molemmista kuvista. Oreifej'n lopputulokset näyttävät hieman pehmeämmiltä, kun HTA:ssa aaltoilua pystyy vielä havaitsemaan. Suurimmat erot syntyvät videolla liikkuvien elementtien kohdalla. Koska HTA:ssa kuvat rekisteröidään ensimmäistä ruutua vastaan, voi ongelmia syntyä jos ensimmäinen kuva eroaa muista huomattavasti. Tämä on havaittavissa kuvassa 4 veneen osalta.

Olemattomat erot algoritmien välillä saattavat johtua videoiden epätarkkuudesta. Selvästikin HTA-algoritmilla on paljon suurempi potentiaali tuottaa erinomaista jälkeä, mutta testimateriaalilla näitä eroja ei saada esiin. Kameran tulisi ehkä olla lähempänä kuvattavaa vedenpintaa.

 Ajoaika HTA-algoritmilla on Oreifej'n algoritmia suurempi, mikä johtuu käytännössä prototyypin toteutuksesta. Alkuperäisessä tutkimuksessa HTA havaittiin nopeammaksi, mihin on epäilemättä laskettu mukaan myös Oreifej'n algoritmin toinen vaihe, videomatriisin minimointi. Tätä vaihetta ei kuitenkaan voida suuriresoluutioisella videolla suorittaa, joten olemme käyttäneet sitä vain kuvissa 1, 2 ja 3. Videomatriisin minimoinnin kanssa Oreifej olisi varmasti hitaampi, jos HTA:n toteutus olisi paremmin optimoitu.

Tekniikan asettamia rajoitteita HTA ei muuta, vaan ne pysyvät samoina. Algoritmi suoriutuu liikkuvien elementtien käsittelystä ehkä jopa huonommin. Joka tapauksessa HTA-algoritmi on toimiva menetelmä staattisen vedenpohjan kuvaamiseen pinnan yläpuolelta.

Kuvissa 4 ja 5 on käytetty lähdemateriaalina seuraavia videoita:

Lähteet

[1] Halder, K. et al. 2014. High accuracy image restoration method for seeing through

Ei kommentteja:

Lähetä kommentti