FI115945B - Coding sequential images - Google Patents

Coding sequential images Download PDF

Info

Publication number
FI115945B
FI115945B FI20030714A FI20030714A FI115945B FI 115945 B FI115945 B FI 115945B FI 20030714 A FI20030714 A FI 20030714A FI 20030714 A FI20030714 A FI 20030714A FI 115945 B FI115945 B FI 115945B
Authority
FI
Finland
Prior art keywords
block
candidate
value
pixels
cost function
Prior art date
Application number
FI20030714A
Other languages
Finnish (fi)
Swedish (sv)
Other versions
FI20030714A (en
FI20030714A0 (en
Inventor
Jarno Tulkki
Original Assignee
Hantro Products Oy
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hantro Products Oy filed Critical Hantro Products Oy
Priority to FI20030714A priority Critical patent/FI115945B/en
Publication of FI20030714A0 publication Critical patent/FI20030714A0/en
Publication of FI20030714A publication Critical patent/FI20030714A/en
Application granted granted Critical
Publication of FI115945B publication Critical patent/FI115945B/en

Links

Landscapes

  • Compression Or Coding Systems Of Tv Signals (AREA)

Description

115945115945

Peräkkäisten kuvien koodaaminenEncoding sequential images

AlaArea

Keksinnön kohteina ovat menetelmä, tietokoneohjelma, ohjelmiston jakeluväline, tietokonemuisti, tietoliikennesignaali ja järjestely peräkkäisten ku-5 vien koodaamiseksi.The invention relates to a method, a computer program, a software distribution medium, a computer memory, a communication signal and an arrangement for encoding sequential images.

TaustaBackground

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 videokoo-10 dausstandardista on MPEG-4 (Moving Pictures Expert Group). Käytettyjä kuvakokoja 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 coding standard of 10 is MPEG-4 (Moving Pictures Expert Group). There are different image sizes 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 15 halutulla koodausmenetelmällä. Kompressointi perustuu vähemmän merkityksellisen 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 ·:· 20 Reduction). Tyypillisesti kompressointiin käytetään näiden menetelmien erilai- 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 by the desired coding method. Compression is based on the removal of less relevant data. Compression methods are mainly divided into three categories: Spectral Redundancy Reduction, Spatial Redundancy Reduction, and Temporal Redundancy ·: · 20 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 25 muutoksille. YUV-mallissa on yksi luminanssikomponentti (Y) ja kaksi kromi-’···’ nanssikomponenttia (U ja V, tai Cb ja Cr). Esimerkiksi H.263 videokoodaus standardin mukainen luminanssilohko on 16 x 16 pikseliä ja kumpikin kromi- i.: : nanssilohko, jotka kattavat saman alueen kuin luminanssilohko, 8x8 pikseliä.For example, '··· is applied to reduce spectral redundancy. YUV color model. The YUV model takes advantage of the fact that the human eye is • · more sensitive to variations in luminance, or luminance, than to changes in chrominance, or color. The YUV model has one luminance component (Y) and two chromium '···' nance 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: nance block, which covers the same area as the luminance block, is 8 x 8 pixels.

Yhden luminanssilohkon ja kahden krominanssilohkon yhdistelmää kutsutaan !:. 30 makrolohkoksi. Jokainen pikseli sekä luminanssi- että krominanssilohkossa voi saada arvon väliltä 0-255 eli yhden pikselin esittämiseen tarvitaan kahdeksan bittiä. Esimerkiksi luminanssipikselin arvo 0 tarkoittaa mustaa ja arvo 255 vai- « « koista.The combination of one luminance block and two chrominance blocks is called!:. 30 macroblock. Each pixel in both the luminance and chrominance blocks can get a value between 0 and 255, so eight pixels are required to represent one pixel. For example, a value of 0 for a luminance pixel is black and a value of 255 is for «.

·:·: Tilaredundanssin vähentämiseksi käytetään esimerkiksi diskreetti- 35 kosinimuunnosta (Discrete Cosine Transform, DCT). Diskreettikosinimuunnok- 2 115945 sessa muunnetaan lohkon pikseliesitys tilataajuusesitykseksi. Lisäksi kuva-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 sig-5 naaliin aiheutuu häiriötä vain kvantisoinnissa.·: ·: For example, Discrete Cosine Transform (DCT) is used to reduce space redundancy. The discrete cosine transform 2 115945 converts the pixel representation of a block into a space frequency representation. In addition, in the image block, only the signal frequencies that occur therein have large 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 sig-5 signal only interferes with quantization.

Ajallista redundanssia pyritään vähentämään hyödyntäen sitä tosiasiaa, että peräkkäiset kuvat yleensä muistuttavat toisiaan, joten sen sijaan, että kompressoitaisiin jokainen yksittäinen kuva, generoidaan lohkojen liike-dataa. Tätä nimitetään liikkeen kompensoinniksi. Koodattavalle lohkolle etsi-10 tään mahdollisimman hyvä aiemmin koodattu referenssilohko aiemmasta 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 15 tarkoittaa saman kuvajonon kuvien välisten samankaltaisuuksien hyödyntämistä.The aim 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 for in the previous reference image stored in 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. This type of coding is called inter-coding, which means utilizing the similarities between images in the same image sequence.

Tyypillisesti referenssikuvaan määritellään hakualue, josta haetaan koodattavassa kuvassa olevan kaltaista lohkoa. Paras lohkovastaavuus löydetään laskemalla hakualueella olevan kandidaattilohkon ja koodattavan lohkon 20 välisten pikseleiden välinen kustannusfunktion arvo jollakin lohkovertailuun sopivalla kriteerillä.Typically, the reference image defines a search area from which a block like the one to be encoded is searched. The best block correspondence is found by calculating the value of the cost function between the pixels between the candidate block in the search area and the block to be coded 20 by some suitable criterion for block comparison.

Esimerkiksi liikkeen estimointi hakualueella ±16 pikseliä, käyttäen SAD-kriteeriä (Sum of Absolute Differences), voidaan esittää kaavalla:For example, motion estimation within a search range of ± 16 pixels using the Sum of Absolute Differences (SAD) criterion can be represented by:

Li' MV(x,y) = ^mn/ΣΣΚ^ “ W,|) (1) ♦ * " i=0 j=0 25 missä MV on lopullisen liikevektorin (x,y) kustannusfunktio, fxy on !·*·. koodattavan kuvan pikseli ja r^ on referenssikuvan pikseli. Referenssilohkoksi • · valitaan siis se liikevektorin (x,y) määräämä referenssikuvan lohko, jolle kus- , , tannusfunktion MV{x,y) arvo on pienin. Referenssilohkon valintaan tai kustan- • · » nusfunktioon voi vaikuttaa myös muita tekijöitä, joista yhtenä mainittakoon lii-Li 'MV (x, y) = ^ mn / ΣΣΚ ^ “W, |) (1) ♦ *" i = 0 j = 0 25 where MV is the cost function of the final motion vector (x, y), fxy is! · * · the pixel of the image to be encoded and r ^ is the pixel of the reference image, so the reference block is defined by the motion vector (x, y), for which the value of the k,, cost function MV {x, y) is smallest. »Other factors may influence the function, including

• I• I

' · · · ‘ 30 kevektorin pituus eli kustannusfunktiolle annetaan ’’rangaistus” sen vektorin pi- ·:· tuuden mukaan. Tämä siksi, että kahdesta saman kustannusfunktion arvon ; · * ’. antavasta kandidaattilohkosta tulisi valituksi se, jonka vektori on lyhyempi.The length of the 30 Kevectors, i.e. the cost function, is "penalized" by the length of its vector. This is because two of the same cost function value; · * '. from the candidate candidate block, the one with the shorter vector would be selected.

.· . Lohkojen vertailuun on käytettävissä useita erilaisia kriteerejä, joista ’· ; käytetyin lienee edellä mainittu absoluuttierojen summa. Toinen yleisesti käy- : * : 35 tetty kriteeri on neliöllisten erojen summa (Sum of Squared Differences, SSD), 3 115945 joka takaa SAD-kriteeriä paremman kuvanlaadun, mutta on raskaampi laskea. Myös edellisten kriteereiden keskiarvon tuottavia kriteereitä on käytössä.. ·. There are several different criteria for comparing blocks, of which '·; the sum of the absolute differences mentioned above is probably the most used. Another commonly used criterion: *: 35 is Sum of Squared Differences (SSD), 3,115,945, which guarantees better image quality than SAD, but is heavier to calculate. The criteria that produce the average of the previous criteria are also used.

Yhtä kaikki, tunnetut kriteerit mittaavat jollain tapaa koodattavan lohkon ja kandidaattilohkon pintojen välistä tilavuutta, oli se sitten neliöllistä tai 5 ei. Tällaiset kriteerit toimivat hyvin niin kauan kuin koodattavalle lohkolle on löydettävissä hakualueelta samaa valoisuutta oleva vastine. Ongelmia on luvassa heti kun koodattavan kuvan valoisuus poikkeaa referenssikuvasta tai kuvien välillä esiintyvä liike on suurempaa kuin määritelty hakualue. Esimerkiksi valoisuuden muuttuessa (kuvattavan ihmisen ylle lankeaa varjo) tällaiset 10 kriteerit etsivät sellaisen referenssilohkon, jonka valoisuus on mahdollisimman lähellä koodattavaa lohkoa ja jättävät lohkojen pinnanmuodostuksen väliset erot kokonaan vaille huomiota. Tuloksena on täysin vääriä liikevektoreita, jotka huonontavat kuvan laatua radikaalisti. Lisäksi joudutaan käyttämään enemmän intra-lohkoja (koodauksessa ei hyödynnetä referenssilohkoa), jotka pak-15 kaantuvat huonommin. Näin joudutaan myös nostamaan koodauksessa käytettävää kvantisointia, joka edelleen huonontaa kuvan laatua. Siten seuraavan videokuvan koodauksessa käytössä olevasta referenssikuvasta tulee huonolaatuinen eli lähetettävän erodatan määrä kasvaa ja noidankehä on valmis.Equally, all known criteria measure in some way the volume between the surfaces of the block to be coded and the candidate block, whether square or not. Such criteria work well as long as a match for the block to be coded can be found in the search area with the same brightness. Problems will arise as soon as the brightness of the image to be encoded differs from the reference image or the movement between images is greater than the specified search range. For example, as the luminosity changes (the shadow of the person being depicted), such criteria look for a reference block whose luminance is as close as possible to the coded block and completely ignores the differences in surface formation between the blocks. The result is completely false motion vectors that radically degrade image quality. In addition, more intra-blocks (which do not utilize the reference block in coding), which pack more poorly, need to be used. This also increases the amount of quantization used in encoding, which further degrades image quality. Thus, the reference image used for encoding the next video image becomes poor quality, i.e. the amount of eroded data to be transmitted is increased and the wireframe is complete.

