FI109634B - Method and apparatus for encoding a video image - Google Patents

Method and apparatus for encoding a video image Download PDF

Info

Publication number
FI109634B
FI109634B FI20010303A FI20010303A FI109634B FI 109634 B FI109634 B FI 109634B FI 20010303 A FI20010303 A FI 20010303A FI 20010303 A FI20010303 A FI 20010303A FI 109634 B FI109634 B FI 109634B
Authority
FI
Finland
Prior art keywords
block
motion vector
pixels
image
search area
Prior art date
Application number
FI20010303A
Other languages
Finnish (fi)
Swedish (sv)
Other versions
FI20010303A0 (en
Inventor
Markus Suvanto
Jarno Valtanen
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 FI20010303A priority Critical patent/FI109634B/en
Publication of FI20010303A0 publication Critical patent/FI20010303A0/en
Priority to PCT/FI2002/000127 priority patent/WO2002067590A1/en
Application granted granted Critical
Publication of FI109634B publication Critical patent/FI109634B/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
    • 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/59Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial sub-sampling or interpolation, e.g. alteration of picture size or resolution

Description

, 109634, 109634

Menetelmä ja laite videokuvan koodaamiseksiMethod and apparatus for encoding a video image

AlaArea

Keksinnön kohteina ovat menetelmä ja laite peräkkäisistä liikkumattomista kuvista muodostetun videokuvan koodaamiseksi.The present invention relates to a method and apparatus for encoding a video image formed by a sequence of 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 t... 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. Complex. 20 resignation is based on the removal of less relevant data. Compression methods are mainly divided into three categories: Spectral Redundancy Reduction, Spatial Redundancy; ···. Spatial Redundancy Reduction and Temporal Redundancy Reduction. Typically, various combinations of these methods are used to compress t ... 25.

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 109634 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 cb and cr components. For example, H.263 video encoding standard; The luminance block according to 'is 16 x 16 pixels and each chrominance block covering the same region 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. Macro blocks are generally read out of the image by 109634 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). 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ä.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 A reference picture previously stored in memory can be used to determine the motion vector Prediction of a block. This · · 'encoding 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- • I < 30 ta, joka lähetetään dekooderille. Kooderin sisällä kvantisoiduille lohkoille tehdää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 109634 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 element of it is divided by some constant. This constant may vary between macroblocks *: ···. '' Quantization parameter '' from which these divisors are calculated; ···. is between 1-31. The more zeros a block gets, the better the block · · · will be compressed, because zeros are not transmitted to the channel. Quantized blocks can still be subjected to different coding methods and eventually converted into bit streams, which are transmitted to the decoder. Within the encoder, the quantized blocks are further inverse quantized and inverse discrete cosine transformed to form a reference image from which the blocks in the following images can be predicted. Thus, in the future, the encoder transmits the difference data and motion vectors between the incoming block and the reference blocks. This improves compression efficiency. Decoder * · ·. 35 (Decoder) after decoding the bit stream and decoding methods, it 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.

Tässä hakemuksessa keskitytään parhaiden liikevektoreiden löytämisen ongelmiin. Tyypillisesti edelliseen kuvaan määritellään hakualue, josta 5 haetaan nykyisessä, koodattavassa kuvassa olevan kaltaista lohkoa. Paras vastaavuus löydetään laskemalla hakualueella olevan lohkon ja koodattavan lohkon välisten pikseleiden absoluuttierojen summa (sum of absolute differences, SAD). Pienin absoluuttierojen summa tarkoittaa sitä, että vastaavuus on paras. Absoluuttierojen summa on siis virhetekijä, joka ilmaisee kuvalohkojen 10 erilaisuuden.This application focuses on the problems of finding the best motion vectors. Typically, the previous image defines a search area from which a block similar to that in the current image to be encoded is searched. The best match is found by calculating the sum of Absolute Differences (SAD) between the block in the search area and the block to be coded. The smallest sum of absolute differences means that the equivalence is the best. Thus, the sum of the absolute differences is an error factor which expresses the difference of the image blocks 10.

Tunnetun tekniikan mukaisesti on käytetty täyshakua, eli kaikki tai lähes kaikki mahdolliset liikevektorit on asetettu liikevektorikandidaateiksi. Lii-kevektori ilmaisee miten nykyisen kuvan koodattava luminanssilohko on liikkunut edellisestä kuvasta löydetyn pienimmän absoluuttierojen summan anta-15 vasta luminanssilohkosta. Täyshaussa suoritetaan kaikkien liikevektorikandi-daattien osoittamille mahdollisille lohkoille absoluuttierojen summien laskenta. Ongelmana täyshaun käytössä on vaadittujen laskutoimitusten suuri määrä. Esimerkiksi jos hakualueen koko on 48 x 48 pikseliä, jolloin mahdollisten liikevektoreiden lukumäärä yhden pikselin tarkkuudella on 33 x 33, ja luminanssi-20 lohkon koko on 16 x 16 pikseliä, niin yhden absoluuttierojen summan laskentaan tarvitaan 16 x 16 = 256 laskutoimitusta, ja kaikkien mahdollisten liikevek- • ·’ toreiden absoluuttierojen summien laskentaan siten 33 x 33 x 256 = 278 784 laskutoimitusta yhtä makrolohkoa kohti. Esimerkiksi qcif-koon kuvassa on 99 • makrolohkoa, eli laskutoimituksia on 99 x 278 748 = 275 996 16 laskutoimitus- '[[[: 25 ta. Videokuvassa on tyypillisesti 15 kuvaa sekunnissa, jolloin sekunnissa tarvit-·:··: tavien laskutoimitusten lukumäärä pelkästään liikevektoreiden löytämiseksi on 15 x 275 996 16 = 413 994 240 laskutoimitusta.In accordance with the prior art, full search is used, i.e. all or almost all possible motion vectors are set as motion vector candidates. The Lii vector indicates how the luminance block to be encoded in the current image has moved only from the luminance block given by the smallest sum of absolute differences found in the previous image, let-15. In the full search, the sum of the absolute differences is calculated for all possible blocks indicated by the motion vector candidates. The problem with using full search is the high number of calculations required. For example, if the search area is 48 x 48 pixels, the number of possible motion vectors is 33 x 33, and the size of the luminance-20 block is 16 x 16 pixels, then 16 x 16 = 256 calculations are required to calculate one absolute difference sum, thus calculating the absolute difference between the business sectors, 33 x 33 x 256 = 278,784 calculations per macroblock. For example, the qcif image has 99 macroblocks, that is, 99 x 278 748 = 275 996 16 calculations [[[: 25. A video image typically has 15 frames per second, so the number of calculations needed per second: · ··: to find motion vectors alone is 15 x 275 996 16 = 413 994 240 calculations.

Laskutoimitusten määrää on pyritty vähentämään käyttämällä erilaisia hakumenetelmiä, joissa liikevektorikandidaattien lukumäärää vähennetään 30 radikaalisti. Esimerkiksi three-step-search (TSS) -menetelmässä lasketaan ;·’ hakualueen eri osista esimerkiksi vain yhdeksälle liikevektorille absoluuttiero- ·.·.·* jen summat kolmella eri kierroksella, kullakin kierroksella hakualuetta pienen-täen, jolloin laskutoimitusten määrä putoaa 3 x 9 x 256 = 6912 laskutoimituk-. seen yhtä makrolohkoa kohti. Parhaan tuloksen antava liikevektori valitaan sit- . 35 ten jatkoon, ja sen ympärille muodostetaan pienempi hakualue, josta sitten tarkemmin haetaan parasta liikevektoria. Ongelmana tässä ratkaisussa on se, 4 109634 että hakualue (esimerkissämme 31 x 31 pikseliä) on pienempi kuin täyshaus-sa, ja että jos haku harhautuu väärälle polulle ensimmäisessä vaiheessa, eli valitaan väärä hakualueen osa jatkotarkastelun kohteeksi, niin menettely antaa huonon tuloksen. Väärälle polulle joutuminen ensimmäisellä kierroksella 5 johtuu siitä, että hakualueen osan kymmeniä mahdollisia liikevektoreita edustaa vain yksi esimerkiksi hakualueen osan keskeltä valittu liikevektori. Myös täyshaussa voidaan käyttää kaksivaiheista liikevektorin hakua, mutta ongelmana on edelleen laskutoimitusten suuri määrä, ja asic-toteutuksen monimutkaisuus.Efforts have been made to reduce the number of calculations using a variety of search methods in which the number of motion vector candidates is reduced radically. For example, in the three-step-search (TSS) method, the sum of; · 'from different parts of the search area, for example, to only nine motion vectors, is computed in three different rounds, each round decreasing the search area, resulting in 3 x 9 x 256 = 6912 Calculations. per macroblock. The best performing motion vector is then selected. 35, and a smaller search area is formed around it, whereupon the best motion vector is searched more closely. The problem with this solution is that the search area (31 x 31 pixels in our example) is smaller than the full search, and that if the search is misleading in the first step, i.e. selecting the wrong part of the search area for further examination, the procedure will give a bad result. Getting into the wrong path in the first round 5 is due to the fact that the tens of possible motion vectors in a portion of the search area are represented by only one motion vector selected from the middle of the search area, for example. Full search can also use two-step motion vector search, but the problem remains with the high number of calculations and the complexity of asic implementation.

10 Lyhyt selostus10 Brief Description

Keksinnön tavoitteena on tarjota parannettu menetelmä videokuvan koodaamiseksi ja parannettu laite videokuvan koodaamiseksi.An object of the invention is to provide an improved method for encoding a video image and an improved device for encoding a video image.

Keksinnön eräänä puolena esitetään patenttivaatimuksen 1 mukainen menetelmä videokuvan koodaamiseksi. Keksinnön eräänä puolena esite-15 tään patenttivaatimuksen 7 mukainen laite videokuvan koodaamiseksi. Keksinnön muut edulliset suoritusmuodot ovat epäitsenäisten patenttivaatimusten kohteena.In one aspect, the invention provides a method for encoding a video image according to claim 1. In one aspect of the invention, there is provided a device according to claim 7 for encoding a video image. Other preferred embodiments of the invention are claimed in the dependent claims.

Keksintö perustuu siihen, että käytetään klassista täyshakua, jolloin hakualue tulee täydellisesti kartoitettua. Laskennan määrää voidaan kuitenkin 20 merkittävästi vähentää siten, että absoluuttierojen summaa ei lasketa käyttäen • » . *.·' kaikkia lohkon pikseleitä vaan edustavaa joukkoa pikseleistä. Jos edustava joukko on esimerkiksi yksi neljäsosa lohkon pikseleiden lukumäärästä, niin sil-loin tarvittavien laskutoimitusten määrä lohkoa kohti on 33 x 33 x 64 = 69696, eli vain yksi neljäsosa täydellisen täyshaun vaatimasta laskennasta.The invention is based on the use of classic full search, whereby the search area is completely mapped. However, the amount of computation can be significantly reduced so that the sum of the absolute differences is not computed using ». · 'All pixels in a block but a representative set of pixels. For example, if the representative set is one quarter of the number of pixels in a block, then the number of calculations required per block is 33 x 33 x 64 = 69696, i.e. only one quarter of the computation required for a full full lookup.

25 Kuvioluettelo25 List of Patterns

Keksinnön edulliset suoritusmuodot selostetaan esimerkinomaisesti alla viitaten oheisiin piirroksiin, joista: kuvio 1 esittää laitteita videokuvan koodaamiseksi ja dekoodaami- ’...· seksi; . 30 kuvio 2 esittää tarkemmin laitetta videokuvan koodaamiseksi; kuvio 3 esittää liikkumattoman kuvan jakautumista lohkoihin; kuvio 4 esittää hakualueiden määrittelyä; kuvio 5 esittää pikseleiden käsittelyä; kuvio 6 on vuokaavio havainnollistaen menetelmää videokuvan koo-35 daamiseksi; 5 109634 kuvio 7 esittää pikseleitä.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 2 shows in more detail a device for encoding a video image; Figure 3 shows the distribution of a still image into blocks; Figure 4 illustrates a definition of search areas; Figure 5 illustrates pixel processing; Fig. 6 is a flowchart illustrating a method for encoding a video image; 109634 Figure 7 shows pixels.

Suoritusmuotojen kuvausDescription of Embodiments

Viitaten kuvioon 1 selostetaan laitteita videokuvan koodaamiseksi ja dekoodaamiseksi. Kuvaus on pelkistetty, sillä alan ammattilaiselle videokoo-5 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: ’’The MPEG video standards”.Referring to Figure 1, devices for encoding and decoding a video image are described. The description has been reduced, since video coding is well known to one of ordinary skill in the art, based on standards and textbooks, for example reference book, Vasudev Bhaskara and Konstan-Tinos Konstantinides: '' Image and Video Compression Standards - Algorithms and Architectures, Second Edition ', Kluwer Academic Publishers 1997, Chapter 6: '' The MPEG Video Standards ''.

10 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 tavalla, jossa luminanssille ja krominanssille ovat omat matriisinsa. Kuvaa 104 15 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 106 kompressoidaan kooderilla 108 esimerkiksi edelleenlähetystä tai tal-20 lennusta varten.The face of a person 100 is captured by a camcorder 102. The video image is formed by a series of single still images in the camera 102, which shows a single still image 104. The camera 102 generates a matrix representing the image 104 in pixels, for example as initially described with luminance and chrominance. The data stream 106 representing the image 104 in pixels 15 is then passed to the encoder 108. Of course, it is also possible to construct a device in which the data stream 106 is provided to the encoder 108, for example, via a data link or e.g. The purpose here is for the uncompressed video image 106 to be compressed by the encoder 108 for, for example, retransmission or flight to flight.

. Kooderi 108 käsittää diskreettikosinimuunnosvälineet 110 suorittaa ...·* diskreettikosinimuunnos kunkin liikkumattoman kuvan 104 pikseleille. Diskreet-tikosinimuunnoksella muodostettu datavuo 112 viedään kvantisointivälineisiin 114, joilla suoritetaan kvantisointi valitulla kvantisointisuhteella. Kvantisoidulle • 25 datavuolle 116 voidaan suorittaa vielä muutakin koodausta, jota ei tässä kui- .···. tenkaan kuvata. Kooderilla 108 muodostettu kompressoitu videokuva siirre- * · 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. Encoder 108 comprises a discrete cosine conversion means 110 performs a · · * discrete cosine conversion for pixels of each still image 104. The data stream 112 generated by the discrete-ticosin transform is fed to quantization means 114 for performing quantization at a selected quantization ratio. For quantized • 25 data streams 116, other encoding can be performed which is not here · · · · · · · · · · · · · · · to describe. The compressed video image generated by the encoder 108 is transmitted using channel 118 to the decoder 120. It is not described here how to compile. , nava 118 is implemented because the various implementation alternatives are within the skill of the art

* » I* »I

selviä. Kanava 118 voi olla esimerkiksi kiinteä tai langaton tiedonsiirtoyhteys.clear. For example, channel 118 may be a fixed or wireless communication link.

* I* I

;·* 30 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- va sitten luetaan muistivälineeltä ja käsitellään dekooderilla 120.· * 30 Channel 118 may also be interpreted as a transmission path through which a video image is recorded:; * to a storage medium, such as a laser disk, and using which the video image is then read from the storage medium and processed by decoder 120.

Dekooderi 120 käsittää käänteiskvantisointivälineet 122, joilla koo-v j derissa 108 suoritettu kvantisointi puretaan. Käänteiskvantisoitu datavuo 124 * ‘ 35 viedään seuraavaksi käänteisdiskreettikosinimuunnosvälineisiin 126, joilla suo ritetaan käänteisdiskreettikosinimuunnos kunkin liikkumattoman kuvan 104 β 109634 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 size 108. The inverse quantized data stream 124 * '35 is then applied to inverse discrete cosine conversion means 126 for performing inverse discrete cosine conversion on each of the still images 104? 109634 pixels. 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, 5 esimerkiksi tietokoneisiin, erilaisten radiojärjestelmien tilaajapäätelaitteisiin kuten 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.The encoder 108 and decoder 120 may be located in various devices, for example, computers, subscriber terminals of various radio systems, such as mobile stations, or other devices in which video image processing is desired. Encoder 108 and decoder 120 may also be combined with the same device, which may then be called a video codec.

Kuviossa 5 kuvataan tunnetun tekniikan mukaisia pikseleitä kuvios-10 sa 1 kuvattujen laitteiden osien välisissä rajapinnoissa 106, 112, 116, 124 ja 128. Testikuvana on käytetty alan ammattilaisten tunteman testisekvenssin ’’calendar qcif.yuv” ensimmäisen kuvan ensimmäistä 8x8 kokoista luminanssi-lohkoa. Rajapinta 106 kuvaa datavuon sisältöä kameran 102 jälkeen. Rajapinta 112 kuvaa datavuon sisältöä diskreettikosinimuunnosvälineiden 110 jäi-15 keen. Rajapinta 116 kuvaa datavuon sisältöä kvantisointivälineiden 114 jälkeen. Käytetty kvantisointisuhde on 17. Yksinkertaisuuden vuoksi muita tunnettuja koodauksia ei ole käytetty, eli rajapinnan 116 datavuo siirretään kanavaa 118 pitkin dekooderille 120. Rajapinta 124 kuvaa datavuon sisältöä kään-teiskvantisointivälineiden 122 jälkeen.FIG. 5 depicts prior art pixels at the interfaces 106, 112, 116, 124, and 128 of the device portions of the devices illustrated in FIG. 10a. The first 8x8 luminance block of the first image calendar calendar known to those skilled in the art is used. The interface 106 illustrates the content of the data stream after the camera 102. Interface 112 illustrates the content of the data stream to within 15 of the discrete cine conversion means 110. The interface 116 illustrates the content of the data stream after the quantization means 114. The used quantization ratio is 17. For simplicity, other known encodings are not used, i.e., the data stream of interface 116 is transmitted along channel 118 to decoder 120. Interface 124 illustrates the content of the data stream after inverse quantization means 122.

20 Koska meitä kiinnostaa ajallisen redundanssin vähentämiseksi suo ritettava kompressointi kooderissa 108, kuvataan seuraavaksi kooderia 108 • · • ·’ tarkemmin kuvioon 2 viitaten. Kooderiin 108 tuotava liikkuva videokuva 106 tallennetaan väliaikaisesti kuvittain kehyspuskuriin (frame buffer) 200. Ensim- • · · • mäinen kuva on ns. intra-kuva, eli sille ei tehdä ajallisen redundanssin vähen-25 tämiseksi koodausta, vaikkakin se käsitellään diskreettikosinimuunnosvälineillä ·:··: 110 ja kvantisointivälineillä 114. Ensimmäisen kuvan jälkeenkin voidaan lähet- tää intra-kuvia, esimerkiksi jos virhetekijä muodostui liian suureksi parhaankin * · · ’ liikevektorin kohdalla.Since we are interested in the compression to be performed in encoder 108 to reduce temporal redundancy, encoder 108 will 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. intra-image, that is, it is not encoded to reduce temporal redundancy, although handled by discrete cosine conversion tools ·: ··: 110 and quantization means 114. Even after the first image, intra-images can be sent, for example if the error factor becomes too large * · · 'For the motion vector.

.·. : Seuraavia kuvia käsiteltäessä voidaan alkaa käyttämään ajallisen 30 redundanssin vähentämiseksi suoritettavaa koodausta. Tällöin edellinen kuva • · käänteiskvantisoidaan käänteiskvantisointivälineillä 206 ja sille suoritetaan 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- ’ . 35 ruoitu edellinen kuva, eli edellinen kuva siinä muodossa, jossa se on dekoode- rissa 120 suoritettavan käsittelyn jälkeen. Kehyspuskureita 200, 212 on siis 7 109634 kaksi, ensimmäiseen 200 tallennetaan nykyinen kameralta tuleva kuva, ja toiseen 212 rekonstruoitu edellinen kuva.. ·. A: When processing the following images, coding to reduce redundancy over time can be used. In this case, the previous image is inverse quantized by inverse quantization means 206, and it is also subjected to inverse discrete cosine transform by the inverse discrete cosine conversion means 208. If a motion vector was already computed on the previous image, its effect is added to the image 21 by the frame 210. 35, the previous image in the form in which it is in decoder 120 after processing. Thus, there are 7,109,634 of frame buffers 200,212, the first 200 storing the current image from the camera and the second 212 reconstructing the previous image.

Edellinen rekonstruoitu kuva viedään sitten liikkeenestimointiloh-koon 216 kehyspuskurista 212. Samoin koodattava nykyinen koodattava kuva 5 viedään liikkeenestimointilohkoon 216 kehyspuskurista 200. Liikkeenesti-mointilohkossa 216 suoritetaan sitten ajallisen redundanssin vähentämiseksi haku, jossa pyritään löytämään edellisestä kuvasta lohkoja, jotka vastaavat nykyisessä kuvassa olevia lohkoja. Lohkojen väliset siirtymät ilmaistaan liike-vektoreina.The previous reconstructed image is then exported to motion estimation block 216 from frame buffer 212. Likewise, the current encodable image 5 is moved to motion estimation block 216 from frame buffer 200. In order to reduce temporal redundancy, a motion detecting block 216 is performed to find corresponding blocks in the previous image. Transitions between blocks are expressed as motion vectors.

10 Löydetyt liikevektorit 220, 222 viedään liikkeenkompensointilohkoon 214 ja muuttuvamittaiseen kooderiin (variable-length coder) 204. Liikkeenkompensointilohkoon 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 15 224, 226 välineille 202 ja välineille 210. Välineillä 202 koodattavasta nykyises tä kuvasta, tarkemmin ilmaistuna sen ainakin yhdestä lohkosta, vähennetään edellisestä kuvasta löydetty lohko. Tällöin nykyisestä kuvasta, tarkemmin ilmaistuna sen ainakin yhdestä lohkosta, jää koodattavaksi virhetekijä, joka siis diskreettikosinimuunnetaan ja kvantisoidaan.10 The detected motion vectors 220, 222 are applied to the motion compensation block 214 and the variable-length coder 204. The motion compensated block 214 is also provided to the motion compensation block 214 based on the previous reconstructed image and the motion vector of the motion compensating block 214. , 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, subtracts the block found in the previous image. 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.

20 Muuttuvamittainen kooderi 204 saa siis syötteiksi diskreettikosini- muunnetun ja kvantisoidun virhetekijän 116 sekä liikevektorin 222. Kooderin 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-25 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 108 thus provides compressed data representing the current image relative to the previous image using motion vector or motion vectors, error term (s). Motion 25 is done using luminance blocks, but the coding error factors are calculated for both luminance and chrominance blocks.

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- ,··\ 30 la kierroksella voidaan tarkemmin laskea pienemmän hakualueen liikevekto- reiden arvoja. Yleensä absoluuttierojen summan laskenta tehdään yhden pik-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 as described above in two turns. ·. : Once the wide search area of the first round has been reduced, the second, ·· \ 30 la round can more accurately calculate the motion vectors of the smaller search area. In general, the sum of absolute count is made in a single-pixel accuracy, but especially in the second round of the calculation can be done with half pixel accuracy. A half-pixel accuracy in the use of genuine Eu-interpolated between the pixels in the imaginary half-pixel values.

35 Seuraavaksi kuvion 6 vuokaavioon viitaten selostetaan menetelmä peräkkäisistä liikkumattomista kuvista muodostetun videokuvan koodaukseen, 8 109634 nimenomaan ajallisen redundanssin vähentämiseksi. Kuviossa 6 kuvataan yhdelle liikkumattomalle kuvalle suoritettava prosessointi. Käytännössä koodattaessa videokuvaa, kuvion 6 toimenpiteet toistetaan kullekin videokuvan yksittäisen liikkumattoman kuvan luminanssidatalle.Referring now to the flowchart of Fig. 6, a method for encoding a video image formed from a sequence of still images is described, specifically 10 109634 to reduce temporal redundancy. Figure 6 illustrates the processing to be performed on a single still image. In practice, when encoding a video image, the operations of Figure 6 are repeated for each luminance data of a single still image of the video image.

5 Menetelmän suoritus aloitetaan lohkosta 600. Lohkossa 602 määri tellään edelliseen kuvaan ensimmäinen hakualue, josta haetaan nykyisessä kuvassa olevaa koodattavaa lohkoa. Kuviossa 3 havainnollistetaan kuvan jakautumista lohkoihin. Kuvion 3 vasemmanpuoleisin kuva esittää qcif-kokoa olevaa kuvaa, jonka koko on vaakasuunnassa 176 pikseliä ja pystysuunnassa 10 144 pikseliä. Kuva jakautuu edelleen 16 x 16 pikselin kokoisiin luminans- si(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äytetä liike-vektorin tunnistuksessa hyväksi.Execution of the method begins at block 600. In block 602, a first search area is defined in the previous image, from which a block to be encoded in the current image is retrieved. Figure 3 illustrates the distribution of the image into blocks. The leftmost image of Figure 3 shows a qcif image having a horizontal size of 176 pixels and a vertical size of 10,144 pixels. The image is further subdivided into 16 x 16 pixel 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 for motion vector recognition.

15 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-kevektorina. Lohkon muut pikselit liikkuvat tietysti myös kyseisen liikevektorin 20 suuntaan.The middle image of Figure 3 shows the current coding image in which the block 302 to be coded is in a position that can be expressed as pixel coordinates (128, 112) of its top left corner. The motion vector can then be described as the motion 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 20 in question.

Kuvan origo (0, 0) on siis kuvan vasemmanpuoleisessa alakulmas-. sa oleva pikseli.The origin of the image (0, 0) is thus in the lower left corner of the image. the pixel you have.

i < 4i <4

Kuviossa 4 vasemmanpuoleinen kuva esittää edellistä kuvaa, jossa ensimmäinen hakualue 400 on nykyisessä kuvassa olevan koodattavan loh- .’"j 25 kon 302 ympärillä. Edellisessä kuvassa ei tietenkään ole koodattavaa lohkoa * ·« 302, vaan se on vain kuvattu havainnollistamaan ensimmäisen hakualueen .*·*. 400 sijaintia sen ympärillä.4, the left image shows the previous image, with the first search area 400 surrounding the coding block 302 in the current image. Of course, the previous image does not have a coding block * · «302, but is only illustrated to illustrate the first search area. * · * .400 locations around it.

« * ·«* ·

Hakualueen koko on esimerkissämme yhdeksän lohkon 300 suu- . . ruinen. Tällöin mahdollisten liikevektoreiden lukumäärä on 33 x 33. Hakualu-* · · *./ 30 een koko vaikuttaa pakkaussuhteeseen, jos videokuvassa esiintyy suurta lii- • · ·;*’ kettä. Esimerkissämme lohkon vasemmanpuoleisimman yläkulman pikselin : :*· arvo voi vaihdella siis seuraavasti: 96< X < 128 ja 113<T<145.The size of the search area in our example is 300 blocks of nine blocks. . magnitude is. In this case, the number of possible motion vectors is 33 x 33. The size of the search area * · · *. / 30 affects the compression ratio if there is a large movement in the video image. In our example, the pixel in the top left corner of the block:: * · can thus be set to 96 <X <128 and 113 <T <145.

» I * :’Seuraavaksi lohkossa 604A muodostetaan ensimmäisellä hakualu-1·« eella 400 kunkin ensimmäisen liikevektorikandidaatin osoittaman ensimmäisen I · 4 35 lohkon pikseleiden ja koodattavan lohkon pikseleiden välinen ensimmäinen «»* *» absoluuttierojen summa. Tätä kuvataan kuviossa 7 vasemmanpuoleisella 9 109634 osalla, jossa kuvataan pikseleitä kirjaimella P. Yksi P siis vastaa aina yhtä pik-seliä. Esimerkiksi hakualueen 400 vasemmanpuoleisin yläkulma on koordinaatissa (113, 128). Ensimmäistä liikevektorikandidaatin osoittamaa lohkoa kuvataan yhtenäisellä viivalla piirretyllä alueella 700. Seuraavan liikevektorikandi-5 daatin osoittama lohko on kuvattu katkoviivoitetulla alueella 702. Seuraavan rivin ensimmäistä liikevektorikandidaatin osoittamaa lohkoa kuvaa pistekatko-viivoitettu alue 704. Lohko 700, 702, 704 on siis aina 16x16 pikseliä kokoinen alue, ja hakualueella käydään läpi kaikki tällaiset lohkot, eli esimerkissä 33 x 33 = 1089 lohkoa.Next, in block 604A, the first search area-1 · 400 generates a first sum of the absolute differences between the pixels of the first I · 4 35 blocks indicated by each of the first motion vector candidates and the pixels of the block to be encoded. This is illustrated in Fig. 7 by the left portion of 9,109,634, where pixels are represented by P. One P thus always corresponds to one pixel. For example, the top left corner of search area 400 is in coordinate (113, 128). The first block indicated by a motion vector candidate is represented by a solid line 700. The block shown by the next motion vector candidate 5 is illustrated by a dashed area 702. The first block represented by a motion vector candidate in the next line is represented by a dotted line 704. The block 700, 702, 704 , and the search area goes through all such blocks, i.e. 33 x 33 = 1089 blocks in the example.

10 Absoluuttierojen summalla tarkoitetaan sitä, että otetaan nykyisen kuvan lohkosta esimerkiksi vasemmanpuoleisimmasta yläkulmasta pikseli, ja sitten vähennetään siitä edellisen kuvan lohkosta vastaava pikseli. Tunnetun tekniikan mukaisesti tämä toistetaan jokaiselle lohkon 256 pikselistä, ja erotuksien itseisarvot lasketaan yhteen. Näin saadaan lohkojen välisiä eroavuuk-15 siä kuvaava virhetermi.10 The sum of absolute differences means taking a pixel from the current image block, for example, from the top left corner, and then subtracting the pixel corresponding to the previous image block. According to the prior art, this is repeated for each of the 256 pixels of the block, and the absolute values of the differences are summed. This results in an error term describing the differences between the blocks.

Tunnetun tekniikan mukainen menettely on tässä korvattu menettelyllä, jossa lohkon 604B mukaisesti kunkin ensimmäisen absoluuttierojen summan muodostamiseen käytetään edustavaa joukkoa ensimmäisen lohkon pikseleistä. Eräässä suoritusmuodossa edustava joukko on tasajakautunut 20 osa ensimmäisen lohkon pikseleistä. Eräässä suoritusmuodossa edustava joukko on noin yksi neljäsosa ensimmäisen lohkon pikseleistä. Eräässä suori-. . tusmuodossa, jota kuvataan kuvion 7 oikeanpuoleisella osalla, edustava jouk- ko on ensimmäisen lohkon joka toisen rivin joka toinen pikseli. Kuviossa 7 joka • · toisen rivin joka toisen pikselin ympärille on piirretty ympyrä 710.The prior art procedure is herein replaced by a procedure in which, according to block 604B, a representative set of pixels of the first block is used to construct each of the first sum of absolute differences. In one embodiment, the representative set is an evenly distributed portion of the pixels of the first block. In one embodiment, the representative set is about one quarter of the pixels of the first block. In one of the direct. . 7, the representative set is every other pixel in every second row of the first block. In Fig. 7, a circle 710 is drawn around every other pixel of the second line.

* ·: 25 Ensimmäisellä hakualueella 400 suoritetaan siis täyshaku, eli kaikki tai lähes kaikki mahdolliset liikevektorit asetetaan liikevektorikandidaateiksi. Lohkossa 606 testataan onko kaikkien liikevektorikandidaattien osoittamat lohkot jo käsitelty. Jos kaikille lohkoille ei vielä ole muodostettu absoluuttierojen summaa, niin mennään nuolen 608 mukaisesti takaisin lohkoon 604A.* ·: 25 Thus, in the first search area 400, a full search is performed, i.e., all or almost all possible motion vectors are set as motion vector candidates. In block 606, it is tested whether the blocks indicated by all the motion vector candidates have already been processed. If all the blocks have not yet been formed by the sum of absolute, so let's go back to the arrow 608 in accordance with the block 604A.

30 Jos kaikille lohkoille on muodostettu absoluuttierojen summat, niin .···, mennään nuolen 610 mukaisesti lohkoon 612, jossa valitaan pienimmän en-'·’ simmäisen absoluuttierojen summan antava ensimmäinen liikevektorikandi- daatti parhaaksi liikevektorikandidaatiksi. Tähän siis tavallaan päättyy ensim- •»* mäinen hakukierros.30, if all of absolute amounts, then the blocks are formed. ···, let the direction of arrow 610 in accordance with block 612, where the minimum en-selected "·" the sum of absolute-first illustrative first liikevektorikandi- molybdate as the best motion vector. So, in a way, this completes the first »» * search round.

35 Seuraavaksi lohkossa 614 määritellään parhaan liikevektorikandi- daatin ympärille ensimmäistä hakualuetta 400 pienempi toinen hakualue 402, • · 10 109634 jota kuvataan kuvion 4 oikeanpuoleisessa osassa. Tämä toinen hakualue 402 on esimerkissämme +-2 pikseliä lohkon ympärillä, eli mahdollisia liikevektorei-ta on 5 x 5 = 25 liikevektorikandidaattia. Eräässä suoritusmuodossa tämä toisen kierroksen haku voidaan tehdä puolen pikselin tarkkuudella, jolloin liike-5 vektorikandidaattien lukumäärä on 9 x 9 = 81 liikevektorikandidaattia. Hakualue voi tietysti myös olla pienempi tai suurempi, halutusta laadusta ja/tai las-kentamäärästä riippuen. Esimerkiksi hakualueen ollessa +-1 pikseliä lohkon ympärillä, niin yhden pikselin tarkkuudella liikevektorikandidaatteja on 9 tai puolen pikselin tarkkuudella 25.Next, in block 614, a second search area 402 smaller than the first search area 400 is defined around the best motion vector candidate, which is illustrated in the right part of Figure 4. This second search area 402 in our example is + -2 pixels around the block, i.e. there are 5 x 5 = 25 motion vector candidates. In one embodiment, the second round of search can be made with half pixel accuracy of the motion-5 vektorikandidaattien number is 9 x 9 = 81 motion vector. Of course, the search range may also be smaller or larger, depending on the quality desired and / or the number of counts required. For example, the search range of + -1 pixels around the block, the one-pixel resolution motion vector has a half 9 or 25 pixels.

10 Sitten lohkossa 616 muodostetaan toisella hakualueella oleville toi sille liikevektorikandidaateille toisen liikevektorikandidaatin osoittaman toisen lohkon pikseleiden ja koodattavan lohkon pikseleiden välinen toinen absoluut-tierojen summa. Tämä vastaa muuten lohkoa 604A, mutta muodostukseen käytetään kaikkia pikseleitä, jolloin tuloksesta tulee tarkempi.Then, in block 616, a second sum of absolute differences between the pixels of the second block indicated by the second motion vector and the pixels of the block to be coded is formed for the second motion vector candidates in the second paging area. This is otherwise equivalent to block 604A, but all pixels are used to make the result more accurate.

15 Sitten lohkossa 618 testataan onko kaikille toisten liikevektorikandi- daattien osoittamille lohkoille muodostettu absoluuttierojen summat. Jos ei ole, niin mennään nuolen 620 mukaisesti lohkoon 616, jossa muodostetaan seu-raavan toisen liikevektorikandidaatin osoittamalle lohkolle absoluuttierojen summa.Then, in block 618, it is tested whether the sum of the absolute differences is formed for all blocks indicated by the other motion vector candidates. If not, the routine in accordance with the direction of the arrow 620 to block 616, which is formed fol-Raavan second motion vector indicated by the block sum of absolute.

20 Kun kaikki toiset liikevektorikandidaatit on käsitelty, niin lohkosta 618 mennään nuolen 622 mukaisesti lohkoon 624, jossa koodataan koodattava lohko käyttäen pienimmän toisen absoluuttierojen summan antavaa toista liikevektorikandidaattia.20 When all of the second motion vector have been processed, so block 618 goes as shown by arrow 622 to block 624, where the block to be coded is coded using a least sum of absolute second Advisory second motion vector.

Menetelmän suoritus lopetetaan lohkossa 626. On huomattava, että 25 tässä lopetetaan käsittely yhden lohkon suhteen, mutta menetelmää toistetaan ’···* kuvan kaikille lohkoille 300.Execution of the method is terminated at block 626. Note that processing here is terminated with respect to one block, but the method is repeated for all blocks 300 of the '··· * image.

Edellä kuvatun menettelyn tarkoituksena on siis löytää laskentate-hokkaasti mahdollisimman hyvä liikevektori, jotta erodata pakkautuu hyvin. Kuvion 3 oikeanpuoleisin osa kuvaa edellistä kuvaa, josta on löydetty parhai- 30 ten nykyisessä kuvassa olevaa koodattavaa lohkoa 302 lohkoa vastaava lohko • · 304. Edellisen kuvan vastaava lohko 304, siis löytyi esimerkissämme kuviossa ·. 4 oikeanpuoleisessa osassa kuvatun toisen hakualueen 402 keskeltä. Edelli- sen kuvan lohko 304, jonka vasemmanpuoleisimman yläkulman pikselin koor-*··.: dinaatit ovat (112, 96), on siis siirtynyt nykyisessä kuvassa lohkoksi 302, jonka :‘j‘; 35 vasemmanpuoleisimman yläkulman pikselin koordinaatit ovat (128, 112). Vi- deokoodausterminologiässä liikkeet ilmaistaan siten, että liike oikealle on posi- 11 109634 tiivinen, vasemmalle negatiivinen, ylös negatiivinen ja alas positiivinen. Liike-vektori 306 on siis (-16, 16), eli liike on kuusitoista pikseliä X-akselin suunnassa ja kuusitoista pikseliä Y-akselin suunnassa. Kuten kuviossa 3 kuvataan, niin nykyisen kuvan koodattavasta lohkosta 302 vähennetään edellisestä rekonst-5 ruoidusta kuvasta löydetty lohko 304 käyttäen välineitä 202, jolloin saadaan lohkojen välinen erodata eli virhetermi 308.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. The rightmost portion of Figure 3 illustrates the previous image, where the block corresponding to the block 302 of the current image to be best coded 302 in the current image is found. The corresponding block 304 of the previous image, thus found in our example in Figure. 4 in the middle of the second search area 402 described in the right section. The previous image's block 304, whose pixels in the upper left corner are pixels (112, 96), is thus moved into the current image to block 302 having: 'j'; The coordinates of the 35 pixels in the upper left corner are (128, 112). In video coding terminology, movements are expressed as right motion is positive, left negative, up negative and down positive. Thus, the motion vector 306 is (-16, 16), i.e., the motion is sixteen pixels along the X axis and sixteen pixels along the Y axis. As illustrated in Fig. 3, the block 304 found in the previous reconstructed image 5 is subtracted from the coding block 302 of the current image using the means 202 to obtain the inter-block discrete data, i.e. the error term 308.

Jos toisella hakualueella muodostetaan liikevektorikandidaatit yhden pikselin tarkkuudella, niin ensimmäisellä hakualueella ulommaiset liikevektorikandidaatit voidaan haluttaessa jättää pois, koska ne tulevat kuitenkin käsi-10 tellyiksi toisella hakualueella, jolloin ensimmäisen hakualueen kooksi saadaan 31 x 31 = 961 liikevektorikandidaattia. Toinen hakualue voidaan tunnetun tekniikan mukaisesti myös jakaa neljään erilliseen alueeseen, jolloin kullekin lohkon osalle voidaan määrittää oma liikevektori.If motion vector candidates are formed in the second search area with a resolution of one pixel, then the outer motion vector candidates in the first search area can be omitted if desired, since they become hand-sized in the second search area, yielding 31x31 = 961 motion vector candidates. According to the prior art, the second search area can also be divided into four separate regions, whereby a separate motion vector can be determined for each part of the block.

Kuvattu menetelmä suoritetaan kuviossa 2 kuvatussa kooderissa 15 käyttäen liikkeenestimointivälineitä 216 ja liikkeenkompensointivälineitä 214, joita voidaan nimittää lyhyesti prosessointivälineiksi 214, 216. Prosessointivä-lineet 214, 216 voidaan toteuttaa prosessorissa toimivana tietokoneohjelmana, jolloin esimerkiksi kukin tarvittava toiminto toteutetaan omana ohjelmamoduulina. Tietokoneohjelma siis sisältää rutiinit menetelmän vaiheiden toteuttami-20 seksi. Tietokoneohjelman myyntiä varten se voidaan tallentaa tietokoneen muistivälineelle esimerkiksi CD-ROM:ille (Compact Disc Read Only Memory). Tietokoneohjelma voidaan suunnitella siten, että se toimii myös normaalissa ]···. yleiskäyttöisessä henkilökohtaisessa tietokoneessa, kannettavassa tietoko- neessa, tietokoneverkon palvelimessa tai muussa tunnetun tekniikan mukai-25 sessa tietokoneessa.The described method is performed in the encoder 15 illustrated in Fig. 2 using motion estimation means 216 and motion compensation means 214, which may be briefly referred to as processing means 214, 216. The processing means 214, 216 may be implemented as a computer program in the processor. Thus, the computer program includes routines for carrying out 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 Disc Read Only Memory (CD-ROM). A computer program can be designed to work normally] ···. a general purpose personal computer, a portable computer, a computer network server, or other prior art computer.

