(57)【要約】【課題】情報を埋め込むことで画像内容が元の画像内容と異ならないようにすること。【解決手段】情報埋め込み装置は、画像データに情報を埋め込む情報埋め込み装置であって、埋め込み情報を取得する埋め込み情報取得部と、符号化対象の画像データである符号化対象データを取得する符号化対象データ取得部と、符号化対象データのうち、第１符号を用いて符号化できるデータ部分を検出するデータ検出部と、データ検出部が検出したデータ部分が第２符号で表されるデータを含むか否かを判断するデータ判断部と、第２符号で表されるデータを含むと判断されたデータ部分を、第２符号を用いて符号化するか否かを、埋め込み情報に基づいて決定する符号決定部と、第２符号で表されるデータを含むと判断されたデータ部分を、符号決定部の決定に従って符号化する符号化部と、を備える。【選択図】図３
2013081102.tif 000002
【特許請求の範囲】
【請求項１】
画像データに情報を埋め込む情報埋め込み装置であって、
埋め込み情報を取得する埋め込み情報取得部と、
符号化対象の画像データである符号化対象データを取得する符号化対象データ取得部と、
前記符号化対象データのうち、第１符号を用いて符号化できるデータ部分を検出するデータ検出部と、
前記データ検出部が検出したデータ部分が第２符号で表されるデータを含むか否かを判断するデータ判断部と、
前記第２符号で表されるデータを含むと判断されたデータ部分を、前記第２符号を用いて符号化するか否かを、前記埋め込み情報に基づいて決定する符号決定部と、
前記第２符号で表されるデータを含むと判断されたデータ部分を、前記符号決定部の決定に従って符号化する符号化部と、
を備える情報埋め込み装置。
【請求項２】
前記符号化対象データ取得部は、ＪＰＥＧ方式におけるハフマン符号化の対象となるＤＣＴ係数データを、前記符号化対象データとして取得し、
前記データ検出部は、前記ＤＣＴ係数のＡＣ成分データのうち、ＥＯＢ符号を用いて符号化できるデータ部分を検出し、
前記判断部は、前記データ検出部が検出したデータ部分が、ＺＲＬ符号で表されるデータである１６個のゼロ係数の連を含むか否かを判断し、
前記符号決定部は、前記ＺＲＬ符号で表されるデータを含むと判断されたデータ部分を、前記ＺＲＬ符号を用いて符号化するか否かを、前記埋め込み情報に基づいて決定する
請求項１に記載の情報埋め込み装置。
【請求項３】
ＪＰＥＧ方式で画像データが符号化された符号化データを取得する符号化データ取得部と、
前記符号化データをハフマン復号することにより、ＤＣＴ係数データを生成する復号部と、
をさらに備え、
前記符号化対象データ取得部は、前記復号部により生成されたＤＣＴ係数データを、前記符号化対象データとして取得する
請求項２に記載の情報埋め込み装置。
【請求項４】
前記符号化対象データから、一意に定まる演算値を算出する演算部
をさらに備え、
前記埋め込み情報取得部は、前記演算値を、前記埋め込み情報として取得する
請求項１から３のいずれか一項に記載の情報埋め込み装置。
【請求項５】
前記演算部は、前記符号化対象データからハッシュ値を算出する
請求項４に記載の情報埋め込み装置。
【請求項６】
符号化された画像データに埋め込まれている埋め込み情報を特定する情報特定装置であって、
符号化された画像データである画像符号化データを取得する符号化データ取得部と、
前記画像符号化データから、第１符号および第２符号の少なくとも一方を含む符号化データ部分を検出する符号検出部と、
前記符号化データ部分が前記第２符号を含むか否かに基づいて、前記埋め込み情報を特定する埋め込み情報特定部と、
を備え、
前記符号検出部は、前記第２符号で表されるデータを含み、かつ、前記第１符号で表すことができるデータ部分に対応する符号化データ部分を検出する
情報特定装置。
【請求項７】
前記符号化データ取得部は、ＪＰＥＧ符号化においてＤＣＴ係数がハフマン符号化された画像符号化データを取得し、
前記第１符号はＥＯＢ符号であり、
前記第２符号はＺＲＬ符号であり、
前記符号検出部は、ＤＣＴ係数のＡＣ成分データが符号化された符号化データから、前記ＺＲＬ符号で表されるデータである１６個のゼロ係数の連を含み、かつ、前記ＥＯＢ符号で表すことができるＡＣ成分データのデータ部分に対応する符号化データ部分を検出する
請求項６に記載の情報特定装置。
【請求項８】
画像データを検証する画像検証装置であって、
請求項４または５に記載の情報埋め込み装置により前記演算値が埋め込み情報として埋め込まれた画像データを、前記画像符号化データとして取得する画像データ取得部と、
前記画像符号化データに埋め込まれている埋め込み情報を特定する請求項６または７に記載の情報特定装置と、
前記情報特定装置により特定された前記埋め込み情報を用いて、前記画像符号化データを検証する検証部と、
を備え、
前記検証部は、前記画像符号化データを復号することにより得られた復号データから前記一意に定まる演算値を演算し、当該演算値と、前記情報特定装置により特定された埋め込み情報とを比較することにより、前記画像符号化データを検証する
画像検証装置。
【請求項９】
画像データに情報を埋め込む情報埋め込み装置用のプログラムであって、
埋め込み情報を取得する埋め込み情報取得ステップと、
符号化対象の画像データである符号化対象データを取得する符号化対象データ取得ステップと、
前記符号化対象データのうち、第１符号を用いて符号化できるデータ部分を検出するデータ検出ステップと、
前記データ検出ステップで検出されたデータ部分が第２符号で表されるデータを含むか否かを判断するデータ判断ステップと、
前記第２符号で表されるデータを含むと判断されたデータ部分を、前記第２符号を用いて符号化するか否かを、前記埋め込み情報に基づいて決定する符号決定ステップと、
前記第２符号で表されるデータを含むと判断されたデータ部分を、前記符号決定ステップにおける決定に従って符号化する符号化ステップと、
をコンピュータに実行させるプログラム。
【請求項１０】
符号化された画像データに埋め込まれている埋め込み情報を特定する情報特定装置用のプログラムであって、
符号化された画像データである画像符号化データを取得する符号化データ取得ステップと、
前記画像符号化データから、第１符号および第２符号の少なくとも一方を含む符号化データ部分を検出する符号検出ステップと、
前記符号化データ部分が前記第２符号を含むか否かに基づいて、前記埋め込み情報を特定する埋め込み情報特定ステップと、
をコンピュータに実行させ、
前記符号検出ステップは、前記第２符号で表されるデータを含み、かつ、前記第１符号で表すことができるデータ部分に対応する符号化データ部分を検出する、
プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報埋め込み装置、情報特定装置、画像検証装置およびプログラムに関する。
【背景技術】
【０００２】
ブロックのＤＣＴ係数を量子化した量子化インデックスをランレングス化し、ランレングスデータの最後にダミーのランを追加して、当該ダミーのランの後に、署名データの各ビットの値に応じた値を埋め込む技術が知られている（例えば、特許文献１参照）。
［先行技術文献］
［特許文献］
［特許文献１］特開２００４−２４２１６２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００３】
人の目に知覚されにくいように署名データを埋め込むことができたとしても、ダミーのランを追加して署名データを埋め込むので、署名データの埋め込む前と画像内容の同一性を保証することはできない。従来、情報を埋め込むことによって、情報が埋め込まれた画像データが表す画像内容が、元の画像データが表す画像内容と異なってしまうという課題があった。
【課題を解決するための手段】
【０００４】
本発明の第１の態様においては、画像データに情報を埋め込む情報埋め込み装置であって、埋め込み情報を取得する埋め込み情報取得部と、符号化対象の画像データである符号化対象データを取得する符号化対象データ取得部と、符号化対象データのうち、第１符号を用いて符号化できるデータ部分を検出するデータ検出部と、データ検出部が検出したデータ部分が第２符号で表されるデータを含むか否かを判断するデータ判断部と、第２符号で表されるデータを含むと判断されたデータ部分を、第２符号を用いて符号化するか否かを、埋め込み情報に基づいて決定する符号決定部と、第２符号で表されるデータを含むと判断されたデータ部分を、符号決定部の決定に従って符号化する符号化部と、を備える。
【０００５】
本発明の第２の態様においては、符号化された画像データに埋め込まれている埋め込み情報を特定する情報特定装置であって、符号化された画像データである画像符号化データを取得する符号化データ取得部と、画像符号化データから、第１符号および第２符号の少なくとも一方を含む符号化データ部分を検出する符号検出部と、符号化データ部分が第２符号を含むか否かに基づいて、埋め込み情報を特定する埋め込み情報特定部と、を備え、符号検出部は、第２符号で表されるデータを含み、かつ、第１符号で表すことができるデータ部分に対応する符号化データ部分を検出する。
【０００６】
本発明の第３の態様においては、画像データに情報を埋め込む情報埋め込み装置用のプログラムであって、埋め込み情報を取得する埋め込み情報取得ステップと、符号化対象の画像データである符号化対象データを取得する符号化対象データ取得ステップと、前記符号化対象データのうち、第１符号を用いて符号化できるデータ部分を検出するデータ検出ステップと、データ検出ステップで検出されたデータ部分が第２符号で表されるデータを含むか否かを判断するデータ判断ステップと、第２符号で表されるデータを含むと判断されたデータ部分を、前記第２符号を用いて符号化するか否かを、前記埋め込み情報に基づいて決定する符号決定ステップと、第２符号で表されるデータを含むと判断されたデータ部分を、前記符号決定ステップにおける決定に従って符号化する符号化ステップと、をコンピュータに実行させるプログラム。
【０００７】
本発明の第４の態様においては、符号化された画像データに埋め込まれている埋め込み情報を特定する情報特定装置用のプログラムであって、符号化された画像データである画像符号化データを取得する符号化データ取得ステップと、前記画像符号化データから、第１符号および第２符号の少なくとも一方を含む符号化データ部分を検出する符号検出ステップと、前記符号化データ部分が前記第２符号を含むか否かに基づいて、前記埋め込み情報を特定する埋め込み情報特定ステップと、をコンピュータに実行させ、前記符号検出ステップは、前記第２符号で表されるデータを含み、かつ、前記第１符号で表すことができるデータ部分に対応する符号化データ部分を検出する、プログラム。
【０００８】
なお、上記の発明の概要は、本発明の必要な特徴の全てを列挙したものではない。また、これらの特徴群のサブコンビネーションもまた、発明となりうる。
【図面の簡単な説明】
【０００９】
【図１】撮像装置１００のシステム構成図の一例を示す。
【図２】ＡＳＩＣ１３５が有する機能ブロック構成の一例を示す。
【図３】符号化部２２６が有する機能ブロック構成の一例を示す。
【図４】復号部２４２が有する機能ブロック構成の一例を示す。
【図５】ＤＣＴ係数データのＤＣ成分に対する前処理を示す。
【図６】ＡＣ成分を含むＤＣＴ係数データに対する前処理を示す。
【図７】ＤＣ差分の符号化に用いる符号表を示す。
【図８】ＤＣＴ係数データのＡＣ成分の符号化に用いる符号表を示す。
【図９】ＡＣ成分の符号表の一般構造を示す。
【図１０】埋め込み情報を埋め込む処理の一例を説明する図である。
【図１１】埋め込み情報であるバイナリデータを複数のブロックに埋め込む処理を説明する図である。
【図１２】静止画の撮像が指示された場合の撮像装置１００の動作フローの一例を示す。
【図１３】ＤＣＴ係数データを符号化する場合の動作フローの一例を示す。
【図１４】真正性情報を画像に埋め込む場合の動作フローの一例を示す。
【図１５】画像を検証する場合における撮像装置１００の動作フローの一例を示す。
【図１６】画像符号化データを復号する場合の動作フローの一例を示す。
【発明を実施するための形態】
【００１０】
以下、発明の実施の形態を通じて本発明を説明するが、以下の実施形態は特許請求の範囲にかかる発明を限定するものではない。また、実施形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。
【００１１】
図１は、撮像装置１００のシステム構成図の一例を示す。撮像装置１００は、画像内容の同一性を保証しつつ画像データに情報を埋め込む。例えば、撮像装置１００は、静止画データをＪＰＥＧ方式で圧縮および符号化する場合に、ハフマン符号化の工程で、埋め込むバイナリデータのビット値に応じて、ハフマン符号化で定められた異なる符号を適用する。ここで、いずれの符号を適用しても同一のＤＣＴ係数データを表すように、バイナリデータのビット値に応じて適用する符号を選択する。これにより、情報を埋め込むことで、情報の埋め込み前と画像内容が異ならないようにする。
【００１２】
まず、撮像装置１００のシステム構成の概要を説明する。撮像装置１００は、交換レンズ１２０およびカメラ本体１３０を備える。交換レンズ１２０は、レンズマウント接点１２１を有するレンズマウントを備え、カメラ本体１３０は、カメラマウント接点１３１を有するカメラマウントを備える。レンズマウントとカメラマウントとが係合して交換レンズ１２０とカメラ本体１３０とが一体化されると、レンズマウント接点１２１とカメラマウント接点１３１が接続される。撮像装置１００は、交換レンズ１２０とカメラ本体１３０とが一体化した状態で一眼レフカメラとして機能する。レンズＭＰＵ１２３は、レンズマウント接点１２１およびカメラマウント接点１３１を介してカメラＭＰＵ１３３と接続され、相互に通信しつつ協働して交換レンズ１２０とカメラ本体１３０を制御する。
【００１３】
被写体光は、光軸に沿って撮像光学系としてのレンズ群１２２を透過して、カメラ本体１３０に入射する。メインミラー１５０は、レンズ群１２２の光軸を中心とする被写体光束中に斜設される斜設状態と、被写体光束から退避する退避状態を取り得る。
【００１４】
メインミラー１５０が斜設状態にある場合、メインミラー１５０は、レンズ群１２２を通過した被写体光束の一部を反射する。メインミラー１５０により反射された被写体光束は光学ファインダ部１５６に導かれて、ユーザに観察される。ユーザは、光学ファインダ部１５６を通じて構図等を確認することができる。
【００１５】
斜設状態におけるメインミラー１５０の光軸近傍領域は、ハーフミラーとして形成されており、入射される被写体光束の一部が透過する。メインミラー１５０の光軸近傍領域を透過した被写体光束は、サブミラー１５１で反射されて、合焦センサ１４２へ導かれる。合焦センサ１４２は、被写体光束を受光する複数の光電変換素子列を有する。光電変換素子列は、合焦状態にある場合には位相が一致した信号を出力し、前ピン状態または後ピン状態にある場合には、位相ずれした信号を出力する。位相のずれ量は、焦点状態からのずれ量に対応する。合焦センサ１４２は、光電変換素子列の出力を相関演算することで位相差を検出して、位相差を示す位相差信号をカメラＭＰＵ１３３に出力する。
【００１６】
レンズ群１２２の焦点状態は、カメラＭＰＵ１３３等の制御により、合焦センサ１４２からの位相差信号を用いて調節される。例えば、カメラＭＰＵ１３３によって、位相差信号に基づき検出された焦点状態に基づきフォーカスレンズの目標位置が決定され、レンズＭＰＵ１２３の制御により、決定された目標位置に向けてフォーカスレンズの位置が制御される。具体的には、レンズＭＰＵ１２３は、交換レンズ１２０が備えるフォーカスレンズモータを制御して、レンズ群１２２を構成するフォーカスレンズを移動させる。このように、メインミラー１５０がダウンして斜設状態にある場合に、位相差検出方式でレンズ群１２２の焦点状態が検出されて焦点調節が行われる。なお、合焦センサ１４２は、被写体像の特定の領域に対応してそれぞれ設けられ、複数の焦点調整領域のそれぞれにおいて焦点状態を調節することができる。
【００１７】
メインミラー１５０が被写体光束から退避すると、サブミラー１５１はメインミラー１５０に連動して被写体光束から退避する。メインミラー１５０が退避状態にある場合、レンズ群１２２を透過した被写体光束は、撮像素子１３２の受光面に入射する。
【００１８】
撮像素子１３２は、撮像部として機能し、レンズ群１２２を通過した被写体光束により被写体を撮像する。撮像素子１３２としては、例えばＣＣＤセンサ、ＣＭＯＳセンサ等の固体撮像素子を例示することができる。撮像素子１３２は、被写体光束を受光して生じた電荷を蓄積する複数の光電変換素子を有する。撮像素子１３２は、カメラＭＰＵ１３３からの指示を受けた駆動部１４０によって駆動され、複数の光電変換素子でそれぞれ生じた蓄積電荷の量に応じたアナログ信号をＡ／Ｄ変換器１３４に出力する。Ａ／Ｄ変換器１３４は、撮像素子１３２から出力されたアナログ信号をデジタル信号に変換して画像データとして出力する。
【００１９】
Ａ／Ｄ変換器１３４が出力した画像データは、ＳＤＲＡＭ１３６に記憶される。ＳＤＲＡＭ１３６の少なくとも一部のメモリ領域は、撮像により生成された画像データを一時的に記憶するワークエリアとして使用される。撮像素子１３２が被写体光束で連続して撮像した場合、撮像により順次に生成される画像データはワークエリアに順次に記憶される。例えば、被写体光束で連続して静止画を撮像することにより得られた複数の静止画の画像データが、ワークエリアに順次に記憶される。また、被写体光束で動画を撮像することにより得られた動画を構成する複数の画像の画像データが、ワークエリアに順次に記憶される。なお、動画を構成する画像の画像データを、特にフレームと呼ぶ場合がある。ＳＤＲＡＭ１３６は、記録用の動画データを生成する場合にフレームを一時的に記憶するフレームメモリとしても機能する。
【００２０】
ＡＳＩＣ１３５は、ＳＤＲＡＭ１３６に記憶された画像データを処理する。ＡＳＩＣ１３５は、画像処理機能に関連する回路を一つにまとめた集積回路であり、画像処理装置の一部として機能する。ＡＳＩＣ１３５が有する画像処理機能としては、いわゆるコントラストＡＦ用の画像処理、記録用の画像データを生成する画像処理等を例示することができる。
【００２１】
例えば、ＡＳＩＣ１３５は、画像データからコントラスト量を検出してカメラＭＰＵ１３３に供給する。例えば、カメラＭＰＵ１３３は、異なる位置にフォーカスレンズを位置させて撮像素子１３２で撮像させ、ＡＳＩＣ１３５によって検出されたコントラスト量とフォーカスレンズの位置とに基づいて、レンズ群１２２の焦点状態を調節する。例えば、カメラＭＰＵ１３３によって、コントラスト量を増大させるようフォーカスレンズの目標位置が決定され、レンズＭＰＵ１２３によって、決定された目標位置に向けてフォーカスレンズの位置が制御される。このように、メインミラー１５０がアップして退避状態にある場合に、コントラスト検出方式でレンズ群１２２の焦点状態が検出されて焦点調節が行われる。このように、カメラＭＰＵ１３３は、レンズＭＰＵ１２３と協働して、レンズ群１２２の焦点調節を行う。
【００２２】
また、ＡＳＩＣ１３５は、記録用の画像データを生成する画像処理として、欠陥画素補正、ホワイトバランス補正、色補間処理、色補正、ガンマ補正、輪郭強調処理等の画像処理を行う。また、ＡＳＩＣ１３５は、画像処理が施された画像データを、規格化された画像フォーマットの画像データに変換して出力する。例えば、ＡＳＩＣ１３５は、静止画の画像データを、ＪＰＥＧ等の規格に準拠した圧縮および符号処理を施して、静止画データを生成する。ＡＳＩＣ１３５は、生成した静止画データにＥｘｉｆ等の予め定められたフォーマットで付帯情報を付帯して、記録用の静止画データを生成する。
【００２３】
また、ＡＳＩＣ１３５は、動画を構成する複数のフレームを、Ｍｏｔｉｏｎ  ＪＰＥＧ、Ｈ．２６４、ＭＰＥＧ２等の規格に準拠した圧縮および符号化処理を施して、動画データを生成する。カメラＭＰＵ１３３は、ＡＳＩＣ１３５によって生成された記録用の静止画データ、動画データ等の記録用の画像データを、不揮発性の記録媒体の一例としての外部メモリ１６０に転送して記録させる。外部メモリ１６０としては、例えばフラッシュメモリ等の半導体メモリを例示することができる。なお、カメラＭＰＵ１３３は、静止画データ、動画データ等の画像データを外部メモリ１６０に記録させる他、画像データをネットワーク等の伝送路に出力させてもよい。
【００２４】
ＡＳＩＣ１３５は、撮像時においては記録用の画像データの生成に並行して、表示用の画像データを生成する。再生時においては、ＡＳＩＣ１３５は、外部メモリ１６０から読み出された画像データから表示用の画像データを生成する。生成された表示用の画像データは、表示制御部１３７の制御に従って表示画像信号に変換され、液晶ディスプレイ等の表示デバイスとしての表示部１３８に表示される。また、画像の表示と共に、もしくは画像を表示することなく、撮像装置１００の各種設定に関する様々なメニュー項目も、表示制御部１３７の制御により表示部１３８に表示することができる。カメラＭＰＵ１３３は、表示制御部１３７を制御して、メニュー項目を表示部１３８に表示させる。
【００２５】
撮像装置１００は、上記に説明した制御を含めて、カメラＭＰＵ１３３により直接的または間接的に制御される。システムメモリ１３９は、電気的に消去・記憶可能な不揮発性メモリであり、例えばフラッシュＲＯＭ等により構成される。システムメモリ１３９は、撮像装置１００の動作に必要な定数、変数等の制御用のパラメータ、プログラム等を、撮像装置１００の非動作時にも失われないように記憶している。カメラＭＰＵ１３３は、定数、変数、プログラム等をシステムメモリ１３９から適宜ＳＤＲＡＭ１３６に展開して、撮像装置１００の制御に利用する。カメラ本体１３０内の、ＡＳＩＣ１３５、ＳＤＲＡＭ１３６、システムメモリ１３９、表示制御部１３７、カメラＭＰＵ１３３、外部メモリ１６０は、バス等の接続インタフェース１４５により、相互に接続される。
【００２６】
操作入力部１４１は、ユーザ操作を受け付ける。操作入力部１４１は、電源ボタン、レリーズボタン、ライブビューボタン、動画撮像ボタンおよび各種操作ボタン等のキー、表示部１３８に一体に実装されたタッチパネル等の部材を含む。カメラＭＰＵ１３３は、操作入力部１４１が操作されたことを検知して、操作に応じた動作を実行する。例えば、カメラＭＰＵ１３３は、レリーズボタンが押し込みを検出した場合にレリーズ動作を実行するよう撮像装置１００の各部を制御する。例えば、カメラＭＰＵ１３３は、撮像モードが連写撮像モードに設定されている場合、連続撮像の一例としての連写撮像を実行するよう撮像装置１００の各部を制御する。また、カメラＭＰＵ１３３は、動画撮像ボタンの押し込みを検出した場合に、連続撮像の一例としての動画撮像を実行するよう撮像装置１００の各部を制御する。また、カメラＭＰＵ１３３は、表示部１３８に組み込まれたタッチパネルが操作された場合に、表示部１３８に表示されたメニュー項目および操作内容に応じた動作をするよう、撮像装置１００の各部を制御する。
【００２７】
カメラ本体１３０の各要素および外部メモリ１６０は、電源１７０から電力供給を受ける。電源１７０としては、カメラ本体１３０に対して着脱できる例えばリチウムイオン電池等の二次電池、系統電源等からの交流電力を直流電力に変換する電力変換部等を例示することができる。カメラＭＰＵ１３３は、電源の状態を検出して、電源の状態に応じて撮像装置１００の各部を制御する。例えば、カメラＭＰＵ１３３は、電源１７０が二次電池であるか否かを判断する。カメラＭＰＵ１３３は、電源１７０が二次電池であると判断した場合、二次電池の残存容量を検出して、残存容量に応じて撮像装置１００の各部を制御する。また、カメラＭＰＵ１３３は、電源１７０から撮像装置１００の各部への電力供給を制御する。なお、二次電池は電池の一例であり、電池とは、実質的に充電することができない非充電式の電池を含む。
【００２８】
図２は、ＡＳＩＣ１３５が有する機能ブロック構成の一例を示す。ここでは、主として画像処理に関する機能ブロックを示す。ＡＳＩＣ１３５は、画像処理部２００、符号化エンジン２２０、復号エンジン２４０、ハッシュ値算出部２１０、埋め込み情報生成部２３０および検証部２５０を有する。
【００２９】
Ａ／Ｄ変換器１３４から出力された画像データは、ＳＤＲＡＭ１３６のワークエリアに記憶される。画像処理部２００は、ワークエリアに記憶された画像データに画像処理を施す。画像処理部２００における画像処理としては、欠陥画素補正、ホワイトバランス補正、色補間処理、色補正、ガンマ補正、輪郭強調処理等を例示することができる。画像処理部２００により画像処理が施された画像データは、符号化エンジン２２０に供給される。
【００３０】
符号化エンジン２２０は、供給されたデータを符号化して、ＳＤＲＡＭ１３６に記憶する。符号化エンジン２２０は、ＪＰＥＧ方式で画像データに圧縮処理および符号化処理を施す。
【００３１】
符号化エンジン２２０は、ＤＣＴ変換部２２２、量子化部２２４および符号化部２２６を有する。ＤＣＴ変換部２２２は、画像データに離散コサイン変換（ＤＣＴ）を施す。ＤＣＴ変換部２２２によって、８×８の複数のブロックのそれぞれのＤＣＴ係数データが算出される。
【００３２】
量子化部２２４は、各ブロックのＤＣＴ係数データを量子化する。量子化部２２４は、ＳＤＲＡＭ１３６に展開された量子化テーブルに従って、各ブロックのＤＣＴ係数データを量子化する。量子化部２２４で量子化されたＤＣＴ係数データは、符号化部２２６およびハッシュ値算出部２１０に供給される。量子化されたＤＣＴ係数データは、符号化対象の画像データである符号化対象データとなる。
【００３３】
ハッシュ値算出部２１０は、量子化されたＤＣＴ係数データからハッシュ値を算出する。ハッシュ値算出部２１０は、符号化対象データから、一意に定まる演算値を算出する演算部の一例である。ハッシュ値算出部２１０は、量子化されたＤＣＴ係数データから１方向関数によってハッシュ値を算出する。埋め込み情報生成部２３０は、ハッシュ値算出部２１０が算出したハッシュ値を取得して、当該ハッシュ値から埋め込み情報を生成する。例えば、埋め込み情報生成部２３０は、ハッシュ値算出部２１０が算出したハッシュ値のデータ長を示すバイナリデータと、当該ハッシュ値を示すバイナリデータとを含む埋め込み情報を生成する。ハッシュ値は、画像符号化データを検証する場合に用いる検証用情報の一例である。検証用情報は、符号化対象データから一意に定まる情報であれば、どのような情報であってもよい。
【００３４】
なお、埋め込み情報生成部２３０は、ハッシュ値以外に、種々のデータから埋め込み情報を生成してよい。例えば、埋め込み情報生成部２３０は、ＳＤＲＡＭ１３６内の埋め込み情報を記憶するデータエリアから埋め込みデータを取得して、取得したデータから埋め込み情報を生成してよい。埋め込み情報生成部２３０が生成した埋め込み情報は、符号化部２２６に供給される。
【００３５】
符号化部２２６は、量子化されたＤＣＴ係数データをブロック毎に符号化する。具体的には、符号化部２２６は、ＳＤＲＡＭ１３６に展開されたハフマンテーブルを用いて、量子化されたＤＣＴ係数データを符号化する。符号化部２２６は、埋め込み情報生成部２３０が生成した埋め込み情報に応じて符号を選択してＤＣＴ係数データを符号化することにより、埋め込み情報を埋め込む。符号化部２２６の機能ブロックについては、図３等に関連して説明する。
【００３６】
符号化部２２６により符号化された画像データは、ＳＤＲＡＭ１３６のワークエリアに記憶され、カメラＭＰＵ１３３によって外部に出力される。例えば、符号化された画像データは、外部メモリ１６０等にＥｘｉｆ形式のＪＰＥＧファイルとして記録される。
【００３７】
復号エンジン２４０は、符号化された画像データを復号する。なお、符号化された画像データを、画像符号化データと呼ぶ場合がある。画像符号化データは、カメラＭＰＵ１３３によって外部から取得されて、ＳＤＲＡＭ１３６のワークエリアに記憶される。例えば、カメラＭＰＵ１３３は、外部メモリ１６０に記録されたＪＰＥＧファイルを読み出して、画像符号化データをＳＤＲＡＭ１３６のワークエリアに記憶する。
【００３８】
復号エンジン２４０は、ＪＰＥＧ方式で符号化された画像符号化データに復号処理および伸張処理を施す。復号エンジン２４０は、逆ＤＣＴ変換部２４６、逆量子化部２４４および復号部２４２を有する。
【００３９】
復号部２４２は、画像符号化データをハフマン復号することにより、ＤＣＴ係数データを生成する。具体的には、復号部２４２は、ＳＤＲＡＭ１３６のワークエリアから画像符号化データを取得してハフマン復号することにより、量子化されたＤＣＴ係数データを生成する。復号部２４２が生成したＤＣＴ係数データは、逆量子化部２４４、ハッシュ値算出部２１０に供給される。なお、復号部２４２は、復号処理の過程で画像符号化データから埋め込み情報を抽出する。例えば、復号部２４２は、画像データを符号化処理する場合に埋め込まれたハッシュ値を、画像符号化データから抽出して、検証部２５０に供給する。復号部２４２の機能ブロックについては、図４に関連して説明する。
【００４０】
逆量子化部２４４は、復号部２４２から供給されたＤＣＴ係数データを逆量子化する。逆量子化部２４４は、画像符号化データに含まれる量子化テーブルに従って、逆量子化処理を行う。逆ＤＣＴ変換部２４６は、逆量子化されたＤＣＴ係数データに逆ＤＣＴ変換を施す。逆ＤＣＴ変換部２４６により、各ブロックの画素データが生成される。逆ＤＣＴ変換部２４６により生成された複数のブロックの画素データは、復号された画像データとしてＳＤＲＡＭ１３６のワークエリアに記憶される。復号された画像データは、表示部１３８への表示等に供される。
【００４１】
画像符号化データを検証する場合の動作について説明する。ハッシュ値算出部２１０は、復号部２４２から供給されたＤＣＴ係数データから、ハッシュ値を算出する。ハッシュ値算出部２１０が算出したハッシュ値は、検証部２５０に供給される。検証部２５０は、復号部２４２から供給されたハッシュ値と、ハッシュ値算出部２１０が算出したハッシュ値とを比較することにより、画像符号化データを検証する。例えば、検証部２５０は、これらのハッシュ値が一致した場合に、真正性ありと判断する。
【００４２】
なお、画像符号化データに情報を埋め込む場合は、情報の埋め込み対象となる画像符号化データを復号部２４２で復号して、復号部２４２により得られたＤＣＴ係数データを、符号化対象データとして符号化部２２６およびハッシュ値算出部２１０に供給する。これにより、符号化部２２６においてＤＣＴ係数データを符号化する過程で、埋め込み情報生成部２３０が生成した埋め込み情報が埋め込まれる。
【００４３】
図３は、符号化部２２６が有する機能ブロック構成の一例を示す。符号化部２２６は、符号化対象データ取得部３００、ＤＣ成分符号化部３１０、ＡＣ成分ランレングス処理部３２０、情報埋め込み部３３０およびハフマン符号化処理部３８０を有する。
【００４４】
符号化対象データ取得部３００は、符号化対象の画像データである符号化対象データを取得する。符号化対象データ取得部３００は、ＪＰＥＧ方式におけるハフマン符号化の対象となるＤＣＴ係数データを、符号化対象データとして取得する。具体的には、符号化対象データ取得部３００は、量子化部２２４から供給されたＤＣＴ係数データを取得する。また、符号化対象データ取得部３００は、復号部２４２により生成されたＤＣＴ係数データを、符号化対象データとして取得する。
【００４５】
ＤＣ成分符号化部３１０は、各ブロックのＤＣＴ係数データのうちのＤＣ成分を符号化する。ＤＣ成分の符号化については図５に関連して説明する。ＡＣ成分ランレングス処理部３２０は、各ブロックのＤＣＴ係数データのうちのＡＣ成分におけるランレングスを検出する。具体的には、ＡＣ成分ランレングス処理部３２０は、０のＡＣ成分の連続数を検出する。ＡＣ成分ランレングス処理部３２０の動作の詳細については後述する。
【００４６】
情報埋め込み部３３０は、ランレングスに基づいて埋め込み情報を埋め込むべきデータ部分を特定する。例えば、情報埋め込み部３３０は、予め定められた長さを超えるランレングスが検出されたデータ部分を、埋め込み情報を埋め込むべきデータ部分として特定する。情報埋め込み部３３０は、特定したデータ部分を、埋め込み情報生成部２３０から供給された埋め込み情報に応じて符号を選択して符号化する。これにより、符号化に用いる符号によって情報が埋め込まれる。情報埋め込み部３３０は、データ検出部３４０、データ判断部３５０、符号決定部３６０および挿入部３７０を含む。
【００４７】
データ検出部３４０は、ＤＣＴ係数のＡＣ成分データのうち、ＥＯＢ符号を用いて符号化できるデータ部分を検出する。データ判断部３５０は、データ検出部が検出したデータ部分が、ＺＲＬ符号で表されるデータである１６個の０の連続を含むか否かを判断する。符号決定部３６０は、ＺＲＬ符号で表されるデータを含むと判断されたデータ部分を、ＺＲＬ符号を用いて符号化するか否かを、埋め込み情報に基づいて決定する。例えば、ＺＲＬ符号もＥＯＢ符号も０のＡＣ成分の連続を表すことができる。符号決定部３６０は、データ検出部３４０およびデータ判断部３５０で検出された１７個以上の０の連続を含むデータ部分を、一つのＥＯＢ符号を用いて符号化するか、ＺＲＬ符号およびＥＯＢ符号を用いて符号化するかを、埋め込み情報に基づいて決定する。これにより、埋め込み情報を埋め込む前と画像内容の同一性を保証することができる。
【００４８】
ハフマン符号化処理部３８０は、ハフマンテーブルを用いてハフマン符号化を行う。ＤＣ成分符号化部３１０、情報埋め込み部３３０およびハフマン符号化処理部３８０において、各ブロックの全ＤＣＴ係数データが符号化される。
【００４９】
図４は、復号部２４２が有する機能ブロック構成の一例を示す。復号部２４２は、符号化データ取得部４００、ＤＣ成分復号部４１０、ハフマン復号処理部４２０、情報抽出部４３０およびＡＣ成分復号部４４０を有する。
【００５０】
符号化データ取得部４００は、符号化された画像データである画像符号化データを取得する。符号化データ取得部４００は、ＪＰＥＧ符号化においてＤＣＴ係数がハフマン符号化された画像符号化データを取得する。
【００５１】
ＤＣ成分復号部４１０は、画像符号化データのうち、ＤＣ成分を復号する。ハフマン復号処理部４２０は、画像符号化データをハフマン復号する。情報抽出部４３０は、画像符号化データから、埋め込み情報を抽出する。例えば、情報抽出部４３０は、画像符号化データに埋め込まれているハッシュ値を抽出する。情報抽出部４３０は、ハッシュ値を抽出した場合、抽出したハッシュ値を検証部２５０に供給する。情報抽出部４３０は、符号検出部４３２および埋め込み情報特定部４３４を含む。
【００５２】
符号検出部４３２は、画像符号化データから、第１符号および第２符号の少なくとも一方を含む符号化データ部分を検出する。具体的には、符号検出部４３２は、第２符号で表されるデータを含み、かつ、第１符号で表すことができるデータ部分に対応する符号化データ部分を検出する。具体的には、符号検出部４３２は、画像符号化データから、ＥＯＢ符号およびＺＲＬ符号の少なくとも一方を含む符号化データ部分を検出する。符号検出部４３２は、ＤＣＴ係数のＡＣ成分データが符号化された符号化データから、ＺＲＬ符号で表されるデータである１６個のゼロ係数の連続を含み、かつ、ＥＯＢ符号で表すことができるＡＣ成分データのデータ部分に対応する符号化データ部分を検出する。埋め込み情報特定部４３４は、符号化データ部分がＺＲＬ符号を含むか否かに基づいて、埋め込み情報を特定する。例えば、埋め込み情報特定部４３４は、ＺＲＬ符号を含んでいない場合はバイナリデータ０と特定し、ＺＲＬ符号を１つ含んでいる場合はバイナリデータ１として特定する。
【００５３】
ＡＣ成分復号部４４０は、ＡＣ成分を復号して、ブロックのＤＣＴ係数データのＡＣ成分を生成する。ＤＣ成分復号部４１０、ハフマン復号処理部４２０、ＡＣ成分復号部４４０において、各ブロックの全ＤＣＴ係数データが生成される。生成されたＤＣＴ係数データは、逆量子化部２４４に供給される。なお、画像符号化データを検証する場合、生成されたＤＣＴ係数データは、ハッシュ値算出部２１０に供給される。また、画像符号化データに埋め込み情報を埋め込む場合、ＤＣＴ係数データはハッシュ値算出部２１０および符号化部２２６に供給される。
【００５４】
図５は、ＤＣＴ係数データのＤＣ成分に対する前処理を示す。ＪＰＥＧ方式の圧縮処理および符号化処理では、ＤＣＴ変換部２２２において、輝度信号および色差信号のそれぞれにつき、８×８のブロック毎にＤＣＴ係数が算出される。ＤＣＴ変換部２２２により、各ブロックの画像信号が６４個のＤＣＴ係数に変換される。６４個のＤＣＴ係数は、１つのＤＣ成分および６３個のＡＣ成分を含む。
【００５５】
６４個のＤＣＴ係数は、量子化部２２４において、６４個の値を持つ量子化テーブルを用いて量子化される。量子化部２２４は、６４個のＤＣＴ係数を、量子化テーブルの対応する値でそれぞれ量子化する。量子化された６４個のＤＣＴ係数は、符号化部２２６で符号化される。
【００５６】
符号化部２２６では、ブロック毎に順次に符号化される。本図において、ブロックｉは、符号化部２２６で処理対象となるブロックを示す。ブロックｉ−１は、ブロックｉの直前のブロックである。ＤＣｉは、ブロックｉのＤＣ成分を示す。ＤＣｉ−１は、直前のブロックｉ−１のＤＣ成分を示す。符号化部２２６において、ＤＣ成分符号化部３１０は、ハフマン符号化の前に、ＤＣ成分符号化部３１０は、ＤＣｉ−１を用いてＤＣｉを予測する。すなわちＤＣ成分符号化部３１０は、ＤＣｉとＤＣｉ−１との差分であるＤＣ差分を算出する。すなわち、ＤＣ成分符号化部３１０は、ＤＣｉ−ＤＣｉ−１によりＤＣ差分を算出して、算出したＤＣ差分を符号化する。
【００５７】
図６は、ＡＣ成分を含むＤＣＴ係数データに対する前処理を示す。本図は、量子化された６４個のＤＣＴ係数を２次元配列で示す。本配列において、ｘ方向のより高周波成分に対応するＡＣ成分が、より右方に位置する。また、ｙ方向のより高周波成分に対応するＡＣ成分が、本配列のより下方に位置する。ＡＣ成分ランレングス処理部３２０において、６４個のＤＣＴ係数が順次にスキャンされて、ランレングス処理に供される。具体的には、本配列の左上の位置のＤＣ差分から始まり、ＡＣ０１からＡＣ７７までＡＣ成分がジグザグにスキャンされる。
【００５８】
図７は、ＤＣ差分の符号化に用いる符号表を示す。上述したように、量子化された６４個のＤＣＴ係数のうちＤＣ成分については、ＤＣ差分値を符号化する。ＤＣ成分用の符号表は、任意のＤＣ差分値を符号化できる１組のハフマン符号および付加される追加ビットによって構成される。ハフマン符号の最大長は１６ビットである。
【００５９】
ＤＣ差分値は、絶対値によって本図のように１２個のＳＳＳＳカテゴリに分類される。ハフマン符号は、ＳＳＳＳカテゴリ毎に一つ作成される。ＳＳＳＳ＝０以外のカテゴリでは、追加ビットフィールドを符号語に付加し、各カテゴリ内のどの差分が実際に現れたのかを一意に識別する。追加ビット数は、ＳＳＳＳの値によって指定される。すなわち、追加ビット数はＳＳＳＳの値と一致する。
【００６０】
追加ビットは、最上位ビットから順に直前のハフマン符号の最下位ビットの後ろに付加される。ＤＣ差分値が正の場合は、ＤＣ差分の下位ビットのＳＳＳＳが付加される。ＤＣ差分値が負の場合は、ＤＣ差分値から１を減じた値の下位ビットのＳＳＳＳが付加される。このため、付加したバイナリデータの最上位ビットは、ＤＣ差分値が負の場合０となり、正の場合は１となる。
【００６１】
図８は、ＤＣＴ係数データのＡＣ成分の符号化に用いる符号表を示す。ＡＣ成分ランレングス処理部３２０において、ＡＣ成分は、図６に関連して説明したジグザグスキャンにより、低周波数成分から高周波数成分が順次選択されて、１次元でアクセスされる。ＡＣ成分ランレングス処理部３２０は、順次に選択されるＡＣ成分につき、絶対値が０であるか否かを判定する。また、ＡＣ成分ランレングス処理部３２０は、連続する絶対値０のＡＣ成分はその連続長さをランレングスとしてカウントする。絶対値が非０のＡＣ成分は、ＲＳ＝Ｂ'ＲＲＲＲＳＳＳＳ'の形式の複合８ビットの値を持つＲＳによって記述される。ここで、下位４ビットの'ＳＳＳＳ'は非０のＡＣ成分の絶対値のカテゴリを表す。上位４ビットの'ＲＲＲＲ'は、非０のＡＣ成分の直前のランレングスを表す。本複合値によって、最大１５個の０係数の連続と、非０のＡＣ成分とを表すことができる。
【００６２】
複合値であるＲＳは、ハフマン符号化処理部３８０においてハフマン符号化され、各ハフマン符号の後に係数の符号および追加ビットが付加される。本図は、ＡＣ成分のＳＳＳＳカテゴリ毎に割り当てられた絶対値の範囲と、付加ビット数とを示す。ハフマン符号化処理部３８０は、ＤＣＴ係数のＡＣ成分の複合値ＲＲＲＲＳＳＳＳをハフマン符号化する。ハフマン符号化処理部３８０は、ＤＣ成分に対する処理と同様に、ハフマン符号の後に追加ビットを付加する。
【００６３】
なお、非０のＡＣ成分を表す複合値によると、最大１５個の０係数の連続と、非０のＡＣ成分とを表すことができる。ランレングスは１５よりも長い場合があるので、１５個の０成分の連続の後に１つの０係数を表す値'ＲＲＲＲＳＳＳＳ'＝'１１１１００００'が定義される。この符号をＺＲＬ符号と呼ぶ。ＺＲＬ符号は、絶対値０のＡＣ成分の１６個の連続と解釈できる。すなわち、ＺＲＬ符号は、１６個の０係数が連続するデータ部分を表す。また、ブロック内の後続するＡＣ成分がすべて０である場合は、特殊な値'ＲＲＲＲＳＳＳＳ'＝'００００００００'を使用してブロックの終わりを符号化する。この符号をＥＯＢ符号と呼ぶ。
【００６４】
図９は、ＡＣ成分の符号表の一般構造を示す。本例においては、"Ｎ／Ａ"の印の付いたエントリは未定義とする。ランレングスが１５未満である絶対値０のＡＣ成分の連続および非０の１つのＡＣ成分よりなるデータ部分は、複合値で表される。
【００６５】
図１０は、埋め込み情報を埋め込む処理の一例を説明する図である。上述したように、ジグザグスキャンの最終のＡＣ成分が絶対値０である場合、最終のＡＣ成分を含む１以上の絶対値０のＡＣ成分の連続したデータ部分がＥＯＢ符号にて符号化される。ここで、絶対値０のＡＣ成分が１７個以上連続する場合、そのうちの１６個分のデータ部分をＺＲＬ符号で表しても問題がない。そこで、情報埋め込み部３３０は、絶対値０のＡＣ成分が１７個以上連続するデータ部分を特定して、特定したデータ部分をＺＲＬ符号で符号化するか否かを、埋め込み情報に基づいて決定する。このように、情報埋め込み部３３０は、１７個以上の絶対値０のＡＣ成分が連続する場合に、ＺＲＬ符号を挿入しても問題が生じないことを利用して、埋め込み情報を埋め込む。このように、情報埋め込み部３３０は、冗長な符号を用いるか否かを、埋め込み情報に応じて決定することにより、埋め込み情報を埋め込む。
【００６６】
具体的には、データ検出部３４０は、最も高い周波数領域のＡＣ成分であるＡＣ７７を符号化する際に、ＡＣ７７が絶対値０であるか否かを検出する。ＡＣ７７が絶対値０である場合、データ判断部３５０は、ＡＣ成分ランレングス処理部３２０でカウントされたランレングスの値が１７以上であるか否かを判断する。ランレングスの値が１７以上である場合は、ＺＲＬを挿入するか否かで情報を埋め込むことができる。符号決定部３６０は、埋め込み情報に基づいて、ＺＲＬ符号を挿入するか否かを判断する。
【００６７】
挿入部３７０は、符号決定部３６０でＺＲＬ符号を用いて符号化すると判断された場合は、ＥＯＢ符号の前にＺＲＬ符号を挿入する。したがって、絶対値０が１７個以上連続するデータ部分が、ＺＲＬ符号およびＥＯＢ符号で表される。
【００６８】
なお、ランレングスが１７から３２までの場合、ＺＲＬ符号を１つ挿入することができる。ランレングスが３３から４８までの場合、ＺＲＬ符号を２つ挿入することができる。ランレングスが４９から６３までの場合、ＺＲＬ符号を３つ挿入することができる。本図は、埋め込むビットと、符号化データとの関係を示す。
【００６９】
ランレングスが１７から３２までの場合の符号化データを、本図の符号１０００および１０１０で模式的に示す。符号決定部３６０は、埋め込み情報のバイナリデータのうちの１ビットの値が０である場合は、ＺＲＬを用いずにＥＯＢ符号で符号化する旨を決定する。一方、埋め込み情報のバイナリデータのうちの１ビットの値が１である場合は、ＺＲＬ符号を１つ用いて符号化する旨を決定する。この場合、挿入部３７０は、ＥＯＢ符号の前にＺＲＬ符号を１つ挿入する。このように、ランレングスが１７から３２までの場合、符号決定部３６０は、ＺＲＬ符号を挿入するか否かを、埋め込み情報の１ビット長のバイナリ値に応じて、決定する。
【００７０】
ランレングスが３３から４８までの場合の符号化データを、本図の符号１０２０、１０３０および１０４０で模式的に示す。符号決定部３６０は、埋め込み情報のバイナリデータのうちの２ビットの値が１０である場合は、ＺＲＬ符号を２つ用いて符号化する旨を決定する。この場合、挿入部３７０は、ＥＯＢ符号の前にＺＲＬ符号を２つ挿入する。埋め込み情報のバイナリデータのうちの２ビットの値が１０でない場合、符号決定部３６０は、当該バイナリデータの１ビットの値が０であるときは、ＺＲＬ符号を用いずにＥＯＢ符号で符号化する旨を決定する。一方、符号決定部３６０は、当該バイナリデータの１ビットの値が１であるときは、ＺＲＬ符号を１つ用いて符号化する旨を決定する。この場合、挿入部３７０は、ＥＯＢ符号の前にＺＲＬ符号を１つ挿入する。このように、ランレングスが３３から４８までの場合、埋め込み情報の１または２ビット長のバイナリデータに応じて、ＺＲＬ符号が挿入される数が決定される。
【００７１】
ランレングスが４９から６３までの場合の符号化データを、本図の符号１０５０、１０６０、１０７０および１０８０で模式的に示す。符号決定部３６０は、埋め込み情報のバイナリデータのうちの２ビットの値が１０である場合は、ＺＲＬ符号を２つ用いて符号化する旨を決定する。この場合、挿入部３７０は、ＥＯＢ符号の前にＺＲＬ符号を２つ挿入する。一方、埋め込み情報のバイナリデータのうちの２ビットの値が１１である場合は、符号決定部３６０は、ＺＲＬ符号を３つ用いて符号化する旨を決定する。この場合、挿入部３７０は、ＥＯＢ符号の前にＺＲＬ符号を３つ挿入する。
【００７２】
埋め込み情報のバイナリデータのうちの２ビットの値が１０および１１のいずれでもない場合、符号決定部３６０は、当該バイナリデータの１ビットの値が０であるときは、ＺＲＬ符号を用いずにＥＯＢ符号で符号化する旨を決定する。一方、符号決定部３６０は、当該バイナリデータの１ビットの値が１であるときは、ＺＲＬ符号を１つ用いて符号化する旨を決定する。この場合、挿入部３７０は、ＥＯＢ符号の前にＺＲＬ符号を１つ挿入する。このように、ランレングスが４９から６３までの場合、埋め込み情報の１または２ビット長のバイナリデータに応じて、ＺＲＬ符号が挿入される数が決定される。
【００７３】
本図の例では、ランレングスが１７以上である場合に、バイナリデータ１を１つのＺＲＬ符号で表すとした。また、バイナリデータ０をＥＯＢ符号だけで表すとした。また、２ビット長のバイナリデータが１０である場合は、２つのＺＲＬを用いるとした。また、２ビット長のバイナリデータが１１である場合は、３つのＺＲＬ符号を用いるとした。しかし、１ビット長のバイナリデータが０である場合に１つのＺＲＬ符号を用いる等してよい。すなわち、埋め込み情報に応じてどのような符号を用いるかは、本例に限られず、種々のルールに従って選択できる。情報抽出部４３０は、情報埋め込みのルールに従って、埋め込み情報を抽出することができる。例えば、符号検出部４３２は、ＥＯＢおよびＺＲＬの符号化データ部分を検出して、当該符号化データ部分が示すランレングスと、ＺＲＬ符号の数とに基づいて、埋め込み情報を特定することができる。
【００７４】
図１１は、埋め込み情報であるバイナリデータを複数のブロックに埋め込む処理を説明する図である。ここでは、バイナリデータ０１１０１０１０１０を、８×８の複数のブロック１１０１〜１１１４に埋め込む処理について説明する。本図において、情報を埋め込むことができるブロックに斜線を付して示す。具体的には、ブロック１１０１、１１０２、１１０４、１１０６、１１０９、１１１０、１１１２、１１１３および１１１４が、最も高い周波数成分のＡＣ成分が０であり、かつ、対応するランレングスが１７以上であるデータ部分を持つ。他のブロック１１０３、１１０５、１１０７、１１０８、１１１１は、当該データ部分を持たない。
【００７５】
ここで、ブロック１１０１において、最終のＡＣ成分の符号化で４９以上のランレングスが検出されたとする。本データ部分には、図１０に関連して説明したようにバイナリデータ０、１、１０および１１のいずれかを埋め込むことができる。しかし、埋め込み情報の先頭２ビット長のバイナリデータは０１であるので、符号決定部３６０は、２ビット長のバイナリデータを埋め込むことはできないと判断する。このため、符号決定部３６０は、先頭１ビット長のバイナリデータ０を本データ部分に埋め込む旨を決定して、本データ部分を、ＥＯＢ符号を用いて符号化する旨を決定する。
【００７６】
次のブロック１１０２においても、最終のＡＣ成分の符号化で４９以上のランレングスが検出されたとする。本データ部分には、バイナリデータ０、１、１０および１１のいずれかを埋め込むことができる。埋め込み情報の次の２ビット長のバイナリデータは１１であるので、符号決定部３６０は、本データ部分に２ビット長のバイナリデータを埋め込むことができると判断する。符号決定部３６０は、次の２ビット長のバイナリデータ１１を本データ部分に埋め込む旨を決定して、本データ部分を、３個のＺＲＬ符号およびＥＯＢ符号を用いて符号化する旨を決定する。
【００７７】
次のブロック１１０３では、最終のＡＣ成分の符号化で１７未満のランレングスが検出されたとする。この場合、データ判断部３５０において、ランレングスに基づいて、埋め込み可能なデータ部分が存在しないと判断される。したがって、本ブロックには情報は埋め込まれず、最終のデータ部分はＺＲＬ符号を用いずにＥＯＢ符号を用いて符号化される。
【００７８】
次のブロック１１０４では、３３から４８までのランレングスが検出されたとする。本データ部分には、バイナリデータ０、１および１０のいずれかを埋め込むことができる。しかし、埋め込み情報の次の２ビット長のバイナリデータは０１であるので、符号決定部３６０は、２ビット長のバイナリデータを埋め込むことはできないと判断する。このため、符号決定部３６０は、次の１ビット長のバイナリデータ０を本データ部分に埋め込む旨を決定して、本データ部分を、ＥＯＢ符号を用いて符号化する旨を決定する。
【００７９】
次のブロック１１０５では、最終のＡＣ成分の符号化で１７未満のランレングスが検出されたとする。この場合、データ判断部３５０において、ランレングスに基づいて、埋め込み可能なデータ部分が存在しないと判断される。したがって、本ブロックには情報は埋め込まれず、最終のデータ部分はＺＲＬ符号を用いずにＥＯＢ符号を用いて符号化される。
【００８０】
次のブロック１１０６では、４９以上のランレングスが検出されたとする。本データ部分には、バイナリデータ０、１、１０および１１のいずれかを埋め込むことができる。埋め込み情報の次の２ビット長のバイナリデータは１０であるので、符号決定部３６０は、２ビット長のバイナリデータを埋め込むことができると判断する。このため、符号決定部３６０は、次の２ビット長のバイナリデータ１０を本データ部分に埋め込む旨を決定して、本データ部分を、２個のＺＲＬ符号およびＥＯＢ符号を用いて符号化する旨を決定する。
【００８１】
次のブロック１１０７および続くブロック１１０８では、最終のＡＣ成分の符号化で１７未満のランレングスが検出され、データ判断部３５０において、ランレングスに基づいて、埋め込み可能なデータ部分が存在しないと判断される。したがって、これらのブロックには情報は埋め込まれず、最終のデータ部分はＺＲＬ符号を用いずにＥＯＢ符号を用いて符号化される。
【００８２】
次のブロック１１０９では、ランレングスが１７から３２までのランレングスが検出されたとする。本データ部分には、バイナリデータ０または１を埋め込むことができる。埋め込み情報の次の１ビット長のバイナリデータは１であるので、符号決定部３６０は、次の１ビット長のバイナリデータ１を本データ部分に埋め込む旨を決定して、本データ部分を、１個のＺＲＬ符号およびＥＯＢ符号を用いて符号化する旨を決定する。
【００８３】
次のブロック１１１０では、ランレングスが４９以上のランレングスが検出されたとする。ブロック１１０１と同様、符号決定部３６０は、先頭１ビット長のバイナリデータ０を本データ部分に埋め込む旨を決定して、本データ部分を、ＥＯＢ符号を用いて符号化する旨を決定する。
【００８４】
次のブロック１１１１では、最終のＡＣ成分の符号化で１７未満のランレングスが検出されたとする。この場合、データ判断部３５０において、ランレングスに基づいて、埋め込み可能なデータ部分が存在しないと判断される。したがって、本ブロックには情報は埋め込まれず、最終のデータ部分はＺＲＬ符号を用いずにＥＯＢ符号を用いて符号化される。
【００８５】
次のブロック１１１２では、ランレングスが４９以上のランレングスが検出されたとする。１１０６と同様、符号決定部３６０は、次の２ビット長のバイナリデータ１０を本データ部分に埋め込む旨を決定して、本データ部分を、２個のＺＲＬ符号およびＥＯＢ符号を用いて符号化する旨を決定する。
【００８６】
以上により、埋め込み情報のバイナリデータを全て埋め込みが完了する。ブロック１１１２、１１１３等に、情報を埋め込むことができる１７個以上のランレングスが存在した場合でも、当該データ部分はＥＯＢ符号で符号化される。このように、情報埋め込み部３３０は、複数のブロックを符号化する順で、埋め込み情報を埋め込むことができるか否かを判断して、埋め込み情報のバイナリデータを順次に埋め込む。埋め込み情報のバイナリデータの全ビットを埋め込みが完了した場合、情報埋め込み部３３０は、ＺＲＬ符号を挿入しない。
【００８７】
図１２は、静止画の撮像が指示された場合の撮像装置１００の動作フローの一例を示す。本フローは、カメラＭＰＵ１３３がレリーズボタンの押し込みを検出した場合に、開始される。
【００８８】
本フローが開始すると、ステップＳ１２０２において、カメラＭＰＵ１３３が主体となって撮像装置１００の各部を制御することにより、被写体を撮像する。具体的には、カメラＭＰＵ１３３は、メインミラー１５０が被写体光束から退避させた状態で、撮像素子１３２で露光させる。続いて、ステップＳ１２０４において、カメラＭＰＵ１３３は、画像データをＳＤＲＡＭ１３６に読み出す。
【００８９】
ステップＳ１２０６において、画像処理部２００が、ＳＤＲＡＭ１３６に記憶された画像データに画像処理を施す。続いて、ＤＣＴ変換部２２２がＤＣＴ変換を行い（ステップＳ１２０８）、生成されたＤＣＴ係数データを量子化部２２４が量子化する（ステップＳ１２１０）。
【００９０】
続いて、ステップＳ１２１２において、真正性情報を埋め込む旨が設定されているか否かを判断する。真正性情報を埋め込む旨が設定されている場合、カメラＭＰＵ１３３は、符号化部２２６における符号化処理を制御する埋め込みフラグを１に設定する（ステップＳ１２１４）。真正性情報を埋め込む旨が設定されていない場合、カメラＭＰＵ１３３は、埋め込みフラグを０に設定する（ステップＳ１２２０）。真正性情報を埋め込むか否かの設定は、ユーザ設定を通じて撮像前に予め設定されてよい。
【００９１】
続いて、ステップＳ１２１６において、量子化されたＤＣＴ係数データを符号化部２２６が符号化する。埋め込みフラグが１に設定されている場合、ハッシュ値算出部２１０で算出されたハッシュ値が符号化の工程で埋め込まれる。符号化処理の詳細については、図１３に関連して説明する。続いて、符号化された画像データを外部メモリ１６０に記録して（ステップＳ１２１８）、本フローを終了する。なお、ステップＳ１２１８において、真正性情報が埋め込まれたか否かを示す情報を、画像データの付帯情報として付帯して記録してよい。
【００９２】
図１３は、ＤＣＴ係数データを符号化する場合の動作フローの一例を示す。本フローは、図１２のステップＳ１２１６の詳細なフローである。ここでは、分かり易く説明することを目的として、１ブロックを符号化する場合のフローについて説明する。
【００９３】
本フローが開始されると、ステップＳ１３０２において、ＡＳＩＣ１３５において、埋め込みフラグが１であるか否かを判断する。埋め込みフラグが１である場合、ハッシュ値算出部２１０は、量子化されたＤＣＴ係数からハッシュ値を算出する（ステップＳ１３０４）。続いて、ステップＳ１３０６において、埋め込み情報生成部２３０がハッシュ値を含む埋め込み情報を生成し、ステップＳ１３０８に処理を進める。ステップＳ１３０２の判断において埋め込みフラグが１でないと判断された場合は、ハッシュ値の算出等をすることなく、ステップＳ１３０８に処理を進める。
【００９４】
ステップＳ１３０８において、ＤＣ成分符号化部３１０は、ＤＣＴ係数データのＤＣ成分を符号化する。続いて、ＡＣ成分ランレングス処理部３２０は、ランレングスカウンタを０に初期化して（ステップＳ１３１０）、６３個のＡＣ成分についてのループ処理を開始する（ステップＳ１３１２）。本ループ処理では、図６に関連して説明したように６３個のＡＣ成分がジグザグにスキャンされ、各反復において１つのＡＣ成分が選択されて処理される。６３個のＡＣ成分は初期値を１とする変数ｋでスキャンされ、変数ｋは１反復終了する毎にインクリメントされる。本ループ処理は、ステップＳ１３３８で終了の判断がなされる。本ループ処理では、特に断らない限りＡＣ成分ランレングス処理部３２０が主体となって処理を行う。
【００９５】
ループ処理が開始すると、ステップＳ１３１４において、処理対象のＡＣ成分が０であるか否かを判断する。処理対象のＡＣ成分が０である場合、変数ｋが６３であるか否かを判断する（ステップＳ１３１６）。つまり、現在の選択されたＡＣ成分がブロックの最終のＡＣ成分であるＡＣ７７であるか否かを判断する。変数ｋが６３でない場合、ランレングスカウンタをインクリメントし（ステップＳ１３１８）、ステップＳ１３３８の判断に進む。
【００９６】
ステップＳ１３１４の判断で、処理対象のＡＣ成分が０でないと判断された場合、ステップＳ１３２０において、ランレングスカウンタが１５を超えるか否かを判断する。ランレングスカウンタが１５を超えない場合、ハフマン符号化処理部３８０はＲＳの複合値および下位ＳＳＳＳビットの付加ビットを符号として付加する（ステップＳ１３２６）。続いて、ステップＳ１３２８において、ランレングスカウンタを０に初期化して、ステップＳ１３３８の判断に進む。
【００９７】
ステップＳ１３２０の判断で、ランレングスカウンタが１５を超えると判断された場合、ハフマン符号化処理部３８０は符号としてＺＲＬ符号を挿入する（ステップＳ１３２２）。続いて、ランレングスカウンタから１６を減じて（ステップＳ１３２４）、ステップＳ１３２０に移行する。
【００９８】
ステップＳ１３１６の判断で、変数ｋが６３であると判断された場合、データ検出部３４０は、埋め込みフラグが１に設定されているか否かを判断する。埋め込みフラグが１に設定されていない場合、ハフマン符号化処理部３８０は符号としてＥＯＢ符号を挿入し（ステップＳ１３３２）、ステップＳ１３３８の判断に進む。
【００９９】
ステップＳ１３３０の判断で埋め込みフラグが１に設定されていると判断された場合、データ判断部３５０は、ランレングスカウンタが１７以上であるか否かを判断する。ランレングスカウンタが１７以上でないと判断された場合、ステップＳ１３３２に処理を移行する。ランレングスカウンタが１７以上であると判断された場合、ステップＳ１３３６において、符号決定部３６０は、ランレングスカウンタおよび埋め込みデータに応じてＺＲＬ符号を挿入する数を決定して、符号決定部３６０がＺＲＬ符号をＥＯＢ符号の前に挿入する（ステップＳ１３３６）。具体的には、図１０、図１１等に関連して説明したように、ＺＲＬ符号を挿入する数を決定する。ステップＳ１３３６の処理が完了すると、ステップＳ１３３８の判断に進む。
【０１００】
ステップＳ１３３８において、ループ処理を終了するか否かを判断する。具体的には、変数ｋが６３である場合にループ処理を終了すると判断し、本フローを終了する。
【０１０１】
ここでは１ブロックに対する符号化処理について説明したが、本フローと同様のフローを複数のブロックのそれぞれの符号化処理に適用できる。なお、埋め込みデータを全て埋め込んだ場合、以後のブロックに対する処理が開始される前に、埋め込みフラグを０に設定してよい。
【０１０２】
図１４は、真正性情報を画像に新たに埋め込む場合の動作フローの一例を示す。本フローは、例えば再生モード中に実行される。例えば、操作入力部１４１の一部としての再生モードボタンが押し込まれることで再生モードに遷移した後、真正性情報を埋め込む画像を選択する旨がユーザによって指示された場合に、開始される。
【０１０３】
本フローが開始すると、ステップＳ１４０２において、外部メモリ１６０に記録されている画像データの一覧を表示部１３８が表示する。例えば、ＡＳＩＣ１３５は、外部メモリ１６０に記録されている複数の画像データのサムネイル用画像を表示部１３８に表示させる。ここで、画像データの付帯情報に基づいて真正性情報が埋め込まれていない画像を特定して、特定した画像だけを表示部１３８に一覧表示させてもよい。
【０１０４】
続いて、ステップＳ１４０４において、ハッシュ値の埋め込み対象とする画像を、ユーザに選択させる。例えば、ユーザは、カメラＭＰＵ１３３は、操作入力部１４１の一部としての十字キーおよび選択ボタン等を通じて、ハッシュ値の埋め込み対象とする画像を選択する。カメラＭＰＵ１３３は、十字キーおよび選択ボタン等の操作を検出して、ユーザが選択した画像を特定する。
【０１０５】
続いて、カメラＭＰＵ１３３は、選択された画像の画像データを外部メモリ１６０からＳＤＲＡＭ１３６に読み出して、復号部２４２に復号させる（ステップＳ１４０６）。そして、カメラＭＰＵ１３３は、埋め込みフラグを１に設定して（ステップＳ１４０８）、ステップＳ１４０６の復号処理で得られたＤＣＴ係数データを符号化部２２６に符号化させる（ステップＳ１４１０）。符号化部２２６による符号化処理が完了すると、符号化により得られた画像データで、ユーザにより選択された画像データを上書きし（ステップＳ１４１２）、フローを終了する。
【０１０６】
図１５は、画像データを検証する場合における撮像装置１００の動作フローの一例を示す。本フローは、例えば再生モード中に実行される。例えば、操作入力部１４１の一部としての再生モードボタンが押し込まれることで再生モードに遷移した後、真正性を検証する画像を選択する旨をユーザが指示した場合に、開始される。
【０１０７】
本フローが開始すると、ステップＳ１５０２において、外部メモリ１６０に記録されている画像データの一覧を表示部１３８が表示する。例えば、ＡＳＩＣ１３５は、外部メモリ１６０に記録されている各画像データのサムネイル画像を、表示部１３８に表示させる。ここで、画像データの付帯情報に基づいて真正性情報が埋め込まれている画像を特定して、特定した画像だけを表示部１３８に一覧表示させてもよい。
【０１０８】
続いて、ステップＳ１４０４において、ハッシュ値の埋め込み対象とする画像を、ユーザに選択させる。例えば、ユーザは、カメラＭＰＵ１３３は、操作入力部１４１の一部としての十字キーおよび選択ボタン等を通じて、真正性の検証対象とする画像を選択する。カメラＭＰＵ１３３は、十字キーおよび選択ボタン等の操作を検出して、ユーザが選択した画像を特定する。
【０１０９】
ステップＳ１５０６において、カメラＭＰＵ１３３は、復号部２４２における復号処理を制御する情報抽出フラグを１に設定する。
【０１１０】
続いて、カメラＭＰＵ１３３は、選択された画像の画像データを外部メモリ１６０からＳＤＲＡＭ１３６に読み出して、復号部２４２に復号させる（ステップＳ１５０８）。情報抽出フラグが１に設定されることで、画像データに埋め込まれたハッシュ値が復号部２４２で抽出される。抽出されたハッシュ値は検証部２５０に供給される。なお、復号処理の詳細については、図１６に関連して説明される。
【０１１１】
続いて、カメラＭＰＵ１３３は、ステップＳ１５０８の復号処理で得られたＤＣＴ係数データから、ハッシュ値算出部２１０にハッシュ値を算出させる（ステップＳ１５１０）。続いて、検証部２５０は、ハッシュ値算出部２１０で算出されたハッシュ値と、復号部２４２で抽出されたハッシュ値とを比較して（ステップＳ１５１２、両ハッシュ値が一致するか否かを判断する（ステップＳ１５１４）。ハッシュ値が一致した場合、カメラＭＰＵ１３３は、真正性がある旨を表示部１３８に表示させる（ステップＳ１５１６）。ハッシュ値が一致しなかった場合、カメラＭＰＵ１３３は、真正性がない旨を表示部１３８に表示させる（ステップＳ１５１８）。
【０１１２】
図１６は、画像符号化データを復号する場合の動作フローの一例を示す。本フローは、図１５のステップＳ１５０８の処理に適用できる。ここでは、分かり易く説明することを目的として、１ブロックのデータを復号する場合のフローについて説明する。
【０１１３】
本フローが開始すると、ステップＳ１６０２において、ＤＣ成分復号部４１０はＤＣ成分を復号する。ＤＣ成分復号部４１０は、ＤＣＴ係数バッファのＤＣ成分用の位置に、復号したＤＣ差分を格納する。続いて、ハフマン復号処理部４２０は、ＤＣＴ係数バッファのうち、６３個のＡＣ成分を格納するバッファを０で初期化する（ステップＳ１６０４）。
【０１１４】
続いて、ステップＳ１６０６において、ハフマン復号処理部４２０は、変数ｋを１で初期化する。図１３に関連して説明した符号化処理と同様に、変数ｋによって、複合対象のＡＣ成分が特定される。続いて、ステップＳ１６０８において、ハフマン復号処理部４２０は、ランレングスカウンタを初期化する。
【０１１５】
続いて、ハフマン復号処理部４２０は、８ビットのＲＳに復号して、ＲＳ値からＳＳＳＳの値およびＲＲＲＲの値を抽出する（ステップＳ１６１０）。続いて、ハフマン復号処理部４２０は、ＳＳＳＳの値が０であるか否かを判断する（ステップＳ１６１２）。ＳＳＳＳの値が０でない場合、ハフマン復号処理部４２０は変数ｋにＲＲＲＲの値を加算する（ステップＳ１６１４）。続いて、ステップＳ１６１６において、ＳＳＳＳの値から非０のＡＣ成分の上位ビットを取得して、付加データから下位ビットを取得することで、非０のＡＣ成分を算出し、算出したＡＣ成分の値をＤＣＴ係数バッファ内の変数ｋで示される位置に格納する（ステップＳ１６１６）。ここで、最上位ビットが１の場合は正の値を、最上位ビットが０の場合は負の値を示す。
【０１１６】
続いて、ステップＳ１６１８において、変数ｋが６３であるか否かを判断する（ステップＳ１６１８）。変数ｋが６３でない場合は、変数ｋに１を加算して（ステップＳ１６２０）、ステップＳ１６１０に処理を移行する。ステップＳ１６１８の判断で変数ｋが６３であると判断された場合は、本フローを終了する。この場合、情報抽出部４３０は、本ブロックには情報が埋め込まれていないと判断できる。
【０１１７】
ステップＳ１６１２の判断で、ＳＳＳＳの値が０であると判断された場合、ハフマン復号処理部４２０は、ＲＲＲＲの値が１５であるか否かを判断する（ステップＳ１６２２）。すなわち、ＺＲＬ符号およびＥＯＢ符号のいずれの符号であるかを判断する。ＲＲＲＲの値が１５であると判断された場合、すなわちＺＲＬ符号であると判断された場合は、符号検出部４３２は情報抽出フラグが１であるか否かを判断する（ステップＳ１６２４）。情報抽出フラグが１である場合、符号検出部４３２はランレングスカウンタに１６を加算し（ステップＳ１６２６）、変数ｋに１６を加算し（ステップＳ１６２８）、ステップＳ１６１０に処理を移行する。ステップＳ１６２４の判断で情報抽出フラグが１でないと判断された場合は、ステップＳ１６２８に処理を移行する。
【０１１８】
ステップＳ１６２２の判断で、ＲＲＲＲの値が１５でないと判断された場合、すなわちＥＯＢ符号であると判断された場合は、符号検出部４３２は、情報抽出フラグが１であるか否かを判断する（ステップＳ１６３０）。情報抽出フラグが１でない場合は、本フローを終了する。
【０１１９】
情報抽出フラグが１であると判断された場合、符号検出部４３２は、全ランレングスが１７以上であるか否かを判断する。全ランレングスは、６３から変数ｋの値を減算した値と、ランレングスカウンタとの合計値によって算出される。全ランレングスが１７以上でないと判断された場合、本フローを終了する。この場合、情報抽出部４３０は、本ブロックには情報が埋め込まれていないと判断できる。
【０１２０】
ステップＳ１６３２の判断で、全ランレングスが１７以上であると判断された場合、埋め込み情報特定部４３４は、全ランレングスおよびランレングスカウンタの値から、埋め込みデータを特定する。具体的には、埋め込み情報特定部４３４は、ランレングスカウンタに基づいて、ＥＯＢ符号の前にＺＲＬ符号が挿入されているか否かを特定することができる。また、埋め込み情報特定部４３４は、ランレングスカウンタに基づいて、ＥＯＢ符号の前に挿入されているＺＲＬ符号の数を特定することができる。そして、埋め込み情報特定部４３４は、図１０、図１１等に関連して説明したルールに従って、埋め込み情報のバイナリデータを特定する。ステップＳ１６３４の処理が完了すると、本フローを終了する。
【０１２１】
ここでは１ブロックに対する復号処理について説明したが、本フローと同様のフローを複数のブロックのそれぞれの復号処理に適用できる。なお、埋め込み情報に埋め込みデータのデータ長が含まれる場合、当該データ長のバイナリデータが抽出された場合は、以後のブロックに対する復号処理が開始される前に、情報抽出フラグを０に設定してよい。
【０１２２】
以上に説明したように、撮像装置１００によれば、画像内容の同一性を保証しつつ、符号化工程にて埋め込み情報を埋め込むことができる。このため、符号化対象のデータから一意に演算されるハッシュ値等の真正性情報を埋め込むことで、埋め込まれた情報を用いて画像データの真正性を検証できる。また、符号化部２２６における情報の埋め込み処理を、いわゆる電子透かし処理として適用することができる。上記の説明ではハッシュ値を埋め込み情報に含めて埋め込むとしたが、暗号化したハッシュ値を埋め込み情報に含めて埋め込んでよいことは言うまでもない。
【０１２３】
以上の説明では、静止画の画像データに対するＪＰＥＧ方式の符号化工程における情報の埋め込み処理を説明した。しかし、Ｍｏｔｉｏｎ  ＪＰＥＧ形式で動画を符号化する場合、当該動画を構成する各フレームに本埋め込み処理を適用することができることはいうまでもない。また、本埋め込み処理の適用範囲は、以上に説明したＪＰＥＧ方式の基本処理の符号化工程に限られない。例えば、以上の説明では絶対値０のＡＣ成分の１６個の連続をＺＲＬ符号で表すとしたが、絶対値０のＡＣ成分の８個の連続を表す符号を用いれば、１ブロックにより多くの情報を埋め込むことができる。また、絶対値０のＡＣ成分の１６個の連続を、上述したＺＲＬ符号を用いて符号化するか、絶対値０のＡＣ成分の８個の連続を表す符号を用いて符号化するかを、埋め込み情報に基づいて決定するようにしてもよい。
【０１２４】
すなわち、データ検出部３４０は、符号化対象データのうち、第１符号を用いて符号化できるデータ部分を検出して、データ判断部３５０は、データ検出部３４０が検出したデータ部分が第２符号で表されるデータを含むか否かを判断する。そして、符号決定部３６０は、第２符号で表されるデータを含むと判断されたデータ部分を、第２符号を用いて符号化するか否かを、埋め込み情報に基づいて決定してよい。そして、第２符号で表されるデータを含むと判断されたデータ部分を、符号決定部３６０の決定に従って符号化すればよい。
【０１２５】
上記の説明において、カメラＭＰＵ１３３の動作として説明した処理は、カメラＭＰＵ１３３がプログラムに従って撮像装置１００が有する各ハードウェアを制御することにより実現される。また、上記の説明においてＡＳＩＣ１３５により実現される処理は、プロセッサによって実現することができる。例えば、ＡＳＩＣ１３５の動作として説明した処理は、プロセッサがプログラムに従って撮像装置１００が有する各ハードウェアを制御することにより実現される。すなわち、本実施形態の撮像装置１００に関連して説明した処理は、プロセッサがプログラムに従って動作して各ハードウェアを制御することにより、プロセッサ、メモリ等を含む各ハードウェアとプログラムとが協働して動作することにより実現することができる。すなわち、当該処理を、いわゆるコンピュータ装置によって実現することができる。コンピュータ装置は、上述した処理の実行を制御するプログラムをロードして、読み込んだプログラムに従って動作して、当該処理を実行してよい。コンピュータ装置は、当該プログラムを記憶しているコンピュータ読取可能な記録媒体から当該プログラムをロードすることができる。
【０１２６】
本実施形態において、一眼レフカメラとしての撮像装置１００の機能および動作を説明した。撮像装置としては、一眼レフカメラの他に、ミラーレス一眼カメラ、コンパクトデジタルカメラ、ビデオカメラ、放送用の撮像機器、撮像機能付きの携帯電話機、撮像機能付きの携帯情報端末、撮像機能付きのゲーム機器等の娯楽装置等、撮像機能を有する種々の機器を適用の対象とすることができる。また、出力形態についても、動画、静止画等の画像データを記録媒体に記録するだけでなく、ネットワーク等の種々の伝送路に画像データを出力する機器等を、適用の対象とすることができる。
【０１２７】
また、撮像装置１００に限らず、パーソナルコンピュータ、放送用の映像機器、テレビジョン装置、録画装置等の、符号化処理および復号処理の少なくとも一方を行う電子機器を、適用の対象とすることができる。例えば、符号化部２２６は、画像データに情報を埋め込む情報埋め込み装置として機能できる。また、復号部２４２は、符号化された画像データに埋め込まれている埋め込み情報を特定する情報特定装置として機能できる。符号化部２２６、復号部２４２、ハッシュ値算出部２１０、埋め込み情報生成部２３０、検証部２５０の機能ブロックは、画像データの真正性を検証する画像検証装置として機能することができる。
【０１２８】
なお、本実施形態では画像データを対象とした。しかし、画像データに限らず、音声データ等、種々のデジタルデータを適用の対象とすることもできる。
【０１２９】
以上、本発明を実施の形態を用いて説明したが、本発明の技術的範囲は上記実施の形態に記載の範囲には限定されない。上記実施の形態に、多様な変更または改良を加えることが可能であることが当業者に明らかである。その様な変更または改良を加えた形態も本発明の技術的範囲に含まれ得ることが、特許請求の範囲の記載から明らかである。
【０１３０】
特許請求の範囲、明細書、および図面中において示した装置、システム、プログラム、および方法における動作、手順、ステップ、および段階等の各処理の実行順序は、特段「より前に」、「先立って」等と明示しておらず、また、前の処理の出力を後の処理で用いるのでない限り、任意の順序で実現しうることに留意すべきである。特許請求の範囲、明細書、および図面中の動作フローに関して、便宜上「まず、」、「次に、」等を用いて説明したとしても、この順で実施することが必須であることを意味するものではない。
【符号の説明】
【０１３１】
１００  撮像装置、１２０  交換レンズ、１２１  レンズマウント接点、１２２  レンズ群、１２３  レンズＭＰＵ、１３０  カメラ本体、１３１  カメラマウント接点、１３２  撮像素子、１３３  カメラＭＰＵ、１３４  Ａ／Ｄ変換器、１３５  ＡＳＩＣ、１３６  ＳＤＲＡＭ、１３７  表示制御部、１３８  表示部、１３９  システムメモリ、１４０  駆動部、１４１  操作入力部、１４２  合焦センサ、１４５  接続インタフェース、１５０  メインミラー、１５１  サブミラー、１５６  光学ファインダ部、１６０  外部メモリ、１７０  電源、２００  画像処理部、２１０  ハッシュ値算出部、２２０  符号化エンジン、２２２  ＤＣＴ変換部、２２４  量子化部、２２６  符号化部、２３０  情報生成部、２４０  復号エンジン、２４２  復号部、２４４  逆量子化部、２４６  逆ＤＣＴ変換部、２５０  検証部、３００  符号化対象データ取得部、３１０  ＤＣ成分符号化部、３２０  ＡＣ成分ランレングス処理部、３３０  情報埋め込み部、３４０  データ検出部、３５０  データ判断部、３６０  符号決定部、３７０  挿入部、３８０  ハフマン符号化処理部、４００  符号化データ取得部、４１０  ＤＣ成分復号部、４２０  ハフマン復号処理部、４３０  情報抽出部、４３２  符号検出部、４３４  情報特定部、４４０  ＡＣ成分復号部、１０００、１０２０、１０３０、１０４０、１０５０、１０６０、１０７０  符号、１１０１、１１０２、１１０３、１１０４、１１０５、１１０６、１１０７、１１０８、１１０９、１１１０、１１１１、１１１２、１１１３  ブロック
【図１】
2013081102.tif 000003
【図２】
2013081102.tif 000004
【図３】
2013081102.tif 000005
【図４】
2013081102.tif 000006
【図５】
2013081102.tif 000007
【図６】
2013081102.tif 000008
【図７】
2013081102.tif 000009
【図８】
2013081102.tif 000010
【図９】
2013081102.tif 000011
【図１０】
2013081102.tif 000012
【図１１】
2013081102.tif 000013
【図１２】
2013081102.tif 000014
【図１３】
2013081102.tif 000015
【図１４】
2013081102.tif 000016
【図１５】
2013081102.tif 000017
【図１６】
2013081102.tif 000018