Videonkoodauksen ammattilaisten keskuudessa pidetään yleisesti 20 hyväksyttävänä tosiasiana sitä, että neliöllisten erojen summa on paras mahdollinen lohkovertailukriteeri, kun taas absoluuttierojen summa on riittävän hy-vä ja mikä parasta: nopea. Tulevaisuus videonkoodauksessa näyttää kuitenkin siltä, että laatu tulee yhä tärkeämmäksi nopeusvaatimusten väistyessä teknii-kan kehittymisen myötä. Esimerkiksi erilaisiin päätelaitteisiin tullaan koodaa-25 maan mm. elokuvia ja mainoksia, joissa käytetään paljon tehokeinoja, esim.Among video coding professionals, it is generally accepted that the sum of squared differences is the best possible block comparison criterion, while the sum of the absolute differences is good enough and best of all: fast. However, the future of video encoding seems to be that quality will become more and more important as speed requirements diminish as technology advances. For example, various terminals will be coded in 25 countries, e.g. movies and commercials that use a lot of power, e.g.

t« · häivytystekniikkaa ja nopeita kohtauksia. Näin luodaan tarve parempaa kuva- • · . ·". laatua tuottavalle liikkeenestimoinnille.t «· fade technique and fast scenes. This creates the need for a better picture. · "For quality producing motion estimation.

Lyhyt selostus I · ·': : Keksinnön tavoitteena on tarjota parannettu menetelmä, tietoko- • I * 30 neohjelma, ohjelmiston jakeluväline, tietokonemuisti, tietoliikennesignaali ja • j järjestely peräkkäisten kuvien koodaamiseksi. Keksinnön eräänä puolena esi- .*··. tetään patenttivaatimuksen 1 mukainen menetelmä. Keksinnön eräänä puole- na esitetään patenttivaatimuksen 10 mukainen tietokoneohjelma. Keksinnön *! eräänä puolena esitetään patenttivaatimuksen 11 mukainen ohjelmiston jake- 35 luväline. Keksinnön eräänä puolena esitetään patenttivaatimuksen 12 mukainen tietokonemuisti. Keksinnön eräänä puolena esitetään patenttivaatimuksen 4 115945 13 mukainen tietoliikennesignaali. Keksinnön eräänä puolena esitetään patenttivaatimuksen 14 mukainen järjestely. Keksinnön edulliset suoritusmuodot ovat epäitsenäisten patenttivaatimusten kohteena.BRIEF DESCRIPTION I · · ': The object of the invention is to provide an improved method, a computer program, a software distribution device, a computer memory, a communication signal and an arrangement for encoding sequential images. In one aspect of the invention, *. A method according to claim 1. In one aspect, the invention provides a computer program according to claim 10. The invention *! in one aspect, the software distribution device of claim 11 is provided. In one aspect of the invention, there is provided a computer memory according to claim 12. In one aspect of the invention there is provided a communication signal according to claim 4 115945 13. In one aspect, the invention provides an arrangement according to claim 14. Preferred embodiments of the invention are claimed in the dependent claims.

Keksintö perustuu parannettuun liikkeenestimoinnissa käytettävään 5 kriteeriin, joka ottaa huomioon tärkeimmät liikkeenestimoinnin kuvanlaadulliset seikat.The invention is based on 5 criteria used in improved motion estimation, which takes into account the most important image quality aspects of motion estimation.

Keksinnön mukainen ratkaisu tarjoaa huomattavasti paremman kuvanlaadun kuin klassiset liikkeenestimoinnit.The solution according to the invention provides significantly better image quality than classical motion estimation.

Kuvioluettelo 10 Keksinnön edulliset suoritusmuodot selostetaan esimerkinomaisesti alla viitaten oheisiin piirroksiin, joista: kuvio 1 esittää laitetta peräkkäisten kuvien koodaamiseksi; kuvio 2 havainnollistaa liikkeenestimointia; kuvio 3 havainnollistaa parannettua liikkeenestimointia; ja 15 kuvio 4 on vuokaavio havainnollistaen menetelmää makrolohkon koodaamiseksi käyttäen menetelmää peräkkäisten kuvien koodaamiseksi.BRIEF DESCRIPTION OF THE DRAWINGS 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; Figure 2 illustrates motion estimation; Figure 3 illustrates improved motion estimation; and FIG. 4 is a flowchart illustrating a method for encoding a macroblock using a method for encoding sequential images.

Suoritusmuotojen kuvausDescription of Embodiments