'···[ Prosessointivälineet 214, 216 voidaan toteuttaa myös laitteistorat- * * kaisuna, esimerkiksi yhtenä tai useampana sovelluskohtaisena integroituna • · · piirinä (Application Specific Integrated Circuit, ASIC) tai erilliskomponenteista rakennettuna toimintalogiikkana. Välineiden toteutustavan valinnassa alan :\i 30 ammattilainen huomioi esimerkiksi tarvittavan prosessointitehon ja valmistus- ·”*: kustannukset. Myös erilaiset ohjelmiston ja laitteiston muodostamat hybridito- •. teutukset ovat mahdollisia.The processing means 214, 216 may also be implemented as hardware solution, * for example, as one or more application specific integrated circuits (ASICs) or as operating logic built from discrete components. In selecting the means of implementation, the skilled worker will consider, for example, the processing power required and the manufacturing cost. There are also various software and hardware hybrid. implementations are possible.

• · ·• · ·

Vaikka keksintöä on edellä selostettu viitaten oheisten piirustusten mukaiseen esimerkkiin, on selvää, ettei keksintö ole rajoittunut siihen, vaan si-:T: 35 tä voidaan muunnella monin tavoin oheisten patenttivaatimusten esittämän • keksinnöllisen ajatuksen puitteissa. Oleellista on vain se, että täyshaku suori- 12 109634 tetaan käyttäen kunkin absoluuttierojen summan laskentaan edustavaa joukkoa kaikista lohkon pikseleistä, ja sitten suoritetaan uudelleen haku parhaan liikevektorikandidaatin ympärillä käyttäen tunnetun tekniikan mukaisia menettelyjä, esimerkiksi pikselin tai puolen pikselin tarkkuudella yhden tai 5 neljän liikevektorin hakua. 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 clear that the invention is not limited thereto, but si-T can be modified in many ways within the inventive idea of the appended claims. It is essential only that a full search is performed 12 109634 accomplished using a representative for each of absolute amount calculating a set of all block of pixels and then performing re-search around the best motion vector using the procedures of the prior art, for example, a pixel or half pixel resolution of one or five four motion vector search. 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.

