SE535206C2 - Detektering av scenklipp i en videosekvens - Google Patents

Detektering av scenklipp i en videosekvens Download PDF

Info

Publication number
SE535206C2
SE535206C2 SE0700732A SE0700732A SE535206C2 SE 535206 C2 SE535206 C2 SE 535206C2 SE 0700732 A SE0700732 A SE 0700732A SE 0700732 A SE0700732 A SE 0700732A SE 535206 C2 SE535206 C2 SE 535206C2
Authority
SE
Sweden
Prior art keywords
video image
video
frame
motion vectors
value
Prior art date
Application number
SE0700732A
Other languages
English (en)
Other versions
SE0700732L (sv
Inventor
Barin Geoffry Haskell
Adriana Dumitras
Atul Puri
Original Assignee
Apple Inc
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 Inc filed Critical Apple Inc
Publication of SE0700732L publication Critical patent/SE0700732L/sv
Publication of SE535206C2 publication Critical patent/SE535206C2/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
    • 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
    • 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]
    • H04N7/26

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)

Abstract

Metoder för att processa en uppsättning av efter varandra följ ande videobildrutor i tvåomgångar fór att avgöra antalet dubbelriktade- (B) och antalet enkelriktade (P)rörelsekompenserade bildrutor som ska kodas i ett videokodningssystem. Under den förstaomgången är rörelsevektorer och rörelsekostnaden beräknade för varje bildruta och etthärlett kostnadsvärde beräknas baserat på rörelsekostnaden för åtminstone en bildruta. Dethärledda kostnadsvärdet används fór att avgöra antalet (N B) B-bildrutor som ska kodas iuppsättningen av efter varandra följande bildrutor. I den andra omgången kodasuppsättningen av efter varandra följande bildrutor där NB bildrutor är kodad som B-bildrutor och vissa eller alla rörelsevektorer beräknade i den första omgången återanvänds iden andra omgången. En scenklippsdetekteringsmetod är också tillhandahållen där enimpulslilmande ökning i ett förhållande mellan rörelsekostnadema bevakas.

Description

