FI109395B - Stabilizing video images by filming a scene larger than the image and compensating camera motion by shifting the image within the film scene in a direction opposite to a predicted camera motion - Google Patents

Stabilizing video images by filming a scene larger than the image and compensating camera motion by shifting the image within the film scene in a direction opposite to a predicted camera motion 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
Finnish (fi)
Swedish (sv)
Other versions
FI20010629A0 (en
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/en
Publication of FI20010629A0 publication Critical patent/FI20010629A0/en
Priority to PCT/FI2002/000259 priority patent/WO2002078327A1/en
Application granted granted Critical
Publication of FI109395B publication Critical patent/FI109395B/en

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

Abstract

Camera motion between the current and the next image is predicted on the basis that it is the same as between the previous and the current images. Camera motion is detected by determining motion vectors showing movement between blocks in successive images as used for compressing the video image. The predicted camera movement is then used to control an opposite shift of the image field within the larger filming field. Independent claims are included for (a) a computer program containing instructions for stabilizing video images (b) and a system for stabilizing video images

Description

109395109395

Menetelmä ja järjestelmä videokuvan stabilisoimiseksiMethod and system for stabilizing a video image

AlaArea

Keksinnön kohteina ovat menetelmä ja järjestelmä peräkkäisistä liikkumattomista kuvista muodostetun videokuvan stabilisoimiseksi.The present invention relates to a method and a system for stabilizing a video image formed by sequential still images.

5 Tausta5 Background

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ä.Video encoding and decoding are used to reduce the amount of data so that it can be stored more efficiently on a storage medium or transmitted over a communication connection. One example of a video encoding standard is MPEG-4 (Moving Pictures Expert Group), which aims to stream video on a wireless channel in real time. This is a very ambitious goal because, for example, if the image to be transmitted is cif (352 x 288 pixels) and the transmission rate is 15 frames per second, 36.5 million bits should be compressed to 64 kilobits every second. The compression ratio would then be very high at 570: 1. Another image size that is typically used is the qcif size, which is 15,176 x 144 pixels.

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ä.To move an image, the image is typically divided into image blocks, the size of which is selected to fit the system. The block information generally comprises information about the brightness, color and position of the block in the image itself. The data in the image blocks is compressed block by block using the desired encoding method. The compression of the 20 is based on the removal of less relevant data. Compressor methods are mainly divided into three categories: Spectral Redundancy Reduction, Spatial Redundancy Reduction, and Temporal Redundancy Reduction. Typically, various combinations of these methods are used for compression.

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.For example, a '···' YUV color scheme is used to reduce spectral redundancy. The YUV model takes advantage of the fact that the human eye is more sensitive to variations in luminance, or luminance, than to changes in chrominance, or color. The YUV model has one luminance component (Y) and two chromium-30 nance components (U, V). Two chrominance components can be named; '·, Also as cb and cr components. For example, the H.263 video coding standard luminance block is 16 x 16 pixels and each chrominance block covers the same area as the luminance block, 8 x 8 pixels. The combination of one snow-nance block and two chrominance blocks is referred to in this standard as a macroblock. The macroblocks are generally read from the image as 2 109395 lines. Each pixel, in both the luminance and chrominance blocks, can get a value between 0 and 255, which means that eight bits are needed to represent one pixel. For example, a value of 0 for a luminance pixel is black and a value for 255 is white.

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.For example, Discrete Cosine Transform (DCT) is used to reduce space redundancy. In discrete cosine conversion, the pixel representation of an image block is converted to a space frequency representation. In addition, in a pixel block, only the signal frequencies it contains have high amplitude coefficients, and for signals which do not occur in the pixel block, the coefficients are close to zero. The discrete cosine transform is basically a lossless transform and the signal is only disturbed by quantization.

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).An attempt is made to reduce temporal redundancy by taking advantage of the fact that successive images are generally similar to each other, so that instead of compressing each individual image, the extra blocks of image blocks are generated. The basic principle is as follows: the best possible encoded reference block is searched for the coded image block, the motion between the reference block and the coded image block is modeled and the computed motion vectors are sent to the receiver. The difference between the block to be coded and the reference block is expressed as a 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ä.20 A reference picture previously stored in memory can be used to determine the motion vector Prediction of a block. Such coding is called inter-coding, which means exploiting the similarities between the images in the same image sequence.

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.The discrete cosine transform block is "" quantized ", that is, in principle. 25 each of its elements is divided by some constant. This constant may vary between different macroblocks. The "quantization parameter" from which these dividers are calculated, ....: is between 1-31. The more zeros a block gets, the better the block, ··. Compresses, since no zeros are transmitted to the channel. Different coding methods and finally, they are formed into bitstreams, which are transmitted to the decoder. The inverse quantization and inverse discrete cosine transform are further subjected to quantized blocks within the encoder, thereby forming a reference image from which the blocks of the following images can be predicted. In the future, therefore, the encoder transmits between the incoming block and the reference blocks. eroded data and motion vectors. This improves compression efficiency. The decoder 35 (decoder), after decoding the bit stream and decoding methods, basically does the same as the encoder did when generating the reference image, i.e., the blocks do the same thing as the encoder, but in reverse.

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.A major problem with video shooting is the unintentional movement of the camera used to shoot, for example due to camera shake. Various mechanical and electronic solutions have been developed to stabilize the Ku-5, since a stable image looks much more comfortable than an image that wanders around. In addition, stable video is compressed more effectively than stray video.

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.For example, U.S. Patent 5,317,685 describes a solution in which motion vectors are used to detect camera movement. Pixels are interpolated between the pixels of the image, so that the image can be moved as if within the image against movement to stabilize the image. However, the problem with this solution is that it causes the image to zoom out, i.e., no information is left at the edges of the image.

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.15, U.S. Patent No. 5,973,733 describes a similar solution where, in addition to interpolation, image distortion (warping) can be used to stabilize the image. The problem is still zooming in on the image. In addition, the patent mentions that one solution for image stabilization is to use a larger area than the actual image area in the camera, whereby stabilization can be accomplished by moving the image area within the image area against the camera movement. However, the problem with this solution is found to be the extra manufacturing costs of a larger than normal CCD (Charged Couple Device) used to form the image.

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.The problem described in the US patents is also a problem. 25 tima high computing power: after all, motion compensation is made in real-time. ···. In the cottage, that is, as soon as the movement is detected, it is already trying to compensate for it already in the standing position.