« · » · • ♦ • · · ♦ 9 9 • 9 • « * · • · ·«·» · • ♦ • · · ♦ 9 9 • 9 • «* · • · ·

» * I • · I»* I • · I

Claims (12)

1. Menetelmä peräkkäisistä liikkumattomista kuvista muodostetun videokuvan koodaamiseksi, käsittäen: (602) määritellään edelliseen kuvaan ensimmäinen hakualue, josta 5 haetaan nykyisessä kuvassa olevaa koodattavaa lohkoa; (604A) muodostetaan ensimmäisellä hakualueella kunkin ensimmäisen liikevektorikandidaatin osoittaman ensimmäisen lohkon pikseleiden ja koodattavan lohkon pikseleiden välinen ensimmäinen absoluuttierojen summa; (612) valitaan pienimmän ensimmäisen absoluuttierojen summan 10 antava ensimmäinen liikevektorikandidaatti parhaaksi liikevektorikandidaatiksi; (614) määritellään parhaan liikevektorikandidaatin ympärille ensimmäistä hakualuetta pienempi toinen hakualue; (616) muodostetaan toisella hakualueella oleville toisille liikevektori-kandidaateille toisen liikevektorikandidaatin osoittaman toisen lohkon pikselei-15 den ja koodattavan lohkon pikseleiden välinen toinen absoluuttierojen summa; (624) koodataan koodattava lohko käyttäen pienimmän toisen absoluuttierojen summan antavaa toista liikevektorikandidaattia; tunnettu siitä, että (604B) kunkin ensimmäisen absoluuttierojen summan muodostami-20 seen käytetään edustavaa joukkoa ensimmäisen lohkon pikseleistä.A method for encoding a video image formed from a sequence of still images, comprising: (602) defining in the previous image a first search area from which a block to be encoded in the current image is searched; (604A) forming, in the first search area, a first sum of absolute differences between the pixels of the first block indicated by each first motion vector candidate and the pixels of the block to be coded; (612) selecting the first motion vector candidate giving the smallest sum of absolute differences 10 as the best motion vector candidate; (614) defining a second search area smaller than the first search area around the best motion vector candidate; (616) generating, for the second motion vector candidates in the second paging area, a second sum of absolute differences between the pixels of the second block indicated by the second motion vector candidate and the pixels of the block to be encoded; (624) encoding the block to be coded using the second motion vector candidate giving the smallest sum of the absolute differences; characterized in that (604B) a representative set of pixels of the first block are used to form each of the first sum of absolute differences. 2. Patenttivaatimuksen 1 mukainen menetelmä, tunnettu siitä, • että edustava joukko on tasajakautunut osa ensimmäisen lohkon pikseleistä.A method according to claim 1, characterized in that the representative set is an evenly distributed part of the pixels of the first block. 3. Patenttivaatimuksen 1 mukainen menetelmä, tunnettu siitä, • että edustava joukko on noin yksi neljäsosa ensimmäisen lohkon pikseleistä.The method of claim 1, characterized in that the representative set is about one quarter of the pixels of the first block. 4. Patenttivaatimuksen 1 mukainen menetelmä, tunnettu siitä, :··: että edustava joukko on ensimmäisen lohkon joka toisen rivin joka toinen pik- .·1·. seli.The method according to claim 1, characterized in that: ··: that the representative set is every second row of every second row of the first block · 1 ·. seli. 5. Jonkin edellisen patenttivaatimuksen mukainen menetelmä, . tunnettu siitä, että ensimmäisellä hakualueella suoritetaan täyshaku, eli 30 kaikki tai lähes kaikki mahdolliset liikevektorit asetetaan liikevektorikandidaa-·;·' teiksi.A method according to any one of the preceding claims,. characterized in that a full search is performed in the first search area, i.e., all or almost all possible motion vectors are set as motion vector candidates; 6. Jonkin edellisen patenttivaatimuksen mukainen menetelmä, tunnettu siitä, että toiset liikevektorikandidaatit muodostetaan puolen pik-selin tarkkuudella. • · · • · · · 14 1096346. The method according to any one of the preceding claims, characterized in that the second motion vector formed by a half-LT member places. • · · • · · 14 109634 7. Laite peräkkäisistä liikkumattomista kuvista muodostetun videokuvan koodaamiseksi, käsittäen prosessointivälineet (214, 216), jotka on sovitettu määrittelemään edelliseen kuvaan ensimmäinen hakualue, josta 5 haetaan nykyisessä kuvassa olevaa koodattavaa lohkoa; muodostamaan ensimmäisellä hakualueella kunkin ensimmäisen liikevektorikandidaatin osoittaman ensimmäisen lohkon pikseleiden ja koodattavan lohkon pikseleiden välinen ensimmäinen absoluuttierojen summa; valitsemaan pienimmän ensimmäisen absoluuttierojen summan an-10 tava ensimmäinen liikevektorikandidaatti parhaaksi liikevektorikandidaatiksi; määrittelemään parhaan liikevektorikandidaatin ympärille ensimmäistä hakualuetta pienempi toinen hakualue; muodostamaan toisella hakualueella oleville toisille liikevektorikan-didaateille toisen liikevektorikandidaatin osoittaman toisen lohkon pikseleiden 15 ja koodattavan lohkon pikseleiden välinen toinen absoluuttierojen summa; ja koodaamaan koodattava lohko käyttäen pienimmän toisen absoluuttierojen summan antavaa toista liikevektorikandidaattia; tunnettu siitä, että prosessointivälineet (214, 216) on sovitettu muodostamaan kukin 20 ensimmäinen absoluuttierojen summa käyttäen edustavaa joukkoa ensimmäisen lohkon pikseleistä.A device for encoding a video image formed from a sequence of still images, comprising processing means (214, 216) adapted to define a first search area in the previous image, from which 5 a block to be encoded in the current image is retrieved; forming, in the first search area, a first sum of absolute differences between pixels of the first block indicated by each first motion vector candidate and pixels of the block to be coded; selecting the first motion vector candidate giving the smallest sum of the first absolute differences the best motion vector candidate; define a second search area smaller than the first search area around the best motion vector candidate; forming, for the second motion vector candidates, in the second paging area, a second sum of absolute differences between the pixels 15 of the second block indicated by the second motion vector candidate and the pixels of the block to be encoded; and encoding the block to be coded using the second motion vector candidate giving the smallest sum of the absolute differences; characterized in that the processing means (214, 216) are arranged to form each of the first 20 sum of absolute differences using a representative set of pixels of the first block. 8. Patenttivaatimuksen 7 mukainen laite, tunnettu siitä, että edustava joukko on tasajakautunut osa ensimmäisen lohkon pikseleistä.Device according to Claim 7, characterized in that the representative set is an evenly distributed part of the pixels of the first block. 9. Patenttivaatimuksen 7 mukainen laite, tunnettu siitä, että ’..; * 25 edustava joukko on noin yksi neljäsosa ensimmäisen lohkon pikseleistä.Device according to Claim 7, characterized in that '..; * The 25 representative set is about one quarter of the pixels of the first block. • · ’···’ 10. Patenttivaatimuksen 7 mukainen laite, tunnettu siitä, että edustava joukko on ensimmäisen lohkon joka toisen rivin joka toinen pikseii. • * ·Device according to claim 7, characterized in that the representative set is every second pixel of every second row of the first block. • * · 11. Jonkin edellisen patenttivaatimuksen 7-10 mukainen laite, tunnettu siitä, että prosessointivälineet (214, 216) on sovitettu suoritta- 30 maan ensimmäisellä hakualueella täyshaku, eli kaikki tai lähes kaikki mahdol-•' ‘ . liset liikevektorit asetetaan liikevektorikandidaateiksiDevice according to one of the preceding claims 7 to 10, characterized in that the processing means (214, 216) are arranged to perform a full search, i.e. all or almost all, in the first search area. additional motion vectors are set as motion vector candidates 12. Jonkin edellisen patenttivaatimuksen 7-11 mukainen laite, tunnettu siitä, että prosessointivälineet (214, 216) on sovitettu muodosta-maan toiset liikevektorikandidaatit puolen pikselin tarkkuudella. is 1096347-11 12. A device according to one of the preceding claims, characterized in that the processing means (214, 216) is arranged to form the second-half pixel motion vector resolution. is 109634
FI20010303A 2001-02-16 2001-02-16 Method and apparatus for encoding a video image FI109634B (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
FI20010303A FI109634B (en) 2001-02-16 2001-02-16 Method and apparatus for encoding a video image
PCT/FI2002/000127 WO2002067590A1 (en) 2001-02-16 2002-02-15 Video encoding of still images

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FI20010303 2001-02-16
FI20010303A FI109634B (en) 2001-02-16 2001-02-16 Method and apparatus for encoding a video image

Publications (2)

Publication Number Publication Date
FI20010303A0 FI20010303A0 (en) 2001-02-16
FI109634B true FI109634B (en) 2002-09-13

Family

ID=8560392

Family Applications (1)

Application Number Title Priority Date Filing Date
FI20010303A FI109634B (en) 2001-02-16 2001-02-16 Method and apparatus for encoding a video image

Country Status (2)

Country Link
FI (1) FI109634B (en)
WO (1) WO2002067590A1 (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 (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5684538A (en) * 1994-08-18 1997-11-04 Hitachi, Ltd. System and method for performing video coding/decoding using motion compensation
JP3954656B2 (en) * 1994-09-29 2007-08-08 ソニー株式会社 Image coding apparatus and method
US6011870A (en) * 1997-07-18 2000-01-04 Jeng; Fure-Ching Multiple stage and low-complexity motion estimation for interframe video coding
US6014181A (en) * 1997-10-13 2000-01-11 Sharp Laboratories Of America, Inc. Adaptive step-size motion estimation based on statistical sum of absolute differences
WO1999041912A2 (en) * 1998-02-13 1999-08-19 Koninklijke Philips Electronics N.V. Method and arrangement for video coding
DE60035740T2 (en) * 1999-06-22 2007-12-06 Victor Company of Japan, Ltd., Yokohama Apparatus and method for encoding motion picture signals
JP2001112000A (en) * 1999-10-07 2001-04-20 Matsushita Electric Ind Co Ltd Video signal encoding device

Also Published As

Publication number Publication date
WO2002067590A1 (en) 2002-08-29
FI20010303A0 (en) 2001-02-16
WO2002067590A8 (en) 2003-12-04

Similar Documents

Publication Publication Date Title
KR100319944B1 (en) Image encoder and image decoder
US7936820B2 (en) Moving-picture compression encoding method, apparatus and program
KR100964515B1 (en) Non-integer pixel sharing for video encoding
JP3570863B2 (en) Moving picture decoding apparatus and moving picture decoding method
US6785333B2 (en) Motion vector coding method
WO2000033583A1 (en) Efficient macroblock header coding for video compression
JP2002532026A (en) Improvement of motion estimation and block matching pattern
FI109634B (en) Method and apparatus for encoding a video image
FI110745B (en) Encoding successive images has reference image divided into parts which includes 4x4 pixels referred to with indexes and number is formed from the values of pixels in each part to describe pixel values in a given part
KR20090014371A (en) Motion detection device
JPH10136385A (en) Luminance change compensation method for moving image, moving image coder, moving image decoder, recording medium recording moving image coding or decoder program and recording medium recording coded moving image data
JPH11239354A (en) Motion vector detector
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
FI109394B (en) Method and apparatus for encoding and decoding a video image
FI109635B (en) Method and device for post-processing video image
KR20010030652A (en) Image encoding system
KR100926752B1 (en) Fine Motion Estimation Method and Apparatus for Video Coding
CN102547258B (en) Method for searching sub-pixels in interframe codes, motion searching method and module thereof
EP1683361B1 (en) Power optimized collocated motion estimation method
KR100240620B1 (en) Method and apparatus to form symmetric search windows for bidirectional half pel motion estimation
FI115945B (en) Coding sequential images
JP2004260251A (en) Apparatus and program of detecting motion vector
Wong et al. Sub-optimal quarter-pixel inter-prediction algorithm (SQIA)
KR100892471B1 (en) Motion detection device
JPH10164596A (en) Motion detector

Legal Events

Date Code Title Description
PC Transfer of assignment of patent

Owner name: GOOGLE INC.

Free format text: GOOGLE INC.

MA Patent expired