説明

情報埋め込み装置、情報特定装置、画像検証装置およびプログラム

【課題】情報を埋め込むことで画像内容が元の画像内容と異ならないようにすること。
【解決手段】情報埋め込み装置は、画像データに情報を埋め込む情報埋め込み装置であって、埋め込み情報を取得する埋め込み情報取得部と、符号化対象の画像データである符号化対象データを取得する符号化対象データ取得部と、符号化対象データのうち、第1符号を用いて符号化できるデータ部分を検出するデータ検出部と、データ検出部が検出したデータ部分が第2符号で表されるデータを含むか否かを判断するデータ判断部と、第2符号で表されるデータを含むと判断されたデータ部分を、第2符号を用いて符号化するか否かを、埋め込み情報に基づいて決定する符号決定部と、第2符号で表されるデータを含むと判断されたデータ部分を、符号決定部の決定に従って符号化する符号化部と、を備える。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報埋め込み装置、情報特定装置、画像検証装置およびプログラムに関する。
【背景技術】
【0002】
ブロックのDCT係数を量子化した量子化インデックスをランレングス化し、ランレングスデータの最後にダミーのランを追加して、当該ダミーのランの後に、署名データの各ビットの値に応じた値を埋め込む技術が知られている(例えば、特許文献1参照)。
[先行技術文献]
[特許文献]
[特許文献1]特開2004−242162号公報
【発明の概要】
【発明が解決しようとする課題】
【0003】
人の目に知覚されにくいように署名データを埋め込むことができたとしても、ダミーのランを追加して署名データを埋め込むので、署名データの埋め込む前と画像内容の同一性を保証することはできない。従来、情報を埋め込むことによって、情報が埋め込まれた画像データが表す画像内容が、元の画像データが表す画像内容と異なってしまうという課題があった。
【課題を解決するための手段】
【0004】
本発明の第1の態様においては、画像データに情報を埋め込む情報埋め込み装置であって、埋め込み情報を取得する埋め込み情報取得部と、符号化対象の画像データである符号化対象データを取得する符号化対象データ取得部と、符号化対象データのうち、第1符号を用いて符号化できるデータ部分を検出するデータ検出部と、データ検出部が検出したデータ部分が第2符号で表されるデータを含むか否かを判断するデータ判断部と、第2符号で表されるデータを含むと判断されたデータ部分を、第2符号を用いて符号化するか否かを、埋め込み情報に基づいて決定する符号決定部と、第2符号で表されるデータを含むと判断されたデータ部分を、符号決定部の決定に従って符号化する符号化部と、を備える。
【0005】
本発明の第2の態様においては、符号化された画像データに埋め込まれている埋め込み情報を特定する情報特定装置であって、符号化された画像データである画像符号化データを取得する符号化データ取得部と、画像符号化データから、第1符号および第2符号の少なくとも一方を含む符号化データ部分を検出する符号検出部と、符号化データ部分が第2符号を含むか否かに基づいて、埋め込み情報を特定する埋め込み情報特定部と、を備え、符号検出部は、第2符号で表されるデータを含み、かつ、第1符号で表すことができるデータ部分に対応する符号化データ部分を検出する。
【0006】
本発明の第3の態様においては、画像データに情報を埋め込む情報埋め込み装置用のプログラムであって、埋め込み情報を取得する埋め込み情報取得ステップと、符号化対象の画像データである符号化対象データを取得する符号化対象データ取得ステップと、前記符号化対象データのうち、第1符号を用いて符号化できるデータ部分を検出するデータ検出ステップと、データ検出ステップで検出されたデータ部分が第2符号で表されるデータを含むか否かを判断するデータ判断ステップと、第2符号で表されるデータを含むと判断されたデータ部分を、前記第2符号を用いて符号化するか否かを、前記埋め込み情報に基づいて決定する符号決定ステップと、第2符号で表されるデータを含むと判断されたデータ部分を、前記符号決定ステップにおける決定に従って符号化する符号化ステップと、をコンピュータに実行させるプログラム。
【0007】
本発明の第4の態様においては、符号化された画像データに埋め込まれている埋め込み情報を特定する情報特定装置用のプログラムであって、符号化された画像データである画像符号化データを取得する符号化データ取得ステップと、前記画像符号化データから、第1符号および第2符号の少なくとも一方を含む符号化データ部分を検出する符号検出ステップと、前記符号化データ部分が前記第2符号を含むか否かに基づいて、前記埋め込み情報を特定する埋め込み情報特定ステップと、をコンピュータに実行させ、前記符号検出ステップは、前記第2符号で表されるデータを含み、かつ、前記第1符号で表すことができるデータ部分に対応する符号化データ部分を検出する、プログラム。
【0008】
なお、上記の発明の概要は、本発明の必要な特徴の全てを列挙したものではない。また、これらの特徴群のサブコンビネーションもまた、発明となりうる。
【図面の簡単な説明】
【0009】
【図1】撮像装置100のシステム構成図の一例を示す。
【図2】ASIC135が有する機能ブロック構成の一例を示す。
【図3】符号化部226が有する機能ブロック構成の一例を示す。
【図4】復号部242が有する機能ブロック構成の一例を示す。
【図5】DCT係数データのDC成分に対する前処理を示す。
【図6】AC成分を含むDCT係数データに対する前処理を示す。
【図7】DC差分の符号化に用いる符号表を示す。
【図8】DCT係数データのAC成分の符号化に用いる符号表を示す。
【図9】AC成分の符号表の一般構造を示す。
【図10】埋め込み情報を埋め込む処理の一例を説明する図である。
【図11】埋め込み情報であるバイナリデータを複数のブロックに埋め込む処理を説明する図である。
【図12】静止画の撮像が指示された場合の撮像装置100の動作フローの一例を示す。
【図13】DCT係数データを符号化する場合の動作フローの一例を示す。
【図14】真正性情報を画像に埋め込む場合の動作フローの一例を示す。
【図15】画像を検証する場合における撮像装置100の動作フローの一例を示す。
【図16】画像符号化データを復号する場合の動作フローの一例を示す。
【発明を実施するための形態】
【0010】
以下、発明の実施の形態を通じて本発明を説明するが、以下の実施形態は特許請求の範囲にかかる発明を限定するものではない。また、実施形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。
【0011】
図1は、撮像装置100のシステム構成図の一例を示す。撮像装置100は、画像内容の同一性を保証しつつ画像データに情報を埋め込む。例えば、撮像装置100は、静止画データをJPEG方式で圧縮および符号化する場合に、ハフマン符号化の工程で、埋め込むバイナリデータのビット値に応じて、ハフマン符号化で定められた異なる符号を適用する。ここで、いずれの符号を適用しても同一のDCT係数データを表すように、バイナリデータのビット値に応じて適用する符号を選択する。これにより、情報を埋め込むことで、情報の埋め込み前と画像内容が異ならないようにする。
【0012】
まず、撮像装置100のシステム構成の概要を説明する。撮像装置100は、交換レンズ120およびカメラ本体130を備える。交換レンズ120は、レンズマウント接点121を有するレンズマウントを備え、カメラ本体130は、カメラマウント接点131を有するカメラマウントを備える。レンズマウントとカメラマウントとが係合して交換レンズ120とカメラ本体130とが一体化されると、レンズマウント接点121とカメラマウント接点131が接続される。撮像装置100は、交換レンズ120とカメラ本体130とが一体化した状態で一眼レフカメラとして機能する。レンズMPU123は、レンズマウント接点121およびカメラマウント接点131を介してカメラMPU133と接続され、相互に通信しつつ協働して交換レンズ120とカメラ本体130を制御する。
【0013】
被写体光は、光軸に沿って撮像光学系としてのレンズ群122を透過して、カメラ本体130に入射する。メインミラー150は、レンズ群122の光軸を中心とする被写体光束中に斜設される斜設状態と、被写体光束から退避する退避状態を取り得る。
【0014】
メインミラー150が斜設状態にある場合、メインミラー150は、レンズ群122を通過した被写体光束の一部を反射する。メインミラー150により反射された被写体光束は光学ファインダ部156に導かれて、ユーザに観察される。ユーザは、光学ファインダ部156を通じて構図等を確認することができる。
【0015】
斜設状態におけるメインミラー150の光軸近傍領域は、ハーフミラーとして形成されており、入射される被写体光束の一部が透過する。メインミラー150の光軸近傍領域を透過した被写体光束は、サブミラー151で反射されて、合焦センサ142へ導かれる。合焦センサ142は、被写体光束を受光する複数の光電変換素子列を有する。光電変換素子列は、合焦状態にある場合には位相が一致した信号を出力し、前ピン状態または後ピン状態にある場合には、位相ずれした信号を出力する。位相のずれ量は、焦点状態からのずれ量に対応する。合焦センサ142は、光電変換素子列の出力を相関演算することで位相差を検出して、位相差を示す位相差信号をカメラMPU133に出力する。
【0016】
レンズ群122の焦点状態は、カメラMPU133等の制御により、合焦センサ142からの位相差信号を用いて調節される。例えば、カメラMPU133によって、位相差信号に基づき検出された焦点状態に基づきフォーカスレンズの目標位置が決定され、レンズMPU123の制御により、決定された目標位置に向けてフォーカスレンズの位置が制御される。具体的には、レンズMPU123は、交換レンズ120が備えるフォーカスレンズモータを制御して、レンズ群122を構成するフォーカスレンズを移動させる。このように、メインミラー150がダウンして斜設状態にある場合に、位相差検出方式でレンズ群122の焦点状態が検出されて焦点調節が行われる。なお、合焦センサ142は、被写体像の特定の領域に対応してそれぞれ設けられ、複数の焦点調整領域のそれぞれにおいて焦点状態を調節することができる。
【0017】
メインミラー150が被写体光束から退避すると、サブミラー151はメインミラー150に連動して被写体光束から退避する。メインミラー150が退避状態にある場合、レンズ群122を透過した被写体光束は、撮像素子132の受光面に入射する。
【0018】
撮像素子132は、撮像部として機能し、レンズ群122を通過した被写体光束により被写体を撮像する。撮像素子132としては、例えばCCDセンサ、CMOSセンサ等の固体撮像素子を例示することができる。撮像素子132は、被写体光束を受光して生じた電荷を蓄積する複数の光電変換素子を有する。撮像素子132は、カメラMPU133からの指示を受けた駆動部140によって駆動され、複数の光電変換素子でそれぞれ生じた蓄積電荷の量に応じたアナログ信号をA/D変換器134に出力する。A/D変換器134は、撮像素子132から出力されたアナログ信号をデジタル信号に変換して画像データとして出力する。
【0019】
A/D変換器134が出力した画像データは、SDRAM136に記憶される。SDRAM136の少なくとも一部のメモリ領域は、撮像により生成された画像データを一時的に記憶するワークエリアとして使用される。撮像素子132が被写体光束で連続して撮像した場合、撮像により順次に生成される画像データはワークエリアに順次に記憶される。例えば、被写体光束で連続して静止画を撮像することにより得られた複数の静止画の画像データが、ワークエリアに順次に記憶される。また、被写体光束で動画を撮像することにより得られた動画を構成する複数の画像の画像データが、ワークエリアに順次に記憶される。なお、動画を構成する画像の画像データを、特にフレームと呼ぶ場合がある。SDRAM136は、記録用の動画データを生成する場合にフレームを一時的に記憶するフレームメモリとしても機能する。
【0020】
ASIC135は、SDRAM136に記憶された画像データを処理する。ASIC135は、画像処理機能に関連する回路を一つにまとめた集積回路であり、画像処理装置の一部として機能する。ASIC135が有する画像処理機能としては、いわゆるコントラストAF用の画像処理、記録用の画像データを生成する画像処理等を例示することができる。
【0021】
例えば、ASIC135は、画像データからコントラスト量を検出してカメラMPU133に供給する。例えば、カメラMPU133は、異なる位置にフォーカスレンズを位置させて撮像素子132で撮像させ、ASIC135によって検出されたコントラスト量とフォーカスレンズの位置とに基づいて、レンズ群122の焦点状態を調節する。例えば、カメラMPU133によって、コントラスト量を増大させるようフォーカスレンズの目標位置が決定され、レンズMPU123によって、決定された目標位置に向けてフォーカスレンズの位置が制御される。このように、メインミラー150がアップして退避状態にある場合に、コントラスト検出方式でレンズ群122の焦点状態が検出されて焦点調節が行われる。このように、カメラMPU133は、レンズMPU123と協働して、レンズ群122の焦点調節を行う。
【0022】
また、ASIC135は、記録用の画像データを生成する画像処理として、欠陥画素補正、ホワイトバランス補正、色補間処理、色補正、ガンマ補正、輪郭強調処理等の画像処理を行う。また、ASIC135は、画像処理が施された画像データを、規格化された画像フォーマットの画像データに変換して出力する。例えば、ASIC135は、静止画の画像データを、JPEG等の規格に準拠した圧縮および符号処理を施して、静止画データを生成する。ASIC135は、生成した静止画データにExif等の予め定められたフォーマットで付帯情報を付帯して、記録用の静止画データを生成する。
【0023】
また、ASIC135は、動画を構成する複数のフレームを、Motion JPEG、H.264、MPEG2等の規格に準拠した圧縮および符号化処理を施して、動画データを生成する。カメラMPU133は、ASIC135によって生成された記録用の静止画データ、動画データ等の記録用の画像データを、不揮発性の記録媒体の一例としての外部メモリ160に転送して記録させる。外部メモリ160としては、例えばフラッシュメモリ等の半導体メモリを例示することができる。なお、カメラMPU133は、静止画データ、動画データ等の画像データを外部メモリ160に記録させる他、画像データをネットワーク等の伝送路に出力させてもよい。
【0024】
ASIC135は、撮像時においては記録用の画像データの生成に並行して、表示用の画像データを生成する。再生時においては、ASIC135は、外部メモリ160から読み出された画像データから表示用の画像データを生成する。生成された表示用の画像データは、表示制御部137の制御に従って表示画像信号に変換され、液晶ディスプレイ等の表示デバイスとしての表示部138に表示される。また、画像の表示と共に、もしくは画像を表示することなく、撮像装置100の各種設定に関する様々なメニュー項目も、表示制御部137の制御により表示部138に表示することができる。カメラMPU133は、表示制御部137を制御して、メニュー項目を表示部138に表示させる。
【0025】
撮像装置100は、上記に説明した制御を含めて、カメラMPU133により直接的または間接的に制御される。システムメモリ139は、電気的に消去・記憶可能な不揮発性メモリであり、例えばフラッシュROM等により構成される。システムメモリ139は、撮像装置100の動作に必要な定数、変数等の制御用のパラメータ、プログラム等を、撮像装置100の非動作時にも失われないように記憶している。カメラMPU133は、定数、変数、プログラム等をシステムメモリ139から適宜SDRAM136に展開して、撮像装置100の制御に利用する。カメラ本体130内の、ASIC135、SDRAM136、システムメモリ139、表示制御部137、カメラMPU133、外部メモリ160は、バス等の接続インタフェース145により、相互に接続される。
【0026】
操作入力部141は、ユーザ操作を受け付ける。操作入力部141は、電源ボタン、レリーズボタン、ライブビューボタン、動画撮像ボタンおよび各種操作ボタン等のキー、表示部138に一体に実装されたタッチパネル等の部材を含む。カメラMPU133は、操作入力部141が操作されたことを検知して、操作に応じた動作を実行する。例えば、カメラMPU133は、レリーズボタンが押し込みを検出した場合にレリーズ動作を実行するよう撮像装置100の各部を制御する。例えば、カメラMPU133は、撮像モードが連写撮像モードに設定されている場合、連続撮像の一例としての連写撮像を実行するよう撮像装置100の各部を制御する。また、カメラMPU133は、動画撮像ボタンの押し込みを検出した場合に、連続撮像の一例としての動画撮像を実行するよう撮像装置100の各部を制御する。また、カメラMPU133は、表示部138に組み込まれたタッチパネルが操作された場合に、表示部138に表示されたメニュー項目および操作内容に応じた動作をするよう、撮像装置100の各部を制御する。
【0027】
カメラ本体130の各要素および外部メモリ160は、電源170から電力供給を受ける。電源170としては、カメラ本体130に対して着脱できる例えばリチウムイオン電池等の二次電池、系統電源等からの交流電力を直流電力に変換する電力変換部等を例示することができる。カメラMPU133は、電源の状態を検出して、電源の状態に応じて撮像装置100の各部を制御する。例えば、カメラMPU133は、電源170が二次電池であるか否かを判断する。カメラMPU133は、電源170が二次電池であると判断した場合、二次電池の残存容量を検出して、残存容量に応じて撮像装置100の各部を制御する。また、カメラMPU133は、電源170から撮像装置100の各部への電力供給を制御する。なお、二次電池は電池の一例であり、電池とは、実質的に充電することができない非充電式の電池を含む。
【0028】
図2は、ASIC135が有する機能ブロック構成の一例を示す。ここでは、主として画像処理に関する機能ブロックを示す。ASIC135は、画像処理部200、符号化エンジン220、復号エンジン240、ハッシュ値算出部210、埋め込み情報生成部230および検証部250を有する。
【0029】
A/D変換器134から出力された画像データは、SDRAM136のワークエリアに記憶される。画像処理部200は、ワークエリアに記憶された画像データに画像処理を施す。画像処理部200における画像処理としては、欠陥画素補正、ホワイトバランス補正、色補間処理、色補正、ガンマ補正、輪郭強調処理等を例示することができる。画像処理部200により画像処理が施された画像データは、符号化エンジン220に供給される。
【0030】
符号化エンジン220は、供給されたデータを符号化して、SDRAM136に記憶する。符号化エンジン220は、JPEG方式で画像データに圧縮処理および符号化処理を施す。
【0031】
符号化エンジン220は、DCT変換部222、量子化部224および符号化部226を有する。DCT変換部222は、画像データに離散コサイン変換(DCT)を施す。DCT変換部222によって、8×8の複数のブロックのそれぞれのDCT係数データが算出される。
【0032】
量子化部224は、各ブロックのDCT係数データを量子化する。量子化部224は、SDRAM136に展開された量子化テーブルに従って、各ブロックのDCT係数データを量子化する。量子化部224で量子化されたDCT係数データは、符号化部226およびハッシュ値算出部210に供給される。量子化されたDCT係数データは、符号化対象の画像データである符号化対象データとなる。
【0033】
ハッシュ値算出部210は、量子化されたDCT係数データからハッシュ値を算出する。ハッシュ値算出部210は、符号化対象データから、一意に定まる演算値を算出する演算部の一例である。ハッシュ値算出部210は、量子化されたDCT係数データから1方向関数によってハッシュ値を算出する。埋め込み情報生成部230は、ハッシュ値算出部210が算出したハッシュ値を取得して、当該ハッシュ値から埋め込み情報を生成する。例えば、埋め込み情報生成部230は、ハッシュ値算出部210が算出したハッシュ値のデータ長を示すバイナリデータと、当該ハッシュ値を示すバイナリデータとを含む埋め込み情報を生成する。ハッシュ値は、画像符号化データを検証する場合に用いる検証用情報の一例である。検証用情報は、符号化対象データから一意に定まる情報であれば、どのような情報であってもよい。
【0034】
なお、埋め込み情報生成部230は、ハッシュ値以外に、種々のデータから埋め込み情報を生成してよい。例えば、埋め込み情報生成部230は、SDRAM136内の埋め込み情報を記憶するデータエリアから埋め込みデータを取得して、取得したデータから埋め込み情報を生成してよい。埋め込み情報生成部230が生成した埋め込み情報は、符号化部226に供給される。
【0035】
符号化部226は、量子化されたDCT係数データをブロック毎に符号化する。具体的には、符号化部226は、SDRAM136に展開されたハフマンテーブルを用いて、量子化されたDCT係数データを符号化する。符号化部226は、埋め込み情報生成部230が生成した埋め込み情報に応じて符号を選択してDCT係数データを符号化することにより、埋め込み情報を埋め込む。符号化部226の機能ブロックについては、図3等に関連して説明する。
【0036】
符号化部226により符号化された画像データは、SDRAM136のワークエリアに記憶され、カメラMPU133によって外部に出力される。例えば、符号化された画像データは、外部メモリ160等にExif形式のJPEGファイルとして記録される。
【0037】
復号エンジン240は、符号化された画像データを復号する。なお、符号化された画像データを、画像符号化データと呼ぶ場合がある。画像符号化データは、カメラMPU133によって外部から取得されて、SDRAM136のワークエリアに記憶される。例えば、カメラMPU133は、外部メモリ160に記録されたJPEGファイルを読み出して、画像符号化データをSDRAM136のワークエリアに記憶する。
【0038】
復号エンジン240は、JPEG方式で符号化された画像符号化データに復号処理および伸張処理を施す。復号エンジン240は、逆DCT変換部246、逆量子化部244および復号部242を有する。
【0039】
復号部242は、画像符号化データをハフマン復号することにより、DCT係数データを生成する。具体的には、復号部242は、SDRAM136のワークエリアから画像符号化データを取得してハフマン復号することにより、量子化されたDCT係数データを生成する。復号部242が生成したDCT係数データは、逆量子化部244、ハッシュ値算出部210に供給される。なお、復号部242は、復号処理の過程で画像符号化データから埋め込み情報を抽出する。例えば、復号部242は、画像データを符号化処理する場合に埋め込まれたハッシュ値を、画像符号化データから抽出して、検証部250に供給する。復号部242の機能ブロックについては、図4に関連して説明する。
【0040】
逆量子化部244は、復号部242から供給されたDCT係数データを逆量子化する。逆量子化部244は、画像符号化データに含まれる量子化テーブルに従って、逆量子化処理を行う。逆DCT変換部246は、逆量子化されたDCT係数データに逆DCT変換を施す。逆DCT変換部246により、各ブロックの画素データが生成される。逆DCT変換部246により生成された複数のブロックの画素データは、復号された画像データとしてSDRAM136のワークエリアに記憶される。復号された画像データは、表示部138への表示等に供される。
【0041】
画像符号化データを検証する場合の動作について説明する。ハッシュ値算出部210は、復号部242から供給されたDCT係数データから、ハッシュ値を算出する。ハッシュ値算出部210が算出したハッシュ値は、検証部250に供給される。検証部250は、復号部242から供給されたハッシュ値と、ハッシュ値算出部210が算出したハッシュ値とを比較することにより、画像符号化データを検証する。例えば、検証部250は、これらのハッシュ値が一致した場合に、真正性ありと判断する。
【0042】
なお、画像符号化データに情報を埋め込む場合は、情報の埋め込み対象となる画像符号化データを復号部242で復号して、復号部242により得られたDCT係数データを、符号化対象データとして符号化部226およびハッシュ値算出部210に供給する。これにより、符号化部226においてDCT係数データを符号化する過程で、埋め込み情報生成部230が生成した埋め込み情報が埋め込まれる。
【0043】
図3は、符号化部226が有する機能ブロック構成の一例を示す。符号化部226は、符号化対象データ取得部300、DC成分符号化部310、AC成分ランレングス処理部320、情報埋め込み部330およびハフマン符号化処理部380を有する。
【0044】
符号化対象データ取得部300は、符号化対象の画像データである符号化対象データを取得する。符号化対象データ取得部300は、JPEG方式におけるハフマン符号化の対象となるDCT係数データを、符号化対象データとして取得する。具体的には、符号化対象データ取得部300は、量子化部224から供給されたDCT係数データを取得する。また、符号化対象データ取得部300は、復号部242により生成されたDCT係数データを、符号化対象データとして取得する。
【0045】
DC成分符号化部310は、各ブロックのDCT係数データのうちのDC成分を符号化する。DC成分の符号化については図5に関連して説明する。AC成分ランレングス処理部320は、各ブロックのDCT係数データのうちのAC成分におけるランレングスを検出する。具体的には、AC成分ランレングス処理部320は、0のAC成分の連続数を検出する。AC成分ランレングス処理部320の動作の詳細については後述する。
【0046】
情報埋め込み部330は、ランレングスに基づいて埋め込み情報を埋め込むべきデータ部分を特定する。例えば、情報埋め込み部330は、予め定められた長さを超えるランレングスが検出されたデータ部分を、埋め込み情報を埋め込むべきデータ部分として特定する。情報埋め込み部330は、特定したデータ部分を、埋め込み情報生成部230から供給された埋め込み情報に応じて符号を選択して符号化する。これにより、符号化に用いる符号によって情報が埋め込まれる。情報埋め込み部330は、データ検出部340、データ判断部350、符号決定部360および挿入部370を含む。
【0047】
データ検出部340は、DCT係数のAC成分データのうち、EOB符号を用いて符号化できるデータ部分を検出する。データ判断部350は、データ検出部が検出したデータ部分が、ZRL符号で表されるデータである16個の0の連続を含むか否かを判断する。符号決定部360は、ZRL符号で表されるデータを含むと判断されたデータ部分を、ZRL符号を用いて符号化するか否かを、埋め込み情報に基づいて決定する。例えば、ZRL符号もEOB符号も0のAC成分の連続を表すことができる。符号決定部360は、データ検出部340およびデータ判断部350で検出された17個以上の0の連続を含むデータ部分を、一つのEOB符号を用いて符号化するか、ZRL符号およびEOB符号を用いて符号化するかを、埋め込み情報に基づいて決定する。これにより、埋め込み情報を埋め込む前と画像内容の同一性を保証することができる。
【0048】
ハフマン符号化処理部380は、ハフマンテーブルを用いてハフマン符号化を行う。DC成分符号化部310、情報埋め込み部330およびハフマン符号化処理部380において、各ブロックの全DCT係数データが符号化される。
【0049】
図4は、復号部242が有する機能ブロック構成の一例を示す。復号部242は、符号化データ取得部400、DC成分復号部410、ハフマン復号処理部420、情報抽出部430およびAC成分復号部440を有する。
【0050】
符号化データ取得部400は、符号化された画像データである画像符号化データを取得する。符号化データ取得部400は、JPEG符号化においてDCT係数がハフマン符号化された画像符号化データを取得する。
【0051】
DC成分復号部410は、画像符号化データのうち、DC成分を復号する。ハフマン復号処理部420は、画像符号化データをハフマン復号する。情報抽出部430は、画像符号化データから、埋め込み情報を抽出する。例えば、情報抽出部430は、画像符号化データに埋め込まれているハッシュ値を抽出する。情報抽出部430は、ハッシュ値を抽出した場合、抽出したハッシュ値を検証部250に供給する。情報抽出部430は、符号検出部432および埋め込み情報特定部434を含む。
【0052】
符号検出部432は、画像符号化データから、第1符号および第2符号の少なくとも一方を含む符号化データ部分を検出する。具体的には、符号検出部432は、第2符号で表されるデータを含み、かつ、第1符号で表すことができるデータ部分に対応する符号化データ部分を検出する。具体的には、符号検出部432は、画像符号化データから、EOB符号およびZRL符号の少なくとも一方を含む符号化データ部分を検出する。符号検出部432は、DCT係数のAC成分データが符号化された符号化データから、ZRL符号で表されるデータである16個のゼロ係数の連続を含み、かつ、EOB符号で表すことができるAC成分データのデータ部分に対応する符号化データ部分を検出する。埋め込み情報特定部434は、符号化データ部分がZRL符号を含むか否かに基づいて、埋め込み情報を特定する。例えば、埋め込み情報特定部434は、ZRL符号を含んでいない場合はバイナリデータ0と特定し、ZRL符号を1つ含んでいる場合はバイナリデータ1として特定する。
【0053】
AC成分復号部440は、AC成分を復号して、ブロックのDCT係数データのAC成分を生成する。DC成分復号部410、ハフマン復号処理部420、AC成分復号部440において、各ブロックの全DCT係数データが生成される。生成されたDCT係数データは、逆量子化部244に供給される。なお、画像符号化データを検証する場合、生成されたDCT係数データは、ハッシュ値算出部210に供給される。また、画像符号化データに埋め込み情報を埋め込む場合、DCT係数データはハッシュ値算出部210および符号化部226に供給される。
【0054】
図5は、DCT係数データのDC成分に対する前処理を示す。JPEG方式の圧縮処理および符号化処理では、DCT変換部222において、輝度信号および色差信号のそれぞれにつき、8×8のブロック毎にDCT係数が算出される。DCT変換部222により、各ブロックの画像信号が64個のDCT係数に変換される。64個のDCT係数は、1つのDC成分および63個のAC成分を含む。
【0055】
64個のDCT係数は、量子化部224において、64個の値を持つ量子化テーブルを用いて量子化される。量子化部224は、64個のDCT係数を、量子化テーブルの対応する値でそれぞれ量子化する。量子化された64個のDCT係数は、符号化部226で符号化される。
【0056】
符号化部226では、ブロック毎に順次に符号化される。本図において、ブロックiは、符号化部226で処理対象となるブロックを示す。ブロックi−1は、ブロックiの直前のブロックである。DCは、ブロックiのDC成分を示す。DCi−1は、直前のブロックi−1のDC成分を示す。符号化部226において、DC成分符号化部310は、ハフマン符号化の前に、DC成分符号化部310は、DCi−1を用いてDCを予測する。すなわちDC成分符号化部310は、DCとDCi−1との差分であるDC差分を算出する。すなわち、DC成分符号化部310は、DC−DCi−1によりDC差分を算出して、算出したDC差分を符号化する。
【0057】
図6は、AC成分を含むDCT係数データに対する前処理を示す。本図は、量子化された64個のDCT係数を2次元配列で示す。本配列において、x方向のより高周波成分に対応するAC成分が、より右方に位置する。また、y方向のより高周波成分に対応するAC成分が、本配列のより下方に位置する。AC成分ランレングス処理部320において、64個のDCT係数が順次にスキャンされて、ランレングス処理に供される。具体的には、本配列の左上の位置のDC差分から始まり、AC01からAC77までAC成分がジグザグにスキャンされる。
【0058】
図7は、DC差分の符号化に用いる符号表を示す。上述したように、量子化された64個のDCT係数のうちDC成分については、DC差分値を符号化する。DC成分用の符号表は、任意のDC差分値を符号化できる1組のハフマン符号および付加される追加ビットによって構成される。ハフマン符号の最大長は16ビットである。
【0059】
DC差分値は、絶対値によって本図のように12個のSSSSカテゴリに分類される。ハフマン符号は、SSSSカテゴリ毎に一つ作成される。SSSS=0以外のカテゴリでは、追加ビットフィールドを符号語に付加し、各カテゴリ内のどの差分が実際に現れたのかを一意に識別する。追加ビット数は、SSSSの値によって指定される。すなわち、追加ビット数はSSSSの値と一致する。
【0060】
追加ビットは、最上位ビットから順に直前のハフマン符号の最下位ビットの後ろに付加される。DC差分値が正の場合は、DC差分の下位ビットのSSSSが付加される。DC差分値が負の場合は、DC差分値から1を減じた値の下位ビットのSSSSが付加される。このため、付加したバイナリデータの最上位ビットは、DC差分値が負の場合0となり、正の場合は1となる。
【0061】
図8は、DCT係数データのAC成分の符号化に用いる符号表を示す。AC成分ランレングス処理部320において、AC成分は、図6に関連して説明したジグザグスキャンにより、低周波数成分から高周波数成分が順次選択されて、1次元でアクセスされる。AC成分ランレングス処理部320は、順次に選択されるAC成分につき、絶対値が0であるか否かを判定する。また、AC成分ランレングス処理部320は、連続する絶対値0のAC成分はその連続長さをランレングスとしてカウントする。絶対値が非0のAC成分は、RS=B'RRRRSSSS'の形式の複合8ビットの値を持つRSによって記述される。ここで、下位4ビットの'SSSS'は非0のAC成分の絶対値のカテゴリを表す。上位4ビットの'RRRR'は、非0のAC成分の直前のランレングスを表す。本複合値によって、最大15個の0係数の連続と、非0のAC成分とを表すことができる。
【0062】
複合値であるRSは、ハフマン符号化処理部380においてハフマン符号化され、各ハフマン符号の後に係数の符号および追加ビットが付加される。本図は、AC成分のSSSSカテゴリ毎に割り当てられた絶対値の範囲と、付加ビット数とを示す。ハフマン符号化処理部380は、DCT係数のAC成分の複合値RRRRSSSSをハフマン符号化する。ハフマン符号化処理部380は、DC成分に対する処理と同様に、ハフマン符号の後に追加ビットを付加する。
【0063】
なお、非0のAC成分を表す複合値によると、最大15個の0係数の連続と、非0のAC成分とを表すことができる。ランレングスは15よりも長い場合があるので、15個の0成分の連続の後に1つの0係数を表す値'RRRRSSSS'='11110000'が定義される。この符号をZRL符号と呼ぶ。ZRL符号は、絶対値0のAC成分の16個の連続と解釈できる。すなわち、ZRL符号は、16個の0係数が連続するデータ部分を表す。また、ブロック内の後続するAC成分がすべて0である場合は、特殊な値'RRRRSSSS'='00000000'を使用してブロックの終わりを符号化する。この符号をEOB符号と呼ぶ。
【0064】
図9は、AC成分の符号表の一般構造を示す。本例においては、"N/A"の印の付いたエントリは未定義とする。ランレングスが15未満である絶対値0のAC成分の連続および非0の1つのAC成分よりなるデータ部分は、複合値で表される。
【0065】
図10は、埋め込み情報を埋め込む処理の一例を説明する図である。上述したように、ジグザグスキャンの最終のAC成分が絶対値0である場合、最終のAC成分を含む1以上の絶対値0のAC成分の連続したデータ部分がEOB符号にて符号化される。ここで、絶対値0のAC成分が17個以上連続する場合、そのうちの16個分のデータ部分をZRL符号で表しても問題がない。そこで、情報埋め込み部330は、絶対値0のAC成分が17個以上連続するデータ部分を特定して、特定したデータ部分をZRL符号で符号化するか否かを、埋め込み情報に基づいて決定する。このように、情報埋め込み部330は、17個以上の絶対値0のAC成分が連続する場合に、ZRL符号を挿入しても問題が生じないことを利用して、埋め込み情報を埋め込む。このように、情報埋め込み部330は、冗長な符号を用いるか否かを、埋め込み情報に応じて決定することにより、埋め込み情報を埋め込む。
【0066】
具体的には、データ検出部340は、最も高い周波数領域のAC成分であるAC77を符号化する際に、AC77が絶対値0であるか否かを検出する。AC77が絶対値0である場合、データ判断部350は、AC成分ランレングス処理部320でカウントされたランレングスの値が17以上であるか否かを判断する。ランレングスの値が17以上である場合は、ZRLを挿入するか否かで情報を埋め込むことができる。符号決定部360は、埋め込み情報に基づいて、ZRL符号を挿入するか否かを判断する。
【0067】
挿入部370は、符号決定部360でZRL符号を用いて符号化すると判断された場合は、EOB符号の前にZRL符号を挿入する。したがって、絶対値0が17個以上連続するデータ部分が、ZRL符号およびEOB符号で表される。
【0068】
なお、ランレングスが17から32までの場合、ZRL符号を1つ挿入することができる。ランレングスが33から48までの場合、ZRL符号を2つ挿入することができる。ランレングスが49から63までの場合、ZRL符号を3つ挿入することができる。本図は、埋め込むビットと、符号化データとの関係を示す。
【0069】
ランレングスが17から32までの場合の符号化データを、本図の符号1000および1010で模式的に示す。符号決定部360は、埋め込み情報のバイナリデータのうちの1ビットの値が0である場合は、ZRLを用いずにEOB符号で符号化する旨を決定する。一方、埋め込み情報のバイナリデータのうちの1ビットの値が1である場合は、ZRL符号を1つ用いて符号化する旨を決定する。この場合、挿入部370は、EOB符号の前にZRL符号を1つ挿入する。このように、ランレングスが17から32までの場合、符号決定部360は、ZRL符号を挿入するか否かを、埋め込み情報の1ビット長のバイナリ値に応じて、決定する。
【0070】
ランレングスが33から48までの場合の符号化データを、本図の符号1020、1030および1040で模式的に示す。符号決定部360は、埋め込み情報のバイナリデータのうちの2ビットの値が10である場合は、ZRL符号を2つ用いて符号化する旨を決定する。この場合、挿入部370は、EOB符号の前にZRL符号を2つ挿入する。埋め込み情報のバイナリデータのうちの2ビットの値が10でない場合、符号決定部360は、当該バイナリデータの1ビットの値が0であるときは、ZRL符号を用いずにEOB符号で符号化する旨を決定する。一方、符号決定部360は、当該バイナリデータの1ビットの値が1であるときは、ZRL符号を1つ用いて符号化する旨を決定する。この場合、挿入部370は、EOB符号の前にZRL符号を1つ挿入する。このように、ランレングスが33から48までの場合、埋め込み情報の1または2ビット長のバイナリデータに応じて、ZRL符号が挿入される数が決定される。
【0071】
ランレングスが49から63までの場合の符号化データを、本図の符号1050、1060、1070および1080で模式的に示す。符号決定部360は、埋め込み情報のバイナリデータのうちの2ビットの値が10である場合は、ZRL符号を2つ用いて符号化する旨を決定する。この場合、挿入部370は、EOB符号の前にZRL符号を2つ挿入する。一方、埋め込み情報のバイナリデータのうちの2ビットの値が11である場合は、符号決定部360は、ZRL符号を3つ用いて符号化する旨を決定する。この場合、挿入部370は、EOB符号の前にZRL符号を3つ挿入する。
【0072】
埋め込み情報のバイナリデータのうちの2ビットの値が10および11のいずれでもない場合、符号決定部360は、当該バイナリデータの1ビットの値が0であるときは、ZRL符号を用いずにEOB符号で符号化する旨を決定する。一方、符号決定部360は、当該バイナリデータの1ビットの値が1であるときは、ZRL符号を1つ用いて符号化する旨を決定する。この場合、挿入部370は、EOB符号の前にZRL符号を1つ挿入する。このように、ランレングスが49から63までの場合、埋め込み情報の1または2ビット長のバイナリデータに応じて、ZRL符号が挿入される数が決定される。
【0073】
本図の例では、ランレングスが17以上である場合に、バイナリデータ1を1つのZRL符号で表すとした。また、バイナリデータ0をEOB符号だけで表すとした。また、2ビット長のバイナリデータが10である場合は、2つのZRLを用いるとした。また、2ビット長のバイナリデータが11である場合は、3つのZRL符号を用いるとした。しかし、1ビット長のバイナリデータが0である場合に1つのZRL符号を用いる等してよい。すなわち、埋め込み情報に応じてどのような符号を用いるかは、本例に限られず、種々のルールに従って選択できる。情報抽出部430は、情報埋め込みのルールに従って、埋め込み情報を抽出することができる。例えば、符号検出部432は、EOBおよびZRLの符号化データ部分を検出して、当該符号化データ部分が示すランレングスと、ZRL符号の数とに基づいて、埋め込み情報を特定することができる。
【0074】
図11は、埋め込み情報であるバイナリデータを複数のブロックに埋め込む処理を説明する図である。ここでは、バイナリデータ0110101010を、8×8の複数のブロック1101〜1114に埋め込む処理について説明する。本図において、情報を埋め込むことができるブロックに斜線を付して示す。具体的には、ブロック1101、1102、1104、1106、1109、1110、1112、1113および1114が、最も高い周波数成分のAC成分が0であり、かつ、対応するランレングスが17以上であるデータ部分を持つ。他のブロック1103、1105、1107、1108、1111は、当該データ部分を持たない。
【0075】
ここで、ブロック1101において、最終のAC成分の符号化で49以上のランレングスが検出されたとする。本データ部分には、図10に関連して説明したようにバイナリデータ0、1、10および11のいずれかを埋め込むことができる。しかし、埋め込み情報の先頭2ビット長のバイナリデータは01であるので、符号決定部360は、2ビット長のバイナリデータを埋め込むことはできないと判断する。このため、符号決定部360は、先頭1ビット長のバイナリデータ0を本データ部分に埋め込む旨を決定して、本データ部分を、EOB符号を用いて符号化する旨を決定する。
【0076】
次のブロック1102においても、最終のAC成分の符号化で49以上のランレングスが検出されたとする。本データ部分には、バイナリデータ0、1、10および11のいずれかを埋め込むことができる。埋め込み情報の次の2ビット長のバイナリデータは11であるので、符号決定部360は、本データ部分に2ビット長のバイナリデータを埋め込むことができると判断する。符号決定部360は、次の2ビット長のバイナリデータ11を本データ部分に埋め込む旨を決定して、本データ部分を、3個のZRL符号およびEOB符号を用いて符号化する旨を決定する。
【0077】
次のブロック1103では、最終のAC成分の符号化で17未満のランレングスが検出されたとする。この場合、データ判断部350において、ランレングスに基づいて、埋め込み可能なデータ部分が存在しないと判断される。したがって、本ブロックには情報は埋め込まれず、最終のデータ部分はZRL符号を用いずにEOB符号を用いて符号化される。
【0078】
次のブロック1104では、33から48までのランレングスが検出されたとする。本データ部分には、バイナリデータ0、1および10のいずれかを埋め込むことができる。しかし、埋め込み情報の次の2ビット長のバイナリデータは01であるので、符号決定部360は、2ビット長のバイナリデータを埋め込むことはできないと判断する。このため、符号決定部360は、次の1ビット長のバイナリデータ0を本データ部分に埋め込む旨を決定して、本データ部分を、EOB符号を用いて符号化する旨を決定する。
【0079】
次のブロック1105では、最終のAC成分の符号化で17未満のランレングスが検出されたとする。この場合、データ判断部350において、ランレングスに基づいて、埋め込み可能なデータ部分が存在しないと判断される。したがって、本ブロックには情報は埋め込まれず、最終のデータ部分はZRL符号を用いずにEOB符号を用いて符号化される。
【0080】
次のブロック1106では、49以上のランレングスが検出されたとする。本データ部分には、バイナリデータ0、1、10および11のいずれかを埋め込むことができる。埋め込み情報の次の2ビット長のバイナリデータは10であるので、符号決定部360は、2ビット長のバイナリデータを埋め込むことができると判断する。このため、符号決定部360は、次の2ビット長のバイナリデータ10を本データ部分に埋め込む旨を決定して、本データ部分を、2個のZRL符号およびEOB符号を用いて符号化する旨を決定する。
【0081】
次のブロック1107および続くブロック1108では、最終のAC成分の符号化で17未満のランレングスが検出され、データ判断部350において、ランレングスに基づいて、埋め込み可能なデータ部分が存在しないと判断される。したがって、これらのブロックには情報は埋め込まれず、最終のデータ部分はZRL符号を用いずにEOB符号を用いて符号化される。
【0082】
次のブロック1109では、ランレングスが17から32までのランレングスが検出されたとする。本データ部分には、バイナリデータ0または1を埋め込むことができる。埋め込み情報の次の1ビット長のバイナリデータは1であるので、符号決定部360は、次の1ビット長のバイナリデータ1を本データ部分に埋め込む旨を決定して、本データ部分を、1個のZRL符号およびEOB符号を用いて符号化する旨を決定する。
【0083】
次のブロック1110では、ランレングスが49以上のランレングスが検出されたとする。ブロック1101と同様、符号決定部360は、先頭1ビット長のバイナリデータ0を本データ部分に埋め込む旨を決定して、本データ部分を、EOB符号を用いて符号化する旨を決定する。
【0084】
次のブロック1111では、最終のAC成分の符号化で17未満のランレングスが検出されたとする。この場合、データ判断部350において、ランレングスに基づいて、埋め込み可能なデータ部分が存在しないと判断される。したがって、本ブロックには情報は埋め込まれず、最終のデータ部分はZRL符号を用いずにEOB符号を用いて符号化される。
【0085】
次のブロック1112では、ランレングスが49以上のランレングスが検出されたとする。1106と同様、符号決定部360は、次の2ビット長のバイナリデータ10を本データ部分に埋め込む旨を決定して、本データ部分を、2個のZRL符号およびEOB符号を用いて符号化する旨を決定する。
【0086】
以上により、埋め込み情報のバイナリデータを全て埋め込みが完了する。ブロック1112、1113等に、情報を埋め込むことができる17個以上のランレングスが存在した場合でも、当該データ部分はEOB符号で符号化される。このように、情報埋め込み部330は、複数のブロックを符号化する順で、埋め込み情報を埋め込むことができるか否かを判断して、埋め込み情報のバイナリデータを順次に埋め込む。埋め込み情報のバイナリデータの全ビットを埋め込みが完了した場合、情報埋め込み部330は、ZRL符号を挿入しない。
【0087】
図12は、静止画の撮像が指示された場合の撮像装置100の動作フローの一例を示す。本フローは、カメラMPU133がレリーズボタンの押し込みを検出した場合に、開始される。
【0088】
本フローが開始すると、ステップS1202において、カメラMPU133が主体となって撮像装置100の各部を制御することにより、被写体を撮像する。具体的には、カメラMPU133は、メインミラー150が被写体光束から退避させた状態で、撮像素子132で露光させる。続いて、ステップS1204において、カメラMPU133は、画像データをSDRAM136に読み出す。
【0089】
ステップS1206において、画像処理部200が、SDRAM136に記憶された画像データに画像処理を施す。続いて、DCT変換部222がDCT変換を行い(ステップS1208)、生成されたDCT係数データを量子化部224が量子化する(ステップS1210)。
【0090】
続いて、ステップS1212において、真正性情報を埋め込む旨が設定されているか否かを判断する。真正性情報を埋め込む旨が設定されている場合、カメラMPU133は、符号化部226における符号化処理を制御する埋め込みフラグを1に設定する(ステップS1214)。真正性情報を埋め込む旨が設定されていない場合、カメラMPU133は、埋め込みフラグを0に設定する(ステップS1220)。真正性情報を埋め込むか否かの設定は、ユーザ設定を通じて撮像前に予め設定されてよい。
【0091】
続いて、ステップS1216において、量子化されたDCT係数データを符号化部226が符号化する。埋め込みフラグが1に設定されている場合、ハッシュ値算出部210で算出されたハッシュ値が符号化の工程で埋め込まれる。符号化処理の詳細については、図13に関連して説明する。続いて、符号化された画像データを外部メモリ160に記録して(ステップS1218)、本フローを終了する。なお、ステップS1218において、真正性情報が埋め込まれたか否かを示す情報を、画像データの付帯情報として付帯して記録してよい。
【0092】
図13は、DCT係数データを符号化する場合の動作フローの一例を示す。本フローは、図12のステップS1216の詳細なフローである。ここでは、分かり易く説明することを目的として、1ブロックを符号化する場合のフローについて説明する。
【0093】
本フローが開始されると、ステップS1302において、ASIC135において、埋め込みフラグが1であるか否かを判断する。埋め込みフラグが1である場合、ハッシュ値算出部210は、量子化されたDCT係数からハッシュ値を算出する(ステップS1304)。続いて、ステップS1306において、埋め込み情報生成部230がハッシュ値を含む埋め込み情報を生成し、ステップS1308に処理を進める。ステップS1302の判断において埋め込みフラグが1でないと判断された場合は、ハッシュ値の算出等をすることなく、ステップS1308に処理を進める。
【0094】
ステップS1308において、DC成分符号化部310は、DCT係数データのDC成分を符号化する。続いて、AC成分ランレングス処理部320は、ランレングスカウンタを0に初期化して(ステップS1310)、63個のAC成分についてのループ処理を開始する(ステップS1312)。本ループ処理では、図6に関連して説明したように63個のAC成分がジグザグにスキャンされ、各反復において1つのAC成分が選択されて処理される。63個のAC成分は初期値を1とする変数kでスキャンされ、変数kは1反復終了する毎にインクリメントされる。本ループ処理は、ステップS1338で終了の判断がなされる。本ループ処理では、特に断らない限りAC成分ランレングス処理部320が主体となって処理を行う。
【0095】
ループ処理が開始すると、ステップS1314において、処理対象のAC成分が0であるか否かを判断する。処理対象のAC成分が0である場合、変数kが63であるか否かを判断する(ステップS1316)。つまり、現在の選択されたAC成分がブロックの最終のAC成分であるAC77であるか否かを判断する。変数kが63でない場合、ランレングスカウンタをインクリメントし(ステップS1318)、ステップS1338の判断に進む。
【0096】
ステップS1314の判断で、処理対象のAC成分が0でないと判断された場合、ステップS1320において、ランレングスカウンタが15を超えるか否かを判断する。ランレングスカウンタが15を超えない場合、ハフマン符号化処理部380はRSの複合値および下位SSSSビットの付加ビットを符号として付加する(ステップS1326)。続いて、ステップS1328において、ランレングスカウンタを0に初期化して、ステップS1338の判断に進む。
【0097】
ステップS1320の判断で、ランレングスカウンタが15を超えると判断された場合、ハフマン符号化処理部380は符号としてZRL符号を挿入する(ステップS1322)。続いて、ランレングスカウンタから16を減じて(ステップS1324)、ステップS1320に移行する。
【0098】
ステップS1316の判断で、変数kが63であると判断された場合、データ検出部340は、埋め込みフラグが1に設定されているか否かを判断する。埋め込みフラグが1に設定されていない場合、ハフマン符号化処理部380は符号としてEOB符号を挿入し(ステップS1332)、ステップS1338の判断に進む。
【0099】
ステップS1330の判断で埋め込みフラグが1に設定されていると判断された場合、データ判断部350は、ランレングスカウンタが17以上であるか否かを判断する。ランレングスカウンタが17以上でないと判断された場合、ステップS1332に処理を移行する。ランレングスカウンタが17以上であると判断された場合、ステップS1336において、符号決定部360は、ランレングスカウンタおよび埋め込みデータに応じてZRL符号を挿入する数を決定して、符号決定部360がZRL符号をEOB符号の前に挿入する(ステップS1336)。具体的には、図10、図11等に関連して説明したように、ZRL符号を挿入する数を決定する。ステップS1336の処理が完了すると、ステップS1338の判断に進む。
【0100】
ステップS1338において、ループ処理を終了するか否かを判断する。具体的には、変数kが63である場合にループ処理を終了すると判断し、本フローを終了する。
【0101】
ここでは1ブロックに対する符号化処理について説明したが、本フローと同様のフローを複数のブロックのそれぞれの符号化処理に適用できる。なお、埋め込みデータを全て埋め込んだ場合、以後のブロックに対する処理が開始される前に、埋め込みフラグを0に設定してよい。
【0102】
図14は、真正性情報を画像に新たに埋め込む場合の動作フローの一例を示す。本フローは、例えば再生モード中に実行される。例えば、操作入力部141の一部としての再生モードボタンが押し込まれることで再生モードに遷移した後、真正性情報を埋め込む画像を選択する旨がユーザによって指示された場合に、開始される。
【0103】
本フローが開始すると、ステップS1402において、外部メモリ160に記録されている画像データの一覧を表示部138が表示する。例えば、ASIC135は、外部メモリ160に記録されている複数の画像データのサムネイル用画像を表示部138に表示させる。ここで、画像データの付帯情報に基づいて真正性情報が埋め込まれていない画像を特定して、特定した画像だけを表示部138に一覧表示させてもよい。
【0104】
続いて、ステップS1404において、ハッシュ値の埋め込み対象とする画像を、ユーザに選択させる。例えば、ユーザは、カメラMPU133は、操作入力部141の一部としての十字キーおよび選択ボタン等を通じて、ハッシュ値の埋め込み対象とする画像を選択する。カメラMPU133は、十字キーおよび選択ボタン等の操作を検出して、ユーザが選択した画像を特定する。
【0105】
続いて、カメラMPU133は、選択された画像の画像データを外部メモリ160からSDRAM136に読み出して、復号部242に復号させる(ステップS1406)。そして、カメラMPU133は、埋め込みフラグを1に設定して(ステップS1408)、ステップS1406の復号処理で得られたDCT係数データを符号化部226に符号化させる(ステップS1410)。符号化部226による符号化処理が完了すると、符号化により得られた画像データで、ユーザにより選択された画像データを上書きし(ステップS1412)、フローを終了する。
【0106】
図15は、画像データを検証する場合における撮像装置100の動作フローの一例を示す。本フローは、例えば再生モード中に実行される。例えば、操作入力部141の一部としての再生モードボタンが押し込まれることで再生モードに遷移した後、真正性を検証する画像を選択する旨をユーザが指示した場合に、開始される。
【0107】
本フローが開始すると、ステップS1502において、外部メモリ160に記録されている画像データの一覧を表示部138が表示する。例えば、ASIC135は、外部メモリ160に記録されている各画像データのサムネイル画像を、表示部138に表示させる。ここで、画像データの付帯情報に基づいて真正性情報が埋め込まれている画像を特定して、特定した画像だけを表示部138に一覧表示させてもよい。
【0108】
続いて、ステップS1404において、ハッシュ値の埋め込み対象とする画像を、ユーザに選択させる。例えば、ユーザは、カメラMPU133は、操作入力部141の一部としての十字キーおよび選択ボタン等を通じて、真正性の検証対象とする画像を選択する。カメラMPU133は、十字キーおよび選択ボタン等の操作を検出して、ユーザが選択した画像を特定する。
【0109】
ステップS1506において、カメラMPU133は、復号部242における復号処理を制御する情報抽出フラグを1に設定する。
【0110】
続いて、カメラMPU133は、選択された画像の画像データを外部メモリ160からSDRAM136に読み出して、復号部242に復号させる(ステップS1508)。情報抽出フラグが1に設定されることで、画像データに埋め込まれたハッシュ値が復号部242で抽出される。抽出されたハッシュ値は検証部250に供給される。なお、復号処理の詳細については、図16に関連して説明される。
【0111】
続いて、カメラMPU133は、ステップS1508の復号処理で得られたDCT係数データから、ハッシュ値算出部210にハッシュ値を算出させる(ステップS1510)。続いて、検証部250は、ハッシュ値算出部210で算出されたハッシュ値と、復号部242で抽出されたハッシュ値とを比較して(ステップS1512、両ハッシュ値が一致するか否かを判断する(ステップS1514)。ハッシュ値が一致した場合、カメラMPU133は、真正性がある旨を表示部138に表示させる(ステップS1516)。ハッシュ値が一致しなかった場合、カメラMPU133は、真正性がない旨を表示部138に表示させる(ステップS1518)。
【0112】
図16は、画像符号化データを復号する場合の動作フローの一例を示す。本フローは、図15のステップS1508の処理に適用できる。ここでは、分かり易く説明することを目的として、1ブロックのデータを復号する場合のフローについて説明する。
【0113】
本フローが開始すると、ステップS1602において、DC成分復号部410はDC成分を復号する。DC成分復号部410は、DCT係数バッファのDC成分用の位置に、復号したDC差分を格納する。続いて、ハフマン復号処理部420は、DCT係数バッファのうち、63個のAC成分を格納するバッファを0で初期化する(ステップS1604)。
【0114】
続いて、ステップS1606において、ハフマン復号処理部420は、変数kを1で初期化する。図13に関連して説明した符号化処理と同様に、変数kによって、複合対象のAC成分が特定される。続いて、ステップS1608において、ハフマン復号処理部420は、ランレングスカウンタを初期化する。
【0115】
続いて、ハフマン復号処理部420は、8ビットのRSに復号して、RS値からSSSSの値およびRRRRの値を抽出する(ステップS1610)。続いて、ハフマン復号処理部420は、SSSSの値が0であるか否かを判断する(ステップS1612)。SSSSの値が0でない場合、ハフマン復号処理部420は変数kにRRRRの値を加算する(ステップS1614)。続いて、ステップS1616において、SSSSの値から非0のAC成分の上位ビットを取得して、付加データから下位ビットを取得することで、非0のAC成分を算出し、算出したAC成分の値をDCT係数バッファ内の変数kで示される位置に格納する(ステップS1616)。ここで、最上位ビットが1の場合は正の値を、最上位ビットが0の場合は負の値を示す。
【0116】
続いて、ステップS1618において、変数kが63であるか否かを判断する(ステップS1618)。変数kが63でない場合は、変数kに1を加算して(ステップS1620)、ステップS1610に処理を移行する。ステップS1618の判断で変数kが63であると判断された場合は、本フローを終了する。この場合、情報抽出部430は、本ブロックには情報が埋め込まれていないと判断できる。
【0117】
ステップS1612の判断で、SSSSの値が0であると判断された場合、ハフマン復号処理部420は、RRRRの値が15であるか否かを判断する(ステップS1622)。すなわち、ZRL符号およびEOB符号のいずれの符号であるかを判断する。RRRRの値が15であると判断された場合、すなわちZRL符号であると判断された場合は、符号検出部432は情報抽出フラグが1であるか否かを判断する(ステップS1624)。情報抽出フラグが1である場合、符号検出部432はランレングスカウンタに16を加算し(ステップS1626)、変数kに16を加算し(ステップS1628)、ステップS1610に処理を移行する。ステップS1624の判断で情報抽出フラグが1でないと判断された場合は、ステップS1628に処理を移行する。
【0118】
ステップS1622の判断で、RRRRの値が15でないと判断された場合、すなわちEOB符号であると判断された場合は、符号検出部432は、情報抽出フラグが1であるか否かを判断する(ステップS1630)。情報抽出フラグが1でない場合は、本フローを終了する。
【0119】
情報抽出フラグが1であると判断された場合、符号検出部432は、全ランレングスが17以上であるか否かを判断する。全ランレングスは、63から変数kの値を減算した値と、ランレングスカウンタとの合計値によって算出される。全ランレングスが17以上でないと判断された場合、本フローを終了する。この場合、情報抽出部430は、本ブロックには情報が埋め込まれていないと判断できる。
【0120】
ステップS1632の判断で、全ランレングスが17以上であると判断された場合、埋め込み情報特定部434は、全ランレングスおよびランレングスカウンタの値から、埋め込みデータを特定する。具体的には、埋め込み情報特定部434は、ランレングスカウンタに基づいて、EOB符号の前にZRL符号が挿入されているか否かを特定することができる。また、埋め込み情報特定部434は、ランレングスカウンタに基づいて、EOB符号の前に挿入されているZRL符号の数を特定することができる。そして、埋め込み情報特定部434は、図10、図11等に関連して説明したルールに従って、埋め込み情報のバイナリデータを特定する。ステップS1634の処理が完了すると、本フローを終了する。
【0121】
ここでは1ブロックに対する復号処理について説明したが、本フローと同様のフローを複数のブロックのそれぞれの復号処理に適用できる。なお、埋め込み情報に埋め込みデータのデータ長が含まれる場合、当該データ長のバイナリデータが抽出された場合は、以後のブロックに対する復号処理が開始される前に、情報抽出フラグを0に設定してよい。
【0122】
以上に説明したように、撮像装置100によれば、画像内容の同一性を保証しつつ、符号化工程にて埋め込み情報を埋め込むことができる。このため、符号化対象のデータから一意に演算されるハッシュ値等の真正性情報を埋め込むことで、埋め込まれた情報を用いて画像データの真正性を検証できる。また、符号化部226における情報の埋め込み処理を、いわゆる電子透かし処理として適用することができる。上記の説明ではハッシュ値を埋め込み情報に含めて埋め込むとしたが、暗号化したハッシュ値を埋め込み情報に含めて埋め込んでよいことは言うまでもない。
【0123】
以上の説明では、静止画の画像データに対するJPEG方式の符号化工程における情報の埋め込み処理を説明した。しかし、Motion JPEG形式で動画を符号化する場合、当該動画を構成する各フレームに本埋め込み処理を適用することができることはいうまでもない。また、本埋め込み処理の適用範囲は、以上に説明したJPEG方式の基本処理の符号化工程に限られない。例えば、以上の説明では絶対値0のAC成分の16個の連続をZRL符号で表すとしたが、絶対値0のAC成分の8個の連続を表す符号を用いれば、1ブロックにより多くの情報を埋め込むことができる。また、絶対値0のAC成分の16個の連続を、上述したZRL符号を用いて符号化するか、絶対値0のAC成分の8個の連続を表す符号を用いて符号化するかを、埋め込み情報に基づいて決定するようにしてもよい。
【0124】
すなわち、データ検出部340は、符号化対象データのうち、第1符号を用いて符号化できるデータ部分を検出して、データ判断部350は、データ検出部340が検出したデータ部分が第2符号で表されるデータを含むか否かを判断する。そして、符号決定部360は、第2符号で表されるデータを含むと判断されたデータ部分を、第2符号を用いて符号化するか否かを、埋め込み情報に基づいて決定してよい。そして、第2符号で表されるデータを含むと判断されたデータ部分を、符号決定部360の決定に従って符号化すればよい。
【0125】
上記の説明において、カメラMPU133の動作として説明した処理は、カメラMPU133がプログラムに従って撮像装置100が有する各ハードウェアを制御することにより実現される。また、上記の説明においてASIC135により実現される処理は、プロセッサによって実現することができる。例えば、ASIC135の動作として説明した処理は、プロセッサがプログラムに従って撮像装置100が有する各ハードウェアを制御することにより実現される。すなわち、本実施形態の撮像装置100に関連して説明した処理は、プロセッサがプログラムに従って動作して各ハードウェアを制御することにより、プロセッサ、メモリ等を含む各ハードウェアとプログラムとが協働して動作することにより実現することができる。すなわち、当該処理を、いわゆるコンピュータ装置によって実現することができる。コンピュータ装置は、上述した処理の実行を制御するプログラムをロードして、読み込んだプログラムに従って動作して、当該処理を実行してよい。コンピュータ装置は、当該プログラムを記憶しているコンピュータ読取可能な記録媒体から当該プログラムをロードすることができる。
【0126】
本実施形態において、一眼レフカメラとしての撮像装置100の機能および動作を説明した。撮像装置としては、一眼レフカメラの他に、ミラーレス一眼カメラ、コンパクトデジタルカメラ、ビデオカメラ、放送用の撮像機器、撮像機能付きの携帯電話機、撮像機能付きの携帯情報端末、撮像機能付きのゲーム機器等の娯楽装置等、撮像機能を有する種々の機器を適用の対象とすることができる。また、出力形態についても、動画、静止画等の画像データを記録媒体に記録するだけでなく、ネットワーク等の種々の伝送路に画像データを出力する機器等を、適用の対象とすることができる。
【0127】
また、撮像装置100に限らず、パーソナルコンピュータ、放送用の映像機器、テレビジョン装置、録画装置等の、符号化処理および復号処理の少なくとも一方を行う電子機器を、適用の対象とすることができる。例えば、符号化部226は、画像データに情報を埋め込む情報埋め込み装置として機能できる。また、復号部242は、符号化された画像データに埋め込まれている埋め込み情報を特定する情報特定装置として機能できる。符号化部226、復号部242、ハッシュ値算出部210、埋め込み情報生成部230、検証部250の機能ブロックは、画像データの真正性を検証する画像検証装置として機能することができる。
【0128】
なお、本実施形態では画像データを対象とした。しかし、画像データに限らず、音声データ等、種々のデジタルデータを適用の対象とすることもできる。
【0129】
以上、本発明を実施の形態を用いて説明したが、本発明の技術的範囲は上記実施の形態に記載の範囲には限定されない。上記実施の形態に、多様な変更または改良を加えることが可能であることが当業者に明らかである。その様な変更または改良を加えた形態も本発明の技術的範囲に含まれ得ることが、特許請求の範囲の記載から明らかである。
【0130】
特許請求の範囲、明細書、および図面中において示した装置、システム、プログラム、および方法における動作、手順、ステップ、および段階等の各処理の実行順序は、特段「より前に」、「先立って」等と明示しておらず、また、前の処理の出力を後の処理で用いるのでない限り、任意の順序で実現しうることに留意すべきである。特許請求の範囲、明細書、および図面中の動作フローに関して、便宜上「まず、」、「次に、」等を用いて説明したとしても、この順で実施することが必須であることを意味するものではない。
【符号の説明】
【0131】
100 撮像装置、120 交換レンズ、121 レンズマウント接点、122 レンズ群、123 レンズMPU、130 カメラ本体、131 カメラマウント接点、132 撮像素子、133 カメラMPU、134 A/D変換器、135 ASIC、136 SDRAM、137 表示制御部、138 表示部、139 システムメモリ、140 駆動部、141 操作入力部、142 合焦センサ、145 接続インタフェース、150 メインミラー、151 サブミラー、156 光学ファインダ部、160 外部メモリ、170 電源、200 画像処理部、210 ハッシュ値算出部、220 符号化エンジン、222 DCT変換部、224 量子化部、226 符号化部、230 情報生成部、240 復号エンジン、242 復号部、244 逆量子化部、246 逆DCT変換部、250 検証部、300 符号化対象データ取得部、310 DC成分符号化部、320 AC成分ランレングス処理部、330 情報埋め込み部、340 データ検出部、350 データ判断部、360 符号決定部、370 挿入部、380 ハフマン符号化処理部、400 符号化データ取得部、410 DC成分復号部、420 ハフマン復号処理部、430 情報抽出部、432 符号検出部、434 情報特定部、440 AC成分復号部、1000、1020、1030、1040、1050、1060、1070 符号、1101、1102、1103、1104、1105、1106、1107、1108、1109、1110、1111、1112、1113 ブロック

【特許請求の範囲】
【請求項1】
画像データに情報を埋め込む情報埋め込み装置であって、
埋め込み情報を取得する埋め込み情報取得部と、
符号化対象の画像データである符号化対象データを取得する符号化対象データ取得部と、
前記符号化対象データのうち、第1符号を用いて符号化できるデータ部分を検出するデータ検出部と、
前記データ検出部が検出したデータ部分が第2符号で表されるデータを含むか否かを判断するデータ判断部と、
前記第2符号で表されるデータを含むと判断されたデータ部分を、前記第2符号を用いて符号化するか否かを、前記埋め込み情報に基づいて決定する符号決定部と、
前記第2符号で表されるデータを含むと判断されたデータ部分を、前記符号決定部の決定に従って符号化する符号化部と、
を備える情報埋め込み装置。
【請求項2】
前記符号化対象データ取得部は、JPEG方式におけるハフマン符号化の対象となるDCT係数データを、前記符号化対象データとして取得し、
前記データ検出部は、前記DCT係数のAC成分データのうち、EOB符号を用いて符号化できるデータ部分を検出し、
前記判断部は、前記データ検出部が検出したデータ部分が、ZRL符号で表されるデータである16個のゼロ係数の連を含むか否かを判断し、
前記符号決定部は、前記ZRL符号で表されるデータを含むと判断されたデータ部分を、前記ZRL符号を用いて符号化するか否かを、前記埋め込み情報に基づいて決定する
請求項1に記載の情報埋め込み装置。
【請求項3】
JPEG方式で画像データが符号化された符号化データを取得する符号化データ取得部と、
前記符号化データをハフマン復号することにより、DCT係数データを生成する復号部と、
をさらに備え、
前記符号化対象データ取得部は、前記復号部により生成されたDCT係数データを、前記符号化対象データとして取得する
請求項2に記載の情報埋め込み装置。
【請求項4】
前記符号化対象データから、一意に定まる演算値を算出する演算部
をさらに備え、
前記埋め込み情報取得部は、前記演算値を、前記埋め込み情報として取得する
請求項1から3のいずれか一項に記載の情報埋め込み装置。
【請求項5】
前記演算部は、前記符号化対象データからハッシュ値を算出する
請求項4に記載の情報埋め込み装置。
【請求項6】
符号化された画像データに埋め込まれている埋め込み情報を特定する情報特定装置であって、
符号化された画像データである画像符号化データを取得する符号化データ取得部と、
前記画像符号化データから、第1符号および第2符号の少なくとも一方を含む符号化データ部分を検出する符号検出部と、
前記符号化データ部分が前記第2符号を含むか否かに基づいて、前記埋め込み情報を特定する埋め込み情報特定部と、
を備え、
前記符号検出部は、前記第2符号で表されるデータを含み、かつ、前記第1符号で表すことができるデータ部分に対応する符号化データ部分を検出する
情報特定装置。
【請求項7】
前記符号化データ取得部は、JPEG符号化においてDCT係数がハフマン符号化された画像符号化データを取得し、
前記第1符号はEOB符号であり、
前記第2符号はZRL符号であり、
前記符号検出部は、DCT係数のAC成分データが符号化された符号化データから、前記ZRL符号で表されるデータである16個のゼロ係数の連を含み、かつ、前記EOB符号で表すことができるAC成分データのデータ部分に対応する符号化データ部分を検出する
請求項6に記載の情報特定装置。
【請求項8】
画像データを検証する画像検証装置であって、
請求項4または5に記載の情報埋め込み装置により前記演算値が埋め込み情報として埋め込まれた画像データを、前記画像符号化データとして取得する画像データ取得部と、
前記画像符号化データに埋め込まれている埋め込み情報を特定する請求項6または7に記載の情報特定装置と、
前記情報特定装置により特定された前記埋め込み情報を用いて、前記画像符号化データを検証する検証部と、
を備え、
前記検証部は、前記画像符号化データを復号することにより得られた復号データから前記一意に定まる演算値を演算し、当該演算値と、前記情報特定装置により特定された埋め込み情報とを比較することにより、前記画像符号化データを検証する
画像検証装置。
【請求項9】
画像データに情報を埋め込む情報埋め込み装置用のプログラムであって、
埋め込み情報を取得する埋め込み情報取得ステップと、
符号化対象の画像データである符号化対象データを取得する符号化対象データ取得ステップと、
前記符号化対象データのうち、第1符号を用いて符号化できるデータ部分を検出するデータ検出ステップと、
前記データ検出ステップで検出されたデータ部分が第2符号で表されるデータを含むか否かを判断するデータ判断ステップと、
前記第2符号で表されるデータを含むと判断されたデータ部分を、前記第2符号を用いて符号化するか否かを、前記埋め込み情報に基づいて決定する符号決定ステップと、
前記第2符号で表されるデータを含むと判断されたデータ部分を、前記符号決定ステップにおける決定に従って符号化する符号化ステップと、
をコンピュータに実行させるプログラム。
【請求項10】
符号化された画像データに埋め込まれている埋め込み情報を特定する情報特定装置用のプログラムであって、
符号化された画像データである画像符号化データを取得する符号化データ取得ステップと、
前記画像符号化データから、第1符号および第2符号の少なくとも一方を含む符号化データ部分を検出する符号検出ステップと、
前記符号化データ部分が前記第2符号を含むか否かに基づいて、前記埋め込み情報を特定する埋め込み情報特定ステップと、
をコンピュータに実行させ、
前記符号検出ステップは、前記第2符号で表されるデータを含み、かつ、前記第1符号で表すことができるデータ部分に対応する符号化データ部分を検出する、
プログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate


【公開番号】特開2013−81102(P2013−81102A)
【公開日】平成25年5月2日(2013.5.2)
【国際特許分類】
【出願番号】特願2011−220394(P2011−220394)
【出願日】平成23年10月4日(2011.10.4)
【出願人】(000004112)株式会社ニコン (12,601)
【Fターム(参考)】