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 PDFInfo
- 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
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
- H04N19/51—Motion estimation or motion compensation
- H04N19/523—Motion estimation or motion compensation with sub-pixel accuracy
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods 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/17—Methods 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/176—Methods 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/60—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
- H04N19/61—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/80—Details 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
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)
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)
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)
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 |
-
2001
- 2001-11-13 FI FI20012203A patent/FI110745B/en not_active IP Right Cessation
-
2002
- 2002-11-12 WO PCT/FI2002/000894 patent/WO2003043342A1/en not_active Application Discontinuation
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 |