以下、添付図面を参照し、本発明の好適な実施形態について説明する。なお、以下説明する実施形態は、本発明を具体的に実施した場合の一例を示すもので、特許請求の範囲に記載した構成の具体的な実施例の1つである。
[第1の実施形態]
以下では、次のような情報処理装置の一例について説明する。即ち、印刷物の撮像画像を取得し、該撮像画像から、印刷物上の複数箇所に印刷された符号のうち所定の箇所から該符号を抽出したか否かに基づき、複数箇所に印刷された付加情報の抽出に関するメッセージを報知する情報処理装置である。
先ず、印刷画像(印刷対象となる画像や文字を含む)としての画像情報に付加情報を埋め込む(多重化する)付加情報多重化装置について説明する。なお、付加情報多重化装置は、プリンタや複合機等に搭載されているプリンタエンジンに出力する印刷画像(画像情報)を生成するコンピュータ内のプリンタドライバソフトウェアやアプリケーションソフトとして該コンピュータにインストールされても良い。また、付加情報多重化装置は、複写機、ファクシミリ、プリンタ本体等にハードウエア及び/又はソフトウエアとして内蔵されても良い。
図1は、このような付加情報多重化装置を含む、印刷物に付加情報を埋め込んで出力するシステムの構成例を示すブロック図である。
付加情報多重化装置102には、モノクロ若しくは多階調の印刷画像(画像情報)と、該印刷画像に埋め込む情報である付加情報と、が入力される。付加情報は、画像情報とは異なる情報であり、例えば、音声情報、動画情報、テキスト文書情報、画像情報に関する著作権、撮影日時、撮影場所、撮影者等の画像属性情報、該画像情報とは異なる他の画像情報、等がある。
そして付加情報多重化装置102は、印刷画像上の複数箇所に付加情報を埋め込むのであるが、その埋め込みの際には、埋め込んだ付加情報が視認し難くなるように埋め込む。そして付加情報多重化装置102は、付加情報を埋め込んだ印刷画像をプリンタ103に対して送出する。
プリンタ103は、インクジェットプリンタ、レーザープリンタ等、疑似階調処理を用いることにより階調表現を実現するプリンタであり、付加情報多重化装置102からの印刷画像を紙などの記録媒体上に記録することで印刷物を生成する印刷装置である。もちろん、付加情報多重化装置102からの印刷画像を紙などの記録媒体上に記録する装置であれば、複合機など、印刷機能を有する他の装置であっても構わない。
次に、上記の付加情報多重化装置102の構成例を、図2のブロック図を用いて説明する。
誤差拡散部200は、入力された印刷画像に対して誤差拡散法を用いた疑似階調処理を施すことで、入力階調数よりも少ない量子化レベルに変換し、複数画素の量子化値によって面積的に階調性を表現する印刷画像に変換する。誤差拡散処理の詳細については後述する。そして誤差拡散部200は、疑似階調処理を施した印刷画像をプリンタ103に対して送出する。
ブロック化部201は、入力された印刷画像を複数の領域(ブロック)に分割(ブロック化)する。なお、分割する領域の形状は矩形であっても良いし、他の形状であっても良い。例えば、同じ属性の領域(オブジェクトごとの領域など)ごとに分割しても良い。
量子化条件制御部202は、ブロック化部201にて分割されたそれぞれのブロックの量子化条件を制御する。この量子化条件は、誤差拡散部200において用いられる。
制御部210は、付加情報多重化装置102を構成する各機能部の動作制御を行うと共に、付加情報多重化装置102が行うものとして後述する各処理を実行若しくは制御するためのものである。制御部210は、ROM212、CPU211、RAM213を有する。
CPU211は、ROM212やRAM213に格納されているコンピュータプログラムやデータを用いて処理を実行する。これによりCPU211は、付加情報多重化装置102を構成する各部の動作制御を行うと共に、付加情報多重化装置102が行うものとして後述する各処理を実行若しくは制御する。
ROM212には、付加情報多重化装置102の設定データや、付加情報多重化装置102が行うものとして後述する各処理をCPU211に実行若しくは制御させるためのコンピュータプログラムやデータが格納されている。
RAM213は、CPU211が各種の処理を実行する際に用いるワークエリアを有する。
次に、誤差拡散部200の構成例を、図3のブロック図を用いて説明する。以下では説明を簡単にするために、量子化値が2値である誤差拡散処理を例にして説明する。
加算器300には、印刷画像を構成する各画素の画素値が入力され、該画素の画素値に、誤差分配演算部303から供給される「既に2値化された該画素の周辺画素の分配された量子化誤差」を加算する。
比較部301には、加算器300から出力された注目画素の画素値と、該注目画素が属するブロックについて量子化条件制御部202が決定した量子化条件において該注目画素に対する閾値と、を比較する。そして、加算器300から出力された注目画素の画素値>閾値の場合には、注目画素の量子化値として「1」を出力し、加算器300から出力された注目画素の画素値≦閾値の場合には、注目画素の量子化値として「0」を出力する。なお、印刷画像が8ビットの精度で階調を表現する画像(各画素の画素値が8ビットで表現される画像(8ビット画像))である場合、量子化値「1」に対応する量子化代表値は「255」となり、量子化値「0」に対応する量子化代表値は「0」となる。
このように、印刷画像の各画素に対して「1」若しくは「0」となる量子化値が決定するのであるが、量子化値が「1」となる画素は(インク、トナー等を用いて)印刷され(対応するドットが印字され)、量子化値が「0」となる画素は印刷されない。
減算器302は、比較部301から出力された注目画素の量子化値に対応する量子化代表値と、加算器300から出力された注目画素の画素値と、の差分を該注目画素に対する誤差として求める。
誤差分配演算部303は、減算器302が注目画素について求めた誤差を、該注目画素の周辺画素に分配する。誤差の配分割合は注目画素との相対的な距離に基づいて実験的に設定された誤差の配分テーブル304を予め所有しておき、該配分テーブル304に記された配分割合に基づいて誤差を分配する。図3の配分テーブル304は、周囲4画素分の配分テーブルを示しているが、これに限るものではない。
次に、上記のような構成を有する付加情報多重化装置102が、印刷画像の各ブロックに対して量子化条件を設定し、該各ブロックに対して該量子化条件に基づく誤差拡散を行う一連の処理について、図4のフローチャートを用いて説明する。なお、図4のフローチャートでは、ブロック化部201による印刷画像のブロック分割は省略しているが、このブロック分割は、ステップS403までには行っておく必要がある。
<ステップS401>
CPU211は、印刷画像の垂直方向の画素位置(x座標値)を示す変数iの値を0に初期化する。
<ステップS402>
CPU211は、印刷画像の水平方向の画素位置(y座標値)を示す変数jの値を0に初期化する。以下では、印刷画像の左上隅の位置を原点(0,0)とし、x座標値は画像右方向に増加し、y座標値は画像下方向に増加するものとする。しかし、以下の処理において、印刷画像上の全ての画素位置をスキャンできるであれば、変数i、jの初期値やスキャン方向はここで説明するものに限らない。
<ステップS403>
量子化条件制御部202は、印刷画像における画素位置(i、j)における画素が、符号を多重化する領域(多重化領域)に属しているか否かを判断する。ここで、多重化領域について、図5を例にとり説明する。
500は、印刷画像全体を表しており、垂直方向のサイズ=HEIGHT、水平方向のサイズ=WIDTHとなっている。また、印刷画像500内の点線で区分しているそれぞれの矩形はブロック化部201によって分割されたそれぞれのブロックを表しており、垂直方向のサイズ=M画素、水平方向のサイズ=N画素となっている。なお、Mは2≦M<HEIGHTを満たす自然数、Nは2≦N<WIDTHを満たす自然数である。なお、図5では、印刷画像500の原点を基準点としてブロック化を行っているが、原点とは異なる点を基準点としてブロック化を行っても良い。
図5のように、印刷画像500の原点を基準点としてブロック化を行うと、水平方向のブロック数W=INT(WIDTH/N)となり、垂直方向のブロック数H=INT(HEIGHT/M)となる。ここでINT(X)はXの整数部分を返す関数である。図5に示す如く、印刷画像500の原点から水平方向にW個、垂直方向にH個のブロックが並んだ状態においては、印刷画像500の右端及び下端にブロックが存在しない領域(非ブロック領域)が発生する。本実施形態では、各ブロックの領域を多重化領域とし、非ブロック領域を非多重化領域とする。
すなわち、ステップS403では、印刷画像における画素位置(i、j)が、何れかのブロック内の画素位置(多重化領域内の画素位置)であるのかを判断する。そしてこの判断の結果、印刷画像における画素位置(i、j)が多重化領域内の画素位置である場合には、処理はステップS405に進み、非多重化領域内の画素位置である場合には、処理はステップS404に進む。
<ステップS404>
量子化条件制御部202は、量子化条件として量子化条件Cを設定する。量子化条件Cが如何なるものであるのかについては後述する。
<ステップS405>
量子化条件制御部202は、印刷画像における画素位置(i、j)が属するブロックに割り当てられている符号を取得する。本実施形態では、ブロック数分の要素を有し且つ該要素には対応するブロックに対するビット値が登録されている配列を作成し、該配列において、印刷画像における画素位置(i、j)が属するブロックに対応する要素に登録されているビット値を取得する。図5の場合、ブロック数は縦14個×横14個=196個であるから、要素数196個の1次元配列CODE[]を生成する。そして、CODE[0],CODE[1],…,CODE[195]のそれぞれには、0番目のブロックに対応するビット値、1番目のブロックに対応するビット値、…、195番目のブロックに対応するビット値が登録されている。なお、この配列は14×14の2次元配列でも良い。
また、印刷画像におけるブロックには、その位置を表す位置情報を多重化するブロックと、付加情報を多重化するブロックと、がある。図5において、ハッチングされたブロック501は位置情報を多重化するブロック(位置情報多重化ブロック)であり、ハッチングされていないブロック502は、付加情報を多重化するブロック(付加情報多重化ブロック)である。図5の場合、縦2個×横2個の位置情報多重化ブロックで1セットを構成しており、縦2個×横2個の位置情報多重化ブロックのそれぞれに対応するビット値から成る4ビット値で、該縦2個×横2個の位置情報多重化ブロックから成る1セットの位置情報を表す。また、該セットは印刷画像500中に9個設けられている。
上段左のセットを1番目、上段中央のセットを2番目、上段右のセットを3番目、中段左のセットを4番目、中段中央のセットを5番目、中段右のセットを6番目、下段左のセットを7番目、下段中央のセットを8番目、下段右のセットを9番目とする。
このとき、上段左のセットの位置情報を「0000」とし、その場合、該セットを構成するそれぞれのブロックに対応するビット値を「0」とする。また、上段中央のセットの位置情報を「0001」とし、その場合、該セットにおいて左上隅、右上隅、左下隅のそれぞれのブロックに対応するビット値を「0」とし、右下隅のブロックに対応するビット値を「1」とする。また、上段右のセットの位置情報を「0010」とし、その場合、該セットにおいて左上隅、右上隅、右下隅のそれぞれのブロックに対応するビット値を「0」とし、左下隅のブロックに対応するビット値を「1」とする。
また、中段左のセットの位置情報を「0011」とし、その場合、該セットにおいて左上隅、右上隅のそれぞれのブロックに対応するビット値を「0」とし、左下隅、右下隅のブロックに対応するビット値を「1」とする。また、中段中央のセットの位置情報を「0100」とし、その場合、該セットにおいて左上隅、左下隅、右下隅のそれぞれのブロックに対応するビット値を「0」とし、右上隅のブロックに対応するビット値を「1」とする。また、中段右のセットの位置情報を「0101」とし、その場合、該セットにおいて左上隅、左下隅のそれぞれのブロックに対応するビット値を「0」とし、右上隅、右下隅のブロックに対応するビット値を「1」とする。
また、下段左のセットの位置情報を「0110」とし、その場合、該セットにおいて左上隅、右下隅のそれぞれのブロックに対応するビット値を「0」とし、左下隅、右上隅のブロックに対応するビット値を「1」とする。また、下段中央のセットの位置情報を「0111」とし、その場合、該セットにおいて左上隅のブロックに対応するビット値を「0」とし、右上隅、左下隅、右下隅のブロックに対応するビット値を「1」とする。また、下段右のセットの位置情報を「1000」とし、その場合、該セットにおいて右上隅、左下隅、右下隅のそれぞれのブロックに対応するビット値を「0」とし、左上隅のブロックに対応するビット値を「1」とする。
このように、位置情報多重化ブロックのそれぞれには、該位置情報多重化ブロックが属するセットの位置情報と、該セット中の該位置情報多重化ブロックの位置と、に応じたビット値が割り当てられる。なお、位置情報多重化ブロックに対するビット値の割り当て方法はこれに限るものではない。例えば、位置情報多重化ブロックの位置情報として、印刷画像500上の位置情報多重化ブロックのブロック位置(1番目のブロック、2番目のブロック、…)や、位置情報多重化ブロックの何れかの部分の画素位置を用いても良い。また、印刷物上の位置情報多重化ブロックの位置を該位置情報多重化ブロックの位置情報として用いても良い。
然るに、量子化条件制御部202は、ブロックの並び順に対応するビット値(位置情報多重化ブロックに対しては上記のようにして割り当てたビット値、付加情報多重化ブロックに対しては、入力された付加情報において該付加情報多重化ブロックに対応するビット値)を並べたビット列を配列CODEとして生成する。そして量子化条件制御部202は、該配列CODEにおいて、印刷画像における画素位置(i、j)が属するブロックに対応する要素に登録されているビット値bitを取得する。印刷画像における画素位置(i、j)が属するブロックに対応する要素に登録されているビット値bitは以下のようにして配列CODEから取得する。
bit=code[INT(i/M)×W+INT(j/N)]
<ステップS406>
量子化条件制御部202は、ステップS405で取得したビット値bitが「1」であるのか「0」であるのかを判断する。この判断の結果、ステップS405で取得したビット値bitが「1」である場合には、処理はステップS408に進み、「0」である場合には、処理はステップS407に進む。
<ステップS407>
量子化条件制御部202は、量子化条件として量子化条件Aを設定する。量子化条件Aが如何なるものであるのかについては後述する。
<ステップS408>
量子化条件制御部202は、量子化条件として量子化条件Bを設定する。量子化条件Bが如何なるものであるのかについては後述する。
<ステップS409>
誤差拡散部200は、ステップS404,S407,S408の何れかで、印刷画像における画素位置(i、j)の画素について設定した量子化条件に基づいて、該画素に対して図3を用いて説明した誤差拡散処理(量子化処理)を行う。
<ステップS410>
CPU211は、変数jの値を1つインクリメントする。
<ステップS411>
CPU211は、j<WIDTHであるのか否かを判断する。この判断の結果、j<WIDTHであれば、処理はステップS403に戻り、j<WIDTHでなければ、処理はステップS412に進む。
<ステップS412>
CPU211は、変数iの値を1つインクリメントする。
<ステップS413>
CPU211は、i<HEIGHTであるか否かを判断する。この判断の結果、i<HEIGHTであれば、処理はステップS402に戻り、i<HEIGHTでなければ、図4のフローチャートに従った処理は終了する。
次に、上記の量子化条件A、量子化条件B、量子化条件Cのそれぞれについて説明する。
誤差拡散法における量子化条件には様々な因子があるが、本実施形態では量子化条件は、量子化閾値とする。量子化条件Cは多重化領域外で使用されるため、量子化閾値は任意の値でよい。例えば、印刷画像が8ビット画像であり、量子化レベルが2値の場合、上記の通り最大の量子化代表値は「255」となり、最小の量子化代表値は「0」となるため、その中間値「128」を量子化閾値とする。すなわち、量子化条件Cとして、「量子化閾値を「128」に固定する」という条件を採用する。
量子化条件A、量子化条件Bは多重化領域内で使用されるため、量子化条件の違いによる画質の違いを生じさせなければならない。但し、画質の違いは視覚的には判別しにくいように表現し、かつ、記録媒体上から容易に識別できなくてはならない。
そこで本実施形態では、一例として、量子化条件Aとして図6(a)に示す量子化閾値マトリクス、量子化条件Bとして図6(b)に示す量子化閾値マトリクスを採用する。それぞれの量子化閾値マトリクスにおいてそれぞれのマスは1画素に対応しており、斜線部分のマスには量子化閾値θ1、非斜線部分のマスには量子化閾値θ2(θ2>θ1)が設定されている。すなわち、図6(a)の量子化閾値マトリクスは、量子化条件Aにおける量子化閾値の変化の周期を表したもので、図6(b)の量子化閾値マトリクスは、量子化条件Bにおける量子化閾値の変化の周期を表したものである。
量子化閾値θ1としては、量子化閾値θ2と比べて突出した値を用いる。例えば、印刷画像が8ビット画像である場合、上記の通り最大の量子化代表値は「255」、最小の量子化代表値は「0」となるため、その中間値「128」を量子化閾値θ2とし、これと比べて突出した値「10」を量子化閾値θ1とする。
このような量子化閾値マトリクスをステップS409にて使用する場合に、画素位置(i、j)に対応する量子化閾値は以下のようにして特定する。すなわち、画素位置(i、j)が属するブロック内に、該ブロックに対して設定した量子化閾値マトリクスを2次元的に繰り返し配置した場合に、該画素位置(i、j)に対応する量子化閾値マトリクスの要素(量子化閾値)を特定する。然るに、画素位置(i、j)に対してはこの特定した量子化閾値を用いて、上記の誤差拡散処理を行う。
量子化閾値が低くなると、該量子化閾値を適用した画素の量子化値が「1」(量子化代表値「255」)になりやすくなる。すなわち、図6(a)の量子化閾値マトリクスを適用したブロックでは、図6(a)の斜線部分のマスの並びで量子化値「1」の画素が並ぶことになる。同様に、図6(b)の量子化閾値マトリクスを適用したブロックでは、図6(b)の斜線部分のマスの並びで量子化値「1」の画素が並ぶことになる。換言すると、N画素×M画素のブロック毎に、図6(a)の斜線部分のマスの並びでドットが発生するブロックと、図6(b)の斜線部分のマスの並びでドットが発生するブロックと、が混在することになる。
なお、上記の説明では、誤差拡散法の量子化閾値に符号を表す所定の周期性を重畳することにより多重化を実現してきたが、これに限るものではなく、例えば、以下の方式も考えられる。
・ 直接RGBの輝度情報に周期性を重畳する方式
・ RGBの輝度情報を輝度‐色差情報(例えばYCrCb信号、XYZ信号、L*a*b*信号)に分離して周期性を多重化する方式
・ RGBの輝度情報をインク色(例えばCMYK信号)に分離して周期性を多重化する方式
次に、上記の付加情報多重化装置102が上記のようにして配列CODEの各要素を多重化した印刷画像が印刷された印刷物から付加情報を抽出(分離)する付加情報分離装置について説明する。このような付加情報分離装置を搭載した装置としては、例えば、カメラ付携帯電話、カメラ付スマートフォン、カメラ付きタブレットPC等のカメラ付携帯端末が考えられる。また、付加情報分離装置は、外部の撮像デバイスによって撮像された上記の印刷物の撮像画像を該撮像デバイスから取得し、該取得した撮像画像から付加情報を抽出する装置であっても良い。以下では、このような付加情報分離装置を搭載したカメラ付携帯端末について説明する。先ず、カメラ付携帯端末の構成例を図1(b)のブロック図を用いて説明する。
撮像センサ105は、カメラ付携帯端末104の姿勢に応じた撮像方向の被写体を撮像するものである。ユーザがカメラ付携帯端末104を手に把持して撮像センサ105の視野内に印刷物が含まれるようにカメラ付携帯端末104の姿勢を調整して撮像指示を入力すると、撮像センサ105は、印刷物が含まれる撮像画像を撮像する。この印刷物は上記の通り、付加情報多重化装置102が上記のようにして配列CODEの各要素を多重化した印刷画像が印刷された印刷物である。この印刷物はプリンタ103によって得られる。
付加情報分離装置106は、撮像センサ105によって撮像された印刷物の撮像画像から付加情報を抽出するものであるが、本実施形態ではその前に、該撮像画像から付加情報の分離が可能であるか否かを判断し、可能であればその旨を報知する。付加情報分離装置106が撮像画像から抽出した付加情報は端子107を介してスピーカー108やディスプレイ109に対して送出される。付加情報が音声情報であれば、端子107を介してスピーカー108に対して送出されるし、付加情報が画像情報(文字情報を含む)であれば、端子107を介してディスプレイ109に対して送出される。また、付加情報は、端子107を介して外部の機器に対して送信されても良い。すなわち、付加情報の出力先については特定の出力先に限るものではない。
第二撮像センサ111は、撮像センサ105とは別途設けられた撮像センサであり、印刷物の撮影は第二撮像センサ111を用いて行っても良い。
次に、付加情報分離装置106の構成例について、図7のブロック図を用いて説明する。
ずれ検出部701には、撮像センサ105から送出された印刷物の撮像画像が入力される。撮像センサ105の解像度(撮像センサ解像度)は、印刷物を作成するプリンタ103の解像度(プリンタ解像度)と同等以上であることが好ましい。当然、正確に印刷物のドットの点在情報を読み込む為には、サンプリング定理により、撮像センサ解像度はプリンタ解像度よりも2倍以上であることが必要になる。しかし、同等以上であれば、正確でなくとも、ある程度ドットが点在していることを判別することは可能である。本実施形態では、説明を簡単にするために、プリンタ解像度と撮像センサ解像度とが同一解像度であるものとする。
ずれ検出部701は、撮像センサ105から送出された撮像画像の幾何学的ずれを検出する。プリンタ出力、カメラ付携帯端末104による撮影を経ている為に、ずれ検出部701に入力される撮像画像は、付加情報多重化装置102が生成した印刷画像とは幾何学的に大きくずれている場合がある。そこで、ずれ検出部701では、印刷物と印刷物以外との境界線(印刷物境界線)をエッジ検出にて検出する。
印刷物の撮像画像の一例を図8に示す。プリンタ解像度と撮像センサ解像度とが同一解像度であれば、プリンタ103の記録媒体上記録時の斜行、及びカメラ付携帯端末104を印刷物にかざす時のずれ等により、画像の回転方向(傾き)が補正すべき大きな要因となる。そのため、この印刷物境界線を検出することにより、どの程度回転方向でずれが生じているのかが判断できる。
ブロック化部702は、撮像画像上に、ブロック化部201によるブロックサイズよりも小さい矩形領域(ブロック)を、一定間隔(スキップ画素数)を空けて複数箇所に設定する(ブロック化)。図5の場合、ブロック化部201によるブロックサイズはN画素×M画素であるから、ブロック化部702が撮像画像上に一定間隔を空けて複数箇所に設定するブロックのサイズP画素×Q画素は、P≦N及びQ≦Mという条件を満たす必要がある。
すなわち、多重化時のN画素×M画素のブロックと想定される領域内に、P画素×Q画素のブロックがひとつ内包するようにブロック化する。上記の「スキップ画素数」は、「水平方向にN画素、垂直方向にM画素」が基本となるが、ずれ検出部701が検出したずれ量をブロック数で割り出し、1ブロックあたりのずれ量を演算して、スキップ画素数に加算して補正する必要がある。
空間フィルタA703は、その各係数が、量子化条件Aの量子化閾値θ1の周期に適応して作成されるものである。量子化条件Aが図6(a)の量子化閾値マトリクスである場合、空間フィルタA703は、図9(a)に示す各係数から成るマトリクスである。空白のマスには「0」の値を有する係数が設定されているものとする。
空間フィルタB704は、その各係数が、量子化条件Bの量子化閾値θ1の周期に適応して作成されるものである。量子化条件Bが図6(b)の量子化閾値マトリクスである場合、空間フィルタB704は、図9(b)に示す各係数から成るマトリクスである。空白のマスには「0」の値を有する係数が設定されているものとする。
空間フィルタA703、空間フィルタB704の何れでも、それぞれのマスが1画素に対応しており、5画素×5画素の中央部のマスにおける係数が着目画素に適用され、その周辺部の24個のマスにおける係数が該着目画素の周辺の24画素に適用される。図9(a)、(b)から明らかな様に、これらの空間フィルタはエッジ強調のフィルタになっている。しかも、その強調するエッジの方向性と多重化した時の量子化閾値θ1の方向性とが一致している。つまり、図9(a)の空間フィルタは図6(a)の量子化閾値マトリクスに、図9(b)の空間フィルタは図6(b)の量子化閾値マトリクスに一致するように作成する。
フィルタリング部705aは、ブロック化部702による各ブロック内の各画素に対して空間フィルタA703を適用することで、該ブロック内のエッジが強調されたものを、該ブロックとは別途生成する。例えば、着目画素に空間フィルタA703を適用する場合、着目画素の画素値に対して空間フィルタA703の中央部のマスに記載の係数値「2」を乗じ、着目画素の周辺画素に対しては空間フィルタA703において対応する位置のマスに記載の係数値を乗じる。これにより、着目画素を中心とする5画素×5画素のサイズを有する領域内の各画素の画素値に対して空間フィルタA703において対応する位置の係数値を乗じることができる。そして5画素×5画素のそれぞれの係数値が応じられた画素値の合計値を求め、該合計値を着目画素の画素値とする。このように、ブロック内の各画素を着目画素としてこのような処理を行うことで、該ブロック内のエッジが強調されたものを、該ブロックとは別途生成することができる。
フィルタリング部705bは、ブロック化部702による各ブロック内の各画素に対して空間フィルタB704を適用することで、該ブロック内のエッジが強調されたものを、該ブロックとは別途生成する。ブロックに対する空間フィルタB704の適用については、ブロックに対する空間フィルタA703の適用と同様にして行う。
間引き部A706は、フィルタリング部705aによって生成されたブロック(該ブロック内の各画素の画素値を変換値と呼称する場合がある)に対して、ある規則性に基づく間引き処理を行う。間引き部B707は、フィルタリング部705bによって生成されたブロック(該ブロック内の各画素の画素値を変換値と呼称する場合がある)に対して、ある規則性に基づく間引き処理を行う。本実施形態では、この間引きの規則性を周期性と位相とに分離して処理する。すなわち、間引き部A706及び間引き部B707では間引きの周期性が異なっていて、各々、位相を変化させた複数の間引き処理を実行する。間引き方法については後述する。
変換値加算部708aは、間引き部A706による間引き後のブロック内の各画素の画素値(変換値)を、位相毎にそれぞれ加算する。変換値加算部708bは、間引き部B707による間引き後のブロック内の各画素の画素値(変換値)を、位相毎にそれぞれ加算する。この間引き処理及び変換値の加算処理は、空間フィルタで強調した所定周波数ベクトルの電力を抽出することに相当する。
分散値部709aは、変換値加算部708aが位相毎に加算した加算結果の分散を算出する。分散値部709bは、変換値加算部708bが位相毎に加算した加算結果の分散を算出する。
判定部710は、分散値部709a及び分散値部709bによって求められたそれぞれの周期性における分散値に基づいて、多重化された符号を判定する。
図10の二次元の周波数領域において、横軸は水平方向の周波数、縦軸は垂直方向の周波数を示している。中心となる原点は直流成分を示し、原点から遠ざかるにつれて、高周波域となる。図10中の円は、誤差拡散によるカットオフ周波数を示している。誤差拡散法のフィルタ特性は、低周波域がカットオフされたHPF(ハイパスフィルタ)の特性を示し、そのカットオフされる周波数は、対象画像の濃度に応じて変化する。
本実施形態の場合、量子化閾値の変更により、量子化後に発生する周波数特性が変化する。即ち、図6(a)の量子化閾値マトリクスにおける量子化閾値の変更では図10の直線A(周波数ベクトルA)上に、図6(b)の量子化閾値マトリクスにおける量子化閾値の変更では図10の直線B(周波数ベクトルB)上に大きなパワースペクトルが生じる。分離時には、この大きなパワースペクトルが発生する周波数ベクトルを検出することが多重化信号の判定につながる。そこで、各々の周波数ベクトルを個別に強調、抽出することが必要になる。
図9(a)のマトリクス及び図9(b)のマトリクスは、特定の周波数ベクトルの方向性を有するHPFに相当する。すなわち、図9(a)の空間フィルタでは、直線A上の周波数ベクトルを強調することが可能になり、また、図9(b)の空間フィルタでは、直線B上の周波数ベクトルを強調することが可能になる。例えば、図6(a)の量子化閾値マトリクスによる量子化条件の変更により、図10の直線Aの周波数ベクトル上に大きなパワースペクトルが発生したと仮定する。その場合、図9(a)の空間フィルタではパワースペクトルの変化量が増幅するが、図9(b)の空間フィルタでは、ほとんど増幅されない。すなわち、複数の空間フィルタを並列にフィルタリングした場合には、周波数ベクトルが一致した空間フィルタ時のみ増幅し、それ以外のフィルタでは増幅がほとんど無い為、いかなる周波数ベクトル上に大きなパワースペクトルが発生しているかが容易にわかる。
制御部790は、付加情報分離装置106を構成する各機能部の動作制御を行うと共に、付加情報分離装置106が行うものとして後述する各処理を実行若しくは制御するためのものである。制御部790は、ROM791、CPU792、RAM793を有する。
CPU792は、ROM791やRAM793に格納されているコンピュータプログラムやデータを用いて処理を実行する。これによりCPU792は、付加情報分離装置106を構成する各部の動作制御を行うと共に、付加情報分離装置106が行うものとして後述する各処理を実行若しくは制御する。
ROM791には、付加情報分離装置106の設定データや、付加情報分離装置106が行うものとして後述する各処理をCPU792に実行若しくは制御させるためのコンピュータプログラムやデータが格納されている。
RAM793は、CPU792が各種の処理を実行する際に用いるワークエリアを有する。
次に、間引き部A706、間引き部B707、変換値加算部708a、変換値加算部708b、分散値部709a、分散値部709b、判定部710、制御部790によって行われる処理について、同処理のフローチャートを示す図11を用いて説明する。なお、図11のフローチャートに従った処理はブロックごとに行われるものである。
<ステップS1101>
CPU792は、以降の処理で用いる変数iの値を0に初期化する。
<ステップS1102>
CPU792は、以降の処理で用いる変数jの値を0に初期化する。
<ステップS1103>
CPU792は、フィルタリング部705a(フィルタリング部705b)によって生成されたブロックに対する間引きの規則性の因子、すなわち、「周期性」及び「位相」の2因子を決定する。以降では、変数iを周期性に関する変数として用い、変数jを位相に関する変数として用いる。周期性及び位相の条件は、番号(ナンバー)により管理されていて、周期性ナンバー(以下No.と略す)がi、位相No.がjである間引き方法の因子を設定する。
<変数iの値が「0」の場合>
間引き部A706は、周期性No.がi、位相No.がjである間引き方法の因子に基づく間引き方法でもって、フィルタリング部705aからのブロックに対する間引き処理を行う。
<変数iの値が「1」の場合>
間引き部B707は、周期性No.がi、位相No.がjである間引き方法の因子に基づく間引き方法でもって、フィルタリング部705bからのブロックに対する間引き処理を行う。
<ステップS1104>
<変数iの値が「0」の場合>
変換値加算部708aは、間引き部A706によって間引き処理がなされたブロック内の各画素の画素値の合計値を求め、該求めた合計値を配列TOTAL[i][j]に登録する。
<変数iの値が「1」の場合>
変換値加算部708bは、間引き部B707によって間引き処理がなされたブロック内の各画素の画素値の合計値を求め、該求めた合計値を配列TOTAL[i][j]に登録する。
<ステップS1105>
CPU792は、変数jの値を1つインクリメントする。
<ステップS1106>
CPU792は、変数jの値が、「位相を変化させて間引き処理をする回数J」未満であるのか否かを判断する。この判断の結果、j<Jであれば、処理はステップS1103に戻り、j≧Jであれば、処理はステップS1107に進む。
<ステップS1107>
<変数iの値が「0」の場合>
分散値部709aは、配列TOTAL[i][j]の分散値を求める。すなわち、配列TOTAL[i][j]に登録されている各合計値が、位相の差により、どの程度ばらついているのかを評価する。そして分散値部709aは、該求めた分散値を配列B[i]に登録する。
<変数iの値が「1」の場合>
分散値部709bは、配列TOTAL[i][j]の分散値を求め、該求めた分散値を配列B[i]に登録する。
<ステップS1108>
CPU792は、変数iの値を1つインクリメントする。
<ステップS1109>
CPU792は、変数iの値が「周期性を変化させて間引き処理をする回数I」(本実施形態ではI=2)未満であるのか否かを判断する。この判断の結果、i<Iであれば、処理はステップS1102に戻り、i≧Iであれば、処理はステップS1110に進む。
<ステップS1110>
判定部710は、B[0]〜B[I−1]のうち最大値B[i’]を特定し、i’を変数imaxに代入する。
<ステップS1111>
判定部710は、周期性No.がimaxである符号を多重化された符号であると判定する。
図11のフローチャートに従った処理について具体例を挙げて説明すべく、I=2、J=4の例について説明する。図12、13は、ブロックサイズをP=Q=16とした時の間引き方法をテーブル形式にて示したもので、それぞれ、周期性No.=0の時の間引き方法(間引き部A706に相当)、周期性No.=1の時の間引き方法(間引き部B707に相当)を示している。図12,13の何れでも、それぞれのマスが1画素分を表している。なお、図12,13ではP=Qとしているが、P≠Qであっても良いし、矩形でなくても良い。
また、マスの中に記している値は、該マスに対応する画素が間引かれるときの位相No.を示している。例えば、「0」が記されているマスに対応する画素は、j=0のときに間引き対象となる画素である。すなわち、図12、図13ともに、位相は4種であり、位相No.が0〜3の時の間引き方法に相当する。
図12、図13に示した周期性については、それぞれ、図12は図6(a)の、図13は図6(b)の周期性に一致している。上記にて説明したように、図6(a)、(b)では共に、斜線部分のマスの並びで量子化値「1」の画素が並ぶことになる。その為、例えば、多重化時に量子化条件Aであったブロックの場合には、図6(a)の周期性で量子化値「1」が並びやすくなる。然るに、適合した空間フィルタを用いてフィルタリングすると、更にその周波数成分が増幅され、図12の周期性で間引きして上記の合計値を求めると、その合計値の分散値は大きくなる。しかし、多重化時に量子化条件Aであったブロックを、適合しない空間フィルタを用いてフィルタリングし、なおかつ、図13の周期性で間引きした場合には、上記の合計値の分散値は小さくなる。すなわち、量子化値の周期性と間引きの周期性が異なる為、間引きの位相の違いによる上記の合計値は平均的になり、ばらつきは小さくなる。反対に、多重化時に量子化条件Bであったブロックでは、図12の周期性で間引きすると、分散値は小さくなり、図13の周期性で間引きすると、分散値は大きくなる。
図4のフローチャートに上記の例を当てはめると、ビット値bit=0の場合には量子化条件Aを設定し、ビット値bit=1の場合には量子化条件Bを設定している。然るに、周期性No.=0の分散値が大きいときにはビット値bit=0、逆に周期性No.=1の分散値が大きいときにはビット値bit=1と判断できる。すなわち、量子化条件と、空間フィルタ特性、及び、間引き条件の周期性を関連づけることで、容易に多重化、及び、分離が実現できる。なお、上記の説明では、周期性No.は0と1の2種であり、ブロック内の多重化符号は1ビットであったが、周期性No.は3種類以上であっても良いし、多重化符号は2ビット以上であっても構わない。当然、量子化条件の種類と、空間フィルタの種類、間引き条件の周期性No.の種類(上記のIの値)とは一致する。
本実施形態では、直交変換による量子化条件の規則性に対応した周波数の電力値の比較をしなくても、容易に符号を分離できる。しかも、実空間領域の処理の為、非常に高速に分離処理が実現できる。
なお、上記の量子化条件A、B、空間フィルタA、B、間引き部A706、B707のそれぞれはあくまでも一例であり、これに限るものではない。すなわち、他の周期性を持たせても良いし、空間フィルタのタップ数、間引きのブロックサイズ等は前述した例よりも大きくても小さくても構わない。
また、図11の動作手順では、説明を簡単にするために、周期性No.に対応する変数i、及び位相No.に対応する変数jの繰り返し処理にて説明している。しかし、実際には、P画素×Q画素のブロック内の画素アドレスによる繰り返し処理の方が実現が容易である。すなわち、図12、図13に示したように、ブロック内の各画素アドレスに対して周期性No.、及び位相No.の2種の情報をテーブルとして予め格納しておき、対応した周期性No.、及び位相No.の各々の変数に対して画素値を加算していく方法である。この方法では、P画素×Q画素分を処理するだけで、並列に、周期性No.、及び位相No.の各集合の合計値を算出することができる。
また、図11の動作手順では、空間フィルタを用いたフィルタリング後の間引きした画素値の合計値の分散値を算出し、分散値の大小比較により、符号を判定していたが、これに限るものではない。例えば、分散値を用いない評価関数の比較による方法も考えられる。すなわち、間引きした画素値の合計値の偏りは、位相をずらした際に、ひとつの位相の時だけ値が突出しやすいため、「ばらつき度合い」が評価できれば良い。例えば、ばらつき度合いを評価するには、分散値以外に次の評価関数が考えられる。
(1) 間引きした画素値の合計値の最大値と最小値の差分
(2) 間引きした画素値の合計値の最大値と2番目に大きな値との差分、もしくは、最小値と2番目に小さな値との差分のどちらか
(3) 間引きした画素値の合計値によるヒストグラムを作成した時の、前後の順番の差分の最大値
また、上記の(1)、(2)、(3)の評価関数は絶対的な差分値であるが、これらの差分値と画素値、もしくは画素値や変換値の総和等との相対的な比率も評価関数として用いることができる。また、量子化値は2値化を例にして説明したが、これには限らない。
このように本実施形態によれば、画像をM画素×N画素よりなるブロック単位で量子化条件を変更し、該量子化条件に従って画像を量子化することにより画像に対して所定の情報を埋め込むことができる。その為、例えば直交変換をして情報を埋め込む方法に比べて、画質劣化を抑制し、かつ高速に、かつ埋め込まれた情報が精度よく抽出できるように画像に対して情報を埋め込むことができる。
ここで、上記のようにして動作するカメラ付携帯端末104は、撮像画像から付加情報の抽出を行う前に、印刷物から付加情報が抽出可能であるのか否かを判断し、抽出可能である場合に、その旨をユーザに通知する。
例えば、図14(a)に示す如く、ユーザPがカメラ付携帯端末104を用いて印刷物1401を撮影する場合を考える。ユーザPはカメラ付携帯端末104のディスプレイ109(カメラ付携帯端末104においてユーザPと対面する面に設けられているとする)に表示されている撮像画像を閲覧しながら撮像センサ105の視野内に印刷物1401を納めようとする。図14(a)において点線の矢印は視野範囲を表している。しかし、ユーザPはディスプレイ109を見やすくするために、印刷物1401に対してカメラ付携帯端末104を手前に傾けてしまうことが多い。カメラ付携帯端末104の印刷物1401に対する姿勢が図14(a)の如く状態でカメラ付携帯端末104が撮像した撮像画像は図16(a)の如く、撮像画像上部に近いほど遠距離の対象、撮像画像下部に近いほど近距離の対象、が撮像された画像となる。
然るに、カメラ付携帯端末104から見て印刷物1401の手前側に焦点を合わせて撮像すると、撮像画像の下部付近はピントがあっているものの、撮像画像の上部付近ではぼけたものとなる。このような撮像画像では、撮像画像の下部付近からは付加情報の抽出が可能であるものの、上部付近ではぼけているため、撮像画像上の全ての付加情報を抽出することは困難若しくは不可能となる。
逆に、カメラ付携帯端末104から見て印刷物1401の奥側に焦点を合わせて撮像すると、撮像画像の上部付近はピントがあっているものの、撮像画像の下部付近ではぼけたものとなる。このような撮像画像では、撮像画像の上部付近からは付加情報の抽出が可能であるものの、下部付近ではぼけているため、撮像画像上の全ての付加情報を抽出することは困難若しくは不可能となる。
撮像画像上で印刷物1401の何れの箇所でもボケが発生しないようにするため(図16(b)のような撮像画像を撮像するため)には、図14(b)に示す如く、カメラ付携帯端末104の撮像方向が印刷物1401の面と略直交するようにカメラ付携帯端末104の姿勢を調整する必要がある。
このように、撮像画像中の印刷物の何れの箇所でも付加情報が抽出可能であるか否かを付加情報の抽出前に判断するためには、撮像画像中に写っている印刷物の範囲の端部にボケがないか(端部付近から位置情報が抽出できたか)を判断すればよい。そこで本実施形態に係るカメラ付携帯端末104は、印刷物の撮像画像から付加情報を抽出する前に、図15のフローチャートに従った処理を実行する。
<ステップS1501>
撮像センサ105は撮像動作を行うことで撮像画像を生成する。撮像センサ105による撮像は、カメラ付携帯端末104に備わっている不図示のスイッチやボタン、ディスプレイ109がタッチパネル画面であれば該タッチパネル画面、をユーザが操作することに応じたCPU792による制御によって行われる。もちろん、このような指示の入力なしに、撮像センサ105が連続的に撮像している各フレームの画像を以下の処理で用いる撮像画像としても構わない。
ここでは、撮像センサ105は、図5に例示した印刷画像(位置情報及び付加情報が多重化された印刷画像)が印刷された印刷物の撮像画像を撮像したとする。
<ステップS1502>
付加情報分離装置106は、図11のフローチャートに従った処理を含む上記の情報抽出処理を行うことで、ステップS1501で生成された撮像画像上の複数の規定箇所から位置情報を抽出する。
例えば、図5の印刷画像が印刷された印刷物の撮像画像の場合、該撮像画像を複数の分割領域に分割し、左上隅の分割領域から右下隅の分割領域に向けてラスタスキャン順に各分割領域をスキャンして位置情報の抽出処理を行う。そして、ある分割領域から「印刷画像に多重化した位置情報のうち最小値を表す位置情報」(図5の例では「0000」)が抽出された場合、この抽出処理は終了させる。そして次に、右下隅の分割領域から左上隅の分割領域に向けてラスタスキャン順に各分割領域をスキャンして位置情報の抽出処理を行う。そして、ある分割領域から「印刷画像に多重化した位置情報のうち最大値を表す位置情報」(図5の例では「1000」)が抽出された場合、この抽出処理は終了させる。
なお、分割領域のサイズは、上記のN画素×M画素のサイズよりも十分に大きくても良く、例えば、撮像画像を4等分したそれぞれを分割領域としても良い。また、位置情報は、隣接する4つの位置情報多重化ブロックのそれぞれから符号(1ビットの値)を抽出し、該抽出した符号を位置情報多重化ブロックの位置に応じて並べることで得られる。
<ステップS1503>
CPU792は印刷画像に多重化した位置情報のうち最小値を表す位置情報(図5の例では「0000」)、印刷画像に多重化した位置情報のうち最大値を表す位置情報(図5の例では「1000」)の両方をステップS1502で抽出できたか否かを判断する。図5の場合、位置情報「0000」、位置情報「1000」の両方が抽出できたということは、撮像画像の左上隅と右下隅とが位置情報の抽出が可能となる程度の画質であること、すなわち、撮像画像の左上隅と右下隅とにピントが合っていることを意味する。この場合、撮像画像に多重化されたそれぞれの付加情報の抽出は可能となる。一方、位置情報「0000」、位置情報「1000」の一方でも抽出できなかったということは、撮像画像の左上隅と右下隅の少なくとも一方が位置情報の抽出が可能となる程度の画質ではないことを意味する。すなわち、撮像画像の左上隅と右下隅の少なくとも一方にピントが合っていないことを意味する。この場合、撮像画像から抽出できない付加情報が存在する可能性がある。
然るに、印刷画像に多重化した位置情報のうち最小値を表す位置情報、印刷画像に多重化した位置情報のうち最大値を表す位置情報の両方をステップS1502で抽出した場合には処理はステップS1504に進む。一方、印刷画像に多重化した位置情報のうち最小値を表す位置情報、印刷画像に多重化した位置情報のうち最大値を表す位置情報のうち少なくとも一方を抽出していない場合には、処理はステップS1501に戻る。
<ステップS1504>
CPU792は、撮像画像から付加情報の抽出(分離)が可能である旨を示すメッセージをユーザに通知する。例えば、撮像画像から付加情報の抽出(分離)が可能である旨を示すメッセージ文や、撮像画像から付加情報の抽出(分離)が可能である旨を示すメッセージを表現する画像(アニメーション画像を含む)をディスプレイ109に表示する。また例えば、撮像画像から付加情報の抽出(分離)が可能である旨を示すメッセージを表す音声をスピーカー108から音声出力する。また、カメラ付携帯端末104が撮像画像から付加情報の抽出(分離)が可能である状態(位置、姿勢)を維持するために、カメラ付携帯端末104の状態(位置、姿勢)を変化させないようユーザに通知するメッセージを出力してもよい。なお、メッセージの通知方法はこれに限るものではなく、単にLED等の発光部品を規定の発光パターンで発光させても良い。また、ネットワークを介して上記のメッセージ文やメッセージを表現する画像(アニメーション画像を含む)、音声情報としてのメッセージを適当な送信先に送信しても良い。また、さらに位置情報を取得し、取得した位置情報の数に応じてプログレスバーの進行状況の変化を画面に表示する事も考えられる。
また、ステップS1503においては、画像の上部と下部において位置情報が抽出されたか判定しているが、互いに異なる端部に対応する領域の組み合わせは、これに限らない。例えば右部と左部について判定を行ってもよい。また3箇所以上等、所定の複数個所について判定を行い、当該所定の複数個所について位置情報を取得可能と判定された場合に、ステップS1504における通知を行っても良い。
さらに、画像の上部と下部の両方に対して判定を行う場合に限らず、例えば上部のみについて判定を行ってもよい。即ち、ユーザがスマートフォン等の撮像装置をユーザ側に傾けて撮影した場合には、画像の下部よりも上部において位置情報が抽出できない可能性が高い。そのため、上部において位置情報が抽出できた場合には下部においても抽出できている可能性が高いため、上部についてのみ判定を行っても良い。
また、ステップS1502、S1503においては、印刷物に多重化された付加情報とは異なる位置情報について取得、判定を行っていたが、これに限らない。例えば上記付加情報について、取得、判定が行われても良い。
図17(a)に、ステップS1504においてディスプレイ109に表示されるメッセージの一例を示している。図17(a)では、撮像画像から付加情報の抽出(分離)が可能であるから該抽出を開始し、現在付加情報の抽出中である旨を示すメッセージがディスプレイ109に表示されている。
図17(b)に、ステップS1504においてスピーカー108から出力されるメッセージの一例を示している。図17(b)では、撮像画像から付加情報の抽出(分離)が可能であるから該抽出を開始し、現在付加情報の抽出中である旨を示すメッセージが音声としてスピーカー108から音声出力されている。
なお、図15のフローチャートでは、印刷画像に多重化した位置情報のうち最小値を表す位置情報、印刷画像に多重化した位置情報のうち最大値を表す位置情報のうち少なくとも一方を抽出していない場合には、ユーザに何も通知していない。しかし、このような場合においても、対応するメッセージ(他メッセージ)をユーザに通知しても良い。すなわち、撮像画像から付加情報の抽出(分離)が不可能である旨を示すメッセージ文や、撮像画像から付加情報の抽出(分離)が不可能である旨を示すメッセージを表現する画像(アニメーション画像を含む)をディスプレイ109に表示する。また、撮像画像から付加情報の抽出(分離)が不可能である旨を示すメッセージを表す音声をスピーカー108から音声出力する。なお、メッセージの通知方法はこれに限るものではなく、単にLED等の発光部品を規定の発光パターンで発光させても良い。また、ネットワークを介して上記のメッセージ文やメッセージを表現する画像(アニメーション画像を含む)、音声情報としてのメッセージを適当な送信先に送信しても良い。
また、印刷画像に多重化した位置情報のうち最小値を表す位置情報、印刷画像に多重化した位置情報のうち最大値を表す位置情報のうち少なくとも一方を抽出していない場合、カメラ付携帯端末104の姿勢を正す必要がある。例えば、カメラ付携帯端末104と印刷物1401との間の姿勢関係が図14(a)に示すようなものであった場合、これを図14(b)に示す如く姿勢関係に正す必要がある。そこで、このような場合には、カメラ付携帯端末104の姿勢を正すべく移動を促す旨のメッセージをユーザに通知しても良い。
また、印刷画像に多重化した位置情報のうち最小値を表す位置情報、印刷画像に多重化した位置情報のうち最大値を表す位置情報のうち少なくとも一方を抽出していない場合、カメラ付携帯端末104の姿勢をどのように正すのかを通知するようにしても良い。例えば、最小値を表す位置情報、最大値を表す位置情報のうち前者の抽出には成功し、後者の抽出には失敗しているとする。この場合、その一因として、撮像画像の上部付近に写っている印刷物の部分についてはピントが合っていて、撮像画像上の下部付近に写っている印刷物の部分についてはピントは合っていないことが考えられる。然るにこのような場合には、カメラ付携帯端末104の上部を軸にしてカメラ付携帯端末104を傾斜させることで撮像画像上の下部付近に写っている印刷物の部分にピントが合うようにすることを、文字列やアイコンなどを用いてユーザに通知すればよい。逆に、最小値を表す位置情報、最大値を表す位置情報のうち前者の抽出には失敗し、後者の抽出には成功しているとする。この場合、その一因として、撮像画像の下部付近に写っている印刷物の部分についてはピントが合っていて、撮像画像上の上部付近に写っている印刷物の部分についてはピントは合っていないことが考えられる。然るにこのような場合には、カメラ付携帯端末104の下部を軸にしてカメラ付携帯端末104を傾斜させることで撮像画像上の上部付近に写っている印刷物の部分にピントが合うようにすることを、文字列やアイコンなどを用いてユーザに通知すればよい。
このように、メッセージの種別やその通知方法には様々なものが考えられる。また、上記の幾つかのメッセージを組み合わせて使用しても構わないし、通知方法も2種類以上を併用して使用しても構わない。
なお、上記の例では、カメラ付携帯端末104の縦方向の傾きに注目しており、そのため、ブロック501及びこれに隣接する位置情報多重化ブロックから成るセット、ブロック503及びこれに隣接する位置情報多重化ブロックから成るセット、のそれぞれの位置情報を抽出するようにした。しかし、横方向の傾きに対応するためには、これらの2セットに、ブロック504及びこれに隣接する位置情報多重化ブロックから成るセットを加えた3セットの位置番号を取得すればよい。
このように、撮像画像からどの位置情報(どの位置のブロック(セット))を読み出すのかについては、用途に応じて異なる。然るに、例えば、撮像画像からどの位置情報を読み出すのかをカメラ付携帯端末104の姿勢などの状況に応じて複数種保持しておき、現在のカメラ付携帯端末104の状況に応じた位置情報を読み出すようにしても構わない。
また、位置情報として適用可能な情報は、上記のように、セット単位での通し番号に限るものではなく、他の情報を採用しても構わない。例えば、XY座標のブロック数や画素数、距離を用いても良いし、付加情報の内容と埋め込み位置とを紐づけて記憶しておき、付加情報の内容で埋め込み位置を特定することも出来る。
このように本実施形態によれば、付加情報を埋め込んだ印刷物の撮像画像から該付加情報を読み出す前に、該印刷物上の異なる位置に埋め込まれた符号を抽出して解析することで、該読み出しが可能か否かを付加情報抽出の前にユーザに通知することができる。
[第2の実施形態]
以下では、第1の実施形態の差分について重点的に説明し、以下で特に触れない限りは、第1の実施形態と同様であるものとする。第1の実施形態では、位置情報及び付加情報の両方を同じ方法で印刷画像に多重化しているが、本実施形態では、位置情報の多重化については、位置情報が第1の実施形態よりも高速に読み出されるように多重化する。
例えば、位置情報を多重化する際に、第1の実施形態では図18(a)に示す如く、N画素×M画素のサイズのブロック単位で多重化していた。これに対し、本実施形態では、位置情報を多重化する際には、図18(b)に示す如く、N’(N’>N)画素×M’(M’>M)画素のサイズのブロック単位で多重化する。位置情報多重化ブロックのサイズを大きくすることで位置情報を高速に読みだすことが出来る。また印刷時に多重化周期が劣化しにくいというメリットもある。ブロックサイズが大きい為、例え位置情報多重化ブロックの一部の多重化周期が劣化したとしても、その他の部分の多重化周期が残っている為、位置情報を読み出すことが出来る。また同様に位置情報多重化ブロックの多重化周期の解像度を低くしたり、多重化周期の強度を強くしても同様の効果が実現可能である。多重化周期の解像度を低くすると印刷時に多重化周期が劣化しにくい。また4値の誤差拡散処理を想定し、多重化強度の強い場所は4値で表現し、多重化強度の低い場所は2値で表現することで印刷時に多重化周期の強度が高い場所は劣化しにくい。
なお、本実施形態では、位置情報多重化ブロックのサイズを付加情報多重化ブロックのサイズよりも大きくすることで、位置情報を多重化する際に付加情報と比較して撮影時に劣化しにくい、または印刷時に読みだしやすい多重化方法を使用した。ここで、その特性を生かしその他の方法に使用できる。
例えば、印刷画像に対して位置情報に加えてユニークなID番号を多重化して印刷する。そしてこのような印刷物の撮影時には1回目は位置情報とID番号と付加情報を読み出し、カメラ付携帯端末104に記憶する。2回目に読みだす際はID番号を読み出した時にカメラ付携帯端末104に記憶済みのID番号と比較し、一致した場合は対応する記憶済みの付加情報を取得する事でより高速に付加情報の読み出しができる。
また、印刷画像に対して位置情報に加えてバージョン番号を多重化すると、付加情報分離装置のバージョンに応じて処理フローを切り替える事が出来る。例えば、バージョン番号1.00が埋め込まれた印刷物とバージョン番号2.00が埋め込まれた印刷物とが存在し、バージョン番号1.00の印刷物をバージョン番号1.00の付加情報分離装置が撮像したとする。このとき、この付加情報分離装置は撮像画像からバージョン番号を読み出すのであるが、該読み出したバージョン番号は付加情報分離装置のバージョン番号と同じ1.00であるから以降の付加情報抽出処理を行う。一方、バージョン番号2.00の印刷物をバージョン番号1.00の付加情報分離装置が撮像したとする。このとき、付加情報分離装置は撮像画像からバージョン番号を読み出すが、該読み出したバージョン番号は付加情報分離装置のバージョン番号とは異なる2.00であるから「読み出し不可能」等を通知するためのメッセージを通知して以降の処理は行わない。
(その他の実施例)
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。