Lyhyt selostusShort description

Keksinnön tavoitteena on tarjota parannettu menetelmä videokuvan t · . ’ ·: 30 stabilisoimiseksi ja parannettu järjestelmä videokuvan stabilisoimiseksi.An object of the invention is to provide an improved method for video image t ·. '·: 30 for stabilization and an improved system for video stabilization.

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.One aspect of the invention is provided according to claim 1; * ·. method of video stabilization. In one aspect, the invention provides a rigid system for stabilizing a video image according to claim 6. Other preferred embodiments of the invention are disclosed in the dependent claims.

»»· • t · 109395 4»» · • 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ä.The invention is based on utilizing temporal redundancy coding for compressing a video image to identify camera motion. Therefore, camera motion recognition is obtained almost "free" with relatively little additional computation, since motion vectors have already been computed to compress the image anyway, and motion compensation is not performed as soon as motion is detected, but motion is predicted to continue similarly to the projected camera motion. larger area of motion within which motion compensation is performed, since the inventor has found that the cost of a larger 10 areas of imaging is not significant in relation to the gain achieved, i.e. better image quality, and if different image sizes such as qcif (176 X 144 pixels) ) and cif (352 x 288 pixels), the invention does not involve additional costs if a smaller image size is used as an image area within a larger image size format-15.

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.Thus, the invention combines in a novel and inventive manner known elements of image stabilization with compression methods used in modern video encoding. What is essential in the coupling is precisely the detection of the fact that the camera motion does not have to be compensated as soon as it occurs, but the predicted camera motion based on the detected camera motion is compensated in the following figure.

Keksintö mahdollistaa kuvan stabiloinnin edullisen toteuttamisen . ; : halpoihin videokuvaa tuottaviin laitteisiin, esimerkiksi matkapuhelinjärjestelmän :.' · I kuvapuhelun toteuttaviin päätelaitteisiin.The invention makes it possible to advantageously implement image stabilization. ; : for cheap video-generating devices such as mobile phone systems:. · I for video call terminals.

25 Kuvioluettelo •25 Pattern List •

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.Preferred embodiments of the invention will be described by way of example with reference to the accompanying drawings, in which: Figure 1 shows devices for encoding and decoding a video image; Figure 1 shows a device for encoding a video image; '...: Figure 3 shows the distribution of a still image into blocks; ; ; ·; Figure 4 illustrates an imaging field and an image field; • · · ·. ···. Figures 5A, 5B and 5C illustrate the effect of camera movement on the imaging field and the imaging field; Figures 6A, 6B and 6C illustrate camera motion compensation; 109395 Fig. 7 is a flowchart illustrating a method for stabilizing a video image.