30 535 206 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 UI>PFINNINGEN 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örelsekostnadsvä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örelsekosmadsvä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örelsckostnadsvärdet hos en andra bildruta).
Dessutom, används i den första omgången ett härlett kostnadsvärde för att befimma antalet B-bildrutor (N B) 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 kosmadsvärdet är lägre än ett förutbestämt tröskelvärde. I andra omgången, kodas bildruta NB+I i uppsättningen av efter varandra följande bildrutor som en P-bildruta och bildrutoma I 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.
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 de i 10 15 20 25 30 535 205 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 ñr varje bildruta i en uppsättning av efter varandra följ ande 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örelsevektorema 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 ñljande 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ångskodningsmetoderna i den givna uppfinningen. I ytterliggare utföranden används scenklippsindikeringsmetoden oberoende från tvåomgångskodningsmetoden..
KORT BESKRIVNING AV RITNINGARNA De nya egenskapema hos uppfinningen är framlagda i de bifogade patentkraven.
Emellertid, i ett ñrklarande syfte, är ett flertal utföranden framlagda i de följande figurema.
Fig. 1 visar ett kodningssystem med kodnings- och avkodningskomponenter.
F ig. 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. i Fig. 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.
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. 10 15 20 25 30 535 206 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.
F i g. 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 första omgången återanvänds i den andra omgången.
Fig. ll är ett flödesschema över den fullständiga tvåomgångsåteranvändnings- metoden given i Fig. 10 kombinerad med en scenklippsdektekteringsmetod i enlighet med den föreliggande uppfinningen.
Fi g. 12 visar ett datasystem i vilka några av utförandena av uppfinningen är implementerade.
DETALIERAD BESKRIVNING AV UPPFINNINGEN I den följande beskrivningen, är talrika detaljer fiamlagda i förklaringssyfie. Emellertid inser en person med ordínä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 blockdiagramsformat 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 bildrutorna processas i två omgångar. Under ñrsta omgången beräknas rörelsevektorer för pixelblock hos varje bildruta i en uppsättning av efter varandra följ ande 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ärefier baserat på rörelsekostnadsvärdet för åtminstone en bildruta (till exempel kan det härledda kostnadsvärdet vara rörelsekosmadsvärdet för en bildruta, medelvärdet av rörelsekostnadsvärdena för två eller flera bildrutor eller förhållandet mellan 10 15 20 25 30 535 206 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ölj ande 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 bildrutor 1 till NB kodas som B-bildrutor, där vissa eller alla rörelsevektorer beräknade iden första omgången återanvänds i den andra omgångens kodningsprocess.
I vissa utföranden berälmas, i den första omgången, rörelsevektorer för varje bildruta i en uppsättning av efier varandra följande 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örelsevektorerna, 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 O 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örelsekostnadema 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 impulslíknande ökning av rörelsekostnaden mellan två efter varandra följande bildrutor vilka typiskt indikerar ett scenklipp mellan de två efier 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 scenklippsdetekteringsmetoden användas oberoende från de två-omgångs kodningsmetoden. 10 15 20 25 30 535 206 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-forrnatet. Vidare kan utföringsformer 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 annan 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 forsta bildruta sagd att ”referera” till ett andra pixelblock i en andra bildruta, när information från det andra pixelblocket används för att beräkna en rörelsevektor för det ßrsta pixelblocket. 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 bildrutoma ä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 forsta 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 fiillstä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 omgången är beskrivna i avsnitt II. Utförandena ñ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. 10 15 20 25 30 535 206 Fig. 1 illustrerar ett kodningssystem 100 med kodnings- och avkodningskomponenter 110 och 1 15. I vissa system, inkluderar kodningssystemet 100 en pre-processing komponent som föregår kodningskomponent 1 10 och en post-processing komponent som kommer efter avkodningskomponent 115. Såsom visas i Fig. 1, tas en originalvideosekvens emot av kodningskomponent 110, där originalvideosekvensen 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 ellervflera 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 110 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 implementerar 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 infonnation fi'ån kommande bildrutor, är sändningsordriingen 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 115). 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.
Fig. 2 är en grafisk illustration av bildrutor 210 tillhörig en videosekvens 200, i den ordning de visas. Som visas i Fig. 2 är varje bildruta 210 identifierad av en bildrutetyp (I, P eller B) och ett sifferindex (1, 2, 3, .. _) indikerande visningsordningen av bildrutorna i video- sekvens 200. I exemplet som visas i F ig. 2, innehåller uppsättningen av efter varandra 10 15 20 25 30 535 206 följ ande bildrutor från I1 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 fiån P5 till P10, fyra B-bildrutor (B15, B-1, Bg och Bg) kodade mellan P-bildrutoma.
Pilarna 220 indikerar rörelsevektorsberäkningar användandes infomiation fi-å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 fifån bildruta I1 fór att beräkna rörelsevektorer för bildrutoma Bz, Bg, B4 och P5. Som sådana är bildrutoma Bg, B 3, B4 och P5 sagda att referera till bildruta I1. Dessutom används information från bildruta P5 för att beräkna rörelsevektorer fór bildrutoma B2, Bg., och B4. Som sådana är bildrutoma B2, B;, och B4 sagda att referera till bildruta P5.
Efter avkodning av en avkodningskomponent visas videosekvens 200 i den visningsordning som ses F ig. 2. Eftersom B-bildrutorna 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 Fig. 2. Fig. 3 illustrerar grafiskt bildrutorna i video- sekvens 200 från Fig. 2 i sändningsordning. Videosekvensen 200 mottas i sändnings- ordningen av avkodningskomponent 115 ñ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 I1 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 5 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.
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 pixelhlock hos en föregående (tidigare) bildruta. Ett predikterat pixelblock skapas därefter genom att 10 15 20 25 30 535 206 använda rörelsevektorn och översätta pixlama i den tidigare bildrutan refererad till av P- bildrutan. Skillnaden mellan det verkliga pixelblocket i P-bíldrutan 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örelsevektorema 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-transform, såsom Hadamardtransforrnen, 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 fiå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änm 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ärefter för sändning.
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örelsevektorema från de närliggande pixelblocken i de lagrade bíldrutoma. Det 10 15 20 25 30 535 206 10 interpolerade värdet kan därefier 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 interpolationen 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äme 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 transfonnoperationen är en mängd av transformkoefficienter, samma antal som antalet transformerade pixlar i pixelblocket. Vid avkodningskomponenten invers- transformeras de mottagna transformkoeñicienterna, 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å 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 inverstransfonneringen.
Iman sändningen är transformkoefficienterna typiskt sätt kvantiserade och entropiskt kodade. Kvantisering involverar representation av transformkoefficientvärdena genom en finit uppsättning av möjliga värden, vilket reducerar sändningens noggrannhet och ofta l0 15 20 25 30 535 206 ll tvingar små värden till noll och vilket ytterliggare reducerar antalet sända koefficienter. I kvantisering divideras typiskt sätt varje transforrnkoefficient med en stegstorlek för kvantiseringen Q och avrundas till närmaste heltal. Heltalen kodas därefier entropiskt med hjälp av variabla ordlängds-kodningar (word-length codes) såsom Huffinan-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 funnen för pixelblocket som används för transformeringen. Exempelvis används vanligen 16 x 16, 16 x 8, 8 x 16 pixlar eller mindre storlekar för rörelsekompensation, medan 8 X8 eller 4 x 4 vanligen används för transformer.
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- koefficientema 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 efier att ett slutligt beslut är gjort.
AVSNITT I: DELVIS ÅTERANVÃNDNING AV RÖRELSEVEKTORER BESTÄMDA I EN FÖRSTA OMGÅNG I vissa utföranden omfattar en metod för kodning av bildrutor i en videosekvens bearbetning av bildrutoma i två omgångar, där vissa rörelsevektorer berälmade i den ß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 10 15 20 25 30 535 206 12 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örelsekosmaden för ett pixelblock = (X x rnotion_vectors_bits) + MCE där l är en Lagrange-multiplikator. För 7t=O är pixelblockets rörelsekostnad lika med värdet på rörelsekompenserade fel (MCE). Om Lagrange-multiplikatom Ä är större är pixelblockets rörelsekostnad proportionell till antalet bitar som behövs för att koda rörelsevektorn.
En rörelsekostnad för en bildruta i (Frame motion cost , FMCi) ä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 , AF MCm) genom att addera den individuella bildrutans rörelsekostnad för de m efter varandra följande bildrutoma och dividera resultatet med m, såsom uttrycks av följande ekvation: AFMCm= sum i= l 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 anta] (NB) B-bildrutor att kodas mellan varje I- eller P- bildrutor i uppsättningen av efter varandra följ ande 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 att bestämma antalet (NB) B-bildrutor. I ytterliggare utföranden används ett förhållande (FMCm)/(FMCm_i) mellan rörelsekostnaden för en ñrsta bildruta och rörelsekostnaden för en andra bildruta som föregår den första bildrutan för att bestämma antalet (NB) B- bildrutor.
I den andra omgången kodas ett antal (NB) bildrutor som B-bildrutor och bildrutan NB+1 kodas som en P-bildruta, där (NB) har fastställts ovan i den första omgången. Under den 10 15 20 25 30 535 206 13 andra omgången återanvânds vissa av de i den första 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).
F ig. 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 indexerat nummer (1 till 4) som indikerar visningsordningen för bildrutan i uppsättningen av efter varandra följande bildrutor 400.
Pilama 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 arman 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 pilarna 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 informationen från 10, för att beräkna rörelsevektorer för bildruta P1. I den andra omgången används information från bildruta P4 och 10, för att beräkna rörelsevektorer för bildruta BZ.
Såsom visas i Fig. 4 beräknas i den första omgången rörelsevektorer för bildrutoma 1 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 samband med Fig. 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 Bl, B; och B3) 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-bildrutorna och P-bildrutoma. Exempelvis indikerar pilarna 425 och 430 nya rörelsevektorsberäkningar som är utförda i den andra omgången. För att en 10 15 20 25 30 535 206 14 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örelsevektorn måste vara samma i båda omgångarna (dvs. informationen måste härröra från samma bildruta i båda omgångama).
Exempelvis, såsom visas i Fig. 4, används information från bildruta 10 till att beräkna rörelsevektorer för bildruta P1 i den första omgången. Med andra ord refereras bildruta 10 av bildruta P1 i den första omgången. I den andra omgången behövs också information från bildruta IQ för att beräkna rörelsevektorer för bildruta Bl. Med andra ord refereras också bildruta Io av bildruta BO 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 B; 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 B; 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. Videosekvensenomfattar 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ämnda pixelblock.
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 l. 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-bildruta. 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 altemativt utförande beräknas inte MCE för pixelblocken i bildruta m. 10 15 20 25 30 535 206 15 Metoden bestämmer därefter (vid 530) ett medelvärde för bildrutans rörelsekostnad (AFMCm) för bildrutor 1 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 530) en bildrutas rörelsekostnad (FMCm) för varje individuell bildmta m.
Metoden avgör därefter (vid 535) om AFMCm-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 AFMCm-värdet är mindre än ett förutbestämt tröskelvärde Tm, där Tu, 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 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-l) 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 ß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- 1 . 10 15 20 25 30 535 206 16 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 efier varandra följande bildrutor från 1 till n. Antalet (NB) B-bildrutor som ska kodas ökar tills de efter varandra följande bildrutornas 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 l, beräknade i den första omgången, för att beräkna rörelsevektorer för pixelblocken i bildruta I 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+l 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 Fig. 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- 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).
Fig. 6 avbildar grafiskt ett flödesschema för Fig. 5:s partiella tvåomgångs- återanvändningsmetod kombinerad med en scenklippsdetekteringsmetod i enlighet med den 10 15 20 25 30 535 206 17 givna uppfinningen. Metoden i Fi g. 6 liknar metoden i F ig. 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 videosekvens. Videosekvensen omfattar ett flertal videobildrutor indexerade fi-å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 1. Metoden beräknar (vid 620) rörelsevektorer för bildruta mzs 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 mzs pixelblock. I ett altemativt utförande beräknas inte MCE för bildruta mzs 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örelsevektom och/eller MCE- värdet för varje pixelblock i bildruta m. Metoden avgör även (vid 630) en bíldrutas 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/FMCU..- 1. Under metodens 600 första iteration där bildruta m-l är en I-bildruta, sätts emellertid värdet av FMCm/FMCM; 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 utßranden är tröskelvärdet C olika för olika typer av videosekvenser, dvs. olika tröskelvärden kan användas för vídeosekvenser relaterade till sport, såpoperor, nyhets- reportage, gamla filmer, videokonferanssekvenser etc. I ytterliggare utföranden avgör metoden (vid 635) om värdet för FMCm/FMCM; ä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. 10 15 20 25 30 535 206 18 Värdet av FMCm/FMCM 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 F MCm/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 i 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/FMCm., jämförs (vid steg 630)) kan bestämmas experimentellt så att ett värde av FMCm/FMCWL 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/FMCM ä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/FMCM 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-l) och sätter även antalet (NB) B-bildrutor som ska kodas till n-I. 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öljande bildrutor fiån 1 till n.
Notera att värdet på n representerar det största antalet bildrutor, för vilket värdet av FMCm/FMCM fortfarande är mindre än det förutbestämda tröskelvärdet C. Därför är bildruta n, 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 F ig. 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 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 655) 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 vídeosekvensen.
Om så är fallet avslutas metoden. Om bildrutan n inte är den sista bildrutan i video- 10 15 20 25 30 535 206 19 sekvensen, omindexerar metoden bildruta n som bildruta 0 i videosekvensen, så att bildruta n+1omindexeras som bildruta 1, bildruta n+2 omindexeras som bildruta 2 etc. Metoden fortsätter sedan vid steg 615.
F ig. 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örelsekostriadenper 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 ß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 efter ett scenklipp och rörelsekosmaden 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 FMCmlFMCml 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/FMCW; ärjärnfö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 altemativt 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.
F ig. 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 i en punkt i tiden när innehållet i videosekvensen är diskontinuerligt. Metoden från Fig. 8 liknar metoden från Fi g. 6 och endast de steg som skiljer sig diskuteras här i detalj.
Metoden 800 kan exempelvis utföras av kodningskomponent 110. 10 15 20 25 30 535 206 20 Metoden 800 inleds genom mottagandet (vid 805) av en videosekvens. Videosekvensen omfattar ett flertal videobildrutor indexerade fiå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äkna: (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 v 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 (FMCM) för en bildruta omedelbart föregående bildruta m.
Metoden beräknar sedan (vid 830) värdet av FMCm/FMCmn. Under den första iterationen av metoden 800, där bildruta m-l är en I-bildruta, sätts dock värdet av FMCm/FMCM 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 FMCm/FMCM ä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 mindre än det förutbestämda tröskelvärdet C, ökar metoden (vid 840) rälcnaren 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 törutbefimda 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 tö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.
Metoden 800 avgör sedan (vid 860) om bildruta n är den sista bildrutan i videosekvensen.
Om så är fallet avslutas metoden. Om bildmta 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. 10 15 20 25 30 535 206 21 AVSNITT II: FULLSTÄNDIG ÅTERANVÄNDNING AV RÖRELSEVEKTORER BESTÄMDA I EN FÖRSTA OMGÅNG I de flesta konventionella videokodare förbrukar processen, att beräkna rörelsevektorer, en betydande andel av datorresursema. 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 altemativt 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 firllstä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 fiå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) indikerande visningsordningen för bildrutan i uppsättningen av efter varandra följande bildrutor 900.
Pilarna 920 indikerar rörelsevektorsberälmingar användandes information 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). Pilama 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 10 15 20 25 30 535 206 22 att använda informationen från samma referensbildruta (bildruta 0). Som sådana beräknas rörelsevektorer för bildrutoma 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 efter varandra följande bildrutor 900. ' I den andra omgången ska det fastställda antalet B-bildrutor kodas (som Bl, Bg och B;) med nästa bildruta kodad som en P-bildruta (bildruta P4). Såsom visas i Fig. 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-bildrutorna. 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 ßr bildruta P3 i den första omgången. I 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 Bl, B; 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äkningama 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 fiån en föregående bildruta och en från en kommande bildruta, behöver även kodningen av Bl, B; och B 3_ i den andra omgången, nya rörelsevektorer beräknade fiå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 Fi g. 5 och endast de steg som skiljer 10 15 20 25 30 535 206 23 sig diskuteras här i detalj. Metoden 600 kan exempelvis utföras av kodningskomponenten 1 10.
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 v 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 frå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 bildrutoma 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 103 5) 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 1035) 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.
Den första omgången av metoden 1000: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 1000: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. I vissa utföranden' 10 15 20 25 30 535 206 24 å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) bildrutorna 1 till NB som B-bildrutor genom återanvändning av de återstående rörelsevektorema 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 bildrutorna 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 bíldrutan í 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. 10:s fullständiga tvåomgångs-återanvändningsmetod kombinerad med en scenklippsdetekteringsmetod i enlighet med den föreliggande uppfinningen. Metoden från Fig. 11 liknar metodema i Fig. 6 och 10 och endast de steg som skiljer sig diskuteras här i detalj. Metoden 1100 kan exempelvis utföras av kodníngsenhetenl 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 11 10) bildruta 0 fi'å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 1 125) ett rörelsekompenserat fel (MCE) för pixelblocken i bildruta m. 1 ett alternativt utförande beräknas inte MCE för pixelblocken i bildruta m.
Metoden avgör sedan (vid 1130) 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 FMCm/FMCWL Emellertid under den första iterationen av metoden 1100 där bildruta m-l är en I-bildruta, sätts värdet av FMCm/FMCm. 10 15 20 25 30 535 206 25 1 till lika med O. Eftersom bildrutans rörelsekostnad för en I-bildruta är 0, hindrar detta en divisionoperation där närnnaren är 0.
Metoden avgör sedan (vid 1135) om värdet av FMCm/FMCM är mindre än ett törutbestämt tröskelvärde C eller Cm. Om metoden avgör (vid 1135) att värdet av FMCm/FMCM; är mindre än det förutbestämda tröskelvärdet C, ökar metoden (vid 1 140) 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 11 15 till 1145 och avgör antalet (NB) B-bildrutor som ska kodas i uppsättningen av efter varandra följ ande 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 iden första omgången.
Metoden 1100 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 omíndexeras som bildruta 2 etc.
Metoden fortsätter sedan vid steg 1115.
Fig. 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, ett ROM-minne 1220, en pennanent 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 processom 1210 med ROM-minnet 1220, systemminnet 1215 och den permanenta lagringsenheten 1225. 10 15 '20 25 30 535 206 26 ROM-minnet 1220 lagrar statisk data och instruktioner som behövs av processom 1210 och andra moduler i datorsystemet. Den permanenta lagringsenheten 1225, å andra sidan är endast en RW-minnesenhet. Enheten är ett ickeflyktigt minne som lagrar instruktion och data även när datasystemet 1200 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 instruktionema och data som processom behöver vid den körs. Ivissa 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 processom 1210 instruktioner att exekveras och data att processa, för att exekvera uppfinningens processer.
Bussen 1205 ansluter även till input- och outputenhetema 1230 och 1235. Inputenheten möjliggör för användaren att kommunicera information och välja kommandon till datasystemet. Inputenheten 1230 inlduderar alfanumeriskt tangentbord och pekdon.
Outputenheterna 1235 visar bilder genererade av datasystemet. Till exempel visar dessa enheter designlayouts för IC-kretsar. Outputenheterna inkluderar skrivare och visningsenheter, såsom katodstrålerör CRT-skärmar eller LCD-skärmar.
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 datom 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- terna 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 annan systemkonfigura- tion kan användas i förening med den föreliggande uppfinningen. 10 15 535 206 27 Vissa utföranden beskrivna ovan relaterar till videobildrutor i Y U V-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 videobildforinat (såsom RGB) lätt transformeras till YUV-formatet. Vidare kan utföranden av den givna uppfinningen relatera till olika videokodningsapplikationer (exempelvis DVD, digital lagringsmedia, TV-utsändning, intemetstreaming, kommunikation, telekonferanser etc.) i realtid eller dåtid. Uttö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 MPEG-4/Part 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 (41)

