JP5648183B2 - 高い効率の動画符号化のためのコンテンツアダプティブ動き補償フィルタリング - Google Patents

高い効率の動画符号化のためのコンテンツアダプティブ動き補償フィルタリング Download PDF

Info

Publication number
JP5648183B2
JP5648183B2 JP2013544883A JP2013544883A JP5648183B2 JP 5648183 B2 JP5648183 B2 JP 5648183B2 JP 2013544883 A JP2013544883 A JP 2013544883A JP 2013544883 A JP2013544883 A JP 2013544883A JP 5648183 B2 JP5648183 B2 JP 5648183B2
Authority
JP
Japan
Prior art keywords
filter
motion compensation
codebook
sub
image
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.)
Active
Application number
JP2013544883A
Other languages
English (en)
Other versions
JP2014504098A (ja
Inventor
プーリ、アテュール
ソケック、ダニエル
チョイ、チャング−キイ
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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of JP2014504098A publication Critical patent/JP2014504098A/ja
Application granted granted Critical
Publication of JP5648183B2 publication Critical patent/JP5648183B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • H04N19/615Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding using motion compensated temporal filtering [MCTF]
    • 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
    • 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/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
    • 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
    • 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/46Embedding additional information in the video signal during the compression process
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/46Embedding additional information in the video signal during the compression process
    • H04N19/463Embedding additional information in the video signal during the compression process by compressing encoding parameters before transmission
    • 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/523Motion estimation or motion compensation with sub-pixel accuracy
    • 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/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
    • 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
    • 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/86Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression involving reduction of coding artifacts, e.g. of blockiness

Landscapes

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

Description

本開示は、動画信号の符号化および復号化に関し、より詳しくは、動き補償予測に利用するアダプティブフィルタの、コードブックを利用して行う符号化および復号化に関する。
デジタル画像、音声/オーディオ、グラフィック、および動画等のデジタルマルチメディアの登場によって、コンテンツの確実な格納、通信、送信、検索、およびアクセスが比較的簡単になり、様々なアプリケーションが顕著に向上して、かつ、新しいアプリケーションが作成された。一般的に、デジタルマルチメディアのアプリケーションは数多くあり、娯楽、情報、医療、および安全といった幅広い分野を網羅しており、いくつもの方法で社会に貢献してきた。カメラやマイクロフォン等のセンサにより取得されるマルチメディアは、アナログである場合も多く、パルス符号化変調(PCM)の形態のデジタルプロセスによってデジタルにされる。しかし、デジタル化された直後のデータ量は、スピーカ、テレビのディスプレイで必要となるアナログ表示の再生に必要なものなので、かなりの量となる。したがって、大容量のデジタルマルチメディアコンテンツを効率よく通信、格納、または送信するためには、元のPCMの形態から圧縮された表現に圧縮する必要があり、このために数多くのマルチメディアの圧縮技術が発明されてきた。近年、動画の圧縮技術は、圧縮されていないデジタル動画に匹敵するほどの高い心理視覚品質(psychovisual quality)を維持しつつ、10および100という高い圧縮係数を達成可能とするほど非常に洗練されたものとなってきている。
動画圧縮の手法および科学では、今日までかなりの進歩がみられた(MPEG−1、MPEG−2、H.263、MPEG−4 パート2、MPEG−4 AVC/H.264、MPEG−4 SVCおよびMVC、および、Windows(登録商標) Media Video、RealVideo、On2 VP等の産業主導の所有規格(industry driven proprietary standards)など)が、より高い品質、より高い解像度、および三次元(立体)動画を、いつでもどこでも見たいという消費者の尽きない欲望によって、DVD/BD、無線放送、ケーブル/衛星、有線およびモバイルネットワークを介して、PC/ラップトップ、TV,セットトップボックス、ゲームコンソール、可搬型メディアプレーヤ/デバイス、およびスマートフォン等幅広いクライアントデバイスに配信する必要があり、これがさらに高いレベルの動画圧縮への要望を作り出した。標準的団体による規格では、これは、近年始められた、ISO MPEGによるHEVC(High Efficiency Video Coding)の試みからも明らかなように、新たな技術を、ITU−T規格委員会によるH.265の動画圧縮に対してここ数年試みられている技術に組み合わせようとしている。
上述した規格は全て、まず1つのフレームを複数のブロックに分割して、復号化されたフレームに対する動きベクトルを割り当て、符号化するべきフレーム内の各ブロックに割り当てて、これら動きベクトルが復号器に送信されて、過去に復号化されたフレームとは差分があり、通常は変換符号化によってブロックごとに符号化されるという、動き補償された予測フレームを生成するために用いられる、動画間フレーム(またはフィールド)の一時的な冗長性を削減する一般的なフレーム間予測符号化の削減を行う枠組みを利用している。より高い符号化の効率性を目指すためには、動きベクトルは、整数画素より高い精度であるべきであり、MPEG−1、MPEG−2によって、1/2の画素精度が達成され、一方では、MPEG−4パート2(バージョン2)動画、およびH.264が、1/4の画素精度の動き補償を達成している。しかし、1つのフレームの実際の画素は、整数画素の精度でしか入手できないので、前の1ブロックのフレームを、動き補償予測を生成するために必要なサブペル(subpel)の位置に保管することができる特別なフィルタが必要である。H.264規格は、1/4ペルの補間に必要な16段階全てを生成するために利用することができる分割可能な複数のフィルタの固定フィルタセットを特定する。この固定フィルタセットは、最大利得のためのWiener理論から導かれるように理論的には最適であるが、固定フィルタセット内のフィルタは、6タップや、9タップに制約されているものがある。さらに、精度の制約から、整数化プロセス(integerization process)において精度が一部失われる。この種類の精度は、平均値については一般的には機能するが、特定の画像またはシーン用の、この、またはその他の1つの固定フィルタは、コンテンツの特性とそぐわない場合があり、改善の余地がある。
ここ数年の間、1/4ペルの動き補償のためのフィルタリング分野でかなりの研究が行われ、アダプティブ動きフィルタリングの開発が行われた。アダプティブフィルタリングでは、係数が固定ではないので、前もって知ることができない(つまり、係数をコンテンツ自身から計算する必要があり、時間が経つと変化する)。フィルタの係数を計算するために利用される数学的手法は、wienerのhopfの等式に基づいている。
wienerのhopfの数学的手法は、最適なフィルタ係数セットを計算することができるが、この方法をビデオ符号システムに統合するためには大きな課題がいくつもある。したがって、H.265およびHEVC開発においては、複数の提案をして、様々な欠点を解決して、向上した符号化利得を得るために適合性を増強する必要がある。これらの提案を以下に簡単にまとめる。
分割不可能および分割可能な複数のフィルタを選り分けるという提案。つまり、分割不可能なフィルタは、計算量が多いが、理論的には分割不可能なフィルタのほうが高品質である。しかし、分割不可能なフィルタは、分割可能な複数のフィルタの係数の数の約二倍の係数を必要とするために、分割不可能なフィルタの符号化に関するオーバヘッドも高くなる。全体的には、動きフィルタリングにおいては、分割可能な複数のフィルタが、合理的な符号化利得を提供するので、全体的トレードオフが良好である。
各繰り返しにおける、繰り返し数に対する利得の間のトレードオフの提案。つまり、wiener hopfの等式の繰り返しの解は、良好な結果を得るためには、複数の繰り返し数を収束させる必要がある。必要な繰り返し数は、デフォルトであるフィルタセット(初回の繰り返しに利用されるもの)がどのくらい最適な結果から外れているかに応じて決まる。これらが近ければ、ふつうは繰り返しの数はせいぜい4回まででよいが、これらがかけ離れていれば、16から20回の繰り返しが必要となる場合もある。デフォルトのフィルタと最適なフィルタとの間の差が大きい場合には、4回の繰り返しで止めると、利得のほとんどを得られなくなる。
ビットコストと品質との間の最良なトレードオフを得るための様々な係数の精度の提案。フィルタセットの一定の係数を低い精度に抑えることで、一部のビットを節約することができるようになる。実際、フィルタの係数の最大精度は、一般的に8ビットに制限されており、一部の例外では、利用される精度が10ビットに制限されている。
復号器に送る係数ビットコスト(実際の値、差動符号化(differential)、更新に制約を設けること)の低減の提案。復号器に送る係数の数には制約を設ける必要があり、たとえば、通常の分割不可能なフィルタセットは、120個までの係数を送ることができ(ビットコストは、1つのフレームにつき650から950ビット)、分割可能な複数のフィルタセットであっても、45から60個の係数(ビットコストは、1つのフレームにつき400から550ビット)を送ることができる。差動符号化(differential coding)を行うことで(現在のフレームを、前のフレームのフィルタセットと、または、デフォルトであるフィルタセットと異なるように符号化すること)、または、更新に制約を設けることで、いくらか質が落ちるかもしれないが、このビットカウントを幾分低減させることができる。
全体の利得を向上させるために複数のフィルタセットを設ける提案。フレームごとに計算される1つのwienerフィルタセットが、たとえばH.264規格のフィルタセットを超える利得を生じることができるが、1つのフレーム内に(たとえば1つのブロックまたはスライスについて)、複数のフィルタセットを提供する、という選択肢が設けられれば、より高い利得をうむことができる。しかし、フレーム1つについて2つのフィルタセットを設ける場合のビットコストであっても、利得の向上を相殺しても割に合わない場合がある。したがって、複数のフィルタセットを利用する場合、フィルタ係数のビットコストの管理が必要となる。
レート歪み最適化(「RDO」)を複雑にする提案。これを利用しない場合には、最良の結果を導き出すためのフィルタ切り替えマップに対して複数回繰り返しを行う必要があるために、複数のフィルタを利用すると、高い利得を得るためには、通常は、フィルタ切り替えの頻度と利得との間の良好なトレードオフを生じさせるフィルタ選択のために最適なブロックサイズを得るように繰り返しを行う、というレート歪み最適化を利用する必要がある。
複数のフィルタを利用する際のブロックマップのビットコストのオーバヘッドの提案。複数のフィルタを利用する際(標準的なフィルタと、算出されるフィルタとを切り替える場合を含み)、切り替えマップのコストが多くかかる。たとえば、1つのマクロブロックについて1ビットを利用して、マクロブロックベースで2つのフィルタ間を切り替えようとした場合には、後で、CIF(「Common Intermediate Format」)シーケンスについて、超過した396ビットのオーバヘッドを追加する必要があり、さらに、2つのフィルタセットを送信した場合にはそのビットコストもかかる。
整数位置フィルタおよびオフセットをもつフィルタを利用することにより得られる利益。最良の1/4ペルの位置が整数の位置である場合に、整数位置のフィルタを計算することで利得を出させようとする試みが既にいくつか行われている。さらに、より高い利得を出すためにオフセットを有するフィルタを利用する実験もいくつか行われている。これらの試みは両方とも、オーバヘッドが追加される。
前述したように、多くの技術およびそのバリエーションが示唆されてきたが、現在の方法による係数ビットカウントのオーバヘッドは、差動符号化した後であっても、高すぎる。さらに、既存の方法は、即座に(on the fly)係数セットを複数子繰り返して計算する必要があるために、計算が複雑である。さらには、現在のシステムの適合性を高めるための唯一の方法が、RDOを複数の切り替えフィルタに広範に利用する、というものであり、これによりさらにオーバヘッドおよび複雑性が増す。
アダプティブ動き補償フィルタリングに関するさらなる情報は、以下の文献に記載されており、これら全体をすべての目的で参照としてここに組み込む。 T.Wedi氏による、「動き補償予測のためのアダプティブ補間フィルタ」、Proc.Inc.Conf on Image Processing(ICIP)2002、509−511ページ、2002年。 V.Vatis氏等による、「二次元の分割不可能なアダプティブWiener補間フィルタの係数の符号化」、Proc.SPIE Visual Communications and Image Processing(VCIP)2005、2005年7月
V.Vatis氏およびJoern Ostermann氏による、「H.264/AVCのための、ローカルにアダプティブな分割不可能な補間フィルタ」、Proc.Inc.Conf on Image Processing(ICIP)2006、2006年、10月。 S.Wittmann氏およびT.Wedi氏による、「動画符号化における分割可能なアダプティブ補間フィルタ」、Proc.Inc.Conf on Image Processing(ICIP)2008、2500−2503ページ、2008年。
固定動きフィルタリングを利用する動き補償予測を用いる先行技術のフレーム間符号器の概略ブロック図を示す。
先行技術の符号器に対応しており、符号器側のローカル復号ループに似た動きをする、先行技術の復号器を示す。
動き補償予測ブロックを計算するサブペルグリッドにさらに分割される画素グリッドとして構成される動画フレームの一部を示す。
各サブペル位置の6x6フィルタ行列に6/9タップをマッピングする様子を示す。 各サブペル位置の6x6フィルタ行列に6/9タップをマッピングする様子を示す。 各サブペル位置の6x6フィルタ行列に6/9タップをマッピングする様子を示す。 各サブペル位置の6x6フィルタ行列に6/9タップをマッピングする様子を示す。 各サブペル位置の6x6フィルタ行列に6/9タップをマッピングする様子を示す。 各サブペル位置の6x6フィルタ行列に6/9タップをマッピングする様子を示す。 各サブペル位置の6x6フィルタ行列に6/9タップをマッピングする様子を示す。 各サブペル位置の6x6フィルタ行列に6/9タップをマッピングする様子を示す。 各サブペル位置の6x6フィルタ行列に6/9タップをマッピングする様子を示す。 各サブペル位置の6x6フィルタ行列に6/9タップをマッピングする様子を示す。 各サブペル位置の6x6フィルタ行列に6/9タップをマッピングする様子を示す。 各サブペル位置の6x6フィルタ行列に6/9タップをマッピングする様子を示す。 各サブペル位置の6x6フィルタ行列に6/9タップをマッピングする様子を示す。 各サブペル位置の6x6フィルタ行列に6/9タップをマッピングする様子を示す。 各サブペル位置の6x6フィルタ行列に6/9タップをマッピングする様子を示す。
一般化されたアダプティブ動きフィルタリングを利用する動き補償予測器を利用する先行技術のフレーム間復号器のブロック図を示す。
一般化されたアダプティブ動きフィルタリングを利用する動き補償予測器を利用する先行技術のフレーム間復号器のブロック図を示す。
画像を分割する分割モードを示す。 画像を分割する分割モードを示す。 画像を分割する分割モードを示す。 画像を分割する分割モードを示す。 画像を分割する分割モードを示す。 画像を分割する分割モードを示す。
一実施形態における、動きフィルタリングコードブック符号器を利用する動き補償予測器を利用するフレーム間符号器のブロック図を示す。
一実施形態における、動きフィルタリングコードブック復号器を利用する動き補償予測器を利用するフレーム間復号器のブロック図を示す。
サブペルおよび整数ペル位置のための動きフィルタコードブック(1または複数)を生成する「オフライン」のルーチンを示す。
一実施形態における、動きフィルタセットをコードブックから検索する「オンライン」のルーチンを示す。 一実施形態における、動きフィルタセットをコードブックから検索する「オンライン」のルーチンを示す。
本明細書で様々な形態で示される、様々な動き補償コードブックフィルタ符号器および復号器における、ビットストリームシンタックスの一例を示す。
様々な実施形態における、動画ストリーム内のフレームまたは画像のシーケンスを示す。 様々な実施形態における、動画ストリーム内のフレームまたは画像のシーケンスを示す。
一実施形態における、動画符号化/復号化システムの一例を示す。
一実施形態における、符号化デバイスの一例の様々なコンポーネントを示す。
一実施形態における、復号化デバイスの一例の様々なコンポーネントを示す。
一実施形態における、たとえば符号器デバイスで実行可能な、コードブック動き補償フィルタリング動画符号化ルーチンを示す。
一実施形態において、1つのコードブックを得るためのサブルーチンを示す。
一実施形態における、コードブックから動き補償フィルタのサブセットを選択するサブルーチンを示す。 一実施形態における、コードブックから動き補償フィルタのサブセットを選択するサブルーチンを示す。
一実施形態における、1つの画像の一部の整数位置動き補償フィルタを決定するサブルーチンを示す。
一実施形態における、たとえば復号化デバイスで実行可能な、コードブック動き補償フィルタリング動画復号化ルーチンを示す。
以下に示す詳細な説明は、主に、従来のコンピュータのコンポーネント(プロセッサ、プロセッサ用のメモリ記憶デバイス、接続された表示デバイスおよび入力デバイスを含む)を利用して行われる。さらに、これらプロセスおよび処理は、異種の分散コンピューティング環境で従来のコンピュータのコンポーネント(遠隔ファイルサーバ、コンピュータサーバ、およびメモリ記憶デバイスを含む)を利用することもある。プロセッサは、これらの従来の分散コンピューティングコンポーネントそれぞれに、通信ネットワーク経由でアクセスすることができる。
「一実施形態」「様々な実施形態」「一部の実施形態」といった言い回しは繰り返し利用される。これらは必ずしも同じ実施形態を表しているわけではない。「備える」「有する」「含む」といった用語は、そうではない文脈を除き、互いに同義語を意図している。
<概略>
フレーム間動画符号化のための動きフィルタリングシステムおよび方法の様々な実施形態を記載する。これら実施形態のいくつかでは、既存の解決法と比べて計算の複雑性を低減させることができるが、これは、符号化において、フィルタの係数を何度も繰り返して計算する代わりに、符号化フィルタの係数セットの予め計算されているコードブックから動きフィルタセットを探し出すことにより可能となる。
一部の実施形態では、完全なコードブックをより小さい「ベース」コードブックと、より大きな「仮想の」コードブックとに分割することで、検索の主要となる計算を、ベースコードブックに対してのみ行えばよいことにすることで、検索の複雑性をさらに低減させている。この実施形態では、(a)ベースのコードブック、および残りのコードブックを統合するアルゴリズムのみを格納すること、(b)各フィルタセットに対して、動きサブペルフィルタリング位置に従って適切なタップ数をもつフィルタを格納すること、および、(c)各係数に対して必要なビット精度のみを格納することによって、記憶量を低減させている。
さまざまな実施形態では、記載する動きフィルタコードブック技術を、画像、スライス群、ブロックマップ、統合されたブロックマップ、または、2つのツリー、4つのツリー、またはコンテンツに依存した領域等の適合された分割領域に対して利用することができる。この技術が、コンテンツに依存した分割領域にも適用可能であることによって、レート歪み最適化(「RDO」)のみにより可能となる他の技術と比較して、さらに精度を増すことができる。サブペルフィルタリングにのみ、整数位置フィルタリングのみに特化しているものもあれば、両方に利用可能な実施形態がある。さらに、コンテンツの性質に適合させるように、コードブックは簡単に置き換えたり拡張したりすることができてよい。
フィルタコードブック設計の詳細およびコードブックの効率のよい検索法について記載する。記載されるコードブック設計および示唆されているコードブックのサイズのための方法により、動きフィルタリング性能を良好にして、幅広い範囲の動画コンテンツンの予測効率を高めることができる可能性もある。
様々な実施形態では、記載される技術は、選択するサブペルフィルタセットまたは整数ペルフィルタを特定するためにコードブックのインデックス1つがあれば十分なので、ビット効率がよい。多くの場合、インデックスの符号化は、実際の係数を符号化したり、異なる符号化をなされたフィルタ係数を複数送ったりすることよりも効率がよい。実際に送信されるインデックスの数は、分割領域の数に依存しており、これは、既存の方法では、同じ種類の分割領域が利用されることと対照的であり、ここで記載するコードブックに基づく技術のほうがよりビットレート効率がよい。
様々な実施形態で、I−、P−、B−からなる従来の画像構造を利用する通常の動画符号化技術を利用することができる。他の実施形態では、I−およびP−画像に代えて、またはこれらに加えて、他の画像(たとえば、階層状B画像、一方向B画像、またはその他のB画像)を利用してもよい。
これ以降、図面に示されている実施形態の詳細な説明に入る。実施形態は図面および関連する記載に基づいて説明されるが、ここに開示される実施形態に範囲を限定しようとしているわけではない。真の意図は、すべての代替例、変形例、および均等物を網羅しようというものである。別の実施形態では、その実施形態に範囲を制約せずに、さらなるデバイス、または図示されているデバイス同士の組み合わせを追加したり、組み合わせたりすることもできることを理解されたい。
図1は、固定動きフィルタリングを利用する動き補償予測を用いる先行技術のフレーム間符号器の概略ブロック図を示す。1以上の動画フレーム(vdfrms)を、ブロックインデクサー101によって複数のブロック(blks)に分割する。ブロック(blks)は1つずつ、対応する予測信号ブロック(pred)とともに差動器(differencer)133に入力され、余り(res)が、転送器135によって変換されて転送されることで、量子化器138に係数ブロック(tcof)が送られ、量子化された係数(tcofq)がエントロピー符号器118および逆量子化器140両方に送られる。逆量子化器140は、量子化を解消された係数のブロック(tcof')を逆変換器143に送る。加算器145では、動き補償ループからの予測ブロック(pred)が、量子化を解消された余りのブロック(res')で、逆変換器143の出力に追加される。加算器145では、動き補償ループからの予測ブロック(pred)が、量子化を解消された余りのブロック(res')で、逆変換器743の出力に追加される。加算器745は、ローカルに符号化さればブロック(rec)を出力して、これがフレームアセンブラおよびデブロックフィルタリングプロセッサ148に送られ、ここでブロックらしさをなくさせる(reduces the blockiness)。フレームアセンブラおよびデブロックフィルタリングプロセッサ148のブロック(recd)は、動き推定器128および動き補償予測器130が参照フレームとして利用するフレームを形成する。
動き推定器128は、元のフレームのブロック(blks)間の動きベクトル(mv)を、再構成されたフレーム(recd)と比較して計算する。動きベクトルの計算プロセスには、1つのブロックについて整数ペルベクトルを計算して、その後、サブペルベクトル(sv)(たとえば1/4ペルの解像度まで)を、サブペル補間器129を利用して計算することが含まれている。通常は、サブペル補間器129は、動き推定器128内に含まれているが、図示を明瞭にするために、ここでは別個に示して、説明している。動き推定器128は、最適のペア、つまり最良の動きベクトル(mv)を探すので、動き補償予測器130は、動きベクトル(mv)を利用して、動き補償予測ブロック(pred)を生成することができる。動き補償器130はさらに、サブペル補間器129に類似したサブペル(たとえば1/4の解像度まで)補間器131を利用する。サブペル補間器129および131が利用するフィルタセット(fmf)を予め特定して固定する。エントロピー符号器118は、量子化された変換係数(不図示)、差動動きベクトル(dmv)、およびオーバヘッドデータ(不図示)を符号化して、圧縮ビットストリーム128を生成する。
図2は、先行技術の符号器100に対応しており、符号器100側のローカル符号ループ155に似た動きをする、先行技術の復号器200を示す。具体的には、復号する圧縮ビットストリーム201が、エントロピー復号器203に入力されて、ここで、量子化された係数ブロック(tcofq)、差動動きベクトル(dmv)、および、オーバヘッドデータ(不図示)が復号化される。量子化された量子化ブロック(tcofq)は、次に、逆量子化器203により逆量子化されて、量子化を解消された係数(tcof')が生じ、次にこれが、逆変換器215によって逆変換されて、復号化された余りのブロック(res')が生じる。加算器223では、量子化を解消された係数のブロック(tcof')が、対応する動きベクトル(mv)を利用して得られた動き補償予測ブロック(pred)に送られて、動き補償予測器230で、サブペルベクトル(sv)を利用して(たとえば1/4ペルまでの解像度、サブペル補間器229を利用して計算される)得られる。こうして得られる復号化された動画(rec)は、フレームアセンブラおよびデブロックフィルタ225でデブロックされて、符号器100と同様に、デブロックされた動画(recd)が、参照フレームとして利用される。復号器200の動き補償予測器230は、符号器100の動き補償予測器130同様の働きをするので、たとえば動き補償予測器230は、符号器100が利用するものと同じ固定動きフィルタ(fmf)を利用する。
図3は、動き補償予測ブロックを計算するサブペルグリッドにさらに分割される画素グリッドとして構成される動画フレームの一部300を示しており、ここで、動き補償予測ブロックが計算される。整数画素位置を、A1−A6、B1−B6、C1−C6、D1−D6、E1−E6、およびF1−F6で示す。C3−C4、およびD3−D4の1/4ペルの位置を、位置{a, b, c, d, e,f, g, h, k, 1, m, n, o}で示し、各ブロックが、1/4ペルの位置で補償されるようにする。図3は、さらに、位置aa、bb、cc、dd、ee、ff、gg、hh、ii、およびjjという、1/2ペルの位置もいくつか示している。
サブペル位置{a, b, c, d, e,f, g, h, k, 1, m, n, o}のフィルタセットの計算は、6タップまたは9タップのフィルタを利用して行われる。フィルタ係数は、6x6の行列にマッピングされ、これは、6x6の近接する周囲のペル(A1−F6)からサブペル値を計算するために利用される。
図4a−図4oは、6x6フィルタ行列の各サブペル位置の6/9タップをマッピングする様子を示す。
図4aは、サブペル位置{a}でフィルタリングされた補間ブロックを直接計算するために利用されるフィルタ係数および画素を示しており、この位置で、6個のフィルタ係数が必要である。
図4bは、サブペル位置{b}でフィルタリングされた補間ブロックを直接計算するために利用されるフィルタ係数および画素を示しており、この位置では、3個のフィルタ係数のみが必要である。
図4cは、サブペル位置{c}でフィルタリングされた補間ブロックを直接計算するために利用されるフィルタ係数および画素を示しており、この位置で、6個のフィルタ係数が必要である。
図4dは、サブペル位置{d}でフィルタリングされた補間ブロックを直接計算するために利用されるフィルタ係数および画素を示しており、この位置で、6個のフィルタ係数が必要である。
図4eは、サブペル位置{e}でフィルタリングされた補間ブロックを直接計算するために利用されるフィルタ係数および画素を示しており、この位置で、6個のフィルタ係数が必要である。
図4fは、サブペル位置{f}でフィルタリングされた補間ブロックを直接計算するために利用されるフィルタ係数および画素を示しており、この位置で、9個のフィルタ係数が必要である。
図4gは、サブペル位置{g}でフィルタリングされた補間ブロックを直接計算するために利用されるフィルタ係数および画素を示しており、この位置で、6個のフィルタ係数が必要である。
図4hは、サブペル位置{h}でフィルタリングされた補間ブロックを直接計算するために利用されるフィルタ係数および画素を示しており、この位置で、3個のフィルタ係数が必要である。
図4iは、サブペル位置{i}でフィルタリングされた補間ブロックを直接計算するために利用されるフィルタ係数および画素を示しており、この位置で、9個のフィルタ係数が必要である。
図4jは、サブペル位置{j}でフィルタリングされた補間ブロックを直接計算するために利用されるフィルタ係数および画素を示しており、この位置で、9個のフィルタ係数が必要である。
図4kは、サブペル位置{k}でフィルタリングされた補間ブロックを直接計算するために利用されるフィルタ係数および画素を示しており、この位置で、9個のフィルタ係数が必要である。
図4lは、サブペル位置{l}でフィルタリングされた補間ブロックを直接計算するために利用されるフィルタ係数および画素を示しており、この位置で、6個のフィルタ係数が必要である。
図4mは、サブペル位置{m}でフィルタリングされた補間ブロックを直接計算するために利用されるフィルタ係数および画素を示しており、この位置で、6個のフィルタ係数が必要である。
図4nは、サブペル位置{n}でフィルタリングされた補間ブロックを直接計算するために利用されるフィルタ係数および画素を示しており、この位置で、9個のフィルタ係数が必要である。
図4oは、サブペル位置{o}でフィルタリングされた補間ブロックを直接計算するために利用されるフィルタ係数および画素を示しており、この位置で、6個のフィルタ係数が必要である。
<アダプティブWienerフィルタリング>
図5を詳しく説明する前に、wienerフィルタリング法を利用するアダプティブフィルタ設計の基になる、最適なフィルタリング理論を簡単に説明する。
サブペル位置それぞれにおいて、相互相関付、及び自動相関付行列を累積して、ここから最適なwienerフィルタセットを、Wiener Hopf等式を以下のようにして解くことで計算する。
x(n)を入力信号として、y(n)を出力として、h(n)をフィルタ係数を表すとする。
Figure 0005648183
最少値を見つけるために、微分をとって、以下のようにゼロに設定する。
Figure 0005648183
hについて解くと、Wiener Hopf等式は以下のようになる。
Figure 0005648183
Wiener Hopf等式は、平均平方誤差の最適なフィルタ係数を決定して、結果生じるフィルタが「wiener」フィルタと称される。
上述した等式において、hはフィルタ係数のベクトルであり(通常は6から9個の係数である)、Rxxが、自動相関付行列であり(参照フレームのブロックデータのための)、Rdxが、相互相関付行列/行ベクトル(ソースフレームと参照フレームのブロックデータとの間の)である。行列は、各サブペル位置について別個に累積され、hは、各サブペル位置について上述した等式を解くことで計算することができるので、16個のフィルタからなる、適合したフィルタセットが得られる(1/4ペル位置について)。
図5は、一般化されたアダプティブ動きフィルタリングを利用する動き補償予測器を利用する先行技術のフレーム間符号器500のブロック図を示す。ブロックインデクサー501、転送変換器535、量子化器538、逆量子化器540、逆変換器543、フレームアセンブラデブロックフィルタリングプロセッサ548、および、エントロピー符号器518は、図1で示し上述した、対応する符号器100同様に動作するので、この説明については繰り返さない。同様に、動き推定器528および動き補償器530は、利用するフィルタセット以外については、上述した動き推定器128および動き補償器130同様に動作する。したがって、ここでは動きフィルタリングに焦点をしぼり、このサブシステムのみを詳述する。
固定フィルタセットを利用するH.264とは異なり、符号器500は、データからフィルタセットを計算する。この計算は、サブペル(wiener)繰り返しフィルタセットコンピュータ558で、前述したwiener hopf等式を利用して行われる。プロセスは、各ブロックの差の合計(「SAD」)位置の最少絶対値を計算するが、これは、最も良く整合するサブペル整合位置を反映している。次の繰り返しでは、これらサブペル位置を利用して、新たなフィルタセットを計算して、これは、利用されると、更新されたサブペル位置が提供される。プロセスは繰り返されるので、プロセスが収束するまでに、いくつかの繰り返し(4−20)が必要である。プロセスは、各繰り返しにおける等式が複雑なことから、計算集約的である。場合によっては、繰り返し数を制限して、パフォーマンスの複雑さを相殺することもできる。計算されたアダプティブ動きフィルタセット(amf)は、動き補償予測器530のサブペル補間器531に提供される。第1のフィルタセット(amf)は、さらに符号化されて、ビットストリーム経由で復号器に送られる必要がある。フィルタセット(amf)は99個ものフィルタ係数を利用することができるので、フィルタセットを効率的に符号化することが重要である。通常の技術は、最上位の位置にフィルタセットを送信することから、係数(dmf)(差動器560が生成する)の差動符号化、最後に送信されてからあまり変化しなかった係数の抑制まで、様々である。フィルタ係数を効率的に符号化できると想定して、複数のフィルタセットを1つの画像について送信して、2以上のフィルタセットからより効率よいほうを選択することができ、この動作は、空間分割器および分割符号器505により行われ、これにより分割マップ(ptmap)が生成される。レート歪み最適化器508は、複数のフィルタを利用するため関連オーバヘッドがある場合であっても、利得があるようにされることが多い。
図6は、一般化されたアダプティブ動きフィルタリングを利用する動き補償予測器を利用する先行技術のフレーム間復号器600のブロック図を示す。エントロピー復号器603、逆変換器615、逆量子化器613、および、フレームアセンブラおよびデブロックフィルタリングプロセッサ625は、図2で示し上述した、対応する復号器200のコンポーネント同様に動作するので、この説明については繰り返さない。同様に、動き補償予測器630は、利用するフィルタセット以外については、上述した動き補償器230同様に動作する。したがって、ここでは動きフィルタリングに焦点をしぼり、このサブシステムのみを詳述する。
エントロピー復号器603は、予測を表すフィルタセットが加算器631に追加される動きフィルタの差動値を復号するコードワード(dmf)を復号する。このフィルタセット(amf)は、動き補償予測器630のサブペル補間器629に提供される。さらに、複数のフィルタを利用する場合には、分割マップ(ptmap)を復号して、フィルタ(amf)が画像の正しい部分に利用されるようにする。
図7a−図7fは、画像を分割する分割モードを示す。たとえば図7aは、フィルタコードが画像ごとにのみ切り替えられる画像ベースの分割を表す。図7bは、スライスまたはスライス群ベースの分割を示し、第1のフィルタセットをスライス群「A」に適用して、第2のフィルタセットをスライス群「B」に適用する。図7cは、ブロックタイプ「A」に利用するフィルタ、および、ブロックタイプ「B」に利用するフィルタを特定するブロックマップを表している。図7dは、1つの画像をタイルに分割して、さらにタイルの分割部分を、2つのツリーの分割に分割して、レート歪み最適化(「RDO」)に基づく2つのツリーの様々な枝が「A」または「B」と称されるようにして、これは、それぞれが、第1または第2のフィルタセットを利用することを示している。図7eは、1つの画像をタイルに分割して、さらに1つのタイルを、2種類の4つのツリーの分割部分(「A」または「B」と称する)に分割して、これらそれぞれが、第1または第2のフィルタセットを利用することができる。最後に、図7fは、スライスの統合、ブロックの統合、2つのツリーの統合、4つのツリーの分割部分の統合、または純粋に空間分割によって生じる領域を示している。
図8は、一実施形態における、動きフィルタリングコードブック符号器を利用する動き補償予測器を利用するフレーム間符号器800のブロック図を示す。ブロックインデクサー801、転送変換器835、量子化器838、逆量子化器840、逆変換器843、フレームアセンブラデブロックフィルタリングプロセッサ848、および、エントロピー符号器818は、図1で示し上述した、対応する符号器100同様に動作するので、この説明については繰り返さない。同様に、動き推定器828は、利用するフィルタセット以外については、上述した動き予測器128同様に動作する。したがって、ここでは動きフィルタリングに焦点をしぼり、このサブシステムのみを詳述する。
既存のアダプティブ動きフィルタリング符号器に比べると、コードブックベースの動きフィルタリング符号器800は、動きフィルタを明示的に計算する代わりに、既存のコードブックからフィルタセットを選択する。一実施形態では、1つがサブペルフィルタセット860を格納し、1つが整数位置フィルタ863を格納する、という、2つの種類のコードブックを利用する。MCフィルタセットコードブック検索プロセッサ858は、サブペルおよび整数位置コードブックインデックス(mcfsi)および(mcfii)をコードブックそれぞれから効率的に検索するが、これらはそれぞれサブペルフィルタセット(mcfs)および整数位置フィルタ(mcfi)と称される。
様々な実施形態では、サブペルフィルタセット(mcfs)および整数位置フィルタ(mcfi)は、1つの画像(1度だけ)または空間分割領域(1つの画像について複数回)送ることができる。様々な実施形態では、スライス、可変ブロックサイズ、ブロック、2つのツリー、4つのツリー、領域、タイル等の、任意の種類の空間分割を利用することができる(図7aから図7f参照)。この分割は、空間分割器および分割符号器805によって行われる。送信すべき分割数等の分割の詳細は、ビットレート/歪みトレードオフ分析器808およびシーンコンテンツ分析器803によるレート歪み分析に基づいて決定される。最も良く整合するサブペルフィルタセットおよび整数ペルフィルタセットが、ビットストリームにて復号器に送られる。サブペルフィルタセット(mcfs)および整数位置フィルタ(mcfi)は、MCフィルタリングプロセッサ865に提供されて、動き推定器/動き補償予測器828で動き補償予測が生成される。一部の実施形態では、プロセスは、検索およびインデックスごとのフィルタ/フィルタセットを表すビットコスト面で効率がよいものであってよい。
図9は、一実施形態における、動きフィルタリングコードブック復号器を利用する動き補償予測器を利用するフレーム間復号器900のブロック図を示す。エントロピー復号器903、逆変換器915、逆量子化器913、並びにフレームアセンブラおよびデブロックフィルタリングプロセッサ925は、図2に示し、上述した復号器200の対応するコンポーネント同様に動作するので、この説明については繰り返さない。同様に、動き補償予測器930は、利用するフィルタセット以外については、上述した動き補償予測器230同様に動作する。したがって、ここでは動きフィルタリングに焦点をしぼり、このサブシステムのみを詳述する。
エントロピー復号器903は、ビットストリーム901をエントロピー復号して、コードブックサブペル動きフィルタインデックス(mcfsi)および整数位置動きフィルタインデックス(mcfii)の両方または片方を得る。これらインデックス(mcfsi)および(mcfii)は、所望のサブペルフィルタセット(mcfs)および整数位置フィルタ(mcfi)に、サブペルコードブック933および整数位置コードブック935の両方または他方からアクセスするために利用される。結果得られるサブペルフィルタセットmcfsおよび整数フィルタmcfiは、MCフィルタリングプロセッサ929に送られ、ここで、サブペル補間および整数ペルフィルタリングの両方または片方が行われ、動き補償予測(pred)が行われる。一部の実施形態では、フラグ(filt_sent)および(intfilt_sent)が、さらにエントロピー復号器903により復号されてよく、これは、ビットストリーム901が、サブペル動きフィルタインデックス(mcfsi)および整数位置動きフィルタインデックス(mcfi)をそれぞれ含むか否かを示す。
表1は、サブペル「ベース」コードブックの2つのサンプルフィルタセット(id=0およびid=1)を示す。一実施形態では、サブペル「ベース」コードブックが、16個の「ベース」サブペルフィルタセット(それぞれが、1/4ペルのフィルタリングの場合に、15または16サブペル位置のフィルタを含む)を含んでいてよい。16個の「ベース」サブペルフィルタセットの個々のサブペル位置フィルタが、それぞれ別の予め定められている組み合わせで利用されて、「仮想」コードブックが生成されてよい。一実施形態では、「仮想」コードブックが、256個のサブペルフィルタセットを含んでよい。他の実施形態では、「ベース」および「仮想」コードブックが含むフィルタセット数はこれより多くても少なくともよい。
Figure 0005648183
表1に示されているフィルタセット例では、フィルタセットID=0が、ピントのあったシーンに対応しており、フィルタセットID=1が、ピントのぼけたシーンに対応している。
一部の実施形態では、表1に(一部)示されているようなサブペルコードブックが、それぞれが複数のサブペル位置に対応している複数のサブペル位置群に分類される複数の動き補償フィルタを含むものとして均等に特徴付けられており、ここで複数のサブペル位置群のそれぞれは、1つの画像の複数のブロックを複数のサブペル位置のうち対応する位置で補間するのに適した複数の動き補償フィルタを含んでいる。たとえば、表1に示すコードブックはサブペル位置{a―0}に対応する、15または16群の動き補償フィルタを含むものとして特徴付けられてよい。たとえば以下のようになる。
サブペル位置{a}群:{a,a,a,...a15
サブペル位置{b}群:{b,b,b,...b15
・・
サブペル位置{c}群:{c,c,c,...c15
コードブックはさらに、いくつかの(たとえば256個の)予め定められている動き補償フィルタのセットを含むものとして特徴づけられてよく、各サブペル位置群の1つが、以下のように示されてよい。
サブセットID=0:{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o
サブセットID=1:{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o
・・
サブセットID=15:{a15,b15,c15,d15,e15,f15,g15,h15,i15,j15,k15,l15,m15,n15,o15
サブセットID=16:{a16,b16,c16,d16,e16,f16,g16,h16,i16,j16,k16,l16,m16,n16,o16
・・
サブセットID=255:{a255,b255,c255,d255,e255,f255,g255,h255,i255,j255,k255,l255,m255,n255,o255
一部の実施形態では、コードブックはさらに、一群の整数位置フィルタ(たとえば整数位置群{0}:{0,0,0,...015})を含んでよい。この実施形態では、予め定められている動き補償フィルタのサブセットが、さらに、整数位置フィルタ(たとえばサブセットID=0:{0,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o}、サブセットID=1:{0,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o}等)を含む。
一部の実施形態では、複数の整数位置のフィルタが1つの整数位置のコードブックに含まれていてよい。表2は、整数位置コードブックの2つのサンプル整数位置フィルタ(ID=0およびID=1)を示している。一実施形態では、整数位置コードブックが、48個の整数位置フィルタを含んでよい。他の実施形態では、整数位置コードブックが含むフィルタの数はこれより多くても少なくてもよい。一部の実施形態では、サブペルフィルタコードブックのサブペルフィルタセット内に、整数位置コードブックの代わりに、またはこれらに加えて、整数位置のフィルタが含まれてもよい。
Figure 0005648183
図10は、サブペルおよび整数ペル位置のための動きフィルタコードブック(1または複数)を生成する「オフライン」のルーチン1000を示す。ブロック1005で、ルーチン1000は、1以上のサンプル動画シーケンスを含む1つのテストセットを取得する。一部の実施形態では、動画シーケンスは、異なる動きレベルの組み合わせおよび様々なほぼ均等のテクスチャを有するように選択される。一実施形態では、テストシーケンスを、テクスチャのような領域を含むように選択するが、このためには通常、より正確なフィルタリングを行い、所望の符号利得を得る必要がある。一実施形態では、複数の標準CIFシーケンスをサンプル動画シーケンスとして利用することができる。
開始ループブロック1010から始まり、ルーチン1000は、テストセットの各動画シーケンスを処理する。ループブロック1015から始まり、ルーチン1000は、現在の動画シーケンスの1以上の個々の画像またはフレームを処理する。ブロック1020では、ルーチン1000が、Wienerフィルタベースのアダプティブ動きフィルタリングを利用して、現在の画像またはフレームの完全に適合されたフィルタセットを計算する。一部の実施形態では、より良いフィルタセットを得るために、2以上繰り返してよく、これは、フィルタ係数の計算およびサブペル位置の更新を、2回以上繰り返し実行してよいことを意味する(第1のタイムサブペル照合(collations)を、標準的なフィルタの結果に設定して、後の各繰り返しにおいて、位置を前に計算したフィルタセットで得られるものに設定する)。1/4ペルの実施形態であれば、1つのフィルタが各1/4ペル位置について計算されるので、生成されるフィルタセットが、16個のフィルタからなる。一実施形態では、生成されたフィルタセットのそれぞれのフィルタが、1/4ペル位置に応じて、6または9個のタップを有する。
ループブロック1025を終了させるにあたり、ルーチン1000は、ブロック1015に繰り返し戻り、現在の動画シーケンスの別の画像またはフレームそれぞれを処理する(もしあれば)。ブロック1030では、ルーチン1000が、生成されたフィルタセットから現在の動画シーケンスを表す代表的なフィルタセットを選択する。一実施形態では、代表的なフィルタセットを選択することには、動画シーケンスの各画像またはフレームに、計算されたフィルタセット全てを割り当てて、高い(または最高の)符号利得の(低いSADまたは最低のSADを有する)フィルタセットを選択することを含んでよい。一部の実施形態では、代表的なセットは、現在の動画シーケンスの画像またはフレームのサブセットに従って選択されてよい(たとえば最初のN個のフレーム)。
ループブロック1035を終了させるにあたり、ルーチン1000は、ブロック1010まで繰り返し戻り、テストセットの次の動画シーケンスを処理する。一実施形態では、全ての動画シーケンスが処理されると、100以上の代表的なフィルタセットが生成、選択されてよい。ブロック1038では、ルーチン1000が、随意で、代表的なフィルタセットの集合体を改良する。たとえば一実施形態では、ランダムウォークアルゴリズム(または類似した最適化アルゴリズム)を利用して、動画シーケンスの組み合わせを、無作為に一部または全てテストして、数時間または数日間において改良されたフィルタセットの集合体全体の符号利得をさらに向上させてもよい。
ブロック1040で、ルーチン1000は、随意に改良されたフィルタセットの集合体のなかの高い、または最高の符号利得を有する「ベース」サブペルフィルタセット群を選択する。ブロック1045では、ルーチン1000が、サブペルコードブックに選択された「ベース」のフィルタセット群を格納する。
ブロック1050で、ルーチン1000は、選択された「ベース」フィルタセット群の個々のフィルタから「仮想」コードブックを得る。一実施形態では、ランダムウォークアルゴリズム(または類似した最低化アルゴリズム)を利用して、選択したフィルタセットの「ベース」の群から個々のフィルタの間の差安座マナ組み合わせをテストしてよい。一実施形態では、フィルタの256個の異なる組み合わせを、選択した「ベース」フィルタセット群から導き出すことができる。導き出された組み合わせは、選択された「ベース」フィルタセット群のフィルタから導き出すことができる「仮想」コードブックを作成するために格納される。
ブロック1055で、整数位置フィルタ群を、随意に改良されたフィルタセットの集合体から選択する。一実施形態では、整数位置フィルタを、高い符号利得を持ち、互いに異なるように選択することができる。一実施形態では、48個の整数位置フィルタをその群について選択してよい。ブロック1060で、選択された整数位置フィルタ群を、整数位置コードブックに格納する。サブペルコードブックおよび整数位置コードブックを生成して格納すると、ブロック1099でルーチン1000が終了する。
図11aおよび図11bは、一実施形態における、動きフィルタセットをコードブックから検索する「オンライン」のルーチン1100を示す。ブロック1103で、ルーチン1100が、動画シーケンスのうちの1つの画像またはフレームを取得する。ループブロック1105を開始する際に、ルーチン1100が画像の各画像コンテンツブロックを処理する。
ブロック1108で、ルーチン1100は、現在の画像コンテンツブロックの整数位置動き推定値を決定する。一実施形態では、整数位置の動きベクトルは、一定の動き検索サイズを利用して完全な、または低減された検索によって計算される。ブロック1110で、ルーチン1100は、決定された整数位置動き推定値について符号利得を計算する(たとえばSADを決定する)。
ブロック1113で、ルーチン1100は、デフォルトであるフィルタセット(たとえばH.264固定フィルタセット、その他、参照として利用されるその他のフィルタセット)を利用してサブペル動き推定値を決定する。補間されたサブペル位置を検索して、最高の符号利得(最低のSAD)を有するものを見つける。言い換えると、デフォルトのフィルタセットを画像のコンテンツブロックに適用して、最少のSADを生じる位置を選択する。フィルタセットが対応する位置を、推定されたサブペル動きベクトルとして利用する。ブロック1115で、ルーチン1100は、(少なくとも一時的に)デフォルトのフィルタの符号利得全体をセーブする。
ブロック1116で、ルーチン1100は、たとえば16フィルタセットを含む「ベース」のサブペルコードブックをロードして、各フィルタセットは、たとえば15のサブペル位置フィルタを含んでいる(1つが各サブペル位置にある)。ブロック1118を始めるにあたり、ルーチン1100は各フィルタセットを処理する。ブロック1120で、ルーチン1100は、現在のフィルタセットの符号利得を計算する。オフセットとして整数位置動き推定値を利用して、ルーチン1100は、現在のフィルタセットの対応するサブペル位置フィルタを利用して、各サブペル位置のSADを決定する。ループブロック1123を終了するにあたり、ルーチン1100は、ブロック1118に繰り返し戻り、次のフィルタセット(もしあれば)を処理する。
ブロック1123で、ルーチン1100は、N(たとえば256)個の「仮想」フィルタセットの符号利得を、各フィルタセットの個々のサブペル位置フィルタについて計算された符号利得を利用してアセンブルする。一実施形態では、「仮想」フィルタセットが、「ベース」のサブペルコードブックのフィルタセットのサブペル位置フィルタの様々な組み合わせを含んでいる。したがって各「仮想」フィルタセットの符号利得を、既に計算した個々のサブペル位置フィルタ符号利得を利用してアセンブルすることができる(ブロック1120)。
ブロック1128で、ルーチン1100は、繰り返しブロック1105に戻り、画像の画像コンテンツの次のブロック(もしあれば)を処理する。
ブロック1133で、ルーチン1100は、空間分割モードを設定する。動作モードに基づいて、フレームベース、スライスベース、ブロックベース、セグメントベース、その他の画像の分割部分を利用してよい。ループブロック1135を開始するにあたり、ルーチン1100は、画像の各空間分割部分を処理する。ブロック1138で、ルーチン1100は、N個の「仮想」サブペルフィルタセットから、現在の分割領域について高い符号利得を有するサブペルフィルタセットを選択する。一実施形態では、最少のSAD/最大の符号利得を有するという意味で最良のフィルタセットを選択する。一部の実施形態では、最低処理モードで、フレームベースの分割部分が利用される。次の2つのモードはスライスを利用する。最低のスライスモードは、1つのフレームを4つの均等な水平ストリップ/スライスに分割する(フレームサイズによっては、最後のスライスのサイズが小さい場合もある)。他方で、より高いスライスモードでは、12x4、16x16のブロックスライスが利用される(ここでも、フレームサイズのせいで、一番下のスライスおよび右端のスライスが小さい場合がある)。残りのモードで、ブロックをブロック群に統合して、同じフィルタセットに低いSADを生成させることで得られたセグメント/領域を利用する。ある意味でこれら領域が動きの分割領域に対応している。このプロセスで利用される2つの閾値があり、各モードが、小さいまたは大きいセグメント/領域を生成することができる様々な閾値の選択肢を有している。フレームはまずブロック/スーパタイルに分割される。第1の閾値は、64x64のスーパタイルを32x32のタイルに分割する方法を決定するために利用され、第2の閾値は、タイルブロックをスーパタイルを超えてで統合するときを判断するために利用される。いずれの場合においても、統合または分割の決断は、2つのブロック/オブジェクトのSAD差が一定の閾値を下回る、または上回る場合に行われる。スーパタイルのタイルへの分割は、2x2おパターンで符号化される。動作の異なるモードは、基本的な3つ、または拡張された7つのパターンをサポートしている。基本的な3つのパターンは、確固とした(solid)、水平方向の分割および垂直方向の分割であり、一方で、拡張セットも、4つの3つの方法の分割を含む。次いで、次の処理段階は、十分小さいSAD(第2の閾値に基づいて)を生じる共通のフィルタセットがある場合に、スーパタイルの近隣との境目に触れるタイルを統合する。統合ビットは、パターン可変符号コード(「VLC」)に加えてビットストリームに符号化され、復号器は、完全に同じ空間セグメントを復元することができる。
現在の分割領域について高い符号利得を有するサブペルフィルタセットが選択されると、ブロック1140で、ルーチン1100が、ビットストリームに対して、選択されたサブペルフィルタセットに対応するインデックスその他のコード(たとえばsubpelfilt_code)を符号化する。様々な実施形態では、固定されたVLC表、アダプティブハフマンコード表等を利用して、インデックスその他のコードを符号化することができる。アダプティブハフマンを利用する場合には、一実施形態では、コードは、前のフレームのインデックスの頻度に基づいて計算されるが、これは、時間的な冗長が存在する実験および同じフィルタセットが近隣のフレームにみられる傾向のある実験でこのように観察されたからである。
ブロック1141で、ルーチン1100は、ある数の(たとえば48)整数位置フィルタを含む整数位置コードブックをロードする。決定ブロック1143で、ルーチン1100は、整数動き推定値(ブロック1108で決定された)が、選択したサブペルフィルタセットより高い符号利得(低いSAD)を提供しているかを判断する。判断結果が否定的である場合、ルーチン1100は、ループブロック1153の終了に移行して、ここでルーチン1100は、ブロック1135に繰り返し戻り、次の空間分割部分(もしあれば)を処理する。
しかし、整数動き推定値(ブロック1108で決定される)は、選択したサブペルフィルタセットより高い符号利得(低いSAD)を提供している場合には、ブロック1145で、ルーチン1100が、整数位置コードブックから、現在の空間分割部分に対する高い(または最高の)符号利得を有する整数位置フィルタを選択する。決定ブロック1148では、ルーチン1100が、選択された整数位置フィルタが最高の符号利得(最少のSAD)を提供しているかを判断する。その場合には、ブロック1150で、ルーチン1100が、選択した整数位置のフィルタに対応するインデックスまたは他のコード(intpelfilt_code)を、ビットストリームに符号化する。一部の実施形態では、1つのフラグその他の1ビットのヘッダもビットストリームに符号化して、整数位置コードブックの選択された整数位置フィルタが、標準的な整数位置フィルタよりも高い符号利得を生成することを示す。
ループブロック1153を終了するとき、ルーチン1100は、ブロック1135に繰り返し戻り、次の空間分割部分(もしあれば)を処理する。すべての空間分割部分の処理が終わると、ルーチン1100はブロック1199で終了する。様々な実施形態では、ここで記載する方法を、画像ごとに、および、画像全体に送られるフィルタへの1つのインデックス、1つの領域、1つのセグメント、スライスの1群、1つのフレームまたは1つのタイルの各4つのツリーまたは2つのツリーの分割部分、1つのフレームのブロック群、複数のタイル、または1つのタイルの複数のフラグメントに対して利用する。
図12は、本明細書で様々な形態で示される、様々な動き補償コードブックフィルタ符号器および復号器における、ビットストリームシンタックス1200の一例を示す。ビットストリームシンタックス1200は、3ビットのヘッダmfc_hdr1201から始まる。1ビットのpict_onlyフラグ1202は、画像ベースのフィルタリングが生じるか否かを示す。「はい」の場合には、以下の随意のシンタックスエレメントヌル(numpt)フィールド1230を省き、「いいえ」の場合には、3ビットのヌルコード1203を送信する。随意の3ビットヌルフィールド1203は分割部分の数(8まで)を示す。
随意の1ビットのmap_sentフラグ1204が、分割マップを送り、フィルタを適用するか否かを示し、または、複数のフィルタ間を切り替えるかを示す。随意のnビットのptmapフィールド1205は、分割マップ(もしあれば)を示す。
1ビットのfilt_sentフラグ1206は、サブペルフィルタコードがビットストリームに含まれているかを示す。フラグ1206が設定されている場合には、8ビットのサブペルfilt_code1208を送信して、利用するサブペルフィルタセットを特定し、さもなくば、subpelfilt_code1208を送信しない。
フラグintfilt_sent1210は、整数位置フィルタコードがビットストリームに含まれているかを示す。「1」に設定されている場合には、intfilt_sent1210が、6ビットのintpelfilt_code1211が送信されて、利用する整数位置フィルタを特定する。さもなくば、intpelt_code1211を送信しない。
filt_sent1206、subpelfilt_code1208、intfilt_sent1210、および、intpelfilt_code1211のコードシーケンスが、1つの分割(画像のみ)モードのみを利用する場合に生じるが、その他の場合には、シーケンスをヌルで(numpt)1203回繰り返す。
図13aは、いずれのMPEG規格の動画符号化においても広く利用されているIフレーム1301、1308(独立して符号化された画像)、Pフレーム1304、1307(一方向予測符号化された画像)、および、Bフレーム1302−1303、1305、1307(双方向予測符号化された画像)を含む、動画ストリーム内のフレームまたは画像シーケンス1301−1308を示す。図示されている画像構造は、さらに、可変数のBフレームを示しているが、これは、われわれのフィルタリングの話の主要点ではない。より関連することは、I画像1301、1308が動きフィルタセット情報ではなくてもよく、P画像1304、1306が、1以上のフィルタセットを必要として、B画像1302−1303、1305、1307が、2つ以上の(双方向参照により)フィルタセットを必要とする、ということである。
表3は、様々な実施形態における、PおよびB画像タイプについての、画像タイプおよび分割部分の数(numpt)による動き補償コードブックフィルタの符号化の符号ビットコストの一例(たとえば、動きフィルタリングモード(たとえば「サブペル」および「intおよびサブペル」)を示す。B画像のビットコストを低減するために、2つのさらなるモード(たとえば「画像サブペル」および「画像int subpel」など)を導入する。全体的には、P画像については、信号サブペルフィルタセットが、13と43ビットの間(4つの分割部分まで)という値をとり、intとサブペルフィルタセット両方に信号を供給するためには、19および67ビットの間の値であってよく、サブペルのB画像については22および79ビットの間であってよく、intのB画像については34および127ビットの間であってよい。表3に示す符号ビットのコストの例は領域、スライス、タイル、またはタイルフラグメント、画像の2つのツリー、4つのツリー、タイルの2つのツリー、または4つのツリー、および、統合されたブロックのうち少なくとも1以上当の空間分割マップのビットコストは含まない。
Figure 0005648183
図13bは、3つの分割部分例(numpt=3)に分割されるIフレーム1301−1308、3つの分割部分例(numpt=3)に分割されるPフレーム1304、1306、および、2つの分割部分例(numpt=2)に分割されるBフレーム1302−1303、1305、1307を含む動画ストリーム内の画像またはフレームシーケンス1301−1308を示す。図13bに示すように、動きフィルタリングの分割は、完全にアダプティブであってよく、画像ベースで、任意のモードで動作することができる(画像、領域、スライス、タイル、1つのタイルの統合されたフラグメント、画像の2つのツリーまたはタイル統合された2つのツリー、画像の4つのツリーまたはタイル統合された4つのツリー、統合されたブロック等が含まれる)。たとえば図13bは、第1のP画像1304が3つのスライスからなり、第2のB画像1303が2つのツリーで符号化されており、2つの分割部分からなる。さらに、第2のP画像1306は、3x3の大きなタイルアレイに分割され、第3のBフレーム1305は、2つのツリーに分割される。図13bの例に従って、コードブック動きフィルタリングの場合には、図示されている画像構造の各画像の動きフィルタビットのカウントを計算することができる。
図14は、一実施形態における、動画符号化/復号化システム1400の一例を示しており、システム1400は、符号化されていない動画ソース1415、符号化デバイス1500(図15に示されており後述する)、復号化デバイス1600(図16に示されており後述する)を、随意の外部ディスプレイ1425と、随意の符号化されている動画ソース1420とともに含む。一部の実施形態では、符号化デバイス1500および復号化デバイス1600の片方または両方が、ネットワーク1450に接続されていてよい。一部の実施形態では、復号化デバイス1600および符号化デバイス1500が、単一のデバイスを含んでもよい。一部の実施形態では、1を超える数の符号化デバイス1500が存在していてよい(たとえば、1つの符号化デバイスが「オフライン」でコードブック生成プロセスを実行してよく、一方で、別の符号化デバイスが「オンライン」で符号化プロセスを実行してよいことが、本開示に示されている)。
一部の実施形態では、他のサーバおよびデバイス(不図示)も存在していてよい。たとえば一部の実施形態では、配信サーバ(不図示)が、符号化されている動画を復号かデバイス1600にネットワーク1450経由で配信することができる。
一部の実施形態では、符号化デバイス1500が、符号化されていない動画ソース1415と、ネットワーク1450、格納エリアネットワーク(「SAN」、高速シリアルバスおよび他の適切な通信技術の両方または片方を利用して通信してよい。同様に一部の実施形態では、復号化デバイス1600は、符号化されている動画ソース1420と、ネットワーク1450、格納エリアネットワーク(「SAN」、高速シリアルバス経由で、および他の適切な通信技術を利用して通信してよい。一部の実施形態では、符号化デバイス1500、復号化デバイス1600、符号化されている動画ソース1420、および、符号化されていない動画ソース1415が、1以上の複製され、および/または、配信された物理的または論理的デバイスを含んでよい。
様々な実施形態では、ネットワーク1450が、インターネット、ローカルエリアネットワーク(「LAN」)、ワイドエリアネットワーク(「WAN」)、セルラーデータネットワーク、および、その他のデータネットワークのうち少なくとも1つを含んでよい。多くの実施形態では、図示されているより多い数の符号化デバイス1500、復号化デバイス1600、符号化されている動画ソース1420、および、符号化されていない動画ソース1415が存在してもよい。
図15は、一実施形態における、符号化デバイス1500の一例の様々なコンポーネントを示す。図15は、符号化デバイス1500の一例のいくつかのコンポーネントを示す。一部の実施形態では、符号化デバイス1500は、図15に示されているものより多いコンポーネントを含んでよい。しかし、例示される実施形態を開示するために、これら一般的には従来のコンポーネントの全てを示す必要は必ずしもない。図15に示すように、符号化デバイス1500は、ネットワーク1450に随意で接続するためのネットワークインタフェース1530を随意で含む。
符号化デバイス1500はさらに、少なくとも1つの処理ユニット1510(たとえば、汎用中央処理装置、エンベデッド処理装置、専用動画処理ユニット等)、メモリ1550、随意の出力デバイスおよびディスプレイ1540の両方または片方、および、随意の入力デバイス1570(たとえばキーボード、マウス、リモコン、ジョイスティック等)を含んでよく、これら全てが、随意のネットワークインタフェース1530とともに、バス1520経由で相互接続されていてよい。メモリ1550は、一般的に、RAM、ROM、および、永続的な大容量記憶装置(ディスクドライブ等)を含んでよい。メモリ1550は、コードブック動き補償フィルタリング800を有する動画復号器(図8を参照して上述した)、動き補償サブペルフィルタセットのコードブック1565および動き補償整数位置フィルタコードブック1570の片方または両方、随意の「オフライン」のコードブック生成ルーチン1000(図11a、図11bを参照して上述した)、および、コードブック動き補償フィルタリング動画符号化ルーチン(図17を参照して後述する)を含んでよい。加えて、メモリ1550は、さらに、オペレーティングシステム1555を格納している。一部の実施形態では、これらソフトウェアコンポーネントが、コンピュータ可読記憶媒体1595から符号化デバイス1500のメモリ1550に、非持続性コンピュータ可読記憶媒体1595(たとえばフロッピー(登録商標)ディスク、テープ、DVD/CD−ROMドライブ、メモリカード等)に関連付けられているドライブメカニズム(不図示)を利用してロードされてよい。一部の実施形態では、ソフトウェアコンポーネントも、コンピュータ可読記憶媒体1595経由ではなく、随意のネットワークインタフェース1530経由でロードされてよい。
一部の実施形態では、符号化デバイス1500は、さらに、符号化されていない動画ソース1415と通信する専用インタフェース1535(高速シリアルバス等)を含んでよい。一部の実施形態では、符号化デバイス1500が、ネットワークインタフェース1530経由で、符号化されていない動画ソース1415と通信してよい。他の実施形態では、符号化されていない動画ソース1415がメモリ1550に常駐していてもよい。
大体従来の汎用コンピューティングデバイスに準拠している符号化デバイス1500の一例を示したが、符号化デバイス1500は、動画を符号化することができる多数のデバイスのいずれであってもよい(たとえば、動画記録デバイス、動画コプロセッサおよびアクセラレータの両方または片方、パソコン、ゲームコンソール、セットトップボックス、ハンドヘルドコンピュータ、携帯電話、またはその他の適切なデバイス)。
図16は、一実施形態における、復号化デバイス1600の一例の様々なコンポーネントを示す。一部の実施形態では、復号デバイス1600は、図16に示すもの以外にも多くのコンポーネントを含む場合がある。しかし、これら全ての一般的に従来のコンポーネントの説明は、実施形態の開示には必ずしも必要ではない。図16に示す復号化デバイス1600は、ネットワークに接続することもできる随意のネットワークインタフェース1630を含んでいる。
復号化デバイス1600はさらに、少なくとも1つの処理ユニット1610(たとえば、汎用中央処理装置、エンベデッド処理装置、専用動画処理ユニット等)、メモリ1650、随意の出力デバイスおよびディスプレイ1640の両方または片方、および、随意の入力デバイス1670(たとえばキーボード、マウス、リモコン、ジョイスティック等)を含んでよく、これら全てが、随意のネットワークインタフェース1630とともに、バス1620経由で相互接続されていてよい。メモリ1650は、一般的に、RAM、ROM、および、永続的な大容量記憶装置(ディスクドライブ等)を含んでよい。メモリ1650は、コードブック動き補償フィルタリング900を有する動画復号器(図9を参照して上述した)、動き補償サブペルフィルタセットのコードブック1665および動き補償整数位置フィルタコードブック1670の片方または両方、随意の「オフライン」のコードブック生成ルーチン(図21を参照して上述した)を含んでよい。加えて、メモリ1650は、さらに、オペレーティングシステム1655を格納している。一部の実施形態では、これらソフトウェアコンポーネントが、コンピュータ可読記憶媒体1695から符号化デバイス1600のメモリ1650に、非持続性コンピュータ可読記憶媒体1695(たとえばフロッピー(登録商標)ディスク、テープ、DVD/CD−ROMドライブ、メモリカード等)に関連付けられているドライブメカニズム(不図示)を利用してロードされてよい。一部の実施形態では、ソフトウェアコンポーネントも、コンピュータ可読記憶媒体1695経由ではなく、随意のネットワークインタフェース1630経由でロードされてよい。
一部の実施形態では、復号化デバイス1600はさらに、符号化されている動画ソース1420と通信する専用インタフェース1635(高速シリアルバス等)を含んでよい。一部の実施形態では、復号化デバイス1600が、ネットワークインタフェース1630経由で、符号化されている動画ソース1420と通信してよい。他の実施形態では、符号化されている動画ソース1420がメモリ1650に常駐していてもよい。
大体従来の汎用コンピューティングデバイスに準拠している復号化デバイス1600の一例を示したが、復号化デバイス1600は、動画を復号化することができる多数のデバイスのいずれであってもよい(たとえば、動画再生デバイス、パソコン、ゲームコンソール、セットトップボックス、ハンドヘルドコンピュータ、携帯電話、またはその他の適切なデバイス)。
図17は、一実施形態における、たとえば符号器デバイス1500で実行可能な、コードブック動き補償フィルタリング動画符号化ルーチン1700を示す。サブルーチンブロック1800(図18を参照して、後述する)では、ルーチン1700が、それぞれが複数のサブペル位置に対応している複数のサブペル位置群に分類される複数の動き補償フィルタを含むものとして均等に特徴付けられており、ここで複数のサブペル位置群のそれぞれは、1つの画像の複数のブロックを複数のサブペル位置のうち対応するもので補間するのに適した複数の動き補償フィルタを含んでいる。たとえば、表1に示すコードブックはサブペル位置{a−0}に対応する、15または16群の動き補償フィルタを含むものとして特徴付けられてよい。たとえば以下のようになる。
サブペル位置{a}群:{a,a,a,...a15
サブペル位置{b}群:{b,b,b,...b15
・・
サブペル位置{c}群:{c,c,c,...c15
ブロック1705では、ルーチン1700が、符号化されていない動画フレームまたは画像を、符号化するために取得する。場合によっては、符号化されていない動画フレームまたは画像は、複数の異なる部分を含むように決定される場合がある(1つの画像を複数の部分に分割するための様々な分割モードを示している図7aから図7f参照)。他の場合には、符号化されていない動画フレームまたは画像が、1つの部分として捉えられる場合もある。
符号化されていない動画フレームまたは画像を符号化している間に、ルーチン1700は、ループブロック1710を開始する際に、符号化されていないフレームまたは動画の1以上の部分をそれぞれ処理する。サブルーチンブロック1900で(図19a、図19bを参照して、後述する)、ルーチン1700は、コードブックから、複数の動き補償フィルタのサブセットを、動画フレームまたは画像の現在の部分に最適化されたものとして選択して、この選択されたサブセットには、複数のサブペル位置群それぞれから選ばれた1つが含まれている。たとえば表1を参照して上述したように、コードブックは、さらに、各サブペル位置群から1つずつ、複数の予め定められた動き補償フィルタのサブセットを含むことで特徴付けられてもよく、この例を以下に示す。
サブセットID=0:{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o
サブセットID=1:{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o
・・
サブセットID=15:{a15,b15,c15,d15,e15,f15,g15,h15,i15,j15,k15,l15,m15,n15,o15
サブセットID=16:{a,b,c,d,e,f,g12,h,i,j,k,l11,m,n,o10
・・
サブセットID=255:{a10,b,c12,d,e,f,g,h10,i,j,k1,l,m11,n,o10
サブルーチンブロック1900は、コードブック内でfilterset_sent flag==1を返すが、サブペルフィルタセットコードは、コードブック内の複数の動き補償フィルタの選択されたサブセットを特定している。たとえば、一実施形態では、サブペルフィルタセットコードは、コードブックへの「subset id」数またはその他のインデックスであってよい(またはこれらから導出されてよい)。ブロック1720では、ルーチン1700が、filterset_sent flagおよびサブペルフィルタセットコード(filterset_sent flagで示されている場合)を、ルーチン1700が生成する符号化されているビットストリームに書き込む。
サブルーチンブロック2000では、ルーチン1700が、随意に、符号化されていないフレームまたは画像の現在の部分について、整数位置動き補償フィルタを随意に決定する(図20を参照して後述する)。ループブロック1730を終了させるにあたり、ルーチン1700は、ブロック1710に繰り返し戻り、符号化されていないフレームまたは画像の次の部分(もしあれば)を処理する。このように、ビットストリームへの少なくとも1つの動き補償フィルタセットを符号化すると、ルーチン1700がブロック1799で終了する。多くの場合、ルーチン1700は、複数の動画フレーム数についてシリアルに実行され、ルーチン1700は、より大きい動画符号化プロセスの一部である。
図18は、一実施形態において、1つのコードブックを得るためのサブルーチン1800を示す。一部の実施形態では、コードブックを生成するプロセスは非常に長くかかり(数時間または数日かかる)、コードブックを一度だけ(または少ない頻度で)生成して、再利用のために格納してよい。決定ブロック1805では、サブルーチン1800が、前に生成したコードブックを再利用のために格納したかを判断する。判断結果が肯定的である場合には、ブロック1810で、サブルーチン1800が、格納したコードブックを読み出して、最後のブロック1899に戻す。
しかし、前に生成したコードブックが再利用のために格納されていない場合には、サブルーチン1800は、コードブックを生成するプロセスを開始する。一部の実施形態では、ブロック1815−1865は、「オフライン」のコードブック生成ルーチンとして独立して実行することができる。ブロック1815−1865は、図10のブロック1005−1050に示すプロセスに類似した別の図または別の特徴付として理解することができる。簡潔性のために、図10に関して上述した主題は、主には図18の以下の説明では繰り返さないことにする。
開始ループブロック1815を始めるにあたり、サブルーチン1800は、複数のサブペル位置のうちそれぞれを処理する(たとえば、図3に示されており、上述したa―o)。
ブロック1820で、サブルーチン1800は、現在のサブペル位置のデフォルトである動き補償フィルタを決定する。たとえば一実施形態では、サブルーチン1800が、H.264の固定フィルタセットまたはその他の適切なデフォルトのフィルタセット等からの固定されたサブペル動き補償フィルタを利用してよい。
ブロック1825で、サブルーチン1800は、現在のサブペル位置についての複数の改良された動き補償フィルタを生成するために、決定されたデフォルトの動き補償フィルタを繰り返し改良する。たとえば一実施形態では、サブルーチン1800は、ランダムウォークアルゴリズム(または類似した最適化アルゴリズム)を利用して、決定されたデフォルトの動き補償フィルタを繰り返し改良して、複数の改良された動き補償フィルタを生成することができる。
開始ループブロック1830を始める際に、サブルーチン1800は、複数の改良された動き補償フィルタそれぞれを処理する。ブロック1835で、サブルーチン1800は、現在の改良された動き補償フィルタの符号利得(たとえばSADの計測値)を決定する。ブロック1840で、サブルーチン1800は、ブロック1830に繰り返し戻り、次の改良された動き補償フィルタ(もしあれば)を処理する。
ブロック1845で、サブルーチン1800は、決定された符号利得を利用して、現在のサブペル位置(たとえば高い符号利得、または低いSADを有するフィルタ群)についての良好なパフォーマンスを有する改良された動き補償フィルタ群を選択する。ブロック1850では、サブルーチン1800が、現在のサブペル位置について選択された良好なパフォーマンスを有する改良された動き補償フィルタ群を格納する。最後のループブロック1855では、サブルーチン1800は、ブロック1815に繰り返し戻り、次のサブペル位置(もしあれば)を処理する。一部の実施形態では、選択された良好なパフォーマンスを有する改良された動き補償フィルタは、現在のサブペル位置についての「ベース」のフィルタ(上述した)として捉えることができ、他のサブペル位置の「ベース」フィルタとあわさって、「ベース」のコードブックまたは「ベース」のフィルタセット群が形成される。
ブロック1860で、サブルーチン1800は、良好なパフォーマンスを有する改良された動き補償フィルタ群を利用して、複数のフィルタセットを繰り返し決定して(各サブペル位置について1つの群)、各フィルタセットが、各フィルタがそれぞれのサブペル位置にあたる、明示的なフィルタの組み合わせを含んでいる。(本開示における文脈では、「フィルタセット」が、動き補償フィルタの「サブセット」と称されることがある、たとえば、{a,b,c,d,e,f,g12,h,i,j,k,l11,m,n,o10})。一部の実施形態では、サブルーチン1800は、ランダムウォークアルゴリズム(または類似した最適化アルゴリズム)を利用して、複数のフィルタセット/サブセットを繰り返し決定することができる。ブロック1865で、サブルーチン1800は、コードブックにおける決定されたフィルタセット/サブセットを示し、各決定されたフィルタセット/サブセットが、アドレスされたり、選択されたり、インデックスされたり、さもなくば、コードブック内で特定されてよい。たとえば一実施形態では、サブルーチン1800が、各決定されたフィルタセット/サブセットに、「ID」数またはインデックスを割り当てることができる。
ブロック1870では、サブルーチン1800が、後で再利用するためにこのようにして生成されたコードブックを格納する。ブロック1899で、サブルーチン1800が終了して、コードブックを戻す。
図19a、図19bは、一実施形態における、コードブックから動き補償フィルタのサブセットを選択するサブルーチン1900を示す。図19a、図19bは、図11a、図11bに示すプロセスに類似した別の図または別の特徴付として理解することができ、これらに関しては詳述済みである。簡潔性のために、図11a、図11bに関して上述した主題は、主には図19a、図19bの以下の説明では繰り返さないことにする。
ブロック1903で、サブルーチン1900が、画像の少なくとも一部(たとえば、画像を複数の部分に分割する様々な分割モードを示す図7aから図7fを参照)を取得して、この画像の部分には、複数の画像コンテンツブロックが含まれている。開始ループブロック1905を始めるにあたり、サブルーチン1900が、この画像の部分の各画像コンテンツブロックを処理する。開始ループブロック1908を開始する際に、サブルーチン1900は、複数のサブペル位置それぞれを処理する(たとえば図3に示すa―o、上で説明済みである)。
ブロック1910で、サブルーチン1900は、現在のサブペル位置{a,a,a,...a15}について複数の「ベース」動き補償フィルタを取得する。開始ループブロック1913を始めるにあたり、サブルーチン1900は、現在のサブペル位置の「ベース」動き補償フィルタそれぞれを処理する。ブロック1915で、サブルーチン1900は、現在のサブペル位置(たとえばa)の現在の「ベース」動き補償フィルタについて個々の符号利得を決定する(SADを計算することで)。最終ループブロック1918では、サブルーチン1900が、ブロック1913に繰り返し戻り、現在のサブペル位置についての次の「ベース」動き補償フィルタ(もしあれば)を処理する。
現在のサブペル位置についての各「ベース」動き補償フィルタについて符号利得を決定すると(ブロック1920)、サブルーチン1900は、「デフォルト」の動き補償フィルタについて符号利得を決定する(これは、デフォルトの動き補償フィルタセットの一部である)。たとえば一実施形態では、サブルーチン1900が、現在のサブペル位置について固定された動き補償フィルタの符号利得を決定してよい(たとえば、H.264で利用される固定された動き補償フィルタセットの1つのフィルタ、または、他の「デフォルト」の動き補償リフィルタの1つ)。
最終ループブロック1923では、サブルーチン1900がブロック1908に繰り返し戻り、次のサブペル位置を処理する(もしあれば)。最終ループブロック1925では、サブルーチン1900がブロック1905に繰り返し戻り、その画像の部分の次の画像コンテンツブロックを処理する(もしあれば)。
ブロック1928で、サブルーチン1900は、複数のアダプティブフィルタセットを取得して、ここで各フィルタセットは、各サブペル位置について「ベース」動き補償フィルタの1つを含んでいる。たとえば一実施形態では、サブルーチン1900が、以下のような複数のアダプティブフィルタセットを含むコードブックを取得してよい。
サブセットID=0:{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o
サブセットID=1:{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o
・・
サブセットID=15:{a15,b15,c15,d15,e15,f15,g15,h15,i15,j15,k15,l15,m15,n15,o15
サブセットID=16:{a,b,c,d,e,f,g12,h,i,j,k,l11,m,n,o10
・・
サブセットID=255:{a10,b,c12,d,e,f,g,h10,i,j,k1,l,m11,n,o10
開始ループブロック1930の開始にあたり、サブルーチン1900は、取得したアダプティブフィルタセットそれぞれを処理する。ブロック1933で、サブルーチン1900は、現在のアダプティブフィルタセットの累積符号利得を決定する。たとえば一実施形態では、累積符号利得を決定することに、現在のアダプティブフィルタセットを構成するフィルタにおいて、個々の符号利得(ブロック1915で決定されたもの)を合計することが含まれてよい。最後のループブロック1935では、サブルーチン1900がブロック1930に繰り返し戻り、次のアダプティブフィルタセットを処理する(もしあれば)。
ブロック1938で、各アダプティブフィルタセットについて累積符号利得が決定されると、サブルーチン1900で、上述したブロック1920で決定された個々の「デフォルト」の符号利得を利用して、「デフォルト」のフィルタセットの「デフォルト」の累積符号利得(たとえば、H.264の固定フィルタセットまたは他の適切なセット)を決定する。
ブロック1940で、ブロック1933で決定された累積符号利得を利用して、サブルーチン1900は、ブロック1903で取得された画像の部分の良好な累積符号利得を持つアダプティブフィルタセットを選択する。一部の実施形態では、選択されたアダプティブフィルタセットは、決定されたうちの最高の累積符号利得を有するアダプティブフィルタセットであってよい。
決定ブロック1943では、サブルーチン1900は、ブロック1938で決定された「デフォルト」の累積符号利得を、選択された良好なアダプティブフィルタセットの累積符号利得と比較する。「デフォルト」のフィルタセットのほうが、高い符号利得を提供している場合(SADが低い)には、ブロック1950で、サブルーチン1900は、filterset_sentフラグを0またはNOにして、最終ブロック1999でfilterset_sentフラグを戻す。
しかしアダプティブフィルタセットのほうが、高い符号利得を提供している場合(SADが低い)には、ブロック1945で、サブルーチン1900は、filterset_sentフラグを1またはYESにして、最終ブロック1948でサブルーチン1900が、選択されたアダプティブフィルタセットを特定するサブペルフィルタセットコードを決定する。たとえば、一実施形態では、サブペルフィルタセットコードは、コードブックへの「subset id」数またはその他のインデックスであってよい(またはこれらから導出されてよい)。サブルーチン1900は、最終ブロック1999で、filterset_sentフラグおよび決定されたサブペルフィルタセットコードを戻す。
図20は、一実施形態における、1つの画像の一部の整数位置動き補償フィルタを決定するサブルーチン2000を示す。ブロック2005で、サブルーチン2000は、画像の少なくとも一部を取得して(たとえば1つの画像を複数の部分に分割するための様々な分割モードを示している図7aから図7f参照)、1つの画像の部分には、複数の画像コンテンツブロックが含まれている。開始ループブロック2010を開始する際、サブルーチン2000は、画像の部分の画像コンテンツブロックそれぞれを処理する。
ブロック2015で、サブルーチン2000は、複数の整数位置動き補償フィルタ(たとえば0,0,0,...047)を取得する。たとえば一実施形態では、サブルーチン2000が、整数位置コードブック(たとえば表2に部分的に示されているもの)を取得してよい。他の実施形態では、複数の整数位置動き補償フィルタを、サブペル位置フィルタを含む1つのコードブック内に含めることができる。
開始ループブロック2020を開始するにあたり、サブルーチン2000は、複数の整数位置動き補償フィルタそれぞれを処理する。ブロック2025で、サブルーチン2000は、現在の整数位置動き補償フィルタについての個々の符号利得(たとえばSADを計算することで)を決定する。最終ループブロック2030では、サブルーチン2000がブロック2020に繰り返し帰り、次の整数位置動き補償フィルタ(もしあれば)を処理する。最終ループブロック2035では、サブルーチン2000がブロック2010に繰り返し帰り、画像の部分の次の画像コンテンツブロック(もしあれば)を処理する。
ブロック2040で、各整数位置動き補償フィルタおよび画像の部分の各画像コンテンツブロックについて符号利得が決定されると、サブルーチン2000は、複数の整数位置動き補償フィルタの1つを、現在の画像の部分の好適な符号利得(低いSAD)を有するものとして選択する。
決定ブロック2045では、サブルーチン2000は、選択された好適な整数位置動き補償フィルタの符号利得を、これも同じ画像部分について選択されたサブペルフィルタセットの符号利得に比較する(たとえば、図20のブロック2040の上の説明を参照)。サブペルフィルタセットのほうが高い符号利得を提供している(SADが低い)場合、ブロック2060で、サブルーチン2000は、intfilt_sentフラグを0またはNOにして、最終ブロック2099でintfilt_sentフラグを戻す。
しかし好適な整数位置動き補償フィルタのほうが高い符号利得(SADが低い)場合には、ブロック2050で、サブルーチン2000が、intfilt_sentフラグを1またはYESにして、ブロック2055で、サブルーチン2000が、ビットストリームに、選択された好適な整数位置動き補償フィルタを特定する整数位置フィルタコードを書き込む。たとえば一実施形態では、整数位置フィルタコードは、コードブックへの「subset id」数またはその他のインデックスであってよい(またはこれらから導出されてよい)。サブルーチン2000は、最終ブロック2099に戻る。
図21は、一実施形態における、たとえば復号化デバイス1600で実行可能な、コードブック動き補償フィルタリング動画復号化ルーチン2100を示す。ブロック2105で、ルーチン2100が、符号化されている動画ソースから符号化されているビットストリームを取得して、この符号化されているビットストリームは、動画の1以上の画像またはフレームを含んでいる。開始ループブロック2110を始めるにあたり、ルーチン2100は、動画の符号化されている画像またはフレームそれぞれを処理する。
ブロック2115で、ルーチン2100は、ビットストリームから、現在の符号化されている画像またはフレームの1以上の画像部分を特定する(1つの画像を複数の部分に分割するための様々な分割モードを示している図7aから図7f参照)1以上の画像部分コードを読み出す。たとえば一実施形態では、ルーチン2100は、図12で示し上述した、pict_only1202、numpt1203、map_sent1204、および、ptmap1205の少なくとも1つのコードの一部またはすべてを読み出すことができる(図12を参照して上述したことを参照)。
開始ループブロック2120を始めるにあたり、現在の動画の符号化されている画像またはフレームの1以上の画像部分それぞれを処理する。
決定ブロック2125では、ルーチン2100は、符号化されているビットストリームが、画像の現在の符号化されている画像またはフレームの画像部分の整数位置のフィルタコードを含むかを判断する。たとえば一実施形態では、ルーチン2100は、符号化されているビットストリームが、図12に示し、上述されているintfilt_sentフラグを含むかを判断してよい。
ルーチン2100で、符号化されているビットストリームがこの整数位置フィルタコードを含むと判断する場合、ブロック2130で、ルーチン2100が、ビットストリームから整数位置フィルタコードを読み出す。たとえば一実施形態では、ルーチン2100が、intpelfilt_code1211をビットストリームから読み出してよい(図12に示し、上述したことを参照)。
ブロック2135で、ルーチン2100は、複数の整数位置動き補償フィルタ(たとえば0,0,0,...047)を取得する。たとえば一実施形態では、サブルーチン2000が、整数位置コードブック(たとえば表2に部分的に示されているもの)を取得してよい。他の実施形態では、複数の整数位置動き補償フィルタを、サブペル位置フィルタをこれも含む1つのコードブック内に含めることができる。通常であれば、ルーチン2100が、前に格納した複数の整数位置の動き補償フィルタを、ルーチン2100にアクセス可能なメモリから読み出してよい。
ブロック2140で、ルーチン2100は、ブロック2130でビットストリームから読み出した整数位置フィルタコード(intpelfilt_code1211)が示す複数の整数位置動き補償フィルタのうちの1つを選択する。そしてサブルーチン2100は、ブロック2170で選択した整数位置動き補償フィルタを利用して、現在符号化されている動画の画像またはフレームの現在の画像部分のブロックを予測する。
しかし決定ブロック2125で、もしもルーチン2100が、符号化されているビットストリームが整数位置フィルタコードを含まないと判断した場合には、決定ブロック2145で、ルーチン2100が、符号化されているビットストリームが、動画の現在符号化されている画像またはフレームの現在の画像部分のサブペルフィルタセットコードを含むかを判断する。たとえば一実施形態では、ルーチン2100は、符号化されているビットストリームが、filt_sentフラグ1206(図12に示し、上述した)を含むかを判断してよい。含まない場合には、ブロック2165で、ルーチン2100は、デフォルトのサブペル動き補償フィルタセットを選択する(たとえば、H.264で利用される固定されたサブペルフィルタセットまたは他の適切なデフォルトのフィルタのセット)。次いでサブルーチン2100は、デフォルトのサブペル動き補償フィルタセットを利用して(ブロック2170)、動画の現在の符号化されている画像またはフレームの現在の画像部分のブロックを予測する。
しかしルーチン2100が決定ブロック2145で符号化されているビットストリームが動画の現在符号化されている画像またはフレームの現在の画像部分のサブペルフィルタセットコードを含むと判断する場合には、ブロック2150で、ルーチン2100が、ビットストリームからサブペルフィルタセットコードを読み出す。たとえば一実施形態では、ルーチン2100が、ビットストリームからsubpelilt_code1208(図12に示し上述した)を読み出す。
ブロック2155で、ルーチン2100は、サブペル動き補償コードブック(表1に部分的に示したようなもの)を上述したように取得する。通常であれば、ルーチン2100が、前に格納したサブペル動き補償コードブックのコピーを、ルーチン2100にアクセス可能なメモリから読み出してよい。
ブロック2140で、ルーチン2100は、ブロック2130でビットストリームから読み出した整数位置フィルタコード(subpelfilt_code1208)が示す複数の整数位置動き補償フィルタのうちの1つを選択する。そしてサブルーチン2100は、ブロック2170で選択した整数位置動き補償フィルタを利用して、現在符号化されている動画の画像またはフレームの現在の画像部分のブロックを予測する。
最終ループブロック2175で、ルーチン2100はブロック2120に繰り返し戻り、動画の現在符号化されている画像またはフレームの次の画像部分(もしあれば)を処理する。
ブロック2180で、ルーチン2100は、ブロック2170の様々な繰り返しにおいて予測された1以上の画像部分の予測されたブロックに従って符号化された画像を生成する。ブロック2185で、ルーチン2100は、生成した画像を、ルーチン2100を実行するデバイスに関するディスプレイに表示する。
ループブロック2190を終えるにあたって、ルーチン2100はブロック2110に繰り返し戻り、動画の次の符号化されている画像またはフレーム(もしあれば)を処理する。ルーチン2100はブロック2199で終了する。
ここでは特定の実施形態を図示して記載してきたが、当業者であれば、本開示の範囲を逸脱せずに、示した特定の実施形態を、代わりまたは均等物である実装例で置き換えることができるだろう。本願は、ここに開示する実施形態のすべての適合例および変形例を含むよう意図される。

Claims (23)

  1. 符号化されるビデオフレームの部分を予測するための複数のサブペル位置のためにアダプティブ動き補償フィルタセットを符号化する動画符号化デバイスにより実装される方法であって、
    前記動画符号化デバイスにより、それぞれ前記複数のサブペル位置に対応している複数のサブペル位置群に分類化された複数の動き補償フィルタを含むコードブックを取得する段階であって、前記複数のサブペル位置群それぞれは、前記複数のサブペル位置のいずれか対応するものにおける画像の複数の部分を補間するのに適した複数の動き補償フィルタを含み、前記複数の動き補償フィルタは、ベースコードブックのフィルタセットと、仮想コードブックのフィルタセットと含み、前記仮想コードブックのフィルタセットは、前記ベースコードブックのフィルタセットから選択されたフィルタの組み合わせを含む段階と、
    前記動画符号化デバイスにより、前記動画符号化デバイスによる符号化のために符号化されていない動画フレームを取得する段階と、
    分割モードによる分割画像として前記動画フレームの部分を選択する段階と、
    前記動画符号化デバイスにより、前記選択された分割画像をビットストリームに符号化する段階と
    前記分割画像の符号化中に、前記動画符号化デバイスは、
    前記コードブックから、前記複数の動き補償フィルタのサブセットを、前記分割画像を予測するのに適したものとして選択する段階であって、前記選択されるサブセットは、前記複数のサブペル位置群それぞれの1つを含む段階と、
    前記ビットストリームに、前記分割モードを特定するコードと、前記コードブックの前記複数の動き補償フィルタのうちの前記選択されたサブセットを特定するサブペルフィルタコードを含める段階と
    を行う段階を実行する、方法。
  2. 前記複数の動き補償フィルタの前記サブセットを選択する段階は、
    前記複数の動き補償フィルタの複数の予め定められたサブセットの1つを選択する段階を有する、請求項1に記載の方法。
  3. 前記ビットストリームに含まれる、前記分割モードを特定する前記コードは、前記複数の予め定められたサブセットのうちから前記選択されるサブセットを特定するインデックスを含む、請求項2に記載の方法。
  4. 前記複数の動き補償フィルタの複数の予め定められたサブセットの1つを選択する段階は、
    前記分割画像について、前記複数の動き補償フィルタの複数の個々の符号利得を決定する段階と、
    前記決定された複数の個々の符号利得を利用して、前記分割画像に適用する場合における、前記複数の動き補償フィルタの前記複数の予め定められたサブセットそれぞれの累積符号利得を決定する段階と、
    前記分割画像の好適な累積符号利得を有する前記複数の予め定められたサブセットの1つを選択する段階と
    を有する、請求項2に記載の方法。
  5. 前記分割画像に適用するデフォルトのフィルタセットについてデフォルトの累積符号利得を決定する段階であって、前記デフォルトのフィルタセットは、前記複数のサブペル位置にそれぞれ対応する複数のデフォルトのサブペル動き補償フィルタを含む段階と、
    前記好適な累積符号利得が前記デフォルトの累積符号利得より好適であると判断する段階と
    をさらに備え、前記デフォルトのフィルタセットは、前記コードブックのフィルタセットである、請求項4に記載の方法。
  6. 複数の整数位置動き補償フィルタを取得する段階と、
    前記分割画像の符号化中に、前記動画符号化デバイスが、前記複数の整数位置動き補償フィルタのいずれか1つを、前記分割画像を予測するために適したものとして選択する段階と
    をさらに備える、請求項1から5のいずれか一項に記載の方法。
  7. 前記複数の整数位置動き補償フィルタのうちの前記選択したものが、前記複数の動き補償フィルタのうちの前記選択したサブセットよりも符号利得が良いと判断する段階と、
    前記動画符号化デバイスが生成する前記ビットストリームに、
    前記複数の整数位置動き補償フィルタのうちの前記選択したものを特定する整数フィルタコードと、
    前記動画フレームの少なくとも一部の前記ビットストリームに、前記整数フィルタコードが含まれていることを示す整数フィルタのフラグと
    を含める段階と
    をさらに備える、請求項6に記載の方法。
  8. 前記コードブックはさらに、前記ベースコードブックのフィルタセットとして前記複数の整数位置動き補償フィルタを含む、請求項6に記載の方法。
  9. 前記複数の整数位置動き補償フィルタを取得する段階は、整数位置コードブックを取得する段階を含む、請求項6に記載の方法。
  10. 前記コードブックを取得する段階は、
    前記複数のサブペル位置にそれぞれ対応する複数のベースの動き補償フィルタを取得する段階と、
    前記複数のサブペル位置それぞれについて、(i)前記ベースの動き補償フィルタからフィルタの組み合わせを繰り返し選択して、現在のサブペル位置に対応する複数の改良された動き補償フィルタを生成することと、(ii)前記ベースの動き補償フィルタにそれぞれ対応する符号利得を決定して、前記複数の改良された動き補償フィルタの符号利得を統合することと、(iii)前記決定され、前記統合された符号利得に従って、前記生成された複数の改良された動き補償フィルタから、前記仮想コードブックのフィルタセットとして、前記現在のサブペル位置に対応している良好なパフォーマンスの動き補償フィルタのサブペル位置群を選択することとを行うこととを少なくとも行うことで、前記複数のサブペル位置にそれぞれ対応する複数の仮想サブペル位置群フィルタを生成する段階と
    を含む、請求項1から9のいずれか一項に記載の方法。
  11. 前記良好なパフォーマンスの動き補償フィルタの複数のサブセットを選択することをさらに備え、各サブセットは、前記複数のサブペル位置群それぞれから選択される1つの良好なパフォーマンスの動き補償フィルタを含む、請求項10に記載の方法。
  12. コンピュータに、
    請求項1から11のいずれか一項に記載の方法を実行させるためのプログラム。
  13. プロセッサにより実行されると請求項1に記載の方法を実行させるための命令を格納する記憶媒体と前記プロセッサとを備える、動画符号化装置。
  14. 符号化されているビデオフレームの部分を予測するための複数のサブペル位置のためにアダプティブ動き補償フィルタセットを復号化する動画復号化デバイスにより実装される方法であって、
    前記動画復号化デバイスにより、それぞれ前記複数のサブペル位置に対応している複数のサブペル位置群に分類化された複数の動き補償フィルタを含むコードブックを取得する段階であって、前記複数のサブペル位置群それぞれは、前記複数のサブペル位置のいずれか対応するものにおける画像の複数の部分を補間するのに適した複数の動き補償フィルタを含み、前記複数の動き補償フィルタは、ベースコードブックのフィルタセットと、仮想コードブックのフィルタセットと含み、前記仮想コードブックのフィルタセットは、前記ベースコードブックのフィルタセットから選択されたフィルタの組み合わせを含む段階と、
    前記符号化されている動画フレームと、前記コードブック内の前記アダプティブ動き補償フィルタセットを特定するサブペルフィルタコードとを含む符号化されているビットストリームを取得する段階であって、前記符号化されている動画フレームは、分割モードにより選択された部分を含み、前記符号化されているビットストリームは、さらに前記分割モードを特定するコードを含み、前記アダプティブ動き補償フィルタセットは、前記複数のサブペル位置に対応している複数の動き補償フィルタを含む段階と、
    前記符号化されている動画フレームの復号中に、前記動画復号化デバイスが、前記サブペルフィルタコードが特定する前記アダプティブ動き補償フィルタセットを、前記コードブックから選択する段階と、
    前記アダプティブ動き補償フィルタセットを利用して、前記符号化されている画像フレームの少なくとも一部分に対応している画像コンテンツの複数の部分を予測する段階と、
    前記予測された複数の画像コンテンツの部分に少なくともしたがって、復号された画像を生成する段階と、
    前記動画復号化デバイスに関するディスプレイに、前記生成された復号化された画像を表示する段階と
    を備える、方法。
  15. 前記符号化されているビットストリームはさらに、
    前記コードブック内の第2のアダプティブ動き補償フィルタセットを特定する第2のサブペルフィルタコードと、
    前記動画復号化デバイスに、前記符号化されている画像フレームの前記部分と前記符号化されている画像フレームの第2の部分とを特定させる少なくとも1つの部分を特定するコードと
    を含む、請求項14に記載の方法。
  16. 前記符号化されている動画フレームの復号化中に、前記動画復号化デバイスは、前記第2のサブペルフィルタコードが特定する前記第2のアダプティブ動き補償フィルタセットを前記コードブックから選択する段階と、
    前記第2のアダプティブ動き補償フィルタセットを利用して、前記符号化されている画像フレームの少なくとも第2の部分に対応している第2の複数の画像コンテンツの部分を予測する段階と、
    をさらに備え、
    前記復号化された画像は、さらに、前記予測された第2の複数の画像コンテンツの部分に従って生成される、請求項15に記載の方法。
  17. 複数の整数位置動き補償フィルタを取得する段階をさらに備える、請求項14から16のいずれか一項に記載の方法。
  18. 前記符号化されているビットストリームはさらに、
    前記符号化されている画像フレームの前記部分と前記符号化されている画像フレームの第2の部分とを前記動画復号化デバイスに特定させる少なくとも1つの部分特定コードと、
    前記複数の整数位置動き補償フィルタのうち1つを特定する整数フィルタコードと、
    前記整数フィルタコードが、前記動画フレームの少なくとも前記第2の部分について前記ビットストリームに含まれていることを示す整数フィルタフラグと
    を含む、請求項17に記載の方法。
  19. 前記符号化されている動画フレームの復号化中に、
    前記整数フィルタフラグを読み出して、これに呼応して、前記複数の整数位置動き補償フィルタから、前記整数フィルタコードが特定する整数位置動き補償フィルタを選択する段階と、
    前記選択された整数位置動き補償フィルタを利用して、前記符号化されている画像フレームの少なくとも前記第2の部分に対応している第2の複数の画像コンテンツの部分を予測する段階と
    をさらに備え、
    前記復号された画像は、前記予測された第2の複数の画像コンテンツの部分にさらにしたがって生成される、請求項18に記載の方法。
  20. 前記コードブックはさらに、前記複数の整数位置動き補償フィルタを含む、請求項17に記載の方法。
  21. 前記複数の整数位置動き補償フィルタを取得する段階は、整数位置コードブックを取得する段階を含む、請求項17に記載の方法。
  22. コンピュータに、
    請求項14から21のいずれか一項に記載の方法を実行させるためのプログラム。
  23. プロセッサにより実行されると請求項14から21のいずれか一項に記載の方法を実行させるための命令を格納する記憶媒体と前記プロセッサとを備える、動画符号化装置。
JP2013544883A 2010-12-21 2011-12-21 高い効率の動画符号化のためのコンテンツアダプティブ動き補償フィルタリング Active JP5648183B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/974,940 2010-12-21
US12/974,940 US8761245B2 (en) 2010-12-21 2010-12-21 Content adaptive motion compensation filtering for high efficiency video coding
PCT/US2011/066666 WO2012088357A2 (en) 2010-12-21 2011-12-21 Content adaptive motion compensation filtering for high efficiency video coding

Publications (2)

Publication Number Publication Date
JP2014504098A JP2014504098A (ja) 2014-02-13
JP5648183B2 true JP5648183B2 (ja) 2015-01-07

Family

ID=46234397

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013544883A Active JP5648183B2 (ja) 2010-12-21 2011-12-21 高い効率の動画符号化のためのコンテンツアダプティブ動き補償フィルタリング

Country Status (9)

Country Link
US (2) US8761245B2 (ja)
EP (2) EP3285487A1 (ja)
JP (1) JP5648183B2 (ja)
KR (1) KR101535734B1 (ja)
CN (1) CN103430545B (ja)
ES (1) ES2845728T3 (ja)
HU (1) HUE051906T2 (ja)
PL (1) PL2656611T3 (ja)
WO (1) WO2012088357A2 (ja)

Families Citing this family (54)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2360669A1 (en) * 2010-01-22 2011-08-24 Advanced Digital Broadcast S.A. A digital video signal, a method for encoding of a digital video signal and a digital video signal encoder
US8761245B2 (en) 2010-12-21 2014-06-24 Intel Corporation Content adaptive motion compensation filtering for high efficiency video coding
US9232227B2 (en) 2011-01-14 2016-01-05 Sony Corporation Codeword space reduction for intra chroma mode signaling for HEVC
US20120183064A1 (en) 2011-01-14 2012-07-19 Sony Corporation Codeword assignment for intra chroma mode signaling for hevc
JP5670226B2 (ja) * 2011-03-04 2015-02-18 Kddi株式会社 動画像符号化装置、動画像符号化方法、およびプログラム
EP3627839B1 (en) * 2011-03-21 2021-10-20 LG Electronics Inc. Method for selecting motion vector predictor
US8767824B2 (en) 2011-07-11 2014-07-01 Sharp Kabushiki Kaisha Video decoder parallelization for tiles
US20130142251A1 (en) * 2011-12-06 2013-06-06 Sony Corporation Syntax extension of adaptive loop filter in hevc
US9179085B1 (en) 2014-11-06 2015-11-03 Duelight Llc Image sensor apparatus and method for obtaining low-noise, high-speed captures of a photographic scene
US9167169B1 (en) 2014-11-05 2015-10-20 Duelight Llc Image sensor apparatus and method for simultaneously capturing multiple images
US9167174B1 (en) 2014-11-05 2015-10-20 Duelight Llc Systems and methods for high-dynamic range images
US9160936B1 (en) 2014-11-07 2015-10-13 Duelight Llc Systems and methods for generating a high-dynamic range (HDR) pixel stream
US9179062B1 (en) 2014-11-06 2015-11-03 Duelight Llc Systems and methods for performing operations on pixel data
US9154708B1 (en) 2014-11-06 2015-10-06 Duelight Llc Image sensor apparatus and method for simultaneously capturing flash and ambient illuminated images
US9531961B2 (en) 2015-05-01 2016-12-27 Duelight Llc Systems and methods for generating a digital image using separate color and intensity data
US8976264B2 (en) 2012-09-04 2015-03-10 Duelight Llc Color balance in digital photography
US9918017B2 (en) 2012-09-04 2018-03-13 Duelight Llc Image sensor apparatus and method for obtaining multiple exposures with zero interframe time
US9137455B1 (en) * 2014-11-05 2015-09-15 Duelight Llc Image sensor apparatus and method for obtaining multiple exposures with zero interframe time
WO2014078068A1 (en) * 2012-11-13 2014-05-22 Intel Corporation Content adaptive transform coding for next generation video
CN104885467B (zh) 2013-01-30 2018-08-17 英特尔公司 用于下一代视频编码的内容自适应参数变换
US9596481B2 (en) * 2013-01-30 2017-03-14 Ati Technologies Ulc Apparatus and method for video data processing
US9819849B1 (en) 2016-07-01 2017-11-14 Duelight Llc Systems and methods for capturing digital images
US10558848B2 (en) 2017-10-05 2020-02-11 Duelight Llc System, method, and computer program for capturing an image with correct skin tone exposure
US9807322B2 (en) 2013-03-15 2017-10-31 Duelight Llc Systems and methods for a digital image sensor
FR3016764B1 (fr) * 2014-01-17 2016-02-26 Sagemcom Broadband Sas Procede et dispositif de transcodage de donnees video de h.264 vers h.265
US20160050442A1 (en) * 2014-08-15 2016-02-18 Samsung Electronics Co., Ltd. In-loop filtering in video coding
US10924688B2 (en) 2014-11-06 2021-02-16 Duelight Llc Image sensor apparatus and method for obtaining low-noise, high-speed captures of a photographic scene
US11463630B2 (en) 2014-11-07 2022-10-04 Duelight Llc Systems and methods for generating a high-dynamic range (HDR) pixel stream
US9544560B2 (en) * 2015-01-09 2017-01-10 Vixs Systems, Inc. Dynamic range converter with generic architecture and methods for use therewith
US9589313B2 (en) * 2015-01-09 2017-03-07 Vixs Systems, Inc. Dynamic range converter with pipelined architecture and methods for use therewith
US9558538B2 (en) * 2015-01-09 2017-01-31 Vixs Systems, Inc. Dynamic range converter with frame by frame adaptation and methods for use therewith
US9560330B2 (en) * 2015-01-09 2017-01-31 Vixs Systems, Inc. Dynamic range converter with reconfigurable architecture and methods for use therewith
US9860504B2 (en) 2015-01-09 2018-01-02 Vixs Systems, Inc. Color gamut mapper for dynamic range conversion and methods for use therewith
JP6642573B2 (ja) 2015-06-24 2020-02-05 ソニー株式会社 符号化装置、復号装置及び伝送制御方法
CN106331722B (zh) 2015-07-03 2019-04-26 华为技术有限公司 图像预测方法和相关设备
CN108028937B (zh) 2015-09-25 2020-07-24 华为技术有限公司 视频运动补偿装置和方法
RU2696309C1 (ru) 2015-09-25 2019-08-01 Хуавэй Текнолоджиз Ко., Лтд. Устройство и способ компенсации движения видео
AU2015410095C1 (en) 2015-09-25 2020-01-16 Huawei Technologies Co., Ltd. Adaptive sharpening filter for predictive coding
WO2017052405A1 (en) 2015-09-25 2017-03-30 Huawei Technologies Co., Ltd. Apparatus and method for video motion compensation
CN107925772B (zh) 2015-09-25 2020-04-14 华为技术有限公司 利用可选插值滤波器进行视频运动补偿的装置和方法
CN108293111B (zh) * 2015-10-16 2022-07-08 Lg电子株式会社 改善图像编码系统中的预测的滤波方法、装置和存储介质
US10602176B2 (en) 2016-04-15 2020-03-24 Google Llc Coding interpolation filter type
US10270958B2 (en) 2016-09-01 2019-04-23 Duelight Llc Systems and methods for adjusting focus based on focus target information
WO2018123312A1 (ja) * 2016-12-26 2018-07-05 日本電気株式会社 映像符号化方法、映像復号方法、映像符号化装置、映像復号装置及びプログラム
JPWO2018123314A1 (ja) * 2016-12-26 2019-10-31 日本電気株式会社 映像符号化方法、映像復号方法、映像符号化装置、映像復号装置及びプログラム
US10455253B1 (en) * 2017-02-28 2019-10-22 Google Llc Single direction long interpolation filter
CN109040758A (zh) * 2017-06-09 2018-12-18 晨星半导体股份有限公司 视频压缩方法及视频压缩装置
AU2019302396B2 (en) 2018-07-12 2023-02-02 Huawei Technologies Co., Ltd. Boundary block partitioning in video coding
JP7286757B2 (ja) 2018-09-03 2023-06-05 ホアウェイ・テクノロジーズ・カンパニー・リミテッド 分割制約要素間の関係
WO2020048465A1 (en) 2018-09-03 2020-03-12 Huawei Technologies Co., Ltd. A video encoder, a video decoder and corresponding methods
CN113170127A (zh) 2018-12-07 2021-07-23 三星电子株式会社 使用并行块和条带的视频编码方法和解码方法以及使用并行块和条带的视频编码装置和解码装置
US20220174277A1 (en) * 2019-03-11 2022-06-02 Telefonaktiebolaget Lm Ericsson (Publ) Video coding involving gop-based temporal filtering
EP4128755A4 (en) * 2020-04-29 2023-09-06 Huawei Technologies Co., Ltd. METHOD AND DEVICE FOR INTERPOLATION FILTERING UNDERSAMPLING
CN113727106B (zh) * 2020-05-25 2024-03-26 腾讯科技(深圳)有限公司 视频编码、解码方法、装置、电子设备及存储介质

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6529634B1 (en) * 1999-11-08 2003-03-04 Qualcomm, Inc. Contrast sensitive variance based adaptive block size DCT image compression
JP2008536414A (ja) * 2005-04-13 2008-09-04 ゴットフリート・ヴィルヘルム・ライプニッツ・ウニヴェルジテート・ハノーヴァー ビデオの拡張された符号化方法及び装置
US8208564B2 (en) * 2005-06-24 2012-06-26 Ntt Docomo, Inc. Method and apparatus for video encoding and decoding using adaptive interpolation
JP4516088B2 (ja) * 2007-03-19 2010-08-04 日本電信電話株式会社 動き探索方法、動き探索装置、動き探索プログラムおよびそのプログラムを記録したコンピュータ読み取り可能な記録媒体
EP2048886A1 (en) * 2007-10-11 2009-04-15 Panasonic Corporation Coding of adaptive interpolation filter coefficients
US8705622B2 (en) * 2008-04-10 2014-04-22 Qualcomm Incorporated Interpolation filter support for sub-pixel resolution in video coding
US8811484B2 (en) * 2008-07-07 2014-08-19 Qualcomm Incorporated Video encoding by filter selection
EP2157799A1 (en) * 2008-08-18 2010-02-24 Panasonic Corporation Interpolation filter with local adaptation based on block edges in the reference frame
US8325796B2 (en) * 2008-09-11 2012-12-04 Google Inc. System and method for video coding using adaptive segmentation
US9078007B2 (en) * 2008-10-03 2015-07-07 Qualcomm Incorporated Digital video coding with interpolation filters and offsets
EP2262267A1 (en) * 2009-06-10 2010-12-15 Panasonic Corporation Filter coefficient coding scheme for video coding
US20120008686A1 (en) * 2010-07-06 2012-01-12 Apple Inc. Motion compensation using vector quantized interpolation filters
US9628821B2 (en) * 2010-10-01 2017-04-18 Apple Inc. Motion compensation using decoder-defined vector quantized interpolation filters
US8761245B2 (en) 2010-12-21 2014-06-24 Intel Corporation Content adaptive motion compensation filtering for high efficiency video coding

Also Published As

Publication number Publication date
US9100662B2 (en) 2015-08-04
WO2012088357A2 (en) 2012-06-28
US8761245B2 (en) 2014-06-24
WO2012088357A3 (en) 2012-12-27
ES2845728T3 (es) 2021-07-27
JP2014504098A (ja) 2014-02-13
KR20130141630A (ko) 2013-12-26
US20120155533A1 (en) 2012-06-21
EP2656611A2 (en) 2013-10-30
US20150078448A1 (en) 2015-03-19
EP2656611A4 (en) 2016-07-06
HUE051906T2 (hu) 2021-04-28
PL2656611T3 (pl) 2021-06-14
EP3285487A1 (en) 2018-02-21
CN103430545A (zh) 2013-12-04
CN103430545B (zh) 2017-03-01
KR101535734B1 (ko) 2015-07-24
EP2656611B1 (en) 2020-12-02

Similar Documents

Publication Publication Date Title
JP5648183B2 (ja) 高い効率の動画符号化のためのコンテンツアダプティブ動き補償フィルタリング
US10595018B2 (en) Content adaptive impairment compensation filtering for high efficiency video coding
KR101677406B1 (ko) 차세대 비디오용 비디오 코덱 아키텍처
US9973757B2 (en) Content adaptive predictive and functionally predictive pictures with modified references for next generation video coding
EP3087744B1 (en) Projected interpolation prediction generation for next generation video coding
KR101672607B1 (ko) 부호화 장치, 복호화 장치, 부호화 방법, 복호화 방법, 및 컴퓨터 판독가능 기억 매체
TW201729595A (zh) 針對視訊寫碼使用與位置相關之預測組合之改良視訊幀內預測
WO2015099823A1 (en) Projected interpolation prediction generation for next generation video coding
JP2017123669A (ja) コンピュータ実装方法、デコーダ、及び、コンピュータ可読媒体
JP2013150323A (ja) 変換ユニット内の複数サインビット秘匿
EP3329678B1 (en) Method and apparatus for compressing video data
JP6503014B2 (ja) 動画像符号化方法及び動画像復号化方法
JP6678357B2 (ja) ビデオ符号化システムにおける動きベクトルの選択及び予測方法
JP6510084B2 (ja) 動画像復号化方法及び電子装置
KR100728032B1 (ko) 워핑 기반의 인트라 예측 방법
KR20090078114A (ko) 가변적 화면 그룹 예측 구조를 이용한 다시점 영상 부호화방법 및 장치, 영상 복호화 장치 그리고 상기 방법을수행하는 프로그램이 기록된 기록 매체
CN116320490A (zh) 编解码设备的图像编解码方法和图像数据的发送方法

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140526

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140624

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140911

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20141014

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20141016

R150 Certificate of patent or registration of utility model

Ref document number: 5648183

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250