(57)【要約】選択されたＤＣＴ係数を修正することにより圧縮されたビデオ信号に（再び）ウォーターマークを入れる方法及び装置が開示される。これによりビットレートが減少されすぎるのを避けるために、選択された可変長コードワードが、エスケープコードにより表される。ＥＳＣコードがビットレートを増加しすぎるのを避けるために（ＥＳＣコードは対応するＶＬＣワードより７ないし２１ビット長い）、前記ビットレートは、小さなデータチャンクの単位で制御される。ＶＬＣが処理される間に、表は候補のＥＳＣコードで埋められる。ビットレートコントローラは、１つのＶＬＣを適当なＥＳＣコードに再符号化することにより元のデータチャンクと処理されたデータチャンクとの間の差を０にしようと試みる。
2006513659.tif 000002
【特許請求の範囲】
【請求項１】
圧縮されたメディア信号を処理する方法であって、前記メディア信号のサンプルが可変長コードワード（ＶＬＣ）により表される方法において、
サンプルの前記ＶＬＣを復号するステップと、
所定の信号処理アルゴリズムにより複数の前記復号されたＶＬＣを修正するステップと、
第１の符号化方法により前記修正された復号されたＶＬＣを修正されたＶＬＣに符号化するステップと、
第２の符号化方法により前記修正された復号されたＶＬＣを少なくとも１つの長さのコードに符号化するステップと、
複数の前記修正されたＶＬＣのそれぞれに対して、対応する未修正ＶＬＣの長さに最も近い長さを持つ前記第１の符号化方法又は前記第２の符号化方法により符号化された前記修正されたＶＬＣを選択するステップと、
前記選択された修正されたＶＬＣ及び任意の未修正ＶＬＣを結合するステップと、
を有する方法。
【請求項２】
前記第１の符号化方法が、標準的なＶＬＣ符号化方法である、請求項１に記載の方法。
【請求項３】
前記第２の符号化方法が、エスケープコード化方法である、請求項１又は２に記載の方法。
【請求項４】
前記修正された符号化されたＶＬＣが、前記第２の符号化方法を使用して複数の長さに符号化される、請求項１ないし３のいずれか一項に記載の方法。
【請求項５】
前記第２の符号化方法が、前記第１の符号化方法より約７ないし２１ビット長いコードを与える、請求項４に記載の方法。
【請求項６】
前記信号処理アルゴリズムが、ウォーターマークアルゴリズムである、請求項１ないし５のいずれか一項に記載の方法。
【請求項７】
前記復号されたＶＬＣが、特定の基準の下でのみ修正され、前記基準が、適用されるウォーターマークの可視性に関する、請求項６に記載の方法。
【請求項８】
前記符号化された修正されたＶＬＣにビットを挿入するステップを含む、請求項１ないし７のいずれか一項に記載の方法。
【請求項９】
他のパケットを参照しない個別のＶＬＣのパケットの処理を含む、請求項１ないし８のいずれか一項に記載の方法。
【請求項１０】
圧縮されたメディア信号に対する信号処理装置において、
可変長コードワード（ＶＬＣ）により表される圧縮されたメディア信号のサンプルを復号するように動作する復号器と、
所定の信号処理アルゴリズムにより複数の前記復号されたＶＬＣを修正する手段と、
第１の符号化方法により前記修正された復号されたＶＬＣを修正されたＶＬＣに符号化するように動作する第１符号化器と、
第２の符号化方法により前記修正された復号されたＶＬＣを修正されたＶＬＣに符号化するように動作する第２符号化器と、
前記第１符号化器及び前記第２符号化器からの前記修正された復号されたＶＬＣをバッファするように動作するメモリ手段と、
複数の前記修正されたＶＬＣに対して、前記第１符号化器又は前記第２符号化器のいずれかから未修正ＶＬＣの長さに最も近い前記修正されたＶＬＣを選択するように動作するコントローラと、
を有する装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、符号化された信号にウォーターマークを入れる方法に関し、特に、限定はされないが、圧縮されたビデオ信号にウォーターマークを入れる方法に関する。
【背景技術】
【０００２】
符号化された信号、特に圧縮された符号化された信号のウォーターマーキングは、より大きなデータストリームの一部を形成する固定サイズの圧縮されたデータを用いて達成される。ウォーターマークを加えるために、前記圧縮されたデータの少数のコードワード（code words）が変更される。これは結果としてデータサイズの変更を生じる。データチャンク内にあると考えられることができる再符号化データ（re-encoded data）を元のデータストリームにマージする（merge）ために、データサイズは、同期化及び構文の正当性等に関する問題を防ぐために、元の固定サイズと同じでなければならない。
【０００３】
圧縮されたメディア信号にウォーターマークを埋め込む既知の方法は、F. Hartung及びB. GirodのICASSP, vol 4, 1997 pp 2621-2624において発行された“Digital watermarking of MPEG2 coded video in the bitstream domain”に開示されている。この従来技術の刊行物において、メディア信号はビデオ信号であり、信号サンプルは画像画素にＤＣＴを行うことにより得られた離散コサイン変換（ＤＣＴ）係数である。このウォーターマークは、ＤＣＴ変換された擬似雑音シーケンスである。前記ウォーターマークは、前記ＤＣＴ変換された雑音シーケンスを前記ビデオ信号の対応するＤＣＴ係数に加えることにより埋め込まれる。ＭＰＥＧ符号化信号の０の値を持つ係数は、影響を受けない。
【０００４】
従来技術のウォーターマーク埋め込みスキームの問題は、前記ＤＣＴ係数が可変長コードワードにより表されるので、既に圧縮されたビットストリームにおけるＤＣＴ係数の修正がビットレートを変更することである。増加したビットレートは、上述の理由から通常は許容されることができない。したがって従来技術の埋め込み器は、ウォーターマーク入り係数の送信がビットレートを増加するかどうかを確認し、増加する場合には元の係数を送信する。しかしながら、前記ビットレートの減少も望ましくない。ＭＰＥＧシステムにおいて、例えば、前記ビットレートの変更は、デコーダ内のバッファのオーバーフロー又はアンダーフローを生じ、前記ビットストリーム内のタイミング情報の位置を変更する可能性がある。
【０００５】
前記データストリームの元の固定サイズと等しくするためには、データチャンクのサイズを増加する必要があるかもしれない。小さなデータチャンクにおいてこのタイプのデータ展開を行う唯一の様式は、エスケープコードとして可変長コード（ＶＬＣ）を再符号化することである。ビットスタッフィングとして既知の処理、即ち前記データチャンクを所要のサイズに“パックアウト(pack out)”するために追加ビットを加えることは、スタートコードがほとんどのデータチャンクには存在しないので、可能ではない。問題は、エスケープコード化の結果が予測可能ではないことである。例えば、ＭＰＥＧ再符号化を使用すると、エスケープコードとして最小のＤＣＴ−ＶＬＣは、結果としてビット数において２１ビットの増加を生じる。エスケープコードとして最大のＤＣＴ−ＶＬＣの再符号化は、結果として７ビットのビット増加を生じる。エスケープコードとして他のＤＣＴ−ＶＬＣの再符号化は、７ビットと２１ビットとの間の増加を生じる。結果として、１ビットと６ビットとの間の増加は、生じるのが不可能であり、２１ビットより多い増加が、エスケープコードとして複数のＤＣＴ−ＶＬＣを再符号化することにより生じてしまう。更に、エスケープコードとして再符号化するためにいずれのＶＬＣがデータチャンク内に存在するのかを事前に知ることは不可能である。最悪の場合には、適切なＶＬＣが存在しない。３００ビットのビット増加を得るために、エスケープコードとして一緒に符号化されたものが正確にこのビット量を生じる複数のＶＬＣの組み合わせが、見つけられなければならない。これは、特に解決が難しい問題を与える。正しい組み合わせを見つけるのにどれだけの時間がかかるのかは、事前に決定されることができない。この問題を解決するために、リアルタイムの検索アルゴリズムの使用は、非常に強力なプロセッサ又は膨大な量のメモリを必要とする。これらの可能な解決法の両方は、コストのため、この問題が生じる家電製品の分野では許容されることができない要件である。
【０００６】
更に他の背景情報は、本出願人の未刊行の同時係続の国際特許出願ＩＢ０２／０２７３７（代理人整理番号ＰＨＮＬ０１０４９３ＥＰＰ）において見つけられることができる。
【０００７】
結果として、データサイズを一致させる問題に対する代替的な解決法が必要とされる。
【発明の開示】
【発明が解決しようとする課題】
【０００８】
本発明の目的は、上述の不利点に対処することである。
【課題を解決するための手段】
【０００９】
本発明の第１の態様によると、圧縮されたメディア信号を処理する方法が提供され、ここで前記メディア信号のサンプルは、可変長コードワード（ＶＬＣ）により表され、前記方法は、
サンプルの前記ＶＬＣを復号するステップと、
所定の信号処理アルゴリズムにより複数の前記復号されたＶＬＣを修正するステップと、
第１の符号化方法により前記修正された復号されたＶＬＣを修正されたＶＬＣに符号化するステップと、
第２の符号化方法により前記修正された復号されたＶＬＣを少なくとも１つの長さのコード（one length of code）に符号化するステップと、
複数の前記修正されたＶＬＣのそれぞれに対して、対応する未修正のＶＬＣの長さに最も近い長さを持つ前記第１又は第２の符号化方法により符号化された前記修正されたＶＬＣを選択するステップと、
前記選択された修正されたＶＬＣ及び任意の未修正ＶＬＣを結合するステップと、
を有する。
【００１０】
好ましくは、前記第１の符号化方法は、標準的なＶＬＣ符号化方法である。好ましくは、前記第２の符号化方法は、エスケープコード化方法である。
【００１１】
前記第２の符号化方法は、ＶＬＣのビットサイズを増加することができる他のウォーターマーキング・アルゴリズムであってもよく、又は単純にＶＬＣ係数に雑音を加えて前記ビットサイズを増加するアルゴリズムであってもよい。
【００１２】
好ましくは、修正された符号化されたＶＬＣは、前記第２の符号化方法を使用して複数の長さに符号化され、好ましくは前記第２の符号化方法は、前記第１の符号化方法より７から２１ビット長いコードを提供する。
【００１３】
前記信号処理アルゴリズムは、好ましくはウォーターマーク・アルゴリズムである。
【００１４】
好ましくは、前記復号されたＶＬＣは、特定の基準の下でのみ修正され、前記基準は、適用されたウォーターマークの可視性に影響を与える。
【００１５】
前記方法は、好ましくはビットスタッフィング技術により、好ましくは前記第１の符号化方法により符号化された前記修正されたＶＬＣに対して、前記符号化された修正されたＶＬＣにビットを挿入するステップを含むことができる。
【００１６】
前記方法は、好ましくは、ＶＬＣのパケットの処理を含み、好ましくは１８８バイトのパケットの個別に他のパケットを参照しない処理を含む。
【００１７】
本発明の他の態様によると、圧縮されたメディア信号に対する信号処理装置は、
可変長コードワード（ＶＬＣ）により表される圧縮されたメディア信号のサンプルを復号するように動作する復号器と、
所定の信号処理アルゴリズムにより複数の前記復号されたＶＬＣを修正する手段と、
第１の符号化方法により前記修正された復号されたＶＬＣを修正されたＶＬＣに符号化するように動作する第１の符号化器と、
第２の符号化方法により前記修正された復号されたＶＬＣを修正されたＶＬＣに符号化するように動作する第２の符号化器と、
前記第１及び第２の符号化器からの前記修正された復号されたＶＬＣをバッファするように動作するメモリ手段と、
複数の前記修正されたＶＬＣのそれぞれに対して、前記第１又は第２の符号化器のいずれかから未修正のＶＬＣに最も近い長さの前記修正されたＶＬＣを選択するように動作するコントローラと、
を有する。
【００１８】
前記コントローラは、好ましくはビットレートコントローラである。
【００１９】
前記信号処理装置は、好ましくはウォーターマーキング装置である。
【００２０】
本発明のより良い理解のため、及びどのように効果を生じることができるのかを示すために、本発明の特定の実施例が、添付図面を参照して例としてここに記載される。
【発明を実施するための最良の形態】
【００２１】
以下の方法は、ＭＰＥＧ２トランスポートストリーム（ＴＳ）又はプログラムストリーム（ＰＳ）形式の（場合によっては既にウォーターマーク入りの）ビデオ信号に“ノーモアコピー（no more copies）”ウォーターマークを挿入するアルゴリズムを記載する。ＭＰＥＧ２ビデオ圧縮規格に関する他の情報は、
[ISO96:1] ISO/IEC 13818:1:1996(E),“Information Technology-Generic Coding of Moving Pictures and Associated Audio Information: Systems”, Video International Standard, 1996及び
[ISO96:2] ISO/IEC 13818:2:1996(E),“Information Technology-Generic Coding of Moving Pictures and Associated Audio Information: Video”, Video International Standard, 1996
において見つけられることができる。
【００２２】
本出願人の国際特許出願ＷＯ−Ａ−０２／０６０１８２（以後、“ＶＷＭ明細書（specification）”と称する）において、ウォーターマーク埋め込み技術により使用される“ランマージ（run-merging）”の基本的な原理が記載されている。
【００２３】
トランスポートストリームに元のアルゴリズムを使用する問題は、大量のメモリを必要とするか、又はビットレート制御が小さなパケットに対して実行される必要があるかのいずれかであることである。これは埋め込みの有効性を大幅に減少させるので、以下に記載されたアルゴリズムは、３つのツール、即ち（ビット量を減少する）ランマージ・アルゴリズム、エスケープコード化の使用及びスタッフィングビットの追加（両方ともビット量を増加する）を使用して、はるかに高性能なビットレート制御機能を持つ。このように、メモリ及び計算複雑性に関して許容可能なコストでパケット毎のビットレート制御を用いて効果的な埋め込みを行うことが可能である。トランスポートストリーム内のパケットは、プログラムストリームに対するものより小さいので（１８８バイト対２キロバイト）、トラスポートストリーム（ＴＳ）に対する解決法に焦点を合わせる。ＰＳ解決法は、ＰＳパケットを１８８バイとのサブパケットに分割し、前記サブパケットをＴＳパケットと同様に処理することによりＴＳ解決法から得られる。
【００２４】
以下に記載されるＴＳ／ＰＳアルゴリズムは、以下のフィーチャ、即ち
適合されたビットレート制御を持つ標準的なランマージ技術を使用し、
逆多重化及び再多重化を避けるために他のＴＳパケットを参照せずに個別に各１８８バイトのＴＳパケットをリマークし（remarks）、
１つの特定のパケット識別子（ＰＩＤ）により選択されたＴＳのビデオストリームの範囲からの唯一のビデオエレメンタリストリーム（ＶＥＳ）をリマークする、
フィーチャを持つ。
【００２５】
上で参照された前記ＶＷＭ明細書からのビデオエレメンタリストリーム（ＶＥＳ）リマーカ（remarker）をＴＳストリームの場合に適合する主な問題は、非常に多量のメモリ又はＴＳパケット毎のビットレート制御（リマークされたストリームが元のストリームと同じサイズを持つことを確実にする）のいずれかを必要とすることである。前者は、シリコンコストの大きな増加のために抑制的である。後者の場合に、前記ビットレート制御は、十分な埋め込み強度を達成するためには元のＶＥＳ解決法より大幅に複雑である必要がある。前記リマーカの基礎をなすランマージ技術は、前記ストリームの長さを減少する強い傾向をもつ。前記ＶＥＳリマーカに対するビットレート制御は、元のストリームと同じサイズにするために前記ストリームの長さを再び増加するスタッフィングビットの挿入を使用する。１つのＴＳパケット内に、スタッフィングビットの挿入に対して非常に限定された空間しか存在しない。これは、前記ストリームの長さを増加するために追加のツールが必要とされることを意味する。このため、エスケープコード化の使用が導入される。これは、前記リマークされたストリーム内の前記ＶＬＣのそれぞれをエスケープコードにより置き換えることを可能にするので、用途が広いツールである。この用途の広さの難点は、ラン−レベル（run-level）対がＶＬＣ符号化されているのか、又はエスケープコード化されているのかの決定が、非常に難しい組み合わせの問題を生じることである。次のセクションに記載されるビットレート制御アルゴリズムは、最適な解決法に対して大幅に減少された複雑性を持つ次善最適の（sub-optimal）解決法である。
【００２６】
図１に描かれるように、リマーカ１０は、３つの基本ブロック、即ちＶＥＳ（ビデオエレメンタリストリーム）抽出器１２と、パケットリマーカ１４と、ＴＳ再構成器１６とからなる。
【００２７】
構成要素の動作は以下のとおりである。
【００２８】
ＶＥＳ抽出器１２は、ＴＳパケット１８を２つの小さなチャンク、即ちリマークされなければならない前記ＰＩＤに対応する前記ビデオストリームのＶＥＳバイトを含むチャンク２０及び他の全てのデータ、例えばＴＳヘッダ、ＰＥＳヘッダ、オーディオバイト、他のＰＩＤのビデオバイト等を有するチャンク２２に分割する。
【００２９】
パケットリマーカ１４は、ウォーターマーク入り出力チャンク２０ａが、元の入力チャンク２０と正確に同じビット数を持つようにＶＥＳバイトを持つチャンク２０にリマークを加える。パケットリマーカ１４の動作の詳細な説明は、以下に与えられる。
【００３０】
ＴＳ再構成器１６は、有効なリマークされたＴＳストリームを構築するために２つのチャンク２０ａ及び２２を再結合する。
【００３１】
パケットリマーカ１４は、ここで更に詳細に記載される。
【００３２】
前のセクションで説明されたように、ＶＥＳリマーカと比較した主な違いは、より複雑なビットレート制御である。したがって、このセクションにおいて、ビットレートコントローラ素子２６を強調してパケットリマーカ１４の動作を説明する。この後、前記パケットリマーカの全ての構成要素の動作の全詳細を説明する。
【００３３】
図２は、パケットリマーカ１４の基本ブロックを示す。適合されたビットレート制御を実現するために、リマーカ１４は、ＲＡＭメモリ２８の中心ピースの周りに設計されている。全ての動作は、このメモリ２８に記憶された情報に対して実行される。この埋め込みの最も複雑な面は、ビットレート制御である。これは、ビットレートコントローラ２６とメモリ２８との間の強い相互作用を生じるが、ＭＰＥＧパーサ３０及びファイナライザ３２も前記メモリ上で動作する。
【００３４】
入力チャンク２０を受信すると、ＭＰＥＧパーサ３０は、全てのＡＣ−ＶＬＣを抽出する。これらは、ＭＰＥＧ符号化パラメータ及び対応するマクロブロックのフレーム内の空間的位置のような関連した情報と一緒にＶＬＣプロセッサ３４に送信される。ＶＬＣプロセッサ３４は、上述のＶＷＭ明細書に記載されたように、コア・ランマージ技術を含む。これは、入力輝度ＡＣ−ＶＬＣをラン−レベル対に復号し、この後にこのラン−レベル対のストリームは、ＷＭ−ＤＣＴバッファ３６（空間的なウォーターマークパターンから得られるような前記ＡＣ−ＶＬＣに対する変化方向を含む）内の情報に基づいて変更される。結果として生じるラン−レベル対は、この場合、ビットレートコントローラ２６に送信される。前記ランマージ技術の適用のため、ＶＬＣプロセッサ３４に入るラン−レベル対の数より少数の出てくるラン−レベル対が存在することに注意する。ビットレートコントローラ２６は、ウォーターマーク入りラン−レベル対を符号化し、メモリ２８に送信する。これは、元のストリーム２０の対応する部分と同じ大きさのリマークされたチャンク２０ａの部分を最大化するように（下の段落で説明されるように）行われる。この場合、ファイナライザ３２は、元のストリーム２０内のこの対応する部分をリマークされた対応する部分により置き換えることにより前記元のストリームと同じサイズのリマークされたチャンク２０ａを作成する。結果として生じるチャンク２０は、この場合、ＴＳ再構成器１６に送信される（図１を参照）。
【００３５】
ビットレートコントローラ２６により行われるアプローチを説明する。全体的なビットレート制御ストラテジは、リマークされたバージョン２０ａのサイズを元のバージョン２０に可能な限り近く保つことに基づく。これを達成する様式の１つは、前記ＶＷＭ明細書に記載されたＶＥＳリマーカと同様に、スタートコードの前にスタッフィングビットを加えることである。しかしながら、主要な様式は、エスケープコード化の使用によるものである。元のチャンク２０のコピーは、メモリ２８（いわゆる“バックアップバッファ”４０、図３を参照）に記憶される。前記チャンクのリマークされたバージョンは、図３のいわゆる“書き込みバッファ”４２に記憶される。書き込みバッファ４２において、ウォーターマーク無しのチャンク２０の対応する部分と正確に同じサイズを持つウォーターマーク入りチャンク２０ａのピースの開始及び終了を示す２つのポインタを配置する。ラン−レベル対の受信時に、前記ラン−レベル対のＶＬＣが計算される。これはメモリ２８内の書き込みバッファ４２に加えられる。更に、メモリ２８内の“エスケープ表”４４において、前記ＶＬＣ（３ないし１７ビットのサイズ）と対応する前記エスケープコード（２４ビットの固定サイズ）との間の長さの差により示されるエントリが作成される。ここで、書き込みバッファ４２とバックアップバッファ４０との間の長さの差が計算される。
【００３６】
エスケープ表４４が、前記ＶＬＣと前記エスケープコードとの間のサイズの差がバッファ長の差に等しいエントリを含む場合、対応する前記ＶＬＣは、前記エスケープコードにより置き換えられる。ここでバッファ４０及び４２が、正確に同じサイズの２つの対応する部分を含むことに注意する。したがって、書き込みバッファ４２内の前記２つのポインタは、更新される必要がある。
【００３７】
バッファ４０とバッファ４２との間の前記長さの差が、上で述べたように完全に除去されるには大きすぎる場合、ビットレートコントローラ２６は、ＶＬＣをエスケープコードにより置き換えることによっても前記長さの差を減少しようと試みる。変更の数を減少するために、コードサイズの最大の増加を起こす置き換えが使用される。
【００３８】
次に、全ての構成要素の全詳細を説明する。
【００３９】
ＭＰＥＧパーサ
ＭＰＥＧパーサ３０は、２つのタスクを有する。第１のタスクは、輝度ＶＬＣに関する情報（Ｉフレーム、Ｐフレーム及びＢフレーム）を集めるためにＭＰＥＧストリームを部分的に解釈することである。ＭＰＥＧパーサ３０は以下の情報、即ち
・ソースマクロブロック（source macro-block）のトップの（ｘ,ｙ）座標と、
・対応するマクロブロックのソースの８×８ブロックの位置と、
・前記８×８ブロックの走査位置ＶＬＣと、
・走査タイプ（ジグザグ、交互）と、
・ＶＬＣコードタイプ（フィールド、フレーム）と、
・量子化ステップサイズと、
・ＶＬＣサイズと、
・現在のピクチャタイプと、
・現在のマクロブロックタイプと、
を収集する。
【００４０】
更に、ＭＰＥＧパーサ３０は、ビットスタッフィング位置を検索する。これらは、前記スタートコードの前の位置である（変数“スタートコード開始”により示され、パーサ３０によりビットレートコントローラ２６と通信される）。パーサ３０は、いつチャンクが開始又は終了するかをも示す。
【００４１】
第２のタスクは、輝度ＡＣ−ＤＣＴ及び色差ＡＣ−ＤＣＴを表すＡＣ−ＶＬＣを前記ＭＰＥＧストリームから抽出することである。前記ＡＣ−ＶＬＣは、前記ＶＬＣに関する情報と一緒にＶＬＣプロセッサに送られる。全ての元のＭＰＥＧコードワードは、メモリ（ＲＡＭ）ブロック２８にも送られる。各コードワードは、前記コードワードが完全なＡＣ−ＶＬＣであるか否かを示すフラグと一緒にメモリ２８に記憶される。完全なＶＬＣのみが、ＶＬＣプロセッサ３４に送られ、チャンクの境界を越えるＶＬＣは、ＶＬＣプロセッサ３４により考慮されない。
【００４２】
ＶＬＣプロセッサ
ＶＬＣプロセッサ３４において、実際の埋め込みが行われる。ＶＬＣプロセッサ３４は、前記輝度成分及び前記色差成分の両方から前記ＡＣ−ＶＬＣを受信する。色差ＡＣ−ＶＬＣは、ちょうど復号され、結果として生じるラン−レベル対は、ビットレートコントローラ２６に送られる。輝度ＡＣ−ＶＬＣは、ウォーターマークを埋め込むために処理される。これは、上述のＶＷＭ明細書に記載されたＶＥＳリマーカと同様に行われる。簡潔な記載は下に与えられ、興味のある読者は、より詳細な情報及び図のために前記ＶＷＭ明細書の文書に任せられる。輝度ＡＣ−ＤＣＴ係数のラン−レベル対を表すＶＬＣから開始して、以下のタスクが実行される。
１．ＶＬＣをラン−レベル対に復号する。
２．前記輝度ＤＣＴ係数から候補のラン−レベル対を選択する。候補のラン−レベル対は、−１又は１に等しいレベルを持つラン−レベル対である。
３．前記ＶＬＣに対応するＤＣＴ変化方向のＷＭバッファアドレスを計算する。ＷＭ−ＤＣＴバッファ３６から前記変化方向を取り出す。
４．以下の４つの条件が満たされる場合に候補の（ラン−レベル）対を選択的にマージする。
４ａ．ＷＭ−ＤＣＴバッファ３６における対応する変化方向を加えたレベルが０に等しい、即ち
((レベル＝−１)＆＆(ＷＭバッファ＝＋１)ＯＲ((レベル＝＋１)＆＆(ＷＭバッファ＝−１))
である。
４ｂ．前記マージが、単純な人間視覚モデルにより視覚的品質に深刻な影響を与えない。
５．全ての処理されたラン−レベル対（Ｙ、Ｕ及びＶに対する）をビットレートコントローラ２６に送る。
【００４３】
条件４ｂ、４ｃ及び４ｄは、前記ウォーターマークの可視性を制御する。Ｉ、Ｐ及びＢピクチャに対して３つのＤＣＴエネルギ閾値、ＥI、ＥP及びＥBが存在する。これらの閾値は、前記量子化ステップに応じて変更の数を更に０、１及び２に限定することができる。ブロックの終了（End_of_Block）又はチャンクの終了（End_of_Chunk）時に、ＶＬＣプロセッサ３４はリセットされる。
【００４４】
ＷＭ−ＤＣＴバッファ（ＲＯＭ）
ＷＭ−ＤＣＴバッファ３６は、前記ＶＷＭ明細書に全詳細が記載されている。
【００４５】
メモリ（ＲＡＭ）
ＲＡＭメモリ２８は、図３に描かれている。ＲＡＭメモリ２８は、バックアップバッファ４０及び書き込みバッファ４２（両方とも１８４バイトのサイズ）、並びにエスケープ表４４からなる。ＭＰＥＧパーサ３０は、入力チャンク２０の元のＶＥＳデータをバックアップバッファ（ＢＢ）４０に記憶する。ウォーターマーク入りバージョンは、第２のバッファ、書き込みバッファ４２（ＷＢ）において生成される。バッファ４０及び４２は、左から右に埋められる。両方のバッファが、読み出しポインタ４６（ＲＰ、バックアップバッファ４０用）及び書き込みポインタ４８（ＷＰ、書き込みバッファ用）と称される、最新の書き込まれたビットの後の初めの位置におけるポインタを有する。ＭＰＥＧパーサ３０は、全てのデータをバックアップバッファ４０に送信する。ＭＰＥＧパーサ３０は、前記完全なＡＣ−ＶＬＣを除く全てのデータを書き込みバッファ４２に送信する。前記書き込みバッファ４２に対する前記完全なＡＣ−ＶＬＣは、ビットレートコントローラ２６により生成される。前記メモリは、バックアップポインタ（ＢＰ）５０及び追加バックアップポインタ５２（ＥＢＰ）と称される２つのポインタを含む。書き込みバッファ４２において、これらのポインタは、ウォーターマーク無しの対応する部分と正確に同じサイズを持つ前記ウォーターマーク入りチャンクのそれぞれ終了及び開始を示す。これらのポインタは、前記ビットレートコントローラにより設定される。書き込みバッファ４２のバックアップポインタ５０と書き込みポインタ４８との間の部分は、ウォーターマーク入りであるが、依然としてバックアップバッファ４０の対応する部分と同じサイズを持たない部分を示す。通常は、追加バックアップポインタ５２は、書き込みバッファ４２の開始を指す。追加バックアップポインタ５２は、前記チャンクの開始部（前記バッファの開始と前記バッファのスタートコードとの間）のサイズがランマージ技術により増加する場合に右にシフトする（下のスタートコード開始の見出しのセクション、サブセクション１ｂを参照）。
【００４６】
エスケープ表４４は、７ないし２１の範囲の１５行を含む。各行は空であるか、又は書き込みバッファ４２からの特定のＶＬＣを記述する。行ｉ（７ないし２１の範囲のｉ）が空ではない場合、このＶＬＣがエスケープコードにより置き換えられる場合にｉビットだけ書き込みバッファ４２を増加するＶＬＣが存在する。エスケープ表４４は、ビットレートコントローラ２６により管理される。ビットレートコントローラ２６は、時折、この表からのＶＬＣをエスケープコードにより置き換えてビットレートを制御する。
【００４７】
ビットレートコントローラ
このセクションにおいて、ビットレートコントローラ２６の動作の全詳細を説明する。ビットレートコントローラ２６の動作の説明の間に、異なるモジュールの動作が実行される必要がある順番をリストしている“タイミング・ノート”を配置した。
【００４８】
異なるモジュールから来る４つの異なるコマンドがあり、これらに基づいて前記ビットレートコントローラが次の動作を選択する、当該コマンドは、
・ＭＰＥＧパーサ３０からのチャンク開始と、
・ＶＬＣプロセッサ３４からの新しいラン−レベル対と、
・ＭＰＥＧパーサ３０からのスタートコード開始と、
・ＭＰＥＧパーサ３０からのチャンクの終了と、
である。
【００４９】
これらのコマンドに対してビットレートコントローラ２６により行われる動作は、下のセクションで詳細に述べられる。
【００５０】
チャンク開始
“チャンク開始”コマンドに応答して、ビットレートコントローラ２６は、初期位置にリセットされる。これは、
１．エスケープ表４４の全てのエントリに“空”をラベル付けするステップと、
２．４つのポインタＲＰ４６、ＷＰ４８、ＢＰ５０及びＥＢＰ５２を０に設定するステップと、
を含む。
【００５１】
新しいラン−レベル対
ビットレートコントローラ２６は、全ての（色差及び輝度）ＡＣ−ＶＬＣから前記ラン−レベル対を受信する。これらのラン−レベル対（ｒ,ｌ）のそれぞれに対して、ビットレートコントローラ２６は、以下の６つのステップを実行する。
１．ＶＬＣ生成器からラン−レベル対（ｒ,ｌ）のＶＬＣｖを要求する。
２．以下のようにエスケープ表４４を更新する。前記エスケープコード（常に２４ビット）と前記ＶＬＣとの間のサイズの差ΔC、即ちΔC＝サイズ(エスケープコード)−サイズ(ｖ)を計算する。
次に、エスケープ表４４の行ΔCが埋められ、即ち
ビット位置＝ＷＰ４８、
ＶＬＣサイズ＝サイズ(ｖ)、
ラン−レベル＝(ｒ,ｌ)。
３．書き込みバッファ４２にＶＬＣｖを書き込む。書き込みポインタ４８を適宜更新する。
タイミング・ノート
I．ＭＰＥＧパーサ３０は、前記元のＶＬＣをメモリ２８に送信し、前記元のＶＬＣがバックアップバッファ４０に書き込まれる（ＲＰ４６が更新される）。
II．次に、前記ＶＬＣは、前記ＶＬＣプロセッサにより復号され、−場合によってはマージされた−前記ラン−レベル対が、ビットレートコントローラ２６に送信される。
III．ビットレートコントローラ２６は、前記リマークされたＶＬＣをメモリ２８に送信し、前記リマークされたＶＬＣは書き込みバッファ４２に書き込まれる（ＷＰ４８が更新される）。
４．書き込みバッファ４２及びバックアップバッファ４０の長さを正確に等しくしようと試みる。これは、
・このチャンク内に限ってエスケープコード化されているＶＬＣの数が、許可される最大（ＥＭ）より小さく、
・書き込みバッファ４２とバックアップバッファ４０との間の長さの差ΔBが７ないし２１である、即ち７≦ΔB≦２１であり、
・エスケープ表４４の行ΔBが空ではない、
場合に行われ、
・これらの条件が満たされる場合に、以下の動作、即ち
・エスケープ表４４の行ΔBに示される書き込みバッファ４２内の前記ＶＬＣを（ビットレートコントローラ２６がＶＬＣ生成器５６から要求する）エスケープコード化されたバージョンにより置き換え、ΔBが位置する書き込みバッファ４２内のＶＬＣの後に続く全てのエントリを右にシフトする動作と、
・以下のように、即ち
−ちょうど置き換えた前記ＶＬＣのビット位置より大きなエスケープ表４４内の全てのビット位置が、ΔBだけ増加され、
−行ΔBを消去し、これに“空”をラベル付けして、
エスケープ表４４を更新する動作と、
・書き込みポインタ４８を更新する（ここでＷＰ＝ＲＰ４６）動作と、
を実行する。
５．書き込みバッファ４２及びバックアップバッファ４０の長さを可能な限り小さくしようと試みる。これは、
・このチャンク内に限ってエスケープコード化されているＶＬＣの数が、許容されている最大より小さく、
・書き込みバッファ４２とバックアップバッファ４０との間の長さの差（ΔB）が２１より大きい、即ちΔB＞２１である、
場合に行われる。
これらの条件が満たされる場合、エスケープ表４４において行２１から行７までバックアップポインタＢＰ５０より大きいか又は等しいビット位置を持つ初めの非空の行を検索する（この最後の条件は、バイト整列していないスタートコードを持つ不正なＭＰＥＧ構文を避けるために必要である）。このような行が存在する場合、この行は行ｉとして定められ、以下の動作、即ち
・書き込みバッファ４２内のエスケープ表４４の行ｉに記載されたＶＬＣを、ビットレートコントローラ２６がＶＬＣ生成器５６から要求するエスケープコード化されたバージョンにより置き換え、ｉを越えるＶＬＣの後に続く書き込みバッファ４２内の全てのエントリを右にシフトする動作と、
・以下のように、即ち
−ちょうど置き換えられたＶＬＣのビット位置より大きなエスケープ表４４内の全てのビット位置がｉだけ増加され、
−行ｉを消去し、これに“空”をラベル付けして、
エスケープ表４４を更新する動作と、
が実行される。
６．書き込みポインタ４８を更新する（ＷＰ＝ＷＰ＋ｉ）。
バックアップポインタ５０を更新する。書き込みバッファ４２及びバックアップバッファ４０が同じ長さを持つ場合（即ちＷＰ４８＝ＲＰ４６の場合）、前記バックアップポインタがシフトされ、即ちＢＰ５０＝ＷＰ４８である。
【００５２】
スタートコード開始
スタートコードの前に、ビットレートコントローラ２６は、スタッフィングビットを追加することにより書き込みバッファ４２及びバックアップバッファ４０のサイズを等しくする可能性を持つ。もちろん、これは、書き込みバッファ４２がバックアップバッファ４０より短い場合のみに可能である。書き込みバッファ４２がバックアップバッファ４０より大きい場合、追加バックアップポインタ５２が、読み出しポインタ４６の位置にシフトされる（ファイナライザ３２が、ビット位置０とバックアップバッファ４２からのＥＢＰ５２との間のチャンクの部分を使用することを思い出す）。要約すると、以下のステップが実行される。
１ａ．書き込みバッファ４２がバックアップバッファ４０より小さい（即ちＷＰ４８≦ＲＰ４２）場合、書き込みポインタ４８が読み出しポインタ４６と等しくなるまでスタッフィングビット（値＝“０”）を書き込みバッファ４２に書き込む。
１ｂ．書き込みバッファ４２がバックアップバッファ４０より大きい（即ちＷＰ＞ＲＰ）場合、前記チャンクのこれまでに受信された部分のリマーキングを拒否する。即ち、ＥＢＰ５２及びＷＰ４８を更新する。
・ＥＢＰ＝ＲＰ、
・ＷＰ＝ＲＰである。
２．前記ＭＰＥＧパーサから受信された前記スタートコードを書き込みバッファ４２及びバックアップバッファ４０に書き込み、ポインタＷＰ４８及びＲＰ４６を更新する。
３．バックアップポイントを更新する、即ちＢＰ５０＝ＲＰ４６。
４．エスケープ表４４を消去し、全てのエントリに“空”とラベル付けする。
タイミング・ノート
I．ＭＰＥＧパーサ３０は、スタートコード開始信号をビットレートコントローラ２６に送信する。
IIａ．ビットレートコントローラ２６が、適切な数のスタッフィングを書き込みバッファ４２に書き込み、書き込みポインタ４８を更新するか、又は
IIｂ．ビットレートコントローラ２６が、前記チャンクの初めの部分のリマーキングを拒否し、ＥＢＰ５２及びＷＰ４８を更新する。
III．ＭＰＥＧパーサ３０は、前記スタートコードをバックアップバッファ４０及び書き込みバッファ４２の両方に書き込み、読み出しポインタ４６及び書き込みポインタ４８を更新する。
IV．ビットレートコントローラ２６が、バックアップポインタ５０を更新し、エスケープ表４４を消去する。
【００５３】
チャンクの終了
チャンクの終了コマンドを受信すると、ビットレートコントローラ２６は、前記コマンドをファイナライザ３２に送る。
タイミング・ノート
I．ＭＰＥＧパーサ３０が、最新の完全又は不完全なＶＬＣをバックアップバッファ４０及び書き込みバッファ４２に書き込み、ポインタＲＰ４６及びＷＰ４８を更新する。
II．チャンクの終了コマンドがファイナライザ３２に送られる。
【００５４】
ＶＬＣ生成器
ＶＬＣ生成器５６は、ラン−レベル対に対してＶＬＣコードを生成する（ビットレートコントローラ２６の要求時に上で参照した[ISO96:2]からの表Ｂ１４及びＢ１５）。ビットレートコントローラ２６は、通常のＶＬＣ又はエスケープコードが要求される場合にフラグを提供する。
【００５５】
ファイナライザ
ファイナライザ３２は、以下のようにバックアップバッファ４０及び書き込みバッファ４２を結合することにより有効な出力チャンクを作成する。
・バックアップバッファ４０からのビット０..ＥＢＰ−１が、出力チャンク２０ａにコピーされる。
・書き込みバッファ４２からのビットＥＢＰ..ＢＰ−１が、出力チャンク２０ａにコピーされる。
・バックアップバッファ４０からのビットＢＰ..ＲＰ−１が、出力チャンク２０ａにコピーされる。
【００５６】
上述のアルゴリズムは、上で参照した[ISO96:1]に記載されたプログラムストリーム（ＰＳ）を処理するように容易に拡張されることができる。ＶＥＳ抽出器１２及びＴＳ再構成器１６のみが、変更される必要がある（図２）。パケットリマーカ１４は変更無しである。
・ＶＥＳ抽出器１２は、ＰＳパケットを読み出し、前記ＰＳパケットを２つの小さなチャンク、即ちビデオストリームのＶＥＳバイトを含むチャンク及び他の全てのデータ、例えばＰＳヘッダ、パケット化エレメンタリストリーム（ＰＥＳ）ヘッダ、オーディオバイト及び他のＰＩＤのビデオバイト等を有するチャンクに分割する。前記ＶＥＳバイトを含むチャンク２０は、多くとも１８４バイトのサブチャンクに分割される。サブチャンクは、ＰＥＳ又はパック境界を越えることはない。これらのサブチャンクは、変更されていないパケットリマーカ１４に提供される。
・ＴＳ再構成器１６は、有効なＰＳストリームを構築するために前記サブチャンクを再結合するＰＳ再構成器に置き換えられる必要がある。
【００５７】
圧縮されたデータストリームにウォーターマークを入れる方法は、有利には、他の場合に結果として生じる大きなメモリの高コスト又は計算コストを避ける解決法を提供する。
【００５８】
読者の注意は、本出願に関連して本明細書と同時に又は以前に提出され、本明細書と共に公開されている全ての書類及び文書に向けられ、全てのこのような書類及び文書の内容は、参照によりここに組み込まれる。
【００５９】
本明細書（添付の請求項、要約及び図面を含む）に開示された全てのフィーチャ及び／又は開示された方法又はプロセスの全てのステップは、このようなフィーチャ及び／又はステップの少なくとも幾つかが相互排他的である組み合わせを除いて、如何なる組み合わせで組み合わされることもできる。
【００６０】
本明細書（添付の請求項、要約及び図面を含む）に開示された各フィーチャは、明白に他に提示されない限り、同じ、同等な又は同様な目的で機能する代替的なフィーチャにより置き換えられることができる。したがって、明白に他に提示されない限り、開示された各フィーチャは、同等又は同様なフィーチャの一般的な系列の一例でしかない。
【００６１】
本発明は、前述の実施例の詳細に限定されない。本発明は、本明細書（添付の請求項、要約及び図面を含む）に記載されたフィーチャの新規のもの又は新規の組み合わせに拡張し、又は開示された方法又はプロセスのステップの新規のもの又は新規の組み合わせに拡張する。
【００６２】
本発明は、以下のように要約されることができる。選択されたＤＣＴ係数を修正することにより圧縮されたビデオ信号に（再び）ウォーターマークを入れる方法及び装置に関する。これによりビットレートが減少されすぎるのを避けるために、選択された可変長コードワードが、エスケープコードにより表される。ＥＳＣコードがビットレートを増加しすぎるのを避けるために（ＥＳＣコードは対応するＶＬＣワードより７ないし２１ビット長い）、前記ビットレートは、小さなデータチャンクの単位で制御される。ＶＬＣが処理される間に、表は候補のＥＳＣコードで埋められる。ビットレートコントローラは、１つのＶＬＣを適当なＥＳＣコードに再符号化することにより元のデータチャンクと処理されたデータチャンクとの間の差を０にしようと試みる。
【図面の簡単な説明】
【００６３】
【図１】ＭＰＥＧ２トランスポートストリーム（ＴＳ）形式に符号化されたビデオデータをリマーキングするスキームを示す概略図である。
【図２】図１に示されたパケットリマーカの概略図である。
【図３】図２に示されるパッケージリマーカのＲＡＭメモリ素子の概略図である。
【図１】
2006513659.tif 000003
【図２】
2006513659.tif 000004
【図３】
2006513659.tif 000005
【国際調査報告】
2006513659.tif 000006
2006513659.tif 000007