以下は、本発明の原理を単に例示したものに過ぎない。したがって、当業者は、本明細書には明示的に説明または図示はしないが、本発明の原理を実施し、本発明の趣旨及び範囲に含まれる様々な構成を考案することができることが理解されよう。さらに、本明細書に記載のすべての実施例及び条件付き用語は、本発明の原理及び技術を推進するために本発明者らが導いた概念を理解する際に読者の役に立つために、特に教育的目的のみを原則として意図しており、このように具体的に記載された実施例及び条件に限定しないものと解釈される。また、本発明の原理、態様、及び実施形態、ならびにその具体例を記載する、本明細書のすべての記述は、その構造上及び機能上の等価形態を包含することを意図する。さらに、そのような等価形態は、現在周知の等価形態、ならびに将来において開発される等価形態、すなわち、構造には関係なく、同じ機能を実行する、開発された任意の要素、の両方を含むことを意図する。
したがって、例えば、本明細書のいかなるブロック図でも、本発明の原理を実施する例示の回路の概念図を表すことが、当業者には理解されよう。同様に、いかなるフローチャート、流れ図、状態遷移図、擬似コードなども、コンピュータ可読媒体に実質的に表され、コンピュータまたはプロセッサによってそのように実行することができる、様々な処理を表す。これは、そのようなコンピュータまたはプロセッサが明示的に示されているか否かとは関係ない。
図示する様々な要素の機能は、「プロセッサ」とラベリングされたいかなる機能ブロックをも含めて、専用ハードウェア、ならびに適切なソフトウェアに関連するソフトウェアを実行することのできるハードウェアを使用することにより提供することができる。プロセッサによって提供される場合、これら機能は、単一の専用プロセッサにより、単一の共有プロセッサにより、またはいくつかは共有可能な複数の個別プロセッサにより、提供することができる。さらに、「プロセッサ」または「コントローラ」という用語の明示的な使用は、ソフトウェアを実行することのできるハードウェアだけを意味するものと解釈されるべきでなく、限定はしないが、暗黙的に、デジタル信号プロセッサ(DSP)ハードウェア、ネットワーク・プロセッサ、特定用途向け集積回路(ASIC)、フィールド・プログラマブル・ゲート・アレイ(FPGA)、ソフトウェアを記憶するための読み取り専用メモリ(ROM)、ランダム・アクセス・メモリ(RAM)、及び不揮発性記憶装置を含むことができる。従来型及び/または特注の他のハードウェアを含むこともできる。同様に、図示するスイッチは、どれも概念上のみのものである。これらの機能は、プログラム論理の動作により、専用論理により、プログラム制御と専用論理の連携により、または場合によっては手動により遂行することができる。この場合、状況からより具体的に理解される特定の技術を、実施者により選択可能である。
本明細書の特許請求の範囲では、指定した機能を実行する手段として表した要素はどれでも、例えば、a)その機能を実行する回路素子の組合せ、またはb)その機能を実行するためにソフトウェアを実行するための適切な回路と組み合わされた、ファームウェア、マイクロコードなどを含めた、任意の形式のソフトウェアを含めて、その機能を実行するいかなる方法をも包含することを意図する。このような特許請求の範囲により規定される本発明は、様々な記載の手段により提供された機能が、本特許請求の範囲の要求する方法で組み合わされ、一体化されることにある。したがって、出願人は、それらの機能を提供することのできる手段ならばどれでも、本明細書に示す形態の等価形態と見なす。
ソフトウェア・モジュール、またはソフトウェアであることが暗示される単なるモジュールを、本明細書では、処理ステップ及び/またはテクスチャ記述の実行を示す、フローチャート要素または他の要素のいかなる組合せとしても表すことができる。このようなモジュールは、明示的または暗黙的に示されるハードウェアによって実行することができる。
特に本明細書で明示的に指定しない限り、図面は一定比例による拡大表示ではない。
説明では、図面が別でも、同一番号を付した構成要素は、同一構成要素を示す。
図1は、ビデオ信号の様々なブロックのそれぞれのクロミナンス成分の平均値により伝えられる電子透かしデータの1つまたは複数のビットを有することにより、ビデオ信号を、フレーム単位を基礎として、デジタル電子透かしを入れるための、送信器例101を示す。
図1には、a)YUVデマルチプレクサ(demux)及びデジメーター103、b)色選択105、c)二極形の双投形スイッチ109、d)テクスチャ・マスキング・ユニット111、e)乗算器113、f)加算器115、g)マルチプレクサ(mux)117、h)ビット・マッパー123、及びi)加算器133を示す。図1には、任意選択のj)チャンネル・エンコーダー119、及びk)ブロック・インターリーバー121も示す。
YUVデマルチプレクサ及びデシメーター103は、電子透かしを入れるべきビデオ信号、すなわち追加情報を加えるビデオ信号を受け取る。YUVデマルチプレクサ及びデシメーター103は、シリアル・デジタル・インターフェース(SDI)標準に従ってフォーマットされたビデオなどの、デジタル・ビデオを扱うことができる。当業者には理解されるだろうが、最初は適切なデジタル形式でないビデオ信号はどれも、従来技術を使用して適切なデジタル形式に変換することができる。
YUVデマルチプレクサ及びデシメーター103は、ビデオの輝度(Y)成分及びそのクロミナンス成分を逆多重化する。ビデオ信号のクロミナンス成分は、U及びVという2つの部分を有する。ここで、Uは差分青部分、Vは差分赤部分である。
追加データをクロミナンス成分に埋め込む処理の大部分は、好適には、特別のデシメートされたビデオ形式で実行される。ここで、元のブロックが4−4−4表現の場合、ビデオの元のそれぞれ2×2の輝度ブロックに対して、1つのY値、1つのU値、及び1つのV値しか残らない。この目的のため、入力されるビデオ信号が実際は所謂4−4−4形式である場合、その画像は、元の2×2の輝度ブロックのそれぞれに対して、1つのY値、1つのU値、及び1つのV値があるように、YUVデマルチプレクサ及びデシメーター103によって適切にデシメートされる。同様に、入力されたビデオ信号が所謂「4−2−2」形式の場合、すなわち、輝度が最大解像度である一方、クロミナンス部分がa)縦のみ最大解像度であり、b)横は半分の解像度である場合、YUVデマルチプレクサ及びデシメーター103は、輝度成分を縦横共にデシメートし、各クロミナンス部分を縦のみデシメートする。同様に、入力されたビデオ信号が所謂4−2−0形式である場合、すなわち、輝度成分が最大解像度である一方、クロミナンス部分は、それぞれ縦横共に半分の解像度しかない場合、その画像の輝度成分はYUVデマルチプレクサ及びデシメーター103によってデシメートされる。この結果、元のブロックが4−4−4表現の場合、元のそれぞれ2×2の輝度ブロックに対して、1つのY値、1つのU値、及び1つのV値しか残らない。
好ましいデシメートされたビデオ形式を、色選択105への出力として供給することができる。したがって、好適には、入力されたビデオ信号の形式にかかわらず、システムによるさらなる処理は、元の入力されたビデオ信号の最大解像度の輝度ピクセルのすべての2×2ブロックに対して、1つのY値、1つのU値、及び1つのV値があるように、デシメートされたビデオ信号に好適に基づくことができる。当業者は、輝度ピクセルのすべての2×2ブロックに対して1つのY値、1つのU値、及び1つのV値の展開を希望するならば、これを展開する独自の方法を開発することができよう。
元のビデオの形式を知るために、a)オペレータが、YUVデマルチプレクサ及びデシメーター103に、送信器101に供給されたビデオの特定の形式を示すか、b)ビデオの形式を、従来技術を使用してビデオから直接検出するか、またはc)その情報を、入力されたビデオ信号を供給するさらに上層のプロセッサから供給することができる。
YUVデマルチプレクサ及びデシメーター103は、元の入力されたビデオ信号のフル・フォーマットのYUV出力の第2の組を、二極形の双投形スイッチ109に供給することもできる。
色選択105は、どの特定ピクセルに対しても、可視的な人為的誤りを起こさずに、適宜、クロミナンス成分のどの部分に、すなわちU部分またはV部分に、値の変更を、より良く適合することができるか特定する。色選択105は、以下でさらに説明するように、参照テーブルに基づく。あるいは、色選択105は、すべてまたは一部を、従来の米国特許第10/342,704号のような、様々な演算に基づくことができる。
二極形の双投形スイッチ109の位置を制御するためにも、色選択105の出力を使用することができる。より具体的には、色選択105の出力は、二極形の双投形スイッチ109が、1)電子透かしデータを伝えるために選択されたクロミナンス成分の部分を加算器115に供給し、2)選択されなかったクロミナンス成分の部分をYUVマルチプレクサ117に供給するようセットされる。色選択105の出力は、以下で説明するように使用するために、マルチプレクサ117とビット・マッパー123に供給することもできる。
テクスチャ・マスキング・ユニット111は、可視的な人為的誤りを起こさずに、そのピクセルが適合することのできる値の最大の変更を決定するために、YUVデマルチプレクサ及びデシメーター103により出力として供給されるデシメートされた形式の各ピクセル周囲の輝度領域のテクスチャを分析し、それが示す重みを出力として供給する。その重み値は、例えば1から5までの整数値を取って符号化することができる。他の値を使用することができる。例えば、実験では、20までの値を、視覚的な低下なしにビジー・エリアで使用することができることが示されている。その重みは、乗算器113に供給される。テクスチャ・マッピング・ユニット111は、以下でさらに説明するように、ピクセルに持ち込まれる可能性のある最大のゆがみよりも小さい値を出す場合がある。
使用される特定の値は、少なくとも一部には、各Y値、U値、及びV値を表すために使用されるビット数に、少なくとも一部には依存することに留意されたい。例えば、1から5の上記で提案した重み値、及び場合によっては20までの重みは、8ビット値のY、U、及びVに対するものである。当業者には、8ビットに対して利用された値が、その値を左に2回シフトするなど、4を乗じることによって10ビットにスケール変更することができることが容易に理解されよう。同様に、Y、U、及びVに対して使用される他のビット数を、同様に適合することができる。
乗算器113は、テクスチャ・マスキング・ユニット111から受け取った重みに、ビット・マッパー123によって供給される、当該ピクセルの部分として送信されるべき情報に関する値を乗じる。例えば、ビット・マッパー123によって供給される値は、−1、0、または1であってよい。乗算器113によって生成された積は、加算器115及び加算器133に供給される。
テクスチャ・マスキング・ユニット111は、加算器133に応答する。この点で、上記のように、テクスチャ・マスキング・ユニット111は、加算器133からの結果に対する信号を受け取った場合、ピクセルにもたらされる可能性のある値の変更よりも小さい重み値を出す可能性がある。より具体的には、加算器133は、ブロックごとにテクスチャ・マスキング・ユニット111により供給された値を合計する。加算器133は、テクスチャ・マスキング・ユニット111が現在処理中のピクセルに対してその出力重みとして使用することのできる最大値を、出力としてテクスチャ・マスキング・ユニット111に供給する。加算器133により供給されるこの最大値は、a)ピクセル周囲のテクスチャに基づいてピクセルによって適合することのできる最大重み値と、b)加算器133にビット・マッパー123により供給される当該ブロックに関する値と当該ブロックに対する現在の合計の差、の小さい方である。したがって、合計が、加算器133にビット・マッパー123により供給される当該ブロックに関する値と等しくなると、テクスチャ・マスキング・ユニット111は、当該ブロックの残りのピクセルごとに0を出力する。
加算器115は、乗算器113により供給された値を、ピクセルに関する追加情報を伝えるために色選択105により選択されたクロミナンスの部分の値に加算することにより、修正されたクロミナンス部分を生成する。指摘したように、追加情報を伝えるために色選択105により選択されたクロミナンスの部分は、二極形の双投形スイッチ109により加算器115に渡される。加算器115により供給された修正済みのクロミナンス部分は、乗算器117に供給される。
テクスチャ・マッピング・ユニット111、乗算器113、ビット・マッパー123、及び加算器133は共同して、元のビデオ信号のクロミナンスの形式に一致するために、特別な処理解像度の各ピクセルに追加中の値を有効にアップサンプルする。この目的のために、結果的に得られたアップサンプルされた値を、処理に使用される、特別の解像度を低めた形式でのピクセルの位置に対応する、元のビデオ信号の各ピクセルの選択されたクロミナンス部分に加算することができる。例えば、元のビデオ信号が4−2−2形式の場合、特別の処理形式でブロックのピクセルのそれぞれに加算されるべきであると決定された値は、ラインあたり8ピクセル、ブロックあたり16ラインを有する、加算されるべき値のブロックを作成するために、ラインごとを基礎として複製される。このブロックで、2つの連続したラインのオーバーラップしないグループのラインのそれぞれは、同一値を加算させる。このようなブロックは、4−2−2形式の元のビデオの選択されたクロミナンス部分の元のブロックに、サイズで対応する。結果的に得られたアップサンプルしたブロックの各値は、加算器115によって、元のビデオ信号の、それぞれの同様に配置されたピクセルの選択されたクロミナンス部分に加算される。当業者には、異なる形式に対しても、類似のブロック換算を容易に実行することができよう。選択されたクロミナンス部分が変更により良く適合することができると色選択105が決定しなかったブロックのピクセルに関して、加算される値は0となることに留意されたい。元のビデオ信号が4−2−0形式の場合、アップサンプルは要求されない。
あるいは、デシメートされた特別の処理解像度形式だけが処理される。結果的に修正されたクロミナンス部分は、次いで、例えばマルチプレクサ117でアップサンプルされる。しかし、これを行うことにより、元のビデオ信号にある種の低下が発生する可能性がある。ただし、このような低下は、必ずしも可視的ではない。
マルチプレクサ117は、二極形の双投形スイッチ109により元の輝度成分(Y)とYUVデマルチプレクサ及びデシメーター103から供給された未修正のクロミナンス部分を受け取る。マルチプレクサ117は、加算器115から修正済みのクロミナンス部分も受け取る。マルチプレクサ117は次いで、元の輝度成分(Y)、未修正のクロミナンス部分、及び修正済みのクロミナンス部分を多重化する。色選択105の出力を受け取ることにより、マルチプレクサ117は、クロミナンス成分の修正済み部分をどのリードで受け取り、クロミナンス成分の未修正の部分をどのリードで受け取るかを知る。結果的に得られたビデオ信号は、電子透かしを入れた出力ビデオ信号として供給される。
当業者は、アップサンプルを必要としないように、デシメートしたバージョンでなく、元のクロミナンス信号部分に追加データが加えられる、本発明の実施形態を開発することができよう。
指摘したように、バイナリ・データ値、すなわちブロックごとに送信されるべき追加情報の1または0を、電子透かしデータとして使用するためにビット・マッパー123に直接供給するか、または受信器での情報の処理及び回復を容易にするためにまず処理することができる。このような処理例は、任意選択のチャンネル・エンコーダー119とブロック・インターリーバー121により実行することができる。
チャンネル・エンコーダー119は、ビデオ・ストリームに埋め込まれることが望まれる追加データを受け取る。このデータは次いで、例えば転送誤り訂正符号化スキームを使用して符号化される。このような転送誤り訂正スキームは、ビタビ符号化またはターボ符号化などの畳み込み符号化のようないかなる従来型の転送誤り訂正スキームであっても、または新規に開発されたいかなる符号化スキームであってもよい。ある構成例では、2分の1のレートの畳み込み符号化が使用される。そのような符号化の結果、元のビット・ストリームのすべてのビットに対して2ビットが生成される。チャンネル符号化ビット・ストリームが、出力としてブロック・インターリーバー・ユニット121にチャンネル・エンコーダー119により供給される。
ブロック・インターリーバー121は、データを無作為に分配するために、チャンネル符号化されたビット・ストリームのビットの順序を再構成する。これを行うことにより、チャンネル符号化されたビット・ストリームの隣接セクションが、例えばノイズのバーストまたは他の要因により消失する機会が低減される。この消失は、受信器でそのようなデータを残りの実際に受信したデータから回復することを困難にする。一構成では、1単位としてインターリーブされたビット数は、1フレーム内のブロック数に等しい。ブロック・インターリーバーは、データをブロックの行に左から右へ連続して書き込み、各行の終わりを下の次行の左端の位置で開始し、次いでそのデータを、そのブロックの左端最上部の位置から始めて、次列上部で読み取りが継続される、列の終端に達するまで、その列を下に読み取ることにより実施することができる。45行×30列のブロック・インターリーバーは、720×480ピクセルのピクチャ・サイズに効果的であることが証明済みである。別の解像度の場合、当業者は、匹敵するブロック・エンコーダーを容易に開発することができる。インターリーブしたチャンネル符号化されたビット・ストリームは、ビット・インターリーバー121によりビット・マッパー123に出力として供給される。
ブロック・インターリーバー121により供給されたデータ・ビットは、ビット・マッパー123の制御下で、元のビデオ信号の少なくとも1フレームの少なくとも1ブロックに、電子透かしデータとして刻印される。ビット・マッパー123は、各ブロックの複数のクロミナンス部分のうち選択された1つのクロミナンス部分の平均値のビット位置の1つへの電子透かしデータの挿入を制御する。データはそこに刻印され、したがって、そのビット位置のビットと効果的に置き換えられる。
例えば、電子透かしデータがブロックの選択されたクロミナンス部分の平均の整数部分の最下位ビットで伝えられるべき場合、平均値に加算される必要のある値は0または1である。平均値の整数部分の最下位ビットが、伝えられるべき電子透かしデータ・ビットと既に同じである場合は0が加算され、平均値の整数部分の最下位ビットが、伝えられるべき電子透かしデータ・ビットの補数である場合は1が加算される。電子透かしデータが、ブロックの選択されたクロミナンス部分の平均の整数位置の2番目の最下位ビットで伝えられるべき場合、当該ピクセルに加算されるべきデータの値は−1、0、または1である。平均値の整数部分の2番目の最下位ビットが、伝えられるべき電子透かしデータ・ビットと既に同じである場合は0が加算され、平均値の整数部分の2番目の最下位ビットが、伝えられるべき電子透かしデータ・ビットの補数である場合は1または−1が加算される。1が加算されるか−1が加算されるかは、平均値の整数部分の2番目の最下位ビットをその補数に変更しながら、平均値に対して最小の変更の原因となるのはどちらかによって異なる。2番目の最下位ビットを使用すると、埋め込まれるべきデータが、MPEGまたは類似の処理による符号化に耐える可能性が高まる。ブロックの選択されたクロミナンス部分の平均の整数部分の3番目の最下位ビットにデータが入れられるべき場合、当該ピクセルに加算されるべきデータの値は−2、−1、0、1、または2である。平均値の整数部分の3番目の最下位ビットが、伝えられるべき電子透かしデータ・ビットと既に同じである場合は0が加算され、平均値の整数部分の3番目の最下位ビットが、伝えられるべき電子透かしデータ・ビットの補数である場合は、−2、−1、1、または2が加算される。−2、−1、1、または2のどれが加算されるかは、平均値の整数部分の3番目の最下位ビットをその補数に変更しながら、平均値に対して最小の変更の原因となるのはどれかによって異なる。3番目の最下位ビットを使用すると、埋め込まれるべきデータが、適切な結果を達成するために、MPEGまたは類似の処理による符号化に耐える可能性が高まる。上記の説明から、当業者は、ユーザまたはシステムにより決定される、さらに上位のビット位置に対して加算されるべき値を容易に決定することができる。
この目的のために、ビット・マッパー123は、ブロックのピクセルの選択されたクロミナンス部分に分配して加算される値を展開する。このように行うことにより、当該ブロックに対する当該クロミナンス部分の値の平均は変更され、その結果、刻印中のブロック・インターリーバー121により供給されるビットは、選択されたクロミナンス部分の平均値の選択されたビット位置に入れられる。この値は、電子透かしデータ・ビットを、1ブロック内のピクセル数を乗じた適切なビット位置に入れるために、選択されたクロミナンス部分の平均値に加算されるべき値である。すなわち、当該クロミナンス部分の値の平均に加算されるべき、ビット・マッパー123により展開された値は、ブロックの個々のピクセルに加算される、さらに小さい値に分割される。したがって、当該ブロック内のピクセル数によって分割されたブロックに加算される、さらに小さい値の合計は、選択されたクロミナンス部分の平均値に加算されるべき値に等しい。
当該ブロックに対するクロミナンス部分の値の特定ビット平均、例えば、ビット・マッパー123により供給されたデータが刻印される、当該クロミナンス部分に対するDC係数は、ビット・マッパー123によって決定される。一構成では、ブロックに対するDC係数の2番目の最下位ビットは、当該ブロックに刻印されることが望まれる特定値で置き換えられる。別の構成では、DC係数のどのビットが置き換えられるかは、当該ブロックのテクスチャ変動により異なる。テクスチャ変動が増えるに従い、置き換えられるビットをより上位にすると有利である。何故ならば、MPEG符号化標準は、より高いテクスチャ変動に対してより大きな量子化ステップ・サイズを利用するが、そのようなより大きな量子化ステップ・サイズを使用することにより、十分に上位でないビット位置に入れられた場合、その電子透かしデータ・ビットを濾過できるからである。より上位のビットを使用する場合、その補数値に代入中のビットを変更するために、DC係数に対して加算または減算すべき値は、1よりも大きくてよい。この目的のために、ビット・マッパー123は、テクスチャ・マスキング111から、当該ブロックに対する輝度成分の平均変動を受け取り、その平均変動に基づいて、置き換えられるべきビット位置を決定する。変動が大きいほど、電子透かしデータを入れるビット位置はより上位になる。
ビット・マッパー123は、ピクセルが電子透かしを入れた出力ビデオ信号に組み込まれる場合、元のビデオ信号のブロックのピクセルごとに、適宜、元のビデオ信号のブロックごとに伝達されるべき、インターリーブされたチャンネル符号化されたビット・ストリームからデータ・ビットを供給する。したがって、ビット・マッパー123は、ビデオ信号の処理がラインに基づいていること、すなわち処理はラインの左から右であり、次いで次のラインに下がり、再び左から右であり、この結果、1つのブロックの隣接するピクセルが必ずしもビデオ・ストリームで連続しておらず、したがって、すべてが一度に連続して次々と処理されるわけではないということを考慮する。何時でもビット・マッパー123の出力として供給される特定のデータ・ビットは、乗算器113に入力として供給される。
図1に示すようなエンコーダーを使用すると、ビデオのフレーム・サイズが720×480ピクセルの場合、ほとんど誤りのない、秒速約6,750ビットのビットレートが、チャンネル・エンコーダー119に供給される際の追加情報について達成される。
当業者は、上記の説明から、図1の複数ユニットの様々なユニットが、ブロック全体からの情報を使用して演算する必要のある値、例えばブロックの元の平均値とブロックの平均テクスチャ変動をまず決定し、次いで個々のピクセルを処理する際にそれらの値を利用するために、記憶域を必要とすることを容易に理解するだろう。その結果、通常、1つのスライス遅延がある。ここで、1スライスは、1つのフレーム全体を横に横断する連なった複数のブロックである。
図2は、そのクロミナンス信号に対するデジタル電子透かしを含む、ビデオ信号の追加データを回復するための、受信器例201を示す。図2には、a)YUVデマルチプレクサ(demux)及びデジメーター203、b)色選択ユニット207、c)二極形の双投形スイッチ209、d)ブロック変動計算211、e)ブロック・インテグレーターV 213、f)ブロック・インテグレーターU 215、g)ビット選択217、h)デインターリーバー219、及びi)チャンネル・デコーダー221を示す。
YUVデマルチプレクサ及びデシメーター203は、送信器101(図1)のYUVデマルチプレクサ及びデシメーター103に粗等しくてよく、信号のクロミナンス成分に対して、追加情報が既に加えられた、デジタルに電子透かしの入ったビデオ信号を受け取る。YUVデマルチプレクサ及びデシメーター203は、シリアル・デジタル・インターフェース(SDI)に従ってフォーマットされたデジタル・ビデオなどの、デジタル・ビデオを扱う。当業者には理解されるだろうが、最初は適切なデジタル形式でないビデオ信号はどれも、従来技術を使用して適切なデジタル形式に変換することができる。
YUVデマルチプレクサ及びデシメーター203は、ビデオの輝度(Y)成分及びそのクロミナンス成分を逆多重化し、それを好ましい処理形式にデシメートする。その形式では、元のブロックが4−4−4表現である場合、ビデオの元のそれぞれ2×2の輝度ブロックに対して、1つのY値、1つのU値、及び1つのV値しか残さない。受け取ったビデオの形式を知るために、a)オペレータが、YUVデマルチプレクサ及びデシメーター203に、入力されたビデオの特定の形式を示すことを必要とするか、b)ビデオの形式を、従来技術を使用してビデオから直接検出することができるか、またはc)情報を、入力されたビデオ信号を供給するさらに上層のプロセッサから供給することができる。逆多重化した輝度成分とクロミナンス成分が、色選択207に供給される。さらに、輝度成分がブロック変動計算211に供給され、Vクロミナンス部分がブロック・インテグレーターV213に供給され、Uクロミナンス部分がブロック・インテグレーターU 215に供給される。YUVデマルチプレクサ及びデシメーター103と異なり、YUVデマルチプレクサ及びデシメーター203は、元の入力されたビデオ信号のフル・フォーマットのYUV出力の第2の組も供給することは必要としない。
色選択ユニット207は、ブロックごとに、クロミナンス成分のどの部分に対して、すなわちU部分またはV部分に対して、追加情報が埋め込まれた可能性があるかを特定する。二極形の双投形スイッチ209の位置を制御するために、色選択ユニット207の出力が使用される。より具体的には、色選択ユニット209は、以下でより詳細に説明するように、Y、U、及びVに応じて、このブロックに対して追加情報が埋め込まれた可能性のある、クロミナンス位置UまたはVを選択する。一構成では、色選択ユニット207は、参照テーブルに基づいている。これを行うことにより、通常ならば必須である可能性のある、YUV/RGB変換を必要としないことによって、この処理を簡略化する。
色選択ユニット207に対する入力は個別のピクセルであることに留意されたい。色選択ユニット207は、各ブロックのピクセルを追跡し、当該ブロックのピクセルごとに個々のUまたはV選択を組み合わせる。最高値を有する特定の構成要素、すなわち1つのブロック内のピクセルに対して最も頻繁に選択された構成要素が、色選択207の出力であると決定される。次いで、スイッチ209が、追加データが追加済みであると判定されたクロミナンス成分の部分の統合されたバージョンをビット選択217に供給するよう、色選択ユニット207の出力がセットされる。
ブロック変動計算211は、当該ブロックに対する選択されたクロミナンス部分の値の平均の特定ビット、例えば、刻印されたデータを含んでいる可能性のある選択されたクロミナンス部分に対するDC係数を決定する。指摘したように、一構成では、ビット・マッパー123(図1)は、どのビット位置が、刻印されるべき電子透かしデータ・ビットに置き換えられるべきかを特定するために、当該ブロックのピクセルの輝度成分の変動の平均を受信し、利用した。変動が大きいほど、置き換えられるべきビット位置はより上位になる。ブロック変動計算211(図2)は、その計算を、その決定を置き換えるためにマッパー123により使用される同じ情報に基づかせるべきである。ブロック変動計算211の出力が、ビット選択217に供給される。
ブロック・インテグレーターV 213は、ブロック全体にわたるVの値を統合する。すなわち、1つのブロック内の各ピクセルに対する値を結合、つまり合計する。ブロック・インテグレーターU 215は、1ブロック全体にわたるUの値を統合する。すなわち、1つのブロック内の各ピクセルに対する値を結合、つまり合計する。
ビット選択217は、当該ブロックに関するデータとしてスイッチ209によってそれに供給された、統合されたクロミナンス部分の値からブロック変動計算211が指定したビット位置のビットを抽出する。
デインターリーバー219は、送信器101のブロック・インターリーバー121(図1)の作用を解除するために、データを並べ替える。並べ替えられた値は、次いで、チャンネル・デコーダー221(図2)に供給され、チャンネル・デコーダー221は、送信器101(図1)のチャンネル・エンコーダー119が利用するタイプの符号化を使用して符号化された信号に対して、適切な復号化を実行する。結果として得られた復号化された値が、チャンネル・デコーダー221(図2)により追加データ信号の再構築バージョンとして供給される。さらに堅牢にするために、チャンネル・デコーダー221は、ターボ・デコーダーなどの、所謂「シーケンス・デコーダー」であってよい。
図3に示すように組み合わせた場合、図3A及び3Bは、追加データで複数のクロミナンス部分の1つに電子透かしを入れる際に使用するための、処理例を示す。特定されたビット位置が刻印されるべき値と既に同じブロックの場合、当該ブロックは未修正のまま送信することができる。図3の処理は、図1に示すようなシステムで実行することができる。
1ブロックのすべてのピクセルが使用可能な場合、処理は、ステップ301から開始することができる。図3の処理の部分は、ブロックごとを基礎として、また一部にはピクセルごとを基礎として行われる。1つのフレームにある複数のブロックは、2次元ポインターp、qを使用して索引付けされる。ここで、pは、処理中のフレームの特定の横スライスを指し示し、qは、当該フレームの特定の列、すなわち縦スライスを指し示す。例えば、720×480の解像度の場合、pは1から30の範囲にあり、qは1から45の範囲にある。同様に、各ブロックのピクセルは、2次元ポインターi、jを使用して索引付けされる。ここで、iは、処理中のブロック内の特定行を指し示し、jは、処理中のブロック内の特定列を指し示す。例えば、元のビデオの各マクロブロックにはY、U、及びVの対応する8×8ブロックしかない場合、データを刻印するために利用される特別の処理モードでは、iとjはどちらも0から7の範囲にある。
ステップ301で処理が開始された後、同処理に使用されるいくつかの変数は、例えばcountU(p、q)=0、countV(p、q)=0、sumU(p、q)=0、sumV(p、q)=0、及びvar(p,q)=0のように、ステップ303で初期設定される。countUは、Uクロミナンス部分に対して電子透かしを入れるのに適した、色選択処理により選択されたブロック内のピクセルの現在の合計数であり、countVは、Vクロミナンス部分に対して電子透かしを入れるのに適した、色選択処理により選択されたブロック内のピクセルの現在の合計数である。sumU及びsumVは、当該ブロックのすべてのピクセルに対する、それぞれUとVの現在の合計数である。当該ブロックに対して選択されたクロミナンス部分のピクセルに対してのみ電子透かしが実行される場合、選択されないクロミナンス部分に対して展開されたsumUとsumVのうちの1つは不要である。
ステップ305で、var(p,q)、すなわち当該ブロック内の個々のピクセルに対する輝度の変動の合計は、当然ながら、当該ブロックに対する輝度の平均変動に比例するが、これが演算される。この目的のために、まずiとjの両方が、例えばi=0、j=0のように、処理されるべきブロックの第1のピクセルを指し示すようにセットされる。var(p,q)の値は、当該ブロックの各ピクセルを循環し、iとjの値を適宜変更し、ピクセルごとの輝度の変動をvar(p,q)の現在の合計に加算することにより演算される。
任意の特定のピクセルに対する輝度の変動は、当該ピクセルとそのピクセルに最も近いすべてのピクセルの間の輝度の差の絶対値を取ることにより、演算することができる。数学上、最も近いピクセルのすべてが同じブロック内にある場合、これは次のように表記される。
当業者は、最も近いピクセルが別のブロックにあるようなピクセルに対しても、上記の説明を容易に適用することができよう。さらに、フレームの境界線に近いブロック、すなわち最も近いピクセルのないブロック、または最も近いピクセルが、表示されていないブロックの一部であるブロックに関しては、そのような近いピクセルの値を0と見なすことができる。
最も近いピクセルのすべてを変動演算で考慮する必要はなく、それでも十分に高品質の結果を達成することができることに留意されたい。より具体的には、ピクセルごとのその演算時間は、当該ピクセルを囲む長方形の隅の4つのピクセルと、当該ピクセルと縦または横のラインを形成する、他の2つのピクセル、例えば、当該ピクセルの横のライン上の2つのピクセルとの差だけを取ることにより低減すると有利である。
その後、条件分岐点307は、当該ブロックに対する電子透かし情報を、どの特定のクロミナンス部分、すなわちUまたはVが含むことになるかを特定するためにテストする。これは、当該ブロックのピクセルごとに色選択を評価し、クロミナンス部分ごとに選択されたブロック内のピクセル数を計数することにより行われる。当該ブロックに対して最も多く選択されたクロミナンス部分が、電子透かしのために選ばれる。特定のピクセルが電子透かしにはまったく不適合であると判定される場合があることに留意されたい。このような場合、UまたはVに対してピクセルの合計数は計数されない。
ピクセルごとに電子透かしを入れられるよう選択される色を決定する特定の方法は、実施者の裁量により異なる。例えば、最小値のピクセルのクロミナンス部分が選択される。あるいは、以下で説明する色選択構成が利用される。
次に、電子透かしされたビットを含むことになる、選択されたクロミナンス部分の平均値のビット部分が決定される。このビット位置は、電子透かしの入ったビットが、MPEG様符号化で行われるような、いかなる後続の量子化にも耐えるように選択される。
この目的のために、ステップ307でのテスト結果が、Vクロミナンス部分に電子透かしが入れられるように選択される場合、制御はステップ309に渡り、そこで変数「watermarkcolor」がVに等しくセットされる。その後、条件分岐点323は、当該ブロック全体にわたる平均Y変動であるvar(p,q)が、最大V閾値である、最初に規定されたV閾値tlvより大きいか否かを判定するようテストする。tlvの値の例は600である。
UとVの両方に関して、図3及び4と共に使用される特定の閾値は、平均のY変動が提案された閾値と比較される場合、各Y値を表すために使用されるビット数に少なくとも一部には依存することに留意されたい。例えば、本明細書で提案された閾値は、8ビット値のYのためのものである。当業者は、8ビット用に利用される値が、例えば4を乗じ、その値を左に2回シフトすることによって、10ビットにスケール変更できることを容易に理解するだろう。同様に、Y、U、及びVのために使用される他のビット数を、同様に適合することができる。
様々な比較のために当該ブロック全体にわたる平均Y変動を使用する代わりに、当該ブロック全体にわたる平均V変動など、別の平均変動を計算して利用することができる。
ステップ323のテスト結果がYESの場合、すなわち、当該ブロックのピクセルのV値の平均の5番目の最下位ビットに対して追加データを符号化しなければならないほど、変動が大きいことが示された場合、例えば、int[sumV(p,q)/64]など、int[sumV(p,q)/ブロックあたりピクセル数]の値がtlvより大きいことが示された場合、制御はステップ325に進み、そこで変数mは5に等しくセットされる。
本明細書で使用するように、丸め用の整数関数intを使用する代わりに、例えば、常に最も近い整数値に切り上げるか、丸めるなど、整数値を達成するために丸めのいかなる他の形式でも利用することができることに留意されたい。
ステップ323のテスト結果がNOの場合、すなわち、当該ブロックのピクセルのV値の平均値の5番目の最下位ビットに対して追加データを符号化しなければならないほどには変動が大きくないことが示された場合、制御は条件分岐点329に進み、そこで当該ブロック全体にわたる平均Y変動であるvar(p,q)が、2番目に大きいV閾値である、第2の規定のV閾値t2vより大きいか否かを判定するためにテストする。t2vの値の例は15である。
ステップ329のテスト結果がYESの場合、すなわち、当該ブロックのピクセルのV値の平均の4番目の最下位ビットに対して追加データを符号化すべきであることが示された場合、制御はステップ331に進み、そこで変数mが4に等しくセットされる。
ステップ329のテスト結果がNOの場合、すなわち、当該ブロックのV値の平均の4番目の最下位ビットに対して追加データを符号化しなければならないほどには変動は大きくないことが示された場合、制御は条件分岐点333に進み、そこで当該ブロック全体にわたる平均Y変動であるvar(p,q)が、3番目に大きいV閾値である、最小のV閾値t3vより大きいか否かを判定するためにテストする。t3vの値の例は7である。
ステップ333のテスト結果がYESの場合、すなわち、当該ブロックのピクセルのV値の平均の3番目の最下位ビットに対してデータを符号化しなければならないほど、変動が大きいことが示された場合、制御はステップ335に進み、そこで変数mは3に等しくセットされる。
ステップ333のテスト結果がNOの場合、すなわち、当該ブロックのV値の平均値の2番目の最下位ビットに対してデータを符号化しなければならないだけ、変動が大きいことが示された場合、制御はステップ337に進み、そこで変数mは2に等しくセットされる。
ステップ307のテスト結果が、Uクロミナンス部分が電子透かしを入れるように選択された場合、制御はステップ311に進み、そこで変数「watermarkcolor」はUに等しくセットされる。その後、条件分岐点343は、当該ブロック全体にわたる平均Y変数であるvar(p,q)が、最大閾値である、第1の規定された閾値tluより大きいか否かを判定するためにテストする。tluの値の例は600である。
様々な比較のために当該ブロック全体にわたる平均Y変動を使用する代わりに、当該ブロック全体にわたる平均U変動を計算して利用することができる。
ステップ343のテスト結果がYESの場合、すなわち、当該ブロックのピクセルのU値の平均の5番目の最下位ビットに対してデータを符号化する必要があるほど、変動が大きいことが示された場合、例えば、int[sumU(p,q)/64]など、int[sumU(p,q)/ブロックあたりピクセル数]がtluより大きいことが示された場合、制御はステップ345に進み、そこで変数mは5に等しくセットされる。
本明細書で丸め用の整数関数intを使用する代わりに、例えば常に最も近い整数値に切り上げるか、丸めるなど、整数値を達成するために丸めのいかなる他の形式でも利用することができることに留意されたい。
ステップ343のテスト結果がNOの場合、すなわち、当該ブロックのピクセルのU値の平均の5番目の最下位ビットに対してデータを符号化する必要があるほどには変動が大きくないことが示された場合、制御は条件分岐点349に進み、そこで当該ブロック全体にわたる平均Y変動であるvar(p,q)が、2番目に最大のU閾値である、第2の規定された閾値t2uより大きいか否かを判定するためにテストする。t2uの値の例は15である。
ステップ349のテスト結果がYESの場合、すなわち、当該ブロックのピクセルのU値の平均の4番目の最下位ビットに対してデータを符号化しなければならないことが示された場合、制御はステップ351に進み、そこで変数mは4に等しくセットされる。
ステップ349のテスト結果がNOの場合、すなわち、当該ブロックのピクセルのU値の平均の4番目の最下位ビットに対してデータを符号化しなければならないほどには変動が大きくないことが示された場合、制御は条件分岐点353に進み、そこで当該ブロック全体にわたる平均Y変動であるvar(p,q)が、最小のU閾値である、第3の規定された閾値t3uより大きいか否かを判定するためにテストする。t3uの値の例は7である。
ステップ353のテスト結果がYESの場合、すなわち、当該ブロックのピクセルのU値の平均の3番目の最下位ビットに対してデータを符号化しなければならないほど、変動が大きいことが示された場合、制御はステップ355に進み、そこで変数mは3に等しくセットされる。
ステップ353のテスト結果がNOの場合、すなわち、当該ブロックのピクセルのU値の平均の2番目の最下位ビットに対してデータを符号化しなければならないのに十分なだけ、変動が大きいことが示された場合、制御はステップ357に進み、そこで変数mは2に等しくセットされる。
電子透かしが入ったデータを含めるために利用されるべき、選択されたクロミナンス部分のブロック全体にわたる平均値の特定ビットが決定されると、そのビット位置に確実に所望のビットを含めさせる処理が行われる。この処理の目的は、所望のビット位置が、送信されるべき電子透かしビットの値を確実に有するように、選択されたクロミナンス部分の現在の平均値に対して最小の可能な値を加算または減算することである。所望のビット位置は、平均値の整数部分内のビット位置であってよい。この目的のために、理想的には、所望のビット位置が、送信されるべき電子透かしビットの値を既に含んでいる場合、選択されたクロミナンス部分の現在の平均値には何も加算することはできない。一方、所望のビット位置が、送信されるべき電子透かしビットの値の補数を含んでいる場合、理想的には、所望のビット位置に対して加算または減算し、したがってその現在の電子透かしされていない値から、その最終的に電子透かしされた値に、選択されたクロミナンス部分の平均値の値に最小の変更を行わせることにより、所望ビット位置をその補数にフリップすることになる最小の可能な値だけが、適宜、所望のビット位置に対して加算または減算される。
実際には、量子化ノイズにより、本発明の処理の一部、及び所望のビットの最終値に影響を与える可能性のあるMPEG様符号化処理の他の要因として丸めることで、本明細書でさらに説明するように、わずかに異なる値を加算または減算することができる。より具体的には、所望のビット位置に所望のビット値を有する値の「安全な」範囲が選択され、最小値が、選択されたクロミナンス部分の平均値に対して加算または減算される。この結果、最終値は、所望のビット位置に所望のビット値を有し、それは安全な範囲内に含まれることになる。したがって、通常、平均値のビットが、電子透かしデータを伝えるためにその補数に変更される必要のある場合は何時でも、結果的に得られる値は、常に安全な範囲の境界線上にある。既に所望のビット位置の値が、送信されるべき電子透かしデータ・ビットの値である場合、選択されたクロミナンス部分の平均値が既に安全な範囲に含まれるならば、当該選択されたクロミナンス部分の平均値には何も加算する必要はない。しかし、当該選択されたクロミナンス部分の平均値がまだ安全な範囲に含まれていない場合、所望のビット位置の値を、送信されるべき電子透かしビットの値に維持しながら、当該選択されたクロミナンス部分の平均値を安全な範囲内の値になるよう変更する必要のある最小値が、当該選択されたクロミナンス部分の平均値に加算/から減算される。
概念上、上記の説明は、所望のビット位置で所望の電子透かし値を達成するために、まず最小値を加算または減算し、次いで、最終値が安全な範囲内に含まれることを保証するために、例えばマージン値など、さらなる量を加算または減算することを意図することができる。
図5は、所望のビット位置が3番目の最下位ビットである、複数の安全な範囲の一例を示す。軸に沿って、選択されたクロミナンス部分の平均値を示す。
表1は、(コード)(値の表)を示す。
ステップ325、331、335、337、345、351、355、及び357が完了する際、制御は条件分岐点361に進み、そこで、当該ブロックに刻印されるべき電子透かしデータのビットが、変数「watermarkcolor」によって特定されるクロミナンス部分の平均値に対して現在特定されているビット位置と同じか否かを判定するためにテストする。ステップ361のテスト結果がYESの場合、すなわち、当該ブロックに刻印されるべき電子透かしデータのビットが、変数「watermarkcolor」によって特定されるクロミナンス部分の平均値に対して現在特定されているビット位置と同じであり、したがって、当該ビットをその補数値に変更する必要がないと示された場合、制御はステップ363に進み、そこでその値が現在のビット位置に対する安全な範囲内に含まれるか否かを判定するためにテストする。テスト結果がNOの場合、すなわち、後続処理中に誤りが生じる可能性があることが示された場合、制御はステップ365に進み、そこで所望のビット位置の値を変更せずに、変数「changevalue」を、「watermarkcolor」によって特定される色に対する現在の平均値を最も近い安全な範囲内に移動するために必要な値に等しくセットする。その値は整数値である必要はなく、負の値であってもよいことに留意されたい。ステップ363のテスト結果がNOの場合、すなわち、「watermarkcolor」によって特定される色に対する現在の平均値が既に安全な範囲内に含まれることが示された場合、制御はステップ367に進み、そこで「changevalue」の値が0に等しくセットされる。
ステップ361のテスト結果がNOの場合、すなわち、当該ブロックに刻印されるべき電子透かしデータのビットが、変数「watermarkcolor」によって特定されるクロミナンス部分の平均値に対して現在特定されているビット位置と同じでないことが示され、したがって、電子透かしデータを適切に伝えるために当該ビットの値がその補数値に変更されなければならないことが示された場合、制御はステップ369に進み、そこで現在のビット位置に対する最も近い安全な範囲が、「watermarkcolor」によって特定される色の現在の平均値より大きいか小さいかを判定するためにテストする。ステップ369のテスト結果が「大きい」の場合、すなわち、現在のビット位置に対する最も近い安全な範囲の値が、「watermarkcolor」によって特定される色の現在の平均値より大きいことが示された場合、制御はステップ371に進み、そこで変数「changevalue」の値が、結果的に得られる値が、より大きな値を有する隣接の安全な範囲内に含まれるように、平均値に加算される最小値に等しくセットされる。この値は整数値である必要はないことに留意されたい。ステップ369のテスト結果が「小さい」の場合、すなわち、現在のビット位置に対する最も近い安全な範囲の値が、「watermarkcolor」によって特定される色の現在の平均値より小さいことが示された場合、制御はステップ373に進み、そこで変数「changevalue」の値が、平均値に加算された場合に、より小さな値を有する隣接の安全な範囲内に含まれる値になる、最小の負の値に等しくセットされる。ここでもまた、この値は整数値である必要はなく、負の値であってもよいことに留意されたい。
ステップ365、367、371、または373が終結する際、制御はステップ375に進み、そこでピクセルに加算される合計は、ブロックあたりのピクセル数と「changevalue」の値の積に等しくセットされる。結果的に得られる積の値が整数でない場合、その値は切り捨てにより丸められる。この丸めは、ステップ365、371、及び373と合わせて実行することができる。ここで、負の値が加算された場合、当該値の整数部分をとることによって丸めは切り捨てとなり、正の値が加算された場合、次の整数値に向けて丸めは切り上げとなる。
処理は、次に、ブロック・レベル単位からブロック内のピクセル・レベル単位に変更される。ステップ377で、ブロックの第1のピクセルが指し示される。その後、条件分岐点379は、現在のピクセルに電子透かしを入れるべきか否かを、その色に基づいて判定するためにテストする。これは、電子透かしを入れるのに適した当該ピクセルのクロミナンス成分が、ブロック全体に対してステップ307で選択された色と同じか否かを判定するためにテストすることにより行われる。ステップ379のテスト結果がYESの場合、すなわち、当該ピクセルが電子透かしされるべきであることが示された場合、制御はステップ381に進み、そこでピクセルに対する輝度変動と、現時点で当該ブロックのピクセルに加算される合計値に基づいて、ある値が現在のピクセルに加算される。
より具体的には、可視的な人為的誤りをもたらさずにピクセルに加算することのできる最大値が、輝度の変動に従って決定される。輝度の変動が大きいほど、加算できる値は、規定の最大値まで増加する。この値は正でも負でもよいことに留意されたい。次いで、ピクセルに加算されるべき合計が正の値である場合は、この値がピクセルに加算され、ピクセルに加算されるべき合計が負の値である場合は、この値がピクセルから減算される。しかし、ピクセル単位の処理が進むと、加算または減算される値の現在の合計が、ピクセルに加算されるべき合計から減算される。現在のピクセルに加算されるべき値により、ピクセル群に加算されるべき合計と現在の合計の間に0を挟んで違いが生じる場合、その値は、現在の合計が丁度0に等しくなるように調整される。
ステップ379のテスト結果がNOの場合、またはステップ381の完了後、制御は条件分岐点383に進み、そこで現在のピクセルが当該ブロックの最後のピクセルか否かを判定するためにテストする。ステップ383のテスト結果がNOの場合、制御はステップ385に進み、そこで、当該ブロックのピクセルに加算されるべき合計は加算済みか否か、すなわち、当該ブロックのピクセルに加算されるべき合計に等しい現在の合計か否かを判定するためにテストする。ステップ385のテスト結果がNOの場合、すなわち、当該ブロックのピクセルにさらに加算される必要があることが示された場合、制御はステップ387に進み、そこで当該ブロックの次のピクセルを指し示す。次いで制御はステップ379に戻り、処理は上記で説明したように継続する。
ステップ383または385のテスト結果がYESの場合、すなわち、当該ブロックのすべてのピクセルが処理済みか、または加算される必要のある合計すべてが加算済みであることが示された場合、制御はステップ389に進み、処理は終了する。
図4A及び4Bは、図4に示すように組み合わせた場合、ビデオ信号の電子透かし信号を構成する追加情報がクロミナンス成分に刻印された、デジタルに電子透かしの入ったビデオ信号から追加情報を抽出するための処理例を示す。このような処理は、色選択207、二極形の双投形スイッチ209、ブロック変動計算211、ブロック・インテグレーターV 213、ブロック・インテグレーターU 215、及びビット選択217(図2)の全体にわたり、図2に示すシステムのようなシステムによって実施することができる。
この処理は、受け取ったデシメート済みフレームの新しいブロックが処理されるステップ401(図4)から開始する。教育的目的のために、本明細書では、1ブロックのすべてのピクセルが、次のブロックのピクセルが処理される前に処理されるように、ブロックでグループ化した図4の処理による処理のためにピクセルが供給されることに留意されたい。しかし、実際のシステムを設計する際、当業者は、ブロックを効果的に個別処理するために、ピクセルを、それらピクセルがスキャンされるのと同じ順序で処理することができ、適切なメモリ位置及び制御構造を使用できることを容易に理解するだろう。
図4の処理の部分は、ブロック単位を基礎として行われ、一部はピクセル単位を基礎として行われる。1つのフレームの複数のブロックは、2次元ポインターp、qを使用して索引付けされる。ここで、pは、処理中のフレームの特定の横スライスを指し示し、qは、当該フレームの特定の列、すなわち縦スライスを指し示す。例えば、720×480の解像度の場合、pは1と30の範囲にあり、qは1から45の範囲にある。同様に、各ブロックのピクセルは、2次元ポインターi、jを使用して索引付けされる。ここで、iは、処理中のブロック内の特定行を指し示し、jは、処理中のブロック内の特定列を指し示す。例えば、元のビデオの各マクロブロックにY、U、及びVの対応する8×8ブロックしかない場合、データを刻印するために利用される特定処理モードでは、iとjはどちらも0と7の範囲にある。
ステップ401で処理が開始された後、同処理に使用されるいくつかの変数は、例えばcountU(p、q)=0、countV(p、q)=0、sumU(p、q)=0、sumV(p、q)=0、及びvar(p,q)=0のように、ステップ403で初期設定される。countU及びcountVは、色選択処理によりそれぞれU及びVとして選択されたブロック内のピクセルの現在の合計数であり、sumU及びsumVは、当該ブロックのすべてのピクセルに対する、それぞれU及びVの現在の合計数である。当該ブロックに対して、iとjはどちらも、例えばi=0、j=0のように、処理されるべきブロックの第1のピクセルを指し示すようセットされる。ブロックごとに、var(p,q)は当該ブロック内の各ピクセルに対する輝度の変動の合計を表すが、これは当然ながら、当該ブロックに対する輝度の平均変動に比例する。
その後、ステップ405で、現在処理中のブロックのピクセルを現在指し示している、Y値、U値、及びV値が得られる。例えば、
の値が得られる。U及びVの現在の値は、ステップ407のsumU及びsumVのそれぞれの現在の値に加算される。ステップ407でも、現在のピクセルに対する輝度の変動をvar(p,q)の現在の合計に加算することによって、輝度の変動var(p,q)は更新される。現在のピクセルに対する輝度の変動は、現在のピクセルとそれに最も近いピクセルのすべての間の輝度の差の絶対値をとることにより、演算することができる。数学上、最も近いピクセルのすべてが同じブロック内にある場合、これは次のように表記される。
当業者は、最も近いピクセルが別のブロックにあるようなピクセルに対しても、上記の説明を容易に適用することができよう。さらに、フレームの境界線に近いブロック、すなわち最も近いピクセルのないブロック、または最も近いピクセルが、表示されていないブロックの一部であるブロックに関しては、そのようなピクセルの値を0と見なすことができる。
最も近いピクセルのすべてを考慮する必要はなく、それでも十分に高品質の結果を達成することができる。より具体的には、演算時間は、現在のピクセルを囲む長方形の隅の4つのピクセルと、現在のピクセルと縦または横のラインを形成する、2つの他のピクセル、例えば、現在のピクセルの横のライン上にある2つのピクセルと差を取ることように低減すると有利である。しかし、デコーダーは、エンコーダーで利用された同じ処理と一致すべきである。
制御は、条件分岐点409に進み、そこで、UとVのどちらに追加データが刻印された可能性があるかを判定するためにテストする。この判定の詳細は、以下でさらに説明する。ステップ409のテスト結果がUの場合、すなわち、追加データが、現在のピクセルに対してUに刻印された可能性が最も高いことが示された場合、制御はステップ411に進み、そこでcountUが増分される。次いで制御はステップ413に進む。ステップ409のテスト結果がVの場合、すなわち、追加データが、現在のピクセルに対してVに刻印された可能性が最も高いことが示された場合、制御はステップ415に進み、そこでcountVが増分される。次いで制御はステップ413に進む。
あるいは、条件分岐点409は、ピクセルにデータがまったく刻印されなかった、すなわち、UにもVにも刻印されなかった可能性があることを示す、さらに別の結果のある、スリーウェイ・テストであってもよい。このような結果の場合、制御は単にステップ413に直接進む。
条件分岐点413は、現在のピクセルが現在のブロックの最後のピクセルか否かを判定するためにテストする。ステップ413のテスト結果がNOの場合、すなわち、未処理の現在のブロックにさらにピクセルが残っていることが示された場合、制御はステップ417に進み、そこで、次の「今のところ未処理の」ピクセルを指し示すようiとjの値が調整される。次いで制御はステップ405に進み、そこで処理は上記のように継続する。ステップ413のテスト結果がYESの場合、すなわち、現在のブロックのすべてのピクセルが処理済みであることが示された場合、制御はステップ419に進み、そこで、当該ブロックに対してデシメートされた輝度の変動が計算される。すなわち、8×8のYブロックの変動が計算される。
次いで制御は条件分岐点421に進み、そこで、現在のブロックに対してcountV>countUか否かを判定するためにテストする。ステップ421のテスト結果が、countVがcountUよりも大きい場合、制御は条件分岐点423に進み、そこで当該ブロック全体にわたる平均Y変動であるvar(p,q)が、最大V閾値である、第1の規定された閾値tlvよりも大きいか否かを判定するためにテストする。tlvの値の例は600である。
あるいは、様々な比較のために当該ブロック全体にわたる平均Y変動を使用する代わりに、当該ブロック全体にわたる平均U変動または平均V変動を計算して、例えば数値の大きい方を利用することができる。
ステップ423のテスト結果がYESの場合、すなわち、当該ブロックのピクセルのV値の平均の整数部分の5番目の最下位ビット、例えば、int[sumV(p,q)/ブロックあたりピクセル数]の値、例えばint[sumV(p,q)/64]、に対してデータが符号化された可能性があるほど、変動が大きいことが示された場合、制御はステップ425に進み、そこで変数mは5に等しくセットされる。次いで制御はステップ427に進み、そこで当該ブロックのピクセルのV値の平均のm番目の最下位ビットの値が、当該ブロックに刻印された値として抽出される。次いで処理は、ステップ459で終了する。
本明細書の丸め用の整数関数intを使用する代わりに、例えば、常に最も近い整数値に切り上げるか、丸めるなど、整数値を達成するために丸めのいかなる他の形式でも利用することができることに留意されたい。
ステップ423のテスト結果がNOの場合、すなわち、当該ブロックのピクセルのV値の平均の整数部分の5番目の最下位ビットに対してデータが符号化された可能性があるほどには変動が大きくないことが示された場合、制御は条件分岐点429に進み、そこで当該ブロック全体にわたる平均Y変動であるvar(p,q)が、2番目の最大V閾値である、第2の規定された閾値t2vより大きいか否かを判定するようテストする。t2vの値の例は15である。
ステップ429のテスト結果がYESの場合、すなわち、当該ブロックのピクセルのV値の平均の整数部分の4番目の最下位ビットに対してデータが符号化された可能性があるほど変動が大きいことが示された場合、制御はステップ431に進み、そこで変数mが4に等しくセットされる。次いで制御はステップ427に進み、そこで当該ブロックのピクセルのV値の平均のm番目の最下位ビットの値が、当該ブロックに刻印された値として抽出される。次いで処理は、ステップ459で終了する。
ステップ429のテスト結果がNOの場合、すなわち、当該ブロックのピクセルのV値の平均の整数部分の4番目の最下位ビットに対してデータが符号化された可能性があるほどには、変動が大きくないことが示された場合、制御は条件分岐点433に進み、そこで当該ブロック全体にわたる平均Y変動であるvar(p,q)が、最小V閾値である、第3の規定された閾値t3vより大きいか否かを判定するようテストする。t3vの値の例は7である。
ステップ433のテスト結果がYESの場合、すなわち、当該ブロックのピクセルのV値の平均の整数部分の3番目の最下位ビットに対してデータが符号化された可能性があるほど、変動が大きいことが示された場合、制御はステップ435に進み、そこで変数mは3に等しくセットされる。次いで制御はステップ427に進み、そこで当該ブロックのピクセル全体にわたるV値の平均のm番目の最下位ビットの値が、当該ブロックに刻印された値として抽出される。次いで処理は、ステップ459で終了する。
ステップ433のテスト結果がNOの場合、すなわち、当該ブロックのピクセルのV値の平均の整数部分の2番目の最下位ビットに対してデータが符号化された可能性を示すに十分なだけ、変動が大きいことが示された場合、制御はステップ437に進み、そこで変数mは2に等しくセットされる。次いで制御はステップ427に進み、そこで当該ブロックのピクセルのV値の平均のm番目の最下位ビットの値が、当該ブロックに刻印された値として抽出される。次いで処理は、ステップ459で終了する。
ステップ421のテスト結果が、countUがcountVより大きい場合、制御は条件分岐点445に進み、そこで、当該ブロック全体にわたる平均Y変動var(p,q)が、最大U閾値である、第1の規定された閾値tluより大きいか否かを判定するためにテストする。tluの値の例は600である。
ステップ445のテスト結果がYESの場合、すなわち、当該ブロックのU値の平均の整数部分の5番目の最下位ビット、例えば、int[sumU(p,q)/ブロックあたりピクセル数]の値、例えばint[sumU(p,q)/64]、に対してデータが符号化された可能性があるほど、変動が大きいことが示された場合、制御はステップ445に進み、そこで変数mは5に等しくセットされる。次いで制御はステップ447に進み、そこで当該ブロックのピクセル全体にわたるU値の平均のm番目の最下位ビットの値が、当該ブロックに刻印された値として抽出される。次いで処理は、ステップ459で終了する。
ステップ445のテスト結果がNOの場合、すなわち、当該ブロックのピクセルのU値の平均の整数部分の5番目の最下位ビットに対してデータが符号化された可能性があるほどには変動が大きくないことが示された場合、制御は条件分岐点449に進み、そこで当該ブロック全体にわたる平均Y変動であるvar(p,q)が、2番目の最大U閾値である、第2の規定された閾値t2uより大きいか否かを判定するためにテストする。t2uの値の例は15である。
ステップ449のテスト結果がYESの場合、すなわち、当該ブロックのU値の平均の整数部分の4番目の最下位ビットに対してデータが符号化された可能性があるほど変動が大きいことが示された場合、制御はステップ451に進み、そこで変数mは4に等しくセットされる。次いで制御はステップ447に進み、そこで当該ブロックのピクセルのU値の平均のm番目の最下位ビットの値が、当該ブロックに刻印された値として抽出される。処理はステップ459で終了する。
ステップ449のテスト結果がNOの場合、すなわち、当該ブロックのピクセルのU値の平均の整数部分の4番目の最下位ビットに対してデータが符号化された可能性があるほどには変動が大きくないことが示された場合、制御は条件分岐点453に進み、そこで当該ブロック全体にわたる平均Y変動であるvar(p,q)が、最小U閾値である、第3の規定された閾値t3uより大きいか否かを判定するためにテストする。t3uの値の例は7である。
ステップ453のテスト結果がYESの場合、すなわち、当該ブロックのピクセルのU値の平均の整数部分の3番目の最下位ビットに対してデータが符号化された可能性があるほど、変動が大きいことが示された場合、制御はステップ455に進み、そこで変数mは3に等しくセットされる。次いで制御はステップ447に進み、そこで当該ブロックのピクセルのU値の平均のm番目の最下位ビットの値が、当該ブロックに刻印された値として抽出される。次いで処理は、ステップ459で終了する。
ステップ453のテスト結果がNOの場合、すなわち、当該ブロックのピクセルのU値の平均の整数部分の2番目の最下位ビットに対してデータが符号化された可能性があることを示すのに十分なだけ、変動が大きいことが示された場合、制御はステップ457に進み、そこで変数mは2に等しくセットされる。次いで制御はステップ447に進み、そこで当該ブロックのピクセルのU値の平均値のm番目の最下位ビットの値が、当該ブロックに刻印された値として抽出される。次いで処理は、ステップ459で終了する。
図3及び4には、3つの閾値と4つのビット位置が示されているが、当業者ならば、閾値及び符号化された値の他の数に、上記の方法を容易に適用することができることを容易に理解するだろうことに留意されたい。
同様に、ビデオ信号の各フレームまたはフィールドのすべてのブロックに、追加情報を刻印する必要はない。
図6は、あるピクセルに対する電子透かし情報を含めるにはどの特定のクロミナンス部分がより適しており、選択されるべきかを特定するための処理例を示す。この処理は、電子透かし情報を含めるためにクロミナンス部分を選択することが必須の場合に、ステップ601で開始する。図6を説明するために、ピクセルはYUV形式で表されるものと想定する。さらに、好適には、元のビデオが4−4−4表現である場合、元のビデオのそれぞれの元の2×2の輝度ブロックに対して、クロミナンス成分ごとに、すなわちそれぞれの対応するU値とV値の各対に対して、Y値は1つであるべきことに留意されたい。この目的のために、元のブロックのY値は、U及びVと同じ解像度を有するようにダウンサンプルすることができる。あるいは、特定のU値とV値に関連付けられた、Y値の平均、または何らかの他の組合せを、図6の処理について演算し、Y値として使用することができる。
概念上、可能なピクセル位置に対応する3次元YUV色空間の各位置は、ピクセルのY値、U値、及びV値が取ることのできるフルレンジが与えられた場合、例えば、より適しており、選択されるべき経験的観察に基づいて、そのようなY値、U値、及びV値を有するピクセルに関してクロミナンス部分に割り当てられる。Y、U、及びVのそれぞれが8ビットのフルレンジを有し、Y値、U値、及びV値の可能な組ごとにテーブル全体のバージョンが利用されるべき場合、選択されたクロミナンス部分を示す各位置に対して1ビットしか記憶されなかったとするならば、少なくとも16Mビットの情報を記憶する必要がある。単一ビットを使用すると、UとVのどちらも利用されるべきでないという指定ではなく、UまたはVの選択しか許可されないことに留意されたい。UとVのどちらも選択できないことが望まれる場合、32Mbitの情報は必須であろう。
3次元YUV色空間内の可能なピクセルごとに選択されるべき、クロミナンス部分の割り当て例の一部の断面図を、図7に示す。図7は、教育目的でのみ、概念上の視覚的な一助として提供されるものであり、実際のデータを表すものでないことに留意されたい。
記憶要件を低減するために、YUV色空間を一群の領域と見なすことができ、この場合、各領域は、Y値、U値、及びV値の少なくとも1組、通常は複数組に対応する位置、すなわち、少なくとも1つのピクセル、可能ならば多くのピクセルに対応する色空間の位置を含むものと定義される。ここで、各領域、したがって当該領域にマップする各ピクセルは、例えばY値、U値、及びV値の組が当該領域に含まれる、任意のピクセルに対して選択されるべき経験的観察に基づいて、クロミナンス部分に割り当てられる。複数の領域へのそのようなグループ化を参照する1つの方法は、線形であっても非線形であってよい量子化である。
表1は、色空間選択表の一例に関するリストである。ここで、各領域は、4つのY値、4つのU値、4つのV値に対応しており、したがっていかなるピクセルに対しても8ビット値の64の可能な組合せに対応する。このような表を使用することにより、各位置につき1ビットしか記憶されないとするならば、記憶されるべき要求される情報は256Kbitに低減され、Y、Vは選択することができるが、UとVはどちらも選択することができないことが望まれるならば、512Kbitに低減される。表1は、ROM、RAM、ハードディスクまたはテープドライブのような磁気記憶装置、CD−ROMまたはDVD−ROMのような光記憶装置など、いかなるコンピュータ可読媒体にも記憶することができる。
当業者は、8ビットのフルレンジを有するY、U、及びVのそれぞれに関する、表1で利用される値は、各10ビット値を右に2回シフトするなど、4で割ることにより10ビットのY値、U値、及びV値で使用するためにスケール変更することができることを、容易に理解するだろう。同様に、Y、U、及びVに使用される他のビット数も、同様に適合することができる。
表1のデータを効果的に構成し、アクセスするために、同じU量子化値とV量子化値を有するが、異なる連続の量子化されたY値を有する8の隣接領域に対して、1はUを選択することを示し0はVを選択することを示す、指定されたUまたはV選択をグループ化して1バイトを形成するように構成される。したがって、U値及びV値のそれぞれにつき8バイトがあり、それぞれは、同じU量子化値とV量子化値と、異なる量子化Y値を有する領域に対応する。
表1は、U値に対応する最上位ビット、V値に対応する次の最下位ビット、及びY値に対応する最下位ビットを有するアドレスを使用してアドレス指定されるよう構成される。すなわち、バイトのアドレスは、次のように形成することができる。
U7|U6|U5|U4|U3|U2|V7|V6|V5|V4|V3|V2|Y7|Y6|Y5
ここで、U7、U6、U5、U4、U3、及びU2は、ピクセルU値の8番目から3番目の最下位ビットの値であり、V7、V6、V5、V4、V3、及びV2は、ピクセルV値の8番目から3番目の最下位ビットの値であり、Y7、Y6、及びY5は、ピクセルY値の8番目から6番目の最下位ビットの値である。この場合、バイト内の特定ビットが、Y4、Y3、及びY2など、Y成分の5番目から2番目の最下位ビットを使用して指定される。
表1のような表は、人間の視覚システムが、a)青には感度が低く、b)低輝度値には感度が高いことを反映している。このような表は、一般的には以下のように試行錯誤により展開することができる。
色空間はセクションで検査される。各セクションは、輝度値で定義され、最大値と最小値の間で変化する第1のクロミナンス部分に対応する1次元と、最大値と最小値の間で変化する第2のクロミナンス部分に対応する2次元の範囲にある。輝度部分とクロミナンス部分のどれでも、またはすべては、例えば8ビット値の6つの最上位ビットを使用して、量子化することができる。これを行うことにより、クロミナンス部分値のチェッカーボードを有する一組の平面が作成される。これは、異なる色のブロックとして表示される場合、輝度値ごとに1つの平面が表示される。例えば、輝度及び両方のクロミナンス部分に対する8ビットの6つの最上位ビットを使用するために量子化することにより、それぞれの可能な量子化された輝度値に対応する64の平面が生じる。各平面は、平面あたり合計4096ボックスのための縦64ボックスと横64ボックスの、色付きボックスのチェックボード・パターンを有する。
各平面は別々に検査される。無作為データは、時間と共にフレームの同様に配置されたブロックに異なる値を有することになり、ちらつきがある場合に、観察者がそのちらつきを検出することを確実にするために十分なフレーム数に対して展開される。30秒以上は価値があることが証明されている。無作為データが、平面を含むフレームに刻印される。この場合、これは、例えば、電子透かしを達成するために図1のシステムと図3の処理を使用するが、色選択が第1のクロミナンス部分になることを強制して、複数のクロミナンス部分の最初のクロミナンス部分にのみ刻印される。結果的に得られるフレームの電子透かしの入ったバージョンが表示され、観察される。
ちらつきが観察されないブロックはどれでも、表で、その輝度部分とクロミナンス部分の組合せが、その組合せに対する選択されたクロミナンス部分として、電子透かしデータを現在伝えているクロミナンス部分を利用すべきであることが示される。ちらつきが観察されるブロックはどれでも、表で、その輝度部分とクロミナンス部分の組合せが、その組合せに対する選択されたクロミナンス部分として、電子透かしデータを現在伝えていないクロミナンス部分を利用すべきであることが示される。この処理は、その平面に対して反復されるが、電子透かしの入ったクロミナンス部分を変更する。
起こりうるように、両方のクロミナンス部分に対してちらつきが発生する平面のどのブロックに対しても、実施者は、どのクロミナンス部分を選択すべきかを選ぶことができる。例えば、人間の視覚システムは、一般に、青に対して感度が低いので、Uが選ばれる可能性がある。あるいは、結果的に得られた表のよりよいデータ圧縮を提供するクロミナンス部分を利用することができる。同様に、どのブロックにもちらつきがない場合、利用すべきクロミナンス部分の選択は、実施者の裁量に任される。
この処理は、表全体に値が代入されるまで、平面ごとに反復される。
ステップ603は、そのように構成される場合、情報にアクセスする処理を開始する。より具体的には、ステップ603で、
及び
が計算される。
上式では、上記で説明したように、
pは、処理中のフレームの特定の横スライスを指し示し、qは、当該フレームの特定の列、すなわち縦スライスを指し示し、iは、処理中のブロック内の特定の行を指し示し、jは、処理中のブロック内の特定の列を指し示し、「>>」は右シフト動作である。これを行うことにより、所望の、ピクセルU値の8番目から3番目の最下位ビットと、ピクセルV値の8番目から3番目の最下位ビットと、ピクセルY値の8番目から6番目の最下位ビットだけが残る。その後、ステップ605で、現在のピクセルに対する参照テーブルのアドレスは、次のように計算される。
ここで、「<<」は左シフト動作である。
これを行うことにより、抽出したビットは、組み合わされたアドレスに組み合わされ、当該ピクセルに対応する1つのバイトが指し示される。その後、ステップ607で、ピクセルに対応するバイト内の特定ビットが、Y成分の2番目から5番目の最下位ビットから構成された値をバイトへの索引として使用して特定される。この目的のために、ステップ607は、次の計算をする。
上式で、modはモジュロ関数である。
ステップ609で、計算された参照テーブル・アドレスのバイトのb番目の位置の値が抽出され、出力として供給される変数mの値として割り当てられる。ここでもまた、この実施形態では、抽出したビットが1の場合、Uは選択されたクロミナンス部分であり、抽出したビットが0の場合、Vは選択されたクロミナンス部分である。
次いで処理はステップ611で終了する。
当業者には、上記の説明を、RGBまたはYIQなど、他の形式のピクセルに適用する方法を容易に理解するだろう。
テーブルのハフマン符号化が望まれる場合、経験上分かるように、Uがピクセルの組合せの大部分に選択されるとするならば、選択Uが1であり、選択Vが0であるという上記の対応関係を逆転させると有利な場合があることに留意されたい。
図8は、あるピクセルに対する電子透かし情報を含めるために、特定のクロミナンス部分を選択する、別の処理例を示す。この処理は、電子透かし情報を含めるのに適したクロミナンス部分を選択することが必須の場合、ステップ801で開始される。図6と同様、図8を説明するために、ピクセルはYUV形式で表されるものと想定する。さらに、元のビデオが4−4−4表現である場合、好適には、元のビデオの元のそれぞれ2×2輝度ブロックに対して、各クロミナンス成分、すなわち、それぞれの対応するU値とV値の各対に対してY値は1つであるべきことに留意されたい。この目的のために、元のブロックのY値を、U及びVと同じ解像度を有するようにダウンサンプルすることができる。あるいは、特定のU値及びV値に関連付けられた、Y値の平均または何らかの他の組合せを演算して、図8の処理用のY値として使用することができる。
図6の実施形態と比較して図8の実施形態の記憶要件をさらに低減するために、図6に関して説明したように、それぞれがY値、U値、及びV値の少なくとも1つの組に対応する位置を含み、例えば経験的観察に基づいて、Y値、U値、及びV値が当該領域に含まれるいかなるピクセルに対しても選択されるべき、クロミナンス部分にそれぞれが割り当てられた、複数の領域にYUV色空間が分割されるだけでなく、最大値の2分の1など、規定値より低いU値を有するピクセルはどれでも、電子透かし用に選択されたUクロミナンス部分を有する。したがって、8ビットのY値、U値、及びV値の場合、Uの値が128より低い場合、Uクロミナンス部分は常に、VまたはYの値にかかわらず電子透かし用に選択される。これは、人間の視覚システムが、V成分よりも、青の成分Uに対する感度が低いからである。
有利には、クロミナンス部分選択表の最上位ビットをアドレスのU値導出ビットに対応させることにより、表のサイズを2分の1まで縮小することができる。これは、表アドレスを形成する前に、最大値の2分の1よりもU値が低いか否かを判定するためのテストを追加し、そのテスト結果がYESの場合、すなわち単にUクロミナンス部分を選択し、表にアクセスする残りの処理を省略し、アドレスのU値導出ビットを計算する前に、実際のU値から最大U値の2分の1を減算することにより達成される。したがって、0の最上位Uビットに対応する図6に利用される表のセクションは除去され、最上位Uビットが1の表の部分だけが保持される。しかし、表の残りの部分への索引付けは、U値導出ビットを形成する前に、最大U値の2分の1をU値から減算することによりシフトされる。
したがって、この表は、U値に対応する最上位ビット、V値に対応する次の最下位値、Y値に対応する最下位値を有するアドレスを使用してアドレス指定されるように構成される。すなわち、バイトのアドレスは、次のように形成することができる。
U6|U5|U4|U3|U2|V7|V6|V5|V4|V3|V2|Y7|Y6|Y5
ここで、U6、U5、U4、U3、及びU2は、ピクセルU値の7番目から3番目の最下位ビットの値であり、V7、V6、V5、V4、V3、及びV2は、ピクセルV値の8番目から3番目の最下位ビットの値であり、Y7、Y6、及びY5は、ピクセルY値の8番目から6番目の最下位ビットの値である。この場合、バイト内の特定ビットが、Y4、Y3、及びY2など、Y成分の5番目から2番目の最下位ビットを使用して指定される。
この目的のために、条件分岐点802は、
か否かを判定するためにテストする。ここで、predefined_valueは、例えば、最大U値の2分の1である。1ビットを節約するために、また表のサイズを半減させるために、predefined_valueは2の累乗であることが好ましいことに留意されたい。ステップ802のテスト結果がNOの場合、すなわち、Uの値が、例えば128など、Uの最大値の2分の1などの、規定値より低く、したがって、選択されるべきクロミナンス部分がY、U、及びVの関数であることが示される場合、表にアクセスする必要がある場合、制御はステップ803に進み、そこで表にアクセスする処理を開始する。ステップ803では、
及び
が計算される。
上式では、上記で説明したように、
pは、処理中のフレームの特定の横スライスを指し示し、qは、当該フレームの特定の列、すなわち縦スライスを指し示し、iは、処理中のブロック内の特定の行を指し示し、jは、処理中のブロック内の特定の列を指し示し、「>>」は右シフト動作である。これを行うことにより、所望の、ピクセルU値の7番目から3番目の最下位ビットと、ピクセルV値の8番目から3番目の最下位ビットと、ピクセルY値の8番目から6番目の最下位ビットだけが残る。その後、ステップ805で、現在のピクセルに対する参照テーブルのアドレスは、次のように計算される。
ここで、「<<」は左シフト動作である。
これを行うことにより、抽出したビットは、組み合わされたアドレスが組み合わされ、当該ピクセルに対応する1つのバイトが指し示される。その後、ステップ807で、ピクセルに対応するバイト内の特定ビットが、Y成分の5番目から2番目の最下位ビットから構成された値をバイトへの索引として使用して特定される。この目的のために、ステップ807は、次の計算をする。
上式で、modはモジュロ関数である。
ステップ809で、計算された参照テーブル・アドレスのバイトのb番目のビット位置の値が抽出され、変数mに記憶される。変数mの値は、ステップ811で出力として供給される。ここでもまた、出力したビットが1の場合、Uは選択されたクロミナンス部分であり、抽出したビットが0の場合、Vは選択されたクロミナンス部分である。次いでこの処理はステップ813で終了する。
ステップ802のテスト結果がYESの場合、すなわち、ピクセルの色が本来は青でなく、したがって、ピクセルの青色を変更しても人間の視覚システムには検出されないという理由から、Uクロミナンス部を選択すべきであることが示された場合、制御はステップ815に進み、そこで変数mは1に等しくセットされる。これを行うことにより、確実にUが選択される。次いで制御はステップ811に進み、そこで処理は上記で説明したように継続する。
ピクセルに対する特定のY値、U値、及びV値を使用する、色選択における上記の改善にもかかわらず、わずかに検出可能なちらつきが明らかになる可能性が依然としてあることは不利である。これは、MPEG様符号化に耐えるために、選択されたクロミナンス部分の平均値に大きな値を加算する必要がある場合があるからである。
図9は、本発明の原理により、ブロックのクロミナンス部分の平均値にデータが刻印される前に、刻印されるべきデータを、少なくとも1回、好適には数回、複製することによってちらつきを低減することのできる送信器例を示す。元のデータと、それぞれの複製されたデータは、別個の連続したフレームの同じブロック位置で送信される。好適には、同じデータを伝える、ブロックを同様に配置させたフレームは、表示順で連続する。さらに、本発明の一態様により、フレームの特定ブロックは、ユーザのデータを符号化するのではなく、特定の周知のデータ・シーケンス、例えばBarkerシーケンスで埋め込むことができる。
図9に示す本発明の実施形態は、図1の構成に類似している。図9のすべての同様に付番した要素は、図1と大体同じように動作する。図9には、図1の要素以外に、リピーター925と任意選択のシーケンス加算器927がある。さらに、図1のビット・マッパー123は、図9では、任意選択でビット・マッパー923に置き換えられる。ビット・マッパー123をビット・マッパー923に置き換えることは、ビット・マッパー923に関して以下で説明する追加機能が望まれる場合にのみ、必須である。
リピーター925は、ブロック・インターリーバー121または任意選択のシーケンス加算器927からビットを受け取る。リピーター925は、受け取ったビットを記憶し、それらを少なくとも2つのフレームの同様に配置されたブロックに出力する。本発明の一実施形態では、リピーター925が、受け取ったビットを記憶し、それらを3つのフレームの同様に配置されたブロックに対して出力する場合、良い結果が達成されることが判明している。当業者は、データが反復されるフレーム番号を選択することにより、電子透かしデータの所望のスループットで、認知されたちらつきをどれでもトレードオフすることができよう。
任意選択のシーケンス加算器927は、特定の周知のデータ・シーケンス、例えばBarkerシーケンスを、フレームの特定のブロックに埋め込むが、そのデータ・シーケンスは、符号化されたユーザ・データの代わりである。本発明の一態様により、データ・シーケンスが符号化される特定のブロックを、フレームのブロック全体に分散することができる。初期の、また反復されたデータ・フレームの各グループは、別の周知のシーケンスを利用することができる。これを行うことにより、受信器はフレームのグループ化を検出することができる。あるいは、グループごとに同じシーケンスを利用することができるが、当該シーケンスのために使用される特定フレームは、連続するグループに対して異なる場合がある。
図10は、本発明の原理により、図9の送信器により作成されるような、電子透かしの入ったビデオ信号を受信する際に使用するための受信器の一実施形態を示す。図10の本発明のこの実施形態は、図2の構成に類似している。図10の同様に符番されたすべての要素は、図2と大体同様に動作する。図10には、図2の要素以外に、シーケンス・プロセッサ1025及びフレーム重み付けユニット1027が示されている。さらに、図2のチャンネル・デコーダー221は、図10では、任意選択でチャンネル・デコーダー1021に置き換えられる。
図10に示すような受信器は、シーケンス・プロセッサ1025を使用してグループ同期化を検出することができる。これは、同期パターンとして利用される、連続するフレームのグループ長数の各フレームからグループ識別シーケンスの値を合計し、その結果が規定の閾値を超えるか否かを判定することにより実行することができる。閾値を超えている場合、予想される同期化パターン値が加算された第1のフレームを、当該グループの第1のフレームと想定する。閾値を超えていない場合、値が加算された第1のフレームは、グループの第1のフレームでないと想定する。これは、同期化パターンの自動自己相関を実行することに類似している。当業者には、誤ったマッチを回避し、また、誤りによる第1のフレームの消失に対処するための他の従来技術、例えばグループ同期化を宣言する前に最大値を検索するなどの技術が利用できることが理解されよう。
有利には、受信器が正規のグループ・パターンを一度でも検出すると、何時でも、その受信器が、元のビデオ・シーケンスのフレームが除去済みであることを認識できる、パターンからの逸脱がある。このような情報を、シーケンス・プロセッサ1025により出力として供給することができる。
例えば、本発明の一実施形態では、ビデオ信号内の販売業者の様々なコマーシャルを監視することができる。販売業者には、その業者のコマーシャルの各フレームに埋め込まれた一意のコードを割り当てることができる。受信器には、特定の一意のコードと、電子透かしを入れたフレーム内のどのブロックがそのコードを含むかが知らされる。電子透かしを入れたフレーム内のそのコードの表示を検出することにより、受信器は、そのフレームが、販売業者の複数のコマーシャルのうちの1つに属するものであると特定することができる。そのコードを有するフレームが一度検出されると、そのコードを組み込んだ連続するフレーム数を計数して、そのコマーシャルの長さを特定することができる。計数されたフレーム数が、元々電子透かしを入れた時のコマーシャルの周知の長さに基づいて予想されるフレーム数より少ない場合、予想されるフレーム数と計数されたフレーム数の間の差に対応するフレーム数を除去することにより、そのコマーシャルは不適切に短縮されたと仮定することができる。当業者には、誤ったマッチを回避し、また、誤りによる第1のフレームの消失に対処するための他の従来技術を利用することができることが理解されよう。
コマーシャル、またはコマーシャル内の数グループのフレームのそれぞれは、一意の識別子、例えば、フレームに関する識別可能なシーケンスの一部である、フレームまたはグループ番号で電子透かしを入れることができる。予想されたシーケンスに、1つまたは複数の消失したフレームによるギャップが検出された場合、各フレームが一意の識別子を有するならば、消失したフレームを具体的に特定することができる。識別子がグループにだけ割り当てられており、各グループのフレーム数が知られている場合、消失したフレームが属する特定のグループだけを、消失したフレームの計数に従って特定することができる。
本発明の原理により上記で指摘したように、ちらつきを減らすためにデータの複製を利用することができるが、これを行うことにより、特定のフレームを識別できるのではなく、フレームが消失したグループを単に識別するよう、消失したフレームを検出する能力を制限することができる。したがって、本発明の一態様により、電子透かしデータが一般に複製されるが、少なくとも1つの個別フレーム識別子を複製することはできない。そのような複製されていないフレームを含むブロックは、それらがちらつきの原因となったとしても、注目される可能性が最も低い場所、例えばフレームの隅などに置かれる。これを行うことにより、検出可能なちらつきを減らす利点の大部分が提供され、同時に、消失した特定の個別フレームの検出が可能となる。
販売業者が様々なコマーシャルを有する場合、そのコマーシャルのそれぞれは、受信中の当該販売業者の特定のコマーシャルを識別するために、さらなるシーケンスをその複数のフレームの少なくとも1つに埋め込むことができる。
複数の販売業者が電子透かしを入れたコマーシャルを有する場合、各販売業者に一意のコードが割り当てられる限り、第1の一意のコードを有する第1の販売業者のコマーシャルの出現を監視するシステムは、第2の一意のコードを有する第2の販売業者のコマーシャルを無視する。あるいは、単一システムは、それぞれに一意のコードを有する様々な販売業者からのコマーシャルの出現に関するビデオ信号を監視することができ、その結果は、それらコードに基づいて販売業者ごとに分離することができる。
複数の販売業者が電子透かしを入れたコマーシャルを有する、本発明の別の実施形態では、各販売業者は同じコードを利用するが、そのコードを、販売業者ごとにフレーム内の同じブロック位置に置くことさえできる。しかし、フレームに含まれるすべての後続データは、販売業者ごとに一意のキーを使用して暗号化され、各販売業者は自社用のキーしか知らない受信器を有する。したがって、各販売業者は、自社固有のコマーシャルからデータを解読し、受け取ることしかできない。本発明の別の実施形態では、各販売業者に対するデータは、フレームの複数のブロック全体にわたりデータをスクランブルすることにより暗号化することができる。各受信器は、それに関連付けられた販売業者に対するスクランブル・パターンだけを知っている。
コマーシャルの開始を示すコードの最初の出現を監視することは、連続して、またはコマーシャルの放送が予想される時間窓内で実行することができる。
本発明の一態様により、一グループの複数のフレーム全体にわたり単にデータを反復し、次いでビット・マッパー123(図1)を使用するのではなく、ブロックのクロミナンス部分の平均値に加算される量は、当該ブロックの複雑さとそのブロックの予想される量子化レベルに依存するが、これを、ブロックの複雑さがフレームごとに対応する位置で同じ場合でさえ、一グループに対してフレームごとにわずかに変更することができる。本発明の一態様により、行われた変更は、平均値内に電子透かしビットを置くために、平均に加算された値に関しては小さい。このような変更は、ビット・マッパー923(図9)により実行することができる。これにより、受信器でのデータの信頼性を向上させるために有利に利用することのできる、追加符号化利得が提供される。しかし、これを行うことにより、低テクスチャ領域の視覚品質のわずかな低下が生じる場合がある。何故ならば、ブロック内の数ピクセルが、同じ位置のそれらピクセルの先行ピクセルと異なる値を有する場合があるからである。しかし、このような低下はピクセル・レベルなので、この低下は、通常は目立たない。
本発明の一実施形態例では、数グループの3つの時間的に連続したフレームが、同じ電子透かしデータを刻印して送信される。そのグループの中間フレームは、図3に関して上記で説明したように電子透かしが入れられる。この際、当該ブロックの選択されたクロミナンス部分の平均値に加算される量は、図3で決定された値から変更されることはない。
このグループの時間的に最初のフレームも、図3に関して説明したように展開される、当該ブロックの選択されたクロミナンス部分の平均値に、ビット・マッパー923(図9)によって、加算されるべき演算された値、すなわち、オフセット・バイアスを有する。しかし、本発明の一態様により、バイアス、例えば、平均値内に電子透かしビットを入れるために平均に加算される値の絶対値の、4分の1、または好適には2分の1が、電子透かしデータを伝えるために選択されたクロミナンス部分の演算された平均値にさらに加算される。したがって、例えば、平均値内に電子透かしビットを入れるために平均値に1つが加算される場合、平均値には2分の1が加算される。これは、1ブロックに64ピクセルある場合、当該ブロックのすべてのピクセルの選択されたクロミナンス部分の値の合計に32を加算することと言い換えられる。したがって、加算器133は、バイアスを加算していない場合よりも、高い値を受け取ることになる。同様に、別の実施例として、平均値内に電子透かしビットを入れるために平均値に−4が加算される場合、平均値に加算される値の絶対値の2分の1が利用されるならば、これは、1ブロックに64ピクセルある場合、当該ブロックのすべてのピクセルの選択されたクロミナンス部分の値の合計に128を加算することと言い換えられる。
加算されるバイアス量、例えば32は、それらの輝度変動に基づいて、様々なピクセル全体に分散されることに留意されたい。また、このようなバイアスの加算は、それを安全な範囲に移動するために、平均に加算されるいかなる値とも無関係である。したがって、平均値は、安全な範囲から外れる可能性がある。しかし、安全な範囲外に移動することによって誤りが発生する可能性の増加は、バイアスを利用することによって生じる結果的に得られた符号化利得によるオフセットよりも大きい。
このグループの時間的に最後のフレームは、図3に関して説明したように開発される、当該ブロックの選択されたクロミナンス部分の平均値から、ビット・マッパー923(図9)によって、演算された値、すなわち、オフセット・バイアスを減算させる。しかし、本発明の一態様により、バイアス、例えば、平均値内に電子透かしビットを入れるために平均に加算される値の絶対値の、4分の1、または好適には2分の1が、電子透かしデータを伝えるために選択されたクロミナンス部分の演算された平均値からさらに減算される。したがって、例えば、平均値内に電子透かしビットを入れるために平均値に−3が加算される場合、平均値からは、−3の絶対値の2分の1、すなわち1.5が減算される。これは、1ブロックに64ピクセルある場合、当該ブロックのすべてのピクセルの選択されたクロミナンス部分の値の合計から96を減算することと言い換えられる。したがって、加算器133は、バイアスを減算していない場合よりも、低い値を受け取ることになる。同様に、別の実施例として、平均値内に電子透かしビットを入れるために平均値に2が加算される場合、平均値から2の絶対値の2分の1、すなわち1が減算される。これは、1ブロックに64ピクセルある場合、当該ブロックのすべてのピクセルの選択されたクロミナンス部分の値の合計から64を減算することと言い換えられる。
減算されるバイアス量、例えば32の損失は、それらの輝度変動に基づいて、様々なピクセル全体に分散されることに留意されたい。さらに、このようなバイアスの減算は、それを安全な範囲に移動するために、平均に加算されるいかなる値とも無関係である。したがって、平均値は、安全な範囲から外れる可能性がある。しかし、安全な範囲外に移動することによって誤りが発生する可能性の増加は、結果的に得られる符号化利得によるオフセットよりも大きい。
これがどのように機能するかを考える1つの方法は、図5を参照することである。上記で説明したように、安全な範囲の複数ある外側の境界線のうちの1つに達するために、バイアス量を考慮せずに、ブロックの選択されたクロミナンス部分の平均値に対して、しばしば丁度十分な量が加算または減算される。したがって、いかなるバイアスの前にでも、安全な範囲の境界線の上または付近に多くのフレームがある。何も加算または減算されない中間フレームは、境界線の真上に残る。わずかなバイアスが加算されるフレームは、安全な範囲内でより良い位置に配置されるようにわずかに移動しても、安全な範囲外にわずかに移動してもよい。わずかなバイアスが減算されるフレームは、同バイアスが加算されるフレームと反対方向に移動する。したがって、最悪の場合、3つのフレームのグループの場合、1つは安全な範囲内にあり、1つは安全な範囲の境界線上にあり、1つは安全な範囲のわずか外にあることになる。この結果、複数の値が独立して分散することになる。
本発明のバイアスの効果は、MPEG様符号化によって実行される量子化と、MPEG量子化解除(逆量子化、dequantization)中に加算される別個のMPEGバイアスにより、さらに増幅させることができる。これは、連続するフレームを介して同じビットが送信される場合でさえ、連続するフレーム内に同様に配置されたブロックに対して受け取ったデータ値に大きな差を生じさせる場合がある。
例えば図10に示すような受信器で、各フレームから抽出したデータには、フレームごとにあると信じられる品質レベルに基づいて組み合わせる最大レートを適切に使用して、例えばフレーム重み付けユニット1027で重み付けされる。この目的のために、シーケンス・プロセッサ1025は、フレーム重み付けユニット1027に、a)どのフレームが同じグループに属するかをフレーム重み付け1027が知ることができるための、フレーム同期化情報と、b)各フレームの同期化パターンの誤り数を供給することができる。受け取ったフレームにどれだけ多くの誤りがあると信じられるかに基づいて品質レベルが決定される。これは、シーケンス・プロセッサ1025によって抽出される際に、そのフレームに関して予想される同期化パターンにある誤り数に基づいて決定することができる。表1は、同期化パターンごとの誤り数と、その同期化パターンの誤り数などにより、フレームに対して適切なものとして経験的に導かれた、それぞれの重みを示す。すなわち、各各フレームから抽出したデータの値は、組合せ処理の一部としてそれに関連付けられた重みにより重み付けされるソフト・データとして扱うことができる。
重みに基づいて、連続するフレームの対応するブロック位置に対する同じデータ・ビットの複数のインスタンスが抽出され、組み合わされて単一の受信ビットを形成する。これは、次の演算によって達成することができる。
上式で、
bit_outは、3つのフレームのグループに対する最終出力ビットであり、
w
1、w
2、及びw
3は、時間フレームの第1、第2、及び第3のそれぞれに対する重みであり、
bit
1、bit
2、及びbit
3は、時間フレームの第1、第2、及び第3の同様に配置されたブロックからのビットであり、
nは、ソフト・デコーダー入力精度のビット数である。
ソフト情報を最大限に活用するために、チャンネル・デコーダー1021は、ソフト・データ・ビット、すなわち、ソフト・デコーダー入力精度によりその範囲が異なる、非バイナリ数としてそれぞれが表されるデータ・ビットを利用する、所謂ソフト・デコーダーである。例えば、8ビット入力精度ソフト・デコーダーは、0と255の間の値で動作する。この目的のために、受け取ったハード・ビットの重み付けされた平均、
には、2
n−1が乗じられ、それによって、重み付けされた平均は、ソフト・デコーダーによって処理可能な適切な精度のソフト値に変換される。
本発明の一態様により、特定フレームの特定された品質が規定の閾値より低い場合、その特定フレームは、電子透かしデータを含まず、そのフレームに対してデータが抽出されないと想定することができる。
当業者は、どのフレームが値を加算するか、どれがそれを減算させるか、どれが変化なしか、加算と減算の両方とも必須か否か、1グループ内のフレーム数、及び加算または減算されるべき値に対して実行されるべき丸め、または結果的に得られた値が実施者の裁量に任されることを容易に理解するだろう。