(57)【要約】【課題】透かしデータを埋め込むことに伴う符号化データ量の増大や画質劣化を抑制することができる画像生成装置を得ることを目的とする。【解決手段】量子化係数変更部３が、量子化係数選択部２により選択された量子化係数毎に、当該量子化係数に対する変更値候補Ａ，Ｂを特定して、その変更値候補Ａ，Ｂがエントロピー符号化されて符号語が生成された場合の当該符号語の符号長Ｐ，Ｑを特定し、変更値候補Ａ，Ｂの中で符号長Ｐ，Ｑが短い方の変更値候補を選択して、当該量子化係数の値を当該変更値候補に変更する。【選択図】図１
2012120087.tif 000002
【特許請求の範囲】
【請求項１】
圧縮符号化対象の画像を周波数変換して量子化し、その量子化結果を示す量子化係数を出力する量子化手段と、上記量子化手段から出力された量子化係数の中から、透かしデータのビット数と同じ個数の量子化係数を選択する量子化係数選択手段と、上記量子化手段から出力された量子化係数の中で、上記量子化係数選択手段により選択された量子化係数の値を変更する変更処理を実施する量子化係数変更手段と、上記量子化係数変更手段による変更処理後の量子化係数を圧縮符号化して符号語を生成する圧縮符号化手段とを備え、
上記量子化係数変更手段は、上記量子化係数選択手段により選択された量子化係数毎に、当該量子化係数に対する複数の変更値候補を特定して、上記複数の変更値候補が上記圧縮符号化手段により圧縮符号化されて符号語が生成された場合の当該符号語の符号長を特定し、上記複数の変更値候補の中から符号長が最も短くなる変更値候補を選択して、当該量子化係数の値を上記変更値候補に変更することを特徴とする画像生成装置。
【請求項２】
量子化係数変更手段は、量子化係数選択手段により選択された量子化係数を変更しないで、上記量子化係数が圧縮符号化手段により圧縮符号化されて符号語が生成された場合の当該符号語の符号長を特定し、上記符号語の符号長が、変更値候補が上記圧縮符号化手段により圧縮符号化されて符号語が生成された場合の当該符号語の符号長より短い場合、当該量子化係数の値を変更しないことを特徴とする請求項１記載の画像生成装置。
【請求項３】
圧縮符号化対象の画像を周波数変換して量子化し、その量子化結果を示す量子化係数を出力する量子化手段と、上記量子化手段から出力された量子化係数の中から、透かしデータのビット数と同じ個数の量子化係数を選択する量子化係数選択手段と、上記量子化手段から出力された量子化係数の中で、上記量子化係数選択手段により選択された量子化係数の値を変更する変更処理及び変更処理後の量子化係数を圧縮符号化して符号語を生成する符号語生成処理を並列的に行う圧縮符号化手段とを備え、
上記圧縮符号化手段は、上記量子化係数選択手段により選択された量子化係数毎に、当該量子化係数に対する複数の変更値候補を特定し、上記複数の変更値候補を圧縮符号化して符号語を生成するとともに、上記符号語の符号長を特定し、上記複数の符号語の中から符号長が最も短い符号語を選択することを特徴とする画像生成装置。
【請求項４】
圧縮符号化対象の画像を周波数変換して、その変換結果を示す周波数変換値を出力する周波数変換手段と、上記周波数変換手段から出力された周波数変換値を量子化し、その量子化結果を示す量子化係数を出力する量子化手段と、上記量子化手段から出力された量子化係数の中から、透かしデータのビット数と同じ個数の量子化係数を選択する量子化係数選択手段と、上記量子化手段から出力された量子化係数の中で、上記量子化係数選択手段により選択された量子化係数の値を変更する変更処理を実施する量子化係数変更手段と、上記量子化係数変更手段による変更処理後の量子化係数を圧縮符号化して符号語を生成する圧縮符号化手段とを備え、
上記量子化係数変更手段は、上記量子化係数選択手段により選択された量子化係数毎に、当該量子化係数に対する複数の変更値候補を特定し、上記複数の変更値候補の中から、上記周波数変換手段から出力された周波数変換値と最も近い変更値候補を選択して、当該量子化係数の値を上記変更値候補に変更することを特徴とする画像生成装置。
【請求項５】
圧縮符号化対象の画像を周波数変換して、その変換結果を示す周波数変換値を出力する周波数変換手段と、上記周波数変換手段から出力された周波数変換値に対応する量子化係数の中から、透かしデータのビット数と同じ個数の量子化係数を選択する量子化係数選択手段と、上記周波数変換手段から出力された周波数変換値を量子化し、その量子化結果を示す量子化係数を出力する量子化手段と、上記量子化手段から出力された量子化係数を圧縮符号化して符号語を生成する圧縮符号化手段とを備え、
上記量子化手段は、上記量子化係数選択手段により選択された量子化係数については、上記量子化係数の値に対する複数の変更値候補の中で、上記周波数変換値と最も近い変更値候補を選択し、上記変更値候補を値とする量子化係数を出力することを特徴とする画像生成装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、例えば、ＪＰＥＧ（Ｊｏｉｎｔ  Ｐｈｏｔｏｇｒａｐｈｉｃ  Ｅｘｐｅｒｔｓ  Ｇｒｏｕｐ）などの静止画像の圧縮符号化を行う画像生成装置に関するものである。
【背景技術】
【０００２】
例えば、以下の特許文献１に開示されている画像生成装置（ＪＰＥＧなどの静止画像を圧縮符号化する画像生成装置）では、ブロック分割部が、入力画像（例えば、ＹＣＣ信号のディジタル信号が示す画像）を所定画素数（例えば、８×８画素）のブロックに分割し、離散コサイン変換部が、分割後の全てのブロックに対して、ＤＣＴ（離散コサイン変換）等による周波数変換処理を実施して、変換係数行列を生成し、量子化部が、その変換係数行列を量子化して量子化係数行列を生成する。
一方、ビット埋め込み部では、入力された鍵情報や埋め込み情報よって、電子透かしを埋め込む際の空間周波数やパラメータ（透かしデータ）を決定する。
そして、ビット埋め込み部が、量子化部により生成された量子化係数行列に対して、以下の規則にしたがって、透かしデータを埋め込むことにより、埋め込み済量子化係数行列を生成する。即ち、透かしデータが埋め込まれている透かし付量子化周波数画像を生成する。
【０００３】
（１）透かしデータである埋め込みビットが“０”である場合
埋め込み対象の量子化係数の値が偶数  →  量子化係数の値を変更しない
埋め込み対象の量子化係数の値が奇数  →  量子化係数の値を＋１する
（２）透かしデータである埋め込みビットが“１”である場合
埋め込み対象の量子化係数の値が偶数  →  量子化係数の値を＋１する
埋め込み対象の量子化係数の値が奇数  →  量子化係数の値を変更しない
【０００４】
画像符号化装置のエントロピー符号化部は、ビット埋め込み部により生成された埋め込み済量子化係数行列を、通常のＪＰＥＧ符号化と同様に、ハフマンテーブル８６を参照してハフマン符号化する。
【０００５】
また、以下の非特許文献１に開示されている画像生成装置では、ＪＰＥＧ圧縮の過程で、画像データを８×８のブロックに分けて、各々のブロックをＤＣＴして周波数領域に変換する。
そして、変換後の各ブロックにおけるｐ番目のＡＣ係数ＡＣ（ｐ）に着目し、量子化後のＡＣ係数ＡＣ（ｐ）を、埋め込むバイナリデータのビットに合わせて、“０”または“１”に置き換えるようにする。ただし、ｐは定数であり、全てのブロックに対して、同じ位置のＡＣ係数を置き換えるようにする。
【０００６】
ＪＰＥＧ復号を行うに際して、符号化の際に使用している量子化テーブルと異なる量子化テーブルを用意して、その量子化テーブルを復号側に送る。
復号側では、バイナリデータが埋め込まれた位置ｐに相当する量子化テーブル（符号化側から送られた量子化テーブル）の値を“１”に置き換えて利用する。これは、ＡＣ係数ＡＣ（ｐ）の情報を強制的に置き換えることで発生するノイズの影響を押さえるためである。
また、復号側では、バイナリデータが埋め込まれた位置ｐを特定するためにも用いられる。つまり、量子化テーブルの値が“１”の位置をｐとして、ＡＣ係数ＡＣ（ｐ）を参照することで、埋め込まれたバイナリデータを取り出すことができる。
復号側では、ＡＣ係数ＡＣ（ｐ）を取り出した後、そのＡＣ係数ＡＣ（ｐ）の値を“０”として復号する。これは、ＡＣ係数ＡＣ（ｐ）の値が“０”である場合が多いからである。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０００−５００４８号公報
【非特許文献】
【０００８】
【非特許文献１】特許庁標準技術集１−Ａ−４（１）電子透かし埋め込み技術／静止画像／圧縮（静止）画像／ＪＰＥＧ 「ＤＣＴ係数を操作する電子透かし埋め込み方法」
【発明の概要】
【発明が解決しようとする課題】
【０００９】
従来の画像生成装置は以上のように構成されているので、特許文献１に開示されている電子透かし埋め込み方法を用いると、埋め込み対象となる量子化係数行列の約半数（埋め込みビットの０／１の発生確率が半々と仮定する）が元の値から変更されることになる。そのため、一般的にはエントロピー符号化による符号化データ量が増大して、画像圧縮の符号化効率の悪化を招くことがある。また、量子化係数行列の変更によって、透かし埋め込み後の画像が元の画像と比べて画質の劣化を招くことがあるという課題があった。
また、非特許文献１に開示されている電子透かし埋め込み方法を用いると、バイナリデータが埋め込まれた位置ｐの量子化テーブルの値が“１”に置き換えられるため、一般的には量子化係数の値が大幅に増大する。その結果、エントロピー符号化による符号化効率が悪化して符号化データ量が増大し、画像圧縮の符号化効率の悪化を招くことがあるという課題があった。
【００１０】
この発明は上記のような課題を解決するためになされたもので、透かしデータを埋め込むことに伴う符号化データ量の増大や画質劣化を抑制することができる画像生成装置を得ることを目的とする。
【課題を解決するための手段】
【００１１】
この発明に係る画像生成装置は、量子化係数変更手段が、量子化係数選択手段により選択された量子化係数毎に、当該量子化係数に対する複数の変更値候補を特定して、複数の変更値候補が圧縮符号化手段により圧縮符号化されて符号語が生成された場合の当該符号語の符号長を特定し、複数の変更値候補の中から符号長が最も短くなる変更値候補を選択して、当該量子化係数の値を上記変更値候補に変更するようにしたものである。
【発明の効果】
【００１２】
この発明によれば、量子化係数変更手段が、量子化係数選択手段により選択された量子化係数毎に、当該量子化係数に対する複数の変更値候補を特定して、複数の変更値候補が圧縮符号化手段により圧縮符号化されて符号語が生成された場合の当該符号語の符号長を特定し、複数の変更値候補の中から符号長が最も短くなる変更値候補を選択して、当該量子化係数の値を上記変更値候補に変更するように構成したので、透かしデータを埋め込むことに伴う符号化データ量の増大や画質劣化を抑制することができる効果がある。
【図面の簡単な説明】
【００１３】
【図１】この発明の実施の形態１による画像生成装置を示す構成図である。
【図２】この発明の実施の形態１による画像生成装置の処理内容の一部を示すフローチャートである。
【図３】量子化係数の値の変更に係る基本概念を示す説明図である。
【図４】量子化係数の値が変更されるケースを示す説明図である。
【図５】この発明の実施の形態１による他の画像生成装置を示す構成図である。
【図６】量子化係数の値の変更に係る基本概念を示す説明図である。
【図７】この発明の実施の形態２による画像生成装置の処理内容の一部を示すフローチャートである。
【図８】この発明の実施の形態３による画像生成装置を示す構成図である。
【図９】この発明の実施の形態３による画像生成装置の処理内容の一部を示すフローチャートである。
【図１０】この発明の実施の形態４による画像生成装置を示す構成図である。
【図１１】この発明の実施の形態４による画像生成装置の処理内容の一部を示すフローチャートである。
【図１２】量子化係数の値の変更に係る基本概念を示す説明図である。
【図１３】この発明の実施の形態５による画像生成装置を示す構成図である。
【図１４】この発明の実施の形態５による画像生成装置の処理内容の一部を示すフローチャートである。
【図１５】量子化係数の値の変更に係る基本概念を示す説明図である。
【発明を実施するための形態】
【００１４】
実施の形態１．
図１はこの発明の実施の形態１による画像生成装置を示す構成図である。
図１において、量子化係数算出部１は例えばＣＰＵを実装している半導体集積回路、あるいは、ワンチップマイコンなどから構成されており、非圧縮画像Ａ（圧縮符号化対象の画像）を入力すると、その非圧縮画像Ａを周波数変換して量子化し、その量子化結果を示す量子化係数を出力する処理を実施する。なお、量子化係数算出部１は量子化手段を構成している。
【００１５】
量子化係数選択部２は例えばＣＰＵを実装している半導体集積回路、あるいは、ワンチップマイコンなどから構成されており、透かしデータのビット列を入力すると、量子化係数算出部１から出力された量子化係数の中から、透かしデータのビット数と同じ個数の量子化係数を選択し、その量子化係数の位置を示す量子化係数位置情報を出力する処理を実施する。なお、量子化係数選択部２は量子化係数選択手段を構成している。
【００１６】
量子化係数変更部３は例えばＣＰＵを実装している半導体集積回路、あるいは、ワンチップマイコンなどから構成されており、量子化係数算出部１から出力された量子化係数の中で、量子化係数選択部２から出力された量子化係数位置情報が示す位置にある量子化係数の値を変更する変更処理を実施する。
即ち、量子化係数変更部３は量子化係数選択部２から出力された量子化係数位置情報が示す位置にある量子化係数毎に、当該量子化係数に対する複数の変更値候補を特定して、複数の変更値候補がエントロピー符号化部４により圧縮符号化されて符号語が生成された場合の当該符号語の符号長を特定し、複数の変更値候補の中から符号長が最も短くなる変更値候補を選択して、当該量子化係数の値を上記変更値候補に変更する処理を実施する。
なお、量子化係数変更部３は量子化係数変更手段を構成している。
【００１７】
エントロピー符号化部４は量子化係数変更部３による変更処理後の量子化係数をエントロピー符号化して符号語を生成し、その符号語である符号化画像Ｂを出力する処理を実施する。なお、エントロピー符号化部４は圧縮符号化手段を構成している。
【００１８】
図１の例では、画像生成装置の構成要素である量子化係数算出部１、量子化係数選択部２、量子化係数変更部３及びエントロピー符号化部４のそれぞれが専用のハードウェアで構成されているものを想定しているが、量子化係数算出部１、量子化係数選択部２、量子化係数変更部３及びエントロピー符号化部４の処理内容を記述しているプログラムをコンピュータのメモリに格納し、当該コンピュータのＣＰＵが当該メモリに格納されているプログラムを実行するようにしてもよい。
図２はこの発明の実施の形態１による画像生成装置の処理内容の一部を示すフローチャートである。
【００１９】
次に動作について説明する。
まず、量子化係数算出部１は、圧縮符号化対象の画像である非圧縮画像Ａを入力すると、その非圧縮画像Ａを周波数変換して量子化し、その量子化結果を示す量子化係数を量子化係数選択部２及び量子化係数変更部３に出力する。
即ち、量子化係数算出部１は、例えば、符号化画像ＢのフォーマットがＪＰＥＧである場合、非圧縮画像Ａを横８画素×縦８画素のブロック単位に分割し、分割後の全てのブロックに対して、ＤＣＴによる周波数変換処理を実施してＤＣＴ係数を生成する。
そして、量子化係数算出部１は、所定の量子化テーブルを参照しながら、そのＤＣＴ係数を量子化し、量子化後のＤＣＴ係数である量子化係数を量子化係数選択部２及び量子化係数変更部３に出力する。
【００２０】
量子化係数選択部２は、透かしデータのビット列を入力すると、量子化係数算出部１から出力された量子化係数の中から、透かしデータのビット数と同じ個数の量子化係数を選択し、その量子化係数の位置を示す量子化係数位置情報を量子化係数変更部３に出力する。
量子化係数の選択は、例えば、乱数を用いて選択する。ただし、量子化係数の選択方法は乱数に限るものではなく、乱数以外の方法で選択してもよい。
【００２１】
量子化係数変更部３は、量子化係数選択部２から量子化係数位置情報を受けると、量子化係数算出部１から出力された量子化係数の中で、その量子化係数位置情報が示す位置にある量子化係数の値を変更する変更処理を実施する。
ここで、図３は量子化係数の値の変更に係る基本概念を示す説明図である。
図３において、上段の数直線が透かし埋め込み後の量子化係数の値を表現しており、下段の数直線が透かし埋め込み前の量子化係数の値を表現している。
最終的に変更後の量子化係数の値が、量子化値０を除いて、ビット０の埋め込みと、ビット１の埋め込みとが、交互に配置されるように量子化値を変更する。
ただし、符号化画質Ｂの大幅な劣化を防ぐために、元の量子化係数の値からの変更値が、最大でも±１以内とする制約条件を持たせている。
【００２２】
上記の制約条件で量子化係数の値を変更する場合、以下に示すような変更ルールが考えられる。
（１）透かし埋め込み前の量子化係数の値が“２”である場合
・当該量子化係数の位置にビット１を埋め込む場合
→  その量子化係数の値を変更せずに“２”のままとする
・当該量子化係数の位置にビット０を埋め込む場合
→  その量子化係数の値を“１”に変更する
（２）透かし埋め込み前の量子化係数の値が“１”である場合
・当該量子化係数の位置にビット１を埋め込む場合
→  その量子化係数の値を“２”に変更する
・当該量子化係数の位置にビット０を埋め込む場合
→  その量子化係数の値を変更せずに“１”のままとする
【００２３】
（３）透かし埋め込み前の量子化値が正であり、その量子化値が偶数である場合（“２”以外の値）
・当該量子化係数の位置にビット１を埋め込む場合
→  その量子化係数の値を変更しない
・当該量子化係数の位置にビット０を埋め込む場合
→  その量子化係数の値を“１”減じる
（４）透かし埋め込み前の量子化値が正であり、その量子化値が奇数である場合（“１”以外の値）
・当該量子化係数の位置にビット１を埋め込む場合
→  その量子化係数の値を“１”増やす
・当該量子化係数の位置にビット０を埋め込む場合
→  その量子化係数の値を変更しない
【００２４】
（５）透かし埋め込み前の量子化値が負であり、その量子化値が偶数である場合
・当該量子化係数の位置にビット１を埋め込む場合
→  その量子化係数の値を“１”増やす
・当該量子化係数の位置にビット０を埋め込む場合
→  その量子化係数の値を変更しない
（６）透かし埋め込み前の量子化値が負であり、その量子化値が奇数である場合
・当該量子化係数の位置にビット１を埋め込む場合
→  その量子化係数の値を変更しない
・当該量子化係数の位置にビット０を埋め込む場合
→  その量子化係数の値を“１”減じる
【００２５】
（７）透かし埋め込み前の量子化係数の値が“０”である場合
・当該量子化係数の位置にビット１を埋め込む場合
→  その量子化係数の値を“−１”に変更する
・当該量子化係数の位置にビット０を埋め込む場合
→  その量子化係数の値を“１”に変更する
このような変更を行うことで、量子化係数の変更後の値が“０”になるのを防止している。その理由は、量子化係数を“０”に変更すると、エントロピー符号化において、該当量子化係数の時点でのランレングスが決定されず、後述する符号長の特定処理の際に支障をきたすためである。
【００２６】
図４は量子化係数の値が変更されるケースを示す説明図である。
ここで、量子化値が変更されるケースについて改めて検証する。
例えば、変更前の量子化係数の値が“３”である場合、上記の変更ルールに従うと、ビット１を埋め込む場合には、変更前の量子化係数の値を“１”増やして、“４”に変更することになるが、量子化係数の値の変更を±１以内とするならば、量子化値を“４”ではなく、“２”に変更しても制約条件を満足する。
そのため、量子化係数の値の変更の選択肢として、“２”と“４”の２通り存在することになる。
変更前の量子化係数の値が“３”以外の場合についても同様に、量子化係数の値の変更の選択肢として、２通り存在することになる。
ただし、変更前の量子化係数の値が“０”または“±１”の場合には、前後±１の範囲の中に“０”の値が入ってくるため、複数の選択肢は存在しないことになる。
【００２７】
以上を踏まえて、量子化係数変更部３による量子化係数の値の変更処理を図２を参照しながら、以下、具体的に説明する。
まず、量子化係数変更部３は、量子化係数選択部２から出力された量子化係数位置情報を参照して、量子化係数算出部１から出力された先頭の量子化係数から順番に、当該量子化係数が、透かしの埋め込み位置にある量子化係数であるか否かを判定する（ステップＳＴ１）。
量子化係数変更部３は、当該量子化係数が、透かしの埋め込み位置にある量子化係数である場合、透かしデータのビット列を参照して、埋め込みビットが“１”であるのか、“０”であるのかを特定し、上記の変更ルールにしたがって当該量子化係数の値を変更する必要があるか否かを判断する（ステップＳＴ２）。
例えば、透かし埋め込み前の量子化係数の値が“２”である場合、埋め込みビットが“１”であれば、当該量子化係数の値を変更する必要がないと判断し、埋め込みビットが“０”であれば、当該量子化係数の値を変更する必要があると判断する。
【００２８】
量子化係数変更部３は、当該量子化係数の値を変更する必要があると判断すると、当該量子化係数の変更値候補として、透かし埋め込み前の量子化係数の値より、＋１だけ大きい変更値候補Ａと、透かし埋め込み前の量子化係数の値より、−１だけ小さい変更値候補Ｂとを用意する。
量子化係数変更部３は、最初に、２つの変更値候補Ａ，Ｂの中から、変更値候補Ａを選択し（ステップＳＴ３）、局所的なランレングスを用いてハフマンテーブル（例えば、変更値候補に対応する符号語や、当該符号語の符号長などを記録しているテーブル）を参照することにより（ステップＳＴ４）、その変更値候補Ａがエントロピー符号化されて符号語が生成された場合の当該符号語の符号長Ｐを特定する（ステップＳＴ５）。
【００２９】
次に、２つの変更値候補Ａ，Ｂの中から、変更値候補Ｂを選択し（ステップＳＴ６）、局所的なランレングスを用いてハフマンテーブルを参照することにより（ステップＳＴ７）、その変更値候補Ｂがエントロピー符号化されて符号語が生成された場合の当該符号語の符号長Ｑを特定する（ステップＳＴ８）。
ここでは、量子化係数変更部３がハフマンテーブルの参照処理を実施することで、符号長Ｐ，Ｑを特定しているが、量子化係数変更部３が変更値候補Ａ，Ｂに対して、エントロピー符号化を実施することで符号語を生成し、その符号語の語数を数えることで、符号長Ｐ，Ｑを特定するようにしてもよい。
【００３０】
量子化係数変更部３は、符号長Ｐと符号長Ｑを特定すると、その符号長Ｐと符号長Ｑを比較し（ステップＳＴ９）、その符号長Ｐが符号長Ｑより短ければ（Ｐ＜Ｑ）、透かし埋め込み前の量子化係数の値を変更値候補Ａに変更する。即ち、透かし埋め込み前の量子化係数の値を“１”だけ増やす変更を行う（ステップＳＴ１０）。
一方、その符号長Ｐが符号長Ｑより長ければ（Ｐ≧Ｑ）、透かし埋め込み前の量子化係数の値を変更値候補Ｂに変更する。即ち、透かし埋め込み前の量子化係数の値を“１”だけ減らす変更を行う（ステップＳＴ１１）。
【００３１】
なお、量子化係数変更部３は、当該量子化係数が透かしの埋め込み位置にある量子化係数でない場合、あるいは、当該量子化係数の値を変更する必要がないと判断する場合、当該量子化係数の値を変更しない。
量子化係数変更部３は、量子化係数算出部１から出力された全ての量子化係数に対して、ステップＳＴ１〜ＳＴ１１の処理を実施する（ステップＳＴ１２，ＳＴ１３）。
【００３２】
エントロピー符号化部４は、量子化係数変更部３による量子化係数の値の変更処理が完了すると、変更処理後の量子化係数（値が変更された量子化係数だけでなく、値が変更されていない量子化係数を含む）をエントロピー符号化して符号語を生成し、その符号語である符号化画像Ｂを出力する。
例えば、局所的なランレングスを用いてハフマンテーブルを参照することにより、変更処理後の量子化係数の符号語を特定する。
変更処理後の量子化係数をエントロピー符号化する処理自体は公知の技術であるため詳細な説明を省略する。また、ＪＰＥＧヘッダを生成する部分の処理内容も省略する。
【００３３】
以上で明らかなように、この実施の形態１によれば、量子化係数変更部３が、量子化係数選択部２により選択された量子化係数毎に、当該量子化係数に対する変更値候補Ａ，Ｂを特定して、その変更値候補Ａ，Ｂがエントロピー符号化されて符号語が生成された場合の当該符号語の符号長Ｐ，Ｑを特定し、変更値候補Ａ，Ｂの中で符号長Ｐ，Ｑが短い方の変更値候補を選択して、当該量子化係数の値を当該変更値候補に変更するように構成したので、透かしデータを埋め込むことに伴う符号化データ量の増大や画質劣化を抑制することができる効果を奏する。
【００３４】
この実施の形態１では、透かしデータのビット列が量子化係数選択部２及び量子化係数変更部３に入力されるものを示したが、図５に示すように、透かしデータのビット列の誤り訂正符号化を行う誤り訂正符号化部５を量子化係数選択部２及び量子化係数変更部３の前段に配置し、誤り訂正符号化後の透かしデータのビット列が量子化係数選択部２及び量子化係数変更部３に入力されるようにしてもよい。
【００３５】
実施の形態２．
上記実施の形態１では、量子化係数変更部３が、当該量子化係数の値を変更する必要があると判断する場合に、透かし埋め込み前の量子化係数の値より＋１だけ大きい変更値候補Ａがエントロピー符号化されて符号語が生成された場合の当該符号語の符号長Ｐを特定するとともに、透かし埋め込み前の量子化係数の値より−１だけ小さい変更値候補Ｂがエントロピー符号化されて符号語が生成された場合の当該符号語の符号長Ｑを特定して、変更値候補Ａ，Ｂの中で、符号長Ｐ，Ｑが短い方の変更値候補を選択するものを示したが、透かし埋め込み前の量子化係数の値を変更しないで、当該量子化係数がエントロピー符号化されて符号語が生成された場合の当該符号語の符号長を特定し、その符号語の符号長が、変更値候補に係る符号語の符号長より短い場合、当該量子化係数の値を変更しないようにしてもよい。
【００３６】
図６は量子化係数の値の変更に係る基本概念を示す説明図である。
図６において、上段の数直線が透かし埋め込み後の量子化係数の値を表現しており、下段の数直線が透かし埋め込み前の量子化係数の値を表現している。
最終的に変更後の量子化係数の値が、量子化値０を除いて、ビット０の埋め込みと、ビット１の埋め込みとが、２個ずつ交互に配置されるように量子化値を変更する。
ただし、上記実施の形態１と同様に、符号化画質Ｂの大幅な劣化を防ぐために、元の量子化係数の値からの変更値が、最大でも±１以内とする制約条件を持たせている。
【００３７】
上記の制約条件で量子化係数の値を変更する場合、以下に示すような変更ルールが考えられる。
（１）透かし埋め込み前の量子化係数の値が“３”である場合
・当該量子化係数の位置にビット１を埋め込む場合
→  その量子化係数の値を変更せずに“３”のままとする
あるいは
その量子化係数の値を“１”増やして“４”に変更する
・当該量子化係数の位置にビット０を埋め込む場合
→  その量子化係数の値を“１”減じて“２”に変更する
【００３８】
（２）透かし埋め込み前の量子化係数の値が“３”以外の場合も、基本的には量子化係数の値が“３”である場合と同様であり、変更値は下記のようになる。
「ビット０なら変更値−１、ビット１なら変更値０又は＋１」
「ビット０なら変更値−１又は０、ビット１なら変更値＋１」
「ビット１なら変更値−１、ビット０なら変更値０又は＋１」
「ビット１なら変更値−１又は０、ビット０なら変更値＋１」
即ち、ビット０／１のどちらかのケースで、変更値を“０”と“＋１”、もしくは“０”と“−１”のいずれかを選択することが必要になる。ただし、透かし埋め込み前の量子化係数の値が“０”の場合、上記実施の形態１と同様に、量子化係数の値を“０”のままとせず、“＋１”あるいは“−１”のいずれかとする。
この選択の際に、上記実施の形態１と同様に、「変更後の値でエントロピー符号化した場合の符号長を比較する」ことになる。
【００３９】
図７はこの発明の実施の形態２による画像生成装置の処理内容の一部を示すフローチャートである。
以上を踏まえて、量子化係数変更部３による量子化係数の値の変更処理を具体的に説明する。
まず、量子化係数変更部３は、量子化係数選択部２から出力された量子化係数位置情報を参照して、量子化係数算出部１から出力された先頭の量子化係数から順番に、当該量子化係数が、透かしの埋め込み位置にある量子化係数であるか否かを判定する（ステップＳＴ２１）。
【００４０】
量子化係数変更部３は、当該量子化係数が、透かしの埋め込み位置にある量子化係数である場合、透かしデータのビット列を参照して、埋め込みビットが“１”であるのか、“０”であるのかを特定し、上記の変更ルールにしたがって当該量子化係数に対する変更値候補が複数あるか否かを判定する（ステップＳＴ２２）。
例えば、透かし埋め込み前の量子化係数の値が“３”である場合、埋め込みビットが“１”であれば、当該量子化係数に対する変更値候補として、変更値候補Ａ（＝量子化係数の値＋１）と、変更値候補Ｃ（＝量子化係数の値）の２つが用意されているので、変更値候補が複数あると判断する。
一方、埋め込みビットが“０”であれば、当該量子化係数に対する変更値候補として、変更値候補Ｂ（＝量子化係数の値−１）だけが用意されているので、変更値候補が複数ないと判断する。
【００４１】
量子化係数変更部３は、当該量子化係数に対する変更値候補が複数あると判断すると（ここでは、説明の便宜上、複数の変更値候補が、変更値候補Ａ，Ｃであるとして説明する）、最初に、２つの変更値候補Ａ，Ｃの中から、変更値候補Ａを選択し（ステップＳＴ２３）、局所的なランレングスを用いてハフマンテーブルを参照することにより（ステップＳＴ２４）、その変更値候補Ａ（＝量子化係数＋１）がエントロピー符号化されて符号語が生成された場合の当該符号語の符号長Ｐを特定する（ステップＳＴ２５）。
次に、２つの変更値候補Ａ，Ｃの中から、変更値候補Ｃを選択し（ステップＳＴ２６）、局所的なランレングスを用いてハフマンテーブルを参照することにより（ステップＳＴ２７）、その変更値候補Ｃ（＝量子化係数の値）がエントロピー符号化されて符号語が生成された場合の当該符号語の符号長Ｒを特定する（ステップＳＴ２８）。
【００４２】
量子化係数変更部３は、符号長Ｐと符号長Ｒを特定すると、その符号長Ｐと符号長Ｒを比較し（ステップＳＴ２９）、その符号長Ｐが符号長Ｒより短ければ（Ｐ＜Ｒ）、透かし埋め込み前の量子化係数の値を変更値候補Ａに変更する。即ち、透かし埋め込み前の量子化係数の値を“１”だけ増やす変更を行う（ステップＳＴ３０）。
一方、その符号長Ｐが符号長Ｒより長ければ（Ｐ≧Ｒ）、透かし埋め込み前の量子化係数の値を変更値候補Ｃに変更する。即ち、透かし埋め込み前の量子化係数の値を変更せずに、そのままの値とする（ステップＳＴ３１）。
量子化係数変更部３は、当該量子化係数に対する変更値候補が複数ないと判断すると、透かし埋め込み前の量子化係数の値を変更値候補Ｂに変更する。即ち、透かし埋め込み前の量子化係数の値を“１”だけ減らす変更を行う（ステップＳＴ３２）。
【００４３】
なお、量子化係数変更部３は、当該量子化係数が透かしの埋め込み位置にある量子化係数でない場合、当該量子化係数の値を変更しない。
量子化係数変更部３は、量子化係数算出部１から出力された全ての量子化係数に対して、ステップＳＴ２１〜ＳＴ３２の処理を実施する（ステップＳＴ３３，ＳＴ３４）。
エントロピー符号化部４は、量子化係数変更部３による量子化係数の値の変更処理が完了すると、変更処理後の量子化係数をエントロピー符号化して符号語を生成し、その符号語である符号化画像Ｂを出力する。
【００４４】
以上で明らかなように、この実施の形態２によれば、量子化係数変更部３が、透かし埋め込み前の量子化係数の値を変更しないで、当該量子化係数がエントロピー符号化されて符号語が生成された場合の当該符号語の符号長Ｒを特定し、その符号語の符号長Ｒが、変更値候補Ａに係る符号語の符号長Ｐより短い場合、当該量子化係数の値を変更しないように構成したので、上記実施の形態１よりも更に、透かしデータを埋め込むことに伴う符号化データ量の増大や画質劣化を抑制することができる効果を奏する。
【００４５】
実施の形態３．
上記実施の形態１，２では、量子化係数変更部３とエントロピー符号化部４が実装されているものを示したが、量子化係数変更部３が量子化係数の値を変更する際、ハフマンテーブルの参照処理（または、符号語の生成処理）が行われ、この処理が、エントロピー符号化部４におけるハフマンテーブルの参照処理（または、符号語の生成処理）と重複しているので、量子化係数変更部３とエントロピー符号化部４を１つの処理部に纏めるようにしてもよい。
【００４６】
図８はこの発明の実施の形態３による画像生成装置を示す構成図であり、図において、図１と同一符号は同一または相当部分を示すので説明を省略する。
エントロピー符号化部１１は例えばＣＰＵを実装している半導体集積回路、あるいは、ワンチップマイコンなどから構成されており、量子化係数算出部１から出力された量子化係数の中で、量子化係数選択部２により選択された量子化係数の値を変更する変更処理及び変更処理後の量子化係数を圧縮符号化して符号語を生成する符号語生成処理を並列的に行う処理部である。
即ち、エントロピー符号化部１１は量子化係数選択部２により選択された量子化係数毎に、当該量子化係数に対する複数の変更値候補を特定し、複数の変更値候補を圧縮符号化して符号語を生成するとともに、その符号語の符号長を特定し、複数の符号語の中から符号長が最も短い符号語を選択する処理を実施する。
なお、エントロピー符号化部１１は圧縮符号化手段を構成している。
【００４７】
図８の例では、画像生成装置の構成要素である量子化係数算出部１、量子化係数選択部２及びエントロピー符号化部１１のそれぞれが専用のハードウェアで構成されているものを想定しているが、量子化係数算出部１、量子化係数選択部２及びエントロピー符号化部１１の処理内容を記述しているプログラムをコンピュータのメモリに格納し、当該コンピュータのＣＰＵが当該メモリに格納されているプログラムを実行するようにしてもよい。
図９はこの発明の実施の形態３による画像生成装置の処理内容の一部を示すフローチャートである。
【００４８】
次に動作について説明する。
ただし、量子化係数算出部１及び量子化係数選択部２の処理内容は、上記実施の形態１と同様であるため説明を省略し、エントロピー符号化部１１の処理内容を説明する。
エントロピー符号化部１１は、量子化係数選択部２から出力された量子化係数位置情報を参照して、量子化係数算出部１から出力された先頭の量子化係数から順番に、当該量子化係数が、透かしの埋め込み位置にある量子化係数であるか否かを判定する（ステップＳＴ４１）。
エントロピー符号化部１１は、当該量子化係数が、透かしの埋め込み位置にある量子化係数である場合、透かしデータのビット列を参照して、埋め込みビットが“１”であるのか、“０”であるのかを特定し、変更ルール（例えば、実施の形態１に記述している変更ルール）にしたがって当該量子化係数の値を変更する必要があるか否かを判断する（ステップＳＴ４２）。
例えば、透かし埋め込み前の量子化係数の値が“２”である場合、埋め込みビットが“１”であれば、当該量子化係数の値を変更する必要がないと判断し、埋め込みビットが“０”であれば、当該量子化係数の値を変更する必要があると判断する。
【００４９】
エントロピー符号化部１１は、当該量子化係数の値を変更する必要があると判断すると、当該量子化係数の変更値候補として、透かし埋め込み前の量子化係数の値より、＋１だけ大きい変更値候補Ａと、透かし埋め込み前の量子化係数の値より、−１だけ小さい変更値候補Ｂとを用意する。
エントロピー符号化部１１は、最初に、２つの変更値候補Ａ，Ｂの中から、変更値候補Ａを選択し（ステップＳＴ４３）、局所的なランレングスを用いてハフマンテーブルを参照することにより（ステップＳＴ４４）、その変更値候補Ａがエントロピー符号化されて生成された場合の符号語ＨＰを特定するとともに、その符号語ＨＰの符号長Ｐを特定する（ステップＳＴ４５）。
【００５０】
次に、２つの変更値候補Ａ，Ｂの中から、変更値候補Ｂを選択し（ステップＳＴ４６）、局所的なランレングスを用いてハフマンテーブルを参照することにより（ステップＳＴ４７）、その変更値候補Ｂがエントロピー符号化されて生成された場合の符号語ＨＱを特定するとともに、その符号語ＨＱの符号長Ｑを特定する（ステップＳＴ４８）。
ここでは、エントロピー符号化部１１がハフマンテーブルの参照処理を実施することで、符号語ＨＰ，ＨＱを特定しているが、量子化係数変更部３が変更値候補Ａ，Ｂのエントロピー符号化を実施することで符号語ＨＰ，ＨＱを生成するとともに、その符号語の語数を数えることで、符号長Ｐ，Ｑを特定するようにしてもよい。
【００５１】
エントロピー符号化部１１は、符号長Ｐと符号長Ｑを特定すると、その符号長Ｐと符号長Ｑを比較し（ステップＳＴ４９）、その符号長Ｐが符号長Ｑより短ければ（Ｐ＜Ｑ）、エントロピー符号化後の量子化係数として、符号語ＨＰを出力する（ステップＳＴ５０）。
一方、その符号長Ｐが符号長Ｑより長ければ（Ｐ≧Ｑ）、エントロピー符号化後の量子化係数として、符号語ＨＱを出力する（ステップＳＴ５１）。
【００５２】
エントロピー符号化部１１は、当該量子化係数が透かしの埋め込み位置にある量子化係数でない場合、あるいは、当該量子化係数の値を変更する必要がないと判断する場合、当該量子化係数の値が“０”であるか否かを判定する（ステップＳＴ５２）。
エントロピー符号化部１１は、当該量子化係数の値が“０”でない場合、局所的なランレングスを用いてハフマンテーブルを参照することにより（ステップＳＴ５３）、その量子化係数の値がエントロピー符号化されて生成された場合の符号語Ｈを特定する（ステップＳＴ５４）。あるいは、当該量子化係数の値をエントロピー符号化することで符号語Ｈを生成する。
そして、エントロピー符号化後の量子化係数として、その符号語Ｈを出力する（ステップＳＴ５５）。
【００５３】
エントロピー符号化部１１は、量子化係数算出部１から出力された全ての量子化係数に対して、ステップＳＴ４１〜ＳＴ５５の処理を実施する（ステップＳＴ５６〜ＳＴ５９）。
なお、エントロピー符号化部１１は、当該量子化係数の値が“０”であり（ステップＳＴ５２）、当該量子化係数が最後の量子化係数であれば（ステップＳＴ５８）、ＥＯＢ（Ｅｎｄ  Ｏｆ  Ｂｌｏｃｋ）符号を出力して、ブロック内でのエントロピー符号化処理を終了する。
【００５４】
以上で明らかなように、この実施の形態３によれば、エントロピー符号化部１１が、量子化係数算出部１から出力された量子化係数の中で、量子化係数選択部２により選択された量子化係数の値を変更する変更処理及び変更処理後の量子化係数を圧縮符号化して符号語を生成する符号語生成処理を並列的に行うように構成したので、ハフマンテーブルの参照処理（または、符号語の生成処理）が重複して行われる無駄が排除されるようになり、装置全体の処理の高速化を実現することができる効果を奏する。
【００５５】
実施の形態４．
図１０はこの発明の実施の形態４による画像生成装置を示す構成図であり、図において、図１と同一符号は同一または相当部分を示すので説明を省略する。
周波数変換部２１は例えばＣＰＵを実装している半導体集積回路、あるいは、ワンチップマイコンなどから構成されており、非圧縮画像Ａを入力すると、その非圧縮画像ＡをＤＣＴ（周波数変換）して、その変換結果を示すＤＣＴ係数（周波数変換値）を出力する処理を実施する。なお、周波数変換部２１は周波数変換手段を構成している。
量子化係数算出部２２は例えばＣＰＵを実装している半導体集積回路、あるいは、ワンチップマイコンなどから構成されており、周波数変換部２１から出力されたＤＣＴ係数を量子化し、その量子化結果を示す量子化係数を出力する処理を実施する。なお、量子化係数算出部２２は量子化手段を構成している。
【００５６】
量子化係数変更部２３は例えばＣＰＵを実装している半導体集積回路、あるいは、ワンチップマイコンなどから構成されており、量子化係数算出部２２から出力された量子化係数の中で、量子化係数選択部２から出力された量子化係数位置情報が示す位置にある量子化係数の値を変更する変更処理を実施する。
即ち、量子化係数変更部２３は量子化係数選択部２から出力された量子化係数位置情報が示す位置にある量子化係数毎に、当該量子化係数に対する複数の変更値候補を特定し、複数の変更値候補の中から、周波数変換部２１から出力されたＤＣＴ係数の値と最も近い変更値候補を選択して、当該量子化係数の値を上記変更値候補に変更する処理を実施する。
なお、量子化係数変更部２３は量子化係数変更手段を構成している。
【００５７】
図１０の例では、画像生成装置の構成要素である周波数変換部２１、量子化係数算出部２２、量子化係数選択部２、量子化係数変更部２３及びエントロピー符号化部４のそれぞれが専用のハードウェアで構成されているものを想定しているが、周波数変換部２１、量子化係数算出部２２、量子化係数選択部２、量子化係数変更部２３及びエントロピー符号化部４の処理内容を記述しているプログラムをコンピュータのメモリに格納し、当該コンピュータのＣＰＵが当該メモリに格納されているプログラムを実行するようにしてもよい。
図１１はこの発明の実施の形態４による画像生成装置の処理内容の一部を示すフローチャートである。
【００５８】
次に動作について説明する。
周波数変換部２１は、非圧縮画像Ａを入力すると、その非圧縮画像ＡをＤＣＴして、その変換結果を示すＤＣＴ係数を量子化係数算出部２２及び量子化係数変更部２３に出力する。
量子化係数算出部２２は、周波数変換部２１からＤＣＴ係数を受けると、そのＤＣＴ係数を量子化し、その量子化結果を示す量子化係数を量子化係数選択部２及び量子化係数変更部２３に出力する。
【００５９】
量子化係数選択部２は、透かしデータのビット列を入力すると、上記実施の形態１と同様に、量子化係数算出部１から出力された量子化係数の中から、透かしデータのビット数と同じ個数の量子化係数を選択し、その量子化係数の位置を示す量子化係数位置情報を量子化係数変更部２３に出力する。
量子化係数変更部２３は、量子化係数選択部２から量子化係数位置情報を受けると、量子化係数算出部２２から出力された量子化係数の中で、その量子化係数位置情報が示す位置にある量子化係数の値を変更する変更処理を実施する。
【００６０】
ここで、図１２は量子化係数の値の変更に係る基本概念を示す説明図である。
図１２において、上段の数直線が透かし埋め込み後の量子化係数の値、中段の数直線が透かし埋め込み前の量子化係数の値を表現しており、下段の数直線が量子化前のＤＣＴ係数の値を表現している。
【００６１】
図１２に示すように、変更前の量子化係数の値が“３”である場合、ビット１の埋め込みであれば、変更値候補が“２”と“４”になる。
この実施の形態４では、変更値候補の選定基準として、量子化前のＤＣＴ係数の値を用いる。
例えば、量子化前のＤＣＴ係数の値が“３．２”であれば、変更値候補が“２”と“４”のうち、ＤＣＴ係数の値“３．２”に近い変更値候補は、変更値候補“４”であるため、変更値候補“４”を選択する。
【００６２】
以上を踏まえて、量子化係数変更部２３による量子化係数の値の変更処理を具体的に説明する。
まず、量子化係数変更部２３は、図１の量子化係数変更部３と同様に、量子化係数選択部２から出力された量子化係数位置情報を参照して、量子化係数算出部２２から出力された先頭の量子化係数から順番に、当該量子化係数が、透かしの埋め込み位置にある量子化係数であるか否かを判定する（ステップＳＴ７１）。
【００６３】
量子化係数変更部２３は、当該量子化係数が、透かしの埋め込み位置にある量子化係数である場合、図１の量子化係数変更部３と同様に、透かしデータのビット列を参照して、埋め込みビットが“１”であるのか、“０”であるのかを特定し、変更ルール（例えば、実施の形態１に記述している変更ルール）にしたがって当該量子化係数の値を変更する必要があるか否かを判断する（ステップＳＴ７２）。
【００６４】
量子化係数変更部２３は、当該量子化係数の値を変更する必要があると判断すると、当該量子化係数に対して“１”を加えた値と、周波数変換部２１から出力されたＤＣＴ係数の値との差分絶対値Ｆを算出する（ステップＳＴ７３）。
また、量子化係数変更部２３は、当該量子化係数から“１”を減じた値と、周波数変換部２１から出力されたＤＣＴ係数の値との差分絶対値Ｇを算出する（ステップＳＴ７４）。
【００６５】
量子化係数変更部２３は、差分絶対値Ｆと差分絶対値Ｇを算出すると、その差分絶対値Ｆと差分絶対値Ｇを比較し（ステップＳＴ７５）、その差分絶対値Ｆが差分絶対値Ｇより小さければ（Ｆ＜Ｇ）、透かし埋め込み前の量子化係数の値を“１”だけ増やす変更を行う（ステップＳＴ７６）。
一方、その差分絶対値Ｆが差分絶対値Ｇより大きければ（Ｆ≧Ｇ）、透かし埋め込み前の量子化係数の値を“１”だけ減らす変更を行う（ステップＳＴ７７）。
【００６６】
なお、量子化係数変更部２３は、当該量子化係数が透かしの埋め込み位置にある量子化係数でない場合、あるいは、当該量子化係数の値を変更する必要がないと判断する場合、当該量子化係数の値を変更しない。
量子化係数変更部２３は、量子化係数算出部２２から出力された全ての量子化係数に対して、ステップＳＴ７１〜ＳＴ７７の処理を実施する（ステップＳＴ７８，ＳＴ７９）。
【００６７】
エントロピー符号化部４は、量子化係数変更部２３による量子化係数の値の変更処理が完了すると、上記実施の形態１と同様に、変更処理後の量子化係数をエントロピー符号化して符号語を生成し、その符号語である符号化画像Ｂを出力する。
【００６８】
以上で明らかなように、この実施の形態４によれば、量子化係数変更部２３が、量子化係数選択部２から出力された量子化係数位置情報が示す位置にある量子化係数毎に、当該量子化係数に対する複数の変更値候補を特定し、複数の変更値候補の中から、周波数変換部２１から出力されたＤＣＴ係数の値と最も近い変更値候補を選択して、当該量子化係数の値を上記変更値候補に変更するように構成したので、透かしデータを埋め込むことに伴う符号化データ量の増大や画質劣化を抑制することができる効果を奏する。
【００６９】
実施の形態５．
上記実施の形態４では、量子化係数算出部２２が周波数変換部２１から出力されたＤＣＴ係数を量子化したのち、量子化係数変更部２３が量子化係数算出部２２から出力された量子化係数の中で、量子化係数選択部２から出力された量子化係数位置情報が示す位置にある量子化係数の値を変更するものを示したが、この実施の形態５では、量子化係数の値を変更する変更処理を実施することなく、量子化係数変更部２３による変更処理後の量子化係数と同様の量子化係数が得られるようにしている。
【００７０】
図１３はこの発明の実施の形態５による画像生成装置を示す構成図であり、図において、図１０と同一符号は同一または相当部分を示すので説明を省略する。
量子化係数選択部３１は例えばＣＰＵを実装している半導体集積回路、あるいは、ワンチップマイコンなどから構成されており、周波数変換部２１から出力されたＤＣＴ係数（周波数変換値）に対応する量子化係数の中から、透かしデータのビット数と同じ個数の量子化係数を選択する処理を実施する。なお、量子化係数選択部３１は量子化係数選択手段を構成している。
【００７１】
量子化係数算出部３２は例えばＣＰＵを実装している半導体集積回路、あるいは、ワンチップマイコンなどから構成されており、周波数変換部２１から出力されたＤＣＴ係数を量子化し、その量子化結果を示す量子化係数をエントロピー符号化部４に出力する処理を実施する。
ただし、量子化係数算出部３２は量子化係数選択部３１により選択された量子化係数については、その量子化係数の値に対する複数の変更値候補の中で、周波数変換部２１から出力されたＤＣＴ係数と最も近い変更値候補を選択し、その変更値候補を値とする量子化係数を出力する処理を実施する。
なお、量子化係数算出部３２は量子化手段を構成している。
【００７２】
図１３の例では、画像生成装置の構成要素である周波数変換部２１、量子化係数選択部３１、量子化係数算出部３２及びエントロピー符号化部４のそれぞれが専用のハードウェアで構成されているものを想定しているが、周波数変換部２１、量子化係数選択部３１、量子化係数算出部３２及びエントロピー符号化部４の処理内容を記述しているプログラムをコンピュータのメモリに格納し、当該コンピュータのＣＰＵが当該メモリに格納されているプログラムを実行するようにしてもよい。
図１４はこの発明の実施の形態４による画像生成装置の処理内容の一部を示すフローチャートである。
【００７３】
次に動作について説明する。
周波数変換部２１は、非圧縮画像Ａを入力すると、上記実施の形態４と同様に、その非圧縮画像ＡをＤＣＴ変換し、その変換結果を示すＤＣＴ係数を量子化係数選択部３１及び量子化係数算出部３２に出力する。
量子化係数選択部３１は、透かしデータのビット列を入力すると、周波数変換部２１から出力されたＤＣＴ係数に対応する量子化係数の中から、透かしデータのビット数と同じ個数の量子化係数を選択する。
即ち、周波数変換部２１から出力されたＤＣＴ係数が、量子化係数算出部３２により量子化されて量子化係数が出力されるが、その量子化係数の位置が透かしを埋め込む位置の量子化係数であれば、当該量子化係数を選択する。
【００７４】
量子化係数算出部３２は、周波数変換部２１からＤＣＴ係数を受けると、そのＤＣＴ係数を量子化し、その量子化結果を示す量子化係数をエントロピー符号化部４に出力する。
ただし、量子化係数算出部３２は、量子化係数選択部３１により選択された量子化係数については、その量子化係数の値に対する複数の変更値候補の中で、周波数変換部２１から出力されたＤＣＴ係数と最も近い変更値候補を選択し、その変更値候補を値とする量子化係数をエントロピー符号化部４に出力する。
【００７５】
ここで、図１５は量子化係数の値の変更に係る基本概念を示す説明図である。
図１５において、上段の数直線が透かし埋め込み後の量子化係数の値を表現しており、下段の数直線が量子化前のＤＣＴ係数の値を表現している。
この実施の形態５では、上記実施の形態４のような量子化係数の値を変更する処理は実施しないが、仮に、変更前の量化係数の値が“３”で、量子化前のＤＣＴ係数が“３．２”である場合、ビット０の埋め込みであれば、量子化係数の値が“３”に決定され、ビット１の埋め込みであれば、量子化係数の値が“４”に決定される様子を示している。
この実施の形態５では、図１１における中間状態（変更前の量子化係数の値）を省略することで、ダイレクトにＤＣＴ係数を最寄りの埋め込みビットの０／１に対応する量子化値に帰着させるようにしている。
【００７６】
以上を踏まえて、量子化係数算出部３２による量子化係数の値の算出処理を具体的に説明する。
まず、量子化係数算出部３２は、量子化係数選択部３１から出力された量子化係数位置情報を参照して、周波数変換部２１から出力された先頭のＤＣＴ係数から順番に、当該ＤＣＴ係数に対応する量子化係数が、透かしの埋め込み位置にある量子化係数であるか否かを判定する（ステップＳＴ８１）。
量子化係数算出部３２は、当該量子化係数が、透かしの埋め込み位置にある量子化係数である場合、透かしデータのビット列を参照して、埋め込みビットが“１”であるのか、“０”であるのかを判定する（ステップＳＴ８２）。
【００７７】
量子化係数算出部３２は、埋め込みビットが“０”である場合、量子化前のＤＣＴ係数に最も近い量子化係数の値を特定し、その量子化係数をエントロピー符号化部４に出力する（ステップＳＴ８３）。
例えば、量子化前のＤＣＴ係数が“３．２”であれば、量子化係数の値を“３”に決定し、量子化前のＤＣＴ係数が“４．７”であれば、量子化係数の値を“５”に決定する。
一方、埋め込みビットが“１”である場合、量子化係数の値に対する複数の変更値候補の中で（例えば、ＤＣＴ係数が“３．２”であれば、図１２に示すように、変更値候補は、“２”と“４”である）、量子化前のＤＣＴ係数と最も近い変更値候補を選択する。例えば、ＤＣＴ係数が“３．２”であれば、変更値候補“４”を選択する。
量子化係数算出部３２は、量子化前のＤＣＴ係数と最も近い変更値候補を選択すると、その変更値候補を値とする量子化係数をエントロピー符号化部４に出力する（ステップＳＴ８４）。
【００７８】
量子化係数算出部３２は、当該量子化係数が透かしの埋め込み位置にある量子化係数でない場合、通常通り、当該量子化係数を量子化して、その量子化結果を示す量子化係数をエントロピー符号化部４に出力する（ステップＳＴ８５）。
量子化係数算出部３２は、周波数変換部２１から出力された全てのＤＣＴ係数に対して、ステップＳＴ８１〜ＳＴ８７の処理を実施する（ステップＳＴ８６，ＳＴ８７）。
エントロピー符号化部４は、量子化係数算出部３２から量子化係数を受けると、上記実施の形態１と同様に、その量子化係数をエントロピー符号化して符号語を生成する。
【００７９】
以上で明らかなように、この実施の形態５によれば、量子化係数算出部３２が、量子化係数選択部３１により選択された量子化係数については、その量子化係数の値に対する複数の変更値候補の中で、周波数変換部２１から出力されたＤＣＴ係数と最も近い変更値候補を選択し、その変更値候補を値とする量子化係数を出力するように構成したので、透かしデータを埋め込むことに伴う符号化データ量の増大や画質劣化を抑制することができる効果を奏する。
また、上記実施の形態４と比べて、不要な量子化係数の値の算出及び変更を省略することができる効果がある。
【００８０】
なお、本願発明はその発明の範囲内において、各実施の形態の自由な組み合わせ、あるいは各実施の形態の任意の構成要素の変形、もしくは各実施の形態において任意の構成要素の省略が可能である。
【符号の説明】
【００８１】
１  量子化係数算出部（量子化手段）、２  量子化係数選択部（量子化係数選択手段）、３  量子化係数変更部（量子化係数変更手段）、４，１１  エントロピー符号化部（圧縮符号化手段）、５  誤り訂正符号化部、２１  周波数変換部（周波数変換手段）、２２  量子化係数算出部（量子化手段）、２３  量子化係数変更部（量子化係数変更手段）、３１  量子化係数選択部（量子化係数選択手段）、３２  量子化係数算出部（量子化手段）。
【図１】
2012120087.tif 000003
【図２】
2012120087.tif 000004
【図３】
2012120087.tif 000005
【図４】
2012120087.tif 000006
【図５】
2012120087.tif 000007
【図６】
2012120087.tif 000008
【図７】
2012120087.tif 000009
【図８】
2012120087.tif 000010
【図９】
2012120087.tif 000011
【図１０】
2012120087.tif 000012
【図１１】
2012120087.tif 000013
【図１２】
2012120087.tif 000014
【図１３】
2012120087.tif 000015
【図１４】
2012120087.tif 000016
【図１５】
2012120087.tif 000017