FI109395B - Menetelmä ja järjestelmä videokuvan stabilisoimiseksi - Google Patents

Menetelmä ja järjestelmä videokuvan stabilisoimiseksi Download PDF

Info

Publication number
FI109395B
FI109395B FI20010629A FI20010629A FI109395B FI 109395 B FI109395 B FI 109395B FI 20010629 A FI20010629 A FI 20010629A FI 20010629 A FI20010629 A FI 20010629A FI 109395 B FI109395 B FI 109395B
Authority
FI
Finland
Prior art keywords
image
camera
motion
horizontal
component
Prior art date
Application number
FI20010629A
Other languages
English (en)
Swedish (sv)
Other versions
FI20010629A0 (fi
Inventor
Jarno Tulkki
Original Assignee
Hantro Products Oy
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hantro Products Oy filed Critical Hantro Products Oy
Priority to FI20010629A priority Critical patent/FI109395B/fi
Publication of FI20010629A0 publication Critical patent/FI20010629A0/fi
Priority to PCT/FI2002/000259 priority patent/WO2002078327A1/en
Application granted granted Critical
Publication of FI109395B publication Critical patent/FI109395B/fi

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/527Global motion vector estimation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N23/00Cameras or camera modules comprising electronic image sensors; Control thereof
    • H04N23/60Control of cameras or camera modules
    • H04N23/68Control of cameras or camera modules for stable pick-up of the scene, e.g. compensating for camera body vibrations
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N23/00Cameras or camera modules comprising electronic image sensors; Control thereof
    • H04N23/60Control of cameras or camera modules
    • H04N23/68Control of cameras or camera modules for stable pick-up of the scene, e.g. compensating for camera body vibrations
    • H04N23/681Motion detection
    • H04N23/6811Motion detection based on the image signal
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N5/00Details of television systems
    • H04N5/14Picture signal circuitry for video frequency region
    • H04N5/144Movement detection
    • H04N5/145Movement estimation

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Description

109395
Menetelmä ja järjestelmä videokuvan stabilisoimiseksi
Ala
Keksinnön kohteina ovat menetelmä ja järjestelmä peräkkäisistä liikkumattomista kuvista muodostetun videokuvan stabilisoimiseksi.
5 Tausta
Videokuvan koodausta ja dekoodausta käytetään datamäärän vähentämiseksi, jotta se voidaan tallentaa tehokkaammin jollekin muistivälineelle tai siirtää tietoliikenneyhteyttä käyttäen. Eräs esimerkki videokoodausstandardista on MPEG-4 (Moving Pictures Expert Group), jossa tavoitteena on lähet-10 tää videokuvaa reaaliaikaisesti langattomassa kanavassa. Tämä on erittäin kunnianhimoinen tavoite, sillä jos esimerkiksi lähetettävä kuva on cif-kokoa (352 x 288 pikseliä) ja lähetystaajuus 15 kuvaa sekunnissa, olisi pakattava 36,5 miljoonaa bittiä 64 kilobittiin joka sekunti. Pakkaussuhde olisi tällöin erittäin suuri 570:1. Toinen tyypillisesti käytettävä kuvakoko on qcif-koko, joka on 15 176 x 144 pikseliä.
Kuvan siirtämiseksi kuva tyypillisesti jaetaan kuvalohkoiksi, joiden koko valitaan järjestelmään sopiviksi. Kuvalohkoinformaatio käsittää yleensä tietoa kuvalohkon valoisuudesta, väristä ja sijainnista itse kuvassa. Kuvalohko-jen data kompressoidaan lohkoittain halutulla koodausmenetelmällä. Komp-20 ressointi perustuu vähemmän merkityksellisen datan poistamiseen. Kompres-sointimenetelmät jaetaan pääasiallisesti kolmeen eri luokkaan: spektrisen re-: dundanssin vähentäminen (Spectral Redundancy Reduction), tilaredundanssin vähentäminen (Spatial Redundancy Reduction) ja ajallisen redundanssin vä-hentäminen (Temporal Redundancy Reduction). Tyypillisesti kompressointiin 25 käytetään näiden menetelmien erilaisia yhdistelmiä.
Spektrisen redundanssin vähentämiseksi sovelletaan esimerkiksi '···’ YUV-värimallia. YUV-mallissa käytetään hyödyksi sitä, että ihmisen silmä on herkempi luminanssin eli valoisuuden vaihteluille kuin krominanssin eli värin * · muutoksille. YUV-mallissa on yksi luminanssikomponentti (Y) ja kaksi kromi-30 nanssikomponenttia (U,V). Kahta krominanssikomponenttia voidaan nimittää ; ’·, myös cb- ja cr-komponenteiksi. Esimerkiksi H.263 videokoodausstandardin mukainen luminanssilohko on 16 x 16 pikseliä ja kumpikin krominanssilohko, jotka kattavat saman alueen kuin luminanssilohko, 8x8 pikseliä. Yhden lumi-nanssilohkon ja kahden krominanssilohkon yhdistelmää kutsutaan tässä stan-35 dardissa makrolohkoksi (macroblock). Makrolohkot luetaan kuvasta yleensä ri- 2 109395 veittäin. Jokainen pikseli, sekä luminanssi- että krominanssilohkossa, voi saada arvon väliltä 0-255, eli yhden pikselin esittämiseen tarvitaan kahdeksan bittiä. Esimerkiksi luminanssipikselin arvo 0 tarkoittaa mustaa ja arvo 255 valkoista.
5 Tilaredundanssin vähentämiseksi käytetään esimerkiksi diskreetti- kosinimuunnosta (Discrete Cosine Transform, DCT). Diskreettikosinimuunnok-sessa muunnetaan kuvalohkon pikseliesitys tilataajuusesitykseksi. Lisäksi ku-valohkossa vain niillä signaalitaajuuksilla, joita siinä esiintyy, on suuriamplitudi-set kertoimet, ja niillä signaaleilla, joita kuvalohkossa ei esiinny, kertoimet ovat 10 lähellä nollaa. Diskreettikosinimuunnos on periaatteessa häviötön muunnos ja signaaliin aiheutuu häiriötä vain kvantisoinnissa.
Ajallista redundanssia pyritään vähentämään hyödyntäen sitä tosiasiaa, että peräkkäiset kuvat yleensä muistuttavat toisiaan, joten sen sijaan, että kompressoitaisiin jokainen yksittäinen kuva, generoidaan kuvalohkojen lii-15 kedataa. Perusperiaate on seuraava: koodattavalle kuvalohkolle etsitään mahdollisimman hyvä aiemmin koodattu vertailulohko (reference block), vertailu-lohkon ja koodattavan kuvalohkon välinen liike mallinnetaan ja lasketut liike-vektorit (motion vector) lähetetään vastaanottimelle. Koodattavan lohkon ja vertailulohkon erilaisuus ilmaistaan virhetekijänä (prediction error component).
20 Kuvalohkon liikevektorin määrittämiseen (motion vector prediction) voidaan käyttää aiemmin muistiin talletettua vertailukuvaa (reference picture). Tällaista koodausta kutsutaan inter-koodaukseksi, joka tarkoittaa saman kuvajonon ku-: vien välisten samankaltaisuuksien hyödyntämistä.
Diskreettikosinimuunnettu lohko ’’kvantisoidaan”, eli periaatteessa . 25 sen jokainen alkio jaetaan jollain vakiolla. Tämä vakio saattaa vaihdella eri makrolohkojen välillä. ’’Kvantisointiparametri", josta kyseiset jakajat lasketaan, ....: on välillä 1-31. Mitä enemmän nollia saadaan lohkoon, sitä paremmin lohko ,··. pakkaantuu, sillä nollia ei kanavaan lähetetä. Kvantisoiduille lohkoille voidaan vielä tehdä erilaisia koodausmenetelmiä ja lopulta niistä muodostetaan bittivir-, , 30 ta, joka lähetetään dekooderille. Kooderin sisällä kvantisoiduille lohkoille teh- ’* "· dään vielä käänteiskvantisointi ja käänteisdiskreettikosinimuunnos, ja näin • muodostetaan referenssikuva, josta voidaan ennustaa seuraavien kuvien loh- koja. Jatkossa kooderi siis lähettää tulevan lohkon ja referenssilohkojen välistä .···. erodataa sekä liikevektoreita. Näin pakkaustehokkuus paranee. Dekooderi 35 (Decoder) tekee bittivirran purkamisen ja dekoodausmenetelmien jälkeen pe- •»* 3 Ί 0939 5 riaatteessa saman kuin kooderi (Encoder) teki referenssikuvaa muodostettaessa, eli lohkoille tehdään samat asiat kuin kooderissa, mutta käänteisesti.
Suuri ongelma videokuvaukseen liittyen on kuvaukseen käytetyn kameran tahtomaton liike, johtuen esimerkiksi kuvaajan käsien tärinästä. Ku-5 van stabilisoimiseksi on kehitetty erilaisia mekaanisia ja elektronisia ratkaisuja, sillä vakaa kuva näyttää paljon miellyttävämmältä kuin kuva, joka harhailee ympäriinsä. Lisäksi vakaa videokuva kompressoituu tehokkaammin kuin harhaileva videokuva.
Esimerkiksi US-patentissa 5 317 685 kuvataan ratkaisu, jossa liike-10 vektoreita käytetään kameran liikkumisen tunnistamiseen. Kuvan pikseleiden väliin interpoloidaan pikseleitä, jolloin kuvaa voidaan ikäänkuin kuvan sisällä siirtää liikettä vastaan kuvan stabilisoimiseksi. Tämän ratkaisun ongelma on kuitenkin se, että se aiheuttaa kuvan zoomautumisen, ts. kuvan reunoista jää informaatiota pois.
15 US-patentissa 5 973 733 kuvataan vastaava ratkaisu, jossa interpo loinnin lisäksi voidaan käyttää myös kuvan vääristämistä (warping) kuvan stabilisoimiseksi. Ongelmana on edelleen kuvan zoomautuminen. Lisäksi patentissa mainitaan, että eräs ratkaisu kuvan stabilisoimiseksi on käyttää kamerassa todellista kuva-alaa suurempaa kuvausalaa, jolloin stabilointi voidaan 20 suorittaa siirtämällä kuva-alaa kuvausalan sisällä kameran liikettä vastaan. Kuitenkin tämän ratkaisun ongelmaksi todetaan kuvan muodostamiseksi käytettävän normaalia suuremman CCD:n (Charged Couple Device) aiheuttamat ylimääräiset valmistuskustannukset.
US-patenteissa kuvattujen ratkaisujen ongelma on myös niiden vaa-. 25 tima suuri laskentateho: liikkeen kompensointihan tehdään tavallaan reaa- .···. Majassa, eli heti kun liikkuminen havaitaan se pyritään kompensoimaan jo ky- ....: seisessä kuvassa.
Lyhyt selostus
Keksinnön tavoitteena on tarjota parannettu menetelmä videokuvan t · . ’ ·: 30 stabilisoimiseksi ja parannettu järjestelmä videokuvan stabilisoimiseksi.
Keksinnön eräänä puolena esitetään patenttivaatimuksen 1 mukai-; *·. nen menetelmä videokuvan stabilisoimiseksi. Keksinnön eräänä puolena esi- tetään patenttivaatimuksen 6 mukainen jäijestelmä videokuvan stabilisoimi- • * seksi. Keksinnön muut edulliset suoritusmuodot ovat epäitsenäisten patentti-35 vaatimusten kohteena.
»»· • t · 109395 4
Keksintö perustuu siihen, että hyödynnetään videokuvan kompres-soimiseksi käytettävää ajallista redundanssia hyödyntävää koodausta kameran liikkeen tunnistamiseksi. Kameran liikkeen tunnistaminen saadaan siis lähes "ilmaiseksi” suhteellisen pienellä lisälaskennalla, koska liikevektorit on jo 5 joka tapauksessa laskettu kuvan kompressoimiseksi. Liikkeen kompensointia ei tehdä heti liikkeen havaittua, vaan liikkeen ennustetaan jatkuvan samankaltaisena, jolloin kompensointi tehdään ennustetulle kameran liikkeelle. Lisäksi interpoloinnin sijasta käytetään kuva-alaa suurempaa kuvausalaa, jonka sisällä liikkeen kompensointi tehdään, sillä keksijä on havainnut, että suuremman 10 kuvausalan aiheuttamat kustannukset eivät ole merkittävät saavutettuun hyötyyn eli parempaan kuvanlaatuun nähden. Lisäksi jos kamerassa normaalisti voidaan käyttää erilaisia kuvakokoja, esimerkiksi qcif-kokoa (176 X 144 pikse-liä) ja cif-kokoa (352 x 288 pikseliä), niin keksintö ei aiheuta lisäkustannuksia, jos pienempää kuvakokoa käytetään kuva-alana isomman kuvakoon muodos-15 tämän kuvausalan sisällä.
Keksinnössä siis yhdistetään uudella ja keksinnöllisellä tavalla kuvan stabiloinnista tunnettuja elementtejä nykyaikaisessa videokoodauksessa käytettäviin kompressointimenetelmiin. Yhdistämisessä oleellista on nimenomaan sen tosiseikan havaitseminen, ettei kameran liikettä tarvitse kompen-20 soida heti kun se tapahtuu, vaan havaitun kameran liikkeen pohjalta laadittua ennustettua kameran liikettä kompensoidaan seuraavassa kuvassa.
Keksintö mahdollistaa kuvan stabiloinnin edullisen toteuttamisen . ; : halpoihin videokuvaa tuottaviin laitteisiin, esimerkiksi matkapuhelinjärjestelmän :.' · I kuvapuhelun toteuttaviin päätelaitteisiin.
25 Kuvioluettelo •
Keksinnön edulliset suoritusmuodot selostetaan esimerkinomaisesti ... alla viitaten oheisiin piirroksiin, joista: kuvio 1 esittää laitteita videokuvan koodaamiseksi ja dekoodaami- seksi; » · 1 :· “· 30 kuvio 2 esittää tarkemmin laitetta videokuvan koodaamiseksi; ’...: kuvio 3 esittää liikkumattoman kuvan jakautumista lohkoihin; ; ;·; kuvio 4 havainnollista kuvausalaa ja kuva-alaa; • · · · .···. kuviot 5A, 5B ja 5C havainnollistavat kameran liikkumisen vaikutus ta kuvausalaan ja kuva-alaan; ' : 35 kuviot 6A, 6B ja 6C havainnollistavat kameran liikkeen kompensoin- tia; 109395 5 kuvio 7 on vuokaavio havainnollistaen menetelmää videokuvan sta-bilisoimiseksi.
Suoritusmuotojen kuvaus
Viitaten kuvioon 1 selostetaan laitteita videokuvan koodaamiseksi ja 5 dekoodaamiseksi. Kuvaus on pelkistetty, sillä alan ammattilaiselle videokoo-daus on hyvin tunnettua standardien ja oppikirjojen perusteella, esimerkiksi tähän viitteeksi otettavan teoksen perusteella, Vasudev Bhaskaran ja Konstan-tinos Konstantinides: ’’Image and Video Compressing Standards - Algorithms and Architectures, Second Edition", Kluwer Academic Publishers 1997, luku 6: 10 "The MPEG video standards”.
Henkilön 100 kasvoja kuvataan videokameralla 102. Videokuva muodostuu kamerassa 102 yksittäisistä peräkkäisistä liikkumattomista kuvista, joista kuviossa esitetään yksi liikkumaton kuva 104. Kameralla 102 muodostetaan kuvaa 104 pikseleinä esittävä matriisi, esimerkiksi alussa kuvatulla 15 tavalla, jossa luminanssille ja krominanssille ovat omat matriisinsa. Kuvaa 104 pikseleinä esittävä datavuo 106 viedään seuraavaksi kooderiin 108. Tietenkin on mahdollista rakentaa myös sellainen laite, jossa datavuo 106 saadaan kooderiin 108 esimerkiksi tiedonsiirtoyhteyttä pitkin tai vaikkapa tietokoneen muistivälineeltä. Tällöin tarkoituksena on se, että kompressoimaton videokuva 20 106 kompressoidaan kooderilla 108 esimerkiksi edelleenlähetystä tai tal lennusta varten. Videokameralla 102 tai lyhyesti vain kameralla tarkoitetaan : tässä yhteydessä mitä tahansa alan ammattilaisen tuntemaa välinettä, jolla •' *. I voidaan muodostaa videokuvaa.
. Kooderi 108 käsittää diskreettikosinimuunnosvälineet 110 suorittaa ,··*. 25 diskreettikosinimuunnos kunkin liikkumattoman kuvan 104 pikseleille. Diskreet- tikosinimuunnoksella muodostettu datavuo 112 viedään kvantisointivälineisiin .... 114, joilla suoritetaan kvantisointi valitulla kvantisointisuhteella. Kvantisoidulle ’* datavuolle 116 voidaan suorittaa vielä muutakin koodausta, jota ei tässä kui tenkaan kuvata. Kooderilla 108 muodostettu kompressoitu videokuva siirre-'· ’· 30 tään kanavaa 118 käyttäen dekooderille 120. Tässä ei ole kuvattu, miten ka- nava 118 toteutetaan, koska eri toteutusvaihtoehdot ovat alan ammattilaiselle ; selviä. Kanava 118 voi olla esimerkiksi kiinteä tai langaton tiedonsiirtoyhteys.
,···, Kanava 118 voidaan myös tulkita siirtotieksi, jota käyttäen videokuva tallenne taan jollekin muistivälineelle, esimerkiksi laserlevylle, ja jota käyttäen videoku-:.: 35 va sitten luetaan muistivälineeltä ja käsitellään dekooderilla 120.
6 109395
Dekooderi 120 käsittää käänteiskvantisointivälineet 122, joilla koodeissa 108 suoritettu kvantisointi puretaan. Käänteiskvantisoitu datavuo 124 viedään seuraavaksi käänteisdiskreettikosinimuunnosvälineisiin 126, joilla suoritetaan käänteisdiskreettikosinimuunnos kunkin liikkumattoman kuvan 104 5 pikseleille. Saatu datavuo 128 viedään sitten mahdollisten muiden dekoo-dausprosessien kautta näytölle 130, jossa esitetään liikkumattomista kuvista 104 muodostuva videokuva.
Kooderi 108 ja dekooderi 120 voidaan sijoittaa erilaisiin laitteisiin, esimerkiksi tietokoneisiin, erilaisten radiojärjestelmien tilaajapäätelaitteisiin kulo ten matkaviestimiin, tai muihin laitteisiin, joissa halutaan käsitellä videokuvaa.
Kooderi 108 ja dekooderi 120 voidaan myös yhdistää samaan laitteeseen, jota voidaan tällöin nimittää videokoodekiksi.
Koska meitä kiinnostaa ajallisen redundanssin vähentämiseksi suoritettava kompressointi kooderissa 108, kuvataan seuraavaksi kooderia 108 15 tarkemmin kuvioon 2 viitaten. Kooderiin 108 tuotava liikkuva videokuva 106 tallennetaan väliaikaisesti kuvittain kehyspuskuriin (frame buffer) 200. Ensimmäinen kuva on ns. intra-kuva, eli sille ei tehdä ajallisen redundanssin vähentämiseksi koodausta, vaikkakin se käsitellään diskreettikosinimuunnosvälineillä 110 ja kvantisointivälineillä 114. Ensimmäisen kuvan jälkeenkin voidaan lähet-20 tää intra-kuvia, esimerkiksi jos virhetekijä muodostui liian suureksi parhaankin liikevektorin kohdalla.
Seuraavia kuvia käsiteltäessä voidaan alkaa käyttämään ajallisen : redundanssin vähentämiseksi suoritettavaa koodausta. Tällöin edellinen kuva Y*· käänteiskvantisoidaan käänteiskvantisointivälineillä 206 ja sille suoritetaan . 25 myös käänteisdiskreettikosinimuunnos käänteisdiskreettikosinimuunnosväli- neillä 208. Jos edelliselle kuvalle oli jo laskettu liikevektori, niin sen vaikutus li- sätään kuvaan välineillä 210. Näin kehyspuskuriin 212 tallennetaan rekonst- .···. ruoitu edellinen kuva, eli edellinen kuva siinä muodossa, jossa se on dekoode- rissa 120 suoritettavan käsittelyn jälkeen. Kehyspuskureita 200, 212 on siis , . 30 kaksi, ensimmäiseen 200 tallennetaan nykyinen kameralta tuleva kuva, ja toi- • · · seen 212 rekonstruoitu edellinen kuva.
·;·* Edellinen rekonstruoitu kuva viedään sitten liikkeenestimointiloh- i koon 216 kehyspuskurista 212. Samoin koodattava nykyinen koodattava kuva viedään liikkeenestimointilohkoon 216 kehyspuskurista 200. Liikkeenestimoin-35 tilohkossa 216 suoritetaan sitten ajallisen redundanssin vähentämiseksi haku, jossa pyritään löytämään edellisestä kuvasta lohkoja, jotka vastaavat nykyi- » · 7 109395 sessä kuvassa olevia lohkoja. Lohkojen väliset siirtymät ilmaistaan liikevekto-reina.
Löydetyt liikevektorit 220, 222 viedään liikkeenkompensointilohkoon 214 ja muuttuvamittaiseen kooderiin (variable-length coder) 204. Liikkeen-5 kompensointilohkoon 214 viedään myös edellinen rekonstruoitu kuva kehys-puskurista 212. Edellisen rekonstruoidun kuvan ja liikevektorin perusteella liik-keenkompensointilohko 214 osaa lähettää edellisestä kuvasta löydetyn lohkon 224, 226 välineille 202 ja välineille 210. Välineillä 202 koodattavasta nykyisestä kuvasta, tarkemmin ilmaistuna sen ainakin yhdestä lohkosta, vähennetään 10 edellisestä kuvasta löydetty lohko. Tällöin nykyisestä kuvasta, tarkemmin ilmaistuna sen ainakin yhdestä lohkosta, jää koodattavaksi virhetekijä, joka siis diskreettikosinimuunnetaan ja kvantisoidaan.
Muuttuvamittainen kooderi 204 saa siis syötteiksi diskreettikosini-muunnetun ja kvantisoidun virhetekijän 116 sekä liikevektorin 222. Kooderin 15 108 ulostulosta 118 siis saadaan nykyistä kuvaa esittävää kompressoitua da taa, joka kuvaa nykyisen kuvan suhteessa edelliseen kuvaan käyttäen esitykseen liikevektoria tai liikevektoreita, ja virhetermiä tai virhetermejä. Liikkeenes-timointi tehdään luminanssilohkoja käyttäen, mutta koodattavat virhetekijät lasketaan sekä luminanssi- että krominanssilohkoille.
20 Vaikka kuviossa 2 sitä ei ole kuvattukaan, niin parhaan liikevektorin etsintä voidaan aiemmin kuvatulla tavalla tehdä kahdella kierroksella. Tällöin kun ensimmäisen kierroksen laajaa hakualuetta on saatu pienennettyä, toisel-: la kierroksella voidaan tarkemmin laskea pienemmän hakualueen liikevekto- */·· reiden arvoja. Yleensä absoluuttierojen summan laskenta tehdään yhden pik- . 25 selin tarkkuudella, mutta etenkin toisella kierroksella voidaan laskenta tehdä puolen pikselin tarkkuudella. Puolen pikselin tarkkuutta käytettäessä todellis-....: ten pikseleiden väliin interpoloidaan kuvitteelliset puolen pikselin arvot.
.·*·. Seuraavaksi kuvion 7 vuokaavioon viitaten selostetaan menetelmä stabiloida kameralla peräkkäisistä liikkumattomista kuvista muodostettu video-. , 30 kuva. Menetelmän suorittaminen aloitetaan lohkossa 700. Lohkossa 702 kuva- *;//· taan kameralla videokuvan muodostavat yksittäiset kuvat kuvissa käytettävää ·>’ kuva-alaa laajemmalla kuvausalalla. Tätä havainnollistetaan kuviossa 4. Kuvi- • ossa 1 kuvatulla tavalla henkilö 100 seisoo tekstin ’’HANTRO OULU” edessä.
Kuvassa 4 tästä todellisuudesta näytetään selvyyden vuoksi vain kehyksen 35 400 rajaama alue. Kameran kuvausalaa kuvataan kehyksen 402 rajaamalla ! * · ' ;;;* alueella. Kuvausalan 402 sisällä on kuva-ala 104.
| » I I t 8 109395
Lohkossa 704 määritellään videokuvan kompressoimiseksi ainakin yksi liikevektori edellisessä kuvassa olevan lohkon ja nykyisessä kuvassa olevan lohkon välisen liikkumisen ilmaisemiseksi. Kuviossa 3 havainnollistetaan kuvan jakautumista lohkoihin. Kuvion 3 vasemmanpuoleisin kuva esittää qcif-5 kokoa olevaa kuvaa, jonka koko on vaakasuunnassa 176 pikseliä ja pystysuunnassa 144 pikseliä. Kuva jakautuu edelleen 16x16 pikselin kokoisiin lu-minanssi(makro)lohkoihin 300, joita on siis vaakasuunnassa 11 kappaletta ja pystysuunnassa 9 kappaletta. Krominanssilohkot ovat yleensä 8x8 pikselin suuruisia, mutta niitä ei kuviossa 3 kuvata, koska krominanssilohkoja ei käyte-10 tä liikevektorin tunnistuksessa hyväksi.
Kuvion 3 keskimmäinen kuva esittää nykyistä koodattavaa kuvaa, jossa koodattava lohko 302 on paikassa, joka voidaan ilmaista sen vasem-manpuoleisimman yläkulman pikselin koordinaatteina (128, 112). Tällöin liike-vektori voidaan kuvata tämän vasemmanpuoleisimman yläkulman pikselin lii-15 kevektorina. Lohkon muut pikselit liikkuvat tietysti myös kyseisen liikevektorin suuntaan. Kuvan origo (0, 0) on siis kuvan vasemmanpuoleisessa alakulmassa oleva pikseli.
Edellä kuvatun menettelyn tarkoituksena on siis löytää laskentate-hokkaasti mahdollisimman hyvä liikevektori, jotta erodata pakkautuu hyvin.
20 Kuvion 3 oikeanpuoleisin osa kuvaa edellistä kuvaa, josta on löydetty parhaiten nykyisessä kuvassa olevaa koodattavaa lohkoa 302 vastaava lohko 304. Edellisen kuvan lohko 304, jonka vasemmanpuoleisimman yläkulman pikselin / : koordinaatit ovat (112, 96), on siis siirtynyt nykyisessä kuvassa lohkoksi 302, * * Y i jonka vasemmanpuoleisimman yläkulman pikselin koordinaatit ovat (128, ΥΫ 25 112). Videokoodausterminologiassa liikkeet ilmaistaan siten, että liike oikealle on positiivinen, vasemmalle negatiivinen, ylös negatiivinen ja alas positiivinen.
·;·· Liikevektori 306 on siis (-16, 16), eli liike on kuusitoista pikseliä X-akselin .···. suunnassa ja kuusitoista pikseliä Y-akselin suunnassa. Kuten kuviossa 3 ku vataan, niin nykyisen kuvan koodattavasta lohkosta 302 vähennetään edelli-, . 30 sestä rekonstruoidusta kuvasta löydetty lohko 304 käyttäen välineitä 202, jol- ; . loin saadaan lohkojen välinen erodata eli virhetermi 308.
;·’ Lohkon 704 toiminto siis tehdään kuvan kompressoimiseksi mah- I dollisimman tehokkaasti. Lohkossa 706 määritellään ainakin yhden liikevekto- : ’ ’': rin perusteella kameran liikkeen suunta ja suuruus edellisen kuvan ja nykyisen ' . 35 kuvan välillä. Tässä voidaan käyttää kaikkia alan ammattilaisen tuntemia tapo- ja tunnistaa kameran liike liikevektoreiden perusteella, esimerkiksi tähän viit-
I I I
109395 9 teeksi otettavien jo aiemmin mainittujen US-patenttien 5 317 685 ja 5 973 733 opetusten mukaisia ratkaisuja.
Hakija on myös kehittänyt oman tapansa kameran liikkeen tunnistamiseksi, jonka etuina ovat käsittelyn yksinkertaisuus sekä tehokkuus. Kulle-5 kin makrolohkolle on vaihteleva määrä liikevektoreita. Koska krominanssiloh-kojen liikevektorit lasketaan aina luminanssilohkojen liikevektoreista, niin kro-minanssilohkojen liikevektoreita ei käytetä kameran liikkeen tunnistamiseksi tehtävissä laskennoissa. Liikevektori muodostuu kahdesta komponentista, horisontaali- ja vertikaalikomponentista. Siten kameran liike kompensoidaan erik-10 seen liikevektorin horisontaali- ja vertikaalikomponenteille.
Eräässä suoritusmuodossa kameran liike tunnistetaan erikseen horisontaali- ja vertikaalikomponenteille siten, että ensin jaetaan horisontaa-li/vertikaalikomponentit kolmeen luokkaan suuruutensa mukaan, ja sitten muodostetaan eniten horisontaali/vertikaalikomponentteja sisältävän luokan 15 keskiarvo, joka keskiarvo ilmoittaa kameran liikkeen suuruuden kyseisen komponentin suunnassa.
Eräässä suoritusmuodossa luokkiin jako suoritetaan siten, että ensin muodostetaan kaikkien horisontaali/vertikaalikomponenttien keskiarvo. Siten haetaan suurin ja pienin horisontaali/vertikaalikomponentti. Ja lopuksi jae-20 taan horisontaali/vertikaalikomponentit kolmeen luokkaan perustuen kaikkien horisontaali/vertikaalikomponenttien keskiarvoon, suurimpaan horisontaali/ver-tikaalikomponenttiin ja pienimpään horisontaali/vertikaalikomponenttiin.
... Matemaattisesti esitettynä kameran liike tunnistetaan erikseen ho- : risontaali- ja vertikaalikomponenteille seuraavaksi kuvattavalla tavalla.
' : 25 Merkitään liikevektorin horisontaali/vertikaalikomponentteja {v, ,v2,V3S...,v„} (1) • * * · · · * Muodostetaan keskiarvo m=(Zv/)/w (2)
Valitaan pienin komponentti ! 30 = minfvLVa.Vs.....v„} (3) i ' ' | Valitaan suurin komponentti j : *.·. vmax = max{vj,v2,v3,...,vn} (4) I ’···’ Merkitään arvoaluetta ' = (vmax-vmin)/6 (5) .:.: 35 Muodostetaan kolme luokkaa » »♦ 109395 10 CQ = {vi\vi<m-r} C, = |V:\m-r < v, <m + r} (6) C2 = |v,|v, > m + r) jossa / = 1,2,..., n Valitaan luokka, jolle pätee Ιφς,Ι ί ) (7) 7055« /e{0,1,2) = 0 ja jeQ/i
Ja jos sellaista luokkaa ei ole niin valitaan luokka C,.
5 Muodostetaan kameran liikkeen suuruus: jos |c,| = Oja |c0|=|c2| niin komponentti gmv = 0 (8) muuten komponentti gmv = ΣΚΚ lc1 Tämä algoritmi voidaan kuvata myös C-ohjelmointikieltä muistuttavalla pseudokoodilla, joka esitetään liitteessä 1.
Intrakoodatun kuvan liikevektorin arvo on nolla. Jos liikevektorit 10 muodostetaan puolen pikselin tarkkuudella, silloin kameran liikettä määriteltäessä liikevektorien arvot jaetaan kahdella.
Seuraavaksi lohkossa 708 ennustetaan kameran liikkeen nykyisen ja seuraavan kuvan välillä jatkuvan samaan suuntaan ja saman suuruisena kuin edellisen ja nykyisen kuvan välille määritellyssä kameran liikkeessä.
·:·. 15 Sitten lohkossa 710 kompensoidaan kameran liike nykyisen ja seu- : raavan kuvan välillä siirtämällä kuva-alaa 104 kuvausalan 402 sisällä seuraa- ' / vassa kuvassa ennustettua liikettä vastaan ennustuksen suuruisena. Kuviot ;;; 5A, 5B ja 5C havainnollistavat kameran liikkumisen vaikutusta kuvausalaan '···' 402 ja kuva-alaan 104. Kuvio 5A kuvaa alkutilannetta, eli ensimmäistä kuvaa, ‘ * 20 jossa kuva-ala 502 on kuvausalan 500 sisällä keskellä. Kuvio 5B kuvaa toista kuvaa, jossa kamera on liikkunut oikealle nuolen 504 suuntaisesti, jolloin kuvattava henkilö on siirtynyt kuva-alan 508 ja samalla tietenkin kuvausalan 506 : vasemmalle laidalle. Kuvio 5C kuvaa kolmatta kuvaa, jossa kamera on edel- leen jatkanut liikettä oikealle nuolen 510 mukaisesti. Henkilö on siirtynyt kuva-25 alassa 514 jo häiritsevällä tavalla vasempaan laitaan, koska sekä kuva-ala 514 että kuvausala 512 ovat siirtyneet oikealle päin nuolen 510 mukaisesti. Kuviot ’ · · ‘ 5A, 5B ja 5C siis kuvaavat kuvan huonontumista tahattoman kameran liikkeen : : ‘: seurauksena, jos liikkeen kompensointia ei ole käytettävissä.
109395 11
Kuviot 6A, 6B ja 6C havainnollistavat kameran liikkeen kompensointia esitettyä menetelmää käyttäen. Kuvioiden 6A ja 6B sisältö vastaa kuvioiden 5A ja 5B sisältöä. Kuvion 6A edellisen kuvan 502 ja kuvion 6B nykyisen kuvan 508 välille on liikevektoreiden perusteella laskettu kameran liikkeen suunta ja 5 suuruus. Yksinkertaisuuden vuoksi esimerkissämme esiintyy vain horisontaa-lisuuntaista kameran liikettä 504. Menetelmän mukaisesti ennustetaan, että kameran liike jatkuu nykyisen kuvan 508 ja seuraavan kuvan 600 välillä samansuuruisena ja samansuuntaisena kuin edellisen kuvan 502 ja nykyisen kuvan 508 välillä. Kameran liike 510 kompensoidaan nykyisen kuvan 508 ja seulo raavan kuvan 600 välillä siirtämällä kuva-alaa 600 kuvausalan 512 sisällä seu-raavassa kuvassa 600 ennustettua liikettä vastaan ennustuksen suuruisena.
Kuvioita 5C ja 6C vertailemalla havaitaan, että kuvattava henkilö ja hänen takanaan näkyvä teksti eivät ole enää siirtyneet laidemmaksi kompensointia käyttämällä. On totta, että liikettä on tapahtunut jo edellisissä kuvissa, koska 15 liikettä ei kompensoida heti vaan ennustukseen pohjautuen seuraavassa kuvassa. Kuitenkin hakijan kokeiden mukaan käytetty menetelmä johtaa kuvan laadun selvään paranemiseen verrattuna siihen, ettei kompensointia käytettäisi ollenkaan.
Kompensoinnin suorittava algoritmi kuvataan lisäksi liitteessä 2 C-20 ohjelmointikieltä muistuttavalla pseudokoodilla.
Kuvattu menetelmä suoritetaan kuviossa 2 kuvatussa kooderissa käyttäen liikkeenestimointivälineitä 216 ja liikkeenstabilointivälineitä 230, joita voidaan nimittää lyhyesti prosessointivälineiksi 216, 230. Liikkeenstabilointivä-! . lineet 230 siis ilmoittavat kehyspuskurille 200, että mistä kohtaa kuvausalaa 25 402 käytettävä kuva-ala 104 otetaan.
Prosessointivälineet 216, 230 voidaan toteuttaa prosessorissa toi- • * '··' mivana tietokoneohjelmana, jolloin esimerkiksi kukin tarvittava toiminto toteu- tetaan omana ohjelmamoduulina. Tietokoneohjelma siis sisältää rutiinit mene-telmän vaiheiden toteuttamiseksi. Tietokoneohjelman myyntiä varten se voi-30 daan tallentaa tietokoneen muistivälineelle esimerkiksi CD-ROM:ille (Compact j Disc Read Only Memory). Tietokoneohjelma voidaan suunnitella siten, että se toimii myös normaalissa yleiskäyttöisessä henkilökohtaisessa tietokoneessa, kannettavassa tietokoneessa, tietokoneverkon palvelimessa tai muussa tunneli _: tun tekniikan mukaisessa tietokoneessa.
35 Prosessointivälineet 216, 230 voidaan toteuttaa myös laitteistorat- : kaisuna, esimerkiksi yhtenä tai useampana sovelluskohtaisena integroituna 109395 12 piirinä (Application Specific Integrated Circuit, ASIC) tai erilliskomponenteista rakennettuna toimintalogiikkana. Välineiden toteutustavan valinnassa alan ammattilainen huomioi esimerkiksi tarvittavan prosessointitehon ja valmistuskustannukset. Myös erilaiset ohjelmiston ja laitteiston muodostamat hybridito-5 teutukset ovat mahdollisia.
Liikkeen stabilointia voidaan vielä havainnollistaa toisella yksinkertaisella esimerkillä. Oletetaan, että kamera liikkuu pelkästään horisontaalisesti. Kameran kuvausalassa on taulukossa 1 kuvatussa ensimmäisessä kehyksessä aluksi koko teksti ’’HANTRO OULU”. Kuva-alana on rastilla merkitty kohta 10 eli "H” positiossa 0.
Positio -5 -4 -3 -2 -1 0__1__2__3__4__5_
Kuvausala__HANTRO___OULU
Kuva-ala I 1 I I 1 1 X I I I I I
Taulukko 1: Ensimmäinen kehys
Taulukossa 2 kuvatussa toisessa kehyksessä kamera on liikkunut 15 oikealle, jolloin kuva-ala on myös siirtynyt oikealle, mutta kuva-ala otetaan edelleen positiosta 0.
Positio -5 -4 -3 -2 -1__0__1__2__3__4__5_
Kuvausala__A N T R O___OULU _
·': Kuva-ala X
» "
Taulukko 2: Toinen kehys .·. Ensimmäisen ja toisen kehyksen välillä on siis tunnistettu 1 position ,**. 20 suuruinen horisontaaliliike oikealle. Liikkeen ennustetaan jatkuvan saman suu- ruisena kolmanteen kehykseen mentäessä, jolloin suoritetaan taulukossa 3 kuvattavalla tavalla kompensaatio: kuva-ala otetaan positiosta -1, joka on siis ’··’ kohtisuoraan oikealle ennustettua 1 position suuruista liikettä kohti. Kuten ku va-alasta havaitaan, on liikkeen suunta kuitenkin kiihtynyt oikealle päin 2 posi-:.’·ί 25 tion suuruiseksi.
: Positio -5 -4 -3 -2 -1__0__1__2__3__4__5_ .···. Kuvausala T R O___O U__L__U____
Kuva-ala X
' : ' Taulukko 3: Kolmas kehys 13 109395
Seuraavassa kehyksessä otettaisiin kuvausala siten positiosta -3 liikkeen kompensoimiseksi.
Periaatteessa siis videokuvan koodauksen aloituksen jälkeen ensimmäinen kehys, jossa gmv eroaa nollasta, on sellainen kehys, josta alkaen 5 videokuvan stabilointia voidaan käyttää seuraaville kehyksille. Kameran liike on samansuuntainen kuin mihin gmv osoittaa. Liikkeen nopeus on gmv:n pituus. Voidaan siis ennustaa, että liike jatkuu havaittuun suuntaan havaitun suuruisena. Puskurissa siis muutetaan kohtaa, josta kehys otetaan. Merkitään muuttujalla bp paikkaa puskurissa, ja bp:n arvo nolla tarkoittaa sitä, että kehys 10 otetaan puskurin keskeltä, eli kuva-ala on kuvausalan keskellä. Käytetään lisäksi muuttujaa add, joka lasketaan jokaiselle kehykselle gmv.tä käyttäen add=(add+gmv)/2 (9)
Muuttuja add siis kuvaa kameran liikkeen nopeutta, ja keskiarvo gmv:n kanssa lasketaan rauhoittamaan ennustettua liikettä. Puskurin kohta 15 josta kuva-ala otetaan kuvausalan sisällä on siis bp=bp-add (10)
Vaikka keksintöä on edellä selostettu viitaten oheisten piirustusten mukaiseen esimerkkiin, on selvää, ettei keksintö ole rajoittunut siihen, vaan sitä voidaan muunnella monin tavoin oheisten patenttivaatimusten esittämän 20 keksinnöllisen ajatuksen puitteissa. Alan ammattilaiselle on selvää, että kuvattuun perusratkaisuun voidaan yhdistää erilaisia tunnettuja koodaustapoja halutun koodaustehokkuuden ja laadun aikaansaamiseksi.
* * l * · * * i ! . ! » | .11» | ‘ *
> I I
109395 14
Liite 1: Pseudokoodi kameran liikkeen tunnistamiseksi for(i=0; i<99; i++) /* 99 komponenttia 7 { 5 ka += mv[i]; /* Laske kaikkien komponenttien summa 7 } if(ka>0) ka = (ka)/99; /* Laske keskiarvo 7 10 if(ka<0) ka = (ka)/99; min=mv[0]; /* Etsi komponenttien min ja max 7 15 max=mv[0]; for(i=0; i<99; i++) { if(mv[i]<min) 20 min = mv[i]; if(mv[i]>max) max = mv[i]; ! } :: rang=(max-min)/6; /* Määrittele arvoalue 7 ·,:/ 25 for(i=0; i<99; i++) /* Jaa komponentit kolmeen luokkaan 7 O { ·:··: if(mv[i]<=(ka-rang)) luokkafi] = 0; else if(mv[i]>=ka+rang) ,·. : 30 luokkafi] = 2; ··', else luokkafi] = 1; ;:) } for(i=0; i<99; i++) /* Laske luokkien summat ja koot 7 35 { IL if(luokka[i] == 0) 109395 15 { sumO+=mv[i]; nO++; } 5 if(luokka[i] == 1) { sum1+=mv[i]; n1++; } 10 if(luokka[i] == 2) { sum2+=mv[i]; n2++; } 15 } n=n1; /* Valitse suurin luokka */ sum=sum1; if(nOn) { 20 sum=sum0; n=n0; } if(n2>n) { 25 sum=sum2; n=n2; } if(n1 ==0 && nO == n2) { 30 sum=0; } else { sum=sum/n; /* Laske kameran liike 7 35 } gmv= sum; 17 109395
Patenttivaatimukset 1. Menetelmä stabiloida kameralla peräkkäisistä liikkumattomista kuvista muodostettu videokuva, käsittäen: (704) määritellään videokuvan kompressoimiseksi ainakin yksi liike-5 vektori edellisessä kuvassa olevan lohkon ja nykyisessä kuvassa olevan lohkon välisen liikkumisen ilmaisemiseksi; (706) määritellään ainakin yhden liikevektorin perusteella kameran liikkeen suunta ja suuruus edellisen kuvan ja nykyisen kuvan välillä; tunnettu siitä, että 10 (702) kuvataan kameralla videokuvan muodostavat yksittäiset kuvat kuvissa käytettävää kuva-alaa laajemmalla kuvausalalla; (708) ennustetaan kameran liikkeen nykyisen ja seuraavan kuvan välillä jatkuvan samaan suuntaan ja saman suuruisena kuin edellisen ja nykyisen kuvan välille määritellyssä kameran liikkeessä; 15 (710) kompensoidaan kameran liike nykyisen ja seuraavan kuvan välillä siirtämällä kuva-alaa kuvausalan sisällä seuraavassa kuvassa ennustettua liikettä vastaan ennustuksen suuruisena.
2. Patenttivaatimuksen 1 mukainen menetelmä, tunnettu siitä, että kompensoidaan kameran liike erikseen liikevektorin horisontaali- ja verti- 20 kaalikomponenteille.
3. Patenttivaatimuksen 2 mukainen menetelmä, tunnettu siitä, että kameran liike tunnistetaan erikseen horisontaali- ja vertikaalikomponen- ; . teille seuraavalla tavalla: • / jaetaan horisontaali/vertikaalikomponentit kolmeen luokkaan suu- ‘ ’ 25 ruutensa mukaan; \ muodostetaan eniten horisontaali/vertikaalikomponentteja sisältä- ’vän luokan keskiarvo, joka keskiarvo ilmoittaa kameran liikkeen suuruuden ky-: ’ ’: seisen komponentin suunnassa.
4. Patenttivaatimuksen 3 mukainen menetelmä, tunnettu siitä, ; : 30 että luokkiin jako suoritetaan seuraavalla tavalla: , ·. muodostetaan kaikkien horisontaali/vertikaalikomponenttien kes- kiarvo; ; ί haetaan suurin ja pienin horisontaali/vertikaalikomponentti; jaetaan horisontaali/vertikaalikomponentit kolmeen luokkaan perus- 35 tuen kaikkien horisontaali/vertikaalikomponenttien keskiarvoon, suurimpaan
I I

Claims (10)

18 109395 horisontaali/vertikaalikomponenttiin ja pienimpään horisontaali/vertikaalikom-ponenttiin.
5. Patenttivaatimuksen 4 mukainen menetelmä, tunnettu siitä, että kameran liike tunnistetaan erikseen horisontaali- ja vertikaalikomponen-5 teille seuraavalla tavalla: - merkitään liikevektorin horisontaali/vertikaalikomponentteja {vpv2,v3.....v„} - muodostetaan keskiarvo m = ^Σλ] 1 n - valitaan pienin komponentti vmin = min{vlsv2,v3,...,vM} 10 -valitaan suurin komponentti vmax = max{v,,v2,v3,...,vn} - merkitään arvoaluetta r = (vmax “Vmin)/6 - muodostetaan kolme luokkaa C0 = {v\vi<m-r} Q = |v,|m-r <v, <m + r} C2 = {v,.|v( > m + r} jossa / = 1,2,..., n - valitaan luokka, jolle pätee ΙΦΚΙ I 15 1 jossa i e {0,1,2} = Q ja jeQ/i ja jos sellaista luokkaa ei ole niin valitaan luokka C, ; . - muodostetaan kameran liikkeen suuruus: '· jos |c,| = oya |c0|=|Cj| ‘ ‘ niin komponentti gmv = 0 ’ ', muuten komponentti gmv = ^ |νλ vk eC,·} /|cj ,··. 6. Järjestelmä stabiloida kameralla peräkkäisistä liikkumattomista t I 20 kuvista muodostettu videokuva käsittäen kameran (102) muodostaa peräkkäi-, , sistä liikkumattomista kuvista videokuva ja prosessointivälineet (216, 230), jot- ka on sovitettu: ;·* määrittelemään videokuvan kompressoimiseksi ainakin yksi liike- : ‘: vektori edellisessä kuvassa olevan lohkon ja nykyisessä kuvassa olevan loh- 25 kon välisen liikkumisen ilmaisemiseksi; ’, määrittelemään ainakin yhden liikevektorin perusteella kameran liik- ’ keen suunta ja suuruus edellisen kuvan ja nykyisen kuvan välillä; 19 109395 tunnettu siitä, että kamera (102) on sovitettu kuvaamaan videokuvan muodostavat yksittäiset kuvat kuvissa käytettävää kuva-alaa laajemmalla kuvausalalla; prosessointivälineet (230) on sovitettu ennustamaan kameran (102) 5 liikkeen nykyisen ja seuraavan kuvan välillä jatkuvan samaan suuntaan ja saman suuruisena kuin edellisen ja nykyisen kuvan välille määritellyssä kameran (102) liikkeessä; prosessointivälineet (230) on sovitettu kompensoimaan kameran (102) liike nykyisen ja seuraavan kuvan välillä siirtämällä kuva-alaa kuvausa-10 lan sisällä seuraavassa kuvassa ennustettua liikettä vastaan ennustuksen suuruisena.
7. Patenttivaatimuksen 6 mukainen järjestelmä, tunnettu siitä, että prosessointivälineet (230) on sovitettu kompensoimaan kameran liike erikseen liikevektorin horisontaali- ja vertikaalikomponenteille.
8. Patenttivaatimuksen 7 mukainen järjestelmä, tunnettu siitä, että prosessointivälineet (230) on sovitettu tunnistamaan kameran liike erikseen horisontaali- ja vertikaalikomponenteille seuraavalla tavalla: jaetaan horisontaali/vertikaalikomponentit kolmeen luokkaan suuruutensa mukaan; 20 muodostetaan eniten horisontaali/vertikaalikomponentteja sisältä vän luokan keskiarvo, joka keskiarvo ilmoittaa kameran liikkeen suuruuden kyseisen komponentin suunnassa.
9. Patenttivaatimuksen 8 mukainen järjestelmä, t u n n e 11 u siitä, ! . että prosessointivälineet (230) on sovitettu suorittamaan luokkiin jako seuraa- ’ / 25 valla tavalla: muodostetaan kaikkien horisontaali/vertikaalikomponenttien kes- * ' kiarvo; :": haetaan suurin ja pienin horisontaali/vertikaalikomponentti; jaetaan horisontaali/vertikaalikomponentit kolmeen luokkaan perus-30 tuen kaikkien horisontaali/vertikaalikomponenttien keskiarvoon, suurimpaan horisontaali/vertikaalikomponenttiin ja pienimpään horisontaali/vertikaalikom-ponenttiin.
10. Patenttivaatimuksen 9 mukainen järjestelmä, tunnettu siitä, ·*;; ; että prosessointivälineet (230) on sovitettu tunnistamaan kameran liike erik- ...: 35 seen horisontaali- ja vertikaalikomponenteille seuraavalla tavalla: ; ; ‘; - merkitään liikevektorin horisontaali/vertikaalikomponentteja 20 109395 {v, ,v2,v3,...,v„} - muodostetaan keskiarvo m = ^Σν,^ !n - valitaan pienin komponentti vmin = min{v1,v2,v3,...,v„} - valitaan suurin komponentti vmax = max{v,,v2,v3,...,v„} 5. merkitään arvoaluetta r = (vmax - vmin) / 6 - muodostetaan kolme luokkaa C0 = {vi\vi<m-r} Cj = |vj/w - r < v,. < m + r) C2 = {v,|v(. >m + r} jossa i = \,2,...,n - valitaan luokka, jolle pätee ΙΦ|ς, jossa i e {0,1,2} = Q ja jeQ/i 10 ja jos sellaista luokkaa ei ole niin valitaan luokka C, - muodostetaan kameran liikkeen suuruus: jos |cj = 0_/a |co|=|C2| niin komponentti gmv = 0 muuten komponentti gmv = Σ{ν*Κ ε<^}/Ι^·Ι # » i * ^ * l * t 21 109395
FI20010629A 2001-03-27 2001-03-27 Menetelmä ja järjestelmä videokuvan stabilisoimiseksi FI109395B (fi)

Priority Applications (2)

Application Number Priority Date Filing Date Title
FI20010629A FI109395B (fi) 2001-03-27 2001-03-27 Menetelmä ja järjestelmä videokuvan stabilisoimiseksi
PCT/FI2002/000259 WO2002078327A1 (en) 2001-03-27 2002-03-26 Method, system, computer program and computer memory means for stabilising video image

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FI20010629 2001-03-27
FI20010629A FI109395B (fi) 2001-03-27 2001-03-27 Menetelmä ja järjestelmä videokuvan stabilisoimiseksi

Publications (2)

Publication Number Publication Date
FI20010629A0 FI20010629A0 (fi) 2001-03-27
FI109395B true FI109395B (fi) 2002-07-15

Family

ID=8560850

Family Applications (1)

Application Number Title Priority Date Filing Date
FI20010629A FI109395B (fi) 2001-03-27 2001-03-27 Menetelmä ja järjestelmä videokuvan stabilisoimiseksi

Country Status (2)

Country Link
FI (1) FI109395B (fi)
WO (1) WO2002078327A1 (fi)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2007138151A1 (en) 2006-05-30 2007-12-06 Hantro Products Oy Apparatus, arrangement, method and computer program product for digital video processing
FI20095273A0 (fi) 2009-03-17 2009-03-17 On2 Technologies Finland Oy Digitaalinen videokoodaus
EP2302845B1 (en) 2009-09-23 2012-06-20 Google, Inc. Method and device for determining a jitter buffer level
EP2405661B1 (en) 2010-07-06 2017-03-22 Google, Inc. Loss-robust video transmission using two decoders
US8630412B2 (en) 2010-08-25 2014-01-14 Motorola Mobility Llc Transport of partially encrypted media
US8477050B1 (en) 2010-09-16 2013-07-02 Google Inc. Apparatus and method for encoding using signal fragments for redundant transmission of data
US8751565B1 (en) 2011-02-08 2014-06-10 Google Inc. Components for web-based configurable pipeline media processing
US8767821B2 (en) 2011-05-09 2014-07-01 Google Inc. System and method for providing adaptive media optimization
US9014265B1 (en) 2011-12-29 2015-04-21 Google Inc. Video coding using edge detection and block partitioning for intra prediction
US9210424B1 (en) 2013-02-28 2015-12-08 Google Inc. Adaptive prediction block size in video coding
US9313493B1 (en) 2013-06-27 2016-04-12 Google Inc. Advanced motion estimation
US9807416B2 (en) 2015-09-21 2017-10-31 Google Inc. Low-latency two-pass video coding

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5835641A (en) * 1992-10-14 1998-11-10 Mitsubishi Denki Kabushiki Kaisha Image pick-up apparatus for detecting and enlarging registered objects
EP0656725B1 (en) * 1993-12-02 2000-03-15 Canon Kabushiki Kaisha Image-shake correcting device
US5825415A (en) * 1993-12-17 1998-10-20 Canon Kabushiki Kaisha Electronic image-movement correcting device with a variable correction step feature
US5973733A (en) * 1995-05-31 1999-10-26 Texas Instruments Incorporated Video stabilization system and method
US20020080870A1 (en) * 1999-01-07 2002-06-27 Thomas A. Piazza Method and apparatus for performing motion compensation in a texture mapping engine
WO2001033864A1 (en) * 1999-10-29 2001-05-10 Koninklijke Philips Electronics N.V. Video encoding-method
US6809758B1 (en) * 1999-12-29 2004-10-26 Eastman Kodak Company Automated stabilization method for digital image sequences
GB2365244A (en) * 2000-07-27 2002-02-13 Snell & Wilcox Ltd Image stabilisation

Also Published As

Publication number Publication date
WO2002078327A1 (en) 2002-10-03
FI20010629A0 (fi) 2001-03-27

Similar Documents

Publication Publication Date Title
KR100422389B1 (ko) 비디오 프레임 속도를 증가시키기 위한 방법 및 장치
US8094711B2 (en) Adaptive reference picture generation
US6628711B1 (en) Method and apparatus for compensating for jitter in a digital video image
US7720148B2 (en) Efficient multi-frame motion estimation for video compression
US9247250B2 (en) Method and system for motion compensated picture rate up-conversion of digital video using picture boundary processing
CN108924553B (zh) 视频编码、解码方法、装置、计算机设备和存储介质
KR100964515B1 (ko) 비디오 인코딩을 위한 비-정수 픽셀 공유
JPH09163373A (ja) 雑音低減装置
JPH11317952A (ja) 動画像の復号化方法、該方法が記録されたコンピュータ読みとり可能な記録媒体、及び、動画像の復号化装置
US8358696B2 (en) Motion estimation techniques
KR20040069210A (ko) 코딩 정보 및 로컬 공간 특징을 이용한 디지털 비디오신호들의 후처리에서의 선명도 향상
FI109395B (fi) Menetelmä ja järjestelmä videokuvan stabilisoimiseksi
CN108848377B (zh) 视频编码、解码方法、装置、计算机设备和存储介质
KR20040069208A (ko) 비디오 선명도 강화의 시간적인 일관성 개선
FI109634B (fi) Menetelmä ja laite videokuvan koodaamiseksi
KR20130039698A (ko) 데이터 스트림에서 블록-단위로 예측 인코딩된 비디오 프레임의 블록의 돌출 값을 결정하기 위한 방법 및 디바이스
FI109394B (fi) Menetelmä ja laite videokuvan koodaamiseksi ja dekoodaamiseksi
JPH09130748A (ja) 画像信号処理装置および記録/再生装置
JPH1169362A (ja) 動画像の符号化方法および復号化方法
JPH08275049A (ja) 撮像装置
JPH09130648A (ja) 動画像信号処理装置
KR100240620B1 (ko) 양방향의 반화소 움직임 추정을 위한 대칭 탐색 윈도우를 형성하는 방법 및 장치
JP2007129335A (ja) 画面動き検出装置
JP3407726B2 (ja) 符号化方法、符号化装置、および、コンピュータ読み取り可能な記録媒体
JP2001128185A (ja) 記録媒体

Legal Events

Date Code Title Description
PC Transfer of assignment of patent

Owner name: GOOGLE INC.

Free format text: GOOGLE INC.

MM Patent lapsed