(57)【要約】【課題】  画像における適切な位置にデータを埋め込むことができる技術を提供する。【解決手段】  画像に含まれる画素の画素値に所定の変化を与える所定の埋め込み方法に対応する所定の解析方法に従って、画像に含まれる画素の画素値に基づく解析を行う。そして、画像において、所定の変化を与えることが可能な第１の領域が所定の変化を与えることが可能でない第２の領域よりも優先されてデータが埋め込まれるように、前記画像における、前記解析の結果に基づく位置に、所定の埋め込み方法に従ってデータを埋め込む。【選択図】  図１２
2019091976.tif 000002
【特許請求の範囲】
【請求項１】
画像に含まれる画素の画素値に所定の変化を与える所定の埋め込み方法に従って、前記画像に対してデータを埋め込むためのプログラムであって、
前記所定の埋め込み方法に対応する所定の解析方法に従って、前記画像に含まれる画素の画素値に基づく解析を行う解析手段と、
前記画像において、前記所定の変化を与えることが可能な第１の領域が前記所定の変化を与えることが可能でない第２の領域よりも優先されて前記データが埋め込まれるように、前記画像における、前記解析手段による解析結果に基づく位置に、前記所定の埋め込み方法に従って前記データを埋め込む埋め込み手段と、
としてコンピュータを機能させるためのプログラム。
【請求項２】
前記解析手段は、前記所定の解析方法として、前記所定の埋め込み方法により前記画素値に前記所定の変化を与えた場合の結果に関する解析を行うことを特徴とする請求項１に記載のプログラム。
【請求項３】
前記解析手段は、前記所定の解析方法として、前記画素値に前記所定の変化を与えることが可能か否かを解析することを特徴とする請求項２に記載のプログラム。
【請求項４】
前記埋め込み手段は、前記解析結果と前記データの情報量に基づく位置に、前記データを埋め込むことを特徴とする請求項１乃至３のいずれか１項に記載のプログラム。
【請求項５】
前記埋め込み手段は、前記データの情報量を埋め込むための前記画像における領域のサイズを特定し、特定された前記サイズであり且つ前記解析手段による解析結果が所定の条件を満たす領域を探索し、前記探索により検出された領域に前記データを埋め込むことを特徴とする請求項４に記載のプログラム。
【請求項６】
前記所定の条件は、前記領域における全画素が前記所定の埋め込み方法を実行することが可能であることを特徴とする請求項５に記載のプログラム。
【請求項７】
前記埋め込み手段は、前記データの情報量に基づいて、前記データを前記画像の非連続の複数の領域に分割して埋め込むことを特徴とする請求項５または６に記載のプログラム。
【請求項８】
前記埋め込み手段は、前記特定されたサイズであり且つ前記解析手段による解析結果が前記所定の条件を満たす領域が前記探索により検出されない場合に、前記データを、前記所定の条件を満たす前記非連続の複数の領域に分割して埋め込むことを特徴とする請求項７に記載のプログラム。
【請求項９】
前記埋め込み手段により前記データは視覚的に判別しづらいように埋め込まれることを特徴とする請求項１乃至８のいずれか１項に記載の画像処理装置。
【請求項１０】
前記埋め込み手段により前記データが埋め込まれた前記画像をプリンタに印刷させる印刷制御手段として前記コンピュータをさらに機能させることを特徴とする請求項１乃至９のいずれか１項に記載のプログラム。
【請求項１１】
前記埋め込み手段は、前記解析結果と前記プリンタの特性とに応じた位置に、前記データを埋め込むことを特徴とする請求項１０に記載のプログラム。
【請求項１２】
前記埋め込み手段は、同一の前記データを前記画像の異なる領域に繰り返し埋め込むことを特徴とする請求項１乃至１１のいずれか１項に記載の画像処理装置。
【請求項１３】
前記埋め込み手段は、前記第１の領域に前記データが埋め込まれ、前記第２の領域には前記データが埋め込まれないように、前記データを前記画像に埋め込むことを特徴とする請求項１乃至１２のいずれか１項に記載の画像処理装置。
【請求項１４】
画像に含まれる画素の画素値に所定の変換を与える所定の埋め込み方法に従って、前記画像に対してデータを埋め込むための画像処理装置であって、
前記所定の埋め込み方法に対応する所定の解析方法に従って、前記画像に含まれる画素の画素値に基づく解析を行う解析手段と、
前記画像において、前記所定の変化を与えることが可能な第１の領域が前記所定の変化を与えることが可能でない第２の領域よりも優先されて前記データが埋め込まれるように、前記画像における、前記解析手段による解析結果に基づく位置に、前記所定の埋め込み方法に従って前記データを埋め込む埋め込み手段と、
を有することを特徴とする画像処理装置。
【請求項１５】
画像に含まれる画素の画素値に所定の変化を与える所定の埋め込み方法に従って、前記画像に対してデータを埋め込むための画像処理方法であって、
前記所定の埋め込み方法に対応する所定の解析方法に従って、前記画像に含まれる画素の画素値に基づく解析を行う解析工程と、
前記画像において、前記所定の変化を与えることが可能な第１の領域が前記所定の変化を与えることが可能でない第２の領域よりも優先されて前記データが埋め込まれるように、前記画像における、前記解析工程における解析結果に基づく位置に、前記所定の埋め込み方法に従って前記データを埋め込む埋め込み工程と、
を有することを特徴とする画像処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像にデータを埋め込むためのプログラム、画像処理装置、および画像処理方法に関する。
【背景技術】
【０００２】
電子透かし技術と称し、印刷物に対して付加情報を視覚的に判別しづらいように多重化する技術が利用されている。以降、ステガノグラフィ、ウォーターマークなど、データに対して別の意味合いを持つデータを重畳させること、もしくはその技術分野を総称して「多重化」とも記載する。
【０００３】
特許文献１には、画像に対して音声情報等を多重化することが記載されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００３−１７４５５６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
データの多重化およびそのデータの復号の方法として、画像に埋め込まれるデータに応じて該画像に変化を加え、該画像が印刷された印刷物を撮影した装置が、撮影された画像に基づき上記の変化を捉えることで、上記データを復号する方法がある。
【０００６】
しかしながら、データが埋め込まれる画像において、データに変化を加えやすい領域（以降、得意領域とも記載する）、データに変化を加えにくい領域（以降、苦手領域とも記載する）が存在する。例えば、各画素値が０〜２５５の範囲の値であり、多重化のために画素値を１０加算するとする。この場合、画素値が２４６未満の画素では１０加算することが可能であるが、画素値が２４６以上の画素の場合は、１０加算されると０〜２５５の範囲を超えてしまうため、正しく加算できない。このような適切に変化をつけにくい苦手領域に対してデータが多重化されたとしても、復号の際に、該データを発見できない場合や、データを誤判定する場合が起こり得る。
【０００７】
本発明は、画像における適切な位置にデータを埋め込むことができる技術を提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明のプログラムは、画像に含まれる画素の画素値に所定の変化を与える所定の埋め込み方法に従って、前記画像に対してデータを埋め込むためのプログラムであって、前記所定の埋め込み方法に対応する所定の解析方法に従って、前記画像に含まれる画素の画素値に基づく解析を行う解析手段と、前記画像において、前記所定の変化を与えることが可能な第１の領域が前記所定の変化を与えることが可能でない第２の領域よりも優先されて前記データが埋め込まれるように、前記画像における、前記解析手段による解析結果に基づく位置に、前記所定の埋め込み方法に従って前記データを埋め込む埋め込み手段と、としてコンピュータを機能させる。
【発明の効果】
【０００９】
本発明によれば、画像に多重化されたデータの復号をより確実に行えるように、画像における適切な位置にデータの多重化を行うことができる。
【図面の簡単な説明】
【００１０】
【図１】画像処理システムの構成を示すブロック図である。
【図２】多重化処理に使用されるマスクを示す図である。
【図３】多重化処理に使用されるマスクを説明するための図である。
【図４】データが多重化される画像を示す図である。
【図５】データが多重化された画像の一例を示す図である。
【図６】データが多重化された画像の他の例を示す図である。
【図７】データが多重化された画像にＦＦＴを適用した結果の一例を示す図である。
【図８】データが多重化されていない画像にＦＦＴを適用した結果の一例を示す図である。
【図９】データが多重化された画像にＦＦＴを適用した結果の別の例を示す図である。
【図１０】データが多重化された画像にＦＦＴを適用した結果の別の例を示す図である。
【図１１】埋め込みデータの開始位置を判定するためのパターンを示す図である。
【図１２】本実施形態におけるデータの埋め込み位置の決定処理を示すフローチャートである。
【図１３】画像に埋め込まれるデータのデータ構成の一例を示す図である
【図１４】ファイルフォーマット部として埋め込まれる情報と、ファイルフォーマットの種類の関係を示す図である。
【図１５】苦手領域の判定が行われた結果の一例を示す図である。
【図１６】本実施形態の処理により決定された位置に多重化が行われた画像の一例を示す図である。
【図１７】非連続のブロックに埋め込みデータが分割されて埋め込まれた結果の一例を示す図である。
【図１８】埋め込みデータのデータ構成の一例を示す図である。
【図１９】埋め込みデータが埋め込まれた領域の周期パターンの一例を示す図である。
【図２０】苦手領域の判定が行われた結果の別の例を示す図である。
【図２１】全てが得意領域となる正方形の領域の例を示す図である。
【図２２】埋め込みデータのデータ構成の別の例を示す図である。
【発明を実施するための形態】
【００１１】
以下、図面を参照して本発明に係る実施形態を詳細に説明する。尚、実施形態における画像処理装置は、付加情報を埋め込む多重化装置と、該付加情報を印刷物から読み取る分離装置がある。多重化装置として、プリンタエンジンへ出力すべき画像情報を作成するコンピュータ内のプリンタドライバソフト、もしくは、アプリケーションソフトとして内蔵する。しかしそれに限らず、複写機、ファクシミリ、プリンタ本体等にハードウェア、及びソフトウエアとして内蔵してもよい。分離装置として、カメラ付携帯電話、カメラ付スマートフォンやタブレットＰＣなどが挙げられる。以下、こうした撮像デバイスをカメラ付携帯端末と呼ぶ。もしくは、デジタルスチールカメラで撮影した画像をコンピュータ内のアプリケーションプログラムで付加情報を分離する一連の装置でもよい。
【００１２】
（第１の実施形態）
図１は、第１の実施形態の画像処理システムの構成を示すブロック図である。
【００１３】
１０２は、多重化装置を示し、視覚的に判別しづらいように、画像情報中に付加情報を埋め込ませる装置である。多重化装置１０２は、例えばスマートフォン等のカメラ付携帯端末２０１に含まれる。１００及び１０１はともにカメラ付携帯端末２０１が備える入力部を示し、１００からは多階調の画像情報が、１０１からは、画像情報の中に埋め込むべき必要な付加情報が入力される。この付加情報は、入力部１００にて入力される画像情報とは別の情報である。例えば、音声情報や動画情報、テキスト文書情報や、それらの情報を識別するための識別情報である。または、入力部１００にて入力される画像に関する著作権、撮影日時、撮影場所、撮影者等の諸情報、また別の画像情報等であってもよい。
【００１４】
１０３はプリンタを示し、多重化装置で作成された情報をプリンタエンジンにて出力する。プリンタ１０３は、例えばインクジェットプリンタ、レーザープリンタ等、疑似階調処理を用いることにより階調表現を実現するプリンタである。
【００１５】
カメラ付携帯端末２０１は撮像センサ１０４を備え、撮像センサ１０４により、プリンタ１０３により印刷された印刷物を撮像する。そして、その撮像により得られた撮像画像が、カメラ付携帯端末２０１に含まれる分離装置１０５に入力される。そして、分離装置１０５が撮像画像を解析することによって、印刷物中に埋め込まれた付加情報を分離（抽出）し、出力部１０６に出力する。この出力部１０６は、取得した付加情報を出力するインターフェースである。例えば付加情報が音声情報である場合、カメラ付携帯端末２０１が備えるスピーカ２１０へ付加情報が出力され、音声が出力される。また付加情報が画像情報である場合、カメラ付携帯端末２０１が備えるディスプレイ２１１に付加情報が出力され、表示が行われる。また、出力部１０６は、外部デバイスへデータを出力してもよい。また、カメラ付携帯端末２０１に複数の撮像センサがある場合、１または複数の撮像センサにより印刷物が撮像されてもよい。
【００１６】
なお、多重化装置１０２としてのカメラ付携帯端末と、分離装置１０５としてのカメラ付携帯端末は、同一の端末であってもよいし、別の端末であってもよい。
【００１７】
図１（ｂ）は、カメラ付携帯端末２０１のハードウェア構成図である。カメラ付携帯端末２０１は、一例として、インターフェース２０２、ＣＰＵ２０３、ＲＯＭ２０４、操作部２０５、ＲＡＭ２０６、外部記憶装置２０７、通信部２０８、撮像部２０９を有する。さらに、カメラ付携帯端末２０１は、スピーカ２１０、ディスプレイ２１１を有する。なお、これらのブロックは、例えば内部バスを用いて相互に接続される。
【００１８】
ＣＰＵ２０３は、システム制御部であり、装置の全体を制御する。ＲＡＭ２０６は、例えばＲＡＭ２０６と同様に、バックアップ電源を必要とするＤＲＡＭ（Ｄｙｎａｍｉｃ  ＲＡＭ）等で構成される。ＲＡＭ２０６は、ＣＰＵ２０３の主メモリとワークメモリとしても用いられる。ＲＯＭ２０４は、ＣＰＵ２０３が実行する制御プログラムやデータテーブル、ＯＳプログラム等の固定データを格納する。例えば、Ｗｅｂにおいて各種のアプリケーションプログラム（以下、アプリケーションと呼ぶ）を提供するサーバからダウンロードされたアプリケーションが、ＲＯＭ２０４に記憶されている。ＣＰＵ２０３は、ＲＯＭ２０４に記憶されているプログラムをＲＡＭ２０６において実行することで、上述した多重化装置１０２および分離装置１０５として動作する。また、ＣＰＵ２０３は、上述した入力部１００、１０１、出力部１０６としても動作する。例えばＣＰＵ２０３は、入力部１００として、外部記憶装置２０７に記憶された画像情報を外部記憶装置２０７から入力する。またＣＰＵ２０３は、入力部１０１として、外部記憶装置２０７やＲＡＭ２０６から付加情報を入力する。またＣＰＵ２０３は、出力部１０６として、音声情報である付加情報をスピーカ２１０に出力して音声出力を行い、また画像情報である付加情報をディスプレイ２１１に出力して表示させる。また、付加情報が外部記憶装置２０７に記憶されている音声情報や画像情報の識別情報である場合、ＣＰＵ２０３は、識別情報に従って外部記憶装置２０７から音声情報や画像情報を読み出し、スピーカ２１０またはディスプレイ２１１に出力する。
【００１９】
通信部２０８は、無線ＬＡＮ、有線ＬＡＮ等の通信により、外部の装置との通信を行うことができる。スピーカ２１０は音声を出力する。例えばカメラ付携帯端末２０１がスマートフォンの場合、スピーカ２１０は、通話相手からの音声や、音楽等の音声ファイル内の音声データ、各種の通知音などを出力する。ディスプレイ２１１は、上述した付加情報や、撮像部２０９により撮像された画像、外部記憶装置２０７から読み出された画像、各種のアイコンやメニューを表示する。操作部２０５は、ユーザが操作してカメラ付携帯端末２０１に指示を行うためのものであり、ボタン等を含み、またタッチパネルとしてディスプレイ２１１一体的に設けられてもよい。撮像部２０９はカメラであり、上述した撮像センサ１０４は撮像部２０９に含まれる。
【００２０】
なお、図１（ｂ）に示すカメラ付携帯端末２０１は、多重化装置１０２と分離装置１０５の両方として機能可能な装置として説明したが、これに限らず、いずれか一方のみとして動作してもよい。例えば、多重化装置１０２として動作するためのアプリケーションと、分離装置１０５として動作するためのアプリケーションとが、Ｗｅｂ上のサーバで個別に用意されていてもよい。そして、いずれか一方のみがカメラ付携帯端末２０１にダウンロードされてもよい。この場合、多重化装置１０２として動作する携帯端末とは別の携帯端末が分離装置１０５として動作する。
【００２１】
次に、多重化装置を用いて、画像に対いて付加情報を多重化する手法について述べる。なお、以下で説明する多重化方法は一例であり、この方法に限られるわけではない。ここでの説明では、カメラ付携帯端末２０１を用いて画像に「ｈｅｌｌｏ」という情報を多重化する方法を説明する。
【００２２】
まず、カメラ付携帯端末２０１のような情報処理装置では、バイナリデータを扱う。バイナリデータとは「０」もしくは「１」の情報であり、この「０」もしくは「１」の情報が連続でつながることで、特定のデータを示す。例えば文字の情報は、それぞれの文字に対応するコードがバイナリデータで定められている。どのバイナリデータに対してどの文字が対応しているかは「文字コード」と呼ばれるもので定義されている。文字コードの中の一つである「シフトＪＩＳ」を例にとると、「ｈ」はバイナリデータの「０１１０１０００」に対応している。同様に「ｅ」は「０１１００１０１」、「ｌ」は「０１１０１１００」、「ｏ」は「０１１０１１１１」というバイナリデータに対応している。つまり「ｈｅｌｌｏ」という文字はバイナリデータで「０１１０１００００１１００１０１０１１０１１０００１１０１１０００１１０１１１１」と表現できる。逆に「０１１０１００００１１００１０１０１１０１１０００１１０１１０００１１０１１１１」というバイナリデータが取得できれば「ｈｅｌｌｏ」という文字に変換することができる。
【００２３】
つまり多重化装置１０２としてのＣＰＵ２０３は多重化処理として、分離装置１０５が「０」もしくは「１」を判定できるように、画像にデータを埋め込む。ＣＰＵ２０３は、入力部１０１として、多重化されるデータ「ｈｅｌｌｏ」を入力しているが、実際に埋め込むデータは「０１１０１００００１１００１０１０１１０１１０００１１０１１０００１１０１１１１」である。これら二つは同一の情報を示しているが、区別をするため「ｈｅｌｌｏ」を付加情報とし、埋め込み用に変換された「０１１０１００００１１００１０１０１１０１１０００１１０１１０００１１０１１１１」を埋め込みデータと呼称する。
【００２４】
次に、画像に対して埋め込みデータを多重化する方法について説明する。本実施例は「０」「１」を示すデータの埋め込みを説明するが、多重化方法を「０」「１」の埋め込みに限定しているわけではなく、エンコード側とデコード側でデータを一意に対応づけることができる埋め込み方であれば他の情報でもよい。また多重化される画像のサイズは縦幅６４０ｐｘ、横幅４８０ｐｘとして説明をする。
【００２５】
図２は、多重化処理に使用されるマスクを示す図である。ここで、「０」、「１」を生成するために図２（ａ）（ｂ）に示すマスクは、８ｐｘ×８ｐｘで構成されたマスクである。画像に対してマスクの内容が加算されることで、画像内の８ｐｘ×８ｐｘの領域に対して周期性を持ったパターンを与えることができる。図３は、多重化処理に使用されるマスクを説明するための図であり、マスクによって画像にどのようなパターンを与えるかを視覚的に示す。図２のマスクにおける「３０」の位置を黒、「０」の位置を灰色、「−３０」の位置を白で表現しており、画像には図３のような斜め線が現れることとなる。
【００２６】
ここで、図２（ａ）のマスクと図２（ｂ）のマスクを画像全体に対して交互に適応する疑似コードを下記に示す。
【００２７】
【数１】
2019091976.tif 000003
【００２８】
本実施形態では、説明のため、３行目の画像データはグレー画像であり、その画素値にマスクにより変化が加えられる処理について説明する。ただし、マスクにより変化が加えられる色成分は、人間が視覚的に視認しにくいものであるのが好ましい。例えばＲＧＢの成分を持つカラー画像において、マスクにより変更が加えられる８ｐｘ×８ｐｘの領域において赤色が支配的であれば、赤成分に対して変更が加えられてもよい。他にも、ＲＧＢをＬａｂ成分に変換して、人間が視認しにくいと言われているｂ成分について変更が加えられてもよい。また、ＹＵＶや、Ｌａｂのａｂを組み合わせて使うなど、マスクにより変更が加えられる色成分には様々なものが考えられる。また、図２に示す８ｐｘ×８ｐｘのマスクの値は、内部の係数を総和すると０に近い値になるように設定されている。通常のプリンタによる印刷であれば、印刷物における８ｐｘ×８ｐｘの領域は、非常に小さいサイズである。そのため、この領域の内部で変化が加えられていても、変化される値の総和が０に近くなるようマスクが設定されていれば、その変化を人間が視認しにくいため、視覚的に判別しづらいように多重化を行うことができる。
【００２９】
パターンをつけるためのマスクの値の加算はある画素に対して１回のみおこなっており、重複して値が加算されることはない。つまり、マスクのサイズである８×８のブロック単位ずつ処理がおこなわれている。
【００３０】
図４は、データが多重化される画像を示す図であり、図５は、データが多重化された画像の一例を示す図である。図５に示す画像は、図４に示す画像に斜め線のパターンが入れられた画像となる。図５の画像には、「０」と「１」の情報が交互に埋め込まれている。つまり、図３（ａ）、（ｂ）に示したパターンが８×８のブロック単位で交互に入れられるため、図５に示すパターンとなる。なお、図５では説明のために、視認しやすいグレー画像で説明しているが、本来であれば視覚的に認識しにくい色成分や模様、サイズなどを考慮した多重化処理を行う。
【００３１】
図６は、データが多重化された画像の他の例を示す図である。具体的には、「ｈｅｌｌｏ」に相当する埋め込みデータである「０１１０１００００１１００１０１０１１０１１０００１１０１１０００１１０１１１１」が埋め込まれた画像を示す。この埋め込みデータは４０ビットの情報であるため、４０個の８×８ブロック（３２０×８画素）の領域への埋め込みで十分である。ただし本実施形態では、図６に示すように、「ｈｅｌｌｏ」に相当する埋め込みデータを繰り返し埋め込む。このように、繰り返して同じデータが埋め込まれることで、印刷物の傷や汚れなどによってパターンが消えてしまうことへの耐性を高め、また分離装置１０５による埋め込みデータのデコード時の探索を容易にすることができる。
【００３２】
また、データが多重化される画像のサイズが６４０×４８０画素であるとすると、総画素数は３０７２００画素となる。そのため、「ｈｅｌｌｏ」を埋め込むのに必要な画素数は３２０×８であり、２５６０画素に相当する。つまり上記の例では、「ｈｅｌｌｏ」の埋め込みは、１２０回（３０７２００÷２５６０＝１２０）繰り返されている。また、同一の埋め込みデータが繰り返し埋め込まれる場合に、その埋め込みデータの先頭にデータの始まりを示す特定の情報が埋め込まれてもよい。そして、埋め込みデータのデコードの際には、その特定の情報により埋め込みデータ「ｈｅｌｌо」が埋め込まれている位置を認識することができる。
【００３３】
このように、本実施形態による多重化方法によれば、データが多重化された画像は周期的なパターンをもっている。多重化された画像における周期性を説明するために、以下、図７〜図１０を用いて、画像に対してＦＦＴ（Ｆａｓｔ  Ｆｏｕｒｉｅｒ  Ｔｒａｎｓｆｏｒｍ）を適用した結果を示す。
【００３４】
図７は、データが多重化された画像にＦＦＴを適用した結果の一例を示す図である。一方、図８は、データが多重化されていな画像にＦＦＴを適用した結果の一例を示す図である。図７に示す結果は、図８と比べ、特定の位置にスペクトル（白い点）が出現していることがわかる。なお、図７および後述の図９、図１０は、ＦＦＴによる画像のスペクトルと画像の中心を結んだ直線の方向に画像の変動（画素値の変化）があることを示している。また、画像の中心から外側のスペクトルほど高周波成分（出現する間隔が短い）であり、より白いほどスペクトルが強く、その特徴が画像内に強く現れていることを示す。
【００３５】
図９、図１０は、データが多重化された画像にＦＦＴを適用した結果の別の例を示す図である。具体的には、図９は「０」のみが多重化された画像にＦＦＴが適用された結果を示し、図１０は「１」のみが多重化された画像にＦＦＴが適用された結果を示す。図９、図１０に示すように、埋め込まれるデータが「０」であるか「１」であるかに応じて、ＦＦＴが適用された結果においてスペクトルの出現の仕方が異なる。図９では、左上から中心を通って右下にかけて斜め４５度でスペクトルが点在していることが分かる。つまり画像内を左上から右下の斜め４５度の方向において、ある間隔で変動（画素値の変化）が発生していることを示している。「０」が繰り返し多重化された場合、左上の画素から右下の画素に進む際に、ある周期で画素値の変動が起きるようにマスクが作られている（図２（ａ））。逆に「０」の多重化において、右上から左下にかけての斜め４５度へ進む際には画素値の変動が起きづらく、図９においても右上から左下斜め４５度にはスペクトルは発生していない。
【００３６】
一方、図１０では、右上から中心を通って左下にかけて斜め４５度でスペクトルが点在していることが分かる。つまり画像内を右上から左下の斜め４５度に移動するときに、ある間隔で変動（画素値の変化）が発生していることを示している。「１」が繰り返し多重化された場合、右上の画素から左下の画素の方向に、ある周期で画素値の変動が起きるようにマスクが作られているためである（図２（ｂ））。
【００３７】
図９、図１０に示すように、図３（ａ）（ｂ）のような周期的な変動を持つマスクで画素値を変動させると、後から「０」か「１」かを判定できる性質を持たせられることがわかる。ただし、ここで「０」と「１」が混在する情報を埋め込む場合、図７に示したように、画像全体におけるＦＦＴの結果からは、「０」または「１」がどのブロックで表現されているものなのかを判定することはできない。そのため、本実施形態でＣＰＵ２０３は、ＦＦＴ解析のサイズを、多重化を行ったブロックと同じ８×８のサイズで行う。そしてＣＰＵ２０３は、各ブロックに対して「０」、「１」のどちらに対応するかを判定する。この方法により、ＣＰＵ２０３は、複数の連続するブロックに対応する「０」と「１」が連続するバイナリデータを抽出することができる。
【００３８】
なお、各ブロックが「０」、「１」のどちらに対応するか判定する方法はＦＦＴに限らない。例えば、斜め方向のエッジ検出をおこなって、検出されたエッジが「０」に対応するエッジパターン、「１」に対応するエッジパターンのどちらに近いか判定する方法でもよい。他にも、ブロックマッチングを使って、判定対象のブロックが「０」に対応するブロック、「１」に対応するブロックのどちらに類似するか判定するなど、種々の判定方法を適用することができる。
【００３９】
また、ＣＰＵ２０３は、ノイズの影響等による誤判定を防ぐために、所定の閾値以上の情報量が得られない場合は判定をやり直す。また、元の画像に多重化する埋め込みデータによるパターンが含まれている場合、そのパターンにより埋め込みデータが判定され、結果として本来の埋め込みデータが適切に抽出されないことが考えられる。そのため、ＣＰＵ２０３は、多重化する埋め込みデータによるパターンと類似するパターンを除去するためのプレフィルタを元の画像に用い、その後に埋め込みデータを多重化してもよい。
【００４０】
また分離装置１０５等の埋め込みデータをデコードする装置により、各ブロックが「０」、「１」のどちらに対応するか判定する際は、画像のどの位置（ブロック）から埋め込みデータが始まるのかを特定する必要ある。その場合は、例えば、先述の「０」、「１」のパターンとは異なる「開始位置判定用のパターン」を多重化し、埋め込みデータの始まりを判定できるようにする。
【００４１】
図１１は、埋め込みデータの開始位置を判定するためのパターンを示す図である。図３に示したように、「０」、「１」に対応するパターンは、８×８画素のブロックにおける斜め方向のパターンであるのに対し、埋め込みデータの開始位置を判定するためのパターンは、ブロックの水平方向のパターンである。
【００４２】
なお、カメラ付携帯端末２０１が撮像センサによって画像を取得し、データを複号する場合、種々の方向で印刷物が撮像される可能性がある。また、撮像の際のカメラ付携帯端末２０１と印刷物の間の距離も様々であることが考えられ、即ち、撮像画像における印刷物に対応する領域のサイズにもばらつきが生じることになる。そのため、「０」または「１」を示す、印刷時の８×８画素のブロックについても、撮像環境により、撮像画像におけるサイズが異なり、正しくデータを複号できない可能性がある。
【００４３】
そのため、カメラ付携帯端末２０１（分離装置１０５）は、撮像画像を回転、縮小、拡大を異なる回転角度、異なる変倍率で複数回行い、「０」と「１」の情報が最も強く出現する状態を探索することが考えられる。また、図３、図１１に示したように、「０」、「１」のパターンと、埋め込みデータの開始位置の判定のためのパターンは、周期性の方向が異なることで区別が可能である。ただし、撮像時の印刷物に対するカメラ付携帯端末２０１の角度によっては、両者を区別できないことも考えられる。ただし、埋め込みデータの開始位置の判定のためのパターンに対応するブロックに比べて「０」、「１」に対応するブロックの数が圧倒的に多い。そのため、撮像画像が異なる回転角度により回転された場合に、例えば「０」、「１」と判定されたブロックの数が最も多い回転角度で回転された撮像画像から、埋め込みデータが抽出されてもよい。
【００４４】
上記のように、撮像画像は角度、大きさの異なる複数のものが生成されるが、以下の記載における撮像画像は、正しい方向、正しい距離で撮像されたものであるとする。つまり、撮像センサで取得した撮像画像について回転や拡大、縮小などの事前処理が行われずとも、復号処理が行われるものとする。
【００４５】
次に、本実施形態における、画像における多重化対象の領域を決定する方法について説明する。上述のような多重化方法では、例えば図２のマスクにより元の画像の画素値に１０を加算もしくは減算することで画素値に周期性を与え、「０」または「１」を表現していた。しかし、画像における画素値は有限値であり、通常０〜２５５の範囲の情報が扱われている。ここで、１０〜２４５の画素値であれば、画素値に対する１０の加算もしくは減算を正しく行えるが、それ以外の画素値であると、正しく情報を付与することができない。例えば、「０」に対して１０の減算を行おうとした場合、０〜２５５データ範囲外となるため、例えば「０」に変換されてしまう。つまり「−１０」の画素値を与えることができない。また、１〜９の画素値に対して１０減算しようとして、例えば画素値「０」が与えられた場合、画素値を多少変動させることは可能ではあるが、想定されている「１０」という差分を作ることができない。そのため、「０」、「１」のパターンが十分に表現されず、デコードの際の判定が困難になる、または正しく判定できなくなる可能性がある。
【００４６】
以降、多重化が行われる画像において、例えば１０〜２４５の範囲外の画素値の画素が多く含まれる領域を、想定通りに埋め込みデータが付与できない可能性がある領域として苦手領域（不得意領域）と記述する。一方、多重化が行われる画像において、例えば１０〜２４５の範囲内の画素値の画素が多く含まれる領域を、想定通りに埋め込みデータが付与できない可能性が高い領域として得意領域と記述する。なお、１画素単体であっても苦手画素、得意画素ではなく、苦手領域、得意領域と記述することとする。
【００４７】
なお、先述にあるように、同一の画像の異なる領域に対して、同一の埋め込みデータを繰り返し多重化することで、ある特定の部分（例えば苦手領域）で復号が失敗しても他の部分で補填するという方法がある。しかしながら、デコードを行う装置において画像のどこが苦手領域であるか認識できない場合、上記の多重化の繰り返し回数を多くすることでデータ復元を担保するしかない。ただ、繰り返し回数を増やしたとしても、それらに全て苦手領域が含まれる可能性もあり、十分な得意領域は存在していたにも関わらず、復号できない状態を作りかねない。
【００４８】
他の方法として、画像における苦手領域に適切な多重化を行えるように、画像内の画素値を変更する方法がある。例えば元画像の画素値を１０〜２４５に収まるように変換する（階調数を下げる）ことで、画素値に対する１０の加算または減算を保障する方法もある。しかしながら、この方法は元画像のデータを多く変化されるため、画質劣化の要因となってしまう。
【００４９】
そこで本実施形態では、カメラ付携帯端末２０１は、多重化装置１０２として埋め込みデータを画像に埋め込む場合に、画像を解析することで、デコードの際に埋め込みデータが適切に復号できる可能性が高い領域を自動的に決定する。図１２は、本実施形態におけるデータの埋め込み位置の決定処理を示すフローチャートである。なお、多重化技術はデータを埋め込む方法とデータを復号する方法の２つで成立する技術であり、それぞれをエンコード、デコードとも記載することとする。また図１２に示す各ステップは、多重化装置１０２として動作するカメラ付携帯端末２０１により実行される。具体的には、図１２に示す各ステップの処理に対応するアプリケーション等のプログラムがＲＯＭ２０４に格納されている。ＣＰＵ２０３がそのプログラムをＲＡＭ２０６に読み出して実行することで、図１２に示す処理が実現される。
【００５０】
Ｓ１２０１でＣＰＵ２０３は、多重化が実行される画像を取得する。例えばＣＰＵ２０３は、ＲＯＭ２０４に記憶されているＯＳの機能により、外部記憶装置２０７に記憶されている画像のサムネイル画像をディスプレイ２１１に表示する。そしてＣＰＵ２０３は、ユーザが操作部２０５を用いて指定したサムネイル画像に対応する画像を、多重化が実行される画像としてＲＡＭ２０６に読み出す。また、多重化が実行される画像は、アプリケーションにより管理されているＵＲＬを用いて、ネットワーク上のサーバから取得されてもよい。
【００５１】
Ｓ１２０２でＣＰＵ２０３は、Ｓ１２０１で取得された画像の画像データに対して埋め込むデータを取得する。例えばＣＰＵ２０３は、テキスト入力画面をディスプレイ２１１に表示させ、ユーザが操作部２０５を用いて入力したテキストを、埋め込みデータとして取得する。なお、先述の通り、実際に画像に埋め込まれるデータは「０」「１」で表現されるバイナリデータであるので、ＣＰＵ２０３は、取得されたテキストを文字コードにバイナリデータに変換する。また、文字コードによってバイナリデータは異なってくるので、ＣＰＵ２０３は、文字コードの指定がある場合はそれに従ったバイナリデータへと変換する。デコード側の装置は、このバイナリデータを印刷物の撮像画像から抽出し、文字コードに従ってバイナリデータをテキストに変換することで、埋め込まれた情報を復号することが可能である。
【００５２】
上記の例では、テキストが画像に多重化される例について説明したが、これに限らず、音声情報や画像情報が多重化されてもよいし、また音声ファイルや画像ファイルの識別情報（ファイル名、ファイルパス、ＵＲＬ等）が多重化されてもよい。識別情報が多重化される場合、デコード側の装置は、その識別情報に従ってファイルを取得し、取得されたファイルにより音声の出力や画像の表示を行うことができる。
【００５３】
ただし、このように種々のファイルが多重化される場合、エンコード側の装置が、埋め込みデータがどのようなファイルフォーマットであるか認識する必要がある。デコード側の装置において、復号可能なファイルフォーマットが例えば「シフトＪＩＳの文字列」に限らず、音声データや、画像データも復号可能な場合、バイナリデータだけでは、ファイルの種類を判定できない場合もある。そのため多重化装置１０２として動作するカメラ付携帯端末２０１は、埋め込まれるデータがどのファイルフォーマットであるかを示す情報を、データの内容を示すバイナリデータとともに埋め込む。
【００５４】
図１３は、画像に埋め込まれるデータのデータ構成を示す図である。図１３に示すように、例えば４０ビットの実データ部に加え、ファイルのフォーマットを示す４ビットのファイルフォーマット部についても多重化される。ファイルフォーマット部として埋め込まれる情報は、ファイルフォーマットの種類と対応付けられている。図１４は、ファイルフォーマット部として埋め込まれる情報と、ファイルフォーマットの種類の関係を示す図である。図１４に示すファイルフォーマットと番号を対応させたテーブルをエンコード側とデコード側の両方が参照することで、先述のファイルフォーマットの問題は解決できる。例えば、エンコード用の機能とデコード用の機能が同一のアプリケーションにより提供される場合、そのアプリケーションにおいて図１４に示すテーブルが定義され、アプリケーションのインストールの際に、カメラ付携帯端末２０１に記憶される。またエンコード用のアプリケーションとデコード用のアプリケーションが個別に提供される場合、それぞれのアプリケーションにおいて同一のテーブルが定義されるようにアプリケーションが作成される。
【００５５】
Ｓ１２０３でＣＰＵ２０３は、データを埋め込む対象となる画像における、苦手領域（不得意領域）を判定する。ここでは説明のため、グレースケールの画像に含まれる画素の画素値を１０加算または減算することで周期的な変化を与えるものとする。
【００５６】
ここで、Ｓ１２０３における処理の詳細を説明する。まずＣＰＵ２０３は、データが埋め込まれる画像の画素値を全ての画素について検出し、１０の加算および減算（画素値の変更処理）が可能か判定する。具体的には、各画素の画素値が１０〜２４５の間であるかを判定する。図１５は、苦手領域の判定が行われた結果の一例を示す図である。図１５では、画素値が１０〜２４５の間である画素（画素値の変更処理が可能な画素）を白、それ以外を黒で表現している。つまり、図１５における白で表現されている領域が、データを想定通りに埋め込める領域（得意領域）となる。一方で、黒で表現されている領域が、データを想定通りに埋め込めない可能性がある領域（苦手領域）となる。なお、上記の例では画素ごとに判定を行っているが、複数画素で構成される領域毎に判定が行われてもよい。例えば８×８ブロック毎に解析をし、該ブロックの平均画素により得意領域か苦手領域を判定してもよい。ただし、８ｐｘ×８ｐｘの計６４画素中３２画素が「０」、３２画素が「２５５」であった場合、平均値は１２７．５となり、本来は苦手領域にも関わらず得意領域と判定されかねない。その場合に備え、８ｐｘ×８ｐｘブロック内の分散値を計算し、分散値が低い（画素にばらつきがない）場合のみ得意領域と判定することが望ましい。このように、各画素、もしくは領域毎など、画素を解析した解析結果に基づいて得意領域、苦手領域が判定される。また上記の例では、画像を得意領域と苦手領域に二分しているが、得意領域、苦手領域、中間領域など、複数の段階を設けてよい。
【００５７】
また、本実施形態では画素の画素値に１０の加算および減算が可能か判定されるが、得意領域、不得意領域の判定方法として種々のものを用いることができる。例えば、アプリケーションにおいて多重化処理に適さない色があらかじめテーブルで保持されており、データが埋め込まれる画像の各画素（もしくは各ブロック）と、先述のテーブルを比較することによって、得意領域、不得意領域が判定されてもよい。特に、プリンタによりＪＰＥＧやＰＮＧなどの写真データが印刷される場合、ＲＧＢデータからＣＭＹＫデータへの変換が発生することが多い。この場合、画像に対して周期的に行われた変動がそのまま残っていることは少ない。また、カメラ付携帯端末２０１上で扱える０〜２５５の値を持つ画像データと、プリンタの扱える色の特性（色空間）には違いがあることがある。その結果、カメラ付携帯端末２０１で画像の画素値に１０の加算または減算を行っても、それがプリンタでは表現できない色空間であると、例えばプリンタ側での変動が５の加算または減算に縮小されるということもあり得る。そこで、デコードのための機能を備えるアプリケーションにおいて、プリンタの特性（例えばプリンタによる画像データ形式の変換により、データ埋め込みのための周期的変化がどの程度ずれるか、等）を示すテーブルが定義されてもよい。そしてカメラ付携帯端末２０１がデコードを行う際には、先述のテーブルを参照することで得意領域、苦手領域を判断するようにしてもよい。このテーブルは、カメラ付携帯端末２０１がプリンタと通信して取得してもよい。さらに、得意領域、不得意領域の判定は色に基づくものでなくとも、画像におけるある領域のパターンや周波数成分を解析することで、得意領域、不得意領域を判定してもよいし、また色や周波数の組み合わせによって判定してもよい。
【００５８】
また、本実施形態では、図２、図３に示すように、画像における８ｐｘ×８ｐｘのブロック毎に２ｐｘ幅の斜めの周期性が与えられる。このエンコード方式であると、埋め込み対象の画像に同様のパターンが存在する場合、誤判定をする可能性が高くなる。つまり、エンコード方式によって、苦手となる領域は異なってくる。また、携帯端末（撮像センサ）の特性によっても得意領域、苦手領域が異なってくる。例えばある携帯端末では、センサ性能の低さや、独自の画像処理の介入により、ある色成分において期待している値が取得できない場合がある。つまり、苦手領域、不得意領域の判定のために適切な処理は、利用するエンコード方式や想定している撮像センサやデコード装置などの条件により異なる。そのため、この条件に応じて、苦手領域、不得意領域の判定方法を異ならせることが望ましい。
【００５９】
次にＳ１２０４〜Ｓ１２０８でＣＰＵ２０３は、Ｓ１２０３における苦手領域の判定結果に基づいて、画像における埋め込みデータの埋め込み位置を決定し、その領域にデータを埋め込む。具体的には、画像において、画素値に所定の変化を与えることが可能な領域が、当該所定の変化を与えることが可能でない領域よりも優先されるように、データが埋め込まれる。先述の多重化方法では「ｈｅｌｌｏ」の８ｐｘ×８ｐｘのブロックを４０ビット分のパターン横一列に並べていたため、３２０ｐｘ×８ｐｘの領域が必要である。ここで、埋め込みデータの埋め込みに必要なブロックの数を示す変数としてＷ、Ｈが定義され、横Ｗ個、縦Ｈ個の８ｐｘ×８ｐｘのブロックによりデータが埋め込まれるものとする。３２０ｐｘ×８ｐｘの領域にデータが埋め込まれる場合、Ｗ＝４０、Ｈ＝１である。ＣＰＵ２０３は、図１５に示した画像において、すべて白画素（得意領域）となる３２０ｐｘ×８ｐｘの領域を探索する。
【００６０】
具体的には、Ｓ１２０４においてＣＰＵ２０３は、埋め込み領域の探索を開始する。探索開始の基準となる画素は、初回の探索では画像の左上の画素であり、２回目以降の探索では右方向、下方向にインクリメントされる。Ｓ１２０５においてＣＰＵ２０３は、図１５に示す画像に含まれる画素の画素値を解析することで、埋め込み可能領域が検出されたか判定する。具体的には、Ｓ１２０５においてＣＰＵ２０３は、埋め込まれるデータの情報量に応じて、画像における当該データを埋め込むための領域のサイズを特定し、そのサイズであり、且つ得意領域に該当する領域を探索する。例えばＣＰＵ２０３は、図１５に示す画像において、探索の基準となる画素を左上の始点とする、３２０ｐｘ×８ｐｘの領域が全て白画素（得意領域）であるか判定する。埋め込み可能領域が検出されたと判定された場合、ＣＰＵ２０３はＳ１２０６において、上述した方法によりＳ１２０５において検出された領域にデータを埋め込む。そして、Ｓ１２０７においてＣＰＵ２０３は、図１５に示す画像において、Ｓ１２０５において検出された領域を黒画素（苦手領域）に変更する。この処理は、次にＳ１２０５の処理が行われた場合に再度白画素（得意領域）と判定され、データが重複して埋め込まれるのを避けるためである。Ｓ１２０６においてデータが埋め込まれた場合、もしくはＳ１２０５において埋め込み可能領域が検出されない場合、Ｓ１２０８に処理が進む。Ｓ１２０８おいてＣＰＵ２０３は、全画素について埋め込み可能領域の探索処理が実行されたか判定する。例えば、画像の全画素が、上記の基準となる画素となったか判定される。全画素について埋め込み可能領域の探索処理が実行されたと判定された場合、処理を終了する。一方、全画素について埋め込み可能領域の探索処理が実行されていない場合、Ｓ１２０５に処理が戻る。このとき、上述のように、探索の基準となる画素が更新される。Ｓ１２０９でＣＰＵ２０３は、アプリケーションを実行してＯＳにコマンドを送ることで、Ｓ１２０４〜Ｓ１２０８によりデータが埋め込まれた画像をプリンタ１０３に送信して印刷させる印刷制御を実行する。
【００６１】
上述のＳ１２０４〜Ｓ１２０８と同様の処理を行うためのプログラムコードの一例を以下に示す。
【００６２】
【数２】
2019091976.tif 000004
【００６３】
１４〜２０行目において、注目している３２０ｐｘ×８ｐｘの領域が、全ての画素で白となる得意領域であるか判断している。もし、黒領域（黒画素）が含まれる場合、ｉｓＤｒａｗａｂｌｅのフラグがｆａｌｓｅとなり、２２行目において、多重化処理を行う前に次の探索位置へと移行する。全て白領域であった場合は２４行目で３２０ｐｘ×８ｐｘの領域に対して埋め込み処理を行う。２６〜３０行目において、埋め込み処理がなされた領域は、多重化不可領域として扱うために、ｄｒａｗａｂｌｅＭａｐをｆａｌｓｅに更新する。
【００６４】
図１６は、本実施形態の処理により決定された位置に多重化が行われた画像の一例を示す図である。図１６では、図１５の画像内で３２０ｐｘ×８ｐｘが全て白という領域に多重化が施されている。
【００６５】
しかし、図１６では苦手領域を避けて埋め込みは実行できているが、使われていない白領域（得意領域）も多くある。そこで、埋め込みデータに用いられる領域の形状は、上述したものに限らない。図１７は、本実施形態の処理により決定された位置に多重化が行われた画像の別の例を示す図である。図１７では、６４ｐｘ×４０ｐｘの領域で８ｐｘ×８ｐｘが横に８つ、縦に５つ並んでいる領域について、左上から右下に向かう方向に、バイナリデータに含まれる「０」または「１」がブロックに埋め込まれている。６４ｐｘ×４０ｐｘの領域のように、ブロックが集中する形状を採用することで、カメラをより近づけても埋め込みデータ全体が入る状態になる可能性が高く、デコードに必要な領域の画像を鮮明に取得できるようになる可能性が高くなる。また、埋め込みデータに相当するブロックが集中しているほど、カメラレンズの収差によるズレの影響や、カメラの傾きによる誤差の影響が少なくなる利点もある。
【００６６】
このように、埋め込みデータが埋め込まれる領域の形状は種々のものを採用することができ、またその形状である複数の候補から、多重化、印刷される画像に使用される形状が自動的に決定されてもよい。例えばＣＰＵ２０３は、埋め込みデータが埋め込まれる領域として異なる形状を採用し、図１２のＳ１２０３、Ｓ１２０４の処理を実行する。そしてＣＰＵ２０３は、同一の埋め込みデータが得意領域において繰り返し埋め込まれるときに、最も埋め込み回数（埋め込まれる領域の数）が多くなる形状を特定する。そして、特定された形状を用いて、埋め込みデータを多重化し、印刷のための画像を生成する。
【００６７】
上述のように、８ｐｘ×８ｐｘを４０個並べるパターンとして種々のものを採用することができる。ここで、８ｐｘ×８ｐｘのブロックが縦Ｗ個、横Ｈ個並ぶとすれば、それが４０個以上になればよいので、式（１）を満たせば良いことがわかる。
【００６８】
Ｗ×Ｈ≧４０  （１）
つまり、Ｗ，Ｈの組み合わせにおいて、得意領域に配置できる個数が最大になるものを選択すればよい。
【００６９】
また、先述の埋め込みは「ｈｅｌｌｏ」のバイナリデータについての埋め込みについて説明したが、本実施形態では、デコード側の処理のために、データの開始位置や変数Ｗ、Ｈの情報についても埋め込む例についても説明する。
【００７０】
図１８は、埋め込みデータのデータ形式の一例を示す図である。図１８に示すように、埋め込みデータには、開始位置判定パターン１８０１、ヘッダ部１８０２、実データ部１８０３が含まれる。ヘッダ部には「０」「１」とは違ったパターンのブロックが存在しており、デコードを行う装置では、このブロックによってヘッダの位置を特定することができる。ヘッダの位置から（ｘ１、ｙ１）ずれた位置にはＷに相当する４ｂｉｔの情報が埋め込まれ、（ｘ２、ｙ２）ずれた位置にはＨに相当する４ｂｉｔの情報が埋め込まれ、（ｘ３、ｙ３）ずれた位置が実データ部開始位置のように定められている。このような取り決めに従ってデータが埋め込まれた場合の周期パターンについて、図１９を用いて後述する。なお、このような取決めは、エンコード処理とデコード処理が同一のアプリケーションにより実現される場合、該アプリケーションで定められている。またエンコード処理とデコード処理が個別のアプリケーションにより実現される場合、２つのアプリケーション間で共通の定義が行われている。また図１８に示すデータ構成には、図１３で説明したファイルフォーマット部も含まれる。
【００７１】
図１９は、埋め込みデータが埋め込まれた領域の周期パターンの一例を示す図である。図１９では、図１８に示したデータ形式の埋め込みデータが、９×９個のブロック（７２ｐｘ×７２ｐｘの領域）に埋め込まれた場合の例である。開始位置判定パターン１９０１は、図１８の１８０１に相当し、図１１に示したパターンにより表現されている。Ｗ情報１９０２、Ｈ情報１９０３、ファイルフォーマット情報１９０４は、図１８のヘッダ部１８０２に含まれる４ビットの情報であり、それぞれ横に並んだ４つのブロックにより表現されている。実データ１９０５は、図１８の１８０３に相当し、横８個、縦５個の４０個のブロックにより、４０ビットのバイナリデータを表現している。
【００７２】
なお、図１８に示したヘッダ部の形態はこれに限らず、様々な情報を持たすように拡張されもよいし、開始位置判定ブロックの配置位置も図１９の限りではなく、どこに配置されてもよい。また、位置判定の精度を上げるために、複数の開始位置判定ブロックが設けられてもよいし、より大きなサイズの開始位置判定ブロックが設けられてもよい。また、図１９では埋め込みデータが埋め込まれる領域の形状が正方形であるが、正方形以外の矩形でもよい。
【００７３】
以上の実施形態における処理によれば、画像に含まれる画素の画素値を変化させることで、画像にデータを埋め込むことができる。また、画像に含まれる画素の画素値を解析することで、その変化を行うのに適切な画素（領域）であるか判定する。そのため、画像において多重化が適切に行われない可能性がある苦手領域を避けて、埋め込みデータを多重化することができる。従って、デコードを行う装置において、多重化されたデータを適切にデコードできないケースを低減させることができる。さらに、例えば画像における苦手領域に適切な多重化を行えるように、画像内の画素値を変更する方法に比べ、画質劣化を抑えたうえで多重化を行うことができる。
【００７４】
（第２の実施形態）
第２の実施形態では、埋め込みデータを非連続のブロックに埋め込む処理について説明する。第１の実施形態では、埋め込みデータを、画像において連続するブロックに埋め込んでいた。しかしながら、埋め込みデータを全て表現できる数の連続するブロックに相当する得意領域が、画像内に存在しない場合がある。特に、埋め込もうとするデータの情報量が多い場合や、得意領域と判定される情報が厳しい場合、全情報を埋め込める数の連続するブロックに相当する得意領域が、画像内に存在しない場合がある。このような場合においても、得意領域のみを利用した情報の埋め込みを行う処理について説明する。以降、「０」もしくは「１」もしくは開始位置を表現するための８ｐｘ×８ｐｘブロックを「基礎ブロック」と記述し、デコードで利用する形に基礎ブロックをまとめたものを「データブロック」とする。つまり図３（ａ）（ｂ）や図９に示したブロックが基礎ブロックであり、図１９に示したブロックが、データブロックである。
【００７５】
実施形態１では画素値が１０加算または減算されることで、多重化が行われた。実施形態２では、画素値が１５加算または減算されることで多重化が行われる。図２０は、このような条件で図１２のＳ１２０３の処理により苦手領域の判定が行われた結果の別の例を示す図である。図１５と同様、画像中の黒い箇所が苦手領域であり、画像中の白い箇所が得意領域である。ここで、画像に埋め込まれる内容を「ｈｅｌｌｏ」ではなく「Ｃｏｎｇｒａｔｓ  ｏｎ  ｙｏｕｒ  ｔｅｎｔｈ  ｂｉｒｔｈｄａｙ」とする。前記の文字はスペース含め全３１文字であり、１文字が８ｂｉｔだとすると、全部で２４８ｂｉｔの情報が必要になる。即ち「０」もしくは「１」を表現するために図３（ａ）（ｂ）のような８ｐｘ×８ｐｘのパターンを利用した場合、上記の文字列を表現するためには最低２４８個の基礎ブロックが必要となる。本実施形態は説明のため、データを埋め込むブロック（データブロック）は正方形として説明をおこなうが、正方形に限定されるわけではなく、正方形以外の矩形でも良い。
【００７６】
まずＣＰＵ２０３は、図２０において全てが得意領域となる正方形の領域を検出する。図２１は、全てが得意領域となる正方形の領域の例を示す図である。ブロックＡは９６ｐｘ×９６ｐｘの正方形の領域であり、ブロックＢは１２０ｐｘ×１２０ｐｘの正方形の領域である。ブロックＡの領域は基礎ブロック数では１４４個分に相当し、ブロックＢの領域は基礎ブロック数で２２５個分に相当する。これらは二つとも「Ｃｏｎｇｒａｔｓ  ｏｎ  ｙｏｕｒ  ｔｅｎｔｈ  ｂｉｒｔｈｄａｙ」を表現する為に最低限必要な基礎ブロック２４８個分には満たないが、二つを合わせると２４８個分を満たすことができる。そこで、実施形態２では、ブロックＡの領域とブロックＢの領域の両方を用いて「Ｃｏｎｇｒａｔｓ  ｏｎ  ｙｏｕｒ  ｔｅｎｔｈ  ｂｉｒｔｈｄａｙ」を表現する。ここで、ブロックＡには「Ｃｏｎｇｒａｔｓ  ｏｎ  」（９６ｂｉｔ）、ブロックＢには「ｙｏｕｒ  ｔｅｎｔｈ  ｂｉｒｔｈｄａｙ」（１５２ｂｉｔ）を埋め込むこととする。
【００７７】
二つのブロックで一つのデータを表現するためには、実施例の情報に加え、「全データ中のどこからどこまでのデータか」を示す情報が必要になる。これを実現するためにヘッダを図２２のように作成する。図２２は、埋め込みデータのデータ構成の別の例を示す図である。開始位置判定パターン２２０１は、上述した開始位置判定パターンと同様であるので説明を省略する。全データ数２２０２は、埋め込みデータの全データ数を示し、今回の場合は２４８ｂｉｔを示す。実データ数２２０３は、実データ部に何ビット分のデータが入っているかを示す値である。例えばブロックＡにおける実データ数２２０３は９６を示し、ブロックＢおける実データ数２２０３は１５２を示す。開始オフセット２２０４は、データブロック含まれるデータが、埋め込みデータ全体におけるどの位置から始まるデータであるかを示す。ブロックＡに関してはデータが先頭から始まっているので、開始オフセット２２０４は「０」を示し、ブロックＢに関しては９６ｂｉｔ目以降の情報が入るという意味で、開始オフセット２２０４は「９６」を示す。
【００７８】
図２２に示したデータ形式により、デコード側の装置では、分割された複数のデータブロックから抽出したデータの結合方法を認識することができ、埋め込みデータを復号することが可能となる。また図２２の例では、データブロックにおけるヘッダ部は開始位置のブロックを含め３７ｂｉｔが必要であり、二つ分であると７４ｂｉｔ必要となる。また実データ部が２４８ｂｉｔであるため、ヘッダ部と実データ部の合計で３２２ｂｉｔであり３２２個の基礎ブロックが必要である。ブロックＡは基礎ブロックを１４４個含み、ブロックＢは基礎ブロックを２２５個含むため、合計で３６９個分の基礎ブロックが含まれる。つまり、本実施例のデータにおいてはブロックＡとブロックＢを合わせて用いることで、上述の３２２ｂｉｔの埋め込みデータを埋め込めることが可能である。
【００７９】
なお、本実施形態では「Ｃｏｎｇｒａｔｓ  ｏｎ  ｙｏｕｒ  ｔｅｎｔｈ  ｂｉｒｔｈｄａｙ」を「Ｃｏｎｇｒａｔｓ  ｏｎ  」と「ｙｏｕｒ  ｔｅｎｔｈ  ｂｉｒｔｈｄａｙ」に二分割にしたが、情報を重複させてもよい。つまり、データブロックに余裕がある場合は「Ｃｏｎｇｒａｔｓ  ｏｎ  ｙｏｕｒ」と「ｏｎ  ｙｏｕｒ  ｔｅｎｔｈ  ｂｉｒｔｈｄａｙ」のように埋め込んでも良い。
【００８０】
なお、本実施形態では２つのデータブロックを結合することによってデータを表現する説明を行ったが、２つ以上のデータブロックによりデータを表現してもよい。ただし、データブロックを分割するためには、それらを表現するためのヘッダ部が必要となり、分割数が増えれば増えるほどヘッダ部のオーバーヘッドが増えることになる。そのため、分割数はなるたけ少ないほうが望ましい。
【００８１】
また本実施形態では説明のため得意領域の正方形が２つのみであったが、得意領域の正方形が複数存在する場合も起こり得る。その場合のＣＰＵ２０３によるブロックの位置とサイズの決定方法は下記のような手順が考えられる。下記の手順は分割なしでデータを埋め込む方法も含まれている。
【００８２】
ステップ１においてＣＰＵ２０３は、埋め込みたいデータを全て埋め込める最小のデータブロックサイズを決定する。ステップ２においてＣＰＵ２０３は、ステップ１で決定されたサイズで得意領域の条件を満たす位置を探索する。ステップ３においてＣＰＵ２０３は、ステップ２において探索できた位置に対して情報を埋め込む。そして、ＣＰＵ２０３は、ステップ２における処理が画像の全領域に対して実行されるまで、ステップ１〜３の処理を繰り返す。上記のステップ１〜３は、例えば図１２のＳ１２０４〜Ｓ１２０８の処理により実現される。
【００８３】
またステップ４においてＣＰＵ２０３は、ステップ１で決定されたサイズより小さいサイズで得意領域の条件を満たす位置を探索する。ステップ４における処理は、例えばステップ３における埋め込みの回数が所定数以下の場合に実行される。ステップ５においてＣＰＵ２０３は、ステップ４で得意領域が探索されるたびに得意領域のサイズを加算する。そして、ＣＰＵ２０３は、ステップ６において、ステップ４において加算されたサイズが、ヘッダ部と実データ部を埋め込めるサイズであれば、複数の得意領域に埋め込みデータを分割して埋め込む。そして、ＣＰＵ２０３は、ステップ４における処理が画像の全領域に対して実行されるまで、ステップ４〜６の処理を繰り返す。
【００８４】
つまり、ステップ１〜３の処理により、分割をしないでもデータを埋め込める得意領域があれば、その得意領域にデータが埋め込まれる。一方、ステップ４〜６の処理により、分割してデータを埋め込める領域が探索され、その領域にデータが分割されて埋め込まれる。上記の得意領域の条件は先述の通り、エンコードとデコードの特性に応じて適切なものが設定される。上記のように埋め込みデータが分割して埋め込まれることで、連続する得意領域が全データを埋め込むには不十分なサイズであっても、データを埋め込むことが可能となる。
【００８５】
（その他の実施形態）
以上の実施形態におけるデータ埋め込みは全て矩形で説明したが、矩形でなくてもよい。例えばデータブロックのヘッダ部に、ｘ座標、ｙ座標と半径情報を入れることで、円形領域に基礎ブロックを配置することも可能である。また、以上の実施形態においては、データブロック内に苦手領域が含まれていないものとして説明したが、データブロックから苦手領域を全て除かなければならないわけではない。例えば、データブロックのヘッダ部にデータブロック内における苦手領域の座標を記述しておき、その位置には基礎ブロックを配置しないようにしてもよい。例えば、苦手領域、得意領域の判定において「注目領域における苦手領域の含有率は１０％まで許容する」などの対応が可能となる。
【００８６】
さらに、以上の実施形態では、注目画素に対する苦手領域の判定方法として、所定の埋め込み方法によるデータの埋め込みが可能か否かを判定していた。例えば所定の埋め込み方法が、画素値に対する所定の変化（例えば１０の加算または減算）を与える方法の場合、ＣＰＵ２０３は、その変化（加算または減算）を行うことが可能か否かを判定していた。そして、画像において、その変化が可能な領域が、その変化が可能でない領域よりも優先されてデータが埋め込まれるように、データの埋め込み位置が決定されていた。しかしこれに限らず、例えば１０の加算または減算はできなくても、８や９の加算または減算が可能であれば得意領域に該当する画素と判定するなど、許容範囲が設けられてもよい。この場合、データの埋め込み方法として画素値に与えられる変化は、「画素値に対する８〜１０の加算または減算」となり、その変化が可能な領域が、その変化が可能でない領域よりも優先されてデータが埋め込まれる。
【００８７】
また、画像における得意領域にデータが分割されないように、まとめて埋め込む場合、苦手領域にはデータを埋め込まないようにしてもよいし、苦手領域にもデータをまとめて埋め込むようにしてもよい。この場合でも、得意領域と苦手領域が混在する領域にデータが埋め込まれるのを防ぐことができる。またそれとともに、例えば印刷物における得意領域に該当する部分に折れや汚れが生じ、データのデコードが困難になった場合でも、苦手領域に該当する部分からデコードが可能となる余地を残すことができる。
【００８８】
なお、本実施形態の機能は以下の構成によっても実現することができる。つまり、本実施形態の処理を行うためのプログラムコードをシステムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ（またはＣＰＵやＭＰＵ）がプログラムコードを実行することによっても達成される。この場合、記憶媒体から読み出されたプログラムコード自体が上述した実施形態の機能を実現することとなり、またそのプログラムコードを記憶した記憶媒体も本実施形態の機能を実現することになる。
【００８９】
また、本実施形態の機能を実現するためのプログラムコードを、１つのコンピュータ（ＣＰＵ、ＭＰＵ）で実行する場合であってもよいし、複数のコンピュータが協働することによって実行する場合であってもよい。さらに、プログラムコードをコンピュータが実行する場合であってもよいし、プログラムコードの機能を実現するための回路等のハードウェアを設けてもよい。またはプログラムコードの一部をハードウェアで実現し、残りの部分をコンピュータが実行する場合であってもよい。
【図１】
2019091976.tif 000005
【図２】
2019091976.tif 000006
【図３】
2019091976.tif 000007
【図４】
2019091976.tif 000008
【図５】
2019091976.tif 000009
【図６】
2019091976.tif 000010
【図７】
2019091976.tif 000011
【図８】
2019091976.tif 000012
【図９】
2019091976.tif 000013
【図１０】
2019091976.tif 000014
【図１１】
2019091976.tif 000015
【図１２】
2019091976.tif 000016
【図１３】
2019091976.tif 000017
【図１４】
2019091976.tif 000018
【図１５】
2019091976.tif 000019
【図１６】
2019091976.tif 000020
【図１７】
2019091976.tif 000021
【図１８】
2019091976.tif 000022
【図１９】
2019091976.tif 000023
【図２０】
2019091976.tif 000024
【図２１】
2019091976.tif 000025
【図２２】
2019091976.tif 000026