10 15 20 25 30 535 206 PATENTKRAV
1. Metod innefattande: beräkning av ett flertal rörelsevektorer för en första okodad videobild; beräkning av ett flertal rörelsevektorer fór en andra okodacl videobild; beräkning av ett speciellt värde baserat på ett kostnadsvärde fór flertalet rörelsevektorer för den första videobilden och ett kostnadsvärde för flertalet rörelsevektorer fór den andra videobilden, varvid kostnadsvärdet för ett flertal rörelsevektorer för en videobild är baserat på ett antal bitar som krävs för kodning av flertalet rörelsevektorer fór videobilden; bestämning huruvida det finns ett scenklipp mellan den första videobilden och den andra videobilden genom bestämning huruvida det speciella värdet satisfierar ett tröskelvärde; och kodning av den första och andra videobilden baserat på huruvida det föreligger ett scenklipp.
2. Metod enligt krav l, vid vilken det inte finns något scenklipp när det speciella värdet inte satisfierar tröskelvärdet.
3. Metod enligt krav 1, vid vilken scenklippet finns när det speciella värdet satisfierar tröskelvärdet.
4. Metod enligt krav 3, vilken dessutom innefattar märkning av den andra videobilden som en videobild efter scenklippet.
5. Metod enligt krav 1, varvid det speciella värdet är ett förhållande mellan kostnadsvärden fór rörelsevektorema fór den första och den andra videobilden och varvid nämnda bestämning huruvida det speciella värdet satisfierar tröskelvärdet innefattar bestämningen huruvida förhållandet är mindre än tröskelvärdet.
6. Metod enligt krav 4, varvid närrmda märkning av den andra videobilden innefattar märkning av den andra videobilden som en I-bildruta.
7. Metod enligt krav 3, vilken dessutom innefattar märkning av den första videobilden som en videobild före scenklippet. 10 15 20 25 30 535 206 29
8. Metod enligt krav l, varvid kostnadsvärdet dessutom är baserat på (i) ett rörelsekompensationsfel associerat med rörelsevektom för videobilden och (ii) en Lagrang multiplikator.
9. Metod enligt krav 1, varvid tröskelvärdet varierar monotont baserat på ett antal videobilder som har behandlats i en sekvens av videobilder innefattande den första och den andra videobilden och varvid tröskelvärdet minskar då antalet videobilder som har behandlats ökar.
10. Metod enligt krav 1, varvid den första videobilden innefattar ett flertal uppsättningar av pixels, varvid nänmda beräkning av flertalet rörelsevektorer för den forsta videobilden innefattar beräkning av högst en rörelsevektor för varje uppsättning av pixels för den första videobilden.
11. 1 l. Metod enligt krav 1, varvid den andra videobilden innefattar ett flertal uppsättningar av pixels, varvid nämnda beräkning av flertalet rörelsevektorer for den andra videobilden innefattar beräkning av högst en rörelsevektor för varje uppsättning av pixels för den andra videobilden.
12. Metod enligt krav 1, varvid flertalet rörelsevektorer för den första och andra videobilden beräknas som om den första videobilden och den andra videobilden skall kodas som enkelriktade rörelsekompenserade videobilden
13. Metod innefattande : beräkning av ett värde baserat på ett kostnadsvärde för ett flertal rörelsevektorer för en första videobild och ett kostnadsvärde for ett flertal rörelsevektorer for en andra videobild, varvid kostnadsvärdet för ett flertal rörelsevektorer för en videobild är baserat på ett antal bitar som krävs för att koda ett flertal rörelsevektorer för videobilden; och bestämning huruvida värdet satisfierar ett tröskelvärde för att (i) bestämma huruvida det föreligger ett scenklipp mellan den första videobilden och den andra videobilden, och (ii) bestämma ett antal dubbelriktade rörelsekompenserade videobilder i en videosekvens som skall kodas, varvid videosekvensen innefattar den forsta och andra videobilden.. 10 15 20 25 30 535 206 30
14. Metod enligt krav 13, varvid antalet dubbelriktade rörelsekompenserade videobilder är baserat på åtminstone ett kostnadsvärde för rörelsevektorer vilka beräknas under antagandet k att alla videobilder efter en initial videobild i videosekvensen kommer att kodas som enkelriktade rörelsekompenserade videobilder i videosekvensen.
15. Metod enligt krav 13, vilken dessutom innefattar kodning av videosekvensen med användning av det bestämda antalet dubbelriktade rörelsekompenserade videobilder.
16. Metod enligt krav 15, varvid nämnda beräkning av värdet innefattar beräkning av åtminstone en rörelsevektor för den första videobilden och åtminstone en rörelsevektor för den andra videobilden, varvid rörelsevektorema beräknas i en första uppsättning operationer under en första genomgång av videosekvensen, varvid närrmda kodning utföres i en andra uppsättning operationer under en andra genomgång av videosekvensen, och varvid nämnda kodning innefattar användning av åtminstone en rörelsevektor som beräknats under den första uppsättningen operationer.
17. Metod enligt krav 15, varvid nämnda beräkning av värdet innefattar beräkning av åtminstone en rörelsevektor för den första videobilden och åtminstone en rörelsevektor för den andra videobilden, varvid rörelsevektorerna beräknas i en första uppsättning operationer under en första genomgång av videosekvensen, varvid nämnda kodning utföres i en andra uppsättning operationer under en andra genomgång av videosekvensen, och varvid nämnda kodning innefattar användning av alla rörelsevektorer som beräknats under den första uppsättningen operationer.
18. Datorläsbart medium (1200) som lagrar ett datorprogram som kan köras av en processor (1210), varvid datorprogrammet innefattar uppsättningar av instruktioner för: beräkning av ett flertal rörelsevektorer för en första okodad videobild; beräkning av ett flertal rörelsevektorer för en andra okodad videobild; beräkning av ett speciellt värde baserat på ett kostnadsvärde för flertalet rörelsevektorer för den första videobilden och ett kostnadsvärde för flertalet rörelsevektorer för den andra videobilden, varvid ett kostnadsvärde för ett flertal rörelsevektorer för en videobild är baserat på ett antal bitar som krävs för kodning av flertalet rörelsevektorer för videobilden bestämning huruvida det finns ett scenklipp mellan den första videobilden och den andra videobilden genom bestärrming huruvida det speciella värdet satisfierar ett tröskelvärde; 10 15 20 25 30 535 206 31 och kodning av den första och andra videobilden baserat på huruvida det föreligger ett scenklipp.
19. Datorläsbart medium (1200) enligt krav 18, varvid det inte ñnns något scenklipp när det speciella värdet inte satisfierar tröskelvärdet.
20. Datorläsbart medium (1200) enligt krav 18, varvid scenklippet finns när det speciella värdet satisfierar tröskelvärdet.
21. Datorläsbart medium (1200) enligt krav 20, varvid datorprogrammet dessutom inne- fattar en uppsättning instruktioner för märkning av den andra videobilden som en videobild efter scenklippet.
22. Datorläsbart medium (1200) enligt krav 18, varvid det speciella värdet är ett förhållande mellan kostnadsvärden för rörelsevektorema för den första och den andra videobilden, varvid uppsättningen instruktioner för bestämning huruvida det speciella värdet satisfierar tröskelvärdet innefattar en uppsättning instruktioner för att bestämma huruvida förhållandet är mindre än tröskelvärdet.
23. Datorläsbart medium (1200) enligt krav 21, varvid uppsättningen instruktioner för märkning av den andra videobilden innefattar en uppsättning instruktioner för märkning av den andra videobilden som en I-bildruta.
24. Datorläsbart medium (1200) enligt krav 20, varvid datorprogrammet dessutom inne- fattar en uppsättning instruktioner för märkning av den första videobilden som en videobild före scenklippet.
25. Datorläsbart medium (1200) enligt krav 18, varvid kostnadsvärdet dessutom är baserat på (i) ett rörelsekompensationsfel associerat med rörelsevektom för videobilden och (ii) en Lagrang multiplikator.
26. Datorläsbart medium ( 1200) enligt krav 18, varvid tröskelvärdet varierar monotont baserat på ett antal videobilder som behandlats i en sekvens av videobilder innefattande den 10 15 20 25 30 535 206 32 forsta och den andra videobilden, varvid tröskelvärdet minskar då antalet videobilder som behandlats ökar.
27. Datorläsbart medium (1200) enligt krav 18, varvid den första videobilden innefattar ett flertal uppsättningar av pixels, varvid uppsättningen instruktioner för beräkning av flertalet rörelsevektorer fór den första videobilden innefattar en uppsättning instruktioner för beräkning av högst en rörelsevektor fór varje uppsättning pixels for den första videobilden.
28. Datorläsbart medium (1200) enligt krav 18, varvid den andra videobilden innefattar ett flertal uppsättningar av pixels, varvid uppsättningen instruktioner for beräkning av flertalet rörelsevektorer för den andra videobilden innefattar en uppsättning instruktioner fór beräkning av högst en rörelsevektor för varje uppsättning pixels för den andra videobilden.
29. Datorläsbart medium (1200) enligt krav 18, varvid flertalet rörelsevektorer fór den forsta och andra videobilden beräknas som om den första videobilden och den andra videobilden skall kodas som enkelriktade rörelsekompenserade videobilder.
30. Datorläsbart medium lagrande ett datorprogram som är exekverbart på en processor, varvid datorprogrammet innefattar uppsättningar av instruktioner för: beräkning av ett värde baserat på ett kostnadsvärde for ett flertal rörelsevektorer för en forsta videobild och ett kostnadsvärde for ett flertal rörelsevektorer för en andra videobild, varvid kostnadsvärdet fór ett flertal rörelsevektorer för en videobild är baserat på ett antal bitar som krävs för att koda ett flertal rörelsevektorer för videobilden; och bestämning huruvida värdet satisñerar ett tröskelvärde för att (i) bestämma huruvida det föreligger ett scenklipp mellan den första videobilden och den andra videobilden, och (ii) bestämma ett antal dubbelriktade rörelsekompenserade videobilder i en videosekvens som skall kodas, varvid videosekvensen innefattar den första och andra videobilden.
31. Datorläsbart medium (1200) enligt krav 30, varvid antalet dubbelríktade rörelsekompenserade videobilder är baserat på åtminstone ett kostnadsvärde för rörelsevektorer som beräknas under antagandet att alla videobilder efier en initial videobild i videosekvensen kommer att kodas som enkelriktade rörelsekompenserade videobilder i videosekvensen. i 10 15 20 25 30 535 206 33
32. Datorläsbart medium (1200) enligt krav 30, varvid datorprogrammet dessutom innefattar en uppsättning instruktioner för kodning av videosekvensen med användning av det bestämda antalet dubbelriktade rörelsekompenserade videobilder.
33. Datorläsbart medium (1200) enligt krav 32, varvid uppsättningen instruktioner för beräkning av värdet innefattar en uppsättning instruktioner för beräkning av åtminstone en rörelsevektor för den första videobilden och åtminstone en rörelsevektor för den andra videobilden, varvid rörelsevektorema beräknas i en forsta uppsättning operationer under en första genomgång av videosekvensen, varvid nämnda kodning utföres i en andra uppsättning operationer under en andra genomgång av videosekvensen, och varvid uppsättningen instruktioner för kodning innefattar en uppsättning instruktioner för användning av åtminstone en rörelsevektor som beräknats under den första uppsättningen operationer.
34. Datorläsbart medium (1200) enligt krav 32, varvid uppsättningen instruktioner fór beräkning av värdena innefattar en uppsättning instruktioner för beräkning av åtminstone en rörelsevektor för den första videobilden och åtminstone en rörelsevektor för den andra videobilden, varvid rörelsevektorema beräknas i en första uppsättning operationer under en första genomgång av videosekvensen, varvid nämnda kodning utföres i en andra uppsättning operationer under en andra genomgång av videosekvensen, och varvid uppsättningen instruktioner för kodning innefattar en uppsättning instruktioner för användning av alla rörelsevektorer beräknade under den första uppsättningen operationer.
35. Metod enligt krav 1 i vilken den första och andra videobilden innefattar en typ av innehåll, varvid tröskelvärdet är baserat på typen av innehåll i den första och andra videobilden, varvid olika tröskelvärden användes för olika typer av innehåll.
36. Metod enligt krav 35 i vilken typen av innehåll innefattar ett av sportinnehåll, såpoperainnehåll, nyhetsrapportsinnehåll och videokonferensinnehåll.
37. Metod enligt krav 12, varvid en enkelriktad rörelsekompenserad videobild är en P- bildruta. 10 535 206 39
38. Metod enligt krav 13, varvid en dubbelriktad rörelsekompenserad videobild är en B- bildruta.
39. Metod enligt krav 1, varvid kostnadsvärdet for rörelsevektorerna för en videobild även är baserat på rörelsekompenserade fel för att koda videobilden.
40. Metod enligt krav l3,varvid värdet även är baserat på rörelsekompenserade fel för kodning av den första videobilden och rörelsekompenserade fel för kodning av den andra videobilden.
41. Datorläsbart medium enligt krav 30, varvid värdet även är baserat på rörelsekompenserade fel fór kodning av den första videobilden och rörelsekompenserade fel for kodning av den andra videobilden.
SE0700732A 2003-09-09 2004-05-13 Detektering av scenklipp i en videosekvens SE535206C2 (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
SE0700732L SE0700732L (sv) 2007-03-26
SE535206C2 true SE535206C2 (sv) 2012-05-22

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 After (1)

Application Number Title Priority Date Filing Date
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

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
EP1942678B1 (en) 2014-08-20
SE0500806L (sv) 2005-07-07
SE529152C2 (sv) 2007-05-15
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
SE535206C2 (sv) Detektering av scenklipp i en videosekvens
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) для сжатия видеоизображения
EP1856918B1 (en) Method and apparatus of temporal error concealment for p-frame
JP4001400B2 (ja) 動きベクトル検出方法及び動きベクトル検出装置
JP5081305B2 (ja) フレーム間予測符号化の方法および装置
US9936217B2 (en) Method and encoder for video encoding of a sequence of frames
US20090052534A1 (en) Direction detection algorithms for h.264/avc intra prediction
JP2001313956A (ja) Mpeg圧縮ビデオ環境における階層的混合型ショット変換検出方法
CN101406056A (zh) 减少数字视频编码器中的内预测和模式判决处理中的计算的方法
CN101621696A (zh) 允许分数视频运动估计和双向视频运动估计的选择性使用
CN109565600B (zh) 用于在预测参数中进行数据隐藏的方法和装置
EP2034742A2 (en) Video coding method and device
US20150350670A1 (en) Coding apparatus, computer system, coding method, and computer product
US8447104B2 (en) Method, medium and system adjusting predicted values based on similarities between color values for image compressing/recovering
TWI411305B (zh) 動態參照訊框選擇方法和系統
CN111953987A (zh) 视频转码方法、计算机设备和存储介质
Dumitras et al. I/P/B frame type decision by collinearity of displacements
CN104717511A (zh) 视频编码或解码的方法及装置
CN111901605B (zh) 视频处理方法、装置、电子设备及存储介质
CN103856780A (zh) 视频编码方法、解码方法、编码器及解码器
KR101145399B1 (ko) 멀티-패스 인코딩 장치 및 방법
US20230300330A1 (en) Bitrate-adaptive segmentation for video transcoding
CN114040208A (zh) 运动估计方法、装置、电子设备及存储介质