Suoritusmuotojen kuvausDescription of Embodiments

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”.Referring to Fig. 1, devices for encoding and decoding a video image are described. The description has been reduced because video coding is well known to those skilled in the art on the basis of standards and textbooks, for example, by reference, Vasudev Bhaskara and Konstan-Tinos Konstantinides: '' Image and Video Compression Standards - Algorithms and Architectures, Second Edition '', Kluwer Academic Publishers 1997, Chapter 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.The face of the person 100 is captured by the camcorder 102. The video image is formed by the camera 102 as a series of single still images, the figure showing a single still image 104. The camera 102 generates a matrix representing the image 104 in pixels, for example 15, wherein the luminance and chrominance have their own matrices. The data stream 106 representing the image 104 in pixels is then passed to the encoder 108. Of course, it is also possible to construct a device in which the data stream 106 is received by the encoder 108, for example, over a data link or from computer memory. The purpose here is that the uncompressed video image 20 106 is compressed by encoder 108 for, for example, retransmission or recording. The camcorder 102, or briefly the camera only, is used herein to mean any device known to a person skilled in the art with • '*. I can form a video image.

. 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.. The encoder 108 comprises a discrete cosine conversion means 110 performs, ·· *. 25 discrete cosine transforms for 104 pixels of each still image. The data stream 112 generated by the discrete cosine transform is fed to quantization means .... 114 which perform quantization at a selected quantization ratio. The quantized '* data stream 116 may be further encoded but not described herein. The compressed video image generated by encoder 108 is transmitted to channel decoder 120 using channel 118. It is not described how channel 118 is implemented, since various embodiments are available to those skilled in the art; clear. For example, channel 118 may be a fixed or wireless communication link.

,···, 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., ···, Channel 118 may also be interpreted as a transmission path for storing a video image on a storage medium, such as a laser disk, and for which the video image is then read from the storage medium and processed by the decoder 120.

6 1093956 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.The decoder 120 comprises inverse quantization means 122 for decoding the quantization performed in codes 108. The inverse quantized data stream 124 is then applied to inverse discrete cosine conversion means 126 for performing an inverse discrete cosine conversion on the pixels of each still image 104. The resulting data stream 128 is then passed through a possible other decoding process to a display 130 showing a video image of still images 104.

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.The encoder 108 and decoder 120 may be located in various devices, such as computers, subscriber terminals of various radio systems, mobile stations, or other devices in which video image processing is desired.

Kooderi 108 ja dekooderi 120 voidaan myös yhdistää samaan laitteeseen, jota voidaan tällöin nimittää videokoodekiksi.Encoder 108 and decoder 120 may also be combined with the same device, which may then be called a video codec.

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.Since we are interested in compression to reduce temporal redundancy in encoder 108, encoder 108 15 will now be described in more detail with reference to Figure 2. The moving video image 106 imported to the encoder 108 is temporarily stored frame by frame in frame buffer 200. The first image is a so-called. an intra-image, i.e., not encoded to reduce temporal redundancy, although processed by the discrete cosine conversion means 110 and the quantization means 114. Even after the first image, intra-images can be transmitted, for example if the error factor was too large for the best motion vector.

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.When processing the following images, you can start using encoding to reduce redundancy. Then, the previous image Y * · is inverse quantized by inverse quantization means 206 and executed. If the motion vector had already been computed for the previous image, then its effect is added to the image by means 210. Thus, a reconstruction of the frame buffer 212 is performed. the previous image, i.e. the previous image in the form in which it is in decoder 120 after processing. Thus, frame buffers 200, 212 are,. 30, the first 200 stores the current image from the camera, and the second 212 reconstructs the previous image.

·;·* 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.·; · * The previous reconstructed image is then exported to motion estimation block 216 from frame buffer 212. Similarly, the current coded image to be encoded is transported to motion estimation block 216 from frame buffer 200. In motion estimator-35, block 216 is then searched to find - »· 7 109395 The blocks in this picture. Transitions between blocks are expressed in motion vector 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.The detected motion vectors 220, 222 are applied to the motion compensation block 214 and to the variable-length coder 204. The motion-5 compensation block 214 is also provided with the previous reconstructed image of the frame buffer 212. Based on the previous reconstructed image and the motion vector, the motion compensation block 214 224, 226 for means 202 and means 210. From the current image to be encoded by means 202, more specifically, at least one of its blocks, the block found in the previous image 10 is subtracted. Thus, an error factor remains to be encoded in the current image, more specifically in at least one of its blocks, which is thus discretized and quantized.

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.Thus, variable-length encoder 204 receives inputs a discrete cosine-converted and quantized error factor 116 and motion vector 222. Output 118 of encoder 15 108 thus provides compressed data representing the current image relative to the previous image using motion vector or motion vectors and error terms. Motion estimation is performed using luminance blocks, but the coding error factors are calculated for both luminance and chrominance blocks.

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.Although not illustrated in Figure 2, the search for the best motion vector can be performed in two turns as described above. Then, once the wide search range of the first round has been reduced, the second round can more accurately calculate the motion vectors of the smaller search area. Usually, the sum of the absolute differences is calculated by one pixel. 25 heels places, but especially in the second round of the calculation can be done with half pixel accuracy. A half-pixel accuracy using genuine Eu -....: interpolated between pixels of the imaginary half-pixel values.