Alan ammattilaiselle videokoodaus on hyvin tunnettua standardien ja oppikirjojen perusteella. Koodattavat peräkkäiset kuvat ovat tyypillisesti liik-·!* 20 kuvaa kuvaa, esimerkiksi videokuvaa. Videokuva muodostuu kamerassa yksit- täisistä peräkkäisistä kuvista. Kameralla muodostetaan kuvaa pikseleinä esit-:·. tävä matriisi, esimerkiksi alussa kuvatulla tavalla, jossa luminanssille ja kromi- ] nanssille ovat omat matriisinsa. Kuvaa pikseleinä esittävä datavuo viedään kooderiin. Tietenkin on mahdollista rakentaa myös sellainen laite, jossa data-25 vuo saadaan kooderiin esimerkiksi tiedonsiirtoyhteyttä pitkin tai vaikkapa tieto-*···’ koneen muistivälineeltä. Tällöin tarkoituksena on se, että kompressoimaton vi deokuva kompressoidaan kooderilla esimerkiksi edelleenlähetystä tai tai- • 1 : lennusta varten. Kooderilla muodostettu kompressoitu videokuva siirretään kanavaa käyttäen dekooderille. Dekooderi tekee periaatteessa saman kuin 30 kooderi teki kuvaa muodostettaessa, mutta käänteisesti. Kanava voi olla esi-[!!!_ merkiksi kiinteä tai langaton tiedonsiirtoyhteys. Kanava voidaan myös tulkita I » siirtotieksi, jota käyttäen videokuva tallennetaan jollekin muistivälineelle, esi-merkiksi laserlevylle ja jota käyttäen videokuva sitten luetaan muistivälineeltä ·:·*: ja käsitellään dekooderilla. Kanavassa siirrettävälle kompressoidulle videoku- 35 valle voidaan suorittaa myös muuta koodausta, esimerkiksi kanavakoodausta 5 115945 kanavakooderilla. Kanavakoodaus puretaan kanavadekooderilla. Kooderi ja dekooderi voidaan sijoittaa erilaisiin laitteisiin, esimerkiksi tietokoneisiin, erilaisten radiojärjestelmien tilaajapäätelaitteisiin kuten matkaviestimiin tai muihin laitteisiin, joissa halutaan käsitellä videokuvaa. Kooderi ja dekooderi voidaan 5 myös yhdistää samaan laitteeseen, jota voidaan tällöin nimittää videokoode-kiksi.Video coding is well known to those skilled in the art based on standards and textbooks. Sequential images to be encoded are typically motion pictures, such as video. The video image consists of single sequential images in the camera. The camera produces an image in pixels: ·. matrix, for example, as described above, where luminance and chrominance have their own matrices. 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-25 stream is provided to the encoder, for example, via a data link or, for example, from a storage medium of a computer. The purpose here is to compress the uncompressed video with an encoder for, for example, retransmission or • 1: flight. The compressed video image generated by the encoder is transmitted using a channel to the decoder. The decoder does basically the same as the 30 encoder did when generating the image, but in reverse. The channel may be precursor to wired or wireless. The channel may also be interpreted as a transmission path for recording a video image on a storage medium, such as a laser disk, and then reading the video image from the storage medium ·: · *: and processing it with a decoder. The compressed video image transmitted in the channel may also be subjected to other coding, for example channel coding 5115945 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 in which video image processing is desired. The encoder and decoder 5 can also be combined with the same device, which can then be called a video codec.

Viitaten kuvioon 1 selostetaan peräkkäisten kuvien koodaamislait-teen eli kooderin rakenne. Kuviossa 1 kuvataan kooderin toimintaa teoreettisella tasolla. Käytännössä kooderin rakenne on paljon monimutkaisempi kun 10 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. Kehys-puskurista 102 viedään yksittäinen kuva 132 lohkoon 104, jossa valitaan haluttu koodausmuoto. Laitteen toimintaa ohjaa ohjausosa 100, joka mm. valitsee 15 halutun koodausmuodon ja ilmoittaa valitun koodausmuodon 156, 158 lohkolle 104 ja lohkolle 120. Koodausmuoto voi olla intrakoodaus tai interkoodaus. In-trakoodatun kuvan lohkoille ei tehdä liikkeenkompensointia, kun taas interkoo-datun kuvan lohkoille se yleensä tehdään. Yleensä ensimmäinen kuva on in-trakoodattu ja sitä seuraavat kuvat ovat interkoodattuja. Ensimmäisen kuvan 20 jälkeenkin voidaan lähettää intrakuvia esimerkiksi jos koodattavalle kuvalle ei löydetä tarpeeksi hyviä liikevektoreita.Referring to Figure 1, the structure of a sequential image encoding device, or encoder, is described. Figure 1 illustrates the operation of the encoder on a theoretical level. In practice, the structure of the encoder is much more complex when one skilled in the art adds to it the necessary things according to the prior art, such as the necessary timing and block processing. Successive images 130 are temporarily brought to be stored in frame buffer 102. From frame buffer 102, a single image 132 is applied to block 104 where the desired encoding format is selected. The operation of the device is controlled by a control part 100 which e.g. selects 15 desired encoding formats and indicates the selected encoding format 156, 158 to block 104 and block 120. The encoding format may be intracoding or inter-coding. Motion compensation is not applied to the blocks of the in-tracoded image, while it is usually done for the blocks of the intercoated image. Usually, the first image is in-decoded and the subsequent images are inter-coded. Even after the first image 20, intra-images can be sent, for example, if good enough motion vectors are not found for the image to be encoded.

Seuraavaksi kuvataan laitteen toimintaa, kun lohkossa 104 on valit-·: · tu intrakoodaus. Intrakuvalle lohko 104 saa syötteeksi vain kehyspuskurista 102 tulevan kuvan 132. Kehyspuskurista 102 saatu kuva 132 viedään sellai-25 senaan kuvana 134 sitten diskreettikosinimuunnoslohkoon 106, jossa suorite-taan diskreettikosinimuunnos, joka esitellään tarkemmin myöhemmässä vai- • » heessa.Next, the operation of the device when block intros are selected in block 104 is described. For the intranet image, block 104 only receives an image 132 from frame buffer 102. Image 132 from frame buffer 102 is then exported as such to image 134, then to discrete cosine transform block 106, which performs discrete cosine transform, which will be described in more detail later.

• · • · ”* Diskreettikosinimuunnettu kuva 136 viedään kvantisointilohkoon 108, jossa suoritetaan kvantisointi eli periaatteessa diskreettikosinimuunnetun : 30 kuvan jokainen alkio jaetaan jollain vakiolla. Tämä vakio saattaa vaihdella eri makrolohkojen välillä ja jopa alkioidenkin välillä. Kvantisointiparametri, josta .:· kyseiset kvantisointijakajat lasketaan, on MPEG-4 standardin mukaan välillä 1- 31. Mitä enemmän nollia saadaan lohkoon sitä paremmin lohko pakkaantuu, sillä nollia ei periaatteessa kanavaan lähetetä. Samalla kuva myös valitetta-35 vasti huononee, eli mitä suurempaa kvantisointiparametria käytetään, sitä ‘: ’': huonompi kuvan laatu on.• · • · ”* The discrete cosine transformed image 136 is exported to a quantization block 108 where quantization is performed, i.e. each element of the discrete cosine transformed: 30 images is divided by some constant. This constant may vary between macroblocks and even between embryos. The quantization parameter from which: · These quantization dividers are calculated is in the range of 1 to 31 by MPEG-4 standard. The more zeros a block gets, the better the block will be compressed, since zeros are not transmitted to the channel. At the same time, the image also deteriorates, unfortunately, i.e. the higher the quantization parameter is used, the ':': the lower the image quality.

6 1159456, 115945

Sitten kvantisoitu ja diskreettikosinimuunnettu kuva 138 viedään VLC-kooderiin 110 (Variable Length Coding), jonka ulostulosta tulee laitteella tuotettu koodattu kuva 140.The quantized and discrete cine transformed image 138 is then applied to a VLC encoder 110 (Variable Length Coding), the output of which becomes an encoded image 140 produced by the device.

Kvantisointilohkosta 108 viedään kvantisoitu ja diskreettikosini-5 muunnettu kuva 138 VLC-kooderin 110 lisäksi myös käänteiskvantisointiloh-koon 112, joka suorittaa sisääntuodulle kvantisoidulle ja diskreettikosinimuun-netulle kuvalle 138 käänteiskvantisoinnin, eli palauttaa sen mahdollisimman lähelle kuvaa 136. Sitten käänteiskvantisoitu kuva 142 viedään käänteisdis-kreettikosinimuunnoslohkoon 114, jossa suoritetaan käänteisdiskreettikosini-10 muunnos. Koska diskreettikosinimuunnos on häviötön muunnos, mutta kvanti-sointi ei, niin kuva 144 ei täysin vastaa kuvaa 134. Käänteiskvantisoinnin ja käänteisdiskreettikosinimuunnoksen tarkoituksena on tuottaa kooderissa samanlainen kuva kuin minkä koodauslaitetta vastaava dekooderi tuottaa. ”De-koodattu” kuva 144 viedään sitten lohkoon 124, jossa kuvaan lisättäisiin siitä 15 poistettu osuus, erodata, jos kuva olisi interkoodattu. Koska kysymyksessä on intrakoodattu kuva, ei siihen lisätä mitään. Tämän ohjauksen tekee lohko 120, jossa on valittuna intrakoodaus, jolloin lohkon 120 sisääntulossa ei ole mitään ja myöskään sen lohkoon 124 kytketty ulostulo 154 ei sisällä mitään. Intrakuva 146 tallennetaan sitten kehyspuskuriin 116. Näin kehyspuskuriin 116 tallenne-20 taan rekonstruoitu kuva eli koodattu kuva siinä muodossa, jossa se on dekoo-derissa suoritettavan dekoodauksen jälkeen. Kehyspuskureita on siis kaksi, ensimmäiseen 102 tallennetaan laitteeseen tuleva kuva ja toiseen 116 re-·:·*: konstruoitu ’’edellinen” kuva. Näin käsiteltiin siis kuvaa, jolle lohkoissa 104 ja j ‘ . 120 oli valittu intrakoodaus.Quantized and discrete cosine-5 transformed image 138 is exported from quantization block 108 to VLC encoder 110 as well as inverse quantization block 112 which performs inverse quantization of the imported quantized and discrete cosine transformed image 138, i.e. returns it to as close as 136 136 114, where the inverse discrete cosine-10 conversion 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 an image similar to that of the decoder corresponding to the encoder. The "de-coded" image 144 is then exported to block 124, where the portion removed from it is added, erodata, if the image were inter-coded. Since this is an intracoded image, nothing is added to it. This control is performed by a block 120 with intracoding selected, whereby the input of the block 120 has nothing and the output 154 coupled to its block 124 contains nothing. Intranet image 146 is then stored in frame buffer 116. Thus, frame image 116 stores a reconstructed image, i.e. an encoded image, in the form it is in after decoding in the decoder. Thus, there are two frame buffers, the first 102 storing an image arriving at the device and the second 116 re- ·: · *: constructing a “previous” image. Thus, the image covered by blocks 104 and j 'was processed. 120 was the selected intracode.

25 Seuraavaa kuvaa käsiteltäessä voidaan alkaa käyttämään liikkeen kompensointia. Tällöin lohkoissa 104 ja 120 on valittu interkoodaus. Kehys-[·>·, puskuriin 116 tallennettu kuva on nyt siis referenssikuva ja koodattava kuva on kehyspuskurista 102 saatava seuraava kuva 132. Kuten kuviosta 1 havaitaan, seuraava kuva viedään lohkon 104 lisäksi myös liikkeenestimointilohkoon 118. ;·· : 30 Liikkeenestimointilohkoon 118 saadaan myös kehyspuskurista 116 referenssi- kuva 150. Liikkeenestimointilohkon 118 toimintaa kuvataan myöhemmin tar-··> kemmin, mutta tässä vaiheessa siitä voidaan todeta, että siinä suoritetaan ha- .· *. ku, jossa pyritään löytämään referenssikuvasta lohkoja, jotka vastaavat koo dattavassa kuvassa olevia lohkoja. Lohkojen väliset siirtymät ilmaistaan liike-*· 35 vektoreina 152, 166, jotka viedään sekä VLC-kooderiin 110 että kehyspusku- riin 116.25 When working on the following image, you can start using motion compensation. Intercoding is then selected in blocks 104 and 120. Thus, the image stored in the frame buffer 116 is now a reference image and the image to be encoded is the following image 132 from the frame buffer 102. As seen in Figure 1, the following image is also applied to motion estimation block 118 in addition to block 104; reference frame 150 of frame buffer 116. The operation of motion estimation block 118 will be described in greater detail below, but at this point it may be noted that it performs a search. ku, which seeks to find in the reference image the blocks corresponding to the blocks in the image to be compiled. Inter-block offsets are expressed as motion * 35 vectors 152, 166, which are introduced into both VLC encoder 110 and frame buffer 116.

7 1159457, 115945

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 VLC-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 transform block 106 and quantization block 108 to VLC encoder 110.

5 VLC-kooderi 110 koodaa siis erodatan 138 ja liikevektorit 166, jol loin VLC-kooderin 110 ulostulosta 140 saadaan interkoodattu kuva. VLC-kooderi 110 saa siis syötteiksi diskreettikosinimuunnetun ja kvantisoidun erodatan 138 sekä liikevektorit 166. Kooderin ulostulosta 140 siis saadaan interkooda-tulle kuvalle koodattua kuvaa esittävää kompressoitua dataa, joka kuvaa koo-10 datun kuvan suhteessa referenssikuvaan käyttäen esitykseen liikevektoreita ja erodataa. Liikkeenestimointi tehdään luminanssilohkoja käyttäen, mutta koodattava erodata lasketaan sekä luminanssi- että krominanssilohkoille.Thus, the VLC encoder 110 encodes the difference data 138 and the motion vectors 166, whereby the output 140 of the VLC encoder 110 produces an intercoded image. Thus, the VLC encoder 110 receives inputs discrete cosine transformed and quantized erod data 138 and motion vectors 166. Thus, the encoder output 140 provides compressed data representing an encoded image, illustrating a size-10 data relative to a reference image using motion vectors and difference data. Motion estimation is done using luminance blocks, but the encoded difference data is calculated for both luminance and chrominance blocks.

Kyseisen interkoodatun kuvan erodatalle 138 suoritetaan myös käänteiskvantisointi käänteiskvantisointilohkossa 112 ja käänteisdiskreetti-15 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. Sitten lohkosta 124 viedään erodatan ja edellisen kuvan summa 146 kehyspuskuriin 116, jossa siihen vielä lisätään liikevektorien 152 vaikutus, jolloin saadaan rekonstruoitu kuva. Re-20 konstruoitu kuva vastaa sitä kuvaa, joka saadaan dekooderissa kun interkoodatun kuvan 140 koodaus puretaan. Näin kehyspuskurissa 116 on jälleen val-miina referenssikuva seuraavan kehyspuskurista 102 saatavan kuvan 132 •: · ·: koodausta varten.The eroded data 144 of said intercoded image is also subjected to inverse quantization in inverse quantization block 112 and inverse discrete-15 cosine transform in inverse discrete cosine transform block 114. The eroded data 144 so processed is wherein the effect of motion vectors 152 is further added thereto to obtain a reconstructed image. The constructed picture of Re-20 corresponds to the picture obtained in the decoder when decoding of the inter-coded picture 140 is performed. Thus, frame buffer 116 again has a reference image ready for encoding the next image 132:: · ·: obtained from frame buffer 102.

··,. Ohjauslohko 100 ohjaa kooderin toimintaa. Koodausmuodon valin- 25 nan lisäksi se ohjaa mm. oikean kvantisointisuhteen valintaa 160 ja VLC-koo-dauksen suorittamista 162. Samoin ohjauslohko 100 voi ohjata myös muita L-, kooderin lohkoja, vaikka sitä ei ole kuviossa 1 kuvattu. Esimerkiksi liikkeenes- timointilohkon 118 toimintaa ohjaa ohjauslohko 100.·· ,. The control block 100 controls the encoder operation. In addition to selecting the encoding format, it controls e.g. selecting the correct quantization ratio 160 and performing VLC coding 162. Similarly, control block 100 may control other L-encoder blocks, although not illustrated in FIG. For example, the operation of the motion estimation block 118 is controlled by the control block 100.

Seuraavaksi selostetaan liikkeenestimointikriteereiden ongelmaa » I » ·· · 30 viitaten kuvioon 2. Havainnollisuussyistä kuviosta 2 on jätetty yksi dimensio huomiotta. Kuviossa x-akseli 200 kuvaa hakualuetta, jolla koodattavaa lumi-nanssilohkoa liikutetaan esimerkiksi kaavassa 1 esitetyllä tavalla. Kuvion y-ak-. · ·, seli 202 kuvaa valoisuuden intensiteettiä, joka YUV-väriavaruudessa sijaitsee ‘ _ yleensä välillä [0, 255]. Referenssikuvan pinta hakualueella on kuvattu käyrällä : 35 204. Käyrät 206 ja 208 kuvaavat koodattavan lohkon pintaa eri hakuvaiheissa tai eri liikevektoreilla. Hakualueella liikkuvan koodattavan lohkon kandidaatti- 8 115945 lohko saadaan projisoitaessa koodattava lohko kohtisuoraan referenssikuvan 204 pinnalle ja näiden väliin jäävä pinta-ala 210, 212 kuvaa kiinnostuksen kohteena olevaa lohkojen välistä tilavuutta. Kuten aiemmin jo selostettiin, tunnetut liikkeenestimointikriteerit mittaavat jollain tapaa tätä koodattavan lohkon ja 5 kandidaattilohkon välistä tilavuutta, jonka minimin perusteella referenssilohko valitaan. Nyt kuvion 2 pinnoista 204, 206 ja 208 on nähtävissä, että referenssi-kuvan ja koodattavan kuvan valoisuudessa on tapahtunut selvää muutosta koodattavana olevalla alueella. Perinteinen tilavuutta mittaava liikkeenesti-mointikriteeri valitsisi minimitilavuuden 210 perusteella referenssilohkon lohkon 10 206 osoittamasta paikasta, kun taas maalaisjärki opastaisi valitsemaan refe renssilohkon lohkon 208 osoittamasta paikasta. Vaikka tilavuus 212 on huomattavasti tilavuutta 210 suurempi, vastaavat lohkojen pinnat lohkon 208 osoittamassa paikassa hyvin toisiaan. Tälläkin kertaa maalaisjärki on oikeassa, sillä sekä laadun että pakkaussuhteen kannalta on järkevämpää minimoida 15 koodattavan lohkon pinnanmuodostusten väliset erot kuin pintojen välinen tilavuus.Next, the problem of motion estimation criteria »I» ·· · 30 will be described with reference to Figure 2. For the sake of illustration, one dimension is ignored in Figure 2. In the figure, the x-axis 200 illustrates the search area in which the snow-nance block to be coded is moved, for example, as shown in formula 1. The y-ak of the figure. The graph 202 illustrates the intensity of luminance within the YUV color space, generally between [0, 255]. The surface of the reference image in the search area is represented by a curve: 35 204. The curves 206 and 208 depict the surface of the block to be coded at different search steps or different motion vectors. The candidate block to be encoded in the paging area is projected by projecting the block to be encoded perpendicular to the surface of the reference image 204 and the area 210, 212 between them illustrates the volume between blocks. As previously described, the known motion estimation criteria in some way measures this volume between the coding block and the 5 candidate blocks on the basis of which the reference block is selected. Now, it can be seen from surfaces 204, 206 and 208 of Figure 2 that there has been a clear change in the brightness of the reference image and the image to be coded in the region to be coded. A conventional volumetric motion estimation criterion would select a reference block from a location indicated by block 10206 based on a minimum volume 210, while common sense would guide you to select a reference block from a location indicated by block 208. Although the volume 212 is significantly greater than the volume 210, the surfaces of the blocks at the location indicated by the block 208 are very similar. This time too, common sense is correct, since it is more sensible, both in terms of quality and packaging ratio, to minimize the differences in surface formation between the 15 blocks to be coded than the volume between surfaces.

Esimerkiksi MPEG-4 koodauksessa käytetään lohkojen väliselle erodatalle diskreettikosinimuunnosta 8x8 (NxN) -kokoiselle lohkolle 20 ^v)=|a»)qv)^/(x.y)co»^^^cos(2j'2-?l,<t’. (2) missä C(u)C(v) = 'Λ, josw = v = 0, C(u)C(v)= 1, jos u, v φ 0, F(u,v) on muunne-·: : tun lohkon alkio paikassa (u,v), ]afix,y) on muunnettavan lohkon alkio paikassa (*θ0· .···. Näin dc-kerroin, eli muunnetun lohkon alkio (0,0) lasketaan kaavalla l'·’: 25 F(0,0) = i££/(x,.y). (3)For example, in MPEG-4 encoding, discrete cosine transform between blocks is used for an 8x8 (NxN) block of size 20 ^ v) = | a ») qv) ^ / (xy) c0 ^ ^^^ cos (2j'2-1? <T ' . (2) where C (u) C (v) = 'Λ, if w = v = 0, C (u) C (v) = 1 if u, v φ 0, F (u, v) is ·:: The element of the known block at (u, v),] afix, y) is the element of the block to be converted at (* θ0 ·. ···). This is how the dc factor, ie the element of the converted block (0,0) · ': 25 F (0,0) = i ££ / (x,. Y). (3)

