FI115945B - Coding sequential images - Google Patents
Coding sequential images Download PDFInfo
- 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
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)
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)
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 |
-
2003
- 2003-05-13 FI FI20030714A patent/FI115945B/en not_active IP Right Cessation
Cited By (3)
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 |