Motion zoom - mozgás alapú képrekonstrukció
A buszgyárban dolgoztam, amikor egy alkalommal át kellett adnom a rendőrségnek néhány kamera felvételét, mert arra sétáltak egy ügy gyanúsítottjai és a gyár területét figyelő kamerák felvehették őket.
A felvételt, a felbontás korlátai miatt sajnos csak arra tudták használni, hogy időpontokat és maximum pár elnagyolt külsőséget tudjanak megfigyelni, arcfelismerésre alkalmatlan volt.
Az emberi agy viszont egy zseniális eszköz, és eszembe jutott, hogy ha veszünk egy megfelelően gagyi felvételt és sikerül rajta egy embert pár percig figyelni, akkor utána nagy eséllyel rá tudunk mutatni a felvételen látott személyre egy jobb minőségű fotón - az agyunk összesíti és kiegészíti a látottakat.
Sajnos nem vagyok a téma szakértője, így teljesen laikusként azon kezdtem el gondolkodni, milyen tényező segíthet az agynak a hiányzó részeket kitölteni. Az egyik, ami eszembe jutott, hogy amikor egy alak vagy egy arc mozog, minden pozíciójában más pixelek lesznek hangsúlyosak a felvételen, ergo minden pozícióban egyre több "szemszögből" látszik, több részlet derül ki. Íme egy példa:
A két kép között talán az orrnál látható a legnagyobb különbség, mintegy demonstrálva a mozgásból adódó információtöbbletet pl. ahhoz képest, ha csak az egyik kép állna rendelkezésre.
Azt feltételeztem, hogy ha tudom a két állapot közötti irányvektor-eltérést, akkor mesterségesen is elő tudom állítani azt, amit az agyunk automatikusan tesz.
Laborkörülményeket állítottam elő: vettem egy nagy felbontású képet, lebutítottam eléggé, de minden egyes kicsinyítésnél 1 pixellel arrébb tettem a kiindulási pontot. Tehát tudtam a vektort: 1 pixel eltérés jobbra.
a teszthez használt kiindulási kép
ez pedig az egyik lekicsinyített kép
ez történik, ha csak egyszerűen felnagyítjuk
És az eredmény, ami csak a vízszintes "mozgást" tudva rekonstruáltam 10 képből:
elég csalódás, dehát
Nagyon enyhén kivehető - például a frizurája szélén -, hogy függőlegesen ívek rajzolódnak ki, ami már sejtet némi eredményt: nem egy kis képet skáláztunk fel, hanem van többletinformáció, ami segít alakzatokat is kivenni.
Nos, akkor lépjünk tovább egy szinttel: vegyünk 10 pixel jobbra mozgást és 10 pixel lefelé mozgást is, 10x10, azaz 100 kép szükséges hozzá. Persze mindet egyesével lekicsinyíteni, nem volt egy gyors munka.
100 kép alapján történt rekonstrukció
Bár az eredmény a megközelítésemmel egészen elfogadhatóra sikerült, kipróbáltam korunk egyik legjobb képszerkesztőprogramját is, hogy mit tud kezdeni egy 60x30 pixeles képpel, ha nagyításra lenne szükség:
"okos" felskálázás "bicubic smoother" algoritmussal
Miután csalódottan konstatáltam, hogy a módszeremmel olyan óriási áttörést nem értem el egy milliók által napi szinten használt és elérhető képszerkesztővel szemben, fel is hagytam a további finomításokat és meghagytam egyszerű laborkísérletnek.