.·*·. 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ä.. · * ·. Referring now to the flowchart of Fig. 7, a method for stabilizing a video formed by sequential still images with a camera is described. , 30 photo. Execution of the method is started in block 700. In block 702, single images forming a video image are captured by the camera in a larger area than the image area used in the images. This is illustrated in Fig. 4. As in Fig. 1, person 100 is standing in front of the text '' HANTRO OULU ''.

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.For the sake of clarity, Figure 4 illustrates only the area delimited by the frame 35,400. The camera field of view is described by framing the frame 402! * · ';;; * area. Within the imaging area 402 is an image area 104.

| » I I t 8 109395| »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.In block 704, at least one motion vector is defined for compressing the video image to detect movement between the block in the previous image and the block in the current image. Figure 3 illustrates the distribution of the image into blocks. The leftmost view of Figure 3 shows a qcif-5 size image of 176 pixels horizontally and 144 pixels vertically. The image is further subdivided into 16x16 pixel-sized luminance (macro) blocks 300, which are 11 horizontally and 9 vertically. The chrominance blocks are generally 8x8 pixels in size, but are not illustrated in Figure 3 because the chrominance blocks are not utilized in motion vector recognition.

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.The middle image of Fig. 3 shows a current coding image in which the coding block 302 is in a position that can be expressed in pixel coordinates (128, 112) at its upper left corner. The motion vector can then be described as the li-15 vector of this pixel in the upper left corner. Of course, the other pixels in the block also move in the direction of the motion vector in question. The origin of the image (0, 0) is thus the pixel in the lower left corner of the image.

Edellä kuvatun menettelyn tarkoituksena on siis löytää laskentate-hokkaasti mahdollisimman hyvä liikevektori, jotta erodata pakkautuu hyvin.Thus, the purpose of the above procedure is to find the best possible motion vector in computation so that the eroded data is well compressed.

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.3, the rightmost portion of Figure 3 illustrates the previous image, where the block 304 corresponding to the coding block 302 in the current image is best found. The block 304 of the previous image having pixel /: coordinates (112, 96) in the top left has moved to block 302 in the current image. * * Y i whose pixels in the upper left corner are (128, ΥΫ 25 112). In video coding terminology, movements are expressed as right motion positive, left negative, up negative and down positive.

·;·· 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.The motion vector 306 is thus (-16, 16), that is, the motion is sixteen pixels on the X-axis. and sixteen pixels in the Y axis. As illustrated in Figure 3, the current image is encoded by subtracting block 302 from the previous block. Block 304 found in the 30 reconstructed image using means 202, wherein; . this creates the difference between blocks, i.e. the error term 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-Thus, the function of block 704 is performed to compress the image as efficiently as possible. In block 706, based on at least one motion vector: '' ', the direction and magnitude of the camera movement from the previous image and the current' are determined. 35 pictures. All methods known to those skilled in the art can be used to identify camera motion based on motion vectors, e.g.

I I II I I

109395 9 teeksi otettavien jo aiemmin mainittujen US-patenttien 5 317 685 ja 5 973 733 opetusten mukaisia ratkaisuja.109395 9 to the teachings of the aforementioned U.S. Patents 5,317,685 and 5,973,733.

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.The applicant has also developed his own way of detecting camera movement, which has the advantages of simplicity of processing and efficiency. Each macro block of 5 has a variable number of motion vectors. Since the motion vectors of the chrominance blocks are always calculated from the motion vectors of the luminance blocks, the motion vectors of the chrominance blocks are not used in calculations to detect camera motion. The motion vector consists of two components, horizontal and vertical. Thus, the camera motion is compensated for the Erik-10 horizontal and vertical components of the motion vector.

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.In one embodiment, camera motion is separately identified for horizontal and vertical components by first dividing the horizontal / vertical components into three classes according to their size, and then averaging a class 15 containing the most horizontal / vertical components, which averages the magnitude of the camera motion in that component.

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.In one embodiment, the categorization is performed by first averaging all horizontal / vertical components. Thus, the largest and smallest horizontal / vertical component is sought. And finally, the horizontal / vertical components are divided into three categories based on the average of all horizontal / vertical components, the largest horizontal / vertical component and the smallest horizontal / vertical component.

... Matemaattisesti esitettynä kameran liike tunnistetaan erikseen ho- : risontaali- ja vertikaalikomponenteille seuraavaksi kuvattavalla tavalla.... In mathematical terms, camera motion is identified separately for horizontal and vertical components as described below.