* O* Oh

Muunnetun lohkon dc-kertoimeen vaikuttaa siis vain koodattavan ja referenssi-lohkon välinen kokonaistilavuus. Lohkojen väliset pinnanmuodostuserot esite-; · tään muilla eli ns. ac-komponenteilla. Lohkojen välinen erodata muuntuu siis ; ’": matriisiksi 30 • · : dc ac0, ac02 ...The dc coefficient of the converted block is thus affected only by the total volume between the encoded and the reference block. Surface formation differences between blocks in brochures; · Others, so-called. ac components. The difference between the blocks is thus transformed; '": Matrix 30 • ·: dc ac0, ac02 ...

acl0 acu acl2 ...acl0 eye acl2 ...

; ·,; GC2 q öft-2,1 ^2,2 9 115945; · ,; GC2 q öft-2,1 ^ 2,2 9 115945

Nyt kuvion 2 mukainen erodata 210 aiheuttaisi muunnettuun lohkoon F keskisuuren dc-kertoimen ja suuria ac-kertoimia, kun taas erodata 212 aiheuttaisi muunnettuun lohkoon F suuren dc-kertoimen ja pieniä ac-kertoimia. Kvantisoi-taessa näihin lohkoihin jää kaikki kvantisointijakajaa suuremmat kertoimet, kun 5 sitä pienemmät nollaantuvat. Eli kuvan 2 mukaisessa tapauksessa erodatan 212 kaltaisella valinnalla kanavaan lähetetään yleensä vain kvantisoitu dc-kerroin, kun taas erodatan 210 kaltaisella valinnalla kanavaan joudutaan lähettämään dc-kerroin ja useita ac-kertoimia. Nyt on siis selvää, kumman kaltainen erodata on edullisempaa lähettää. Kun otetaan vielä kvantisoinnin aiheuttamat 10 virheet huomioon, on myös selvää kumpi erodatoista tuottaisi parempilaatuista kuvaa.Now, the erod data 210 of Figure 2 would produce a medium dc coefficient and high ac coefficients for the converted block F, while the erod data 212 would cause a high dc coefficient and small ac coefficients for the converted block F. When quantizing, all coefficients greater than the quantization divider remain in these blocks when 5 smaller ones are reset. That is, in the case of Figure 2, a channel-like selection of eroded data 212 generally transmits only a quantized dc coefficient, whereas a selection of eroded data 210 has to transmit a dc-factor and several ac coefficients to the channel. So now it is clear which kind of eroded data is cheaper to send. Even taking into account the errors caused by quantization, it is also clear which of the eroded data would produce a better quality image.

Kuviossa 3 esitellään parannettua liikkeenestimointia. Kuviossa on edelleen jätetty havainnollisuuden vuoksi kolmas dimensio huomiotta. Kuten kuviossa 2, akselit x 300 ja y 302 kuvaavat edelleen hakualuetta ja valoisuutta, 15 ja käyrä 304 kuvaa referenssikuvan pintaa hakualueella 300. Käyrä 306 kuvaa koodattavan lohkon pintaa erään liikevektorin osoittamassa kohdassa, jolloin vastaava kandidaattilohko saadaan koodattavan lohkon 306 projektiona refe-renssipinnalle 304. Kuviossa 2 esitellyn esimerkin mukaan oli edullisempaa valita sellainen referenssilohko, jonka pinnanmuodostus on mahdollisimman 20 lähellä koodattavan lohkon pinnanmuodostusta. Hakijan suorittamien kokeiden mukaan pätevä tapa vertailla lohkojen pinnanmuodostusta on "yhdistää" ne hyväksikäyttäen lohkojen keskiarvoja. Kuviossa 3 koodattavaa lohkoa 306 on :·*: siirretty referenssipinnan suuntaan koodattavan lohkon ja kandidaattilohkon ·*·.. keskiarvojen erotuksen 310 verran. Jos esimerkiksi Kl kuvaa koodattavan loh- .···. 25 kon 306 luminanssipikseleiden keskiarvoa ja Kr vastaavan kandidaattilohkon luminanssipikseleiden keskiarvoa, liikutetaan koodattavaa lohkoa |Kl - A>|:nFigure 3 illustrates an improved motion estimation. For the sake of clarity, the third dimension is still ignored in the figure. As in Figure 2, the axes x 300 and y 302 further represent the search area and luminance, 15 and curve 304 represent the reference image surface in search area 300. Curve 306 depicts the surface of the coded block at a point indicated by a motion vector. According to the example shown in Figure 2, it was more advantageous to select a reference block having a surface formation as close as possible to the surface of the block to be coded. According to the tests performed by the applicant, a valid way of comparing the surface formation of the blocks is to "combine" them using the mean values of the blocks. In Fig. 3, the coding block 306 is: · *: moved in the direction of the reference surface by the difference 310 of the mean values of the coded block and the candidate block · * · .. For example, if Kl describes a block to be encoded ···. 25 kon 306 average of the luminance pixels and Kr of the corresponding candidate block luminance pixels, moving the coding block | Kl - A> |

