(57)【特許請求の範囲】
【請求項１】
画像データに含まれる画素の形式をＢＭＰ形式に変換処理した後、ＪＰＥＧ形式に変換処理する形式変換手段（326,330）と、
画像データに埋込データを埋め込む際に、埋込データから得られる埋込量子化値の整数倍と、前記ＪＰＥＧ形式に変換処理した画素データのＤＣＴ係数の差分を計算するＤＣＴ係数調整手段（332）と、
前記差分が既定値以下となるＤＣＴ係数が得られるまで前記形式変換手段と、前記ＤＣＴ係数調整手段とを繰り返す手段と、
前記得られたＤＣＴ係数を用いて画像データに埋込データを埋め込む埋込処理手段と、
前記埋込処理がなされた画像データを量子化処理する量子化手段（304）と
を有する画像処理装置。
【請求項２】
前記埋込処理手段は、
所定の鍵情報と前記画像データとに基づいてハッシュ値を計算するハッシュ値計算手段（300）と、
計算の結果として得られた前記ハッシュ値を、前記画像データに埋め込む埋込処理手段（302）と
を有する請求項１に記載の画像処理装置。
【請求項３】
前記画像データに埋め込まれた埋め込みデータを検出する検出手段（60）
をさらに有する請求項２に記載の画像処理装置。
【請求項４】
前記量子化された画像データを逆量子化する逆量子化手段（422）と、
前記逆量子化された画像データに埋め込まれたハッシュ値を抽出する抽出手段（400）と、
前記画像データと、前記ハッシュ値の計算に用いられた鍵情報とに基づいて、ハッシュ値を計算する計算手段（402）と、
前記抽出されたハッシュ値と前記計算されたハッシュ値とに基づいて、前記量子化された画像データに改ざんが加えられたか否かを検出する改ざん検出手段（404）と
を有する請求項３に記載の画像処理装置。
【請求項５】
画像データに含まれる画素の形式をＢＭＰ形式に変換処理した後、ＪＰＥＧ形式に変換処理する形式変換ステップと、
画像データに埋込データを埋め込む際に、埋込データから得られる埋込量子化値の整数倍と、前記ＪＰＥＧ形式に変換処理した画素データのＤＣＴ係数の差分を計算するＤＣＴ係数調整ステップと、
前記差分が既定値以下となるＤＣＴ係数が得られるまで前記形式変換手段と、前記ＤＣＴ係数調整手段とを繰り返すステップと、
前記得られたＤＣＴ係数を用いて画像データに埋込データを埋め込む埋込処理ステップと、
前記埋込処理がなされた画像データを量子化処理する量子化ステップと
を有する画像処理方法。
【請求項６】
前記埋込処理ステップは、
所定の鍵情報と前記画像データとに基づいてハッシュ値を計算するハッシュ値計算ステップと、
計算の結果として得られた前記ハッシュ値を、前記画像データに埋め込む埋込処理ステップと
を有する請求項５に記載の画像処理方法。
【請求項７】
前記画像データに埋め込まれた埋込データを検出する検出ステップ
をさらに有する請求項６に記載の画像処理方法。
【請求項８】
前記量子化された画像データを逆量子化する逆量子化ステップと、
前記逆量子化された画像データに埋め込まれたハッシュ値を抽出する抽出ステップと、
前記画像データと、前記ハッシュ値の計算に用いられた鍵情報とに基づいて、ハッシュ値を計算する計算ステップと、
前記抽出されたハッシュ値と前記計算されたハッシュ値とに基づいて、前記量子化された画像データに改ざんが加えられたか否かを検出する改ざん検出ステップと
を有する請求項７に記載の画像処理方法。
【請求項９】
画像データに含まれる画素の形式をＢＭＰ形式に変換処理した後、ＪＰＥＧ形式に変換処理する形式変換ステップと、
画像データに埋込データを埋め込む際に、埋込データから得られる埋込量子化値の整数倍と、前記ＪＰＥＧ形式に変換処理した画素データのＤＣＴ係数の差分を計算するＤＣＴ係数調整ステップと、
前記差分が既定値以下となるＤＣＴ係数が得られるまで前記形式変換手段と、前記ＤＣＴ係数調整手段とを繰り返すステップと、
前記得られたＤＣＴ係数を用いて画像データに埋込データを埋め込む埋込処理ステップと、
前記埋込処理がなされた画像データを量子化処理する量子化ステップと
をコンピュータに実行させるプログラムを記録した記録媒体。
【請求項１０】
前記埋込処理ステップは、
所定の鍵情報と前記画像データとに基づいてハッシュ値を計算するハッシュ値計算ステップと、
計算の結果として得られた前記ハッシュ値を、前記画像データに埋め込む埋込処理ステップと
を有する請求項９に記載の記録媒体。。
【請求項１１】
前記画像データに埋め込まれた埋込データを検出する検出ステップ
をさらに有する請求項１０に記載の記録媒体。
【請求項１２】
前記量子化された画像データを逆量子化する逆量子化ステップと、
前記逆量子化された画像データに埋め込まれたハッシュ値を抽出する抽出ステップと、
前記画像データと、前記ハッシュ値の計算に用いられた鍵情報とに基づいて、ハッシュ値を計算する計算ステップと、
前記抽出されたハッシュ値と前記計算されたハッシュ値とに基づいて、前記量子化された画像データに改ざんが加えられたか否かを検出する改ざん検出ステップと
を有する請求項１１に記載の記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、著作権情報などの認証情報（埋め込みデータ）を埋め込んだ画像データ等を、圧縮のために量子化しても、埋め込まれた認証データが失われないようにした画像処理装置およびその方法に関する。
【０００２】
【従来の技術】
例えば、国際公開ＷＯ９７／４９２３５号公報（文献１）は、ピクセル・ブロック・コーディング（Pixel Block Coding；ＰＢＣ）により、画像データ等のコンテンツデータに著作権情報など（以下、一般的に認証情報あるいは埋め込みデータ等とも記す）を、視覚的に感知できないように埋め込む方式（以下、このようにコンテンツデータに感知できないように認証方法を埋め込む方式を「エレクトロニックウォーターマーキング方式」とも記す）を開示する。
【０００３】
また、国際公開ＷＯ９８／１１６９２８号公報（文献２）は、文献１等に開示されたエレクトロニックウォーターマーキング方式を応用して、画像データの改変を禁止し、著作物を有効に保護する方法を開示する。
また、特開平１０−１６４５４９号公報（文献３）は、文献１等に開示されたエレクトロニックウォーターマーキング方式を改良し、画像データに認証情報を一体不可分に埋め込むことにより、画像データの改変を検出する方法を開示する。
【０００４】
また、これらの文献の他、特開平０９−１５１７４７号公報、特開平１０−８３３１０号公報、特開平１０−１０６１４９号公報、特開平１０−１６１９３３号公報、特開平１０−１６４３４９号公報、特開平１０−２８５５６２号公報、特開平１０−３３４２７２号公報、特開平１０−２４０６２６号公報、特開平１０−２４０１２９号公報（文献４〜１２）等も、エレクトロニックウォーターマーキング方式に関する発明を開示する。
【０００５】
しかしながら、これらの文献に開示された方式は、認証情報を埋め込んだ後の画像データの圧縮符号化を充分に考慮していなかった。つまり、これらの方式により埋め込まれた認証情報が量子化値より少ない場合には、埋め込まれた画像データが量子化の結果、消失してしまう可能性がある。
【０００６】
【発明が解決しようとする課題】
本発明は、上述した従来技術の問題点に鑑みてなされたものであり、圧縮符号化に適した画像処理装置およびその方法を提供することを目的とする。
特定的には、本発明は、認証情報を埋め込んだ後に量子化処理をしても、埋め込まれた認証情報が失われることがない画像処理装置およびその方法を提供することを目的とする。
【０００７】
【課題を達成するための手段】
上記目的を達成するために、本発明にかかる画像処理装置は、所定の処理により加わる誤差によって量子化処理後の値が変化しないように画像データの値を変換する変換手段と、画像データに対して前記所定の処理を行う処理手段と、前記所定の処理がなされた画像データを量子化処理する量子化手段とを有する。
【０００８】
好適には、前記処理手段は、前記画像データを分割し、分割した画像データそれぞれに埋め込みデータを埋め込む埋込処理を行い、前記分割された画像データそれぞれに埋め込まれた埋め込みデータを検出する検出手段をさらに有する。
【０００９】
好適には、前記変換手段は、画像データに含まれる画素それぞれの形式を変換する形式変換手段と、前記量子化処理に用いられる量子化値に基づいて、前記形式が変換された画素データの値を調節処理する調節手段とを有し、前記形式が変換された画素データそれそれが、前記所定の処理により加わる誤差の値により量子化処理後の値が変化しないようになるまで、前記形式変換処理と、前記調節処理とを繰り返す。
【００１０】
好適には、前記処理手段は、前記画像データに対して埋込データを埋め込む埋込処理を前記所定の処理として行う。
【００１１】
好適には、前記処理手段は、所定の鍵情報と前記画像データとに基づいてハッシュ値を計算するハッシュ値計算手段と、計算の結果として得られた前記ハッシュ値を、前記画像データに埋め込む埋込処理手段とを有する。
【００１２】
好適には、前記画像データに埋め込まれた埋込データを検出する検出手段をさらに有する。
【００１３】
好適には、前記量子化された画像データを逆量子化する逆量子化手段と、前記逆量子化された画像データに埋め込まれたハッシュ値を抽出する抽出手段と、前記画像データと、前記ハッシュ値の計算に用いられた鍵情報とに基づいて、ハッシュ値を計算する計算手段と、前記抽出されたハッシュ値と前記計算されたハッシュ値とに基づいて、前記量子化された画像データに改ざんが加えられたか否かを検出する改ざん検出手段とを有する。
【００１４】
また、本発明にかかる画像処理方法は、所定の処理により加わる誤差によって量子化処理後の値が変化しないように画像データの値を変換し、画像データに対して前記所定の処理を行い、前記所定の処理がなされた画像データを量子化処理する。
【００１５】
また、本発明にかかる記録媒体は、所定の処理により加わる誤差によって量子化処理後の値が変化しないように画像データの値を変換する変換ステップと、画像データに対して前記所定の処理を行う処理ステップと、前記所定の処理がなされた画像データを量子化処理する量子化ステップとをコンピュータに実行させるプログラムを記録する。
【００１６】
【発明の実施の形態】
［第１実施形態］
以下、本発明の第１実施形態を説明する。
【００１７】
［改変判定装置１］
図１は、本発明にかかる画像処理方法を実現する画像処理装置１の構成を示す図である。
図１に示すように、画像処理装置１は、ＣＲＴ表示装置あるいは液晶表示装置等の表示装置１００、キーボードおよびマウス等を含む入力装置１０２、ディジタルカメラインターフェースＩＦ（カメラＩＦ）１０４、メモリカードインターフェース（メモリカードＩＦ）１０６、ＭＯ装置およびＣＤ装置等の記憶装置１０８、および、メモリ１１２およびマイクロプロセッサ（ＣＰＵ）１１４等を含むコンピュータ本体（ＰＣ本体）１１０から構成され、必要に応じて、さらに通信装置１１６が付加される。
つまり、画像処理装置１は、一般的なコンピュータに、カメラＩＦ１０４およびメモリカードＩＦ１０６を付加した構成を採る。
【００１８】
画像処理装置１は、これらの構成部分により、ディジタルカメラ１４０が撮影した画像データ（ＪＰＥＧ、ＢＭＰあるいはＹＵＶなど形式を問わない）を、カメラＩＦ１０４を介して受け入れる。あるいは、画像処理装置１は、ディジタルカメラ１４０がメモリカード１４２に記録した画像データを、メモリカードＩＦ１０６を介して受け入れる。
【００１９】
さらに、画像処理装置１は、光磁気ディスク（ＭＯ）あるいはコンパクトディスク（ＣＤ）等の記録媒体１２０に記録されて記憶装置１０８に供給される埋込・検出プログラム２（図２等を参照して後述する）を、メモリ１１２にロードして実行し、受け入れた画像データに対して、量子化処理しても失われることがないように電子透かし（埋め込みデータ）の埋め込み処理を行う。
【００２０】
また、画像処理装置１は、埋込・検出プログラム２を実行し、画像データに埋め込まれた電子透かしを検出し、画像データに対して改ざんが加えられたか否か等を判定する。
【００２１】
［埋込・検出プログラム２］
まず、埋込・検出プログラム２の構成および動作を説明する。
図２は、図１に示した画像処理装置１が実行し、本発明にかかる画像処理方法を実現する埋込・検出プログラム２の構成を示す図である。
図２に示すように、埋込・検出プログラム２は、ＯＳ８０、埋込・抽出部３、鍵情報データベース（ＤＢ）２２および画像データベース（ＤＢ）２４から構成される。
埋込・抽出部３は、埋込パラメータＤＢ２０、制御部２６、埋込部３０および抽出部４０から構成される。
【００２２】
［ＯＳ８０］
ＯＳ８０は、例えば、ＯＳ／２（ＩＢＭ社）あるいはウィンドウズ（マイクロソフト社）等のオペレーティングシステムソフトウェアであって、埋込・検出プログラム２の各構成部分の実行制御を行う。
【００２３】
［制御部２６］
埋込・抽出部３の制御部２６は、例えば、表示装置１００に操作用のＧＵＩ画像（図示せず）を表示し、表示されたＧＵＩ画像に対するユーザの操作を受け入れ、必要に応じて、受け入れた操作を示す操作データを、埋込・検出プログラム２の各構成部分に供給する。
また、制御部２６は、受け入れたユーザの操作に応じて、埋込・検出プログラム２の各構成部分の動作を制御する。
【００２４】
［画像ＤＢ２４］
画像ＤＢ２４は、埋込部３０が電子透かしを埋め込んだ圧縮画像データ（ＪＰＥＧデータ）を記憶装置１０８に挿入された記録媒体１２０、あるいは、メモリカードＩＦ１０６に挿入されたメモリカード１４２に記憶・管理し、記憶・管理した画像データを読み出して抽出部４０に対して出力する。
【００２５】
［鍵情報ＤＢ２２］
鍵情報ＤＢ２２は、画像ＤＢ２２が管理するＪＰＥＧデータと、埋込部３０が、このＪＰＥＧデータへ電子透かしを埋め込む際に、乱数を発生させるために用いる鍵（例えば６４ビットの数値）とを対応付けた鍵情報を記憶装置１０８等に記憶・管理し、記憶・管理した鍵情報を読み出して埋込部３０および抽出部４０に対して出力する。
【００２６】
［埋込パラメータＤＢ２０］
埋込パラメータＤＢ２０は、電子透かしの埋め込みに用いるパラメータを記憶・管理し、埋込部３０に対して出力する。
【００２７】
［埋込部３０］
図３は、図２に示した埋込部３０の構成を示す図である。
図４は、注目ＤＣＴ係数を示す図である。
図３に示すように、埋込部３０は、埋込前処理部３２、ハッシュ（Ｈａｓｈ）値計算部３００、ハッシュ値埋込部３０２および出力フォーマット変換部３０４から構成される。
埋込部３０は、これらの構成部分により、まず、各種（ＪＰＥＧ、ＲＧＢ（ビットマップ（ＢＭＰ））および輝度・色差（ＹＵＶ）等）の形式の画像データから、予め定められたハッシュ関数とキーとを用いて、注目するＤＣＴ（図４）係数のハッシュ値を計算する。
【００２８】
さらに、埋込部３０は、計算の結果として得たハッシュ値を、画像データ自体に対して電子透かしの手法を用いて埋め込む、あるいは、画像データのヘッダ部分に埋め込む等の方法により、画像データに付加する。
なお、埋込部３０を画像データのＹ，Ｕ，Ｖ各成分から得られたＤＣＴ係数に対して、電子透かしの手法を用いてハッシュ値を埋め込むように構成することも、Ｙ，Ｃｒ，Ｃｂ各成分から得られたＤＣＴ係数に対してハッシュ値を埋め込むように構成することも可能であるが、説明の明確化のために、以下、埋込部３０が、計算して得たハッシュ値を、画像データのＹ，Ｕ，Ｖ各成分から得られたＤＣＴ係数に対して埋め込む場合を具体例とする。
【００２９】
［埋込前処理３２］
図５は、図３に示した埋込前処理部３２の構成を示す図である。
また、図５に示すように、埋込パラメータＤＢ２０（図２）の埋込前処理３２は、フォーマット認識部３２０、逆量子化部（Ｑ-1）３２２、量子化値計算部３２４、ＪＰＥＧ’／ＢＭＰ変換部３２６、ＹＵＶ／ＢＭＰ変換部３２８、ＢＭＰ／ＪＰＥＧ’変換部３３０およびＤＣＴ係数調整部３３２から構成される。
【００３０】
埋込部３０は、これらの構成部分により、ＤＣＴ変換してハッシュ値を埋め込んで電子透かしを埋め込み、さらに、圧縮符号化してＪＰＥＧ形式の圧縮画像データ（ＪＰＥＧデータ）とした場合であっても、埋め込んだハッシュ値が失われない状態（安定状態）になるように、画像データ（ＢＭＰデータ）に対して埋込前処理を行う。
【００３１】
［フォーマット認識部３２０］
埋込前処理３２において、フォーマット認識部３２０は、入力された各種形式の画像データ（ＪＰＥＧデータ，ＢＭＰデータ，ＹＵＶ形式の画像データ（ＹＵＶデータ）等）のデータフォーマットを識別し、入力された画像データがいずれの形式であるかを判断し、ＪＰＥＧデータが入力された場合には、入力されたＪＰＥＧデータを復号部３２２に対して出力し、ＢＭＰデータが入力された場合には、入力されたＢＭＰデータをＢＭＰ／ＪＰＥＧ’変換部３３０に対して出力し、ＹＵＶデータが入力された場合には、入力されたＹＵＶデータをＹＵＶ／ＢＭＰ変換部３２８に対して出力する。
【００３２】
さらに、フォーマット認識部３２０は、ＢＭＰデータにおいてハッシュ値を埋め込む領域を、例えば１６×１６画素構成のＭＣＵ単位で指定する領域指定データＡを受け、領域指定データＡが示すＭＣＵそれぞれに含まれるＤＣＴ係数が安定状態であるか否かを示すＭＣＵテーブルＴ（Ｔ［Ｘ］［Ｙ］、例えば、ＢＭＰデータが７２０×４８０画素構成である場合にはＸ＝４５，Ｙ＝３０）を作成する。
【００３３】
なお、領域指定データＡにより指定される領域は、ＪＰＥＧ’／ＢＭＰ変換部３２６およびＹＵＶ／ＢＭＰ変換部３２８による変換処理の対象とはならない。画質に与える影響を最小にすることができるという意味で、領域指定データＡを、画面の端の領域を指定するように作成すると、そうでない場合に比べてより好適である。
フォーマット認識部３２０は、作成したＭＣＵテーブルＴを、ＪＰＥＧデータ、ＢＭＰデータおよびＹＵＶデータそれぞれに付して、復号部３２２、ＢＭＰ／ＪＰＥＧ’変換部３３０およびＹＵＶ／ＢＭＰ変換部３２８にそれぞれに対して出力する。
【００３４】
上述のように、ＭＣＵテーブルＴは、例えば４５×３０のマトリクス形式で表され、ＭＣＵテーブルＴの各要素Ｔ［Ｘ］［Ｙ］それぞれは、例えば、対応するＭＣＵのＤＣＴ係数データが安定状態である場合には値１、安定でない場合には値０を採る。
フォーマット認識部３２０は、下式１に示すように、ＭＣＵテーブルＴの初期値として、領域指定データＡが示すＭＣＵに対応するＭＣＵテーブルＴの要素Ｔ［Ｘ］［Ｙ］の値を１とし、これら以外のＭＣＵテーブルの要素Ｔ［Ｘ］［Ｙ］の値を０とする。
【００３５】
【数１】
0003683766.tif 000002
【００３６】
［復号部３２２］
ＪＰＥＧデータは、ＤＣＴ係数に対して量子化処理およびハフマン（Huffman）符号化処理を施すことにより生成される。復号部３２２は、まず、フォーマット認識部３２０から入力されたＪＰＥＧデータをハフマン復号する。
また、復号部３２２は、復号したＪＰＥＧデータのＹ，Ｕ，Ｖ各成分からそれらの量子化値ｑ［ｋ］を計算し、埋込量子化値計算部３２４に対して出力する。また、復号部３２２は、計算の結果として得た量子化値ｑ［ｋ］それぞれを用いて、ハフマン復号したＪＰＥＧデータのＹ，Ｕ，Ｖ各成分を逆量子化して、Ｙ，Ｕ，Ｖ各成分のＤＣＴ係数ＪＰＥＧ’を生成し、ＭＣＵテーブルＴと対応づけてＪＰＥＧ’／ＢＭＰ変換部３２６に対して出力する。
【００３７】
［ＹＵＶ／ＢＭＰ変換部３２８］
ＹＵＶ／ＢＭＰ変換部３２８は、ＹＵＶデータを、下式２に示すようにＢＭＰデータ（ＲＧＢ）に変換し、ＭＣＵテーブルＴと対応付けてＢＭＰ／ＪＰＥＧ’変換部３３０に対して出力する。
なお、ＹＵＶ／ＢＭＰ変換部３２８によりＹＵＶデータをＢＭＰデータに変換する理由は、ＹＵＶデータのＹ，Ｕ，Ｖ各成分が、オーバーフローあるいはアンダーフローを起こしていなくても（０≦Ｙ＜２５６，−１２８≦Ｕ，Ｖ＜１２８）、ＢＭＰデータに変換した場合に、ＢＭＰデータのＲ，Ｇ，Ｂ各成分にオーバーフローあるいはアンダーフローが生じる場合があるので、このような場合においても、最終的に得られるＤＣＴ係数を安定状態とすることができるようにするためである。
【００３８】
【数２】
R = (int)(Y + V*1.4020)
G = (int)(Y - U*0.3441 - V*0.7139)
B = (int)(Y + U*1.7718 - V*0.0012)                （２）
但し、
R = R>255 ? 255 : R<0 ? 0 : R
G = G>255 ? 255 : G<0 ? 0 : G
B = G>255 ? 255 : B<0 ? 0 : B
ここで、A =  B ? C : Dは、C codeのものと同じで、
A= C (if B is TRUE)
A= D (if B is NOT TRUE)
である。
【００３９】
［ＪＰＥＧ’／ＢＭＰ変換部３２６］
ＪＰＥＧ’／ＢＭＰ変換部３２６は、復号部３２２およびＤＣＴ係数調整部３３２から入力されるＤＣＴ係数ＪＰＥＧ’の内、領域指定データＡが示す領域以外のＭＣＵのＹ，Ｕ，Ｖ成分それぞれのＤＣＴ係数を逆ＤＣＴ（ＩＤＣＴ）処理する。
ＪＰＥＧ’／ＢＭＰ変換部３２６は、さらに、ＩＤＣＴ処理の結果として選られたＹ，Ｕ，Ｖ成分を、ＹＵＶ／ＢＭＰ変換部３２８と同様に上記式２に従ってＢＭＰデータに変換し、ＭＣＵテーブルＴと対応づけてＢＭＰ／ＪＰＥＧ’変換部３３０に対して出力する。
【００４０】
［ＢＭＰ／ＪＰＥＧ’変換部３３０］
ＢＭＰ／ＪＰＥＧ’変換部３３０は、ＪＰＥＧ’／ＢＭＰ変換部３２６、フォーマット認識部３２０またはＹＵＶ／ＢＭＰ変換部３２８から入力されるＢＭＰデータの内、同じくこれらから入力されるＭＣＵテーブルＴの値０の要素Ｔ［Ｘ］［Ｙ］（Ｔ［Ｘ］［Ｙ］＝０）に対応するＭＣＵに含まれるＢＭＰデータのＲ，Ｇ，Ｂ成分それぞれを、下式３に示すように、Ｙ，Ｕ，Ｖ各成分に変換し、さらに、変換の結果として選られたＹ，Ｕ，Ｖ各成分を、８×８構成のＤＣＴブロックごとにＤＣＴ処理してＤＣＴ係数ＪＰＥＧ’を生成する。
つまり、ＢＭＰ／ＪＰＥＧ’変換部３３０は、入力されるＢＭＰデータの内、まだ安定状態になっていないＢＭＰデータをＤＣＴ係数ＪＰＥＧ’に変換する。ＢＭＰ／ＪＰＥＧ’変換部３３０は、変換処理の結果として得られたＤＣＴ係数ＪＰＥＧ’を、ＭＣＵテーブルＴと対応づけてＤＣＴ係数調整部３３２に対して出力する。
【００４１】
【数３】
Y =  R*0.2990 + G*0.5870 +B*0.1140
U = -R*0.1684 - G*0.3316 +B*0.5000
V =  R*0.5000 - G*0.4187 -B*0.0813              （３）
【００４２】
［埋込量子化値計算部３２４］
埋込量子化値計算部３２４は、領域指定データＡにより示されるＤＣＴ係数（注目ＤＣＴ係数）ｄｃｔ＿Ｃｏｅｆｆｉの埋込量子化値ｑ＿ｅｍｂ［ｋ］を算出する。
さらに埋込量子化値計算部３２４の処理を詳細に説明する。
埋込量子化値計算部３２４は、注目ＤＣＴ係数ｄｃｔ＿ｃｏｅｆｆｉおよびデコーダ最大計算誤差δを、埋込パラメータＤＢ２０（図２）から受ける。
【００４３】
［注目ＤＣＴ係数ｄｃｔ＿ｃｏｅｆｆｉ］
ここでは、注目ＤＣＴ係数ｄｃｔ＿ｃｏｅｆｆｉを詳細に説明する。
注目ＤＣＴ係数ｄｃｔ＿ｃｏｅｆｆｉは、電子透かしの埋め込みに用いる８×８画素構成のＤＣＴブロックに含まれる１つ以上のＤＣＴ係数であり、Ｙ，Ｕ，Ｖ成分のいずれのＤＣＴ係数であってもよいが、以下、説明の明確化のために、注目ＤＣＴ係数ｄｃｔ＿ｃｏｅｆｆｉとしてＹ成分のＤＣＴ係数の内の直流成分ｄｃｔ＿ｃｏｅｆｆｉ（０，０）を用い、ハッシュ値の埋め込みのために、同じくＹ成分のＤＣＴ係数の内の（１，１），（１，２），（２，１），（２，２）を利用する場合を具体例とする。
【００４４】
［デコーダ最大計算誤差δ］
ここでは、デコーダ最大計算誤差δを詳細に説明する。
また、ハッシュ値を埋め込んだＪＰＥＧデータを伸長復号処理するデコーダが違う場合には、システム間でＩＤＣＴ処理の結果に誤差が生じる可能性がある。デコーダ最大計算誤差δは、埋め込み量子化値:システム(decoder)の違いから生じるＩＤＣＴ処理の誤差の２倍の値に設定される。
なお、ＩＤＣＴ処理の誤差は、ほとんどの場合、２以下である。従って、デコーダ最大計算誤差δの設定値は４以上あれば充分である。以下、デコーダ最大計算誤差δの値を、充分に大きい１２に設定する場合を具体例として説明する。
【００４５】
埋込量子化値計算部３２４は、埋込前処理３２に入力された画像データがＪＰＥＧデータである場合には、復号部３２２から入力された量子化値ｑ［ｋ］を、ＪＰＥＧデータでない場合には、例えば、入力装置１０２を介してユーザが入力する量子化値ｑ［ｋ］を用いて以下の処理を行う。
なお、埋込量子化値計算部３２４は、例えば、埋込前処理３２に入力された画像データがＪＰＥＧデータでなく、しかも、入力装置１０２から量子化値ｑ［ｋ］の入力がない場合には、量子化値ｑ［ｋ］の全ての要素の値をデコーダ最大計算誤差δに設定する（ｑ［ｋ］＝δ）。
【００４６】
次に、埋込量子化値計算部３２４は、領域指定データＡが示す注目ＤＣＴ係数ｄｃｔ＿ｃｏｅｆｆｉそれそれに対応する埋込量子化値ｑ＿ｅｍｂ［ｋ］（ｋ（｛ｄｃｔ＿ｃｏｅｆｆｉ｝））を、下式４に示すように計算する。
なお、埋込量子化値ｑ＿ｅｍｂ［ｋ］は、ハッシュ値を埋め込んだＤＣＴ係数を量子化処理するために用いられる量子化値であって、量子化値ｑ［ｋ］の整数倍の値を採る。
【００４７】
【数４】
q_emb[k] = (int((δ-1)/q[k]+1)*q[k]          （４）
【００４８】
なお、量子化値ｑ［ｋ］がデコーダ最大計算誤差δよりも大きい場合（ｑ［ｋ］≧δ）、埋込量子化値ｑ＿ｅｍｂ［ｋ］と量子化値ｑ［ｋ］とは一致する（ｑ＿ｅｍｂ［ｋ］＝ｑ［ｋ］）。
また、埋込前処理３２にＪＰＥＧデータが入力される場合、量子化値ｑ［ｋ］の変更は不要である。
【００４９】
［ＤＣＴ係数調整部３３２］
ＤＣＴ係数調整部３３２は、ＪＰＥＧ’／ＢＭＰ変換部３２６、ＢＭＰ／ＪＰＥＧ’変換部３３０およびＤＣＴ係数調整部３３２により構成されるループ処理を制御し、このループ処理を所定の回数（例えば５回）繰り返して、ＢＭＰ／ＪＰＥＧ’変換部３３０から入力された注目ＤＣＴ係数ｄｃｔ＿ｃｏｅｆｆｉが、埋込量子化値ｑ＿ｅｍｂ［ｋ］の整数倍に近い値をとるように、つまり、注目ＤＣＴ係数ｄｃｔ＿ｃｏｅｆｆｉが安定状態になるようにそれらの値を調整する。
【００５０】
以下、さらにＤＣＴ係数調整部３３２の処理を詳細に説明する。
ＤＣＴ係数調整部３３２は、埋込パラメータＤＢ２０（図２）から安定化閾値Δを受ける。
安定化閾値Δは、注目ＤＣＴ係数ｄｃｔ＿ｃｏｅｆｆｉが、埋込量子化値ｑ＿ｅｍｂ［ｋ］の整数倍に近い値になっているか否かを判断するために用いられる閾値であって、例えばデコーダ最大計算誤差δよりも小さい値、例えば１程度の値に設定される（δ＞Δ＝１．０）。
【００５１】
ＤＣＴ係数調整部３３２は、次に、領域指定データＡにより示されるＭＣＵのＤＣＴブロックそれぞれに含まれる各ＤＣＴ係数が、下式５を満たしているか否かを判断する。
ＤＣＴ係数調整部３３２は、判断対象のＤＣＴブロックに含まれるＤＣＴ係数のすべてが下式５を満たしている場合には、このＤＣＴブロックに対応するＭＣＵテーブルＴの要素Ｔ［Ｘ］［Ｙ］の値を安定状態を示す１とし（Ｔ［Ｘ］［Ｙ］＝１）、これ以外の場合には０とする（Ｔ［Ｘ］［Ｙ］＝０）。
【００５２】
【数５】
|c[k] - coeff_emb[k]*q_emb[k]| < Δ/2          （５）
【００５３】
ＤＣＴ係数調整部３３２は、全てのＭＣＵの全てのＤＣＴブロックに含まれるＤＣＴ係数が式５を満し、安定状態になっている場合には、注目ＤＣＴ係数ｄｃｔ＿ｃｏｅｆｆｉおよびその他のＤＣＴ係数を画像ＤＢ２４（図２）に対して出力し、安定状態になっていない場合には、安定状態になっていないＤＣＴ係数が安定状態になるように調節する。
なお、ＤＣＴ係数調整部３３２は、ｃｏｅｆｆｉ＿ｅｍｂ［ｋ］を、領域指定データＡが示す注目ＤＣＴ係数ｄｃｔ＿ｃｏｅｆｆｉとして、それ以外のＤＣＴ係数は、量子化処理した値（ｃｏｅｆｆｉ［ｋ］＝ｃ［ｋ］／ｑ［ｋ］）を、画像ＤＢ２４（図２）に対して出力する。
【００５４】
［ＤＣＴ係数の安定化］
ここでは、ＤＣＴ係数調整部３３２がＤＣＴ係数を安定状態にする処理（安定化処理）を詳細に説明する。
ＤＣＴ係数調整部３３２は、値が０のＭＣＵテーブルＴの要素Ｔ［Ｘ］［Ｙ］に対応するＭＣＵのＤＣＴ係数を、下式６に示すように変換する。
【００５５】
【数６】
0003683766.tif 000003
【００５６】
式６において、αは０〜０．５の間の値を採る数値であって（０≦α≦０．５）、αの値を大きくすると、安定化処理が再生画像に与える変化を小さくすることができる。しかしながら、変換後のcoeff[k]の値の絶対値は常に大きくなり、安定状態にした後のＤＣＴ係数を変換して得られるＢＭＰデータのＲ，Ｇ，Ｂ成分の値に近づくので、ＢＭＰデータのＲ，Ｇ，Ｂ成分の値にオーバーフロー・アンダーフローが生じやすい。
一方、αを小さくすると、変換後のcoeff[k]の値の絶対値は常に小さくなり、安定状態にした後のＤＣＴ係数を変換して得られるＢＭＰデータのＲ，Ｇ，Ｂ成分それぞれの値は１２８に近づくので、ＢＭＰデータのＲ，Ｇ，Ｂ成分の値にオーバーフロー・アンダーフローが生じにくい。
【００５７】
このようなαの性質を考慮し、安定化処理が再生画像に与える影響を極力少なくし、かつ、安定化したＤＣＴ係数を変換して得られるＢＭＰデータにオーバーフロー・アンダーフローが生じないようにするために、ＤＣＴ係数調整部３３２は、ＪＰＥＧ’／ＢＭＰ変換部３２６、ＢＭＰ／ＪＰＥＧ’変換部３３０およびＤＣＴ係数調整部３３２によるループ処理を１回行うごとに、αの値を減らしてゆくようにする。
【００５８】
例えば、ＪＰＥＧ’／ＢＭＰ変換部３２６、ＢＭＰ／ＪＰＥＧ’変換部３３０およびＤＣＴ係数調整部３３２によるループ処理の回数をｌｏｏｐｃｏｕｎｔとすると、ＤＣＴ係数調整部３３２は、下式７に示すように、ループ処理の回数に応じてαの値を少なくする。
【００５９】
【数７】
0003683766.tif 000004
【００６０】
ＤＣＴ係数調整部３３２は、上述した調整を、値が０のＭＣＵテーブルＴの要素Ｔ［Ｘ］［Ｙ］に対応するＭＣＵに含まれるＤＣＴブロック全てのＤＣＴ係数に対して行い、ＪＰＥＧ’／ＢＭＰ変換部３２６に対して出力する。
【００６１】
なお、ごくまれに、ＪＰＥＧ’／ＢＭＰ変換部３２６における処理でオーバーフロー・アンダーフローが生じていて、ループ処理を５回繰り返した後でも、式５の条件を満たすことがないＤＣＴ係数が存在することがある。
このような場合に対応するために、ＤＣＴ係数調整部３３２は、ループ処理を５回繰り返した後は、さらに、ＤＣＴ係数の値が式５の条件を満たすようになるまでループ処理を１回ずつ追加して行い、ループ処理を１回追加するたびに、coeff_emb[k]の絶対値を１（但し、何らかの制約がある場合、その制約を満たす１以上の最小数）づつ減らす。
このように、ループ処理を追加し、ループ処理１回ごとにcoeff_emb[k]の絶対値を１（但し、何らかの制約がある場合、その制約を満たす１以上の最小数）づつ減らすことにより、ＤＣＴ係数調整部３３２は、画像の変化を極力少なくしつつ、ループ処理を有限回数に抑える。
【００６２】
以上説明した埋込前処理３２の処理により、図６（Ａ）に示すように分布していた注目ＤＣＴ係数ｄｃｔ＿ｃｏｅｆｆｉの値は、図６（Ｂ）に示すように、埋込量子化値ｑ＿ｅｍｂ［ｋ］の整数倍に近い値を採るようになり、埋込量子化値ｑ＿ｅｍｂ［ｋ］の整数倍を中心とする広がりσ（σ＜δ）の範囲内に分布するようになる。
【００６３】
［ハッシュ値計算部３００］
再び図３を参照する。
以上説明した埋込前処理３２（図３，４）の処理により、｛ｄｅｃ＿ｃｏｅｆｆｉ｝の全てのＤＣＴ係数が埋め込みの量子化値ｑ＿ｅｍｂ［ｋ］の整数倍の近傍に来て安定化している。即ち、上述した式５を満たしている。問題は、埋込前処理３２の出力から得られるＪＰＥＧデータを、ＪＰＥＧ’／ＢＭＰ変換部３２６（図５）以外ＢＭＰエンコーダにより処理して式５に示した性質が保てるか否かである。
例えば、埋込前処理３２（図３，４）の出力データをｉｎｐｕｔ．ｂｍｐ、え４４以外のエンコーダで作られるＢＭＰデータをｉｎｐｕｔ２．ｂｍｐとすると、これらの違いは、ＪＰＥＧデータをｉＤＣＴし、さらにＹＵＶデータに変換し、これをＢＭＰデータに変換する処理における計算の誤差であり、この誤差のために、２つのｉｎｐｕｔ．ｂｍｐとｉｎｐｕｔ２．ｂｍｐとが、下式８に示すように、量子化値を跨いでしまう可能性が高い。即ち、ｉｎｐｕｔ．ｂｍｐから導かれたＤＣＴ係数ｃ２［ｋ］が、下式８を満たす可能性は小さい。
【００６４】
【数８】
err[k] = |c2[k] - coeff_emb[k]*q_emb[k]|>=q_emb[k]/2 (>=δ/2)   （８）
【００６５】
例えば、あるＢＭＰエンコーダでｉＤＣＴ処理結果（ｉＤＣＴデータ）あるいはＹＵＶデータをＢＭＰデータに変換する処理を小数点第１位まで用いて計算する際に、ｉＤＣＴデータの計算誤差が最悪０．０５あり、ｉＤＣＴ処理で、係数１つにつき６４回の加算または減算を行うとすると、計算誤差は最悪３．３５（＝０．０５×６３＋３）となるが、上述したように、最大誤差δを１２より大きい値にとれば、上述した式８を満たすことはない。
【００６６】
逆に、ｉＤＣＴ等の計算で少数第１位以上の誤差があるようなシステムは、誤差が大きすぎで、単なる変換だけで画像が大きく変化してしまい、使用に耐えないシステムと言える。多数のシステムを調べると、最悪で err[k]=3.0程度である。
よって、全ての｛ｄｃｔ＿ｃｏｅｆｆｉ｝に対して全てのｑ＿ｅｍｂ［ｋ］による量子化値ｃｏｅｆｆ＿ｅｍｂ［ｋ］は、ＪＰＥＧデータをＢＭＰデータに変換する処理に耐えられることになる。そのため、ｃｏｅｆｆ＿ｅｍｂ［ｋ］のハッシュ値を取り、その結果をＪＰＥＧデータのヘッダ部分に書き込むか、画像自体に電子透かしで埋めておけば良い。
【００６７】
埋め込みに使われる領域Aを除き、鍵DBからえられる、埋め込み者、検出者で共通の鍵Ｋを使い、ハッシュ値ＤＣＴ＿ｈａｓｈを、下式９に示すように計算する。
【００６８】
【数９】
DCT_hash = hash(K, coeff_emb[k])        （９）
【００６９】
なお、式９におけるｈａｓｈ（  ）としては、ＭＤ５などがある。また、鍵Ｋとしては、６４ビット鍵、ＤＣＴ＿ｈａｓｈは６４ビット長が妥当な長さである。
【００７０】
［ハッシュ値埋込部３０２］
ハッシュ値埋込部３０２は、ハッシュ値計算部３００で選られたＤＣＴ＿ｈａｓｈを画像に埋め込む。画像に埋め込むアルゴリズムは何を用いてもよいが、画像を痛めない方法としてはＬＳＢ法がよい。
ＬＳＢ法とは、電子透かしをデジタルコンテンツに埋め込む方式の１つで、コンテンツの特徴量のLSB(least significant bit、最下位bit)をある規則に従って変化させることによって、情報を埋め込む。LSBを変化させる理由は、埋め込み後のデジタルコンテンツ（画像、音）の変化が殆ど無い為である。
【００７１】
以下、具体例を挙げて説明する。
埋込パラメータＤＢ２０（図２）から得られる埋め込みに利用するＤＣＴ係数｛ｄｃｔ＿ｃｏｅｆｆｉ｝の要素がｎ個あり、ｈａｓｈ＿ｅｍｂが６４ビットで、１つのサブブロック（８×８画素）にｍビットを埋め込む事を考える(n>=m)。
つまり、埋め込みに６４／ｍ個のサブブロックが必要となる。
【００７２】
ここで、埋め込みによる画質の痛みを極力防ぐ為に、Ａの候補を予め幾つか決めておいて（例：画面の上、下、右、左端の4個所）、そのどこかに埋めて、検出時に全て試すという方法もある。
さて、ここで、｛ｄｃｔ＿ｃｏｅｆｆｉ｝のＬＳＢに埋めたいｂｉｔを埋めていくわけである。
【００７３】
【数１０】
emb_coeff[k] = 2p + emb_bit[k]          （１０）
pはある整数、emb_bit[k]は係数kに埋めたいbit,0 or 1
【００７４】
上式１０を満たすようにｅｍｂ＿ｃｏｅｆｆ［ｋ］を変更後、Ａの領域のみのＤＣＴ係数をＪＰＥＧ’／ＢＭＰ変換部３２６（図５）に入力し、Ａ内の全ての｛ｄｃｔ＿ｃｏｅｆｆｉ｝のＤＣＴ係数が、上式１０を満たしつつ安定になるようにすれば良い。
この場合、常に、emb_coeff[k]の値の絶対値が大きくならない方向に変更していれば、つまりαを小さく取れば、収束は速く、式６が達成できる。式６が達成出来れば、Ａは安定の為、ＢＭＰデータに変換した後も、埋めたビットが変化しない。
【００７５】
［出力フォーマット変換部３０４］
出力フォーマット変換部３０４は、ハッシュ値埋込部３０２の出力結果に対して量子化処理などを行い、入力装置１０２（図１）を介して設定されるユーザ所望の出力フォーマットに変換する。
出力フォーマットがＪＰＥＧの際、｛ｄｃｔ＿ｃｏｅｆｆｉ｝に属するＤＣＴ係数も、ｑ＿ｅｍｂ［ｋ］ではなく、ｑ［ｋ］で量子化する。ｑ［ｋ］で量子化された値ｃｏｅｆｆ［ｋ］は、ｅｍｂ＿ｃｏｄｆｆ［ｋ］，ｑ［ｋ］，ｑ＿ｅｍｂ［ｋ］より、coeff[k] = emb_coeff[k]*q_emb[k]/q[k]によって計算される。
【００７６】
［検出部４０］
以下、検出部４０（図２）を説明する。
埋め込み装置で埋め込まれた画像データを入力し、鍵Ｋより注目するＤＣＴ成分のハッシュ値を計算し、領域Ａに埋め込まれているハッシュ値と比較し、画像自体が改ざんされたかどうかを検出する。
【００７７】
［検出前処理部４２］
図７は、図２に示した検出部４０の構成を示す図である。
図８は、図７に示した検出前処理部４２の構成を示す図である。
検出部４０において、検出前処理部４２は、入力画像より埋め込み量子化値ｑ＿えｍｂ［ｋ］を逆算する。
【００７８】
［フォーマット認識部４２０］
フォーマット認識部４２０は、入力画像のフォーマットを認識し、ＪＰＥＧなら復号部４２２に対して出力し、ＢＭＰ，ＹＵＶならＢＭＰ，ＹＵＶ／ＪＰＥＧ’変換部４２４に対して出力する。
【００７９】
［復号部４２２］
復号部４２２は、入力画像を復号し、Ａを除く画像全体の注目するＤＣＴ成分の係数を逆量子化して、ＪＰＥＧ’画像とする。
【００８０】
［ＢＭＰ，ＹＵＶ／ＪＰＥＧ’変換部４２４］
ＢＭＰ，ＹＵＶ／ＪＰＥＧ’変換部４２４は、入力されたＢＭＰ，ＹＵＶデータをＤＣＴ処理し、ＪＰＥＧ’データに変換する。
【００８１】
［量子化値逆算部４２６］
【００８２】
図９および図１０は、図８に示した量子化値逆算部４２６における埋め込み量子化値逆算処理を示す第１および第２のフローチャートである。
量子化値逆算部４２６は、復号部４２２およびＢＭＰ，ＹＵＶ／ＪＰＥＧ’変換部４２４の出力の注目するＤＣＴ成分ｋ∈｛ｄｃｔ＿ｃｏｅｆｆｉ｝の画像全体での絶対値の最大係数をｍａｘ［ｋ］として、各々の仮定した量子化値ｉの回りにどのくらいＤＣＴ係数が集まっているかのヒストグラムからに示すように計算する。
図９に示すように、フォーマット認識部４２０への入力フォーマットがＪＰＥＧの場合、ｉ＝ｑ［ｋ］＊ｎ（ｎ＝１，２，．．．．）に対してのみ調べれば良い。
【００８３】
図９に示した処理により求められたヒストグラム［ｉ］の最大値を与えるｉを、ｍａｘ＿ｉとおき、図１０に示した処理にしたがって、ｑ＿ｅｍｂ［ｋ］を決定する。
図１０では、図９でｑ＿えｍｂ［ｋ］が、ｍａｘ＿ｉの倍数であることからｑ＿ｅｍｂ［ｋ］を求めている。
【００８４】
ここで、Ｔ＿ｔｈｒｅは１より少し小さい値で、Ｔ＿ｔｈｒｅ＝０．８辺りが妥当である。ここで、Ｔ＿ｔｈｒｅの値の精度等より図９および図１０に示した処理によりうまくｑ＿ｅｍｂ［ｋ］が求められない例外的な画像に関して、埋め込み処理の過程において、図９および図１０に示した処理により、正しくｑ＿ｅｍｂ［ｋ］が満たされるようなヒストグラムになるようにすればよい。
例えば、ｑ＿ｅｍｂ［ｋ］＊２ｎの周りに多く係数が集まってしまうような場合、画像全体のうち、痛みが少なそうなところで、ｑ＿ｅｍｂ［ｋ］＊２ｎ＋１に埋め込むようにすれば良い。
【００８５】
［ハッシュ値抽出部４００］
再び図７を参照する。
ハッシュ値抽出４００は、埋め込み領域Ａにおいて、埋込パラメータＤＢ２０からの埋め込みＤＣＴ成分｛ｄｃｔ＿ｃｏｅｆｆｉ｝の係数ｃ［ｋ］と、検出前処理部４２によって計算された、埋め込み量子化値ｑ＿ｅｍｂ［ｋ］より、以下の方法でＬＳＢをしらべ、それらを並べて埋め込まれたハッシュ値ｅｍｂｅｄ＿ｈａｓｈを計算する。
【００８６】
【数１１】
LSB = (int)((c[k]+β)/q_emb[k]) mod 2
但し、β = c[k]>=0 ? q_emb[k]/2  : -q_emb[k]/2      （１１）
【００８７】
［ハッシュ値計算部４０２］
ハッシュ値計算部４０２は、Ａ以外の領域に対して、｛ｄｃｔ＿ｃｏｅｆｆｉ｝の係数Ｃ［ｋ］ｑ＿ｅｍｂ［ｋ］より、上記式６においてでα=0.5として、ｃｏｅｆｆ＿ｅｍｂ［ｋ］を求め、上記式９によりＤＣＴ＿ｈａｓｈを計算する。
【００８８】
［改ざん検出部４０４］
改ざん検出部４０４は、ハッシュ値抽出４００およびハッシュ値計算部４０２から得られるＤＣＴ＿ｈａｓｈ，ｅｍｂｅｄ＿ｈａｓｈが、ＤＣＴ＿ｈａｓｈ＝＝ｅｍｂｅｄ＿ｈａｓｈなら改ざんなし、それ以外の場合（ＤＣＴ＿ｈａｓｈ≠ｅｍｂｅｄ＿ｈａｓｈ）には改ざん有りとして、表示装置１００（図１）等に表示する。
【００８９】
［全体動作］
図１１は、埋込・検出プログラム２（図２）による埋め込み処理を示すフローチャートである。
図１２は、埋込・検出プログラム２（図２）による検出処理を示すフローチャートである。
なお、図１１および図１２の各処理中の括弧内の番号は、その処理を行う埋込・検出プログラム２の構成部分（図３，５，７，８）に付された符号を示す。
埋込・検出プログラム２の各構成部分は、図１１に示すように埋め込み処理を行い、図１２に示すように検出処理を行う。
【００９０】
［変形例］
以下、本発明に係る埋め込み装置の変形例を説明する。
図１３は、埋込・検出プログラム２（図２）において埋込部３０の代わりに用いられる埋込部５０の構成を示す図である。
図１４は、図１３に示した埋込前処理部５２の構成を示す図である。
図１５は、図１３に示した改ざんマーク埋込部５４の構成を示す図である。
【００９１】
なお、埋込部５０の構成部分の内、出力フォーマット変換部５０２は、埋込部３０（図３）の出力フォーマット変換部３０４に同じであり、埋込前処理部５２の構成部分の内、フォーマット認識部５２０、復号部５２２、ＢＭＰ，ＹＵＶ／ＪＰＥＧ’変換部５２４、量子化値変換部５２６および量子化値計算部５２６は、それぞれ埋込前処理３２（図５）のフォーマット認識部３２０、復号部３２２、ＪＰＥＧ’／ＢＭＰ変換部３２６、ＹＵＶ／ＢＭＰ変換部３２８および埋込量子化値計算部３２４に同じである。
また、埋込部５０においては領域Ａは存在しない。
【００９２】
［埋め込み前処理部５２］
埋込前処理部５２は、入力画像より、ＤＣＴ係数を抽出する。
【００９３】
［改ざんマーク埋め込み部５４］
改ざんマーク埋込部５４は、改ざんマークあるいはデータを埋め込む部分で、埋め込みアルゴリズムは何でも良く、画像を痛めない方法としてはＬＳＢ法がある。
【００９４】
[画像分割部５４０]
画像を８×８画素のブロック（イントラブロック）単位に分割し、入力注目DCT成分l,係数c[k]と画像位置(x,y)を出力する。
【００９５】
[乱数発生部５４２]
乱数発生部５４２は、鍵Ｋより乱数Ｒを発生させる。Ｒは、埋め込みに必要なbit数だけのbitが必要で、720x480画素の場合、90x60xn = 5400n bit以上である必要がある。Rの作成方法は色々あるが、LFSRを使う場合、b=(int)(1+log25400n)bitのLFSRを使って、Kをkey,R0を鍵DBより得られる初期値（鍵の１部と考えても良い）、LFSRbをb bitのLFSR計算部として、下式１２により求められる。
【数１２】
R=LFSRb(K,R0)                                （１２）
【００９６】
［合成部５４４］
合成部５４４は、データを埋め込む場合に、埋め込みデータとＲより埋め込みbit列R'を合成して作成する。なお、合成部５４４が、改ざんマークを埋め込む場合、R'=Rとなる。データを埋め込む場合は、下式１３により示されるＲ’が埋め込みbitになる。ここで、^はxorを意味する。但し、dataは5400n  bitの埋め込みdataで、埋め込みたいdataがm  bitで、m<5400n bitの場合、埋め込みdataをm周期で繰り返し、5400n/m回繰り返して埋める、等の方法もある。
【００９７】
【数１３】
R' = R ^ data                                    （１３）
【００９８】
［ＬＳＢ操作部５４６］
ＬＳＢ操作部５４６は、Ｒ’とｑ＿ｅｍｂ［ｋ］，ｃ［ｋ］，ｋ，（ｘ，ｙ）より,｛ｄｃｔ＿ｃｏｅｆｆｉ｝に属するＤＣＴ係数のＬＳＢを操作する。先ず、埋め込みビットｅｍｂ＿ｂｉｔ［ｋ］は、下式１４を埋め、あとは、上記式１０を満たすように、｛ｄｃｔ＿ｃｏｅｆｆｉ｝に属する全てのDCT係数をＴ［ｘ］［ｙ］＝０を満たす全てのＭＣＵに対して行う。
【００９９】
【数１４】
emb_bit[k] = (R'>>(xn+90yn+l))&1              （１４）
【０１００】
［ＤＣＴ成分分割部５２８］
ＤＣＴ成分分割部５２８は、復号部５２２およびＢＭＰ，ＹＵＶ／ＪＰＥＧ’変換部５２４から入力されるＤＣＴ係数(量子化されていない)を注目ＤＣＴ(｛ｄｃｔ＿ｃｏｅｆｆｉ｝)とそうでないものに分ける。
【０１０１】
［量子化値計算部５２６］
量子化値計算部５２６は、上述したように埋込量子化値計算部３２４と同じである。但し、Ｔ［４５］［６０］を、初期状態（Ｔ［ｘ］［ｙ］＝０、ｆｏｒ  ａｌｌ  ｘ，  ｙ）で出力する。
【０１０２】
図１６は、図１５に示した埋込後処理部５６の構成を示す図である。
なお、埋込後処理部５６の構成部分の内、ＤＣＴ係数調整５６４は、埋込前処理３２のＤＣＴ係数調整部３３２（図５）と同じである。
【０１０３】
［ＪＰＥＧ’／ＢＭＰ変換部５６０］
ＪＰＥＧ’／ＢＭＰ変換部５６０は、入力されたＪＰＥＧ’画像をｉＤＣＴ変換して、オーバーフロー／アンダーフロー処理をして、ＢＭＰフォーマットの画像に変換する。
【０１０４】
［ＢＭＰ／ＪＰＥＧ’変換部５６２］
ＢＭＰ／ＪＰＥＧ’変換部６００は、入力ＢＭＰ画像をＤＣＴ変換し、ＪＰＥＧ’フォーマットの画像に変換する。
【０１０５】
図１７は、埋込・検出プログラム２（図２）において、検出部４０の代わりに用いられる検出部６０の構成を示す図である。
検出部６０は、図１３〜１６に示した検出部４０により埋め込まれた画像データが、データ埋め込みでなく、改ざんマークを埋め込みである場合、その画像の改ざんの有無を検出し、改ざん場所を８×８画素のブロック単位で特定する。
｛ｄｃｔ＿ｃｏｅｆｆｉ｝の要素がｎ個ある場合、各々の８×６画素構成のブロック（イントラブロック）の改ざん検出率は1-2-nであり、本発明例の様にn=4の場合、その確率は93.75%である。
【０１０６】
［検出前処理部６００］
検出前処理部６００は、図７に示した検出前処理部４２と同じである。但し、埋込領域Ａはない。
【０１０７】
［埋め込みデータ抽出部６０２］
埋込データ抽出部６０２は、｛ｄｃｔ＿ｃｏｅｆｆｉ｝の要素のＤＣＴ係数のＬＳＢを抽出し、埋め込みデータを抽出する。
イントラロケーション（ｘ，ｙ） (0<=x<60,0<=y<90), ｛ｄｃｔ＿ｃｏｅｆｆｉ｝の要素数ｎのＬＳＢを式１１により計算し、それを(xn+90yn+l)bit目に持つ5400nbitの抽出データｅｍｂｅｄ＿ｄａｔａを計算する。
【０１０８】
［埋め込みデータ計算部６０４］
埋込データ計算部６０４は、図１５に示した乱数発生部５４２および合成部５４４と同じ方法で、埋め込みbit列Ｒ’を計算する。
【０１０９】
［改ざん検出・場所特定部６０６］
改ざん検出場所特定部６０６は、ｅｍｂｅｄ＿ｄａｔａ，Ｒ’から入力画像に改ざんがあったかどうか、あった場合、何処が改ざんされたかを特定する。つまり、改ざん検出場所特定部６０６は、ｅｍｂｅｄ＿ｄａｔａ＝＝Ｒ’の場合、改ざんなしと判定し、これ以外の場合（ｅｍｂｅｄ＿ｄａｔａ＜＞Ｒ’）には、ビット単位で値が合わない部分を全て探す。その際、例えば、p bit目(0 origin)が合わない場合、改ざんのあったintra location (x,y)は、以下の式によって特定出来る。
【０１１０】
【数１５】
x = (int)(p/n) mod 90
y = (int)(p/n/90)                              （１５）
【０１１１】
［出力フォーマット変換部６０８］
出力フォーマット変換部６０８は、画像ＤＢ２４より入力した画像を、改ざん場所がわかるように変化させて出力する。
【０１１２】
［全体動作］
図１８および図１９は、検出部４０および検出部６０の処理を示すフローチャートであり、図中の括弧内の番号は、各処理を行う構成部分の符号を示す。
検出部４０および検出部６０は、図１８に示すように埋め込み処理を行い、図１９に示すように検出処理を行う。
【０１１３】
【発明の効果】
上述したように、本発明にかかる画像処理装置およびその方法は、圧縮符号化に適している。
特定的には、本発明にかかる画像処理装置およびその方法によれば、認証情報を埋め込んだ後に量子化処理をしても、埋め込まれた認証情報が失われることがない。
【図面の簡単な説明】
【図１】本発明にかかる画像処理方法を実現する画像処理装置の構成を示す図である。
【図２】図１に示した画像処理装置が実行し、本発明にかかる画像処理方法を実現する埋込・検出プログラムの構成を示す図である。
【図３】図２に示した埋込部の構成を示す図である。
【図４】注目ＤＣＴ係数を示す図である。
【図５】図３に示した埋込前処理部の構成を示す図である。
【図６】（Ａ）は、図３に示した埋込前処理による安定化処理の前の注目ＤＣＴ係数ｄｃｔ＿ｃｏｅｆｆｉの値の頻度をｑ［ｋ］＝３，ｑ＿ｅｍｂ［ｋ］の場合について例示し、（Ｂ）は埋込前処理による安定化処理の後の注目ＤＣＴ係数ｄｃｔ＿ｃｏｅｆｆｉの値の頻度を同様に例示するヒストグラムである。
【図７】図２に示した検出部の構成を示す図である。
【図８】図７に示した検出前処理部の構成を示す図である。
【図９】図８に示した量子化値逆算部における処理を示す第１のフローチャートである。
【図１０】図８に示した量子化値逆算部における処理を示す第２のフローチャートである。
【図１１】埋込・検出プログラム（図２）による埋め込み処理を示すフローチャートである。
【図１２】埋込・検出プログラム（図２）による検出処理を示すフローチャートである。
【図１３】埋込・検出プログラム（図２）において埋込部の代わりに用いられる埋込部の構成を示す図である。
【図１４】図１３に示した埋込前処理部の構成を示す図である。
【図１５】図１３に示した改ざんマーク埋込部の構成を示す図である。
【図１６】図１５に示した埋込後処理部の構成を示す図である。
【図１７】埋込・検出プログラム（図２）において用いられる第２の検出部の構成を示す図である。
【図１８】検出部および検出部（図１３〜１７）の処理を示す第１のフローチャートである。
【図１９】検出部および検出部（図１３〜１７）の処理を示す第２のフローチャートである。
【符号の説明】
１・・・画像処理装置
１００・・・表示装置
１０２・・・入力装置
１０４・・・カメラＩＦ
１０６・・・メモリカードＩＦ
１０８・・・記憶装置
１１０・・・ＰＣ本体
１１２・・・メモリ
１１４・・・ＣＰＵ
１１６・・・通信装置
１２０・・・記録媒体
１４０・・・ディジタルカメラ
１４２・・・メモリカード
２・・・埋込・検出プログラム
２０・・・埋込パラメータＤＢ
２２・・・鍵情報ＤＢ
２４・・・画像ＤＢ
２６・・・制御部
３０・・・埋込部
３２・・・埋込前処理
３２０・・・フォーマット認識部
３２２・・・復号部
３２４・・・埋込量子化値計算部
３２６・・・ＪＰＥＧ’／ＢＭＰ変換部
３２８・・・ＹＵＶ／ＢＭＰ変換部
３３０・・・ＢＭＰ／ＪＰＥＧ’変換部
３３２・・・ＤＣＴ係数調整部
３００・・・ハッシュ値計算部
３０２・・・ハッシュ値埋込部
３０４・・・出力フォーマット変換部
４０・・・検出部
４２・・・検出前処理部
４２０・・・フォーマット認識部
４２２・・・復号部
４２４・・・ＢＭＰ，ＹＵＶ／ＪＰＥＧ’変換部
４２６・・・量子化値逆算部
４００・・・ハッシュ値抽出
４０２・・・ハッシュ値計算部
４０４・・・改ざん検出部
５０・・・埋込部
５２・・・埋込前処理部
５２０・・・フォーマット認識部
５２２・・・復号部
５２４・・・ＢＭＰ，ＹＵＶ／ＪＰＥＧ’変換部
５２６・・・量子化値計算部
５２８・・・ＤＣＴ成分分割部
５４・・・改ざんマーク埋込部
５４０・・・画像分割部
５４２・・・乱数発生部
５４４・・・合成部
５４６・・・ＬＳＢ操作部
５６・・・埋込後処理部
５６０・・・ＪＰＥＧ’／ＢＭＰ変換部
５６２・・・ＢＭＰ／ＪＰＥＧ’変換部
５６４・・・ＤＣＴ係数調整部
５０２・・・出力フォーマット変換部
６０・・・検出部
６００・・・検出前処理部
６０２・・・埋込データ抽出部
６０４・・・埋込データ計算部
６０６・・・改ざん検出場所特定部
６０８・・・出力フォーマット変換部
８０・・・ＯＳ
【図１】
0003683766.tif 000005
【図２】
0003683766.tif 000006
【図３】
0003683766.tif 000007
【図４】
0003683766.tif 000008
【図５】
0003683766.tif 000009
【図６】
0003683766.tif 000010
【図７】
0003683766.tif 000011
【図８】
0003683766.tif 000012
【図９】
0003683766.tif 000013
【図１０】
0003683766.tif 000014
【図１１】
0003683766.tif 000015
【図１２】
0003683766.tif 000016
【図１３】
0003683766.tif 000017
【図１４】
0003683766.tif 000018
【図１５】
0003683766.tif 000019
【図１６】
0003683766.tif 000020
【図１７】
0003683766.tif 000021
【図１８】
0003683766.tif 000022
【図１９】
0003683766.tif 000023