' : 25 Merkitään liikevektorin horisontaali/vertikaalikomponentteja {v, ,v2,V3S...,v„} (1) • * * · · · * Muodostetaan keskiarvo m=(Zv/)/w (2)': 25 Let us denote the horizontal / vertical components of the motion vector {v,, v2, V3S ..., v „} (1) • * * · · · * Generate the mean 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/iChoose the smallest component! 30 = minfvLVa.Vs ..... v „} (3) i '' | Select the largest component j: *. vmax = max {vj, v2, v3, ..., vn} (4) I '···' Let's denote the value range '= (vmax-Vmin) / 6 (5).:.: 35 Creating three classes »» ♦ 109395 10 CQ = {vi \ vi <mr} C, = | V: \ mr <v, <m + r} (6) C2 = | v, | v,> m + r) where / = 1.2, ..., n Choose the category for which Ιφς, Ι ί) (7) 7055 «/ e {0,1,2) = 0 and jeQ / i

Ja jos sellaista luokkaa ei ole niin valitaan luokka C,.And if there is no such class, then C is chosen.

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.5 Determine the magnitude of the camera movement: if | c, | = Oja | c0 | = | c2 | then component gmv = 0 (8) otherwise component gmv = ΣΚΚ lc1 This algorithm can also be described with a pseudocode similar to the C programming language shown in Appendix 1.

Intrakoodatun kuvan liikevektorin arvo on nolla. Jos liikevektorit 10 muodostetaan puolen pikselin tarkkuudella, silloin kameran liikettä määriteltäessä liikevektorien arvot jaetaan kahdella.The value of the motion vector of the intracoded image is zero. If the motion vectors 10 is formed by a half pixel resolution, then determining the movement of the camera motion vectors values are divided by two.

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ä.Next, in block 708, camera motion between the current and next image is predicted to continue in the same direction and at the same magnitude as the camera motion defined between the previous and current image.

·:·. 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ä.·: ·. Then, in block 710, the camera motion between the current and the next image is compensated by moving the image area 104 within the imaging area 402 against the motion predicted in the following image. Patterns ;;; 5A, 5B and 5C illustrate the effect of camera movement on the image area '···' 402 and image area 104. Figure 5A illustrates the initial situation, i.e. the first image, '* 20 with image area 502 in the middle of image area 500. Figure 5B illustrates a second image, wherein the camera 506 is moved to the right in the direction of arrow 504, which describe the person has moved to the image area 508, and at the same time, of course Description of the sector from the left. Figure 5C illustrates a third image, wherein the camera is further continued movement to the right as shown by arrow 510. The person is moved to the image area between 25 514 already unsettling manner, the left side, as well as the image area 514 that the image area 512 are moved to the right as shown by arrow 510. Thus, Figures' · · '5A, 5B and 5C illustrate image deterioration as a result of unintentional camera movement::': if motion compensation is not available.

109395 11109395 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.Figures 6A, 6B and 6C illustrate camera motion compensation using the disclosed method. The contents of Figures 6A and 6B correspond to those of Figures 5A and 5B. Between the previous image 502 of Figure 6A and the current image 508 of Figure 6B, the direction and magnitude of the camera motion are calculated based on the motion vectors. For the sake of simplicity, in our example, only horizontal camera movement 504 occurs. According to the method, the camera motion is predicted to continue between the current image 508 and the next image 600 in the same magnitude and direction as the previous image 502 and the current image 508. The camera motion 510 is compensated for between the current image 508 and the screen image 600 by moving the image area 600 within the image area 512 against the predicted motion 600 in the next image at a prediction magnitude.

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.Comparison of Figures 5C and 6C reveals that the subject and the text behind him are no longer flatter using compensation. It is true that motion has already taken place in the previous images, because the 15 motion is not compensated immediately but based on prediction in the following image. However, according to the applicant's experiments, the method used results in a marked improvement in image quality compared to no compensation at all.

Kompensoinnin suorittava algoritmi kuvataan lisäksi liitteessä 2 C-20 ohjelmointikieltä muistuttavalla pseudokoodilla.In addition, the algorithm that performs the compensation is described in Appendix 2 with a pseudocode similar to the C-20 programming language.

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.The method described is performed in the encoder illustrated in Fig. 2 using motion estimation means 216 and motion stabilization means 230, which may be briefly referred to as processing means 216, 230. The motion stabilization means 216, 230. . The lines 230 thus inform the frame buffer 200 where the image area 104 to be used is taken from the imaging area 25 402.

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.The processing means 216, 230 may be implemented as a computer program running in the processor, for example each required function is implemented as a separate program module. Thus, the computer program includes routines for implementing the steps of the method. For the purpose of selling a computer program, it may be stored on a computer storage medium such as a Compact and Disc Read Only Memory (CD-ROM). The computer program may be designed to operate also on a normal general purpose personal computer, laptop computer, computer network server, or other tunnel technology computer.

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.The processing means 216, 230 may also be implemented as a hardware solution, such as one or more application specific integrated circuits (ASICs) 109395, or as a function logic constructed from discrete components. In selecting the means of implementation, one skilled in the art will consider, for example, the processing power required and the manufacturing cost. Different hybrid-software implementations of software and hardware are also possible.

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.The motion stabilization can be further illustrated by another simple example. Assume that the camera moves only horizontally. Initially, the first frame of Table 1 in the camera's field of view contains the text '' HANTRO OULU ''. The image area is marked with a check mark 10, or "H" at position 0.

