SE529152C2 - Bestämning av antalet enkelriktade och dubbelriktade rörelsekompenserade bildrutor som ska kodas för en videosekvens och upptäckning av scenklipp i videosekvensen - Google Patents

Bestämning av antalet enkelriktade och dubbelriktade rörelsekompenserade bildrutor som ska kodas för en videosekvens och upptäckning av scenklipp i videosekvensen

Info

Publication number
SE529152C2
SE529152C2 SE0500806A SE0500806A SE529152C2 SE 529152 C2 SE529152 C2 SE 529152C2 SE 0500806 A SE0500806 A SE 0500806A SE 0500806 A SE0500806 A SE 0500806A SE 529152 C2 SE529152 C2 SE 529152C2
Authority
SE
Sweden
Prior art keywords
frame
frames
cost value
round
motion
Prior art date
Application number
SE0500806A
Other languages
English (en)
Other versions
SE0500806L (sv
Inventor
Barin Geoffry Haskell
Adriana Dumitras
Atul Puri
Original Assignee
Apple Computer
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 Apple Computer filed Critical Apple Computer
Publication of SE0500806L publication Critical patent/SE0500806L/sv
Publication of SE529152C2 publication Critical patent/SE529152C2/sv

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/85Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression
    • H04N19/87Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression involving scene cut or scene change detection in combination with video compression
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/114Adapting the group of pictures [GOP] structure, e.g. number of B-frames between two anchor frames
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/142Detection of scene cut or scene change
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/146Data rate or code amount at the encoder output
    • H04N19/147Data rate or code amount at the encoder output according to rate distortion criteria
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/177Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a group of pictures [GOP]

Landscapes

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

Description

25 30 529 152 I regel, benämns en bildruta som innehåller något B-pixelblock som en B-bildruta, en bildruta som innehåller några P-pixelblock och inga B-pixelblock benämns som P-bildruta och en bildruta som endast innehåller I-pixelblock benämns som en I-bildruta. Valet av antalet dubbelriktade rörelsekompenserade (B) bildrutor som ska kodas mellan intra (I) bildrutor eller enkelriktade (P) bildrutor är ett kodningsbeslut som påtagligt påverkar den efterföljande komprimerade video-bitflöde (video bit stream). En videokodare måste bestämma vilket sätt, ibland alla tänkbara metoder (eller moder), som är bäst för att koda varje pixelblock och hur många B-bildrutor, om några, som ska kodas mellan varje I- eller P-bildruta. Således behövs effektiva metoder för att bestämma antalet B-bildrutor, som ska kodas mellan I-bildrutor eller P-bildrutor i en videosekvens.
SAMMANFATTNING AV UPPFINNINGEN Den föreliggande uppfinningen tillhandahåller metoder för kodning av bildrutor i en videosekvens där sekvensen är behandlad i två omgångar. Under den första omgången, beräknas rörelsevektorer (motion vectors) för pixelblocken i varje bildruta i en uppsättning av efter varandra följande bildrutor med referens till en annan specifik bildruta eller bildrutor. I vissa utförande, beräknas också rörelsekompenserade fel (motion compensated errors, MCE) för pixelblock i varje bildruta. Ett rörelsekostnadsvärde (motion cost value) bestäms därefter för varje bildruta, där ett rörelsekostriadsvärde relaterar till antalet bitar som behövs för att koda rörelsevektorer och/eller värdet av pixelblockens MCE hos bildrutan. Ett härlett kostnadsvärde (derived cost value) beräknas därefter utgående från rörelsekostnadsvärdet hos åtminstone en bildruta (till exempel kan ett härlett kostnadsvärde vara rörelsekostnadsvärdet hos en bildruta, medelvärdet av rörelsekostnadsvärdena hos två eller flera bildrutor eller förhållandet mellan rörelsekostnadsvärdet hos en första bildruta och rörelsekostnadsvärdet hos en andra bildruta).
Dessutom, används i den första omgången ett härlett kostnadsvärde för att bestämma antalet B-bildrutor (NB) som ska kodas i uppsättningen av efter varandra följande bildrutor.
Antalet B-bildrutor (NB) som ska kodas ökar så länge som det härledda kostnadsvärdet är lägre än ett förutbestämt tröskelvärde. I andra omgången, kodas bildruta NB+1 i uppsättningen av efter varandra följande bildrutor som en P-bildruta och bildrutoma 1 till NB kodas som B-bildrutor där vissa eller alla rörelsevektorer, som beräknats i den första omgången, återanvänds i kodningsprocessen fór den andra omgången. 10 15 20 25 30 529 152 I vissa utföranden, beräknas under första omgången rörelsevektorer för varje pixelblock och för varje bildruta i en uppsättning av efter varandra följande bildrutor med referens till en omedelbart efter varandra följande bildruta. I dessa utförande, återanvänds några av dei första omgången beräknade rörelsevektorer i kodningsprocessen för den andra omgången. I ytterligare utförande, beräknas under första omgången rörelsevektorer för varje bildruta i en uppsättning av efter varandra följande bildrutor med referens till samma föregående bildruta (bildruta O i uppsättningen av bildrutor). I dessa utförande, återanvänds alla de i första omgången beräknade rörelsevektorerna i andra omgångens kodningsprocess.
I vissa utföranden, är det härledda kostnadsvärdet medelvärdet av rörelsekostnadema (motion costs) för en serie av efter varandra följande bildrutor. I andra utförande är det härledda kostnadsvärdet samma som rörelsekostnaden för en ensam bildruta. I vidare utföranden är det härledda kostnadsvärdet förhållandet mellan rörelsekostnaden för en första bildruta och rörelsekostnaden för en andra bildruta som omedelbart följer den första bildrutan. I dessa ytterligare utföranden, används rörelsekostnadsförhållandet för att upptäcka en impulsliknande ökning i rörelsekostnaden mellan två efter varandra följ ande bildrutor vilket typiskt indikerar ett scenklipp mellan två efter varandra följande bildrutor.
Som sådana, ger dessa vidare utföranden en scenklippsmetod som används i samverkan med tvåomgångskodningsmetodema i den givna uppfinningen. I ytterliggare utföranden används scenklippsindikeringsmetoden oberoende från tvåomgångskodningsmetoden..
KORT BESKRIVNING AV RITNINGARNA De nya egenskaperna hos uppfinningen är framlagda i de bifogade patentkraven.
Emellertid, i ett förklarande syfte, är ett flertal utföranden framlagda i de följande ñgurema.
Fig. 1 visar ett kodningssystem med kodnings- och avkodningskomponenter.
Fig. 2 är en grafisk illustration av bildrutor hos en videosekvens i visningsordning.
Fig. 3 visar grafiskt bildrutoma i videosekvensen från Fig. 2 i överföringsordning.
Fig. 4 är en grafisk illustration av en uppsättning av efter varandra följande bildrutor som är processad i två omgångar med delvis återanvändning av rörelsevektorer beräknade i första omgången.
F ig. 5 är ett flödesschema av en metod för att koda en videosekvens i två omgångar där vissa rörelsevektorer beräknade i den första omgången återanvänds i den andra omgången. 10 15 20 25 30 529 152 Fig. 6 är ett flödesschema över den partiella tvåomgångsåteranvändningsmetoden given i Fig. 5 kombinerad med en scenklippsmetod i enlighet med den föreliggande uppfinningen.
Fig. 7 visar ett diagram över rörelsekostnaden per bildruta hos en serie av bildrutor i en videosekvens.
Fig. 8 är ett flödesschema över en metod för att identifiera scenklipp i en video- sekvens.
Fig. 9 är en grafisk illustration av en uppsättning av efter varandra följande bildrutor som är processad i två omgångar med fullständig återanvändning av rörelsevektorer beräknade i första omgången.
Fig. 10 är ett flödesschema över en metod för kodning av en videosekvens i två omgångar där alla rörelsevektorer beräknade i den forsta omgången återanvänds i den andra omgången.
Fig. 11 är ett flödesschema över den fullständiga tvåorngångsåteranvändnings- metoden given i Fig. 10 kombinerad med en scenklippsdektekteringsmetod i enlighet med den föreliggande uppfinningen.
Fig. 12 visar ett datasystem i vilka några av utförandena av uppfinningen är implementerade.
DETALJERAD BESKRIVNING AV UPPFINNINGEN I den följande beskrivningen, är talrika detaljer framlagda i fórklaringssyfte. Emellertid inser en person med ordinära kunskaper inom området att uppfinningen kan användas utan dessa specifika detaljer. I andra exempel visas välkända strukturer och anordningar i blockdiagramsfonnat i syfte att inte skymma beskrivningen av uppfinningen med onödiga detaljer.
Den föreliggande uppfinningen tillhandahåller metoder för att koda bildrutor hos en videosekvens där bildrutoma processas i två omgångar. Under första omgången beräknas rörelsevektorer för pixelblock hos varje bildruta i en uppsättning av efter varandra följande bildrutor, med hänvisning till en annan specifik bildruta eller bildrutor. I vissa utföranden beräknas även rörelsekompenserade fel (MCEs) för pixelblock i varje bildruta. Ett rörelsekostnadsvärde för varje bildruta bestäms därefter, rörelsekostnadsvärdet är relaterad till antalets bitar som behövs för att koda rörelsevektorer och/eller värdet på MCE hos bildrutans pixelblock. Ett härlett kostnadsvärde beräknas därefter baserat på 10 15 20 25 30 529 152 rörelsekostnadsvärdet för åtminstone en bildruta (till exempel kan det härledda kostnadsvärdet vara rörelsekostnadsvärdet för en bildruta, medelvärdet av rörelsekostnadsvärdena för två eller flera bildrutor eller förhållandet mellan rörelsekostnadsvärdet för en första bildruta och rörelsekostnadsvärdet för en andra bildruta).
Dessutom används det härledda kostnadsvärdet i den första omgången, för att bestämma antalet B-bildrutor (NB), som ska kodas i uppsättningen av efter varandra följande bildrutor.
Antalet B-bildrutor (N B) som ska kodas ökar så länge som det härledda kostnadsvärdet är lägre än ett förutbestämt tröskelvärde. I andra omgången kodas bildruta NB+l, i uppsättningen av efter varandra följande bildrutor, som en P-bildruta och bildrutor 1 till NB kodas som B-bildrutor, där vissa eller alla rörelsevektorer beräknade i den första omgången återanvänds i den andra omgångens kodningsprocess.
I vissa utföranden beräknas, i den första omgången, rörelsevektorer för varje bildruta i en uppsättning av efter varandra följ ande bildrutor med avseende på en omedelbart föregående bildruta. I dessa utföranden återanvänds, vissa av de i den första omgången beräknade rörelsevektorema, i den andra omgångens kodningsprocess. I ytterliggare utföranden beräknas, i den första omgången, rörelsevektorer för varje bildruta i en uppsättning av efter varandra följande bildrutor med avseende på samma föregående bildruta (bildruta 0 i uppsättningen av efter varandra följande bildrutor). I dessa utföranden återanvänds alla, i första omgången, beräknade rörelsevektorer i andra omgångens kodningsprocess.
I vissa utförande är det härledda kostnadsvärdet medelvärdet av rörelsekostnaderna i en serie av efter varandra följande bildrutor. I andra utföranden är det härledda kostnadsvärdet en ensam bildrutas rörelsekostnad. I vidare utföranden är det härledda kostnadsvärdet ett förhållande mellan en första bildrutas rörelsekostnad och rörelsekostnaden hos en bildruta som omedelbart föregår den första bildrutan. I dessa ytterliggare utföranden används rörelsekostnadsförhållandet för att upptäcka en impulsliknande ökning av rörelsekostnaden mellan två efter varandra följande bildrutor vilka typiskt indikerar ett scenklipp mellan de tvâ efter varandra följande bildrutoma. Som sådan tillhandahåller dessa ytterliggare utföranden en scenklippsdetekteringsmetod som används tillsammans med två-omgångs kodningsmetoden hos den föreliggande uppfinningen. I andra utföranden kan 10 15 20 25 30 529 152 scenklippsdetekteringsmetoden användas oberoende från de två-omgångs kodningsmetoden.
Vissa utföranden beskrivna nedan relaterar till videobildrutor i YUV-fomat. En person med ordinära kunskaper inom området, kommer emellertid att inse att dessa utföranden även kan relatera till en mängd olika format än YUV. Dessutom kan andra videoformat (såsom RGB) lätt transformeras till YUV-formatet. Vidare kan utföringsfonner hos den före- liggande uppfinningen relatera till diverse videokodningstillämpningar (till exempel DVD, digital lagringsmedia, televisionsutsändning, intemetstreaming, kommunikation, telekonferens osv.) i realtid eller dåtid. Utföranden av den givna uppfinningen kan också användas till videosekvenser med arman kodningsstandard såsom H..263 och H.264 (också känd som MPEG-4/Part 10).
I den vokabulär som används här, är ett pixelblock en uppsättning pixlar i en bildruta, vilket också är känt inom teknikområdet som ett block, macroblock eller sub-block. Vidare, enligt vokabulären som används här, är ett första pixelblock i en första bildruta sagd att ”referera” till ett andra pixelblock i en andra bildruta, när information från det andra píxelblocket används för att beräkna en rörelsevektor för det första píxelblocket. Således är en första bildruta sagd att ”referera” till en andra bildruta när ett pixelblock i den första bildrutan ”refererar” ett pixelblock i den andra bildrutan. Dessutom menas med beräkning av rörelsevektorer eller rörelsekompenserade fel (MCEs) hos en bildruta, att rörelsevektorer eller MCEs var för sig beräknas för pixelblocken hos bildrutan. Dessutom, såsom givet här, är en uppsättning av efter varandra följande bildrutor en delmängd av bildrutor i en videosekvens där bildrutorna är på varandra följande.
De olika utförandena beskrivna nedan tillhandahåller en metod för att koda en video- sekvens i två omgångar. Den första omgången beräknar rörelsevektorer för en uppsättning av efter varandra följande bildrutor i en videosekvens och fastställer antalet B-bildrutor som ska kodas i uppsättningen av efter varandra följande bildrutor. Den andra omgången kodar det fastställda antalet B-bildrutor genom att använda vissa eller alla av de i första omgången bestämda rörelsevektorerna (till exempel genom att partiell eller fullständigt återanvända de rörelsevektorer som bestämdes i första omgången). Utföranden relaterade till partiell återanvändning av rörelsevektorer bestämda i första omgången är beskrivna i Avsnitt I.
Utföranden relaterade till fullständigt återanvända av rörelsevektorer bestämda i första 10 15 20 25 30 529 152 omgången är beskrivna i avsnitt II. Utförandena för en scenklippsdetekteringsmetod som kan användas tillsammans med den partiella eller fullständiga återanvändningsmetoden eller används självständigt ges i avsnitt I och II.
Fig. 1 illustrerar ett kodningssystem 100 med kodnings- och avkodningskomponenter 110 och 115. I vissa system, inkluderar kodningssystemet 100 en pre-processing komponent som föregår kodningskomponent 110 och en post-processing komponent som kommer efter avkodningskomponent 1 15. Såsom visas i Fig. 1, tas en originalvideosekvens emot av kodningskomponent 1 10, där originalvídeosekvensen består av ett flertal videobildrutor.
Varje bildruta i videosekvensen består av ett flertal pixlar som har pixelpositioner där varje pixelposition innehåller en eller flera pixelvärden (till exempel värden för ljusstyrka (Y) och/eller krominans (U, V) (färgvärdet för en viss punkt i bilden)). Varje bildruta är indelad i delmängder av pixlar som kallas pixelblock.
Kodningskomponenten 1 10 kodar varje bildruta (till exempel, som I, P eller B-bildruta) i videosekvensen, för att producera en kodad (komprimerad) videosekvens. Antalet B- bildrutor som ska kodas mellan varje I eller B-bildrutor fastställs av kodningskomponenten 110 och är ett beslut som avsevärt påverkar bithastigheten på den senare komprimerade video-bitflöde. Kodningskomponenten 110 implementerat metoder av den föreliggande uppfinningen för att fastställa antalet B-bildrutor, om några, som ska kodas mellan varje I eller B-bildrutor.
Den kodade videosekvensen överförs därefter och mottas av avkodningskomponenten 115, vilken behandlar den kodade videosekvensen, för att producera en avkodad videosekvens för visning. Eftersom den kodade videosekvensens B-bildrutor använder information från kommande bildrutor, är sändningsordningen av bildrutoma hos den kodade videosekvensen (såsom den överförts till avkodningskomponenten 115) typiskt sätt annorlunda än visningsordningen av den avkodade videosekvensens bildrutor (såsom producerad av avkodningskomponenten 1 15). Således är utsändningsordningen av den kodade videosekvensens bildrutor konfigurerad så att när det är tid för avkodningskomponenten 115 att avkoda en B-bildruta, har avkodningskomponenten 115 redan mottagit och lagrat information från de I-bildrutor eller P-bildrutor som behövs för att avkoda B-bildrutan. 10 15 20 25 30 529 152 Fig. 2 är en grafisk illustration av bildrutor 210 tillhörig en videosekvens 200, i den ordning de visas. Som visas i F ig. 2 är varje bildruta 210 identifierad av en bildrutetyp (1, P eller B) och ett sifferindex (1, 2, 3, ...) indikerande visningsordningen av bildrutoma i video- sekvens 200. I exemplet som visas i F ig. 2, innehåller uppsättningen av efter varandra följande bildrutor från 11 till P5, tre B-bildrutor (Bg, B; och B4) kodade mellan I-bildrutorna och P-bildrutoma. Likaså, innehåller uppsättningen av efter varandra följ ande bildrutor från P5 till P10, fyra B-bildrutor (B15, Bg, B11 och Bg) kodade mellan P-bildrutoma.
Pilama 220 indikerar rörelsevektorsberäkningar användandes information från en bildruta (vid starten av pil 220), för att beräkna rörelsevektorer till en annan bildruta (vid slutet av pil 220). Till exempel som visas i Fig. 2, används information från bildruta 11 för att beräkna rörelsevektorer för bildrutoma Bg, Bg, B4 och P5. Som sådana är bildrutoma Bg, Bg, B4 och P5 sagda att referera till bildruta 11. Dessutom används information från bildruta P5 för att beräkna rörelsevektorer för bildrutoma Bg, Bg, och B4. Som sådana är bildrutoma Bg, Bg, och B4 sagda att referera till bildruta P5.
Efter avkodning av en avkodningskomponent visas videosekvens 200 i den visningsordning som ses Fig. 2. Eftersom B-bildrutoma använder information från kommande bildrutor, kommer dock sändningsordningen för bildrutoma i videosekvensen 200, vara annorlunda än den visningsordning som ses i F ig. 2. Fig. 3 illustrerar grafiskt bildrutoma i video- sekvens 200 från Fig. 2 i sändningsordning. Videosekvensen 200 mottas i sändnings- ordningen av avkodningskomponent 115 för avkodning.
Såsom visas i Fig. 3, exempelvis när det är dags att avkoda bildruta Bg, kommer avkodningskomponent 115 redan ha mottagit och lagrat informationen för bildrutoma 11 och P5 vilka behövs för att avkoda bildruta Bg. På liknande sätt kommer avkodnings- komponent 115 redan ha mottagit och lagrat informationen för bildrutoma I1 och P5 vilka behövs för att avkoda bildrutoma B; och B4. I denna operation refereras ofta I-bildrutor och P-bildrutor som lagrade bildrutor, eftersom de är lagrade för användning i den prediktiva kodningen av andra bildrutor. Emellertid kan B-bildrutoma i vissa scenarier också lagras och användas för att prediktera efterföljande bildrutor. Likaså, om flertalet lagrade bildrutor är tillgängliga, kan två äldre eller två kommande bildrutoma användas för att prediktivt koda varje B-bildruta. Bildrutoma är sedan omordnade från sändningsordningen till en visningsordning (såsom visas i Fig. 2) för lämplig visning. 10 15 20 25 30 529 152 Kodningen av P-bildrutan utnyttjar typiskt rörelsekompenserande prediktering där en rörelsevektor beräknas för varje pixelblock i bildrutan genom att referera till pixelblock hos en föregående (tidigare) bildruta. Ett predikterat pixelblock skapas därefter genom att använda rörelsevektom och översätta pixlarna i den tidigare bildrutan refererad till av P- bildrutan. Skillnaden mellan det verkliga pixelblocket i P-bildrutan och det skapade predikterade blocket (benämnd som prediktionsfel eller rörelsekompenserade fel) kodas därefter för sändning. Dessutom kan varje rörelsevektor sändas via prediktiv kodning. Det innebär att en prediktion skapas genom att använda närliggande rörelsevektorer som redan har sänts, och därefter kodas skillnaden mellan de aktuella rörelsevektorerna och prediktionen för sändning.
Ett pixelblocks rörelsekompenserade fel (MCE) mäter skillnaden mellan ett första pixel- block i första bildrutan och ett flyttat, rörelsekompenserat andra pixelblock i en andra bildruta som är refererad till av det första pixelblocket och där storleken på förflyttningen ges av det första pixelblockets rörelsevektor. MCE kan vara summan av kvadratskillnaden mellan pixelvärdena (till exempel skillnaden i ljusstyrkevärdena (Y)) i första pixelblocket och motsvarande pixelvärden i det förskjutna andra pixelblocket. Eller så kan MCE vara summan av den absoluta skillnaden mellan pixelvärdena i första pixelblocket och motsvarande pixelvärden i det förskjutna andra pixelblocket. I vissa utföranden appliceras en block-transfonn, såsom Hadamardtransformen, på MCE innan summeringen. Ett pixelblocks MCE är relaterad till rörelsekostnaden för de bitar som behövs för att koda pixelblocket (eftersom ju större MCE, desto fler bitar behövs för att koda MCE och följaktligen för att koda pixelblocket).
Varje B-pixelblock använder typiskt två rörelsevektorer, en beräknad från information från en tidigare bildruta och en beräknad från information från en kommande bildruta. Från dessa rörelsevektorer skapas två predikterade pixelblocks, från vilka vanligtvis ett medel- värde beräknas för att bilda ett slutligt predikterat pixelblock. Beräkningen av medelvärdet kan till exempel använda lika 50/50-viktning eller så kan ojämn viktning användas.
Skillnaden (dvs. prediktionen eller rörelsekompenserade fel) mellan det aktuella pixel- blocket i B-bildrutan och det slutliga predikterade blocket kodas därefier för sändning. 10 15 20 25 30 529 152 10 Såsom med P-pixelblock, kan varje B-pixelblocks rörelsevektor också sändas via prediktiv kodning. Det vill säga, en prediktion skapas genom att använda närliggande rörelsevektorer som redan har sänts och därefter kodas skillnaden mellan den verkliga rörelsevektom och prediktionen för sändning. Emellertid existerar med B-pixelblock möjligheten att inter- polera rörelsevektorerna från de närliggande pixelblocken i de lagrade bildrutoma. Det interpolerade värdet kan därefter användas som en prediktion och skillnaden mellan den aktuella rörelsevektom och prediktionen kodas för sändning. Sådana interpolationer utförs både hos kodaren och avkodaren.
I vissa fall är den interpolerade rörelsevektom tillräckligt bra för att användas utan någon korrektion och i det fallet behövs ingen rörelsevektordata sändas iväg. Detta benämns som Direct Mode i H.263 och H.264. Detta fungerar särskilt väl när kameran långsamt panorerar över en stationär bakgrund. I själva verket, kan interpolatíonen vara tillräckligt bra för användas som den är, vilket innebär att ingen särskiljande information behöver sändas för dessa B-pixelblocks rörelsevektorer. Även inuti varje bildruta kan pixelblocket kodas på många sätt. Exempelvis kan ett pixel- block delas in i flera mindre underblock, med rörelsevektorer beräknade och sända för varje subblock. Formen på underblocken kan variera och behöver inte vara kvadratisk. Inuti en P-bildruta eller B-bildruta, kan vissa pixelblock kodas bättre utan att rörelsekompensering används, dvs. de blir kodade som intra (I) pixelblock. Inuti en B-bildruta, kan vissa pixel- block kodas bättre genom att använda enkelriktad rörelsekompensation, dvs. de kommer att kodas som framåtpredikterade (forward predicted) eller bakåtpredikterade (backward predicted) beroende på huruvida en föregående bildruta eller en kommande bildruta används i prediktionen.
Före sändningen är ett pixelblocks rörelsekompenserade fel typiskt sätt transformerad av en ortogonal transform, såsom den diskreta cosinus-tranforrnen eller en approximation därtill.
Resultatet av transforrnoperationen är en mängd av transforrnkoefficienter, samma antal som antalet transformerade pixlar i pixelblocket. Vid avkodningskomponenten invers- transfonneras de mottagna transformkoefficientema, för att återfå de rörelsekompenserade felvärdena för att användas vidare i avkodningen. Inte alla transformkoefficienter behöver dock sändas till avkodningskomponenten för acceptabel videokvalitet. Beroende på 10 15 20 25 30 529 152 ll sändningens tillgängliga bithastighet, kan ett antal av transformkoefficienterna strykas och ej sändas. Hos dekodem ersätts deras värden av nollor innan inverstransforrneringen.
Innan sändningen är transfonnkoeñicienterna typiskt sätt kvantiserade och entropiskt kodade. Kvantisering involverar representation av transforrnkoefficientvärdena genom en finit uppsättning av möjliga värden, vilket reducerar sändningens noggrannhet och ofta tvingar små värden till noll och vilket ytterliggare reducerar antalet sända koefficienter. I kvantisering divideras typiskt sätt varje transformkoefficient med en stegstorlek fór kvantiseríngen Q och avrundas till närmaste heltal. Heltalen kodas därefter entropiskt med hjälp av variabla ordlängds-kodningar (word-length codes) såsom Huffrnan-kodningar eller Aritmetiska kodningar.
Slutligen behöver inte storleken och formen fór pixelblocket som används för rörelse- kompenseringen vara samma som storleken och formen för pixelblocket som används för transformeringen. Exempelvis används vanligen 16 x 16, 16 x 8, 8 x l6 pixlar eller mindre storlekar för rörelsekompensation, medan 8 X8 eller 4 x 4 vanligen används för transfonner.
Faktiskt, kan pixelblockens storlekar och form, för rörelsekompensation och transforrne- ring, variera från pixelblock till pixelblock.
En kodningskomponent måste välja den bästa kodningsmetoden bland alla möjliga kodningsmetoder (eller moder) som ska användas för att koda varje pixelblock.
Kombinationen av borttagandet av transformkoefficienter, kvantisering av transform- koeñicienterna som är sända och modval (mode selection) resulterar i en reduktion av bithastigheten R som används vid sändning. Det leder också till en fórvrängning D i den avkodade videon. Kodningskomponenten måste alltså fastställa hur många B-bildrutor, om några, som ska kodas mellan varje I eller P-bildruta. En ”brute-force-approach” skulle helt enkelt koda varje kombination av B-bildrutor och plocka den kombination som minimerar bithastigheten. Emellertid är denna metod alltför komplex. Det kräver också ett väldigt stort antal ”trial and error”-operationer och statistiska insamlingar, varav de flesta måste kasseras efter att ett slutligt beslut är gjort.
AVSNITT I; DELVIS ÅTERANVÅNDNING Av RÖRELSEVEKTORER BESTÄMDA 1 EN FÖRSTA oMGÅNG 10 15 20 25 30 529 152 12 I vissa utföranden omfattar en metod fór kodning av bildrutor i en videosekvens bearbetning av bildrutorna i två omgångar, där vissa rörelsevektorer beräknade i den första omgången återanvänds i den andra omgången. Under den första omgången beräknas rörelsevektorer för bildrutans pixelblock som om den slutliga kodningen skulle utföras genom att använda alla P-bildrutor, där varje bildruta använder information från den föregående bildrutan. I ett alternativt utförande beräknas även rörelsekompenserade fel för varje pixelblock under den första omgången. Systemet beräknar rörelsekostnaden fór varje pixelblock i en bildruta. I många utföranden definieras pixelblockets rörelsekostnad som det totala antalet bitar som behövs för att koda rörelsevektom och/eller MCE-värdet beräknat för pixelblocket. I vissa utföranden ges pixelblockets rörelsevektorer av följande ekvation: rörelsekostnaden för ett pixelblock = (k x motion_vectors_bits) + MCE där k är en Lagrange-multiplikator. För k=0 är pixelblockets rörelsekostnad lika med värdet på rörelsekompenserade fel (MCE). Om Lagrange-multiplikatorn Ä är större är pixelblockets rörelsekostnad proportionell till antalet bitar som behövs fór att koda rörelsevektom.
En rörelsekostnad för en bildruta i (Frame motion cost , FMCí) är summan av rörelse- kostnadema hos pixelblocken i bildruta i. För m efter varandra följande bildrutor i en videosekvens beräknas ett medelvärde för bildrutans rörelsekostnad (Average Frame Motion Cost , AFMCm) genom att addera den individuella bildrutans rörelsekostnad för de m efter varandra följ ande bildrutoma och dividera resultatet med m, såsom uttrycks av följande ekvation: AFMCm = sum i = 1 till m [FMCfl/m För en serie av m videobildrutor, numrerade 1 till m.
I vissa utföranden används AFMC-värdena för en uppsättning av efter varandra följande bildrutor för att fastställa ett antal (NB) B-bildrutor att kodas mellan varje I- eller P- bildrutor i uppsättningen av efter varandra följande bildrutor (såsom beskrivet nedan i samband med Fig. 5). I andra utföranden används FMC-värdena för en enskild bildruta för 10 15 20 25 30 529 152 13 att bestämma antalet (NB) B-bildrutor. I ytterliggare utföranden används ett förhållande (FMCm)/(FMC,,,_1) mellan rörelsekostnaden för en första bildruta och rörelsekostnaden för en andra bildruta som föregår den första bildrutan för att bestämma antalet (N B) B- bildrutor.
I den andra omgången kodas ett antal (NB) bildrutor som B-bildrutor och bildrutan NB+l kodas som en P-bildruta, där (N B) har fastställts ovan i den första omgången. Under den andra omgången återanvänds vissa av de i den forsta omgången beräknade rörelsevektorema till att koda B-bildrutor och/eller P-bildrutor (dvs. andra omgången använder sig delvis av rörelsevektorer beräknade i första omgången).
Fig. 4 är en grafisk illustration av en uppsättning av efter varandra följande bildrutor 400 som är behandlade i två omgångar med partiell återanvändning av rörelsevektorer, som beräknats i den första omgången. Uppsättningen av efter varandra följande bildrutor 400 består av fem bildrutor 410 som visas i visningsordning. Som visas i Fig. 4, för den första och den andra omgången, är varje bildruta 410 identifierad av en bildrutetyp (I, P och B) och ett índexerat nummer (l till 4) som indikerar visningsordningen för bildrutan i uppsättningen av efter varandra följande bildrutor 400.
Pilarna 420 indikerar beräkningar av rörelsevektorema, som använder information från en bildruta (vid början på pilen 420) för att beräkna rörelsevektorer för en annan bildruta (vid slutet av pilen 420). Pilen 420, som visas ovanför bildrutoma 410, visar rörelsevektors- beräkningar som förekommer i den första omgången och pilama 420, som visas nedanför bildrutoma 410, relaterar till rörelsevektorsberäkningar som förekommer i den andra omgången. Exempelvis används i den första omgången infomiationen från 10, för att beräkna rörelsevektorer för bildruta P1. l den andra omgången används information från bildruta P4 och 10, för att beräkna rörelsevektorer för bildruta Bg.
Såsom visas i Fig. 4 beräknas i den första omgången rörelsevektorer för bildrutoma l till 4, genom att använda informationen från en föregående bildruta (dvs. rörelsevektorer för bildrutor 1 till 4 beräknas som om den slutliga kodningen skulle utföras användandes alla P-bildrutor). I den första omgången är också antalet B-bildrutor som ska kodas i uppsättningen av efter varandra följande bildrutor 400 fastställda (såsom beskrivs nedan i 10 15 20 25 30 529 152 14 samband med F ig. 5). I exemplet, som ses i Fig. 4, har det bestämts att tre B-bildrutor ska kodas i uppsättningen av efter varandra följande bildrutor 400.
I den andra omgången kodas det fastställda antalet B-bildrutor (som bildrutor B1, B; och Bg) med nästa bildruta kodad som en P-bildruta (bildruta P4). Såsom visas i Fig. 4 måste nya rörelsevektorsberåkningar utföras för att beräkna nya rörelsevektorer i den andra omgången, för att koda B-bildrutoma och P-bildrutoma. Exempelvis indikerar pilama 425 och 430 nya rörelsevektorsberälmingar som är utförda i den andra omgången. För att en rörelsevektor från den första omgången ska återanvändas i den andra omgången måste ett villkor uppfyllas: l) informationen som behövs för att beräkna rörelsevektom måste vara samma i båda omgångama (dvs. informationen måste härröra från samma bildruta i båda omgångarna).
Exempelvis, såsom visas i Fig. 4, används information fiån bildruta I0 till att beräkna rörelsevektorer för bildruta P1 i den första omgången. Med andra ord refereras bildruta I0 av bildruta P1 i den första omgången. Iden andra omgången behövs också infonnation från bildruta 10 för att beräkna rörelsevektorer för bildruta B1. Med andra ord refereras också bildruta I0 av bildruta B0 i den andra omgången. Som sådana kan rörelsevektorer, beräknade för bildruta P1 i den första omgången, återanvändas för att koda bildruta B1 i den andra omgången. Rörelsevektorsberäkningama som producerar rörelsevektorer för bildruta P1 i den första omgången och som återanvänds i den andra omgången indikeras av den streckade pilen 435. Eftersom en B-bildruta karakteristiskt sätt använder två rörelse- vektorer, en beräknad från en föregående bildruta och en från en efterföljande bildruta, kommer även kodningen av bildruta B1 i den andra omgången kräva en ny rörelsevektor beräknad med referens till bildruta P4.
Fig. 5 är ett flödesschema av en metod 500 för kodning av en videosekvens i två omgångar där några rörelsevektorer beräknade i den första omgången återanvänds i den andra omgången. Metoden 500 kan exempelvis utföras av kodningskomponenten 110. Metoden 500 börjar med mottagandet (vid 505) av en videosekvens. Videosekvensen omfattar ett flertal videobildrutor indexerade av m, från 0 till N, där m är ett positivt heltal. Varje bildruta i videosekvensen omfattar ett flertal pixlar, som har ett eller flera pixelvärden (exempelvis ljusstyrka (Y) och/eller krominansvärden (U,V)). Varje bildruta är uppdelad i uppsättningar av pixlar, benärnnda pixelblock. 10 15 20 25 30 529 152 15 Metoden kodas därefter (vid 510) bildruta 0 ur mångfalden av videobildrutor som en I- bildruta. Metoden sätter sedan (vid 515) en räknare m till värdet 1. Metoden beräknar (vid 520) rörelsevektorer för pixelblocken hos bildruta m, genom att använda information från en föregående bildruta m-l, dvs. rörelsevektorer för pixelblocken i bildruta m beräknas som om bildruta m var kodad som en P-bildiuta. En grafisk illustration av steg 520 visas i Fig. 4. Metoden bestämmer (vid 525) ett rörelsekompenserat fel (MCE) för pixelblocken i bildruta m. I ett alternativt utförande beräknas inte MCE för pixelblocken i bildruta m.
Metoden bestämmer därefier (vid 530) ett medelvärde för bildrutans rörelsekostnad (AFMCm) för bildrutor l till m, medelvärdet för bildrutans rörelsekostnad beräknas genom att addera de individuella bildrutomas rörelsekostnad för bildrutoma 1 till m samt dividera resultatet med m. Rörelsekostnaden för en individuell bildruta beräknas genom att summera rörelsekostnaden för varje pixelblock i bildrutan, pixelblockets rörelsekostnad är pro- portionell till pixelblockets MCE-värde och det totala antalet bitar som behövs för att koda rörelsevektom. I ett altemativt utförande, består pixelblockets rörelsekostnad enbart av pixelblockets MCE-värde. I ytterliggare utföranden, består pixelblockets rörelsekostnad enbart av det totala antalet bitar som behövs för att koda pixelblockets rörelsevektor. I ytterligare ett utförande fastställer metoden (vid 5 30) en bildrutas rörelsekostnad (FMCm) för varje individuell bildruta m.
Metoden avgör därefter (vid 535) om AF MCm-värdet är mindre än ett förutbestämt tröskelvärde T. I vissa utföranden, är tröskelvärdet T olika för olika typer av video- sekvenser, exempelvis kan ett annat tröskelvärde användas för videosekvenser med sport, såpoperor, nyhetsreportage, gamla filmer, videokonferenser etc. I ytterliggare utföranden avgör metoden (vid 535) om AF MCm-värdet är mindre än ett förutbestämt tröskelvärde T m, där Tm representerar en uppsättning av förutbestämda tröskelvärden som varierar i värde beroende på värdet på räknaren m. Exempelvis kan värdet för Tm monotont minska då värdet för m ökar och därigenom göra det svårare att öka antalet B-bildrutor som ska kodas, genom att öka värdet på räknaren m. I ytterliggare ett utförande avgör metoden (vid 535) om bildrutans FMCm-värde är lägre än ett förutbestämt tröskelvärde T.
Om metoden avgör (vid 535) att AFMCm-värdet är mindre än det förutbestämda tröskelvärdet T, ökar metoden (vid 540) räknaren med 1 och fortsätter vid steg 520. Om 10 15 20 25 30 529 152 16 metoden avgör (vid 535) att AFMCm-värdet ej är mindre än det förutbestämda tröskelvärdet T, sätter metoden (vid 545) en variabel n lika med maxvärdet av 1 eller (m-1) så att minimumvärdet för n är 1. Notera att värdet för n representerar det största antalet bildrutor för vilka medelvärdet för bildrutans rörelsekostnad (AFMCn) fortfarande är lägre än det förutbestämda tröskelvärdet T. Metoden sätter även antalet (NB) B-bildrutor som ska kodas till n-l.
Den första omgången av operationen för metoden 500 består av stegen 515 till 545 och fastställer antalet (NB) B-bildrutor som ska kodas i uppsättningen av efter varandra följande bildrutor från 1 till n. Antalet (NB) B-bildrutor som ska kodas ökar tills de efter varandra följande bildrutomas medelvärde för bildrutans rörelsekostnad (AFMCn) överskrider det förutbestämda tröskelvärdet T och sätts därefter till ett mindre än det största värdet av n, för vilket AFMCn fortfarande är mindre än det förutbestämda tröskelvärdet T. Som sådant är antalet (NB) B-bildrutor, som ska kodas i en uppsättning av efter varandra följande bildrutor, beroende av medelvärdet för bildrutans rörelsekostnad för uppsättningen av efter varandra följande bildrutor.
Den andra omgången av operationen för metoden 500 består av stegen 550 till 555. Vid steg 550 kodar metoden bildruta n som en P-bildruta. Metoden kodar sedan (vid 555) bildrutoma l till NB som B-bildrutor, genom att återanvända några rörelsevektorer beräknade i den första omgången (stegen 515 till 545). I vissa utföranden återanvänds rörelsevektorer för pixelblocken i bildruta 1, beräknade i den första omgången, för att beräkna rörelsevektorer för pixelblocken i bildruta 1 i den andra omgången, såsom grafiskt illustrerats i Fig. 4.
Metoden 500 avgör (vid 560) sedan om bildruta n är den sista bildrutan i videosekvensen (dvs. om bildrutan n är bildruta N). Om så är fallet, avslutas metoden. Om bildruta n inte är den sista bildrutan i videosekvensen omindexerar metoden bildruta n till bildruta 0 i videosekvensen, så att bildruta n+1 omindexeras till bildruta 1, bildruta n+2 omindexeras till bildruta 2 osv. Metoden fortsätter sedan vid steg 515.
I ett alternativt utförande optimeras den partiella tvåomgångs-återanvändningsmetoden av rörelsevektorer från Fi g. 5 för kodning av en videosekvens med relativt högt antal scenklipp (dvs. en relativt högt antal av bildrutor med diskontinuerlig innehåll). Sådana video- 10 15 20 25 30 529 152 17 sekvenser kan exempelvis hittas i musikvideor, sportutsändningar osv. I det altemativa utförandet används en scenklippsdetekteringsmetod, där en impulsliknade variation i rörelsekostnaden övervakas för två efter varandra följande bildrutor (vilket typiskt indikerar ett scenbyte).
F ig. 6 avbildar grafiskt ett flödessehema för Fig. 5:s partiella tvâomgångs- återanvändningsmetod kombinerad med en scenklippsdetekteringsmetod i enlighet med den givna uppfinningen. Metoden i Fig. 6 liknar metoden i Fig. 5 och endast de steg som skiljer sig beskrivs i detalj här. Metoden 600 kan exempelvis utföras av kodningskomponent 110.
Metoden 600 börjar med mottagandet (vid 605) av en vídeosekvens. Videosekvensen omfattar ett flertal videobildrutor indexerade från 0 till N, där varje bildruta är uppdelad i uppsättningar av pixlar benämnda pixelblock. Metoden kodar sedan (vid 610) bildruta 0, hos mångfalden av videosekvenser, som en I-bildruta. Metoden sätter sedan en räknare m (vid 615) till l. Metoden beräknar (vid 620) rörelsevektorer för bildruta m:s pixelblock, genom att använda information från den föregående bildrutan. Metoden avgör sedan (vid 625) ett rörelsekompenserat fel (MCE) för bildruta m:s pixelblock. I ett alternativt utförande beräknas inte MCE för bildruta m:s pixelblock.
Metoden avgör sedan (vid 630) en bildrutas rörelsekostnad (FMCm) för bildruta m, genom att summera det totala antalet bitar som behövs för att koda rörelsevektorn och/eller MCE- värdet för varje pixelblock i bildruta m. Metoden avgör även (vid 630) en bildrutas rörelsekostnad (FMCM) för en bildruta som omedelbart föregår bildruta m, genom att summera antalet bitar som behövs för att koda rörelsevektom och/eller MCE-värdet för varje pixelblock i bildruta m-l. Metoden beräknar sedan (vid 630) värdet av FMCm/FMCm- 1. Under metodens 600 första iteration där bildruta m-l är en I-bildruta, sätts emellertid värdet av FMCm/F MCm-1 till 0. Eftersom bildrutans rörelsekostnad för en I-bildruta är 0, hindrar detta en divisionsoperation där nämnaren är 0.
Metoden avgör sedan (vid 635) om värdet av FMCm/FMCM är mindre än ett förutbestämt tröskelvärde C. I vissa utföranden bestäms tröskelvärdet C experimentellt. I vissa utföranden är tröskelvärdet C olika för olika typer av videosekvenser, dvs. olika tröskelvärden kan användas för videosekvenser relaterade till sport, såpoperor, nyhets- reportage, gamla filmer, videokonferanssekvenser etc. I ytterliggare utföranden avgör 10 15 20 25 30 529 152 18 metoden (vid 635) om värdet för FMCm/FMCW; är mindre än ett förutbestämt tröskelvärde Cm, där Cm representerar en uppsättning av förutbestämda tröskelvärden som varierar i värde beroende på värdet av räknaren m. Värdet av m indikerar det nuvarande antalet bildrutor som ska kodas som B-bildrutor sedan den sista kodningen av en P-bildruta i videosekvensen. Exempelvis kan värdet av Cm monotont minska då värdet av m ökar, och därigenom försvåra kodningen av flera bildrutor som B-bildrutor genom att öka av värdet av m.
Värdet av FMCm/F MC,,,_1 reflekterar en relativ ökning av rörelsekostnaden mellan två efter varandra följande bildrutor (bildrutoma m och m-1). Ett relativt högt värde för FMCm/FMCM indikerar att rörelsekostnaden för bildruta m är betydligt högre än rörelsekostnaden för m-l. En sådan impulsliknade ökning i rörelsekostnaden mellan tvâ efter varandra följande bildrutor indikerar typiskt ett scenklipp mellan de två efter varandra följande bildrutoma, dvs. de tvâ efter varandra följande bildrutomas innehåll är inte kontinuerlig. Det förutbestämda tröskelvärdet C (mot vilket värdet av FMCm/F MCm.1 jämförs (vid steg 630)) kan bestämmas experimentellt så att ett värde av FMCm/F MC,,,_1, som är lika eller större än tröskelvärdet C, sannolikt indikerar ett scenklipp mellan bildrutan m och bildrutan m-l.
Om metoden avgör (vid 635) att värdet av FMCm/FMCm4 är mindre än det förutbestämda tröskelvärdet C, ökar metoden (vid 640) räknaren med ett och fortsätter vid steg 620. Om metoden avgör (vid 635) att värdet av FMCm/FMCW; ej är mindre än det förutbestämda tröskelvärdet C, sätter metoden (vid 645) en variabel n till det största av 1 eller (m-1) och sätter även antalet (N B) B-bildrutor som ska kodas till n-1. Den första omgången av operationen för metoden 600 består av stegen 615 till 645 och fastställer antalet (NB) B- bildrutor som ska kodas i uppsättningen av efter varandra följ ande bildrutor från 1 till n.
Notera att värdet på n representerar det största antalet bildrutor, för vilket värdet av F MCm/F MCmJ fortfarande är mindre än det förutbestämda tröskelvärdet C. Därför är bildrutan, bildrutan omedelbart före ett upptäckt scenklipp och bildruta n+1 är bildrutan omedelbart efter det upptäckta scenklippet (såsom diskuteras nedan i relation till Fi g. 7).
Den andra omgången av operationen för metoden 600 består av stegen 650 till 655. Vid steg 650 kodar metoden bildruta n (bildrutan omedelbart före det upptäckta scenklippet) som en P-bildruta. Som sådan säkerställer metoden från Fig. 6 att bildrutan omedelbart före 10 15 20 25 30 529 152 19 ett scenklipp är kodad som en P-bildruta. Detta säkerställer att bildrutan före scenklippet inte refererar en bildruta som är placerad efter scenklippet (om detta skulle hända, skulle bithastigheten öka). Metoden kodar sedan (vid 65 5) bildrutoma 1 till NB som B-bildrutor genom att använda några rörelsevektorer beräknade i första omgången (steg 615 till 645).
Metoden 600 avgör sedan (vid 660) om bildruta n är den sista bildrutan i videosekvensen.
Om så är fallet avslutas metoden. Om bildrutan n inte är den sista bildrutan i video- sekvensen, omindexerar metoden bildruta n som bildruta 0 i videosekvensen, så att bildruta n+lomindexeras som bildruta 1, bildruta n+2 omindexeras som bildruta 2 etc. Metoden fortsätter sedan vid steg 615.
Fig. 7 visar en diagram 700 över rörelsekostnaden per bildruta i en serie av bildrutor hos en videosekvens. Fig. 7 beskrivs i relation till Fig. 6. Rörelsekostnaden per bildruta visas på en första axel 705 och bildrutenumret, för individuella bildrutor i videosekvensen, visas på en andra axel 710. Rörelsekostnaden för individuella bildrutor markeras av punkter 715. En bildruta omedelbart före ett scenklipp markeras av en punkt inuti en cirkel 720 och en bildruta omedelbart efter ett scenklipp markeras av en punkt inuti en kvadrat 725. Bildrutor omedelbart före ett scenklipp kodas som P-bildrutor (vid steg 650).
Notera att rörelsekostnaden, för en bildruta omedelbart efter scenklipp, är avsevärt högre än rörelsekostnaden, för en bildruta omedelbart, före scenklippet. Som sådant kommer förhållandet mellan rörelsekostnaden för bildrutan omedelbart efier ett scenklipp och rörelsekostnaden för bildrutan omedelbart före scenklippet (dvs. FMCm/FMCmJ) , att ha ett relativt högt värde. Ett relativt högt värde för FMCm/F MCm-1 indikerar typiskt sätt ett scenklipp mellan de två efter varandra följande bildrutoma (bildrutoma m och m-l) och kommer sannolikt att överskrida det förutbestämda tröskelvärdet C, mot vilket värdet av FMCm/FMCM är jämfört (vid steg 630).
Scenklippsdetekteringsmetoden diskuterad i samband med Fig. 6 ger en enkel och effektiv metod för att upptäcka scenklipp i en videosekvens. I ett alternativt utförande används inte scenklippsdetekteringsmetoden i förening med den partiella tvåomgångsåteranvändnings- metoden från Fig. 5, utan den används självständigt för att identifiera scenklipp i en videosekvens. 10 15 20 25 30 529 152 20 Fig. 8 är ett flödesschema över en metod 800 för identifiering av scenklipp i en video- sekvens. Enligt praxis häri har en videosekvens med ett relativt högt antal scenklipp ett relativt högt antal högt antal bildrutor med diskontinuerligt innehåll och där ett scenklipp är en punkt i tiden när innehållet i Videosekvensen är diskontinuerligt. Metoden från Fig. 8 liknar metoden från Fig. 6 och endast de steg som skiljer sig diskuteras här i detalj.
Metoden 800 kan exempelvis utföras av kodningskomponent 110.
Metoden 800 inleds genom mottagandet (vid 805) av en videosekvens. Videosekvensen omfattar ett flertal videobildrutor indexerade från 0 till N, där varje bildruta är indelad i uppsättningar av pixlar benämnda pixelblock. Metoden sätter sedan (vid 815) en räknare m lika med 1. Metoden beräknar (vid 820) rörelsevektorer för pixelblocken i bildruta m användandes information från en föregående bildruta eller information från en föregående och en kommande bildruta, dvs. bildruta m kan behandlas som en P-bildruta eller B- bildruta. Metoden bestämmer sedan (vid 825) ett rörelsekompenserat fel (MCE) för pixelblocken i bildruta m. I ett altemativt utförande beräknas ej MCE för pixelblocken i bildruta m.
Metoden bestämmer sedan (vid 830) en bildrutas rörelsekostnad (FMCm) för bildruta m och bildrutans rörelsekostnad (F MCm.1) för en bildruta omedelbart föregående bildruta m.
Metoden beräknar sedan (vid 830) värdet av FMCm/F MCm_1. Under den första iterationen av metoden 800, där bildruta m-l är en I-bildruta, sätts dock värdet av F MCm/F MCmJ till 0.
Eftersom bildrutans rörelsekostnad för en I-bildruta är 0, hindrar detta en dividerings- operation där nämnaren är 0.
Metoden avgör sedan (vid 835) om värdet av FMCmlFMCmn är mindre än ett förutbestämt tröskelvärde C eller Cm. Om metoden avgör (vid 835) att värdet av FMCm/FMCM är mindre än det förutbestämda tröskelvärdet C, ökar metoden (vid 840) räknaren m med ett och fortsätter vid steg 820. Om metoden avgör (vid 835) att värdet av FMCm/FMCM ej är mindre än det förutbestämda tröskelvärdet C (dvs. att värdet av FMCm/FMCM är lika med eller större än det förutbestämda tröskelvärdet C), sätter metoden (vid 845) en variabel n till lika med m-l. Metoden markerar sedan (vid 850) bildruta n som en bildruta omedelbart före ett upptäckt scenklipp och bildruta m som en bildruta omedelbart efter ett upptäckt scenklipp. Som sådan avgör metoden 800, baserad på värdet av förhållandet FMCm/FMCm- 1, om det är ett scenklipp mellan bildruta m och bildruta m-l . 10 15 20 25 30 529 152 21 Metoden 800 avgör sedan (vid 860) om bildruta n är den sista bildrutan i videosekvensen.
Om så är fallet avslutas metoden. Om bildruta n ej är den sista bildrutan i videosekvensen, omindexerar metoden bildruta n som bildruta 0 i videosekvensen, så att bildruta n+1 omindexeras som bildruta 1, bildruta n+2 som bildruta 2 etc. Metoden fortsätter sedan vid steg 815.
AVSNITT II: FULLSTÄNDIG ÅTERANVÃNDNIN G AV RÖRELSEVEKTORER BESTÄMDA 1 BN FÖRSTA OMGÅNG I de flesta konventionella videokodare förbrukar processen, att beräkna rörelsevektorer, en betydande andel av datorresurserna. Därför, när det gäller kodning av en videosekvens, är det fördelaktigt att minimera antalet beräkningar av rörelsevektorer så mycket som möjligt.
I tvåomgångs-kodningsmetoden hos den föreliggande uppfinningen är det därför fördelaktigt att i den andra omgången återanvända så många som möjligt av de rörelse- vektorer, som är beräknade i den första omgången, så att färre nya rörelsevektorer behöver beräknas i den andra omgången.
I ett alternativt utförande återanvänds alla av de i den första omgången beräknade rörelse- vektorema i den andra omgången, för att tillhandahålla en fullständig återanvändning av rörelsevektorer. Den fullständiga återanvändningsmetoden liknar den partiella åter- användningsmetoden, beskriven ovan i Avsnitt I, bortsett från att i den första omgången beräknas rörelsevektorer för varje bildruta, genom att använda information från samma referensbildruta (bildruta 0) istället för en föregående bildruta (såsom i den partiella återanvändningsmetoden). Under den andra omgången återanvänds varje rörelsevektor, som bestämdes i den första omgången, i den andra omgången, för att koda B-bildrutor och P-bildrutor i en uppsättning av efter varandra följande bildrutor.
Fig. 9 är en grafisk illustration av en uppsättning av efter varandra följande bildrutor 900, som är processad i tvâ omgångar med fiillständig återanvändning av rörelsevektorer, beräknade i den första omgången. Uppsättningen av efter varandra följande bildrutor 900 består av fem bildrutor 910 som visas i visningsordning. Såsom visas i Fig. 9, är för den första och den andra omgången, varje bildruta 910 identifierad av en bildrutetyp (I, P eller B) och ett indexerande nummer (1 till 4) índikerande visningsordningen för bildrutan i uppsättningen av efter varandra följande bildrutor 900. 10 15 20 25 30 529 152 22 Pílama 920 indikerar rörelsevektorsberäkningar användandes infonnation från en bildruta (vid början på av pilen 920), för att beräkna rörelsevektorer till en annan bildruta (vid slutet av pilen 920). Pílama 920 som visas ovanför bildrutoma 910, visar beräkningar av rörelse- vektorer som sker i den första omgången och pilama 920 som visas nedanför bildrutoma 910 relaterar till beräkningar av rörelsevektorer som sker i den andra omgången. Såsom visas i Fig. 9 beräknas i den första omgången rörelsevektorer för bildrutoma 1 till 4, genom att använda informationen från samma referensbildruta (bildruta 0). Som sådana beräknas rörelsevektorer för bildrutorna 1 till 4, som om den slutliga kodningen skulle utföras användandes alla P-bildrutor, där varje P-bildruta refererar till bildruta 0. I exemplet visat i Fig. 9 har det fastställts att tre B-bildrutor ska bli kodade i uppsättningen av efier varandra följande bildrutor 900.
I den andra omgången ska det fastställda antalet B-bildrutor kodas (som B1, B; och B3) med nästa bildruta kodad som en P-bildruta (bildruta P4). Såsom visas i F ig. 9 måste nya beräkningar av rörelsevektorer utföras, fór att beräkna nya rörelsevektorer i den andra omgången för kodning av B-bildrutoma och P-bildrutoma. Exempelvis indikerrar pil 625 en ny beräkning av rörelsevektorer som genomförs i den andra omgången.
Notera dock att alla rörelsevektorer, beräknade i den första omgången, kan bli återanvända i den andra omgången, då villkoret för att återanvända en rörelsevektor (informationen härrör från samma bildruta i båda omgångama) möts fór varje rörelsevektor beräknad i den första omgången. Exempelvis används informationen från bildruta 10 för att beräkna rörelse- vektorer för bildruta P3 i den första omgången. 1 den andra omgången behövs informationen från 10 även för att beräkna rörelsevektorer för bildruta Bg. Som sådan kan rörelsevektorer, beräknade för bildruta P3 i den första omgången, återanvändas för att koda bildruta B; i den andra omgången.
Genom en liknade analys kan även bildrutoma Bi, Bg och P4 i den andra omgången återanvända de rörelsevektorer som beräknats i den första omgången för respektive bildruta P1, P2 och P4. Beräkningarna av rörelsevektorer som tillhandahåller rörelsevektorer för en bildruta i den första omgången och som återanvänds i den andra omgången indikeras med prickade pilar 935. Då ett B-pixelblock typiskt sätt använder två rörelsevektorer, en beräknad från en föregående bildruta och en från en kommande bildruta, behöver även 10 15 20 25 30 529 152 23 kodningen av Bl, B; och Bg, i den andra omgången, nya rörelsevektorer beräknade från informationen hos bildruta P4.
Fig. 10 är ett flödesschema över en metod 1000 för kodning av en videosekvens i tvâ omgångar, där alla rörelsevektorer beräknade i den första omgången återanvänds i den andra omgången. Metoden i Fig. 10 liknar metoden i Fig. 5 och endast de steg som skiljer sig diskuteras här i detalj. Metoden 600 kan exempelvis utföras av kodningskomponenten 110.
Metoden 1000 inleds med mottagandet (vid 1005) av en videosekvens. Videosekvensen omfattar ett flertal videobildrutor indexerade från 0 till N. Varje bildruta är uppdelad i uppsättningar av pixlar benämnda pixelblock. Metoden kodar sedan (vid 1010) bildruta 0 från mångfalden av bildrutor som en I-bildruta. Metoden sätter sedan (vid 1015) en räknare till lika med 1. Metoden beräknar (vid 1020) rörelsevektorer för pixelblocken i bildruta m användandes information fiån föregående bildruta 0 (dvs. rörelsevektorer för pixelblocken i bildruta m beräknas som om bildruta m ska kodas som en P-bildruta som refererar till bildruta 0). En grafisk illustration av steg 1020 visas i Fig. 9. Metoden bestämmer sedan (vid 1025) ett rörelsekompenserat fel (MCE) för pixelblocken i bildruta m. 1 ett altemativt utförande är inte MCE för pixelblocken beräknade.
Metoden bestämmer sedan (vid 1030) ett medelvärde för bildrutans rörelsekostnad (AFMCm) för bildrutorna 1 till m. I ett altemativt utförande, bestämmer metoden (vid 1030) en bildrutas rörelsekostnad (FMCm) för den individuella bildrutan m. Metoden avgör sedan (vid 1035) om AFMCm-värdet för bildruta 1 till m är mindre än ett förutbestämt tröskel- värde T. I ett altemativt utförande avgör metoden (vid 1035) om AFMCm-värdet är mindre än ett förutbestämt tröskelvärde Tm, där Tm representerar en uppsättning av förutbestämda tröskelvärden som varierar i värde beroende av värdet på räknaren m.
Om metoden avgör (vid 1035) att AFMCm-värdet är mindre än det förutbestämda tröskel- värdet T, ökar metoden (vid 1040) räknaren med ett och fortsätter vid steg 1020. Om metoden avgör att (vid 103 5) att AFMCm-värdet inte är mindre än det förutbestämda tröskelvärdet T, sätter metoden (vid 1045) en variabel n lika med maximumet av 1 eller (m- l), så att minimumvärdet för n är 1. Metoden sätter också antalet (NB) B-bildrutor som ska kodas till lika med n-1. 10 15 20 25 30 529 152 24 Den första omgången av metoden l000:s operationer består av stegen 1015 till 1045 och bestämmer antalet (N B) B-bildrutor som ska kodas i uppsättningen av efter varandra följande bildrutor från 1 till n. Den andra omgången av metoden l000:s operation består av stegen 1050 till 1055. Vid steg 1050 kodar metoden bildruta n som en P-bildruta genom att återanvända vissa rörelsevektorer beräknade i den första omgången. 1 vissa utföranden återanvänds rörelsevektorer beräknade för pixelblocken i bildruta n till att beräkna rörelsevektorer för pixelblocken i bildruta n i den andra omgången, såsom illustreras i F ig. 9. Metoden kodar sedan (vid 1055) bildrutoma 1 till NB som B-bildrutor genom återanvändning av de återstående rörelsevektorerna beräknade i den första omgången. I vissa utföranden återanvänds rörelsevektorer för pixelblocken i bildrutoma 1 till NB (som är P-bildrutor) beräknade i första omgången till att beräkna rörelsevektorer för pixelblocken i bildrutoma 1 till NB (som är B-bildrutor) i den andra omgången, såsom illustreras grafiskt i Fig. 9.
Metoden 1000 avgör sedan (vid 1060) om bildruta n är den sista bildrutan i video- sekvensen. Om så är fallet avslutas metoden. Om bildruta n inte är den sista bildrutan i videosekvensen, omindexerar metoden bildruta n som bildruta 0 i videosekvensen så att bildruta n+l omindexeras som bildruta 1, bildruta n+2 omindexeras som bildruta 2, etc.
Metoden fortsätter sedan vid steg 1015.
Fig. 11 är ett flödesschema över Fig. l0:s fullständiga tvåomgångs-återanvändningsmetod kombinerad med en scenklippsdetekteríngsmetod i enlighet med den föreliggande uppfinningen. Metoden 'från F ig. 11 liknar metoderna i Fig. 6 och 10 och endast de steg som skiljer sig diskuteras här i detalj. Metoden 1100 kan exempelvis utföras av kodningsenhetenl 10.
Metoden 1100 inleds genom att motta (vid 1105) en videosekvens bestående av ett flertal videobildrutor indexerade från 0 till N, där varje bildruta är uppdelad i uppsättningar av pixlar benämnda pixelblock. Metoden kodar sedan (vid 1110) bildruta 0 från mångfalden av videobildrutor som en I-bildruta. Metoden sätter sedan (vid 1115) en räknare m till lika med 1. Metoden beräknar (vid 1120) rörelsevektorer för pixelblocken i bildruta m användandes information från bildruta 0. Metoden bestämmer sedan (vid 1125) ett 10 15 20 25 30 529 152 25 rörelsekompenserat fel (MCE) för pixelblocken i bildruta m. I ett altemativt utförande beräknas inte MCE för pixelblocken i bildruta m.
Metoden avgör sedan (vid 1 130) en bildrutas rörelsekostnad (FMCm) för bildruta m och en bildrutas rörelsekostnad (FMCm) för en bildruta som omedelbart föregår bildruta m.
Metoden beräknar sedan (vid 1130) värdet av FMCmIFMCmJ. Emellertid under den första iterationen av metoden 1 100 där bildruta m-1 är en I-bildruta, sätts värdet av FMCm/FMCW 1 till lika med 0. Eftersom bildrutans rörelsekostnad för en I-bildruta är 0, hindrar detta en divisionoperation där nämnaren är 0.
Metoden avgör sedan (vid 1135) om värdet av FMCm/FMCM; är mindre än ett förutbestämt tröskelvärde C eller Cm. Om metoden avgör (vid 1135) att värdet av FMCm/F MC,,,_1 är mindre än det förutbestämda tröskelvärdet C, ökar metoden (vid 1140) räknaren m med ett och fortsätter vid steg 1120. Om metoden avgör (vid 1135) att värdet av FMCm/FMCM inte är mindre än det förutbestämda tröskelvärdet C, sätter metoden (vid 1145) en variabel n till lika med maximum av 1 eller (m-l) och den sätter även antalet (NB) B-bildrutor som ska kodas till lika med n-l.
Den första omgången av metoden 1100 omfattar stegen 1115 till 1145 och avgör antalet (NB) B-bildrutor som ska kodas i uppsättningen av efter varandra följande bildrutor från 1 till n. Den andra omgången av metoden 1100 omfattar stegen 1150 till 1155. Vid steg 1150 kodar metoden bildruta n som en P-bildruta, genom att använda nâgra rörelsevektorer beräknade i den första omgången. Metoden kodar sedan (vid 1155) bildruta 1 till NB som B-bildrutor, genom att återanvända de återstående rörelsevektorema beräknade i den första omgången.
Metoden 1 100 avgör sedan (vid 1160) om bildruta n är den sista bildrutan i video- sekvensen. Om så är fallet avslutas metoden. Om bildruta n inte är den sista bildrutan i videosekvensen, omindexerar metoden sedan bildruta n som bildruta 0 i videosekvensen så att bildruta n+l omindexeras som bildruta 1, bildruta n+2 omindexeras som bildruta 2 etc.
Metoden fortsätter sedan vid steg 1115.
F ig. 12 visar ett datasystem i vilket några av utförandena av uppfinningen är implemente- rade. Datasystem 1200 inkluderar en buss 1205, en processor 1210, ett systemminne 1215, 10 15 20 25 30 529 152 26 ett ROM-minne 1220, en permanent lagringsenhet 1225, en inputenhet 1230 och en outputenhet 1235.
Bussen 1205 representerar kollektivt alla system, kringutrustning och chipsetbussar som kommunikativt sammanbinder de talrika interna enheterna i datasystemet 1200. Till exempel sammanbinder bussen 1205 kommunikativt processorn 1210 med ROM-minnet 1220, systemminnet 1215 och den permanenta lagringsenheten 1225.
ROM-minnet 1220 lagrar statisk data och instruktioner som behövs av processorn 1210 och andra moduler i datorsystemet. Den permanenta lagringsenheten 1225, å andra sidan är endast en RW-minnesenhet. Enheten är ett íckeflyktigt minne som lagrar instruktion och data även när datasystemet 1200 är avstängt. Vissa utföranden av uppfinningen använder en masslagringsenhet (såsom en magnetisk eller optisk disk och dess motsvarande diskdrive) som den permanenta lagringsenheten 1225. Andra utföranden använder en borttagbar lagringsenhet (såsom en floppydiskett eller en zip®-disk och deras motsvarande diskdrive) som den permanenta lagringsenheten. Den permanenta lagringsenheten kan exempelvis innehålla instruktioner med applikationer som genomför metoder av den föreliggande uppfinningen.
Precis som den permanenta lagringsenheten 1225 är systemminnet 1215 en RW- minnesenhet. Emellertid är, till skillnad från lagringsenheten 1225, systemminnet ett flyktigt RW-minne, såsom ett random access memory (RAM). Systemminnet lagrar vissa av instruktionerna och data som processorn behöver vid den körs. I vissa utföranden är uppfinningens processer lagrade i systemminnet 1215, den permanenta lagringsenheten 1225 och/eller RW-minnet 1220. Från dessa olika minnesenheter erhåller processorn 1210 instruktioner att exekveras och data att processa, fór att exekvera uppfinningens processer.
Bussen 1205 ansluter även till input- och outputenheterna 1230 och 1235. Inputenheten möjliggör för användaren att kommunicera information och välja kommandon till datasystemet. Inputenheten 1230 inkluderar alfanumeriskt tangentbord och pekdon.
Outputenhetema 1235 visar bilder genererade av datasystemet. Till exempel visar dessa enheter designlayouts fór IC-kretsar. Outputenhetema inkluderar skrivare och visningsenheter, såsom katodstrålerör CRT-skännar eller LCD-skärrnar. 10 15 20 529 152 27 Slutligen, såsom visas i Fig. 12, kopplar buss 1205 även ihop datorn 1200 med ett nätverk 1265 genom en nätverksadapter (visas ej). På det här viset kan datorn bli en del av ett nätverk av datorer (såsom ett lokalt nätverk (”LAN”), ett wide area network (”WAN”) eller ett intranät) eller ett nätverk av nätverk (såsom Intemet). Någon eller alla av komponen- tema i datasystemet 1200 kan användas i förening med uppfinningen. Emellertid inses att en person med ordinära kunskaper inom området förstår att även arman systemkonfigura- tion kan användas i förening med den föreliggande uppfinningen.
Vissa utföranden beskrivna ovan relaterar till videobildrutor i YUV-format. En person med ordinära kunskaper inom området kommer emellertid att inse att dessa utföranden även kan relatera till en mängd andra format än YUV. Dessutom kan andra videobildformat (såsom RGB) lätt transformeras till YUV-fonnatet. Vidare kan utföranden av den givna uppfinningen relatera till olika vídeokodningsapplikationer (exempelvis DVD, digital lagringsmedia, TV-utsändning, intemetstreaming, kommunikation, telekonferanser etc.) i realtid eller dåtid. Utfóranden av den föreliggande uppfinningen kan även användas för videosekvenser med olika kodningsstandarder såsom H.263 och H.264 (även känd som MPEGA/Pan 10).
Medan uppfinningen har blivit beskrivits med referens till talrika specifika detaljer inser en person med ordinära kunskaper inom området att även andra specifika former kan införlivas i uppfinningen utan att frångå uppfinningens andemening. Sålunda kommer en person med ordinära kunskaper inom området att inse att uppfinningen inte är begränsad av de ovannämnda illustrativa detaljema, utan snarare är definierad av de bifogade patentkraven.

Claims (30)

10 15 20 25 30 35 28 529 152 PATENTKRAV
1. En metod för behandling av en videosekvens som består av ett flertal bildrutor för att bestämma ett antal dubbelriktade rörelsekompenserade (B) bildrutor som skall kodas i en uppsättning av efter varandra följ ande bildrutor från mångfalden av bildrutor, varvid metoden innefattar: a) beräkning av rörelsevektorer för åtminstone en bildruta i uppsättningen av efter varandra följ ande bildrutor, varvid de beräknade rörelsevektorema för varje specifik bildruta är baserade endast på den specifika bildrutan och en föregående bildruta, b) bestämning av ett rörelsekostnadsvärde för åtminstone en bildruta i uppsättningen av efter varandra följande bildrutor, c) bestämning av ett härlett kostnadsvärde baserat på rörelsekostnadsvärdet för åtminstone en bildruta i uppsättningen av efter varandra följ ande bildrutor, och d) bestämning av antalet B-bildrutor som skall kodas i uppsättningen av efter varandra följ ande bildrutor baserat på det härledda kostnadsvärdet.
2. Metoden i patentkrav 1 vari rörelsekostnadsvärdet för en bildruta är relaterad till antalet bitar som behövs för att koda bildrutans rörelsevektorer.
3. Metoden i patentkrav 2 består vidare av, efter steg a) och före steg b): beräkna rörelsekompenserade fel (MCE) för åtminstone en bildruta i uppsättningen av efterföljande bildrutor, vari rörelsekostnadsvärdet för en bildruta är relaterat till antalet bitar som behövs för att koda bildrutans rörelsevektorer och dess MCE.
4. Metoden i patentkrav 1 vari: steg b) omfattar en bestämning av ett rörelsekostnadsvärde för en första och andra bildruta i uppsättningen av efterföljande bildrutor; och det härledda kostnadsvärdet är medelvärdet för rörelsekostnadsvärdena för första och andra bildrutorna.
5. Metoden i patentkrav l vari: steg b) omfattar en bestämning av ett rörelsekostnadsvärde för en första och andra bildruta i uppsättningen av efterföljande bildrutor; och det härledda kostnadsvärdet är förhållandet mellan rörelsekostnadsvärdet för den första bildrutan och rörelsekostnadsvärdet för den andra bildrutan. 10 15 20 25 30 35 529 152
6. Metoden i patentkrav 1 vari steg d) omfattar en jämförelse av det härledda kostnads- värdet med ett förutbestämt tröskelvärde för att bestämma antalet B-bildrutor som ska kodas i uppsättningen av efterföljande bildrutor, vari antalet B-bildrutor som ska kodas ökar så länge som det härledda kostnadsvärdet är mindre än det förutbestämda tröskel- värdet.
7. Metoden i patentkrav 6 vari det förutbestämda tröskelvärdet varierar då antalet B- bildrutor som ska kodas ökar.
8. En metod för kodning av en videosekvens i två omgångar, varvid videosekvensen består av ett flertal bildrutor, varvid metoden innefattar: a) genomförande av en första omgång operationer på en uppsättning av efter varandra följ ande bildrutor från flertalet bildrutor, varvid den första omgången operationer innefattar: - beräkning av rörelsevektorer för åtminstone en bildruta i uppsättningen av efter varandra följ ande bildrutor, varvid de beräknade rörelsevektorerna för varje specifik bildruta är baserade endast på den specifika bildrutan och en föregående bildruta, - bestämmande av ett rörelsekostnadsvärde för åtminstone en bildruta i uppsättningen av efter varandra följande bildrutor, - bestämmande av härlett kostnadsvärde baserat på rörelsekostnadsvärdet för åtminstone en bildruta i uppsättningen av efter varandra följ ande bildrutor, och - bestämmande av ett antal dubbelriktade rörelsekompenserade (B) bildrutor som skall kodas i uppsättningen av efter varandra följ ande bildrutor baserat på det härledda kostnadsvärdet, och b) genomförande av en andra omgång operationer på uppsättningen av efter varandra följ ande bildrutor, varvid den andra omgången operationer innefattar: - kodning av det bestämda antalet bildrutor i uppsättningen av efter varandra följ ande bildrutor som B-bildrutor genom användning av åtminstone en rörelsevektor beräknad i den första omgången operationer. 5 10 15 20 25 30 35 529 152 30
9. Metoden i patentkrav 8 vari en bildrutas rörelsekostriadsvärde är relaterad till antalet bitar som behövs för att koda bildrutans rörelsevektor.
10. Metoden i patentkrav 8 vari: steg a) består av att bestämma ett rörelsekosmadsvärde för en första och andra bildruta i uppsättningen av efterföljande bildrutor; och det härledda kostnadsvärdet är medelvärdet av rörelsekostrradsvärdena för den första och andra bildrutan.
11. Metoden i patentkrav 8 vari: steg a) består av att bestämma ett rörelsekostnadsvärde för en första och andra bildruta i uppsättningen av efterföljande bildrutor; och det härledda kostnadsvärdet är förhållandet mellan rörelsekosmadsvärdet för den första bildrutan och rörelsekostnadsvärdet för den andra bildrutan.
12. Metoden i patentkrav 8 vari steg a) omfattar beräkning av rörelsevektorer för en första och andra bildruta i uppsättningen av efterföljande bildrutor, rörelsevektorer beräknade för den första bildrutan använder information från en föregående bildruta och rörelsevektorer för den andra bildrutan använder information från samrna föregående bildruta.
13. Metoden i patentkrav 12, vari alla rörelsevektorer beräknade i den första omgången operationer används i den andra omgången operationer.
14. Metoden i patentkrav 8 vari steg b) består vidare av att koda nästa bildruta, ur uppsättningen av efterföljande bildrutor efier B-bildrutoma, som en P-bildruta.
15. Ett dataläsbart medium med ett datorprogram för att bearbeta en videosekvens bestående av ett flertal bildrutor för att bestämma ett antal dubbelriktade rörelsekompenserade (B) bildrutor som ska kodas i en uppsättning av efter varandra följ ande bildrutor i mängden av bildrutor, varvid prograinprodiilrten för dator består av: instruktioner för beräkning av rörelsevektorer för åtminstone en bildruta i uppsättningen av efter varandra följande bildrutor; varvid de beräknade rörelsevektorerna för varje specifik bildruta är baserade endast på den specifika bildrutan och en föregående bildruta, 10 15 20 25 30 35 529 152 instruktioner för att bestämma ett rörelsekostnadsvärde för åtminstone en bildruta i uppsättningen av efterföljande bildrutor; instruktioner för att bestärmna ett härlett kostnadsvärde baserat på rörelsekostnadsvärdet för åtminstone en bildruta i uppsättningen av efterföljande bildrutor; och instruktioner för att bestämrna antalet B-bildrutor som ska kodas i uppsättningen av efterföljande bildrutor baserat på det härledda kostnadsvärdet.
16. Det datorläsbara mediumet i patentkrav 15, vari rörelsekostnadsvärdet för en bildruta är relaterad till antalet bitar som behövs för att koda bildrutans rörelsevektorer.
17. Det datorläsbara mediumet i patentkrav 16 vari: - instruktionerna för att bestämma ett rörelsekosmadsvärde för åtminstone en bildruta i uppsättningen av efterföljande bildrutor består av instruktioner för att bestämma ett rörelsekosmadsvärde för en första och en andra bildruta i uppsättningen av efterföljande bildrutor; och - det härledda kostnadsvärdet är förhållandet mellan rörelsekostnaden för den första bildrutan och rörelsekostnaden för den andra bildrutan.
18. Det datorläsbara mediumet i patentkrav 15, vari instruktionerna för att bestämma antalet B-bildrutor innehåller instruktioner för att jämföra det härledda kostnadsvärdet med ett förutbestämt tröskelvärde för att bestämma antalet B-bildrutor som ska kodas i uppsättningen av efterföljande bildrutor, vari antalet B-bildrutor som ska kodas ökar så länge som det härledda kostnadsvärdet är lägre än det förutbestämda tröskelvärdet.
19. Ett datorläsbart medium med ett datorprogram för att koda en videosekvens i två omgångar, varvid videosekvensen består av ett flertal bildrutor, varvid datorprogrammet omfattar: - instruktioner för att genomföra en första omgång av operationer på en uppsättning av efterföljande bildrutor ur mångfalden av bildrutor, varvid instruktionerna för att genomföra den första omgången av operationer omfattar: - instruktioner för beräkning av rörelsevektorer för åtminstone en bildruta i uppsättningen av efter varandra följ ande bildrutor; varvid de beräknade rörelsevektorema för varje specifik bildruta är baserade endast på den specifika bildrutan och en föregående bildruta, 10 15 20 25 30 35 529 152 32 - instruktioner för att bestämma ett rörelsekostnadsvärde för åtminstone en bildruta i uppsättningen av efterföljande bildrutor; - instruktioner för att bestämma ett härlett kostnadsvärde baserat på rörelsekostnadsvärdet för åtminstone en bildruta i uppsättningen av efterföljande bildrutor; och - instruktioner för att bestämma ett antal dubbelriktade rörelsekompenserade (B) bildrutor som ska kodas i uppsättningen av efterföljande bildrutor baserade på det härledda kostnadsvärdet; och - instruktioner för att genomföra en andra omgång av operationer på en uppsättning av efterföljande bildrutor, varvid instruktionerna för att genomföra den andra omgången av operationer omfattar: - instruktioner för kodning av de bestämda antalet bildrutor i uppsättningen av efterföljande bildrutor som B-bildrutor genom att använda åtminstone en rörelsevektor beräknad av instruktioner som genomför den första omgången av operationer.
20. Det datorläsbara mediumet i patentkrav 19 vari rörelsekostnadsvärdet för en bildruta är relaterad till antalet bitar som behövs för att koda bildrutans rörelsevektorer.
21. Det datorläsbara mediumet i patentkrav 19 vari instruktionema för beräkning av rörelsevektorer omfattar instruktioner för beräkning av rörelsevektorer för en första och andra bildruta i uppsättningen av efterföljande bildrutor; varvid rörelsevektorerna för den första bildrutan beräknas med användning av information från en föregående bildruta och rörelsevektorema för den andra bildrutan beräknas med användning av information från samma föregående bildruta.
22. Det datorläsbara mediumet i patentkrav 19 vari alla rörelsevektorer beräknade av instruktionema som genomför den första omgången av operationerna används av instruktionerna som genomför den andra omgången av operationema.
23. Det datorläsbara mediumet i patentkrav 19, vari i den första omgången av operationer: uppsättningen av efter varandra följ ande bildrutor ej innehåller någon B- bildruta.
24. Det datorläsbara mediumet i patentkrav 19, vilket dessutom innefattar 10 15 20 25 30 529 152 a) instruktioner för att bestämma ett förhållande mellan rörelsekostnadsvärdet för en första bildruta och ett rörelsekostnadsvärde för en andra bildruta, och b) instruktioner för att fastställa huruvida det finns något scenklipp mellan den första bildrutan och den andra bildrutan baserat på förhållandet.
25. Metoden i patentkrav 8, vari, i den första omgången av operationer: uppsättningen av efter varandra följ ande bildrutor ej innehåller någon B-bildmta.
26. Metoden i patentkrav 8, vilken dessutom innefattar: a) bestämmande av ett förhållande mellan rörelsekostnadsvärdet för en första bildruta och ett rörelsekostnadsvärde för en andra bildruta, och b) fastställande huruvida det finns något scenklipp mellan den första bildrutan och den andra bildrutan baserat på förhållandet.
27. Metoden i patentkrav 26, vari ett scenklipp utgör en punkt i tiden när innehållet i videosekvensen är osammanhängande.
28. Metoden i patentkrav 26, vari rörelsekostnadsvärdet för den första bildrutan är relaterat till antalet bitar som krävs för att koda rörelsevektorerna för den första bildrutan och rörelsekostnadsvärdet för den andra bildrutan är relaterat till antalet bitar som krävs för att koda rörelsevektorema för den andra bildrutan.
29. Metoden i patentkrav 26, vari fastställandet huruvida det finns något scenklipp innefattar fastställande huruvida förhållandet är mindre än det förutbestämda tröskelvärdet.
30. Metoden i patentkrav 29, vilken dessutom innefattar markera den första bildrutan som en bildruta omedelbart efter ett scenklipp och den andra bildrutan som en bildruta omedelbart före scenklippet om det fastställts att förhållandet är mindre än det förutbestämda tröskelvärdet.
SE0500806A 2003-09-09 2005-04-12 Bestämning av antalet enkelriktade och dubbelriktade rörelsekompenserade bildrutor som ska kodas för en videosekvens och upptäckning av scenklipp i videosekvensen SE529152C2 (sv)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/658,938 US7295612B2 (en) 2003-09-09 2003-09-09 Determining the number of unidirectional and bidirectional motion compensated frames to be encoded for a video sequence and detecting scene cuts in the video sequence
PCT/US2004/015032 WO2005027526A1 (en) 2003-09-09 2004-05-13 Video encoding method and scene cut detection method

