JP2005102170A - ビデオエンコーダにおける離散的余弦変換係数に適応したフィルタリングの方法およびシステム - Google Patents

ビデオエンコーダにおける離散的余弦変換係数に適応したフィルタリングの方法およびシステム Download PDF

Info

Publication number
JP2005102170A
JP2005102170A JP2004235008A JP2004235008A JP2005102170A JP 2005102170 A JP2005102170 A JP 2005102170A JP 2004235008 A JP2004235008 A JP 2004235008A JP 2004235008 A JP2004235008 A JP 2004235008A JP 2005102170 A JP2005102170 A JP 2005102170A
Authority
JP
Japan
Prior art keywords
image
value
video
buffer
state
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.)
Pending
Application number
JP2004235008A
Other languages
English (en)
Inventor
Ioannis Katsavounidis
カタボウニディス イオアニス
Lifeng Zhao
ザオ リフェング
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
INTERVIDEO Inc
Original Assignee
INTERVIDEO Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by INTERVIDEO Inc filed Critical INTERVIDEO Inc
Publication of JP2005102170A publication Critical patent/JP2005102170A/ja
Pending legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/189Methods 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/196Methods 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
    • H04N19/198Methods 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 including smoothing of a sequence of encoding parameters, e.g. by averaging, by choice of the maximum, minimum or median value
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/115Selection of the code volume for a coding unit prior to coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/117Filters, e.g. for pre-processing or post-processing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/124Quantisation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/124Quantisation
    • H04N19/126Details of normalisation or weighting functions, e.g. normalisation matrices or variable uniform quantisers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/132Sampling, masking or truncation of coding units, e.g. adaptive resampling, frame skipping, frame interpolation or high-frequency transform coefficient masking
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • H04N19/137Motion inside a coding unit, e.g. average field, frame or block difference
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • H04N19/137Motion inside a coding unit, e.g. average field, frame or block difference
    • H04N19/139Analysis of motion vectors, e.g. their magnitude, direction, variance or reliability
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • H04N19/14Coding unit complexity, e.g. amount of activity or edge presence estimation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/142Detection of scene cut or scene change
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/146Data rate or code amount at the encoder output
    • H04N19/149Data rate or code amount at the encoder output by estimating the code amount by means of a model, e.g. mathematical model or statistical model
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/146Data rate or code amount at the encoder output
    • H04N19/152Data rate or code amount at the encoder output by measuring the fullness of the transmission buffer
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/154Measured or subjectively estimated visual quality after decoding, e.g. measurement of distortion
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/156Availability of hardware or computational resources, e.g. encoding based on power-saving criteria
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/157Assigned coding mode, i.e. the coding mode being predefined or preselected to be further used for selection of another element or parameter
    • H04N19/159Prediction type, e.g. intra-frame, inter-frame or bidirectional frame prediction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods 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/172Methods 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods 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/176Methods 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/189Methods 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/196Methods 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/48Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using compressed domain processing techniques other than decoding, e.g. modification of transform coefficients, variable length coding [VLC] data or run-length data
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • H04N19/517Processing of motion vectors by encoding
    • H04N19/52Processing of motion vectors by encoding by predictive encoding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/577Motion compensation with bidirectional frame interpolation, i.e. using B-pictures
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/80Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation
    • H04N19/82Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation involving filtering within a prediction loop
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/85Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression
    • H04N19/87Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression involving scene cut or scene change detection in combination with video compression

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Algebra (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

【課題】デコーダのバッファーオーバーランニングやバッファーアンダーランニングを無くすかまたは低減して、しかも低コストで高速にリアルタイムで、データ圧縮が可能なエンコーダにおけるデータ処理方法とエンコーダの提供である。
【解決手段】周波数ドメインにおけるマクロブロックのDCT係数を選択的にローパスフィルタリングすることと、ローパスフィルタリングされたDCT係数を量子化することとを含む。DCTフィルタリングは、画像再生に使用されるビット数を、優れて減少させることができ、しかも、通常の技術が画質を改善するために、量子化パラメータQPの値を増加させるのに対して、DCTフィルタリングは、バッファーの占有レベルとの適合性を保持できる。
【選択図】図6A

Description

この発明は、ビデオエンコーディング技術に関する。特に、離散的余弦変換(DCT)係数に適応したフィルタリングに関する。
ビデオ信号の伝送や格納について、低いデータレートあるいはより少ない格納領域とするために、様々なデジタルビデオ圧縮技術が起こってきた。そのようなビデオ圧縮技術は、H.261, H.263, H.263+, H.263++, H.264, MPEG-1, MPEG-2, MPEG-4, MPEG-7
などの国際標準規格を含む。これらの圧縮技術は、離散的余弦変換(DCT)技術や動作補償(MC)技術などにより、比較的高い圧縮率を達成している。そのようなビデオ圧縮技術により、ビデオデータの流れが様々なデジタルネットワーク、例えば、携帯電話のネットワーク、コンピュータネットワーク、ケーブルネットワーク、サテライト経由のネットワークなどに効果的に適用されている。また、ハードディスク、光ディスク、ビデオコンパクトディスク(VCDs)、デジタルビデオディスク(CVDs)などの記憶メディアにも効果的に適用されている。エンコードされたデータの流れは、そのエンコードされたデータの流れのシンタックスと合致するビデオ再生装置によって再生される。
他と比較して高画質にするには、ビデオ再生装置は、他と比較して多くのデータを必要とする。しかし、ビデオデータを伝送するネットワークによって再生可能なデータレートが制限される。例えば、直接サテライト放送(DBS)システムでのデータチャンネルあるいはデジタルケーブルテレビネットワークでのデータチャンネルは、一般的には、一定のビットレート(CBR)でデータを送っている。さらに、ディスクの格納容量も、画像を再生可能なビット容量にするように強いられる。
その結果、ビデオの再生プロセスは、しばしば、画質と画像圧縮に必要なビット数とのトレードオフとなる。さらに、ビデオ再生は複雑である。例えば、ソフトウエアで実行しようとすると、ビデオ再生プロセスは、他と比較して多くのCPUサイクルを必要とする。その上に、リアルタイムで再生しようとすると、時間的な制約が再生実行時の複雑さを制限し、達成できる画質が制限される。
レートコントロールでの通常の方法と再生プロセスでの量子化コントロールとがMPEGソフトウエアシミュレーショングループ(MSSG)のテストモデル5(TM5)の第10章に記載されている。TM5には幾つかの欠点がある。その欠点の例としては、TM5は、ビデオバッファーベリファイヤ(VBV)との適合性が保証されていない。そのために、デコーダバッファーのオーバーランニングやアンダーランニングが生じて、予期しない画像のフリーズやデータの毀損が発生する。
本発明の目的は、デコーダのバッファーオーバーランニングやバッファーアンダーランニングを無くすかまたは低減して、しかも低コストで高速にリアルタイムで、データ圧縮が可能なエンコーダにおけるデータ処理方法とエンコーダの提供である。
本発明は、離散的余弦変換(DCT)係数の選択的フィルタリングを提供する方法と装置に関する。徹底的なピクセルドメイン(タイムドメイン)の操作よりも、DCT係数のフィルタリングが、周波数ドメインで効果的に働くことが優れている点である。DCTフィルタリングは、DCTエンコーディングにおいて、インループで動作するものであり、エンコーディングループと独立した前段工程でのアプローチではない。DCTフィルタリングは、画像再生に使用されるビット数を、優れて減少させることができ、しかも、通常の技術が画質を改善するために、量子化パラメータQPの値を増加させるのに対して、DCTフィルタリングは、バッッファーの占有レベルとの適合性を保持できる。
本発明は、ビデオ信号を効果的に圧縮する方法であり、周波数ドメインにおけるマクロブロックのDCT係数を選択的にローパスフィルタリングすることと、ローパスフィルタリングされたDCT係数を量子化することとを含む。
本発明は、ビデオ信号を効果的に圧縮するビデオ再生装置であり、周波数ドメインにおけるマクロブロックのDCT係数を選択的にローパスフィルタリングする手段と、ローパスフィルタリングされたDCT係数を量子化する手段とを含む。
本発明は、実際のメディアで実行されるコンピュータプログラムであり、周波数ドメインにおけるマクロブロックのDCT係数を選択的にローパスフィルタリングするためのインストラクションからなるモジュールと、ローパスフィルタリングされたDCT係数を量子化するためのインストラクションからなるモジュールとを含む。
本発明は、ビデオ再生回路であり、周波数ドメインにおけるマクロブロックのDCT係数を選択的にローパスフィルタリングするための回路構成と、ローパスフィルタリングされたDCT係数を量子化するための回路構成とを含む。
本発明によれば、デコーダのバッファーオーバーランニングやバッファーアンダーランニングを無くすかまたは低減して、しかも低コストで高速にリアルタイムで、データ圧縮が可能となる。
図1に画像の列102を示す。この発明の実施例では、MPEG-2と画像の関係で記述しているが、その原理と利点は、H.261, H.263, H.264,
MPEG-1, MPEG-4,などを含む、既に開発されている他のビデオ標準規格にも適用できる。ここで使われる「画像」というのは、イメージ、フレーム、ビジュアルオブジェクトプレーン(VOPs)などを含む。ビデオの列は周期的に取得される複数のビデオイメージを含む。フレームが表示されるレートが、画像レートまたはフレームレートとして参照される。画像の列における画像は、インタレースまたはノンインタレース(すなわち連続したイメージ)に対応している。インタレースイメージでは、それぞれのイメージが2つの分離したフィールドを組み合わせて作られる。ノンインタレースあるいは連続したイメージでは、そのようなことは行わない。
画像の列102は動画または他の表現に対応している。画像の列102は、動画のような決まった間隔であったり、または、直接サテライト放送(DSB)システムのような間隔が決まっていないものもある。直接サテライト放送(DSB)システムの例は、DIRECTVとして知られている。図1に示すように、画像の列102の画像は、第1の画像グループ104に示すような画像グループのユニットにプループ化されている。第1の画像グループ104の最初の画像106は、I―画像に対応する。画像グループの他の画像はP−画像とかB−画像に対応する。
MPEG-2では、一つの画像は、さらにマクロブロックという小さなユニットに分割されている。MPEG-4のような他のビデオ標準では、ビジュアルオブジェクトプレーン(VOPs)のような他のユニットに分割されている。MPEG-2に話を戻すと、I―画像は、他の画像からのデータを使わないで、イメージが構成されるような内部でコード化されたマクロブロックのみからなる画像である。P−画像は、内部でコード化されたマクロブロックまたは先を予測してコード化されたマクロブロックからなる画像である。P−画像のためのマクロブロックは、画像自身のデータすなわち内部でコード化されたデータ、または画像の列における先のデータすなわち先を予測してコード化されたデータを基にエンコードとデコードが行われる。B−画像は、内部でコード化されたマクロブロック、先を予測してコード化されたマクロブロック、後を予測してコード化されたマクロブロック、または、先を予測してコード化されたマクロブロックと後を予測してコード化されたマクロブロックの組み合わせ(すなわち内挿したもの)からなる画像である。画像の列のエンコードとデコードが行われる間、B−画像がエンコードとデコードを行う裏で、I―画像とP−画像とのエンコードとデコードが行われる。内部でコード化されたマクロブロックに加えて先を予測してコード化されたマクロブロックを使う利点は、内部でコード化されたマクロブロックのみを使う場合に比較して、使われるビット数が劇的に減少することである。
マクロブロックには、輝度の要素と色の要素を格納するセクションが含まれている。通常、ビデオデータの流れには、エンコードとデコードが行われる音声データが含まれている。
図2に、この発明の実施例として使われるエンコーディング環境の例を示す。エンコードされていないビデオソース202がエンコーダ204に入力される。エンコードされていないビデオソース202には、以下に限定されるものではないが、ビデオカメラ、ビデオテープ、フィルム、コンピュータで作成されたソース、など多くのデバイスがある。エンコードされていないビデオソース202は、エンコードされたビデオデータをデコードするデコーダを含んでいる。エンコードされていないビデオソース202は、エンコーダ204に外部入力されるかエンコーダ204にハードウエアとして組み込まれている。他の例では、エンコードされていないビデオソース202には、TiVoとして知られているセットトップボックスのようなデジタルビデオレコーダからアナログイメージをサンプリングしてアナログ信号とするアナログ放送テレビ受像器がある。
エンコーダー204にも様々な形式がある。例えば、専用ソフトあるいは汎用コンピュータのソフトで動く専用集積回路(ASIC)のような専用のハードウエアがある。ソフトはハードディスクや光ディスクのような有形のメディアで実行されるインストラクションを含む。さらに、エンコーダー204には、直接サテライト放送(DBS)システムやデジタルケーブルネットワークで使用されるマルチエンコードチャンネルに提供されるエンコーダがある。例えば、エンコーダ204の出力は、図2に示すように、他のエンコーダの出力とともにサーバ206に入力される。サーバ206では、エンコードされたデータの列が、マス格納器208、DVD編集可能なDVD210やビデオCD(VCD)などの光ディスクに格納される。また、サーバ206は、データを、直接サテライト放送(DBS)システムのサテライト214へアップリンク212を経由して、またインターネット216のユーザへ提供する。エンコードされたデータ列は、ローカルネットワーク(LANs)、広域ネットワーク(WANs)無線ネットワーク、地上波テレビ放送、携帯電話網、ダイアルアップ網、ピアツーピアネットワークなど様々なメディアに配送される。一実施例では、エンコーダ204は画像の列をリアルタイムでエンコードする。もう一つの実施例では、エンコーダ204は画像の列を非同期でエンコードする。エンコーダ204の環境は、デジタルビデオレコーダ、デジタルビデオカメラ、ビデオエンコーダ専用ハードなどを含んで組み合わせられる。
図3に、デコーディング環境の例を示す。それらは、ビデオバッファーベリファイア(VBV)バッファーによるエンコーディングプロセスで形成されるデコーダバッファーを含む。エンコードされた画像の列は、広い環境でデコードされて見ることができる。それらの環境には、サテライトのアンテナ302とセットトップボックスとを経由した直接サテライト放送(DBS)の信号受信、デジタルビデオレコーダの再生、DVDプレーヤー304の再生、地上デジタル放送の受信などがある。例えばテレビ受像器306では、イメージを見ることが出来て、様々な表示装置が使用されている。
例えば、パソコン308、ラップトップパソコン310、携帯電話機312などでは、そのイメージを見ることができる。一実施例では、これらのデバイスは、インターネット216を経由して、ビデオイメージを受信できる構成になっている。インターネット216は、有線および無線のネットワークを経由してアクセスできる。
図4に、エンコーダ402、エンコーダバッファー404、デコーダ406、デコーダバッファー408、一定ビットレートデータチャンネル410の関係を示す。もう一つの実施例では、一定ビットレートデータチャンネルのビットレートは、多重データチャンネル間のダイナミックなデータレート割り当てに依存してチャンネル間で僅かに違ってくる。この応用では、多重データチャンネル間のダイナミックなデータレート割り当ておこるビットレートの僅かな違いは、一定ビットレートとみなされる。例えば、エンコーダ402は、直接サテライト放送(DBS)システムにおける計画されたチャンネルのためのエンコーダに対応し、デコーダ406は、直接サテライト放送(DBS)の信号受信用セットトップボックスのデコーダに対応する。熟練した実務者は、実際のビデオデータでの一定ビットレートデータチャンネル410のビットレートは、一定ビットレートデータチャンネル410自身のビットレートより小さいと評価している。なぜならば、実際の伝送データには、誤り訂正やデータパッケージングなどのオーバーヘッドが含まれているからである。熟練した実務者は、ここで記述されている方法は、MPEG標準文書に記載されている一定ビットレートエンコーディングだけでなく、可変ビットレートエンコーディングにも適用できると評価している。可変ビットレートの場合、伝送ビットレートは、デコーダバッファーのデータを配送する最大ビットレートとともに、数秒、数分、数時間、あるいは適当な時間間隔での平均的なビットレートとして記述される。データは、デコーダバッファーが満杯になるまでは、最大ビットレートでチャンネルからデコーダバッファーに送られる。その時点で、データチャンネルは、次の画像がデコードされてデコーダバッファーからデータが取り除かれるまで待って、デコーダバッファーへのデータ送信に戻る。「ビットレート」は、以後、一定ビットレートまたは、可変ビットレートの長時間平均とする。一定ビットレートエンコーダの一実施例では、エンコーダは、1画像グループでは比較的一定ビットレートのデータの流れを生成する。
直接サテライト放送(DBS)システムのようなデータが流れる用途、または、ホームデジタルビデオレコーダのようなライブ放送のレコーディングの用途では、エンコーダ402はリアルタイムでビデオイメージを受信してデコードする。エンコーダ402の出力は、可変ビットレート(VBR)出力412に対応する。エンコーダ402の可変ビットレート(VBR)出力412は、エンコーダバッファー404に一時的に格納される。エンコーダバッファー404とデコーダバッファー408の機能は、異なったデータレートで格納されたり、更新されたデータを一時的に保持することである。エンコーダバッファー404とデコーダバッファー408とはマッチする必要はなく、エンコーダバッファー404はビデオバッファーベリファイア(VBV)とは違うバッファーである。ビデオバッファーベリファイア(VBV)は、エンコディングプロセスで、デコーダバッファー408の占有率を形成するエンコーダ402によって使用される。
エンコーダバッファー404は、専用メモリまたはパソコンのシステムメモリのような共有システムメモリに設定される。エンコーダバッファー404に使うメモリが共有されるとき、エンコーダバッファー404は「仮想バッファー」と呼ばれる。マス格納器のような大きなメモリは、ビデオデータの流れやその部分に使われる。
エンコーダバッファー404は、エンコードされたデータが一定ビットレートデータチャンネル410を経由してデコーダ406に送られるとき、エンコーダ402の可変ビットレート(VBR)出力412の比較的短時間でのゆらぎを緩和する。同様に、デコーダバッファー408は、一定ビットレートデータチャンネル410の比較的一定ビットレートでのエンコードされたデータを受信し、必要なら可変ビットレートで使われるデコーダ406に送る。デコーダバッファー408もまた、専用メモリまたはパソコンのシステムメモリのような共有システムメモリに設定される。メモリが共有されるとき、デコーダバッファー408は仮想バッファーに対応する。
MPEG標準はデコーダバッファー408のサイズを規定している。デコーダバッファー408のサイズは、MPEGコンプライアントデータの流れが、標準デコーダでのデコードが信頼されるように規定されている。MPEG-2標準では、DVDのエンコーディングに使われる例だと、バッファーサイズは約224 kBである。MPEG-1標準では、ビデオコンパクトディスク(VCD)のエンコーディングに使われる例だと、バッファーサイズは約40 kBである。通常、エンコーダバッファー404やデコーダバッファー408の実際のサイズは、標準規格とは違って、ハードの設計者やソフトの開発者によって決められる。
デコーダバッファー408の実際のサイズが標準規格とは違っているといっても、デコーダバッファー408のサイズと占有率に影響する実際的な限界がある。デコーダバッファー408のサイズが増えると、それに応じて、データ列が選択され、再生が始まるときの遅れも増えることになる。例えば、ユーザが直接サテライト放送(DBS)のセットトップボックスでチャンネルを変えたり、DVDで前後にスキップしたりするときに、再生のためにデコーダ406により、以前に更新されたデータがデコーダバッファー408に格納されている。デコーダバッファー408が大きなサイズのとき、データ列の選択と再生に激怒するほど長い時間の遅れを生じる結果となる。さらに、後に図5と関連付けて述べるように、デコーダバッファー408がデータで満杯になる前に再生が始まるようにできる。
一実施例では、ダータ列の再生が2つの条件の早い方で始まる。第1の条件は、MPEGのデータ流れで規定された時間である。vbv-delayとして知られているMPEGのデータ流れを規定するパラメータは、デコーダ406により再生が開始される前のデコーダバッファー408に格納されるデータの時間長を提供する。vbv-delayパラメータは、0から65,535のレンジの16ビット数に対応する。vbv-delayパラメータの値は、90kHzクロック信号によるデコーダ406でカウントダウンされる。したがって、全体の時間遅れは、90,000に分割された値に対応するvbv-delayパラメータで規定される。例えば、最大値65,535のときは、約728msの時間遅れになる。デコーダバッファー408がデータで満杯になる以外の時間で、vbv-delayは再生を開始でき、デコーダバッファー408は低い占有率でもよい。
第2の条件は、デコーダバッファー408の充満度に対応する。デコーダバッファー408が満杯になった後、続いてデータが送られてきて、デコーダバッファー408が空にならないと、デコーダバッファー408に格納されたデータが失われるおそれがある。データのロスを防止するために、デコーダ406は、vbv-delayパラメータで規定された時間より早い時間で再生を開始できる。例えば、デコーダバッファー408のサイズが規定の224 kBで、ビットレートが2.54 Mbpsを越えるとき、デコーダバッファー408が満杯になる時間は、vbv-delayパラメータで規定された最大時間より短くなる。
MPEG仕様におけるVBVバッファーの概念は、データの流れが、デコーダバッファー408でのオバーランやアンダーランを生じさせないように、MPEGデータの流れを規制している。VBVバッファーは、実際のバッファーではなく、実際にデータを格納するわけでもない。しかし、VBVバッファーの概念の存在にもかかわらず、ビデオエンコーディング技術は、MPEGのテストモデル5(TM5)がVBVコンプライアンスを保証できないし、オバーランやアンダーランが生じる。
デコーダバッファー408のアンダーランは、デコーダバッファー408がデータの外を走るときに起こる。これは、一定ビットレートデータチャンネル410のビットレートが、比較的長時間で、デコーダ406によって費されるデータのビットレートより小さいときに起きる。これはまた、エンコーダ402が、規定されたビットレートに関連してデータ列をエンコードするのに、多すぎるビットを使ったときに発生する。デコーダバッファー408のバッファーアンダーランニングは、画像の列の一時的なフリーズとして見える。
デコーダバッファー408のオバーランは、デコーダバッファー408が格納できる以上のデータを受信したときに起きる。これは、一定ビットレートデータチャンネル410のビットレートが、比較的長時間で、デコーダ406によって費されるデータのビットレートを越えるときに起きる。これはまた、エンコーダ402が、規定されたビットレートに関連してデータ列をエンコードするのに、少なすぎるビットを使ったときに発生する。その結果、デコーダバッファー408は一定ビットレートデータチャンネル410からのデータを全て格納できなくなり、データのロスが生じる。このタイプのバッファーオバーランは、「ビットスタッフィング」によって防止できる。それは、デコーダ406で使われるビット数が、比較的長時間で、一定ビットレートデータチャンネル410により送られるビット数とマッチするように、デコーダ406で使われないデータを送ることである。しかし、ビットスタッフィングは、後に図9A、9Bと関連して述べるような他の問題を生じる。
VBVバッファーモデルの概念は、デコーダバッファー408におけるオバーランやアンダーランを生じないようなビデオデータの流れを作るようにエンコーダ402で使われる。一実施例では、VBVバッファーモデルの占有率が、デコーダバッファー408におけるオバーランやアンダーランを生じないようにビデオデータの流れをモニターされる。エンコーダバッファー404におけるオバーランやアンダーランとデコーダバッファー408におけるオバーランやアンダーランとは同じでないことを銘記するべきである。例えば、デコーダバッファー408におけるアンダーランを生じる条件、すなわち、持続した時間の間で、一定ビットレートデータチャンネル410のビットレートを越えるエンコードされたビットレートが、エンコーダバッファー404のバッファーオバーランになる。さらに、デコーダバッファー408におけるオーバーランを生じる条件、すなわち、持続した時間の間で、一定ビットレートデータチャンネル410のビットレートが上回るビットレートが、エンコーダバッファー404のバッファーアンダーランになる。
図5は、デコーダが可変ビットレートで費やされたときに、デコーダバッファーに一定ビットレートでデータが送られた場合のデコーダバッファー占有率を表すチャートである。MPEG TM5を基本とした一般的システムでは、デコーダバッファーがオバーランやアンダーランの条件を防ぐようになっていないので、デコーダに送られたデータの流れは保証されない欠点がある。図5に示されている例では、データが一定ビットレートでデコーダバッファーに送られ、ビデオをリアルタイムで表示するのに、デコーダがそのデータを使っている。
横軸は時間(t)502である。右方向に時間が経過する。縦軸はデコーダバッファー占有率である。最初、デコーダバッファーは空である。バッファーの最大レベルは、BMAX528で表される。エンコーダが、バッファーの中のデータの流れを最大レベルBMAX528と空のレベルの間に維持するように生成するのが望ましい。例えば、プログラム中でのスキップ、直接サテライト放送(DBS)システムやデジタルケーブルテレビネットワークでのチャンネル変更に反応して、デコーダバッファーがフラッシュされる。デコーダはSCR(0)506から始まるシステムクロック参照データ(SCR)をモニターしている。システムクロック参照データ(SCR)はエンコーダによるビットの流れにタイムスタンプとして埋め込まれる。また、ビデオ情報のタイムスタンプと同期させるために、デコーダによってビットの流れに埋め込まれる。タイムスタンプは、ビデオ情報がデコードされる時刻、表示される時刻などを指示し、画像と音声との同期をとるのに使われる。
一般に、リアルタイムビデオエンコーディングで使用される画像パターンの例には、IBBPBBPBBPBBPBBのような繰り返しパターンがある。I−画像が比較的多くのデータを費やすにもかかわらず、直接サテライト放送(DBS)システムのチャンネル変更後、比較的短時間で画像が表示されるのは、例示のようなI―画像の繰り返し使うのに負うことが大きい。
画像の提示あるいは表示の順は、エンコーディングとデコーディングの順から変えることができる。B―画像は、提示順においてB―画像の後に生じるI−とP−画像が、B―画像のエンコーディング、送信、デコーディングに先だってエンコードされ、送信され、デコードされるので、背後にあるI−とP−画像に依存し、他のB―画像には依存しない。例えば、図5に示す列の比較的小さな一部がIPBBPの順の画像データを含んでおり、画像がIBBPBBPBBPBBPBBの順で表示されても、B―画像に依存してP−画像が、B―画像のエンコーディングとデコーディングに先だってエンコード、デコードされる。ビデオ提示におけるオーディオデータは列からはずれて並べられることはない。表1は時間に従ってデコーダの動作を整理したものである。示されたGOPはIPBBPを持つものとして記述されているが、GOPsは、図5に関連して記述された5つの画像より多くの画像を含む。
一つの実施例では、デコーダバッファーは、I―フレームがデコードされるためのタイムスタンプ(PTS)とともに画像ヘッダが検出されるまではデータを無視する。図5では、この時間はTTS(0)508で指定される。このデータのバイパスは、画像あるいはフレームの部分、自身ではデコード出来ないデータのバッファリングのためにデータをバッファリングするのを防ぐ。時間TTS(0)508の後、デコーダバッファーは、R510で示される傾斜でデータを蓄積し始める。
τ(0)512の間、デコーダバッファーは、データを使い始める前のデータを蓄積する。このτ(0)512はプリローディングディレイとして知られている。図5での時間軸にそっての時間間隔は、フレームレートの逆数あるいはガゾウレートの逆数(1/R)514である。後で述べるように、画像の時刻の位置は、対応する画像のタイムスタンプで指示される。T516の時間で、デコーダは最初の画像グループ(GOP)に対応して全てのデータを更新して、I−画像とする。データの流れは、タイムスタンプ(PTS)のエンーディングにおけるI−画像をデコードする時間を特定する。それは、タイムスタンプDTS0(0)518と時間T516として特定される。
I−画像に対応するデータの更新は、デコーダバッファー占有率をシャープに減少させる520。デコーダバッファーからのデータの引き出しは、図5に示すように、瞬時に起こるが、通常の技術でわかるように、データの更新には僅かな時間しかかからない。I−画像では、多くのデータを費やすのに対して、P−画像とB−画像では、比較的少ないデータを費やす。しかし、熟練した実務者は、内部マクロブロックが、I−画像と同じように、P−画像とB−画像でも多くのデータを費やし、P−画像とB−画像が比較的多くのデータを費やすと評価している。時間T516でデコードされたI−画像は、時間T516ではまだ表示されないで、タイムスタンプDTS0(1)522の提示が時間T524での提示を特定する。
時間T524では、時間T516でデコードされたI−画像に対応する画像を表示する。時間周期PTS_オフセット526は、デコーダバッファーで、最初選択した1番目の画像を提示する列のデータを蓄積し始めてから表示までの遅れ時間を表している。デコーディングタイムスタンプDTS0(1)530は、時間T524で、最初のP−画像をデコードするようにデコーダに指示する。デコーダバッファーからのデータの引き出しは、バッファー占有率をシャープに減少させる532ことが示されている。時間T516と時間T524の間で、デコーダバッファーは、傾斜534で示されるようなデータの蓄積を行う。タイムスタンプDTS0(4)536は、時間T538でP−画像を表示するようにデコーダに指示する。この例では、最初のP−画像は、後の予測、先の予測あるいは両方向の予測からエンコードされたマクロブロックを含むB−画像を提示するよりも早い時間にデコードされている。
時間T540では、デコーダは、タイムスタンプDTS0(2)542で特定される最初のB−画像をデコードして表示する。デコーディングと提示とが同じ時間領域で起こると、タイムスタンプ(DTS)はデコーディングされない。実際のデコーダでは、デコーディングと表示との間の遅れは、計算時間や他の遅れをカウントしても少しの遅れである。B−画像で使われるデータは、最初のB−画像のデコーダバッファー占有率での小さな減少550で示されるように、比較的小さい。しかし、B−画像は、内部マクロブロックを含み、比較的大きなデータを消費する。
時間T546では、デコーダは、タイムスタンプDTS0(3)548で特定される2番目のB−画像をデコードして表示する。
時間T538では、時間T524で最初にデコードされたP−画像を、デコーダは表示する。時間T538では、デコーダは、2番目のP−画像のデコーディングタイムスタンプDTS0(4)554で特定される2番目のP−画像をデコードする。2番目のP−画像は、図示されないタイムスタンプの提示により、後で表示される。デコーダは、さらに他の画像をデコードして表示し続ける。例えば、時間T544では、デコーダは、データの流れにしたがって、B−フレームをデコードして表示する。
(レートコントロールと量子化コントロールプロセス)
図6は、ビデオエンコーダにおけるレートコントロールと量子化コントロールプロセスを示すフローチャートである。この発明の趣旨と範囲から離れない様々な方法での変形が熟練した実務者により評価されるであろう。例えば、もう一つの実施例では、示されたプロセスの部分の組み合わせ、替わりの順番の入れ替え、削除などができる。さらにもう一つの実施例では、プロセスの一部を、テストモデル5の10章に記載されているレートコントロールと量子化コントロールプロセスに置き換えられる。画像のエンコードに費やすビットレートがエンコーディング時のデコーダバッファー占有率に影響する。図6の括弧で表示されているように、プロセスの部分は、ビットの割付、レートコントロールと量子化コントロールプロセスである。ビットの割付は、画像をエンコードするときのビット数の見積もりに関係する。レートコントロールは、マクロブロックのエンコードに使われる参照量子化パラメータQの決定に関係する。適応量子化は参照量子化パラメータQで変形するために、マクロブロックの空間的機能を解析することに関係し、マクロブロックの量子化に使われる量子化パラメータmquantの値を計算する。
プロセスは、状態602から始まり、そのプロセスは最初の画像グループを受け取る。一つの実施例では、プロセスは、状態602の最初の画像グループの部分にのみ更新してもよく、残りの部分は後で更新できる。画像がレートコントロールと量子化コントロールプロセスに入る前に、画像はグループ化される。画像グループは、I−画像で始まり、ほかの画像を含む。必ずしも必要ではないが、一般的には、画像グループの中の他の画像はI−画像に関係する。プロセスは、状態602から状態604に進む。
状態604では、画像グループのなかの画像に適用されるエンコーディングのモードまたはタイプを更新する。レートコントロールと量子化コントロールプロセスで示されているように、画像グループのなかの画像に適用されるエンコーディングのモードまたはタイプを決めることが、画像がレートコントロールと量子化コントロールプロセスに入る前になされる。例えば、図5において先に記載した画像グループはIPBBPのタイプを持っている。プロセスは、状態604から状態606に進む。
状態606では、プロセスは、エンコードされる画像グループに、P−画像の番号NpとB−画像の番号Nbとを設定する。例えば、タイプIPBBPをもつ画像グループでは、2つのP−画像と2つのB−画像があるので、NpとNbとはそれぞれ2となる。画像グループのなかのI−画像だけは最初の画像であるから、I−画像の番号はたどる必要はない。プロセスは、状態606から状態608に進む。
状態608では、プロセスは、複合評価値Xi、Xp、Xbの値と、エンコードされる画像グループに割り当てられたビットの残留数Rを初期化する。一つの実施例では、複合評価値Xi、Xp、Xbの値は、数式1、数式2、数式3にしたがってプロセスが初期化する。
数式1、数式2、数式3において、可変ビットレートbit_rateは、データチャンネルの相対的な一定のビットレートに対応し、先に図4で記述した一定ビットレートデータチャンネル410に対応する。もう一つの実施例では、bit_rateは、平均値あるいは可変ビットレートチャンネルの好ましい平均ビットレートに対応する。さらに、もう一つの実施例では、bit_rateは、可変ビットレートチャンネルのピースワイズ一定ビットレートの値に対応する。
一つの実施例では、シーケンスの開始でのビットの残留数Rに初期値R0が、すなわち最初の画像グループのエンコーディングのまえの初期値Rが初期値R0として、数式4にしたがって設定される。シーケンスの開始では、その前の画像グループはないので、前の画像グループから持ち越されるビットの残留数もない。さらに、ビットの残留数Rの更新はあとで述べる数式27と数式28に関係している。
変数Gは、画像グループの提供時間の長さに対応する時間内に、データチャンネルによって転送されるビット数を表す。この時間は、画像グループの画像数にしたがって変化する。式5において、可変ビットレートbit_rateは、1秒あたりのビット数であり、Nの値は、(全てのタイプの)画像グループの画像数に対応し、可変piture_rateは1秒あたりの画像またはフレーム数である。プロセスは、状態608から状態610に進む。
状態610では、プロセスは、ビットの初期目標数Ti、Tp、Tb、すなわちエンコードされる画像に対する初期目標ビットの割付を計算する。画像グループ内の画像は、B−画像がエンコードされるとき、シーケンスからはずれてエンコードされる。一つの実施例では、レートコントロールと量子化コントロールプロセスが、エンコードされる画像タイプに応じて、数式6、数式7、数式8にしたがって、初期目標ビットの割付を計算する。
数式6では、Tiは、画像が、画像グループをスタートするI―画像であるとき、エンコードされる次の画像に対する目標ビットの割付に対応し、数式中の2つの括弧で表された大きい方の値に決められる。数式7では、Tpは、次の画像がP―画像であるとき、エンコードされる次の画像に対する目標ビットの割付に対応する。数式8において、Tbは、画像がB―画像であるとき、画像に対する目標ビットの割付に対応する。「普遍値」の値KpとKbは、画像をエンコードするときに使う量子化マトリックスに依存する。KpとKbの値は変化する。一つの実施例では、KpとKbの値はそれぞれ1.0と1.4である。もう一つの実施例では、これらの定数は、動きの量やタイプ、模様、イメージの細部などの画像の特性にしたがって変えられる。
レートコントロールと量子化コントロールプロセスの1実施例では、プロセスは、後に図7で詳細に述べるように、デコーダバッファーの見積られたバッファー占有率にしたがって最初の目標ビット割り当てから、次の目標ビット割り当てT(i、p、b)を調整する。
プロセスが次の画像に対する目標ビット割り当てを決めたときに、プロセスは、状態610から状態612に進む。画像に対する割り当てられたビットは、さらに、画像のマクロブロック間でも割り当てられる。このマクロブロックビット割り当ては、TM5に記載されているような通常技術、あるいは後の状態614で詳しく述べる技術で計算できる。さらに、マクロブロックにエンコードするとき、いろいろな優れた順番とかシーケンスが、後に図8A、8Bで詳細に記載される。
状態612では、プロセスは、仮想バッファーの充満度の初期値を設定する。1実施例では、それぞれの画像タイプの仮想バッファーがある。変数di j、dp j、db jはそれぞれI―画像、P―画像、B―画像、の仮想バッファーの充満度を表す。変数jは、エンコードされているマクロブロックの番号を表し、1の値から始まる。初期条件でのjは0である。仮想バッファーの充満度、すなわちdi j、dp j、db jは、j番目のマクロブロックをエンコードする前の仮想バッファーの充満度、すなわちj−1番目のマクロブロック仮想バッファーの充満度に対応する。
数式9におけるリアクションパラメータrの値の計算例を数式12に示す。熟練した技術者は、リアクションパラメータrを他の式で計算することも出来る。
数式11,数式12におけるKp、Kbは式6−8で述べた「普遍定数」である。プロセスは、状態612から状態614に進むか、状態614に関連して状態616にスキップする。
プロセスは、Intra、Inter_No_MC、Inter_MC、などのエンコードされるマクロブロックを決めるためのマクロブロックモード決定622を含む。タイプのモードには様々な要素があり、例えば、画像がインタレースかインタレースでないかなどの画像のタイプによる。マクロブロックモード決定は、他に並行して状態616、619、621を実行できる。モード決定における動きベクトルのコーディングコストを有利にするためのマクロブロックモード決定の1実施例は、図7に詳細に記載される。マクロブロックモード決定は、状態623の入力として提供される。
状態614では、プロセスは、仮想バッファーの充満度すなわちdi j、dp j、db jの値を計算して更新する。更新されるdi j、dp j、db jの値は画像のタイプに依存する。すなわち、di j、の値はI−画像がエンコードされるときに更新される。プロセスは、マクロブロックをエンコードするのに使うビットを勘案して、仮想バッファーの充満度を計算して更新する。仮想バッファーの充満度の更新は、画像のマクロブロック間のビット割り当て技術に対応する。例えば、TM5に従うとき、マクロブロックでのビット割り当てはほとんどリニアである。すなわち一定の値となる。1実施例では、相対的な動きの評価より、むしろ画像(I―画像とB―画像に対して)の中のマクロブロックの相対的な動きに基づくマクロブロック間のビット割り当てが優れている。
数式13a、数式14a、数式15aに仮想バッファーの充満度の計算による更新を示す。
変数Bjは、マクロブロックjに使われたビットを含んで、画像のマクロブロックをエンコードするのに使われたビットに対応しており、変数Bj-1は、j番目のマクロブロックを含まないマクロブロックをエンコードするのに使われたビットに対応する。変数TMBi j-1、TMBp j-1、TMBb j-1 はj番目のマクロブロックを含まないマクロブロックをエンコードするためのビット割り当てに対応する。
数式13b、数式14b、数式15bは仮想バッファーの充満度の計算、すなわちTM5に記載されたプロセスで使われたdi j、dp j、db jの値を示している。TM5は、画像の中でビット割り当てを行い、マクロブロックの動きを含まないので、動きに対応できない欠点がある。運動選手のような速い動きに適応してビット割り当てを可変的に行うマクロブロックは比較的エンコードし易いマクロブロックのビット割り当てと同じである。
1実施例では、更新された値は数式13c、数式14c、数式15cで表される。数式13c、数式14c、数式15cの使用によって、画像のなかのマクロブロックの動作に基づき、優れたビット割り当てとなる。そのようなビット割り当ては、定数とか動きの評価よりもマクロブロックの相対的な動きの計算に基づくマクロブロックの優れたビット割り当てとなる。マクロブロック間の可変ビット割り当ては、後の図8Aと図8Bに関連して詳しく述べる。
変数MACTは、数式16に示すように、全てのマクロブロックの動作の総計を表す。Mact_sumj-1 は、エンコードされた画像の全てのマクロブロックの動作の総計に対応する。すなわち数式17に示すようなマクロブロックjを含まないj−1までのマクロブロックでの総計である。
数式16において、パラメータMB_cnt は、画像の中のマクロブロックの数に対応し、変数Mactkはk番目のマクロブロックの動作の測定輝度に対応する。動作の測定輝度の計算には、偏差値の計算や偏差の絶対値の総計など様々な技術が使用できる。
もう1つの実施例では、仮想バッファーの占有率の最新の値であるdi j、dp j、db jの値は、MPEGからのTM5モデル10章に記載されている最新の仮想バッファーの占有率を計算する式に基づき計算できる。
もう1つの実施例では、仮想バッファーの占有率の最新の値であるdi j、dp j、db jの値は、数式13d、数式14d、数式15dに基づいて計算できる。
数式13d、数式14d、数式15dにおいて、a、a、aは、重み係数に対応し0から1の値をとる。この重み係数a、a、aは、TM5と数式13c、数式14c、数式15cで述べた動作に基づく組み合わせで割り当てられた画像のなかのマクロブロックのビット割り当てに使用できる。この組み合わせによるビット割り当ては、オーバーヘッドのためのビットのような比較的平等に割り付けられたビットを補償するという利点がある。重み係数a、a、aは、0から1の値の間を広く変化する。1実施例では、重み係数a、a、aは、0から0.5の値である。例えば、これらの重み係数のサンプル値は0.2、0.3、0.4、0.5である。勿論、0から1の間の他の値を決めても良い。ビデオエンコーダの実施例では、重み係数a、a、aは、ユーザに決めさせるようにしている。
仮想バッファーの占有率の値であるdi j、dp j、db jの値は、画像のそれぞれのマクロブロックに対して計算される。しかし、最初のマクロブロックの値であるdi 、dp 、db の値は、状態612での初期値と同じである。プロセスは、状態614から状態616に進む。
状態616では、プロセスは、マクロブロックjを量子化するのに使用される参照量子化パラメータQjを計算する。数式18に、参照量子化パラメータQjの計算を示す。プロセスは、状態616から状態619に進む。
状態619では、プロセスは、マクロブロックのための規格化空間動作メジャーN_Sactj を計算する。1実施例では、プロセスは、TM5のプロセスと数式19a、数式19b、数式21a、数式22,数式23aにしたがって、規格化空間動作メジャーN_Sactj を計算する。TM5による規格化空間動作メジャーN_Sactj の計算は、空間動作(模様)のみに基づいて画像のなかのマクロブロックにビットを割り当てる、動きを採ることを考慮していないところに欠点がある。さらに、数式23aで詳細に説明するように、TM5のプロセスが、後で図8A、8Bによって説明するプロセスのシーケンスにおける制限により、空間動作メジャーN_Sactj の平均値計算に不適当な値を使っていることが欠点である。
もう1つの実施例では、プロセスは、規格化空間動作メジャーN_Sactjを、数式20a、数式21b、数式21c、数式22,数式23bによって計算している。参照量子化パラメータQjの計算に使われる動作メジャーの組み合わせが、規格化空間動作メジャーを通しての変形効果により、空間動作(模様)のみに基づいて画像のなかのマクロブロックばかりでなく、動きに基づく画像のなかのマクロブロックにビット割り当てに優れた効果をもたらす。これが、劇的な画像の改善をもたらす。例えば、空間動作のみが使われるときには、スポーツイベントでの運動選手の脚の動きのような速い動きの画像の領域では、比較的少ないビットが割り当てられていて、「ブロッキー」と呼ばれるような画像になる。これは、速い動きの画像の領域が、比較的高い空間動作を回避し、比較的少ないビットを割り当るからである。さらに、後で、数式23bに示すように、空間動作メジャーを使った実施例では、目標ビットと実際にエンコードされたビットとがうまくマッチして、バッファーオーバーランやバッファーアンダーランのようなものを少なくして、優れた結果が得られている。
状態619では、動作は、画像の模様を決めるための画像の空間動作に対応している。空間動作を計算するのに使われる技術はいろいろある。例えば、TM5の第10章に開示されている技術やここに記載している新技術にしたがって計算することができる。数式19aは、TM5の第10章にあるフレーム構成サブブロックとフィールド構成サブブロックの輝度からマクロブロックjの空間動作の計算を示している。j番目のマクロブロックの画像内の空間動作、すなわち模様は、数式19bを使って計算され、TM5で使った計算に対応する。
P_meann を計算する式は、数式21aに示される。Pn k は、8x8のサブブロックのn番目のオリジナルの中のピクセルからサンプリングした値に対応する。数式19bの計算は、比較的複雑であり、計算に強いCPUが必要で、マイクロプロセッサのような遅い一般仕様のCPUでは、リアルタイムエンコーディングは困難である。数式19bは、L2基準として参照される偏差の計算を経て空間動作を計算する。これは、リアルタイム、全分解能、画像レートでビデオエンコーディングが行われたときに、書き戻しができる。結果として、リアルタイムビデオエンコーディングは、専用ハードでの通常システムで行われている。専用ハードのビデオエンコーダは、高速のビデオ処理ができるが、専用ハードは高価であり、サポートされないし、パソコンのような一般的電子装置で実行されるソフトよりグレードアップが困難である。このように、ビデオを効果的に処理するビデオエンコーディング技術として、汎用の電子装置を使ってリアルタイムビデオエンコーディングを行うのが優れている。
数式20aは、1実施例によるマクロブロックjの空間動作の計算を示している。もう1つの実施例では、マクロブロックjの空間動作を計算するのに、数式19a、数式19bに示すような差の二乗和のかわりに、差の絶対値の和が使われる。数式20bは、1実施例によるマクロブロックjの動きの計算を示している。
数式20aでは、P k は、オリジナルの輝度データに対応する。数式20bにおいては、P k は、オリジナルの輝度データかマクロブロックのタイプにより動きが補償された輝度データに対応する。マクロブロックが内部マクロブロックである時の16x16のオリジナルの輝度データのj番目のサンプリング値に対応する。マクロブロックがマクロブロック間であるとき、P k は、動きが補償された輝度データの16x16に対応する。P_mean を計算する式は、数式21b、数式21cに示される。
さらに、数式20a、数式20bに示す計算では、汎用の電子装置で、ソフトで、リアルタイムでレートコントロールと量子化コントロールを使うことにより、全画像レート、高分解能のビデオエンコーディングができる。数式20a、数式20bに示す計算は、リアルタイムでない応用や専用ハードでも利用できる。ビデオエンコーディングプロセスの1実施例として、3Ghzクロック速度のインテルペンティアム4プロセッサで、PAL、SECAM、NTSCのビデオデータの流れがリアルタイムで、全画像レート、全分解能(720X480ピクセル)のエンコードができた。
数式20a、数式20bに示す計算では、L1基準の計算として知られている差の絶対値の和(SAD)を計算する。SADの計算は比較的複雑であるが、特別のインストラクションを含む選択さあれたプロセッサやCPUでは、比較的効率的な方法でSADの計算ができる。1実施例では、汎用の電子装置で、インテルからのストリーミングシングルインストラクション/マルチメディア(SIMD)エクステンション(SSB)と互換なCPUをもつパソコンで計算可能である。もう1つの実施例では、汎用の電子装置のCPUで、SSEインストラクションセットでの差の絶対値の和をパックしたインストラクション(PSADBW)と同じか似ているインストラクションと互換のもので計算ができる。SSEインストラクションセットと互換のCPUの例として、インテルペンティアム3プロセッサ、インテルペンティアム4プロセッサ、インテルゼオンTMプロセッサ、インテルセントリノTMプロセッサ、インテルセントリノプロセッサの選択されたバージョン、AMDアスロンTMプロセッサの選択されたバージョン、AMDヂュロンTMプロセッサの選択されたバージョン、AMDオプテロンTMプロセッサの選択されたバージョン、などがある。将来のCPUや開発中のCPUにもSSEインストラクションセットと互換のものが出来るであろう。新しいプロセッサには、新しいインストラクションセットが含まれるであろうが、その新しいインストラクションセットはSSEインストラクションセットと互換にすることが出来るであろう。
数式21aは、数式19bで使われたサンプル値の計算を示す。数式21b、数式21cは、数式20a、数式20bで使われたサンプル値の計算を示す。
1実施例では、数式21aに示すようなTM5による8x8のサブブロックのn番目のオリジナルのサンプル値の平均値P_mean の計算を示す。もう1つの実施例では、数式21bと数式21cを経てサンプル値の平均値P_mean の計算ができる。数式21bと数式21cは、空間動作(模様)の計算と動きを評価した計算の組み合わせであることが優れている。数式21bは、内部マクロブロックに対して使用される。数式21cは、マクロブロック間のマクロブロックに対して使用される。
数式22は、正規化空間動作メジャーN_Sactj の計算を示す。正規化空間動作メジャーN_Sactj は、離散的余弦変換(DCT)に適用される量子化を計算する状態621で使われる。
数式22に示すように、j番目のマクロブロックのための正規化空間動作メジャーN_Sactj は、マクロブロックのための空間動作メジャーSactj と空間動作メジャーの平均値Savg_act から計算される。空間動作メジャーの平均値Savg_act は、数式23aか数式23bで計算できる。
数式23aで示される計算は、TM5に記載されている計算で、今の画像を使わないで、前の画像を使って計算した空間動作メジャーSactj を使う。その結果、TM5と整合する通常のエンコーダは数式22に示された正規化空間動作メジャーN_Sactj を比較的正確に計算できる。空間動作メジャーの平均値Savg_act が数式23aで計算されたとき、正規化空間動作メジャーN_Sactj は、実際の正規化計算よりむしろ正規化の評価値を示している。数式23aで提供された評価値は、シーンが前回と今回とで変化したときには、部分的に良くない。TM5では、前の画像から空間動作メジャーの平均値Savg_actjが計算されるとき、最初の画像で、空間動作メジャーの平均値Savg_actjを正規化するのに400という値が使われる。
TM5に記載されたプロセスでのエンコーディングは、空間動作メジャーの平均値Savg_actj のため、前の画像を使っている。何故なら、TM5に記載されたプロセスは、空間動作メジャーの平均値Savg_actj の計算ができないので、正規化空間動作メジャーN_Sactj を使って1x1のマクロブロックを処理しているからである。さらに、他のプロセスシーケンスを図8A、8Bで詳しく説明する。数式23bで示す計算は、数式23aで示されたTM5に基づく計算を改良したものを示している。
1実施例では、マクロブロックのプロセッシングが後の図8A、8Bで示すように、調整されている。この調整は、今の画像でのマクロブロックの空間動作メジャーSactj から計算される空間動作メジャーの平均値Savg_actj にするので、正規化空間動作メジャーN_Sactj は、評価値よりも実際に正規化された値になっている。この優れた点は、画像をエンコードするときに使用するデータがより正確に目標データに近づいていて、予想通りに正規化が行われていることである。さらに、I−画像、P−画像、B−画像の充満度を表す仮想バッファーの占有率の値であるdi j、dp j、db jの値に対する乱れや歪みを少なくしたり、除去したりするという利点がある。さらに、数式23bに示す空間動作メジャーの平均値Savg_actj の計算では、400というような任意の値で正規化するひつようがない。何故ならば、実際の平均値が今エンコードされている画像の空間動作メジャーSactj を計算しているからである。プロセスは、状態619から状態621に進む。数式13、数式14、数式15、数式16、数式17に示すように、仮想バッファーの充満度の計算に必要とされる実際の空間動作メジャーの計算ができる利点がある。
状態621では、正規化パラメータmquantj を計算する。正規化パラメータmquantj は、エンコードされるマクロブロックjを正規化するのに使われる。正規化パラメータmquantj は、状態621で使われるか、格納されるか、後で使われる。数式23は、正規化パラメータmquantj の計算を表す。
数23では、Qjは、数式18で述べた参照量子化パラメータに対応し、Nactj は、数式22で述べた正規化空間動作メジャーN_Sactj に対応する。1実施例では、プロセスは、正規化パラメータmquantj を点検し、量子化レベルQAC(i,j)の好ましくないクリッピングを防ぐために、その値を制限する。例えば、MPEG-1標準によるビデオエンコードに使う場合に、計算した正規化パラメータmquantj が2であることを検出して、自動的に4に置き換える。正規化パラメータmquantj は、後に、量子化レベルQAC(i,j)を発生させるために、マクロブロックエンコーディングプロセスで使われる。しかし、MPEG-1では、量子化レベルQAC(i,j)は、8ビット内の−225から225のレンジではクリップされる。このデータのクリッピングは、実際に使われており、正規化パラメータmquantj を、クリッピングされるレベルに制限することで避けることができ、画質の改善に寄与する利点がある。
1実施例では、図9Aに詳しく記載するように、選択された刺激に反応して、仮想バッファーの占有率の値であるdi j、dp j、db jの値と正規化パラメータmquantj をリセットできる。プロセスは、状態621から状態623に進む。
状態623では、j番目のマクロブロックをエンコードする。プロセスは、状態616で計算された正規化パラメータmquantj を使ってj番目のマクロブロックをエンコードする。エンコーディング技術は、例えば、離散的余弦変換、動きベクトルなどの計算を含む。1実施例では、図11で記載されるように、B−画像でのマクロブロックのエンコーディングを選択的にスキップすることができる。プロセスは、状態623から状態625に進む。
判断のブロックである状態625では、プロセスは、画像の中の全てのマクロブロックが状態616でのエンコーディングで処理されたか、図11に示すスキッピングで処理されたかを判断する。プロセスが、画像の中の全てのマクロブロックのエンコーディングまたはキッピングの処理を終わっておれば、プロセスは、状態627に進む。そうでないときは、状態614に戻って、次のマクロブロックのプロセスを続ける。
状態627では、プロセスは、同じタイプの次の画像のエンコーディングのための初期条件として、仮想バッファーの占有率の最終値を格納する。例えば、今のフレームの仮想バッファーの占有率の最終値、すなわちjがMB_cntのとき、di j、dp j、db jの値が格納され、同じタイプの次の画像の初期値であるdI 、dp 、db の値として使用される。ある環境では、ビットあるいはバイトスタッフィングを使ってエンコーディングに使われるビット数を増やすようにして、エンコーディングに使われるビット数を持続時間に対して比較的少なくできる。これはデコーダバッファーにおけるバッファーオーバーラン条件を回避する。しかし、ビットスタッフィングの使用は、対応する仮想バッファーの占有率に好ましくない歪みを生じて、エンコーダに不安定性を生じさせる。1実施例では、レートコントロールと量子化コントロールプロセスがビットスタッフィングの影響を緩和できる優れた技術を含んでいる。そのような技術の例を図9A、9Bで述べる。プロセスは、状態627から状態630に進む。
判定のブロック630では、示されたプロセスが完了して、画像グループ(GOP)の最後の画像が処理されたかどうかを判断する。これは、先の状態606で述べたP−画像の数NpとB−画像の数Nbの値が残っていないかどうかをモニタリングすることで達成できる。画像グループに処理されない画像が残っているときには、プロセスは、状態632に進む。そうでない場合、すなわち、画像グループの処理が完了している場合には、プロセスは、判定のブロック634に進む。
状態632では、プロセスは、P−画像の数NpとB−画像の数Nbの値に適当な値を更新して、画像グループにおける次の画像処理を初期化するために、状態636に進む。処理される次の画像は、エンコーディングの間、画像の並び替えの可能性があるので、必ずしも表示される次の画像ではない。
状態636では、丁度今エンコードされた画像に基づく複合評価値Xi、Xp、Xbに対応して、更新を行う。例えば、I−画像が丁度今エンコードされたとすると、I−画像のための複合評価値Xiを、式24に示すような値で更新する。丁度今エンコードされた画像が、P−画像やB−画像とすると、数式25と数式26に示すように、複合評価値Xp、Xbを更新する。
数式24,数式25,数式26において、Si、Sp、Sb の値は、それぞれI−画像、P−画像、B−画像の画像のために、画像をエンコードするのに発生させるか使われるビットの数に対応する。Qi、Qp、Qbの値は、画像のなかのマクロブロックを量子化するのに使われる正規化パラメータmquantj の平均値に対応する。プロセスは、状態636から状態638に進む。
状態638では、画像グループに割り付けられたビットの残留数Rを更新する。画像グループに割り付けられたビットの残留数Rへの更新は、エンコードするべき次の画像が、画像グループに存在する画像かどうか、あるいは、新しい画像グループの中の最初の画像かどうかに依存する。数式27と数式28は、処理されるべき次の画像が新しい画像グループの中の最初の画像のときに使われる。処理されるべき次の画像が、先に処理されたのと同じ画像グループの中の他の画像のときには、数式27のみが使われる。数式27と数式28は、R値の指定状態を表し、新しいR値が等号の左側で、先のR値が等号の右側に示されている。
数式27では、先のR値と丁度今エンコードされた画像をエンコードするのに使った、引き算するビット数S(i,p,b)とから画像グループに割り付けられる新しいビットの残留数Rを計算する。画像をエンコードするのに使ったビット数S(i,p,b)が、図7で述べるようなVBVバッファーモデル占有率を計算するのに使われる。数式27で示された計算は、エンコードされた後の画像に適用される。丁度今エンコードされた画像が、画像グループの中の最後の画像、例えば、エンコードされるべき次の画像が、新しい画像グループの中の最初の画像のとき、数式27で示された計算は、数式28で示された計算に移る。数式28では、残留数RにGを加える。変数Gは数式5で表される。Gの値は、エンコードされるべき新しい画像グループに基づいており、新しい画像グループのための提供時間長の中で、データチャンネルにより、伝送できるビット数に対応する。プロセスは、状態638から状態610に戻り、先に述べたビデオエンコーディングプロセスを続ける。
判定ブロック634に戻ると、ここで、画像グループの中の最後の画像のエンコーディングプロセスが完了している。判定ブロック634では、ビデオシーケンスのエンコーディングが完了しているかどうかを判断する。実際には、放送ビデオのような限りがない時間でのエンコードに使用され、エンドレスでビデオエンコードを継続する。処理するべき他の画像グループになると、状態640に進む。そうでない場合には終了する。
状態640では、プロセスは、次の画像グループを更新する。もう1つの実施例では、プロセスは、次の画像グループの一部分を更新し、残りの部分は後で更新しても良い。1実施例では、状態640は、状態602によく似ている。プロセスは、状態640から状態642に進む。
状態642では、画像グループの中の画像に適用されるエンコーディングのタイプまたはモードを受ける。レートコントロールと量子化コントロ−ルにおいて、画像グループの中の画像で使われるエンコーディングのモードあるいはタイプについての決定は、レートコントロールと量子化コントロ−ルされる前になされる。1実施例では、状態642は状態604と比較的似ている。プロセスは、状態642から状態644に進む。
状態644では、エンコードされる次の画像グループにおけるP−画像の数NpとB−画像の数Nbの値を決める。1実施例では、状態644は状態606と比較的似ている。プロセスは、状態644から前に述べた状態644に進み、エンコーディングプロセスを続ける。
(VBVバッファーモデル占有率レベルでのコントロール)
図7は、仮想バッファーの占有率レベルに基づく目標ビット割付を調整するためのプロセスを説明するフローチャートである。プロセスの動作を説明するため、仮想バッファーがビデオバッファーベリファイア(VBV) バッファーモデルに対応するような、MPEG-1とMPEG-2のビデオエンコーディングについて記載する。VBV バッファーモデルは、デコーダにおけるバッファー占有率レベルをモデル化するため、エンコーダにより使用される概念的モデルである。他のビデオエンコーディング標準には、他のバッファーモデルが使用されることは、通常の知識をもつ技術者には明らかである。図7の掘り下げた議論をする前に、VBV バッファーモデルのモニタリングについて記載する。
図4に記述したように、VBV バッファーモデルはデコーダバッファーレベルを予想あるいは予言する。デコーダバッファーの占有率レベルは、エンコーダバッファーの占有率にほぼ反比例する。すなわち、VBV バッファーモデルにおいて、高い占有率レベルは、ビデオシーケンスをエンコードするのに使われるビットが比較的少ないことを示し、VBV バッファーモデルの低い占有率レベルは、比較的多いビットが使われることを示す。
VBV バッファーモデルの占有率レベルVstatusが計算されてモニタされる。1実施例では、VBV バッファーモデルの占有率レベルVstatusは予め決まった閾値と比較され、エンコーディングは、図11で詳細に記述されるように、比較値に応じてうまく適合される。もう1つの実施例では、VBV バッファーモデルの占有率レベルVstatusは、エンコードされる画像のための目標ビット数 Ti、Tp、Tb をうまく適合させるように、調整するのに使われる。占有率レベルVstatusの計算は式29で表される。
数式29は、占有率レベルVstatusの意味を表す。新しい占有率レベルVstatusの値は等号の左側で、前の値は等号の右側である。1つの実施例では、占有率レベルVstatusの値は、バッファーモデルのための目標値で初期化される。目標値の例は、VBV バッファーモデルの全容量の7/8の値である。もう1つの実施例では、Vstatusの値は、明示されたVBVに遅延値に対応するバッファー占有率で初期化される。通常の知識をもつ技術者によっては、他の値での初期化も可能である。
数式29では、VBV バッファーモデルの占有率レベルVstatusは以下のように計算される。丁度今エンコードされた画像をエンコードするのに使われたビット数 S(i,p,b)
が前の占有率レベルVstatusから差し引かれ、フレームまたは画像に対応する周期時間に伝送されたビット数が加えられる。数式29に示すように、フレームの中で送られたビット数は、フレームの逆数の時間とビットレートとの積になる。数29の計算は、処理された画像の占有率レベルVstatusの更新に適用される。もう1つの実施例では、数式は、他のすべての画像と同様に、それぞれの画像より少なく、占有率レベルVstatusの更新のために変形される。
図7で述べるように、プロセスの1実施例は、画像のための目標ビット数 Ti、Tp、Tb と閾値Tmidとを比較し、比較値に応じて目標ビット数 Ti、Tp、Tb を調整する。これは、デコーダでのバッファーアンダーランやオーバーランが生じないようにVBVの応じたデータの流れを作るように、ビデオエンコーダをうまく支援する。
1実施例では、コントロールのために、VBV バッファーモデルの占有率レベルに関して5つのパラメータが使用される。もう1つの実施例では、5つのパラメータより少ないかまたは多くのパラメータが使われてもよい。パラメータは、広範囲に変化することが出来て、固定パラメータ、可変パラメータ、適応パラメータ、ユーザが決めるパラメータなどが含まれる。もう1つの実施例では、次のパラメータが使われる(占有率のオーダーを減らすのに):Vhigh、Vtarget、Vmid、Vlow、Vcritical。
Vhighは、VBV バッファーモデルの占有率レベルの比較的高い値に対応する。もう1つの実施例では、プロセスは、VBV バッファーモデルの占有率レベルがVhighより低く保たれるようにエンコーディングをコントロールするように努める。
Vtargetは、好ましいVBV バッファーモデルの占有率レベルに対応する。1実施例では、好ましいVBV バッファーモデルの占有率レベルVtargetはユーザにより形成されることができる。
Vmidは、VBV バッファーモデルの占有率レベルのほぼ半分の容量に対応する。
Vlowは、VBV バッファーモデルの占有率レベルの比較的低い値に対応する。1実施例では、プロセスは、VBV バッファーモデルの占有率レベルを、Vlowより高く維持するように、エンコーディングをコントロールするように努める。
Vcriticalは、Vlowより低い占有率レベルに対応する。1つの実施例では、VBV バッファーモデルの占有率レベルがVcriticalより低くなった場合、プロセスは、図11で詳しく述べられるように、B−画像におけるマクロブロックにスキップする。
表2に、閾値レベルのサンプル値を示す。
表2で示されたサンプル値は、VBV バッファーモデルサイズに対して都合良く調整されている。図4で詳しく述べたように、VBV バッファーモデルサイズは、MPEG-2で約224KB、MPEG-1で約40KBである。MPEG-1やMPEG-2のVBV バッファーモデルのような仮想バッファーモデルサイズは、使用されるビデオエンコーディングや応用状況によって変化する。
図7に戻ると、図7に示されたプロセスは、少なくとも、VBV バッファーモデルの占有率レベルVstatusの一部に基づく画像のための目標ビット割付Ti、Tp、Tb を調整する。1実施例では、図7に示されたプロセスは、図6に示すプロセスの状態に組み入れられている。プロセスは、オプションである判定ブロック710からスタートできる。すなあち、プロセスは、目標ビット割付Ti、Tp、Tb の値(図7では、T(i,p,b)と記載する)をTmid、Thighのような1つまたはそれ以上の閾値と比較する。例えば、VBV バッファーモデルの占有率レベルが比較的低い場合、調整プロセスが発動されるように、目標閾値Tmidを選択できる。もう1つの実施例では、VBV バッファーモデルの占有率レベルが比較的高い場合、調整プロセスが発動されるように、目標閾値Thighを選択できる。1実施例では、目標閾値TmidかThighのうちいずれか1つが使われる。もう1つの実施例では、両方の目標閾値が使われ、さらに、他の実施例では、オプションである判定ブロック710は存在しないし、目標閾値も使われない。ここに示された実施例では、調整プロセスは、VBV バッファーモデルの占有率レベルとエンコードされる画像に割り付けられたビット数に反応して発動される。目標ビット割付Ti、Tp、Tb の計算は、前に述べた状態610と図6の数式6,数式7,数式8で実施できる。数式30aは、目標閾値Tmidのサンプル計算を表す。数式30bは、目標閾値Thighのサンプル計算を表す。
この実施例では、目標ビット割付Ti、Tp、Tb が目標閾値Tmidを越えたとき、または目標ビット割付Ti、Tp、Tb が目標閾値Thighより小さいとき、プロセスは、オプションである判定ブロック710から状態720に進む。他の実施例あるいは構成では、このオプションである判定ブロック710は存在せず、プロセスは、状態720からスタートする。目標ビット割付Ti、Tp、Tbが目標閾値Tmidを越えたときは、VBV バッファーモデルの占有率は比較的低くなる。この実施例では、調整なしで、VBV バッファーモデルの占有率が落ちてVmidより低い状態に留まるように、画像が十分なビットを割り付けられるときに、目標ビット割付に対する調整が起きるように、目標閾値Tmidは選択される。通常の知識を持つ技術者により他の閾値が決められても良い。
目標ビット割付Ti、Tp、Tb が目標閾値Tmidを越えないとき、または目標ビット割付Ti、Tp、Tb が目標閾値Thighより小さくないとき、プロセスは、オプションである判定ブロック710から判定ブロック730に進む。プロセスは、オプションである判定ブロック710が存在しないか使われない場合、状態720からスタートし、判定ブロック730に進む。もう1つの実施例では、目標ビット割付Ti、Tp、Tb が目標閾値Tmidを越えないとき、または目標ビット割付Ti、Tp、Tb が目標閾値Thighより小さくないとき、プロセスは、例えば、図6に示すプロセスの状態610に進むように、判定ブロック710からエンドに進む。オプションである判定ブロック710では、比較値は、I−画像、
P−画像、B−画像、に対して同じ目標閾値Tmidと/またはThighを使う。もう1つの実施例では、目標閾値Tmidと/またはThighは、画像のタイプに依存して変わる。
状態720では、目標ビット割付Ti、Tp、Tb が目標閾値Tmidを越えたとき、または目標ビット割付Ti、Tp、Tb が目標閾値Thighより小さいとき、プロセスは、画像に対して割り付けられたビット数を減らすように、目標ビット割付Ti、Tp、Tb の値を調整する。もう1つの実施例では、プロセスは、状態720からスタートする。例えば、プロセスの1実施例は、プロセスは、オプションである判定ブロック710を持たないで、状態720からスタートするように、ユーザにより構成されることができるようになっている。例えば、Ti、Tp、Tb に対する調整は、ビットの数を減らすように構成されることができる。画像をエンコードするのに使われるビットの数はより少ないとき、VBV バッファーモデルの占有率と、対応するデコーダのバッファー占有率が増加することができる。数式31は調整のための一般式を示す。
数式31では、調整因子αは、1より小さい数なので、調整後の目標ビット割付Ti、Tp、Tb は、オリジナルの計算値よりも小さくなる。もう1つの実施例では、調整因子αは、1より大きい数なので、調整後の目標ビット割付Ti、Tp、Tb は、オリジナルの計算値よりも大きくなる。数31の調整は、別々に分離して計算された目標ビット割付Ti、Tp、Tb の値に対する調整を示す。しかし、その調整は、目標ビット割付Ti、Tp、Tb の最初の計算に組み込まれている。数式31では、等号の右側の値は、調整前の目標ビット割付Ti、Tp、Tb の値に対応し、左側は、調整後の目標ビット割付Ti、Tp、Tb の値に対応する。数式32は、調整因子αのサンプル計算を表す。
数32に示すように、調整因子αは、VstatusがVtargetより小さいときに、1より小さく、VstatusがVtargetより大きいときに、1より大きくなる。数式31における調整の正味の効果は、VBV バッファーモデルの占有率を、望ましい占有率レベルVtargetに傾斜させることである。
目標ビット割付Ti、Tp、Tb の値が、オプションである判定ブロック710において、目標閾値Tmidを越えたとき、VBV バッファーモデルの占有率Vstatusは、望ましい占有率レベルVtargetより小さくなり、調整因子αは1より小さくなる。目標ビット割付をどれだけ減少させることが出来るかは、VBV バッファーモデルの占有率Vstatusが、望ましい占有率レベルVtargetよりどれだけ小さくなるかによる。目標ビット割付Ti、Tp、Tb の値が目標閾値Thighより小さいとき、VBV バッファーモデルの占有率Vstatusは、望ましい占有率レベルVtargetより大きくなり、調整因子αは1より大きくなる。目標ビット割付がどれだけ増えるかは、VBV バッファーモデルの占有率Vstatusが、望ましい占有率レベルVtargetよりどれだけ大きくなるかによる。プロセスは、状態720から判定ブロック730に進む。
判定ブロック730では、目標ビット割付Ti、Tp、Tb の値が状態720での調整があってもなくても、プロセスは、指定された限界値内にあるかどおうかを判定する。これらの限界値は、予め決められるか、目標ビット割付Ti、Tp、Tb とVBV バッファーモデルの占有率Vstatusに適合するように決められる。目標ビット割付Ti、Tp、Tb の値が限界値から外れたとき、プロセスは、目標ビット割付Ti、Tp、Tb の値を限界値に設定して、判定ブロック730から状態740に進む。その他の場合、プロセスは、目標ビット割付Ti、Tp、Tb の値をさらに調整することなく終了する。
数式33は、目標ビット割付Ti、Tp、Tb の値の上限値Tmaxのサンプル計算を表す。数式34は、目標ビット割付Ti、Tp、Tb の値の下限値Tminのサンプル計算を表す。
目標ビット割付Ti、Tp、Tb の値がTmaxを越えるとき、目標ビット割付Ti、Tp、Tb の値はTmaxに再設定され、目標ビット割付Ti、Tp、Tb の値がTminを下回るとき、Tminに再設定される。
数33で表される上限値Tmaxを適用することは目標ビット割付Ti、Tp、Tb の値を比較的高い値に限定し、VBV バッファーモデルの占有率レベルが望ましい占有率の限界レベルVlowを上回るように維持される。数式33で表される下限値Tminを適用することは目標ビット割付Ti、Tp、Tb の値を比較的低い値に限定し、VBV バッファーモデルの占有率レベルが、データチャンネルの一定ビットレートで、オーバータイムでデータを蓄積した後でも、望ましい占有率の限界レベルVhighを下回るように維持される。下限値Tminは、数式34の中で、コンマで分かれている項の大きい方に対応する。上限値Tmaxおよび下限値Tminの他の値は、通常の知識を持つ技術者により決められても良い。目標ビット割付Ti、Tp、Tb は、エンコーダのための目標を達成させて、実際に画像のエンコードに使われるビット数の目標値からの偏差を小さくし、バッファー占有率レベルVstatusが望ましい限界値レベルVlowとVhighから僅かにずれたままになってもよい。
状態740の処理後、調整プロセスが終了する。例えば、図7に描かれた調整プロセスが、図6の状態610で説明されたレートコントロールと量子化コントロールプロセスに組み込まれ、プロセス状態610から継続される。
この発明の精神と範囲から逸脱しない種々の変形は、熟練した実務者によって評価される。例えば、もう1つの実施例では、ここに表されたプロセスのいろいろな部分を組み合わせることができ、また、代わりのシーケンスに並べ替えることができ、あるいは削除することができる。
(マクロブロックの処理シーケンス)
図8Aは、従来技術によるマクロブロックの処理プロセスを説明するフローチャートである。図8Bは、本発明の1実施例によるマクロブロックの処理プロセスを説明するフローチャートである。図8Bで表される処理シーケンスは、計算される画像のマクロブロックにとって、空間動作および/または動きに対して優れている。すなわち前の画像の計算から総計値と平均値とを見積もるのに対して、総計値と平均値の計算に実際の値が使用されるからである。
図8Aに描かれた通常のシーケンスは、状態802からスタートする。状態802において、プロセスは、1つのマクロブロックに対し、空間動作(模様)および/または動き評価の計算を実行する。プロセスは、状態802から状態804に進む。
状態804では、プロセスは、マクロブロックの離散的余弦変換(DCT)を行うために、空間動作および/または動き評価の計算を使用する。空間動作の計算は、空間動作全体の値で正規化される。しかし、この点での空間動作の計算は、エンコードされる画像にとって完全ではない。結果として、まえの画像からの評価値が使用される。例えば、平均値を計算するために、まえの画像からの全空間動作が借用される。もう1つの実施例では、まえの画像からの動き評価も借用できる。これらの評価が、実際の値に近づくかどうかはチャンスの問題である。前の画像とエンコードされる画像との間にシーンの変化があると、評価は全く正確ではなくなる。これらの不正確さは、画質を害し、画像エンコーディングの為の目標ビット数と画像をエンコードするのに使われる実際のビット数との間にミスマッチを生じさせる。画像をエンコードするのに費やされるビット数の偏差は、バッファーアンダーランやバッファーオーバーランを生じさせる。プロセスは、状態804から状態806に進む。
状態806では、マクロブロックのDCT係数に対し、可変長コーディング(VLC)を行う。VLCはDCT係数を圧縮する。プロセスは、状態806から判定ブロック808に進む。
判定ブロック808では、プロセスは、画像での全てのマクロブロックのエンコーディングを完了したかどうかを判定する。まだエンコードされるマクロブロックが残っている場合には、プロセスは、判定ブロック808から状態802に戻る。その他の場合、プロセスは、エンドに進んで再スタートされるまで待つ。
1実施例による並び替えられたシーケンスが図8Bに描かれ、状態852からスタートする。状態852では、プロセスは、エンコードされる画像における全てのマクロブロックに対し、空間動作および/または動き評価値の総計と平均値を計算する。見積もりでなく実際の数で空間動作および/または動き評価値の総計と平均値が計算されるところが優れており、さらに、エンコードされている画像の前に、シーンの変化があっても、正確であることが優れている。TM5におけるもう1つの実施例では、空間動作メジャーの平均値Savg_actjとしての400が最初の画像にメジャーの「推定値」として、使われている。空間動作が使われる前の全てのマクロブロックの空間動作の平均値によって、空間動作メジャーの平均値Savg_actjが計算され、不確実な「推定値」を避けることができる。
さらに優れている点は、実際の総計値と平均値とが、比較的高い正確さをもつ目標ビット割付とマッチするように画像をエンコードするのに使われる実際のビット数になっていることである。これが、望ましくないバッファーアンダーランやバッファーオーバーランの機会を減少させ、画質を向上させる。もう1つの実施例では、1つのマクロブロックに対する実際の動き評価が、マクロブロック間でビットを割り付けるのに使われ、比較的速い動きをもつマクロブロックが比較的多いビット数に割り当てられる。それに対し、マクロブロック処理によるマクロブロックをもつ通常のシステムにおいては、マクロブロックに対するビットは、前の画像におけるマクロブロックの相対的な動きにより、マクロブロック間に割り付けられ、正確かもしれないし、そうでないかもしれない。プロセスは、状態852から状態854に進む。
状態854では、プロセスは、画像における全てのマクロブロックに対し、DCTの計算を実施する。プロセスは、状態854から状態856に進む。
状態856では、プロセスは、画像における全てのマクロブロックのDCT係数に対し、VLCを実行する。プロセスは、再スタートするまで終了する。
もう1つの実施例では、プロセスは、状態852に述べたように、全てのマクロブロックに対し、空間動作および/または動き評価値の計算を行うが、画像のマクロブロックの処理が完了するまで、DCTの計算を実施する状態ともう1つのVLCを実行する状態とでループを回す。
(ビットスタッフィング)
ビットスタッフィングまたはバイトスタッフィングはデコーダバッファーオーバーランに至るようなデータの流れを防ぐために、エンコーダに使用される一般的な技術である。画像をエンコードするために使われるビット数が持続した時間の周期に対して比較的少ない場合、デコーダは、データチャンネルがデータバッファーにデータを加えるレートより遅いレートでデコーダバッファーからのデータを修正する。持続した時間の周期に対して、データの蓄積が続くとき、デコーダバッファーが容量に対して満杯になり、データチャンネルにより運ばれてデータが失われる。ビットスタッフィングが引き起こされるような比較的高く圧縮された画像のシーケンスの例は、それぞれの画像が事実上完全な黒になる場合の画像のシーケンスである。バッファーオーバーランが生じるようなデータレートの不均衡に近づくと、エンコーダは、使用されないがスペースを費やすデータの流れにデータを埋め込む。この処理がビットスタッフィングとして知られている。
ビットスタッフィングはエンコーディングプロセスの様々な部分に設定されている。1実施例では、図6に述べるエンコーディングプロセスにおいて、ビットスタッフィングは、状態632の後と状態636の前に設定される。1実施例では、エンコーディングプロセスは、VBVバッファーモデルが図7で述べたVhighが予め定められたレベルに達すると、ビットスタッフィングを引き起こす。1実施例では、ビットスタッフィングは、VBVバッファーモデル占有率がVBVバッファーモデルの容量の約63/64になると引き起こされる。
ビットスタッフィングはデータバッファーオーバーランの問題を解決するのに有効であるが、エンコーディングプロセスに他の問題を誘発する。ビットスタッフィングに使用されるビットが含まれることも望ましくない結果となる。画像S(i,p,b)をエンコードするのに使われるビット数の計算において、ビットスタッフィングに使用されるビットの付加は、エンコーダが最初の目標としたものより多くのビットが画像をエンコードするために使われたことを示している。さらに、このことは、画像をエンコードするために使われるビット数を減らして、画質を低下させて画像をエンコードすると解釈される。時間周期全体にわたって、ビットスタッフィングに使用されるビット数に比例して、画像をエンコードするために使われるビット数が減少する。多くのビットがビットスタッフィングに使用されると、画像を実際にエンコードするのに、比較的少ないビットしか残らないので、エンコード画像の質を低下させることになる。
図9Aは、ビットスタッフィングがエンコーディングプロセスを不安定にしがちな、削減とか削除をして、画質を低下させるエンコーディングプロセスを安定させるプロセスであることを表している。後に記述するように、図9Aに描かれたプロセスは、エンコーディングプロセスの様々な部分に設定できる。
このプロセスは、熟練した技術者により、この発明の精神と範囲を逸脱しない様々な方法で変形できる。例えば、もう1つの実施例では、このプロセスの様々な部分が結合され、他のシーケンスと並び替えられ、あるいは削除される。このプロセスは、判定ブロック902または904から始まる。1実施例では、判定ブロック902または904の何れか1つがプロセスで提供される。ここに示された実施例では、判定ブロック902と904の両方がプロセスで提供される。例えば、プロセスは、画質のエンコーディング前には判定ブロック902からスタートし、画質のエンコーディング後には判定ブロック904からスタートする。例えば、図9Aの判定ブロック902からのプロセスのスタートは、図6で示したレートコントロールと量子化コントロールプロセス後の状態612とプロセス前の状態614とが組み合わされる。もう1つの実施例では、図9Aの判定ブロック904からのプロセスのスタートは、図6のプロセスの状態627と組み合わされる。
判定ブロック902では、プロセスは、現在エンコーディングしている画像と前にエンコードされた画像との間で、シーンの変化が会ったかどうかを判定する。1実施例では、判定ブロック902はオプションである。シーンの変化が会ったかどうかは、様々な方法で判定される。1実施例では、画像をエンコードするのに使われた測定値の偏差の絶対値の総和(SAD)のような計算結果を再び使用する。1実施例では、I−画像に対して、今の画像の平均空間動作Sact_avgが、対応する前の画像の平均空間動作と比較される。例えば、今の動作が少なくとも2倍または前のI−画像の動作の半分より小さいとき、シーンの変化が検出される。3倍と1/3,4倍と1/4あるいはこれらの組み合わせのような他の因子も使うことが出来、通常の知識を持つ技術者により決められる。1実施例は、新しいシーンの変化を宣言するために、前のシーンの変化が宣言されて以来、画像の最低数がパスするための付加的な基準を課する。P−画像に対して、シーンの変化を検出するために、動きの平均値が、(2,1/2)、(3,1/3)、(4,1/4)のような相対比較因子を伴って、空間動作の平均値の代わりに、使用される。判定のロバスト性を増すために、1実施例は、さらに、今のP−画像に対して、動きの平均の最低値を使う。なぜなら、動きの平均値は、それ自身、比較的高い動き示すことができ、シーンの変化に帰すことが出来るからである。例えば、約1,000と約4,000との間での動きの平均の最低値は比較的高い動き示すのに使われる。
プロセスは、シーンの変化がないと判断したとき、判定ブロック902からエンドに進んで、例えば状態614にはいる。さらに、シーンの変化があるかどうかを判断するエンコーディングプロセスの他の部分があってもよい。また、フラグの状態を検査すること、またはシーンの変化があるかどうかを示す信号により、判定ブロック902において、前の判断を再使用できる。プロセスが、シーンの変化があると判断したとき、プロセスは、判定ブロック902からサブープロセス906に進む。
判定ブロック904では、プロセスは、エンコーディングプロセスがクリティカルな状態にあるかどうかを判断する。これに代わる他の実施例では、判定ブロック902と判定ブロック904のうちの1つだけが存在し、他はオプションである。判定ブロック904が存在するプロセスでは、VBVバッッファーモデルの占有率のモニタリングが画像のエンコーディングの後で行われる。エンコーディングプロセスがクリティカルな状態にあることの判断基準は、非常に広い範囲で変化する。1実施例では、クリティカルな状態は、量子化パラメータmquantjの値が最低値ほど低くないときで、エンコーディングプロセスによりビットスタッフィングが行われたときに対応する。量子化パラメータmquantjの値が最低値になるほど低い値は、エンコーディング標準のシンタックスにしたがって変化する。VBVバッッファーモデルの占有率がクリティカルな状態にあると判断されると、プロセスは、判定ブロック904からサブプロセス906に進む。そうでない場合、プロセスは、エンドに進んで、例えば、図6述べられた状態627に入る。
サブプロセス906では、プロセスは、状態612で述べた変数のdi 0、dp 0、db 0で代表される初期条件に対する仮想バッファー占有率の値を正規化する。正規化された変数はいろいろなやり方で計算される。サブプロセス906に示すように、正規化された値は、VBVバッッファーモデルの占有率に依存する。サブプロセス906は、状態908、判定ブロック910、状態912、状態914などを含む。
状態908では、1実施例として、数式35,数式36a、数式36bなどで表されるsumとdeltaを計算する。
数式35で、図6の状態612で述べた数式9,数式10,数式11を使って、初期条件に対する仮想バッファー占有率の値が得られる。数式36aと数式36bに示すように、deltaは、バッッファーモデルの占有率の減少とともに増加する。数式36aでは、変数vbv_buffer_sizeは、エンコーディングに使われるVBVバッッファーモデルの容量に関係する。数式36bでは、変数Vinitialは、VBVバッッファーモデルの占有率レベルの初期値に関係している。1実施例では、変数Vinitialの値は、VBVバッッファーモデルの容量の約7/8の値である。もう1つの実施例では、Vinitialの代わりに、プロセスは、Vtargetのような目標占有率レベルを使いことができるが、その初期値と目標占有率とを同じ値にすることができる。もう1つの実施例では、deltaは、バッッファーモデルのサイズからVBVバッッファーモデルの占有率レベルを差し引いた差分に基づいている。VBVバッッファーモデルのサイズあるいは容量は、エンコーディングに使われる標準にしたがって変わる。例えば図4に示したように、MPEG-1とMPEG-2エンコーディング標準は、それぞれ、約40KBと224KBのVBVバッッファーサイズを規定している。他の標準では、VBVバッッファーモデルが含むメモリ容量を規定できる。プロセスは、状態908から判定ブロック910に進む。
判定ブロック910では、sumの値が予め定められた閾値Tnormより小さいかどうかを判断する。予め定められた閾値Tnormは、使用可能なレンジを示すある値に対応する。例えば、予め定められた閾値Tnormの値としては、0がある。通常の知識を持つ技術者により、他の値が定められてもよい。プロセスは、sumの値が閾値Tnormより小さいとき、判定ブロック910から状態912に進む。そうでないとき、プロセスは、判定ブロック910から状態914に進む。
deltaの値は、数式36bのVBVバッッファーモデルにおける非占有率または、数式36bでのVBVバッッファーモデルの初期状態と現在の状態との間の違いに対応する。仮想バッファーレベルのsumと非占有レベルとの比較をおこなってもよい。例えば、もう1つの実施例では、比較値に対して、より小さいか等しいとすることができるし、オフセットを含ませることもできる。
状態912では、1実施例として、初期条件であるdi 0、dp 0、db 0である仮想バッファー占有率の値を、数式37,数式38,数式39による正規化された値として設定する。
数式37,数式38,数式39では、deltaの値は数式36で計算され、fi r、fp r、fb r の値は非常に広いレンジで変化できる。fi r、fp r、fb r の値は、通常、0と1の間のレンジの値をとり、同じ値または異なった値でも良い。さらに、もう1つの実施例では、fi r、fp r、fb r の値は、1とか1に近い値が選ばれる。もう1つの実施例では、fi r、fp r、fb r の値は、それぞれ、約5/17、約5/17、約7/17に対応する。通常の知識を持つ技術者により、fi r、fp r、fb r の値は、他の値が決められてもよい。プロセスは、エンドに進み、例えば、図6で述べた状態614に入る。
状態914に戻ると、この時点では、プロセスは、sumがTnormより小さくないと判断している。状態914では、1実施例として、初期条件での仮想バッファー占有率変数di 0、dp 0、db 0の値を、数式40,数式41,数式42による正規化された値に再設定する。
数式40,数式41,数式42は、初期条件di 0、dp 0、db 0での仮想バッファー占有率変数の値の設定に対応する。等号の右側の値は、調整前の値に対応し、等号の左側の値は調整後の値に対応する。deltaの値とsumの値とがほぼ同じとき、その値の調整はほとんど生じないことがわかる。sumの値がdeltaの値に比べて大きいとき、初期条件のdi 0、dp 0、db 0に対し、仮想バッファー占有率変数の値は反比例して小さくなる。数式40から数式42では、0で割ることを回避するために、sumに小さな値が付加される。調整後、プロセスはエンドになり、例えば、図6で述べた状態614に入る。
図9Bは、最終のバッファー占有率レベルに不備を検出したことによる仮想バッファー占有率レベルの再設定プロセスを示すフローチャートである。再設定プロセスは、図6で述べたレートコントロールと量子化コントロールプロセスの状態627のようなエンコーディングプロセスに組込まれる。
プロセスは、判定ブロック952から始まる。前に、図6で述べたレートコントロールと量子化コントロールプロセスの状態627で説明したように、適用可能な仮想バッファーの最終占有率、すなわちj=MB_cntのとき、di j、dp j、db jの値は、同じタイプの次の画像のエンコーディングに対する初期条件、すなわち同じタイプ(IかPまたはB)の画像に対するdi 0、dp 0、db 0の値として使うことができる。TM5で述べたプロセスを経て行うエンコーディングのとき、適用可能な仮想バッファーの最終占有率、すなわちdi j、dp j、db jの値は、いつも同じタイプの次の画像のエンコーディングに使用される。しかし、その適用可能な仮想バッファーの最終占有率は、いつも適切な値であるとは限らない。
判定ブロック952では、適用可能な仮想バッファーの最終占有率すなわちdi j、dp j、db jの値が、使用するのに適しているかどうかを判断する。1実施例では、その値の適用性は、その値が物理的に可能な値であるかどうかで判断される。仮想バッファーは物理的バッファーを形成する。物理的バッファーは空でも良いし、一部が占有されてもいし、全部が占有されてもよい。しかし、物理的バッファーが負のデータで占められることはない。物理的に到達できる値と非物理的に到達できる値とを区別するために、プロセスの1実施例は、適用可能な仮想バッファーの最終占有率の値を閾値tr と比較する。
1実施例では、物理的に到達できるバッファー占有率と物理的に到達できないバッファー占有率とを区別するためのtr の値は0である。1実施例では、比較的0に近い値が使われる。tr の値は、0に近い1,2,3などの値を含むレンジに対応できるが、tr の値は、適当と思われる最終占有率に対して負にはなりえない。tr の値が0のとき、プロセスは、適用可能な仮想バッファーの最終占有率の値と関連した符号が正であるか負であるかを検査することにより、物理的に到達できる値と非物理的に到達できる値とを区別できる。整数で比較すると、−1より大きいという不等号を使うことができるので、tr の値は−1となる。プロセスは、最終占有率の値が、同じタイプの次の画像の初期条件として使うのに適していないとき、判定ブロック952から状態954へ進む。その他の場合、判定ブロック952から状態956へ進む。
状態954では、プロセスは、j=MB_cntのときのエンコードされたdi j、dp j、db jの値の最終占有率値をリセットして、物理的に到達できる適当な値とする。適当な値には、0から適用可能な仮想バッファーの容量までのいかなる値をも含む。1実施例では、最終バッファー占有率の値は、0も含んで、0に近い比較的小さな値にリセットされる。プロセスは、状態954からオプションの状態958に進むか状態956へ進む。
オプションの状態958では、仮想バッファー占有率レベルdi j、dp j、db jの値を正規化する。前の状態954では、プロセスは、エンコードされた画像のタイプに適用された仮想バッファー占有率の値di j、dp j、db jの値における非物理的に到達できる値を修正した。例えば、プロセスは、適用可能な仮想バッファーの最終占有率の値di j、dp j、db jの前の負の値をとり、その負の値を残りの仮想バッファー占有率の値に割り付け仮想バッファー占有率の総計が0になるようにする。例えば、1実施例では、プロセスは、負の値の半分を他の2つの仮想バッファー占有率値にそれぞれ加える。プロセスは、オプション状態958から状態956に進む。
状態956では、状態954でリセットされた値は、判定ブロック952とエンドを経て変形されていない仮想バッファーの最終占有率の値を格納する。プロセスがエンドで、例えば、図6で述べたレートコントロールと量子化コントロールの状態919に進む。
(画像グループの中のシーンの変化)
図10Aに、画像グループの例を示す。シーケンスの中の画像間でのシーンの変化は、画像グループの中にある。シーンの変化は、画像のシーケンスの中で、普通に出会うことである。シーンの変化は、カメラショット、プログラム間の切り替え、コマーシャルへの切り替え、編集などによって起こる。シーンの変化では、今の画像のマクロブロックは、前の画像のマクロブロックとの関係はほとんどないか全くない。したがって、今の画像のマクロブロックは、予測されてコード化されるよりむしろ内部でコード化されている。I−画像は、内部でコード化されたマクロブロックのみを含むので、シーンの変化は、I−画像で用が足りている。
シーンの変化に対する画像は、I−画像でコード化されるのが好ましいが、画像グループの構造、すなわち画像タイプのシーケンスをシステムの中あるいはエンコーダのコントロールの外で、予め決めることが出来る。例えば、直接サテライト放送システム(DBS)は、エンコーダによって従わされるI−画像、P−画像、B−画像の予め定められたパターンを持っている。その結果、シーンの変化は、B−画像またはP−画像でも起こる。普通のエンコーダは、予測したB−画像のマクロブロックを、後の時間のB−画像またはP−画像を参照することによって、B−画像のシーンの変化に適応させることができる。
P−画像におけるシーンの変化は問題である。P−画像は、内部でコード化されたマクロブロックを含み、また予測されてコード化されたマクロブロックを含む。しかし、P−画像は、後の画像を参照できないので、シーンの変化は、内部でコード化されたマクロブロックのみを使ってエンコードされる。実際、普通のエンコーダにおけるシーンが変化するP−画像は、ビット割付とP−画像のヘッダ情報を持たないI−画像である。普通のエンコーダでは、P−画像は、I−画像より少ないビットが割り付けられるので、シーンが変化するP−画像の画質は、I−画像よりかなり悪くなる。B−画像や他のP−画像のような他の画像は、シーンが変化するP−画像から予測してコード化され、シーンが変化するP−画像の画質をふやしている。
図1と5で述べたように、シーケンスにおける画像は、画像グループの中で再配列される。グループは、1つのI−画像からスタートし、続くI−画像の直前の画像で終わる。画像グループの中の画像は、提供の為と、エンコーディングのためとでは、違った順に並べられる。例えば、提供順で第1の画像グループ1002を、図10Aに示す。次の画像グループの1つのI−画像1004もまた図10Aに示す。
シーケンスにおける画像は、エンコーディングとデコーディングのとき、提供順に再配列される。例えば、第1の画像グループ1002は、そのプループがシーケンスにおける第1グループであるとき、第2の画像グループ1010に再配列され、そのプループがシーケンス実行中の部分のときは、第3の画像グループ1020に再配列される。第2の画像グループ1010と第3の画像グループ1020がエンコーディング順にしめされている。もう1つのグループからのI−画像に出会うとき、第2の画像グループ1010は最後となる。再配列により、提供順では、はじめ第1の画像グループ1002にあった2つのB−画像1014、1016はエンコーディングの再配列のために、もはやその画像グループの中にはない。図10Bに述べたプロセスに関しては、画像グループはエンコーディング順におけるグループに関係する。
第3の画像グループ1020は、図10Bに述べたプロセスを説明するために使われる。第3の画像グループ1020は、第3の画像グループ1020のI−画像1026の前に提供される2つの画像1022、1024を含む。ここに示す例では、第3の画像グループ1020の中の1つのP−画像で、シーンの変化が起こっている。図10Bに示したプロセスは、シーンの変化を認識し、第3の画像グループ1020の中の残存画像1032の残存ビットを再割付して画質を改善する。
図10Bは、画像グループ(GOP)の中で、シーンの変化を検出したときのエンコーディングパラメータの再設定のためのプロセスを説明するフローチャートである。ここで示すプロセスの実施例では、エンコーディング順は、画像グループのグルーピングを記述するために使われる。
図10Bに示したプロセスは、シーン変化のP−画像を示し、画像グループの基本的な構想を変えることなく、画像グループの残存画像の中のビットを再割付する。プロセスが、シーン変化したP−画像により多くのビットを割り付けて画質を改善するところが優れている。ここで示したプロセスは、図6で前に述べたレートコントロールと量子化コントロールプロセスに組み合わされる。例えば、図10Bに示したプロセスは、図6の状態610の前に組み合わされる。ここで示したプロセスは、熟練した実務者により、この発明の精神と範囲から逸脱しない範囲での種々の方法による変形が可能である。例えば、もう1つの実施例では、このプロセスのいろいろな部分を組み合わせたり、代わりのシーケンスで並べ替えたり、削除したりすることができる。
プロセスは、判定ブロック1052から始まる。判定ブロック1052では、プロセスは、シーン変化または画像における動きの総量の急激な増大があったかどうかを判断する。シーン変化はいろいろな技術で判断される。1実施例では、プロセスは、既に可能な画像比較の計算を行う。例えば、1実施例では、偏差の絶対値の総和(SAD)が使われる。SADは予め定められた値、動きの平均値、あるいはその両方と比較し、シーン変化を判断する。例えば、SADが予め定められたレベルを越えるとき、あるいは、SADの動きの平均の2倍を越えるとき、シーン変化の検出をすることができる。SADは、シーン変化または画像における動きの総量の急激な増大を検出するのに優れている。シーン変化をモニタリングするエンコーディングプロセスのもう1つの部分があり、1実施例として、もう1つのシーン変化検出の結果は、判定ブロック1052で再使用される。シーン変化が検出されると、プロセスは、判定ブロック1052から、判定ブロック1054へ進む。その他の場合、プロセスはエンドになり、例えば、図6で前に述べたレートコントロールと量子化コントロールの状態610に入る。
判定ブロック1054では、プロセスは、エンコードされる画像のタイプがP−タイプであるかどうかを判断する。もう1つの実施例では、判定ブロック1052と判定ブロック1054の順序は、図10Bに示されているものから入れ替えることができる。画像がP−画像としてエンコードされるとき、プロセスは、判定ブロック1054から状態1056に進む。その他の場合、プロセスはエンドになり、例えば、図6で前に述べたレートコントロールと量子化コントロールの状態610に入る。
状態1056では、画像グループの残存画像の間でビットを再割付する。1例としては、P−画像1030でシーン変化が検出されたとき、図10Aの第3の画像グループ1020を使って、残存ビットRは残りの画像1032の間で再割付される。1実施例では、プロセスは、P−画像1030がI−画像であるかのように、残りの画像1032をエンコードするが、P−画像1030の画像タイプを変化させないで、画像グループの構成を入れ替えることはない。
それがI−画像であるかのように、P−画像1030をエンコードするプロセスは、多くの方法で実施される。例えば、プロセスの1実施例としては、シーン変化を伴ってエンコードされたP−画像の前にエンコードされたP−画像の数Npを繰り下げて、目標ビット割付を発生する数式6における繰り下げられたNpを使う。I−画像の目標ビット割付Tiを計算するために、通常のシステムに使われる数式6は、図10Bのプロセスで、シーン変化を伴うP−画像の目標ビット割付の計算に使われる。数式43は、そのような目標ビット割付をTpとして表している。
これは、P−画像に比較的多くのビットを割り付けるので、シーン変化を伴うP−画像は、シーン変化を高画質でエンコードできる。画像グループの中で、エンコードされるように残っているP−画像とB−画像の引き続いてのエンコーディングのために、数式7,数式8が使われる。オプション的に、プロセスは、シーン変化に応じて、複雑な評価値Xi、Xp、Xb に対する値を、例えば、図6のレートコントロールと量子化コントロールの状態608で記述した数式1から数式3を適用して、さらにリセットできる。プロセスはエンドになり、例えば、図6で前に述べたレートコントロールと量子化コントロールの状態610に入る。図10Aと10Bで述べたプロセスは、画像グループの中で、1つより多くのシーン変化があるときは繰り返される。
(B−画像におけるマクロブロックの選択的スキッピング)
図11は、ビデオエンコーダにおけるデータの選択的スキッピングのプロセスを一般的に説明するフローチャートである。このデータの選択的スキッピングは、比較的極端な条件でも、ビデオエンコーダが比較的良好なビットレートを維持するのに優れている。選択的スキッピングにより、ビデオエンコーダは、デコーダバッファーアンダーランのようなデコーダバッファーにおける低い占有率レベルを低減するかまたは削除するようなデータの流れをエンコードする。デコーダバッファーアンダーランは、再生ビットレートが決まった時間周期でのデータチャンネルからの一定ビットレートを越えて、デコーダバッファーがデータの外にはみ出したときに起こる。デコーダバッファーアンダーランは好ましくないし、表示中に、一時停止のような不連続を引き起こす結果になる。
デコーダバッファーアンダーランが起こらなくても、低いデコーダバッファー占有率レベルになるようなデータの流れは好ましくない。前に図4で説明したように、VBVバッファーモデルのようなバッファーモデルが、通常、デコーダバッファー占有率レベルを形成するように、エンコーディングプロセスの中で使われる。デコーダバッファー占有率レベルが危険となるほど低いと、普通のエンコーダが判断するとき、普通のエンコーダは、エンコーディングビットを保持し、ビットレートコントロールを維持するために、画像とぎりぎり妥協する。低いVBVバッファーモデル占有率レベルの効果は、マクロブロックの深刻な画質低下になることに注目すべきである。
図11のフローチャートで説明されるプロセスは、比較的低いバッファーモデル占有率レベルが検出されたとき、選択されたマクロブロックのエンコーディングをスキップして、ビット数を減らすことにより、良好なビットレートコントロールを維持することが、普通の技術のように、画像に厳しい衝撃を与えない方法で、画像をエンコードするのに使われる。1実施例では、図11に示すプロセスは、図6で前に述べたレートコントロールと量子化コントロールの状態623と組み合わされる。ここで示したプロセスは、熟練した実務者により、この発明の精神と範囲から逸脱しない範囲での種々の方法による変形が可能である。例えば、もう1つの実施例では、このプロセスのいろいろな部分を組み合わせたり、代わりのシーケンスで並べ替えたり、削除したりすることができる。
プロセスは、判定ブロック1102からスタートする。ここでは、B−画像に対応してエンコードされるべき画像かどうかを判断する。B−画像は、提供された順に早かったり遅かったりする他の画像(I−画像またはP−画像)からのマクロブロックを基に予測したマクロブロックでエンコードされることができる。しかし、エンコーディングプロセスのあいだ、B−画像をエンコードするのに使われた画像(I−画像またはP−画像)は、B−画像のエンコーディングに先駆けてエンコードされる。プロセスは、エンコードされる画像がB−画像のとき、判定ブロック1102から判定ブロック1104に進む。その他の場合、プロセスはエンドになり、例えば、図6で前に述べたプロセスの状態623に戻る。
判定ブロック1104では、プロセスは、VBVバッファー占有率レベルが比較的低いかどうかを判断する。エンコーディングプロセスのあいだ、比較的多くのビットがエンコードされるべきB−画像からの画像のエンコーディングに費やされているかのしれない。幾つかの環境では、このデータの消費が、VBVバッファー占有率レベルを低下させる。例えば、プロセスは、図7で述べたように、VBVバッファーモデルの占有率レベルVstatusをモニターでき、占有率レベルVstatusとVcriticalのような予め定められた閾値とを比較できる。その比較は、エンコーディングプロセスのいろいろな時点で行うことができる。1実施例では、この比較は、画像がエンコードされた後とVBVバッファーモデルの占有率レベルが決まった後に実行できる。すなわち、図6で述べたレートコントロールと量子化コントロールの状態638の後または状態610の後に行う。1実施例では、エンコードされた画像におけるマクロブロックの前に比較を行うのが有利である。それにより、比較的多くのビットを保つのに好ましいときの画像にけるすべてのマクロブロックをスキップできるように、有利に保持されるからである。
1実施例では、VcriticalはVBVバッファーモデルの容量の約1/4に設定される。VBVバッファーモデルの容量あるいは同様なバッファーモデルはエンコーディング標準に伴って変わる。Vcriticalの適切な値は、広いレンジから選択される。例えば、他の値、VBVバッファーモデルの容量の1/16,1/8,1/10,3/16などを使うことができる。また、通常の知識を有する技術者により、他の値が決められても良い。1実施例では、Vcriticalの設定はユーザが行っても良い。VBVバッファーモデルの占有率レベルVstatusが予め定めた閾値より低いとき、プロセスは、判定ブロック1104から状態1106に進む。その他の場合、プロセスは、判定ブロック1104から状態1108に進む。
状態1106では、プロセスは、B−画像におけるマクロブロックをスキップする。1実施例では、全てのマクロブロックがスキップされる。もう1つの実施例では、選択されたマクロブロックがスキップされる。多くのマクロブロックが、例えば、VBVバッファーの占有率レベルVstatusを基に、スキップされることができる。エンコードされたB−画像のデータは形成されているが、スキップされたマクロブロックのデータは少ない。エンコーディングプロセスでは、データの流れの中での1ビットあるいはフラグがスキップされたマクロブロックを示す。例えば、直接モードとして知られている技術では、フラグは、(提供時における)I−画像またはP−画像の前と後のマクロブロックの間でエンコーディングされるあいだに、スキップされたマクロブロックが挿入されていることを示す。もう1つのフラグは、提供時におけるI−画像またはP−画像の前のマクロブロックから、スキップされたマクロブロックがコピーされたことを示す。また、もう1つのフラグは、提供時におけるI−画像またはP−画像の後のマクロブロックから、スキップされたマクロブロックがコピーされたことを示す。マクロブロックのスキッピングは、比較的少ないビットでB−画像をエンコードできる利点がある。1実施例では、スキップされたマクロブロックを伴うMPEG-2のB−画像は、ほんの約300ビットを使ってエンコードされている。B−画像のマクロブロックのスキッピング実行後、プロセスはエンドになり、例えば、図6で前に述べたプロセスの状態623に戻る。
状態1108では、VBVバッファーモデルの占有率レベルVstatusが比較的低くないと判断し、B−画像におけるマクロブロックをエンコードする。B−画像におけるマクロブロックのエンコーディング後、例えば、図6で前に述べたプロセスの状態623に戻る。判定ブロック1102および/または判定ブロック1104で行われた決定は、状態1106または状態1108よりも図6のプロセスの中の異なった点で実行されてもよい。
(適応的なI、P−フレームとB−フレームDCTのフィルタリング)
MPEGあるいは他のビデオエンコーダは比較的低いビットレートで圧縮するのが困難なビデオシーケンスに出くわすことがある。この状況は、可変ビットレート圧縮を使うことにより避けることができる。それは、エンコーダがシーンをエンコードするのが困難になったとき、瞬間的にビットレートをあげる方法である。一定ビットレート圧縮技術は、ビデオコンパクトディスク(VCD)、デジタルTV放送(衛星、ケーブル、地上波を含む)などに使われ、ビットレートを増やす機能を組み込むことは、通常できない。なぜならば、VBVバッファーモデルの対応性が、画像をエンコードするのに可能なビット数になるよう強制するからである。その代わりに、画質は損害を受ける。例えば、普通のエンコーダは、量子化パラメータQPの値を増大させて、見やすい圧縮にする。見られる圧縮の例は、ビデオシーンをエンコードするのに困難なかたまり感とぎくしゃく感を含む。
図11で述べたプロセスは、VBVバッファーモデルの占有率レベルに応じたB−画像におけるマクロブロックのエンコーディングを選択的にスキッピングすることにより、VBVバッファーの要求と合理的な画質への適応性を維持する。図12と13で述べるプロセスは、図11で述べたプロセスとの組み合わせまたは単独で使われる。
図12と13で述べるプロセスでは、プロセスは、画像をエンコードするのに必要とするビット数を減らすための離散的余弦変換(DCT)係数を選択的および/または適応するようにフィルタリングする。プロセスは、VBVバッファーモデルの占有率レベルと観測される量子化パラメータのレベルに応じてDCT係数を適応するようにフィルタリングする。選択的フィルタリングは、エンコーディングビットが制限され、VBVバッファーモデルあるいはどうようなバッファーモデルの整合性が要求される状況で、画像をエンコードするのに使うビット数と画質とのトレードオフを改善する。DCT係数のフィルタリングは、通常の量子化テーブルで提供されるフィルタリングとは異なっている。量子化テーブルの内容は、エンコーディング中は固定されており、ビットの流れの中で交換される。すなわち、エンコーダとデコーダは閉ループの中で、同じ量子化テーブルを使用する。ここで述べるDCT係数のフィルタリングは、エンコーダにおいてのみ、DCTの選択的な開ループフィルタリングに関する。デコーダでは、補償のための調整を必要としない。
選択的なDCTのフィルタリングは、一般に、8x8のイメージブロックで記述できる。8x8イメージブロックはMPEG1、MPEG2、MPEG4などで使われている。DCTのフィルタリングは、他のビデオ圧縮標準、例えば、ブロックサイズが4x4のH.264にも適用できることは、熟練した実務者には理解できるであろう。
図12は、選択的なDCTのフィルタリングを説明するフローチャートである。エンコーディングプロセスの間、エンコーダは、動きの探索1210を行い、動き補償1220を行い、DCT係数を計算1230する。1実施例では、プロセスは、続いてDCT係数を選択的にフィルタリング1240し、ならびに/あるいはQPの値を比較的低い値に、選択的に制限1250する。そのようなフィルタリング1240、QP値の制限または設定1250は、VBVバッファーモデルの占有率レベルおよび/または比較的高いQP値の検出に対応して選択的に適用される。比較的高いQP値はデータをエンコードするのに使われるビット数を減少させるので、高いQP値は、画像のかたまり感による画質の劇的低下をもたらす。プロセスは、次にDCT係数の量子化1260に進む。DCT係数がフィルタリングされ、QPが制限されて、プロセスは、調整されたQP値で、フィルタリングされたDCT係数を量子化する。VBVバッファーモデルの占有率レベルが比較的高いとき、プロセスは、DCT係数をフィルタリングしないで、QP値も置き換えないように選択することができる。図13で述べるように、プロセスの1実施例は、VBVバッファーモデルの占有率レベルに応じてフィルタリングの強度を変化させる。図13のプロセスを述べる前に、周波数ドメインでのフィルタリングの例について述べる。
周波数ドメインにおいて、ωx とωy が、イメージデータあるいは動きの補償の後に残るエラーの8x8のブロックの、2−D離散的余弦変換(DCT)のもとでの水平方向と垂直方向の周波数ドメイン変数を示す。この周波数ドメインにおいて、DC係数に対応して、ωx =0とωy =0、すなわちイメージデータあるいは残留エラーの8x8のブロックの平均値であり、ωx
=7とωy =7は、イメージデータあるいは残留エラーの8x8のブロックの最高周波数の詳細さに対応する。4x4ブロックのイメージデータでは、ωx =3とωy =3が、最高周波数の詳細さに対応する。
人の視覚と受容性は、低い周波数により敏感で、高い周波数には比較的敏感ではない。同時に、多くのビデオイメージは低い周波数に比べて高い周波数でのエネルギーは小さい。にもかかわらず、ビデオ情報がDCT係数の量子化により圧縮されるとき、特に、量子化スケールが高い値(大きな量子化エラーが予想されるが)のときに、高精細なフレームの残留エラーは高周波領域に大きなエネルギーを持つ。これは、量子化スケールが高い値であっても、圧縮のための非常に多くのビットを要求する結果になる。
図13で述べられるプロセスにおいて、シーンをエンコードするのに、そのような困難を検出し、エンコーディング中にローパスフィルタを選択的にイメージに適用する。フィルタリングは、動きの探索後、動きの補償後、DCTの計算の後で、量子化の前に提供される。この方法において、高周波成分が犠牲になり、(それらの値が減少または0になる)空間分解能が幾分低下する。特に、ビデオ画像の高精細な部分の分解能が低下する。しかし、イメージ品質の全体的なバランスは改善する。1実施例では、非分離ピラミッドタイプのローパスフィルタが使われる。ピラミッドは、フィルタの応答が、低周波(DC)から高周波(最大AC)まで傾斜した形状のものを言う。勿論、通常の知識を持つ技術者により、ほかの形状のフィルタも使用されることができる。1実施例では、ピラミッドタイプのフィルタは、正の値をもつパラメータ、s≧1に依存し、数式44により一意的に表される。
周波数変数のレンジは、適用されるエンコーディング標準で定義されるイメージブロックのサイズに依存する。sの逆数(1/s)はフィルタの強度に関係する。1実施例では、フィルタの強度(1/s)は、0から1の間の値をとる。フィルタの強度(1/s)が0のとき、すなわちs→ ∞ のとき、レスポンスHsは一定の値=1になる。このことは、フィルタリングされていないこと(DCT係数は変化しないこと)を意味する。フィルタの強度(1/s)が大きい値、s=1とき、Hsは、ωx =ωy =0、のときを除いて、どこでも一定値=0となる。このような極限の場合では、フィルタの適用は、水平方向と垂直方向の両方向での8因子によるビデオ画像のサンプリングを低下させる。
フィルタの形は強度パラメータとともに変化する。ここに説明した例では、強度(1/s)が1/32(弱)、1/16(中)、1/8(強)に対応して記載する。表3,表4,表5に、いろいろな強度での形の一例を示す。表3,表4,表5に対応するフィルタのグラフを図14,15,16にそれぞれ示す。熟練した実務者による多くの変形は可能である。フィルタの変形と強度の変形が可能である。また、多くの異なったフィルタの変形ができる。例えば、他の例では、3つ以上あるいは以下の異なったフィルタがある。
表3,表4,表5では、DC DCT係数(ωx =0とωy =0)は、左上にある。水平周波数変数ωx は、右方向に増加し、垂直周波数変数ωyは、下方向に増加する。他の強度と形は、通常の知識をもつ技術者により決められる。
ここに示した例では、フィルタの重みは、最高周波数DCT係数の位置AC(7,7)での3つのフィルタ強度に対し、それぞれ9/16(18/32)(弱)、1/8(2/16)(中)、0(強)の値を使い、一方、DCの位置(0,0)では、1の値を維持する。フィルタは、DC係数が変化しないように決められる。他のDCT係数に対するフィルタ値は、面上のポイントに配置される。したがって、フィルタ強度が高くなるにしたがって、傾斜が急になる。勿論、通常の知識をもつ技術者により、他の変形が決められ、カーブの形も決められる。
1実施例では、変数sは(1/8,1/16,1/32)のような2の冪数が選ばれる。したがって、割り算は複雑な操作をしなくても、ビットをシフトするだけで効果的に達成できる。しかし、フィルタの強度は、0から1の正の値をとる。さらに、多くの汎用プロセッサは、2進シフトを使っての多変数乗算と除算ができるようにサポートしており、例えば、図6で述べたように、マルチメディアエクステンション(MMX)インストラクションセット、あるいは、シングルインストラクションマルチプルデータ(SIMD)のようなプロセッササポートしている。この2の冪数を使うことは、これらのおよび同様の構成での設定全体を単純化し、ビデオエンコーディングの速度を高め、リアルタイムで処理できるようにしている。例えば、フィルタリングプロセスは、無視できるほどの少ないオーバーヘッドで設定でき、1実施例では、約1%であった。
図13で詳細に述べるように、DCTフィルタリングは、ビデオシーケンス全体に適用でき、画像の場合、マクロブロックの場合、それらの結合した場合に、適応できる。ローパスフィルタも適用でき、例えば、専用ハードウエアのエンコーダにも適用できるが、フィルタの応答をローパスの効果をなくすように選ぶこともできる。DCTフィルタリングを適用するには多くの因子があり、DCTフィルタリングの強度が適用される。1実施例では、既に典型的に計算された公式の変数が、プロセッサの付加的オーバーヘッドおよび/またはハードウエアの付加的回路が少なくなるように決められる。例えば、1実施例では、DCTフィルタリングは、次の2つのパラメータの振る舞いを見て選ばれる。すなわち、VBVバッファーモデル占有率と今のフレームの実行中のQPの平均値である。VBVバッファーモデルは図7に詳細に記載した。VBVバッファーモデルあるいは同様のバッファーモデルの理論的占有率レベルは、MPEGビデオエンコーダのようなビデオエンコーダにより、既に支持されている。
実行中のQPの平均値もまた、既に典型的に計算された公式の変数が、ビデオエンコーダに支持されている。実行中のQPの平均値を計算するのに多くの変形があり、例えば、平均値を計算するのにどれだけのサンプルを使うか、平均を求めるときの重みは一定でないかどうかなどがあり、多くのビデオエンコーダは、ビデオの質をモニタするために、QPの平均値を追跡している。実行中のQPの平均値が比較的高い、例えばQPの上端に近い値、すなわち31に近い値では、かたまり感がある画像のような画質となる。それに対し、実行中のQPの平均値が、1のような下端に近い値では、かたまり感がなく、高画質のエンコーディングとなる。1実施例では、実行中のQPの平均値を計算するのに使われる画像の数(N)は、2から30の範囲である。
1実施例では、VBVバッファーモデルの状態と実行中のQPの平均値に応じて、(a)DCTフィルタリングと低いQPの値を使う、(b)DCTフィルタリングは行わないで、高いQPの値を使う、ことの間でのトレードオフになる。(b)が普通のエンコーディング技術に対応する。
1実施例では、エンコーダがDCTフィルタリングを適用するとき、フィルタリング強度と大きさを決めるための決定がなされる。熟練した実務者によって、エンコーダによって選ぶことができるフィルタリング強度は、例えば、2,3,4あるいはもっと大きな強度の広い範囲で変えることが出来る。表3,表4,表5に示された例では、対応するフィルタ係数マトリックスで、エンコーダは3つの強度(1/32=弱、1/16=中、1/8=強)の間で選択している。フィルタ強度については、多くの変形が可能である。
フィルタ係数のもう1つの例では、表6,表7,表8に示すように、フィルタの周波数応答を調節することにより、フィルタリングの総量を変えるころができる。フィルタリングの総量は、たとえ、フィルタの強度(1/s)が同じであっても、変えることが出来る。表6,表7,表8に記載されたフィルタの応答において、フィルタの強度(1/s)は、それぞれのフィルタで1/16である。
フィルタリング操作は、DCT係数と前にあげた係数との間の単純なスカラー積を意味する。多くのプロセッサは、多変数の積算並列にを行うインストラクションをサポートしている。SSEインストラクションセットまたはMMXインストラクションセットをサポートするプロセッサのインストラクションの例では、パックトマルチプライPMULがある。除算の操作は、因子が2の冪数である限り、ビットを右にシフトする操作に対応する。DCTフィルタリングを適応させて選ぶプロセスを説明する。
図13は、ビデオエンコーダにおけるDCTフィルタリングを適応させて選ぶプロセスの例を説明するフローチャートである。ここで示したプロセスは、熟練した実務者により、この発明の精神と範囲から逸脱しない範囲での種々の方法による変形が可能である。例えば、もう1つの実施例では、このプロセスのいろいろな部分を組み合わせたり、代わりのシーケンスで並べ替えたり、削除したりすることができる。
プロセスは、状態1302からスタートし、画像のエンコーディングに先駆けて更新されるVBVバッファーモデルの占有率レベルを修正する。バッファーモデルの占有率レベルは、エンコーディングプロセスで既に計算されている。プロセスは、占有率レベルが使われるまで、占有率レベルを修正する必要はないが、データの修正は、状態1302に明確に示されている。プロセスは、状態1302から状態1304に進む。
状態1304では、プロセスは、移動平均として知られている、実行中のQPの平均値を計算するか、あるいは修正する。1実施例では、実行中のQPの平均値は、存在する実行中のQPの平均値から再使用される。もう1つの実施例では、実行中のQPの平均値は分離して計算される。さらに、もう1つの実施例では、新しい実行中のQPの平均値は、存在する実行中のQPの平均値と現在実行中の平均値とから計算され、数式45で表されるような実行中のQPの平均値に重み付けを行う。
数式45では、QPrunは、システム状態変数から修正された実行中のQPの平均値に対応し、QPx_prevは、同じタイプ(I、P、またはB)の前の画像のQPに対応する。数式45の結果、QPx_avgは、選択された閾値、すなわちフィルタリングのQP閾値(QPflt_thrと表示)と比較して使われる。プロセスは、状態1304から判定ブロック1306に進む。
判定ブロック1306では、プロセスは、実行中のQPの平均値と予め定められた閾値とを比較する。1実施例では、QPflt_thrが選ばれる。QPflt_thrは、QPx_avgのようなQPの平均値に対応したビデオの質の閾値に対応する。QPx_avgは、ビデオでのかたまり感の現れ易さを示す。通常の知識をもつ技術者により、閾値は広く変えることができ、ビデオの分解能、フレームレート、ビットレートの束縛などの環境条件に依存して変えることができる。1実施例では、プロセスは、高分解能よりは低い分解能のビデオに対して小さな閾値を使う。1実施例では、プロセスは、VCDサイズのビデオ(352x240)またはそれより小さい分解能にたいして、QPflt_thr=6の閾値を使う。DVD、NTSC(720x480)、同様なサイズのビデオでは、QPflt_thr=14の閾値を使う。VCDのような、より小さな分解能のビデオでは、低分解能ビデオは高分解能ビデオよりも大きなピクセルを持つので、かたまり感に対して敏感である。他の値も使うことができ、異なったコーディング標準(MPEG4/H.264)または異なったフレームサイズやフレームレートにより、通常の知識をもつ技術者なら、他の値を決めることができる。
ここに示すプロセスでは、実行中のQPの平均値が閾値より大きい(QPx_avg>QPflt_thr)ときに、プロセスは、判定ブロック1306から状態1308に進む。その他の場合、プロセスは、判定ブロック1306から状態1312に進む。
状態1308では、プロセスは、状態1324における画像の全てのマクロブロックをフィルタリングするのに、判定ブロック1322に指示するためのフラグをセットする。プロセスの変形は可能で、もう1つの実施例では、実行中のQPの平均値が閾値より大きくなることの検出に応じて、全てのマクロブロックより少ないマクロブロックがフィルタリングされる。ここに示された実施例にもどると、実行中のQPの平均値が閾値より大きくなるのに応じて、全てのマクロブロックがフィルタリングされ、プロセスは、状態1308から状態1310に進む。
状態1310では、プロセスは、DCT係数に適用するフィルタ強度を選ぶ。前に述べたように、フィルタの効果は、フィルタの周波数応答とフィルタの強度(1/s)に従って変化する。ここに示すプロセスでは、状態1302で修正されたVBVバッファーモデル占有率レベルは、フィルタの強度を決めるために使われる。1実施例では、VBVバッファーモデル占有率レベルに対する初期と長期の目標値は、VBVバッファーモデルの容量の約7/8(vbv_buffer_sizeの7/8)のとき、次の基準がフィルタ強度を選ぶのに使われる。VBVバッファーモデルの容量の約7/8の目標はビデオエンコーダの代表的な目標である。基準は、広い範囲で変化し、エンコーダが選んだフィルタ強度の大きさに依存して変わり、VBVバッファーモデル占有率に対する異なった目標および/または閾値に基づいて変わる。
1実施例では、VBVバッファーモデル占有率が低くなるにしたがって、適用されるフィルタの強度が強くなる。1実施例では、VBVcurが現在の画像またはフレームのVBVバッファーモデル占有率を表すとき、フィルタ強度は次のように選ばれる。DCTフィルタリング強度は、(VBVcur>6/8*vbv_buffer_size)のとき、弱く設定される。6/8*vbv_buffer_sizeの閾値より低く、(VBVcur>3/8*vbv_buffer_size)ならば、DCTフィルタリング強度は、中くらいに設定される。3/8*vbv_buffer_sizeの閾値より低ければ、DCTフィルタリング強度は、強に設定される。プロセスは、状態1310から状態1320に進む。
判定ブロック1306に戻って、実行中のQPの平均値が閾値より小さいか等しい(QPx_avg≦QPflt_thr)とき、プロセスは、状態1312に進み、選択されたマクロブロックがフィルタリングされる。1実施例では、プロセスは、フィルタリングが選択されたマクロブロックに適用されるのを決めて、それは、表3で述べたような弱いフィルタリング強度である。プロセスは、状態1312から状態1320に進む。
状態1320では、プロセスは、マクロブロックに対する量子化パラメータを計算する。状態1320は、画像のマクロブロックを処理するためのループのスタートに対応する。量子化パラメータ(QP)を計算するには、いろいろな技術を使うことができる。1実施例では、QPは、MPEGからのTM5に記述されている標準的な技術を使って計算できる。もう1つの実施例では、図6で述べたQPの計算方法のような他の技術を使うことができる。TM5タイプのレートコントロールでは、特別なマクロブロック(MB)iの量子化パラメータ(QP)は、仮想バッファーステータスとマクロブロックの空間動作により決定される。もし、前のMBのビット割付が越えている、すなわち多すぎるビットが消費されているならば、TM5のレートコントロールは、高いQPの値を、続くマクロブロック(MB)に指定することにより、これを補償できる。
TM5タイプのレートコントロールは、「適応量子化」と呼ばれる方法を使っている。それは、平坦な領域(少ない模様)でのマクロブロックには比較的小さなQPを、模様が多い領域のマクロブロックには比較的大きなQPを指定する方法である。その結果、多くのマクロブロックに大きなQPが指定されることになり、視覚的に、かたまり感のような不快な表示になる。後で述べるように、1実施例では、かたまり感を減らすために、大きなQP値を減じるプロセスを示す。それは、DCTフィルタリングを行うことにより、VBVバッファーモデルの制限に従ってエンコディングプロセスでのビット消費を減らす方法である。プロセスは、状態1320から判定ブロック1322に進む。
判定ブロック1322では、プロセスは、全てのマクロブロックまたは選択されたマクロブロックにフィルタリング処理がされたかどうかを判断する。ここに示すプロセスでは、プロセスは、状態1308でセットされたフラグの状態をモニタしている。全てのマクロブロックがフィルタリング処理されると、プロセスは、判定ブロック1322から状態1324に進む。その他の場合、プロセスは、判定ブロック1322から判定ブロック1328に進む。
状態1324では、プロセスは、選ばれたDCTフィルタをDCT係数に適用する。データ中のゼロの数を増やすようなフィルタリングによって、ビット数が減少し、圧縮されるべきデータの数が減少する。例えば、ゼロを付加することは、連続的にゼロになる機会を増やし、ランレングスをコンパクトにできる。プロセスは、状態1324から状態1326に進む。
状態1326では、プロセスは、かたまり感を緩和するために、QP値に上限を設定する。かたまり感効果は、同じQP値を使っても、マクロブロック間(前、後、挿入などのモードを含む)よりも、マクロブロック内での処理に多く見られる。1実施例では、マクロブロック間に対してよりもマクロブロック内に対して、より小さなQP値に制限している。マクロブロック間に対する上限値とマクロブロック内に対する上限値は、それぞれQpintra_thrとQpinter_thrで表される。1実施例では、式46によるVBVバッファーモデルの占有率にしたがって、適応するように、限界値が選択された。
例えば、今のVBVバッファーモデル占有率レベルが、VBVバッファーモデルの容量の、約4/8と5/6の間にあれば、QPの上限値は、マクロブロック内とマクロブロック間に対して、それぞれ、14と20が選ばれる。通常の知識をもつ技術者により、QPの他の上限値、すなわち、Qpintra_thrとQpinter_thrに対する他の値が選ばれても良い。上限値として、状態1320で計算されたQPが適用される。状態1320で計算されたQPが、与えられた上限値(Qpintra_thrとQpinter_thr)より大きいとき、関連したQPの上限値が使われる。プロセスは、状態1326から状態1330に進み、マクロブロックがエンコードされる。
判定ブロック1328に戻る。プロセスのこの時点では、状態1324でのDCTフィルタリングの適用と状態1326でのQPの調整を、その場合に応じて、マクロブロックに対して行うことを決めた。1実施例では、プロセスは、判定ブロック1328から、DCTフィルタリングを行う状態1324に進み、実行中のQPが式46で述べた閾値を超えたときに、QP値を調整するプロセスに進む。実行中のQPが閾値を超えていないときには、DCTフィルタリングを適用しないし、QP値も調整しないで、状態1330に進む。
状態1330では、プロセスは、マクロブロックをエンコードする。エンコーディングは、判定ブロック1328から状態1330に入り、フィルタリングされていない場合と、状態1326から状態1330に入り、フィルタリングされている場合とがある。プロセスは、状態1330から判定ブロック1332に進む。
判定ブロック1332では、プロセスは、画像における全てのマクロブロックのエンコーディングが終了したかどうかを判断する。エンコードされるべきマクロブロックが残っているときには、プロセスは、状態1320に戻り、処理を継続する。その他の場合は、プロセスはエンドになり、続くフレームのエンコーディングを再スタートさせる。
(マクロブロックモードの決定)
図17は、マクロブロックのモードを選択するプロセスを説明するフローチャートである。普通のビデオエンコーディング技術では、マクロブロックのエンコーディングモードの決定が不適切である。この発明による1実施例では、モード決定に、動きのベクトルに対するコーディングコストを含み、モード選択の質を高めているのが優れているところである。さらに、1実施例では、その決定にL1基準を使い、モード決定において、動きのベクトルに対するコーディングコストがかかる計算の複雑さを低減している。
状態1710では、プロセスは、動きの探索を行う。あるマクロブロックに対する適切なコーディングモードを決めるために、普通のエンコーダは二乗和を計算するが、それは、L2基準として知られており、マクロブロックのそれぞれのコーディングモード(動きの補償、ゼロ動きベクトル、フィールド間の動きの補償など)に対する動きの探索後の残留エラーに対する評価値である。その二乗和は、もとのピクセルの値の二乗和と比較される。普通のシステムでは、二乗和の最小値が適切なコーディングモードであることを示す。
二乗和の計算の1つの欠点は、計算費用がかかり、エンコーディングプロセスが遅くなることである。例えば、このタイプのモード決定では、二乗和の計算が、MPEGによる圧縮のエンコーディングの複雑さを全体で約10%も増やしている。
状態1720では、プロセスは、動き探索に対する偏差の絶対値の総和(SAD)のデータを計算または修正する。この発明の1実施例では、L1基準として知られているが、残留エラーの絶対値の総和がモード決定の評価値として使われる。さらに、残留エラーの絶対値の総和は、予測のための最適なマクロブロック候補を決めるのに、動き探索を行いっている間に使われる絶対値の総和(SAD)に、実際上等しくなっている。したがって、もとのピクセルのL1基準を除けば、残留エラーのL1基準は、追加の計算をすることなしに適用される。L1基準による計算は、L2基準による計算に比べて、非常に単純で、少ないCPUサイクルで行うことができる。それは、L1基準による計算には乗算がないからである。さらに、選択されたプロセッサは、図6で述べたように、有用なインストラクションを直接にサポートしている。
モード決定に対する通常の取り組みのもう1つの欠点は、純粋に、歪みの評価値により決定されること、すなわち、歪みが最低になるようにモードを決定することである。しかし、それぞれのモードは、消費されるビットの部分とは等しくない。例えば、動きベクトルがないマクロブロックのモードは、他のモードよりも、非常に小さくできる。その結果、通常の取り組みで選ばれたモードは、費やされるビットあたりの歪みを小さくすることができない。
多くの場合、より少ない動きベクトルを持つ(DMV)あるいは、動きベクトルがない(DMVの値が、動きベクトルをコーディングするのに使われるビットを決める)少し大きめの歪みをもつモードが、最低の歪みを示すモードよりもよい動作をする。DMVの例として、あるMBに対する動きベクトル(MV)が(4,3)で、このMBの予測したMVが(3,6)であるとき、DMVは(4−3,3−6)=(1,−3)である。この場合、SADで変形されたDMVは、|1|+|−3|=4である。
状態1730では、プロセスは、SADORGをSADMODに調整して、SADの計算における動きベクトルに対するコーディングコストを補償する。1実施例では、DMVのレートと関連する歪みの両方を考慮して、簡単な決定ルールを使う。1実施例では、決定ルールは画像と動き補償(MC)のタイプに関連しており、画像がB−画像またはP−画像かどうか、画像がフィールド予測またはフレーム予測を使っているかどうか(インタレースと漸進方式のビデオの双方で)にしたがって、決定ルールが選ばれる。ハーフピクセルの単位で表されるDMVの実際の値は、この目的に使用される。2つの要素(水平と垂直)の絶対値の総和は、決定ルールのための以下の公式で使用される。
1実施例では、DMVに伴うコストは、等価なSADに移される。様々なモードのSADが適切に比較される。1実施例では、様々なモードのDMVが最初計算され、続いて様々なモードのDMVで変形されたSADが計算され、次に、これらの変形されたSADがモード決定に使われる。例えば、P−画像に対して、ルール1と定めた次のルールが使われる。通常の知識をもつ技術者には、ここで述べた原理と利点を組み合わせて他のルールを決めることができるであろう。
以下の公式では、SADmodがDMVからの変形後のSAD値に対応し、モード決定に使われる。ここで、SADorgは動きの評価から得られるSAD値である。以下に示すルールは、L2基準による計算を適応させて変形されている。
(P−画像―漸進シーケンス)
マクロブロック(MB)に対し、3つのタイプのうち1つでエンコードされる。すなわち、Intra、Inter_No_MC、Inter_MC でルール1と定める。
A.Inter_MC SADは変形:
B.Inter_No_MCは原型:
C.Intra MBは変形:
(Pフレーム−インタレースシーケンス)
マクロブロック(MB)に対し、4つのタイプのうち1つでエンコードされる。すなわち、Intra、Inter_No_MC、Inter_MC_frame、Inter_MC_field Inter_MC_fieldモードは、対応する2つのDMVがあり、2つの動きベクトルを使う。これをルール2と定める。
A.Inter_MC_frame SADは変形:
B.Inter_MC_field SADは変形:
C.Inter_No_MCは原型:
D.Intra MBは変形:
(Bフレーム−漸進シーケンス)
マクロブロック(MB)に対し、4つのタイプのうち1つでエンコードされる。すなわち、Intra、forward、backward、interpolated で、これをルール3と定める。
A.Forward SADは変形:
B.Backward SADは変形:
C.Interpolated SADは変形:
D.Intra MBは変形:
(Bフレーム−インタレースシーケンス)
マクロブロック(MB)に対し、7つのタイプのうち1つでエンコードされる。すなわち、Intra、forward、forward_field、backward、backward_field、interpolated、interpolated_field である。
A.SADのforwardモードは変形:
B.SADのforward fieldモードは変形(2つの動きベクトルを使用):
C.SADのbackwardモードは変形:
D.SADのbackward fieldモードは変形(2つの動きベクトルを使用):
E.SADのinterpolated frameモードは変形(2つの動きベクトルを使用):
F.SADのinterpolated fieldモードは変形(2つの動きベクトルを使用):
G.Intra MBは変形:
状態1740では、プロセスは、マクロブロックに対するモードを選択する。SADの計算が適切なルールで変換および比較された後で、このプロセスでの実施例は、変換後に最小のSAD値となるモードを選択する。実験の結果、コーディングモードの決定に、L1基準とその変形を使うのが、PSNP(ピーク信号対ノイズレシオ)で平均0.4dBの大幅な質の改善を示したL2基準を使っての伝統的なモードの決定よりも良好に動作した。さらに、L2基準よりもL1基準を使うことで、処理速度も速くなるという質の改善もできる。
図18は、マクロブロックに対するモードを選択するプロセスを説明するもう1つのフローチャートである。状態1802では、フレームまたは画像に対して動きの評価を行う。動きの評価は、動きベクトルの偏差を計算するために、状態1804に提供され、SADの計算を調整するために、状態1810に提供される。状態1804では、動きベクトルの偏差が計算される。動きベクトルの偏差は、その前の動きベクトルに依存し、そのデータは状態1806から提供される。状態1808では、変換されたSAD値が計算される。状態1812では、変換されたSAD値が比較され、マクロブロックに対するモードが選択される。1実施例では、選択されたモードは、全体でSADが最小になるモードに対応する。選択されたモードは状態1814で格納される。状態1816を経て、追加のマクロブロックが処理される。
この発明の種々の実施例を上に述べてきた。この発明は、これらの特別な例を参照して説明されているが、発明の説明に適当な記述になっており、これにより何ら制限されるものではない。熟練した技術者により、この発明の精神と請求範囲で定めた範囲を逸脱しない範囲での様々な変形や応用が可能である。
画像のシーケンスの例を説明する図である。 この発明が使われるエンコーディング環境の例を説明する図である。 デコーダバッファーを含んだデコーディング環境の例を説明する図である。 エンコーダ、デコーダ、データバッファー、一定ビットレートデータチャンネルの関係を説明するブロックダイグラムである。 データが一定ビットレートでバッファーに送られ、可変ビットレートで、デコーダにより費やされるとして、バッファー占有率を時間軸で説明する図である。 図6Bとともに、ビデオエンコーダにおけるレートコントロルと量子化コントロールを説明する図である。 図6Aとともに、ビデオエンコーダにおけるレートコントロルと量子化コントロールを説明する図である。 仮想バッファーの占有率レベルについて、少なくとも1部分を基に、目標ビット割付を調整するプロセスを説明するフローチャートである。 従来技術による、マクロブロック処理のシーケンスを説明するフローチャートである。 この発明の1実施例による、マクロブロック処理のシーケンスを説明するフローチャートである。 ビットスタッフィングの削減効果からエンコーディングプロセスを安定化させるためのプロセスを説明するフローチャートである。 最終バッファー占有率レベルにおける不整合を検出して、仮想バッファーの占有率レベルを設定するためのプロセスを説明するフローチャートである。 画像グループ(GOP)の例の説明図である。 画像グループ(GOP)の中で、シーン変化を検出したとき、エンコーディングパラメータを再設定するプロセスを説明するフローチャートである。 デコーダバッファーアンダーランの発生を低減または回避するため、ビデオエンコーダにおける、データの選択的なスキッピングのためのプロセスを説明するフローチャートである。 選択的なDCTフィルタリングのプロセスを説明するフローチャートである。 図13Bとともに、ビデオエンコーダにおける適応したDCTフィルタリングの選択のための例を説明するフローチャートである。 図13Aとともに、ビデオエンコーダにおける適応したDCTフィルタリングの選択のための例を説明するフローチャートである。 強度1/32で、8x8のイメージブロックに対するローパスフィルタの例を示すグラフである。 強度1/16で、8x8のイメージブロックに対するローパスフィルタの例を示すグラフである。 強度1/8で、8x8のイメージブロックに対するローパスフィルタの例を示すグラフである。 マクロブロックに対してモードを選択するプロセスを説明するフローチャートである。 マクロブロックに対してモードを選択するプロセスを説明する他のフローチャートである。
符号の説明
102 画像の列
104 画像グループ
106 最初の画像
202 エンコードされていないビデオソース
204 エンコーダ
206 サーバ
208 マス格納器
210 DVD編集可能なDVD
212 アップリング
214 サテライト
216 インターネット
302 アンテナ
304 DVDプレーヤー
306 テレビ受像器
308 パソコン
310 ラップトップパソコン
312 携帯電話機
402 エンコーダ
404 エンコーダバッファー
406 デコーダ
408 デコーダバッファー
410 一定ビットレートデータチャンネル

Claims (25)

  1. 効果的にビデオを圧縮する方法であって、
    周波数ドメインにおいてマクロブロックのDCT係数を選択的にローパスフィルタリングし、
    ローパスフィルタリングしたDCT係数を量子化すること
    を含むことを特徴とするビデオを圧縮する方法。
  2. ローパスフィルタリングしたDCT係数を量子化するのに使われる量子化パラメータ(QP)の値を、計算されたQPが予め定められたレベルを上回ると低くするように予め定められたレベルに選択的に制限することを含むことを特徴とする請求項1に記載のビデオを圧縮する方法。
  3. バッファーモデルの占有率レベルに応じて、少なくとも部分的に選択的なローパスフィルタリングが実行されることを特徴とする請求項1に記載のビデオを圧縮する方法。
  4. バッファーモデルがVBVバッファーモデルであることを特徴とする請求項3に記載のビデオを圧縮する方法。
  5. 実行中のQPの平均値と閾値との比較値に応じて、少なくとも部分的に選択的なローパスフィルタリングが実行されることを特徴とする請求項1に記載のビデオを圧縮する方法。
  6. 実行中のQPの平均値と閾値との比較値に応じて、画像の全てのマクロブロックのDCT係数を選択的にローパスフィルタリングすることを含むことを特徴とする請求項1に記載のビデオを圧縮する方法。
  7. バッファーモデルの占有率レベルに応じて、DCT係数のフィルタリング総数を調整することを含むことを特徴とする請求項6に記載のビデオを圧縮する方法。
  8. 実行中のQPの平均値と閾値との比較値に応じて、画像の全てのマクロブロックまたは選択されたマクロブロックをフィルタリングしたかどうかを判断し、
    全てのマクロブロックがフィルタリングされているときは、
    バッファーモデルの占有率レベルに応じて、フィルタリング強度を適応するように選択し、
    画像の全てのマクロブロックにローパスフィルタリングとDCT係数を量子化するのに使われるQPの値を制限することを適用すること
    を含むことを特徴とする請求項1に記載のビデオを圧縮する方法。
  9. 実行中のQPの平均値と閾値との比較値に応じて、画像の全てのマクロブロックまたは選択されたマクロブロックをフィルタリングしたかどうかを判断し、
    選択されたマクロブロックがフィルタリングされているときは、
    マクロブロックに対するQPの値と閾値との間の比較値に応じて、ローパスフィルタリングを選択的に適用することと、DCT係数を量子化するのに使われるQP値を制限すること
    とを含むことを特徴とする請求項1に記載のビデオを圧縮する方法。
  10. 選択されたマクロブロック固定化されているのに対してローパスフィルタリングを適用することを特徴とする請求項9に記載のビデオを圧縮する方法。
  11. バッファーモデルの占有率レベルに応じて、マクロブロックに対するQPの値と閾値との間の比較に使われる閾値を適応させて調整することを含むことを特徴とする請求項9に記載のビデオを圧縮する方法。
  12. 発生したビットの流れに対応する量子化テーブルの提供を必要としないようなビデオデコーダに明白な方法でDCT係数のローパスフィルタリングが生じることを特徴とする請求項1に記載のビデオを圧縮する方法。
  13. 効果的にビデオを圧縮するビデオエンコーダであって、
    周波数ドメインにおいてマクロブロックのDCT係数を選択的にローパスフィルタリングする手段と、
    ローパスフィルタリングしたDCT係数を量子化する手段
    を含むことを特徴とするビデオを圧縮するビデオエンコーダ。
  14. ローパスフィルタリングしたDCT係数を量子化するのに使われる量子化パラメータ(QP)の値を、計算されたQPが予め定められたレベルを上回ると低くするように予め定められたレベルに選択的に制限する手段を含むことを特徴とする請求項13に記載のビデオを圧縮するビデオエンコーダ。
  15. バッファーモデルの占有率レベルに応じて、少なくとも部分的に選択的なローパスフィルタリングが実行される手段を含むことを特徴とする請求項13に記載のビデオを圧縮するビデオエンコーダ。
  16. 実行中のQPの平均値と閾値との比較値に応じて、画像の全てのマクロブロックのDCT係数を選択的にローパスフィルタリングする手段を含むことを含むことを特徴とする請求項13に記載のビデオを圧縮するビデオエンコーダ。
  17. 実用メディアで具体化されているコンピュータプログラムであって、
    周波数ドメインにおいてマクロブロックのDCT係数を選択的にローパスフィルタリングするインストラクションを持つモジュールと
    ローパスフィルタリングしたDCT係数を量子化するインストラクションを持つモジュールと
    を含むことを特徴とするコンピュータプログラム。
  18. ローパスフィルタリングしたDCT係数を量子化するのに使われる量子化パラメータ(QP)の値を、計算されたQPが予め定められたレベルを上回ると低くするように予め定められたレベルに選択的に制限するインストラクションを持つモジュールを含むことを特徴とする請求項17に記載のコンピュータプログラム。
  19. バッファーモデルの占有率レベルに応じて、少なくとも部分的に選択的なローパスフィルタリングが実行されるインストラクションを持つモジュールを含むことを特徴とする請求項17に記載のコンピュータプログラム。
  20. 実行中のQPの平均値と閾値との比較値に応じて、画像の全てのマクロブロックのDCT係数を選択的にローパスフィルタリングするインストラクションを持つモジュールを含むことを特徴とする請求項17に記載のコンピュータプログラム。
  21. ビデオをエンコーディングする回路であって、
    周波数ドメインにおいてマクロブロックのDCT係数を選択的にローパスフィルタリングする構成の回路と、
    ローパスフィルタリングしたDCT係数を量子化する構成の回路と
    を含むことを特徴とするビデオをエンコーディングする回路。
  22. ローパスフィルタリングしたDCT係数を量子化するのに使われる量子化パラメータ(QP)の値を、計算されたQPが予め定められたレベルを上回ると低くするように予め定められたレベルに選択的に制限するように構成された回路を含むことを特徴とする請求項21に記載のビデオをエンコーディングする回路。
  23. バッファーモデルの占有率レベルに応じて、少なくとも部分的に選択的なローパスフィルタリングが実行されるように構成された回路を含むことを特徴とする請求項21に記載のビデオをエンコーディングする回路。
  24. 実行中のQPの平均値と閾値との比較値に応じて、画像の全てのマクロブロックのDCT係数を選択的にローパスフィルタリングするように構成された回路を含むことを特徴とする請求項21に記載のビデオをエンコーディングする回路。
  25. 請求項21に記載されたビデオをエンコーディングする回路を備えたビデオエンコーダ。
JP2004235008A 2003-08-14 2004-08-12 ビデオエンコーダにおける離散的余弦変換係数に適応したフィルタリングの方法およびシステム Pending JP2005102170A (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US10/642,107 US20040252758A1 (en) 2002-08-14 2003-08-14 Systems and methods for adaptively filtering discrete cosine transform (DCT) coefficients in a video encoder

Publications (1)

Publication Number Publication Date
JP2005102170A true JP2005102170A (ja) 2005-04-14

Family

ID=34136530

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004235008A Pending JP2005102170A (ja) 2003-08-14 2004-08-12 ビデオエンコーダにおける離散的余弦変換係数に適応したフィルタリングの方法およびシステム

Country Status (4)

Country Link
US (1) US20040252758A1 (ja)
EP (1) EP1515564A3 (ja)
JP (1) JP2005102170A (ja)
CN (1) CN100546383C (ja)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007124580A (ja) * 2005-10-31 2007-05-17 Fujitsu Ltd 動画像符号化プログラム、プログラム記憶媒体、および符号化装置。
WO2009034695A1 (ja) * 2007-09-10 2009-03-19 Panasonic Corporation 画像符号化装置及び画像符号化方法
JPWO2008111454A1 (ja) * 2007-03-14 2010-06-24 日本電信電話株式会社 量子化制御方法及び装置、そのプログラム並びにプログラムを記録した記録媒体
WO2011121894A1 (ja) * 2010-03-31 2011-10-06 三菱電機株式会社 画像符号化装置、画像復号装置、画像符号化方法及び画像復号方法
US8265142B2 (en) 2007-03-14 2012-09-11 Nippon Telegraph And Telephone Corporation Encoding bit-rate control method and apparatus, program therefor, and storage medium which stores the program
US8396130B2 (en) 2007-03-14 2013-03-12 Nippon Telegraph And Telephone Corporation Motion vector search method and apparatus, program therefor, and storage medium which stores the program
US9455739B2 (en) 2007-03-14 2016-09-27 Nippon Telegraph And Telephone Corporation Code amount estimating method and apparatus, and program and storage medium therefor

Families Citing this family (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
BRPI0303901B1 (pt) * 2002-07-11 2018-03-06 Godo Kaisha Ip Bridge 1 “Método de determinação de poder de filtragem para determinar um poder de filtragem para remover uma distorção de codificação entre blocos que constituem uma imagem, método de decodificação de imagem móvel para decodificar os dados de imagem móvel codificados, aparelho de determinação de poder de filtragem, e aparelho de codificação de imagem móvel”
KR100561394B1 (ko) * 2002-12-30 2006-03-16 삼성전자주식회사 영상 부호화 시 부호화 모드 결정 및 관리 장치와 그 방법
EP1599043A4 (en) * 2003-02-04 2011-08-10 Panasonic Corp CODING METHOD AND DEVICE THEREFOR
US8018850B2 (en) * 2004-02-23 2011-09-13 Sharp Laboratories Of America, Inc. Wireless video transmission system
JP4902358B2 (ja) * 2004-12-02 2012-03-21 ソニー株式会社 符号化装置および方法、並びにプログラム
US20060285590A1 (en) * 2005-06-21 2006-12-21 Docomo Communications Laboratories Usa, Inc. Nonlinear, prediction filter for hybrid video compression
US7933294B2 (en) 2005-07-20 2011-04-26 Vidyo, Inc. System and method for low-delay, interactive communication using multiple TCP connections and scalable coding
CA2615346C (en) * 2005-07-20 2013-01-29 Vidyo, Inc. System and method for scalable and low-delay videoconferencing using scalable video coding
US8289370B2 (en) * 2005-07-20 2012-10-16 Vidyo, Inc. System and method for scalable and low-delay videoconferencing using scalable video coding
EP1952631A4 (en) * 2005-09-07 2012-11-21 Vidyo Inc SYSTEM AND METHOD FOR SCALABLE AND DECELERATING VIDEO CONFERENCES WITH SCALABLE VIDEO CODING
CN101507267B (zh) * 2005-09-07 2011-09-14 维德约股份有限公司 用于使用可缩放视频编码进行可缩放和低延迟视频会议的***和方法
US8644386B2 (en) * 2005-09-22 2014-02-04 Samsung Electronics Co., Ltd. Method of estimating disparity vector, and method and apparatus for encoding and decoding multi-view moving picture using the disparity vector estimation method
SG130982A1 (en) * 2005-10-04 2007-04-26 St Microelectronics Asia Macro-block quantization reactivity compensation
KR100723507B1 (ko) * 2005-10-12 2007-05-30 삼성전자주식회사 I-프레임 움직임 예측을 이용한 동영상 압축 장치의 적응양자화 제어기 및 적응 양자화 제어 방법
US7734053B2 (en) * 2005-12-06 2010-06-08 Fujitsu Limited Encoding apparatus, encoding method, and computer product
JP4666255B2 (ja) * 2005-12-27 2011-04-06 日本電気株式会社 符号化データ選定、符号化データ設定、再符号化データ生成及び再符号化の方法及び装置
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
US8542726B2 (en) 2006-10-17 2013-09-24 Microsoft Corporation Directional and motion-compensated discrete cosine transformation
US8059902B2 (en) * 2006-10-31 2011-11-15 Ntt Docomo, Inc. Spatial sparsity induced temporal prediction for video compression
EP2123040B1 (en) 2006-12-12 2017-12-06 Vantrix Corporation An improved video rate control for video coding standards
US8824546B2 (en) * 2007-06-19 2014-09-02 Vantrix Corporation Buffer based rate control in video coding
JP5427785B2 (ja) * 2007-09-28 2014-02-26 ドルビー ラボラトリーズ ライセンシング コーポレイション ビデオ圧縮技法及びビデオ伝達技法
US8111757B2 (en) * 2007-09-28 2012-02-07 Motorola Mobility, Inc. Method and apparatus for video signal processing
EP2524504A1 (en) * 2010-01-14 2012-11-21 Dolby Laboratories Licensing Corporation Buffered adaptive filters
CA2798012A1 (en) 2010-05-07 2011-11-10 Nippon Telegraph And Telephone Corporation Video encoding to prevent decoder buffer underflow by re-encoding selected pictures in a video sequence using a retry count or a retry point
US9179149B2 (en) 2010-05-12 2015-11-03 Nippon Telegraph And Telephone Corporation Video encoding control method, video encoding apparatus, and video encoding program
CN103430458B (zh) 2011-03-10 2016-03-02 维德约股份有限公司 可伸缩视频编码的依存参数集
US20130016776A1 (en) * 2011-07-12 2013-01-17 Vidyo Inc. Scalable Video Coding Using Multiple Coding Technologies
US9426494B2 (en) * 2011-07-18 2016-08-23 Ziilabs Inc., Ltd. Systems and methods with early variance measure used to optimize video encoding
EP2751997B1 (en) * 2011-08-31 2018-06-06 Mediatek Inc. Method and apparatus for adaptive loop filter with constrained filter coefficients
US9313486B2 (en) 2012-06-20 2016-04-12 Vidyo, Inc. Hybrid video coding techniques
US9936203B2 (en) * 2015-04-13 2018-04-03 Qualcomm Incorporated Complex region detection for display stream compression
CN109413427B (zh) * 2017-08-17 2022-04-08 腾讯科技(深圳)有限公司 一种视频帧编码方法及终端
WO2020009618A1 (en) * 2018-07-02 2020-01-09 Huawei Technologies Co., Ltd. Apparatus and method for filtering in video coding
CN110876060B (zh) * 2018-08-31 2022-07-15 网宿科技股份有限公司 一种编码过程中的码率调整方法及装置
WO2020139169A1 (en) * 2018-12-28 2020-07-02 Huawei Technologies Co., Ltd. Method and apparatus of sharpening interpolation filtering for predictive coding
US11403783B2 (en) 2019-11-14 2022-08-02 Alibaba Group Holding Limited Techniques to dynamically gate encoded image components for artificial intelligence tasks
US11170260B2 (en) 2019-11-14 2021-11-09 Alibaba Group Holding Limited Techniques for determining importance of encoded image components for artificial intelligence tasks
US11366979B2 (en) 2019-11-14 2022-06-21 Alibaba Group Holding Limited Using selected components of frequency domain image data in artificial intelligence tasks
CN111161234B (zh) * 2019-12-25 2023-02-28 北京航天控制仪器研究所 一种离散余弦变换测量基排序方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03256452A (ja) * 1990-03-07 1991-11-15 Ricoh Co Ltd 画像データ処理方式
JP2001128176A (ja) * 1999-10-28 2001-05-11 Asahi Optical Co Ltd 画像圧縮および伸張装置

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE3613343A1 (de) * 1986-04-19 1987-10-22 Philips Patentverwaltung Hybrid-codierer
US5200820A (en) * 1991-04-26 1993-04-06 Bell Communications Research, Inc. Block-matching motion estimator for video coder
US6026190A (en) * 1994-10-31 2000-02-15 Intel Corporation Image signal encoding with variable low-pass filter
US5686963A (en) * 1995-12-26 1997-11-11 C-Cube Microsystems Method for performing rate control in a video encoder which provides a bit budget for each frame while employing virtual buffers and virtual buffer verifiers
US6678332B1 (en) * 2000-01-04 2004-01-13 Emc Corporation Seamless splicing of encoded MPEG video and audio
JP2001275110A (ja) * 2000-03-24 2001-10-05 Matsushita Electric Ind Co Ltd 動的なループ及びポストフィルタリングのための方法及び装置
US6763070B1 (en) * 2001-05-29 2004-07-13 Cisco Technology, Inc. Methods and apparatus for selecting a cut-off index

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH03256452A (ja) * 1990-03-07 1991-11-15 Ricoh Co Ltd 画像データ処理方式
JP2001128176A (ja) * 1999-10-28 2001-05-11 Asahi Optical Co Ltd 画像圧縮および伸張装置

Cited By (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4644097B2 (ja) * 2005-10-31 2011-03-02 富士通セミコンダクター株式会社 動画像符号化プログラム、プログラム記憶媒体、および符号化装置。
JP2007124580A (ja) * 2005-10-31 2007-05-17 Fujitsu Ltd 動画像符号化プログラム、プログラム記憶媒体、および符号化装置。
US9161042B2 (en) 2007-03-14 2015-10-13 Nippon Telegraph And Telephone Corporation Quantization control method and apparatus, program therefor, and storage medium which stores the program
JPWO2008111454A1 (ja) * 2007-03-14 2010-06-24 日本電信電話株式会社 量子化制御方法及び装置、そのプログラム並びにプログラムを記録した記録媒体
US9455739B2 (en) 2007-03-14 2016-09-27 Nippon Telegraph And Telephone Corporation Code amount estimating method and apparatus, and program and storage medium therefor
US8265142B2 (en) 2007-03-14 2012-09-11 Nippon Telegraph And Telephone Corporation Encoding bit-rate control method and apparatus, program therefor, and storage medium which stores the program
US8396130B2 (en) 2007-03-14 2013-03-12 Nippon Telegraph And Telephone Corporation Motion vector search method and apparatus, program therefor, and storage medium which stores the program
JP5197574B2 (ja) * 2007-03-14 2013-05-15 日本電信電話株式会社 量子化制御方法及び装置、そのプログラム並びにプログラムを記録した記録媒体
WO2009034695A1 (ja) * 2007-09-10 2009-03-19 Panasonic Corporation 画像符号化装置及び画像符号化方法
CN102823250A (zh) * 2010-03-31 2012-12-12 三菱电机株式会社 图像编码装置、图像解码装置、图像编码方法以及图像解码方法
KR101420957B1 (ko) * 2010-03-31 2014-07-30 미쓰비시덴키 가부시키가이샤 화상 부호화 장치, 화상 복호 장치, 화상 부호화 방법 및 화상 복호 방법
US8948243B2 (en) 2010-03-31 2015-02-03 Mitsubishi Electric Corporation Image encoding device, image decoding device, image encoding method, and image decoding method
CN102823250B (zh) * 2010-03-31 2015-08-19 三菱电机株式会社 图像编码装置、图像解码装置、图像编码方法以及图像解码方法
JPWO2011121894A1 (ja) * 2010-03-31 2013-07-04 三菱電機株式会社 画像符号化装置、画像復号装置、画像符号化方法及び画像復号方法
WO2011121894A1 (ja) * 2010-03-31 2011-10-06 三菱電機株式会社 画像符号化装置、画像復号装置、画像符号化方法及び画像復号方法

Also Published As

Publication number Publication date
EP1515564A3 (en) 2006-05-24
CN1617591A (zh) 2005-05-18
EP1515564A2 (en) 2005-03-16
CN100546383C (zh) 2009-09-30
US20040252758A1 (en) 2004-12-16

Similar Documents

Publication Publication Date Title
JP2005102170A (ja) ビデオエンコーダにおける離散的余弦変換係数に適応したフィルタリングの方法およびシステム
JP2005073245A (ja) ビデオエンコーダにおけるマクロブロックのエンコードモードを選択する方法、マイクロブロックをエンコードするモードを選択するために設計されるビデオエンコーダ、マクロブロックをエンコードするモードを選択するための命令を有するモジュールから成る有形の媒体に搭載されるコンピュータプログラム、およびマクロブロックのエンコーディングのモードを選択するために設計される回路
US7197072B1 (en) Systems and methods for resetting rate control state variables upon the detection of a scene change within a group of pictures
US7406124B1 (en) Systems and methods for allocating bits to macroblocks within a picture depending on the motion activity of macroblocks as calculated by an L1 norm of the residual signals of the macroblocks
EP1372113B1 (en) Variable bit rate video encoding method and device
US7301999B2 (en) Quantization method and system for video MPEG applications and computer program product therefor
US7653129B2 (en) Method and apparatus for providing intra coding frame bit budget
US20050084007A1 (en) Apparatus, system, and method for video encoder rate control
US6982762B1 (en) Sequence adaptive bit allocation for pictures encoding
JP4273207B2 (ja) ディジタルビデオデータを符号化又は復号化する方法及び装置
JP3960451B2 (ja) シーン特性検出型動画像符号化装置
US20090097546A1 (en) System and method for enhanced video communication using real-time scene-change detection for control of moving-picture encoding data rate
JP2001169281A (ja) 動画像符号化装置、および動画像符号化方法
KR19980018698A (ko) 영상 데이터 압축 장치 및 그의 방법
US5781237A (en) Video coding apparatus and video coding method
EP1077000A1 (en) Conditional masking for video encoder
US7388912B1 (en) Systems and methods for adjusting targeted bit allocation based on an occupancy level of a VBV buffer model
US20030174771A1 (en) Method, apparatus, and program for variable bit rate encoding
Bagni et al. A constant-quality, single-pass VBR control for DVD recorders
JP3149673B2 (ja) 映像符号化装置、映像符号化方法、映像再生装置及び光ディスク
US6498812B1 (en) Encoding block-organized data
JPH10108197A (ja) 画像符号化装置、画像符号化制御方法および画像符号化制御用プログラムを記録した媒体
JP2001008207A (ja) 動画像符号化装置及びその方法
KR20090037288A (ko) 동영상 부호화 데이터율 제어를 위한 실시간 장면 전환검출 방법, 이를 이용한 영상통화 품질 향상 방법, 및영상통화 시스템
JP4747109B2 (ja) 演算量調整装置

Legal Events

Date Code Title Description
A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20041220

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070808

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20090722

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20101108

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20110411