【文献】
Shiguo Lian et al.,Secure Advanced Video Coding Based on Selective Encryption Algorithms,IEEE Trans. on Consumer Electronics,IEEE,2006年 5月,Vol.52, No.2,pp.621 - 629
【文献】
Bijan G. Mobasseri and Yatish Naik Raikar,Authentication of H.264 streams by direct watermarking of CAVLC blocks,Proc. of SPIE -IS&T SECURITY, STEGANOGRAPHY, AND WATERMARKING OF MULTIMEDIA CONTENTS IX.,SPIE,2007年 2月,Vol.6505,pp.65051W-1 - 65051W-5
(58)【調査した分野】(Int.Cl.,DB名)
前記特定の値が、H.264/AVCまたは関連する規格のイントラ予測16×16マクロブロックのマクロブロック・タイプ・フィールドの第1の値を識別し、前記第1の値が第1のイントラ予測モードを示し、
前記代替値が、H.264/AVCまたは関連する規格のイントラ予測16×16マクロブロックのマクロブロック・タイプ・フィールドの第2の値を識別し、前記第2の値が第2のイントラ予測モードを示し、
前記追加の代替値が、H.264/AVCまたは関連する規格のイントラ予測16×16マクロブロックのマクロブロック・タイプ・フィールドの第3の値を識別し、前記第3の値が第3のイントラ予測モードを示す、請求項5に記載の方法。
CAVLC符号化された前記第1の値、CAVLC符号化された前記第2の値およびCAVLC符号化された前記第3の値のそれぞれが、同数のビットを使用する、請求項6に記載の方法。
前記実際の参照を識別する前記情報が、現在のブロックに隣接するブロックのピクセル位置を識別し、前記ピクセル位置の値を使用して、前記現在のブロックの少なくとも一部分を予測する、請求項1に記載の方法。
前記実際の参照を識別する前記情報が、H.264/AVCまたは関連する規格のイントラ予測16×16マクロブロックのマクロブロック・タイプ・フィールドを含む、請求項1に記載の方法。
前記透かし生成器が、前記可変長符号化データの透かし入れに使用されるメタデータを作成するように構成され、前記メタデータが、(1)前記代替値、および(2)前記可変長符号化データ中の前記特定の値の位置を含み、前記メタデータが、前記代替値と前記位置とを関連づける、請求項17に記載の装置。
画像の予測符号化に使用される実際の参照を識別する符号化情報を含む可変長符号化データにアクセスするステップであって、前記符号化情報が特定の値を有し、前記可変長符号化データは、前記実際の参照に基づいて前記画像を予測符号化することから生成された符号化残差をさらに含む該ステップと、
前記特定の値とは異なり、従って前記実際の参照とは異なる参照を識別する符号化代替情報となる代替値を決定するステップであって、前記代替値を前記特定の値の代入値として前記可変長符号化データに挿入し、かつ前記実際の参照に基づいて前記画像を予測符号化することから生成された前記残差を前記可変長符号化データに保持することによって、前記代替値が、前記可変長符号化データの透かし入れに使用される該ステップと、
を少なくとも実行するように構成されたプロセッサ。
画像の予測符号化に使用される実際の参照を識別する符号化情報を含む可変長符号化データにアクセスするステップであって、前記符号化情報が特定の値を有し、前記可変長符号化データは、前記実際の参照に基づいて前記画像を予測符号化することから生成された符号化残差をさらに含む該ステップと、
前記特定の値とは異なり、従って前記実際の参照とは異なる参照を識別する符号化代替情報となる代替値を決定するステップであって、前記代替値を前記特定の値の代入値として前記可変長符号化データに挿入し、かつ前記実際の参照に基づいて前記画像を予測符号化することから生成された前記残差を前記可変長符号化データに保持することによって、前記代替値が、前記可変長符号化データの透かし入れに使用される該ステップと、
を少なくとも実行するための命令を記憶した非一時的なプロセッサ可読媒体。
復号するステップで、前記代替参照を識別する前記符号化情報を透かしとして使用することによって生じる検出可能な特徴を含めることにより、オリジナルの画像から変化する前記画像のベースバンド再構成を生成する、請求項22に記載の方法。
画像の符号化についての可変長符号化データを復号するように構成されたデコーダを備える装置であって、前記可変長符号化データが、前記画像の予測符号化に使用される実際の参照とは異なる代替参照を識別する符号化情報を含み、前記代替参照を識別する前記符号化情報が、前記画像の透かしをもたらし、前記可変長符号化データは、実際の参照を使用して前記画像を予測符号化することから得られる残差を識別する符号化情報をさらに含む、前記装置。
画像の符号化についての可変長符号化データを復号する手段であって、前記可変長符号化データが、前記画像の予測符号化に使用される実際の参照とは異なる代替参照を識別する符号化情報を含む該手段を含む装置であって、前記代替参照を識別する前記符号化情報が、前記画像の透かしをもたらし、前記可変長符号化データは、実際の参照を使用して前記画像を予測符号化することから得られる残差を識別する符号化情報をさらに含む、前記装置。
符号化画像についての可変長符号化データを復号するように構成されたプロセッサであって、前記可変長符号化データが、前記画像の予測符号化に使用される実際の参照とは異なる代替参照を識別する符号化情報を含み、前記代替参照を識別する前記符号化情報が、前記画像の透かしをもたらし、前記可変長符号化データは、実際の参照を使用して前記画像を予測符号化することから得られる残差を識別する符号化情報をさらに含む、前記プロセッサ。
前記識別された参照が、前記予測符号化画像に使用される実際の参照とは異なり、前記実際の参照ではなく前記識別された参照の可変長符号化により、前記画像の透かしをもたらす、請求項29に記載の方法。
【発明を実施するための形態】
【0016】
いくつかのマルチメディア透かし技術分野では、透かし埋込み装置によってエントロピ符号化ビット・ストリームを直接修正して、エントロピ符号化方式および土台のデータ・フォーマット(すなわち圧縮標準)の両方に準拠したままの透かし入りビット・ストリームを得なければならない。また、透かし入れプロセスで知覚できるアーチファクトがマルチメディア・データに加えられないこと、および埋め込まれたペイロードが圧縮解除および加工を行った後でも回復可能であることも、しばしば必要とされる。多くの適用分野では、透かし埋込みプロセスで、通常は解析または前処理段階で予め計算しておく何らかの埋込みメタデータを入手することができる。本明細書に記載する少なくとも1つの実施態様は、この埋込みプロセス、埋込みプロセスで使用するこのような埋込みメタデータの生成、および埋込みプロセスで使用する埋込みペイロードの回復に関する。
【0017】
少なくとも1つの実施態様では、エントロピ復号およびエントロピ再符号化を必要とせずにエントロピ符号化ビット・ストリームを直接修正することによって、H.264/MPEG−4 AVCビット・ストリームに透かしを入れる。この修正により、透かしが形成される。このような実施態様の1つでは、エントロピ符号化は、H.264/MPEG−4 AVC標準(「AVC」)で広く使用される、コンテキスト適応型可変長符号化(CAVLC)と呼ばれる符号化方式である。
【0018】
AVCは、ISO/IEC MPEG−4 Part 10 AVC標準/ITU−T H.264勧告とも呼ばれる。CAVLCは、AVC標準の拡張として使用することもできる。第1の拡張としては、H.264/MPEG−4 AVCスケーラブル・ビデオ符号化拡張(「SVC拡張」)と呼ばれる、スケーラブル・ビデオ符号化(SVC)拡張(Annex G)がある。第2の拡張としては、H.264/MPEG−4 AVC MVC拡張(「MVC拡張」)と呼ばれる、マルチビュー・ビデオ符号化(MVC)拡張(Annex H)がある。
【0019】
AVCを行う少なくとも1つの実施態様では、マクロブロックを予測符号化し、次いで、この予測符号化の構文要素をCAVLCを用いてエントロピ符号化する。イントラ予測では、インター予測の場合とは異なり、別のピクチャに頼らずにマクロブロックを予測符号化する。すなわち、参照ピクチャを使用しない。その代わりに、それ自体、または同じピクチャ内の別のマクロブロックを基準にしてマクロブロックを予測符号化する(「ピクチャ」は、例えば「フレーム」や「フィールド」でもよい)。イントラ予測されたマクロブロックの構文要素の1つは、イントラ予測モードなどの情報を示すマクロブロック・タイプである。少なくとも1つの実施態様では、特定の16×16マクロブロックに対して別のイントラ予測モードが示されるように、マクロブロックのマクロブロック・タイプ(「古い」マクロブロック・タイプ)を新しいマクロブロックに変更する。ただし、古いマクロブロック・タイプで示されるその他の全ての情報は未変更のまま残す。さらに、新しいマクロブロック・タイプ(構文要素)は、古いマクロブロック・タイプの符号化に使用したのと同じビット数を用いてCAVLC符号化する。
【0020】
上記のマクロブロック・タイプの変更を行って、データに透かしを埋め込むことができる。さらに、置換マクロブロック・タイプおよび対応する置換CAVLCビットの決定はオフラインで行うことができ、後にコンテンツ(例えばビデオ・データ)にアクセスするときに、エントロピ復号を必要としない効率的な実時間の方法でCAVLCビットの置換を行うことができる。ただし、その他の実施態様では、エントロピ復号を実行した後に、置換情報を決定するプロセス中、またはその後の段階で、この置換の全体または一部を実行する。
【0021】
多くの適用分野において、圧縮ビデオ・ストリームの透かし入れへの市場の要求が高まっている。初期の手法では、ストリームを圧縮解除し、ピクセル領域に透かし入れを行い、その後にこうして修正されたピクセル領域データを再圧縮していた。オリジナルの圧縮ストリームから得た情報を使用して再圧縮を簡略化するのは、初期の時代の進歩の1つである。これが、符号化ビット・ストリームのエントロピ復号および構文解析を適用することによってストリームを部分的に復号する技術によって改良された。エントロピ復号の後で、透かし入れアルゴリズムが、係数や動きベクトルなどの構文要素に直接作用する。透かしデータを表すようにストリームを修正した後で、エントロピ符号化を適用する。発明者らは、本開示において様々な実施態様について述べるが、そのうちの少なくとも一部では、エントロピ復号ステップおよびエントロピ再符号化ステップを行わずに、エントロピ符号化ビット・ストリームに対して直接透かし入れを適用する。
【0022】
本明細書に記載の実施態様の少なくとも一部に従ってCAVLCストリームに透かしを入れるには、CAVLCストリーム内の符号化構文要素を変更する必要がある。一般に、符号化された構文要素を変更すると、それによって符号化されたビット長が変化することになる。少なくとも1つの実施態様では、符号化ビット長が一定に保たれる場合を扱うが、その他の実施態様では、符号化ビット長が変化してもよい。
【0023】
本開示の少なくとも一部では、ストリーム透かし埋込み装置のメタデータを生成する方法に焦点をあてる。少なくとも1つの実施態様では、イントラ予測モードを変化させ、ビット・ストリームの様々な修正に対してロバストである。その他の実施態様では、残りの計数のCAVLC符号化を修正してもよい。イントラ予測モードを修正することに1つの利点は、CAVLCビット・ストリーム内の比較的少数のビット(例えば以下に述べる実施態様では7ビット)を変化させることによって、所与のブロックに対して大きな検出可能な(ただし知覚不可能な)変化を与えることができることである。このような変化は、符号化ビット・ストリームの変化に対してロバストであるように設計することもできる。例えば、符号化ビット・ストリームを復号して、その後に異なるパラメータ(例えば個々のブロックのブロック・サイズやモードなど)を用いて再符号化する場合には、ビット・ストリームは、場合によっては完全に異なるものになるが、復号されたピクセル値を解析することによって、依然として最初の変化は検出されると予想できる。
【0024】
様々な実施態様の理解を助けるために、CAVLCおよび透かし入れについて簡単に説明する。以下の説明ではしばしば詳細を述べるが、この説明は完全なものではなく、説明の中で述べる全ての細部が本明細書で述べる全ての実施態様に必ずしも当てはまるわけではない。さらに、以下の説明は、当業者には既知の内容を多く含む。ただし、以下の説明では、例として具体的に挙げていないこともあるが、新規の内容、または新規の内容の構成を必ず含んでいる。以下の説明は、適用範囲を制限するものではない。以下の説明は、1つまたは複数の具体的な状況、あるいは可能性として考えられる多くの状況を与えることによって、読者が実施態様を理解するのを助けるものである。
【0025】
以下、CAVLCについて説明する。多くのビデオ圧縮方式の最後のステップは、圧縮データの無損失エントロピ符号化である。AVCでは、CAVLCはエントロピ符号化に良く用いられる。CAVLCは周知の符号化技術であり、可変長符号化と呼ばれる種類の符号化技術の1つである。一般に、例えば固定長符号化とは異なり、可変長符号化では、発生率の高い、または発生率が高くなると予想される構文要素値ほど、短い長さの符号語が割り当てられる。CAVLCでは、一般に、構文要素のタイプごとに、符号語と構文要素値の間の割当てを変える。可変長符号化は、エントロピ符号化の系統に属する種類の符号化である。CABAC(コンテキスト適応型2値算術符号化)などの算術符号化は、エントロピ符号化の系統に属する別の種類の符号化である。
【0026】
次に、透かし入れの技術分野の概略と、この技術分野の中で本明細書に記述する1つまたは複数の実施態様が当てはまる具体的な領域について簡単に説明する。透かし入れの当業者なら、以下に述べる情報の大部分に精通しているはずである。
【0027】
本明細書で使用する「電子透かし入れ(digital watermarking:デジタル・ウォーターマーキング)」という用語は、一般には、以下の条件を満たすようにして、何らかのペイロード・データによって芸術作品(通常は画像、動画シーケンス、または音声クリップ)を修正する方法を指す。
【0028】
1.作品の修正版とオリジナル版の差異を知覚することができない。
【0029】
2.後に作品の修正版からペイロード・データを回復することができる。
【0030】
「ロバスト電子透かし入れ」と呼ばれるサブクラスの電子透かし入れ方法では、さらに第3の条件が加わる。
【0031】
3.作品の修正版の歪みが加わった状態からペイロード・データを回復することができる。ここで、歪みは、修正済み作品が受けた可能性のある共通の信号処理および信号操作(例えば圧縮、ノイズ低減フィルタリング、色強調)によって加わる可能性もあるし、あるいは悪意のある人間がペイロード・データを回復不能にしようと試みることによって意図的に加えられる可能性もある。
【0032】
ロバスト電子透かし入れには多くの応用分野がある。例えば以下のような分野がある(ただしこれらに限定されない)。
【0033】
1.所有者識別。透かしのペイロードによって、作品の所有者を識別する。
【0034】
2.コピー・コントロール。透かしのペイロードが、作品に関連する著作権を示す。視聴、複製、記録、印刷、配布など任意の動作を行う装置は、ペイロード・データを回復し、当該著作権によって許可されたものだけに動作を制限することができる。
【0035】
3.トランザクション・トラッキング。透かしのペイロードによって、作品のコピーが合法的に配布された受取手を識別する。これは、正当な受取手が作品を二次配布する権利を受けていないときに有用となる可能性がある。不正な作品が発見された場合に、オリジナル・コンテンツの所有者は、不正コピーからペイロードを回復し、この不正使用の責任を負う受取手を識別することができる。
【0036】
当業者なら、ロバスト電子透かし入れの応用分野はこの他にも数多く存在することを理解するであろう。
【0037】
透かし入れは、「ベースバンド」で、または圧縮済み作品に対して実行することができる。ベースバンド画像または動画シーケンスは、例えば、ピクセル領域表現である。ベースバンド音声作品は、例えば、音声サンプルである。適用分野によっては、圧縮済み作品の透かし入れが必要になる。この場合には、その出力も圧縮済み作品である。圧縮の最後のステップは、通常は、エントロピ符号化であり、圧縮解除の最初のステップは、通常は、エントロピ復号である。エントロピ符号化/復号プロセスは、通常は無損失であるが、圧縮プロセスは、通常は、損失のあるプロセスも含む。圧縮済み作品に透かし入れを行う1つの手法では、最初にエントロピ復号を適用し、次いで圧縮解除を適用してベースバンド表現を得る。ベースバンド表現には透かしが入っており、その結果得られる透かし入り作品は、圧縮され、エントロピ符号化される。この手法は、時間がかかることがあり、再圧縮により知覚品質が劣化することもある。
【0038】
知覚品質を改善し、所要の計算を減少させるために、動きベクトル、モード決定、品質因子およびその他の情報など、オリジナルの圧縮済み作品から得られる情報を圧縮解除の際に保存し、再圧縮の際に使用することができる。これは、再圧縮の際にいかなる動き推定も行う必要がなく(従って計算および/または時間が節約される)、オリジナルの量子化因子およびモード決定を使用することで知覚品質を改善できることを意味する。
【0039】
「圧縮領域透かし入れ」と呼ばれる種類の透かし入れアルゴリズムが登場している。これらの方法は、透かし入れを行う前に、前述の「完全復号」ではなく「部分復号」を実行するものとして説明することができる。ここで、圧縮済み作品は、最初にエントロピ復号されて、当該作品の全ての構文要素が露出した状態になっている。その中には、係数(例えばブロックDCT(離散コサイン変換)やウェーブレット変換など)、動きベクトル、ピクチャ・タイプ、予測モード、およびその他の多くの構文要素が含まれる。この透かし入れアルゴリズムでは、次いで、これらの構文要素のいくつかを直接修正する。最後に、修正された構文要素をエントロピ符号化して、修正された圧縮済み作品を得る。
【0040】
本明細書に記載の少なくとも1つの実施態様は、いわば「エントロピ符号化ストリーム透かし入れ」とでも言うような、透かし入れアルゴリズムの新しい種類に属する。これらの方法では、
図1に示すように、エントロピ符号化ストリームを直接修正する。
【0041】
図1を参照すると、システム100は、透かし入れを実行する。システム100は、プロセスと考えることもできる。オリジナルの圧縮ストリームは、ストリーム修正102によってペイロードに従って直接修正され、その結果得られる透かし入り圧縮ストリーム103が出力される。ペイロードとしては、例えば、コンテンツ(例えばDVD)プレーヤの製造番号、プレーヤのモデル名、またはその他の後に識別のために使用することが望ましい情報を使用することができる。ペイロードは、符号化しなくてもよいし、データ符号化部120に示すように符号化してもよい。ストリーム修正プロセスでは、(1)行われる全ての変更の位置、および(2)行われる実際の変更が通知される。ストリーム修正プロセスでは、この情報が、前処理段階104中に生成することができるメタデータによって通知される。
【0042】
メタデータ105は、オリジナルの圧縮ストリームに対してエントロピ復号106(および複数の符号化層を使用する場合は考えられる追加の復号)を行い、透かし108を生成することによって生成される。メタデータは、変更(すなわち透かし生成のための変更)が行われるストリーム内の位置を識別し、様々なペイロード・シンボルに応じてどのようにストリームが変化するかを示す。圧縮済み作品の復号された構文要素を解析することによってメタデータを生成する、
図1の実施態様について説明する。このような透かし入れ方法の1つの問題は、メタデータの生成である。以下では、どのようにすればこれを行うことができるかを、1つまたは複数の実施態様について説明する。
【0043】
ここまでの段落および
図1は、前処理段階104の存在の可能性を示唆している。3つの重要な時点が存在する状況に注目すると有用である。第1の時点は、どこで/いつ、圧縮ビット・ストリームを解析して何らかのメタデータを生成するかである。第2の時点は、どこで/いつ、第1の時点で生成されたメタデータの一部または全てをペイロードと呼ばれる特定のシンボル・シーケンスと共に使用して、ビット・ストリームを修正するかである。第3の時点は、どこで/いつ、第1の時点で生成されたメタデータの一部(または全て)を使用して(あるいは第1の時点で生成されたメタデータを使用せずに)、修正済みビット・ストリーム、修正済みビット・ストリームを圧縮解除することによって得られた動画シーケンス、または修正済みビット・ストリームを圧縮解除することによって得られた動画シーケンスに歪みが加わった状態を解析するかである。第3の時点におけるこの解析の目的は、ペイロードを回復することである。
【0044】
状況を理解するために、第1の時点は、作品の配布前、第2の時点は、各コピーのペイロードが当該コピーを一意的に識別する複製中、第3の時点は、作品の不正コピーが発見された後で、ペイロードを回復してどの配布コピーが不正コピーのソースであるかが明らかになった時点、と考える。この例は単なる例示であり、いかなる意味でも本発明の適用分野を制限するものではない。さらに、適用分野ごとに特有の要件がある可能性もあるが、第1の時点(前処理)と第2の時点(埋込み)が異なる時点でなければならないという技術的要件はない。実際に、3つの「時点(time)」全てが同じ時点であってもよい。
【0045】
さらなる例として、再度
図1を参照する。前処理段階は、例えば最終的に配信する映画のオーサリング中に実行することができる。1つのシナリオでは、許容可能な置換値が決定された符号化要素の位置を識別するプロセスを実行する。このプロセスの結果(例えばこれらの符号化要素の位置や許容可能な置換値)は、符号化映画に含まれるメタデータに記憶される。この例では、2つの場合を考慮する。1つの場合では、メタデータの各エントリが、ビット・ストリーム中の位置および1つの許容可能な置換値を識別する。第2の場合では、各メタデータ・エントリにおいて2つの許容可能な置換値が識別される。
【0046】
ストリーム修正は、映画の再生中に実行することができ、その中で、例えば、プレーヤ(例えばソフトウェア・プレーヤ、セット・トップ・ボックス・プレーヤ、DVDプレーヤなど)の製造番号がペイロードとして使用される。ペイロードは、例えば、識別された符号化要素を置換するかどうかを判定するために使用される。例えば、単一の許容可能な代替値がメタデータ中に与えられる場合には、ペイロード・シーケンス中に「1」があれば、オリジナルの値が当該代替値で置換されることを示し、「0」があればオリジナルの値をそのまま保持することを示すようにすることができる。別の例としては、識別された全ての位置が置換され、(符号化シーケンス中の各位置ごとに)提供される2つの置換値の何れを使用するかをペイロードによって示すようにすることができる。例えば、「0」は第1の置換を使用することを示し、「1」は第2の置換を使用することを示すようにすることができる。「代替(alternative)」および「置換(replacement)」という用語は、本明細書では、しばしば同義として使用されることに留意されたい。さらに、「代替」(または「置換」)は、状況によって様々なものを指すことがある。例えば、「代替」は、構文要素の代替値、または構文要素の値を表す符号化ビットの代替値であることもある。
【0047】
ペイロードの回復は、ストリーム修正が行われた地理的位置とは無関係な地理的位置で実行することができる。すなわち、ストリーム修正をオハイオ州トレドで行い、ペイロード回復をカリフォルニア州バーバンクで行うこともできる。重要なことは、修正済みストリームに基づくデータを含むドキュメントを入手できることである。例えば、修正済みストリームは、電子的にコピーして書込み可能なDVDに記録してもよいし、あるいは修正済みストリームを提示した後に再記録および符号化して、その後、書込み可能なDVDに記録してもよい。この書込み可能なDVDを取得した場合には、この書込み可能なDVDを解析して、ペイロードを回復することができる。ペイロードの回復には、検出メタデータ(
図1に示す)を援用することができる。検出メタデータは、例えば、透かし入れ情報が埋め込まれたデータ・ストリーム内の位置、および許容可能な置換値などを示すことができる。あるいは、検出メタデータは、例えば、透かし情報によってピクセル領域データ中に検出可能な変化を生み出そうとしているピクチャ(例えばフレームまたはフィールド)内の位置を示すこともできる。この後者のシナリオでは、検出メタデータは、以下でさらに説明するように、1つまたは複数の予想される変化も示すことができる。検出メタデータは、透かし入れ(埋込み)メタデータの生成と同時に生成してもよいし、別の段階で生成してもよい。
【0048】
「透かし(watermark)」は、例えば、データ・ストリーム中のオリジナル・データに取って代わる埋込みデータを指すことができる。あるいは、「透かし」は、データ・ストリームに置換データを埋め込んだ結果として、ベースバンド画像内に表示される復号されたビデオ・ピクチャ上に生み出される効果を指す場合もある。従って、「透かし」は、埋め込まれるデータ、または得られるベースバンド・データ(例えば画像または音声クリップ)上に生み出される効果の1つまたは複数を指すことができる。例えば、生み出される効果としては、検出は可能だが視聴者には知覚不可能な、マクロブロックの輝度の変化などが挙げられる。
【0049】
次に、AVC符号化ビット・ストリームへのCAVLCによるデータ埋込みについて説明する。圧縮ストリームに透かし入れを行う1つの方法は、1つまたは複数の構文要素の値を変更することである。一般的要件としては、変更後の圧縮ストリームが依然として有効なストリームである(特定の圧縮標準に準拠したままである)必要がある。圧縮技術が可変長符号エントロピ符号化技術を使用しているときには、この要件は満たされる。CAVLCを用いたAVCはこれに当てはまる。変更後(すなわち修正済み)の構文要素は、CAVLCを用いて符号化され、これらの修正済みCAVLCビットが、ビット・ストリーム中のCAVLC符号化されたオリジナルの値に取って代わる。これらのビットは、未修正の構文要素のCAVLC符号化と同じ長さ(同じビット数)であってもよいし、異なる長さであってもよい。ただし、構文要素のCAVLC符号化はその前後の構文要素の符号化に依存しないので、長さが同じであってもそうでなくても、その他のCAVLCビットの確度に影響はない。
【0050】
記載する様々な実施態様では、CAVLC符号化ビット・ストリームを修正するステップは、大きく分けて2ステップあるが、これらのステップは、どの順序で実行してもよい。これらのステップの説明では、「ステップ1」および「ステップ2」と表現するが、このステップ番号は、これらのステップを何らかの特定のまたは具体的な順序で実行することを意味したり要求したりするものではない。
図2aおよび
図2bは、この2つのステップをそれぞれ示すブロック
図200および210である。
【0051】
CAVLC符号化AVCビット・ストリームの場合には、ステップ1で、対象要素からオリジナルの符号化ブロックへのマッピング(202)を構築する。1つの実用的な実施態様では、これは、ビット・ストリームを復号し、ビット・ストリームのどのビットがどの構文要素を生成するかを追跡することによって行われる。例えば、圧縮ビット・ストリームにCAVLCデコーダを適用して、構文要素を明らかにすることができる。
【0052】
ステップ2では、対象要素の1つまたは複数の許容可能な代替値を検索する(204)。許容可能な代替値を検索する1つの方法は、可能性のある全ての代替値を検査して、その何れが許容可能であるかを判定することである。可能性のある代替構文値をそれぞれCAVLC符号化して、代替ビットを得る。一般に、可能性のある全ての代替構文値が、「許容代替値」である。ただし、様々な実施態様では、1つまたは複数の追加基準を有する。
【0053】
1つの基準は、CAVLC符号化長である。CAVLCは可変長符号であるので、代替構文値によっては、CAVLC符号化の長さを変化させることになる。これはいくつかの実施態様では許容可能であるが、実施態様によっては、透かし入れの前後でCAVLC符号化長を変化させないという要件が課される。その他の基準は、以下でさらに述べるように、例えば忠実性および検出可能性に関するものである。
【0054】
これら2つのステップ202および204の2つの異なる順序を、
図2aおよび
図2bに示す。
図2bでは、ステップ1(202)のマッピングおよび割当てを必要とするのが、ステップ2(204)で少なくとも1つの代替構文値が発見された対象要素だけであることに留意されたい。
【0055】
AVCビデオ圧縮標準では、多くのビデオ圧縮標準と同様に、以前に符号化された1つまたは複数のピクセル・ブロック内の値からピクセル・ブロック内の各値を予測することによって圧縮を行う。次いで、しばしば剰余と呼ばれる、予測値と実際の値の差を、変換符号化し、量子化する。予測に使用される1つまたは複数のブロック、すなわち参照ブロックは、同じピクチャのものでもよいし、異なるピクチャのものでもよい。同じピクチャから参照ブロックをとったブロックは、イントラ符号化ブロック、または単純にイントラ・ブロックと呼ばれる。この場合は、予測はしばしばイントラ予測と呼ばれる。
【0056】
輝度サンプルの場合は、16×16のマクロブロックの全体をまとめてイントラ予測してもよいし、8×8サブブロックまたは4×4サブブロックに分割してもよい。次いで、各サブブロックを、別個にイントラ予測する。16×16輝度イントラ予測では、この標準では4つのモードが規定される。8×8サブブロックおよび4×4サブブロックの場合は、各ブロック・タイプごとに9個のモードが規定される。エンコーダは、通常は、予測されるブロックと実際のピクセル値の差が最小となる予測モードを、各ブロックごとに選択する。
【0057】
説明を簡単にするために、ここでは16×16イントラ予測についてのみ説明する。16×16イントラ予測では、
図3に示すように、以下の4つのモードが規定される。
【0058】
1.モード0(垂直)310。上側のサンプル(H)からの外挿。このモードでは、ブロックの上縁に接する隣接ピクセルを、当該ブロックの対応する列の全てのピクセルの予測として使用する。すなわち、16×16ブロック内の所与の列について、上側の垂直方向に隣接するブロック内の接しているピクセルを、当該列全体の予測として使用する。
【0059】
2.モード1(水平)320。左側のサンプル(V)からの外挿。このモードでは、ブロックの左縁に接する隣接ピクセルを、当該ブロックの対応する行の全てのピクセルの予測として使用する。すなわち、16×16ブロック内の所与の行について、左側の水平方向に隣接するブロック内の接しているピクセルを、当該行全体の予測として使用する。
【0060】
3.モード2(DC)330。上側サンプルと左側サンプルの平均(H+V)。このモードでは、ブロックの上縁に接する隣接ピクセルと当該ブロックの左縁に接する隣接ピクセルを平均して、平均値を求める。その後、この平均値を、当該ブロックの全てのピクセルの予測として使用する。すなわち、左側の水平方向に隣接するブロックおよび上側の垂直方向に隣接するブロックの全ての接しているピクセルの平均を求める。その後、これらのピクセルの平均を、当該ブロックの全てのピクセルの予測として使用する。この場合、当該ブロック内の各ピクセルが、同じ予測を有することになる。
【0061】
4.モード3(平面)340。上側のサンプルHおよび左側のサンプルVに線形平面(linear plane)を適用する。このモードでは、平面を形成する。この平面は、左側の水平方向に隣接するブロックの全ての接しているピクセル、および上側の垂直方向に隣接するブロックの全ての接しているピクセルに基づく。この平面が、当該ブロック内の各ピクセルの予測を与える。
【0062】
8×8および4×4のイントラ予測のモードは、本明細書で述べる16×16イントラ予測のモードの修正と同様にして修正することができることに留意されたい。さらに、3つのブロック・サイズは全て、このモードの修正と同様の修正に適用できる追加の構文を使用する。
【0063】
ブロックを復号するためには、現在のブロックのイントラ予測モードによって指定される以前に復号された隣接ブロックの利用可能なピクセルを用いて、予測ブロックを生成する。次いで、復号された剰余のピクセル値を、予測ブロックに付加する。その結果、最終的な復号ピクセル・ブロックが得られる。
B=P+R (3−1)
ここで、Bはピクセル値の最終的な復号ブロック、Pは予測ブロック、Rは復号された剰余のブロックである。
【0064】
この実施態様において透かし入れにイントラ予測を用いることの基本的な考え方は、剰余データを修正せずに、イントラ予測モードを変更することである。すなわち、剰余Rは変更せずに残すが、それは新しい予測ブロックに対する正確な剰余ではなくなっている可能性がある。予測モードを変更した結果、予測ブロックは異なる予測ブロックとなる(これをP
Wとする)。その結果、最終的な復号ピクセル・ブロック(B
Wとする)は、それまでの最終的な復号ピクセル・ブロック(B)とは異なる。すなわち、B
W=P
W+Rであり、B
WはBと同じものではない。
【0065】
復号ピクセル値のオリジナルのブロック(B)と透かし入りのピクセル値のブロック(B
W)の間の差、すなわちΔBは、オリジナルの予測ピクセル・ブロック(P)と透かし入りのピクセル値の予測ブロック(P
W)の間の差、すなわちΔPと同じとなる。
ΔB=ΔP、ただしΔB=B
W−B、且つΔP=P
W−P (3−2)
また、添え字「
W」は、それぞれの透かし入り版であることを示す。
【0066】
マクロブロックのイントラ予測モードを変更することにより、当該ブロックのピクセルはΔBだけ変化することになる。この変化を透かし入れに適するように起こすためには、少なくともこの実施態様では、以下の3つの要件(R1〜R3)が満たされることが必要である。
R1 この変化が、再構築された画像から検出可能であること。
R2 この変化が、再構築された画像において知覚不可能であること。
R3 検出が、何らかの既定の信号歪みの組合せに対してロバストであること。
そのために、考えられる各変更の適合性を評価し、これらの要件を満たす変更のみを選択する。
【0067】
第2の要件は、多くの解釈が可能である。再構築された画像が、高い視覚的品質を有する、またはオリジナルの透かしなし画像と区別できないという要件である可能性もあれば、あるいは変化の知覚可能性が適用分野によって決まる何らかのしきい値未満であるという要件である可能性もある。透かしの忠実度を判定する方法は数多く存在する。本開示の目的のためには、任意の適当な忠実度尺度を適用して、提案された変化が当該適用分野の忠実度要件に合うか否か、またはどの程度まであっているかを判定することができる。
【0068】
忠実度要件(R2)の評価は、様々な方法で行うことができる。所与の対象要素に対して、そのオリジナルの値を各代替値で置換することの知覚的影響を評価または予測する必要がある。この評価または予測では、圧縮ストリームの全ての構文要素を完全に入手することができ、これらを使用して、基礎となる画像のマスキング効果、およびこれらの修正に対する人間の視聴覚系(映像の場合には、人間の視覚系が関連する)の感度を予測することができることを想起されたい。このような予測の詳細は、知覚モデリングの当業者には周知である。知覚モデルは、圧縮に関する文献および透かし入れに関する文献の双方で広く引用されている。
【0069】
知覚可能性の圧縮領域計算予測を使用することに加えて、ストリームをベースバンド動画シーケンスに完全に圧縮解除することもできる。例えば、解析を前処理として実行している場合には、これが当てはまる。この場合には、計算予測によって、実際のピクセル・データを検査することができる。これにより、知覚可能性の予測をさらに正確にすることができる。さらに、オリジナルのストリームを圧縮解除して参照動画シーケンスを得、次いで構文要素値を代替値で置換し、その結果得られたストリームを圧縮解除して第2の動画シーケンスを得ることによって、オリジナルの構文要素値の代替値による置換に対する知覚可能性を評価することもできる可能性がある。多くの周知の技術を使用して、この2つの動画シーケンスの間の差の知覚可能性を評価することができる。
【0070】
最後に、主観的評価を用いることもできる。人間が実際に見て、参照動画シーケンスと修正済み動画シーケンスの間の差の知覚可能性を評価することができる。人間の主観によって、所与の適用分野で修正が要件R2をどの程度満たしているかを評価することができる。
【0071】
これらは、可能な構文要素の変化のうちの何れが要件R2を満たすかを判定するために使用することができる方法の一部に過ぎない。
【0072】
次に、第1の要件R1を一般的な見地から考慮する。修正済みストリームを後に圧縮解除して動画シーケンスにするときに何らかの測定可能な変化を引き起こすために、対象構文要素に対して代替構文値を使用することを想定する。一般に、「直接」および「間接」の2種類の測定可能な変化を引き起こすことができる。
【0073】
「直接変化」を用いる場合には、構文要素は、動画シーケンスの測定可能なアーチファクトに直接対応する。例えば、輝度ブロックのDC係数を修正すると、対応する圧縮解除ブロックの平均輝度に測定可能な変化が直接現れることになる。それに対して、「間接変化」を用いる場合には、画像シーケンスで測定されるアーチファクトは、ストリームの修正と間接的な関係しかない。例えば、動きベクトルを修正すると、誤ったブロックが予測として使用されることになり、従って、誤ったピクセル・データが対応する圧縮解除ブロックに生じることになる。どの動きベクトルが使用されたかを判定することは困難である可能性があるが、異なる動きベクトルを使用すれば、その他の測定可能なアーチファクトに影響がある可能性がある。動きベクトルを使用して、さらに高い、または低い平均輝度を有する再構築ブロックを生じることもできる。
【0074】
要件R1の測定可能な変化は、位置を識別し、ペイロードを回復するためにどんな変化が加えられたかを調べるのに役立つこともある。これは、海賊版コピーが得られたときに特に有用である。加えられた変化を「調べる」ことにより、海賊版コピーのソースを得ることができる。
【0075】
一実施態様では、どの動きベクトルの構文要素が少なくとも2つの代替構文値を有するかを判定して、それらの代替構文値のうちの1つを使用するとより平均輝度の高い再構築ブロックが得られ、別の代替構文値を使用するとより平均輝度の低い再構築ブロックが得られるようにする。これら2つの代替値のそれぞれのCAVLC符号化に対応するビットの符号化ブロックと、CAVLCストリームのビット位置とを、メタデータとして埋込み装置に送信する。対応するペイロード・ビットの値に基づいて、埋込み装置は、オリジナルのビット・ブロックを、代替ビット・ブロックの一方または他方に対応するビット・ブロックで置換する。
【0076】
例えば、埋込み装置は、ペイロード・ビットが「0」である場合には、対応するブロックの平均輝度を減少させる構文値に関連するビット・ブロックを選別または選択し、ペイロード・ビットが「1」である場合には、対応するブロックの平均輝度を増大させる構文値に関連するビット・ブロックを選別する。少なくとも1つの対象要素が、埋め込まれる各ペイロード・ビットの全ての要件を満たしている必要があることは明らかである。
【0077】
メタデータは、輝度の変化が引き起こされることになる圧縮解除動画シーケンス中のフレーム番号およびブロック番号を含むこともできる。さらにロバストにするには、前処理段階で、メタデータ中の当該ブロックのオリジナルの平均輝度を記憶しておいてもよい。この情報を回復時(例えば復号時)に使用して、修正済みブロックを識別し、その平均輝度を、メタデータに記憶されているオリジナルの値と比較することができる。与えた例では、平均輝度がオリジナルの値より高い場合は、対応するペイロード・ビットが「1」であることを意味し、平均輝度がオリジナルの値より低い場合は、対応するペイロード・ビットが「0」であることを意味する。
【0078】
この実施態様では、第1および第3の要件(変化がロバストに検出可能である)は、復号画像中で確実に測定することができ、マクロブロックのイントラ予測モードを変更することによって修正することができる良好な特徴を確立する必要がある。このような特徴の1つが、マクロブロックの平均輝度である。イントラ予測モードが変更されるたびに、復号ピクセル値に変化ΔBが生じる。このΔBは、正または負の平均値(ブロックに関する平均)を有することができ、この平均の大きさは、モードごとに変化する可能性がある。変化(例えばΔBの平均値)の符号を使用して、データを符号化する(埋め込む)ことができる。また、変化の大きさは、予想される変化のロバスト性の指標として使用することができ、大きさが大きくなるほど、符号化ビット・ストリームのさらなる修正に対するロバスト性が高いことを意味する。さらに洗練されたロバスト性の尺度を得ることもでき、それも使用することができる。
【0079】
R1およびR3を満たすために使用することができる第2の特徴は、再構築されたピクセル・ブロックの分散である。DCモード(モード2)は、16×16のピクセル値の全てが、参照ピクセルの平均という単一の値で予測されるという点で、それ以外の3つのイントラ予測モードと異なる。AVCエンコーダは、ブロックの性質が滑らかであるときには、このモードを使用することが予想される。
【0080】
モード2から残りの3つのモードの何れかにモードを変更した場合には、その結果得られるブロック(B
W)の分散が、オリジナルのブロック「B」に対して増大すると予想することができる。一方、エンコーダがモード0、1または3を選択した場合には、このブロックは、最初の変動が大きくなる(モード2を最初に選択した状況との比較)ことが予想される。イントラ予測モードをモード0、1または3からモード2に変更することにより、このブロックB
Wの分散は、一般に、「B」の分散に比べて減少する。この場合も、イントラ予測モードの変更に関連するΔBは、再構築ブロックB
Wの分散の増加または減少を生じる可能性があり、この分散の変化の大きさは、最初および最後のモードによって変化する可能性がある。分散の変化の符号を使用して、データを符号化する(埋め込む)ことができる。さらに、分散の変化の大きさは、この変化の予想ロバスト性の指標として使用することもでき、大きさが大きくなるほど、符号化ビット・ストリームのさらなる修正に対するロバスト性が高いことを意味する。さらに洗練されたロバスト性の尺度を得ることもでき、それも使用することができる。
【0081】
次に、マクロブロック・タイプを介してイントラ予測モードを変更する実施態様について述べる。AVCでは、マクロブロックの16×16イントラ予測モードは、mbタイプ・フィールドで指定される。mbタイプ・フィールドは、符号化ブロック・パターンなど、このブロックに関するその他のパラメータも指定する。
【0082】
図4を参照すると、表400は、Iスライスに対するマクロブロック・タイプ(「mbタイプ」)のリストであり、mbタイプ値410のリストをそれぞれの意味と共に与えるものである。この表400は、標準から直接とったものであり、本実施態様では、符号化ブロック・パターン430および440または予測ブロック・サイズ445を変化させることなくイントラ予測モード420を変更するmbタイプ値410を見つけるために使用するものである。
【0083】
イントラ予測モード420を変更するときにイントラ予測モード420以外の構文を保存するために、mbタイプ410の変化は、イントラ予測モード420のみが異なる値に制限される。例えば、オリジナルのmbタイプが11である(行450参照)ということは、イントラ予測モード420は2(DC)であり、クロマ430およびルマ(luma)440の符号化ブロック・パターンはそれぞれ2および0であることを示している。このmbタイプ410を、9、10または12に変更して、符号化ブロック・パターン430および440または予測ブロック・サイズ445を変化させることなく、イントラ予測モード420を変更することができる。
【0084】
mbタイプは、ビット・ストリーム中でエントロピ符号化される。CAVLCエントロピ符号化を使用する場合には、mbタイプは、指数ゴロム符号で符号化される。指数ゴロム符号は、可変長符号化方式である。オーサリング済みDVDディスクなどいくつかの特殊な適用分野では、置換(例えばVLC)データは、オリジナルの(VLC)データと全く同じ長さを有していなければならない。この場合、オリジナルのmbタイプを置換するのに、同数の(例えばVLC)ビットを生じるmbタイプしか使用することができない。
【0085】
図5を参照すると、表500は指数ゴロム符号化表であり、ビット・ストリングの形態(左側の列)510と、それに対応する指数ゴロム符号の値の範囲(右側の列)520とを示すリストである。表500は、標準から直接とったものである。この表500から、上記の例を使用すると、mbタイプ9では7ビットが必要であることが分かる。このことは、最初に、mbタイプ9が、値「7〜14」を有する右側の列520の第4のエントリ530に与えられる範囲520で生じることに注目することによって求めることができる。次いで、左側の列510の対応する(第4の)エントリ530が、0001x
2x
1x
0の7ビットであることに注目する。x
2x
1x
0には、例えば、順に値を割り当てることができ、値7に対しては000を、値14に対しては111を割り当てることができる。
【0086】
従って、CAVLCストリングの長さが透かし入れの前後で不変である本実施態様では、mbタイプは、同様に7ビットを必要とする別のmbタイプでしか置換することはできない。この場合には、mbタイプ9、10、および12は、全て同じ範囲(7〜14)に入り、全て7ビットを必要とする。従って、mbタイプ9、10および12は、全て可能な置換mbタイプの候補である。このようにして、15のVLCビット長を、
図4のマクロブロック・タイプと組み合わせて、どのmbタイプをオリジナルのmbタイプの置換に使用することができるかを判定することができる。上記の方法では、以下の規則が実施される。
【0087】
1.代替のmbタイプは、イントラ予測モードのみが異なっていること。
【0088】
2.代替のmbタイプに対応するビット・ストリングのサイズは、オリジナルのmbタイプに対応するビット・ストリングのサイズと同じであること(ビット長が一定でなければならない場合)。
【0089】
以前の記述において、潜在的な変更を、再構築画像の忠実度およびその検出可能性のロバスト性への影響に関して評価しなければならないと示唆した。ここでは、これら2つの影響を結合して単一のコスト値にする方法、およびそのコスト値を使用して、どの変更を適用するかを選択することについて述べる。
【0090】
再度
図1を参照すると、前処理の入力は、AVC符号化ビット・ストリームである。出力は、透かし入れメタデータである。ストリームの処理の第1のステップの1つは、そのイントラ予測モードが潜在的に変更可能である各イントラ符号化ブロックを識別することである。これらのイントラ符号化ブロックのそれぞれについて、ビット長の要件を満たし(適用分野でビット長が一定であることが要求される場合)、且つ対応する代替mbタイプがイントラ予測モードのみ異なっているという上記の第1の規則を満たす全ての代替イントラ予測モードを識別する。特定の検出尺度(例えば上述した輝度平均やブロックの分散など)を想定して、追加ステップにおいて、オリジナルの検出値と、全ての代替検出値をまとめる。「検出値」とは、符号化によって生じる検出尺度の値(数値)である。例えば、あるブロックの輝度平均の値が挙げられる。代替検出値は、各代替イントラ予測モードを使用することによって生じるはずの値である。
【0091】
図6を参照すると、プロセス600は、平均輝度を検出尺度として使用したときの検出値を決定する実施例を示すものである。所与のブロックに対して、1つまたは複数の検出値を決定することができる。例えば、所与のブロックに対して複数の代替値がある場合には、各代替値に対して検出値を決定することができる。通常の実施態様では、これらの決定された検出値の間で最適化を行う。この最適化は、例えば、各ブロックごとに最良の代替値を選択し、次いでこれらの最良の代替値の中から上位10個を選択するものであってもよい。この例では、最良の検出値を有する10個のブロックを選択することになる。ここで、「最良」は、例えば選択した任意の尺度によって決定される。別の実施態様では、以下にさらに述べるように、所与のブロックに対して、代替値対を考慮し、各ブロックごとに最良の対を選択する。
【0092】
プロセス600は、イントラ予測符号化ブロックの平均輝度を計算することを含む(610)。これはオリジナルの検出値であり、平均輝度は、数式3−1に関連して上述したように予測と復号された剰余の合計から計算することができる。
【0093】
プロセス600は、次に、各代替イントラ予測モードごとにイントラ予測符号化ブロックの平均輝度を計算することを含む(620)。動作620では、予測に代替モードを使用する。平均輝度は、例えば、既存の剰余データを用いる予測を用いて計算することもできるし、または既存の剰余データを用いない予測を用いて計算することもできる。
【0094】
プロセス600は、フレーム番号(さらに一般的にはピクチャ番号)、ブロック位置および全ての平均輝度を記憶する(630)。これらの平均輝度には、オリジナルのイントラ予測モードから得られた平均輝度(動作610)および代替の1つまたは複数のイントラ予測モードから得られた1つまたは複数の平均輝度(動作620)が含まれる。
【0095】
プロセス600は、次のイントラ予測符号化ブロックに進み(640)、動作610〜630を繰り返す。プロセス600は、所与のピクチャの全てのイントラ予測符号化ブロックについて実行される。もちろん、その他の実施態様では、このように網羅的である必要はない。例えば、イントラ予測符号化ブロックは、イントラ符号化ピクチャ(例えばIフレーム)のブロックであってもよいし、そのブロックがイントラ符号化されたものであればインター符号化ピクチャ(例えばPフレーム)のブロックであってもよい。
【0096】
プロセス600で収集された情報を用いて、ある実施態様では、透かし入れを行うのにどの位置およびどの代替置換値を使用するかを直接決定することができる。様々な決定プロセスを使用することができる。以下に、このようなプロセスの実施態様について述べる。以下で述べる実施態様では、例えば、プロセス600で収集した情報を使用して、例えば上記に挙げた要件R1、R2およびR3を満たす位置および代替値を選択する。
【0097】
透かし入れアルゴリズムにとって重要な特性は、通常は、ロバスト性(上記のR3)および忠実度(上記のR2)である。忠実度は、知覚不能性とも呼ばれる。ロバスト性および忠実度の2つの特性は、両立しないことも多い。発明者らは、これら2つの間のバランスを指定する解析的方法を導入する。
【0098】
C
Fは、忠実度コストを表すものとする。C
Fは、透かしの視認性が高いほど値が大きくなるように定義される。忠実度コストが非常に低くなる変更を行うことが好ましい。C
Fを測定する方法は数多くあり、ユーザは、特定の適用分野に最も適した方法/尺度を選択すればよい。本実施態様は、その選択には無関係である。
【0099】
C
Rは、ロバスト性コストを表すものとする。C
Rは、ロバスト性を低下させる変更ほど高いロバスト性コストを有するように定義される。ロバスト性が低いとは、例えば、変更が検出不可能になりやすいことを意味する。例えば、ピクチャが復号され、ピクセル・データがフィルタリングされた場合に、一部の変更が弱まり、場合によっては検出不可能になることがある。ここでも、ロバスト性コストが低くなる変更を行うようにする。
【0100】
各代替変更ごとに、当該変更を行うことに伴う忠実度コストおよびロバスト性コストの両方を計算する。次いで、これら2つのコストを組み合わせて、当該変更を行うための全体コストを得る。この全体コストは、以下のように計算される。
C=αC
F+βC
R
ここで、α+β=1と制限すると有用であることが多い。その場合には、
C=αC
F+(1−α)C
R
と書くことができる。0から1の範囲に制限されるパラメータαは、忠実度とロバスト性の間のトレードオフを制御するために使用される。αの値が大きくなるほど、忠実度に重点が置かれ、αの値が小さくなるほど、ロバスト性に重点が置かれる。所与のαについて、各代替予測モードのコストCを計算することができる。Cがしきい値を超える代替予測モードは、廃棄することができる。
【0101】
知覚不能性の要件である上記のR2を満たすために、ある実施態様では、例えばC
Fのしきい値をさらに使用することができる。例えば、一実施態様では、代替予測モードのC
Fの値を、しきい値と比較する。C
Fの値がしきい値より大きい場合には、当該代替予測モードは、オリジナルの予測モードの置換候補として受容されない。
【0102】
上記のコスト公式を使用する1つの特定の実施態様では、16×16マクロブロックを使用する。16×16イントラ予測マクロブロック中には、3つの利用可能な代替イントラ予測モードと、オリジナルのモードとがある。この例では、符号化ブロック・パターンまたは(一定ビット長が要求される場合には)符号化ビット長を変化させることなくモードを任意のモードに変更することができるので、異なるイントラ予測モードの値全てが有効な代替値であると仮定する。
図4〜
図5を再度参照すると、この仮定が常に満たされるとは限らないことが分かるが、この仮定は、ここでの説明を分かりやすく簡潔にするのには有用である。さらに、検出尺度はブロックの平均輝度であると仮定する。
【0103】
データ・ビットを埋め込むためには、2つの予測モードを選択することができる。第1のモードは「1」を表すために使用され、第2のモードは「0」を表すために使用される。平均輝度をより低くする予測モードを、ビット「0」を表すために使用し、平均輝度をより高くする予測モードを、ビット「1」を表すために使用する。この場合には、{P
1=(モード0、モード1)、P
2=(モード0、モード2)、P
3=(モード0、モード3)、P
4=(モード1、モード2)、P
5=(モード1、モード3)、P
6=(モード2、モード3)}という、6通りの対の組合せが考えられる。(これらの組合せの一部は、予測モードの一部が有効な代替モードでない場合には利用することができないことに留意されたい。)この場合には、それぞれの対の組合せの選択に関連する忠実度コストC
Fおよびロバスト性コストC
Rを計算する必要がある。その後、これらのコストを使用して、それぞれを適用分野の要件と比較すればよい。それぞれの対の組合せに対して、C
FおよびC
Rを以下のように評価する。
【0104】
Bは、オリジナルのピクセル・ブロックを表す。ΔB
0およびΔB
1は、それぞれビット「0」またはビット「1」が埋め込まれた場合の、透かし入りブロックとオリジナル・ブロックの間のピクセルの差を表す。オリジナルのイントラ予測モードを使用して「0」または「1」のビットを表す場合には、対応するΔBは単純に全てゼロとなる。このような場合には、忠実度コストは、選択したもう一方のモードのみによって決まる。利用可能な対がK個存在すると仮定すると、対kの忠実度コストは、次のように得ることができる。
C
FPk=F(B,ΔB
0,ΔB
1) (4−1)
ここで、関数F(・)は、上述のように任意の忠実度尺度を含み(例えばワトソン・モデル)、kは、1からKの範囲の指標である。通常は、この忠実度関数は、ΔB
0およびΔB
1を独立して評価して、それぞれの忠実度コスト値を得、その2つの値のうちの「悪い方」の忠実度を表す大きい方の値、または2つの値の合計を戻す。忠実度尺度は、部分的に、または完全に、ユーザの評価に基づく主観的尺度であってもよい。
【0105】
L
0およびL
1は、それぞれビット「0」またはビット「1」が埋め込まれた場合の、ブロックの輝度(本実施態様では単一の値)を表す。BlkSzは、イントラ予測ブロック・サイズを表す。ロバスト性コストは、L
0、L
1およびBlkSzの関数として測定することができる。所与の輝度(または輝度変化)に対して、ブロック・サイズが大きいほど、高いロバスト性に対応することができる。対kのロバスト性コストは、次のように得ることができる。
C
RPk=G(L
0,L
1,BlkSz) (4−2)
ここで、関数G(・)は、上述のように任意のロバスト性尺度である(例えば、分散の変化の大きさまたは平均輝度変化)。この場合も、通常のロバスト性尺度は、各変化のロバスト性を独立して評価し、2つのコストのうちの大きい方、または2つのコストの合計を戻すものである。
【0106】
最後に、この対の最終的な透かし入れのコストは、以下のようになる。
C
k=αC
FPk+βC
RPk (4−3)
各対に関連するコストを計算したら、コストが最小となる対を当該ブロック用に選択し、相当するコストを、ブロック変更コストCに割り当てる。
C=min(C
k)、ただしk=1…K (4−4)
各ブロックの透かし入れコストを確立したら、ブロック選択プロセスで、ペイロード要件に基づいて透かし入れコストが最小のブロックを単純に選択する。例えば、10ビットのペイロード・ビットが存在する場合には、透かし入れコストが最小となる10個のブロックを選択すればよい。この例の10ビットのペイロード・ビットは、例えば、1つまたは複数のペイロード・シンボルを符号化してロバスト性を高めることによって生成することができる。別の実施態様では、ペイロード・シンボル/情報を符号化してロバスト性を高めることはせず、単純に2値形式のペイロード情報をペイロード・ビットとして表す。
【0107】
再度
図1の実施態様を参照すると、透かし入れ埋込みメタデータ105は、ビット・ストリーム内で各修正が起こる位置、およびペイロード・ビットが「0」である場合または「1」である場合に使用される値を識別するビット・オフセットを含む。従って、代替の変更を追跡しているときには、現在のmbタイプを記述するVLC符号が見つかる入力AVCストリーム中のビット位置を追跡している。また、各代替変更を表すために使用される特定のビット・ストリング(
図5の表)も追跡する。従って、(おそらく全体コストを最小限に抑える方針に基づく)選択後に、システムは、埋込みメタデータ105を書き込むことができる。このファイルの各エントリごとに、1つのビット・オフセットと、可能な2つのペイロード・ビット「0」および「1」のそれぞれに対して1つずつ、2つのビット・ストリング(例えばVLCビット・ストリング)が存在する。
【0108】
さらに、前処理段階で、検出メタデータ(やはり
図1に示す)を書き込む。これは、各変更のフレーム番号(より一般的にはピクチャ番号)およびブロック位置、ならびにそれがビット「0」および「1」を表す場合には透かし入りブロックの予想輝度(またはその他の検出尺度)を含む。また、実施態様によっては、復号前のストリーム中の透かし入れ情報の存在の検出を可能にする検出メタデータ中の埋込みメタデータを含むこともできることに留意されたい。
【0109】
上述のように、検出は、ピクセル・レベルで行う代わりに、またはピクセル・レベルで行うことに加えて、ビット・ストリーム・レベルで行うことができる。ビット・ストリームを解析することにより、どのペイロード・ビットが指定のビット・オフセットで埋め込まれているかを判定することができる。ただし、上述のように、例えば復号とその後の再符号化によってビット・ストリームが既に処理されている場合には、その結果得られる(符号化)ビット・ストリームは、オリジナルの(符号化)ビット・ストリームとは完全に異なるものである可能性もある。例えば、再符号化において、(上記で指摘したように)異なるブロック・サイズまたはモードを使用することもある。このような場合には、ビット・ストリームから透かしを検出することが不可能である可能性もあるが、透かしのロバスト性が十分であれば、(新しいビット・ストリームの復号後に)ピクセルから透かしを検出することは可能である。
【0110】
図7を参照すると、プロセス700は、コスト手法を用いて16×16イントラ予測符号化マクロブロックの透かし入れメタデータ(埋込みおよび検出メタデータ)を決定する実施態様を与えるものである。プロセス700は、プロセス600の基本的な特徴を備える。すなわち、マクロブロックの透かし入れメタデータを決定するプロセス700は、これらのマクロブロックの検出値を決定することを含む。
【0111】
プロセス700は、例えば、ピクチャ内の所与のマクロブロック・セットに対して、またはピクチャ内の全てのマクロブロックに対して、あるいはピクチャ・シーケンス内の全てのマクロブロックに対して実行することができる。以下のプロセス700の説明では、プロセス700をピクチャ内の全てのマクロブロックに対して実行する実施態様を想定している。
【0112】
プロセス700は、ピクチャ内の16×16マクロブロックをループし(710)、16×16イントラ予測モード(例えば
図4参照)を使用する各16×16マクロブロックに対して一組の動作セット(720〜750)を実行する。この動作セットは、動作720〜750を含む。
【0113】
16×16イントラ予測モードを使用する各マクロブロックに対して、可能な代替イントラ予測モードがあれば、これを決定する(720)。一実施態様では、代替イントラ予測モードは、符号化ブロック・パターン(430および440)ならびに予測ブロック・サイズ(445)が一定であり、マクロブロック・タイプ(410)の符号化ビット長が一定である(
図5参照)という要件を満たしていなければならない。
【0114】
可能な代替イントラ予測モードまたは可能な代替イントラ予測モード・グループのそれぞれについて、全体コストを決定する(730)。一実施態様では、全体コストを決定するために、上述の一連の数式を用いて忠実度コストおよびロバスト性コストを計算する。モード・グループは、例えば、上述の一対のモード、またはその他の何らかのモードの組合せとすることができる。
【0115】
最良の可能な代替イントラ予測モードまたはモード・グループを決定する(740)。一実施態様では、全体コストが最小となる対を選択する上述の数式4−4などの最小化関数を用いて最良のものを決定する。実施態様によって異なる関数を用いて最良の可能な代替イントラ予測モードを決定することができ、さらに、複数の「最良」の可能な代替イントラ予測モードを決定してもよい。例えば、上述の実施態様では、「最良」の可能な代替イントラ予測モードは対である。この対が含む代替イントラ予測モードは、1つであっても2つであってもよい。プロセス700の典型的な実施態様では、可能な代替イントラ予測モードが存在しない場合には、「最良」のモードが存在しない。
【0116】
埋込みメタデータおよび検出メタデータを、最良の可能な代替イントラ予測モードまたはモード・グループに対して記憶する(750)。一実施態様では、埋込みメタデータは、ストリーム中のビット・オフセット、および1つまたは複数の符号化された代替マクロブロック・タイプを含み、この1つまたは複数の代替マクロブロック・タイプは、1つまたは複数の最良の代替イントラ予測モードに対応する。一実施態様では、検出メタデータは、ピクチャ番号(またはフレーム番号)、マクロブロック位置、ならびにオリジナルおよび代替の検出値またはその他の何からの参照検出値を含む。このような実施態様では、検出値は、全体コストを計算する動作730の間に計算することができる。例えば、検出値は、ロバスト性コストを計算するプロセス中に決定することもできる。
【0117】
様々な実施態様では、メタデータを記憶する前または記憶した後で、メタデータを減少させる、より一般的にはフィルタリングする。1つのこのような実施態様では、ペイロード・ビットが100しかないので、各ブロックの最良の代替モード(またはモード・グループ)をランクづけし、上位100個のみを保持および記憶する。第2の実施態様では、ビット・ストリーム中の任意の2つの変更の間に存在しなければならない未変更ビットの最小数を指定する。第2の実施態様におけるこの基準は、例えば、最良の代替モードが隣接する2つのブロックで使用されないようにすることができる。第3の実施態様では、エントロピ符号化ビット・ストリーム中の各特定の変更のサイズ(ビット数で表される)を指定する。第3の実施態様におけるこの基準は、例えば、埋込みメタデータのエントリのサイズを指示することができる。もちろん、各特定の変更は、置換される全てのビットの値を実際に変更する必要はない。さらに別の実施態様では、所与のブロックに対して、メタデータを、最良の代替モードが要件R1、R2およびR3も満たしている場合に、その最良の代替モード(またはモード・グループ)についてのみ記憶する。さらに、実施態様によっては、上記およびその他の基準を組み合わせることもできる。
【0118】
一実施態様では、埋込みメタデータは、オリジナルの符号化ビット・ブロックが見つかる圧縮ビット・ストリーム内の位置と、一方が対応するペイロード・ビットが「0」である場合に置換ブロックとして使用され、もう一方が対応するペイロード・ビットが「1」である場合に置換ブロックとして使用される2つのビット・ブロックとを含む。一実施態様では、これらのブロックのうち一方がオリジナルのビット・ブロックであり、もう一方が代替ビット・ブロックである。この場合には、変更可能な構文要素のリストは、許容可能な代替値が1つしかない構文要素を含むことができる。別の実施態様では、2つのブロックは、両方とも、異なる構文値に対応する代替のビット・ブロックである。この場合には、変更可能な構文要素のリストは、許容可能な代替値が少なくとも2つ存在する構文要素しか含むことができない。
【0119】
一実施態様では、検出メタデータは、埋込みメタデータを含む。この情報を用いて、透かし入り符号化ビット・ストリームから直接、ペイロードを回復することができる。
【0120】
一実施態様では、検出メタデータは、さらに、あるいは別法として、ビット・ストリーム修正が検出可能になる圧縮解除動画シーケンス中の位置を含む。これは、フレームまたはピクチャの番号およびブロック番号、マクロブロック番号、ピクセル位置、あるいはその他の回復に必要な任意のロケータとして指定することができる。検出メタデータは、ペイロード・ビット「0」および「1」に関連する検出値またはその他の何らかの参照検出値を示す指標も含むことができる。
【0121】
また、検出メタデータは、変更が行われていない場合に測定されるはずの検出尺度の値を含むこともできる。換言すれば、これは、検出尺度のオリジナルの値を含むことができる。前述の例では、検出尺度は特定のブロックの平均輝度であるので、検出データは、当該ブロックのオリジナルの平均輝度を含むことができる。オリジナルの値を含むことにより、検出プロセスは、検出値が透かし入れの結果として増大したか減少したかを確認することができる。一実施態様では、メタデータの決定は、前処理中に実行される。
【0122】
明るさまたはコントラストの大域的または局所的変更に対する透かし入れ技術のロバスト性を高めるために、透かし入れプロセスで修正されないと予想されるブロックについて、検出データを保存することもできる。例えば、検出データは、透かしによって変化しないブロックのオリジナルの平均輝度を含むことができる。検出器は、その後これらを参照として使用して、画像全体、または少なくとも当該画像の当該参照の領域の部分の輝度が変化したかどうかを判定することができる。参照ブロックの測定輝度が、検出データに記録された輝度と一致しない場合には、ペイロードを回復する前に補償を行うことができる。例えば、平均輝度尺度の補償を、記憶した全ての検出値に付加することもできる。
【0123】
図8を参照すると、プロセス800は、参照に基づいて埋込みメタデータを決定する一般的な実施態様を与えるものである。従って、プロセス800は、機能面においてプロセス700とある程度の類似点を有する。
【0124】
プロセス800は、参照指標を含む可変長符号化データにアクセスすることを含む(810)。すなわち、可変長符号化データは、画像を予測符号化するために使用される実際の参照を識別する情報の符号化(参照指標)を含む。実際の参照を識別する情報の符号化である参照指標は、特定の値を有する。1つまたは複数の前述の例では、参照指標は、対応するイントラ予測モードを介してマクロブロックの予測符号化に使用される参照を識別するマクロブロック・タイプ・フィールドの値の符号化である。
【0125】
プロセス800は、可変長符号化データ中の参照指標の位置を決定することを含む(820)。この位置は、例えば、埋込みメタデータの作成に使用される。
【0126】
プロセス800は、参照指標の代替値を決定することも含む(830)。代替値は、上記の特定の値とは異なる。代替値は、実際の参照とは異なる別の参照を識別する代替情報の符号化である。例えば、プロセス700の全体または一部を、動作830を実行するのに使用することができる。1つまたは複数の上述の例では、代替値は、マクロブロック・タイプ・フィールドの異なる値の符号化である。
【0127】
プロセス800は、例えば代替値を特定の値の代入値(透かし)として指定する、代替値の透かしとしての有効性を評価する、または埋込みメタデータを作成するなど、様々な追加の動作を含むこともできる。
【0128】
例えばプロセス700またはプロセス800を用いて一組の可能な透かし置換値を作成した後で、実施態様によっては、変更すべきマクロブロックのサブセットを選択することもできる。この選択は、通常は、適用分野のペイロード要件、およびペイロードに適用される任意のデータ符号化に基づいて行われる。この選択では、通常、各変更のコスト(例えば前述の忠実度コストおよびロバスト性コスト)が情報として与えられる。通常は、この選択では、コスト変化が小さい方が好まれる。一実施態様では、各マクロブロックの最良の可能な代替値に対する全体コストに応じて、マクロブロックをランクづけする(730および740)。(最良の可能な代替値に対する)全体コストが最低であるマクロブロックが、ペイロード・データによる透かし入れに選択される。
【0129】
図9を参照すると、例えば透かしを挿入するなど、置換値を挿入する実施態様を記述するプロセス900が示してある。プロセス900は、ペイロードにアクセスすることを含む(910)。アクセスされるペイロードは、ビットまたはその他のシンボルで表すことができる。通常は、ペイロードはビットで表され、またはビットに変換される。さらに、ペイロードは、符号化されていてもよい。
【0130】
プロセス900は、置換位置および置換値を決定することを含む(920)。動作920は、例えば、上述のようにプロセス700とそれに続くランクづけプロセスとを用いて実行することができる。動作910および920は、何れの順序で実行してもよい。ただし、一実施態様では、動作910を先に実行し、ペイロード・ビット数を決定し、その後に動作920において、例えば全てのペイロード・ビットがマクロブロックに割り当てられるまで上位にランクされるマクロブロックのみを選択することによって、必要な位置だけを決定する。動作920は、例えば
図7に関連して説明した要件など、その他の様々な実施態様要件の影響を受ける可能性がある。
【0131】
少なくとも1つの実施態様では、動作920の全体または一部を、前処理段階中に実行する。例えば、前処理段階中に、埋込みメタデータを含む表を準備することができる。その後、動作920において、この表にアクセスすることによって、置換値および置換位置を決定することができる。
【0132】
プロセス900は、さらに、置換値を置換位置に挿入して(930)、例えば透かしを提供することも含む。置換値の挿入では、既存の符号化データを置換値で置換する。次いで、修正済みデータを、記憶または伝送することができる。これらの置換動作では、通常は符号化ペイロードが情報として与えられる。
【0133】
図10を参照すると、参照に基づいて代入値を挿入する一般的な実施態様を記述するプロセス1000が示してある。従って、プロセス1000は、機能面においてプロセス900とある程度の類似点がある。
【0134】
プロセス1000は、参照指標を含む可変長符号化データにアクセスすることを含む(1010)。すなわち、可変長符号化データは、画像を予測符号化するために使用される実際の参照を識別する
符号化情報
(参照指標)を含む。実際の参照を識別する情報の符号化物である参照指標は、特定の値を有する。1つまたは複数の前述の例では、参照指標は、対応するイントラ予測モードを介してマクロブロックの予測符号化に使用される参照を識別するマクロブロック・タイプ・フィールドの値の符号化物である。
【0135】
プロセス1000は、参照指標の代替値にアクセスすることを含む(1020)。代替値は、上記の特定の値とは異なる。代替値は、実際の参照とは異なる別の参照を識別する
符号化代替情報
である。例えば、代替値は、例えば記憶装置からアクセスしてもよいし、あるいは実時間で計算してもよい。実施態様によっては、例えば、参照指標の位置で索引づけされた表から代替値にアクセスすることができる。
【0136】
プロセス1000は、参照指標の代入値として代替値を挿入することを含む(1030)。代替値を可変長符号化データに挿入して、画像に透かし入れを行う。
【0137】
プロセス1000は、例えば修正済み可変長符号化データを記憶または伝送するなど、様々な追加の動作を含むことができる。
【0138】
1020でアクセスされる、符号化要素の位置および可能な置換値を識別するデータの全体または一部は、記憶装置に記憶することもできるし、電子的に送信することもできる。一実施態様では、DVD、ハードディスクまたはその他の記憶装置などの装置に、これらの位置および値を記憶する。この装置は、情報を記憶するプロセッサ可読媒体を含む。記憶された情報は、符号化データ・セットの一部分に関する置換値を識別する。別の実施態様では、この装置のプロセッサ可読媒体に記憶される情報を含むようにフォーマット化された信号を提供する。
【0139】
さらに別の実施態様は、例えばプロセス900またはプロセス1000の結果など、様々なプロセスの結果に対応する。例えば、一実施態様は、修正済み符号化データを含むDVD、ハードディスクまたはその他の記憶装置などの装置であり、別の実施態様は、これらの修正済み符号化データを含むようにフォーマット化された信号である。さらに詳細には、一実施態様は、修正済みの部分を含む符号化データを記憶するプロセッサ可読媒体を含む装置である。別の実施態様は、この装置のプロセッサ可読媒体に記憶される符号化データを含むようにフォーマット化された信号である。
【0140】
上記の説明は、対象構文要素を解析し、符号化ビット・ストリーム中のビット・ブロックを代替ビット・ブロックで置換することによって代入することができる許容可能な代替値が存在する場合にその全てを識別する方法について述べたものである。AVC符号化シーケンス中の全ての構文要素を検査することによって、許容可能な代替値が少なくとも1つは存在する構文要素のリストを構築することができる。これは、「変更可能な構文要素」のリストである。変更可能な各構文要素ごとに、許容可能な代替値のリストを構築することができる。他の実施態様では、マクロブロック・タイプおよび基礎となるイントラ予測モード以外の構文要素を変更することもできることに留意されたい。このようなその他の構文要素としては、例えば、動きベクトル、剰余値または(例えば)DCT係数を用いた剰余値の符号化、あるいは参照ピクチャまたは参照フレームのインター予測指標などがある。
【0141】
様々な構文要素は、何らかの方法で参照を識別する情報を意味する参照情報と関連している。「参照」とは、一般に、予測の基礎として使用される情報セットを指す。「参照識別子」とは、一般に、参照を識別する情報を指す。例えば、イントラ予測モードは現在のブロックの予測の基礎として使用されるピクセルを識別するので、参照は、ブロックのイントラ予測モードによって識別することができる。また、イントラ予測モードは、それらの識別されたピクセルの使用方法も識別する。参照は、例えば、動きベクトル、あるいは予測の基礎として使用された以前のフレームまたはマクロブロックの指標によって識別することもできる。所与のマクロブロックは、複数の参照識別子および複数の参照を有することもできることに留意されたい。
【0142】
参照および/または参照識別子は、イントラ予測ブロックおよびインター予測ブロックについて存在することができることは明らかである。イントラ予測ブロックは、例えばイントラ予測モードまたは(イントラ予測モードを識別する)マクロブロック・タイプなどの参照識別子を使用することができ、参照は、例えば、同じピクチャのピクセル・ブロックまたはピクセル・セットとすることができる。インター予測ブロックは、例えば動きベクトルなどの参照識別子を使用することができ、参照は、別のピクチャの全体または一部とすることができる。
【0143】
情報の埋込みの目的は、ペイロードに応じて、全ての変更可能な構文要素のリスト上の構文要素のサブセットを修正して、それらの値をオリジナルの値からリストされている許容可能な代替値の1つに変更することである。1つの実用的な実施態様では、これは、
図9に示すように3つのステップで実施される。
【0144】
上述のように、ペイロードは、検出メタデータを援用してAVCビット・ストリームから回復することができる。いくつかの実施態様では、検出メタデータは、ペイロード情報を表す特定の構文要素、およびそれらの要素のオリジナルの値を示す。埋込みプロセスにおいて、オリジナルの値を使用して「0」を表し、代替値を使用して「1」を表した場合には、検出器は、ビット・ストリーム中の値を、検出データに記憶されたオリジナルの値と比較すればよい。両者が一致した場合には、検出器は「0」ビットを報告する。両者が一致しない場合には、検出器は「1」ビットを報告する。埋込みプロセスにおいてオリジナルの値を2つの代替値の一方で置換した場合には、これら2つの代替値およびそれらに対応するラベルを、検出データから回復する。次いで、検出器は、ビット・ストリーム中の値をこれら2つの代替値の1つまたは複数と比較し、対応するラベルを報告する。
【0145】
ペイロード・データも、復号済みピクセル領域画像から回復することができる。このプロセスは、サブセット選択プロセスで使用される特定の尺度に特有のプロセスである。1つの実用的な実施態様では、この尺度は、ピクセル・ブロックの平均輝度である。各修正済みブロックのオリジナルの平均輝度は、検出データから回復される。検出器は、復号済み画像シーケンス中の指定されたピクセル・ブロックの平均輝度を計算し、その値を、検出データに記憶されたオリジナルの値と比較する。算出した値がオリジナルの値より大きい場合には、検出器は「1」ビットを報告する。算出した値がオリジナルより小さい場合には、検出器は「0」ビットを報告する。このような実施態様では、検出データに位置およびオリジナルの値を記憶するが、「0」ビットまたは「1」ビットについての予想検出値を記憶する必要はない。
【0146】
この回復方法は、復号済み画像が、復号後、検出前に輝度の一様な変化によって修正された場合に、問題が生じる可能性がある。この問題に対処するために、いくつかの参照ブロックの平均輝度を、検出データに記憶しておくことができる。これらは、埋込みプロセスで変化しないブロックである。検出器は、回復の直前に参照ブロックの平均輝度を計算し、埋込みプロセスと無関係な全ての輝度変化を発見する。これらの輝度変化は、それぞれに応じてオリジナルの値を調節することによって補償することができる。少なくとも1つの実施態様では、透かし入りブロックに近い参照ブロックを使用することにより、不均一な輝度変化に合わせた調節を行う。
【0147】
情報の埋込みには様々な適用分野があることは明らかである。このような適用分野の1つは、データ・ストリームにペイロードを埋め込む透かし入れである。ただし、情報埋込みの様々な適用分野では、使用される要件が異なる可能性がある。例えば、ユーザが知覚できる変化を生じる変更をデータ・ストリームに施すことが望ましいこともある。
【0148】
図11を参照すると、ペイロード情報を回復する、より一般的には、透かしを検出する、大まかなプロセス1100が示してある。プロセス1100は、例えば、符号化された透かし入りビット・ストリーム、または復号された透かし入りビット・ストリームのベースバンド・データに適用することができる。
【0149】
プロセス1100は、透かしがあるかどうか検査する位置を決定することを含む(1110)。このプロセスは、透かし入れプロセスが適用されているコンテンツにも、適用されていないコンテンツにも適用することができる。さらに、透かし入れプロセスが適用されている場合でも、(上述のように)当該コンテンツを変更することなくペイロード・ビットを埋め込むこともできる。従って、検査される位置は、修正されていてもよいし、修正されていなくてもよい。このプロセスは、コンテンツに以前に透かし入れが行われている場合には、埋め込まれたペイロードを回復するようになっている。プロセス1100は、決定された位置のデータにアクセスし(1120)、このデータを解析する(1130)。プロセス1100は、さらに、透かしが存在する場合には、この解析に基づいて透かし情報を識別することを含む(1140)。識別された透かし情報は、例えばビット・シーケンス(またはその他の情報単位)、あるいはマクロブロック(またはその他のピクチャ単位)に対して決定された検出値である可能性がある。
【0150】
プロセス1100を、1つまたは複数のその他の位置について繰り返して、ペイロードを構成する1つまたは複数のさらに別のビットを識別することもできる。従って、プロセス1100を用いて、ペイロード全体を回復することもできる。
【0151】
プロセス1100の複数の実施態様では、修正済みのビット・ストリームを解析すること、ならびにベースバンド・データ(例えばピクセル領域データまたは音声データ)も解析することを含む。例えば、前述の実施態様の1つによれば、ビット・ストリームは、対象要素に関連するビットを修正することによって修正することができる。透かしは、適当なビット位置にアクセスし、それらの位置に修正がないかどうか調べることによって、このようなビット・ストリーム中で検出することができる。埋込みメタデータに見られるものなど、ビット位置および修正済みの値(または可能な修正済みの値)も、検出データに含めることができる。
【0152】
別法として、またはこれに加えて、このような修正済みビット・ストリームを復号し、場合によっては再符号化などその他の処理を施すこともできる。再符号化を行う場合には、再符号化済みのビット・ストリームが、オリジナルの修正済みビット・ストリームと同じ位置に同じ修正済み対象要素を含んでいることはないと予想される。しかし、再符号化済みのビット・ストリームを復号して、通常はオリジナルの修正の影響が依然として存在しているベースバンド(例えばピクセル領域または音声クリップ)のディジタル表現を生成することはできる。従って、オリジナルの修正が影響を及ぼすフレーム番号およびブロック番号を識別する検出データは有用である。例えば、対象要素は、最初は特定のブロックに関する動きベクトルであり、その動きベクトルを修正した影響として、当該特定のブロックまたはブロック・セットの平均輝度が増大している可能性もある。この平均輝度の増大は、オリジナルの修正済みビット・ストリームを処理しても保存することができる。ただし、動きベクトル、および動きベクトルに施した最初の変更は、通常は、再符号化後は完全には同じではない。
【0153】
図12を参照すると、特にベースバンド画像(すなわちピクセル・データ)と共に使用する場合の、ベースバンド画像に合わせた特定の動作を含むプロセス1100の実施態様を記述するプロセス1200が示してある。ただし、ベースバンド画像の代わりに圧縮データにアクセスする(例えば記憶装置から取り出す、または伝送により受信する)場合には、圧縮データを復号して、ベースバンド画像を得ることができる。
【0154】
プロセス1200は、ベースバンド画像にアクセスすること(1205)を含み、必要なら時間的且つ/または幾何学的位置合わせを実行する(1210)ことも含む。位置合わせは、検出メタデータが、例えばフレーム番号およびフレーム内のブロック位置でそれぞれの変更を記述することがあるので、必要になることがある。従って、位置合わせにより、フレーム番号およびブロックを適切に識別することが容易になる。この位置合わせを行う手法は数多くあるが、この実施態様は位置合わせの手法とは無関係であるので、様々な手法を使用することができる。
【0155】
プロセス1200は、検出メタデータにアクセスすることを含む(1215)。検出メタデータの各エントリは、例えばそのフレーム位置およびフレーム内のブロックによって変更を規定することができる。各エントリごとに、一般に動作1225〜1245を含むように規定することができるループ(1220)を実行する。
【0156】
検出メタデータの各エントリごとに、対応するピクセル・データ・ブロックをベースバンド画像から抽出する(1225)。抽出したブロックから、検出特徴を測定、計算、またはその他の方法で決定する(1230)。上記の1つの例では、検出特徴は平均輝度であり、別の例では、検出特徴は分散である。
【0157】
プロセス1200およびループ(1220)は、決定した検出特徴を検出メタデータと比較することを含む(1235)。一実施態様では、この比較は、例えば平均輝度値などの決定した特徴を、検出メタデータ中の2つの平均輝度値と比較することを含む。最もよく一致するものを選択し、それに対応するシンボルを出力する(1240)。一実施態様では、最もよく一致するものを、決定した検出特徴に最も近い記憶検出値として識別する。実施態様によっては、例えば非線形評価を適用して、最もよく一致するものを決定することもできる。
【0158】
プロセス1200およびループ(1220)は、さらに、検出メタデータに示されている次のイントラ予測符号化ブロックに進むようにループ・バックすることも含む(1245)。ループ(1220)は、検出メタデータに示されている全てのブロックに対して繰り返される。
【0159】
ループ(1220)を繰り返すたびに、動作(1240)でシンボルが出力され、その結果、シンボル・ストリームが得られる(1250)。必要なら、シンボル・ストリームを復号する(1255)。実施態様によっては、ペイロード・ビットを符号化していなくてもよいことに留意されたい。(例えば
図1のデータ・コーダ120などにおいて)データ符号化プロセスがペイロードに適用されている場合には、対応するデータ復号プロセスをシンボル・ストリームに適用して、ペイロード推定と呼ばれる回復したペイロードを得る(1260)。
【0160】
ペイロード推定(1260)は、復号されたシンボル・ストリーム、または(ペイロードが符号化されていない場合には)シンボル・ストリームに対応する。通常の実施態様では、動作(1240)で出力されるシンボルはビットであるが、実施態様によっては、ビット以外のシンボルを符号化することもある。
【0161】
上述のように、検出特徴として平均輝度を使用する場合には、システムは、大域的な明るさの変化によって混乱する可能性がある。換言すれば、大域的な明るさの増大により、ベースバンド画像から抽出した輝度が、メタデータに記憶された2つの値のうちの明るい方に常に近づいていく可能性がある。従って、シンボル・ストリームが、(誤って)全て「1」ビットで構成される可能性がある。これに対処するために、埋込み装置は、いくつかの参照エントリを検出情報に付加することができる。参照エントリは、透かし入れプロセスの影響を受けないブロックに関するフレーム番号、ブロック位置およびオリジナルの輝度値のリストである。検出器は、これらの参照値を読み出し、ベースバンド画像に見られる対応する値とこれらの参照値とを比較することができる。その後、(おそらくは位置合わせ時に)参照ブロックの測定輝度が検出メタデータ・ファイルにリストされた輝度と一致するように、ベースバンド画像を調節すればよい。
【0162】
プロセス900またはプロセス1200の様々な実施態様では、様々なデータの1つまたは複数を含む記憶した検出メタデータを使用する。例えば、検出メタデータは、透かしがあるかどうか検査する位置を識別する位置情報を含むことができる。位置情報は、例えば、フレーム識別子および/またはブロック識別子を含むことができる。
【0163】
検出メタデータは、例えば、特徴のベンチマーク値を含むことができる。ベンチマークは、例えば、位置が修正される前の特徴の値とすることができる。ベンチマークを、例えば、アクセスした位置(1120)の特徴の実際の値(新しいベンチマーク)と比較して、変更の指標を得ることもできる。例えば、この比較により、その値(ベンチマーク)が、修正の結果として増加したのか減少したのかを示すことができる。
【0164】
検出メタデータは、例えば、別の位置(透かし入れされていない位置)の特徴のベース値を含むこともできる。このベース値は、例えば、透かし入れされていない位置の平均輝度とすることができる。上述のように、このベース値を使用して、透かし入れされた位置よりも大きな影響を及ぼす変更がデータに加えられたかどうかを判定することができる。状況によっては、大域的な変化(例えばフレーム全体の変更)が生じている可能性もある。例えば、フレーム全体の平均輝度が変更されていることもある。この場合には、ベース値を、透かし入れされていない位置における特徴の新しい値(新しいベース値)と比較すればよい。その差がしきい値を超える場合には、大域的な変化が生じていると判定することができる。あるいは、単純にその差を大域的な差と見なしてもよく、その差を、(可能な)透かし入れされた位置について決定した値(新しいベンチマーク)に付加して、大域的な変化を説明してもよい。この代替例では、別法として、差を上記の値(新しいベンチマーク)ではなくベンチマークに付加することもできることに留意されたい。さらに、実施態様によっては、ベース値と新しいベース値の比を求め、ベンチマークまたは新しいベンチマークの何れかに、この比を乗算してもよい。
【0165】
図13を参照すると、システム1300は、予め準備された埋込み情報(埋込みメタデータと呼ぶ)を使用して映像に透かし入れを行う(その他のタイプのコンテンツの透かし入れも行うことができる)プレーヤ1305を提供する。透かし入れされた映像は、表示に備える。また、システム1300は、表示に備えている映像の再符号化にも対応しており、この再符号化は、例えば、当該映像の不正コピーが再符号化されたときなどに行うことができる。システム1300は、さらに、再符号化の復号、およびシステム全体の中の1つまたは複数の点でのオリジナルのペイロードの検出にも対応する。システム1300は、1つまたは複数のプロセスの流れ図でもある。
【0166】
プレーヤ1305は、ペイロード1310、映像1315および埋込みメタデータ1318を含む。プレーヤ1305は、ペイロード1310、映像1315および埋込みメタデータ1318を受信し、透かし入り映像を提供する透かし入れ部1320を含む。ペイロードは、ペイロード検出器1345によって、透かし入り映像から検出することができる。
【0167】
プレーヤ1305は、透かし入り映像を受信して、エントロピ復号を実行するエントロピ・デコーダ1325を含む。プレーヤ1305は、さらに、エントロピ復号されたストリームをエントロピ・デコーダ1325から受信し、予測復号を実行してピクセル領域画像1335を生成する予測デコーダ1330も含む。ピクセル領域画像は、ディスプレイ1355、またはベースバンド・データに対して働くペイロード検出器1350に送ることができる。
【0168】
ピクセル領域画像は、予測再符号化器1360に送り、その後にエントロピ再符号化器に送って再符号化して、符号化出力1370にすることもできる。符号化出力1370は、例えば、AVC準拠ビット・ストリームとすることができる。符号化出力1370は、例えば、配布に備えて書込み可能媒体に記憶することができる。予測再符号化器1360およびエントロピ再符号化器1365は、プレーヤ1305とは別の、コンテンツの不正コピー(出力1370で表す)を製造するための装置の一部とすることができる。
【0169】
符号化出力1370は、例えば、エントロピ・デコーダ1380(エントロピ・デコーダ1325と同じであってもよい)に送り、その後に予測デコーダ1385(予測デコーダ1330と同じであってもよい)に送って復号して、ピクセル領域画像1390にすることもできる。ピクセル領域画像1390は、ディスプレイ1392および/またはペイロード検出器1395(ペイロード検出器1350と同じであってもよい)に送ることができる。エントロピ・デコーダ1380および予測デコーダ1385は、プレーヤ1305ならびに予測再符号化界1360およびエントロピ再符号化器1365と別の装置の一部とすることができる。例えば、このような別個の装置の1つは、コンテンツの不正コピー(出力1370で表す)を受け取って解析するペイロード検出施設に地理的に位置していてもよい。
【0170】
プロセス900または本願に記載のその他のプロセスは、処理装置も含めた様々な装置で実行することができることは明らかである。このような装置には、例えばアクセス・データ、ベンチマーク値、ベース値および1つまたは複数の透かし情報がある可能性のある位置などのデータを記憶する記憶装置も含まれる。さらに、プロセス900または本願に記載のその他のプロセスは、一組の命令セットとして実施することもできる。
【0171】
記載した実施態様の特色および特徴は、様々な適用分野に当てはまる。適用分野としては、例えば、DVDなどのディスクへの透かし入れや、ディジタル・ストリームへの透かし入れなどがある。ディスクの透かし入れは、例えばディスクの複製時などに様々な方法で行うことができる。ディジタル・ストリームの透かし入れも、例えば再生時、放送時、ダウンロード時、またはその他の形でのディジタル・ストリームの転送時に、様々な方法で行うことができる。これらの特色および特徴は、適用分野に応じて改変することもできる。例えば、符号化ビット・ストリームを、透かし入れ以外の目的のために修正することもできる。一例としては、視聴者に見せるためのメッセージの埋込みが挙げられる。そのメッセージを、さらに、ペイロードなどの基準に基づいて変化させることもできる。さらに、上述の実施態様では主に可変長符号化に焦点をあてたが、適用分野によっては、同じ概念を他の符号化技術に適用することもできる。
【0172】
本願に記載した概念、実施態様および特色は、例えば、通常のDVDの作成、配布および再生プロセスにおける様々な段階で適用することができる。例えば、これらの概念および特色は、以下において利用することができる。
【0173】
1.コンテンツを前処理して、置換値を決定すること。置換値は、この段階では挿入しなくてもよいが、例えば後の挿入に備えてデータ構造(例えば表)に記憶しておくことができる。
【0174】
2.上記の項目1で述べたデータ構造、当該データ構造を搬送する信号、または当該データ構造を記憶するプロセッサ可読媒体。このような媒体は、例えば、当該データ構造と未修正のコンテンツを両方とも含むこともできる。
【0175】
3.上記の項目1の置換値をコンテンツに挿入すること。
【0176】
4.上記の項目3で生成された修正済みコンテンツ。この修正済みコンテンツは、データ構造、当該修正済みコンテンツを搬送する信号、または当該修正済みコンテンツを記憶するプロセッサ可読媒体の何れかである。
【0177】
5.上記の項目4の修正済みコンテンツを復号して、例えばピクセル・データ(画像を符号化した場合)または音声データ(音声を符号化した場合)などのベースバンド・データを生成すること。
【0178】
6.透かしを含むこともできる修正済みコンテンツである、上記の項目5の復号済みコンテンツ自体。復号済みコンテンツは、例えば、データ構造、当該復号済みコンテンツを搬送する信号、または当該復号済みコンテンツを少なくとも一時的に記憶するプロセッサ可読媒体とすることができる。
【0179】
7.上記の項目6の復号済みコンテンツを表示する、より一般的には提示すること。表示または提示に備えることも含む。
【0180】
8.上記の項目6の復号済みコンテンツを、符号化されたビットが上記の項目4で与えられたビットと異なる場合でも検出特徴(修正により得られる)が保持されるように、再符号化すること。
【0181】
9.項目8の再符号化済みコンテンツを含むデータ構造。または当該再符号化済みコンテンツをフォーマットかおよび搬送する信号。または当該再符号化済みコンテンツを記憶するプロセッサ可読媒体。
【0182】
10.上記の項目8の再符号化済みコンテンツを復号して、ベースバンド・データを生成すること。
【0183】
11.上記の項目10の復号で生成されるベースバンド・データ。このベースバンド・データは、例えば、データ構造、当該ベースバンド・データを搬送する信号、または当該ベースバンド・データを少なくとも一時的に記憶するプロセッサ可読媒体とすることができる。
【0184】
12.上記の項目11のベースバンド・データを表示する、またはより一般的には提示すること。表示または提示に備えることも含む。
【0185】
13.上記の項目4の修正済みコンテンツからペイロード(例えば透かし)を検出すること。
【0186】
14.上記の項目5のベースバンド・データからペイロードを検出すること。
【0187】
15.上記の項目8および9の再符号化済みコンテンツから、符号化ビットが許す場合に、ペイロードを検出すること。
【0188】
16.上記の項目11のベースバンド・データからペイロードを検出すること。
【0189】
本開示の様々なセクションで見出しを用いていても、それらの見出しは、当該セクションの開示をその見出しの主題に限定したり、その他のセクションの開示をその見出しの主題以外の主題に限定したりするものではないことに留意されたい。これらの見出しは例示であり、一般的な意味合いで読者を助けるためのものである。これらの見出しは、本開示の流れを制限したり、本開示の適用可能性または一般性を制限したりするものではない。
【0190】
本願で使用する「透かし」という用語は、様々なものを指す可能性がある。例えば、「透かし」は、後に検出できるように修正または挿入されたデータ、あるいはその結果得られるベースバンド修正を指すこともある。
【0191】
明らかであるが、「構文要素(syntax element)」という用語は、様々なタイプの情報の1つまたは複数を表すことができる。例えば、「構文要素」は、動きベクトル、剰余DCT係数、マクロブロック・タイプ、量子化パラメータ、またはフラグとすることができる。従って、構文要素は、全てが同じ長さを有している必要はなく、様々に異なる長さを有することができる。本願に開示の様々な実施態様では、構文要素が表す情報の種類、および構文要素のサイズ/長さに関わりなく、任意の種類の構文要素を扱うことができる。
【0192】
例として、ピクチャ、フレームまたはブロックに関連して様々な実施態様を説明した。しかし、本願に記載した概念、実施態様および特色は、画像一般に広く適用することができ、その画像は、1つまたは複数のピクセル、ブロック、スライス、フィールド、フレーム、ピクチャまたはシーケンスとすることができる(あるいはこれらを含むことができる)。
【0193】
さらに、ビデオ・データに関連して多くの実施態様を説明した。しかし、本願の概念、実施態様および特色は、一般に、音声データおよびその他の種類の符号化データにも等しく適用することができる。
【0194】
2つの装置を直接または間接に接続する場合には、2つの装置または構成要素を結合すると言う。直接に接続された装置の場合は、接続される装置の間に介在する装置が存在しない。間接に接続された装置の場合は、接続される装置の間に介在する装置が1つまたは複数存在する。
【0195】
さらに、AVCに関連して多くの実施態様を説明した。しかし、本願の概念、実施態様および特色は、(1)何らかの標準に準拠した環境に限定されるわけではなく、標準を用いない様々な環境に適用することができ、(2)もちろんAVCに限定されず、(3)その他の既知の標準に広く適用され、(4)少なくともいくつかの点では将来開発される標準にも広く適用することができる。その他の標準としては、AVC関連標準などが挙げられる。「AVC関連標準」とは、AVCに基づく、またはAVCに類似した、その他の標準を広く指すものである。
【0196】
本明細書に記載の実施態様は、例えば、方法またはプロセス、装置、あるいはソフトウェア・プログラムとして実施することができる。1つの形態の実施態様の状況でしか述べていない場合でも(例えば方法としてしか述べていない場合でも)、そこで述べられている特色の実施態様を、その他の形態(例えば装置またはプログラムなど)で実施することもできる。装置は、例えば適当なハードウェア、ソフトウェア、およびファームウェアなどで実施することができる。方法を、例えばプロセッサなどの装置として実施することもできる。ここで言う「プロセッサ」とは、例えばコンピュータ、マイクロプロセッサ、集積回路またはプログラマブル論理装置などの処理装置を広く指している。処理装置には、例えばコンピュータ、携帯電話、携帯情報端末(「PDA」)、およびその他のエンドユーザ間の情報通信を容易にする装置などの通信装置も含まれる。
【0197】
本明細書に記載する様々なプロセスおよび特色の実施態様は、様々な機器またはアプリケーション、具体的には、例えばデータの符号化および復号に関連する機器またはアプリケーション、あるいはコンテンツ作成に関連する機器またはアプリケーションで実施することができる。機器の例としては、ビデオ・コーダ、ビデオ・デコーダ、ビデオ・コーデック、ウェブ・サーバ、セット・トップ・ボックス、ラップ・トップ、パーソナル・コンピュータ、携帯電話、PDA、およびその他の通信装置などが挙げられる。明らかであるが、この機器は移動機器であってもよく、移動車両に設置することもできる。
【0198】
さらに、方法は、プロセッサによって実行される命令で実施することもでき、これらの命令は、例えば集積回路、ソフトウェア・キャリア、あるいは例えばハードディスク、コンパクト・ディスケット、ランダム・アクセス・メモリ(「RAM」)または読取り専用メモリ(「ROM」)のようなその他の記憶装置などのプロセッサ可読媒体に記憶することができる。これらの命令は、プロセッサ可読媒体に実装されるアプリケーション・プログラムを構成していてもよい。命令は、例えば、ハードウェア、ファームウェア、ソフトウェアまたはそれらの組合せとすることができる。命令は、例えば、オペレーティング・システム、別個のアプリケーションまたはこれら2つの組合せに見ることができる。従って、プロセッサは、例えば、プロセスを実行するように構成された装置およびプロセスを実行する命令を有するプロセッサ可読媒体を含む装置の両方の特徴を有することができる。
【0199】
当業者には明らかであろうが、実施態様によっては、例えば記憶または伝送することができる情報を搬送するようにフォーマット化された信号を生成することもできる。この情報としては、例えば、方法を実行するための命令、または上述の様々な実施態様の1つによって生成されるデータなどが挙げられる。この信号は、例えば、(例えばスペクトルの無線周波部分を使用して)電磁波として、またはベースバンド信号としてフォーマット化することができる。このフォーマット化は、例えば、データ・ストリームを符号化すること、および符号化したデータ・ストリームで搬送波を変調することを含むことができる。信号が搬送する情報は、例えば、アナログ情報であってもディジタル情報であってもよい。この信号は、周知のように、有線または無線の様々なリンクを介して伝送することができる。
【0200】
以上、いくつかの実施態様を説明した。ただし、様々な修正を加えることができることは理解されるであろう。例えば、異なる実施態様の要素を組み合わせ、追加し、修正し、または省略して、他の実施態様を生み出すこともできる。さらに、開示した構造およびプロセスの代わりにそれ以外の構造およびプロセスを用い、その結果得られた実施態様によって、少なくとも実質的には同様の1つまたは複数の機能を、少なくとも実質的には同様の1つまたは複数の方法で実行して、開示した実施態様と少なくとも実質的には同様の1つまたは複数の結果を得ることができることも、当業者なら理解するであろう。従って、上記その他の実施態様は、本願で企図したものであり、以下の特許請求の範囲に含まれるものである。