Publications (2)

Publication Number Publication Date
SE0500806L SE0500806L (sv) 2005-07-07
SE529152C2 true SE529152C2 (sv) 2007-05-15

Family

ID=34226883

Family Applications (2)

Application Number Title Priority Date Filing Date
SE0700732A SE535206C2 (sv) 2003-09-09 2004-05-13 Detektering av scenklipp i en videosekvens
SE0500806A SE529152C2 (sv) 2003-09-09 2005-04-12 Bestämning av antalet enkelriktade och dubbelriktade rörelsekompenserade bildrutor som ska kodas för en videosekvens och upptäckning av scenklipp i videosekvensen

Family Applications Before (1)

Application Number Title Priority Date Filing Date
SE0700732A SE535206C2 (sv) 2003-09-09 2004-05-13 Detektering av scenklipp i en videosekvens

Country Status (4)

Country Link
US (2) US7295612B2 (sv)
EP (2) EP1665801A1 (sv)
SE (2) SE535206C2 (sv)
WO (1) WO2005027526A1 (sv)

Families Citing this family (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8111754B1 (en) 2001-07-11 2012-02-07 Dolby Laboratories Licensing Corporation Interpolation of video compression frames
US7266150B2 (en) * 2001-07-11 2007-09-04 Dolby Laboratories, Inc. Interpolation of video compression frames
KR20040075951A (ko) * 2002-01-22 2004-08-30 코닌클리케 필립스 일렉트로닉스 엔.브이. 이미 압축된 멀티미디어의 비트 레이트의 감소
US7295612B2 (en) 2003-09-09 2007-11-13 Apple Inc. Determining the number of unidirectional and bidirectional motion compensated frames to be encoded for a video sequence and detecting scene cuts in the video sequence
US8249113B2 (en) * 2004-03-19 2012-08-21 Broadlogic Network Technologies, Inc. Method and system for providing faster channel switching in a digital broadcast system
US20050232497A1 (en) * 2004-04-15 2005-10-20 Microsoft Corporation High-fidelity transcoding
US7728909B2 (en) * 2005-06-13 2010-06-01 Seiko Epson Corporation Method and system for estimating motion and compensating for perceived motion blur in digital video
US20070274385A1 (en) * 2006-05-26 2007-11-29 Zhongli He Method of increasing coding efficiency and reducing power consumption by on-line scene change detection while encoding inter-frame
US20080025408A1 (en) * 2006-07-31 2008-01-31 Sam Liu Video encoding
US7996666B2 (en) * 2007-09-04 2011-08-09 Apple Inc. User influenced loading sequence of startup applications
JP5427785B2 (ja) * 2007-09-28 2014-02-26 ドルビー ラボラトリーズ ライセンシング コーポレイション ビデオ圧縮技法及びビデオ伝達技法
US8457958B2 (en) * 2007-11-09 2013-06-04 Microsoft Corporation Audio transcoder using encoder-generated side information to transcode to target bit-rate
US8908765B2 (en) * 2007-11-15 2014-12-09 General Instrument Corporation Method and apparatus for performing motion estimation
US8218633B2 (en) * 2008-06-18 2012-07-10 Kiu Sha Management Limited Liability Company Bidirectionally decodable Wyner-Ziv video coding
US20100008419A1 (en) * 2008-07-10 2010-01-14 Apple Inc. Hierarchical Bi-Directional P Frames
WO2010017166A2 (en) 2008-08-04 2010-02-11 Dolby Laboratories Licensing Corporation Overlapped block disparity estimation and compensation architecture
KR101279573B1 (ko) 2008-10-31 2013-06-27 에스케이텔레콤 주식회사 움직임 벡터 부호화 방법 및 장치와 그를 이용한 영상 부호화/복호화 방법 및 장치
US8396114B2 (en) 2009-01-29 2013-03-12 Microsoft Corporation Multiple bit rate video encoding using variable bit rate and dynamic resolution for adaptive video streaming
US8311115B2 (en) 2009-01-29 2012-11-13 Microsoft Corporation Video encoding using previously calculated motion information
US8737475B2 (en) * 2009-02-02 2014-05-27 Freescale Semiconductor, Inc. Video scene change detection and encoding complexity reduction in a video encoder system having multiple processing devices
TWI463878B (zh) * 2009-02-19 2014-12-01 Sony Corp Image processing apparatus and method
EP2224745B1 (en) * 2009-02-27 2019-11-06 STMicroelectronics Srl Temporal scalability in case of scene changes
US8270473B2 (en) 2009-06-12 2012-09-18 Microsoft Corporation Motion based dynamic resolution multiple bit rate video encoding
US8705616B2 (en) 2010-06-11 2014-04-22 Microsoft Corporation Parallel multiple bitrate video encoding to reduce latency and dependences between groups of pictures
WO2013019517A1 (en) 2011-08-02 2013-02-07 Ciinow, Inc. A method and mechanism for efficiently delivering visual data across a network
US9591318B2 (en) 2011-09-16 2017-03-07 Microsoft Technology Licensing, Llc Multi-layer encoding and decoding
US9094684B2 (en) 2011-12-19 2015-07-28 Google Technology Holdings LLC Method for dual pass rate control video encoding
US11089343B2 (en) 2012-01-11 2021-08-10 Microsoft Technology Licensing, Llc Capability advertisement, configuration and control for video coding and decoding
US8948529B1 (en) * 2012-10-30 2015-02-03 Google Inc. Multi-pass encoding
US10116943B2 (en) * 2013-10-16 2018-10-30 Nvidia Corporation Adaptive video compression for latency control
JP6335504B2 (ja) * 2013-12-20 2018-05-30 キヤノン株式会社 画像処理装置、画像処理方法及びプログラム
US20150208072A1 (en) * 2014-01-22 2015-07-23 Nvidia Corporation Adaptive video compression based on motion
CN103974068B (zh) * 2014-05-07 2017-07-07 电子科技大学 一种基于内容的视频尺寸缩小的方法
US10063866B2 (en) * 2015-01-07 2018-08-28 Texas Instruments Incorporated Multi-pass video encoding
US10951875B2 (en) 2018-07-03 2021-03-16 Raxium, Inc. Display processing circuitry
US11902547B2 (en) 2021-07-15 2024-02-13 Google Llc Low-delay two-pass frame-level rate control using an adjusted complexity

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2263602B (en) 1992-01-24 1995-06-21 Sony Broadcast & Communication Motion compensated video signal processing
US5592226A (en) 1994-01-26 1997-01-07 Btg Usa Inc. Method and apparatus for video data compression using temporally adaptive motion interpolation
US5774593A (en) * 1995-07-24 1998-06-30 University Of Washington Automatic scene decomposition and optimization of MPEG compressed video
US6057893A (en) * 1995-12-28 2000-05-02 Sony Corporation Picture encoding method, picture encoding apparatus, picture transmitting method and picture recording medium
US6456328B1 (en) 1996-12-18 2002-09-24 Lucent Technologies Inc. Object-oriented adaptive prefilter for low bit-rate video systems
US6005626A (en) 1997-01-09 1999-12-21 Sun Microsystems, Inc. Digital video signal encoder and encoding method
US6281942B1 (en) 1997-08-11 2001-08-28 Microsoft Corporation Spatial and temporal filtering mechanism for digital motion video signals
US6307886B1 (en) 1998-01-20 2001-10-23 International Business Machines Corp. Dynamically determining group of picture size during encoding of video sequence
FR2783388B1 (fr) 1998-09-15 2000-10-13 Thomson Multimedia Sa Procede de compression d'images et dispositif pour la mise en oeuvre de ce procede
CN1255021A (zh) 1998-11-23 2000-05-31 惠普公司 不用重新计算运动矢量就可修改压缩图象的装置和方法
US6618507B1 (en) 1999-01-25 2003-09-09 Mitsubishi Electric Research Laboratories, Inc Methods of feature extraction of video sequences
US7003038B2 (en) * 1999-09-27 2006-02-21 Mitsubishi Electric Research Labs., Inc. Activity descriptor for video sequences
JP3757088B2 (ja) 1999-10-26 2006-03-22 日本電気株式会社 動画像符号化装置および方法
JP2002101416A (ja) 2000-09-25 2002-04-05 Fujitsu Ltd 画像制御装置
US6731821B1 (en) 2000-09-29 2004-05-04 Hewlett-Packard Development Company, L.P. Method for enhancing compressibility and visual quality of scanned document images
US7058130B2 (en) 2000-12-11 2006-06-06 Sony Corporation Scene change detection
US6934335B2 (en) 2000-12-11 2005-08-23 Sony Corporation Video encoder with embedded scene change and 3:2 pull-down detections
US7203238B2 (en) 2000-12-11 2007-04-10 Sony Corporation 3:2 Pull-down detection
US6944224B2 (en) * 2002-08-14 2005-09-13 Intervideo, Inc. Systems and methods for selecting a macroblock mode in a video encoder
KR20050050673A (ko) 2002-10-16 2005-05-31 코닌클리케 필립스 일렉트로닉스 엔.브이. 비디오 인코딩 방법
US7609763B2 (en) * 2003-07-18 2009-10-27 Microsoft Corporation Advanced bi-directional predictive coding of video frames
US7430335B2 (en) 2003-08-13 2008-09-30 Apple Inc Pre-processing method and system for data reduction of video sequences and bit rate reduction of compressed video sequences using spatial filtering
US7295612B2 (en) 2003-09-09 2007-11-13 Apple Inc. Determining the number of unidirectional and bidirectional motion compensated frames to be encoded for a video sequence and detecting scene cuts in the video sequence

Also Published As

Publication number Publication date
SE0700732L (sv) 2007-03-26
US7856059B2 (en) 2010-12-21
WO2005027526A1 (en) 2005-03-24
SE535206C2 (sv) 2012-05-22
EP1942678B1 (en) 2014-08-20
SE0500806L (sv) 2005-07-07
EP1665801A1 (en) 2006-06-07
US20050053135A1 (en) 2005-03-10
US7295612B2 (en) 2007-11-13
US20080043847A1 (en) 2008-02-21
EP1942678A1 (en) 2008-07-09

Similar Documents

Publication Publication Date Title
SE529152C2 (sv) Bestämning av antalet enkelriktade och dubbelriktade rörelsekompenserade bildrutor som ska kodas för en videosekvens och upptäckning av scenklipp i videosekvensen
US9706202B2 (en) Image encoding apparatus, image encoding method, image decoding apparatus, and image decoding method
EP3389276B1 (en) Hash-based encoder decisions for video coding
RU2377737C2 (ru) Способ и устройство для преобразования с повышением частоты кадров с помощью кодера (ea-fruc) для сжатия видеоизображения
JP4001400B2 (ja) 動きベクトル検出方法及び動きベクトル検出装置
US7027509B2 (en) Hierarchical hybrid shot change detection method for MPEG-compressed video
CN101978698B (zh) 用于对图像进行编码和解码的方法及设备
US9936217B2 (en) Method and encoder for video encoding of a sequence of frames
US8184716B2 (en) Image coding apparatus, image coding method and image coding program
US20090052534A1 (en) Direction detection algorithms for h.264/avc intra prediction
US20090268819A1 (en) Motion vector calculation device and motion vector calculation method
CN109565600B (zh) 用于在预测参数中进行数据隐藏的方法和装置
JP4494803B2 (ja) 動き補償に基づいた改善されたノイズ予測方法及びその装置とそれを使用した動画符号化方法及びその装置
JP2001086434A (ja) 動き程度記述方法を用いる動映像索引及び検索方法
US8447104B2 (en) Method, medium and system adjusting predicted values based on similarities between color values for image compressing/recovering
Ladune et al. Modenet: Mode selection network for learned video coding
KR100517504B1 (ko) B-픽처의 움직임 보상 모드 결정방법 및 장치
JP2007531445A (ja) ビデオ処理方法及び対応する符号化装置
JP2008042424A (ja) 画像マッチング装置及び画像マッチング方法
US20230300330A1 (en) Bitrate-adaptive segmentation for video transcoding
Sairam et al. Fast encoding in HEVC using subsampling with unsymmetrical octagonal search pattern
Pattimi et al. Deep Learning Based Low-Complexity andHigh-Speed Coding Unit Partition Decisionfor High Efficiency Video Coding
CN114040208A (zh) 运动估计方法、装置、电子设备及存储介质
KR20030082794A (ko) 비디오 부호화기의 장면전환 검출 방법 및 장치
CN111901605A (zh) 视频处理方法、装置、电子设备及存储介质