FI110745B - 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 - Google Patents

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 Download PDF

Info

Publication number
FI110745B
FI110745B FI20012203A FI20012203A FI110745B FI 110745 B FI110745 B FI 110745B FI 20012203 A FI20012203 A FI 20012203A FI 20012203 A FI20012203 A FI 20012203A FI 110745 B FI110745 B FI 110745B
Authority
FI
Finland
Prior art keywords
image
block
motion vector
indexed
pixel
Prior art date
Application number
FI20012203A
Other languages
Finnish (fi)
Swedish (sv)
Other versions
FI20012203A0 (en
Inventor
Markus Suvanto
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 FI20012203A priority Critical patent/FI110745B/en
Publication of FI20012203A0 publication Critical patent/FI20012203A0/en
Priority to PCT/FI2002/000894 priority patent/WO2003043342A1/en
Application granted granted Critical
Publication of FI110745B publication Critical patent/FI110745B/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/523Motion estimation or motion compensation with sub-pixel accuracy
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/80Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation

Landscapes

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

Abstract

The method has the following steps: an image and reference image are divided into parts which includes 4x4 pixels referred to with indexes and a number is formed from the values of the pixels in each part to describe pixel values in a given part; a search area is defined in the reference image; a block image is encoded using the motion vector candidate that gives the lowest cost function value, the motion between the image block to be encoded and a candidate block in the search area of reference image defined by the motion vector candidate. The image is processed into an indexed image and the reference image into an indexed reference image. The block to be encoded in the indexed image is searched for and a cost function for which a SAD function (Sum of Absolute Differences) is used is calculated for each motion vector candidate using the indexed reference image. Independent claims are also included for the following: (1) An apparatus for encoding successive images; and (2) A computer program on a carrier for encoding successive images.

Description

1 1107451,110,745

Menetelmä ja laite peräkkäisten kuvien koodaamiseksiMethod and apparatus for encoding sequential images

AlaArea

Keksinnön kohteina ovat menetelmä ja laite peräkkäisten kuvien koodaamiseksi.The invention relates to a method and apparatus for encoding sequential images.

5 Tausta5 Background

Peräkkäisten kuvien, esimerkiksi videokuvan, koodausta käytetään datamäärän vähentämiseksi, jotta se voidaan tehokkaammin tallentaa jollekin muistivälineelle tai siirtää tietoliikenneyhteyttä käyttäen. Esimerkki videokoodausstandardista on MPEG-4 (Moving Pictures Expert Group). Käytettyjä kulo vakokoja on erilaisia, esimerkiksi cif-koko on 352 x 288 pikseliä ja qcif-koko on 176 x 144 pikseliä.The coding of consecutive images, such as video, is used to reduce the amount of data so that it can be more effectively stored on a storage medium or transmitted over a communication link. An example of a video encoding standard is MPEG-4 (Moving Pictures Expert Group). There are a variety of flow constants used, for example, cif is 352 x 288 pixels and qcif is 176 x 144 pixels.

Tyypillisesti yksittäinen kuva jaetaan lohkoiksi, jotka sisältävät tietoa valoisuudesta, väristä ja sijainnista. Lohkojen data kompressoidaan lohkoittain halutulla koodausmenetelmällä. Kompressointi perustuu vähemmän merkityk-15 sellisen datan poistamiseen. Kompressointimenetelmät jaetaan pääasiallisesti kolmeen eri luokkaan: spektrisen redundanssin vähentäminen (Spectral Redundancy Reduction), tilaredundanssin vähentäminen (Spatial Redundancy Reduction) ja ajallisen redundanssin vähentäminen (Temporal Redundancy : ’.· Reduction). Tyypillisesti kompressointiin käytetään näiden menetelmien erilai- 20 siä yhdistelmiä.Typically, a single image is divided into blocks containing information about luminance, color, and location. The block data is compressed block by block using the desired coding method. Compression is based on the removal of less significant data. Compression 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- 25 nanssikomponenttia (U ja V, tai Cb ja Cr). Esimerkiksi H.263 videokoodaus standardin mukainen luminanssilohko on 16 x 16 pikseliä ja kumpikin kromi-nanssilohko, jotka kattavat saman alueen kuin luminanssilohko, 8x8 pikseliä. Yhden luminanssilohkon ja kahden krominanssilohkon yhdistelmää kutsutaan makrolohkoksi. Jokainen pikseli, sekä luminanssi- että krominanssilohkossa, 30 voi saada arvon väliltä 0-255, eli yhden pikselin esittämiseen tarvitaan kah- ... · deksan 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 chrominance, or color. · ·. changes. The YUV model has one luminance component (Y) and two chrominance components (U and V, or Cb and Cr). For example, in the H.263 video coding standard, the luminance block is 16 x 16 pixels and each chrominance block covers the same region as the luminance block, 8 x 8 pixels. The combination of one luminance block and two chrominance blocks is called a macroblock. Each pixel, in both the luminance and chrominance blocks 30, can have a value between 0 and 255, that is, two pixels are required to represent one pixel. For example, a value of 0 for a luminance pixel is black and a value for 255 is white.

• · Tilaredundanssin vähentämiseksi käytetään esimerkiksi diskreetti- YY kosinimuunnosta (Discrete Cosine Transform, DCT). Diskreettikosinimuunnok- 35 sessa muunnetaan lohkon pikseliesitys tilataajuusesitykseksi. Lisäksi kuva- 2 110745 lohkossa vain niillä signaalitaajuuksilla, joita siinä esiintyy, on suuriamplitudiset kertoimet, ja niillä signaaleilla, joita lohkossa ei esiinny, kertoimet ovat lähellä nollaa. Diskreettikosinimuunnos on periaatteessa häviötön muunnos ja signaaliin aiheutuu häiriötä vain kvantisoinnissa.• · Discrete Cosine Transform (DCT) is used, for example, to reduce space redundancy. In discrete cosine conversion, the pixel representation of a block is converted to a space frequency representation. In addition, in the block of Fig. 110745, only the signal frequencies that occur therein have high amplitude coefficients, and those signals which do not occur in the block have coefficients close to zero. The discrete cosine transform is basically a lossless transform and the signal is only disturbed by quantization.

5 Ajallista redundanssia pyritään vähentämään hyödyntäen sitä tosi asiaa, että peräkkäiset kuvat yleensä muistuttavat toisiaan, joten sen sijaan, että kompressoitaisiin jokainen yksittäinen kuva, generoidaan lohkojen liike-dataa. Tätä nimitetään liikkeen kompensoinniksi. Koodattavalle lohkolle etsitään mahdollisimman hyvä aiemmin koodattu referenssilohko aiemmasta 10 muistiin tallennetusta referenssikuvasta, referenssilohkon ja koodattavan lohkon välinen liike mallinnetaan ja lasketut liikevektorit (motion vector) lähetetään vastaanottimelle. Koodattavan lohkon ja referenssilohkon erilaisuus ilmaistaan erodatana. Tällaista koodausta kutsutaan interkoodaukseksi, joka tarkoittaa saman kuvajonon kuvien välisten samankaltaisuuksien hyödyntämis-15 tä.5 The goal is to reduce temporal redundancy by taking advantage of the fact that successive images tend to resemble each other, so that instead of compressing each single image, motion data of the blocks is generated. This is called motion compensation. For the block to be coded, the best possible pre-coded reference block is searched from the previous reference image stored in the memory, the motion between the reference block and the block to be coded is modeled and the calculated motion vectors are transmitted to the receiver. The difference between the block to be coded and the reference block is expressed as difference data. Such coding is called inter-coding, which means utilizing the similarities between the images in the same image sequence.

Tyypillisesti referenssikuvaan määritellään hakualue, josta haetaan koodattavassa kuvassa olevan kaltaista lohkoa. Paras vastaavuus löydetään laskemalla hakualueella olevan lohkon ja koodattavan lohkon välisten pikse-leiden välinen kustannusfunktio, esimerkiksi absoluuttierojen summa (sum of . 20 absolute differences, SAD).Typically, the reference image defines a search area from which a block like the one to be encoded is searched. The best match is found by calculating the cost function between the pixels between the block in the search area and the block to be coded, for example the sum of .20 Absolute differences (SAD).

Liikkeen estimointi hakualueella voidaan esittää kaavalla: ·'·'·' MV{x,y) = min (1) • . -!6<*,v<16 TTt1 1 • . /=0 j-0 .'· jossa MV on lopullinen liikevektori, fxy on koodattavan makrolohkon pikseli, ja rxy on referenssikuvan pikseli hakualueella.The motion estimation in the search area can be represented by the formula: · '·' · 'MV {x, y) = min (1) •. -! 6 <*, v <16 TTt1 1 •. / = 0 j-0. '· Where MV is the final motion vector, fxy is the pixel of the macroblock to be encoded, and rxy is the pixel of the reference image in the search area.

25 Tunnetun tekniikan mukaisesti on käytetty täyshakua, eli kaikki tai lähes kaikki mahdolliset liikevektorit on asetettu liikevektorikandidaateiksi. Ongelmana täyshaun käytössä on vaadittujen laskutoimitusten suuri määrä. Esimerkiksi jos hakualueen koko on 48 x 48 pikseliä, jolloin mahdollisten liikevek-. . toreiden lukumäärä yhden pikselin tarkkuudella on 33 x 33, ja luminanssiloh- 30 kon koko on 16 x 16 pikseliä, niin yhden absoluuttierojen summan laskentaan . tarvitaan 16 x 16 = 256 laskutoimitusta, ja kaikkien mahdollisten liikevektorei- ·" den 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 784 = 27 599 616 laskutoimitus-35 ta.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 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 pixels with a resolution of one pixel is 33 x 33, and the size of the luminance block is 16 x 16 pixels, so as to calculate one sum of the absolute differences. 16 x 16 = 256 calculations are needed, and so to compute the sum of all possible motion vectors · "33 x 33 x 256 = 278,784: ··. ' calculation per macroblock: For example, a qcif image has 99 macroblocks, which means 99x278,784 = 27,599,616 calculations -35.

3 1107453 110745

Laskutoimitusten määrää on pyritty vähentämään käyttämällä täys-haun sijasta vähemmän kattavia hakumenetelmiä, esimerkiksi Three Step Search, Spiral Search ja Hierarchical Motion Estimation, joissa ongelmaksi voi muodostua kuvan laadun huononeminen.Efforts have been made to reduce the number of calculations by using less comprehensive search methods, such as Three Step Search, Spiral Search, and Hierarchical Motion Estimation instead of full-search, which may cause problems with image quality.

5 Lyhyt selostus5 Brief Description

Keksinnön tavoitteena on tarjota parannettu menetelmä ja parannettu laite. Keksinnön eräänä puolena esitetään patenttivaatimuksen 1 mukainen menetelmä peräkkäisten kuvien koodaamiseksi. Keksinnön eräänä puolena esitetään patenttivaatimuksen 9 mukainen laite peräkkäisten kuvien koo-10 daamiseksi. Keksinnön eräänä puolena esitetään patenttivaatimuksen 17 mukainen laite peräkkäisten kuvien koodaamiseksi. Keksinnön muut edulliset suoritusmuodot ovat epäitsenäisten patenttivaatimusten kohteena.An object of the invention is to provide an improved method and an improved device. In one aspect of the invention, there is provided a method according to claim 1 for encoding sequential images. In one aspect of the invention there is provided an apparatus for encoding sequential images according to claim 9. In one aspect of the invention, there is provided an apparatus for encoding sequential images according to claim 17. Other preferred embodiments of the invention are claimed in the dependent claims.

Keksintö perustuu siihen, että liikkeenestimointi suoritetaan indeksoitua kuvaa ja indeksoitua referenssikuvaa käyttämällä.The invention is based on the fact that motion estimation is performed using an indexed image and an indexed reference image.

15 Keksinnön mukainen ratkaisu tarjoaa lähes saman kuvan laadun kuin klassinen täyshaku, mutta kevyemmällä laskennalla.The solution according to the invention provides almost the same image quality as classic full-search, but with lighter computation.

KuvioluetteloList of figures

Keksinnön edulliset suoritusmuodot selostetaan esimerkinomaisesti • » : alla viitaten oheisiin piirroksiin, joista: 20 kuvio 1 esittää laitetta peräkkäisten kuvien koodaamiseksi; :. ·; kuvio 2 esittää qcif-kokoisen kuvan jakautumista lohkoihin; :' ·. ’ kuvio 3 esittää osaa koodattavasta kuvasta; kuvio 4 esittää osaa referenssikuvasta; kuviot 5, 6 ja 7 havainnollistavat indeksoinnin suorittamista; 25 kuvio 8 on vuokaavio havainnollistaen menetelmää peräkkäisten kuvien koodaamiseksi.Preferred embodiments of the invention will be described by way of example with reference to the accompanying drawings, in which: Figure 1 shows a device for coding consecutive images; :. ·; Fig. 2 shows the distribution of a qcif image in blocks; : '·. Figure 3 shows a portion of an image to be encoded; Figure 4 shows a portion of a reference view; Figures 5, 6, and 7 illustrate an indexing operation; Fig. 8 is a flowchart illustrating a method for coding sequential images.

Suoritusmuotojen kuvausDescription of Embodiments

Alan ammattilaiselle videokoodaus on hyvin tunnettua standardien : ." ja oppikirjojen perusteella, esimerkiksi tähän viitteeksi otettavin teoksien perus- 30 teella, Vasudev Bhaskaran ja Konstantinos Konstantinides: ’’Image and Video . Compressing Standards - Algorithms and Architectures, Second Edition”, Klu- . ! wer Academic Publishers 1997, luku 6: ’’The MPEG video standards”, ja ”Digi- :,:. tal Video Processing”, Prentice Hall Signal Processing Series, luku 6: ’’BlockVideo encoding is well known to those skilled in the art, based on standards: "and textbooks, for example, by reference in this book, Vasudev Bhaskara and Konstantinos Konstantinides: '' Image and Video. ! Wer Academic Publishers 1997, Chapter 6: '' The MPEG Video Standards '' and 'Digital Video Processing', Prentice Hall Signal Processing Series, Chapter 6: '' Block

Based Methods”.Based Methods. "

110745110745

Koodattavat peräkkäiset kuvat ovat tyypillisesti liikkuvaa kuvaa, esimerkiksi videokuvaa. Videokuva muodostuu kamerassa yksittäisistä peräkkäisistä kuvista. Kameralla muodostetaan kuvaa pikseleinä esittävä matriisi, esimerkiksi alussa kuvatulla tavalla, jossa luminanssille ja krominanssille ovat 5 omat matriisinsa. Kuvaa pikseleinä esittävä datavuo viedään enkooderiin. Tietenkin on mahdollista rakentaa myös sellainen laite, jossa datavuo saadaan enkooderiin esimerkiksi tiedonsiirtoyhteyttä pitkin tai vaikkapa tietokoneen muistivälineeltä. Tällöin tarkoituksena on se, että kompressoimaton videokuva kompressoidaan enkooderilla esimerkiksi edelleenlähetystä tai tallennusta var-10 ten. Enkooderilla muodostettu kompressoitu videokuva siirretään kanavaa käyttäen dekooderille. Dekooderi tekee periaatteessa saman kuin enkooderi teki kuvaa muodostettaessa, mutta käänteisesti. Kanava voi olla esimerkiksi kiinteä tai langaton tiedonsiirtoyhteys. Kanava voidaan myös tulkita siirtotieksi, jota käyttäen videokuva tallennetaan jollekin muistivälineelle, esimerkiksi laser-15 levylle, ja jota käyttäen videokuva sitten luetaan muistivälineeltä ja käsitellään dekooderilla. Kanavassa siirrettävälle kompressoidulle videokuvalle voidaan suorittaa myös muuta koodausta, esimerkiksi kanavakoodausta kanavakoode-rilla. Kanavakoodaus puretaan kanavadekooderilla. Enkooderi ja dekooderi voidaan sijoittaa erilaisiin laitteisiin, esimerkiksi tietokoneisiin, erilaisten 20 radiojärjestelmien tilaajapäätelaitteisiin kuten matkaviestimiin, tai muihin '..; laitteisiin, joissa halutaan käsitellä videokuvaa. Enkooderi ja dekooderi voidaan myös yhdistää samaan laitteeseen, jota voidaan tällöin nimittää videokoode-'· '· kiksi. Viitaten kuvioon 1 selostetaan peräkkäisten kuvien koodaamislait- teen eli enkooderin rakenne. Kuviossa 1 kuvataan enkooderin toimintaa teo-25 reettisella tasolla. Käytännössä enkooderin rakenne on paljon monimutkaisempi, kun alan ammattilainen lisää siihen tunnetun tekniikan mukaiset tarvittavat asiat, esimerkiksi tarvittavan ajastuksen ja kuvan käsittelyn lohkoittain. Peräkkäisiä kuvia 130 tuodaan väliaikaisesti tallennettavaksi kehyspuskuriin 102. Kehyspuskurista 102 viedään yksittäinen kuva 132 lohkoon 104, jossa 30 valitaan haluttu koodausmuoto. Laitteen toimintaa ohjaa ohjausosa 100, joka mm. valitsee halutun koodausmuodon ja ilmoittaa valitun koodausmuodon . 156, 158 lohkolle 104 ja lohkolle 120. Koodausmuoto voi olla intrakoodaus tai interkoodaus. Intrakoodatulle kuvalle ei tehdä liikkeenkompensointia, kun taas •: · * interkoodatulle kuvalle tehdään liikkeenkompensointia. Yleensä ensimmäinen ,.V 35 kuva on intrakoodattu, ja sitä seuraavat kuvat ovat interkoodattuja. Ensimmäi- • »* · 5 110745 sen kuvan jälkeenkin voidaan lähettää intrakuvia, esimerkiksi jos koodattavalle kuvalle ei löydetä tarpeeksi hyviä liikevektoreita.The sequential images to be encoded are typically moving images, such as video. The video image consists of single sequential images in the camera. The camera generates a matrix representing the image in pixels, for example, as described at the beginning, with 5 luminance and chrominance matrices of their own. The data stream representing the image in pixels is exported to an encoder. Of course, it is also possible to construct a device in which the data stream is received by an encoder, for example, via a data transmission connection or, for example, from a computer storage medium. The purpose here is that the uncompressed video image is compressed with an encoder, for example for retransmission or recording. The compressed video image generated by the encoder is transmitted using a channel to the decoder. The decoder does basically the same thing as the encoder did when composing the image, but in reverse. The channel may be, for example, a fixed or wireless data connection. The channel may also be interpreted as a transmission path through which a video image is stored on a storage medium, such as a laser disk, and by which the video image is then read from the storage medium and processed by a decoder. The compressed video image transmitted in the channel may also be subjected to other coding, for example channel coding by the channel encoder. Channel coding is decoded by the channel decoder. The encoder and decoder may be located in various devices, such as computers, subscriber terminals of various radio systems, such as mobile stations, or other devices. devices that want to process video. The encoder and decoder can also be combined with the same device, which can then be called a video codec. Referring to Fig. 1, the structure of a sequential image encoder or encoder is described. Figure 1 illustrates the operation of an encoder at the theoretical level of theo-25. In practice, the structure of the encoder is much more complex when the skilled artisan adds the necessary things according to the prior art, for example, the necessary timing and block processing. Successive images 130 are temporarily brought to be stored in frame buffer 102. A single frame 132 is taken from frame buffer 102 to block 104 where the desired encoding format 30 is selected. The operation of the device is controlled by a control part 100 which e.g. selects the desired encoding format and announces the selected encoding format. 156, 158 for block 104 and block 120. The coding format may be intracoding or inter-coding. Motion compensation is not applied to an inter-coded image, while motion compensation is applied to an •: · * inter-coded image. Usually, the first image, .V 35, is inter-coded, and the subsequent pictures are inter-coded. Even after the first image, the image may be transmitted, for example, if good motion vectors are not found for the image to be encoded.

Seuraavaksi kuvataan laitteen toimintaa, kun lohkossa 104 on valittu intrakoodaus.Next, the operation of the device when intracoding is selected in block 104 is described.

5 Intrakuvalle lohko 104 saa syötteeksi vain kehyspuskurista 102 tu levan kuvan 132. Kehyspuskurista 102 saatu kuva 132 viedään sellaisenaan 134 diskreettikosinimuunnoslohkoon 106, jossa suoritetaan alussa kuvattu diskreettikosinimuunnos.For the intranet image, block 104 only receives an image 132 from the frame buffer 102. The image 132 obtained from the frame buffer 102 is applied as such to a discrete cosine transform block 106, where the discrete cosine transform described above is performed.

Diskreettikosinimuunnettu kuva 136 viedään kvantisointilohkoon 10 108, jossa suoritetaan kvantisointi, eli periaatteessa diskreettikosinimuunnetun kuvan jokainen alkio jaetaan jollakin vakiolla ja jakolaskun tulos pyöristetään kokonaisluvuksi. Tämä vakio saattaa vaihdella eri makrolohkojen välillä. Kvan-tisointiparametri, josta kyseiset jakajat lasketaan, on tavallisesti välillä 1-31. Mitä enemmän nollia saadaan lohkoon, sitä paremmin lohko pakkaantuu, sillä 15 nollia ei kanavaan lähetetä.The discrete cosine transformed image 136 is applied to a quantization block 10108 where quantization is performed, i.e., in principle, each element of the discrete cosine transformed image is divided by a constant and the result of the division is rounded to an integer. This constant may vary between different macroblocks. The quantization parameter from which these dividers are calculated is usually in the range of 1-31. The more zeros a block receives, the better the block is compressed, since 15 zeros are not transmitted to the channel.

Sitten kvantisoitu ja diskreettikosinimuunnettu kuva 138 viedään muuttuvamittaiseen kooderiin 110, jonka ulostulosta tulee laitteella tuotettu koodattu kuva 140.The quantized and discrete cosine transformed image 138 is then applied to a variable length encoder 110, the output of which becomes an encoded image 140 produced by the device.

Kvantisointilohkosta 108 viedään kvantisoitu ja diskreetti-20 kosinimuunnettu kuva 138 muuttuvamittaisen kooderin 110 lisäksi myös kään-teiskvantisointilohkoon 112, joka suorittaa sisääntuodulle kvantisoidulle ja dis-’;·· kreettikosinimuunnetulle kuvalle 138 käänteiskvantisoinnin eli palauttaa sen ’· ' mahdollisimman lähelle kuvaa 136. Sitten käänteiskvantisoitu kuva 142 vie- dään käänteisdiskreettikosinimuunnoslohkoon 114, jossa suoritetaan kään-25 teisdiskreettikosinimuunnos. Koska diskreettikosinimuunnos on häviötön muunnos mutta kvantisointi ei, niin kuva 144 ei täysin vastaa kuvaa 134. Käänteiskvantisoinnin ja käänteisdiskreettikosinimuunnoksen tarkoituksena on tuottaa enkooderissa samanlainen kuva kuin minkä koodauslaitetta vastaava dekooderi tuottaa. ’’Dekoodattu” kuva 144 viedään sitten lohkoon 124, jossa 30 kuvaan lisättäisiin siitä poistettu osuus, erodata, jos kuva olisi interkoodattu.Quantized and discrete-20 cosine transformed image 138 from quantization block 108 is also applied to a variable-length encoder 110 but also inverse quantization block 112 which performs inverse quantization of the imported quantized and dis - ;; · Cretaceous transformed image 138, i.e. returns it '·' 142 is introduced to an inverse discrete cosine transform block 114 where an inverse discrete cosine transform is performed. Since the discrete cosine transform is a lossless transform but the quantization does not, picture 144 does not fully correspond to picture 134. The purpose of inverse quantization and inverse discrete cosine conversion is to produce in the encoder a picture similar to that of the decoder corresponding to the encoder. The 'decoded' image 144 is then exported to block 124, where the portion removed from it is added to the image, eroded if the image were intercoded.

> I> I

Koska kysymyksessä on intrakoodattu kuva, siihen ei lisätä mitään. Tämän oh-; . jauksen tekee lohko 120, jossa on valittuna intrakoodaus, jolloin lohkon 120 sisääntulossa ei ole mitään, jolloin myöskään sen lohkoon 124 kytketty ulostu-:··' lo 154 ei sisällä mitään. Intrakuva 146 tallennetaan sitten kehyspuskuriin 116.Since this is an intracoded image, nothing is added to it. With this oh-; . the division is made by a block 120 with intracoding selected, whereby the input of the block 120 has nothing, and the output connected to its block 124 also contains nothing. Intranet image 146 is then stored in frame buffer 116.

. V 35 Näin kehyspuskuriin 116 tallennetaan rekonstruoitu kuva eli koodattu kuva sii nä muodossa, jossa se on dekooderissa suoritettavan dekoodauksen jälkeen.. V 35 Thus, the reconstructed image, i.e., the encoded image, is stored in the frame buffer 116 in the form in which it is in the decoder after decoding.

6 1107456 110745

Kehyspuskureita on siis kaksi, ensimmäiseen 102 tallennetaan laitteeseen tuleva kuva, ja toiseen 116 rekonstruoitu ’’edellinen” kuva. Näin käsiteltiin siis kuvaa, jolle lohkoissa 104 ja 120 oli valittu intrakoodaus.Thus, there are two frame buffers, the first 102 storing an image arriving at the device, and the second 116 reconstructing a "previous" image. Thus, the image for which intracoding was selected in blocks 104 and 120 was thus processed.

Seuraavaa kuvaa käsiteltäessä voidaan alkaa käyttämään liikkeen 5 kompensointia.When working on the following figure, motion compensation 5 can be started.

Tällöin lohkoissa 104 ja 120 on valittu interkoodaus. Kehyspuskuriin 116 tallennettu kuva on nyt siis referenssikuva, ja koodattava kuva on kehys-puskurista 102 saatava seuraava kuva 132. Kuten kuviosta 1 havaitaan, seu-raava kuva viedään lohkon 104 lisäksi myös liikkeenestimointilohkoon 118. 10 Liikkeenestimointilohkoon 118 saadaan myös kehyspuskurista 116 referenssi-kuva 150. Liikkeenestimointilohkon 118 toimintaa kuvataan myöhemmin tarkemmin, mutta kuitenkin siinä suoritetaan haku, jossa pyritään löytämään referenssikuvasta lohkoja, jotka vastaavat koodattavassa kuvassa olevia lohkoja. Lohkojen väliset siirtymät ilmaistaan liikevektoreina 152, 166, jotka viedään 15 sekä muuttuvamittaiseen kooderiin 110 että kehyspuskuriin 116.Intercoding is then selected in blocks 104 and 120. Thus, the image stored in frame buffer 116 is now a reference image, and the image to be encoded is the following image 132 from frame buffer 102. As seen in Figure 1, the following image is applied not only to block 104 but also to motion estimation block 118. 10 Motion estimation block 118 also provides reference frame 150 The operation of the motion estimation block 118 will be described in more detail later, but a search is made to find blocks in the reference image that correspond to the blocks in the image to be encoded. Inter-block offsets are expressed as motion vectors 152, 166, which are applied 15 to both variable length encoder 110 and frame buffer 116.

Lohkolle 122 viedään referenssikuva 148 kehyspuskurista 116. Lohko 122 vähentää koodattavasta kuvasta 132 referenssikuvan 148, jolloin saadaan erodata 164, joka viedään lohkosta 104 diskreettikosinimuunnosloh-kon 106 ja kvantisointilohkon 108 kautta muuttuvamittaiseen kooderiin 110.A reference image 148 of frame buffer 116 is provided to block 122. Block 122 subtracts reference image 148 from encoded image 132 to extract 164 which is output from block 104 through discrete cosine conversion block 106 and quantization block 108 to variable length encoder 110.

... 20 Muuttuvamittainen kooderi 110 koodaa siis erodatan 138 ja liikevek- torit 166, jolloin muuttuvamittaisen kooderin 110 ulostulosta 140 saadaan in-’;· terkoodattu kuva. Muuttuvamittainen kooderi 110 saa siis syötteiksi diskreetti- '· *· kosinimuunnetun ja kvantisoidun erodatan 138 sekä liikevektorit 166. Enkoo- derin ulostulosta 140 siis saadaan interkoodatulle kuvalle koodattua kuvaa 25 esittävää kompressoitua dataa, joka kuvaa koodatun kuvan suhteessa refe-’ renssikuvaan käyttäen esitykseen liikevektoreita ja erodataa. Liikkeenestimoin- ti tehdään luminanssilohkoja käyttäen, mutta koodattava erodata lasketaan sekä luminanssi- että krominanssilohkoille.The variable length encoder 110 thus encodes the eroded data 138 and the motion vectors 166, whereby the output 140 of the variable length encoder 110 produces an in - '; Thus, variable length encoder 110 receives inputs discrete cosine transformed and quantized eroded data 138 and motion vectors 166. Thus, encoder output 140 provides compressed data representing an encoded image 25, depicting the encoded image relative to the reference image and representing the motion image. difference data. Motion estimation is performed using luminance blocks, but the encoded difference data is calculated for both luminance and chrominance blocks.

Kyseisen interkoodatun kuvan erodatalle 138 suoritetaan myös 30 käänteiskvantisointi käänteiskvantisointiiohkossa 112 ja käänteisdiskreetti-kosinimuunnos käänteisdiskreettikosinimuunnoslohkossa 114. Näin käsitelty ; . erodata 144 viedään lohkoon 124, jossa siihen lisätään kyseistä interkuvaa koodattaessa vähennetty edellinen kuva 154, joka otettiin liikevektorin osoit-·· tamasta paikasta. Sitten lohkosta 124 viedään erodatan ja edellisen kuvan Λ' 35 summa 146 kehyspuskuriin 116, jolloin saadaan rekonstruoitu kuva. Rekonst-' 1 ruoitu kuva vastaa sitä kuvaa, joka saadaan dekooderissa, kun interkoodatun 7 110745 kuvan 140 koodaus puretaan. Näin kehyspuskurissa 116 on jälleen valmiina referenssikuva seuraavan kehyspuskurista 102 saatavan kuvan 132 koodausta varten.The eroded data 138 of said intercoded image is also subjected to inverse quantization 30 in inverse quantization lattice 112 and inverse discrete cosine transform in inverse discrete cosine transform block 114. . the erod data 144 is applied to block 124, where it is incremented with the previous image 154 subtracted from the position indicated by the motion vector when encoding said inter picture. Then, from block 124, the sum 146 of erode data and previous image Λ '35 is applied to frame buffer 116 to obtain a reconstructed image. The reconstructed image corresponds to the image obtained in the decoder when decoding the inter-encoded image 1101045. Thus, the frame buffer 116 again has a reference image ready for encoding the next image 132 from the frame buffer 102.

Ohjauslohko 100 ohjaa enkooderin toimintaa. Koodausmuodon va-5 linnan lisäksi se ohjaa mm. oikean kvantisointisuhteen valintaa 160 ja muuttu-vamittaisen koodauksen suorittamista 162. Samoin ohjauslohko 100 voi ohjata myös muita enkooderin lohkoja, vaikka sitä ei ole kuviossa 1 kuvattu. Esimerkiksi liikkeenestimointilohkon 118 toimintaa ohjaa ohjauslohko 100.The control block 100 controls the operation of the encoder. In addition to the castle of encoding mode va-5, it controls e.g. selecting the correct quantization ratio 160 and performing variable-free coding 162. Similarly, the control block 100 may control other blocks of the encoder, although not illustrated in Figure 1. For example, the operation of the motion estimation block 118 is controlled by the control block 100.

Seuraavaksi kuvion 8 vuokaavioon viitaten selostetaan menetelmä 10 peräkkäisten kuvien koodaukseen. Koodaus esitetään nimenomaan ajallisen redundanssin vähentämisen kannalta, eikä muita redundanssin vähentämismenetelmiä kuvata tässä yhteydessä. Menetelmän suorittaminen aloitetaan lohkossa 800, jossa enkooderi käynnistetään. Lohkossa 802 haetaan seuraa-va kuva kehysmuistista. Kuva voi olla esimerkiksi kuviossa 2 kuvattu qcif-15 kokoinen kuva, jossa on 176 x 144 luminanssipikseliä. Kuva on jaettu makro-lohkoihin 200, joiden luminanssiosien koko on 16 x 16 pikseliä ja joita on yksitoista saraketta ja yhdeksän riviä. Luminanssipikseleitä voidaan kuvata matriisilla /o,0 f0,1 f0,2 ··· /0,175 .. . f 1,0 f\,l f 1,2 — /1,175 fij = f2,0 Λ,Ι f2,2 ·· /2,175 > (2) • · t .·· ·»· ··· ·.« ··.Referring now to the flowchart of Fig. 8, a method 10 for encoding sequential images will be described. The coding is provided specifically for temporal redundancy reduction, and other methods for reducing redundancy are not described herein. Execution of the method is started in block 800 where the encoder is started. In block 802, the following image is retrieved from the frame memory. For example, the image may be a qcif-15 image depicted in Figure 2 with 176 x 144 luminance pixels. The image is divided into macroblocks 200 of 16 x 16 pixel luminance sections with eleven columns and nine rows. Luminance pixels can be represented by the matrix / o, 0 f0.1 f0.2 ··· / 0.175 ... f 1,0 f \, lf 1,2 - / 1,175 fij = f2,0 Λ, Ι f2,2 ·· / 2,175> (2) • · t. ·· · »· ··· ·.« ·· .

’· _/l43,0 /l43,l /l43,2 ·" /43,175 _ '· ‘ 20 jossa i=0,1,2.....143 ja j=0,1,2.....175.'· _ / L43,0 / l43, l / l43,2 · "/ 43,175 _' ·" 20 where i = 0,1,2 ..... 143 and j = 0,1,2 .... .175.

Lohkossa 804 prosessoidaan kuva indeksoiduksi kuvaksi siten, että :, kuva jaetaan indekseillä viitattaviin osiin ja kussakin osassa olevien pikselei- den arvoista muodostetaan pikseleiden arvoja kyseisessä osassa kuvaava luku.In block 804, the image is processed into an indexed image such that:, the image is subdivided into index-referenced portions, and the pixel values in each portion are converted into a number representing the pixel values in that portion.

25 Eräässä suoritusmuodossa osan sisältämät pikselit muodostavat neliön, sillä tämä on hakijan suorittamien kokeiden mukaan edullista. Kuvako-In one embodiment, the pixels contained in the part form a square, as this is advantageous according to the tests performed by the applicant. Kuvako-

» I»I

(L. ko ja lohkokoko asettavat tietyt rajoituksensa menetelmässä käytettävän in- . deksoidun osan koolle. Qcif-kokoiselle kuvalle hakijan kokeiden mukaan on edullista, että osa sisältää 4x4 pikseliä. Tällöin matriisi 2 voidaan kuvata seu-’: *' 30 raavasti: t · * » » »(L. size and block size place some restrictions on the size of the indexed part used in the method. For the Qcif image, according to the applicant's experiments, it is preferable that the part contains 4x4 pixels. In this case, matrix 2 can be described as follows: * »» »

I II I

t I I » 8 F F F F i 110745 *0,0 *Yl ^0,2 " M),172 ^.,0 Ft, Fl2 ... ^1,172t I I »8 F F F F i 110745 * 0.0 * Yl ^ 0.2" M), 172 ^., 0 Ft, Fl2 ... ^ 1,172

Fjj = F20 F2i F22 ... F2m , (3) •^140,0 -^140,1 ^140,2 — ^140,172 _ jossa 1=0,1,2,...,140 ja J=0,1,2.....172.Fjj = F20 F2i F22 ... F2m, (3) • ^ 140.0 - ^ 140.1 ^ 140.2 - ^ 140.172 where 1 = 0.1.2, ..., 140 and J = 0, 1.2 ..... 172.

Indeksoinnin lisäksi siis kussakin osassa olevien pikseleiden arvoista muodostetaan pikseleiden arvoja kyseisessä osassa kuvaava luku. Yksin-5 kertaisimmin tämä luku saadaan laskemalla yhteen kyseisessä osassa olevien pikseleiden lukuarvot. Matriisi 3:n kunkin osan luku saadaan matriisista 2 seu-raavalla kaavalla: /+3 J+3 ί·,,=ΣΣΛ w /=/ j=jThus, in addition to indexing, the values of the pixels in each section are formed into a number representing the pixel values in that section. By -5 most often this number is obtained by summing the number values of the pixels in that section. The number of each part of matrix 3 is obtained from matrix 2 by the following formula: / + 3 J + 3 3 · ,, = ΣΣΛ w / = / j = j

Eli esimerkiksi indeksillä Fo.o viitattavan osan luku saadaan lasku-10 toimituksella =ΣΣ/*· (5) /=0 ./=0 indeksillä F0,i viitattavan osan luku saadaan laskutoimituksella ^,'ΣΣΛ- (®)That is, for example, the number of the part referenced by the index Fo.o is given by the calculation 10 = ΣΣ / * · (5) / = 0 ./=0 The number referenced by the index F0, i is obtained by the calculation ^, 'ΣΣΛ- (®)

/-o J.I/ -o J.I

« · •.,; indeksillä Fi,0 viitattavan osan luku saadaan laskutoimituksella V' is iu-tt/*· <n ·, * /=1 7=0 . ‘ · ja indeksillä Fi,i viitattavan osan luku saadaan laskutoimituksella (8) ; ' * /=1 7=1«· •.,; the number referred to by index Fi, 0 is obtained by the calculation V 'is iu-tt / * · <n ·, * / = 17 7 = 0. 'And the number of the part referred to by the index Fi, i is obtained by calculation (8); '* / = 1 7 = 1

Kuten vertaamalla matriiseja 2 ja 3 havaitaan, lähellä toisiaan sijaitsevat indekseillä viitattavat osat menevät osittain toistensa päälle. Tällä tarkoi-20 tetaan sitä, että esimerkiksi indekseillä F0,o ja Fii0 viitattavat alueet sisältävät kaksitoista samaa matriisin 2 pikseliä, eli pikselit fi,o, fi,i, fi,2, fi,3. h,o, f2.i, f2.2, ;, ’ f2,3, f3,o. f3,i, f3,2, ja f3,3- Tällöin eräässä suoritusmuodossa laskettaessa kahden vierekkäisen indekseillä viitattavan osan lukuja, ensimmäisen osan luvun laskennassa hyödynnetään toiselle osalle jo laskettua lukua. Tämä liukuvan las-25 kennan periaate voidaan esittää seuraavasti. Kuten edellä jo todettiin, niin kaavalla 5 voidaan laskea indeksillä Fo,o viitattavan osan luku. Tällöin muut lukuarvot saadaan liukuvasti siten, että (9) 9 110745 7=0 7=0As can be seen by comparing the matrices 2 and 3, the parts referred to by the indices which are close to each other overlap partly. By this is meant that, for example, the regions referenced by the indices F0, o and Fii0 contain twelve identical pixels of the matrix, i.e., pixels fi, o, fi, i, fi, 2, fi, 3. h, o, f2.i, f2.2,;, 'f2,3, f3, o. f3, i, f3,2, and f3,3-Then, in one embodiment, when calculating the numbers of two adjacent index-referenced parts, the number already calculated for the second part is utilized in calculating the number of the first part. This principle of the sliding las-25 cell can be represented as follows. As noted above, formula 5 can be used to calculate the number of the part to be referred to by the index F 0, o. In this case, the other numerical values are slidably obtained such that (9) 9 110745 7 = 0 7 = 0

Fi,°=K‘>-t.fu+i,f5j do» 7=0 7=0Fi, ° = K '> - t.fu + i, f5j do »7 = 0 7 = 0

Samaa periaatetta voidaan soveltaa kaikkien lukuarvojen laskentaan, myös siirryttäessä matriisin 2 vasemmasta laidasta oikeaan laitaan.The same principle can be applied to the calculation of all numerical values, even when moving from the left to the right side of matrix 2.

5 Kun kuva on prosessoitu lohkossa 804 yllä esitettyjä periaatteita käyttäen indeksoiduksi kuvaksi, voidaan siirtyä lohkoon 806, jossa valitaan käytettävä koodausmuoto, intrakoodaus tai interkoodaus.After the image has been processed in block 804 into an image indexed using the principles set forth above, it is possible to proceed to block 806 where the encoding format, intracoding or intercoding to be used is selected.

Jos valittu koodausmuoto on intrakoodaus, siirrytään lohkosta 806 nuolen 808 mukaisesti lohkoon 810, jossa koodataan kuva, eli suoritetaan sille 10 diskreettikosinimuunnos ja kvantisointi, mutta ei liikkeenestimointia. Sitten siirrytään lohkoon 826, jossa tallennetaan intrakoodattu kuva referenssikuvaksi. Tämän jälkeen lohkossa 828 tallennetaan indeksoitu kuva indeksoiduksi referenssikuvaksi, joka sisältää indekseillä viitattavat osat, ja kussakin osassa olevien pikseleiden arvoista on muodostettu pikseleiden arvoja kyseisessä osas-15 sa kuvaava luku. On huomattava, että tässä hyödynnetään sitä, että kuvalle on lohkossa 804 suoritettu prosessointi indeksoiduksi kuvaksi. Samoin on huomattava, että lohkojen 826 ja 828 toimenpiteet voivat olla optionaalisia, sil-lä referenssikuvan ei välttämättä tarvitse olla koodattavaa kuvaa välittömästi *..! edeltävä kuva, vaan se voi olla jokin aikaisempikin kuva.If the selected coding mode is an intracoding mode, proceed to block 806 in accordance with the direction of the arrow 808 to block 810 where the picture is encoded, that is carried out for 10 diskreettikosinimuunnos and quantization, but no motion estimation. Then proceed to block 826, where the intracoded image is stored as a reference image. Subsequently, in block 828, the indexed image is stored as an indexed reference image containing the parts referenced by the indexes, and a number representing pixel values in that part-15 is formed from the pixel values in each section. Note that this utilizes the fact that the image is processed in block 804 into an indexed image. Similarly, it should be noted that the actions of the blocks 826 and 828 may be optional, but the reference image need not be an encoding image immediately * ..! previous image, but may be an earlier image.

;*. 20 Lohkosta 828 siirrytään lohkoon 830, jossa tarkistetaan, onko koo- dattavia kuvia vielä jäljellä. Jos kuvia ei ole enää jäljellä, siirrytään nuolen 832 • " mukaisesti lohkoon 834, jossa lopetetaan menetelmän suoritus. Jos kuvia taas ”"· on jäljellä, niin sitten siirrytään nuolen 836 mukaisesti lohkoon 802, jossa hae- :: taan seuraava kuva kehysmuistista.; *. 20 from block 828 goes to block 830 to check if there are still pictures to be encoded. If the images are no longer left, move the arrow 832 • "In accordance with block 834, which terminated the performance of the method. If the images while" "· is left, then move to the arrow 836 in accordance with block 802, where the retrieved :: in the next image frame memory.

25 Jos lohkossa 806 valittu koodausmuoto on interkoodaus, niin sitten siirrytään lohkosta 806 nuolen 812 mukaisesti lohkoon 814, jossa määritellään indeksoituun referenssikuvaan hakualue, josta haetaan indeksoidussa kuvas-.·. : sa olevaa koodattavaa lohkoa. Interkoodausta ei siis voida suorittaa ensim- .···' mäiselle kuvalle, koska se edellyttää, että ainakin yksi referenssikuva täytyy 30 olla olemassa. Esimerkissämme täytyy siis olla jo yksi intrakoodattu kuva, eli lohkojen 810, 826 ja 828 toimenpiteet täytyy olla suoritettuna kyseiselle referenssikuvalle. Jatkossa referenssikuva voi tietenkin olla jokin aikaisemmin in-, terkoodattu kuva.25 If in block 806 the selected coding mode is interkoodaus, then move to block 806 according to arrow 812 to block 814, which defines an indexed search area in the reference image to be scanned in an indexed reflect. ·. block to be encoded. Intercoding cannot therefore be performed on a first image, since it requires that at least one reference image exist. Thus, in our example, there must already be one intracoded image, i.e., the operations of blocks 810, 826, and 828 must be performed on the reference image in question. In the future, of course, the reference image may be some previously in- tercoded image.

10 1 1074510 1 10745

Kuvioissa 3 ja 4 havainnollistetaan haun suorittamista. Kuvio 3 esittää osaa koodattavasta kuvasta 300 ja kuvio 4 esittää osaa referenssikuvasta 400. Osat 300, 400 kuvaavat samaa kohtaa kuviossa 2 kuvatusta qcif-kokoisesta kuvasta. Koodattava kuva 300 siis koostuu 16 x 16 pikselin kokoi-5 sista luminanssilohkoista. Krominanssilohkot ovat yleensä 8x8 pikselin suuruisia, mutta niitä ei kuvioissa 3 ja 4 kuvata, koska krominanssilohkoja ei käytetä liikkeenestimoinnissa hyväksi. On huomattava, että kuvioissa 3 ja 4 kuvataan kuvien todellista sisältöä, ilman indeksointia, selvyyden vuoksi.Figures 3 and 4 illustrate the execution of a search. Figure 3 shows a portion of an image to be encoded 300 and Figure 4 shows a portion of a reference image 400. Parts 300, 400 illustrate the same portion of the qcif image shown in Figure 2. The image 300 to be encoded thus consists of 5 x 16 luminance blocks. The chrominance blocks are generally 8x8 pixels in size, but are not illustrated in Figures 3 and 4 because the chrominance blocks are not utilized in motion estimation. It should be noted that Figures 3 and 4 illustrate the actual contents of the images, without indexing, for clarity.

Oletetaan esimerkissämme, että kuvassa ei ole muuta kuin täsmäl-10 teen yhteen lohkoon 302 sopiva kuva, joka muodostuu poikittaisviivoituksesta ja H-kirjaimesta. Referenssikuvaan 400, menetelmässämme indeksoituun referenssikuvaan, määritellään siis hakualue 402, josta haetaan koodattavassa kuvassa, menetelmässämme indeksoidussa koodatussa kuvassa, olevaa kuvaelementtiä, joka on lohkossa 302. Liikevektoreiden haku rajataan tavallisesti 15 [-16, 16] kokoiselle hakualueelle 402, jolloin hakualue 402 siis muodostuu yh deksästä 16 x 16 pikselin kokoisesta lohkosta. Hakualueen 402 yhdeksän lohkoa sijoittuvat kuviossa 4 kuvatulla tavalla koodattavassa kuvassa 300 olevan koodattavan lohkon 302 sijaintipaikan referenssikuvassa 400 ympärille. Hakualue 402 on siis kooltaan 48 x 48 pikseliä. Tällöin mahdollisten liikevektorei- : ·. ·. 20 den, eli liikevektorikandidaattien, lukumäärä on 33 x 33.In our example, suppose that the image has nothing but a suitable image for one block 302 of the exact 10, consisting of a transverse stroke and an "H". The reference image 400, our method indexed reference image, thus defines an image element in block 302 of the search area 402 to be searched in the coded image, our method indexed coded image. The search for motion vectors is usually limited to a search area 402 of 15 [-16,16]. one of nine blocks of 16 x 16 pixels. Nine blocks of the search area 402 are located around the location reference code 400 of the coding block 302 in the coding image 300 as shown in FIG. 4. The search area 402 is thus 48 x 48 pixels. In this case, the possible motion vectors: ·. ·. The number of 20 den, or motion vector candidates, is 33 x 33.

'·.! Sitten siirrytään lohkoon 816, jossa lasketaan kunkin liikevektori- kandidaatin kustannusfunktio indeksoitua kuvaa ja indeksoitua referenssiku-vaa käyttämällä. Kuvioissa 5, 6 ja 7 havainnollistetaan indeksoinnin suorittamista siten, että niissä kuvataan pikseleittäin 502 osaa kuviossa 4 kuvatusta 25 hakualueesta 402. Kuviossa 5 esitetään, mitä indekseillä viitattavia alueita 500 tarvitaan liikevektorikandidaatin [0,0] laskemisessa, eli siihen käytetään matriisista 3 seuraavia elementtejä: ^0,0 -^0,4 -^0,8 ^0,12 F= ^4.° F4>4 F F F F ^ ... 1 8,0 1 8,4 1 8,8 1 8,12 .··' J*12,0 ^12,4 ^12,8 ^12,12 _ ; Kuvion 6 mukaisesti liikevektorikandidaatin [1,0] laskemiseen tarvi- 30 taan matriisista 3 seuraavat elementit: 11 110745'·.! Then, we proceed to block 816, where the cost function of each motion vector candidate is calculated using an indexed image and an indexed reference image. Figures 5, 6 and 7 illustrate an indexing operation that illustrates, by pixel, 502 portions of the 25 search areas 402 depicted in Figure 4. Figure 5 illustrates which index-referenced areas 500 are required to compute a motion vector candidate [0.0]; ^ 0.0 - ^ 0.4 - ^ 0.8 ^ 0.12 F = ^ 4. ° F4> 4 FFFF ^ ... 1 8.0 1 8.4 1 8.8 1 8.12. · · 'J * 12.0 ^ 12.4 ^ 12.8 ^ 12.12 _; As shown in Figure 6, the following elements are required for calculating the motion vector candidate [1.0] from matrix 3: 11 110745

Fo, ^0,5 ^0,9 ^0,13 F_ ^-5 ^49 ^413 /-J2\ /¾.. ^8,5 ^8,9 ^8,,3 ' •^12,1 ^12,5 -^12,9 ^12,13 _Fo, ^ 0.5 ^ 0.9 ^ 0.13 F_ ^ -5 ^ 49 ^ 413 / -J2 \ / ¾ .. ^ 8.5 ^ 8.9 ^ 8,, 3 '• ^ 12.1 ^ 12.5 - ^ 12.9 ^ 12.13 _

Samalla periaatteella kaikkien mahdollisten liikevektorikandidaattien laskemiseen tarvittavat luvut saadaan matriisista 3, esimerkiksi liikevektori-kandidaatille [4,0] tarvitaan kuvion 7 mukaisesti matriisista 3 seuraavat ele-5 mentit: ^0,4 ^0,8 -^0,12 ^0,16By the same principle, the numbers needed to calculate all possible motion vector candidates are obtained from matrix 3, for example, the following elements-5 of matrix 3 are required for the motion vector candidate [4,0] as shown in Figure 7: ^ 0.4 ^ 0.8 - ^ 0.12 ^ 0.16

„ ^4,4 ^4,8 ^4,12 ^4,16 M^ 4,4 ^ 4,8 ^ 4,12 ^ 4,16 M

b = p F F F (12) rS,4 rS,S ^8,12 “ 8,16 _^12,4 ^12,8 ^12,12 ^12,16_b = p F F F (12) rS, 4 rS, S ^ 8.12 "8.16 _ ^ 12.4 ^ 12.8 ^ 12.12 ^ 12.16_

Liikkeen estimointi hakualueella voidaan esittää kaavalla: 3 3 MV(x,y) = | min^ ΣΣΙ ^i*4,/*4 ^i*4+xtj*4+y | (13) ’y /=0 7=0 jossa MV on lopullinen liikevektori, Fxy on koodattavan kuvan indek-10 sille laskettu luku ja Rxy on referenssikuvan indeksille laskettu luku. Verrattaessa menetelmässämme käytettyä kaavaa 13 tunnetun tekniikan mukaiseen kaavaan 1 voidaan todeta, että menetelmässämme liikkeenestimointi vaatii 33 x 33 x 4 x 4 = 17424 laskutoimitusta, eli 16 kertaa vähemmän kuin perintei-.··· sessä täyshakumenetelmässä. Indeksien laskemista ei ole tässä huomioitu, . 15 mutta ne tarvitsee laskea vain kerran koko kuvalle. Esimerkissämme kustan- • t nusfunktiona käytetään SAD-funktiota (Sum of Absolute Differences), mutta alan ammattilaiselle on selvää, että myös muita kustannusfunktioita voidaan käyttää, jos niiden laskennassa voidaan hyväksikäyttää kuvan indeksointime-netelmää.The motion estimation in the search area can be represented by the formula: 3 3 MV (x, y) = | min ^ ΣΣΙ ^ i * 4, / * 4 ^ i * 4 + xtj * 4 + y | (13) 'y / = 0 7 = 0 where MV is the final motion vector, Fxy is the number calculated for the index of the image to be encoded, and Rxy is the number calculated for the index of the reference image. Comparing Formula 13 used in our method with Formula 1 of the prior art, our method requires 33 x 33 x 4 x 4 = 17424 calculations, which is 16 times less than the traditional full-search method. Calculation of indices is not taken into account here,. 15 but need only be counted once for the whole image. In our example, the cost function uses the Sum of Absolute Differences (SAD) function, but it is obvious to one skilled in the art that other cost functions can be used if they can be calculated using the image indexing method.

20 Kuvioiden 3 ja 4 esimerkissämme (indeksoidusta) referenssikuvasta 400 löydettiin (indeksoidussa) koodattavassa kuvassa 300 olevaa koodattavaa lohkoa 302 vastaava lohko 404. Koodattavan lohkon 302 liikkeen referenssi-kuvasta 400 löydettyyn lohkoon 404 nähden ilmaisee liikevektori 406. Liikevek-;“· tori voidaan kuvata esimerkiksi koodattavan lohkon 302 vasemmanpuoleisim- • ; 25 man yläkulman pikselin liikevektorina. Lohkon 302 muut pikselit liikkuvat tietys ti myös kyseisen liikevektorin suuntaan.In our example of Figures 3 and 4, a block 404 corresponding to the coding block 302 in the (indexed) coding image 300 was found in the (indexed) reference picture 400. With respect to the block 404 found in the reference picture 400 of the coding block 302, motion vector 406. for example, the leftmost part of block 302 to be encoded; 25 man in the upper corner of the pixel motion vector. Of course, the other pixels in block 302 also move in the direction of the motion vector in question.

Kuvan origo (0, 0) on yleensä kuvan vasemmanpuoleisessa yläkul-;;· massa oleva pikseli. Videokoodausterminologiassa liikkeet ilmaistaan siten, että liike oikealle on positiivinen, vasemmalle negatiivinen, ylös negatiivinen ja 12 110745 alas positiivinen. Liikevektori 406 on (12, -4), eli liike on kaksitoista pikseliä X-akselin suunnassa oikealle ja neljä pikseliä Y-akselin suunnassa ylöspäin.The origin of the image (0, 0) is usually a pixel in the upper left corner of the image. In video coding terminology, movements are expressed as right motion positive, left negative, up negative and 12 110745 down positive. The motion vector 406 is (12, -4), i.e. the motion is twelve pixels in the X axis to the right and four pixels in the Y axis up.

Lohkosta 816 siirrytään sitten lohkoon 818, jossa koodataan kuvan koodattava lohko pienimmän kustannusfunktion arvon antavaa liikevektorikan-5 didaattia käyttämällä, joka liikevektorikandidaatti siis määrittää liikkeen kuvan koodattavan lohkon ja referenssikuvan hakualueella olevan kandidaattilohkon välillä.Block 816 is then moved to block 818, which encodes the image to be encoded using a motion vector-5 didate which gives the value of the least cost function, which motion vector determines the movement between the image coding block and the candidate block in the reference image search area.

Sitten siirrytään lohkoon 820, jossa testataan, onko koodattavassa kuvassa koodattavia lohkoja vielä jäljellä. Jos koodattavia lohkoja on vielä jäl-10 jellä, siirrytään nuolen 822 mukaisesti lohkoon 814, jossa aletaan hakea seu-raavaa koodattavaa lohkoa referenssikuvassa vastaavaa lohkoa. Nuolen 822 mukaista silmukkaa siis toistetaan kunnes koodattavan kuvan lohkot on käsitelty halutulla tavalla, joko kaikki tai osa niistä.Then proceed to block 820 to test whether there are still blocks to be encoded in the picture to be encoded. If the coded blocks is still a hereinafter-10 remaining, go to the arrow 822 in accordance with block 814, where the search starts seu raavaa-encoded block in the reference image corresponding to the block. The arrow 822 of the loop, therefore, is repeated until the encoded image blocks have been processed as desired, either all or part of them.

Jos koodattavia lohkoja ei ole enää jäljellä, niin sitten siirrytään loh-15 kosta 820 nuolen 824 mukaisesti ensin lohkoon 826 ja sitten lohkoon 828, joissa haluttaessa tallennetaan juuri koodattu kuva referenssikuvaksi ja indeksoitu koodattu kuva indeksoiduksi referenssikuvaksi. Sitten lohkossa 830 tarkistetaan, onko koodattavia kuvia vielä jäljellä. Jos koodattavia kuvia ei ole enää jäljellä, niin sitten siirrytään nuolen 834 mukaisesti lohkoon 834, jossa ;·· 20 lopetetaan menetelmän suoritus, muutoin siirrytään nuolen 836 mukaisesti , · · · lohkoon 802, jossa haetaan seuraava koodattava kuva.If the coded blocks are no longer left, then move to a si-15 820 avenge the direction of arrow 824 in accordance with the first block 826 and then to block 828, where, if desired, stored in a just coded picture as a reference picture and an indexed indexed coded picture as a reference picture. Then, block 830 checks whether there are still pictures to be encoded. If the coded images are no longer left, then move to the arrow 834 in accordance with block 834, where; ·· 20 terminated the performance of the method, otherwise proceed in accordance with the direction of the arrow 836, · · · block 802, which looks for the next picture to be encoded.

Kuviossa 8 kuvatussa menetelmässä koodattavan kuvan proses-! sointia indeksoiduksi kuvaksi hyödynnetään siten, että saman prosessoinnin '· * tulos voidaan myös tallentaa indeksoiduksi referenssikuvaksi. Tämä vähentää 25 tarvittavaa laskentaa, mutta jos muistikäyttöä halutaan optimoida, voidaan in-. deksoitu referenssikuva laskea vasta ennen sen käyttöä tallennetusta refe renssikuvasta.In the method illustrated in FIG. the ringing to an indexed image is utilized such that the result of the same processing '· * can also be stored as an indexed reference image. This reduces the 25 computations required, but if you want to optimize memory usage, you can in-. the dexterated reference image is calculated only from the reference image recorded before it is used.

Eräässä suoritusmuodossa kun pienimmän kustannusfunktion arvon antava liikevektorikandidaatti on löydetty yhden pikselin tarkkuudella, etsi-30 tään kyseisen liikevektorikandidaatin ympäriltä puolen pikselin tarkkuudella pa- * .-*· ras liikevektorikandidaatti. Tätä kuvataan kuviossa 8 lohkolla 840. Puolen pik- : · selin liikkeen estimoinnissa löydetyn 16 x 16 lohkon paikka tarkistetaan vielä puolen pikselin tarkkuudella. Normaalisti tähän tarvitaan 18 x 18 kokoinen matriisi pikseleiden interpolointia varten, mutta esittämämme indekseihin poh-35 jautuva menettely mahdollistaa sen, että interpoloitava alue on 6 x 6 kokoinen indeksejä käyttävä matriisi. Puolen pikselin liikevektori saadaan soveltamalla 13 110745 kaavaa 13, jolloin menettely on myös 16 kertaa vähemmän laskentaa tarvitseva kuin perinteinen puolen pikselin tarkkuuden liikkeenestimointi.In one embodiment, when the minimum value of the cost function is found Illustrative motion vector of one pixel accuracy, searching-30 to around the half pixel motion vector accuracy improved * * · rac .- motion vector. This is illustrated in Figure 8 by block 840. The half-pixel: · element found in the motion estimation, the 16 x 16 block is checked for another half-pixel resolution. Normally, this requires an 18x18 matrix for interpolating pixels, but the index-based procedure we have proposed allows the area to be interpolated to be a 6x6 index-based matrix. A half-pixel motion vector obtained by applying the formula 13 110745 13, wherein the procedure is also 16 times that requires less calculation than the conventional half-pixel resolution motion estimation.

Eräässä suoritusmuodossa puolen pikselin tarkkuudella paras liike-vektorikandidaatti etsitään seuraavasti: 5 interpoloidaan löydettyä yhden pikselin liikevektorikandidaattia refe renssikuvassa vastaavalle indeksoidulle kandidaattilohkolle ja sen ympärille puolen pikselin arvot; lasketaan kunkin puolen pikselin liikevektorikandidaatin kustannus-funktio indeksoitua kuvaa ja interpoloitua indeksoitua kandidaattilohkoa käyt-10 tämällä; koodataan kuvan koodattava lohko pienimmän kustannusfunktion arvon antavaa puolen pikselin liikevektorikandidaattia käyttämällä.In one embodiment, the best half-pixel resolution motion-vektorikandidaatti look as follows: 5 discovered interpolated motion vector of one pixel corresponding to an indexed refe renssikuvassa kandidaattilohkolle and around the half-pixel values; is calculated for each half-pixel motion vector cost function indexed image and the interpolated indexed candidate blocks used 10-crystallization; is coded image block to be coded using the minimum value of the cost Advisory half pixel motion vector.

Eräässä suoritusmuodossa hyödynnetään sitä tunnettua seikkaa, että nykyiset koodausstandardit sallivat myös kuvan ulkopuolelle osoittavat 15 liikevektorit. Kuvatussa indeksoidussa liikkeenestimoinnissa tähän päästään ylitäyttämällä indeksitaulukko siten, että kuvan kussakin laidassa, sekä ylhäällä, alhaalla että sivuissa on 16 pikseliä, jotka on kopioitu sinne varsinaisen kuva-alueen ulkolaidoista. Tämä toimenpide voidaan kuviossa 8 suorittaa lohkolla 842. Indeksoidun matriisin 3 koko on kuvan koko vähennettynä kolmella, eli 20 esimerkissämme 173 x 141. Huomioitaessa ylitäyttö kuvan koko on 173+32 x 141+32, tai toisin ilmaistuna 176+29 x 144+29. Luku 29 saadaan tietenkin vä-hentämäliä ylitäytön vaatimasta tilasta eli luvusta 32 luku kolme.In one embodiment, the known fact is utilized that current coding standards also allow out-of-motion motion vectors. In the indexed motion estimation illustrated, this is achieved by overfilling the index table so that there are 16 pixels on each side of the image, both top, bottom and sides, copied from the outer edges of the actual image area. This operation can be performed in block 842 in FIG. 8. The size of the indexed matrix 3 is the image size minus three, i.e., 173 x 141 in our example. The overfill image size is 173 + 32 x 141 + 32, or 176 + 29 x 144 + 29. Of course, the number 29 is obtained by reducing the space required by the overfill, that is, the number 32 from the number three.

» » *; ' Seuraavassa C-ohjelmointikielen syntaksia käyttävällä pseudokoo- ' dilla kuvataan indeksoidun taulukon laskenta ja indeksien ylitäyttö.»» *; 'The following pseudocode using the C programming language syntax describes how to calculate an indexed table and overfill the indexes.

25 typedef struct { [ u8 *image; /* Osoitin kuvaan, joka indeksoidaan 725 typedef struct {[u8 * image; / * Cursor to image to be indexed 7

u16 pels; /* Kuvan sarakkeiden määrä Vu16 pels; / * Number of columns in the image V

u16 Iines; /* Kuvan rivien määrä Vu16 Iines; / * Number of lines in the image V

u16*mv; /* Osoitin indeksitaulukkoon 7 30 } index_s; ; . void Melndex(index_s *vop) { ·:* u16 i, j; 35 u16pelsMv; u16*tmp = NULL; * »» » 14 1 1074 5 u16*tmp1 = NULL; u16 *put = NULL; u16 *start= NULL; u8 ‘block = NULL; 5 /* Yhden indeksisarakkeen väliaikainen muisti */ tmp = (u16 *)malloc(sizeof(u16)*vop->lines); /* Indeksitaulukon sarakkeiden määrä, 7 10 /* ylitäytön vaatima tila on huomioitu 7 pelsMv = vop->pels+29; /* Osoitin ensimmäiseen indeksiin, edustaa liikevektoria (0,0) 7 start = vop->mv+pelsMv*16+16; 15 /* Lasketaan indeksitaulukon ensimmäinen sarake 7 block = image; put = start; for (j = 0; j < 4; j++) { 20 tmp[j] = block[0]+block[1]+block[2]+block[3]; block+= vop->pels; ; put[0] = tmp[0]+tmp[1]+tmp[2]+tmp[3]; tmp1 = tmp; 25 for (j = 4; j < vop->lines; j++) { ·..· tmp1[4] = block[0]+block[1]+block[2]+block[3]; putfpelsMv] = put[0]+tmp1[4]-tmp1[0]; block += vop->pels; tmp1++; put += pelsMv; } : ·,: 30 /* Lasketaan indeksitaulukon loput sarakkeet */ · for (i = 1; i < vop->pels-3; i++) { block = image+i; put = start+i; 35 for (j = 0; j < 4; j++) { ..... tmp[j] = tmpö]+block[3]-block[-1]; 15 110745 block += vop->pels; } put[0] = tmp[0]+tmp[1]+tmp[2]+tmp[3]; tmp1 = tmp; 5 for (j = 4; j < vop->lines; j++) { tmp1[4] = tmp1[4]+block[3]-block[-1]; put[pelsMv] = put[0]+tmp1[4]-tmp1[0]; block += vop->pels; tmp1++; put += pelsMv; } 10 } free(tmp); /* Ylitäytetään indeksitaulukko */ 15 IndexOverfill(vop); return; } 20 void lndexOverfill(index_s *vop) ;··: { .·.u16 i, j; : ' u16 pelsMv; '· u16 *put = NULL; /* Apumuuttuja, osoitin indeksitaulukkoon */ 25 u16 *get = NULL; /* Apumuuttuja, osoitin indeksitaulukkoon */ /* Indeksitaulukon sarakkeiden määrä, 7 /* ylitäytön vaatima tila on huomioitu 7 pelsMv = vop->pels + 29; :' ·.' 30 /* Ylitäytetään taulukon keskiosa ylhäältä 7 :· put = vop->mv + 16; get = vop->mv + pelsMv*16 + 16; *"' for (j = 0; j < 16; j++) { . 35 for (i = 0; i < vop->pels; i++) { put[i] = get[i]; 16 110745 } put += pelsMv; } 5 /* Ylitäytetään taulukon keskiosa alhaalta 7 put = vop->mv + (vop->lines+13)*pelsMv+16; get = vop->mv + (vop->lines+12)*pelsMv+16; for G = 0; j < 16; j++){ for (i = 0; i < vop->pels; i++) { 10 put[i] = get[i]; } put += pelsMv; } 15 /* Ylitäytetään taulukko vasemmalta 7 put = vop->mv; get = vop->mv + 16; for (j = 0; j < vop->lines+29; j++) { for (i = 0; i < 16; i++) { 20 put[i] = *get; } put+= pelsMv; get+= pelsMv; } 25 /* Ylitäytetään taulukko oikealta 7 put = vop->mv + vop->pels+13; get = vop->mv + vop->pels+12; for (j = 0; j < vop->lines+29; j++) { for (i = 0; i < 16; i++) { 30 put[i] = *get; .:·· } : · put += pelsMv; get += pelsMv; } ..· 35 return; } „ 110745u16 * mv; / * Pointer to index table 7 30} index_s; ; . void Melndex (index_s * vop) {·: * u16 i, j; 35 u16pelsMv; u16 * tmp = NULL; * »» »14 1 1074 5 u16 * tmp1 = NULL; u16 * put = NULL; u16 * start = NULL; u8 'block = NULL; 5 / * Temporary memory for one index column * / tmp = (u16 *) malloc (sizeof (u16) * vop-> lines); / * Number of columns in index table, 7 10 / * space required for overfill is taken into account 7 pelsMv = vop-> pels + 29; / * Pointer to first index, represents motion vector (0,0) 7 start = vop-> mv + pelsMv * 16 + 16; 15 / * Calculate first column of index table 7 block = image; put = start; for (j = 0; j <4; j ++) {20 tmp [j] = block [0] + block [1] + block [2] + block [3]; block + = vop-> pels; ; put [0] = tmp [0] + tmp [1] + tmp [2] + tmp [3]; tmp1 = tmp; 25 for (j = 4; j <vop-> lines; j ++) {· .. · tmp1 [4] = block [0] + block [1] + block [2] + block [3]; putfpelsMv] = put [0] + tmp1 [4] -tmp1 [0]; block + = vop-> pels; TMP1 ++; put + = pelsMv; }: ·,: 30 / * Calculate the remaining columns of the index table * / · for (i = 1; i <vop-> pels-3; i ++) {block = image + i; put = start + i; 35 for (j = 0; j <4; j ++) {..... tmp [j] = tmpö] + block [3] -block [-1]; 15 110745 block + = vop-> pels; } put [0] = tmp [0] + tmp [1] + tmp [2] + tmp [3]; tmp1 = tmp; 5 for (j = 4; j <vop-> lines; j ++) {tmp1 [4] = tmp1 [4] + block [3] -block [-1]; put [pelsMv] = put [0] + tmp1 [4] -tmp1 [0]; block + = vop-> pels; TMP1 ++; put + = pelsMv; } 10} free (tmp); / * Overflow index table * / 15 IndexOverfill (vop); return; } 20 void lndexOverfill (index_s * vop); ··: {. · .U16 i, j; : 'u16 pelsMv; '· U16 * put = NULL; / * Auxiliary variables, pointer to index table * / 25 u16 * get = NULL; / * Auxiliary variables, pointer to index table * / / * Number of columns in index table, 7 / * Space overflow required 7 pelsMv = vop-> pels + 29; : '·.' 30 / * Overflow center of table from top 7: · put = vop-> mv + 16; get = vop-> mv + pelsMv * 16 + 16; * "'for (j = 0; j <16; j ++) {. 35 for (i = 0; i <vop-> pels; i ++) {put [i] = get [i]; 16 110745} put + = pelsMv;} 5 / * Overflow center of table from bottom 7 put = vop-> mv + (vop-> lines + 13) * pelsMv + 16; get = vop-> mv + (vop-> lines + 12) * pelsMv + 16 ; for G = 0; j <16; j ++) {for (i = 0; i <vop-> pels; i ++) {10 put [i] = get [i];} put + = pelsMv;} 15 / * Overflow table from left 7 put = vop-> mv; get = vop-> mv + 16; for (j = 0; j <vop-> lines + 29; j ++) {for (i = 0; i <16; i ++) {20 put [i] = * get;} put + = pelsMv; get + = pelsMv;} 25 / * Overflow table from right 7 put = vop-> mv + vop-> pels + 13; get = vop-> mv + vop- > pels + 12; for (j = 0; j <vop-> lines + 29; j ++) {for (i = 0; i <16; i ++) {30 put [i] = * get;.: ··} : · Put + = pelsMv; get + = pelsMv;} .. · 35 return;} "110745

Kuvattu menetelmä voidaan toteuttaa esimerkiksi kuviossa 1 kuvattua enkooderia käyttämällä. Kuviossa 1 kuvattu enkooderi eli laite peräkkäisten kuvien koodaamiseksi käsittää välineet 110 koodata kuvan koodattava lohko pienimmän kustannusfunktion arvon antavaa liikevektorikandidaattia käyttä-5 mällä, joka liikevektorikandidaatti määrittää liikkeen kuvan koodattavan lohkon ja referenssikuvan hakualueella olevan kandidaattilohkon välillä. Laite käsittää lisäksi välineet 118 - prosessoida kuva indeksoiduksi kuvaksi ja referenssikuva indeksoiduksi referenssikuvaksi siten, että kuva ja referenssikuva jaetaan indekseil- 10 lä viitattaviin osiin ja kussakin osassa olevien pikseleiden arvoista muodostetaan pikseleiden arvoja kyseisessä osassa kuvaava luku; - määritellä indeksoituun referenssikuvaan hakualue, josta haetaan indeksoidussa kuvassa olevaa koodattavaa lohkoa; ja - laskea kunkin liikevektorikandidaatin kustannusfunktio indeksoitua 15 kuvaa ja indeksoitua referenssikuvaa käyttämällä.The method described may be implemented, for example, using the encoder illustrated in Figure 1. The encoder or apparatus for encoding sequential images illustrated in Figure 1 comprises means 110 for encoding an image coding block using a motion vector candidate having the value of a least cost function, which motion vector determines the motion between the image coding block and the candidate block in the reference image search area. The apparatus further comprises means 118 - process the image into an indexed image and a reference image into an indexed reference image such that the image and the reference image are divided into indexed portions and the pixel values in each portion are converted into a number representing pixel values in that portion; - defining, in the indexed reference image, the search area from which the block to be encoded in the indexed image is searched; and - compute the cost function of each motion vector candidate using the indexed 15 images and the indexed reference image.

Laite voidaan myös konfiguroida koodaamaan kuvan koodattava lohko pienimmän kustannusfunktion arvon antavaa liikevektorikandidaattia käyttämällä, joka liikevektorikandidaatti määrittää liikkeen kuvan koodattavan lohkon ja referenssikuvan hakualueella olevan kandidaattilohkon välillä. Tällöin 20 laite on lisäksi konfiguroitu:The device may also be configured to encode an image coding block using a motion vector candidate having the value of a least cost function, which motion vector determines the movement between the image coding block and the candidate block in the reference image search area. In this case, 20 devices are further configured:

• I• I

- prosessoimaan kuva indeksoiduksi kuvaksi ja referenssikuva in-deksoiduksi referenssikuvaksi siten, että kuva ja referenssikuva jaetaan indek-- processing the image into an indexed image and the reference image into an indexed reference image, dividing the image and the reference image into an indexed image;

* I* I

! seillä viitattaviin osiin ja kussakin osassa olevien pikseleiden arvoista muodos tetaan pikseleiden arvoja kyseisessä osassa kuvaava luku; 25 - määrittelemään indeksoituun referenssikuvaan hakualue, josta : . haetaan indeksoidussa kuvassa olevaa koodattavaa lohkoa; ja - laskemaan kunkin liikevektorikandidaatin kustannusfunktio indeksoitua kuvaa ja indeksoitua referenssikuvaa käyttämällä.! the parts to be referred to therein and the values of the pixels in each part are converted into a figure representing the values of the pixels in that part; 25 - define a search area in the indexed reference image from which:. retrieving the block to be encoded in the indexed image; and - calculate the cost function of each motion vector candidate using an indexed image and an indexed reference image.

Kuviossa 1 esitetyt enkooderin lohkot voidaan toteuttaa yhtenä tai 30 useampana asiakaskohtaisena integroituna piirinä (Application-Specific integ-. · * * rated Circuit, ASIC). Myös muunlaiset toteutukset ovat mahdollisia, esimerkiksi • ; erillisistä logiikkakomponenteista rakennettu piiri, tai prosessori ohjelmistoineen.The encoder blocks shown in Fig. 1 may be implemented as one or more application-specific integrated circuits (ASICs). Other implementations are also possible, for example; a circuit built from separate logic components, or a processor with software.

Myös näiden eri toteutustapojen sekamuoto on mahdollinen. Alan ammattilai-' ‘ ’ nen huomioi toteutustavan valinnassa esimerkiksi laitteen koolle ja virrankulu- ; 35 tukselle asetetut vaatimukset, tarvittavan prosessointitehon, valmistuskustan nukset sekä tuotantomäärät. Mainitut välineet voidaan sijoittaa enkooderin ku- 18 110745 vattuihin lohkoihin, tai sitten ne voidaan toteuttaa kuvattuihin lohkoihin liittyvinä uusina lohkoina. Esimerkiksi välineet prosessoida kuva indeksoiduksi kuvaksi ja referenssikuva indeksoiduksi referenssikuvaksi voidaan toteuttaa lohkossa 118 tai kehyspuskurissa 102, tai kehyspuskuriin 102 yhteydessä olevaa uutta lohkoa 5 käyttämällä. Myös laitteen konfigurointi voidaan toteuttaa kuvattuja tai uusia lohkoja käyttämällä.A mixed form of these different embodiments is also possible. One skilled in the art will consider, for example, the size and power consumption of the device when selecting an embodiment; 35 requirements, processing power, manufacturing costs and production volumes. Said means may be placed in the encoded blocks of image 110745, or they may be implemented as new blocks associated with the described blocks. For example, the means for processing the image into an indexed image and the reference image into an indexed reference image may be implemented in block 118 or in frame buffer 102, or using a new block 5 in connection with frame buffer 102. Device configuration can also be implemented using described or new blocks.

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 10 keksinnöllisen ajatuksen puitteissa. Siten käsiteltävien kuvien koko voi vaihdella esimerkissä käytetystä qcif-koosta, eikä se aiheuta merkittäviä muutoksia keksinnön toteuttamiseen.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 idea of the appended claims. Thus, the size of the images to be processed may vary from the qcif size used in the example, and will not cause significant changes in the practice of the invention.

» f I»F I

» 1 I i t t r i < • · i »»1 I i t t r i <• · i»

Claims (24)

1. Förfarande för kodning av successiva bilder, vilket förfarande om-fattar följande steg: ett kodbart block av en bild kodas (818) genom att använda en rö-5 relsevektorkandidat som ger det minsta kostnadsfunktionsvärdet, vilken rörel-sevektorkandidat definierar en rörelse mellan det kodbara blocket av en bild och ett kandidatblock pä en referensbilds sökomräde; kännetecknat av att före kodning: processas (804) bilden tili en indexerad bild och referensbilden tili 10 en indexerad referensbild sä att bilden och referensbilden med hjälp av index delas i hänvisande delar och av bildpunktsvärdena i respektive del bildas ett tai som beskriver bildpunktsvärdena i nämnda del; i den indexerade referensbilden definieras (814) ett sökomrade, frän vilket det kodbara blocket i den indexerande bilden hämtas; och 15 respektive rörelsevektorkandidats kostnadsfunktion beräknas (816) genom att använda den indexerande bilden och den indexerande referensbilden.A method of coding successive images, which comprises the following steps: an encodable block of an image is encoded (818) using a motion vector candidate that provides the minimum cost function value, which motion vector candidate defines a motion between the the encodable block of an image and a candidate block of a reference image's search field; characterized in that, before encoding: (804) the image is processed into an indexed image and the reference image into an indexed reference image such that the image and the reference image are divided into reference parts and the pixel values in each part form a tai describing the pixel values in said part ; in the indexed reference image, (814) a search bar is defined from which the encodable block in the indexing image is retrieved; and the respective function vector candidate's cost function is calculated (816) using the indexing image and the indexing reference image. 2. Förfarande enligt patentkrav 1, kännetecknat av att bild-punkterna i nämnda del bildar en kvadrat. :..; 20Method according to claim 1, characterized in that the pixels in said part form a square. : ..; 20 3. Förfarande enligt patentkrav 2, kännetecknat av att nämn- *; · · da del omfattar 4x4 bildpunkter.Method according to claim 2, characterized in that said *; · · That part includes 4x4 pixels. ’· '· 4. Förfarande enligt nagot av de föregaende patentkraven, kä n - :· n e t e c k n a t av att en SAD-funktion (Sum of Absolute Differences) används som kostnadsfunktion. :* ] 25A method according to any of the preceding claims, characterized in that a SAD (Sum of Absolute Differences) function is used as a cost function. : *] 25 5. Förfarande enligt nagot av de föregaende patentkraven, kän netecknat av att de med hjälp av index hänvisande delarna placerade närä varandra delvis täcker varandra.5. Method according to any of the preceding claims, characterized in that the parts referred to by index refer to one another partially cover each other. 6. Förfarande enligt patentkrav 5, k ä n n e t e c k n a t av att da tai beräknas för tva bredvidliggande med hjälp av index hänvisande delar, utnytt- !.. 30 jas det tai som redan beräknats för den andra delen da talet för den första de- ·; . Ien beräknas.6. A method according to claim 5, characterized in that da tai is calculated for two adjacent areas by means of index-referenced parts, utilizing the tai already calculated for the second part da of the first part. . One is calculated. 7. Förfarande enligt nagot av de föregaende patentkraven, kännetecknat av att da rörelsevektorkandidaten som ger det minsta kost- Λ' nadsfunktionsvärdet har hittats pä en bildpunkts precision, letas den bästa rö- 35 relsevektorkandidaten pä en halv bildpunkts precision runtom nämnda rörelse- 24 110745 vektorkandidat.7. A method according to any of the preceding claims, characterized in that when the motion vector candidate that gives the least cost function value has been found at the precision of a pixel, the best motion vector candidate is searched for half a pixel precision around said motion vector candidate. . 8. Förfarande enligt patentkrav 7, kännetecknat av att pä en halv bildpunkts precision letas den bästa rörelsevektorkandidaten pä följande sätt: 5 den funna rörelsevektorkandidaten omfattande en bildpunkt interpo- leras i en referensbild tili ett motsvarande indexerat kandidatblock och en halv bildpunkts värden runtom nämnda kandidatblock; en kostnadsfunktion beräknas för respektive rörelsevektorkandidat omfattande en halv bildpunkt genom att använda den indexerade bilden och 10 det interpolerade indexerade kandidatblocket; bildens kodbara block kodas genom att använda rörelsevektorkandidaten omfattande en halv bildpunkt som ger det minsta kostnadsfunktions-värdet.Method according to claim 7, characterized in that, at half a pixel precision, the best motion vector candidate is searched as follows: the found motion vector candidate comprising a pixel is interpolated in a reference image to a corresponding indexed candidate block and a half pixel value around said candidate block; a cost function is calculated for each motion vector candidate comprising half a pixel using the indexed image and the interpolated indexed candidate block; the encodable blocks of the image are encoded using the motion vector candidate comprising a half pixel which provides the minimum cost function value. 9. Anordning för kodning av successiva bilder, omfattande: 15 medel (110) för att koda ett kodbart block av en bild genom att an vända en rörelsekandidat som ger det minsta kostnadsfunktionsvärdet, vilken rörelsevektorkandidat definierar en rörelse mellan det kodbara blocket av en bild och ett kandidatblock pa en referensbilds sökomräde; kännetecknad av att anordningen ytterligare omfattar: : ·. 20 medel (118) för att processa bilden tili en indexerad bild och en refe- |··· rensbild sä att bilden och referensbilden med hjälp av index delas i hänvisande !*' delar och av bildpunktsvärdena i respektive del bildas ett tai som beskriver bildpunktsvärdena i nämnda del; • · medel (118) för att definiera i den indexerade referensbilden ett sök-25 omräde, frän vilket det kodbara blocket i den indexerade bilden hämtas; och . medel (118) för att beräkna respektive rörelsevektorkandidats kost nadsfunktion genom att använda den indexerade bilden och den indexerade referensbilden.An apparatus for encoding successive images, comprising: means (110) for encoding an encodable block of an image by employing a motion candidate that provides the least cost function value, which motion vector candidate defines a motion between the encodable block of an image and a candidate block on a reference image's search field; characterized in that the device further comprises::. Means (118) for processing the image into an indexed image and a reference image such that the image and reference image are divided into reference parts by means of indexes, and of the pixel values in each portion, a tai describing the pixel values is formed. in said part; Means (118) for defining in the indexed reference image a search range from which the encodable block in the indexed image is retrieved; as well. means (118) for calculating the cost function of the respective motion vector candidate using the indexed image and the indexed reference image. 10. Anordning enligt patentkrav 9, kännetecknad av att bild- ; . 30 punkterna i nämnda del bildar en kvadrat.Device according to claim 9, characterized in that the image; . 30 points in said part form a square. 11. Anordning enligt patentkrav 10, kännetecknad av att ’ - · nämnda del omfattar 4x4 bildpunkter.11. Device according to claim 10, characterized in that said portion comprises 4x4 pixels. 12. Anordning enligt nägot av de föregäende patentkraven 9-11, kännetecknad av att en SAD-funktion (Sum of Absolute Differences) 35 används som kostnadsfunktion. 25 110745Device according to any of the preceding claims 9-11, characterized in that a SAD (Sum of Absolute Differences) function is used as a cost function. 25 110745 13. Anordning enligt nägot av de föregäende patentkraven 9-12, kännetecknad avattde med hjälp av index hänvisande delarna place-rade närä varandra delvis täcker varandra.Device according to any of the preceding claims 9-12, characterized by means of the index referring parts positioned near each other partially covering each other. 14. Anordning enligt patentkrav 13, kännetecknad av att dä 5 tai beräknas för tvä bredvidliggande med hjälp av index hänvisande delar, ut- nyttjas det tai som redan beräknats för den andra delen da talet för den första delen beräknas.Device according to claim 13, characterized in that the tai is calculated for two adjacent parts by means of index-referenced parts, the tai already calculated for the second part is then used when the number of the first part is calculated. 15. Anordning enlig nägot av de föregäende patentkraven 9-14, kännetecknad avattdä rörelsevektorkandidaten som ger det minsta 10 kostnadsfunktionsvärdet har hittats pä en bildpunkts precision, letas den bästa rörelsevektorkandidaten pä en halv bildpunkts precision runtom nämnda rörel-sevektorkandidat.15. Device according to any of the preceding claims 9-14, characterized in that the motion vector candidate which gives the minimum cost function value has been found at the precision of a pixel, the best motion vector candidate is searched at half a pixel precision around said motion vector candidate. 16. Anordning enligt patentkrav 15, kännetecknad avattpä en halv bildpunkts precision letas den bästa rörelsevektorkandidaten pä följan- 15 desätt: den funna rörelsevektorkandidaten omfattande en bildpunkt interpo-leras i en referensbild tili ett motsvarande indexerat kandidatblock och en halv bildpunkts värden runtom nämnda kandidatblock; en kostnadsfunktion beräknas för respektive rörelsevektorkandidat 20 omfattande en halv bildpunkt genom att använda den indexerade bilden och det interpolerade indexerade kandidatblocket; ’; *'. bildens kodbara block kodas genom att använda rörelsevektorkan- *; ‘ didaten omfattande en halv bildpunkt som ger det minsta kostnadsfunktions- > · ' · ’ värdet.16. Apparatus according to claim 15, characterized by a half pixel precision, the best motion vector candidate is searched in the following way: the found motion vector candidate comprising a pixel is interpolated in a reference image to a corresponding indexed candidate block and half a pixel value around said candidate block; a cost function is calculated for each motion vector candidate comprising half a pixel by using the indexed image and the interpolated indexed candidate block; '; * '. the encodable blocks of the image are encoded using motion vector channels; The 'doata comprising half a pixel gives the least cost function>>' 'value. 17. Anordning för kodning av successiva bilder, konfigurerad att: • · :, koda ett kodbart block av en bild genom att använda en rörelsevek torkandidat som ger det minsta kostnadsfunktionsvärdet, vilken rörelsevektorkandidat definierar en rörelse mellan det kodbara blocket av bilden och ett kandidatblock pä en referensbilds sökomräde; 30 kännetecknad av att anordningen dessutom är konfigurerad att: . processa bilden tili en indexerad bild och referensbilden tili en in- dexerad referensbild sä att bilden och referensbilden med hjälp av index delas • i hänvisande delar och av bildpunktsvärdena i respektive del bildas ett tai som , 35 beskriver bildpunktsvärdena i nämnda del; 26 110745 definiera i den indexerade delen ett sökomräde, fran vilket det kod-bara blocket i den indexerade bilden hämtas; och beräkna respektive rörelsevektorkandidats kostnadsfunktion genom att använda den indexerade bilden och den indexerade referensbilden.17. A device for encoding successive images, configured to: • ·:, encode a codable block of an image using a motion vector candidate that provides the least cost function value, which motion vector candidate defines a motion between the codeable block of the image and a candidate block of the search frame of a reference image; Characterized in that the device is further configured to:. process the image into an indexed image and the reference image into an indexed reference image such that the image and the reference image are divided by reference into indices and the pixel values in each portion form a tai which describes the pixel values in said portion; Define in the indexed part a search frame from which the codable block in the indexed image is retrieved; and calculate the cost function of each motion vector candidate using the indexed image and the indexed reference image. 18. Anordning enligt patentkrav 17, kännetecknad av att bildpunkterna i nämnda del bildar en kvadrat.Device according to claim 17, characterized in that the pixels in said part form a square. 19. Anordning enligt patentkrav 18, kännetecknad av att nämnda del omfattar 4x4 bildpunkter.Device according to claim 18, characterized in that said part comprises 4x4 pixels. 20. Anordning enligt nägot av de föregäende patentkraven 17-19, 10 kännetecknad av att anordningen är konfigurerad att använda en SAD- funktion (Sum of Absolute Differences) används som kostnadsfunktion.Device according to any of the preceding claims 17-19, characterized in that the device is configured to use a SAD (Sum of Absolute Differences) function is used as a cost function. 21. Anordning enligt nägot av de föregäende patentkraven 17-20, kännetecknad av att de med hjälp av index hänvisande delarna place-rade närä varandra delvis täcker varandra.Apparatus according to any of the preceding claims 17-20, characterized in that the parts referred to by index refer to one another partially cover each other. 22. Anordning enligt patentkrav 21, kännetecknad av att anordningen är konfigurerad da tai beräknas för tvä bredvidliggande med hjälp av index hänvisande delar att utnyttja det tai som redan beräknats för den and-ra delen da talet för den första delen beräknas.Device according to claim 21, characterized in that the device is configured da tai is calculated for two adjacent sides by means of index referencing parts to utilize the tai already calculated for the second part when the number for the first part is calculated. 23. Anordning enligt nägot av de föregäende patentkraven 17-22, : ·. * 20 kännetecknad av att dä rörelsevektorkandidaten som ger det minsta kostnadsfunktionsvärdet har hittats pä en bildpunkts precision är anordningen konfigurerad att leta den bästa rörelsevektorkandidaten pä en halv bildpunkts • » precision runtom nämnda rörelsevektorkandidat.Device according to any of the preceding claims 17-22,:. * Characterized in that when the motion vector candidate that gives the least cost function value has been found at the precision of a pixel, the device is configured to look for the best motion vector candidate at half a pixel precision around said motion vector candidate. ’· * 24. Anordning enligt patentkrav 23, k ä n n e t e c k n a d av att an- 25 ordningen är konfigurerad att pä en halv bildpunkts precision leta den bästa :, , rörelsevektorkandidaten pä följande sätt: den funna rörelsevektorkandidaten omfattande en bildpunkt interpo-leras i en referensbild tili ett motsvarande indexerat kandidatblock och en halv bildpunkts värden runtom nämnda kandidatblock; 30 en kostnadsfunktion beräknas för respektive rörelsevektorkandidat i * omfattande en halv bildpunkt genom att använda den indexerade bilden och ~; . det interpolerade indexerade kandidatblocket; bildens kodbara block kodas genom att använda rörelsevektorkandidaten omfattande en halv bildpunkt som ger det minsta kostnadsfunktions-, v' 35 värdet. • t } t24. Apparatus according to claim 23, characterized in that the device is configured to look for the best of half a pixel precision:,, the motion vector candidate in the following way: the found motion vector candidate comprising a pixel is interposed in a reference image to a corresponding indexed candidate block and half a pixel value around said candidate block; A cost function is calculated for each motion vector candidate in * comprising half a pixel using the indexed image and ~; . the interpolated indexed candidate block; the encodable blocks of the image are encoded using the motion vector candidate comprising a half pixel which gives the minimum cost function value, v '35. • t} t
FI20012203A 2001-11-13 2001-11-13 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 FI110745B (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
FI20012203A FI110745B (en) 2001-11-13 2001-11-13 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
PCT/FI2002/000894 WO2003043342A1 (en) 2001-11-13 2002-11-12 Method, apparatus and computer for encoding successive images

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FI20012203A FI110745B (en) 2001-11-13 2001-11-13 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
FI20012203 2001-11-13

Publications (2)

Publication Number Publication Date
FI20012203A0 FI20012203A0 (en) 2001-11-13
FI110745B true FI110745B (en) 2003-03-14

Family

ID=8562246

Family Applications (1)

Application Number Title Priority Date Filing Date
FI20012203A FI110745B (en) 2001-11-13 2001-11-13 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

Country Status (2)

Country Link
FI (1) FI110745B (en)
WO (1) WO2003043342A1 (en)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7463778B2 (en) 2004-01-30 2008-12-09 Hewlett-Packard Development Company, L.P Motion estimation for compressing multiple view images
US8396117B2 (en) 2006-05-30 2013-03-12 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
US8891626B1 (en) 2011-04-05 2014-11-18 Google Inc. Center of motion for encoding motion fields
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
US8908767B1 (en) 2012-02-09 2014-12-09 Google Inc. Temporal motion vector prediction
US9172970B1 (en) 2012-05-29 2015-10-27 Google Inc. Inter frame candidate selection for a video encoder
US9503746B2 (en) 2012-10-08 2016-11-22 Google Inc. Determine reference motion vectors
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
JP3846642B2 (en) * 1994-01-31 2006-11-15 ソニー株式会社 Motion amount detection method and motion amount detection device
TW321748B (en) * 1994-02-23 1997-12-01 Rca Thomson Licensing Corp
US6011870A (en) * 1997-07-18 2000-01-04 Jeng; Fure-Ching Multiple stage and low-complexity motion estimation for interframe video coding
US5987180A (en) * 1997-09-26 1999-11-16 Sarnoff Corporation Multiple component compression encoder motion search method and apparatus
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
DE69901525T2 (en) * 1998-02-13 2003-01-09 Koninklijke Philips Electronics N.V., Eindhoven METHOD AND DEVICE FOR VIDEO CODING
EP0979011A1 (en) * 1998-08-06 2000-02-09 STMicroelectronics S.r.l. Detection of a change of scene in a motion estimator of a video encoder
JP2001112000A (en) * 1999-10-07 2001-04-20 Matsushita Electric Ind Co Ltd Video signal encoding device

Also Published As

Publication number Publication date
FI20012203A0 (en) 2001-11-13
WO2003043342A1 (en) 2003-05-22

Similar Documents

Publication Publication Date Title
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
US20140105295A1 (en) Moving image encoding method and apparatus, and moving image decoding method and apparatus
KR20000011096A (en) Image encoder, image decoder, image encoding method, image decoding method and image encoding/decoding system
CN113557731B (en) Method, apparatus and system for encoding and decoding a block tree of video samples
KR20040062660A (en) Global motion compensation for video pictures
US20090016626A1 (en) Joint coding of multiple transform blocks with reduced number of coefficients
KR19980033152A (en) Image signal preservation method, image signal encoding device, and image signal decoding device
US11683477B2 (en) Prediction method for decoding and apparatus, and computer storage medium
CN118784846A (en) Image decoding method and apparatus, image encoding method and apparatus, and storage medium
EP1940175A1 (en) Image encoding apparatus and memory access method
CN117061750A (en) Method and apparatus for shared preload area for affine prediction or motion compensation
FI109634B (en) Method and apparatus for encoding a video image
US8189672B2 (en) Method for interpolating chrominance signal in video encoder and decoder
CN115769573A (en) Encoding method, decoding method and related device
JP2003169332A (en) Picture coding method and picture decoding method
WO2024016156A1 (en) Filtering method, encoder, decoder, code stream and storage medium
CN116684597A (en) Image decoding apparatus and method, image encoding apparatus and method, and storage medium
US7006572B2 (en) Method and apparatus for decoding video bitstreams to reduced spatial resolutions
US20080317133A1 (en) Mpeg video decoding method and mpeg video decoder
FI115945B (en) Coding sequential images
KR100240620B1 (en) Method and apparatus to form symmetric search windows for bidirectional half pel motion estimation
CN112913242B (en) Encoding method and encoding device
US20240275955A1 (en) Intra prediction method and decoder
CN117280685A (en) Encoding/decoding method, code stream, encoder, decoder, and storage 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