Slo-Pi

Gordon HollingworthRaspberry Pi temelji na sistemskem čipu (SoC) BCM2835, ki je bil izvorno izdelan za predvajanje multimedijske vsebine na mobilnih telefonih. Čeprav ti zaostajajo za razvojem namiznih računalnikov, so veliko bolj energetsko učinkoviti. Za primer lahko vzamemo predvajanje posnetka s kodekom H264 na Raspberry Piju v primerjavi z Intelovim namiznim procesorjem. Raspberry Pi lahko predvaja 1080p video pri 30 okvirih na sekundo (FPS) pri 250 MHz in porabi le 200 mW, medtem ko Intelov procesor potrebuje nekaj GHz in porabi okrog 30 do 40 W električne energije.

Zaradi neverjetne strojne opreme mini računalnika, ta lahko predvaja posnetke v dejanskem času brez velikega vpliva na sam procesor, saj je vse delo opravljeno na grafičnem predelu in tako ARM predel lahko skrbi za druge reči. To obenem pomeni, da je s tem omogočen dostop do zelo zanimivih bitov znotraj kodirnega cevovoda (encode pipeline), do katerega sicer ne gre dostopati. Poleg tega je še en zanimiv del, ki se imenuje ocena gibalnega bloka znotraj H264 kodirnika. Za kodiranje videa je potrebno primerjati trenutni okvir s prejšnjim referenčnim okvirjem in delati na trenutnem makro bloku (16 x 16 slikovnih točk), ki najbolj ustreza referenčnemu okvirju. Vse to izvaja strojna oprema, ki kasneje izvozi sklop vektorjev, kateri povedo iz kje blok izhaja – kot je naprimer merjenje gibanja na sliki. Opisani postopek je uporabljen v aplikaciji imenovani motion. Primerja sliko na zaslonu s prejšnjo sliko in uporabi informacije za dogodke, kot je snemanje posnetka, zapisovanje slike na disk ali vklop/izklop alarma. Na žalost je pri tej resoluciji potrebno veliko procesiranja, da lahko to dosežemo v domeni slikovnih točk, kar je smešno, če za vas to naredi strojna oprema.

V zadnjih nekaj mesecih se je Gordon Hollingworth, vodja programske opreme pri fundaciji Raspberry Pi, ki je prav tako podal vse prej omenjene informacije, ukvarjal s pridobivanjem vektorjev iz video kodirnika, katerega rezultate prikazuje spodnja animirana slika.

Vse kar vidite na sliki je magnituda vektorja za vsak 16 x 16 makroblok, ki je enakovreden hitrosti pri kateri se premika. To informacijo ponuja kodirnik kot dodatno informacijo (v raspivid jo lahko omogočite z argumentom -x). Gre za eno celo število na posamezen makroblok, izračuna pa se ga s formulo ((mb_širina+1) x mb_višina) x 4 bajte na okvir, zato je pri 1080p30 to 120 x 68 x 4 == 32 KBajtov na okvir. Ker gre v zgornjem primeru za povsem majhno število podatkov, je to lahko preračunano zelo enostavno, saj pri 30 okvirjih na sekundo ne gre za veliko dela pri zaznavanju premikanja.

Vir: http://www.raspberrypi.org/vectors-from-coarse-motion-estimation/

Komentar

Vaš e-poštni naslov ne bo objavljen. Zahtevana polja so ime, e-pošta in komentar.