Positio -5 -4 -3 -2 -1 0__1__2__3__4__5_Position -5 -4 -3 -2 -1 0__1__2__3__4__5_

Kuvausala__HANTRO___OULUKuvausala__HANTRO___OULU

Kuva-ala I 1 I I 1 1 X I I I I IImage area I 1 I I 1 1 X I I I I I

Taulukko 1: Ensimmäinen kehysTable 1: First frame

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.In the second frame shown in Table 2, the camera has moved 15 to the right, whereby the image area has also moved to the right, but the image area is still taken from position 0.

Positio -5 -4 -3 -2 -1__0__1__2__3__4__5_Position -5 -4 -3 -2 -1__0__1__2__3__4__5_

Kuvausala__A N T R O___OULU _Scope__A N T R O___OULU _

·': Kuva-ala X· ': Image area 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.Table 2: Second framework. Thus, 1 position, ** has been identified between the first and second frames. 20 horizontal movement to the right. The motion is predicted to continue at the same magnitude as you enter the third frame, thereby compensating as described in Table 3: the area is taken from position -1, which is '··' perpendicular to the right motion of the 1 position. However, as can be seen from the image, the direction of motion has accelerated to the right to 2 positions.

: Positio -5 -4 -3 -2 -1__0__1__2__3__4__5_ .···. Kuvausala T R O___O U__L__U____: Positio -5 -4 -3 -2 -1__0__1__2__3__4__5_. ···. Scope T R O___O U__L__U____

Kuva-ala XImage area X

' : ' Taulukko 3: Kolmas kehys 13 109395':' Table 3: Third frame 13 109395

Seuraavassa kehyksessä otettaisiin kuvausala siten positiosta -3 liikkeen kompensoimiseksi.The next frame would then take the imaging area from position -3 to compensate for movement.

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)In principle, therefore, after the beginning of the encoding of the video image, the first frame in which gmv differs from zero is the frame from which the 5 image stabilization can be applied to subsequent frames. The camera movement is in the same direction as the GMM points. The motion speed is the length of the gmv. Thus, it can be predicted that motion will continue in the observed direction at the observed magnitude. The buffer thus changes the point at which the frame is taken. Let bp denote the location of the buffer, and a value of bp zero means that frame 10 is taken from the center of the buffer, i.e., the image area is in the center of the imaging area. Also use the add variable, which is calculated for each frame using gmv 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)Thus, the add variable describes the speed of camera movement, and the average with gmv is calculated to calm the predicted motion. So point 15 of the buffer where the image is taken inside the imaging area is 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.Although the invention has been described above with reference to the example of the accompanying drawings, it is to be understood that the invention is not limited thereto, but that it can be modified in many ways within the scope of the inventive concept of the claims. It will be obvious to one skilled in the art that various known coding methods can be combined with the basic solution described to achieve the desired coding efficiency and quality.

* * l * · * * i ! . ! » | .11» | ‘ ** * l * · * * i! . ! »| .11 »| '*

> I I> I I

109395 14109395 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 109395Appendix 1: Pseudocode for Identifying Camera Motion for (i = 0; i <99; i ++) / * 99 Components 7 {5 ka + = mv [i]; / * Calculate the sum of all components 7} if (ka> 0) ka = (ka) / 99; / * Calculate mean 7 10 if (ka <0) ka = (ka) / 99; min = mv [0]; / * Find the min and max of the components 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]; ! } :: Rank = (max-min) / 6; / * Define value range 7 ·,: / 25 for (i = 0; i <99; i ++) / * Divide components into three classes 7 O {·: ··: if (mv [i] <= (ka-rang)) categoryfi] = 0; else if (mv [i]> = ka + Rang), ·. : 30 categoriesfi] = 2; ·· ', else classfi] = 1; ; :)} for (i = 0; i <99; i ++) / * Calculate the sums and sizes of classes 7 35 {IL if (class [i] == 0) 109395 15 {sumO + = mv [i]; nO ++; } 5 if (class [i] == 1) {sum1 + = mv [i]; n1 ++; } 10 if (class [i] == 2) {sum2 + = mv [i]; n2 ++; } 15} n = n1; / * Select the largest category * / sum = sum1; if (nOn) {20 sum = sum0; n = n0; } if (n2> n) {25 sum = sum2; n = n 2; } if (n1 == 0 && nO == n2) {30 sum = 0; } else {sum = sum / n; / * Calculate camera movement 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.A method of stabilizing a video image of a sequence of still images with a camera, comprising: (704) defining for compressing a video image at least one motion vector to detect movement between a block in the previous image and a block in the current image; (706) determining, based on at least one motion vector, the direction and magnitude of camera movement between the previous image and the current image; characterized in that the camera (10) (702) captures the individual images forming a video image in a field wider than that used in the images; (708) predicting that camera movement between the current and next image continues in the same direction and at the same magnitude as the camera motion defined between the previous and current image; 15 (710) compensates for camera motion between the current image and the next image by moving the image area within the imaging area against the motion predicted in the next image at a prediction amount.

