ES2634493T3 - Codificación predictiva bidireccional avanzada de vídeo entrelazado - Google Patents
Codificación predictiva bidireccional avanzada de vídeo entrelazado Download PDFInfo
- Publication number
- ES2634493T3 ES2634493T3 ES12158085.6T ES12158085T ES2634493T3 ES 2634493 T3 ES2634493 T3 ES 2634493T3 ES 12158085 T ES12158085 T ES 12158085T ES 2634493 T3 ES2634493 T3 ES 2634493T3
- Authority
- ES
- Spain
- Prior art keywords
- macroblock
- field
- motion vector
- interlaced
- prediction
- Prior art date
- Legal status (The legal status 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 status listed.)
- Expired - Lifetime
Links
- 230000033001 locomotion Effects 0.000 claims abstract description 1137
- 238000000034 method Methods 0.000 claims abstract description 118
- 239000013598 vector Substances 0.000 claims description 1012
- 230000011664 signaling Effects 0.000 claims description 19
- 230000008569 process Effects 0.000 claims description 7
- 230000009467 reduction Effects 0.000 claims description 2
- 239000000872 buffer Substances 0.000 description 159
- 238000010586 diagram Methods 0.000 description 63
- 230000000750 progressive effect Effects 0.000 description 51
- 230000000875 corresponding effect Effects 0.000 description 47
- 230000009466 transformation Effects 0.000 description 36
- 230000008859 change Effects 0.000 description 30
- 230000006835 compression Effects 0.000 description 30
- 238000007906 compression Methods 0.000 description 30
- 238000006073 displacement reaction Methods 0.000 description 22
- 230000002123 temporal effect Effects 0.000 description 11
- 230000008901 benefit Effects 0.000 description 10
- 230000002441 reversible effect Effects 0.000 description 10
- 230000006837 decompression Effects 0.000 description 8
- 238000009795 derivation Methods 0.000 description 8
- 239000011159 matrix material Substances 0.000 description 8
- 238000012545 processing Methods 0.000 description 8
- 230000003044 adaptive effect Effects 0.000 description 7
- 238000011002 quantification Methods 0.000 description 7
- 230000002457 bidirectional effect Effects 0.000 description 6
- 238000010187 selection method Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 5
- 230000008520 organization Effects 0.000 description 5
- 230000003595 spectral effect Effects 0.000 description 5
- 238000004422 calculation algorithm Methods 0.000 description 4
- 238000004364 calculation method Methods 0.000 description 4
- 238000004891 communication Methods 0.000 description 4
- 101100443238 Caenorhabditis elegans dif-1 gene Proteins 0.000 description 3
- 230000001419 dependent effect Effects 0.000 description 3
- 238000013139 quantization Methods 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 239000011800 void material Substances 0.000 description 3
- 238000012935 Averaging Methods 0.000 description 2
- 229910020896 PMVx Inorganic materials 0.000 description 2
- 229910020894 PMVy Inorganic materials 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 230000003139 buffering effect Effects 0.000 description 2
- 230000000295 complement effect Effects 0.000 description 2
- 238000012937 correction Methods 0.000 description 2
- 230000002596 correlated effect Effects 0.000 description 2
- 230000007423 decrease Effects 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 238000002474 experimental method Methods 0.000 description 2
- 238000009499 grossing Methods 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000000844 transformation Methods 0.000 description 2
- 208000037170 Delayed Emergence from Anesthesia Diseases 0.000 description 1
- 230000003466 anti-cipated effect Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 230000001427 coherent effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000002243 precursor Substances 0.000 description 1
- 238000011069 regeneration method Methods 0.000 description 1
- 230000008521 reorganization Effects 0.000 description 1
- 238000003786 synthesis reaction Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
- H04N19/51—Motion estimation or motion compensation
- H04N19/577—Motion compensation with bidirectional frame interpolation, i.e. using B-pictures
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods 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/103—Selection of coding mode or of prediction mode
- H04N19/105—Selection of the reference unit for prediction within a chosen coding or prediction mode, e.g. adaptive choice of position and number of pixels used for prediction
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods 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/103—Selection of coding mode or of prediction mode
- H04N19/109—Selection of coding mode or of prediction mode among a plurality of temporal predictive coding modes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods 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/103—Selection of coding mode or of prediction mode
- H04N19/11—Selection of coding mode or of prediction mode among a plurality of spatial predictive coding modes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods 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/103—Selection of coding mode or of prediction mode
- H04N19/112—Selection of coding mode or of prediction mode according to a given display mode, e.g. for interlaced or progressive display mode
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods 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/117—Filters, e.g. for pre-processing or post-processing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods 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/129—Scanning of coding units, e.g. zig-zag scan of transform coefficients or flexible macroblock ordering [FMO]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods 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/13—Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods 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/136—Incoming video signal characteristics or properties
- H04N19/137—Motion inside a coding unit, e.g. average field, frame or block difference
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods 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/146—Data rate or code amount at the encoder output
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods 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/146—Data rate or code amount at the encoder output
- H04N19/147—Data rate or code amount at the encoder output according to rate distortion criteria
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods 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/157—Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
- H04N19/159—Prediction type, e.g. intra-frame, inter-frame or bidirectional frame prediction
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods 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/157—Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
- H04N19/16—Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter for a given display mode, e.g. for interlaced or progressive display mode
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/17—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
- H04N19/172—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a picture, frame or field
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/17—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
- H04N19/176—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/18—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a set of transform coefficients
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/184—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being bits, e.g. of the compressed video stream
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
- H04N19/186—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a colour or a chrominance component
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/189—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding
- H04N19/196—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding being specially adapted for the computation of encoding parameters, e.g. by averaging previously computed encoding parameters
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/42—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
- H04N19/43—Hardware specially adapted for motion estimation or compensation
- H04N19/433—Hardware specially adapted for motion estimation or compensation characterised by techniques for memory access
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/46—Embedding additional information in the video signal during the compression process
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/46—Embedding additional information in the video signal during the compression process
- H04N19/463—Embedding additional information in the video signal during the compression process by compressing encoding parameters before transmission
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
- H04N19/51—Motion estimation or motion compensation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
- H04N19/51—Motion estimation or motion compensation
- H04N19/513—Processing of motion vectors
- H04N19/517—Processing of motion vectors by encoding
- H04N19/52—Processing of motion vectors by encoding by predictive encoding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
- H04N19/51—Motion estimation or motion compensation
- H04N19/523—Motion estimation or motion compensation with sub-pixel accuracy
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/593—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial prediction techniques
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/60—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
- H04N19/61—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/70—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/80—Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation
- H04N19/82—Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation involving filtering within a prediction loop
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/85—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression
- H04N19/86—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression involving reduction of coding artifacts, e.g. of blockiness
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/90—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
- H04N19/93—Run-length coding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/60—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
- H04N19/63—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding using sub-band based transform, e.g. wavelets
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Computing Systems (AREA)
- Theoretical Computer Science (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Image Processing (AREA)
Abstract
Un procedimiento de decodificación de información de vídeo comprimida con un decodificador de vídeo, comprendiendo el procedimiento: recibir, en el decodificador de vídeo, información de vídeo comprimida en un flujo de bits; y con el decodificador de vídeo, decodificar una imagen prevista bidireccionalmente que incluye diversos macrobloques usando la información de vídeo comprimida, en el que la decodificación incluye decodificar (5220) un conjunto de bits que representa información de decisión binaria que significa si los diversos macrobloques en la imagen prevista bidireccionalmente están compensados en movimiento usando predicción de modo hacia delante o uno de diversos tipos de predicción de modo no hacia delante, en el que, para cada uno de los diversos macrobloques de la imagen prevista bidireccionalmente, un único bit en el conjunto de bits está asociado con el macrobloque como parte de la información de decisión binaria del conjunto de bits, indicando el único bit si el tipo de predicción de movimiento compensado para el macrobloque es (a) la predicción de modo hacia delante o (b) uno de los diversos tipos de predicción de modo no hacia delante, en el que el conjunto de bits se señaliza como uno o más elementos de sintaxis de nivel de imagen, en el que una combinación de elementos de sintaxis de nivel de imagen y de nivel de macrobloque indica los tipos de predicción de movimiento compensado para los diversos macrobloques de la imagen prevista bidireccionalmente, y en el que: para un primer macrobloque de los diversos macrobloques de la imagen prevista bidireccionalmente, el tipo de predicción de movimiento compensado es predicción de modo hacia delante, y el único bit para el macrobloque indica el tipo de predicción de movimiento compensado para el macrobloque; y para un segundo macrobloque de los diversos macrobloques de la imagen prevista bidireccionalmente, el único bit para el macrobloque y un código de longitud variable de nivel de macrobloque para el macrobloque indican conjuntamente el tipo de predicción de movimiento compensado para el macrobloque.
Description
5
10
15
20
25
30
35
40
45
50
DESCRIPCION
Codificacion predictiva bidireccional avanzada de video entrelazado Informacion de la solicitud relacionada
Esta solicitud reivindica el beneficio de la Solicitud de Patente Provisional de Estados Unidos N.° 60/501.081, titulada “Video Encoding and Decoding Tools and Techniques”, presentada el 7 de septiembre de 2003, que se incorpora en el presente documento por referencia.
Las siguientes solicitudes de patente de Estados Unidos en tramite junto con la presente se refieren a la presente solicitud y se incorporan en el presente documento por referencia: 1) Solicitud de Patente de Estados Unidos con N.° de Serie 10/622.378, titulada, “Advanced Bi-Directional Predictive Coding of Video Frames”, presentada el 18 de julio de 2003; 2) Solicitud de Patente de Estados Unidos con N.° de Serie 10/622.284, titulada, “Intraframe and Interframe Interlace Coding and Decoding”, presentada el 18 de julio de 2003; 3) Solicitud de Patente de Estados Unidos con N.° de Serie 10/622.841, titulada, “Coding of Motion Vector Information”, presentada el 18 de julio de 2003; y 4) Solicitud de Patente de Estados Unidos con N.° de Serie 10/857.473, titulada, “Predicting Motion Vectors for Fields of Forward-predicted Interlaced Video Frames”, presentada el 27 de mayo de 2004.
Campo tecnico
Se describen tecnicas y herramientas para codificacion y decodificacion de video entrelazado. Por ejemplo, un codificador de video codifica macrobloques previstos bidireccionalmente en video entrelazado.
Antecedentes
El video digital consume grandes cantidades de capacidad de almacenamiento y transmision. Una secuencia de video digital sin procesar tfpica incluye 15 o 30 imagenes por segundo. Cada imagen puede incluir decenas o cientos de miles de pfxeles (tambien denominados pels). Cada pixel representa un elemento diminuto de la imagen. En forma sin procesar, un ordenador comunmente representa un pixel con 24 bits o mas. Por lo tanto, el numero de bits por segundo, o tasa de bits, de una secuencia de video digital sin procesar tfpica puede ser de 5 millones de bits/segundo o mas.
Muchos ordenadores y redes de ordenadores carecen de los recursos para procesar video digital sin procesar. Por esta razon, los ingenieros usan compresion (tambien denominada codificacion o decodificacion) para reducir la tasa de bits de video digital. La compresion puede ser sin perdidas, en la que la calidad del video no sufre pero las disminuciones en la tasa de bits estan limitadas por la complejidad del video. O, la compresion puede ser con perdidas, en la que la calidad del video sufre pero las disminuciones en la tasa de bits son mas drasticas. La descompresion invierte la compresion.
En general, las tecnicas de compresion de video incluyen “intra” compresion e “inter” compresion o compresion predictiva. Las tecnicas de intra compresion comprimen imagenes individuales, tfpicamente denominadas fotogramas I o fotogramas clave. Las tecnicas de compresion comprimen fotogramas con referencia fotogramas precedentes y/o siguientes, y los fotogramas inter-comprimidos se denominan tfpicamente fotogramas previstos, fotogramas P o fotogramas B.
I. Inter compresion en Windows Media Video, versiones 8 y 9
Windows Media Video de Microsoft Corporation, version 8 [“WMV8”] incluye un codificador de video y un decodificador de video. El codificador de WMV8 usa intra e inter compresion, y el decodificador de WMV8 usa intra e inter descompresion. Windows Media Video, version 9 [“WMV9”] usa una arquitectura similar para muchas operaciones.
La inter compresion en el codificador de WMV8 usa codificacion de prediccion de movimiento compensado basada en bloques seguida por codificacion por transformacion del error residual. Las Figuras 1 y 2 ilustran la inter compresion basada en bloques para un fotograma previsto en el codificador de WMV8. En particular, la Figura 1 ilustra estimacion de movimiento para un fotograma 110 previsto y la Figura 2 ilustra compresion de una prediccion residual para un bloque de movimiento compensado de un fotograma previsto.
Por ejemplo, en la Figura 1, el codificador de WMV8 calcula un vector de movimiento para un macrobloque 115 en el fotograma 110 previsto. Para calcular el vector de movimiento, el codificador busca en un area 135 de busqueda de un fotograma 130 de referencia. Dentro del area 135 de busqueda, el codificador compara el macrobloque 115 desde el fotograma 110 previsto a diversos macrobloques candidatos para hallar un macrobloque candidato que sea una buena coincidencia. El codificador emite informacion que especifica el vector de movimiento (codificado por entropfa) para el macrobloque coincidente.
Puesto que un valor de vector de movimiento a menudo esta correlacionado con los valores de vectores de movimiento espacialmente circundantes, puede conseguirse la compresion de los datos usada para transmitir la informacion del vector de movimiento seleccionando un predictor de vector de movimiento desde macrobloques
5
10
15
20
25
30
35
40
45
50
55
vecinos y predecir el vector de movimiento para el macrobloque actual usando el predictor. El codificador puede codificar el diferencial entre el vector de movimiento y el predictor. Despues de reconstruir el vector de movimiento anadiendo el diferencial al predictor, un decodificador usa el vector de movimiento para calcular un macrobloque de prediccion para el macrobloque 115 usando informacion desde el fotograma 130 de referencia, que es un fotograma previamente reconstruido disponible en el codificador y el decodificador. La prediccion raramente es perfecta, por lo que el codificador normalmente codifica bloques de diferencias de pixel (tambien denominado el error o bloques residuales) entre el macrobloque de prediccion y el mismo macrobloque 115.
La Figura 2 ilustra un ejemplo de calculo y codificacion de un bloque 235 de error en el codificador WMV8. El bloque 235 de error es la diferencia entre el bloque 215 previsto y el bloque 225 actual original. El codificador aplica una transformada de coseno discreta [“DCT”] 240 al bloque 235 de error, que da como resultado un bloque 245 de 8x8 de coeficientes. El codificador a continuacion cuantifica 250 los coeficientes de DCT, dando como resultado un bloque de 8x8 de coeficientes 255 de DCT cuantificados. El codificador explora 260 el bloque 255 de 8x8 en una matriz 265 unidimensional de manera que los coeficientes estan generalmente ordenados desde la frecuencia mas baja a la frecuencia mas alta. El codificador codifica por entropfa los coeficientes explorados usando una variacion de codificacion 270 por longitud de serie. El codificador selecciona un codigo de entropfa desde una o mas tablas 275 de serie/nivel/duracion y emite el codigo de entropfa.
La Figura 3 muestra un ejemplo de un procedimiento 300 de decodificacion correspondiente para un bloque inter- codificado. En el resumen de la Figura 3, un decodificador decodifica (310, 320) informacion codificada por entropfa que representa una prediccion residual usando decodificacion 310 de longitud variable con una o mas tablas 315 de serie/nivel/duracion y decodificacion 320 por longitud de serie. El decodificador explora 330 a la inversa una matriz 325 unidimensional que almacena la informacion decodificada por entropfa en un bloque 335 bidimensional. El decodificador cuantifica a la inversa y aplica la transformada de coseno discreta inversa (juntas, 340) a los datos, dando como resultado un bloque 345 de error reconstruido. En una trayectoria de compensacion de movimiento separada, el decodificador calcula un bloque 365 previsto usando informacion 355 de vector de movimiento para desplazamiento desde un fotograma de referencia. El decodificador combina 370 el bloque 365 previsto con el bloque 345 de error reconstruido para formar el bloque 375 reconstruido.
La cantidad de cambio entre los fotogramas original y reconstruido es la distorsion y el numero de bits requeridos para codificar el fotograma indica la tasa para el fotograma. La cantidad de distorsion es aproximadamente inversamente proporcional a la tasa.
II. Video entrelazado y video progresivo
Un fotograma de video contiene lmeas de informacion espacial de una senal de video. Para video progresivo, estas lmeas contienen muestras que empiezan desde un instante de tiempo y continuan a traves de lmeas sucesivas hasta la parte inferior del fotograma. Un fotograma I progresivo es un fotograma de video progresivo intra-codificado. Un fotograma P progresivo es un fotograma de video progresivo codificado usando prediccion hacia delante, y un fotograma B progresivo es un fotograma de video progresivo codificado usando prediccion bidireccional.
Un fotograma de video entrelazado tfpico consiste en dos campos explorados empezando en diferentes tiempos. Por ejemplo, haciendo referencia a la Figura 4, un fotograma 400 de video entrelazado incluye el campo 410 superior y el campo 420 inferior. Tfpicamente, las lmeas con numero par (campo superior) se exploran empezando en un tiempo (por ejemplo, tiempo t) y las lmeas con numero impar (campo inferior) se exploran empezando en un tiempo (por ejemplo, tiempo t + 1) diferente (tfpicamente posterior). Esta temporizacion puede crear caractensticas similares a dientes de sierra en regiones de un fotograma de video entrelazado donde esta presente el movimiento puesto que los dos campos se exploran empezando en diferentes tiempos. Por esta razon, los fotogramas de video entrelazado pueden reorganizarse de acuerdo con una estructura de campo, con las lmeas impares agrupadas juntas en un campo, y las lmeas pares agrupadas juntas en otro campo. Esta disposicion, conocida como codificacion de campo, es util en imagenes de movimiento elevado para reduccion de tales artefactos de bordes de sierra. Por otra parte, en regiones estaticas, el detalle de imagen en el fotograma de video entrelazado puede conservarse mas eficazmente sin una reorganizacion de este tipo. Por consiguiente, la codificacion de fotograma a menudo se usa en fotogramas de video entrelazado estaticos o de bajo movimiento, en los que se conserva la disposicion de lmea de campo alternante original.
Un fotograma de video progresivo consiste en un fotograma de contenido con lmeas no alternantes. En contraste a video entrelazado, el video progresivo no divide fotogramas de video en campos separados, y se explora un fotograma completo de izquierda a derecha, de la parte superior a la parte inferior empezando en un unico tiempo.
III. Codificacion y decodificacion de fotograma P y en un codificador y decodificador de WMV anterior
Un codificador y decodificador de WMV anterior usa codificacion y decodificacion progresiva y entrelazada en fotogramas P. En fotogramas P progresivos y entrelazados, se codifica un vector de movimiento en el codificador calculando un diferencial entre el vector de movimiento y un predictor de vector de movimiento, que se calcula basandose vectores de movimiento vecinos. Y, en el decodificador, el vector de movimiento se reconstruye anadiendo el vector de movimiento diferencial al predictor de vector de movimiento, que se calcula de nuevo (esta
5
10
15
20
25
30
35
40
45
50
55
60
vez en el decodificador) basandose en vectores de movimiento vecinos. Se selecciona un predictor para el macrobloque actual o se selecciona un campo del macrobloque actual basandose en los predictores candidatos, y se calcula un vector de movimiento diferencial basandose en el predictor. El vector de movimiento puede reconstruirse anadiendo el vector de movimiento diferencial al predictor de vector de movimiento seleccionado en cualquiera del lado del codificador o del decodificador. Tfpicamente, los vectores de movimiento de luminancia se reconstruyen a partir de la informacion de movimiento codificada, y se derivan vectores de movimiento de crominancia desde los vectores de movimiento de luminancia reconstruidos.
A. Codificacion y decodificacion de fotograma P progresivo
Por ejemplo, en un codificador y decodificador de WMV anterior, los fotogramas P progresivos pueden contener macrobloques codificados en modo de un vector de movimiento (1 MV) o en modo de cuatro vectores de movimiento (4MV), o macrobloques saltados, con una decision realizada generalmente en una base macrobloque a macrobloque. Los fotogramas P con unicamente macrobloques de 1 MV (y, potencialmente, macrobloques saltados) se denominan como fotogramas P de 1 MV, y los fotogramas P tanto con macrobloques de 1 MV y de 4MV (y, potencialmente, macrobloques saltados) se denominan como fotogramas P de MV mixto. Un vector de movimiento esta asociado con cada macrobloque de 1 MV, y cuatro vectores de movimiento estan asociados con cada macrobloque de 4MV (uno para cada bloque).
Las Figuras 5A y 5B son diagramas que muestran las localizaciones de macrobloques considerados para predictores de vector de movimiento candidato para un macrobloque en un fotograma P progresivo de 1 MV. Los predictores candidatos se toman de los macrobloques izquierdo, superior y superior-derecho, excepto en el caso donde el macrobloque es el ultimo macrobloque en la fila. En este caso, el Predictor B se toma desde el macrobloque superior izquierdo en lugar del superior-derecho. Para el caso especial donde el fotograma es de un macrobloque de ancho, el predictor es siempre el Predictor A (el predictor superior). Cuando el Predictor A esta fuera de los lfmites puesto que el macrobloque esta en la fila superior, el predictor es el Predictor C. Diversas otras reglas tratan otros casos especiales tales como predictores intra-codificados.
Las Figuras 6A-10 muestran las localizaciones de los bloques o macrobloques considerados para los hasta tres vectores de movimiento candidatos para un vector de movimiento para un macrobloque de 1 MV o de 4MV en un fotograma de MV mixto. En las siguientes figuras, los cuadrados mas grandes son lfmites de macrobloque y los cuadrados mas pequenos son lfmites de bloque. Para el caso especial donde el fotograma es de un macrobloque de ancho, el predictor es siempre el Predictor A (el predictor superior). Diversas otras reglas tratan otros casos especiales tales como bloques de fila superior para macrobloques de 4MV de fila superior, macrobloques de 1 MV de fila superior y predictores intra-codificados.
Las Figuras 6A y 6B son diagramas que muestran localizaciones de bloques considerados para predictores de vector de movimiento candidato para un macrobloque actual de 1 MV en un fotograma de Mv mixto. Los macrobloques vecinos pueden ser macrobloques de 1 MV o de 4MV. Las Figuras 6A y 6B muestran las localizaciones para los vectores de movimiento candidatos suponiendo que los vecinos son de 4MV (es decir, el Predictor A es el vector de movimiento para el bloque 2 en el macrobloque por encima del macrobloque actual, y el predictor C es el vector de movimiento para el bloque 1 en el macrobloque inmediatamente a la izquierda del macrobloque actual). Si cualquiera de los vecinos es un macrobloque de 1 MV, entonces el predictor de vector de movimiento mostrado en las Figuras 5A y 5B se toma para que sea el predictor de vector de movimiento para el macrobloque completo. Como muestra la Figura 6B, si el macrobloque es el ultimo macrobloque en la fila, entonces el Predictor B es desde el bloque 3 del macrobloque superior izquierdo en lugar de desde el bloque 2 en el macrobloque superior-derecho como es el caso de otra manera.
Las Figuras 7A-10 muestran las localizaciones de bloques considerados para predictores de vector de movimiento candidato para cada uno de los 4 bloques de luminancia en un macrobloque de 4MV. Las Figuras 7A y 7B son diagramas que muestran las localizaciones de bloques considerados para predictores de vector de movimiento candidato para un bloque en la posicion 0; Las Figuras 8A y 8B son diagramas que muestran las localizaciones de bloques considerados para predictores de vector de movimiento candidato para un bloque en la posicion 1; La Figura 9 es un diagrama que muestra las localizaciones de bloques considerados para predictores de vector de movimiento candidato para un bloque en la posicion 2; y la Figura 10 es un diagrama que muestra las localizaciones de bloques considerados para predictores de vector de movimiento candidato para un bloque en la posicion 3. De nuevo, si un vecino es un macrobloque de 1 MV, se usa el predictor de vector de movimiento para el macrobloque para los bloques del macrobloque.
Para el caso donde el macrobloque es el primer macrobloque en la fila, el Predictor B para el bloque 0 se maneja de manera diferente que el bloque 0 para los macrobloques restantes en la fila (veanse las Figuras 7A y 7B). En este caso, el Predictor B se toma desde el bloque 3 en el macrobloque inmediatamente por encima del macrobloque actual en lugar de desde el bloque 3 en el macrobloque por encima y a la izquierda del macrobloque actual, como es el caso de otra manera. De manera similar, para el caso donde el macrobloque es el ultimo macrobloque en la fila, el Predictor B para el bloque 1 se maneja de manera diferente (Figuras 8A y 8B). En este caso, el predictor se toma desde el bloque 2 en el macrobloque inmediatamente por encima del macrobloque actual en lugar de desde el bloque 2 en el macrobloque por encima y a la derecha del macrobloque actual, como es el caso de otra manera. En
5
10
15
20
25
30
35
40
45
50
55
general, si el macrobloque esta en la primera columna del macrobloque, entonces el Predictor C para los bloques 0 y 2 se establece igual a 0.
B. Codificacion y decodificacion de fotograma P entrelazado en un codificador y decodificador de WMV anterior
Un codificador y decodificador de WMV anterior usa un formato de macrobloque 4:1:1 para fotogramas P entrelazados, que pueden contener macrobloques codificados en modo de campo o en modo de fotograma, o macrobloques saltados, con una decision realizada generalmente en una base macrobloque a macrobloque. Dos vectores de movimiento estan asociados con cada macrobloque codificado por campo (un vector de movimiento por campo), y un vector de movimiento esta asociado con cada macrobloque codificado por fotograma. Un codificador codifica conjuntamente informacion de movimiento, que incluye componentes de vector diferencial de movimiento horizontal y vertical, potencialmente junto con otra informacion de senalizacion.
Las Figuras 11 y 12A-B muestran ejemplos de predictores candidatos para prediccion de vector de movimiento para macrobloques codificados por fotograma 4:1:1 y macrobloques codificados por campo 4:1:1, respectivamente, en fotogramas P entrelazados en un codificador y decodificador de WMV anterior. La Figura 11 muestra predictores candidatos A, B y C para un macrobloque codificado por fotograma actual 4:1:1 en una posicion interior en un fotograma P entrelazado (no el primer o ultimo macrobloque en una fila de macrobloques, ni en la fila superior). Los predictores pueden obtenerse desde diferentes direcciones candidatas distintas de las etiquetadas A, B y C (por ejemplo, en casos especiales tales como cuando el macrobloque actual es el primer macrobloque o ultimo macrobloque en una fila, o en la fila superior, puesto que ciertos predictores no estan disponibles para tales casos). Para un macrobloque codificado por fotograma actual, los candidatos de predictor se calculan de manera diferente dependiendo de si los macrobloques vecinos estan codificados por campo o codificados por fotograma. Para un macrobloque codificado por fotograma vecino, el vector de movimiento se toma simplemente como el candidato de predictor. Para un macrobloque codificado por campo vecino, el vector de movimiento candidato se determina promediando los vectores de movimiento de campo superior e inferior.
Las Figuras 12A-B muestran predictores candidatos A, B y C para un campo actual en un macrobloque codificado por campo 4:1:1 en una posicion interior en el campo. En la Figura 12A, el campo actual es un campo inferior, y se usan los vectores de movimiento de campo inferior en los macrobloques vecinos como predictores candidatos. En la Figura 12B, el campo actual es un campo superior, y se usan los vectores de movimiento de campo superior en los macrobloques vecinos como predictores candidatos. Por lo tanto, para cada campo en un macrobloque codificado por campo actual, el numero de candidatos de predictor de vector de movimiento para cada campo es como maximo tres, proviniendo cada candidato desde el mismo tipo de campo (por ejemplo, superior o inferior) que el campo actual. De nuevo, se aplican diversos casos especiales (no mostrados) cuando el macrobloque actual es el primer macrobloque o ultimo macrobloque en una fila, o en la fila superior, puesto que ciertos predictores no estan disponibles para tales casos.
Para seleccionar un predictor de un conjunto de candidatos de predictor, el codificador y decodificador de WMV anterior en cuestion usan diferentes algoritmos de seleccion, tal como un algoritmo de mediana de tres o un algoritmo de mediana de cuatro. Un procedimiento para prediccion de mediana de tres se describe en el pseudocodigo 1300 en la Figura 13. Un procedimiento para prediccion de mediana de cuatro se describe en el pseudocodigo 1400 en la Figura 14.
IV. Prediccion bidireccional
Los fotogramas previstos bidireccionalmente (o fotogramas B) usan dos fotogramas del video de origen como fotogramas de referencia (o ancla) en lugar del ancla usada en fotogramas P. Entre los fotogramas de ancla para un fotograma B tfpico, un fotograma de ancla proviene del pasado temporal y un fotograma de ancla proviene del futuro temporal. Haciendo referencia a la Figura 15, un fotograma B 1510 en una secuencia de video tiene un fotograma 1520 de referencia temporalmente anterior y un fotograma 1530 de referencia temporalmente futuro. El uso de fotogramas B proporciona beneficios para compresion eficaz en terminos de mayor econoirna de tasa de bits (por ejemplo, en presencia de movimiento de ciertos tipos, tal como oclusion). Los flujos de bits codificados con fotogramas B tfpicamente usan menos bits que los flujos de bits codificados sin fotogramas B, mientras proporcionan calidad visual similar. Los fotogramas B tambien proporcionan mas opciones y flexibilidad cuando se usan en un espacio de dispositivo pequeno. Por ejemplo, un decodificador puede adaptar las restricciones de espacio y tiempo optando por no decodificar o visualizar fotogramas B, puesto que los fotogramas B en general no se usan como fotogramas de referencia. Las estimaciones para la mejora de tasa-distorsion en secuencias de video que usan fotogramas B vanan de 0 a aproximadamente el 50 %.
V. Codificacion y decodificacion de fotograma B en un codificador y decodificador de WMV anterior
Un codificador y decodificador de WMV anterior usa fotogramas B. Mientras los macrobloques en fotogramas previstos hacia delante (por ejemplo, fotogramas P) tienen unicamente un modo de prediccion direccional (hacia delante, desde fotogramas I o P anteriores), los macrobloques en los fotogramas B pueden predecirse usando cinco diferentes modos de prediccion: hacia delante, hacia atras, directa, interpolada e intra. El codificador selecciona y
5
10
15
20
25
30
35
40
45
50
55
senaliza diferentes modos de prediccion en el flujo de bits. Por ejemplo, el codificador WMV anterior en cuestion env^a un plano de bits comprimido en el nivel de fotograma que indica una decision de modo directo/no directo para cada macrobloque de un fotograma B, mientras que se indican modos no directos (tales como modos hacia delante, hacia atras e interpolado) en el nivel de macrobloque.
El modo directo es similar a la prediccion de fotograma P convencional. En modo directo, se deriva un macrobloque desde un ancla temporalmente anterior. En modo hacia atras, se deriva un macrobloque desde un ancla temporalmente posterior. Los macrobloques previstos en modos directo o interpolado usan tanto anclas hacia delante como hacia atras para prediccion. Los modos directo e interpolado usan promedio de redondeo hacia arriba para combinar los valores de pfxeles de las dos referencias en un conjunto de pfxeles de macrobloque de acuerdo con la siguiente ecuacion:
Valor de pixel promedio = (valor interpolado hacia delante + valor interpolado hacia atras + 1) >>1
A. Codificacion de fraccion y cambio de escala de vectores de movimiento co-localizados
En el codificador y decodificador de WMV anterior en cuestion, el codificador deriva implfcitamente vectores de movimiento de modo directo cambiando de escala un vector de movimiento co-localizado para el ancla hacia delante. La operacion de cambio de escala depende de la posicion temporal del fotograma B actual con relacion a sus anclas. Para codificar la posicion temporal de una imagen de referencia, el codificador usa codificacion de fraccion.
En codificacion de fraccion, el codificador codifica explfcitamente una posicion temporal para un fotograma B actual como una fraccion de la distancia entre sus dos anclas. La variable BFRACTION se usa para representar diferentes fracciones y se envfa en el nivel de fotograma. La fraccion toma un conjunto limitado de valores discretos entre 0 y 1. Para vectores de movimiento de modo directo, el codificador y decodificador usan esta fraccion para cambiar de escala un vector de movimiento (MV) co-localizado en un fotograma de referencia, derivando de esta manera vectores de movimiento de modo directo (MVf y MVb) implicados para el fotograma B actual implementando las siguientes operaciones de cambio de escala:
MVf = Fraccion * MV MVb = (Fraccion -1) * MV
La Figura 16 muestra como la codificacion de fraccion permite que el codificador cambie de escala de manera arbitraria el movimiento entre fotogramas de referencia circundantes. Para derivar MVf y MVb para el macrobloque 1610 actual que se esta codificando en el fotograma B 1620, el codificador y decodificador cambian de escala el vector de movimiento (MV) del macrobloque correspondiente en el fotograma 1630 de referencia futuro usando codificacion de fraccion. En el ejemplo mostrado en la Figura 16, para las fracciones p y q, p + q = 1. El codificador y decodificador usan los dos vectores de movimiento implicados para tratar los macrobloques en el fotograma 1640 de referencia anterior y en el fotograma 1630 de referencia futuro, y usan el promedio de estos para predecir el macrobloque 1610 actual. Por ejemplo, en la Figura 16, MVf = (dx*p, dy*p) y MVb = (-dx*q, -dy*q).
La tabla 1700 en la Figura 17 es una tabla de codigos de longitud variable (VLC) para el elemento de flujo de bits BFRACTION. En el ejemplo mostrado en la tabla 1700, las palabras de codigo de 3 bits son las palabras de codigo “corto”, y las palabras de codigo de 7 bits son las palabras de codigo “largo”. El decodificador halla un factor de cambio de escala basandose en el numerador y denominador de la fraccion de acuerdo con el pseudocodigo 1800 mostrado en la Figura 18.
Una vez que se ha determinado el factor de cambio de escala, el decodificador lo usa para cambiar de escala los elementos x e y del vector de movimiento para el macrobloque co-localizado. Dado que el fotograma de ancla posterior era un fotograma P (para fotogramas I, todos los vectores de movimiento se supone que son (0, 0)) y que el macrobloque co-localizado contiene un vector de movimiento (MV_X, MV_Y), el decodificador deriva dos vectores de movimiento, haciendo uno referencia (MV_Xf, MV_Yf) al fotograma de ancla hacia delante (previo), y haciendo el otro referencia (MV_Xb, MV_Yb) al de ancla hacia atras (posterior).
El decodificador realiza el cambio de escala de acuerdo con el pseudocodigo 1900 mostrado en la Figura 19. En la funcion Scale_Direct_MV en el pseudocodigo 1900, las entradas MV_X y MV_Y son los elementos x e y del vector de movimiento desde el macrobloque co-localizado de la imagen de referencia futura, y las salidas MV_Xf, MV_Yf, MV_Xb y MV_Yb son los elementos x e y de los vectores de movimiento que apuntan hacia delante y hacia atras para el macrobloque que se esta decodificando.
B. Fotogramas B/I
El codificador y decodificador de WMV anterior en cuestion tambien usa fotogramas B intra (“fotogramas B/I”) en codificacion y decodificacion progresiva. Los fotogramas B/I se codifican como los fotogramas I, en que no dependen de fotogramas de referencia. Pero a diferencia de los fotogramas I, los fotogramas B/I no son fotogramas clave; otros fotogramas no estan permitidos a usar fotogramas B/I como anclas.
5
10
15
20
25
30
35
40
45
50
55
C. Fotogramas B entrelazados
El codificador y decodificador de WMV anterior en cuestion tambien usa fotogramas B entrelazados. Los macrobloques en fotogramas B entrelazados pueden codificarse por campo o codificarse por fotograma. Los macrobloques codificados por fotograma pueden tener uno, dos (por ejemplo, vectores de movimiento hacia delante y hacia atras para el modo interpolado, vectores de movimiento hacia delante y hacia atras derivados para modo directo), o ningun vector de movimiento, y los macrobloques codificados por campo pueden tener hasta cuatro vectores de movimiento, dependiendo del modo de prediccion. Por ejemplo, en un macrobloque codificado por campo de modo directo, se derivan cuatro vectores de movimiento implfcitos: un vector de movimiento hacia delante y hacia atras para el campo superior, y un vector de movimiento hacia delante y hacia atras para el campo inferior.
Aunque el codificador y decodificador de WMV anterior en cuestion usa fotogramas B entrelazados, estan limitados de varias maneras importantes. Por ejemplo, unicamente se permite un modo de prediccion de macrobloque (por ejemplo, modo directo, modo hacia delante, etc.) por macrobloque, no se usa codificacion de 4MV (es decir, un vector de movimiento para cada bloque de un macrobloque), y ninguna parte de ningun fotograma B puede ser una referencia para compensacion de movimiento para cualquier fotograma. Como otro ejemplo, la codificacion y decodificacion entrelazada en el codificador y decodificador de WMV anterior en cuestion (incluyendo fotogramas B entrelazados) se realiza usando unicamente un formato de macrobloque 4:1:1.
VI. Normas para compresion y descompresion de video.
Aparte de los codificadores y decodificadores de WMV anteriores, varias normas internacionales se refieren a compresion y descompresion de video. Estas normas incluyen las normas del Grupo de Expertos de Imagenes en Movimiento [“MPEG”] 1, 2 y 4 y las normas H.261, H.262, H.263 y H.264 de la Union Internacional de Telecomunicacion [“ITU”]. Uno de los procedimientos principales para conseguir compresion de datos de secuencias de video digital en las normas internacionales es reducir la redundancia temporal entre imagenes. Estos esquemas de compresion conocidos (MPEG-1, MPEG-2, MPEG-4, H.261, H.263, etc.) usan estimacion y compensacion de movimiento. Por ejemplo, un fotograma actual se divide en regiones cuadradas uniformes (por ejemplo, bloques y/o macrobloques). Una region coincidente para cada region actual se especifica enviando informacion de vector de movimiento para la region. El vector de movimiento indica la localizacion de la region en un fotograma previamente codificado (y reconstruido) que se ha de usar como un predictor para la region actual. Se deriva una diferencia de pixel a pixel, denominada la senal de error, entre la region actual y la region en el fotograma de referencia. Esta senal de error normalmente tiene entropfa inferior que la senal original. Por lo tanto, la informacion puede codificarse a una tasa de bits inferior. Como en codificadores y decodificadores de WMV anteriores, puesto que un valor de vector de movimiento a menudo esta correlacionado con vectores de movimiento espacialmente circundantes, la compresion de los datos usados para representar la informacion del vector de movimiento puede conseguirse codificando el diferencial entre el vector de movimiento actual y un predictor basandose en vectores de movimiento vecinos previamente codificados.
Algunas normas internacionales describen estimacion y compensacion de movimiento en fotogramas de video entrelazados. La norma H.262 permite que un fotograma de video entrelazado se codifique como un unico fotograma o como dos campos, donde la codificacion por fotograma o la codificacion por campo puede seleccionarse de manera adaptativa en una base fotograma a fotograma. La norma H.262 describe prediccion basada en campo, que es un modo de prediccion que usa unicamente un campo de un fotograma de referencia. La norma H.262 tambien describe prediccion de primos dobles, que es un modo de prediccion en el que se promedian dos predicciones basadas en campo hacia delante para un bloque de 16x16 en una imagen P entrelazada. La seccion 7.6 de la norma H.262 describe “prediccion de campo”, que incluye seleccionar entre dos campos de referencia para usar compensacion de movimiento para un macrobloque de un campo actual de un fotograma de video entrelazado. La seccion 7.6.3 describe prediccion de vector de movimiento y reconstruccion, en la que un vector de movimiento reconstruido para un macrobloque dado se hace el predictor de vector de movimiento para un macrobloque codificado/decodificado posteriormente. Tal prediccion de vector de movimiento falla al predecir adecuadamente vectores de movimiento para macrobloques de campos de fotogramas de video entrelazados en muchos casos.
Ademas, la seccion 7.6 de la norma H.262 describe “prediccion de campo” y “prediccion de fotograma” de imagenes B. En prediccion de campo y prediccion de fotograma, la prediccion se realiza para imagenes B usando los dos fotogramas de referencia reconstruidos mas recientemente (omitiendo otras imagenes B intermedias), que pueden haberse codificado como cualquiera de dos campos o como un unico fotograma.
Dada la importancia cntica de la compresion y descompresion de video para video digital, no es sorprendente que la compresion y descompresion de video sean campos altamente desarrollados. Sean cuales sean los beneficios de las tecnicas de compresion y descompresion de video anteriores, sin embargo, no tienen las ventajas de las siguientes tecnicas y herramientas.
Louis Kerofsky y col: “Adaptive Syntax for MTYPE”, 13th VCEG meeting, 2 de abril de 2001 a 4 de abril de 2001, Austin, Texas, Estados Unidos, Videocoding Experts Group of ITU-T SG. 16, n.° VCEG-M14, 28 de marzo de 2001 se refiere a una tecnica sencilla para conseguir ganancia de codificacion a bajas tasas de bits dentro del modelo de
5
10
15
20
25
30
35
40
45
50
codificacion UVLC. Se centra en la codificacion de MBtype. Se usan modelos sencillos para la distribucion de probabilidad MBtype y se proponen modificaciones menores a la sintaxis para conseguir ganancia significativa en secuencias de Bajo Movimiento, y consigue mejoras ligeras a traves de otras secuencias.
Gary Sullivan y col: “Meeting report of the thirteenth meeting (meeting M) of the ITU-T Q.6/16 Video Coding Experts Group (VCEG) - Austin, Texas, 2 a 4 de abril de 2001”, 13th VCEG meeting, 2 de abril de 2001 a 4 de abril de 2001, Austin, Texas, Estados Unidos, Videocoding Experts Group of ITU-T SG.16, n.° VCEG-M82d1, 15 de junio de 2001, se reconoce por la presente.
El documento WO 03/047272 A2 se refiere a un procedimiento y sistema de codificacion y decodificacion de contenido de video digital. El contenido de video digital comprende un flujo de imagenes que pueden ser imagenes intra, previstas o bi-previstas. Cada una de las imagenes comprende macrobloques que pueden dividirse adicionalmente en bloques mas pequenos. El procedimiento conlleva codificar y decodificar cada uno de los bloques mas pequenos en cada imagen en dicho flujo de imagenes en cualquiera del modo de fotograma o modo de campo.
El documento del Equipo Mixto de Video (JVT): “B pictures in JVT”, 4th JVT meeting, 61st MPEG meeting, 22 de julio de 2002 a 26 de julio de 2002, Klagenfurt, AT, Joint video team of ISO/IEC JTC1/SC29/WG11 e ITU-T SG. 16, n.° JVT-D155, 26 de julio de 2002, paginas 1 a 19 se refiere a modificaciones necesarias a la descripcion actual de imagenes B dentro de la norma del JVT de acuerdo con las decisiones de 4th JVT en Klagenfurt, Austria. Todos los asuntos relacionados, incluyendo prediccion de vector de movimiento, prediccion bi-predictiva adaptativa y modo directo, se describen en detalle.
El documento WO 98/44743 se refiere a un procedimiento para decodificar un flujo de bits que representa una imagen que se ha codificado. El procedimiento incluye las etapas de: realizar una decodificacion por entropfa del flujo de bits para formar una pluralidad de coeficientes de transformacion y una pluralidad de vectores de movimiento; realizar una transformacion inversa en la pluralidad de coeficientes de transformacion para formar una pluralidad de bloques de error; determinar una pluralidad de bloques previstos basandose en estimacion de movimiento bidireccional que emplea los vectores de movimiento, en el que la estimacion de movimiento bidireccional incluye un modo de prediccion directa y un segundo modo de prediccion; y, anadir la pluralidad de bloques de error a la pluralidad de bloques previstos para formar la imagen. El segundo modo de prediccion puede incluir modos de prediccion hacia delante, hacia atras e interpolado.
Sumario
Es el objeto de la presente invencion proporcionar tecnicas y herramientas para codificar y decodificar bidireccionalmente imagenes previstas.
Este objeto se resuelve mediante la materia objeto de las reivindicaciones independientes.
Se proporcionan realizaciones en las reivindicaciones dependientes.
Con respecto a la materia objeto reivindicada, se hace referencia en particular a las secciones VI, VIII, XI y XIV, mientras que las otras figuras y partes de la descripcion son utiles para entender la invencion.
En resumen, la descripcion detallada se refiere a diversas tecnicas y herramientas para codificar y decodificar bidireccionalmente fotogramas video entrelazado bidireccionalmente previstos (por ejemplo, campos B entrelazados, fotogramas B entrelazados). Las tecnicas y herramientas descritas mejoran el rendimiento de tasa/distorsion y facilitan mejor soporte para dispositivos con recursos de CPU inferiores (por ejemplo, en dispositivos con factores de forma mas pequenos).
Las realizaciones descritas implementan una o mas de las tecnicas y herramientas descritas para codificar y/o decodificar imagenes B entrelazadas incluyendo, pero sin limitacion, lo siguiente:
En un aspecto, para fotogramas B entrelazados, un codificador/decodificador conmuta modos de prediccion entre los campos en un macrobloque codificado por campo de un fotograma B entrelazado. Por ejemplo, el codificador/decodificador conmuta entre un modo de prediccion hacia delante para el campo superior y un modo hacia atras para el campo inferior en el macrobloque codificado por campo. Conmutar entre modos de prediccion hacia delante y hacia atras dentro del mismo macrobloque codificado por campo permite mas flexibilidad para hallar modos de prediccion eficaces para diferentes porciones de fotogramas B entrelazados.
En otro aspecto, para fotogramas B entrelazados, un codificador/decodificador calcula vectores de movimiento de modo directo para un macrobloque actual seleccionando como maximo un vector de movimiento representativo para cada uno de los campos superior e inferior del macrobloque co-localizado del ancla previamente decodificada temporalmente posterior. Por ejemplo, la seleccion se realiza basandose al menos en parte en el modo de codificacion del macrobloque del fotograma B entrelazado actual (por ejemplo, modo de 1MV, modo de 2 MV de campo, etc.).
En otro aspecto, para campos B entrelazados o fotogramas B entrelazados, un codificador/decodificador usa
5
10
15
20
25
30
35
40
45
50
55
codificacion de 4MV. Por ejemplo, se usa 4MV en modos de prediccion de una direccion (modos hacia delante o hacia atras), pero no en otros modos de prediccion disponibles (por ejemplo, directo, interpolado). Usar 4MV permite compensacion de movimiento mas precisa para campos B entrelazados y fotogramas B entrelazados; limitar 4MV a modos hacia delante y hacia atras reduce la tara de codificacion y evita la complejidad de decodificacion asociada con combinar 4MV con modos tales como directo e interpolado.
En otro aspecto, para campos B entrelazados o fotogramas B entrelazados, se predicen vectores de movimiento hacia delante mediante un codificador/decodificador usando vectores de movimiento hacia delante previamente reconstruidos (o estimados) desde una memoria intermedia de vector de movimiento hacia delante, y se predicen vectores de movimiento hacia atras usando vectores de movimiento hacia atras previamente reconstruidos (o estimados) desde una memoria intermedia de vector de movimiento hacia atras. Los vectores de movimiento resultantes se anaden a la correspondiente memoria intermedia. Los huecos en las memorias intermedias de vectores de movimiento pueden rellenarse con valores de vector de movimiento estimados. Por ejemplo, para fotogramas B entrelazados, cuando se usa prediccion hacia delante para predecir un vector de movimiento y el vector de movimiento se anade a la memoria intermedia de vector de movimiento hacia delante, se rellena la posicion correspondiente en una memoria intermedia de vector de movimiento hacia atras (“relleno de huecos”) con lo que sena el vector de movimiento previsto usando unicamente vectores de movimiento hacia atras como predictores. Como otro ejemplo, para campos B entrelazados, para elegir entre diferentes vectores de movimiento de polaridad (por ejemplo, “misma polaridad” o “polaridad opuesta”) para relleno de huecos, un codificador/decodificador selecciona un vector de movimiento de campo de polaridad dominante. La distancia entre las anclas y fotogramas actuales se calcula usando diversos elementos de sintaxis, y la distancia calculada se usa para cambiar de escala vectores de movimiento de campo de referencia. Las memorias intermedias de vector de movimiento separadas y el relleno de huecos en las memorias intermedias de vector de movimiento separada permite prediccion de vector de movimiento mas precisa para campos B entrelazados y fotogramas B entrelazados.
En otro aspecto, para campos B entrelazados, un codificador/decodificador usa fotogramas de “auto-referencia”. Por ejemplo, un segundo campo B en un fotograma actual hace referencia al primer campo B desde el fotograma actual en prediccion de movimiento compensado. Permitir al primer campo B en un fotograma que actue como una referencia para el segundo campo B en el fotograma permite prediccion mas precisa del segundo campo B, mientras conserva tambien los beneficios de escalabilidad temporal de tener campos B en el fotograma actual.
En otro aspecto, para campos B entrelazados, un codificador envfa informacion binaria que indica si un modo de prediccion es hacia delante o no hacia delante para uno o mas macrobloques en un campo B entrelazado. Por ejemplo, el codificador envfa informacion de decision hacia delante/no hacia delante a nivel de campo B en un plano de bits comprimido. Enviar informacion de decision de modo de prediccion hacia delante/no hacia delante en un plano de bits comprimido a nivel de campo B puede reducir tara de codificacion para codificacion de modo de prediccion. Un decodificador realiza la decodificacion correspondiente.
En otro aspecto, para campos B entrelazados, un codificador/decodificador selecciona vectores de movimiento de modo directo usando logica que favorece la polaridad dominante si el macrobloque correspondiente en el campo correspondiente de la siguiente imagen de ancla se codifico usando cuatro vectores de movimiento. Por ejemplo, si los vectores de movimiento de la misma polaridad del macrobloque correspondiente superan en numero sus vectores de movimiento de polaridad opuesta, el codificador/decodificador calcula la mediana de los vectores de movimiento de la misma polaridad para obtener un vector de movimiento para derivar vectores de movimiento de modo directo. Este procedimiento de seleccion permite la derivacion de vectores de movimiento de modo directo precisos para campos B entrelazados que tienen anclas con macrobloques de 4MV.
Las diversas tecnicas y herramientas pueden usarse en combinacion o de manera independiente.
Se haran evidentes caractensticas y ventajas adicionales a partir de la siguiente descripcion detallada de diferentes realizaciones que continua con referencia a los dibujos adjuntos.
Breve descripcion de los dibujos
La Figura 1 es un diagrama que muestra estimacion de movimiento en un codificador de video de acuerdo con la tecnica anterior.
La Figura 2 es un diagrama que muestra compresion basada en bloques para un bloque de 8x8 de residuos de prediccion en un codificador de video de acuerdo con la tecnica anterior.
La Figura 3 es un diagrama que muestra descompresion basada en bloques para un bloque de 8x8 de residuos de prediccion en un codificador de video de acuerdo con la tecnica anterior.
La Figura 4 es un diagrama que muestra un fotograma entrelazado de acuerdo con la tecnica anterior.
Las Figuras 5A y 5B son diagramas que muestran localizaciones de macrobloques para predictores de vector de movimiento candidato para un macrobloque de 1 MV en un fotograma P progresivo de acuerdo con la tecnica anterior.
Las Figuras 6A y 6B son diagramas que muestran localizaciones de bloques para predictores de vector de movimiento candidato para un macrobloque de 1 MV en un fotograma P progresivo de 1 MV/4MV mixto de acuerdo con la tecnica anterior.
5
10
15
20
25
30
35
40
45
50
55
60
65
Las Figuras 7A, 7B, 8A, 8B, 9 y 10 son diagramas que muestran las localizaciones de bloques para predictores de vector de movimiento candidato para un bloque en diversas posiciones en un macrobloque de 4MV en un fotograma P progresivo de 1 MV/4MV mixto de acuerdo con la tecnica anterior.
La Figura 11 es un diagrama que muestra predictores de vector de movimiento candidato para un macrobloque codificado por fotograma actual en un fotograma P entrelazado de acuerdo con la tecnica anterior.
Las Figuras 12A-12B son diagramas que muestran predictores de vector de movimiento candidato para un macrobloque codificado por campo actual en un fotograma P entrelazado de acuerdo con la tecnica anterior.
Las Figuras 13 y 14 son diagramas de codigo que muestran pseudocodigo para realizar calculos de mediana de 3 y mediana de 4, respectivamente, de acuerdo con la tecnica anterior.
La Figura 15 es un diagrama que muestra un fotograma B con fotogramas de referencia pasados y futuros de acuerdo con la tecnica anterior.
La Figura 16 es un diagrama que muestra la prediccion de modo directo con codificacion de fraccion de acuerdo con la tecnica anterior.
La Figura 17 muestra una tabla de VLC para el elemento de flujo de bits BFRACTION de acuerdo con la tecnica anterior.
Las Figuras 18 son un listado de codigo que muestra pseudocodigo para hallar un factor de cambio de escala para cambiar de escala un vector de movimiento para un macrobloque co-localizado en prediccion de modo directo de acuerdo con la tecnica anterior.
Las Figuras 19 son un listado de codigo que muestra pseudocodigo para cambiar de escala los elementos x e y de un vector de movimiento en un macrobloque co-localizado de acuerdo con un factor de cambio de escala de acuerdo con la tecnica anterior.
La Figura 20 es un diagrama de bloques de un entorno informatico adecuado en conjunto con el que pueden implementarse varias realizaciones descritas.
La Figura 21 es un diagrama de bloques de un sistema de codificador de video generalizado en conjunto con el que pueden implementarse varias realizaciones descritas.
La Figura 22 es un diagrama de bloques de un sistema de decodificador de video generalizado en conjunto con el que pueden implementarse varias realizaciones descritas.
La Figura 23 es un diagrama de un formato de macrobloque usado en varias realizaciones descritas.
La Figura 24A es un diagrama de parte de un fotograma de video entrelazado, que muestra lmeas alternas de un campo superior y un campo inferior. La Figura 24B es un diagrama del fotograma de video entrelazado organizado para codificar/decodificar como un fotograma, y la Figura 24C es un diagrama del fotograma de video entrelazado organizado para codificar/decodificar como campos.
Las Figuras 25 y 26 son diagramas que muestran campos P entrelazados que tienen dos campos de referencia. Las Figuras 27 y 28 son diagramas que muestran campos P entrelazados que usan el campo de referencia permisible mas reciente.
Las Figuras 29 y 30 son diagramas que muestran campos P entrelazados que usan el segundo campo de referencia permisible mas reciente.
La Figura 31 es un diagrama que muestra relaciones entre componentes verticales de vectores de movimiento y una localizacion espacial correspondiente para diferentes combinaciones de polaridades de campo actual y de referencia.
La Figura 32 es un diagrama que muestra dos conjuntos de tres predictores de vector de movimiento candidato para un macrobloque actual.
Las Figuras 33A-33F son listados de codigo que muestran pseudocodigo para calcular predictores de vector de movimiento en campos P o B entrelazados de campo de dos referencias.
Las Figuras 34A-34B son listados de codigo que muestran pseudocodigo para cambiar de escala un predictor desde un campo para derivar un predictor de otro campo.
Las Figuras 35 y 36 son tablas que muestran valores de operacion de cambio de escala asociados con diferentes distancias de fotograma de referencia.
La Figura 37 es un diagrama que muestra vectores de movimiento para bloques de luminancia y vectores de movimiento derivados para bloques de crominancia en un macrobloque de MV de 2 campos de un fotograma P entrelazado.
La Figura 38 es un diagrama que muestra diferentes vectores de movimiento para cada uno de cuatro bloques de luminancia, y vectores de movimiento derivados para cada uno de cuatro subbloques de crominancia, en un macrobloque de MV de 4 fotogramas de un fotograma P entrelazado.
La Figura 39 es un diagrama que muestra vectores de movimiento para bloques de luminancia y vectores de movimiento derivados para bloques de crominancia en un macrobloque de MV de 4 campos de un fotograma P entrelazado.
Las Figuras 40A-40B son diagramas que muestran predictores candidatos para un macrobloque actual de un fotograma P entrelazado.
La Figura 41 es un diagrama de flujo que muestra una tecnica para predecir vectores de movimiento para campos individuales en un macrobloque codificado por campo en un fotograma B entrelazado usando diferentes modos de prediccion.
La Figura 42 es un diagrama de flujo que muestra una tecnica para calcular vectores de movimiento de modo directo para macrobloques de fotogramas B entrelazados.
La Figura 43 es un diagrama que muestra vectores de movimiento almacenados en memoria intermedia para los bloques de un macrobloque co-localizado de un fotograma de ancla previamente decodificado temporalmente
5
10
15
20
25
30
35
40
45
50
55
60
65
posterior para uso al calcular vector o vectores de movimiento de modo directo para un macrobloque de un fotograma B entrelazado.
La Figura 44 es un diagrama de flujo que muestra una tecnica para predecir vectores de movimiento para un macrobloque actual en una imagen B entrelazada usando una memoria intermedia de vector de movimiento hacia delante y/o hacia atras.
La Figura 45 es un diagrama que muestra vectores de movimiento en una memoria intermedia de vector de movimiento hacia delante y una memoria intermedia de vector de movimiento hacia atras para predecir vectores de movimiento para macrobloques.
La Figura 46 es un diagrama que muestra vectores de movimiento de campo superior e inferior para un macrobloque reconstruido en una memoria intermedia de vector de movimiento hacia delante y una memoria intermedia de vector de movimiento hacia atras.
La Figura 47 es un listado de codigo que muestra pseudocodigo que describe el procedimiento de seleccion de polaridad para almacenamiento en memoria intermedia de valor real y relleno de huecos en prediccion de vector de movimiento de campo B entrelazado.
Las Figuras 48A-48B son listados de codigo que muestran pseudocodigo para cambiar de escala un predictor desde un campo para derivar un predictor desde otro campo para un campo B entrelazado previsto hacia atras.
La Figura 49 es una tabla que muestra valores de operacion de cambio de escala asociados con diferentes distancias de fotograma de referencia para un primer campo B entrelazado.
Las Figuras 50A y 50B son diagramas que muestran campos de referencia para un campo B entrelazado.
La Figura 51 es un diagrama de flujo que muestra una tecnica para codificar informacion de decision de modo de prediccion hacia delante/no hacia delante para macrobloques de un campo B entrelazado en un codificador de video que tiene uno o mas modos de codificacion de plano de bits.
La Figura 52 es un diagrama de flujo que muestra una tecnica para decodificar informacion de decision de modo de prediccion hacia delante/no hacia delante para macrobloques de un campo B entrelazado, que se codifico mediante un codificador de video que tiene uno o mas modos de codificacion de plano de bits.
La Figura 53 es un listado de codigo que muestra pseudocodigo que describe un procedimiento de seleccion para un vector de movimiento para usar como una base para vectores de movimiento de modo directo en campos B entrelazados.
La Figura 54 es un diagrama que muestra una sintaxis de flujo de bits de capa de fotograma para campo B entrelazado o campos BI en una implementacion combinada.
La Figura 55 es un diagrama que muestra una sintaxis de flujo de bits de capa de campo para campos B entrelazados en una implementacion combinada.
La Figura 56 es un diagrama que muestra una sintaxis de flujo de bits de capa de campo para campos BI entrelazados en una implementacion combinada.
La Figura 57 es un diagrama que muestra una sintaxis de flujo de bits de capa de macrobloque para macrobloques de campos B entrelazados en una implementacion combinada.
La Figura 58 es un diagrama que muestra una sintaxis de flujo de bits de capa de macrobloque para macrobloques de campos BI entrelazados en una implementacion combinada.
La Figura 59 es un diagrama que muestra una sintaxis de flujo de bits de capa de fotograma para fotogramas B entrelazados en una implementacion combinada.
La Figura 60 es un diagrama que muestra una sintaxis de flujo de bits de capa de macrobloque para macrobloques de fotogramas B entrelazados en una implementacion combinada.
Las Figuras 61A-61B son listados de codigo que muestran pseudocodigo para decodificar informacion de predictor de vector de movimiento diferencial y dominante/no dominante en una implementacion combinada.
Las Figuras 62A-62F son listados de codigo que muestran pseudocodigo para calcular predictores de vector de movimiento en campos P entrelazados de dos referencias en una implementacion combinada.
La Figura 63 es un listado de codigo que muestra pseudocodigo para determinar un campo de referencia para un campo B entrelazado en una implementacion combinada.
La Figura 64 es un listado de codigo que muestra pseudocodigo para recopilar vectores de movimiento candidatos para macrobloques de 1 MV en un fotograma P entrelazado en una implementacion combinada.
Las Figuras 65, 66, 67 y 68 son listados de codigo que muestran pseudocodigo para recopilar vectores de movimiento candidatos para macrobloques de MV de 4 tramas en un fotograma P entrelazado en una implementacion combinada.
Las Figuras 69 y 70 son listados de codigo que muestran pseudocodigo para recopilar vectores de movimiento candidatos para macrobloques de MV de 2 campos en un fotograma P entrelazado en una implementacion combinada.
Las Figuras 71, 72, 73 y 74 son listados de codigo que muestran pseudocodigo para recopilar vectores de movimiento candidatos para macrobloques de MV de 4 campos en un fotograma P entrelazado en una implementacion combinada.
La Figura 75 es un listado de codigo que muestra pseudocodigo para calcular predictores de vector de movimiento para vectores de movimiento de fotograma en un fotograma P entrelazado en una implementacion combinada.
La Figura 76 es un listado de codigo que muestra pseudocodigo para calcular predictores de vector de movimiento para vectores de movimiento de campo en un fotograma P entrelazado en una implementacion combinada.
La Figura 77A y 77B son listados de codigo que muestran pseudocodigo para decodificar un vector de
5
10
15
20
25
30
35
40
45
50
55
movimiento diferencial para unos fotogramas P entrelazados y fotogramas B en una implementacion combinada. La Figura 78 es un listado de codigo que muestra pseudocodigo para derivar un vector de movimiento de crominancia en un fotograma P entrelazado en una implementacion combinada.
Las Figuras 79A - 79C son diagramas que muestran piezas para modos de codificacion de plano de bits Norm-6 y Dif-6 para informacion de decision de modo de prediccion hacia delante/no hacia delante para macrobloques de un campo B entrelazado.
Descripcion detallada
La presente solicitud se refiere a tecnicas y herramientas para compresion y descompresion eficaz de video entrelazado. En diversas realizaciones descritas, un codificador y decodificador de video incorpora tecnicas para codificar y decodificar bidireccionalmente fotogramas de video previstos entrelazados, y tecnicas de senalizacion correspondientes para uso con un formato de flujo de bits o sintaxis que comprende diferentes capas o niveles (por ejemplo, nivel de secuencia, nivel de fotograma, nivel de campo, nivel de macrobloque y/o nivel de bloque).
Son posibles diversas alternativas a las implementaciones descritas en el presente documento. Por ejemplo, las tecnicas descritas con referencia a diagramas de flujo pueden modificarse cambiando la ordenacion de las etapas mostradas en los diagramas de flujo, repitiendo u omitiendo ciertas etapas, etc. Como otro ejemplo, aunque algunas implementaciones se describen con referencia a formatos de macrobloque espedficos, pueden usarse tambien otros formatos. Ademas, las tecnicas y herramientas descritas con referencia a prediccion bidireccional pueden ser aplicables tambien a otros tipos de prediccion.
Las diversas tecnicas y herramientas pueden usarse en combinacion o de manera independiente. Diferentes realizaciones implementan una o mas de las tecnicas y herramientas descritas. Algunas tecnicas y herramientas descritas en el presente documento pueden usarse en un codificador o decodificador de video, o algun otro sistema no espedficamente limitado a codificacion o decodificacion de video.
I. Entorno informatico
La Figura 20 ilustra un ejemplo generalizado de un entorno 2000 informatico adecuado en el que pueden implementarse varias de las realizaciones descritas. El entorno 2000 informatico no se pretende para sugerir ninguna limitacion en cuanto al alcance de uso o funcionalidad, ya que las tecnicas y herramientas pueden implementarse en diversos entornos informaticos de fin general o de fin especial.
Con referencia a la Figura 20, el entorno 2000 informatico incluye al menos una unidad 2010 de procesamiento y memoria 2020. En la Figura 20, esta configuracion 2030 mas basica se incluye con una lmea discontinua. La unidad 2010 de procesamiento ejecuta instrucciones ejecutables por ordenador y puede ser un procesador real o uno virtual. En un sistema de multiprocesamiento, multiples unidades de procesamiento ejecutan instrucciones ejecutables por ordenador para aumentar la potencia de procesamiento. La memoria 2020 puede ser memoria volatil (por ejemplo, registros, cache, RAM), memoria no volatil (por ejemplo, ROM, EEPROM, memoria flash, etc.), o alguna combinacion de las dos. La memoria 2020 almacena software 2080 que implementa un codificador o decodificador de video con prediccion bidireccional de fotogramas de video entrelazados.
Un entorno informatico puede tener caractensticas adicionales. Por ejemplo, el entorno 2000 informatico incluye el almacenamiento 2040, uno o mas dispositivos 2050 de entrada, uno o mas dispositivos 2060 de salida y una o mas conexiones 2070 de configuracion. Un mecanismo de interconexion (no mostrado) tal como un bus, controlador o red interconecta los componentes del entorno 2000 informatico. Tfpicamente, el software de sistema operativo (no mostrado) proporciona un entorno operativo para que otro software se ejecute en el entorno 2000 informatico, y coordine actividades de los componentes del entorno 2000 informatico.
El almacenamiento 2040 puede ser extrafble o no extrafble, e incluye discos magneticos, cintas o casetes magneticas, CD-ROM, DVD o cualquier otro medio que pueda usarse para almacenar informacion y que pueda accederse en el entorno 2000 informatico. El almacenamiento 2040 almacena instrucciones para que el software 2080 implemente el codificador o decodificador de video.
El dispositivo o dispositivos 2050 de entrada puede ser un dispositivo de entrada tactil tal como un teclado, raton, lapicero, o bola de mando, un dispositivo de entrada de voz, un dispositivo de exploracion u otro dispositivo que proporcione entrada al entorno 2000 informatico. Para codificacion de audio o de video, el dispositivo o dispositivos 2050 de entrada pueden ser una tarjeta de sonido, tarjeta de video, tarjeta sintonizadora de TV o dispositivo similar que acepte entrada de audio o de video en forma analogica o digital, o un CD-ROM o CD-RW que lea muestras de audio o de video en el entorno 2000 informatico. El dispositivo o dispositivos 2060 de salida pueden ser una pantalla, impresora, altavoz, grabadora de CD u otro dispositivo que proporcione salida desde el entorno 2000 informatico.
La conexion o conexiones 2070 de comunicacion posibilitan comunicacion a traves de un medio de comunicacion a otra entidad informatica. El medio de comunicacion transporta informacion tal como instrucciones ejecutables por ordenador, entrada o salida de audio o video, u otros datos en una senal de datos modulada. Una senal de datos modulada es una senal que tiene una o mas de sus caractensticas establecidas o cambiadas de tal manera para codificar informacion en la senal. A modo de ejemplo, y no como limitacion, medio de comunicacion incluye tecnicas
5
10
15
20
25
30
35
40
45
50
55
alambricas o inalambricas implementadas con una portadora electrica, optica, de RF, infrarrojos, acustica u otra.
Las tecnicas y herramientas pueden describirse en el contexto general de medio legible por ordenador. Medio legible por ordenador puede ser cualquier medio disponible que pueda accederse en un entorno informatico. A modo de ejemplo, y no como limitacion, con el entorno 2000 informatico, medio legible por ordenador incluye memoria 2020, almacenamiento 2040, medio de comunicacion y combinaciones de cualquiera de lo anterior.
Las tecnicas y herramientas pueden describirse en el contexto general de instrucciones ejecutables por ordenador, tal como aquellas incluidas en modulos de programa, que se ejecutan en un entorno informatico en un procesador real o virtual. En general, los modulos de programa incluyen rutinas, programas, bibliotecas, objetos, clases, componentes, estructuras de datos, etc., que realizan tareas particulares o implementan tipos de datos abstractos particulares. La funcionalidad de los modulos de programa puede combinarse o dividirse entre modulos de programa segun se desee en diversas realizaciones. Instrucciones ejecutables por ordenador para modulos de programa pueden ejecutarse en un entorno informatico local o distribuido.
Para fines de presentacion, la descripcion detallada usa terminos como “estimar”, “compensar”, “predecir” y “aplicar” para describir operaciones informaticas en un entorno informatico. Estos terminos son abstracciones de alto nivel para operaciones realizadas mediante un ordenador, y no debenan confundirse con actos realizados por un ser humano. Las operaciones informaticas reales que corresponden a estos terminos vanan dependiendo de la implementacion.
II. Codificador y decodificador de video generalizado
La Figura 21 es un diagrama de bloques de un codificador 2100 de video generalizado en conjunto con el que pueden implementarse algunas realizaciones descritas. La Figura 22 es un diagrama de bloques de un decodificador 2200 de video generalizado en conjunto con el que pueden implementarse algunas realizaciones descritas.
Las relaciones mostradas entre los modulos en el codificador 2100 y decodificador 2200 indican flujos generales de informacion en el codificador y decodificador; otras realizaciones no se muestran por motivos de simplicidad. En particular, las Figuras 21 y 22 normalmente no muestran informacion secundaria que indica los ajustes, modos, tablas, etc., del codificador usados para una secuencia, imagen, macrobloque, bloque, etc., de video. Tal informacion secundaria se envfa en el flujo de bits de salida, tipicamente despues de la codificacion por entropfa de la informacion secundaria. El formato del flujo de bits de salida puede ser un formato de Windows Media Video version 9 u otro formato.
El codificador 2100 y el decodificador 2200 procesan imagenes de video, que pueden ser fotogramas de video, campos de video o combinaciones de fotogramas y campos. La sintaxis y semantica de flujo de bits en los niveles de imagen y macrobloque puede depender de si se usan fotogramas o campos. Puede haber cambios a la organizacion de macrobloque y temporizacion global tambien El codificador 2100 y el decodificador 2200 estan basados en bloques y usan un formato de macrobloque 4:2:0 para fotogramas, incluyendo cada macrobloque cuatro bloques de luminancia de 8x8 (a veces tratados como un macrobloque de 16x16) y dos bloques de crominancia de 8x8. Para campos, puede usarse la misma o una organizacion y formato de macrobloques diferente. Los bloques de 8x8 pueden subdividirse adicionalmente en diferentes etapas, por ejemplo, en las etapas de transformacion de frecuencia y codificacion por entropfa. Se describen organizaciones de fotograma de video ejemplares en mas detalle a continuacion. Como alternativa, el codificador 2100 y el decodificador 2200 estan basados en objeto, usan un formato de macrobloque o bloque diferente, o realizan operaciones en conjuntos de pfxeles de tamano o configuracion diferente a los bloques de 8x8 y macrobloques de 16x16.
Dependiendo de la implementacion y el tipo de compresion deseados, pueden anadirse modulos del codificador o decodificador, omitirse, dividirse en multiples modulos, combinarse con otros modulos y/o sustituirse con modulos similares. En realizaciones alternativas, codificadores o decodificadores con diferentes modulos y/u otras configuraciones de modulos realizan una o mas de las tecnicas descritas.
A. Organizaciones de fotograma de video
En algunas implementaciones, el codificador 2100 y el decodificador 2200 procesan fotogramas de video organizados como sigue. Un fotograma contiene lmeas de informacion espacial de una senal de video. Para video progresivo, estas lmeas contienen muestras que comienzan desde un instante de tiempo y continuan a traves de lmeas sucesivas hasta la parte inferior del fotograma. Un fotograma de video progresivo se divide en macrobloques tal como el macrobloque 2300 mostrado en la Figura 23. El macrobloque 2300 incluye cuatro bloques de luminancia de 8x8 (Y1 a Y4) y dos bloques de crominancia de 8x8 que estan co-localizados con los cuatro bloques de luminancia pero a la mitad de resolucion horizontal y verticalmente, siguiendo el formato de macrobloque 4:2:0 convencional. Los bloques de 8x8 pueden subdividirse adicionalmente en diferentes etapas, por ejemplo, en las etapas de transformacion de frecuencia (por ejemplo, DCT de 8x4, 4x8 o 4x4) y codificacion por entropfa. Un fotograma I progresivo es un fotograma de video progresivo intra-codificado. Un fotograma P progresivo es un fotograma de video progresivo codificado usando prediccion hacia delante, y un fotograma B progresivo es un fotograma de video progresivo codificado usando prediccion bidireccional. Los fotogramas P y B progresivos pueden incluir macrobloques intra-codificados asf como diferentes tipos de macrobloques previstos.
5
10
15
20
25
30
35
40
45
50
55
Un fotograma de video entrelazado consiste en dos exploraciones de un fotograma, una que comprende las lmeas pares del fotograma (el campo superior) y la otra que comprende las lmeas impares del fotograma (el campo inferior). Los dos campos pueden representar dos periodos de tiempo diferentes o pueden proceder del mismo periodo de tiempo. La Figura 24A muestra parte de un fotograma 2400 de video entrelazado, que incluye lmeas alternas del campo superior y campo inferior en la parte superior izquierda de parte del fotograma 2400 de video entrelazado.
La Figura 24B muestra el fotograma 2400 de video entrelazado de la Figura 24A organizado para codificar/decodificar como un fotograma 2430. El fotograma 2400 de video entrelazado se ha particionado en macrobloques tal como los macrobloques 2431 y 2432, que usan un formato 4:2:0 como se muestra en la Figura 23. En el plano de luminancia, cada macrobloque 2431, 2432 incluye 8 lmeas desde el campo superior que se alternan con 8 lmeas desde el campo inferior para 16 lmeas en total, y cada lmea es de 16 pfxeles de longitud. (La organizacion y colocacion real de los bloques de luminancia y bloques de crominancia en los macrobloques 2431, 2432 no se muestra, y de hecho puede variar para diferentes decisiones de codificacion). Dentro de un macrobloque dado, la informacion de campo superior y la informacion de campo inferior pueden codificarse conjuntamente o por separado en cualquiera de diversas fases. Un fotograma I entrelazado son dos campos intra-codificados de un fotograma de video entrelazado, donde un macrobloque incluye informacion para los dos campos. Un fotograma P entrelazado son dos campos de un fotograma de video entrelazado codificado usando prediccion hacia delante, y un fotograma B entrelazado son dos campos de un fotograma de video entrelazado codificado usando prediccion bidireccional, donde un macrobloque incluye informacion para los dos campos. Los fotogramas P y fotogramas B pueden incluir macrobloques intra-codificados asf como diferentes tipos de macrobloques previstos.
La Figura 24C muestra el fotograma 2400 de video entrelazado de la Figura 24A organizado para codificar/decodificar como campos 2460. Cada uno de los dos campos del fotograma 2400 de video entrelazado esta particionado en macrobloques. El campo superior esta particionado en macrobloques tal como el macrobloque 2461, y el campo inferior esta particionado en macrobloques tal como el macrobloque 2462. (De nuevo, los macrobloques usan un formato 4:2:0 como se muestra en la Figura 23, y la organizacion y colocacion de los bloques de luminancia y bloques de crominancia en los macrobloques no se muestra). En el plano de luminancia, el macrobloque 2461 incluye 16 lmeas desde el campo superior y el macrobloque 2462 incluye 16 lmeas desde el campo inferior, y cada lmea es de 16 pfxeles de longitud. Un campo I entrelazado es un unico campo representado de manera separada de un fotograma de video entrelazado. Un campo P entrelazado es un unico campo representado de manera separada de un fotograma de video entrelazado codificado usando prediccion hacia delante, y un campo B entrelazado es un unico campo representado de manera separada de un fotograma de video entrelazado codificado usando prediccion bidireccional. Los campos P y B entrelazados pueden incluir macrobloques intra-codificados asf como diferentes tipos de macrobloques previstos.
El termino imagen se refiere en general a datos de imagen de origen, codificaos o reconstruidos. Para video progresivo, una imagen es un fotograma de video progresivo. Para video entrelazado, una imagen puede hacer referencia a un fotograma de video entrelazado, el campo superior del fotograma, o el campo inferior del fotograma, dependiendo del contexto.
Como alternativa, el codificador 2100 y el decodificador 2200 estan basados en objeto, usan un formato de macrobloque o bloque diferente, o realizan operaciones en conjuntos de pfxeles de tamano o configuracion diferente a los bloques de 8x8 y macrobloques de 16x16.
B. Codificador de video
La Figura 21 es un diagrama de bloques de un sistema 2100 de codificador de video generalizado. El sistema 2100 de codificador recibe una secuencia de imagenes de video que incluyen una imagen 2105 actual (por ejemplo, fotograma de video progresivo, fotograma de video entrelazado o campo de un fotograma de video entrelazado), y produce informacion 2195 de video comprimida como salida. Las realizaciones particulares de los codificadores de video tfpicamente usan una variacion o version complementada del codificador 2100 generalizado.
El sistema 2100 de codificador comprime imagenes previstas e imagenes clave. Para fines de presentacion, la Figura 21 muestra una trayectoria para imagenes clave a traves del sistema 2100 de codificador y una trayectoria para imagenes previstas. Muchos de los componentes del sistema 2100 de codificador se usan para comprimir tanto imagenes clave como imagenes previstas. Las operaciones exactas realizadas mediante estos componentes pueden variar dependiendo del tipo de informacion que se este comprimiendo.
Una imagen prevista (por ejemplo, imagen p o imagen b progresiva, campo p o campo b entrelazado, o fotograma p fotograma b entrelazado) se representa en terminos de prediccion (o diferencia) desde una o mas otras imagenes (que se denominan tfpicamente como imagenes o anclas de referencia). Una prediccion residual es la diferencia entre lo que se predice y la imagen original. En contraste, una imagen clave (por ejemplo, fotograma 1 progresivo, campo I entrelazado o fotograma I entrelazado) se comprime sin referencia a otras imagenes.
Si la imagen 2105 actual es una imagen prevista hacia delante, un estimador 2110 de movimiento estima el movimiento de macrobloques u otros conjuntos de pfxeles de la imagen 2105 actual con respecto a una o mas
5
10
15
20
25
30
35
40
45
50
55
60
imagenes de referencia, por ejemplo, la imagen 2125 previa reconstruida almacenada en memoria intermedia en el almacenamiento 2120 de imagenes. Si la imagen 2105 actual es una imagen bidireccionalmente prevista, un estimador 2110 de movimiento estima el movimiento en la imagen 2105 actual con respecto a hasta cuatro imagenes de referencia reconstruidas (para un campo B entrelazado, por ejemplo). Tfpicamente, un estimador de movimiento estima el movimiento en una imagen B con respecto a una o mas imagenes de referencia temporalmente anteriores y una o mas imagenes de referencia temporalmente futuras. Por consiguiente, el sistema 2100 de codificador puede usar los almacenamientos 2120 y 2122 separados para multiples imagenes de referencia. Para mas informacion sobre fotogramas B progresivos, vease la Solicitud de Patente de Estados Unidos con N.° de Serie 10/622.378, titulada, “Advanced Bi-Directional Predictive Coding of Video Frames”, presentada el 18 de julio de 2003.
El estimador 2110 de movimiento puede estimar movimiento en incrementos de pixel, A pixel, % pixel u otros incrementos, y puede conmutar la resolucion de la estimacion de movimiento en una base imagen a imagen u otra base. El estimador 2110 de movimiento (y el compensador 2130) tambien pueden conmutar entre tipos de interpolacion de pixel de imagen de referencia (por ejemplo, entre bicubica y bilinear) en una base por fotograma u otra. La resolucion de la estimacion de movimiento puede ser la misma o diferente horizontal y verticalmente. El estimador 2110 de movimiento emite como informacion secundaria informacion 2115 de movimiento tal como informacion de vector de movimiento diferencial. El codificador 2100 codifica la informacion 2115 de movimiento calculando, por ejemplo, uno o mas predictores para vectores de movimiento, calculando diferenciales entre los vectores de movimiento y predictores, y codificando por entropfa los diferenciales. Para reconstruir un vector de movimiento, un compensador 2130 de movimiento combina un predictor con informacion de vector de movimiento diferencial. Se describen a continuacion diversas tecnicas para calcular predictores de vector de movimiento, calcular vectores de movimiento diferencial y reconstruir vectores de movimiento para campos B entrelazados y fotogramas B entrelazados.
El compensador 2130 de movimiento aplica el vector de movimiento reconstruido a la imagen o imagenes 2125 reconstruidas para formar una imagen 2135 actual de movimiento compensado. Sin embargo, la prediccion raramente es perfecta, y la diferencia entre la imagen 2135 actual de movimiento compensado y la imagen 2105 actual original es la prediccion residual 2145. Durante la ultima reconstruccion de la imagen, la prediccion residual 2145 se anade a la imagen 2135 actual de movimiento compensado para obtener una imagen reconstruida que esta mas cerca de la imagen 2105 actual original. En compresion con perdidas, sin embargo, aun se pierde alguna informacion de la imagen 2105 actual original. Como alternativa, un estimador de movimiento y compensador de movimiento aplica otro tipo de estimacion/compensacion de movimiento.
Un transformador 2160 de frecuencia convierte la informacion de video de dominio especial en datos de dominio de la frecuencia (es decir, espectral). Para imagenes de video basadas en bloques, el transformador 2160 de frecuencia aplica una DCT, variante de DCT u otra transformacion de bloque para transformar bloques de los datos de pixel o datos de prediccion residual, produciendo bloques de coeficientes de transformacion de frecuencia. Como alternativa, el transformador 2160 de frecuencia aplica otra transformacion de frecuencia convencional tal como una transformada de Fourier o usa analisis de ondfcula o de subbanda. El transformador 2160 de frecuencia puede aplicar una transformacion de frecuencia de tamano de 8x8, 8x4, 4x8, 4x4 u otro.
Un cuantificador 2170 a continuacion cuantifica los bloques de coeficientes de datos espectrales. El cuantificador aplica cuantificacion escalar uniforme a los datos espectrales con un tamano gradual que vana en una base imagen a imagen u otra base. Como alternativa, el cuantificador aplica otro tipo de cuantificacion a los coeficientes de datos espectrales, por ejemplo, una cuantificacion no uniforme, vectorial o no adaptativa, o directamente cuantifica datos de dominio espacial en un sistema codificador que no usa transformaciones de frecuencia. Ademas de cuantificacion adaptativa, el codificador 2100 puede usar perdida de fotogramas, filtracion adaptativa u otras tecnicas para control de tasa.
El codificador 2100 puede usar senalizacion especial para un macrobloque saltado, que es un macrobloque que no tiene informacion de ciertos tipos (por ejemplo, ninguna informacion de movimiento para el macrobloque y ninguna informacion residual).
Cuando una imagen actual reconstruida es necesaria para estimacion/compensacion de movimiento posterior, un cuantificador 2176 inverso realiza cuantificacion inversa en los coeficientes de datos espectrales cuantificados. Un transformador 2166 de frecuencia inverso a continuacion realiza la inversa de las operaciones del transformador 2160 de frecuencia, produciendo una prediccion reconstruida residual (para una imagen prevista) o una imagen clave reconstruida. Si la imagen 2105 actual era una imagen de clave, la imagen de clave reconstruida se toma como la imagen actual reconstruida (no mostrada). Si la imagen 2105 actual era una imagen prevista, la prediccion reconstruida residual se anade a la imagen 2135 actual de movimiento compensado para formar la imagen actual reconstruida. Uno o ambos de los almacenamientos 2120, 2122 de imagen almacenan en memoria intermedia la imagen actual reconstruida para uso en prediccion de movimiento compensado. En algunas realizaciones, el codificador aplica un filtro de desbloqueo al fotograma reconstruido para suavizar de manera adaptativa discontinuidades y otros artefactos en la imagen.
El codificador 2180 por entropfa comprime la salida del cuantificador 2170 asf como cierta informacion secundaria
5
10
15
20
25
30
35
40
45
50
55
(por ejemplo, informacion 2115 de movimiento, tamano de etapa de cuantificacion). Las tecnicas de codificacion por entrc^a tipicas incluyen codificacion aritmetica, codificacion diferencial, codificacion Huffman, codificacion por longitud de serie, codificacion LZ, codificacion de diccionario y combinaciones de las anteriores. El codificador 2180 por entropfa tipicamente usa diferentes tecnicas de codificacion para diferentes clases de informacion (por ejemplo, coeficientes de DC, coeficientes de AC, diferentes clases de informacion secundaria), y puede elegir de entre multiples tablas de codigo dentro de una tecnica de codificacion particular.
El codificador 2180 por entropfa proporciona informacion 2195 de video comprimida al multiplexor [“MUX”] 2190. El MUX 2190 puede incluir una memoria intermedia, y un indicador de nivel de memoria intermedia puede realimentarse a los modulos adaptativos de tasa de bits para control de tasas. Antes o despues del MUX 2190, la informacion 2195 de video comprimida puede codificarse por canal para transmision a traves de la red. La codificacion de canal puede aplicar datos de deteccion y correccion de errores a la informacion 2195 de video comprimida.
C. Decodificador de video
La Figura 22 es un diagrama de bloques de un sistema 2200 de decodificador de video general. El sistema 2200 de decodificador recibe informacion 2295 para una secuencia comprimida de imagenes de video y produce salida que incluye una imagen 2205 reconstruida (por ejemplo, fotograma de video progresivo, fotograma de video entrelazado o campo de un fotograma de video entrelazado). Realizaciones particulares de decodificadores de video tipicamente usan una variacion o version complementada del decodificador 2200 generalizado.
El sistema 2200 de decodificador descomprime imagenes previstas e imagenes clave. Para fines de presentacion, la Figura 22 muestra una trayectoria para imagenes clave a traves del sistema 2200 de decodificador y una trayectoria para imagenes previstas hacia delante. Muchos de los componentes del sistema 2200 de decodificador se usan para descomprimir tanto imagenes clave como imagenes previstas. Las operaciones exactas realizadas por estos componentes pueden variar dependiendo del tipo de informacion que se este descomprimiendo.
Un DEMUX 2290 recibe la informacion 2295 para la secuencia de video comprimido y pone a disposicion la informacion recibida al decodificador 2280 por entropfa. El DEMUX 2290 puede incluir una memoria intermedia de fluctuacion y otras memorias intermedias tambien. Antes o despues del DEMUX 2290, la informacion de video comprimida puede codificarse por canal y procesarse para deteccion y correccion de errores.
El decodificador 2280 por entropfa decodifica por entropfa datos cuantificados codificados por entropfa asf como informacion secundaria codificada por entropfa (por ejemplo, informacion 2215 de movimiento, tamano de etapa de cuantificacion), aplicando tipicamente la inversa de la codificacion por entropfa realizada en el codificador. Las tecnicas de decodificacion por entropfa incluyen decodificacion aritmetica, decodificacion diferencial, decodificacion Huffman, decodificacion por longitud de serie, decodificacion LZ, decodificacion de diccionario y combinaciones de las anteriores. El decodificador 2280 por entropfa tipicamente usa diferentes tecnicas de decodificacion para diferentes tipos de informacion (por ejemplo, coeficientes de DC, coeficientes de AC, diferentes tipos de informacion secundaria), y puede elegir de entre multiples tablas de codigo dentro de una tecnica de decodificacion particular.
El decodificador 2200 decodifica la informacion 2215 de movimiento calculando, por ejemplo, uno o mas predictores para vectores de movimiento, decodificacion por entropfa vectores de movimiento diferencial, y combinando vectores de movimiento diferencial decodificados con predictores para reconstruir vectores de movimiento. Se describen a continuacion diversas tecnicas para calcular predictores de vector de movimiento, calcular vectores de movimiento diferencial y reconstruir vectores de movimiento para campos B entrelazados y fotogramas B entrelazados.
Un compensador 2230 de movimiento aplica informacion 2215 de movimiento a una o mas imagenes 2225 de referencia para formar una prediccion 2235 de la imagen 2205 que se esta reconstruyendo. Por ejemplo, el compensador 2230 de movimiento usa uno o mas vectores de movimiento de macrobloque para hallar el macrobloque o macrobloques en la imagen o imagenes 2225 de referencia. Uno o mas almacenamientos de imagenes (por ejemplo, los almacenamientos 2220, 2222 de imagenes) almacenan imagenes reconstruidas anteriores para uso como imagenes de referencia. Tfpicamente, las imagenes B tienen mas de una imagen de referencia (por ejemplo, al menos una imagen de referencia temporalmente anterior y al menos una imagen de referencia temporalmente futura). Por consiguiente, el sistema 2200 de decodificador puede usar almacenamientos 2220 y 2222 de imagenes separados para multiples imagenes de referencia. El compensador 2230 de movimiento puede compensar movimiento a incrementos de pixel, A pixel, % pixel u otros incrementos, y puede conmutar la resolucion de la compensacion de movimiento en una base imagen a imagen u otra. El compensador 2230 de movimiento tambien puede conmutar entre tipos de interpolacion de pixel de imagen de referencia (por ejemplo, entre bicubica y bilinear) en una base por fotograma u otra. La resolucion de la compensacion de movimiento puede ser la misma o diferente horizontal y verticalmente. Como alternativa, un compensador de movimiento aplica otro tipo de compensacion de movimiento. La prediccion mediante el compensador de movimiento raramente es perfecta, por lo que el decodificador 2200 tambien reconstruye residuos de prediccion.
Un cuantificador 2270 inverso cuantifica a la inversa datos decodificados por entropfa. En general, el cuantificador inverso aplica cuantificacion inversa escalar uniforme a los datos decodificados por entropfa con un tamano gradual
5
10
15
20
25
30
35
40
45
50
55
que vana en una base imagen a imagen u otra. Como alternativa, el cuantificador inverso aplica otro tipo de cuantificacion inversa a los datos, por ejemplo, para reconstruir despues de una cuantificacion no uniforme, vectorial o no adaptativa, o cuantifica a la inversa directamente datos de dominio espacial en un sistema de decodificador que no usa transformaciones de frecuencia inversa.
Un transformador 2260 de frecuencia inverso convierte los datos de dominio de frecuencia cuantificados en informacion de video de dominio espacial. Para imagenes de video basadas en bloques, el transformador 2260 de frecuencia inverso aplica una DCT inversa [“IDCT”], variante de IDCT, u otra transformacion de bloque inversa a bloques de los coeficientes de transformacion de frecuencia, produciendo datos de pfxeles o datos de prediccion residual para imagenes clave o imagenes previstas, respectivamente. Como alternativa, el transformador 2260 de frecuencia inverso aplica otra transformacion de frecuencia inversa convencional tal como una transformada de Fourier inversa o usa smtesis de ondfcula o de subbanda. El transformador 2260 de frecuencia inverso puede aplicar una transformacion de frecuencia inversa de 8x8, 8x4, 4x8, 4x4 u otro tamano.
Para una imagen prevista, el decodificador 2200 combina la prediccion reconstruida residual 2245 con la prediccion 2235 de movimiento compensado para formar la imagen 2205 reconstruida. Cuando el decodificador necesita una imagen 2205 reconstruida para compensacion de movimiento posterior, uno o ambos de los almacenamientos de la imagen (por ejemplo, el almacenamiento 2220 de imagen) almacenan en memoria intermedia la imagen 2205 reconstruida para uso al predecir la siguiente imagen. En algunas realizaciones, el decodificador 2200 aplica un filtro de desbloqueo a la imagen reconstruida para suavizar de manera adaptativa discontinuidades y otros artefactos en la imagen.
III. Campos P entrelazados y fotogramas P entrelazados
Un fotograma de video entrelazado tfpico consiste en dos campos (por ejemplo, un campo superior y un campo inferior) explorados en diferentes tiempos. En general, es mas eficaz codificar regiones estaticas de un fotograma de video entrelazado codificando campos juntos (codificacion de “modo de fotograma”). Por otra parte, a menudo es mas eficaz codificar regiones en movimiento de un fotograma de video entrelazado codificando campos de manera separada (codificacion de “modo de campo”), puesto que los dos campos tienden a tener diferente movimiento. Un fotograma de video entrelazado previsto hacia delante puede codificarse como dos campos previstos hacia delante separados, campos P entrelazados. Codificar campos de manera separada para un fotograma de video entrelazado previsto hacia delante puede ser eficaz, por ejemplo, cuando hay elevado movimiento a traves de todo el fotograma de video entrelazado, y por lo tanto mucha diferencia entre los campos.
O, un fotograma de video entrelazado previsto hacia delante puede codificarse usando una mezcla de codificacion de campo y codificacion de fotograma, como un fotograma P entrelazado. Para un macrobloque de un fotograma P entrelazado, el macrobloque incluye lmeas de pfxeles para los campos superior e inferior, y las lmeas pueden codificarse de manera colectiva en un modo de codificacion de fotograma o de manera separada en un modo de codificacion de campo.
A. Campos P entrelazados
Un campo P entrelazado hace referencia a uno o mas campos previamente decodificados. Por ejemplo, en algunas implementaciones, un campo P entrelazado hace referencia a cualquiera de uno o dos campos previamente decodificados, mientras que los campos B entrelazados hacen referencia a hasta dos campos de referencia anteriores y dos futuros (es decir, hasta un total de cuatro campos de referencia). (Se describen en detalle a continuacion tecnicas de codificacion y decodificacion para campos B entrelazados).
Las Figuras 25 y 26 muestran ejemplos de campos P entrelazados que tienen dos campos de referencia. En la Figura 25, el campo 2510 actual hace referencia a un campo 2520 superior y campo 2530 inferior en un fotograma de video entrelazado temporalmente anterior. Puesto que los campos 2540 y 2550 son campos B entrelazados, no se usan como campos de referencia. En la Figura 26, el campo 2610 actual hace referencia a un campo 2620 superior y al campo 2630 inferior en un fotograma de video entrelazado inmediatamente anterior al fotograma de video entrelazado que contiene el campo 2610 actual. Para mas informacion sobre campos P entrelazados de dos referencias, vease la Solicitud de Patente de Estados Unidos con N.° de Serie xx/yyy,zzz, titulada, “Predicting Motion Vectors for Fields of Forward-predicted Interlaced Video Frames”, presentada el 27 de mayo de 2004.
Las Figuras 27 y 28 muestran ejemplos de campos P entrelazados que tienen un campo de referencia, el campo de referencia permisible temporalmente mas reciente. En la Figura 27, el campo 2710 actual hace referencia a un campo 2730 inferior en un fotograma de video entrelazado temporalmente anterior, pero no hace referencia al campo 2720 superior menos reciente en el fotograma de video entrelazado. En el ejemplo mostrado en la Figura 27, los campos 2740 y 2750 son campos B entrelazados y no son campos de referencia permisibles. En la Figura 28, el campo 2810 actual hace referencia al campo 2830 inferior en un fotograma de video entrelazado inmediatamente anterior al fotograma de video entrelazado que contiene el campo 2810 actual, en lugar del campo 2820 superior menos reciente.
Las Figuras 29 y 30 muestran ejemplos de campos P entrelazados que usan el segundo campo de referencia permisible mas reciente. En la Figura 29, el campo 2910 actual hace referencia a un campo 2920 superior en un
5
10
15
20
25
30
35
40
45
50
55
fotograma de v^deo entrelazado temporalmente anterior, pero no hace referencia al campo 2930 inferior mas reciente. En el ejemplo mostrado en la Figura 29, los campos 2940 y 2950 son campos B entrelazados y no son campos de referencia permisibles. En la Figura 30, el campo 3010 actual hace referencia al campo 3020 superior en lugar de al campo 3030 inferior mas reciente.
En una implementacion, todos los escenarios mostrados en las Figuras 25-30 estan permitidos en una sintaxis de campo P entrelazado. Son posibles otras implementaciones. Por ejemplo, las imagenes pueden usar campos de otras imagenes de diferentes tipos o posiciones temporales como campos de referencia.
1. Sistema de coordenadas de imagen de campo y polaridades de campo
Los vectores de movimiento representan desplazamientos horizontales y verticales en unidades de cuarto de pixel. Por ejemplo, si el componente vertical de un vector de movimiento indica un desplazamiento de 6 unidades de cuarto de pixel, esto indica que el bloque de referencia esta una lmea y media de campo por debajo de la posicion real del bloque (6 * % = 1 1^).
La Figura 31 muestra una relacion entre componentes verticales de vectores de movimiento y localizaciones espaciales en una implementacion. El ejemplo mostrado en la Figura 31 muestra tres diferentes escenarios 3110, 3120 y 3130 para tres combinaciones diferentes de tipos de campo actual y de referencia (por ejemplo, superior e inferior). Si los tipos de campo son diferentes para los campos de referencia y actual, la polaridad es “opuesta”. Si los tipos de campo son el mismo, la polaridad es la “misma”. Para cada escenario, la Figura 31 muestra una columna vertical de pfxeles en un campo actual y una segunda columna vertical de pfxeles en un campo de referencia. En realidad, las dos columnas estan alienadas horizontalmente. Un cfrculo representa una posicion de pixel de numero entero real y una X representa una posicion de medio o cuarto de pixel interpolado. Los valores de componente horizontal (no mostrados) no necesitan contabilizarse para ningun desplazamiento debido al entrelazado, ya que los respectivos campos estan alineados horizontalmente. Los valores negativos indican desplazamientos mas hacia arriba, y en la direccion opuesta, como lo muestran los desplazamientos verticales de valor positivo.
En el escenario 3110, la polaridad es “opuesta”. El campo actual es un campo superior y el campo de referencia es un campo inferior. Con relacion al campo actual, la posicion del campo de referencia esta desplazada por medio pixel en la direccion hacia abajo debido al entrelazado. Un valor de componente de vector de movimiento vertical de 0 es el desplazamiento de “ningun movimiento vertical” y representa una posicion en el campo de referencia en el mismo nivel vertical (en terminos absolutos) que la localizacion en el campo de referencia, un valor de componente de vector de movimiento vertical de +2 representa una posicion en el campo de referencia que esta desplazada medio pixel (en terminos absolutos) por debajo de la localizacion en el campo actual, que es un valor real en el campo de referencia, y un valor de componente vertical de +4 representa un desplazamiento de posicion de un pixel completo (en terminos absolutos) por debajo de la localizacion en el campo actual, que es un valor interpolado en el campo de referencia.
En el escenario 3120, la polaridad es tambien “opuesta.” El campo actual es un campo inferior y el campo de referencia es un campo superior. Con relacion al campo actual, la posicion del campo de referencia esta desplazada por medio pixel en la direccion hacia arriba debido al entrelazado. Un componente de vector de movimiento vertical de -2 representa una posicion en el campo de referencia que esta medio pixel (en terminos absolutos) por encima de la localizacion en el campo actual, un valor de componente vertical de 0 representa una posicion al mismo nivel (en terminos absolutos) que la localizacion en el campo actual, y un componente vertical de +2 representa un desplazamiento de posicion de medio pixel por debajo (en terminos absolutos) de la localizacion en el campo actual.
En el escenario 3130, la polaridad es la “misma”. Con relacion al campo actual, la posicion del campo de referencia es la misma en la direccion vertical. Un valor de componente de vector de movimiento vertical de 0 es el desplazamiento de “ningun movimiento vertical” y representa una posicion en el campo de referencia en el mismo nivel vertical (en terminos absolutos) que la localizacion en el campo de referencia, un valor de componente de vector de movimiento vertical de +2 representa una posicion en el campo de referencia que esta desplazada por medio pixel (en terminos absolutos) por debajo de la localizacion en el campo actual, que es un valor interpolado en el campo de referencia, y un valor de componente vertical de +4 representa un desplazamiento de posicion en un pixel completo (en terminos absolutos) por debajo de la localizacion en el campo actual, que es un valor real en el campo de referencia.
Como alternativa, los desplazamientos para vectores de movimiento se expresan de acuerdo con una convencion diferente.
2. Prediccion de vector de movimiento en campos P entrelazados de campo de dos referencias
Los campos P entrelazados de campo de dos referencias hacen referencia a dos campos en la misma direccion temporal (por ejemplo, los dos campos de referencia anteriores mas recientes). Se calculan dos predictores de vector de movimiento para cada macrobloque. En algunas implementaciones, un predictor proviene de un campo de referencia de la misma polaridad, y el otro proviene de un campo de referencia de polaridad opuesta. Son posibles tambien otras combinaciones de polaridades. (Se describen a continuacion campos B entrelazados que usan
5
10
15
20
25
30
35
40
45
50
55
60
campos de dos referencias por direccion. En algunas implementaciones, tales campos B entrelazados usan las mismas tecnicas que los campos P entrelazados para calcular predictores de vector de movimiento).
En algunas realizaciones, un codificador/decodificador calcula un predictor de vector de movimiento para un bloque o macrobloque actual hallando un predictor de campo impar y un predictor de campo par, y seleccionando uno de los predictores para procesar el macrobloque. Por ejemplo, un codificador/decodificador determina un predictor de vector de movimiento de campo impar y predictor de vector de movimiento de campo par. Uno de los predictores de vector de movimiento por lo tanto tiene la misma polaridad que el campo actual, y el otro predictor de vector de movimiento tiene la polaridad opuesta. El codificador/decodificador selecciona un predictor de vector de movimiento de entre el predictor de vector de movimiento de campo impar y el predictor de vector de movimiento de campo par. Por ejemplo, el codificador selecciona entre los predictores de vector de movimiento basandose en el que proporciona mejor prediccion. El codificador senaliza que predictor de vector de movimiento usar usando una senal de seleccion sencilla o usando senalizacion mas compleja que incorpora informacion contextual para mejorar la eficacia de codificacion. La informacion contextual puede indicar cual del campo impar o el campo par, o cual del campo de la misma polaridad o campo de polaridad opuesta, se ha usado predominantemente en las cercamas alrededor del bloque o macrobloque. El decodificador selecciona que predictor de vector de movimiento usar basandose en la senal de seleccion y/o la informacion contextual. A continuacion, el codificador/decodificador procesa el vector de movimiento usando el predictor de vector de movimiento seleccionado. Por ejemplo, el codificador codifica un diferencial entre el vector de movimiento y el predictor de vector de movimiento. O, el decodificador decodifica el vector de movimiento combinando el vector de movimiento diferencial y el predictor de vector de movimiento.
Como alternativa, el codificador y/o el decodificador puede saltar la determinacion del predictor de vector de movimiento de campo impar o determinar el predictor de vector de movimiento de campo par. Por ejemplo, si el codificador determina que el campo impar se usara para compensacion de movimiento para un bloque o macrobloque particular, el codificador determina unicamente el predictor de vector de movimiento de campo impar. O, si el decodificador determina a partir de informacion contextual y/o senalizada que se usara el campo impar para compensacion de movimiento, el decodificador determina unicamente el predictor de vector de movimiento de campo impar. De esta manera, el codificador y el decodificador pueden evitar operaciones innecesarias.
Un decodificador puede emplear la siguiente tecnica para determinar predictores de vector de movimiento para un campo P entrelazado actual:
Para cada bloque o macrobloque con un vector de movimiento en un campo P entrelazado, se obtienen dos conjuntos de tres predictores de vector de movimiento candidatos. Las posiciones de los macrobloques vecinos a partir de los cuales se obtienen estos predictores de vector de movimiento candidato con relacion a un macrobloque 3200 actual se muestran en la Figura 32. Tres de los candidatos provienen del campo de referencia par y tres provienen del campo de referencia impar. Puesto que los macrobloques vecinos en cada direccion candidata (A, B o C) estaran intra-codificados o tendran un vector de movimiento real que hace referencia a cualquiera del campo par o el campo impar, existe una necesidad de derivar el vector de movimiento del otro campo (o derivar ambos candidatos de vector de movimiento de tanto el campo impar como el campo para un macrobloque intra-codificado). Por ejemplo, para un macrobloque dado, supongase que el predictor A tiene un vector de movimiento que hace referencia al campo impar. En este caso, el candidato de predictor A de “campo par” se deriva desde el vector de movimiento del candidato de predictor A de “campo impar”. Esta derivacion se consigue usando una operacion de cambio de escala. (Vease, por ejemplo, la explicacion de las Figuras 34A y 34B a continuacion). Como alternativa, la derivacion se consigue de otra manera.
Una vez que se han obtenido los tres predictores de vector de movimiento candidatos de campo impar, se usa una operacion de mediana para derivar un predictor de vector de movimiento de campo impar desde los tres candidatos de campo impar. De manera similar, una vez que se han obtenido los tres predictores de vector de movimiento candidatos de campo par, se usa una operacion de mediana para derivar un predictor de vector de movimiento de campo par a partir de los tres candidatos de campo par. Como alternativa, se usa otro mecanismo para seleccionar el predictor de vector de movimiento de campo basandose en los predictores de vector de movimiento de campo
candidatos. El decodificador decide si usar el campo par o el campo impar como el predictor de vector de
movimiento candidato (por ejemplo, seleccionando el predictor dominante), y se usa el predictor de vector de movimiento impar o par para reconstruir el vector de movimiento.
El pseudocodigo 3300 en las Figuras 33A-33F ilustra un procedimiento usado para generar predictores de vector de movimiento desde los predictores A, B y C como estan dispuestos en la Figura 32. Mientras que la Figura 32 muestra unas cercamas para un macrobloque tfpico en el medio del campo P entrelazado actual, el pseudocodigo 3300 de las Figuras 33A-33F trata diversos casos especiales para las localizaciones de macrobloque. Ademas, el pseudocodigo 3300 puede usarse para calcular un predictor de vector de movimiento para el vector de movimiento de un bloque en diversas localizaciones.
En el pseudocodigo 3300, los terminos “mismo campo” y “campo opuesto” se han de entender con relacion al campo que se esta codificando o decodificando actualmente. Si el campo actual es un campo par, por ejemplo, el “mismo
campo” es el campo de referencia y el “campo opuesto” es el campo de referencia impar. Las variables
5
10
15
20
25
30
35
40
45
50
55
samefieldpred_x y samefieldpred_y en el pseudocodigo 3300 representan los componentes horizontales y verticales del predictor de vector de movimiento desde el mismo campo, y las variables oppositefieldpred_x y oppositefieldpred_y representan los componentes horizontales y verticales del predictor de vector de movimiento desde el campo opuesto. Las variables samecount y oppositecount rastrean cuantos de los vectores de movimiento para los vecinos del bloque o macrobloque actual hacen referencia al campo de referencia de la “misma” polaridad para el campo actual y cuantos hacen referencia al campo de referencia de polaridad “opuesta”, respectivamente. Las variables samecount y oppositecount se inicializan a 0 en el comienzo del pseudocodigo.
Las operaciones de cambio de escala scaleforsame() y scaleforopposite() mencionadas en el pseudocodigo 3300 se usan para derivar candidatos de predictor de vector de movimiento para el “otro” campo desde los valores de vector de movimiento reales de los vecinos. Las operaciones de cambio de escala son dependientes de la implementacion. Se describen a continuacion operaciones de cambio de escala con referencia a las Figuras 34A, 34B, 35 y 36. Como alternativa, se usan otras operaciones de cambio de escala, por ejemplo, para compensar desplazamientos verticales tales como aquellos mostrados en la Figura 31. (Se describen en detalle a continuacion operaciones de cambio de escala espedficamente usadas para campos B entrelazados).
Las Figuras 33A y 33B muestran pseudocodigo para calcular un predictor de vector de movimiento para un bloque o macrobloque tfpico en una posicion interior dentro de un fotograma. Los vectores de movimiento para “intra” vecinos se establecen a 0. Para cada vecino, se establecen el predictor de vector de movimiento de mismo campo y el predictor de vector de movimiento de campo opuesto, donde uno se establece desde el valor real del vector de movimiento para el vecino y el otro se deriva a desde el mismo. La mediana de los candidatos se calcula para el predictor de vector de movimiento de mismo campo y para el predictor de vector de movimiento de campo opuesto, y el predictor “dominante” se determina desde samecount y oppositecount. La variable dominantpredictor indica que campo contiene el predictor de vector de movimiento dominante. Un predictor de vector de movimiento es dominante si tiene la misma polaridad que la mayona de los tres predictores candidatos. (El valor senalizado predictor_flag, que se decodifica junto con los datos de vector de movimiento diferencial, indican si se usa el predictor dominante o no dominante).
El pseudocodigo en la Figura 33C trata la situacion de un macrobloque en un campo P entrelazado con unicamente un macrobloque por fila, para el que no hay vecinos B o C. El pseudocodigo en las Figuras 33D y 33E trata la situacion de un bloque o macrobloque en el borde izquierdo de un campo P entrelazado, para el que no hay vecino
C. En este punto, un predictor de vector de movimiento es dominante si tiene la misma polaridad que mas de los dos predictores candidatos, siendo el predictor de vector de movimiento de campo opuesto dominante en el caso de un empate. Finalmente, el pseudocodigo en la Figura 33F trata, por ejemplo, los casos de macrobloque en la fila superior de un campo P entrelazado.
3. Cambio de escala para derivacion de predictor de vector de movimiento de un campo desde otro predictor de vector de movimiento de campo
En una implementacion, un codificador/decodificador deriva un predictor de vector de movimiento de campo desde otro predictor de vector de movimiento de campo usando la operacion de cambio de escala ilustrada en el pseudocodigo 3400 de las Figuras 34A y 34B. Los valores de SCALEOPP, SCALESAME1, SCALESAME2, SCALEZONE1_X, SCALEZONE1_Y, ZONE1OFFSET_X y ZONE1OFFSET_Y son dependientes de la implementacion. Se muestran dos posibles conjuntos de valores en la tabla 3500 en la Figura 35 para el caso donde el campo actual es el primer campo en el fotograma de video entrelazado, y en la tabla 3600 en la Figura 36 para el caso donde el campo actual es el segundo campo en el fotograma de video entrelazado. Para fotogramas P, la distancia de fotograma de referencia se define como el numero de fotogramas B (es decir, un fotograma de video que contiene dos campos B) entre el fotograma P actual y su fotograma de referencia. Si no estan presentes fotogramas B, la distancia de referencia es 0. Por ejemplo, un codificador usa un elemento de sintaxis con tamano variable (por ejemplo, el elemento de sintaxis REFDIST, que se describe en detalle en la seccion XIV a continuacion) para codificar la distancia de fotograma de referencia.
En los ejemplos mostrados en la tablas 3500 y 3600, el valor de N (un multiplicador para los valores SCALEZONE1_X, SCALEZONE1_Y, ZONE1OFFSET_X y ZONE1OFFSET_Y en las tablas) depende de un intervalo de vector de movimiento. Por ejemplo, un intervalo de vector de movimiento extendido puede senalizarse mediante el elemento de sintaxis EXTENDeD_MV = 1. Si EXTENDED_MV = 1, el elemento de sintaxis MVRANGE esta presente en el encabezamiento de la imagen y senaliza el intervalo del vector de movimiento. Si EXTENDED_MV = 0 entonces se usa un intervalo de vector de movimiento por defecto. La Tabla 1 a continuacion muestra la relacion entre N y MVRANGE.
Tabla 1: Derivacion de N en Figuras 35 y 36
- MVRANGE
- N
- 0 o por defecto
- 1
- 10
- 2
- 110
- 8
5
10
15
20
25
30
35
40
45
50
55
(continuacion)
- MVRANGE
- N
- 111
- 16
Los valores mostrados en la tablas 3500 y 3600 pueden modificarse dependiendo de la implementacion.
Como alternativa, N se supone que es 1 (es decir, el cambio de escala no depende de N), o el cambio de escala puede realizarse de alguna otra manera.
B. Fotogramas P entrelazados
En algunas implementaciones, los macrobloques en fotogramas P entrelazados pueden ser uno de cinco tipos: 1MV, MV de 2 campos, MV de 4 fotogramas, MV de 4 campos e intra.
En un macrobloque de 1 MV, el desplazamiento de los cuatro bloques de luminancia en el macrobloque se representa mediante un unico vector de movimiento. Un correspondiente vector de movimiento de crominancia puede derivarse desde el vector de movimiento de luminancia para representar los desplazamientos de cada uno de los dos bloques de crominancia de 8x8 para el vector de movimiento. Por ejemplo, haciendo referencia de nuevo a la disposicion de macrobloque mostrada en la Figura 23, un macrobloque 2300 de 1 MV incluye cuatro bloques de luminancia de 8x8 y dos bloques de crominancia de 8x8. El desplazamiento de los bloques de luminancia (Y1 a Y4) se representa mediante un unico vector de movimiento, y puede derivarse un correspondiente vector de movimiento de crominancia desde el vector de movimiento de luminancia para representar los desplazamientos de cada uno de los dos bloques de crominancia (U y V).
En un macrobloque de MV de 2 campos, el desplazamiento de cada campo para los cuatro bloques de luminancia en el macrobloque se describe mediante un vector de movimiento diferente. Por ejemplo, la Figura 37 muestra que un vector de movimiento de campo superior describe el desplazamiento de las lmeas pares de todos los cuatro bloques de luminancia y que un vector de movimiento de campo inferior describe el desplazamiento de las lmeas impares de todos los cuatro bloques de luminancia. Usando el vector de movimiento de campo superior, un codificador puede derivar un correspondiente vector de movimiento de crominancia de campo superior que describe el desplazamiento de las lmeas pares de los bloques de crominancia. De manera similar, un codificador puede derivar un vector de movimiento de crominancia de campo inferior que describe los desplazamientos de las lmeas impares de los bloques de crominancia.
Haciendo referencia a la Figura 38, en un macrobloque de MV de 4 fotogramas, el desplazamiento de cada uno de los cuatro bloques de luminancia se describe mediante un vector de movimiento diferente (MV1, MV2, MV3 y MV4). Cada bloque de crominancia puede compensarse en movimiento usando cuatro vectores de movimiento de crominancia derivados (MV1', MV2', MV3' y MV4') que describen el desplazamiento de cuatro sub-bloques de crominancia de 4x4. Un vector de movimiento para cada sub-bloque de crominancia de 4x4 puede derivarse desde el vector de movimiento para el bloque de luminancia espacialmente correspondiente.
Haciendo referencia a la Figura 39, en un macrobloque de MV de 4 campos, el desplazamiento de cada campo en los bloques de luminancia se describe mediante dos vectores de movimiento diferentes. Las lmeas pares de los bloques de luminancia se subdividen verticalmente para formar dos regiones de 8x8. Para las lmeas pares, el desplazamiento de la region izquierda se describe mediante el vector de movimiento de bloque de campo superior izquierdo y el desplazamiento de la region derecha se describe mediante el vector de movimiento de bloque de campo superior derecho. Las lmeas impares en los bloques de luminancia se subdividen tambien verticalmente para formar dos regiones de 8x8. El desplazamiento de la region izquierda se describe mediante el vector de movimiento de bloque de campo inferior izquierdo y el desplazamiento de la region derecha se describe mediante el vector de movimiento de bloque de campo inferior derecho. Cada bloque de crominancia puede particionarse tambien en cuatro regiones de la misma manera que los bloques de luminancia, y cada region de bloque de crominancia puede compensarse en movimiento usando un vector de movimiento derivado.
Para macrobloques intra, el movimiento se supone que es cero.
En general, el procedimiento de calcular el predictor o predictores de vector de movimiento para un macrobloque actual en un fotograma P entrelazado consiste en dos etapas. En primer lugar, se recopilan tres vectores de movimiento candidatos para el macrobloque actual desde sus macrobloques vecinos. Por ejemplo, en una implementacion, se recopilan vectores de movimiento candidatos basandose en la disposicion mostrada en las Figuras 40A-40B (y diversos casos especiales para macrobloques de fila superior, etc.). Como alternativa, pueden recopilarse vectores de movimiento candidatos en algun otro orden o disposicion. En segundo lugar, el predictor o predictores de vector de movimiento para el macrobloque actual se calcula a partir del conjunto de vectores de movimiento candidatos. Por ejemplo, el predictor puede calcularse usando prediccion de mediana de 3 o mediante algun otro procedimiento.
Para detalles adicionales sobre calculo de predictores y derivacion de vectores de movimiento de crominancia para macrobloques de fotogramas P entrelazados, vease la Solicitud de Patente Provisional de Estados Unidos N.°
5
10
15
20
25
30
35
40
45
50
55
60/501.081, titulada “Video Encoding and Decoding Tools and Techniques”, presentada el 7 de septiembre de 2003, y la seccion XIV, a continuacion.
IV. Prediccion bidireccional de fotogramas de video progresivos
Como se ha explicado anteriormente, los macrobloques en fotogramas B progresivos pueden predecirse usando cinco modos de prediccion diferentes: hacia delante, hacia atras, directo, interpolado e intra. Un codificador selecciona y senaliza los diferentes modos de prediccion en el flujo de bits a nivel de macrobloque o algun otro nivel. En modo directo, un macrobloque en un fotograma B progresivo actual se deriva desde un ancla temporalmente anterior. En modo hacia atras, un macrobloque en el fotograma B progresivo actual se deriva desde un ancla temporalmente posterior. Los macrobloques previstos en modos directo o interpolado usan anclas tanto hacia delante como hacia atras para prediccion. Puesto que hay dos fotogramas de referencia en modos directo e interpolado, hay tfpicamente al menos dos vectores de movimiento (codificados explfcitamente o derivados) para cada macrobloque. (Diversos aspectos de la codificacion, senalizacion y decodificacion usadas para fotogramas B progresivos pueden usarse tambien para fotogramas B entrelazados, como se describe a continuacion).
En algunas implementaciones, el codificador deriva implfcitamente vectores de movimiento en modo directo cambiando de escala un vector de movimiento co-localizado para el ancla hacia delante usando un valor de fraccion. La fraccion puede reflejar la posicion temporal relativa de un fotograma B progresivo actual dentro del intervalo formado por sus anclas, pero no refleja necesariamente verdaderas distancias inter-fotograma. Por lo tanto, el codificador no supone necesariamente velocidad constante. Esto permite al codificador un grado adicional de libertad para describir de manera precisa y economica el movimiento verdadero entre las anclas y el fotograma B progresivo actual cambiando la fraccion desde la posicion temporal “real” para mejorar la prediccion de movimiento compensado. La variable BFRACTION representa diferentes fracciones que pueden enviarse en un flujo de bits (por ejemplo, a nivel de imagen o algun otro nivel) para indicar su posicion temporal relativa. Las diferentes fracciones son de un conjunto limitado de valores discretos entre 0 y 1.
Haciendo referencia de nuevo a la Figura 17, la tabla 1700 es una tabla de codigos de longitud variable (VLC) para el elemento de flujo de bits BFRACTION. No hay restriccion en la singularidad de BFRACTION entre fotogramas B progresivos entre las mismas dos anclas; diferentes fotogramas B progresivos con anclas identicas pueden tener el mismo valor BFRACTION. Los codigos en la tabla 1700 pueden modificarse o reorganizarse para representar diferentes fracciones con diferentes codigos. Otros posibles codigos no mostrados en la tabla 1700 (por ejemplo, 1111110 o 1111111) pueden considerarse codigos invalidos, o pueden usarse para otros fines. Por ejemplo, la entrada 1111110 puede usarse para codificar explfcitamente BFRACTION en un formato de punto fijo. Como otro ejemplo, la entrada 1111111 puede usarse para senalizar un tipo de fotograma espedfico (por ejemplo, un fotograma B progresivo intra-codificado).
Haciendo referencia de nuevo a la Figura 18, el decodificador halla un factor de cambio de escala de acuerdo con el pseudocodigo 1800. Haciendo referencia de nuevo a la Figura 19, el decodificador usa el factor de cambio de escala para cambiar de escala los elementos x e y del vector de movimiento para el macrobloque co-localizado en la imagen de referencia posterior. La funcion Scale_Direct_MV en el pseudocodigo 1900 toma las entradas MV_X y MV_Y y deriva dos vectores de movimiento en modo directo, haciendo referencia uno a la imagen ancla hacia delante (anterior), (MV_Xf, MV_Yf) y haciendo referencia el otro a la imagen de ancla (MV_Xb, MV_Yb) hacia atras (posterior).
Una senal de macrobloque “saltado” en un fotograma B progresivo indica que no esta presente error de prediccion de vector de movimiento para un macrobloque dado. Los vectores de movimiento previstos seran exactamente los que usa el codificador/decodificador al reconstruir el macrobloque (es decir, no se aplica error de prediccion de vector de movimiento). El codificador aun senaliza un modo de prediccion para el macrobloque puesto que el macrobloque puede saltarse usando prediccion directa, hacia delante, hacia atras o interpolada.
V. Vista general de innovaciones en codificacion/decodificacion predictiva de imagenes B entrelazadas
Las realizaciones descritas incluyen tecnicas y herramientas para codificar y decodificar imagenes B entrelazadas (por ejemplo, campos B entrelazados, fotogramas B entrelazados). Las realizaciones descritas implementan una o mas de las tecnicas y herramientas descritas para codificar y/o decodificar imagenes entrelazadas previstas bidireccionalmente incluyendo, pero sin limitacion, lo siguiente:
1. Para fotogramas B entrelazados, un codificador/decodificador conmuta modos de prediccion entre el campo superior e inferior en un macrobloque de un fotograma B entrelazado.
2. Para fotogramas B entrelazados, un codificador/decodificador calcula vectores de movimiento de modo directo para un macrobloque actual seleccionando un vector de movimiento representativo para cada uno de los campos superior e inferior del macrobloque co-localizado del ancla previamente decodificada temporalmente posterior. La seleccion puede realizarse basandose al menos en parte en el modo de codificacion de macrobloque del fotograma B entrelazado actual (por ejemplo, modo de 1 MV, modo de MV de 2 campos, etc.).
3. Para campos B entrelazados o fotogramas B entrelazados, un codificador/decodificador usa codificacion de 4MV. Por ejemplo, puede usarse 4MV en modos de prediccion de una direccion (modos hacia delante o hacia
5
10
15
20
25
30
35
40
45
50
55
atras), pero no en otros modos de prediccion disponibles (por ejemplo, directo, interpolado).
4. Para campos B entrelazados o fotogramas B entrelazados, se predicen vectores de movimiento hacia delante usando vectores de movimiento hacia delante previamente reconstruidos (o estimados) desde una memoria intermedia de vector de movimiento hacia delante, y se predicen vectores de movimiento hacia atras usando vectores de movimiento hacia atras previamente reconstruidos (o estimados) desde una memoria intermedia de vector de movimiento hacia atras. Los vectores de movimiento resultantes se anaden a la correspondiente memoria intermedia, y se rellenan huecos en las memorias intermedias de vector de movimiento con valores de vector de movimiento estimados.
a. Para fotogramas B entrelazados, cuando se usa prediccion hacia delante para predecir un vector de movimiento y el vector de movimiento se anade a la memoria intermedia hacia delante, la posicion correspondiente en la memoria intermedia hacia atras se rellena (“relleno de huecos”) con lo que sena el vector de movimiento previsto usando unicamente vectores de movimiento hacia atras como predictores. De manera similar, cuando se usa prediccion hacia atras para predecir un vector de movimiento y el vector de movimiento se anade a la memoria intermedia hacia atras, la posicion correspondiente en una memoria intermedia hacia delante se rellena con lo que sena el vector de movimiento previsto usando unicamente vectores de movimiento hacia delante como predictores.
b. Para campos B entrelazados, para elegir entre diferentes vectores de movimiento de polaridad (por ejemplo, “misma polaridad” o “polaridad opuesta”) para el relleno de huecos, un codificador/decodificador selecciona un vector de movimiento de campo de polaridad dominante. La distancia entre anclas y fotogramas actuales se calcula usando diversos elementos de sintaxis, y la distancia calculada se usa para cambiar de escala vectores de movimiento de campo de referencia.
5. Para campos B entrelazados, un codificador/decodificador usa fotogramas de “auto referencia”. Por ejemplo, un segundo campo B en un fotograma actual hace referencia al primer campo B desde el fotograma actual en prediccion de movimiento compensado.
6. Para campos B entrelazados, un codificador envfa informacion binaria (por ejemplo, a nivel de campo B en un plano de bits comprimido) que indica si un modo de prediccion es hacia delante o no hacia delante para uno o mas macrobloques en el campo B entrelazado. Un decodificador realiza la decodificacion correspondiente.
7. Para campos B entrelazados, un codificador/decodificador selecciona vectores de movimiento de modo directo usando logica que favorece la polaridad dominante si el macrobloque correspondiente en el campo correspondiente de la siguiente imagen de ancla se codifico usando cuatro vectores de movimiento.
8. Campos intra-codificados: cuando no es posible buena compensacion de movimiento para un campo B, puede codificarse como un campo B (“campo BI”) intra (es decir, no previsto).
Las tecnicas y herramientas descritas pueden usarse en combinacion unas con las otras o con otras tecnicas y herramientas, o pueden usarse de manera independiente.
VI. Conmutar modos de prediccion en macrobloques codificados por campo en fotogramas B entrelazados
En algunas implementaciones, un codificador realiza conmutacion de modo de prediccion en macrobloques en fotogramas B entrelazados. Por ejemplo, un codificador permite la conmutacion de modo de prediccion de hacia delante a hacia atras, o de hacia atras a hacia delante, al pasar desde el campo superior al campo inferior en un macrobloque en un fotograma B entrelazado. En lugar de codificar un macrobloque completo con un unico modo de direccion de prediccion, se usa una combinacion de modos de direccion de prediccion para codificar un unico macrobloque. La capacidad para cambiar los modos de direccion de prediccion entre campos individuales en un macrobloque conduce a codificacion mas eficaz de fotogramas B entrelazados en muchos escenarios.
La Figura 41 muestra una tecnica 4100 para predecir vectores de movimiento para campos individuales en un macrobloque codificado por campo en un fotograma B entrelazado usando diferentes modos de prediccion. En 4110, en un fotograma B entrelazado, un codificador/decodificador predice un vector de movimiento para un primer campo en el macrobloque codificado por campo usando un primer modo de prediccion. En algunas implementaciones, el “primer campo” puede ser cualquiera del campo superior o el campo inferior, la decision para lo cual se senaliza de manera separada. En 4120, el codificador/decodificador predice un vector de movimiento para un segundo campo en el mismo macrobloque usando un modo de prediccion diferente.
Por ejemplo, para un macrobloque codificado por campo usando dos vectores de movimiento, el campo superior puede predecirse hacia delante (es decir, el vector de movimiento de campo superior hace referencia a una imagen de ancla anterior), y el campo inferior puede predecirse hacia atras (es decir, el campo inferior hace referencia a una imagen de ancla posterior). En algunas implementaciones, los macrobloques codificados por campo en fotogramas B entrelazados no se codifican usando cuatro vectores de movimiento. Como alternativa, si el macrobloque se codifica por campo usando cuatro vectores de movimiento (por ejemplo, dos vectores de movimiento para cada campo), entonces los dos vectores de movimiento para el campo superior hanan referencia a un ancla (hacia delante o hacia atras), y los vectores de movimiento de campo inferior hanan referencia al otro ancla.
Esta conmutacion de modo de prediccion requiere unicamente un bit adicional en el caso donde el tipo de macrobloque no es directo o interpolado para comenzar con, como se ilustra adicionalmente en el siguiente
5
10
15
20
25
30
35
40
45
50
55
pseudocodigo para fotogramas B entrelazados:
Si MB esta codificado por campo Y MB Type es hacia delante o hacia atras entonces Si MVSwitch = 1 entonces el modo de prediccion conmuta (de hacia delante a hacia
atras o viceversa) entre campo superior e inferior
Limitar el modo de prediccion que commute a modos hacia delante y hacia atras por lo tanto evita la necesidad de mas bits para senalizar el segundo modo puesto que el segundo modo esta implicado desde el primer modo (previamente senalizado) y el valor de conmutacion.
Si hay movimiento elevado en el area cubierta por un macrobloque de un fotograma B entrelazado, el macrobloque es probable que este codificado en modo de campo. Bajo estas circunstancias, cualquiera de la prediccion hacia delante o hacia atras es mas probable que proporcione un resultado de compensacion de movimiento mas preciso que los modos directo o interpolado, que implica promedio de pfxeles. Debido a que promediar resultados al suavizar (por ejemplo, perdida de elementos de alta frecuencia que acompanan movimiento elevado), los modos directo e interpolado pueden no ser la mejor manera para codificar tales macrobloques. Resultados experimentales indican la ineficacia a traves de la tara aumentada de senalizacion de todos los cuatro modos de prediccion como opciones de conmutacion en el nivel de campo en macrobloques codificados por campo.
Como alternativa, un codificador puede conmutar entre mas de dos modos de prediccion en macrobloques codificados por campo de fotogramas B entrelazados, o puede conmutar entre diferentes modos de prediccion.
VII. Calcular vectores de movimiento de modo directo en fotogramas B entrelazados
En algunas implementaciones, un codificador/decodificador almacena en memoria intermedia vectores de movimiento desde un fotograma I o fotograma P de ancla previamente decodificado (que es el fotograma de referencia que esta hacia delante en el tiempo, usado como el fotograma de referencia de prediccion hacia atras) y selecciona uno o mas de los vectores de movimiento almacenados en memoria intermedia para uso al calcular vectores de movimiento de modo directo para un macrobloque actual en un fotograma B entrelazado. Por ejemplo, el codificador/decodificador almacena en memoria intermedia un vector de movimiento representativo para cada uno de los campos superior e inferior desde cada macrobloque del fotograma de ancla, y usa uno o mas de los vectores de movimiento almacenados en memoria intermedia para calcular vectores de movimiento para el macrobloque de modo directo actual. La seleccion se realiza basandose al menos en parte en el modo de codificacion del macrobloque actual (por ejemplo, modo de 1 MV, modo de MV de 2 campos, etc.).
La Figura 42 muestra una tecnica 4200 para calcular vectores de movimiento de modo directo para macrobloques en fotogramas B entrelazados en una implementacion. En 4210, un codificador/decodificador almacena en memoria intermedia diversos vectores de movimiento por macrobloque de un macrobloque co-localizado en un fotograma de ancla temporalmente futuro previamente reconstruido. Si el macrobloque co-localizado unicamente tiene un vector de movimiento, ese vector de movimiento se almacena en memoria intermedia como el valor de vector de movimiento para los diversos bloques del macrobloque co-localizado, si fuera necesario. En 4220, el codificador/decodificador selecciona uno o mas de los vectores de movimiento almacenados en memoria intermedia del macrobloque co-localizado para prediccion de modo directo del macrobloque actual en el fotograma B entrelazado, dependiendo en parte del numero de vectores de movimiento necesarios para el macrobloque actual.
En una implementacion, el decodificador almacena en memoria intermedia dos vectores de movimiento en el macrobloque co-localizado, o la mitad del numero maximo posible de vectores de movimiento de luminancia decodificados, desde el fotograma de ancla futuro. Los macrobloques en el fotograma de ancla pueden codificarse de diferentes maneras, hasta con cuatro vectores de movimiento por macrobloque, pero unicamente se almacenan en memoria intermedia hasta dos vectores de movimiento, como se describe a continuacion. Y, el numero de pares de vectores de movimiento hacia delante/hacia atras generados para el macrobloque actual depende del modo de codificacion del macrobloque actual, en lugar de solamente del modo de codificacion del macrobloque co-localizado en el fotograma de ancla futuro previamente decodificado.
Por ejemplo, si el macrobloque de modo directo actual esta codificado con 1 MV, un decodificador toma el vector de movimiento almacenado en memoria intermedia desde el campo superior del macrobloque co-localizado en el fotograma de ancla, y genera un par de vectores de movimiento directo - uno para cada una de las direcciones hacia delante y hacia atras. Si el macrobloque de modo directo actual esta codificado por campo, un decodificador toma tanto los vectores de movimiento de campo inferior como de campo superior almacenados en memoria intermedia desde el macrobloque co-localizado en el fotograma de ancla y genera dos pares de vectores de movimiento, proporcionando un total de cuatro vectores de movimiento para el macrobloque de modo directo actual, uno para cada campo en ambas direcciones hacia delante y hacia atras.
La Figura 43 muestra los vectores de movimiento MV1, MV2, MV3 y MV4 para los bloques de un macrobloque 4300 co-localizado de un fotograma de ancla temporalmente futuro previamente decodificado. Si el macrobloque co- localizado es un macrobloque de 1 MV, MV1, MV2, MV3 y MV4 son todos iguales. Si el macrobloque co-localizado es un macrobloque de MV de 2 campos, MV1 y MV2 son todos iguales a un valor y MV3 y MV4 son iguales a otro. Si el macrobloque co-localizado del fotograma de ancla es un macrobloque de MV de 4 campos o MV de 4
5
10
15
20
25
30
35
40
45
50
55
fotogramas, MV1, MV2, MV3 y MV4 pueden todos ser diferentes valores. Incluso si MV1, MV2, MV3 y MV4 estan todos disponibles, no obstante, el decodificador almacena en memoria intermedia unicamente MV1 y MV3.
En el ejemplo mostrado en la Figura 43, el decodificador almacena en memoria intermedia MV1 y MV3. Si el macrobloque actual usa el modo 1 MV, el decodificador elige MV1 para calcular los vectores de movimiento de modo directo hacia delante y hacia atras para el macrobloque actual, e ignora MV3. Si el macrobloque actual usa modo de MV de 2 campos, el decodificador usa tanto MV1 como MV3 para calcular los cuatro vectores de movimiento de modo directo. Esta operacion produce una buena representacion del movimiento para los campos superior e inferior del macrobloque actual.
Cuando se han seleccionado los vectores de movimiento desde el macrobloque co-localizado en el fotograma de ancla, el decodificador aplica logica de cambio de escala para derivar los correspondientes vectores de movimiento que apuntan hacia delante y hacia atras para la prediccion de modo directo del macrobloque de fotograma B. Por ejemplo, el decodificador puede aplicar la funcion Scale_Direct_MV en la Figura 19. O, el decodificador aplica una funcion de cambio de escala diferente.
Como alternativa, un codificador/decodificador puede almacenar en memoria intermedia cuatro vectores de movimiento por macrobloque de un fotograma de ancla. Por ejemplo, si el macrobloque actual esta codificado con 1 MV, el codificador/decodificador puede tomar el vector de movimiento superior izquierdo del macrobloque co- localizado en el fotograma de ancla y generar un par de vectores de movimiento directo, o tomar el promedio de los cuatro vectores de movimiento para el macrobloque del fotograma de ancla. Si el macrobloque actual esta codificado por campo, el codificador/decodificador puede tomar los vectores de movimiento superior izquierdo e inferior izquierdo y generar dos pares (uno para cada campo), o tomar el promedio de los vectores de movimiento superiores y el promedio de los vectores de movimiento inferiores para el macrobloque del fotograma de ancla.
Los vectores de movimiento de modo directo se tratan como (0, 0) cuando el macrobloque co-localizado en el fotograma de ancla es intra, o cuando el fotograma de ancla es un fotograma 1.
VIII. Codificacion de 4MV en campos B entrelazados y fotogramas B entrelazados
En algunas implementaciones, un codificador codifica campos B entrelazados y fotogramas B entrelazados usando un modo de codificacion de cuatro vectores de movimiento (4MV). La codificacion de 4MV puede permitir representacion mas precisa de trayectorias de movimiento complejo que la codificacion de un vector de movimiento (1 MV) (por ejemplo, permitiendo que se predigan los cuatro bloques de luminancia en un macrobloque y se compensen en movimiento de manera independiente). El uso de 4MV puede limitarse a ciertos modos de prediccion. Por ejemplo, en algunas implementaciones, un codificador usa 4MV para los modos hacia delante y hacia atras (ambas variedades de campo y fotograma) pero no los modos directo o interpolado. Esto se diferencia de los modos de codificacion progresiva donde no se usa 4MV en fotogramas B progresivos.
Los modos directo e interpolado implican promedio de pfxeles cuando se calcula una prediccion de movimiento compensado, que tiende a suavizar sobre detalles precisos. Si tal suavizado es aceptable, es probable que el modo de 1 MV pueda usarse de manera eficaz en lugar del modo 4MV, puesto que 1 MV es mas economico de codificar y puede usarse para describir de manera precisa trayectorias de movimiento suave. La experimentacion ha mostrado un beneficio para usar el modo de 4MV para macrobloques de campos B entrelazados y fotogramas B entrelazados, pero restringiendo el modo 4MV a macrobloques previstos hacia delante y hacia atras. Otro factor en favorecer la restriccion de 4MV a modos hacia delante y hacia atras es que combinar 4MV con modos directo o interpolado dana como resultado un total de ocho vectores de movimiento en cada caso. La tara de senalizacion (para el modo interpolado) y la implementacion y la complejidad de decodificacion asociada con ocho vectores de movimiento generalmente desplaza los beneficios de precision. Ademas, a menudo no es practica para codificar imagenes B entrelazadas con ocho vectores de movimiento cuando las imagenes P, que normalmente se codifican a unos ajustes de calidad superiores (es decir, cuantificadas menos severamente), pueden usar normalmente unicamente uno o cuatro vectores de movimiento para compensacion de movimiento.
Restringir 4MV a ciertos modos de prediccion tiene otros beneficios tambien. Por ejemplo, si se restringe 4MV a unicamente modos de prediccion hacia delante y hacia atras, y si ya se ha senalizado una decision de modo hacia delante/no hacia delante (por ejemplo, en una tecnica de codificacion de plano de bits tal como la descrita a continuacion en la seccion XI), un codificador no necesita enviar ningun bit adicional para senalizar el modo de prediccion para un macrobloque de 4MV.
El siguiente pseudocodigo es aplicable a macrobloques de campos B entrelazados donde las decisiones hacia delante/no hacia delante estan codificadas en plano de bits y se envfan antes de cualquier informacion de nivel de macrobloque (por ejemplo, enviadas a nivel de imagen):
Si MB esta codificado con 4MV Y el modo de prediccion NO es hacia delante
Entonces el modo de prediccion = hacia atras (no enviar ningun bit mas para
senalizar el modo)
En algunas implementaciones, las decisiones de modo de prediccion directo/no directo se envfan antes de cualquier
5
10
15
20
25
30
35
40
45
50
55
informacion de nivel de macrobloque (por ejemplo, en un plano de bits comprimido a nivel de imagen). (Para mas informacion sobre informacion de codificacion directa/no directa, vease la Solicitud de Patente de Estados Unidos con N.° de Serie 10/622.378, titulada, “Advanced Bi-Directional Predictive Coding of Video Frames”, presentada el 18 de julio de 2003.) El siguiente pseudocodigo es aplicable a macrobloques de fotogramas B entrelazados donde 4MV esta restringido a modos hacia delante y hacia atras en tales implementaciones:
Si MB esta codificado con 4MV Y modo de prediccion NO es directo
Entonces enviar un bit adicional para senalizar el modo de prediccion (hacia
delante o hacia atras)
Como alternativa, se usa 4MV para modos de prediccion distintos de o ademas de los modos hacia delante o hacia atras, no se usa para el modo hacia delante, no se usa para el modo hacia atras, o no se usa para ningun modo de prediccion. Por ejemplo, en algunas implementaciones, se usa 4MV para campos B entrelazados pero no para fotogramas B entrelazados. En otras alternativas, pueden usarse otros codigos o longitudes de codigo para senalizar modos de prediccion en combinacion con codificacion de 4MV.
IX. Predecir vectores de movimiento en imagenes B entrelazadas usando memorias intermedias separadas de vector de movimiento hacia delante y hacia atras
Los vectores de movimiento para imagenes B entrelazadas se predicen usando contextos de vector de movimiento hacia delante y hacia atras separados. En general, los vectores de movimiento hacia delante se predicen usando vectores de movimiento almacenados en una memoria intermedia de vector de movimiento hacia delante, y los vectores de movimiento hacia atras se predicen usando vectores de movimiento almacenados en una memoria intermedia de vector de movimiento hacia atras. Los vectores de movimiento resultantes para los macrobloques actuales se almacenan a continuacion en la memoria intermedia apropiada, y pueden usarse en prediccion de vector de movimiento posterior para otros macrobloques. Tfpicamente, los espacios correspondientes en ambas memorias intermedias de vector de movimiento hacia delante y hacia atras se rellenan para cada macrobloque, incluso si un macrobloque dado se predice unicamente con vectores de movimiento hacia delante (en el caso de un macrobloque previsto hacia delante) o unicamente vectores de movimiento hacia atras (en el caso de macrobloque previsto hacia atras). Las siguientes secciones describen tecnicas para predecir vectores de movimiento en imagenes B entrelazadas (por ejemplo, campos B entrelazados, fotogramas B entrelazados) y para “rellenar” espacios correspondientes memorias intermedias de vector de movimiento para vectores de movimiento hacia delante o hacia atras “faltantes”.
A. Memorias intermedias hacia delante y hacia atras
Cuando se predicen vectores de movimiento para imagenes B entrelazadas, un codificador/decodificador usa vectores de movimiento previamente reconstruidos en una memoria intermedia de vector de movimiento hacia delante y/o memoria intermedia de vector de movimiento hacia atras. En modo hacia delante, el codificador/decodificador usa vectores de movimiento reconstruidos hacia delante desde la memoria intermedia de vector de movimiento hacia delante para predecir vectores de movimiento actuales para compensacion de movimiento hacia delante. En modo hacia atras, el codificador/decodificador usa vectores de movimiento hacia atras reconstruidos desde la memoria intermedia de vector de movimiento hacia atras para predecir vectores de movimiento actuales para compensacion de movimiento hacia atras. Para macrobloques de modo hacia delante o modo interpolado, el codificador/decodificador usan ambos la memoria intermedia de vector de movimiento hacia delante para predecir un componente de vector de movimiento hacia delante (o potencialmente multiples componentes de movimiento hacia delante) y predecir la memoria intermedia de vector de movimiento hacia atras para predecir un componente hacia atras (o potencialmente multiples componentes de movimiento hacia atras).
Despues de reconstruir vectores de movimiento para imagenes B entrelazadas, un codificador/decodificador almacena en memoria intermedia los vectores de movimiento hacia delante reconstruidos en una memoria intermedia de vector de movimiento hacia delante y almacena en memoria intermedia los vectores de movimiento hacia atras reconstruidos en una memoria intermedia de vector de movimiento hacia atras. En modo hacia delante, el codificador/decodificador almacena vectores de movimiento reconstruidos hacia delante en la memoria intermedia de vector de movimiento hacia delante. En modo hacia atras, el codificador/decodificador almacena vectores de movimiento hacia atras reconstruidos en la memoria intermedia de vector de movimiento hacia atras. Para macrobloques que usan ambos modos de prediccion directo o interpolado, el codificador/decodificador almacena tanto el componente o componentes de vector de movimiento hacia delante en la memoria intermedia de vector de movimiento hacia delante como el componente o componentes de vector de movimiento hacia atras en la memoria intermedia de vector de movimiento hacia atras.
Por ejemplo, si un codificador esta codificando un macrobloque previsto hacia delante en la posicion de coordenada de macrobloque (12, 13) en una imagen B entrelazada, el codificador calcula un predictor de vector de movimiento hacia delante y envfa un residuo (suponiendo que el macrobloque no se “salta”) para el vector de movimiento hacia delante en el flujo de bits. El decodificador decodifica el residuo (es decir, el diferencial), y reconstruye el vector de movimiento. El codificador/decodificador inserta el vector de movimiento reconstruido en la memoria intermedia de vector de movimiento hacia delante. El codificador/decodificador a continuacion usa logica de prediccion de vector
5
10
15
20
25
30
35
40
45
50
55
60
de movimiento para calcular un predictor de vector de movimiento hacia atras para rellenarse en un vector de movimiento hacia atras, y pone el vector de movimiento hacia atras en la memoria intermedia de vector de movimiento hacia atras en la posicion (12, 13). Por ejemplo, en un escenario de prediccion de mediana de 3, el codificador/decodificador puede tomar la mediana de los vectores de movimiento hacia atras almacenados en memoria intermedia en las posiciones (11, 13), (12, 12) y (13, 12) (los vecinos izquierdo, superior y superior derecho del macrobloque previsto hacia delante actual) para rellenar el vector de movimiento hacia atras para (12, 13).
La Figura 44 muestra una tecnica 4400 para predecir vectores de movimiento para un macrobloque actual en una imagen B entrelazada usando una memoria intermedia de vector de movimiento hacia delante y/o hacia atras. En 4410, dependiendo de si el vector de movimiento a predecir es un vector de movimiento hacia delante o hacia atras, el codificador/decodificador elige si usar la memoria intermedia de vector de movimiento hacia delante o hacia atras. Si el vector de movimiento actual es un vector de movimiento hacia delante, el codificador/decodificador selecciona un conjunto de candidatos de predictor de vector de movimiento desde la memoria intermedia de vector de movimiento hacia delante en 4420. Si el vector de movimiento actual es un vector de movimiento hacia atras, el codificador/decodificador selecciona un conjunto de candidatos de predictor de vector de movimiento desde la memoria intermedia de vector de movimiento hacia atras en 4430. En 4440, el codificador/decodificador calcula un predictor de vector de movimiento basandose en el conjunto del conjunto de candidatos de predictor de vector de movimiento. Por ejemplo, el codificador/decodificador calcula la mediana del conjunto de candidatos de predictor de vector de movimiento. En un caso sencillo, el codificador/decodificador calcula un predictor de vector de movimiento para un macrobloque actual de 1 MV basandose en predictores donde todos eran macrobloques de 1 MV. Se describen variaciones mas complejas a continuacion en las que el macrobloque actual y/o macrobloques vecinos tienen diferentes modos.
La Figura 45 muestra vectores de movimiento en una memoria intermedia 4510 de vector de movimiento hacia delante y una memoria intermedia 4520 de vector de movimiento hacia atras. En el ejemplo mostrado en la Figura 45, para los macrobloques 4530-4570 reconstruidos, un codificador/decodificador almacena vectores de movimiento hacia delante en la memoria intermedia 4510 de vector de movimiento hacia delante y vectores de movimiento hacia atras en la memoria intermedia 4520 de vector de movimiento hacia atras. Para predecir el vector de movimiento para el macrobloque 4580 actual, el codificador/decodificador usa predictores candidatos desde macrobloques vecinos. Por ejemplo, si el macrobloque 4580 actual se predice en modo hacia delante, el codificador puede predecir el vector de movimiento hacia delante usando vectores de movimiento hacia delante vecinos en la memoria intermedia de vector de movimiento hacia delante (por ejemplo, usando prediccion de mediana de 3), a continuacion mas tarde rellenar la posicion del macrobloque actual en la memoria intermedia de vector de movimiento hacia delante con el valor de vector de movimiento reconstruido. Para rellenar la posicion de macrobloque actual correspondiente en la memoria intermedia 4520 de vector de movimiento hacia atras, el codificador/decodificador puede predecir un vector de movimiento hacia atras usando vectores de movimiento hacia atras vecinos en la memoria intermedia de movimiento hacia atras y poner el predictor en la posicion para el macrobloque actual en la memoria intermedia de vector de movimiento hacia atras.
B. Prediccion de vector de movimiento en fotogramas B entrelazados
En algunas implementaciones, un codificador/decodificador emplea el siguiente esquema para predecir vectores de movimiento para macrobloques (incluyendo campos separados de los mismos) en fotogramas B entrelazados, que usan contextos de vector de movimiento hacia delante y hacia atras separados. Las Figuras 40A-40B muestran macrobloques vecinos a partir de los cuales se recogen los vectores de movimiento candidatos.
Si un macrobloque de 1 MV esta previsto hacia delante, un codificador/decodificador predice su vector de movimiento hacia delante desde vectores de movimiento candidatos de la memoria intermedia de vector de movimiento hacia delante (por ejemplo, usando prediccion de mediana de 3 y patrones de prediccion tales como aquellos mostrados en las Figuras 40A y 40B o en cualquier otro lugar). El codificador/decodificador almacena el vector de movimiento hacia delante (despues de anadir el error de prediccion de vector de movimiento) en la memoria intermedia de vector de movimiento hacia delante. El codificador/decodificador rellena “huecos” prediciendo un vector de movimiento hacia atras desde vectores de movimiento candidatos de la memoria intermedia de vector de movimiento hacia atras (por ejemplo, como en el caso de prediccion hacia delante), y almacena el vector de movimiento hacia atras (en este punto, el predictor) en la memoria intermedia de vector de movimiento hacia atras.
Si el macrobloque de 1 MV se predice hacia atras, un codificador/decodificador predice su vector de movimiento hacia atras desde vectores de movimiento candidatos de la memoria intermedia de vector de movimiento hacia atras (por ejemplo, como en el caso de prediccion hacia delante). El codificador/decodificador almacena el vector de movimiento hacia atras (despues de anadir el error de prediccion) en la memoria intermedia de vector de movimiento hacia atras. El codificador/decodificador rellena huecos prediciendo un vector de movimiento hacia delante desde vectores de movimiento candidatos de la memoria intermedia de vector de movimiento hacia delante, y almacena el vector de movimiento hacia delante (en este punto, el predictor) en la memoria intermedia de vector de movimiento hacia delante.
Los vecinos que son macrobloques intra-codificados se ignoran en las memorias intermedias de vector de movimiento hacia delante y hacia atras.
5
10
15
20
25
30
35
40
45
50
55
Diversos casos especiales tratan combinaciones de macrobloques de 1 MV y de 2MV codificados por campo en fotogramas B entrelazados. Si un macrobloque vecino en la posicion A, B o C para un macrobloque de 1 MV actual es un macrobloque de 2MV codificado por campo, el codificador/decodificador toma el promedio de los vectores de movimiento de campo para el macrobloque de 2MV como el predictor de vector de movimiento para esa posicion.
Para macrobloque de MV de 2 campos actual previsto hacia delante, por ejemplo, para cada uno de dos vectores de movimiento de campo previstos hacia delante, los vectores de movimiento candidatos desde los vecinos se recopilan desde la memoria intermedia de vector de movimiento hacia delante. El codificador/decodificador selecciona un conjunto de vectores de movimiento candidatos basandose en el modo de codificacion (por ejemplo, intra, 1MV, MV de 2 campos) de los macrobloques vecinos, que se almacenan en la memoria intermedia de vector de movimiento hacia delante. Si existe un macrobloque vecino y no esta intra codificado, el codificador/decodificador busca el vector o vectores de movimiento para el macrobloque para anadir al conjunto de candidatos. En algunas realizaciones, el codificador/decodificador continua como sigue. Para el vector de movimiento hacia delante de campo superior, si un macrobloque vecino en la posicion A, B o C es un macrobloque de 1 MV, el codificador anade el vector de movimiento del macrobloque desde la posicion correspondiente de la memoria intermedia de vector de movimiento hacia delante al conjunto de candidatos. Para un macrobloque vecino en la posicion A, B o C que es un macrobloque de MV de 2 campos, el codificador/decodificador anade el MV de campo superior desde la posicion correspondiente de la memoria intermedia de vector de movimiento hacia delante al conjunto.
Para el vector de movimiento hacia delante de campo inferior, si un macrobloque vecino en la posicion A, B o C es un macrobloque de 1 MV, el codificador anade el vector de movimiento del macrobloque desde la posicion correspondiente de la memoria intermedia de vector de movimiento hacia delante al conjunto de candidatos. Para un macrobloque vecino en la posicion A, B o C que es un macrobloque de MV de 2 campos, el codificador/decodificador anade el vector de movimiento de campo inferior desde la posicion correspondiente de la memoria intermedia de vector de movimiento hacia delante al conjunto.
Para calcular predictores para vectores de movimiento de campo en macrobloques de MV de 2 campos, el codificador/decodificador a continuacion calcula las medianas de los conjuntos de candidatos.
Para calcular unos vectores de movimiento previstos hacia atras para un macrobloque de MV de 2 campos, la logica es la misma que el caso de prediccion hacia adelante, pero los vectores de movimiento candidatos desde los vecinos se recopilan desde la memoria intermedia de vector de movimiento hacia atras.
De nuevo, los vecinos en la posicion A, Bo C que estan intra-codificados se ignoran para prediccion de vector de movimiento.
Despues de la reconstruccion de los vectores de movimiento para un macrobloque de MV de 2 campos (por ejemplo, anadiendo informacion de vector de movimiento diferencial), los vectores de movimiento reales reconstruidos se ponen en la memoria intermedia de vector de movimiento hacia delante o en la memoria intermedia de vector de movimiento hacia atras, segun sea apropiado para la direccion de prediccion de los vectores de movimiento reconstruidos. Los intervalos vados correspondientes de la memoria intermedia de vector de movimiento para la direccion faltante se rellenan calculando predictores de vector de movimiento para la direccion faltante y almacenando los predictores de vector de movimiento en los intervalos vados.
Se aplica una excepcion para el relleno de huecos para macrobloques codificados por campo en fotogramas B entrelazados si se esta usando la conmutacion de modo de prediccion (vease la seccion VI, anterior). En este caso, un macrobloque de 2MV codificado por campo dado tiene un vector de movimiento hacia delante y un vector de movimiento hacia atras. Despues de la reconstruccion de un macrobloque codificado por campo de un fotograma B entrelazado, donde el macrobloque codificado por campo conmuta direcciones de prediccion entre los campos superior e inferior, el codificador/decodificador rellena ambos “intervalos” de vector de movimiento superior e inferior de la memoria intermedia de vector de movimiento hacia delante con el vector de movimiento hacia delante, y rellena ambos intervalos de vector de movimiento superior e inferior de la memoria intermedia hacia atras con el vector de movimiento hacia atras. Aunque se envfa el vector de movimiento hacia delante unicamente para un campo (por ejemplo, el campo superior), el codificador pone el mismo vector de movimiento en ambos intervalos de vector de movimiento de campo superior e inferior para la memoria intermedia de vector de movimiento hacia delante. De manera similar, aunque se envfa el vector de movimiento hacia atras unicamente para el campo inferior, el codificador lo pone ambos intervalos de campo superior e inferior de la memoria intermedia de vector de movimiento hacia atras.
Por ejemplo, la Figura 46 muestra vectores de movimiento de campo superior e inferior para un macrobloque 4680 reconstruido en una memoria intermedia 4610 de vector de movimiento hacia delante y una memoria intermedia 4620 de vector de movimiento hacia atras. En el ejemplo mostrado en la Figura 46, para los macrobloques 46304670 reconstruidos, un codificador/decodificador almacena vectores de movimiento hacia delante en la memoria intermedia 4610 de vector de movimiento hacia delante y vectores de movimiento hacia atras en la memoria intermedia 4620 hacia atras. El macrobloque 4680 reconstruido esta codificado por campo con conmutacion de prediccion, y su vector de movimiento de campo superior esta almacenado en las localizaciones superior e inferior en cualquiera de la memoria intermedia de vector de movimiento hacia delante o hacia atras (dependiendo de la
5
10
15
20
25
30
35
40
45
50
55
direccion de prediccion del vector de movimiento de campo superior). El vector de movimiento de campo inferior del macrobloque 4680 se almacena en las localizaciones superior e inferior de la otra memoria intermedia de vector de movimiento. En este ejemplo, el macrobloque 4680 reconstruido usa la conmutacion de modo de prediccion. Aunque el vector de movimiento hacia delante y el vector de movimiento hacia atras se envfan cada uno para unicamente un campo, el codificador pone el mismo vector de movimiento en ambos intervalos de vector de movimiento de campo superior e inferior para las respectivas memorias intermedias de vector de movimiento hacia delante y hacia atras.
Si el macrobloque actual esta interpolado, un codificador/decodificador usa la memoria intermedia de vector de movimiento hacia delante para predecir el vector de movimiento hacia delante (o vectores de movimiento hacia delante para un macrobloque de MV de 2 campos), usa la memoria intermedia de vector de movimiento hacia atras para predecir el vector de movimiento hacia atras (o vectores de movimiento hacia atras para un macrobloque de MV de 2 campos), y almacena los vectores de movimiento hacia delante y hacia atras (despues de anadir los errores de prediccion, una vez que estos se han calculado), en las memorias intermedias de vector de movimiento hacia delante y hacia atras, respectivamente.
Si el macrobloque esta previsto directo en un fotograma B entrelazado, un codificador/decodificador puede usar una tecnica descrita en la seccion VII, anterior.
En algunas implementaciones, estan permitidos macrobloques 1 MV, macrobloques de MV de 2 campos, macrobloques intra para fotogramas B entrelazados (pero no otros tipos de macrobloque de MV), que simplifica la logica para predecir vectores de movimiento puesto que necesitan tratarse menos combinaciones de modo actual/vecino. Como alternativa, estan permitidos otros modos de MV y/o adicionales tales como macrobloques de MV de 4 fotogramas y macrobloques de MV de 4 campos. Por ejemplo, partes del pseudocodigo mostrado en las Figuras 64, 69 y 70 pueden usarse para tratar tales otras combinaciones en fotogramas B entrelazados.
C. Prediccion de vector de movimiento para campos B entrelazados
En general, para un campo B entrelazado, previamente reconstruido (o derivado) se usan vectores de movimiento de campo hacia delante como predictores para vectores de movimiento de campo hacia delante actuales, y se usan vectores de movimiento de campo hacia atras previamente reconstruidos (o derivados) para vectores de movimiento de campo hacia atras actuales. En modo hacia delante o hacia atras, los vectores de movimiento de campo hacia delante o hacia atras actuales se anaden a la memoria intermedia de vector de movimiento apropiada, y un vector de movimiento para la otra (faltante) direccion (por ejemplo, la direccion hacia atras en modo hacia delante, o la direccion hacia delante en modo hacia atras) se deriva para uso posterior como un predictor.
En algunas implementaciones, se realiza seleccion de prediccion de vector de movimiento de campo de acuerdo con la logica de prediccion de vector de movimiento de campo de dos referencias descrita en la seccion III.A.2 de la descripcion detallada y a continuacion en la seccion XIV.B.3. Por ejemplo, el pseudocodigo mostrado en las Figuras 33A-33F se usa para calcular dos predictores de vector de movimiento hacia delante de campo para un macrobloque de un campo B entrelazado, y se selecciona un predictor de vector de movimiento para uso al reconstruir el vector de movimiento de campo hacia delante. El valor de vector de movimiento reconstruido se pone a continuacion en la memoria intermedia de vector de movimiento hacia delante. El pseudocodigo se usa tambien para calcular dos predictores de vector de movimiento hacia atras de campo para el macrobloque, y se selecciona un predictor para uso como un valor de relleno para la memoria intermedia de vector de movimiento hacia atras. Para campos B entrelazados, para rellenar “huecos” en una memoria intermedia de vector de movimiento de direccion faltante, un codificador/decodificador elige entre predictores de vector de movimiento de la misma polaridad y la polaridad opuesta. Esta eleccion entre polaridades surge puesto que se generan dos predictores en una direccion faltante dada, uno de la misma polaridad que el campo actual, y uno de la polaridad opuesta que el campo actual. Por lo tanto, en algunas implementaciones, el codificador/decodificador elige el predictor de mayona o polaridad “dominante” para el vector de movimiento de direccion faltante. De esta manera, esta presente un conjunto completo tanto de vectores de movimiento hacia delante como hacia atras para uso en prediccion de vector de movimiento. Como alternativa, se determina la polaridad dominante y se realiza en primer lugar la seleccion de predictor, y unicamente se calcula el predictor de vector de movimiento seleccionado.
Los procedimientos de almacenamiento en memoria intermedia de valor real y relleno de huecos seleccionando de entre predictores de vector de movimiento de campo de diferentes polaridades en una implementacion se muestran en el pseudocodigo 4700 en la Figura 47. El pseudocodigo 4700 muestra que durante la prediccion de relleno de huecos, no esta presente vector de movimiento real para la direccion faltante, por lo que se elige el vector de movimiento de direccion faltante previsto que tiene la polaridad dominante mediante el codificador/decodificador.
En algunas implementaciones, el esquema global para prediccion de vector de movimiento de campo B entrelazado es como sigue.
Si el macrobloque esta previsto hacia delante, un codificador/decodificador predice su vector de movimiento hacia delante desde el mismo candidato y/u vectores de movimiento de polaridad opuesta de la memoria intermedia de vector de movimiento hacia delante (por ejemplo, usando prediccion de mediana de 3 desde los vecinos izquierdo, superior y superior-derecho para la mayona de los casos) o vectores de movimiento derivados desde los vectores de
5
10
15
20
25
30
35
40
45
50
55
movimiento almacenados en memoria intermedia. El codificador/decodificador almacena el vector de movimiento reconstruido hacia delante en la memoria intermedia de vector de movimiento hacia delante y calcula y almacena el predictor de vector de movimiento hacia atras dominante (previsto de manera similar con mediana de 3 desde las cercamas espaciales de la memoria intermedia de vector de movimiento hacia atras) en la posicion correspondiente en la memoria intermedia de vector de movimiento hacia atras.
Si el macrobloque esta previsto hacia atras, un codificador/decodificador predice su vector de movimiento hacia atras desde el mismo candidato y/o vectores de movimiento de polaridad opuesta de la memoria intermedia de vector de movimiento hacia atras (por ejemplo, usando prediccion de mediana de 3 desde los vecinos izquierdo, superior y superior-derecho para la mayona de los casos) o vectores de movimiento derivados desde los vectores de movimiento almacenados en memoria intermedia. El codificador/decodificador almacena el vector de movimiento hacia atras reconstruido en la memoria intermedia de vector de movimiento hacia atras y calcula y almacena el predictor de vector de movimiento hacia delante dominante (previsto de manera similar con mediana de 3 desde las cercamas espaciales de la memoria intermedia de vector de movimiento hacia delante) en la posicion correspondiente en la memoria intermedia de vector de movimiento hacia delante.
Si el macrobloque esta interpolado, un codificador/decodificador usa la memoria intermedia de vector de movimiento hacia delante para predecir el componente de vector de movimiento hacia delante, usa la memoria intermedia de vector de movimiento hacia atras para predecir el componente de vector de movimiento hacia atras, y almacena los vectores de movimiento hacia delante y hacia atras reconstruidos (despues de anadir errores de prediccion, una vez que estos se han calculado), en las memorias intermedias de vector de movimiento hacia delante y hacia atras, respectivamente.
Si el macrobloque esta previsto directo, el codificador/decodificador calcula los vectores de movimiento de modo directo para el campo actual y almacena los componentes de vector de movimiento hacia delante y hacia atras en las respectivas memorias intermedias de vector de movimiento.
Los vecinos que son macrobloques intra-codificados se ignoran en la prediccion de vector de movimiento.
Diversos casos especiales tratan combinaciones de macrobloques de 1 MV y 4MV en campos B entrelazados. Las Figuras 6A-10 muestran patrones de predictor para prediccion de vector de movimiento para fotogramas P progresivos. Estos mismos patrones muestras las localizaciones de los bloques o macrobloques considerados para los vectores de movimiento candidatos para prediccion de vector de movimiento para un vector de movimiento para un macrobloque de 1 MV o 4MV campos B entrelazados de MV mixto. Para el caso especial donde el fotograma es de un macrobloque de ancho, el predictor es siempre el Predictor A (el predictor superior). Diversas otras reglas tratan otros casos especiales tales como bloques de fila superior para macrobloques de 4MV de fila superior, macrobloques de 1 mV de fila superior y predictores intra-codificados.
Los patrones de predictor mostrados en las Figuras 6A-10 se usan para prediccion hacia delante usando candidatos desde posiciones en la memoria intermedia de vector de movimiento hacia delante, y tambien para prediccion hacia atras usando candidatos desde posiciones en la memoria intermedia de vector de movimiento hacia atras. Ademas, los patrones de predictor mostrados en las Figuras 6A-10 se usan en conjunto con la logica de prediccion de vector de movimiento de dos campos de referencia analizada anteriormente para campos B entrelazados.
Las Figuras 6A y 6B muestran localizaciones de bloques considerados para predictores de vector de movimiento candidato para un macrobloque actual de 1 MV en un campo B entrelazado de MV mixto. Los macrobloques vecinos pueden ser macrobloques de 1 MV o de 4MV. Las Figuras 6A y 6B muestran las localizaciones para los vectores de movimiento candidatos suponiendo que los vecinos son 4MV (es decir, el Predictor A es el vector de movimiento para el bloque 2 en el macrobloque por encima del macrobloque actual, y el predictor C es el vector de movimiento para el bloque 1 en el macrobloque inmediatamente a la izquierda del macrobloque actual). Si cualquiera de los vecinos es un macrobloque de 1 MV, entonces el predictor de vector de movimiento mostrado en las Figuras 5A y 5B se toma para que sea el predictor de vector de movimiento para el macrobloque completo. Como muestra la Figura 6B, si el macrobloque es el ultimo macrobloque en la fila, entonces el Predictor B es desde el bloque 3 del macrobloque superior izquierdo en lugar de desde el bloque 2 en el macrobloque superior derecho como es el caso de otra manera.
Las Figuras 7A-10 muestran las localizaciones de bloques considerados para predictores de vector de movimiento candidato para cada uno de los 4 bloques de luminancia en un macrobloque de 4MV de campo B entrelazado de MV mixto. Las Figuras 7A y 7B son diagramas que muestran las localizaciones de bloques considerados para predictores de vector de movimiento candidato para un bloque en la posicion 0; Las Figuras 8A y 8B son diagramas que muestran las localizaciones de bloques considerados para predictores de vector de movimiento candidato para un bloque en la posicion 1; La Figura 9 es un diagrama que muestra las localizaciones de bloques considerados para predictores de vector de movimiento candidato para un bloque en la posicion 2; y la Figura 10 es un diagrama que muestra las localizaciones de bloques considerados para predictores de vector de movimiento candidato para un bloque en la posicion 3. De nuevo, si un vecino es un macrobloque de 1 MV, el predictor de vector de movimiento para el macrobloque se usa para los bloques del macrobloque.
5
10
15
20
25
30
35
40
45
50
55
Para el caso donde el macrobloque es el primer macrobloque en la fila, el Predictor B para el bloque 0 se maneja de manera diferente que el bloque 0 para los macrobloques restantes en la fila (veanse las Figuras 7A y 7B). En este caso, el Predictor B se toma desde el bloque 3 en el macrobloque inmediatamente por encima del macrobloque actual en lugar de desde el bloque 3 en el macrobloque por encima y a la izquierda del macrobloque actual, como es el caso de otra manera. De manera similar, para el caso donde el macrobloque es el ultimo macrobloque en la fila, el Predictor B para el bloque 1 se maneja de manera diferente (Figuras 8A y 8B). En este caso, el predictor se toma desde el bloque 2 en el macrobloque inmediatamente por encima del macrobloque actual en lugar de desde el bloque 2 en el macrobloque por encima y a la derecha del macrobloque actual, como es el caso de otra manera. En general, si el macrobloque esta en la primera columna de macrobloque, entonces el Predictor C para los bloques 0 y 2 se establece igual a 0.
De nuevo, los vecinos en la posicion A, B o C que estan intra-codificados se ignoran para prediccion de vector de movimiento.
Despues de la reconstruccion de los vectores de movimiento para un macrobloque de 4MV (por ejemplo, anadiendo informacion de vector de movimiento diferencial), los vectores de movimiento reales reconstruidos se ponen en la memoria intermedia de vector de movimiento hacia delante o memoria intermedia de vector de movimiento hacia atras, segun sea apropiado para la direccion de prediccion de los vectores de movimiento reconstruidos. Los intervalos vados correspondientes de la memoria intermedia de vector de movimiento para la direccion faltante se rellenan calculando predictores de vector de movimiento para la direccion faltante para la misma polaridad y la opuesta, seleccionando entre los predictores de vector de movimiento de polaridad diferente, y almacenando los predictores de vector de movimiento en los intervalos vados.
Haciendo referencia de nuevo a las Figuras 34A y 34B, para prediccion de vector de movimiento, un codificador/decodificador deriva un predictor de vector de movimiento de campo desde otro predictor de vector de movimiento de campo usando la operacion de cambio de escala ilustrada en el pseudocodigo 3400. Se muestran dos posibles conjuntos de valores en la tabla 3500 en la Figura 35 para el caso donde el campo actual es el primer campo en el fotograma de video entrelazado, y en la tabla 3600 en la Figura 36 para el caso donde el campo actual es el segundo campo en el fotograma de video entrelazado. En las tablas 3500 y 3600, los valores de SCALEOPP, SCALESAME1, SCALESAME2, SCALEZONE1_X, SCALEZONE1_Y, ZONE1OFFSET_X y ZONE1OFFSET_Y dependen de la distancia de fotograma de referencia.
En algunas implementaciones, las distancias de fotograma de referencia para referencias hacia delante y hacia atras en campos B entrelazados se calculan usando codificacion de fraccion. El elemento de sintaxis BFRACTION (que se senaliza para macrobloques de modo de prediccion hacia delante o hacia atras de campos B entrelazados, no solamente macrobloques de modo directo de campos B entrelazados) se usa para derivar distancias de imagen de referencia hacia delante y hacia atras como se muestra en el siguiente pseudocodigo:
Distancia de fotograma de referencia hacia delante (FRFD) =
NINT ((BFRACTION numerador / BFRACTION denominador) * Distancia de fotograma de
referencia) - 1
if (FRFD < 0) then FRFD = 0
Distancia de fotograma de referencia hacia atras (BRFD) = Distancia de fotograma de referencia - FRFD - 1
(donde NINT es un operador de numero entero mas cercano).
El numerador y denominador de BFRACTION se decodifican desde el elemento de sintaxis BFRACTION. El elemento BFRACTION puede usarse para representar diferentes fracciones que pueden enviarse en un flujo de bits (por ejemplo, a nivel de fotograma para campos B entrelazados). La fraccion toma un conjunto limitado de valores discretos entre 0 y 1 e indica la posicion temporal relativa de la imagen B en el intervalo formado por sus anclas.
Para prediccion hacia delante y para prediccion hacia atras del segundo campo en un fotograma que tiene campos B entrelazados, el codificador/decodificador realiza cambio de escala de vector de movimiento de acuerdo con el pseudocodigo 3400 en las Figuras 34A y 34B. Sin embargo, en algunas implementaciones un codificador/decodificador que realiza prediccion de vector de movimiento hacia atras para el primer campo usa las funciones scaleforopposite_x, scaleforopposite_y, scaleforsame_x y scaleforsame_y como se definen en el pseudocodigo 4800 mostrado en la Figura 48. Los valores de SCALESAME, SCALEOPP1, SCALEOPP2, SCALEZONE1_X, SCALEZONE1_Y, ZONE1OFFSET_X y ZONE1OFFSET_Y para un primer campo B entrelazado en una implementacion se muestran en la tabla 4900 en la Figura 49.
En la tabla 4900 la relacion entre la variable N y el intervalo del vector de movimiento es la misma que la relacion descrita con referencia a las Figuras 35 y 36 y la Tabla 1 anterior.
Como alternativa, las distancias de fotograma de referencia se calculan de otra manera o se realiza cambio de escala de acuerdo con diferentes algoritmos. Por ejemplo, se realiza cambio de escala sin considerar el valor de N (es decir, N se supone que es 1).
5
10
15
20
25
30
35
40
45
50
55
X. Fotogramas de “auto-referencia” con campos B entrelazados
Los fotogramas que tienen campos B entrelazados se codifican como dos campos separados (y un tanto codificados de manera independiente). El campo superior consiste en las lmeas de trama pares (empezando con la lmea 0) del fotograma, y el campo inferior consiste en lmeas de trama impares del fotograma. Puesto que los campos en “imagenes de campo” son decodificables de manera independiente, no necesitan enviarse en ningun orden pre- establecido. Por ejemplo, un codificador puede enviar el campo inferior en primer lugar seguido por el campo superior, o viceversa. En algunas implementaciones, el orden de los dos campos se indica mediante un elemento de sintaxis de “campo superior en primer lugar”, que es cualquiera de verdadero o falso dependiendo del orden temporal correcto para decodificar los dos campos de un fotograma.
Los codificadores y decodificadores anteriores han usado los fotogramas de ancla anterior y siguiente (por ejemplo, fotogramas I o P) o campos en los fotogramas de ancla anterior y siguiente como las imagenes de “referenda” para realizar compensacion de movimiento para una imagen B actual. Los codificadores y decodificadores anteriores tienen tambien imagenes B restringidas o cualquier parte de las mismas que se use como referencias de compensacion de movimiento para cualquier imagen. En algunas implementaciones de las tecnicas y herramientas descritas, sin embargo, una o mas de estas “reglas” estan relajadas.
Por ejemplo, en algunas implementaciones, un primer campo B entrelazado hace referencia al primer y segundo campo desde las imagenes de ancla anterior y siguiente. El segundo campo B entrelazado hace referencia al primer campo B entrelazado desde la imagen actual como el campo de “polaridad opuesta” y el campo de misma polaridad del fotograma de ancla anterior como el campo de la “misma polaridad”, ademas del primer y segundo campos de la siguiente imagen de ancla.
La Figura 50B es un diagrama que muestra campos de referencia para cada uno de dos campos B entrelazados en un fotograma de video entrelazado B2. En el ejemplo mostrado en la Figura 50B, el primer campo B a codificarse (en este punto, el campo superior) esta permitido a hacer referencia a dos campos de referencia en el ancla hacia delante (pasado temporal) P1 y dos campos de referencia desde el ancla hacia atras (futuro temporal) P3, para un total de cuatro campos de referencia. El segundo campo B entrelazado a codificarse para B2 esta permitido a hacer referencia al primer campo desde el mismo fotograma de video entrelazado (rompiendo por lo tanto con la convencion de no permitir que partes de imagenes B actuen como referencias) y un campo de referencia desde el ancla anterior P1, asf como ambos campos desde el ancla futura P3. Por motivos de comparacion, la Figura 50A muestra una convencion seguida por campos P entrelazados de fotogramas de video entrelazados.
Las tecnicas y herramientas que implementan estas reglas de referencia de campo B entrelazado pueden proporcionar mejor compresion. La codificacion de campo de video entrelazado es mas eficaz para codificar movimiento elevado, es decir, cuando hay movimiento considerable entre campos superior e inferior. En este escenario, por ejemplo, el campo superior (y primero codificado) de un fotograma sera un predictor mucho mejor para los pfxeles en el campo inferior del mismo fotograma que el campo superior tomado desde el fotograma anterior, que proviene desde una distancia lejos temporal mayor. Debido a su distancia temporal mayor, estos predictores temporalmente adicionales ofrecen prediccion mucho mas debil cuando el movimiento es elevado. Ademas, la probabilidad de oclusiones se amplfa para predictores que estan temporalmente mas remotos, que da como resultado mas macrobloques intra-codificados que son costosos de codificador. En particular, la experimentacion verifica que permitir el segundo campo B entrelazado temporal de un fotograma para hacer referencia al primer campo B entrelazado temporal del mismo fotograma puede producir ganancias de compresion significativas.
XI. Codificacion de plano de bits de modo hacia delante en campos B entrelazados
Como se ha mencionado en la seccion X anterior, en algunas implementaciones un segundo campo B entrelazado codificado de un fotograma actual puede hacer referencia al primer campo B entrelazado codificado del fotograma actual. Esta tecnica de “auto-referencia” es eficaz en campos B entrelazados en fotogramas que tienen elevado movimiento puesto que el campo B temporalmente mas cercano en el fotograma actual es a menudo un mejor predictor que campos de ancla temporalmente mas hacia delante. Cuando los fotogramas con campos B entrelazados tienen elevado movimiento y el segundo campo B entrelazado temporal prefiere el primer campo B entrelazado temporal que una referencia predictiva, entonces el modo de prediccion mas eficaz para los macrobloques en el segundo campo B entrelazado a menudo sera “hacia delante”.
Puesto que la prediccion de modo hacia delante en campos B entrelazados es una herramienta eficaz para reducir la tasa de bits, es ventajoso reducir la tara de senalizacion para reducir el coste global de la prediccion de senalizacion de modo hacia delante, especialmente en situaciones de baja tasa de bits. Por consiguiente, en algunas realizaciones, un codificador codifica informacion de prediccion de modo hacia delante usando una tecnica de codificacion de plano de bits unificada. Por ejemplo, un codificador codifica informacion de prediccion de modo hacia delante en un plano de bits comprimido, donde cada bit en el plano de bits esta asociado con un macrobloque, y el valor de cada bit senaliza si el macrobloque se codifico en modo hacia delante o en un modo de prediccion no hacia delante.
5
10
15
20
25
30
35
40
45
50
El plano de bits comprimido puede enviarse al nivel de fotograma, nivel de campo o a algun otro nivel. La tecnica de codificacion de plano de bits se aprovecha de la desviacion de modo hacia delante en comparacion con otros modos de prediccion para campos B entrelazados. Por ejemplo, si la mayona de los macrobloques en un campo B entrelazado usan prediccion hacia delante, un codificador puede reducir la tara de senalizacion a menos de un bit por macrobloque codificando en plano de bits la decision hacia delante/no hacia delante.
La Figura 51 muestra una tecnica 5100 para codificar informacion de decision de modo de prediccion hacia delante/no hacia delante para macrobloques de un campo B entrelazado en un codificador de video que tiene uno o mas modos de codificacion de plano de bits. La Figura 52 muestra una tecnica 5200 correspondiente para decodificar informacion de decision de modo de prediccion hacia delante/no hacia delante codificada mediante un codificador de video que tiene uno o mas modos de codificacion de plano de bits.
Con referencia a la figura 51, el codificador selecciona un modo de codificacion de plano de bits para codificar informacion 5110 de decision de modo de prediccion hacia delante/no hacia delante. Despues de que se selecciona el modo de codificacion, el codificador codifica la informacion 5120 de decision de modo de prediccion hacia delante/no hacia delante en el modo seleccionado. El codificador selecciona modos de codificacion de plano de bits en una base de campo a campo. Como alternativa, el codificador selecciona modos de codificacion de plano de bits en alguna otra base (por ejemplo, a nivel de secuencia). O, si unicamente se usa un modo de codificacion de plano de bits, no se realiza seleccion de modos de codificacion de plano de bits. Cuando el codificador esta haciendo la codificacion de informacion 5130 de decision de modo de prediccion hacia delante/no hacia delante, la codificacion de la informacion de decision de modo de prediccion hacia delante/no hacia delante finaliza.
Con referencia a la Figura 52, el decodificador determina el modo de codificacion de plano de bits usado mediante (y senalizado mediante) el codificador para codificar la informacion 5210 de decision de modo de prediccion hacia delante/no hacia delante. El decodificador a continuacion decodifica la informacion 5220 de decision de modo de prediccion hacia delante/no hacia delante en el modo seleccionado. El decodificador determina modos de codificacion de plano de bits en una base campo a campo. Como alternativa, el decodificador determina modos de codificacion de plano de bits en alguna otra base (por ejemplo, a nivel de secuencia). O, si unicamente esta disponible un modo de codificacion de plano de bits, no se realiza seleccion de modos de codificacion de plano de bits. Cuando el decodificador esta haciendo la codificacion de la informacion 5230 de decision de modo de prediccion hacia delante/no hacia delante, la decodificacion de la informacion de decision de modo de prediccion hacia delante/no hacia delante finaliza.
Para detalles adicionales sobre senalizacion y decodificacion para los diversos modos de codificacion de plano de bits de acuerdo con varias implementaciones combinadas, vease la seccion XIV a continuacion. Para mas informacion sobre codificacion de plano de bits en general, vease la Solicitud de Patente de Estados Unidos con N.° de Serie 10/321.415, titulada, “Skip Macroblock Coding”, presentada el 16 de diciembre de 2002, la divulgacion de la cual se incorpora por la presente por referencia. Como alternativa, los bits que representan la informacion de modo hacia delante/no hacia delante pueden enviarse sin comprimir y/o a algun otro nivel (por ejemplo, a nivel de macrobloque).
Si se indica prediccion no hacia delante, el codificador especifica el modo de prediccion no hacia delante (por ejemplo, modo hacia atras, modo directo, modo interpolado o intra modo) para el macrobloque. En algunas realizaciones, un codificador codifica modos de prediccion no hacia delante a nivel de macrobloque con referencia a una tabla de VLC, como se muestra en la Tabla 2 a continuacion.
TabJa=2:=Tab^=d^VLC=d^mod^d^£redicci6n=d^movimien:to
- VLC BMVTYPE
- Modo de prediccion de movimiento
- 0
- Hacia atras
- 10
- Directo
- 11
- Interpolado
En el ejemplo mostrado en la Tabla 2, el modo hacia atras es el modo de prediccion no hacia delante preferido. El codificador representa modo hacia atras con una senal de un bit y representa modos directo e interpolado con senales de dos bits. Como alternativa, el codificador usa diferentes codigos para representar diferentes modos de prediccion y/o prefiere un modo de prediccion no hacia delante diferente.
En algunas realizaciones, el modo intra se senaliza mediante un valor de vector de movimiento diferencial especial, que indica mediante la manera en la que se codifica que el modo de prediccion es el modo intra. El valor de vector de movimiento diferencial se usa por lo tanto para inferir que el macrobloque esta intra codificado, pero como una convencion el codificador establece el tipo de prediccion a hacia atras, para no tener ningun tipo de prediccion no definido.
5
10
15
20
25
30
35
40
45
50
55
60
XII. Seleccion de vectores de movimiento co-localizados para modo directo en campos B entrelazados
En algunas implementaciones, los vectores de movimiento de modo directo para macrobloques en imagenes B codificadas por campo se seleccionan usando logica especial. Para un macrobloque actual en un campo B entrelazado, si el macrobloque co-localizado en el campo correspondiente de la siguiente imagen de ancla se codifico usando cuatro vectores de movimiento, la logica favorece la polaridad mas dominante (por ejemplo, la misma u opuesta) entre hasta los cuatro vectores de movimiento para el macrobloque co-localizado. Una vez que se selecciona un vector de movimiento para usar para el macrobloque actual, el codificador/decodificador puede aplicar operaciones de cambio de escala para proporcionar los vectores de movimiento de modo directo.
En algunas implementaciones, para un macrobloque de 1 MV de modo directo de un campo B entrelazado, un codificador/decodificador calcula el vector de movimiento para usar para el cambio de escala de modo directo basandose en uno o mas vectores de movimiento para el macrobloque co-localizado en un campo de referencia (por ejemplo, el campo P temporalmente siguiente) con la misma polaridad. Si el macrobloque co-localizado en el campo de referencia es un macrobloque de 1 MV, el codificador/decodificador usa el vector de movimiento unico para derivar vectores de movimiento de modo directo para el macrobloque en el campo B entrelazado. Si, por otra parte, el macrobloque co-localizado en el campo de referencia es un macrobloque de 4MV, el codificador/decodificador considera las polaridades de los cuatro vectores de movimiento, que favorece la polaridad dominante, al seleccionar el vector de movimiento usado para derivar los vectores de movimiento de modo directo para el macrobloque en el campo B entrelazado. El codificador/decodificador puede aplicar la logica de seleccion a macrobloques de 4MV en el campo de referencia cuando sea necesario durante la decodificacion del campo B entrelazado. O, el codificador/decodificador puede aplicar la logica de seleccion despues de la decodificacion del campo de referencia, almacenando en memoria intermedia a continuacion unicamente el valor a usarse en la decodificacion de campo B entrelazado posterior.
Por ejemplo, para el macrobloque de 4MV co-localizado en el campo de referencia, si el numero de vectores de movimiento (de cuatro) de campo de la misma polaridad superan en numero a aquellos del campo de la polaridad opuesta, un codificador/decodificador puede usar mediana de 4, mediana de 3, media aritmetica de 2 o los valores del vector de movimiento de campo de la misma polaridad para calcular un vector de movimiento para uso en decodificacion de campo B entrelazado de modo directo, si el numero de vectores de movimiento de la misma polaridad es cuatro, tres, dos o uno, respectivamente. De otra manera, si los vectores de movimiento desde el campo de polaridad opuesta superan en numero a aquellos del campo de la misma polaridad, un codificador/decodificador puede usar operaciones similares para obtener un vector de movimiento representativo desde los vectores de movimiento de campo de polaridad opuesta para uso en decodificacion de campo B entrelazado de modo directo. Si mas de dos del conjunto original de cuatro vectores de movimiento para el macrobloque co-localizado (independientemente de la polaridad) son intra, entonces el codificador/decodificador puede simplemente tratar el vector de movimiento representativo co-localizado como intra (es decir, (0, 0)). Sin embargo, en algunas implementaciones, todos los MB intra en campos B entrelazados se codifican como 1MV, por lo que el caso cuando mas de dos de unos cuatro vectores de movimiento originales que son intra conduce a que el vector de movimiento representativo co-localizado se trate como intra nunca surge en la practica.
El pseudocodigo 5300 en la Figura 53 muestra un procedimiento de seleccion para un vector de movimiento para usar como una base para vectores de movimiento de modo directo en campos B entrelazados. En algunas implementaciones, este procedimiento de seleccion es un pre-cursor a operaciones de cambio de escala que producen vectores de movimiento de modo directo que apuntan hacia delante y hacia atras.
XIII. Campos B intra-codificados en fotogramas de video entrelazados
Un campo BI entrelazado (o “intra campo B”) es un campo que esta codificado de manera independiente de sus imagenes de referencia. Los campos BI entrelazados son diferentes de otros campos intra (por ejemplo, campos I entrelazados) en el sentido en el que no pueden usarse como anclas para predecir otras imagenes. No hay dependencia inter-imagen en el campo BI entrelazado, y su presencia en un flujo de bits no representa el inicio de un segmento o grupo de imagenes independientemente decodificables. Sin embargo, un primer campo en un fotograma de video entrelazado, si se codifica como un campo BI, podna usarse para predecir el segundo campo en el fotograma, que puede codificarse como un campo B entrelazado. Esta innovacion tambien mejora la compresion global usando unicamente intra codificacion para la mitad del fotograma (el primer campo codificado) en muchos casos, en lugar de codificar un fotograma completo como un intra fotograma o codificar ambos campos como intra campos. En algunas implementaciones, un fotograma puede comprender dos campos B, dos campos BI o un campo B y un campo BI.
Hay razones para usar campos BI entrelazados en lugar de campos I entrelazados. Una es evitar sacrificar la escalabilidad temporal. Por ejemplo, cuando un decodificador esta representando video digital y necesita descartar inmediatamente algunas imagenes para mantener las demandas de procesamiento, puede mirar una secuencia de campos que pueden potencialmente descartar. Si los campos intra en la secuencia resultan ser campos clave, el decodificador se vera forzado a decodificarlos para usarlos como referencias para otros campos, y no puede descartarlos. Sin embargo, si los campos intra en la secuencia se codifican como campos BI, el decodificador tendra aun la opcion de descartarlos sin comprometer compensacion de movimiento posterior.
5
10
15
20
25
30
35
40
45
Los campos BI entrelazados son diferentes a los campo B entrelazados con intra macrobloques en el sentido en el que los campos BI entrelazados senalizan mas eficazmente los elementos de sintaxis usados para intra codificacion y decodificacion, puesto que los elementos relacionados con compensacion de movimiento dentro de un campo BI (o los elementos que senalizan la ausencia de los mismos) pueden evitarse. En otras palabras, una razon para usar campos BI entrelazados (en lugar de campos B normales) surge cuando se codifica un campo B entrelazado en un punto en una secuencia de video donde la inter-prediccion de campo se descompone (por ejemplo, debido a cambios de escena o movimiento complejo). A menudo, la mayona de los macrobloques en un campo de este tipo necesitaran codificarse como macrobloques intra. En este escenario, a menudo es mas economico en terminos de tasa de bits codificar todo el campo B como un campo BI que enviar la informacion de modo de prediccion para cada macrobloque en el campo. Cuando no es posible buena prediccion o compensacion de movimiento para un campo B entrelazado, puede codificarse como un campo BI.
En algunas implementaciones, un codificador puede senalizar la aparicion de un campo BI en el flujo de bits como uno de los posibles valores del tipo de imagen. Como alternativa, la presencia de un campo BI puede indicarse de alguna otra manera.
XIV. Implementaciones combinadas
Una implementacion combinada detallada para una sintaxis de flujo de bits, semantica y el decodificador se describen ahora, ademas de una implementacion combinada alternativa con diferencias menores de la implementacion combinada principal.
A. Sintaxis de flujo de bits
En diversas implementaciones combinadas, los datos para imagenes B entrelazadas se presentan en forma de un flujo de bits que tiene varias capas (por ejemplo, capas de secuencia, fotograma, campo, macrobloque, bloque y/o sub-bloque).
Para fotogramas de video entrelazados con campos B entrelazados y/o campos BI, se muestran elementos de flujo de bits de nivel de fotograma en la Figura 54. Los datos para cada fotograma consisten en un encabezamiento de fotograma seguido por datos para las capas de campo (mostradas como el elemento por campo repetido “FieldPicLayer”). Los elementos de flujo de bits que componen los encabezamientos de campo para campos B entrelazados y campos BI se muestran en las Figuras 55 y 56, respectivamente. Los elementos de flujo de bits que componen la capa de macrobloque para campos B entrelazados (ya sea para macrobloques intra, 1MV o 4MV) y campos BI se muestran en las Figuras 57 y 58, respectivamente.
Para fotogramas B entrelazados, los elementos de flujo de bits de nivel de fotograma se muestran en la Figura 59. Los datos para cada fotograma consisten en un encabezamiento de fotograma seguido por datos para la capa de macrobloque. Los elementos de flujo de bits que componen la capa de macrobloque para fotogramas B entrelazados (ya sea para macrobloques de tipo intra o diversos inter) se muestran en la Figura 60.
Las siguientes secciones describen elementos de flujo de bits seleccionados en las capas de fotograma, campo y macrobloque que estan relacionadas con senalizacion relacionada con imagenes entrelazadas previstas bidireccionalmente. Aunque los elementos de flujo de bits seleccionados se describen en el contexto de una capa particular, algunos elementos de flujo de bits pueden usarse en mas de una capa.
1. Elementos de capa de fotograma seleccionados
La Figura 54 es un diagrama que muestra una sintaxis de flujo de bits de nivel de fotograma para fotogramas que contienen campos B entrelazados y/o campos BI (o potencialmente otras clases de campos entrelazados). La Figura 59 es un diagrama que muestra una sintaxis de flujo de bits de nivel de fotograma para fotogramas B entrelazados. Se describen a continuacion elementos de flujo de bits espedficos.
Modo de codificacion de fotograma (FCM) (Tamano variable)
FCM es una palabra de codigo de longitud variable [“VLC”] usada para indicar el tipo de codificacion de imagen. FCM toma valores para modos de codificacion de fotograma como se muestra en la Tabla 3 a continuacion:
Tabla 3: VLC de modo de codificacion de fotograma
- valor FCM
- Modo de codificacion de fotograma
- 0
- Progresivo
- 10
- Fotograma entrelazado
- 11
- Campo entrelazado
Tipo de imagen de campo (FPTYPE) (3 bits)
FPTYPE es un elemento de sintaxis de tres bits presente en el encabezamiento de fotograma para un fotograma que incluye campos P entrelazados, campos I entrelazados, campos B entrelazados y/o campos BI entrelazados. FPTYPE toma valores para diferentes combinaciones de tipos de campo en el fotograma de video entrelazado, de 5 acuerdo con la Tabla 4 a continuacion.
Tabla 4: FLC de tipo de imagen de campo
- FLC FPTYPE
- Primer tipo de campo Segundo tipo de campo
- 000
- I I
- 001
- I p
- 010
- p I
- 011
- p p
- 100
- B B
- 101
- B BI
- 110
- BI B
- 111
- BI BI
Distancia de referenda (REFDIST) (Tamano variable)
REFDIST es un elemento de sintaxis con tamano variable. Este elemento indica el numero de fotogramas entre el 10 fotograma actual y el fotograma de referencia. La Tabla 5 muestra el VLC usada para codificar los valores de REFDIST.
Tabla 5: tabla de VLC de REFDIST
- Distancia de fotograma de referencia
- Palabra de codigo de VLC (Binario) Tamano de VLC
- 0
- 00 2
- 1
- 01 2
- 2
- 10
- 2
- N
- 11[(N-3) numeros 1]0
- N
La ultima fila en la tabla 5 indica las palabras de codigo usadas para representar distancias de fotograma de 15 referencia mayores de 2. Estas se codifican como (binario) 11 seguido por N-3 numeros 1, donde N es la distancia de fotograma de referencia. El ultimo bit en la palabra de codigo es 0. Por ejemplo: N = 3,
N = 3, palabra de codigo de VLC = 110, tamano de VLC = 3 N = 4, palabra de codigo de VLC = 1110, tamano de VLC = 4 N = 5, palabra de codigo de VLC = 11110, tamano de VLC = 5
20 Tipo de imagen (PTYPE) (Tamano variable)
PTYPE es un elemento de sintaxis de tamano variable presente en el encabezamiento de fotograma para un fotograma B entrelazado (u otra clase de fotograma entrelazado tal como fotograma I entrelazado o fotograma P entrelazado). PTYPE toma valores para diferentes tipos de fotograma de acuerdo con la Tabla 6 a continuacion.
Tabla 6: VLC de tipo de imagen
- VLC PTYPE
- Tipo de imagen
- 110
- I
- 0
- P
- 10
- B
- 1110
- BI
- 1111
- Saltada
Si PTYPE indica que el fotograma esta saltado entonces el fotograma se trata como un fotograma P que es identico
5
10
15
20
25
30
35
40
45
a su fotograma de referencia. La reconstruccion del fotograma saltado es equivalente conceptualmente a copiar el fotograma de referencia. Un fotograma de saltado significa que no se transmiten datos adicionales para este fotograma.
Elemento de sintaxis de bit de MB de modo directo de fotograma B (DIRECTMB) (Tamano variable)
El elemento de sintaxis DIRECTMB usa codificacion de plano de bits para indicar los macrobloques en la imagen B (en este punto, un fotograma B entrelazado) que se codifica en modo directo. El elemento de sintaxis DIRECTMB puede senalizar tambien que el modo directo esta senalizado en modo sin procesar, caso en el que el modo directo se senaliza en el nivel de macrobloque para los macrobloques del fotograma B entrelazado.
Bandera de intervalo de MV extendido (MVRANGE) (Tamano variable)
MVRANGE es un elemento de sintaxis con tamano variable presente cuando el bit de capa de secuencia EXTENDED_MV se establece a 1. El VLC MVRANGE representa un intervalo de vector de movimiento.
Bandera de intervalo de MV diferencial extendido (DMVRANGE) (Tamano variable)
DMVRANGE es un elemento de sintaxis con tamano variable presente si el elemento de sintaxis de nivel de secuencia EXTENDED_DMV =1. El VLC de DMVRANGE representa un intervalo de vector de movimiento diferencial.
Tabla de modo de macrobloque (MBMODETAB) (2 o 3 bits)
El elemento de sintaxis MBMODETAB es un campo de longitud fija. Para campos P entrelazados, MBMODETAB es un valor de 3 bits que indica cual de las ocho tablas de Huffman se usa para decodificar el elemento de sintaxis de modo de macrobloque (MBMODE) en la capa de macrobloque.
Tabla de vector de movimiento (MVTAB) (2 o 3 bits)
El elemento de sintaxis MVTAB es un valor de 2 o 3 bits. Para campos P entrelazados en los que NUMREF = 1, MVTAB es un elemento de sintaxis de 3 bits que indica cual de las ocho tablas de Huffman entrelazadas se usa para decodificar los datos de vector de movimiento.
Tabla de patron de bloque de 2MV (2MVBPTAB) (2 bits)
El elemento de sintaxis 2MVBPTAB es un valor de 2 bits que senaliza cual de las cuatro tablas de Huffman se usa para decodificar el elemento de sintaxis de patron de bloque de 2MV (2MVBP) en macrobloques de campo de 2MV.
Tabla de patron de bloque de 4MV (4MVBPTAB) (2 bits)
El elemento de sintaxis 4MVBPTAB es un valor de 2 bits que senaliza cual de las cuatro tablas de Huffman se usa para decodificar el elemento de sintaxis de patron de bloque de 4MV (4MVBP) en macrobloques de 4MV.
En una implementacion combinada alternativa, la informacion de tipo de imagen se senaliza al comienzo del nivel de campo para un campo B entrelazado, en lugar de al nivel de fotograma para el fotograma de video entrelazado que incluye el campo B entrelazado, y se omite la distancia de referencia.
2. Elementos de capa de campo seleccionados
La Figura 55 es un diagrama que muestra una sintaxis de flujo de bits de nivel de campo para campos B entrelazados en la implementacion combinada. Se describen a continuacion elementos de flujo de bits espedficos.
Modo de vector de movimiento (MVMODE) (Tamano variable o 1 bit)
El elemento de sintaxis MVMODE senaliza uno de cuatro modos de codificacion de vector de movimiento o un modo de compensacion de intensidad (menos posibilidades para algunos tipos de imagenes). Varios elementos posteriores proporcionan informacion de modo de vector de movimiento y/o de compensacion de intensidad adicional.
Elemento de sintaxis de bit de MB de modo hacia delante de campo B (FORWARDMB) (Tamano variable)
El elemento de sintaxis FORWARDMB usa codificacion de plano de bits para indicar los macrobloques en el campo B que estan codificados en modo hacia delante. El elemento de sintaxis FORWARDMB puede senalizar tambien que el modo hacia delante se senaliza en modo sin procesar, caso en el que la decision de modo hacia delante/no hacia delante se senaliza en el nivel de macrobloque.
La Figura 56 es un diagrama que muestra una sintaxis de flujo de bits de nivel de campo para campos BI entrelazados en la implementacion combinada. En la implementacion combinada, la sintaxis de flujo de bits de nivel de campo para campos BI entrelazados usa los mismos elementos de sintaxis que los campos I entrelazados.
5
10
15
20
25
30
35
40
3. Elementos de capa de macrobloque seleccionados
La Figura 57 es un diagrama que muestra una sintaxis de flujo de bits de nivel de macrobloque para macrobloques de campos B entrelazados en la implementacion combinada. La Figura 60 es un diagrama que muestra una sintaxis de flujo de bits de nivel de macrobloque para fotogramas B entrelazados de macrobloques en la implementacion combinada. Se describen a continuacion elementos espedficos de flujo de bits. Los datos para un macrobloque consisten en un encabezamiento de macrobloque seguido por datos de capa de bloque.
Modo de macrobloque (MBMODE) (Tamano variable)
El elemento de sintaxis MBMODE indica el tipo de macrobloque (por ejemplo, 1 MV, 4MV o intra para campos B entrelazados) y tambien la presencia de la bandera CBP y los datos de vector de movimiento.
Modo de codificacion de campo B hacia delante (FORWARDBIT) (1 bit)
FORWARDBIT es un elemento de sintaxis de 1 bit presente en macrobloques de campos B entrelazados si el elemento de sintaxis de nivel de campo FORWARDMB indica que se usa el modo sin procesar. Si FORWARDBIT = 1, entonces el macrobloque se codifica usando el modo hacia delante.
Tipo de prediccion de movimiento de macrobloque B (BMVTYPE) (Tamano variable)
BMVTYPE es un elemento de sintaxis con tamano variable presente en macrobloques de fotogramas B entrelazados y macrobloques de campos B entrelazados que indica si el macrobloque usa prediccion hacia delante, hacia atras o interpolada. Como muestra la Tabla 7, para los macrobloques de fotogramas B entrelazados, el valor de BFRACTION junto con BMVTYPE determina que tipo se usa.
Tabla 7: VLC BMVTYPE
- BMVTYPE
- Tipo de prediccion de movimiento
- BFRACTION <= 1/2
- BFRACTION > 1/2
- 0
- Hacia detras Hacia delante
- 10
- Hacia delante Hacia detras
- 11
- Interpolado Interpolado
En campos B entrelazados, BMVTYPE se envfa si el modo de macrobloque no es hacia delante (como se indica mediante elemento de sintaxis FORWARDMB o FORWARDBIT) y no se esta usando 4MV. En este caso, se usa BMVTYPE para senalizar si el macrobloque B es hacia atras, directo o interpolado. Esto es un VLC sencillo, donde hacia atras = 0, directo = 10, interpolado = 11. En el caso donde el modo de macrobloque no sea hacia delante y 4MV este en uso, BMVTYPE es hacia atras puesto que unicamente estan permitidos modos hacia delante y hacia atras con 4MV.
MV presente interpolado (INTERPMVP) (1 bit)
INTERPMVP es un elemento de sintaxis de 1 bit presente en macrobloques de campo B si el elemento de sintaxis BMVTYPE de nivel de campo indica que el tipo de macrobloque es interpolado. Si INTERPMVP = 1, entonces el MV interpolado esta presente, de otra manera no esta presente.
Vector de movimiento de macrobloque B 1 (BMV1) (Tamano variable)
BMV1 es un elemento de sintaxis con tamano variable que codifica diferencialmente el primer vector de movimiento para el macrobloque.
Vector de movimiento de macrobloque B 2 (BMV2) (Tamano variable)
BMV2 es un elemento de sintaxis de tamano variable presente en macrobloques de fotograma B entrelazado y macrobloques de campo B entrelazado si se usa el modo interpolado. Este elemento de sintaxis codifica diferencialmente el segundo vector de movimiento para el macrobloque.
Patron de bloque de 4MV (4MVBP) (4 bits)
El elemento de sintaxis 4MVBP indica cual de los 4 bloques de luminancia contiene vectores de movimiento diferenciales distintos de cero, el uso del cual se describe en detalle a continuacion.
Datos de vector de movimiento de nivel de bloque (BLKMVDA TA) (Tamano variable)
BLKMVDATA es un elemento de sintaxis con tamano variable que contiene informacion de movimiento para el
5
10
15
20
25
30
35
40
45
50
bloque, y esta presente en macrobloques de 4MV.
Bandera de transformacion de campo (FIELDTX) (1 bit)
FIELDTX es una sintaxis de 1 bit presente en macrobloques de fotograma B entrelazados intra-codificados. Este elemento de sintaxis indica si un macrobloque esta codificado por fotograma o por campo (basicamente, la organizacion interna del macrobloque). FIELDTx = 1 indica que el macrobloque esta codificado por campo. De otra manera, el macrobloque esta codificado por fotograma. En macrobloques inter-codificados, este elemento de sintaxis puede inferirse a partir de MBMODE.
Modo de codificacion de fotograma B directo (DIRECTBBIT) (1 bit)
DIRECTBBIT es un elemento de sintaxis de 1 bit presente en macrobloques de fotograma B entrelazado si la sintaxis de nivel de fotograma DIRECTMB indica que se usa el modo sin procesar. Si DIRECTBBIT = 1, entonces el macrobloque se codifica usando el modo directo.
Conmutacion de MV de fotograma B (MVSW) (1 bit)
MVSW es un elemento de sintaxis de 1 bit presente en macrobloques de fotograma B entrelazado si el MB es en modo de campo y si el BMVTYPE es hacia delante o hacia atras. Si MVSW = 1, entonces el tipo de MV y tipo de prediccion cambian de hacia delante a hacia atras (o de hacia atras a hacia delante) al pasar desde el campo superior al inferior.
Patron de bloque de dos vectores de movimiento (2MVBP) (Tamano variable)
2MVBP es un elemento de sintaxis con tamano variable presente en macrobloques de fotograma B entrelazado. Este elemento de sintaxis esta presente si el elemento de sintaxis MBMODE indica que el macrobloque contiene un vector de movimiento, y si el macrobloque es un macrobloque interpolado. En este caso, 2MVBP indica cual de los dos vectores de movimiento (vectores de movimiento hacia delante y hacia atras) estan presentes.
Datos de vector de movimiento (MVDATA) (Tamano variable)
MVDATA es un elemento de sintaxis con tamano variable que codifica diferenciales para el vector o vectores de movimiento para el macrobloque, la decodificacion de los cuales se describe en detalle a continuacion.
La Figura 58 es un diagrama que muestra una sintaxis de flujo de bits de nivel de macrobloque para campos BI entrelazados en la implementacion combinada. En la implementacion combinada, la sintaxis de flujo de bits de nivel de macrobloque para campos BI entrelazados usa los mismos elementos de sintaxis que los campos I entrelazados.
B. Decodificar campos B entrelazados
Las siguientes secciones describen un procedimiento para decodificar campos B entrelazados en la implementacion combinada.
1. Decodificacion de capa de fotograma/campo
Los campos B entrelazados pueden ser uno de dos tipos: de 1 MV o MV mixto.
En campos B entrelazados de 1 MV, se usa cualquiera de cero, uno o dos vectores de movimiento para indicar el desplazamiento de los bloques previstos, dependiendo del tipo de prediccion (BMVTYPE) de ese macrobloque. Cuando BMVTYPE es igual a DIRECTO, los vectores de movimiento hacia delante y hacia atras se infieren y no se senalizan explfcitamente vectores de movimiento adicionales. Cuando BMVTYPE es INTERPOLADO, se decodifican dos vectores de movimiento: hacia delante y hacia atras. En los casos hacia delante y hacia atras, unicamente se decodifica un vector de movimiento. El modo de 1 MV se senaliza mediante los elementos de sintaxis de capa de imagen de MVMODE.
En campos B entrelazados de MV mixto, cada macrobloque puede codificarse como un macrobloque de 1MV o de 4MV. En macrobloques de 4MV, cada uno de los 4 bloques de luminancia tiene un vector de movimiento asociado con el. Adicionalmente, pueden asociarse unicamente macrobloques de 4MV con tipos de prediccion hacia delante o hacia atras (BMVTYPE) en campos B entrelazados. El modo de 1 MV o 4MV para cada macrobloque se indica mediante el elemento de sintaxis MBMODE en cada macrobloque. El modo de Mv mixto se senaliza mediante los elementos de sintaxis de capa de imagen de MVMODE.
2. Decodificacion de capa de macrobloque
Los macrobloques en campos B entrelazados pueden ser uno de tres posibles tipos: 1 MV, 4MV e intra. Adicionalmente, los macrobloques pueden ser uno de cuatro tipos de prediccion (BMVTYPE): hacia delante, hacia atras, directa o interpolada. El tipo de macrobloque se senaliza mediante el elemento de sintaxis MBMODE en la capa de macrobloque. El tipo de prediccion se senaliza mediante una combinacion del plano de bits de nivel de
5
10
15
20
25
30
35
40
45
50
fotograma FORWARDMB que senaliza hacia delante/no hacia delante para cada macrobloque, y el elemento de sintaxis BMVTYPE de nivel de macrobloque en el caso en el que el tipo de prediccion sea no hacia delante.
Las siguientes secciones describen los tipos de 1 MV y 4MV y como se senalizan.
Macrobloques de 1 MV en campos B entrelazados
Los macrobloques de 1MV pueden tener lugar en campos B entrelazados de 1MV y de MV mixto. En un macrobloque de 1 MV, un unico vector de movimiento representa el desplazamiento entre las imagenes actual y de referencia para todos los seis bloques en el macrobloque. Para un macrobloque de 1 MV, el elemento de sintaxis MBMODE en la capa de macrobloque indica tres cosas:
1) Que el tipo de macrobloque es 1 MV
2) Si el elemento de sintaxis CBPCY esta presente
3) Si el elemento de sintaxis BMV1 esta presente
Si el elemento de sintaxis MBMODE indica que el elemento de sintaxis BMV1 esta presente, entonces el elemento de sintaxis BMV1 esta presente en la capa de macrobloque en la posicion correspondiente. El elemento de sintaxis BMV1 codifica el vector de movimiento diferencial. El vector de movimiento diferencial se combina con el predictor de vector de movimiento para reconstruir el vector de movimiento. Si el elemento de sintaxis MBMODE indica que el elemento de sintaxis BMV1 no esta presente, entonces el vector de movimiento diferencial se supone que es cero y por lo tanto el vector de movimiento es igual al predictor de vector de movimiento.
Si el elemento de sintaxis MBMODE indica que el elemento de sintaxis CBPCY esta presente, entonces el elemento de sintaxis CBPCY esta presente en la capa de macrobloque en la posicion correspondiente. CBPCY indica cual de los seis bloques estan codificados en la capa de bloque. Si el elemento de sintaxis MBMODE indica que CBPCY no esta presente, entonces se supone que CBPCY es igual a 0 y ningun dato de bloque esta presente para ninguno de los seis bloques en el macrobloque.
Adicionalmente, si el tipo de macrobloque es 1 MV y el tipo de prediccion del macrobloque es interpolado, el codificador usa el elemento de sintaxis INTERPMVP para senalizar si esta presente o no el segundo vector de movimiento diferencial, BMV2. Si esta presente, el decodificador decodifica BMV2 inmediatamente despues de BMV1. De otra manera, el vector de movimiento diferencial para BMV2 se supone que es cero, y el segundo vector de movimiento es igual al predictor de vector de movimiento.
Cuando el tipo de prediccion es interpolado, BMV1 corresponde al vector de movimiento hacia delante y BMV2 corresponde al vector de movimiento hacia atras.
Macrobloques de 4MV en campos B entrelazados
Los macrobloques de 4MV pueden tener lugar unicamente en imagenes de campo B de MV mixto y se restringen a tipos de prediccion hacia delante y hacia atras. En un macrobloque de 4MV, cada uno de los 4 bloques de luminancia tiene un vector de movimiento asociado. El desplazamiento para los bloques de crominancia se deriva desde los 4 vectores de movimiento de luminancia. En campos B entrelazados de MV mixto, los macrobloques de 4MV pueden unicamente asociarse con tipos de prediccion hacia delante y hacia atras.
Para un macrobloque de 4MV, el elemento de sintaxis MBMODE en la capa de macrobloque indica tres cosas:
1) Que el tipo de macrobloque es 4MV
2) Si el elemento de sintaxis CBPCY esta presente
3) Si el elemento de sintaxis 4MVBP esta presente
El elemento de sintaxis 4MVBP indica cual de los 4 bloques de luminancia contienen vectores de movimiento diferenciales distintos de cero. El elemento de sintaxis 4MVBp decodifica a un valor entre 0 y 15. Para cada una de las posiciones de 4 bits en el 4MVBP, un valor de 0 indica que ningun vector de movimiento diferencial (BLKMVDATA) esta presente para ese el bloque y que el vector de movimiento diferencial se supone que es 0. Un valor de 1 indica que un vector de movimiento diferencial (BLKMVDATA) esta presente para ese bloque en la posicion correspondiente. Por ejemplo, si 4MVBP se decodifica a un valor de 1100 (binario), entonces el flujo de bits contiene BLKMVDATA para los bloques 0 y 1 y BLKMVDATA no esta presente para los bloques 2 y 3.
Si el elemento de sintaxis MBMODE indica que el elemento de sintaxis 4MVBP no esta presente, entonces se supone que los datos de vector de movimiento diferencial (BLKMVDATA) estan presentes para todos los 4 bloques de luminancia.
Dependiendo de si el elemento de sintaxis MVMODE indica MV mixto o todo 1M el MBMODE senaliza la informacion como sigue. La Tabla 8 a continuacion muestra como el elemento MBMODE senaliza informacion acerca de un macrobloque en una imagen todo 1MV.
5
10
15
20
25
30
Tabla 8: modo de macrobloque en imagenes todo 1 MV
- indice
- Tipo de macrobloque CBP presente MV presente
- 0
- Intra No NA
- 1
- Intra Si NA
- 2
- 1MV No No
- 3
- 1MV No Si
- 4
- 1MV Si No
- 5
- 1MV Si Si
La Tabla 9 a continuacion muestra como el elemento MBMODE senaliza informacion acerca de un macrobloque en una imagen de MV mixto.
Tabla 9: modo de macrobloque en imagenes 1MV mixta
- Indice
- Tipo de macrobloque CBP Presente MV Presente
- 0
- Intra No NA
- 1
- Intra Si NA
- 2
- 1MV No No
- 3
- 1MV No Si
- 4
- 1MV Si No
- 5
- 1MV Si Si
- 6
- 4MV No NA
- 7
- 4MV Si NA
Una de las 8 tablas de codificacion se usa para senalizar el MBMODE. La tabla espedfica usada se senaliza mediante el elemento de sintaxis MBMODETAB.
Las siguientes secciones describen decodificacion de tipo de prediccion y decodificacion de vectores de movimiento de modo directo.
Decodificacidn de tipo de prediccion (BMVTYPE) en campos B entrelazados
El tipo de prediccion se decodifica de acuerdo con las siguientes reglas. Si el plano de bits de nivel de imagen FORWARDMB indica que un macrobloque es de tipo hacia delante, entonces el tipo de prediccion para ese macrobloque se establece a hacia delante. Si el elemento FORWARDMB se codifica sin procesar, entonces un codificador/decodificador usa un bit adicional en el nivel de macrobloque, FORWARDBIT, para decidir si el tipo de prediccion es o no hacia delante.
Si el tipo de prediccion es no hacia delante, y si el macrobloque usa 4MV, segun se senaliza mediante el elemento de sintaxis MBMODE (unicamente posible en una imagen B de MV mixto), entonces un decodificador puede inferir directamente que el tipo de prediccion es hacia atras, puesto que unicamente pueden asociarse tipos hacia delante y hacia atras con modo de 4MV. De otra manera, el decodificador decodifica explfcitamente el elemento de sintaxis BMVTYPE.
Decodificar vectores de movimiento de modo directo en campos B entrelazados
Para decodificar vectores de movimiento de modo directo en campos B entrelazados, un decodificador en primer lugar almacena en memoria intermedia vectores de movimiento desde la imagen de ancla (I o P) previamente decodificada (es decir, temporalmente futura). De estos, el decodificador usa los vectores de movimiento almacenados en memoria intermedia que corresponden al campo superior como predictores en orden para calcular los vectores de movimiento de modo directo en el campo B superior, y usa aquellos correspondientes al campo inferior para calcular los vectores de movimiento del campo B inferior. Por ejemplo, el macrobloque (x, y) en el campo z (z = superior/inferior) hara referencia a los vectores de movimiento almacenados en memoria intermedia desde el macrobloque (x, y) del campo z I o P previamente decodificado (es decir, un macrobloque co-localizado en un campo de ancla de la misma polaridad que el campo actual).
5
10
15
20
25
30
35
40
45
50
55
Si el vector de movimiento almacenado en memoria intermedia desde el imagen de ancla es intra (tal como cuando el campo z previamente decodificado es un campo I) o si la imagen de ancla es un campo P pero el macrobloque (x, y) esta intra-codificado, el decodificador trata el vector de movimiento almacenado en memoria intermedia como (0, 0). Si el macrobloque co-localizado es 1 MV, el decodificador usa ese vector de movimiento. Si el macrobloque co- localizado es de 4Mv, el decodificador usa la logica descrita en el pseudocodigo 5300 en la Figura 53 para calcular el predictor de vector de movimiento.
En el pseudocodigo 5300, SelectDirectModeMVFromColocatedMB deriva el predictor de vector de movimiento para usar en calculos de modo directo. El decodificador puede almacenar en memoria intermedia todos los vectores de movimiento desde la imagen de ancla previamente decodificada y a continuacion aplicar las reglas de modo directo anteriores durante la decodificacion de campos B, o el decodificador puede aplicar las reglas de modo directo anteriores mientras decodifica los campos de ancla y almacena en memoria intermedia los vectores de movimiento resultantes para los campos B.
Con el vector de movimiento obtenido anteriormente, el decodificador aplica logica de cambio de escala (Scale_Direct_MV en la Figura 19). Scale_Direct_MV obtiene los vectores de movimiento que apuntan hacia delante y hacia atras. Scale_Direct_MV puede dar como resultado vectores de movimiento hacia delante y hacia atras que apuntan a ambos campos superior e inferior. Esto es eficaz puesto que los vectores de movimiento directo se evaluan mediante el codificador y se seleccionan unicamente cuando proporcionan buena prediccion, y tambien puesto que los campos B entrelazados usan dos campos de referencia en ambas direcciones hacia delante y hacia atras.
En una implementacion alternativa, podna usarse cualquier otro procedimiento para generar los vectores de movimiento para cambiar de escala en modo directo, incluyendo procedimientos que no implican ningun almacenamiento en memoria intermedia, que puede ser utiles en dispositivos restringidos en memoria (por ejemplo, usando un generador de numeros aleatorio para similar una distribucion de Laplace desviada a cero). Un procedimiento de este tipo funcionana aun, puesto que un buen codificador descartana malos intentos para vectores de movimiento de modo directo, dejando los mas precisos en el flujo de bits.
3. Procedimiento de decodificacion de vector de movimiento
Las siguientes secciones describen el procedimiento de decodificaron de vector de movimiento para los bloques y macrobloques de campos B entrelazados en la implementacion combinada.
Rellenar los contextos de prediccion hacia delante y hacia atras
Los vectores de movimiento hacia delante y hacia atras se almacenan en memoria intermedia por separado y se usan para predecir vectores de movimiento hacia delante y hacia atras, respectivamente. El uso de memorias intermedias separadas para contextos hacia delante y hacia atras se describe, por ejemplo, en la seccion X anterior. Las tecnicas para seleccion de predictores de vector de movimiento se describen en los antecedentes en la seccion III, la descripcion detallada en la seccion III, y en otras partes de la memoria descriptiva.
Hay dos detalles adicionales que anadir cuando se rellena la memoria intermedia hacia atras (la memoria intermedia de “direccion faltante”) con el vector de movimiento previsto cuando se decodifica un vector de movimiento hacia delante (o rellenar la memoria intermedia hacia delante cuando se decodifica un vector de movimiento hacia atras). Tfpicamente, un codificador/decodificador puede usar tanto la informacion de tipo de vector de movimiento (por ejemplo, 1 MV, etc.) asf como la polaridad del vector de movimiento previamente decodificado para formar la prediccion. Sin embargo, en el caso de “relleno de huecos”, un codificador/decodificador no tiene informacion de tipo de vector de movimiento o informacion de polaridad (por ejemplo, misma polaridad o polaridad opuesta) puesto que el codificador/decodificador no decodifico realmente un vector de movimiento del tipo de direccion faltante. En esta implementacion combinada, el codificador/decodificador establece el tipo de vector de movimiento a 1 MV y elige el vector de movimiento de campo dominante como el predictor. El pseudocodigo 4700 en la Figura 47 describe el procedimiento de seleccion de polaridad en esta implementacion combinada.
Para macrobloques intra codificados, el “vector de movimiento intra” se usa para relleno tanto en los planos de prediccion de movimiento hacia delante como hacia atras. Cualquier representacion coherente de “vector de movimiento intra” puede elegirse mediante la implementacion del decodificador. Por ejemplo, si los vectores de movimiento se estan almacenando en una matriz corta de 2 bytes, entonces el “vector de movimiento intra” podna representarse como una constante larga unica que se rellena en la matriz de vector de movimiento para indicar que el macrobloque se codifico como intra.
Prediccion de vector de movimiento hacia delante en campos B
La distancia de fotograma de referencia hacia delante se calcula desde el elemento de sintaxis BFRACTION y desde el elemento de sintaxis REFDIST. La prediccion de vector de movimiento hacia delante continua como se ha descrito anteriormente en la seccion X.
5
10
15
20
25
30
35
La distancia de fotograma de referencia hacia atras se calcula desde el elemento de sintaxis BFRACTION y desde el elemento de sintaxis REFDIST. La prediccion de vector de movimiento hacia delante continua como se ha descrito anteriormente en la seccion X.
Decodificar vectores de movimiento diferenciales
Los elementos de sintaxis BMV1, BMV2 o BLKMVDATA codifican informacion de movimiento para macrobloques o los bloques en el macrobloque. Los macrobloques de 1 MV tienen un elemento de sintaxis BMV1 y un BMV2, y los macrobloques de 4MV pueden tener entre cero y cuatro elementos BLKMVDATA.
Cuando el tipo de prediccion (BMVTYPE) es interpolado, BMV1 corresponde al vector de movimiento residual hacia delante y bMV2 corresponde al de hacia atras.
Las siguientes secciones describen como calcular el vector de movimiento diferencial para el caso de dos referencias que se aplica a imagenes B.
Vectores de movimiento diferenciales en imagenes de campo de dos referencias
Las imagenes de campo de dos referencias tienen lugar en la codificacion de fotogramas entrelazados que usan imagenes de campo. Cada fotograma de la secuencia se separa en dos campos, y cada campo se codifica usando lo que es esencialmente la trayectoria de codificacion progresiva.
En imagenes de campo que tienen dos campos de referencia (tal como imagenes con campos B entrelazados), cada elemento de sintaxis MVDATA o BLKMVDATA en la capa de macrobloque codifica conjuntamente tres cosas: 1) el componente de vector de movimiento diferencial horizontal, 2) el componente de vector de movimiento diferencial vertical y 3) si se usa el predictor dominante o no dominante, es decir, cual de los dos campos se hace referencia por el vector de movimiento.
El elemento de sintaxis MVDATA o BLKMVDATA es una palabra de codigo de Huffman de longitud variable seguida por una palabra de codigo de longitud fija. El valor de la palabra de codigo de Huffman determina el tamano de la palabra de codigo de longitud fija. El elemento de sintaxis MVTAB en la capa de imagen especifica la tabla de Huffman usada para decodificar la palabra de codigo con longitud variable. El pseudocodigo 6l0o en la Figura 61A ilustra como se decodifica el vector de movimiento diferencial y la informacion de predictor dominante/no dominante.
Los valores de predictor_flag, dmv_x y dmv_y se calculan en el pseudocodigo 6100 en la Figura 61A. Los valores en el pseudocodigo 6100 se definen como sigue:
dmv_x: componente de vector de movimiento horizontal diferencial, dmv_y: componente de vector de movimiento vertical diferencial, k_x, k_y. longitud fija para vectores de movimiento largos,
k_x y k_y dependen del intervalo del vector de movimiento como se define por el sfmbolo MVRANGE.
Tabla 10: k_x y k_y especificados por MVRANGE
- MVRANGE
- k_x k_y range_x Range_y
- 0 (por defecto)
- 9 8 256 128
- 10
- 10
- 9 512 256
- 110
- 12 10 2048 512
- 111
- 13 11 4096 1024
- extend_x: intervalo extendido para vector de movimiento horizontal diferencial, extend_y: intervalo extendido para vector de movimiento vertical diferencial, extend x y extend y se derivan a partir del elemento de sintaxis del campo de imagen DMVRANGE. Si
- DMVRANGE indica que se usa el intervalo extendido para el componente horizontal, entonces extend x = 1.
- De otra manera extend
- <•= 0. De manera similar, si DMVRANGE indica que se usa el intervalo extendido
- para el componente vertical, entonces extend_y = 1 de otra manera extend_y = 0.
La variable predictor_flag es una bandera binaria que indica si se usa el predictor de vector de movimiento dominante o no dominante (0 = predictor dominante usado, 1 = predictor no dominante usado). La matriz offset_table y la matriz size_table se definen como se muestra en la Figura 61A.
El pseudocodigo 6110 en la Figura 61B ilustra como se decodifica el vector de movimiento diferencial para un campo de dos referencias en una implementacion combinada alternativa. El pseudocodigo 6110 decodifica vectores de
5
10
15
20
25
30
35
40
45
50
movimiento diferenciales de una manera diferente. Por ejemplo, el pseudocodigo 6110 omite el manejo de los intervalos de vector de movimiento diferencial extendidos.
Predictores de vector de movimiento
Los vectores de movimiento se calculan anadiendo el vector de movimiento diferencial calculado en la seccion anterior a un predictor de vector de movimiento. Las siguientes secciones describen como se calculan los predictores de vector de movimiento para macrobloques en campos B entrelazados de 1 MV y MV mixto en esta implementacion combinada.
Predictores de vector de movimiento en campos B entrelazados de 1 MV
Las Figuras 5A y 5B son diagramas que muestran las localizaciones de macrobloques considerados para predictores de vector de movimiento candidato para un macrobloque de 1 MV. Los predictores candidatos se toman desde el macrobloque izquierdo, superior y superior derecho, excepto en el caso donde el macrobloque es el ultimo macrobloque en la fila. En este caso, el Predictor B se toma desde el macrobloque superior izquierdo en lugar del superior-derecho. Para el caso especial donde el fotograma es de un macrobloque de ancho, el predictor es siempre el Predictor A (el predictor superior). Los casos especiales para el macrobloque actual que esta en la fila superior (con predictores no A y B, o con ningun predictor en absoluto) se han tratado anteriormente con referencia a las Figuras 33A-33F y a continuacion con referencia a las Figuras 62A-62F.
Predictores de vector de movimiento en campos B entrelazados de MV mixto
Las Figuras 6A-10 muestran las localizaciones de los bloques o macrobloques considerados para los vectores de movimiento candidatos para un vector de movimiento para un macrobloque de 1 MV o 4MV en campos B entrelazados de MV mixto.
Predictores de MV dominante y no dominante en campos B entrelazados
Para cada macrobloque inter-codificado, se derivan dos predictores de vector de movimiento. Uno proviene del campo dominante y el otro proviene del campo no dominante. El campo dominante se considera que es el campo que contiene la mayona de los candidatos de predictor de vector de movimiento de valor real en las cercamas. En el caso de un empate, el predictor de vector de movimiento para el campo opuesto se considera que es el predictor dominante (puesto que es temporalmente mas cercano). Los macrobloques intra-codificados no se consideran en el calculo del predictor dominante/no dominante. Si todos los macrobloques de predictor candidatos estan intra- codificados, entonces los predictores dominante y no dominante de vector de movimiento se establecen a cero y el predictor dominante se toma para que sea desde el campo opuesto.
Calcular el predictor de vector de movimiento en campos B entrelazados
Se calculan dos predictores de vector de movimiento para cada vector de movimiento de un bloque o macrobloque, uno para cada referencia. El pseudocodigo 6200 en las Figuras 62A-62F describe como se calculan los predictores de vector de movimiento para el caso de dos referencias en la implementacion combinada. (El pseudocodigo 3300 en las Figuras 33A-33F describe como se calculan los predictores de vector de movimiento para el caso de dos referencias en otra implementacion). En imagenes de dos referencias el campo actual puede hacer referencia a los dos campos mas recientes. Un predictor es para el campo de referencia de la misma polaridad y el otro es para el campo de referencia con la polaridad opuesta.
Reconstruir vectores de movimiento en campos B entrelazados
Las siguientes secciones describen como reconstruir los vectores de movimiento de luminancia y crominancia para macrobloques de 1 MV y de 4MV. Despues de que se reconstruye un vector de movimiento, puede usarse posteriormente como un vector de movimiento vecino para predecir el vector de movimiento para un macrobloque cercano. El vector de movimiento tendra una polaridad asociada de “misma” u “opuesta”, y puede usarse para derivar un predictor de vector de movimiento para la polaridad del otro campo para prediccion de vector de movimiento.
Reconstruccion de Vector de movimiento de luminancia en campos B entrelazados
En todos los casos (macrobloques de 1MV y de 4MV) el vector de movimiento de luminancia se reconstruye anadiendo el diferencial al predictor como sigue:
mv_x = (dmv_x + predictor_x) smod range_x
mv_y = (dmv_y + predictor_y) smod range_y
La operacion modulo “smod” es un modulo con signo, que se define como sigue:
A smod b = ((A + b) % (2*b))-b
5
10
15
20
25
30
35
40
45
50
Esto asegura que los vectores reconstruidos son validos. (A smod b) radica dentro de -b y b-1. range_x y range_y dependen de MVRANGE.
Puesto que la imagen de campo B entrelazado usa dos imagenes de referencia, predictor_flag derivada despues de decodificar el vector de movimiento diferencial se combina con el valor de dominantpredictor derivado de la prediccion de vector de movimiento para determinar que campo se usa como referencia. El pseudocodigo 6300 en la Figura 63 describe como se determina el campo de referencia.
En macrobloques de 1 MV habra un unico vector de movimiento para los cuatro bloques que componen el componente de luminancia del macrobloque. Si el elemento de sintaxis MBMODE indica que no estan presentes datos de MV en la capa de macrobloque, entonces dmv_x = 0 y dmv_y = 0 (mv_x = predictor_x y mv_y = predictor_y).
En macrobloques de 4MV, cada uno de los bloques de luminancia inter-codificados en un macrobloque tendra su propio vector de movimiento. Por lo tanto habra entre cero y cuatro vectores de movimiento de luminancia en cada macrobloque de 4MV. Si el elemento de sintaxis 4MVBP indica que no esta presente informacion de vector de movimiento para un bloque, entonces dmv_x = 0 y dmv_y = 0 para ese el bloque (mv_x = predictor_x y mv_y = predictor_y).
Reconstruccion de vector de movimiento de crominancia
Los vectores de movimiento de crominancia se derivan desde los vectores de movimiento de luminancia. Tambien, para macrobloques de 4MV, la decision sobre si codificar los bloques de crominancia como Inter o Intra se realiza basandose en el estado de los bloques o campos de luminancia.
C. Decodificar fotogramas P entrelazados
Antes de describir el procedimiento para decodificar fotogramas B entrelazados en la implementacion combinada, se describe un procedimiento para decodificar fotogramas P entrelazados. La seccion que describe el procedimiento para decodificar fotogramas B entrelazados continuara con referencia a conceptos analizados en esta seccion.
1. Decodificacion de capa de macrobloque de fotogramas P entrelazados
En un fotograma P entrelazado, cada macrobloque puede compensarse en movimiento en modo de fotograma usando uno o cuatro vectores de movimiento o en modo de campo usando dos o cuatro vectores de movimiento. Un macrobloque que esta inter-codificado no contiene ningun intra bloque. Ademas, el residuo despues de la compensacion de movimiento puede codificarse en modo de transformacion de fotograma o modo de transformacion de campo. Mas espedficamente, los componentes de luminancia del residuo se reorganizan de acuerdo con los campos si se codifican en modo de transformacion de campo y permanecen sin cambiar en modo de transformacion de fotograma mientras que el componente de crominancia permanece igual. Un macrobloque puede codificarse tambien como intra.
La compensacion de movimiento puede restringirse para no incluir cuatro (tanto de campo/fotograma) vectores de movimiento, y esto se senaliza a traves de 4MVSWITCH. El tipo de compensacion de movimiento y codificacion residual se indica conjuntamente para cada macrobloque a traves de MBMODE y SKIPMB. MBMODE emplea un conjunto de tablas diferente de acuerdo con 4MVSWITCH.
Los macrobloques en fotogramas P entrelazados se clasifican en cinco tipos: 1 MV, MV de 2 campos, MV de 4 fotogramas, MV de 4 campos e intra. Los primeros cuatro tipos de macrobloques estan inter-codificados mientras que el ultimo tipo indica que el macrobloque esta intra-codificado El tipo de macrobloque se senaliza mediante el elemento de sintaxis MBMODE en la capa de macrobloque junto con el bit de salto. MBMODE codifica conjuntamente tipos de macrobloque junto con diversas piezas de informacion con respecto al macrobloque para diferentes tipos de macrobloque.
Senalizacion de macrobloque saltado
El campo SKIPMB indica la condicion de salto para un macrobloque. Si el campo SKIPMB es 1, entonces el macrobloque actual se dice que se salta y no se envfa otra informacion despues del campo SKIPMB. La condicion de salto implica que el macrobloque actual es de 1 MV con vector de movimiento diferencial cero (es decir el macrobloque esta compensado en movimiento usando su predictor de movimiento de 1 MV) y no hay bloques codificados (CBP = 0).
Por otra parte, si el campo SKIPMB no es 1, el campo MBMODE se decodifica para indicar el tipo de macrobloque y otra informacion con respecto al macrobloque actual, tal como informacion descrita en la siguiente seccion.
Senalizacion de modo de macrobloque
Hay quince posibles eventos que se indican por MBMODE; MBMODE especifica conjuntamente el tipo de macrobloque (1MV, MV de 4 fotogramas, MV de 2 campos, MV de 4 campos o intra), tipos de transformacion para
5
10
15
20
25
30
35
40
45
50
macrobloque inter-codificado (es decir bloques de campo o fotograma o no codificados), y si hay un vector de movimiento diferencial para el macrobloque de 1 MV.
Indicando <MVP> un evento binario que senaliza si hay o no vector de movimiento diferencial de 1 MV distinto de cero. Indicando <transformacion de campo/fotograma> un evento ternario que senaliza si el residuo del macrobloque esta codificado por transformacion de fotograma, codificado por transformacion de campo o cero bloques codificados (es decir CBP = 0). MBMODE senaliza el siguiente conjunto de eventos conjuntamente:
MBMODE = { <1MV, MVP, transformacion de campo/fotograma>, <MV de 2 campos,
trasformacion de campo/fotograma>, <MV de 4 fotogramas, transformacion de
campo/fotograma>, <MV de 4 campos, transformacion de campo/fotograma>, <INTRA>}; excluyendo el caso donde <1MV, MVP=0, CBP=0>, que se senaliza mediante la condicion de salto.
Para macrobloques inter-codificados, el elemento de sintaxis CBPCY no se decodifica cuando el evento de transformacion de campo/fotograma en MBMODE indica no bloques codificados. Por otra parte, si el evento de transformacion de campo/fotograma en MBMODE indica transformacion de campo o fotograma, entonces se decodifica CBPCY. El evento codificado <transformacion de campo/fotograma> se usa para establecer la bandera FIELDTX. Si este evento indica que el macrobloque esta codificado por transformacion de campo, FIELDTX se establece a uno. Si el evento indica que el macrobloque esta codificado por transformacion de fotograma, FIELDTX se establece a cero. Si el evento indica un bloque codificado a cero, FIELDTX se establece al mismo tipo que el vector de movimiento, es decir, FIELDTX se establece a 1 si es un FIELDMV, y se establece a 0 si es un MV de FOTOGRAMA.
Para unos macrobloques inter-codificados no de 1MV, se envfa un campo adicional para indicar el evento de vectores de movimiento diferencial de cero. En el caso de macrobloques de MV de 2 campos, el campo 2MVBP se envfa para indicar cual de los dos vectores de movimiento contiene vectores de movimiento diferencial distintos de cero. De manera similar, el campo 4MVBP se envfa para indicar cual de los cuatro vectores de movimiento contiene vectores de movimiento diferencial distintos de cero.
Para macrobloques intra-codificados, los bloques de transformacion de campo/fotograma y codificados a cero se codifican en campos separados.
2. Decodificacion de vector de movimiento para fotogramas P entrelazados
Predictores de vector de movimiento para fotogramas P entrelazados
El procedimiento de calcular el predictor o predictores de vector de movimiento para el macrobloque actual consiste en dos etapas. En primer lugar, se recopilan tres vectores de movimiento candidatos para el macrobloque actual desde sus macrobloques vecinos. En segundo lugar, el predictor o predictores de vector de movimiento para el macrobloque actual se calculan desde el conjunto de vectores de movimiento candidatos. Las Figuras 40A-40B muestran macrobloques vecinos desde los cuales se recuperan los vectores de movimiento candidatos. El orden de la recopilacion de vectores de movimiento candidatos es importante. En esta implementacion combinada, el orden de la recopilacion siempre se inicia en A, continua a B y finaliza en C. Observese que un candidato de predictor se considera que es no existente si el correspondiente bloque esta fuera del lfmite de fotograma o si el correspondiente bloque es parte de un corte diferente. Por lo tanto, la prediccion de vector de movimiento no se realiza a traves de lfmites de corte.
Las siguientes secciones describen como se recopilan los vectores de movimiento candidatos para diferentes tipos de macrobloques y como se calculan los predictores de vector de movimiento.
Vectores de movimiento candidatos de 1MV
En esta implementacion combinada, el pseudocodigo 6400 en la Figura 64 se usa para recopilar los hasta tres vectores de movimiento candidatos para el vector de movimiento:
Vectores de movimiento candidatos de MV de 4 fotogramas
Para macrobloques de MV de 4 tramas, para cada uno de los cuatro vectores de movimiento de bloque de fotograma en el macrobloque actual, se recopilan los vectores de movimiento candidatos desde los bloques vecinos. En esta implementacion combinada, el pseudocodigo 6500 en la Figura 65 se usa para recopilar los hasta tres vectores de movimiento candidatos para el vector de movimiento de bloque de fotograma superior izquierdo. El pseudocodigo 6600 en la Figura 66 se usa para recopilar los hasta tres vectores de movimiento candidatos para el vector de movimiento de bloque de fotograma superior derecho. El pseudocodigo 6700 en la Figura 67 se usa parar recopilar los hasta tres vectores de movimiento candidatos para el vector de movimiento de bloque de fotograma inferior izquierdo. El pseudocodigo 6800 en la Figura 68 se usa para recopilar los hasta tres vectores de movimiento candidatos para el vector de movimiento de bloque de fotograma inferior derecho.
5
10
15
20
25
30
35
40
45
50
Para macrobloques de MV de 2 campos, para cada uno de los dos vectores de movimiento de campo en el macrobloque actual, se recopilan los vectores de movimiento candidatos desde los bloques vecinos. El pseudocodigo 6900 en la Figura 69 se usa para recopilar los hasta tres vectores de movimiento candidatos para el vector de movimiento de campo superior. El pseudocodigo 7000 en la Figura 70 se usa para recopilar los hasta tres vectores de movimiento candidatos para el vector de movimiento de campo inferior.
Derivacion de vectores de movimiento candidatos de MV de 4 campos
Para macrobloques de MV de 4 campos, para cada uno de los cuatro bloques de campo en el macrobloque actual, se recopilan los vectores de movimiento candidatos desde los bloques vecinos. El pseudocodigo 7100 en la Figura 71 se usa para recopilar los hasta tres vectores de movimiento candidatos para el vector de movimiento de bloque de campo superior izquierdo. El pseudocodigo 7200 en la Figura 72 se usa para recopilar los hasta tres vectores de movimiento candidatos para el bloque vector de movimiento de campo superior derecho. El pseudocodigo 7300 en la Figura 73 se usa para recopilar los hasta tres vectores de movimiento candidatos para el vector de movimiento de bloque de campo inferior izquierdo. El pseudocodigo 7400 en la Figura 74 se usa para recopilar los hasta tres vectores de movimiento candidatos para el vector de movimiento de bloque de campo inferior derecho.
Vectores de movimiento de campo promedio
Dados dos vectores de movimiento de campo (MVX1, MVYi) y (MVX2, MVY2), la operacion de promedio usada para formar un vector de movimiento de candidato (MVXa, MVYa) es:
MVXa = (MVX1 + MVX2 + 1) >> 1;
MVYa = (MVYi + MVY2 + 1) >> 1;
Calcular predictores de MV de fotograma desde vectores de movimiento candidatos
Esta seccion describe como se calculan predictores de vector de movimiento para vectores de movimiento de fotograma dado un conjunto de vectores de movimiento candidatos. En esta implementacion combinada, la operacion es la misma para calcular el predictor para 1 MV o para cada uno de los cuatro vectores de movimiento de bloque de fotograma en macrobloques de MV de 4 fotogramas.
El pseudocodigo 7500 en la Figura 75 describe como el predictor de vector de movimiento (PMVx, PMVy) se calcula para vectores de movimiento de fotograma. En el pseudocodigo 7500, TotalValidMV indica el numero total de vectores de movimiento en el conjunto de vectores de movimiento candidatos (TotalValidMV = 0, 1, 2 o 3), la matriz ValidMV indica el vector de movimiento en el conjunto de vectores de movimiento candidatos.
Calcular predictores de MV de campo desde vectores de movimiento candidatos
Esta seccion describe como se calculan predictores de vector de movimiento para vectores de movimiento de campo dado el conjunto de vectores de movimiento candidatos. La operacion es la misma para calcular el predictor para cada uno de los dos vectores de movimiento de campo en macrobloques de MV de 2 campos o para cada uno de los cuatro vectores de movimiento de bloque de campo en macrobloques de MV de 4 campos.
En primer lugar, los vectores de movimiento candidatos se separan en dos conjuntos, donde un conjunto contiene unicamente vectores de movimiento candidatos que apuntan al mismo campo que el campo actual y el otro conjunto contiene vectores de movimiento candidatos que apuntan al campo opuesto. Suponiendo que los vectores de movimiento candidatos se representan en unidades de cuarto de pixel, el codificador o decodificador puede comprobar si un vector de movimiento de candidato apunta al mismo campo mediante la siguiente comprobacion en su componente y:
if (ValidMVy & 4) {
ValidMV apunta al campo opuesto.
}else{
ValidMV apunta al mismo campo.
}
El pseudocodigo 7600 en la Figura 76 describe como el predictor de vector de movimiento (PMVx, PMVy) se calcula para vectores de movimiento de campo. En el pseudocodigo 7600, SameFieldMV y OppFieldMV indican dos conjuntos de vectores de movimiento candidatos y NumSameFieldMV y NumOppFieldMV indican el numero de vectores de movimiento candidatos que pertenecen a cada conjunto. El orden de vectores de movimiento candidatos en cada conjunto se inicia con el candidato A si existe, seguido por el candidato B si existe, y a continuacion el candidato C si existe. Por ejemplo, si el conjunto de vectores de movimiento candidatos de SameFieldMV contiene unicamente el candidato B y el candidato C, entonces SameFieldMV[0] es el candidato B.
Decodificar vectores de movimiento diferenciales
5
10
15
20
25
30
35
40
45
50
Los elementos de sintaxis de MVDATA contienen informacion de vector de movimiento diferencial para el macrobloque. Dependiendo del tipo de compensacion de movimiento y patron de bloque de vector de movimiento senalizado en cada macrobloque, puede haber hasta cuatro elementos de sintaxis MVDATA por macrobloque. Mas espedficamente,
• Para macrobloques de 1 MV, puede haber cualquiera del elemento de sintaxis MVDATA 0 o 1 presente dependiendo del campo MVP en MBMODE.
• Para macrobloques de MV de 2 campos, puede haber cualquiera del elemento o elementos de sintaxis MVDATA 0, 1, o 2 presentes dependiendo de 2MVBP.
• Para macrobloques de MV de 4 fotogramas / campos, puede haber cualquiera del elementos o elementos de sintaxis MVDATA 0, 1, 2, 3 o 4 presentes dependiendo de 4MVBP.
En esta implementacion combinada, el vector de movimiento diferencial se decodifica de la misma manera que un vector de movimiento diferencial campo de referencia para campos P entrelazados. (El pseudocodigo 7700 en la Figura 77A ilustra como se decodifica el vector de movimiento diferencial para un campo de una referencia. El pseudocodigo 7710 en la Figura 77B ilustra como se decodifica el vector de movimiento diferencial para un campo de una referencia en una implementacion combinada alternativa. El pseudocodigo 7710 decodifica vectores de movimiento diferenciales de una manera diferente. Por ejemplo, el pseudocodigo 7710 omite el manejo de intervalos de vector de movimiento diferenciales extendidos).
Reconstruir vectores de movimiento
Dado el vector de movimiento diferencial dmv, el vector de movimiento de luminancia se reconstruye anadiendo el diferencial al predictor como se describe en la seccion XV.B.3 anterior. Dado un vector de movimiento de fotograma
0 campo de luminancia, se deriva un correspondiente vector de movimiento de fotograma o campo de crominancia para compensar una porcion de o el bloque de Cb/Cr completo. El pseudocodigo 7800 en la Figura 78 describe como se deriva un vector de movimiento de crominancia CMV desde un vector de movimiento de luminancia LMV en fotogramas P entrelazados.
D. Decodificar fotogramas B entrelazados
Esta seccion describe el procedimiento para decodificar fotogramas B entrelazados en la implementacion combinada, con referencia a conceptos analizados en la seccion anterior.
1. Decodificacion de capa de macrobloque de fotogramas B entrelazados
En el nivel de macrobloque, la sintaxis de fotograma B entrelazado es similar a la sintaxis de fotograma P entrelazado anteriormente descrita. Los macrobloques en fotogramas B entrelazados se clasifican en 3 tipos. 1 MV, MV de 2 campos e intra. Los modos de MV de 4 fotogramas y MV de 4 campos no estan permitidos para fotogramas B entrelazados en esta implementacion combinada. Los tres modos se codifican conjuntamente con el elemento de sintaxis MBMODE, como en fotogramas P entrelazados. Cada macrobloque se predice tambien como hacia delante, hacia atras, directo o interpolado (usando los elementos de sintaxis DIRECTMB y BMVTYPE). Si un macrobloque de
1 MV es cualquiera de hacia delante o hacia atras, usa un unico vector de movimiento. Si es 1 MV pero directo o interpolado, usa dos vectores de movimiento. Si es de tipo MV de 2 campos y cualquiera de previsto hacia delante o hacia atras, entonces usa dos vectores de movimiento. Si es de tipo MV de 2 campos y directo o interpolado, entonces usa cuatro vectores de movimiento.
Las siguientes secciones describen caractensticas de diferentes tipos de macrobloque inter-codificado en fotogramas B entrelazados.
Macrobloques de 1MV en fotogramas B entrelazados
En un macrobloque de 1 MV en un fotograma B entrelazado, el desplazamiento de los bloques de luminancia se representa mediante un unico vector de movimiento cuando el tipo de prediccion es hacia delante o hacia atras, y mediante dos vectores de movimiento cuando el tipo es directo o interpolado. Se derivan los correspondientes vectores de movimiento de crominancia en cada caso. En el caso de prediccion interpolada y directa, los pfxeles de movimiento compensado desde imagenes de referencia hacia delante y hacia atras se promedian para formar la prediccion final.
Macrobloques de MV de 2 campos en fotogramas B entrelazados
En macrobloques de MV de 2 campos en fotogramas B entrelazados, el desplazamiento de cada campo de los bloques de luminancia se describe mediante un vector de movimiento diferente, como se muestra en la Figura 37. Adicionalmente, el tipo de prediccion se permite conmutar desde hacia delante a hacia atras o viceversa al pasar desde el campo superior al inferior, permitiendo por lo tanto que el campo superior se compense en movimiento desde una imagen de referencia y que el campo inferior se compense en movimiento desde la otra imagen de referencia, como se analiza en la seccion VII, anterior.
5
10
15
20
25
30
35
40
45
50
En un macrobloque de 1MV, un codificador usa el elemento de sintaxis 2MVBP en modo interpolado para indicar cual de los dos vectores de movimiento esta presente. El bit 1 corresponde al vector de movimiento hacia delante y el bit 0 corresponde al vector de movimiento hacia atras.
En un macrobloque de MV de 2 campos, un codificador usa el elemento de sintaxis 2MVBP en modo hacia delante y hacia atras para indicar cual de los dos vectores de movimiento de campo esta presente. El bit 1 corresponde al vector de movimiento de campo superior y el bit 0 corresponde al vector de movimiento de campo inferior. El codificador usa la misma senalizacion superior/inferior cuando se usa el elemento de sintaxis MVSW para conmutar desde prediccion hacia delante para el campo superior a prediccion hacia atras para el campo inferior, o viceversa. El codificador usa el elemento de sintaxis 4MVBP en modo interpolado para indicar cual de los cuatro vectores de movimiento esta presente. El bit 3 corresponde al vector de movimiento hacia delante de campo superior, el bit 2 corresponde al vector de movimiento hacia atras de campo superior, el bit 1 corresponde al vector de movimiento hacia delante de campo inferior, y el bit 0 corresponde al vector de movimiento hacia atras de campo inferior.
Los bits de 2MVBP y 4MVBP establecidos a '1' significan que el vector de movimiento diferencial correspondiente esta presente, mientras que los bits establecidos a '0' significan que el vector de movimiento correspondiente es igual al vector de movimiento previsto, es decir que no hay vector de movimiento diferencial correspondiente presente. Los vectores de movimiento decodificados reales se envfan en el mismo orden que los bits en 2MVBP o 4MVBP. Por ejemplo, en un macrobloque de MV de 2 campos que usa modo interpolado, el primer vector de movimiento a recibirse mediante el decodificador es el vector de movimiento hacia delante de campo superior, y el ultimo (es decir, cuarto) vector de movimiento a recibirse es el vector de movimiento hacia atras de campo inferior.
Senalizacion de macrobloque saltado
Los macrobloques saltados se senalizan de la misma manera que con fotogramas P. Sin embargo, los macrobloques saltados en fotogramas B entrelazados se restringen a tipo de fotograma de 1 MV, es decir no estan permitidos tipos de campo. El vector de movimiento se codifica con un vector de movimiento de diferencial cero (es decir el macrobloque esta compensado en movimiento usando su predictor de movimiento de 1 MV) y no hay bloques codificados (CBP = 0). Si un macrobloque se salta, el codificador envfa unicamente la informacion de BMVTYPE para ese macrobloque, de modo que los vectores de movimiento pueden predecirse correctamente como hacia delante, hacia atras, directo o interpolado.
Senalizacion de modo de macrobloque
La senalizacion de modo de macrobloque se realiza de la misma manera que los fotogramas P entrelazados, como se ha descrito en la seccion XV.C. anterior.
Decodificacion de tipo de prediccion (BMVTYPE y MVSW)
El tipo de prediccion se decodifica para fotogramas B entrelazados de acuerdo con las siguientes reglas. Si el plano de bits de nivel de imagen DIRECTMB indica que un macrobloque es de tipo directo, entonces el tipo de prediccion para ese macrobloque se establece a directo. Si la decision directo/no directo se codifica en modo sin procesar, el codificador usa un bit adicional en el nivel de macrobloque, DIRECTBBIT, para indicar si el tipo de prediccion es directo o no.
Si el tipo de prediccion es no directo, entonces el decodificador decodifica el elemento de sintaxis BMVTYPE. Si el modo de macrobloque es “codificado con campo de 2 MV” y si el BMVTYPE es cualquiera de hacia delante o hacia atras, el decodificador tambien decodifica el bit de MVSW para decidir si cambiara o no el tipo de prediccion (es decir, dar la vuelta desde hacia delante a hacia atras o viceversa) al pasar desde el campo superior al inferior para ese macrobloque.
Decodificar vectores de movimiento de modo directo
Para decodificar vectores de movimiento de modo directo, un decodificador almacena en primer lugar en memoria intermedia vectores de movimiento desde el fotograma de ancla previamente decodificado. Espedficamente, para un fotograma P futuro previamente decodificado, el decodificador almacena en memoria intermedia la mitad del numero maximo posible de vectores de movimiento de luminancia decodificados desde el fotograma P futuro (es decir, (2 * Numero de MB) vectores de movimiento). El procedimiento de seleccion de estos vectores de movimiento para almacenar en memoria intermedia desde el fotograma de ancla se ha descrito en la seccion XIII anterior.
Con los vectores de movimiento anteriormente obtenidos, el decodificador aplica la logica de cambio de escala en Scale_Direct_MV, como se muestra en el pseudocodigo 1900 en la Figura 19, para obtener vectores de movimiento que apuntan hacia delante y hacia atras, sin retirar el vector de movimiento.
En esta implementacion combinada, no hay calculo de vectores de movimiento de modo directo para macrobloques que no estan usando prediccion de modo directo, tal como macrobloques previstos hacia delante y hacia atras. En
su lugar, los vectores de movimiento para macrobloques no directos se predicen basandose en las memorias intermedias de vector de movimiento hacia delante o hacia atras.
2. Decodificar vector de movimiento para fotogramas B entrelazados
Predictores de vector de movimiento para fotogramas B entrelazados
5 Como con fotogramas P entrelazados, el procedimiento de calcular los predictores de vector de movimiento para un macrobloque actual en un fotograma B entrelazado incluye recoger vectores de movimiento candidatos para el macrobloque actual desde sus macrobloques vecinos, y calcular los predictores de vector de movimiento para el macrobloque actual desde el conjunto de vectores de movimiento candidatos. Las Figuras 40A-40B muestran macrobloques vecinos desde los que se recogen los vectores de movimiento candidatos. En esta implementacion 10 combinada, los predictores de vector de movimiento para fotogramas B entrelazados se seleccionan desde un conjunto de candidatos de acuerdo con las reglas descritas en la seccion XV.C. anterior para fotogramas P entrelazados.
Se usan contextos de prediccion separados para vectores de movimiento de modo hacia delante y hacia atras. El decodificador usa el contexto de prediccion hacia delante para predecir vectores de movimiento hacia delante y el 15 contexto de prediccion hacia atras para predecir vectores de movimiento hacia atras.
Rellenar los contextos de prediccion hacia delante y hacia atras en fotogramas B entrelazados
El decodificador almacena en memoria intermedia los vectores de movimiento hacia delante y hacia atras de manera separada y los usa para predecir vectores de movimiento hacia delante y hacia atras, respectivamente. Para macrobloques interpolados, el decodificador usa la memoria intermedia de prediccion hacia delante para predecir el 20 vector de movimiento hacia delante (el primer elemento MVDATA decodificado) y la memoria intermedia hacia atras para predecir el vector de movimiento hacia atras (el segundo elemento MVDATA decodificado). Cuando el macrobloque es directo o interpolado, el decodificador almacena en memoria intermedia el componente de MV hacia delante en la memoria intermedia hacia delante y el componente de MV hacia atras en la memoria intermedia hacia atras. La logica de prediccion real en cada caso (por ejemplo, para macrobloques de 1 MV, macrobloques de MV de 25 2 campos, etc.) para seleccionar un predictor de vector de movimiento de entre un conjunto de candidatos se ha
descrito anteriormente en la seccion XV.C.
El esquema para rellenar las memorias intermedias de vector de movimiento hacia delante y hacia atras y predecir vectores de movimiento desde los vectores de movimiento en estas memorias intermedias se ha descrito anteriormente en la seccion X.C.
30 Decodificar vectores de movimiento diferenciales en fotogramas B entrelazados
Los vectores de movimiento diferenciales en fotogramas B entrelazados se decodifican de acuerdo con el pseudocodigo 7700 y 7710 en las Figuras 77A y 77B como se ha analizado anteriormente en la seccion XV.C.2.
Reconstruir vectores de movimiento en fotogramas B entrelazados
Los vectores de movimiento que se reconstruyen en fotogramas B entrelazados que se decodifican de acuerdo con 35 el pseudocodigo 7800 en la Figura 78 y se han analizado anteriormente en las secciones XV.B.3 y XV.C.2.
E. Codificacion de plano de bits
La informacion binaria espedfica de macrobloque tal como (1) decisiones hacia delante/no hacia delante para los macrobloques de campos B entrelazados (es decir, la bandera FORWARDMB), y (2) decisiones de directo/no directo para los macrobloques de fotogramas B entrelazados (es decir, la bandera DlRECTMB), puede codificarse 40 en un sfmbolo binario por macrobloque. Por ejemplo, si un macrobloque de un campo B entrelazado esta o no compensado en movimiento en modo hacia delante (frente a otro modo tal como hacia atras, directo o interpolado) puede senalizarse con un bit. En estos casos, el estado de todos los macrobloques en un campo o fotograma puede codificarse como un plano de bits y transmitirse en el encabezamiento de campo o de fotograma. Una excepcion para esta regla es si el modo de codificacion de plano de bits se establece a Modo Sin Procesar, caso en el que el 45 estado para cada macrobloque se codifica como un bit por sfmbolo y se transmite junto con otros elementos de sintaxis de nivel de macrobloque en el nivel de macrobloque.
La codificacion de plano de bits de nivel de campo/fotograma se usa para codificar matrices binarias bidimensionales. El tamano de cada matriz es rowMB x colMB, donde rowMB y colMB son el numero de filas y columnas de macrobloque, respectivamente, en el campo o fotograma en cuestion. En el flujo de bits, cada matriz se 50 codifica como un conjunto de bits consecutivos. Se usa uno de siete modos para codificar cada matriz. Los siete modos son:
1. modo sin procesar - la informacion se codifica como un bit por sfmbolo y se transmite como parte de sintaxis de nivel de MB;
2. modo normal-2 - dos sfmbolos codificados conjuntamente;
3. modo diferencial-2 - codificacion diferencial del plano de bits, seguida por codificar dos conjuntamente;
4. modo normal-6 - seis sfmbolos codificados conjuntamente;
5. modo diferencial-6 - codificacion diferencial del plano de bits, seguida por codificar seis
5 conjuntamente;
6. modo de salto de fila - salto de un bit para senalizar filas con bits no posicionados; y
7. modo de salto de columna - salto de un bit para senalizar columnas con bits no posicionados.
Los elementos de sintaxis para un plano de bits en el nivel de campo o de fotograma estan en la siguiente secuencia: INVERT, IMODE y DATABITS.
10 Bandera de inversion (INVERT)
El elemento de sintaxis INVERT es un valor de 1 bit, que si esta posicionado indica que el plano de bits tiene mas bits posicionados que cero bits. Dependiendo de INVERT y el modo, el decodificador debera invertir el plano de bits interpretado para recrear el original. Observese que el valor de este bit debera ignorarse cuando se usa el modo sin procesar. La descripcion de como se usa el valor de INVERT al decodificar el plano de bits se proporciona a 15 continuacion.
Modo de codificacion (IMODE)
El elemento de sintaxis IMODE es un valor de longitud variable que indica el modo de codificacion usado para codificar el plano de bits. La tabla 11 muestra la tabla de codigos usada para codificar el elemento de sintaxis IMODE. La descripcion de como se usa el valor IMODE al decodificar el plano de bits se proporciona a continuacion.
20 Tabla 11: tabla de codigos de VLC de IMODE
- VLC IMODE
- Modo de codificacion
- 10
- Norm-2
- 11
- Norm-6
- 010
- Salto de fila
- 011
- Salto de columna
- 001
- Dif-2
- 0001
- Dif-6
- 0000
- Sin procesar
Bits de codificacion de plano de bits (DATABITS)
El elemento de sintaxis DATABITS es el elemento de sintaxis con tamano variable que codifica el flujo de sfmbolos para el plano de bits. El procedimiento usado para codificar el plano de bits se determina mediante el valor de 25 IMODE. Los siete modos de codificacion se describen en las siguientes secciones.
Modo sin procesar
En este modo, el plano de bits se codifica como un bit por sfmbolo explorado en el orden de exploracion de trama de macrobloques, y se envfa como parte de la capa de macrobloque. Como alternativa, la informacion se codifica en modo sin procesar en el nivel de campo o fotograma y DATABITS es rowMB x colMB bits de longitud.
30 Modo normal-2
Si rowMB x coIMB son impares, el primer sfmbolo se codifica sin procesar. Los sfmbolos posteriores se codifican por pares, en orden de exploracion natural. La tabla de VLC binaria en la tabla 12 se usa para codificar pares de sfmbolos.
sfmbolos residuales sfmbolos residuales
Tabla 12: tabla de codigos Norm-2/Dif-2
- Simbolo 2n
- Simbolo 2n + 1 Palabra de codigo
- 0
- 0
- 0
- 1
- 0 100
- 0
- 1 101
- 1
- 1
- 11
5
10
15
20
25
30
35
40
45
50
Modo dif-2
El procedimiento normal-2 se usa para producir el plano de bits como se ha descrito anteriormente, y a continuacion se aplica la operacion dif-1 al plano de bits como se describe a continuacion.
Modo normal-6
En los modos normal-6 y dif-6, el plano de bits se codifica en grupos de seis pfxeles. Estos pfxeles se agrupan en piezas de 2x3 o 3x2. El plano de bits se apila de manera maxima usando un conjunto de reglas, y los restantes pfxeles se codifican usando una variante de modos de salto de fila y salto de columna. Se usan piezas “verticales” de 2x3 si y unicamente si rowMB es un multiplo de 3 y coIMB no. De otra manera, se usan piezas “horizontales” de 3x2. La Figura 79A muestra un ejemplo simplificado de piezas “verticales” de 2x3. Las Figuras 79B y 79C muestran ejemplos simplificados de piezas “horizontales” de 3x2 para las que los rectangulos oscuros alargados son de 1 pixel de ancho y se codifican usando codificacion de salto de fila y salto de columna. Para un plano apilado como se muestra en la Figura 79C, con piezas lineales a lo largo de los bordes superior e izquierdo de la imagen, el orden de codificacion de las piezas sigue el siguiente patron. Las piezas de 6 elementos se codifican en primer lugar, seguido por las piezas lineales codificadas por salto de columna y salto de fila. Si el tamano de la matriz es un multiplo de 2x3 o de 3x2, las piezas lineales anteriores no existen y el plano de bits esta perfectamente apilado.
Las piezas rectangulares de 6 elementos que usan un codigo Huffman incompleto, es decir, un codigo Huffman que no usa todos los nodos de extremo para codificacion. Sea N el numero de bits posicionados en la pieza, es decir 0 < N < 6. Para N < 3, se usa un VLC para codificar la pieza. Para N = 3, se sigue un escape de longitud fija por un codigo de longitud de 5 bits fijos, y para N > 3, se sigue un escape de longitud fija por el codigo del complemento de la pieza. La pieza rectangular contiene 6 bits de informacion. Sea k el codigo asociado con la pieza, donde k = bi 2', bi es el valor binario del i-esimo bit en orden de exploracion natural dentro de la pieza. Por lo tanto 0 < k < 64. Una combinacion de VLC y codigos de escape codigos de longitud fija se usa para senalizar k.
Modo dif-6
El procedimiento normal-6 se usa para producir el plano de bits como se ha descrito anteriormente, y a continuacion se aplica la operacion dif-1 al plano de bits como se describe a continuacion.
Modo salto de fila
En el modo de codificacion de salto de fila, todas las filas cero se saltan con tara de un bit. La sintaxis es como sigue: para cada fila, un unico bit de ROWSKIP indica si la fila esta saltada; si la fila esta saltada, el bit ROWSKIP para la siguiente fila es siguiente; de otra manera (la fila no esta saltada), los bits ROWBITS (un bit para cada macrobloque en la fila) son los siguientes. Por lo tanto, si la fila entera es cero, se envfa un bit cero como el sfmbolo ROWSKIP, y se salta ROWBITS. Si hay un bit posicionado en la fila, ROWSKIP se establece a 1, y la fila completa se envfa sin procesar (ROWBITS). Las filas se exploran desde la parte superior a la inferior del campo o fotograma.
Modo de salto de columna
Salto de columna es la traspuesta de salto de fila. Las columnas se exploran desde la izquierda a la derecha del campo o fotograma.
Dif-1: decodificacion diferencial inversa
Si se usa cualquiera del modo diferencial (Dif-2 o Dif-6), un plano de bits de “bits diferenciales” se decodifica en primer lugar usando los correspondientes modos normales (Norm-2 o Norm-6 respectivamente). Los bits diferenciales se usan para regenerar el plano de bits original. El procedimiento de regeneracion es un DPCM 2-D en alfabeto binario. Para regenerar el bit en la localizacion (i, j), el predictor bP(i,j) se genera como sigue (desde los bits b(i, j) en las posiciones (i, j)):
Para el modo de codificacion diferencial, no se realiza el procedimiento de inversion a nivel de bits basandose en INVERT. Sin embargo, la bandera INVERT se usa en una capacidad diferente para indicar el valor del sfmbolo A para la derivacion del predictor anteriormente mostrado. Mas espedficamente, A es igual a 0 si INVERT equivale a 0 y A es igual a 1 si INVERT equivale a 1. El valor real del plano de bits se obtiene realizando la operacion xor al predictor con el valor de bit diferencial decodificado. En la ecuacion anterior, b(i,j) es el bit en la posicion de orden i,j despues de la decodificacion final (es decir despues de hacer Norm-2/Norm-6, seguido por la operacion xor diferencial con su predictor).
Habiendo descrito e ilustrado los principios de nuestra invencion con referencia a diversas realizaciones, se
reconocera que las diversas realizaciones pueden modificarse en disposicion y detalle sin alejarse de tales principios. Debena entenderse que los programas, procesos o procedimientos descritos en el presente documento no estan relacionados o limitados a ningun tipo particular de entorno informatico, a menos que se indique de otra manera. Pueden usarse diversos tipos de entornos informaticos de fin general o especializado o realizar operaciones 5 de acuerdo con las ensenanzas descritas en el presente documento. Los elementos de las realizaciones mostradas en software pueden implementarse en hardware y viceversa.
En vista de las muchas posibles realizaciones a las que pueden aplicarse los principios de nuestra invencion, reivindicamos nuestra invencion todas tales realizaciones como que pueden entrar dentro del alcance de las siguientes realizaciones y equivalentes a las mismas.
10
Claims (15)
- 510152025303540455055REIVINDICACIONES1. Un procedimiento de decodificacion de informacion de v^deo comprimida con un decodificador de v^deo, comprendiendo el procedimiento:recibir, en el decodificador de video, informacion de video comprimida en un flujo de bits; y con el decodificador de video, decodificar una imagen prevista bidireccionalmente que incluye diversos macrobloques usando la informacion de video comprimida, en el que la decodificacion incluye decodificar (5220) un conjunto de bits que representa informacion de decision binaria que significa si los diversos macrobloques en la imagen prevista bidireccionalmente estan compensados en movimiento usando prediccion de modo hacia delante o uno de diversos tipos de prediccion de modo no hacia delante, en el que, para cada uno de los diversos macrobloques de la imagen prevista bidireccionalmente, un unico bit en el conjunto de bits esta asociado con el macrobloque como parte de la informacion de decision binaria del conjunto de bits, indicando el unico bit si el tipo de prediccion de movimiento compensado para el macrobloque es (a) la prediccion de modo hacia delante o (b) uno de los diversos tipos de prediccion de modo no hacia delante, en el que el conjunto de bits se senaliza como uno o mas elementos de sintaxis de nivel de imagen, en el que una combinacion de elementos de sintaxis de nivel de imagen y de nivel de macrobloque indica los tipos de prediccion de movimiento compensado para los diversos macrobloques de la imagen prevista bidireccionalmente, y en el que:para un primer macrobloque de los diversos macrobloques de la imagen prevista bidireccionalmente, el tipo de prediccion de movimiento compensado es prediccion de modo hacia delante, y el unico bit para el macrobloque indica el tipo de prediccion de movimiento compensado para el macrobloque; y para un segundo macrobloque de los diversos macrobloques de la imagen prevista bidireccionalmente, el unico bit para el macrobloque y un codigo de longitud variable de nivel de macrobloque para el macrobloque indican conjuntamente el tipo de prediccion de movimiento compensado para el macrobloque.
- 2. El procedimiento de la reivindicacion 1, en el que la imagen prevista bidireccionalmente es un campo B entrelazado.
- 3. El procedimiento de la reivindicacion 1, en el que la decodificacion de la imagen prevista bidireccionalmente con el decodificador de video comprende adicionalmente seleccionar un modo de codificacion de entre diversos modos de codificacion disponibles para procesar el conjunto de bits.
- 4. El procedimiento de la reivindicacion 1, en el que el conjunto de bits se senaliza en un encabezamiento de campo.
- 5. El procedimiento de la reivindicacion 1, en el que la decodificacion de la imagen prevista bidireccionalmente con el decodificador de video comprende adicionalmente, para al menos uno de los diversos macrobloques de la imagen prevista bidireccionalmente:determinar que la informacion de decision binaria indica compensacion de movimiento usando uno de los diversos tipos de prediccion de modo no hacia delante para el macrobloque; ydecodificar el codigo de longitud variable de nivel de macrobloque para el macrobloque desde una tabla de codigos de longitud variable, en el que el codigo de longitud variable de nivel de macrobloque representa uno de los diversos tipos de prediccion de modo no hacia delante para el macrobloque.
- 6. El procedimiento de la reivindicacion 5, en el que la tabla de codigos de longitud variable refleja una preferencia de longitud de codigo para modo hacia atras.
- 7. El procedimiento de la reivindicacion 1, en el que los diversos tipos de prediccion de modo no hacia delante incluyen modo hacia atras, modo directo y modo interpolado.
- 8. Un dispositivo informatico que implementa un decodificador de video, comprendiendo el dispositivo informatico un procesador, memoria y almacenamiento que almacena instrucciones ejecutables por ordenador para provocar que el procesador realice el procedimiento de una cualquiera de las reivindicaciones 1 a 7.
- 9. Un procedimiento de codificacion de informacion de video con un codificador de video, comprendiendo el procedimiento:con el codificador de video, seleccionar un modo de codificacion desde un grupo de diversos modos de codificacion disponibles;con el codificador de video, codificar (5120) un conjunto de bits para un campo B entrelazado de acuerdo con el modo de codificacion seleccionado, en el que el conjunto de bits representa informacion de decision binaria que significa si diversos macrobloques en el campo B entrelazado estan compensados en movimiento usando prediccion de modo hacia delante o uno de los diversos tipos de prediccion de modo no hacia delante, en el que, para cada uno de los diversos macrobloques en el campo B entrelazado, un unico bit en el conjunto de bits esta asociado con el macrobloque como parte de la informacion de decision binaria del conjunto de bits, indicando el unico bit si el tipo de prediccion de movimiento compensado para el macrobloque es (a) la prediccion de modo hacia delante o (b) uno de los diversos tipos de prediccion de modo no hacia delante, en el que el conjunto de5101520253035bits se senaliza como uno o mas elementos de sintaxis de nivel de campo y en el que una combinacion de elementos de sintaxis de nivel de campo y de nivel de macrobloque indican los tipos de prediccion de movimiento compensado para los diversos macrobloques del campo B entrelazado:para un primer macrobloque de los diversos macrobloques del campo B entrelazado, el tipo de prediccion de movimiento compensado es prediccion de modo hacia delante, y el unico bit para el macrobloque indica el tipo de prediccion de movimiento compensado para el macrobloque; ypara un segundo macrobloque de los diversos macrobloques del campo B entrelazado, el unico bit para el macrobloque y un codigo de longitud variable de nivel de macrobloque para el macrobloque indican conjuntamente el tipo de prediccion de movimiento compensado para el macrobloque; y con el codificador de video, senalizar el conjunto de bits codificados en un flujo de bits.
- 10. El procedimiento de la reivindicacion 9, en el que al menos dos de los diversos modos de codificacion disponibles implican reduccion de tasa de bits asociada con la informacion de decision binaria.
- 11. El procedimiento de la reivindicacion 9, en el que los diversos modos de codificacion disponibles incluyen un modo de codificacion de prediccion de salto de fila, un modo de codificacion de prediccion de salto de columna, uno o mas modos de codificacion de longitud variable de vector y uno o mas modos de codificacion diferencial, en el que en el modo de codificacion de prediccion de salto de fila, un bit se salta para senalizar filas con bits no posicionados, y en el modo de codificacion de prediccion de salto de columna, un bit se salta para senalizar columnas con bits no posicionados.
- 12. El procedimiento de la reivindicacion 9, que comprende adicionalmente, para al menos uno de los diversos macrobloques del campo B entrelazado:con el codificador de video, determinar que la informacion de decision binaria indica compensacion de movimiento usando uno de los diversos tipos de prediccion de modo no hacia delante del macrobloque; y senalizar, en el nivel de macrobloque para el macrobloque, el codigo de longitud variable de nivel de macrobloque para el macrobloque desde una tabla de codigos de longitud variable, en el que el codigo de longitud variable de nivel de macrobloque representa uno de los diversos tipos de prediccion de modo no hacia delante para el macrobloque.
- 13. El procedimiento de la reivindicacion 12, en el que la tabla de codigos de longitud variable refleja una preferencia de longitud de codigo para modo hacia atras.
- 14. El procedimiento de una cualquiera de las reivindicaciones 5 y 12, en el que la tabla de codigos de longitud variable incluye un primer codigo para modo hacia atras, un segundo codigo para modo directo y un tercer codigo para modo interpolado.
- 15. Un medio legible por ordenador que almacena instrucciones ejecutables por ordenador para provocar que un sistema informatico programado mediante el mismo realice el procedimiento de cualquiera de las reivindicaciones 1 a 7 y 9 a 14.
Applications Claiming Priority (4)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US50108103P | 2003-09-07 | 2003-09-07 | |
| US501081P | 2003-09-07 | ||
| US882135 | 2004-06-29 | ||
| US10/882,135 US8064520B2 (en) | 2003-09-07 | 2004-06-29 | Advanced bi-directional predictive coding of interlaced video |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| ES2634493T3 true ES2634493T3 (es) | 2017-09-28 |
Family
ID=34228798
Family Applications (2)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| ES12158084.9T Expired - Lifetime ES2638327T3 (es) | 2003-09-07 | 2004-09-03 | Codificación predictiva bidireccional avanzada de vídeo entrelazado |
| ES12158085.6T Expired - Lifetime ES2634493T3 (es) | 2003-09-07 | 2004-09-03 | Codificación predictiva bidireccional avanzada de vídeo entrelazado |
Family Applications Before (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| ES12158084.9T Expired - Lifetime ES2638327T3 (es) | 2003-09-07 | 2004-09-03 | Codificación predictiva bidireccional avanzada de vídeo entrelazado |
Country Status (8)
| Country | Link |
|---|---|
| US (8) | US8064520B2 (es) |
| EP (5) | EP2285115B1 (es) |
| JP (6) | JP4763607B2 (es) |
| KR (3) | KR101083870B1 (es) |
| CN (6) | CN101416525B (es) |
| ES (2) | ES2638327T3 (es) |
| MX (1) | MXPA06002079A (es) |
| WO (1) | WO2005027493A2 (es) |
Families Citing this family (223)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US8923688B2 (en) * | 2001-09-12 | 2014-12-30 | Broadcom Corporation | Performing personal video recording (PVR) functions on digital video streams |
| US7003035B2 (en) * | 2002-01-25 | 2006-02-21 | Microsoft Corporation | Video coding methods and apparatuses |
| US20040001546A1 (en) | 2002-06-03 | 2004-01-01 | Alexandros Tourapis | Spatiotemporal prediction for bidirectionally predictive (B) pictures and motion vector prediction for multi-picture reference motion compensation |
| US7154952B2 (en) * | 2002-07-19 | 2006-12-26 | Microsoft Corporation | Timestamp-independent motion vector prediction for predictive (P) and bidirectionally predictive (B) pictures |
| US7609763B2 (en) | 2003-07-18 | 2009-10-27 | Microsoft Corporation | Advanced bi-directional predictive coding of video frames |
| US20050013498A1 (en) * | 2003-07-18 | 2005-01-20 | Microsoft Corporation | Coding of motion vector information |
| US7499495B2 (en) * | 2003-07-18 | 2009-03-03 | Microsoft Corporation | Extended range motion vectors |
| US7616692B2 (en) * | 2003-09-07 | 2009-11-10 | Microsoft Corporation | Hybrid motion vector prediction for interlaced forward-predicted fields |
| US7623574B2 (en) * | 2003-09-07 | 2009-11-24 | Microsoft Corporation | Selecting between dominant and non-dominant motion vector predictor polarities |
| US8064520B2 (en) * | 2003-09-07 | 2011-11-22 | Microsoft Corporation | Advanced bi-directional predictive coding of interlaced video |
| US7599438B2 (en) * | 2003-09-07 | 2009-10-06 | Microsoft Corporation | Motion vector block pattern coding and decoding |
| US7620106B2 (en) * | 2003-09-07 | 2009-11-17 | Microsoft Corporation | Joint coding and decoding of a reference field selection and differential motion vector information |
| US7724827B2 (en) * | 2003-09-07 | 2010-05-25 | Microsoft Corporation | Multi-layer run level encoding and decoding |
| US7567617B2 (en) * | 2003-09-07 | 2009-07-28 | Microsoft Corporation | Predicting motion vectors for fields of forward-predicted interlaced video frames |
| US7693339B2 (en) * | 2003-12-17 | 2010-04-06 | Andreas Wittenstein | Method and apparatus for faster-than-real-time lossless compression and decompression of images |
| US7397855B2 (en) * | 2004-04-14 | 2008-07-08 | Corel Tw Corp. | Rate controlling method and apparatus for use in a transcoder |
| TWI245539B (en) * | 2004-09-22 | 2005-12-11 | Sony Taiwan Ltd | Spatial domain pre-processing to reduce the intra-coding computation complexity |
| KR101240089B1 (ko) * | 2005-01-10 | 2013-03-06 | 휴렛-팩커드 디벨롭먼트 컴퍼니, 엘.피. | 화상 부호화 장치 및 화상 복호화 장치 |
| TWI277013B (en) * | 2005-02-01 | 2007-03-21 | Ind Tech Res Inst | Method for reducing buffered-frame memory sizes and accesses in a video codec |
| US8548055B2 (en) * | 2005-03-10 | 2013-10-01 | Qualcomm Incorporated | Encoding of multimedia data |
| WO2007040197A1 (ja) * | 2005-10-05 | 2007-04-12 | Matsushita Electric Industrial Co., Ltd. | 参照画像選択方法および装置 |
| KR100891662B1 (ko) * | 2005-10-05 | 2009-04-02 | 엘지전자 주식회사 | 비디오 신호 디코딩 및 인코딩 방법 |
| KR20070038396A (ko) * | 2005-10-05 | 2007-04-10 | 엘지전자 주식회사 | 영상 신호의 인코딩 및 디코딩 방법 |
| KR100727994B1 (ko) * | 2005-10-06 | 2007-06-14 | 삼성전자주식회사 | 깜박거림 현상 감소를 위한 동영상 프레임의 코딩 방법 및장치 |
| JP2009517138A (ja) * | 2005-11-23 | 2009-04-30 | カプソ・ビジョン・インコーポレイテッド | 動き検出と「実体像」イメージの構築 |
| FR2894424A1 (fr) * | 2005-12-05 | 2007-06-08 | Thomson Licensing Sas | Procede de prediction de donnees mouvement et de texture |
| US8049741B2 (en) * | 2006-01-11 | 2011-11-01 | Dell Products L.P. | Video optimized LCD response time compensation |
| FR2897741B1 (fr) * | 2006-02-17 | 2008-11-07 | Canon Kk | Procede et dispositif de generation de donnees representatives d'un degre d'importance de blocs de donnees et procede et dispositif de transmission d'une sequence video encodee |
| US8385419B2 (en) * | 2006-04-26 | 2013-02-26 | Altera Corporation | Methods and apparatus for motion search refinement in a SIMD array processor |
| KR100763917B1 (ko) * | 2006-06-21 | 2007-10-05 | 삼성전자주식회사 | 고속으로 움직임을 추정하는 방법 및 장치 |
| JP4592656B2 (ja) * | 2006-08-17 | 2010-12-01 | 富士通セミコンダクター株式会社 | 動き予測処理装置、画像符号化装置および画像復号化装置 |
| KR20080022614A (ko) * | 2006-09-07 | 2008-03-12 | 삼성전자주식회사 | 글로벌 영상 검출 방법과, 표시 장치 및 이의 구동 방법 |
| DE102006043707A1 (de) * | 2006-09-18 | 2008-03-27 | Robert Bosch Gmbh | Verfahren zur Datenkompression in einer Videosequenz |
| US8194744B2 (en) * | 2006-09-20 | 2012-06-05 | Lsi Corporation | Method and/or apparatus for implementing reduced bandwidth high performance VC1 intensity compensation |
| FR2906433B1 (fr) * | 2006-09-22 | 2009-02-27 | Canon Kk | Procedes et dispositifs de codage et de decodage d'images, programme d'ordinateur les mettant en oeuvre et support d'informaton permettant de les mettre en oeuvre |
| US9456222B2 (en) * | 2006-10-18 | 2016-09-27 | Thomson Licensing | Local illumination and color compensation without explicit signaling |
| US20080117968A1 (en) * | 2006-11-22 | 2008-05-22 | Capso Vision, Inc. | Movement detection and construction of an "actual reality" image |
| US8611418B2 (en) * | 2006-11-30 | 2013-12-17 | Lsi Corporation | Decoding a progressive JPEG bitstream as a sequentially-predicted hybrid video bitstream |
| US8345767B2 (en) * | 2006-12-14 | 2013-01-01 | Nec Corporation | Video encoding method, video encoding device, and video encoding program |
| NO328076B1 (no) * | 2007-02-09 | 2009-11-23 | Tandberg Telecom As | Fremgangsmate for pikselprediksjon med redusert kompleksitet. |
| US20080240242A1 (en) * | 2007-03-27 | 2008-10-02 | Nokia Corporation | Method and system for motion vector predictions |
| US20080260023A1 (en) * | 2007-04-18 | 2008-10-23 | Chih-Ta Star Sung | Digital video encoding and decoding with refernecing frame buffer compression |
| WO2008153262A1 (en) | 2007-06-15 | 2008-12-18 | Sungkyunkwan University Foundation For Corporate Collaboration | Bi-prediction coding method and apparatus, bi-prediction decoding method and apparatus, and recording midium |
| US8526499B2 (en) * | 2007-06-15 | 2013-09-03 | Sungkyunkwan University Foundation For Corporate Collaboration | Bi-prediction coding method and apparatus, bi-prediction decoding method and apparatus, and recording medium |
| US9648325B2 (en) | 2007-06-30 | 2017-05-09 | Microsoft Technology Licensing, Llc | Video decoding implementations for a graphics processing unit |
| US8254455B2 (en) * | 2007-06-30 | 2012-08-28 | Microsoft Corporation | Computing collocated macroblock information for direct mode macroblocks |
| US8605786B2 (en) * | 2007-09-04 | 2013-12-10 | The Regents Of The University Of California | Hierarchical motion vector processing method, software and devices |
| EP2206342A2 (en) * | 2007-09-10 | 2010-07-14 | Nxp B.V. | Method and apparatus for motion estimation and motion compensation in video image data |
| US8432975B2 (en) * | 2008-01-18 | 2013-04-30 | Mediatek Inc. | Apparatus and method for processing a picture frame |
| KR101442608B1 (ko) * | 2008-02-05 | 2014-09-25 | 삼성전자주식회사 | 영상을 효율적으로 부호화/복호화하는 방법 및 장치 |
| CN101527843B (zh) * | 2008-03-07 | 2011-01-26 | 瑞昱半导体股份有限公司 | 用来解码视频画面中的视频块的装置及其相关方法 |
| KR101431545B1 (ko) * | 2008-03-17 | 2014-08-20 | 삼성전자주식회사 | 영상의 부호화, 복호화 방법 및 장치 |
| KR101423655B1 (ko) | 2008-03-18 | 2014-07-29 | 삼성전자주식회사 | 필드 픽쳐 부호화/복호화 장치 및 그 방법 |
| US20090238263A1 (en) * | 2008-03-20 | 2009-09-24 | Pawan Jaggi | Flexible field based energy efficient multimedia processor architecture and method |
| US20090238479A1 (en) * | 2008-03-20 | 2009-09-24 | Pawan Jaggi | Flexible frame based energy efficient multimedia processor architecture and method |
| US8634467B2 (en) * | 2008-05-06 | 2014-01-21 | Choy Sai Foundation L.L.C. | Flexible Wyner-Ziv video frame coding |
| KR101445791B1 (ko) * | 2008-05-10 | 2014-10-02 | 삼성전자주식회사 | 움직임 벡터 변환을 이용한 비월 주사 영상 부호화/복호화방법 및 장치 |
| KR101361005B1 (ko) | 2008-06-24 | 2014-02-13 | 에스케이 텔레콤주식회사 | 인트라 예측 방법 및 장치와 그를 이용한 영상부호화/복호화 방법 및 장치 |
| US8805101B2 (en) * | 2008-06-30 | 2014-08-12 | Intel Corporation | Converting the frame rate of video streams |
| JP5578775B2 (ja) | 2008-09-02 | 2014-08-27 | 富士通株式会社 | 符号化装置および復号装置 |
| US8379727B2 (en) * | 2008-09-26 | 2013-02-19 | General Instrument Corporation | Method and apparatus for scalable motion estimation |
| US8483285B2 (en) * | 2008-10-03 | 2013-07-09 | Qualcomm Incorporated | Video coding using transforms bigger than 4×4 and 8×8 |
| US20100086048A1 (en) * | 2008-10-03 | 2010-04-08 | Faisal Ishtiaq | System and Method for Video Image Processing |
| US8503527B2 (en) | 2008-10-03 | 2013-08-06 | Qualcomm Incorporated | Video coding with large macroblocks |
| US8634456B2 (en) * | 2008-10-03 | 2014-01-21 | Qualcomm Incorporated | Video coding with large macroblocks |
| US8619856B2 (en) * | 2008-10-03 | 2013-12-31 | Qualcomm Incorporated | Video coding with large macroblocks |
| WO2010041857A2 (en) * | 2008-10-06 | 2010-04-15 | Lg Electronics Inc. | A method and an apparatus for decoding a video signal |
| US8699562B2 (en) | 2008-10-06 | 2014-04-15 | Lg Electronics Inc. | Method and an apparatus for processing a video signal with blocks in direct or skip mode |
| KR101377527B1 (ko) | 2008-10-14 | 2014-03-25 | 에스케이 텔레콤주식회사 | 복수 개의 참조 픽처의 움직임 벡터 부호화/복호화 방법 및장치와 그를 이용한 영상 부호화/복호화 장치 및 방법 |
| KR101279573B1 (ko) * | 2008-10-31 | 2013-06-27 | 에스케이텔레콤 주식회사 | 움직임 벡터 부호화 방법 및 장치와 그를 이용한 영상 부호화/복호화 방법 및 장치 |
| TWI398169B (zh) * | 2008-12-23 | 2013-06-01 | Ind Tech Res Inst | 移動向量之編碼模式選擇方法及其相關編碼模式選擇裝置,及其機器可讀取媒體 |
| WO2010086500A1 (en) | 2009-01-28 | 2010-08-05 | Nokia Corporation | Method and apparatus for video coding and decoding |
| US8189666B2 (en) | 2009-02-02 | 2012-05-29 | Microsoft Corporation | Local picture identifier and computation of co-located information |
| US20110026593A1 (en) * | 2009-02-10 | 2011-02-03 | New Wei Lee | Image processing apparatus, image processing method, program and integrated circuit |
| EP2224740A1 (en) * | 2009-02-27 | 2010-09-01 | Nxp B.V. | Detecting occlusion |
| JP5115498B2 (ja) * | 2009-03-05 | 2013-01-09 | 富士通株式会社 | 画像符号化装置、画像符号化制御方法およびプログラム |
| US20100226437A1 (en) * | 2009-03-06 | 2010-09-09 | Sony Corporation, A Japanese Corporation | Reduced-resolution decoding of avc bit streams for transcoding or display at lower resolution |
| US8798158B2 (en) * | 2009-03-11 | 2014-08-05 | Industry Academic Cooperation Foundation Of Kyung Hee University | Method and apparatus for block-based depth map coding and 3D video coding method using the same |
| JP5586101B2 (ja) | 2009-03-23 | 2014-09-10 | 株式会社Nttドコモ | 画像予測符号化装置、画像予測符号化方法、画像予測符号化プログラム、画像予測復号装置、画像予測復号方法、及び画像予測復号プログラム |
| WO2010131903A2 (en) | 2009-05-12 | 2010-11-18 | Lg Electronics Inc. | Method and apparatus for processing a video signal |
| MX2011013707A (es) * | 2009-06-18 | 2012-02-28 | Toshiba Kk | Dispositivo de codificacion de imagenes dinamicas y dispositivo de decodificacion de imagenes dinamicas. |
| ES3058729T3 (en) | 2009-06-18 | 2026-03-12 | Toshiba Kk | Video encoding |
| US8873626B2 (en) * | 2009-07-02 | 2014-10-28 | Qualcomm Incorporated | Template matching for video coding |
| KR20110022133A (ko) * | 2009-08-27 | 2011-03-07 | 삼성전자주식회사 | 영상의 움직임 추정방법 및 영상처리장치 |
| US8487981B2 (en) * | 2009-09-04 | 2013-07-16 | Broadcom Corporation | Method and system for processing 2D/3D video |
| KR20110027238A (ko) * | 2009-09-10 | 2011-03-16 | 삼성전자주식회사 | 휴대용 단말기의 영상 데이터 처리 장치 및 방법 |
| US9060176B2 (en) * | 2009-10-01 | 2015-06-16 | Ntt Docomo, Inc. | Motion vector prediction in video coding |
| KR101459714B1 (ko) * | 2009-10-28 | 2014-11-13 | 에스케이텔레콤 주식회사 | 공간 분할을 이용한 움직임 벡터 부호화/복호화 방법 및 장치와 그를 이용한 영상 부호화/복호화 방법 및 장치 |
| WO2011050997A1 (en) | 2009-10-29 | 2011-05-05 | Thomas Sikora | Method and device for processing a video sequence |
| US9621892B2 (en) * | 2009-12-18 | 2017-04-11 | Sony Corporation | Emulation of Bi predicted pictures using adjacent pictures for improved video |
| KR101487687B1 (ko) | 2010-01-14 | 2015-01-29 | 삼성전자주식회사 | 큰 크기의 변환 단위를 이용한 영상 부호화, 복호화 방법 및 장치 |
| US9036692B2 (en) * | 2010-01-18 | 2015-05-19 | Mediatek Inc. | Motion prediction method |
| JP2013517733A (ja) * | 2010-01-19 | 2013-05-16 | サムスン エレクトロニクス カンパニー リミテッド | 以前ブロックの動きベクトルを現在ブロックの動きベクトルとして用いる映像符号化/復号化方法及び装置 |
| US9351017B2 (en) | 2010-01-19 | 2016-05-24 | Samsung Electronics Co., Ltd. | Method and apparatus for encoding/decoding images using a motion vector of a previous block as a motion vector for the current block |
| KR101607308B1 (ko) * | 2010-01-19 | 2016-03-29 | 삼성전자주식회사 | 이전 블록의 움직임 벡터를 현재 블록의 움직임 벡터로 이용하는 영상 부호화, 복호화 방법 및 장치 |
| US20130083851A1 (en) * | 2010-04-06 | 2013-04-04 | Samsung Electronics Co., Ltd. | Method and apparatus for video encoding and method and apparatus for video decoding |
| EP2559243B1 (en) * | 2010-04-13 | 2014-08-27 | Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. | A video decoder and a video encoder using motion-compensated prediction |
| WO2011145865A2 (ko) * | 2010-05-17 | 2011-11-24 | 에스케이텔레콤 주식회사 | 참조영상 구성 및 인덱싱 장치 및 방법 |
| JP5625512B2 (ja) * | 2010-06-09 | 2014-11-19 | ソニー株式会社 | 符号化装置、符号化方法、プログラム、および記録媒体 |
| US8908755B2 (en) * | 2010-07-16 | 2014-12-09 | Sony Corporation | Multi-parameter motion for efficient prediction in video compression |
| KR101770662B1 (ko) | 2010-07-20 | 2017-08-23 | 가부시키가이샤 엔.티.티.도코모 | 화상 예측 복호 장치 및 화상 예측 복호 방법 |
| KR101373814B1 (ko) * | 2010-07-31 | 2014-03-18 | 엠앤케이홀딩스 주식회사 | 예측 블록 생성 장치 |
| US9549197B2 (en) * | 2010-08-16 | 2017-01-17 | Dolby Laboratories Licensing Corporation | Visual dynamic range timestamp to enhance data coherency and potential of metadata using delay information |
| PL4322530T3 (pl) * | 2010-09-02 | 2025-06-02 | Lg Electronics Inc. | Urządzenie do predykcji międzyramkowej |
| US8503528B2 (en) * | 2010-09-15 | 2013-08-06 | Google Inc. | System and method for encoding video using temporal filter |
| WO2012039136A1 (ja) | 2010-09-24 | 2012-03-29 | パナソニック株式会社 | 画像符号化方法、画像復号化方法、画像符号化装置、および画像復号化装置 |
| US8976856B2 (en) * | 2010-09-30 | 2015-03-10 | Apple Inc. | Optimized deblocking filters |
| US10104391B2 (en) | 2010-10-01 | 2018-10-16 | Dolby International Ab | System for nested entropy encoding |
| US20120082228A1 (en) | 2010-10-01 | 2012-04-05 | Yeping Su | Nested entropy encoding |
| CN107071438B (zh) | 2010-10-08 | 2020-09-01 | Ge视频压缩有限责任公司 | 编码器和编码方法与解码器和解码方法 |
| KR102080449B1 (ko) | 2010-11-24 | 2020-02-21 | 벨로스 미디어 인터내셔널 리미티드 | 움직임 벡터 산출 방법, 화상 부호화 방법, 화상 복호 방법, 움직임 벡터 산출 장치 및 화상 부호화 복호 장치 |
| US9137544B2 (en) * | 2010-11-29 | 2015-09-15 | Mediatek Inc. | Method and apparatus for derivation of mv/mvp candidate for inter/skip/merge modes |
| CN107454419B (zh) | 2010-12-13 | 2020-12-29 | 韩国电子通信研究院 | 基于帧间预测对视频信号进行解码的方法 |
| US9706214B2 (en) | 2010-12-24 | 2017-07-11 | Microsoft Technology Licensing, Llc | Image and video decoding implementations |
| TWI471010B (zh) | 2010-12-30 | 2015-01-21 | 晨星半導體股份有限公司 | 一種具有移動補償的解交錯影像處理裝置及其相關方法 |
| CN103763500A (zh) * | 2011-01-04 | 2014-04-30 | 晨星软件研发(深圳)有限公司 | 一种具有移动补偿的解交错影像处理装置及其相关方法 |
| US9635382B2 (en) * | 2011-01-07 | 2017-04-25 | Texas Instruments Incorporated | Method, system and computer program product for determining a motion vector |
| KR101820997B1 (ko) * | 2011-01-12 | 2018-01-22 | 선 페이턴트 트러스트 | 동화상 부호화 방법 및 동화상 복호화 방법 |
| GB2487200A (en) | 2011-01-12 | 2012-07-18 | Canon Kk | Video encoding and decoding with improved error resilience |
| WO2012097376A1 (en) | 2011-01-14 | 2012-07-19 | General Instrument Corporation | Spatial block merge mode |
| CN107071464A (zh) * | 2011-01-19 | 2017-08-18 | 寰发股份有限公司 | 为当前块的运动矢量导出运动矢量预测子的方法及装置 |
| KR102355509B1 (ko) | 2011-02-09 | 2022-02-08 | 엘지전자 주식회사 | 영상 부호화 및 복호화 방법과 이를 이용한 장치 |
| WO2012114694A1 (ja) | 2011-02-22 | 2012-08-30 | パナソニック株式会社 | 動画像符号化方法、動画像符号化装置、動画像復号方法、および、動画像復号装置 |
| JP5883431B2 (ja) * | 2011-02-25 | 2016-03-15 | パナソニック インテレクチュアル プロパティ コーポレーション オブアメリカPanasonic Intellectual Property Corporation of America | 画像符号化方法および画像復号化方法 |
| MX2013009864A (es) | 2011-03-03 | 2013-10-25 | Panasonic Corp | Metodo de codificacion de imagenes en movimiento, metodo de decodificacion de imagenes en movimiento, aparato de codificacion de imagenes en movimiento, aparato de decodificacion de imagenes en movimiento y aparato de codificacion y decodificacion de imagenes en movimiento. |
| GB2501836B (en) * | 2011-03-09 | 2014-08-06 | Canon Kk | Video encoding |
| MY163983A (en) * | 2011-03-10 | 2017-11-15 | Sharp Kk | A method for decoding video |
| ES2664090T3 (es) * | 2011-03-10 | 2018-04-18 | Telefonaktiebolaget Lm Ericsson (Publ) | Relleno de subvectores no codificados en señales de audio codificadas por transformada |
| JP5982734B2 (ja) * | 2011-03-11 | 2016-08-31 | ソニー株式会社 | 画像処理装置および方法 |
| US8780971B1 (en) | 2011-04-07 | 2014-07-15 | Google, Inc. | System and method of encoding using selectable loop filters |
| US8780996B2 (en) | 2011-04-07 | 2014-07-15 | Google, Inc. | System and method for encoding and decoding video data |
| US8781004B1 (en) | 2011-04-07 | 2014-07-15 | Google Inc. | System and method for encoding video using variable loop filter |
| ES2621231T3 (es) | 2011-04-12 | 2017-07-03 | Sun Patent Trust | Método de codificación de video de movimiento, aparato de codificación de video de movimiento, método de decodificación de video de movimiento, aparato de decodificación de video de movimiento y aparato de codificación/decodificación de video de movimiento |
| HUE037619T2 (hu) | 2011-05-24 | 2018-09-28 | Velos Media Int Ltd | Képkódoló eljárás, képkódoló berendezés, képdekódoló eljárás, képdekódoló berendezés és képkódoló/dekódoló berendezés |
| US9485518B2 (en) | 2011-05-27 | 2016-11-01 | Sun Patent Trust | Decoding method and apparatus with candidate motion vectors |
| ES2769378T3 (es) | 2011-05-27 | 2020-06-25 | Sun Patent Trust | Procedimiento de codificación de imágenes y aparato de codificación de imágenes |
| SG194746A1 (en) | 2011-05-31 | 2013-12-30 | Kaba Gmbh | Image encoding method, image encoding device, image decoding method, image decoding device, and image encoding/decoding device |
| ES2971526T3 (es) | 2011-05-31 | 2024-06-05 | Sun Patent Trust | Procedimiento de descodificación de vídeo, dispositivo de descodificación de vídeo |
| US9131239B2 (en) * | 2011-06-20 | 2015-09-08 | Qualcomm Incorporated | Unified merge mode and adaptive motion vector prediction mode candidates selection |
| PH12013502456A1 (en) * | 2011-06-27 | 2014-01-20 | Sun Patent Trust | Image coding method, image decoding method, image coding apparatus, image decoding apparatus, and image coding-decoding apparatus |
| ES2754657T3 (es) * | 2011-06-27 | 2020-04-20 | Samsung Electronics Co Ltd | Codificación y decodificación de información de movimiento |
| HUE044009T2 (hu) * | 2011-06-28 | 2019-09-30 | Lg Electronics Inc | Eljárás mozgásvektorlista felállítására |
| US11647197B2 (en) | 2011-06-30 | 2023-05-09 | Velos Media, Llc | Context initialization based on slice header flag and slice type |
| EP2728878B1 (en) | 2011-06-30 | 2020-02-19 | Sun Patent Trust | Image decoding method, image encoding method, image decoding device, image encoding device, and image encoding/decoding device |
| US8767824B2 (en) * | 2011-07-11 | 2014-07-01 | Sharp Kabushiki Kaisha | Video decoder parallelization for tiles |
| US9159139B2 (en) * | 2011-07-14 | 2015-10-13 | Technische Universitat Berlin | Method and device for processing pixels contained in a video sequence |
| EP3487178A1 (en) | 2011-08-03 | 2019-05-22 | Sun Patent Trust | Video encoding method, video encoding apparatus, video decoding method, video decoding apparatus, and video encoding/decoding apparatus |
| US8731067B2 (en) | 2011-08-31 | 2014-05-20 | Microsoft Corporation | Memory management for video decoding |
| CN107483928B (zh) * | 2011-09-09 | 2020-05-12 | 株式会社Kt | 用于解码视频信号的方法 |
| CN103797794B (zh) * | 2011-09-16 | 2017-11-03 | 寰发股份有限公司 | 用于编码的方法和装置 |
| US8885706B2 (en) | 2011-09-16 | 2014-11-11 | Google Inc. | Apparatus and methodology for a video codec system with noise reduction capability |
| US10034018B2 (en) | 2011-09-23 | 2018-07-24 | Velos Media, Llc | Decoded picture buffer management |
| JP5803500B2 (ja) * | 2011-09-27 | 2015-11-04 | 株式会社Jvcケンウッド | 動きベクトル検出装置及び方法 |
| WO2013051209A1 (ja) | 2011-10-05 | 2013-04-11 | パナソニック株式会社 | 画像符号化方法、画像符号化装置、画像復号方法、画像復号装置、および、画像符号化復号装置 |
| KR101533720B1 (ko) | 2011-10-17 | 2015-07-03 | 주식회사 케이티 | 영상 부호화/복호화 방법 및 그 장치 |
| MX2014003991A (es) | 2011-10-19 | 2014-05-07 | Panasonic Corp | Metodo de codificacion de imagenes, aparato de codificacion de imagenes, metodo de decodificacion de imagenes y aparato de decodificacion de imagenes. |
| CN107071467B (zh) | 2011-11-02 | 2020-03-27 | 太格文-Ii有限责任公司 | 动态图像编码方法和动态图像编码装置 |
| JP5485969B2 (ja) * | 2011-11-07 | 2014-05-07 | 株式会社Nttドコモ | 動画像予測符号化装置、動画像予測符号化方法、動画像予測符号化プログラム、動画像予測復号装置、動画像予測復号方法及び動画像予測復号プログラム |
| TWI580264B (zh) * | 2011-11-10 | 2017-04-21 | Sony Corp | Image processing apparatus and method |
| US9819949B2 (en) | 2011-12-16 | 2017-11-14 | Microsoft Technology Licensing, Llc | Hardware-accelerated decoding of scalable video bitstreams |
| JP5364219B1 (ja) | 2011-12-16 | 2013-12-11 | パナソニック株式会社 | 動画像符号化方法、および動画像符号化装置 |
| US9762904B2 (en) * | 2011-12-22 | 2017-09-12 | Qualcomm Incorporated | Performing motion vector prediction for video coding |
| US9900615B2 (en) | 2011-12-28 | 2018-02-20 | Microsoft Technology Licensing, Llc | Representative motion information for temporal motion prediction in video encoding and decoding |
| US9762902B2 (en) * | 2012-01-09 | 2017-09-12 | Futurewei Technologies, Inc. | Weighted prediction method and apparatus in quantization matrix coding |
| US9531990B1 (en) | 2012-01-21 | 2016-12-27 | Google Inc. | Compound prediction using multiple sources or prediction modes |
| US9131073B1 (en) | 2012-03-02 | 2015-09-08 | Google Inc. | Motion estimation aided noise reduction |
| US8737824B1 (en) | 2012-03-09 | 2014-05-27 | Google Inc. | Adaptively encoding a media stream with compound prediction |
| US9503720B2 (en) * | 2012-03-16 | 2016-11-22 | Qualcomm Incorporated | Motion vector coding and bi-prediction in HEVC and its extensions |
| US10200709B2 (en) | 2012-03-16 | 2019-02-05 | Qualcomm Incorporated | High-level syntax extensions for high efficiency video coding |
| US10390041B2 (en) * | 2012-03-30 | 2019-08-20 | Sun Patent Trust | Predictive image coding and decoding using two reference pictures |
| US10721487B2 (en) * | 2012-04-17 | 2020-07-21 | Texas Instruments Incorporated | Converting a bi-predicted merging candidate in a merging candidate list for a prediction unit of a picture |
| JP5939016B2 (ja) | 2012-04-27 | 2016-06-22 | セイコーエプソン株式会社 | 光学デバイス及び検出装置 |
| CN104396239B (zh) * | 2012-06-21 | 2018-07-13 | 瑞典爱立信有限公司 | 用于编码视频信号的装置和方法 |
| US9185414B1 (en) | 2012-06-29 | 2015-11-10 | Google Inc. | Video encoding using variance |
| KR102259792B1 (ko) | 2012-07-02 | 2021-06-02 | 엘지전자 주식회사 | 영상 정보 코딩 방법 및 이를 이용하는 장치 |
| US9344729B1 (en) | 2012-07-11 | 2016-05-17 | Google Inc. | Selective prediction signal filtering |
| CN103634606B (zh) * | 2012-08-21 | 2015-04-08 | 腾讯科技(深圳)有限公司 | 视频编码方法和装置 |
| US20140092992A1 (en) | 2012-09-30 | 2014-04-03 | Microsoft Corporation | Supplemental enhancement information including confidence level and mixed content information |
| US9560361B2 (en) * | 2012-12-05 | 2017-01-31 | Vixs Systems Inc. | Adaptive single-field/dual-field video encoding |
| US9008363B1 (en) | 2013-01-02 | 2015-04-14 | Google Inc. | System and method for computing optical flow |
| US9628790B1 (en) | 2013-01-03 | 2017-04-18 | Google Inc. | Adaptive composite intra prediction for image and video compression |
| CN105009575B (zh) * | 2013-03-13 | 2018-12-07 | 华为技术有限公司 | 一种基于子范围编码深度查询表的方法 |
| US9749627B2 (en) | 2013-04-08 | 2017-08-29 | Microsoft Technology Licensing, Llc | Control data for motion-constrained tile set |
| US9374578B1 (en) | 2013-05-23 | 2016-06-21 | Google Inc. | Video coding using combined inter and intra predictors |
| FR3011429A1 (fr) * | 2013-09-27 | 2015-04-03 | Orange | Codage et decodage video par heritage d'un champ de vecteurs de mouvement |
| WO2015069734A1 (en) | 2013-11-05 | 2015-05-14 | Arris Enterprises, Inc. | Bit depth variable for high precision data in weighted prediction syntax and semantics |
| US9609343B1 (en) | 2013-12-20 | 2017-03-28 | Google Inc. | Video coding using compound prediction |
| WO2015100522A1 (en) | 2013-12-30 | 2015-07-09 | Mediatek Singapore Pte. Ltd. | Methods for inter-component residual prediction |
| US20150208072A1 (en) * | 2014-01-22 | 2015-07-23 | Nvidia Corporation | Adaptive video compression based on motion |
| KR101575645B1 (ko) | 2014-01-24 | 2015-12-09 | 에스케이텔레콤 주식회사 | 복수 개의 참조 픽처의 움직임 벡터 부호화/복호화 방법 및 장치와 그를 이용한 영상 부호화/복호화 장치 및 방법 |
| KR101575636B1 (ko) | 2014-01-24 | 2015-12-09 | 에스케이텔레콤 주식회사 | 복수 개의 움직임 벡터 추정을 이용한 움직임 벡터 부호화/복호화 방법 및 장치와 그를 이용한 영상 부호화/복호화 방법 및 장치 |
| KR101575616B1 (ko) | 2014-01-24 | 2015-12-09 | 에스케이텔레콤 주식회사 | 복수 개의 참조 픽처의 움직임 벡터 부호화/복호화 방법 및 장치와 그를 이용한 영상 부호화/복호화 장치 및 방법 |
| KR101575605B1 (ko) | 2014-01-24 | 2015-12-10 | 에스케이텔레콤 주식회사 | 복수 개의 참조 픽처의 움직임 벡터 부호화/복호화 방법 및 장치와 그를 이용한 영상 부호화/복호화 장치 및 방법 |
| KR101575635B1 (ko) | 2014-01-24 | 2015-12-09 | 에스케이텔레콤 주식회사 | 복수 개의 참조 픽처의 움직임 벡터 부호화/복호화 방법 및 장치와 그를 이용한 영상 부호화/복호화 장치 및 방법 |
| EP3111630B1 (en) * | 2014-03-28 | 2021-06-02 | Huawei Technologies Co., Ltd. | Method and device for generating a motion-compensated video frame |
| US9877048B2 (en) * | 2014-06-09 | 2018-01-23 | Qualcomm Incorporated | Entropy coding techniques for display stream compression (DSC) |
| KR101582504B1 (ko) * | 2014-06-12 | 2016-01-07 | 에스케이텔레콤 주식회사 | 인터 예측을 이용한 영상 부호화 및 복호화 방법과 장치 |
| KR101590493B1 (ko) | 2014-06-12 | 2016-02-02 | 에스케이텔레콤 주식회사 | 인터 예측을 이용한 영상 부호화 및 복호화 방법과 장치 |
| US10102613B2 (en) | 2014-09-25 | 2018-10-16 | Google Llc | Frequency-domain denoising |
| KR20180019509A (ko) * | 2015-03-31 | 2018-02-26 | 리얼네트웍스 인코포레이티드 | 비디오 코딩시 모션 벡터 선택 및 예측 시스템들 및 방법들 |
| CN108432252A (zh) | 2015-12-22 | 2018-08-21 | 真实网络公司 | 视频编码中的运动矢量选择及预测系统和方法 |
| US20190082192A1 (en) | 2016-03-16 | 2019-03-14 | Mediatek Inc. | Method and apparatus of pattern-based motion vector derivation for video coding |
| EP3249652B1 (en) * | 2016-05-25 | 2020-07-15 | Axis AB | Method and apparatus for playing back recorded video |
| CN106780363B (zh) * | 2016-11-21 | 2019-07-23 | 北京金山安全软件有限公司 | 一种图片处理方法、装置及电子设备 |
| US10235763B2 (en) | 2016-12-01 | 2019-03-19 | Google Llc | Determining optical flow |
| CN108347602B (zh) * | 2017-01-22 | 2021-07-30 | 上海澜至半导体有限公司 | 用于无损压缩视频数据的方法和装置 |
| RU2770185C2 (ru) * | 2017-06-26 | 2022-04-14 | ИНТЕРДИДЖИТАЛ ВиСи ХОЛДИНГЗ, ИНК. | Множество кандидатов предсказателя для компенсации движения |
| AU2018334351B2 (en) | 2017-09-15 | 2022-09-15 | Sony Corporation | Image processing device and method |
| CN108390871B (zh) * | 2018-02-09 | 2020-05-22 | 西安交通大学 | 一种基于自回归模型帧预测的雷达数据压缩方法 |
| CN116962717A (zh) * | 2018-03-14 | 2023-10-27 | Lx 半导体科技有限公司 | 图像编码/解码方法、存储介质和发送方法 |
| US11451816B2 (en) * | 2018-04-24 | 2022-09-20 | Mediatek Inc. | Storage of motion vectors for affine prediction |
| WO2019234598A1 (en) | 2018-06-05 | 2019-12-12 | Beijing Bytedance Network Technology Co., Ltd. | Interaction between ibc and stmvp |
| EP3788782A1 (en) | 2018-06-21 | 2021-03-10 | Beijing Bytedance Network Technology Co. Ltd. | Sub-block mv inheritance between color components |
| CN110636298B (zh) | 2018-06-21 | 2022-09-13 | 北京字节跳动网络技术有限公司 | 对于Merge仿射模式和非Merge仿射模式的统一约束 |
| WO2020065517A1 (en) | 2018-09-24 | 2020-04-02 | Beijing Bytedance Network Technology Co., Ltd. | Simplified history based motion vector prediction |
| CN112997495B (zh) | 2018-11-10 | 2024-02-20 | 北京字节跳动网络技术有限公司 | 当前图片参考中的取整 |
| CN120751158A (zh) * | 2019-06-27 | 2025-10-03 | 三星电子株式会社 | 视频编码方法和视频解码方法 |
| CN110636290B (zh) * | 2019-08-30 | 2021-12-03 | 北京大学 | 视频图像的运动矢量编解码方法以及编/解码器 |
| EP4030277A4 (en) * | 2019-11-21 | 2023-01-11 | Huawei Technologies Co., Ltd. | MULTIPLIER AND OPERATOR CIRCUIT |
| CN111246211B (zh) * | 2020-02-04 | 2021-11-16 | 中国联合网络通信集团有限公司 | 编码方法、解码方法、装置、设备及存储介质 |
| WO2021196087A1 (zh) * | 2020-04-01 | 2021-10-07 | 华为技术有限公司 | 视频增强的方法及装置 |
| WO2021201759A1 (en) * | 2020-04-02 | 2021-10-07 | Telefonaktiebolaget Lm Ericsson (Publ) | Decoding based on bi-directional picture condition |
| WO2025255299A1 (en) * | 2024-06-07 | 2025-12-11 | Google Llc | Directional storage of reference motion field motion vectors |
Family Cites Families (419)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPS56128070A (en) | 1980-03-13 | 1981-10-07 | Fuji Photo Film Co Ltd | Band compressing equipment of variable density picture |
| JPS60158786A (ja) | 1984-01-30 | 1985-08-20 | Kokusai Denshin Denwa Co Ltd <Kdd> | 画像動き量検出方式 |
| JPH031688Y2 (es) | 1985-02-20 | 1991-01-18 | ||
| US4661849A (en) | 1985-06-03 | 1987-04-28 | Pictel Corporation | Method and apparatus for providing motion estimation signals for communicating image sequences |
| JPS61205086U (es) | 1985-06-13 | 1986-12-24 | ||
| DE3684047D1 (de) | 1985-07-02 | 1992-04-09 | Matsushita Electric Industrial Co Ltd | Vorrichtung zur blockkodierung. |
| US4661853A (en) | 1985-11-01 | 1987-04-28 | Rca Corporation | Interfield image motion detector for video signals |
| FR2599577B1 (fr) | 1986-05-29 | 1988-08-05 | Guichard Jacques | Procede de codage par transformation pour la transmission de signaux d'image. |
| US4800432A (en) | 1986-10-24 | 1989-01-24 | The Grass Valley Group, Inc. | Video Difference key generator |
| DE3704777C1 (de) | 1987-02-16 | 1988-04-07 | Ant Nachrichtentech | Verfahren zum UEbertragen und zum Wiedergeben von Fernsehbildsequenzen |
| NL8700565A (nl) | 1987-03-10 | 1988-10-03 | Philips Nv | Televisiesysteem waarin aan een transformatiekodering onderworpen gedigitaliseerde beeldsignalen worden overgebracht van een kodeerstation naar een dekodeerstation. |
| EP0290085B1 (de) | 1987-05-06 | 1996-03-20 | Philips Patentverwaltung GmbH | System zur Übertragung von Videobildern |
| DE3717057A1 (de) | 1987-05-21 | 1988-12-01 | Bayer Ag | Verfahren zur herstellung von isocyanaten |
| EP0294962B1 (en) | 1987-06-09 | 1995-07-19 | Sony Corporation | Motion vector estimation in television images |
| EP0294958B1 (en) | 1987-06-09 | 1995-08-23 | Sony Corporation | Motion compensated interpolation of digital television images |
| US5033105A (en) | 1987-08-11 | 1991-07-16 | Apple Computer | Video compression algorithm |
| US4836119A (en) * | 1988-03-21 | 1989-06-06 | The Charles Stark Draper Laboratory, Inc. | Sperical ball positioning apparatus for seamed limp material article assembly system |
| ES2081833T3 (es) | 1988-09-16 | 1996-03-16 | Philips Electronics Nv | Sistema de television de alta definicion. |
| FR2648254B2 (fr) | 1988-09-23 | 1991-08-30 | Thomson Csf | Procede et dispositif d'estimation de mouvement dans une sequence d'images animees |
| US4985768A (en) * | 1989-01-20 | 1991-01-15 | Victor Company Of Japan, Ltd. | Inter-frame predictive encoding system with encoded and transmitted prediction error |
| US5379351A (en) | 1992-02-19 | 1995-01-03 | Integrated Information Technology, Inc. | Video compression/decompression processing and processors |
| DE3943879B4 (de) | 1989-04-17 | 2008-07-17 | Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. | Digitales Codierverfahren |
| JPH07109990B2 (ja) * | 1989-04-27 | 1995-11-22 | 日本ビクター株式会社 | 適応型フレーム間予測符号化方法及び復号方法 |
| JPH0832047B2 (ja) | 1989-04-28 | 1996-03-27 | 日本ビクター株式会社 | 予測符号化装置 |
| AU612543B2 (en) | 1989-05-11 | 1991-07-11 | Panasonic Corporation | Moving image signal encoding apparatus and decoding apparatus |
| USRE35910E (en) | 1989-05-11 | 1998-09-29 | Matsushita Electric Industrial Co., Ltd. | Moving image signal encoding apparatus and decoding apparatus |
| JPH0822064B2 (ja) | 1990-02-15 | 1996-03-04 | 三菱電機株式会社 | 変換符号化方式 |
| JPH03117991A (ja) * | 1989-09-29 | 1991-05-20 | Victor Co Of Japan Ltd | 動きベクトル符号化装置及び復号化装置 |
| US5144426A (en) * | 1989-10-13 | 1992-09-01 | Matsushita Electric Industrial Co., Ltd. | Motion compensated prediction interframe coding system |
| EP0713340B1 (en) | 1989-10-14 | 2001-08-22 | Sony Corporation | Video signal coding/decoding method and apparatus |
| JP2787599B2 (ja) | 1989-11-06 | 1998-08-20 | 富士通株式会社 | 画像信号符号化制御方式 |
| JP2636441B2 (ja) * | 1989-11-09 | 1997-07-30 | 富士ゼロックス株式会社 | 画像記録装置 |
| NL9000424A (nl) | 1990-02-22 | 1991-09-16 | Philips Nv | Overdrachtsysteem voor gedigitaliseerde televisiebeelden. |
| JPH082107B2 (ja) | 1990-03-02 | 1996-01-10 | 国際電信電話株式会社 | 動画像のハイブリッド符号化方法及びその装置 |
| JPH03265290A (ja) | 1990-03-14 | 1991-11-26 | Toshiba Corp | テレビジョン信号走査線変換器 |
| US5103306A (en) | 1990-03-28 | 1992-04-07 | Transitions Research Corporation | Digital image compression employing a resolution gradient |
| US5091782A (en) | 1990-04-09 | 1992-02-25 | General Instrument Corporation | Apparatus and method for adaptively compressing successive blocks of digital video |
| US4999705A (en) | 1990-05-03 | 1991-03-12 | At&T Bell Laboratories | Three dimensional motion compensated video coding |
| JP2969782B2 (ja) | 1990-05-09 | 1999-11-02 | ソニー株式会社 | 符号化データ編集方法及び符号化データ編集装置 |
| US5155594A (en) | 1990-05-11 | 1992-10-13 | Picturetel Corporation | Hierarchical encoding method and apparatus employing background references for efficiently communicating image sequences |
| CA2335403C (en) | 1990-06-05 | 2002-03-19 | Koninklijke Philips Electronics N.V. | Optical readable disc storing full-motion video scene |
| US5068724A (en) | 1990-06-15 | 1991-11-26 | General Instrument Corporation | Adaptive motion compensation for digital television |
| JP3037383B2 (ja) | 1990-09-03 | 2000-04-24 | キヤノン株式会社 | 画像処理システム及びその方法 |
| US5095342A (en) * | 1990-09-28 | 1992-03-10 | Xerox Corporation | Methods for sheet scheduling in an imaging system having an endless duplex paper path loop |
| US5175618A (en) | 1990-10-31 | 1992-12-29 | Victor Company Of Japan, Ltd. | Compression method for interlace moving image signals |
| JP3303869B2 (ja) | 1990-11-30 | 2002-07-22 | 株式会社日立製作所 | 画像符号化方法、画像符号化装置、画像復号化方法 |
| USRE35093E (en) | 1990-12-03 | 1995-11-21 | The Trustees Of Columbia University In The City Of New York | Systems and methods for coding even fields of interlaced video sequences |
| US5193004A (en) * | 1990-12-03 | 1993-03-09 | The Trustees Of Columbia University In The City Of New York | Systems and methods for coding even fields of interlaced video sequences |
| US5080340A (en) * | 1991-01-02 | 1992-01-14 | Eastman Kodak Company | Modular finisher for a reproduction apparatus |
| US5111292A (en) * | 1991-02-27 | 1992-05-05 | General Electric Company | Priority selection apparatus as for a video signal processor |
| JPH0630280A (ja) | 1991-03-19 | 1994-02-04 | Nec Eng Ltd | 2値画像データのブロック別選択型符号化前処理方式 |
| JP3119888B2 (ja) * | 1991-04-18 | 2000-12-25 | 松下電器産業株式会社 | 信号処理方法及び記録再生装置 |
| DE4113505A1 (de) | 1991-04-25 | 1992-10-29 | Thomson Brandt Gmbh | Verfahren zur bildsignalcodierung |
| US5212549A (en) * | 1991-04-29 | 1993-05-18 | Rca Thomson Licensing Corporation | Error concealment apparatus for a compressed video signal processing system |
| US5185819A (en) * | 1991-04-29 | 1993-02-09 | General Electric Company | Video signal compression apparatus for independently compressing odd and even fields |
| JPH04334188A (ja) | 1991-05-08 | 1992-11-20 | Nec Corp | 動画像信号の符号化方式 |
| CA2087946A1 (en) | 1991-05-24 | 1992-11-25 | Michael Burl | Video image processing |
| US5467136A (en) | 1991-05-31 | 1995-11-14 | Kabushiki Kaisha Toshiba | Video decoder for determining a motion vector from a scaled vector and a difference vector |
| US5317397A (en) * | 1991-05-31 | 1994-05-31 | Kabushiki Kaisha Toshiba | Predictive coding using spatial-temporal filtering and plural motion vectors |
| US5784107A (en) | 1991-06-17 | 1998-07-21 | Matsushita Electric Industrial Co., Ltd. | Method and apparatus for picture coding and method and apparatus for picture decoding |
| JP2684941B2 (ja) | 1992-11-25 | 1997-12-03 | 松下電器産業株式会社 | 画像符号化方法及び画像符号化装置 |
| JP2977104B2 (ja) * | 1991-07-26 | 1999-11-10 | ソニー株式会社 | 動画像データエンコード方法および装置、並びに動画像データデコード方法および装置 |
| JP3092280B2 (ja) | 1991-07-30 | 2000-09-25 | ソニー株式会社 | 画像信号の高能率符号化及び復号化装置 |
| US5539466A (en) | 1991-07-30 | 1996-07-23 | Sony Corporation | Efficient coding apparatus for picture signal and decoding apparatus therefor |
| JP2699703B2 (ja) | 1991-07-31 | 1998-01-19 | 松下電器産業株式会社 | 動き補償予測方法とそれを用いた画像信号符号化方法 |
| US5428396A (en) | 1991-08-03 | 1995-06-27 | Sony Corporation | Variable length coding/decoding method for motion vectors |
| JPH0541862A (ja) | 1991-08-03 | 1993-02-19 | Sony Corp | 動きベクトルの可変長符号化方式 |
| JP3001688B2 (ja) | 1991-08-05 | 2000-01-24 | 株式会社大一商会 | パチンコ球の循環制御装置 |
| JP2507204B2 (ja) | 1991-08-30 | 1996-06-12 | 松下電器産業株式会社 | 映像信号符号化装置 |
| CA2079434A1 (en) | 1991-09-30 | 1993-03-31 | Derek Andrew | Motion vector estimation, motion picture encoding and storage |
| JP2991833B2 (ja) * | 1991-10-11 | 1999-12-20 | 松下電器産業株式会社 | インターレス走査ディジタルビデオ信号の符号化装置及びその方法 |
| JP2586260B2 (ja) * | 1991-10-22 | 1997-02-26 | 三菱電機株式会社 | 適応的ブロッキング画像符号化装置 |
| JP3134424B2 (ja) | 1991-10-31 | 2001-02-13 | ソニー株式会社 | 可変長符号化方法及び装置 |
| JP2962012B2 (ja) * | 1991-11-08 | 1999-10-12 | 日本ビクター株式会社 | 動画像符号化装置及びその復号装置 |
| JPH05137131A (ja) * | 1991-11-13 | 1993-06-01 | Sony Corp | フレーム間動き予測方法 |
| US5227878A (en) * | 1991-11-15 | 1993-07-13 | At&T Bell Laboratories | Adaptive coding and decoding of frames and fields of video |
| JP2562499Y2 (ja) | 1991-12-24 | 1998-02-10 | 株式会社三陽電機製作所 | 運賃箱 |
| US5510840A (en) | 1991-12-27 | 1996-04-23 | Sony Corporation | Methods and devices for encoding and decoding frame signals and recording medium therefor |
| JP2524044B2 (ja) | 1992-01-22 | 1996-08-14 | 松下電器産業株式会社 | 画像符号化方法及び画像符号化装置 |
| US6441842B1 (en) | 1992-02-19 | 2002-08-27 | 8×8, Inc. | Video compression/decompression processing and processors |
| US5594813A (en) | 1992-02-19 | 1997-01-14 | Integrated Information Technology, Inc. | Programmable architecture and methods for motion estimation |
| DE69322769T2 (de) | 1992-03-03 | 1999-07-22 | Kabushiki Kaisha Toshiba, Kawasaki, Kanagawa | Koder für zeitveränderliche bilder |
| US5293229A (en) * | 1992-03-27 | 1994-03-08 | Matsushita Electric Corporation Of America | Apparatus and method for processing groups of fields in a video data compression system |
| US5287420A (en) * | 1992-04-08 | 1994-02-15 | Supermac Technology | Method for image compression on a personal computer |
| KR0166716B1 (ko) | 1992-06-18 | 1999-03-20 | 강진구 | 블럭 dpcm을 이용한 부호화/복호화방법 및 장치 |
| JP3443867B2 (ja) | 1992-06-26 | 2003-09-08 | ソニー株式会社 | 画像信号符号化、復号化方法及び画像信号記録媒体 |
| US6226327B1 (en) | 1992-06-29 | 2001-05-01 | Sony Corporation | Video coding method and apparatus which select between frame-based and field-based predictive modes |
| US5666461A (en) | 1992-06-29 | 1997-09-09 | Sony Corporation | High efficiency encoding and decoding of picture signals and recording medium containing same |
| US5412435A (en) * | 1992-07-03 | 1995-05-02 | Kokusai Denshin Denwa Kabushiki Kaisha | Interlaced video signal motion compensation prediction system |
| JPH06153180A (ja) | 1992-09-16 | 1994-05-31 | Fujitsu Ltd | 画像データ符号化方法及び装置 |
| US5461420A (en) | 1992-09-18 | 1995-10-24 | Sony Corporation | Apparatus for coding and decoding a digital video signal derived from a motion picture film source |
| JPH06113287A (ja) | 1992-09-30 | 1994-04-22 | Matsushita Electric Ind Co Ltd | 画像符号化装置と画像復号化装置 |
| US5982437A (en) | 1992-10-26 | 1999-11-09 | Sony Corporation | Coding method and system, and decoding method and system |
| JPH06225279A (ja) | 1992-10-26 | 1994-08-12 | Sony Corp | 符号化方法、復号化方法、符号化装置及び復号化装置 |
| KR0166722B1 (ko) | 1992-11-30 | 1999-03-20 | 윤종용 | 부호화 및 복호화방법 및 그 장치 |
| JP3358835B2 (ja) | 1992-12-14 | 2002-12-24 | ソニー株式会社 | 画像符号化方法及び装置 |
| US5467134A (en) | 1992-12-22 | 1995-11-14 | Microsoft Corporation | Method and system for compressing video data |
| US5400075A (en) | 1993-01-13 | 1995-03-21 | Thomson Consumer Electronics, Inc. | Adaptive variable length encoder/decoder |
| US5491516A (en) | 1993-01-14 | 1996-02-13 | Rca Thomson Licensing Corporation | Field elimination apparatus for a video compression/decompression system |
| US5544286A (en) | 1993-01-29 | 1996-08-06 | Microsoft Corporation | Digital video data compression technique |
| US5592228A (en) | 1993-03-04 | 1997-01-07 | Kabushiki Kaisha Toshiba | Video encoder using global motion estimation and polygonal patch motion estimation |
| US5376968A (en) | 1993-03-11 | 1994-12-27 | General Instrument Corporation | Adaptive compression of digital video data using different modes such as PCM and DPCM |
| JP3312417B2 (ja) | 1993-03-18 | 2002-08-05 | ソニー株式会社 | 画像信号符号化装置及び画像信号復号化装置 |
| JPH06276481A (ja) | 1993-03-18 | 1994-09-30 | Sony Corp | 画像信号符号化及び復号化方法、並びに記録媒体 |
| WO1994022269A1 (fr) | 1993-03-24 | 1994-09-29 | Sony Corporation | Procede et appareil pour le codage/decodage de vecteurs de mouvement, et procede et appareil pour le codage/decodage de signaux d'image |
| KR950702083A (ko) * | 1993-04-08 | 1995-05-17 | 오오가 노리오 | 움직이는 벡터검출방법 및 장치 |
| US5442400A (en) | 1993-04-29 | 1995-08-15 | Rca Thomson Licensing Corporation | Error concealment apparatus for MPEG-like video data |
| DE69416717T2 (de) | 1993-05-21 | 1999-10-07 | Nippon Telegraph And Telephone Corp., Tokio/Tokyo | Bewegtbildkoder und -dekoder |
| JPH06343172A (ja) | 1993-06-01 | 1994-12-13 | Matsushita Electric Ind Co Ltd | 動きベクトル検出方法及び動きベクトル符号化方法 |
| US5448297A (en) | 1993-06-16 | 1995-09-05 | Intel Corporation | Method and system for encoding images using skip blocks |
| JPH0730896A (ja) * | 1993-06-25 | 1995-01-31 | Matsushita Electric Ind Co Ltd | 動きベクトル符号化及び復号化方法 |
| US5517327A (en) | 1993-06-30 | 1996-05-14 | Minolta Camera Kabushiki Kaisha | Data processor for image data using orthogonal transformation |
| US5329365A (en) * | 1993-07-07 | 1994-07-12 | Rca Thomson Licensing Corporation | Method and apparatus for providing compressed non-interlaced scanned video signal |
| JP3152268B2 (ja) * | 1993-07-16 | 2001-04-03 | 日本ビクター株式会社 | 画像情報記録方法及び画像情報再生方法 |
| US5477272A (en) | 1993-07-22 | 1995-12-19 | Gte Laboratories Incorporated | Variable-block size multi-resolution motion estimation scheme for pyramid coding |
| US5453799A (en) * | 1993-11-05 | 1995-09-26 | Comsat Corporation | Unified motion estimation architecture |
| JPH07135660A (ja) | 1993-11-12 | 1995-05-23 | Matsushita Electric Ind Co Ltd | 動きベクトル符号化装置 |
| JP3050736B2 (ja) * | 1993-12-13 | 2000-06-12 | シャープ株式会社 | 動画像符号化装置 |
| KR0155784B1 (ko) * | 1993-12-16 | 1998-12-15 | 김광호 | 영상데이타의 적응형 가변장 부호화/복호화방법 |
| US5465118A (en) | 1993-12-17 | 1995-11-07 | International Business Machines Corporation | Luminance transition coding method for software motion video compression/decompression |
| US5694173A (en) | 1993-12-29 | 1997-12-02 | Kabushiki Kaisha Toshiba | Video data arranging method and video data encoding/decoding apparatus |
| US5586200A (en) | 1994-01-07 | 1996-12-17 | Panasonic Technologies, Inc. | Segmentation based image compression system |
| JP2993351B2 (ja) * | 1994-02-14 | 1999-12-20 | 松下電器産業株式会社 | 圧縮データ記録装置 |
| DE69535952D1 (de) * | 1994-03-30 | 2009-06-25 | Nxp Bv | Verfahren und Schaltung zur Bewegungsschätzung zwischen Bildern mit zwei Zeilensprunghalbbildern, und Vorrichtung zur digitalen Signalkodierung mit einer solchen Schaltung |
| US5550541A (en) | 1994-04-01 | 1996-08-27 | Dolby Laboratories Licensing Corporation | Compact source coding tables for encoder/decoder system |
| TW283289B (es) | 1994-04-11 | 1996-08-11 | Gen Instrument Corp | |
| US5650829A (en) * | 1994-04-21 | 1997-07-22 | Sanyo Electric Co., Ltd. | Motion video coding systems with motion vector detection |
| US5457495A (en) | 1994-05-25 | 1995-10-10 | At&T Ipm Corp. | Adaptive video coder with dynamic bit allocation |
| US5767898A (en) * | 1994-06-23 | 1998-06-16 | Sanyo Electric Co., Ltd. | Three-dimensional image coding by merger of left and right images |
| US5796438A (en) | 1994-07-05 | 1998-08-18 | Sony Corporation | Methods and apparatus for interpolating picture information |
| US5594504A (en) | 1994-07-06 | 1997-01-14 | Lucent Technologies Inc. | Predictive video coding using a motion vector updating routine |
| KR0126871B1 (ko) | 1994-07-30 | 1997-12-29 | 심상철 | 양방향 이동벡터 추정을 위한 고속 블럭정합 방식 |
| US5684538A (en) | 1994-08-18 | 1997-11-04 | Hitachi, Ltd. | System and method for performing video coding/decoding using motion compensation |
| FR2725577B1 (fr) * | 1994-10-10 | 1996-11-29 | Thomson Consumer Electronics | Procede de codage ou de decodage de vecteurs mouvement et dispositif de codage ou de decodage mettant en oeuvre ledit procede |
| US5550847A (en) | 1994-10-11 | 1996-08-27 | Motorola, Inc. | Device and method of signal loss recovery for realtime and/or interactive communications |
| JP3474005B2 (ja) | 1994-10-13 | 2003-12-08 | 沖電気工業株式会社 | 動画像符号化方法及び動画像復号方法 |
| US5552832A (en) | 1994-10-26 | 1996-09-03 | Intel Corporation | Run-length encoding sequence for video signals |
| US5623311A (en) | 1994-10-28 | 1997-04-22 | Matsushita Electric Corporation Of America | MPEG video decoder having a high bandwidth memory |
| EP0710033A3 (en) * | 1994-10-28 | 1999-06-09 | Matsushita Electric Industrial Co., Ltd. | MPEG video decoder having a high bandwidth memory |
| JPH08140099A (ja) | 1994-11-11 | 1996-05-31 | Canon Inc | 符号化装置及び方法 |
| DE69525424T2 (de) * | 1994-11-25 | 2002-10-02 | Koninklijke Philips Electronics N.V., Eindhoven | Verfahren und Vorrichtung zur Dekodierung von kodierten Videosignalen |
| JP2951861B2 (ja) | 1994-12-28 | 1999-09-20 | シャープ株式会社 | 画像符号化装置及び画像復号装置 |
| MY113223A (en) | 1994-12-29 | 2001-12-31 | Sony Corp | Processing of redundant fields in a moving picture to achive synchronized system operation |
| US5619281A (en) | 1994-12-30 | 1997-04-08 | Daewoo Electronics Co., Ltd | Method and apparatus for detecting motion vectors in a frame decimating video encoder |
| EP0721287A1 (en) | 1995-01-09 | 1996-07-10 | Daewoo Electronics Co., Ltd | Method and apparatus for encoding a video signal |
| JP3732867B2 (ja) * | 1995-03-09 | 2006-01-11 | 株式会社ルネサステクノロジ | 画像伸張装置 |
| DE69619002T2 (de) | 1995-03-10 | 2002-11-21 | Kabushiki Kaisha Toshiba, Kawasaki | Bildkodierungs-/-dekodierungsvorrichtung |
| KR0171118B1 (ko) | 1995-03-20 | 1999-03-20 | 배순훈 | 비디오신호 부호화 장치 |
| KR0181027B1 (ko) | 1995-03-20 | 1999-05-01 | 배순훈 | 화소 단위 움직임 추정을 이용하는 영상처리 시스템 |
| US5489969A (en) * | 1995-03-27 | 1996-02-06 | Xerox Corporation | Apparatus and method of controlling interposition of sheet in a stream of imaged substrates |
| CN1154631A (zh) * | 1995-04-14 | 1997-07-16 | 株式会社东芝 | 图象解码装置 |
| KR0181063B1 (ko) | 1995-04-29 | 1999-05-01 | 배순훈 | 특징점을 이용한 움직임 보상에서의 그리드 형성방법 및 장치 |
| JP3803122B2 (ja) * | 1995-05-02 | 2006-08-02 | 松下電器産業株式会社 | 画像メモリ装置および動きベクトル検出回路 |
| US5654771A (en) | 1995-05-23 | 1997-08-05 | The University Of Rochester | Video compression system using a dense motion vector field and a triangular patch mesh overlay model |
| JP3903496B2 (ja) | 1995-06-05 | 2007-04-11 | ソニー株式会社 | 画像符号化方法、符号化装置、復号方法および復号装置 |
| GB2301971B (en) | 1995-06-06 | 1999-10-06 | Sony Uk Ltd | Video compression |
| US5835149A (en) | 1995-06-06 | 1998-11-10 | Intel Corporation | Bit allocation in a coded video sequence |
| GB2301972B (en) | 1995-06-06 | 1999-10-20 | Sony Uk Ltd | Video compression |
| US5731850A (en) * | 1995-06-07 | 1998-03-24 | Maturi; Gregory V. | Hybrid hierarchial/full-search MPEG encoder motion estimation |
| US5629762A (en) * | 1995-06-07 | 1997-05-13 | Eastman Kodak Company | Image forming apparatus having a duplex path and/or an inverter |
| US5864711A (en) | 1995-07-05 | 1999-01-26 | Microsoft Corporation | System for determining more accurate translation between first and second translator, and providing translated data to second computer if first translator is more accurate |
| US6208761B1 (en) | 1995-07-11 | 2001-03-27 | Telefonaktiebolaget Lm Ericsson (Publ) | Video coding |
| US5687097A (en) | 1995-07-13 | 1997-11-11 | Zapex Technologies, Inc. | Method and apparatus for efficiently determining a frame motion vector in a video encoder |
| US5668608A (en) | 1995-07-26 | 1997-09-16 | Daewoo Electronics Co., Ltd. | Motion vector estimation method and apparatus for use in an image signal encoding system |
| US5825830A (en) | 1995-08-17 | 1998-10-20 | Kopf; David A. | Method and apparatus for the compression of audio, video or other data |
| US5764807A (en) | 1995-09-14 | 1998-06-09 | Primacomp, Inc. | Data compression using set partitioning in hierarchical trees |
| GB2305797B (en) * | 1995-09-27 | 2000-03-01 | Sony Uk Ltd | Video data compression |
| US5883678A (en) | 1995-09-29 | 1999-03-16 | Kabushiki Kaisha Toshiba | Video coding and video decoding apparatus for reducing an alpha-map signal at a controlled reduction ratio |
| US6307967B1 (en) | 1995-09-29 | 2001-10-23 | Kabushiki Kaisha Toshiba | Video coding and video decoding apparatus |
| US5995670A (en) | 1995-10-05 | 1999-11-30 | Microsoft Corporation | Simplified chain encoding |
| JPH09107547A (ja) | 1995-10-09 | 1997-04-22 | Hitachi Ltd | 既圧縮動画データ量削減装置および既圧縮動画データ量削減システムならびに既圧縮動画データ量削減方法 |
| US5819215A (en) | 1995-10-13 | 1998-10-06 | Dobson; Kurt | Method and apparatus for wavelet based data compression having adaptive bit rate control for compression of digital audio or other sensory data |
| JP3377893B2 (ja) | 1995-10-25 | 2003-02-17 | 沖電気工業株式会社 | 動画像符号化復号化装置 |
| US5929940A (en) | 1995-10-25 | 1999-07-27 | U.S. Philips Corporation | Method and device for estimating motion between images, system for encoding segmented images |
| KR100211917B1 (ko) | 1995-10-26 | 1999-08-02 | 김영환 | 물체 모양정보 부호화 방법 |
| US6192081B1 (en) | 1995-10-26 | 2001-02-20 | Sarnoff Corporation | Apparatus and method for selecting a coding mode in a block-based coding system |
| US5991463A (en) | 1995-11-08 | 1999-11-23 | Genesis Microchip Inc. | Source data interpolation method and apparatus |
| US5963673A (en) | 1995-12-20 | 1999-10-05 | Sanyo Electric Co., Ltd. | Method and apparatus for adaptively selecting a coding mode for video encoding |
| JPH09182083A (ja) | 1995-12-27 | 1997-07-11 | Matsushita Electric Ind Co Ltd | ビデオ画像符号化方法及び復号化方法とその装置 |
| US6055012A (en) * | 1995-12-29 | 2000-04-25 | Lucent Technologies Inc. | Digital multi-view video compression with complexity and compatibility constraints |
| JP2798035B2 (ja) | 1996-01-17 | 1998-09-17 | 日本電気株式会社 | 適応動きベクトル補間による動き補償フレーム間予測方法 |
| US5692063A (en) | 1996-01-19 | 1997-11-25 | Microsoft Corporation | Method and system for unrestricted motion estimation for video |
| US5799113A (en) | 1996-01-19 | 1998-08-25 | Microsoft Corporation | Method for expanding contracted video images |
| US5787203A (en) | 1996-01-19 | 1998-07-28 | Microsoft Corporation | Method and system for filtering compressed video images |
| US5737019A (en) * | 1996-01-29 | 1998-04-07 | Matsushita Electric Corporation Of America | Method and apparatus for changing resolution by direct DCT mapping |
| US6957350B1 (en) * | 1996-01-30 | 2005-10-18 | Dolby Laboratories Licensing Corporation | Encrypted and watermarked temporal and resolution layering in advanced television |
| JP3521596B2 (ja) | 1996-01-30 | 2004-04-19 | ソニー株式会社 | 信号符号化方法 |
| US5798788A (en) * | 1996-02-01 | 1998-08-25 | David Sarnoff Research Center, Inc. | Method and apparatus for evaluating field display functionality of a video decoder |
| DE69614500T2 (de) * | 1996-02-27 | 2001-11-22 | Stmicroelectronics S.R.L., Agrate Brianza | Speicherverminderung für das Grundprofil und die Hauptebene eines MPEG-2-Dekoders |
| US5982438A (en) | 1996-03-22 | 1999-11-09 | Microsoft Corporation | Overlapped motion compensation for object coding |
| JP3371191B2 (ja) | 1996-03-22 | 2003-01-27 | ソニー株式会社 | 画像信号の符号化方法及び復号方法、並びに、符号化装置及び復号装置 |
| ES2171377T3 (es) | 1996-05-28 | 2002-09-16 | Matsushita Electric Industrial Co Ltd | Dispositivo de prediccion y decodificado de imagen. |
| US5847776A (en) | 1996-06-24 | 1998-12-08 | Vdonet Corporation Ltd. | Method for entropy constrained motion estimation and coding of motion vectors with increased search range |
| JP3628810B2 (ja) * | 1996-06-28 | 2005-03-16 | 三菱電機株式会社 | 画像符号化装置 |
| EP0850540B1 (en) * | 1996-07-11 | 2004-11-10 | Koninklijke Philips Electronics N.V. | Transmission and reception of encoded video pictures |
| US5926226A (en) | 1996-08-09 | 1999-07-20 | U.S. Robotics Access Corp. | Method for adjusting the quality of a video coder |
| JPH10191360A (ja) | 1996-08-22 | 1998-07-21 | Cirrus Logic Inc | 動き推定ベクトルを求める方法および動き推定ベクトルを用いて動画像データを圧縮する方法 |
| JP3263807B2 (ja) | 1996-09-09 | 2002-03-11 | ソニー株式会社 | 画像符号化装置および画像符号化方法 |
| DE19637522A1 (de) | 1996-09-13 | 1998-03-19 | Bosch Gmbh Robert | Verfahren zur Reduzierung von Daten in Videosignalen |
| US6233017B1 (en) | 1996-09-16 | 2001-05-15 | Microsoft Corporation | Multimedia compression system with adaptive block sizes |
| US6035070A (en) | 1996-09-24 | 2000-03-07 | Moon; Joo-Hee | Encoder/decoder for coding/decoding gray scale shape data and method thereof |
| KR100303685B1 (ko) | 1996-09-30 | 2001-09-24 | 송문섭 | 영상 예측부호화 장치 및 그 방법 |
| JP4034380B2 (ja) | 1996-10-31 | 2008-01-16 | 株式会社東芝 | 画像符号化/復号化方法及び装置 |
| US5748789A (en) | 1996-10-31 | 1998-05-05 | Microsoft Corporation | Transparent block skipping in object-based video coding systems |
| JPH10145779A (ja) * | 1996-11-06 | 1998-05-29 | Sony Corp | フィールド検出装置およびフィールド検出方法、画像符号化装置および画像符号化方法、並びに記録媒体および記録方法 |
| US6130963A (en) | 1996-11-22 | 2000-10-10 | C-Cube Semiconductor Ii, Inc. | Memory efficient decoding of video frame chroma |
| US5905542A (en) * | 1996-12-04 | 1999-05-18 | C-Cube Microsystems, Inc. | Simplified dual prime video motion estimation |
| WO1998026601A1 (en) | 1996-12-12 | 1998-06-18 | Matsushita Electric Industrial Co., Ltd. | Picture encoder and picture decoder |
| US6377628B1 (en) | 1996-12-18 | 2002-04-23 | Thomson Licensing S.A. | System for maintaining datastream continuity in the presence of disrupted source data |
| US6167090A (en) | 1996-12-26 | 2000-12-26 | Nippon Steel Corporation | Motion vector detecting apparatus |
| US5874111A (en) * | 1997-01-07 | 1999-02-23 | Maitra; Amarnath | Process for the preparation of highly monodispersed polymeric hydrophilic nanoparticles |
| JP3301375B2 (ja) * | 1997-01-24 | 2002-07-15 | ソニー株式会社 | 画像信号符号化装置及び方法、画像信号復号装置及び方法 |
| EP0786907A3 (en) | 1997-01-24 | 2001-06-13 | Texas Instruments Incorporated | Video encoder |
| EP0907290B8 (en) * | 1997-01-30 | 2002-09-04 | Matsushita Electric Industrial Co., Ltd. | Digital image replenishment method, image processing device and data recording medium |
| DE69837003T2 (de) | 1997-02-12 | 2007-10-18 | Mediatek Inc. | Vorrichtung und verfahren zur optimierung der bitratensteurung in einem kodiersystem |
| CA2279923C (en) | 1997-02-14 | 2004-04-06 | Nippon Telegraph And Telephone Corporation | Predictive coding method and decoding method for dynamic image |
| US6201927B1 (en) | 1997-02-18 | 2001-03-13 | Mary Lafuze Comer | Trick play reproduction of MPEG encoded signals |
| US5974184A (en) | 1997-03-07 | 1999-10-26 | General Instrument Corporation | Intra-macroblock DC and AC coefficient prediction for interlaced digital video |
| US6005980A (en) | 1997-03-07 | 1999-12-21 | General Instrument Corporation | Motion estimation and compensation of video object planes for interlaced digital video |
| CN1297147C (zh) * | 1997-03-07 | 2007-01-24 | 通用仪器公司 | 对交错数字视频的双向预测的视频目标平面的预测和编码 |
| US5991447A (en) | 1997-03-07 | 1999-11-23 | General Instrument Corporation | Prediction and coding of bi-directionally predicted video object planes for interlaced digital video |
| US6175592B1 (en) | 1997-03-12 | 2001-01-16 | Matsushita Electric Industrial Co., Ltd. | Frequency domain filtering for down conversion of a DCT encoded picture |
| US5844613A (en) | 1997-03-17 | 1998-12-01 | Microsoft Corporation | Global motion estimator for motion video signal encoding |
| US6263065B1 (en) * | 1997-03-18 | 2001-07-17 | At&T Corp. | Method and apparatus for simulating central queue for distributing call in distributed arrangement of automatic call distributors |
| US6404813B1 (en) * | 1997-03-27 | 2002-06-11 | At&T Corp. | Bidirectionally predicted pictures or video object planes for efficient and flexible video coding |
| WO1998044479A1 (en) | 1997-03-31 | 1998-10-08 | Matsushita Electric Industrial Co., Ltd. | Dynamic image display method and device therefor |
| JP3217987B2 (ja) | 1997-03-31 | 2001-10-15 | 松下電器産業株式会社 | 動画像信号の復号方法および符号化方法 |
| US5973755A (en) | 1997-04-04 | 1999-10-26 | Microsoft Corporation | Video encoder and decoder using bilinear motion compensation and lapped orthogonal transforms |
| JP3129986B2 (ja) | 1997-04-09 | 2001-01-31 | 日本車輌製造株式会社 | 杭施工機のトルク管理装置 |
| US6370276B2 (en) | 1997-04-09 | 2002-04-09 | Matsushita Electric Industrial Co., Ltd. | Image predictive decoding method, image predictive decoding apparatus, image predictive coding method, image predictive coding apparatus, and data storage media |
| US6441813B1 (en) | 1997-05-16 | 2002-08-27 | Kabushiki Kaisha Toshiba | Computer system, and video decoder used in the system |
| JP3226020B2 (ja) * | 1997-05-28 | 2001-11-05 | 日本電気株式会社 | 動きベクトル検出装置 |
| EP1138152B8 (en) | 1997-05-30 | 2007-02-14 | MediaTek Inc. | Method and apparatus for performing hierarchical motion estimation using nonlinear pyramid |
| JP3164031B2 (ja) * | 1997-05-30 | 2001-05-08 | 日本ビクター株式会社 | 動画像符号化復号化装置、動画像符号化復号化方法、及び動画像符号化記録媒体 |
| US6067322A (en) | 1997-06-04 | 2000-05-23 | Microsoft Corporation | Half pixel motion estimation in motion video signal encoding |
| US6057884A (en) * | 1997-06-05 | 2000-05-02 | General Instrument Corporation | Temporal and spatial scaleable coding for video object planes |
| US6574371B2 (en) | 1997-06-09 | 2003-06-03 | Hitachi, Ltd. | Image decoding method |
| EP2285119B1 (en) * | 1997-06-09 | 2015-08-05 | Hitachi, Ltd. | Image decoding method |
| JPH1169345A (ja) | 1997-06-11 | 1999-03-09 | Fujitsu Ltd | フレーム間予測動画像符号化装置及び復号装置並びにフレーム間予測動画像符号化方法及び復号方法 |
| GB9712651D0 (en) * | 1997-06-18 | 1997-08-20 | Nds Ltd | Improvements in or relating to encoding digital signals |
| US6064771A (en) | 1997-06-23 | 2000-05-16 | Real-Time Geometry Corp. | System and method for asynchronous, adaptive moving picture compression, and decompression |
| US6351563B1 (en) * | 1997-07-09 | 2002-02-26 | Hyundai Electronics Ind. Co., Ltd. | Apparatus and method for coding/decoding scalable shape binary image using mode of lower and current layers |
| US6421738B1 (en) | 1997-07-15 | 2002-07-16 | Microsoft Corporation | Method and system for capturing and encoding full-screen video graphics |
| JP2897763B2 (ja) | 1997-07-28 | 1999-05-31 | 日本ビクター株式会社 | 動き補償符号化装置、復号化装置、符号化方法及び復号化方法 |
| KR100244291B1 (ko) | 1997-07-30 | 2000-02-01 | 구본준 | 동영상 움직임 벡터 코딩 방법 |
| US6310918B1 (en) | 1997-07-31 | 2001-10-30 | Lsi Logic Corporation | System and method for motion vector extraction and computation meeting 2-frame store and letterboxing requirements |
| US6266091B1 (en) * | 1997-07-31 | 2001-07-24 | Lsi Logic Corporation | System and method for low delay mode operation video decoding |
| FR2766946B1 (fr) | 1997-08-04 | 2000-08-11 | Thomson Multimedia Sa | Procede et dispositif de pretraitement pour estimation de mouvement |
| US6281942B1 (en) | 1997-08-11 | 2001-08-28 | Microsoft Corporation | Spatial and temporal filtering mechanism for digital motion video signals |
| KR100252342B1 (ko) | 1997-08-12 | 2000-04-15 | 전주범 | 움직임 벡터 부호화 방법 및 그 장치 |
| KR100235356B1 (ko) | 1997-08-13 | 1999-12-15 | 전주범 | 개선된 움직임 추정 장치 및 그 추정 방법 |
| JPH11136683A (ja) | 1997-10-27 | 1999-05-21 | Matsushita Electric Ind Co Ltd | 映像信号符号化装置 |
| US6477202B1 (en) | 1997-09-03 | 2002-11-05 | Matsushita Electric Industrial Co., Ltd. | Apparatus of layered picture coding, apparatus of picture decoding, methods of picture decoding, apparatus of recording for digital broadcasting signal, and apparatus of picture and audio decoding |
| US6249318B1 (en) | 1997-09-12 | 2001-06-19 | 8×8, Inc. | Video coding/decoding arrangement and method therefor |
| KR100249223B1 (ko) * | 1997-09-12 | 2000-03-15 | 구자홍 | 엠팩(mpeg)-4의움직임벡터코딩방법 |
| JP3662129B2 (ja) | 1997-11-11 | 2005-06-22 | 松下電器産業株式会社 | マルチメディア情報編集装置 |
| US6148033A (en) | 1997-11-20 | 2000-11-14 | Hitachi America, Ltd. | Methods and apparatus for improving picture quality in reduced resolution video decoders |
| CN1117480C (zh) * | 1997-12-01 | 2003-08-06 | 三星电子株式会社 | 运动向量预测方法 |
| US6111914A (en) | 1997-12-01 | 2000-08-29 | Conexant Systems, Inc. | Adaptive entropy coding in adaptive quantization framework for video signal coding systems and processes |
| US5973743A (en) | 1997-12-02 | 1999-10-26 | Daewoo Electronics Co., Ltd. | Mode coding method and apparatus for use in an interlaced shape coder |
| US6094225A (en) * | 1997-12-02 | 2000-07-25 | Daewoo Electronics, Co., Ltd. | Method and apparatus for encoding mode signals for use in a binary shape coder |
| KR100523908B1 (ko) * | 1997-12-12 | 2006-01-27 | 주식회사 팬택앤큐리텔 | 격행주사 영상에 대한 영상신호 부호화 장치 및 그 방법 |
| JP3740813B2 (ja) * | 1997-12-12 | 2006-02-01 | ソニー株式会社 | 画像符号化方法および画像符号化装置 |
| US6198773B1 (en) | 1997-12-18 | 2001-03-06 | Zoran Corporation | Video memory management for MPEG video decode and display system |
| KR100252108B1 (ko) * | 1997-12-20 | 2000-04-15 | 윤종용 | Mpeg 압축부호화 및 복호화기를 채용한 디지털 기록 재생장치 및 그 방법 |
| US6339656B1 (en) | 1997-12-25 | 2002-01-15 | Matsushita Electric Industrial Co., Ltd. | Moving picture encoding decoding processing apparatus |
| US5946043A (en) | 1997-12-31 | 1999-08-31 | Microsoft Corporation | Video coding using adaptive coding of block parameters for coded/uncoded blocks |
| US6122017A (en) | 1998-01-22 | 2000-09-19 | Hewlett-Packard Company | Method for providing motion-compensated multi-field enhancement of still images from video |
| JPH11275592A (ja) * | 1998-01-22 | 1999-10-08 | Victor Co Of Japan Ltd | 動画像符号列変換装置及びその方法 |
| KR100281329B1 (ko) * | 1998-01-31 | 2001-02-01 | 전주범 | 이진 형상 신호의 모드 신호 부호화 방법 및 그 복원 방법 |
| CA2320177A1 (en) | 1998-02-13 | 1999-08-19 | Quvis, Inc. | Apparatus and method for optimized compression of interlaced motion images |
| KR100328417B1 (ko) * | 1998-03-05 | 2002-03-16 | 마츠시타 덴끼 산교 가부시키가이샤 | 화상부호화장치및화상복호화장치, 화상부보화방법 및 화상복호화방법, 및 데이터기억매체 |
| US6226407B1 (en) | 1998-03-18 | 2001-05-01 | Microsoft Corporation | Method and apparatus for analyzing computer screens |
| EP0944245B1 (en) | 1998-03-20 | 2001-07-25 | SGS-THOMSON MICROELECTRONICS S.r.l. | Hierarchical recursive motion estimator for video images encoder |
| KR100281462B1 (ko) * | 1998-03-30 | 2001-02-01 | 전주범 | 격행 부호화에서 이진 형상 신호의 움직임 벡터 부호화 방법 |
| US6396956B1 (en) | 1998-03-31 | 2002-05-28 | Sharp Laboratories Of America, Inc. | Method and apparatus for selecting image data to skip when encoding digital video |
| US7263127B1 (en) * | 1998-04-02 | 2007-08-28 | Intel Corporation | Method and apparatus for simplifying frame-based motion estimation |
| US6115689A (en) | 1998-05-27 | 2000-09-05 | Microsoft Corporation | Scalable audio coder and decoder |
| JP3888597B2 (ja) * | 1998-06-24 | 2007-03-07 | 日本ビクター株式会社 | 動き補償符号化装置、及び動き補償符号化復号化方法 |
| US6519287B1 (en) * | 1998-07-13 | 2003-02-11 | Motorola, Inc. | Method and apparatus for encoding and decoding video signals by using storage and retrieval of motion vectors |
| US6275531B1 (en) * | 1998-07-23 | 2001-08-14 | Optivision, Inc. | Scalable video coding method and apparatus |
| JP4026238B2 (ja) | 1998-07-23 | 2007-12-26 | ソニー株式会社 | 画像復号装置及び画像復号方法 |
| US6219070B1 (en) | 1998-09-30 | 2001-04-17 | Webtv Networks, Inc. | System and method for adjusting pixel parameters by subpixel positioning |
| GB2343579A (en) | 1998-11-07 | 2000-05-10 | Ibm | Hybrid-linear-bicubic interpolation method and apparatus |
| US6573905B1 (en) | 1999-11-09 | 2003-06-03 | Broadcom Corporation | Video and graphics system with parallel processing of graphics windows |
| US6081209A (en) * | 1998-11-12 | 2000-06-27 | Hewlett-Packard Company | Search system for use in compression |
| US6563953B2 (en) | 1998-11-30 | 2003-05-13 | Microsoft Corporation | Predictive image compression using a single variable length code for both the luminance and chrominance blocks for each macroblock |
| US6418166B1 (en) | 1998-11-30 | 2002-07-09 | Microsoft Corporation | Motion estimation and block matching pattern |
| US6983018B1 (en) | 1998-11-30 | 2006-01-03 | Microsoft Corporation | Efficient motion vector coding for video compression |
| US6192080B1 (en) | 1998-12-04 | 2001-02-20 | Mitsubishi Electric Research Laboratories, Inc. | Motion compensated digital video signal processing |
| KR100587280B1 (ko) | 1999-01-12 | 2006-06-08 | 엘지전자 주식회사 | 오류 은폐방법 |
| US6496608B1 (en) | 1999-01-15 | 2002-12-17 | Picsurf, Inc. | Image data interpolation system and method |
| US6483874B1 (en) | 1999-01-27 | 2002-11-19 | General Instrument Corporation | Efficient motion estimation for an arbitrarily-shaped object |
| US6671323B1 (en) | 1999-02-05 | 2003-12-30 | Sony Corporation | Encoding device, encoding method, decoding device, decoding method, coding system and coding method |
| AU3357800A (en) * | 1999-02-05 | 2000-08-25 | Emisphere Technologies, Inc. | Method of preparing alkylated salicylamides |
| US6259741B1 (en) * | 1999-02-18 | 2001-07-10 | General Instrument Corporation | Method of architecture for converting MPEG-2 4:2:2-profile bitstreams into main-profile bitstreams |
| US6473409B1 (en) | 1999-02-26 | 2002-10-29 | Microsoft Corp. | Adaptive filtering system and method for adaptively canceling echoes and reducing noise in digital signals |
| US6499060B1 (en) | 1999-03-12 | 2002-12-24 | Microsoft Corporation | Media coding for loss recovery with remotely predicted data units |
| JP3778721B2 (ja) | 1999-03-18 | 2006-05-24 | 富士通株式会社 | 動画像符号化方法および装置 |
| JP2000278692A (ja) | 1999-03-25 | 2000-10-06 | Victor Co Of Japan Ltd | 圧縮データ処理方法及び処理装置並びに記録再生システム |
| JP3899727B2 (ja) | 1999-03-31 | 2007-03-28 | ソニー株式会社 | 画像再生装置 |
| US6320593B1 (en) | 1999-04-20 | 2001-11-20 | Agilent Technologies, Inc. | Method of fast bi-cubic interpolation of image information |
| WO2000067486A1 (en) * | 1999-04-30 | 2000-11-09 | Koninklijke Philips Electronics N.V. | Video encoding method with selection of b-frame encoding mode |
| US6519005B2 (en) * | 1999-04-30 | 2003-02-11 | Koninklijke Philips Electronics N.V. | Method of concurrent multiple-mode motion estimation for digital video |
| US6968008B1 (en) | 1999-07-27 | 2005-11-22 | Sharp Laboratories Of America, Inc. | Methods for motion estimation with adaptive motion accuracy |
| US6735249B1 (en) * | 1999-08-11 | 2004-05-11 | Nokia Corporation | Apparatus, and associated method, for forming a compressed motion vector field utilizing predictive motion coding |
| JP2003513565A (ja) | 1999-10-29 | 2003-04-08 | コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ | ビデオ符号化方法 |
| GB9928022D0 (en) * | 1999-11-26 | 2000-01-26 | British Telecomm | Video coding and decording |
| JP3694888B2 (ja) | 1999-12-03 | 2005-09-14 | ソニー株式会社 | 復号装置および方法、符号化装置および方法、情報処理装置および方法、並びに記録媒体 |
| US6493392B1 (en) * | 1999-12-27 | 2002-12-10 | Hyundai Electronics Industries Co., Ltd. | Method for coding digital interlaced moving video |
| JP2001218172A (ja) | 2000-01-31 | 2001-08-10 | Nec Corp | 動画像復号器におけるフレームレート変換装置、フレームレート変換方法、およびその記録媒体、集積回路装置 |
| KR100739281B1 (ko) | 2000-02-21 | 2007-07-12 | 주식회사 팬택앤큐리텔 | 움직임 추정 방법 및 장치 |
| JP4378824B2 (ja) | 2000-02-22 | 2009-12-09 | ソニー株式会社 | 画像処理装置及び方法 |
| KR100619377B1 (ko) * | 2000-02-22 | 2006-09-08 | 주식회사 팬택앤큐리텔 | 움직임 추정 방법 및 장치 |
| US6522693B1 (en) | 2000-02-23 | 2003-02-18 | International Business Machines Corporation | System and method for reencoding segments of buffer constrained video streams |
| US20020114388A1 (en) | 2000-04-14 | 2002-08-22 | Mamoru Ueda | Decoder and decoding method, recorded medium, and program |
| TW527832B (en) | 2000-04-20 | 2003-04-11 | Matsushita Electric Industrial Co Ltd | Video encoding apparatus that adjusts code amount by skipping encoding of image data |
| CN1322759C (zh) | 2000-04-27 | 2007-06-20 | 三菱电机株式会社 | 编码装置和编码方法 |
| US6654419B1 (en) | 2000-04-28 | 2003-11-25 | Sun Microsystems, Inc. | Block-based, adaptive, lossless video coder |
| US6876703B2 (en) | 2000-05-11 | 2005-04-05 | Ub Video Inc. | Method and apparatus for video coding |
| GB2362533A (en) | 2000-05-15 | 2001-11-21 | Nokia Mobile Phones Ltd | Encoding a video signal with an indicator of the type of error concealment used |
| US6501397B1 (en) * | 2000-05-25 | 2002-12-31 | Koninklijke Philips Electronics N.V. | Bit-plane dependent signal compression |
| JP3662171B2 (ja) | 2000-06-05 | 2005-06-22 | 三菱電機株式会社 | 符号化装置及び符号化方法 |
| US6449312B1 (en) | 2000-06-08 | 2002-09-10 | Motorola, Inc. | Method of estimating motion in interlaced video |
| US6647061B1 (en) | 2000-06-09 | 2003-11-11 | General Instrument Corporation | Video size conversion and transcoding from MPEG-2 to MPEG-4 |
| KR100708091B1 (ko) | 2000-06-13 | 2007-04-16 | 삼성전자주식회사 | 양방향 움직임 벡터를 이용한 프레임 레이트 변환 장치 및그 방법 |
| US6614442B1 (en) | 2000-06-26 | 2003-09-02 | S3 Graphics Co., Ltd. | Macroblock tiling format for motion compensation |
| RU2182727C2 (ru) | 2000-07-20 | 2002-05-20 | Дворкович Александр Викторович | Способ поиска векторов движения деталей в динамических изображениях |
| JP4682410B2 (ja) * | 2000-10-12 | 2011-05-11 | ソニー株式会社 | 画像処理装置及び画像処理方法 |
| WO2002037859A2 (en) | 2000-11-03 | 2002-05-10 | Compression Science | Video data compression system |
| JP2002152752A (ja) | 2000-11-13 | 2002-05-24 | Sony Corp | 画像情報変換装置及び方法 |
| CN1401189A (zh) | 2000-11-23 | 2003-03-05 | 皇家菲利浦电子有限公司 | 视频编码方法和相应的编码器 |
| KR100355831B1 (ko) | 2000-12-06 | 2002-10-19 | 엘지전자 주식회사 | 2차원 최소 비트 예측 기반의 움직임 벡터 부호화 방법 |
| US6633612B2 (en) | 2000-12-13 | 2003-10-14 | Genesis Microchip Inc. | Method and apparatus for detecting motion between odd and even video fields |
| US6765963B2 (en) | 2001-01-03 | 2004-07-20 | Nokia Corporation | Video decoder architecture and method for using same |
| US6920175B2 (en) | 2001-01-03 | 2005-07-19 | Nokia Corporation | Video coding architecture and methods for using same |
| US20020168066A1 (en) | 2001-01-22 | 2002-11-14 | Weiping Li | Video encoding and decoding techniques and apparatus |
| EP1378124B1 (en) * | 2001-02-13 | 2005-06-01 | Koninklijke Philips Electronics N.V. | Motion information coding and decoding method |
| US8374237B2 (en) | 2001-03-02 | 2013-02-12 | Dolby Laboratories Licensing Corporation | High precision encoding and decoding of video images |
| US6778610B2 (en) * | 2001-03-02 | 2004-08-17 | Redrock Semiconductor, Ltd. | Simultaneous search for different resync-marker patterns to recover from corrupted MPEG-4 bitstreams |
| EP1374430A4 (en) | 2001-03-05 | 2005-08-17 | Intervideo Inc | SYSTEMS AND METHODS FOR ROBUST ERROR CODING |
| US7206453B2 (en) | 2001-05-03 | 2007-04-17 | Microsoft Corporation | Dynamic filtering for lossy compression |
| US6859235B2 (en) | 2001-05-14 | 2005-02-22 | Webtv Networks Inc. | Adaptively deinterlacing video on a per pixel basis |
| JP4458714B2 (ja) | 2001-06-20 | 2010-04-28 | 富士通マイクロエレクトロニクス株式会社 | 画像復号装置、画像復号方法、および、プログラム |
| US6593392B2 (en) * | 2001-06-22 | 2003-07-15 | Corning Incorporated | Curable halogenated compositions |
| US6816552B2 (en) | 2001-07-11 | 2004-11-09 | Dolby Laboratories Licensing Corporation | Interpolation of video compression frames |
| US6975680B2 (en) | 2001-07-12 | 2005-12-13 | Dolby Laboratories, Inc. | Macroblock mode decision biasing for video compression systems |
| DE60141961D1 (de) * | 2001-09-10 | 2010-06-10 | Texas Instruments Inc | Verfahren und Vorrichtung zur Bewegungsvektorenabschätzung |
| US6950469B2 (en) | 2001-09-17 | 2005-09-27 | Nokia Corporation | Method for sub-pixel value interpolation |
| US6810083B2 (en) | 2001-11-16 | 2004-10-26 | Koninklijke Philips Electronics N.V. | Method and system for estimating objective quality of compressed video data |
| US20030095603A1 (en) | 2001-11-16 | 2003-05-22 | Koninklijke Philips Electronics N.V. | Reduced-complexity video decoding using larger pixel-grid motion compensation |
| US20030099294A1 (en) | 2001-11-27 | 2003-05-29 | Limin Wang | Picture level adaptive frame/field coding for digital video content |
| US6980596B2 (en) | 2001-11-27 | 2005-12-27 | General Instrument Corporation | Macroblock level adaptive frame/field coding for digital video content |
| ES2545394T3 (es) * | 2001-11-21 | 2015-09-10 | Google Technology Holdings LLC | Codificación de cuadro/campo adaptativa de nivel de macrobloques para contenido de vídeo digital |
| US7093001B2 (en) | 2001-11-26 | 2006-08-15 | Microsoft Corporation | Methods and systems for adaptive delivery of multimedia contents |
| EP2262269B1 (en) * | 2001-12-17 | 2018-01-24 | Microsoft Technology Licensing, LLC | Skip macroblock coding |
| CN101448162B (zh) | 2001-12-17 | 2013-01-02 | 微软公司 | 处理视频图像的方法 |
| US8780970B2 (en) * | 2001-12-21 | 2014-07-15 | Polycom, Inc. | Motion wake identification and control mechanism |
| US6873657B2 (en) | 2001-12-27 | 2005-03-29 | Koninklijke Philips Electronics, N.V. | Method of and system for improving temporal consistency in sharpness enhancement for a video signal |
| JP4114859B2 (ja) * | 2002-01-09 | 2008-07-09 | 松下電器産業株式会社 | 動きベクトル符号化方法および動きベクトル復号化方法 |
| CA2574110A1 (en) * | 2002-01-18 | 2003-07-31 | Kabushiki Kaisha Toshiba | Video encoding method and apparatus and video decoding method and apparatus |
| US7236207B2 (en) | 2002-01-22 | 2007-06-26 | Broadcom Corporation | System and method of transmission and reception of progressive content with isolated fields for conversion to interlaced display |
| FI114433B (fi) * | 2002-01-23 | 2004-10-15 | Nokia Corp | Otossiirtymän koodaaminen videokoodauksessa |
| EP1469682A4 (en) * | 2002-01-24 | 2010-01-27 | Hitachi Ltd | SIGNAL CODING METHOD FOR MOVABLE IMAGES, DECODING METHOD, CODING DEVICE AND DECODING DEVICE |
| US7003035B2 (en) | 2002-01-25 | 2006-02-21 | Microsoft Corporation | Video coding methods and apparatuses |
| US6798364B2 (en) | 2002-02-05 | 2004-09-28 | Intel Corporation | Method and apparatus for variable length coding |
| EP1347649A1 (en) | 2002-03-18 | 2003-09-24 | Lg Electronics Inc. | B picture mode determining method and apparatus in video coding system |
| US7034897B2 (en) | 2002-04-01 | 2006-04-25 | Broadcom Corporation | Method of operating a video decoding system |
| ES2745059T3 (es) * | 2002-04-19 | 2020-02-27 | Panasonic Ip Corp America | Método de cálculo de vectores de movimiento |
| CN1976454B (zh) | 2002-04-19 | 2011-05-11 | 松下电器产业株式会社 | 运动矢量的确定方法 |
| KR100481732B1 (ko) | 2002-04-20 | 2005-04-11 | 전자부품연구원 | 다 시점 동영상 부호화 장치 |
| EP2894855B1 (en) | 2002-04-26 | 2019-05-22 | NTT DoCoMo, Inc. | Signal decoding method, signal decoding device and signal decoding program |
| US7277587B2 (en) | 2002-04-26 | 2007-10-02 | Sharp Laboratories Of America, Inc. | System and method for lossless video coding |
| US20030202590A1 (en) | 2002-04-30 | 2003-10-30 | Qunshan Gu | Video encoding using direct mode predicted frames |
| KR100491530B1 (ko) | 2002-05-03 | 2005-05-27 | 엘지전자 주식회사 | 모션 벡터 결정 방법 |
| JP2004048711A (ja) | 2002-05-22 | 2004-02-12 | Matsushita Electric Ind Co Ltd | 動画像の符号化方法および復号化方法およびデータ記録媒体 |
| ATE421564T1 (de) * | 2002-05-24 | 2009-02-15 | 3M Innovative Properties Co | Verwendung von oberflächenmodifizierten nanopartikeln zur ölgewinnung |
| US20040001546A1 (en) | 2002-06-03 | 2004-01-01 | Alexandros Tourapis | Spatiotemporal prediction for bidirectionally predictive (B) pictures and motion vector prediction for multi-picture reference motion compensation |
| AU2003241143A1 (en) | 2002-06-25 | 2004-01-06 | Quix Technologies Ltd. | Image processing using probabilistic local behavior assumptions |
| AU2003241877A1 (en) | 2002-06-28 | 2004-01-19 | Matsushita Electric Industrial Co., Ltd. | Moving picture encoding method, decoding method, data stream, data recording medium, and program |
| US7280700B2 (en) | 2002-07-05 | 2007-10-09 | Microsoft Corporation | Optimization techniques for data compression |
| US7136417B2 (en) | 2002-07-15 | 2006-11-14 | Scientific-Atlanta, Inc. | Chroma conversion optimization |
| EP1535467B1 (en) * | 2002-07-15 | 2017-03-15 | Nokia Technologies Oy | Method for error concealment in video sequences |
| CN1312927C (zh) | 2002-07-15 | 2007-04-25 | 株式会社日立制作所 | 动态图像编码方法及解码方法 |
| US7154952B2 (en) | 2002-07-19 | 2006-12-26 | Microsoft Corporation | Timestamp-independent motion vector prediction for predictive (P) and bidirectionally predictive (B) pictures |
| US7020200B2 (en) | 2002-08-13 | 2006-03-28 | Lsi Logic Corporation | System and method for direct motion vector prediction in bi-predictive video frames and fields |
| US7072394B2 (en) | 2002-08-27 | 2006-07-04 | National Chiao Tung University | Architecture and method for fine granularity scalable video coding |
| KR100506864B1 (ko) * | 2002-10-04 | 2005-08-05 | 엘지전자 주식회사 | 모션벡터 결정방법 |
| US20040136457A1 (en) | 2002-10-23 | 2004-07-15 | John Funnell | Method and system for supercompression of compressed digital video |
| JP4093405B2 (ja) | 2002-10-25 | 2008-06-04 | 株式会社リコー | 画像処理装置、プログラム及び記憶媒体 |
| JP3878591B2 (ja) | 2002-11-01 | 2007-02-07 | 松下電器産業株式会社 | 動画像符号化方法および動画像復号化方法 |
| US7050088B2 (en) | 2003-01-06 | 2006-05-23 | Silicon Integrated Systems Corp. | Method for 3:2 pull-down film source detection |
| BRPI0411765A (pt) | 2003-06-25 | 2006-08-08 | Thomson Licensing | codificação de decisão modal rápida para inter-quadros |
| JP4207684B2 (ja) | 2003-06-27 | 2009-01-14 | 富士電機デバイステクノロジー株式会社 | 磁気記録媒体の製造方法、および、製造装置 |
| US20050013498A1 (en) * | 2003-07-18 | 2005-01-20 | Microsoft Corporation | Coding of motion vector information |
| US7426308B2 (en) * | 2003-07-18 | 2008-09-16 | Microsoft Corporation | Intraframe and interframe interlace coding and decoding |
| US7092576B2 (en) * | 2003-09-07 | 2006-08-15 | Microsoft Corporation | Bitplane coding for macroblock field/frame coding type information |
| US8064520B2 (en) * | 2003-09-07 | 2011-11-22 | Microsoft Corporation | Advanced bi-directional predictive coding of interlaced video |
| US7724827B2 (en) * | 2003-09-07 | 2010-05-25 | Microsoft Corporation | Multi-layer run level encoding and decoding |
| US7620106B2 (en) * | 2003-09-07 | 2009-11-17 | Microsoft Corporation | Joint coding and decoding of a reference field selection and differential motion vector information |
| US7599438B2 (en) * | 2003-09-07 | 2009-10-06 | Microsoft Corporation | Motion vector block pattern coding and decoding |
| US8107531B2 (en) | 2003-09-07 | 2012-01-31 | Microsoft Corporation | Signaling and repeat padding for skip frames |
| US7623574B2 (en) | 2003-09-07 | 2009-11-24 | Microsoft Corporation | Selecting between dominant and non-dominant motion vector predictor polarities |
| US7961786B2 (en) | 2003-09-07 | 2011-06-14 | Microsoft Corporation | Signaling field type information |
| US7317839B2 (en) * | 2003-09-07 | 2008-01-08 | Microsoft Corporation | Chroma motion vector derivation for interlaced forward-predicted fields |
| US7609762B2 (en) | 2003-09-07 | 2009-10-27 | Microsoft Corporation | Signaling for entry point frames with predicted first field |
| US7616692B2 (en) | 2003-09-07 | 2009-11-10 | Microsoft Corporation | Hybrid motion vector prediction for interlaced forward-predicted fields |
| US7567617B2 (en) * | 2003-09-07 | 2009-07-28 | Microsoft Corporation | Predicting motion vectors for fields of forward-predicted interlaced video frames |
| US7577200B2 (en) * | 2003-09-07 | 2009-08-18 | Microsoft Corporation | Extended range variable length coding/decoding of differential motion vector information |
| US7324595B2 (en) * | 2003-09-22 | 2008-01-29 | Lsi Logic Corporation | Method and/or apparatus for reducing the complexity of non-reference frame encoding using selective reconstruction |
| US7853980B2 (en) | 2003-10-31 | 2010-12-14 | Sony Corporation | Bi-directional indices for trick mode video-on-demand |
| US7295616B2 (en) | 2003-11-17 | 2007-11-13 | Eastman Kodak Company | Method and system for video filtering with joint motion and noise estimation |
| KR20050061762A (ko) | 2003-12-18 | 2005-06-23 | 학교법인 대양학원 | 부호화 모드 결정방법, 움직임 추정방법 및 부호화 장치 |
| US7889792B2 (en) | 2003-12-24 | 2011-02-15 | Apple Inc. | Method and system for video encoding using a variable number of B frames |
| EP1558039A1 (en) | 2004-01-21 | 2005-07-27 | Deutsche Thomson-Brandt Gmbh | Method and apparatus for generating/evaluating prediction information in picture signal encoding/decoding |
| US7283176B2 (en) | 2004-03-12 | 2007-10-16 | Broadcom Corporation | Method and system for detecting field ID |
| KR100586882B1 (ko) | 2004-04-13 | 2006-06-08 | 삼성전자주식회사 | 모션 스케일러빌리티를 지원하는 코딩 방법 및 장치 |
| FR2872973A1 (fr) | 2004-07-06 | 2006-01-13 | Thomson Licensing Sa | Procede ou dispositif de codage d'une sequence d'images sources |
| JP3129986U (ja) | 2006-12-26 | 2007-03-08 | ライオン株式会社 | 板状緩衝材 |
-
2004
- 2004-06-29 US US10/882,135 patent/US8064520B2/en active Active
- 2004-09-03 KR KR1020097017978A patent/KR101083870B1/ko not_active Expired - Lifetime
- 2004-09-03 CN CN2004800246218A patent/CN101416525B/zh not_active Expired - Lifetime
- 2004-09-03 WO PCT/US2004/029000 patent/WO2005027493A2/en not_active Ceased
- 2004-09-03 KR KR1020067002491A patent/KR101075377B1/ko not_active Expired - Lifetime
- 2004-09-03 EP EP10014885.7A patent/EP2285115B1/en not_active Expired - Lifetime
- 2004-09-03 MX MXPA06002079A patent/MXPA06002079A/es active IP Right Grant
- 2004-09-03 CN CN2010101699829A patent/CN101924934B/zh not_active Expired - Lifetime
- 2004-09-03 CN CN201010169821XA patent/CN101841718B/zh not_active Expired - Lifetime
- 2004-09-03 KR KR1020097017979A patent/KR101365908B1/ko not_active Expired - Lifetime
- 2004-09-03 JP JP2006526220A patent/JP4763607B2/ja not_active Expired - Lifetime
- 2004-09-03 EP EP10014884.0A patent/EP2285114B1/en not_active Expired - Lifetime
- 2004-09-03 EP EP12158084.9A patent/EP2466894B1/en not_active Expired - Lifetime
- 2004-09-03 EP EP04783296.9A patent/EP1665766B1/en not_active Expired - Lifetime
- 2004-09-03 CN CN2010101701602A patent/CN101841719B/zh not_active Expired - Lifetime
- 2004-09-03 CN CN2010101699886A patent/CN101924935B/zh not_active Expired - Lifetime
- 2004-09-03 CN CN2010101701585A patent/CN101867817B/zh not_active Expired - Lifetime
- 2004-09-03 EP EP12158085.6A patent/EP2466895B1/en not_active Expired - Lifetime
- 2004-09-03 ES ES12158084.9T patent/ES2638327T3/es not_active Expired - Lifetime
- 2004-09-03 ES ES12158085.6T patent/ES2634493T3/es not_active Expired - Lifetime
- 2004-09-15 US US10/942,233 patent/US20050053146A1/en not_active Abandoned
- 2004-09-15 US US10/942,458 patent/US7590179B2/en active Active
- 2004-09-15 US US10/942,459 patent/US7852936B2/en active Active
- 2004-09-15 US US10/942,502 patent/US7664177B2/en active Active
- 2004-09-15 US US10/942,524 patent/US7630438B2/en active Active
- 2004-09-15 US US10/942,254 patent/US7680185B2/en active Active
- 2004-09-15 US US10/943,040 patent/US7529302B2/en active Active
-
2011
- 2011-03-10 JP JP2011053024A patent/JP4928001B2/ja not_active Expired - Lifetime
- 2011-03-10 JP JP2011053027A patent/JP5036886B2/ja not_active Expired - Lifetime
- 2011-03-10 JP JP2011053026A patent/JP4928002B2/ja not_active Expired - Lifetime
- 2011-03-10 JP JP2011053025A patent/JP5006457B2/ja not_active Expired - Lifetime
- 2011-03-10 JP JP2011053023A patent/JP4916581B2/ja not_active Expired - Lifetime
Also Published As
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| ES2634493T3 (es) | Codificación predictiva bidireccional avanzada de vídeo entrelazado | |
| HK1152178B (en) | Video encoding and decoding method | |
| HK1152431B (en) | Advanced bi-directional predictive coding of interlaced video |