• I• I

’···. osoittaman arvon 310 verran referenssikuvan pintaa 304 kohden. Käyrä 308 kuvaa tätä siirrännäislohkoa. Näin voidaan laskea lohkojen pintojen muotoero-ja, joka tapahtuu käytännössä esimerkiksi soveltamalla kaavaa 1 siirrännäis- • : 30 lohkon 308 ja kandidaattilohkon tilavuuseron 312 mittaamiseksi. N x N kokois- ..: ten lohkojen tilavuuserolle A muodostuu täten kaava I * * * O ^ = (4) . 1=0 j=0'···. of the reference image per surface 304 of the reference image. Curve 308 illustrates this implant block. Thus, the difference in shape between the surfaces of the blocks can be calculated, which occurs in practice, for example, by applying formula 1 to measure the volume difference 312 of the implant 308 and the candidate block. The volume difference A of N x N blocks thus has the formula I * * * O ^ = (4). 1 = 0 j = 0

» I»I

:: missä xij on koodattavan ja yu kandidaattilohkon pikselin (i,j) arvo.:: where xij is the value of the pixel (i, j) of the candidate block to be encoded and yu.

10 11594510 115945

Eräässä suoritusmuodossa huomioidaan myös kvantisoinnista aiheutuva lohkottumisilmiö. Jos esimerkiksi diskreettikosinimuunnetaan lohko, jonka keskiarvo on 4,875, tulee muunnetun lohkon dc-kertoimeksi kaavan 3 mukaan 39. Jos käytetään kvantisointijakajaa, joka on suurempi kuin 39, ky-5 seinen dc-kerroin nollaantuu. Tällöin kvantisoinnin aiheuttama lohkottumisilmiö on kyseisellä lohkolla juuri tuon keskiarvon 4,875 suuruinen. Tämä lohkottumisilmiö on jaksollinen kvantisointijakajan moduulin suhteen eli kvantisoitaes-sa dc-kerrointa D kvantisointijakajalla Q, voidaan lohkottumista L kuvata yhtälöllä 10 L =Dmod{Q). (5)In one embodiment, the segmentation effect due to quantization is also considered. For example, if a discrete cosine convertible block with an average of 4.875 is converted to a dc coefficient of the converted block according to equation 3, 39. If a quantization divisor greater than 39 is used, the ky-5 dc coefficient is reset. In this case, the segmentation phenomenon caused by the quantization in that particular block is just that average of 4.875. This segmentation phenomenon is periodic with respect to the quantization divisor module, i.e., when quantizing the dc coefficient D by the quantization divisor Q, the segmentation L can be represented by 10 L = Dmod {Q). (5)

