(57)【特許請求の範囲】
【請求項１】
少なくとも２つのブロックを含む符号化されたデータにアクセスするステップと、
あるブロックに対する直接的な変更を含む、前記符号化されたデータに対する変更のリストを作成するステップと、
前記ブロックに直接隣接する隣接ブロックに隣接する非隣接ブロックの動き特性を決定するステップと、
前記ブロック及び前記非隣接ブロックの最初の動き特性、並びに前記変更の適用によって生じる前記ブロックの動き特性に基づいて、前記隣接ブロックに対する変更を決定するステップと、
前記変更が前記隣接ブロックに対する差を生じさせない場合に、前記リストに前記変更を記憶するステップと、
他の潜在的な変更が利用可能である場合に他の潜在的な変更を評価するステップとを含み、前記他の潜在的な変更は、事前の変更と同じ処理ステップを受ける、
ことを特徴とする方法。
【請求項２】
前記作成するステップは、
可能性のある前記変更のリストを生成するステップ、
既存のリストから前記可能性のある変更にアクセスするステップ、
前記可能性のある変更の幾つかを生成して、前記既存のリストから前記可能性のある変更のうちの残りの変更にアクセスするステップ、
のうちの１つを含む請求項１記載の方法。
【請求項３】
前記ブロックのうちの少なくとも１つの動き特性として、動きベクトルの差分を選択するステップを含む、
請求項１記載の方法。
【請求項４】
前記符号化されたデータを復号化するステップと、前記符号化されたデータを符号化するステップとを含む、
請求項１記載の方法。
【請求項５】
前記ブロックの少なくとも１つの前記符号化されたデータのコンテクストであって、前記データの符号化において利用される変数のセットであるコンテクストを決定するステップを含む、
請求項４記載の方法。
【請求項６】
前記符号化されたデータのコンテクストのインデックスを決定するステップを含み、
前記コンテクストのインデックスは、初期値（ctxIdxOffset）とインクリメント（ctxIdxInc）の合計である、
請求項５記載の方法。
【請求項７】
前記隣接ブロックの最初のインクリメントと、前記ブロックに対する直接的な変更に関連する前記隣接ブロックの新たなインクリメントを計算するステップと、
前記記憶するステップにおける前記差を決定する基準として、前記最初のインクリメントと前記新たなインクリメントを使用するステップと、
を含む請求項６記載の方法。
【請求項８】
前記ブロックのうちの少なくとも１つの前記動き特性であるとして、動きベクトルの差分を選択するステップと、
前記隣接ブロックの最初のインクリメントと、前記ブロックに対する直接的な変更に関連する前記隣接ブロックの新たなインクリメントを計算するステップと、
前記記憶するステップにおける前記差を決定する基準として、前記非隣接ブロックの動きベクトルの差分、並びに前記ブロックの前記最初の動きベクトルの差分及び新たな動きベクトルの差分を使用するステップと、
を含む請求項６記載の方法。
【請求項９】
前記隣接ブロックの最初のインクリメントと前記隣接ブロックの新たなインクリメントが異なるかを判定するステップと、
前記最初のインクリメントと前記新たなインクリメントとが異ならない場合、前記記憶ステップにおいて前記リストに前記変更を記憶するステップと、
を含む請求項６記載の方法。
【請求項１０】
前記隣接ブロックについて前記最初のインクリメントと前記新たなインクリメントとが異ならない場合、別の隣接ブロックの最初のインクリメントと、前記ブロックに対する直接的な変更に関連する前記別の隣接ブロックの新たなインクリメントとを計算するステップと、
前記記憶するステップにおける前記差を決定する更なる基準として、前記別の隣接ブロックの前記最初のインクリメント及び前記新たなインクリメントを使用するステップと、
を含む請求項６記載の方法。
【請求項１１】
前記隣接ブロックについて前記最初のインクリメントと前記新たなインクリメントとが異ならない場合、別の隣接ブロックの最初のインクリメントと、前記ブロックに対する直接的な変更に関連する前記別の隣接ブロックの新たなインクリメントとを計算するステップと、
前記記憶するステップにおける前記差を決定する更なる基準として、前記別の隣接ブロックに隣接する別の非隣接ブロックの動きベクトルの差分と、前記ブロックの最初の動きベクトルの差分及び新たな動きベクトルの差分を使用するステップと、
を含む請求項６記載の方法。
【請求項１２】
前記隣接ブロックについて前記最初のインクリメントと前記新たなインクリメントとが異ならない場合、別の隣接ブロックの最初のインクリメントと、前記ブロックに対する直接的な変更に関連する前記別の隣接ブロックの新たなインクリメントを計算するステップと、
前記隣接ブロックの前記最初のインクリメントと前記別の隣接ブロックの新たなインクリメントとが異なるかを判定するステップと、
前記別の隣接ブロックの前記最初のインクリメントと前記新たなインクリメントとが異ならない場合、前記記憶ステップにおいて前記リストに前記変更を記憶するステップと、
を含む請求項９記載の方法。
【請求項１３】
ａ）ブロックの形式であるデータを供給するか又は前記データにアクセスするステップと、前記形式は、少なくとも第一の隣接ブロックと第二の隣接ブロックとを有する現在のブロックを含み、前記第一及び第二の隣接ブロックは、前記現在のブロックに隣接し、前記現在のブロックと有限の境界を共有し、前記形式は、少なくとも第一の非隣接ブロックと第二の非隣接ブロックとを含み、前記第一及び第二の非隣接ブロックは、前記第一及び第二のブロックとそれぞれ隣接しており、前記第一及び第二の隣接ブロックと有限の境界をそれぞれ共有し、前記現在のブロックに隣接しておらず、
ｂ）前記現在のブロックと、前記第一及び第二の隣接ブロックのそれぞれの前記第一及び第二の非隣接ブロックの最初の動きベクトルの差分（MVD）のペアに基づいて、前記第一及び第二の隣接ブロックの最初のシンタックスのインクリメントctxIdxIncを計算又は決定するステップと、
ｃ）前記第一の非隣接ブロックの代替のMVDと前記現在のブロックの代替のMVDとに基づいて、前記第一の隣接ブロックの変更されたシンタックスのインクリメントctxdxを計算又は提供するステップと、
ｄ）前記第一の隣接ブロックの前記変更されたシンタックスのインクリメントと前記最初のシンタックスのインクリメントとを比較するステップと、
ｅ）前記第一の隣接ブロックの前記変更されたシンタックスのインクリメントと前記最初のシンタックスのインクリメントが等しくない場合、前記現在のブロックの代替のMVDを廃棄リストに追加するステップと、
を含む方法。
【請求項１４】
ｆ）前記第一の隣接ブロックの前記変更されたシンタックスのインクリメントと前記最初のシンタックスのインクリメントとが等しく、前記第一の非隣接ブロックの更なる代替のMVDが存在しない場合、前記第二の非隣接ブロックの代替のMVDを取得又は生成するステップと、
ｇ）前記第二の非隣接ブロックの代替のMVDと前記現在のブロックの別の代替のMVDとに基づいて前記第二の隣接ブロックの変更されたシンタックスのインクリメントctxIdxIncを計算又は供給するステップと、
ｈ）前記第二の隣接ブロックの前記変更されたシンタックスのインクリメントと前記最初のシンタックスのインクリメントとを比較するステップと、
ｉ）前記第二の隣接ブロックの前記変更されたシンタックスのインクリメントと前記最初のシンタックスのインクリメントとが等しくない場合、前記現在のブロックの代替のMVDと前記第二の隣接ブロックの代替のMVDとを廃棄リストに追加するステップと、
を含む請求項１３記載の方法。
【請求項１５】
前記第二の隣接ブロックの前記変更されたシンタックスのインクリメントと前記最初のシンタックスのインクリメントとが等しく、前記第二の非隣接ブロックの更なる代替のMVDが存在する場合、前記第二の非隣接ブロックの更なる代替のMVDを取得又は生成するステップと、
前記ステップ（ｇ）〜（ｉ）を繰り返すステップと、
を含む請求項１３記載の方法。
【請求項１６】
前記第二の隣接ブロックの前記変更されたシンタックスのインクリメントと前記最初のシンタックスのインクリメントとが等しく、前記第二の非隣接ブロックの更なる代替のMVDが存在しない場合、前記現在のブロックの代替のMVDをコンプライアンスリストに保存するステップと、
前記現在のブロックAについて代替のMVDが存在する場合、前記現在のブロックAの次の代替のMVDを取得又は生成するステップと、
前記ステップ（ｂ）〜（ｅ）を繰り返すステップと、
を含む請求項１５記載の方法。
【請求項１７】
前記第一の隣接ブロックの前記変更されたシンタックのインクリメントと前記最初のシンタックスのインクリメントとが等しく、前記第一の非隣接ブロックの更なる代替のMVDが存在する場合、前記第一の非隣接ブロックの更なる代替のMVDを取得又は生成するステップと、
前記ステップ（ｂ）〜（ｅ）を繰り返すステップと、
を含む請求項１４記載の方法。
【請求項１８】
前記データは、ビデオデータであり、前記シンタックスのインクリメントは、ウォータマークに相関する、
請求項１３記載の方法。
【請求項１９】
前記コンプライアンスリストにおけるエントリに関連するウォータマークを選択するステップと、
前記ビデオデータを符号化するステップと、
を含む請求項１８記載の方法。
【請求項２０】
ａ）ビデオデータのスライスについて、前記ビデオデータに対する潜在的な変更又はウォータマークに関連する代替の動きベクトルの差分のリストを生成するか又は前記リストにアクセスするステップと、
ｂ）前記スライスにおける現在のブロックにアクセスするステップと、
ｃ）前記現在のブロックのコンテクストのインデックスのインクリメントを計算するために使用される前記現在のブロックの第一の隣接ブロックと第二の隣接ブロックの動きベクトルの差分が前記リストにあるかを判定するステップと、
ｄ）前記ステップｃ）でリストに現れる前記第一の隣接ブロックと前記第二の隣接ブロックのそれぞれの動きベクトルの差分について、前記第一の隣接ブロックと前記第二の隣接ブロックのそれぞれの動きベクトルの差分の代替となる値を収集するステップと、
ｅ）収集された動きベクトルの差分の代替の値と、最初の動きベクトルの差分との組み合わせを生成又は分類し、最初の動きベクトルの差分のみを有する組み合わせを除き、前記最初の動きベクトルの差分に関連する最初のインクリメントを決定するステップと、
ｆ）前記組み合わせのうちの１つに関連する新たなインクリメントを決定するステップと、
ｇ）前記新たなインクリメントを前記最初のインクリメントと比較するステップと、
ｈ）前記新たなインクリメントが前記最初のインクリメントとは異なる場合、前記リストにおける前記代替の動きベクトルの差分のうちの１つを除くステップと、
ｉ）他の組み合わせについて、前記ステップｆ）〜ｈ）を繰り返すステップと、
を含む方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、CABAC（Context-based  Adaptive  Binary  Arithmetic  Coding）ビデオストリームにおけるウォータマークの埋め込みに関する。  
本出願は、2008年8月19日に提出され、“CABAC  Stream  Compliance”と題された米国特許仮出願61/189372号の利益及び優先権を特許請求するものである。この仮出願は、引用により、その完全な形で本明細書に盛り込まれる。
【背景技術】
【０００２】
今日、著作権侵害防止技術としてデジタルウォータマークの需要が強い。著作権侵害者がウォータマークを回避するのを更に困難にするため、多くの潜在的なウォーターマークが提案され、使用されることが重要である。しかし、ウォータマークにとって、意図される聴衆のために意図される視聴体験の妨げとならないことが重要である。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
更に効果的なウォータマーク技術が必要とされる。  
本発明の目的は、視覚的なアーチファクトを生成することなしに、CABAC/AVCに準拠したウォーターマーキングに関連した可能な変更のリストを生成することにあり、最終的に、CABACビデオストリームにウォータマークを埋め込む効果的な方法を提供することにある。
【課題を解決するための手段】
【０００４】
ウォータマークのようなCABACに準拠した変更を提供する方法は、少なくとも２つのブロックを含むビデオデータのような符号化データにアクセスするステップ、あるブロックへの直接的な変更を含む符号化データに対する変更のリストを作成するか又はアクセスするステップ、前記ブロックに直接隣接している隣接ブロックに隣接する非隣接ブロックの動き特性又は動きベクトルの差分を決定するステップ、前記ブロック及び非隣接ブロックの最初の動き特性並びに変更の適用から生じる前記ブロックの動き特性に基づいて隣接ブロックに対する変更を決定するステップ、変更が隣接ブロックへの差を生じさせる場合に、変更をリストに記憶するステップ、及び、他の潜在的な変更が利用可能である場合に他の潜在的な変更を評価するステップを含む。他の潜在的な変更は、直接的な変更と同じ処理ステップを受ける。ブロックは、集合エレメント又は画素からなる任意のサイズ又は数であり、隣接ブロックは、有限の境界をブロックと共有するブロックであり、非隣接ブロックは、隣接ブロックと幾つかの有限の境界を共有するブロックであって、前記ブロックとは境界を共有しない。
【０００５】
本方法は、符号化されたデータを復号化するステップ、及び符号化されたデータを符号化するステップを含み、これらのステップは、リストに記憶されている変更を使用するステップを含む。本方法は、ブロックの少なくとも１つについて符号化されたデータのコンテクストを決定するステップ、及び／又は符号化されたデータのコンテクストのインデックスを決定するステップを含み、コンテクストのインデックス（ctxIdx）は、初期値（ctxIdxOffset）及びインクリメント（ctxIdxInc）の合計である。
【０００６】
本方法は、隣接ブロックの最初のインクリメント、及び前記ブロックに対する直接的な変更に関連する隣接ブロックの新たなインクリメントを計算するステップ、記憶するステップにおける差を決定する基準として、最初のインクリメント及び新たなインクリメントを使用するステップを含み、非隣接ブロックの動きベクトルの差分並びに前記ブロックの最初の動きベクトルの差分及び新たな動きベクトルの差分は、記憶するステップにおける差を決定する基準として使用される。ある変更について隣接するブロックの最初のインクリメント及び隣接ブロックの新たなインクリメントが異なる場合、この変更は、記憶するステップにおけるリストから除かれる。
【０００７】
本方法は、最初のインクリメント及び新たなインクリメントが隣接ブロックについて異ならない場合に、別の隣接ブロックの最初のインクリメント及び前記ブロックへの直接的な変更に関連する別の隣接ブロックの新たなインクリメントを計算するステップ、及び、記憶するステップにおける差を決定する更なる基準として別の隣接ブロックの最初のインクリメント及び新たなインクリメントを使用するステップを更に含む。別の隣接ブロックに隣接する別の非隣接ブロックの動きベクトルの差分並びに前記ブロックの最初の動きベクトルの差分及び新たな動きベクトルの差分は、記憶するステップにおける差を決定する更なる基準として使用される。さらに、変更は、別の隣接ブロックの最初のインクリメント及び新たなインクリメントが異ならない場合に、記憶するステップにおけるリストに追加される。
【図面の簡単な説明】
【０００８】
本発明は、添付図面を参照して例示を通して記載される。
【図１】CABAC符号化のフローチャートである。
【図２】CABAC符号化の詳細なフローチャートである。
【図３】ある変更により影響されるブロックの動きベクトルの差分を例示する図である。
【図４】ある変更により影響されるブロックの動きベクトルの差分の別のセットを例示する図である。
【図５】符号化におけるエラーを回避するための第一のソリューションのフローチャートである。
【図６】符号化におけるエラーを回避するための第二及び第三のソリューションのフローチャートである。
【図７】符号化におけるエラーを回避するための第四のソリューションのフローチャートである。
【発明を実施するための形態】
【０００９】
本実施の形態では、CABAC（Context-based  Adaptive  Binary  Arithmetic  Coding）符号化ビデオストリームのような符号化ビデオストリームにおけるデータバイトを変更することで、ウォータマークの埋め込みが行われる。H.264/AVCビデオコーダの環境におけるCABAC符号化は、開示される発明が係るCABAC符号化ビデオストリームに適用可能であることを強調するために説明されることを指摘することは重要なことである。しかし、本発明の範囲は、他の符号化データストリーム及び他のタイプのエンコーダにも適用可能である。
【００１０】
ウォータマーキングをAVCデコーダのクラッシュ等の障害を引き起こす可能性があることを理解することにより、ネガティブなイベントを回避するために向けられる実施の形態が提供される。
【００１１】
H.264/AVCビデオ符号化規格に準拠するような符号化されたビデオビットストリームの一部は、CABACへのコンプライアンスを維持しつつ、無差別に変更することができないことを理解することは重要である。CABACへのコンプライアンスを維持する制約下で変更を可能にするシステムでは、変更は、ビデオデータをマーク又はウォータマークすることが意図される。係る変更がCABACのコンテクストに影響を及ぼさないようにされる変更を識別するために設計される。しかし、変更がその後のシンタックスエレメントの符号化／復号化のために使用されるコンテクストに影響を及ぼす可能性がある特別のケースが生じる場合がある。特に、ある変更は、エンコーダの現在のコンテクストを変えないが、デコーダで選択されたコンテクストを変える場合がある。これが生じたとき、CABACデコーダは、誤ったコンテクストを使用し、典型的に、復号化エラーを引き起こす。本出願は、このエラーが生じる特別なケースを特定し、係るエラーを生じさせる変更を回避する１以上の実施の形態を記載するものである。
【００１２】
本発明の状況は、H.264/AVC  CABAC符号化アルゴリズムの動作に適用可能であり、算術符号化システムは、エントロピー符号化を改善するために使用される。CABACは、（ａ）エレメントのコンテクストに従ってそれぞれのシンタックスエレメントの確率モデルを選択し、（ｂ）局所統計量に基づいて確率的推定を適応させ、（ｃ）算術符号化を使用すること、を通して良好な圧縮パフォーマンスを達成する。
【００１３】
図１は、CABACにおける１つのシンタックスエレメント１００を符号化する一般的なブロック図である。符号化プロセスは、１）２値化の評価１０１、２）コンテクストモデリング１０２、及び３）２進算術符号化１０３、からなる３つの基本ステップから構成される。
【００１４】
更に詳細な概要は、図２で提供される。ブロック２００で、シンタックスエレメントが与えられ、これに続いて、判定ブロック２０１で、シンタックスエレメントが評価される。ここで、非２進エレメントは、ステップ２０４に進む。ブロック２０４で、非２進エレメントのコンポーネントは、２進系列、いわゆるビンストリングに固有にマッピングされる。判定ブロック２０１で２進エレメントであると評価されたマッピングされた系列及びシンタックスエレメントは、判定ブロック２０５に進む。判定ブロック２０５で、それぞれの２値のストリングのエレメント又はそれぞれの２進エレメントであると評価されたエレメントは、レギュラー符号化モード又はバイパス符号化モードで処理される。
【００１５】
レギュラー符号化モードでは、コンテクストモデリングのステップ２０６が実行され、あるコンテクストの対応する選択が前に符号化されたシンタックスエレメント又は２値に依存するように、確率モデルが選択される。コンテクストモードの割り当ての後、２値の値２０７及びその関連するモデル２０８は、レギュラー符号化エンジン２０９に移され、ここで、算術符号化及びその後のモデル更新という最終ステージが実行される。
【００１６】
バイパス符号化モードでは、全体の符号化プロセスを高速にするため、確率的推定及び更新処理を使用しない、簡略化された非適応型の算術符号化エンジン又はバイパス符号化エンジン２１０が適用される。
【００１７】
H.264/AVC圧縮の最終ステップは、エントロピー符号化であり、そこでは、その標準によりサポートされるエントロピー符号化方法の少なくとも１つは、CABACである。特定のAVCシンタックスエレメントの符号化は、集合的にコンテクストと呼ばれる変数のセットにより決定される特定の確率モデルに関して実行される２進算術符号化技術である。CABCエンコーダは、多数のコンテクストを保持しており、それぞれのシンタックスエレメントの符号化について１つのコンテクストを選択するか、又は同じシンタックスエレメントの異なるビット位置にあるそれぞれのビットの符号化について１つのコンテクストを選択する。多くの場合、符号化プロセスにより、コンテクスト変数が変更される。それぞれのコンテクストは、コンテクスト変数のセットを保持する。符号化プロセスは、そのコンテクスト内の変数を変える。
【００１８】
H.264/AVC復元の第一のステップは、エントロピー復号化である。ストリームがCABAC符号化されているとき、復号化はCABAC復号化である。CABACデコーダは、多くのコンテクストを保持し、異なるコンテクストを使用して、異なるシンタックスエレメントを復号化するか、又は同じシンタックスエレメントの異なるビット位置にあるビットを復号化する。それぞれのコンテクストは、コンテクスト変数のセットを保持する。多くの場合、復号化プロセスは、対応するコンテクストのコンテクスト変数を変える。コンテクストのインデックスにより、異なるコンテクストが識別される。デコーダ及びエンコーダが同期されたままであるようにデータが符号化されることが重要である。デコーダは、任意の特定のエレメントについて適切なコンテクストを使用する必要がある（すなわち、そのエレメントを符号化するためにどのコンテクストが使用されたか）。そのコンテクストの変数、又はそのコンテクストの状態は、エンコーダで予測される必要がある。
【００１９】
コンテクストの状態の何れかを変更することなしに、ビットストリームにおける所定のCABAC符号化されたシンタックスエレメントを変更することは可能であり且つ有益である。しかし、変更によりその後のシンタックスエレメントの符号化のために使用される誤ったコンテクストが生じる特別のケースが生じる可能性がある。
【００２０】
ここで、動きベクトルの差分（MVD:  Motion  Vector  Differential）の２値化は、プレフィックス、及びMVDが９よりも大きい場合にはサフィックスから構成することができ、２値化されたMVDは、MVDBINとして定義することができる。フレーム間予測ブロックのMVDBINのプレフィックスを復号化するために使用されるCABACコンテクストは、H.264/AVC標準で規定されるようにコンテクストのインデックス“ctxIdx”により決定される。このインデックスは、それぞれ、以下の式に示されるように、インデックスの初期値とインクリメントであるctxIdxOffset及びctxIdxIncである２つの変数の合計から計算される。  
ctxIdx＝ctxIdxOffset＋ctxIdxInc
ctxIdxOffsetは、標準で規定される。特に、ctxIdxOffsetは、MVDBINの水平成分について４０であり、MVDBINの垂直成分について４７である。ctxIdxIncは、MVDBINのプレフィックスの異なるビット位置について異なる。第一ビット以外のビットについて、ctxIdxIncは、ビット位置により決定される。特に、ctxIdxIncは、ビット位置1,2,3,4,5,6（又はそれ以上）で、それぞれ3,4,5,6,6,6である。MVDプレフィックスの第一ビット（ビット位置0）について、CABACエンコーダ及びデコーダは、特に、現在のブロックが“Cur”でラベル付けされる図３に示されるように、左（A）の隣及び上（B）の隣である、隣接ブロックのMVD（MVD全体）の絶対値を調べることで、インクリメントctxIdxIncの値を決定する。ビット位置は、MVDBINのプレフィックスの第一ビット以外のビットについてctxIdxIncを決定する。図３におけるブロックA及びBは、現在のブロックとの境界を共有するため、隣接ブロックと呼ばれる。
【００２１】
フレーム間予測ブロックのMVDBINのプレフィックスの第一ビットを符号化／復号化するため、以下に説明されるように、使用することができる３つの可能なコンテクストが存在する。第一のコンテクストは、ctxIdxOffsetにより索引付けされ、第二のコンテクストは、ctxIdxOffset＋1により索引付けされ、第三のコンテクストは、ctxIdxOffset＋2により索引付けされる。従って、変数ctxIdxIncは、値0，1又は2を取ることができ、この変数は、３つの利用可能なコンテクストから選択するために使用される。これらのコンテクストの第一のコンテクストは、現在のMVDが小さいと期待されるケースについて使用され、第二のコンテクストは、現在のMVDの値が中間であるときに使用され、第三のコンテクストは、現在のMVDが大きいと期待されるときに使用される。この期待は、以下のように、隣接するMVDの値に基づいている。
【００２２】
（abs  Mvd_A  +  abs  Mvd_B）が3未満である場合、ctxIdxIncは、0に等しく設定される。  
（abs  Mvd_A  +  abs  Mvd_B）が3〜32の範囲にある場合、ctxIdxIncは、1に等しく設定される。  
（abs  Mvd_A  +  abs  Mvd_B）が3よりも大きい場合に、ctxIdxIncは、2に等しく設定される。
【００２３】
要するに、（abs  Mvd_A  +  abs  Mvd_B）は、
［外１］
0005373910.tif 000002
である３つに領域に含まれる。表記は、オーダセオリの表記であり、それぞれ、右が開いた区間、閉じた区間及び開いた区間である。
【００２４】
本発明における１以上の実施の形態は、コンテクストの状態を変化させないように注意しながら、幾つかのブロックのMVDに対する変更をもたらす。しかし、係る実施の形態における変更のために、ブロックAのMVD又はブロックBのMVDが変化する場合又は両者が変化する場合、（abs  Mvd_A  +  abs  Mvd_B）の新たな値は、最初の領域とは異なる領域に含まれる。その場合、ctxIdxIncは変更され、現在のブロックのMVDBINのプレフィックスの復号化のために誤ったコンテクストが使用される。従って、CABACデコーダは、ブロックCurのMVDの復号化において異なって動作し、復号化エラーが生じる可能性がある。潜在的な変更に関する復号化エラーに対する第一のソリューションは、コンテクストにおける任意の変更を誘発しないものであって、図５に例示される。これらの潜在的な変更のそれぞれは、データを表現する能力、復号化された画像の忠実度への影響、結果として得られる画素の変更のロバスト性等を含む多数の基準により評価される。識別される潜在的な変更のリストのうち、特定のアプリケーションに依存する基準に適合する基準のみがウォータマークプロセスにおける使用のために選択され、残りの基準は、捨てられる。
【００２５】
この評価は、他のブロックのctxIdxIncにおける変更を誘発して、復号化エラーを引き起こすかを判定するため、それぞれの潜在的な変更を調べることで拡張される。別のブロックのctxIdxIncにおける変更を誘発する潜在的な変更は、少なくとも１つの実現において廃棄される。
【００２６】
ブロックAのMVDに影響を及ぼすブロックAにおける潜在的な変更について、R（右）及びD（下）である、その２つの隣接するブロックのMVDは、図４に示されるように影響される場合がある。ここで、ブロックR及びDは、隣接ブロックであり、M及びNは、現在のブロックAとの境界を共有せず、隣接ブロックとの境界を共有するため、非隣接ブロックである。
【００２７】
変更が復号化エラーを引き起こすかを確認するため、このソリューションは、ブロックAにおけるMVDの変更が、ブロックRにおけるMVDのプレフィックス又はブロックDにおけるMVDのプレフィックスのctxIdxIncにおける変更を引き起こす。これは、図５に記載されるアルゴリズムにつながる。ここで、ステップ５０５で、ブロックAにおける代替のMVDが決定される。ブロックAのMVDに影響を及ぼす潜在的な変更について、ブロックR及びブロックDにおけるctxIdxIncが調べられるか又は決定される。これら２つのケースのそれぞれにおいて、ブロックAにおいて変更が行われない場合に使用された古いctxIdxIncが計算される。また、ステップ５１５で、ブロックAにおける変更がRブロックについて行われる場合に使用される新たなctxIdxIncが計算され、ステップ５２５で、ブロックAにおける変更がDブロックについて行われる場合に使用される新たなctxIdxIncが計算される。現在のAブロックに対するこれらの例となる隣接ブロックは、図５に示される。何れのケースにおいて、判定ブロック５２０におけるRブロックについて、及び判定ブロック５３５におけるDブロックについて、少なくとも１つの実施の形態では、古いctxIdxIncと新たなctxIdxIncが異なる場合、ステップ５４５において、上述された復号化エラーを引き起こす潜在力を有するため、潜在的な変更が廃棄される。古いctxIdxIncと新たなctxIdxIncが同じである場合、ステップ５４０において、ブロックAにおける代替のMVDが保存される。
【００２８】
ブロックRのctxIdxIncは、ブロックAのMVDだけでなく、ブロックRに隣接するブロックMのMVDにも依存する。ブロックRのctxIdxIncは、（abs  Mvd_A  +  abs  Mvd_B）が含まれる範囲により決定される。同様に、ブロックDのctxIdxIncは、（abs  Mvd_A  +  abs  Mvd_B）に含まれる範囲により決定されるとき、ブロックAのMVD及びブロックNのMVDの両者であるブロックDに対する隣接ブロックに依存する。
【００２９】
図５のアルゴリズムは、「ブロックAが中心」と考えることができる。ここで、ブロックAにおける潜在的な変更が考慮され、下流への影響が評価される。
【００３０】
上述したアルゴリズムであって図５に示されたアルゴリズムが全ての復号化エラーを検出又は識別しないケースが存在する。図３を参照して、図５の評価プロセスは、ブロックA及びブロックBの両者のMVDが変更されるケースに必ずしも完全に対処するものではない。別のソリューションは、このケースを考慮するために提案される。
【００３１】
第二のソリューション及び第三のソリューションは、図６に例示されており、この図は、図５のソリューションの拡張されたバージョンを示す。第二のソリューションと第三のソリューションは、第二のソリューションがステップ６４０ａを使用し、第三のソリューションが６４０ｂのオプションを使用する点で異なる。
【００３２】
第二のソリューションに関して、ブロックAにおけるそれぞれの代替のMVDについて、図４におけるブロックD及びRのctxIdxIncに関する影響が考慮され又は処理される。このソリューションで異なるのは、ブロックM及びNのMVD自身であるケースにおいて、代替の値が考慮されることである。ここで、ブロックM又はNについてどの代替を選択することができるかに関わらず、ブロックD又はRのctxIdxIncを変更しないブロックAの代替のMVDを保持することが望まれる。
【００３３】
図６は、これを行う１つのアルゴリズムを示す。ブロックAのそれぞれの代替となるMVDについて、ブロックMの全ての可能なMVDが考慮され、最初に処理される。それぞれの組み合わせは、任意の組み合わせがブロックRのctxIdxIncを変更するかを判定するために評価される。何れかの組み合わせがブロックRのctxIdxIncを変更する場合、ブロックAの代替のMVDが廃棄される。（ブロックAの所与の代替のMVDについて）組み合わせの何れもがブロックRのctxIdxIncを変更しない場合、ブロックNの全ての可能なMVDが考慮される。それぞれの組み合わせは、任意の組み合わせがブロックDのctxIdxIncを変更するかを判定するために評価される。何れかの組み合わせがブロックDのctxIdxIncを変更しない場合、ブロックAの代替のMVDが廃棄される。何れかの組み合わせがブロックDのctxIdxIncを変更する場合、ブロックAのこの代替のMVDが保存される。
【００３４】
特に、図６は、ステップ６０５で、ブロックA及びMとブロックA及びNとの最初のMVDペアに基づいて、ブロックR及びDの最初のctxIdxIncの計算で開始する。ステップ６１０で、ブロックAにおけるそれぞれの代替のMVDが調べられ、続いて、ステップ６１５で、ブロックMにおけるそれぞれのMVDが調べられる。ステップ６２０で、ブロックMの代替となるMVD及びブロックNの代替となるMVD並びにブロックAの代替となるMVDに基づいて、ブロックRの変更されたctxIdxIncで計算が実行される。これに続いて、判定ステップ６２５で、ブロックRの変更されたctxIdxIncが最初のctxIdxIncに等しい場合、ステップ６３０で、更なるブロックMの代替となるMVDが調べられ、ブロックRの変更されたctxIdxIncが最初のctxIdxIncに等しくない場合、ステップ６４０ａで、ブロックAにおける代替のMVDが廃棄される。廃棄ステップ６４０ａに続いて、別の判定ステップ６４５で、更なる代替となるブロックＡのMVDが考慮される。更なる代替となるブロックAのMVDが存在しない場合、第二のソリューションは、ステップ６８０により表されるように終了する。他方で、更なる代替となるブロックAのMVDが存在する場合、ソリューションは、ステップ６５０に進み、ブロックAにおける次の代替のMVDがアクセスされ、続いて、ステップ６１０及び上述されたステップ６１０に続くステップにループする。
【００３５】
図６を更に参照して、ステップ６２５で、ブロックRの変更されたctxIdxIncが最初のctxIdxIncに等しく、且つ判定ステップ６３０で、更なるブロックMの代替となるMVDが存在するとき、ステップ６３５で、プロセスは、ブロックMにおける次の利用可能な代替のMVDを評価するステップに進み、続いて、ステップ６１５及び上述したステップ６１５に続くステップにループする。
【００３６】
図６を更に参照して、ステップ６２５で、ブロックRの変更されたctxIdxIncが最初のctxIdxIncに等しく、且つ判定ステップ６３０で、更なるブロックMの代替となるMVDが存在しないとき、ステップ６５５で、プロセスは、ブロックNにおけるそれぞれの代替的なMVDにアクセスするステップに進み、次いで、ステップ６６０で、ブロックNの代替のMVD及びブロックAの代替のMVDに基づいて、ブロックDの変更されたctxIdxIncを計算するステップに進む。ステップ６６０に続いて、判定ブロック６５５で、ブロックDの変更されたctxIdxIncが最初のctxIdxIncに等しい場合、プロセスは、判定ブロック６７０に進み、更なるブロックNの代替となるMVDがアクセスされる。更なるブロックNの代替となるMVDが存在する場合、ブロック６７５に進み、ブロックNにおける次のMVDがアクセスされ、続いて、ステップ６５５及び上述したステップ６５５に続くステップにループする。ブロックDの変更されたctxIdxIncが最初のctxIdxIncに等しくない場合、判定ブロック６６５で、プロセスは、ステップ６４０ａに進み、ステップ６４０ａに関して上述したステップに従って進む。
【００３７】
ステップ６７０で、更なるブロックNの代替のMVDが存在しない場合、ソリューションは、ステップ６８５に進み、ブロックAにおける代替のMVDが保存され、これに続いて判定ステップ６４５で、更なるブロックAがアクセスされる。代替となるブロックAのMVDが存在しない場合、第二のソリューションは、ステップ６８０により表されるように終了する。一方で、更なる代替となるブロックAのMVDが存在する場合、ソリューションはステップ６５０に進み、ブロックAにおける次の代替となるMVDがアクセスされ、これに続いて、ステップ６１０及び上述したステップ６１０に続くステップにループされる。
【００３８】
このソリューションは、ブロックM又はNの代替となるMVDの何れかとの組み合わせがブロックD又はRのctxIdxIncを変更させるような、ブロックM又はNの代替となるMVDの何れかとの組み合わせを有するブロックAの代替のMVDを廃棄する。
【００３９】
幾つかのケースでは、ブロックAの代替のMVDを除くことが好ましくないか、又は回避されることが必要な場合がある。係るように、第三のソリューションは、図６に例示されており、この図では、ステップ６４０ｂのオプションは、ステップ６４０ａのオプションの代わりに使用される。第三のソリューションは、ブロックAの代替ではなく、ブロックM又はNに関連する代替のような、他の代替となるMVDを廃棄する。第二のソリューションのこの変更は、潜在的に不利益な組み合わせが廃棄リストに記録されるようにする。廃棄リストは、どの代替が除かれるべきかを判定するために後に処理される。
【００４０】
廃棄リストを処理するために講じられる多数のアプローチが存在する場合がある。ここに幾つかを示す。  
１．１つのアプローチは、代替となるMVDのうちのどれが最初のMVDであるかについて廃棄リスト上の組み合わせを考慮することである。この組み合わせは、組み合わせの他の代替のMVDを除くことでリストから除かれる。  
２．別のアプローチは、ヒストグラムを最初に構築することで除かれる代替のMVDの数を最小にすること、及び、廃棄リスト上の各代替のMVDについて、それが出現する回数をカウントすることである。これに続いて、最も頻繁に出現する代替のMVDを除くことで、廃棄リストからその代替のMVDを含む任意の組み合わせが除かれる。さらに、代替のMVDは、最も頻繁に出現するもの又は最も頻繁に出現しないものから、廃棄リストが空になるまで継続して除去される。  
３．第三のアプローチでは、廃棄リスト上の各代替のMVDについてヒストグラムが構築され、それが出現する回数がカウントされる。次いで、忠実度モデル及び／又はロバスト性モデルは、あるコストをそれぞれ代替のMVDに割り当てる。このコストは、廃棄リストが空となるまで、代替のMVDの除去の根拠として、発生の頻度のヒストグラムと共に使用することができる。
【００４１】
最初の３つのソリューションとは対照的に、第四のソリューションは、ブロックA又はBの何れかがブロックCurのctxIdxIncに影響を及ぼす変更を有するかを判定するため、ブロックCurにおける潜在的な変更が評価され、ブロックA又はブロックBがチェックされる点で、「ブロックC中心」又は「ブロックCur中心」であると考えられる。この第四のソリューションは、図７に例示される。少なくとも１つの実現では、図７のプロセスは、画像系列における代替のMVDを有するスライス毎に実行される。
【００４２】
ステップ７０５では、現在のスライスにおけるブロックに適用される潜在的な変更のリストが作成される。なお、本発明の実施の形態は、既存のリストにアクセス及び／又は変更する機能を含むことが意図される。この点に関して、あるスライスについて全ての代替のMVDを有するあるリストを作成、アクセス又は生成することができる。
【００４３】
つぎに、ステップ７１０では、所与のフレーム内予測されたブロックについて、全ての可能なMVDが考慮される。全てのフレーム内予測されたブロックは、少なくとも１つのMVDを有するが、その幾つかについて、識別される潜在的な変更が存在する。それぞれの潜在的な変更により、現在のブロック、ブロックCについて異なるMVDが得られる。ここで、MVDは、MVDcと呼ばれる。現在のブロック、ブロックCについて、図３に示されるように、左にあるブロックA及び上にあるブロックBといった、関心のある２つの隣接するブロックが存在する。これらのブロックのそれぞれは、MVDを有するが、幾つかの隣接するブロックについて、識別される潜在的な変更が存在する。それぞれの潜在的な変更により、その隣接するブロック、ブロックA又はブロックBについて異なるMVDが得られる。ブロックCにおけるMVDについて、ステップ７１５で、MVDa及びMVDbの全ての可能な組み合わせ又は代替の値が考慮又は収集され、ブロックA及びBの代替のMVDは、それらのブロックの最初のMVDを含む。ステップ７２０で、ステップ７２５に送出するため、全ての可能な代替の組み合わせが蓄積され、分類される。ここで、ステップ７２５で、それぞれの組み合わせについて、ブロックCについてctxIdxIncが計算される。判定ステップ７３０では、何れかの組み合わせによりブロックA及びBの最初のMVDを使用して生成される値からctxIdxIncにおける変更が生じる場合、ステップ７３５で、代替のMVDa又は代替のMVDbのうちの一方がリストから廃棄され、ステップ７２０で、次の可能な組み合わせが考慮される。新たなctxIdxIncがブロックCについて最初のものとは異ならない場合、ステップ７２０で、変更がリストから除かれる。ソリューション３において廃棄リストを処理するために提案されたのと類似のアプローチを使用することができる。
【００４４】
代替的な実現では、前に作成されたリストが調べられ、現在のスライスにおけるブロックに適用されるリストのサブセットが抽出される。次いで、本方法は、１つずつ、現在のスライスにおける各フレーム間予測ブロックを考慮する。
【００４５】
本出願で記載された実現及び機能の幾つかは、H.264/MPEG-4  AVC（AVC）の環境で使用することができる。しかし、これらの実現及び機能は、（既存又は将来的に）別の標準の環境で、又はある標準を含まない環境で使用することができる。従って、本実施の形態で提供されるものは、特定の機能及び態様を有する１以上の実現である。しかし、記載される実現の機能及び態様は、他の実現について適合させることができる。
【００４６】
本実施の形態で記載される実現は、たとえば方法、プロセス、装置、ソフトウェアプログラム、データストリーム又は信号で実現することができる。方法としてのみ説明されたような１つの実現の形態の環境でのみ説明されたとしても、説明された実現又は機能は、装置又はプログラムのような他の形態においても実現することができる。装置は、たとえば適切なハードウェア、ソフトウェア及びファームウェアで実現することができる。本方法は、たとえばコンピュータ又は他の処理装置のような装置で実現することができる。さらに、本方法は、処理装置又は他の装置により実行される命令により実現することができ、係る命令は、CDのようなコンピュータ読み取り可能な媒体、他のコンピュータ読み取り可能な記憶装置、又は集積回路で記憶される場合がある。さらに、コンピュータ読み取り可能な媒体は、実現により生成されるデータ値を記憶することができる。
【００４７】
当業者にとって明らかであるように、実現は、たとえば記憶又は送信することができる情報を搬送するためにフォーマット化される信号を生成する場合がある。情報は、たとえば、本方法を実行する命令、又は、記載される実現のうちの１つにより生成されるデータを含む場合がある。たとえば、信号は、ウォータマークが埋め込まれたストリーム、ウォーターマークが埋め込まれていないストリーム、又はウォーターマークが埋め込まれた情報を搬送するためにフォーマット化することができる。
【００４８】
さらに、多くの実現が１以上のエンコーダ、デコーダ、デコーダからの出力を処理するポストプロセッサ、又はエンコーダに入力を供給するプリプロセッサで実現することができる。さらに、この開示により他の実現が考えられる。たとえば、開示される実現の様々な機能を結合、削除、変更又は補充することで更なる実現を形成することができる。
【図１】
0005373910.tif 000003
【図２】
0005373910.tif 000004
【図３】
0005373910.tif 000005
【図４】
0005373910.tif 000006
【図５】
0005373910.tif 000007
【図６】
0005373910.tif 000008
【図７】
0005373910.tif 000009