2. Patenttivaatimuksen 1 mukainen menetelmä, tunnettu siitä, että kompensoidaan kameran liike erikseen liikevektorin horisontaali- ja verti- 20 kaalikomponenteille.Method according to claim 1, characterized in that the motion of the camera is compensated separately for the horizontal and vertical components of the motion vector.

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.A method according to claim 2, characterized in that the camera movement is identified separately by the horizontal and the vertical component; . to you in the following way: • / dividing the horizontal / vertical components into three classes according to their mouth size; An average of the class containing the most horizontal / vertical components is formed, which average represents the magnitude of camera movement in the direction of the component.

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, suurimpaanMethod according to claim 3, characterized in that; : 30 that the categorization is done as follows:, ·. averaging all horizontal / vertical components; ; ί retrieves the largest and smallest horizontal / vertical component; divide the horizontal / vertical components into three categories based on the average of 35 horizontal / vertical components, the highest

I II I

Claims (10)

18 109395 horisontaali/vertikaalikomponenttiin ja pienimpään horisontaali/vertikaalikom-ponenttiin.18 109395 for horizontal / vertical component and smallest horizontal / vertical component. 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.Method according to Claim 4, characterized in that the motion of the camera is separately identified for the horizontal and vertical components-5 by: - marking the horizontal / vertical components of the motion vector {vpv2, v3 ..... v „} - generating an average m = ^ Σλ ] 1 n - select the smallest component Vmin = min {vlsv2, v3, ..., vM} 10 - select the largest component vmax = max {v ,, v2, v3, ..., vn} - enter the value range r = (vmax "Vmin) / 6 - Create three classes C0 = {v \ vi <mr} Q = | v, | mr <v, <m + r} C2 = {v,. | V (> m + r} where / = 1,2, ..., n - select the class for which ΙΦΚΙ I 15 1 where ie {0,1,2} = Q and jeQ / i and, if there is no such class, select class C,. magnitude of motion: '· if | c, | = oya | c0 | = | Cj |' 'then component gmv = 0' ', otherwise component gmv = ^ | νλ vk eC, ·} / | cj, ··. 6. The system stabilizes the video created by sequential still images with the camera an image comprising a camera (102) forming a video image and processing means (216, 230) of consecutive still images adapted to:; · * define at least one motion: ': a vector in the preceding image and in the current image to compress the video image; for detecting movement between blocks; ', To determine, based on at least one motion vector, the direction and magnitude of camera movement between the previous image and the current image; 19,109,395, characterized in that the camera (102) is adapted to capture single images forming a video image in a field wider than that used in the images; the processing means (230) being adapted to predict the movement of the camera (102) between the current and the next image in the same direction and in the same magnitude as the motion of the camera (102) defined between the previous and the current image; the processing means (230) being adapted to compensate for the movement of the camera (102) between the current image and the next image by moving the image area within the image-10a against the motion predicted in the next image. 7. Patenttivaatimuksen 6 mukainen järjestelmä, tunnettu siitä, että prosessointivälineet (230) on sovitettu kompensoimaan kameran liike erikseen liikevektorin horisontaali- ja vertikaalikomponenteille.System according to claim 6, characterized in that the processing means (230) are arranged to compensate the camera motion separately for the horizontal and vertical components of the motion vector. 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.A system according to claim 7, characterized in that the processing means (230) are adapted to recognize the motion of the camera separately for the horizontal and vertical components as follows: dividing the horizontal / vertical components into three classes according to their size; 20, the average of the class containing the most horizontal / vertical components is formed, which average represents the magnitude of camera movement in the direction of that component. 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.The system of claim 8, characterized in that! . that the processing means (230) is adapted to perform the categorization in the following way: averaging all horizontal / vertical components; : ": search for the largest and smallest horizontal / vertical component; divide the horizontal / vertical components into three categories based on the average of all horizontal / vertical components of the 30 basic support, the largest horizontal / vertical component and the smallest horizontal / vertical component. 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 109395The system according to claim 9, characterized in that: ; that the processing means (230) is adapted to detect motion of the camera separately for the horizontal and vertical components as follows:; ; '; - denoting the horizontal / vertical components of the motion vector 20 109395 {v,, v2, v3, ..., v „} - averaging m = ^ Σν, ^! n - selecting the smallest component Vmin = min {v1, v2, v3, .. ., v „} - select the largest component vmax = max {v ,, v2, v3, ..., v„} 5. mark the value range r = (vmax - Vmin) / 6 - create three classes C0 = {vi \ vi <mr} Cj = | vj / w - r <v,. <m + r) C2 = {v, | v (.> m + r} where i = \, 2, ..., n - select the class for which ΙΦ | ς, ie ie {0,1,2} = Q and jeQ / i 10 and if there is no such class then C is selected, - the magnitude of the camera motion is formed: if | cj = 0_ / a | co | = | C2 | then component gmv = 0 otherwise component gmv = Σ {ν * Κ ε <^} / Ι ^ · Ι # »i * ^ * l * t 21 109395
FI20010629A 2001-03-27 2001-03-27 Stabilizing video images by filming a scene larger than the image and compensating camera motion by shifting the image within the film scene in a direction opposite to a predicted camera motion FI109395B (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
FI20010629A FI109395B (en) 2001-03-27 2001-03-27 Stabilizing video images by filming a scene larger than the image and compensating camera motion by shifting the image within the film scene in a direction opposite to a predicted camera motion
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 (en) 2001-03-27 2001-03-27 Stabilizing video images by filming a scene larger than the image and compensating camera motion by shifting the image within the film scene in a direction opposite to a predicted camera motion

Publications (2)

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

Family

ID=8560850

Family Applications (1)

Application Number Title Priority Date Filing Date
FI20010629A FI109395B (en) 2001-03-27 2001-03-27 Stabilizing video images by filming a scene larger than the image and compensating camera motion by shifting the image within the film scene in a direction opposite to a predicted camera motion

Country Status (2)

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

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2025159A4 (en) 2006-05-30 2013-04-10 Google Inc Apparatus, arrangement, method and computer program product for digital video processing
FI20095273A0 (en) 2009-03-17 2009-03-17 On2 Technologies Finland Oy Digital video coding
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
US8838680B1 (en) 2011-02-08 2014-09-16 Google Inc. Buffer objects 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
DE69423430T2 (en) * 1993-12-02 2000-09-07 Canon Kk Image tremor correction 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
JP2003513565A (en) * 1999-10-29 2003-04-08 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ Video coding 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
FI20010629A0 (en) 2001-03-27
WO2002078327A1 (en) 2002-10-03

Similar Documents

Publication Publication Date Title
KR100422389B1 (en) Method and apparatus for increasing video frame rate
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
KR100964515B1 (en) Non-integer pixel sharing for video encoding
CN108924553B (en) Video encoding method, video decoding method, video encoding apparatus, video decoding apparatus, computer device, and storage medium
JPH09163373A (en) Noise reduction device
JPH11317952A (en) Moving picture decoding method, computer readable recording medium to record the same, and moving picture decoder
KR20040069210A (en) Sharpness enhancement in post-processing of digital video signals using coding information and local spatial features
FI109395B (en) Stabilizing video images by filming a scene larger than the image and compensating camera motion by shifting the image within the film scene in a direction opposite to a predicted camera motion
CN108848377B (en) Video encoding method, video decoding method, video encoding apparatus, video decoding apparatus, computer device, and storage medium
US8358696B2 (en) Motion estimation techniques
KR20040069208A (en) Improving temporal consistency in video sharpness enhancement
FI109634B (en) Method and apparatus for encoding a video image
KR20130039698A (en) Method and device for determining a saliency value of a block of a video frame block-wise predictive encoded in a data stream
FI109394B (en) Method and apparatus for encoding and decoding a video image
JPH09130748A (en) Image signal processing unit and recording/reproducing device
JPH1169362A (en) Encoding and decoding method for moving image
JPH08275049A (en) Image pickup device
JPH09130648A (en) Moving image signal processor
KR100240620B1 (en) Method and apparatus to form symmetric search windows for bidirectional half pel motion estimation
JP2007129335A (en) Screen motion detector
JP3407726B2 (en) Encoding method, encoding device, and computer-readable recording medium
JP2001128185A (en) Recording medium

Legal Events

Date Code Title Description
PC Transfer of assignment of patent

Owner name: GOOGLE INC.

Free format text: GOOGLE INC.

MM Patent lapsed