Kun tiedetään, että dc-kerroin saadaan kaavasta 3, voidaan yhtälö 5 esittää muodossa 15 L=Smod(Q*8\ (6) jossa S kuvaa lohkon kokonaistilavuutta. Tämä lohkottumista kuvaava tekijä L voidaan lisätä moduulirangaistuksena siirrännäislohkon 308 ja referenssiloh-20 kon tilavuuseroon 312. Alan ammattilaiselle on toki selvää, että yhtälö 6 ei ole ainoa mahdollinen yhtälö, joka kuvaa moduulirangaistusta, vaan useita vas-, t; j * taavia, samaa ideaa hyödyntäviä yhtälöitä voidaan muodostaa.Knowing that the dc coefficient is given by Formula 3, equation 5 can be represented as 15 L = Smod (Q * 8 \ (6) where S represents the total volume of the block. This segmentation factor L can be added as a modular penalty to the difference between graft 308 and reference block 20. 312. It is, of course, obvious to a person skilled in the art that equation 6 is not the only possible equation describing the modular penalty, but that a number of corresponding equations utilizing the same idea can be formed.

·:· ! Eräässä suoritusmuodossa huomioidaan, ei laadun, vaan pakkaus- ·*·., tehokkuuden kannalta, että myös dc-kertoimen koodaaminen vaatii kaistaa.·: ·! In one embodiment, it is noted, not for quality but for compression efficiency, that encoding of the dc coefficient also requires bandwidth.

.*··. 25 Käytettäessä hyvin suuria kvantisointijakajia, eli pyrittäessä maksimaaliseen : v, pakkaustehokkuuteen, on suotavaa minimoida myös lohkon kokonaistilavuus.. * ··. When very large quantization dividers are used, that is, to achieve maximum: v, compression efficiency, it is also desirable to minimize the total block volume.

« I«I

Optimaalinen vaikutus saadaan, kun lasketaan lohkolle tilavuusrangaistus T '··’ sen kokonaistilavuuden ja käänteisen kvantisointijakajan välisellä funktiolla.The optimum effect is obtained by calculating the volume penalty T '··' for a block by its function between its total volume and the inverse quantization divider.

Yksinkertainen lineaarinen esitys tälle funktiolle olisi esimerkiksi '·*· i 30 r = S/(fiu-6+l)f (7) / · ’·. jossa Qmax kuvaa suurinta mahdollista kvantisointijakajaa. Epälineaarisilla funk- ’·* tioilla voidaan tuottaa parempilaatuista kuvaa, mutta liikkeenestimoinnin im- :: 35 plementaatiosta ja käyttötarkoituksesta riippuen kannattaa harkita niiden käy- “·” tön järkevyyttä.A simple linear representation of this function would be, for example, '· * · i 30 r = S / (fiu-6 + l) f (7) / ·' ·. where Qmax represents the maximum quantization divisor. Non-linear functions can produce better quality images, but depending on the im- plementation and use of motion estimation, it is worth considering the rationality of their use.

11 11594511 115945

On edelleen selvää, että edellä lueteltuja rangaistuksia ja siirrän-näislohkon ja referenssilohkon tilavuuseroa voidaan painottaa halutulla tavalla. Eräässä suoritusmuodossa on edullista painottaa siirrännäislohkon ja referenssilohkon tilavuuseroa, sillä se on selvästi tärkein edellä mainituista kuvan-5 laatuun vaikuttavista tekijöistä.It is further clear that the penalties listed above and the volume difference between the displacement block and the reference block can be weighted as desired. In one embodiment, it is preferable to emphasize the volume difference between the graft block and the reference block, since it is by far the most important of the above-mentioned factors affecting the quality of Figure 5.

Kuvatussa suoritusmuodossa lohkon tilavuuksia kuvaavat arvot muodostetaan lohkon pikseleiden summana, mutta ne voidaan muodostaa myös lohkon pikseleiden neliöllisenä summana tai jotakin muuta tarkoitukseen matemaattisesti sopivaa tapaa käyttäen.In the illustrated embodiment, the values representing block volumes are formed as the sum of block pixels, but may also be formed as a square sum of block pixels or any other mathematically appropriate method.

10 Seuraavaksi kuvion 4 vuokaavioon viitaten selostetaan menetelmää peräkkäisten kuvien koodaamiseksi. Esimerkissä kuvataan suoritusmuoto, jossa kuvan koodaaminen suoritetaan makrolohkoittain. Koodaus esitetään ainoastaan ajallisen redundanssin vähentämisen kannalta yhdelle koodattavalle kuvan makrolohkolle, eikä muita redundanssin vähentämismenetelmiä kuvata 15 tässä yhteydessä.Next, with reference to the flow chart of Figure 4, a method for encoding sequential images will be described. The example illustrates an embodiment in which coding of an image is performed by macroblock. The coding is presented only in terms of temporal redundancy reduction for one macroblock of the image to be encoded, and no other redundancy reduction methods are described herein.

Menetelmän suorittaminen aloitetaan lohkossa 400, jossa kooderi käynnistetään. Lohkossa 402 haetaan koodattavan kuvan makrolohkon lumi-nanssidata kehysmuistista sekä haetaan intra- ja interlohkojen kvantisoinnissa käytettävät dc-kertoimien kvantisointijakajat. Makrolohko on esim. MPEG-4 20 standardin mukainen 16x16 pikselin kokoinen kuva-alue, joka on jaettu neljään luminanssilohkooon ja kahteen krominanssilohkoon, jotka ovat kaikki 8 x * i · 8 pikselin kokoisia. Liikkeenestimointi suoritetaan yleensä vain luminanssiloh- ·:· · koille ja krominanssilohkot koodataan saadun liikevektorin perusteella.Execution of the method is started in block 400 where the encoder is started. In block 402, the luminance data of the macroblock of the image to be encoded is retrieved from the frame memory, and the dc coefficients are used to quantize the intra and interlocks. A macroblock is, for example, a 16x16 pixel image area in accordance with the MPEG-4 20 standard, divided into four luminance blocks and two chrominance blocks, all 8x * i · 8 pixels in size. Motion estimation is generally performed only on luminance block sizes: and the chrominance blocks are coded based on the resulting motion vector.

Lohkossa 404 lasketaan kunkin koodattavan lohkon sisältämien • * · /·, 25 pikseleiden summat sekä keskiarvot, joiden avulla makrolohkolle lasketaan • » kustannusfunktion arvo lohkossa 406. Intramakrolohkon kustannusfunktioon • · · voidaan käyttää tunnetun tekniikan mukaista kustannusfunktiolaskentaa, jossaIn block 404, the sum of the * * · / ·, 25 pixels contained in each block to be encoded is calculated, as well as averages used to calculate the value of the cost function in block 406. For the cost function of the intramacroblock,

• I• I

’*·*' lasketaan lohkon pikseleiden sekä lohkon keskiarvon välinen tilavuus, lisättynä aiemmin esitellyllä moduulirangaistuksella. Makrolohkon kustannusfunktio !.: i 30 muodostetaan esimerkiksi sen osien eli lohkojen kustannusfunktioiden sum- ♦ * » mana.'* · *' Calculates the volume between the pixels of a block and the average of the block plus the module penalty described above. The cost function of the macroblock! I: 30 is formed, for example, by the sum of the cost functions of its parts, i.e. the blocks ♦ * »Mana.

!:. Lohkossa 410 haetaan koodattavalle makrolohkolle kandidaattiliike- ]·'·, vektorin määräämä kandidaattimakrolohko referenssikuvan hakualueelta, jon- I » ka kullekin 8 x 8-lohkolle lasketaan summat ja keskiarvot lohkossa 412. Seu-!:. In block 410, the candidate macro macroblock to be coded is searched for the macroblock to be coded from the reference image search area, for which each of the 8 x 8 blocks is summed and averaged in block 412.

* I* I

·: 35 raavaksi lohkossa 414 lasketaan jokaiselle lohkolle kustannusfunktion arvo ”’· kaavan 4 ja mahdollisesti kaavojen 6 ja 7 avulla. Myös muut kustannusfunkti- 12 115945 on tekijät lisätään tässä vaiheessa. Näitä voivat olla mm. pitkän liikevektorin aiheuttama rangaistus tai nollaliikevektorin suosiminen.·: 35 in block 414, the value of the cost function "" · for each block is calculated using formula 4 and possibly formulas 6 and 7. Also, the other cost features are added at this stage. These may include e.g. punishment caused by a long motion vector or favoring a zero motion vector.

Makrolohko voidaan MPEG-4 standardin mukaan koodata joko yhtä tai neljää liikevektoria käyttäen ja näin lohkossa 416 tallennetaan jokaisen loh-5 kon kustannusfunktion arvon minimi ja liikevektori, jolla se saavutettiin. Jos jonkun lohkon minimi alitetaan myöhemmin jollain toisella liikevektorilla, korvataan vanha kustannusfunktion arvo ja liikevektori uusilla. Lohkossa 420 lasketaan kustannusfunktion arvo kokonaiselle makrolohkolle eli tapaus, jossa käytetään vain yhtä liikevektoria. Tämä on helpointa laskea yksinkertaisesti sum-10 maamalla jokaisen lohkon kustannusfunktion arvot yhteen. Jälleen tallennetaan kustannusfunktion minimiarvo ja liikevektori muistiin lohkossa 422.The macroblock can be encoded according to the MPEG-4 standard using either one or four motion vectors, and thus, in block 416, the minimum value of the cost function of each block and the motion vector at which it was achieved are stored. If the minimum of one block is later lowered by another motion vector, the value of the old cost function and the motion vector are replaced by new ones. In block 420, the value of the cost function for the entire macroblock is calculated, i.e., a case where only one motion vector is used. It is easiest to simply sum sum-10 by grounding the values of the cost function for each block. Again, the minimum value of the cost function and the motion vector are stored in block 422.

Seuraavaksi tarkistetaan onko kaikki liikevektorikandidaatit jo tutkittu 426. Jos niitä on vielä jäljellä, siirrytään nuolen 428 mukaisesti takaisin lohkoon 410, jossa haetaan seuraavan liikevektorikandidaatin määräämä refe-15 renssimakrolohko. Siinä tapauksessa, että kaikki liikevektorit on jo käyty läpi, siirrytään nuolen 430 mukaisesti valitsemaan joko yhden (inter) tai neljän (in-ter4v) liikevektorin koodausta lohkoon 432. On huomioitava, että makrolohkon koodaaminen neljällä liikevektorilla vie enemmän kaistaa vektoreiden lukumäärän vuoksi, joten valittaessa tämä vaihtoehto täytyy sen kustannusfunktion 20 arvo olla pienempi kuin yhden liikevektorin vaihtoehdossa. Nuolet 418 ja 424 esittävät kustannusfunktioiden arvojen lukemista. Koodausmuodon valinnassa * i· 432 siis suositaan inter-koodausta.Next, it is checked whether all the motion vector already been examined 426. If they are still available, go to the arrow 428 in accordance with the back to block 410 where the retrieved motion vector determined by the following refe-15 renssimakrolohko. In the case where all the motion vectors have already been completed, move the arrow 430 to select, in accordance with either one (on) or four (in-ter4v), the motion vector coding block 432. It is noted that the macroblock encoding of the four motion vector takes more bandwidth due to the number of vectors, so the choice of this option must have a value for its cost function 20 less than in the one motion vector option. The arrows 418 and 424 show the values of the cost functions. Thus, inter-encoding is preferred when selecting the encoding format * i · 432.

: * * · ·:· · Lohko 434 esittää toista koodausmuodon valintaa, jossa päätetään käytetäänkö lohkossa 432 valittua koodausmuotoa vai intra-koodausta. Nuoli .··. 25 408 esittää intra-lohkolle laskettua kustannusfunktion arvon lukua, jota verra- * * ;·’·, taan lohkossa 432 valituksi tulleen koodausmuodon kustannusfunktion arvoon.: * * · ·: · · Block 434 represents another selection of encoding format that decides whether to use the selected encoding format or intra-coding in block 432. Arrow ··. 25,408 represents the value of the cost function value calculated for the intra-block, which is compared to the cost function value of the coding mode selected in block 432.

« «««

Pienimmän arvon saavuttanut koodausmuoto valitaan ja siirrytään lohkoon • # ***‘ 436, jossa koodataan kuvan koodattava lohko pienimmän kustannusfunktion arvon antavaa liikevektorikandidaattia käyttäen, joka liikevektorikandidaatti : 30 määrittää liikkeen kuvan koodattavan lohkon ja referenssikuvan hakualueella * * » olevan kandidaattilohkon välillä. Tämän jälkeen lohkosta 436 siirrytään 402:een, jossa jatketaan koodausta. Kuviossa 4 ei ole kuvattu menetelmän lo-,···, pettämistä, sillä sehän voidaan lopettaa periaatteessa millä hetkellä hyvänsä sammuttamalla kooderi, tosin koodaus voi tällöin jäädä kesken. Menetelmän 35 suorittaminen loppuu kuitenkin sitten, kun kaikki halutut peräkkäiset kuvat on : ' prosessoitu kuvatulla tavalla. On huomattava, että vaikka kuviossa 4 toiminta 13 115945 kuvataan pääasiassa peräkkäisenä, voidaan sitä suorittaa myös ainakin osittain rinnakkaisesti, esimerkiksi lohko 436 voidaan suorittaa yhdelle makroloh-kolle ja samanaikaisesti voidaan jo aloittaa seuraavan makrolohkon käsittely lohkossa 402. Samoin esimerkiksi lohkoja 406 ja 410, 420 ja 414, sekä 426 ja 5 424 voidaan suorittaa rinnakkain.The lowest value encoding mode is selected and proceeded to block # # *** '436, which encodes the image to be coded using a motion vector candidate providing the value of the least cost function, which motion defines a motion between the image coding block and the reference image search block * * ». Thereafter, block 436 is switched to 402, where coding is continued. Figure 4 does not illustrate the method of losing, ···, because it can be terminated in principle at any moment by shutting down the encoder, although encoding may be lost. However, the method 35 ends when all the desired sequential images are: processed as described. It should be noted that although the operation 13115945 in FIG. 4 is mainly described in sequence, it may also be performed at least partially in parallel, e.g. block 436 may be performed on a single macroblock and simultaneous processing of the next macroblock on block 402. and 414, and 426 and 5,424 can be performed in parallel.

Kuvattu menetelmä voidaan toteuttaa esimerkiksi kuviossa 1 kuvattua laitetta käyttämällä, mutta muunkinlaiset laitteet voivat soveltua menetelmän toteuttamiseen. Kuviossa 1 kuvataan järjestely peräkkäisten kuvien koodaamiseksi. Järjestely käsittää kooderin 110, joka on konfiguroitu koodaa-10 maan kuvan koodattava lohko pienimmän kustannusfunktion arvon antavaa liikevektorikandidaattia käyttäen, joka liikevektorikandidaatti määrittää liikkeen kuvan koodattavan lohkon ja referenssikuvan hakualueella olevan kandidaatti-lohkon välillä. Lisäksi kooderiin 110 on kytketty liikkeenestimoija 118, joka on konfiguroitu laskemaan sekä koodattavan lohkon että kandidaattilohkon ver-15 tailtavien pikseleiden tilavuuksia kuvaavat arvot ja muodostamaan liikevektori-kandidaatin kustannusfunktion arvo hyväksikäyttäen koodattavan lohkon ja kandidaattilohkon vertailtavien pikseleiden välisiä erotuksia sekä niistä vähennettyä koodattavan lohkon ja kandidaattilohkon vertailtaville pikseleille laskettujen tilavuuksia kuvaavien arvojen pikselikohtaista erotusta.The method described may be implemented, for example, using the apparatus described in Figure 1, but other types of apparatus may be suitable for carrying out the method. Figure 1 illustrates an arrangement for encoding sequential images. The arrangement comprises an encoder 110 configured to encode an image coding block of an image using a motion vector candidate providing 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. Further, a motion estimator 118 is configured to compute the values representing the volumes of the pixels to be compared in both the coded block and the candidate block and to construct the value of the motion vector candidate cost utilizing the differences between pixel-by-pixel difference between calculated volume values.

20 Kuviossa 1 esitetyt lohkot voidaan toteuttaa yhtenä tai useampana asiakaskohtaisena integroituna piirinä (Application-Specific Integrated Circuit, ASIC). Myös muunlaiset toteutukset ovat mahdollisia, esimerkiksi erillisistä lo- ':" ·* giikkakomponenteista rakennettu piiri, prosessori ohjelmistoineen tai pelkkä tie- • · • tokoneohjelma. Myös näiden eri toteutustapojen sekamuoto on mahdollinen. 25 Alan ammattilainen huomioi toteutustavan valinnassa esimerkiksi laitteen kool- • · · :*·*: le ja virrankulutukselle asetetut vaatimukset, tarvittavan prosessointitehon, vai- • · . · · *. mistuskustannukset sekä tuotantomäärät. Mainitut välineet voidaan sijoittaa lait teen kuvattuihin lohkoihin tai sitten ne voidaan toteuttaa kuvattuihin lohkoihin liit-. . tyvinä uusina lohkoina. Kuvattu menetelmä ja järjestely peräkkäisten kuvien 30 koodaamiseksi voidaan siis toteuttaa myös tietokoneohjelmana. Tietokoneoh-jelma voidaan tallentaa sopivalle ohjelmiston jakeluvälineelle, esimerkiksi CD-ROM.ille tai tietokonemuistille. Tietokoneohjelma voidaan siirtää myös tietolii-kennesignaalina valmistajalta asiakkaalle, esimerkiksi Internetin ja/tai puhelin-.' . verkon ja/tai matkapuhelinverkon kautta ja/tai jotakin muuta paketti- tai piirikyt- **’; 35 kentäistä siirtotapaa käyttäen.The blocks shown in Figure 1 may be implemented as one or more application-specific integrated circuits (ASICs). Other types of implementations are possible, for example, a circuit built from separate logic components, a processor with software, or just a computer program. • A mixed form of these various embodiments is also possible. ·: * · * And power requirements, processing power, processing costs, production costs, and production volumes, said devices may be located in or described as new blocks attached to the described blocks. Thus, the described method and arrangement for encoding sequential images 30 may also be implemented as a computer program .The computer program may be stored on a suitable software distribution medium, such as a CD-ROM or computer memory, and may also be transmitted as a communication signal from the manufacturer to the customer, e.g. why the Internet and / or telephone. ' . via a network and / or a mobile telephone network and / or some other packet or circuit switched ** '; 35 field transfer method.

115945 14115945 14

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 keksinnöllisen ajatuksen puitteissa. Esimerkiksi, vaikka edellä on kuvattu kek-5 sinnön hyödyntämistä vain MPEG-4 tai H.263 standardien mukaisessa vide-onkoodauksessa, on selvää, että keksintöä voidaan soveltaa myös muihin lohkopohjaiseen liikkeenestimointiin perustuviin videonkoodausmenetelmiin. Edelleen on selvää, että keksinnön mukainen liikkeenestimointi ei ole sidoksissa edellä mainittuun täyshakuun, vaan se on käytettävissä myös erilaisten 10 hakualgoritmien yhteydessä. Keksinnön mukainen menetelmä ei myöskään ole sidottu liikkeenestimoinnissa käytettyyn resoluutioon, lohkokokoon tai loh-komuotoon. Alan ammattilainen voi modifioida esitettyjä kaavoja mm. siten, että matemaattisesti ekvivalentit tulokset saavutetaan mutta laskentatehok-kaammin.Although the invention has been described above with reference to the example of the accompanying drawings, it is clear that the invention is not limited thereto, but that it can be modified in many ways within the scope of the inventive idea set forth in the appended claims. For example, although the use of the kek-5 invention only in video on-coding according to the MPEG-4 or H.263 standards has been described above, it is clear that the invention can also be applied to other block coding methods based on motion estimation. Further, it is clear that the motion estimation according to the invention is not linked to the full search referred to above, but is also available with various search algorithms. The method according to the invention is also not bound to the resolution, block size or block format used in motion estimation. The formulas shown may be modified by one of ordinary skill in the art e.g. in such a way that mathematically equivalent results are achieved but more computationally.

M I MM I M

· * * • * · # • · • · * I | | • · * · · • » • · * · · I · I « · I I I · I » > * « % %· * * • * · # • · • · * I | | • * · • »• · * I I«>>> *> * * * *%

Claims (22)

115945115945 1. Menetelmä peräkkäisten kuvien koodaamiseksi, käsittäen: koodataan (436) kuvan koodattava lohko pienimmän kustannus-funktion arvon antavaa liikevektorikandidaattia käyttäen, joka liikevektorikandi-5 daatti määrittää liikkeen kuvan koodattavan lohkon ja referenssikuvan hakualueella olevan kandidaattilohkon välillä; tunnettu siitä, että ennen koodaamista: lasketaan (404, 412) sekä koodattavan lohkon että kandidaattilohkon vertailtavien pikseleiden tilavuuksia kuvaavat arvot; ja 10 muodostetaan (414; 420) liikevektorikandidaatin kustannusfunktion arvo hyväksikäyttäen koodattavan lohkon ja kandidaattilohkon vertailtavien pikseleiden välisiä erotuksia sekä niistä vähennettyjä koodattavan lohkon ja kandidaattilohkon vertailtaville pikseleille laskettujen tilavuuksia kuvaavien arvojen pikselikohtaisia erotuksia.A method for encoding sequential images, comprising: encoding (436) an image coding block using a motion vector candidate having the lowest cost function, which motion vector candidate determining motion between the image coding block and the candidate block in the reference image search area; characterized in that before coding: calculating (404, 412) values representing the volumes of the pixels to be compared in both the coding block and the candidate block; and 10 generating (414; 420) the value of the motion vector candidate cost function utilizing the differences between the pixels to be coded and the candidate block to compare, and subtracting the pixel-by-pixel values of the calculated values for the comparative pixels of the coding block and candidate block. 2. Patenttivaatimuksen 1 mukainen menetelmä, tunnettu siitä, että liikevektorikandidaatin kustannusfunktion arvon muodostaminen käsittää lisäksi: vaikutetaan kustannusfunktion arvoon lohkottumista kuvaavalla moduulirangaistuksellaMethod according to claim 1, characterized in that generating the value of the cost function of the motion vector candidate further comprises: influencing the value of the cost function by a module penalty describing the segmentation. 3. Patenttivaatimuksen 2 mukainen menetelmä, tunnettu siitä, että moduulirangaistus muodostetaan käyttäen koodauksen kvantisoinnissa ·:··: käytettävää kvantisointijakajaa sekä koodattavan lohkon ja kandidaattilohkon :'. välistä tilavuuseroa kuvaavaa arvoa.Method according to claim 2, characterized in that the module penalty is formed by using the quantization divider ·: ··: used in the coding quantization and the block to be coded and the candidate block: '. volume. • »# .*··. 4. Jonkin edellisen patenttivaatimuksen mukainen menetelmä, :v, 25 tunnettu siitä, että liikevektorikandidaatin kustannusfunktion arvon muo- \! dostaminen käsittää lisäksi: vaikutetaan kustannusfunktion arvoon koodattavan lohkon ja kandidaattilohkon välistä tilavuuseroa kuvaavan arvon ja koodauksen kvantisoinnis-i·: : sa käytettävän kvantisointijakajan välisellä funktiolla.• »#. * ··. A method according to any one of the preceding claims, characterized in that the value of the cost function of the motion vector candidate is! further comprising: influencing the value of the cost function by a function representing the volume difference between the coded block and the candidate block and the quantization divisor used in the quantization-i · coding. 5. Jonkin edellisen patenttivaatimuksen mukainen menetelmä, tunnettu siitä, että liikevektorikandidaatin kustannusfunktion arvon muo-. ’ · *, dostaminen käsittää lisäksi: [·” vaikutetaan kustannusfunktion arvoon liikevektorikandidaatin pituu- della. 115945Method according to one of the preceding claims, characterized in that the value of the cost function of the motion vector candidate is '· *, Further comprising: [·' affecting the value of the cost function over the length of the motion vector candidate. 115945 6. Jonkin edellisen patenttivaatimuksen mukainen menetelmä, tunnettu siitä, että lohkon tilavuuksia kuvaavat arvot muodostetaan lohkon pikseleiden summana tai lohkon pikseleiden neliöllisenä summana.Method according to one of the preceding claims, characterized in that the values representing the volumes of the block are formed as the sum of the pixels of the block or the square sum of the pixels of the block. 7. Jonkin edellisen patenttivaatimuksen mukainen menetelmä, 5 tunnettu siitä, että koodattavan lohkon ja kandidaattilohkon pikseleille muodostetaan pikselikohtaiset tilavuuksia kuvaavat arvot jakamalla lohkon tilavuuksia kuvaava arvo yhdelle pikselille.A method according to any one of the preceding claims, characterized in that the pixels of the block to be coded and the candidate block are generated volume-specific pixel values by dividing the volume-specific volume of the block by one pixel. 8. Patenttivaatimuksen 7 mukainen menetelmä, tunnettu siitä, että lohkon pikselikohtainen tilavuutta kuvaava arvo saadaan lohkon pikselei- 10 den keskiarvosta.A method according to claim 7, characterized in that the pixel-specific volume value of the block is obtained from the average pixel of the block. 9. Jonkin edellisen patenttivaatimuksen mukainen menetelmä, tunnettu siitä, että koodattavan lohkon ja kandidaattilohkon pikseleille muodostetaan pikselikohtaiset tilavuuksia kuvaavat arvot laskettaessa sekä koodattavan lohkon että kandidaattilohkon vertailtavien pikseleiden tilavuuksia 15 kuvaavat arvot.A method according to any one of the preceding claims, characterized in that pixel-specific volume values are generated for the pixels of the block to be encoded and the candidate block in calculating the volumes 15 of both the encoded block and the candidate block for comparative pixels. 10. Tietokoneohjelma peräkkäisten kuvien koodaamiseksi, tunnettu siitä, että tietokoneohjelma sisältää ohjelmakäskyt, jotka aiheuttavat tietokoneen suorittamaan jonkin edellisen patenttivaatimuksen 1-9 mukaisen menetelmän peräkkäisten kuvien koodaamiseksi.A computer program for encoding sequential images, characterized in that the computer program contains program instructions which cause the computer to perform a method for encoding sequential images according to any one of claims 1-9. 11. Ohjelmiston jakeluväline, tunnettu siitä, että se sisältää pa tenttivaatimuksen 10 mukaisen tietokoneohjelman.Software distribution medium, characterized in that it comprises a computer program according to claim 10. .. ·‘ 12. Tietokonemuisti, tunnettu siitä, että se sisältää patenttivaa- •: · : timuksen 10 mukaisen tietokoneohjelman... · '12. Computer memory, characterized in that it contains a computer program according to Claim 10:. : ‘ . 13. Tietoliikennesignaali, tunnettu siitä, että se sisältää patentti- 25 vaatimuksen 10 mukaisen tietokoneohjelman.: '. 13. A telecommunications signal, characterized in that it comprises a computer program according to claim 10. : ·. ·. 14. Järjestely peräkkäisten kuvien koodaamiseksi, käsittäen: *·.·. kooderin (110), joka on konfiguroitu koodaamaan kuvan koodattava lohko pienimmän kustannusfunktion arvon antavaa liikevektorikandidaattia , , käyttäen, joka liikevektorikandidaatti määrittää liikkeen kuvan koodattavan loh- :;; : 30 kon ja referenssikuvan hakualueella olevan kandidaattilohkon välillä; : tunnettu siitä, että kooderiin (110) on kytketty liikkeenestimoija • I· (118), joka on konfiguroitu laskemaan sekä koodattavan lohkon että kandi- . · · ·. daattilohkon vertailtavien pikseleiden tilavuuksia kuvaavat arvot, ja muodosta maan liikevektorikandidaatin kustannusfunktion arvo hyväksikäyttäen koodat-*· * 35 tavan lohkon ja kandidaattilohkon vertailtavien pikseleiden välisiä erotuksia ”· sekä niistä vähennettyjä koodattavan lohkon ja kandidaattilohkon vertailtaville pikseleille laskettujen tilavuuksia kuvaavien arvojen pikselikohtaisia erotuksia. 115945: ·. ·. 14. An arrangement for encoding sequential images comprising: * ·. ·. an encoder (110) configured to encode an image vector coding block with a motion vector candidate providing the value of a least cost function, which motion vector candidate determines the coding block of the motion image ;; : Between 30 kon and the candidate block in the reference image search area; : characterized in that a motion estimator • I · (118) is connected to the encoder (110) which is configured to calculate both the block to be coded and the candidate. · · ·. values of the pixel comparative pixel volumes, and generate the value of the cost function of the candidate motion vector of the country utilizing the differences between the coded * * * 35 standard block and candidate block comparative pixels. 115945 15. Patenttivaatimuksen 14 mukainen järjestely, tunnettu siitä, että liikevektorikandidaatin kustannusfunktion arvon muodostamiseksi liikkeen-estimoija (118) on lisäksi konfiguroitu muuttamaan kustannusfunktion arvoa lohkottumista kuvaavalla moduulirangaistuksella 5An arrangement according to claim 14, characterized in that the motion estimator (118) is further configured to change the value of the cost function by a module penalty 5 representing the segmentation to generate the value of the cost function of the motion vector candidate. 16. Patenttivaatimuksen 15 mukainen järjestely, tunnettu siitä, että liikkeenestimoija (118) on konfiguroitu muodostamaan moduulirangaistus käyttäen koodauksen kvantisoinnissa käytettävää kvantisointijakajaa sekä koodattavan lohkon ja kandidaattilohkon välistä tilavuuseroa kuvaavaa arvoa.An arrangement according to claim 15, characterized in that the motion estimator (118) is configured to generate a module penalty using a quantization divider used for coding quantization and a value representing the volume difference between the coded block and the candidate block. 17. Jonkin edellisen patenttivaatimuksen 14-16 mukainen järjeste-10 ly, tunnettu siitä, että liikevektorikandidaatin kustannusfunktion arvon muodostamiseksi liikkeenestimoija (118) on lisäksi konfiguroitu vaikuttamaan kustannusfunktion arvoon koodattavan lohkon ja kandidaattilohkon välistä tilavuuseroa kuvaavan arvon ja koodauksen kvantisoinnissa käytettävän kvanti-sointijakajan välisellä funktiolla.Arrangement according to any one of claims 14 to 16, characterized in that the motion estimator (118) is further configured to influence the value of the cost function by a quantization divisor used to quantize the volume difference between the coded block and the candidate block. 18. Jonkin edellisen patenttivaatimuksen 14 -17 mukainen järjeste ly, tunnettu siitä, että liikevektorikandidaatin kustannusfunktion arvon muodostamiseksi liikkeenestimoija (118) on lisäksi konfiguroitu vaikuttamaan kustannusfunktion arvoon liikevektorikandidaatin pituudella.Arrangement according to one of the preceding claims 14 to 17, characterized in that the motion estimator (118) is further configured to influence the value of the cost function over the length of the motion vector candidate to generate the value of the cost function of the motion vector candidate. 19. Jonkin edellisen patenttivaatimuksen 14 -18 mukainen järjeste-20 ly, tunnettu siitä, että liikkeenestimoija (118) on konfiguroitu muodostamaan lohkon tilavuuksia kuvaavat arvot lohkon pikseleiden summana tai loh- ..!i ’ kon pikseleiden neliöllisenä summana.An arrangement 20 according to any one of claims 14 to 18, characterized in that the motion estimator (118) is configured to generate block volume values as a sum of block pixels or as a square sum of block pixels. 20. Jonkin edellisen patenttivaatimuksen 14 -19 mukainen järjeste-ly, tunnettu siitä, että liikkeenestimoija (118) on konfiguroitu muodosta- 25 maan koodattavan lohkon ja kandidaattilohkon pikseleille pikselikohtaiset tila- ·*··; vuuksia kuvaavat arvot jakamalla lohkon tilavuuksia kuvaava arvo yhdelle pik- • * .*·*. selille. # »An arrangement according to any one of claims 14 to 19, characterized in that the motion estimator (118) is configured to provide pixels per pixel per pixel for the pixels of the coding block and the candidate block; values by dividing the block volume value by one pixel * *. * · *. selille. # » 21. Patenttivaatimuksen 20 mukainen järjestely, tunnettu siitä, . . että liikkeenestimoija (118) on konfiguroitu saamaan lohkon pikselikohtainen 1: i.; 30 tilavuutta kuvaava arvo lohkon pikseleiden keskiarvosta.An arrangement according to claim 20, characterized in that:. . that the motion estimator (118) is configured to obtain a pixel-specific 1 of the block; 30 volumetric values of the average pixel of the block. 22. Jonkin edellisen patenttivaatimuksen 14 - 21 mukainen järjeste- ;:· ly, tunnettu siitä, että liikkeenestimoija (118) on konfiguroitu muodosta- : ' maan koodattavan lohkon ja kandidaattilohkon pikseleille pikselikohtaiset tila- . vuuksia kuvaavat arvot laskettaessa sekä koodattavan lohkon että kandidaatti- ’’ 35 lohkon vertailtavien pikseleiden tilavuuksia kuvaavat arvot. 115945The system according to any one of claims 14 to 21, characterized in that the motion estimator (118) is configured to form pixel-specific spaces for the pixels of the coding block and the candidate block. values for calculating the volumes of both the coded block and the candidate block for comparative pixels. 115945
FI20030714A 2003-05-13 2003-05-13 Coding sequential images FI115945B (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
FI20030714A FI115945B (en) 2003-05-13 2003-05-13 Coding sequential images

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FI20030714 2003-05-13
FI20030714A FI115945B (en) 2003-05-13 2003-05-13 Coding sequential images

Publications (3)

Publication Number Publication Date
FI20030714A0 FI20030714A0 (en) 2003-05-13
FI20030714A FI20030714A (en) 2004-11-14
FI115945B true FI115945B (en) 2005-08-15

Family

ID=8566102

Family Applications (1)

Application Number Title Priority Date Filing Date
FI20030714A FI115945B (en) 2003-05-13 2003-05-13 Coding sequential images

Country Status (1)

Country Link
FI (1) FI115945B (en)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8665318B2 (en) 2009-03-17 2014-03-04 Google Inc. Digital 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

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8665318B2 (en) 2009-03-17 2014-03-04 Google Inc. Digital 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

Also Published As

Publication number Publication date
FI20030714A (en) 2004-11-14
FI20030714A0 (en) 2003-05-13

Similar Documents

Publication Publication Date Title
US9729881B2 (en) Video encoding/decoding apparatus and method
KR100866293B1 (en) Method and apparatus for weighted prediction in predictive frames
US7792193B2 (en) Image encoding/decoding method and apparatus therefor
EP1950971B1 (en) Moving image encoding device, moving image decoding device, moving image encoding method, and moving image decoding method
US8811487B2 (en) Method and apparatus for inter prediction decoding with selective use of inverse quantization and inverse transform
US20050114093A1 (en) Method and apparatus for motion estimation using variable block size of hierarchy structure
Liu et al. Bit-depth scalable coding for high dynamic range video
US20110176614A1 (en) Image processing device and method, and program
US20070025441A1 (en) Method, module, device and system for rate control provision for video encoders capable of variable bit rate encoding
US9066097B2 (en) Method to optimize the transforms and/or predictions in a video codec
MXPA02010964A (en) Method for encoding and decoding video information, a motion compensated video encoder and a corresponding decoder.
CN105379284A (en) Dynamic image encoding apparatus and operation method thereof
KR100961760B1 (en) Motion Estimation Method and Apparatus Which Refer to Discret Cosine Transform Coefficients
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
US20120121019A1 (en) Image processing device and method
FI115945B (en) Coding sequential images
US8326060B2 (en) Video decoding method and video decoder based on motion-vector data and transform coefficients data
Vanam et al. Distortion-complexity optimization of the H. 264/MPEG-4 AVC encoder using the GBFOS algorithm
CA2895855C (en) Video encoding and decoding apparatus and method using quantization in sub-blocks
Zhang et al. H. 264/AVC and transcoding for multimedia adaptation
KR100351568B1 (en) Apparatus and method for high compression to consider edge direction of motion compensated prediction
Lee et al. An efficient algorithm for VC-1 to H. 264 video transcoding in progressive compression
Flierl et al. Generalized B Pictures and the Draft H. 26L Video Compression Standard
KR100335606B1 (en) Image encoder and/or decoder using recursive motion prediction/compensation
Nguyen et al. Efficient video transcoding between H. 263 and H. 264/AVC standards

Legal Events

Date Code Title Description
FG Patent granted

Ref document number: 115945

Country of ref document: FI

PC Transfer of assignment of patent

Owner name: GOOGLE INC.

Free format text: GOOGLE INC.

TC Name/ company changed in patent

Owner name: HANTRO PRODUCTS OY

Free format text: HANTRO PRODUCTS OY

Owner name: ON2 TECHNOLOGIES FINLAND OY

Free format text: ON2 TECHNOLOGIES FINLAND OY

MM Patent lapsed