画像処理装置及びプログラム
【課題】二次元符号に合成する対象の画像の配置位置を効率よく決定する。
【解決手段】画像処理装置10の合成画像生成部162は、二次元符号の画像と指定された対象画像とを合成した画像である合成画像を生成する。二次元符号の画像は、予め設定された単位量の情報を表す領域である単位情報領域を複数含む。合成画像生成部162の調整処理部1620は、二次元符号の画像における複数の単位情報領域の位置に基づいて、二次元符号の画像において対象画像を配置する位置を決定し、決定した位置に対象画像を配置することで合成画像を生成する。
【解決手段】画像処理装置10の合成画像生成部162は、二次元符号の画像と指定された対象画像とを合成した画像である合成画像を生成する。二次元符号の画像は、予め設定された単位量の情報を表す領域である単位情報領域を複数含む。合成画像生成部162の調整処理部1620は、二次元符号の画像における複数の単位情報領域の位置に基づいて、二次元符号の画像において対象画像を配置する位置を決定し、決定した位置に対象画像を配置することで合成画像を生成する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、画像処理装置及びプログラムに関する。
【背景技術】
【0002】
QRコード(登録商標)などの誤り訂正機能を有する二次元符号に、人間が識別できる画像を合成する技術が開発されている。
【0003】
例えば、特許文献1には、QRコード内に、QRコードの規格で定められているデータ復元機能の範囲を超えない範囲で任意の画像情報を配置する技術が開示されている。特許文献1に記載の技術では、QRコードにおいて、規格で定められている位置検出パターン、位置検出パターン分離パターン、タイミングパターン、形式情報、型番情報、クワイエットゾーンの情報と重ならない位置に画像情報を合成したQRコードを生成する。
【0004】
特許文献2には、QRコードの画像データと合成の対象となる画像データとを合成して可視画像付きQRコードの画像データを作成し、当該QRコードの画像データの読み取り検査を行うとともに使用者による視認性に関する評価の入力を受け付けて、双方の条件のよいものを出力させる技術が開示されている。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2008−262521号公報
【特許文献2】特開2007−43456号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
ところで、二次元符号の画像に他の画像を合成する場合、二次元符号の表す情報が復元可能となる合成対象の画像の配置位置を効率よく見つけることが望まれる。そして、二次元符号には、予め設定された単位量の情報を表す領域を複数含み、この単位量の情報ごとに符号化及び復号の処理を行うものがある。
【0007】
本発明の目的は、二次元符号に他の画像を合成する場合に、二次元符号において予め設定された単位量の情報を表す領域の位置を考慮しない技術と比較して、二次元符号の表す情報が復元可能となる画像の配置位置をより効率よく決定できる画像処理装置及びプログラムを提供することである。
【課題を解決するための手段】
【0008】
請求項1に係る発明は、二次元符号の画像と指定された対象画像とを合成した画像である合成画像を生成する生成手段、を備え、前記二次元符号の画像は、予め設定された単位量の情報を表す領域である単位情報領域を複数含み、前記生成手段は、前記二次元符号の画像における前記複数の単位情報領域の位置に基づいて、前記二次元符号の画像において前記対象画像を配置する位置を決定し、決定した位置に前記対象画像を配置することで前記合成画像を生成する、ことを特徴とする画像処理装置である。
【0009】
請求項2に係る発明は、請求項1に係る発明において、前記生成手段は、前記合成画像において前記複数の単位情報領域のうち前記対象画像の領域との間に重複部分を有する単位情報領域の数が最小となるように、前記対象画像を配置する位置を決定する。
【0010】
請求項3に係る発明は、請求項1又は2に係る発明において、前記生成手段は、前記合成画像において、前記対象画像の外周のうち予め設定された部分と、前記複数の単位情報領域のうちの1つの外周のうち予め設定された部分と、が重なるように前記対象画像を配置する位置を決定する。
【0011】
請求項4に係る発明は、請求項3に係る発明において、前記合成画像に基づいて前記二次元符号が表す情報を復元できるか否かを判定する判定手段、をさらに備え、前記生成手段は、さらに、前記合成画像に含まれる前記二次元符号が表す情報を復元できないと前記判定手段が判定した場合に、前記対象画像を縮小して新たな前記合成画像を生成する。
【0012】
請求項5に係る発明は、請求項4に係る発明において、前記生成手段は、前記対象画像を縮小して新たな前記合成画像を生成するときに、前記合成画像において、前記対象画像の外周のうち予め設定された部分の位置を固定して前記対象画像を縮小する。
【0013】
請求項6に係る発明は、請求項5に係る発明において、前記生成手段は、前記対象画像を縮小して新たな前記合成画像を生成するときに、前記対象画像が前記複数の単位情報領域のうちの1つの領域内に収まるまで前記対象画像を縮小する。
【0014】
請求項7に係る発明は、請求項4から6のいずれか1項に係る発明において、前記生成手段は、さらに、前記二次元符号の画像において前記対象画像を配置する位置について利用者からの指定を受け付けた場合に、前記利用者により指定された位置に前記対象画像を配置して前記合成画像を生成し、当該合成画像について前記二次元符号が表す情報を復元できないと前記判定手段が判定した場合に、前記利用者により指定された位置および前記二次元符号の画像における前記複数の単位情報領域の位置に基づいて決定した位置に前記対象画像を配置することで新たな前記合成画像を生成する。
【0015】
請求項8に係る発明は、請求項7に係る発明において、前記生成手段は、前記利用者により指定された位置に前記対象画像を配置して生成した前記合成画像について前記二次元符号が表す情報を復元できないと前記判定手段が判定した場合に、前記新たな合成画像において、前記対象画像の外周のうち予め設定された部分と、当該予め設定された部分を含む前記単位情報領域の外周のうち予め設定された部分と、が重なるように、前記対象画像を配置する位置を決定する。
【0016】
請求項9に係る発明は、請求項8に係る発明において、前記対象画像の外周のうち予め設定された部分は、前記対象画像が前記利用者により指定された位置から前記二次元符号の画像の中心に向かう方向に移動して前記新たな合成画像が生成されるように設定される。
【0017】
請求項10に係る発明は、請求項1から9のいずれか1項に係る発明において、前記生成手段は、さらに、前記対象画像が縦長か否かに基づいて、前記合成画像における前記二次元符号の画像の回転角度を決定する。
【0018】
請求項11に係る発明は、二次元符号の画像と指定された対象画像とを合成した画像である合成画像を生成する生成ステップ、をコンピュータに実行させ、前記二次元符号の画像は、予め設定された単位量の情報を表す領域である単位情報領域を複数含み、前記生成ステップにおいて、前記二次元符号の画像における前記複数の単位情報領域の位置に基づいて、前記二次元符号の画像において前記対象画像を配置する位置を決定し、決定した位置に前記対象画像を配置することで前記合成画像を生成する、ことを特徴とするプログラムである。
【発明の効果】
【0019】
請求項1又は11に係る発明によると、二次元符号の画像に対象画像を合成する場合に、二次元符号に含まれる複数の単位情報領域の位置を考慮しない技術と比較して、二次元符号の表す情報が復元可能となる対象画像の配置位置をより効率よく決定できる。
【0020】
請求項2に係る発明によると、二次元符号の画像に対象画像を配置した合成画像において、対象画像の配置によって情報に損失が生じる単位情報領域の数を最小にすることができる。
【0021】
請求項3に係る発明によると、本構成を有さない場合と比較して、対象画像の配置によって情報に損失が生じる単位情報領域の数が少なくなる。
【0022】
請求項4に係る発明によると、合成画像に含まれる二次元符号の表す情報を復元できない場合に、合成画像において、対象画像の配置により情報の損失が生じる領域の面積を小さくすることができる。
【0023】
請求項5に係る発明によると、対象画像の外周のうち予め設定された部分と、二次元符号の画像に含まれる単位情報領域のうちの1つの外周のうち予め設定された部分と、の間の位置関係を保持したまま対象画像を縮小できる。
【0024】
請求項6に係る発明によると、対象画像の配置により情報の損失が生じる単位情報領域を1つにすることができる。
【0025】
請求項7に係る発明によると、利用者に指定された位置を考慮した、合成画像を生成できる。
【0026】
請求項8に係る発明によると、本構成を有さない場合と比較して、対象画像の配置によって情報に損失が生じる単位情報領域の数が少なくなる。
【0027】
請求項9に係る発明によると、本構成を有さない場合と比較して、合成画像が復元可能となる可能性が高くなる。
【0028】
請求項10に係る発明によると、本構成を有さない場合と比較して、対象画像と二次元符号に含まれる単位情報領域とが共通の形状を有する可能性が高くなる。
【図面の簡単な説明】
【0029】
【図1】画像処理装置の概略構成の例を示す図である。
【図2】QRコード及びQRコードに合成される対象画像の例を示す図である。
【図3】合成画像の例を示す図である。
【図4】処理部が行う処理の手順の例を示すフローチャートである。
【図5】合成画像調整処理の手順の例を示すフローチャートである。
【図6】QRコードの構成の例を説明するための図である。
【図7】対象画像調整処理の手順の例を示すフローチャートである。
【図8A】対象画像調整処理の様子の例を説明するための図である。
【図8B】対象画像調整処理の様子の例を説明するための図である。
【図8C】対象画像調整処理の様子の例を説明するための図である。
【図8D】対象画像調整処理の様子の例を説明するための図である。
【図9】QRコード調整処理の手順の例を示すフローチャートである。
【図10】QRコード回転処理の手順の例を示すフローチャートである。
【図11】マスクパターン変更処理の手順の例を示すフローチャートである。
【図12】誤り訂正レベル変更処理の手順の例を示すフローチャートである。
【図13】合成画像調整処理の手順の他の例を示すフローチャートである。
【図14】合成画像調整処理の手順のさらに他の例を示すフローチャートである。
【図15】複数の対象画像を用いて合成画像を生成する際に実行される処理の手順の例を示すフローチャートである。
【図16】コンピュータのハードウエア構成の例を示すブロック図である。
【発明を実施するための形態】
【0030】
図1は、本発明の1つの実施形態の例の画像処理装置の概略構成の例を示す図である。画像処理装置10は、画像入力部12、ユーザ入力部14、処理部16、記憶部18、及び出力部20を備える。
【0031】
画像入力部12は、処理対象の画像データの入力を受け付けて処理部16に渡す。画像入力部12が受け付ける画像データは、例えば、色などを表す数値を有する画素からなるデジタル画像データである。画像入力部12は、例えば、スキャナなどの一般的な画像生成装置から画像データの入力を受け付ける。また例えば、画像入力部12は、インターネットやLAN(Local Area Network)などのネットワーク(図示しない)を介して画像処理装置10と接続されたコンピュータなどの情報処理装置から画像データの入力を受け付けてもよい。なお、以下の説明では、処理部16で処理される画像データを単に「画像」と呼ぶ。
【0032】
ユーザ入力部14は、ユーザによる指示の入力を受け付けて処理部16に渡す。ユーザ入力部14は、例えば、キーボード及びマウスなどの一般的な入力装置であってよい。
【0033】
処理部16は、情報を二次元の情報に符号化して生成される二次元符号の画像と、人間が識別可能な画像と、を合成した画像に関する処理を行う。処理部16は、二次元符号生成部160、合成画像生成部162、及び復号処理部164を備える。
【0034】
二次元符号生成部160は、符号化の対象として指定された情報を予め設定された手順に従って符号化して二次元符号を生成する。二次元符号生成部160は、二次元符号を生成すると、当該二次元符号と、当該二次元符号が表す情報と、を対応づけて記憶部18に記憶させる。なお、以下では、二次元符号の一種であるQRコードを例にとり各種の実施形態の例を説明する。QRコードは、JIS及びISOによって規格化された二次元符号である(JIS−X−0510,ISO/IEC18004)。本例の二次元符号生成部160は、JIS又はISOによる規格で定められた手順に従って符号化の対象の情報を符号化してQRコードを生成する。図2(a)に、QRコードの一例を示す。
【0035】
図1の説明に戻り、合成画像生成部162は、二次元符号生成部160が生成した二次元符号の画像と、当該二次元符号の画像に合成する対象の画像として指定された画像(以下、「対象画像」と呼ぶ)と、を合成した画像を生成する。以下では、二次元符号の画像と対象画像とを合成した画像を「合成画像」と呼ぶ。合成画像生成部162は、二次元符号の画像上に対象画像を配置した画像を合成画像として生成する。
【0036】
例えば、図2(a)のQRコード(二次元符号の画像)と合成される対象画像として、図2(b)に示す画像が指定されたとする。このとき、合成画像生成部162は、図2(a)のQRコード上に図2(b)の対象画像を配置し、例えば図3に示すような合成画像を生成する。
【0037】
対象画像としては、例えば、画像が表す内容を人間が識別可能であり、かつ、二次元符号が表す情報と関連のある画像が指定される。これにより、合成画像を視認したユーザは、二次元符号が表す情報に関連する情報を対象画像から認識する。
【0038】
再び図1を参照し、合成画像生成部162は、調整処理部1620を備える。調整処理部1620は、二次元符号の画像における対象画像の位置を決定あるいは変更したり、対象画像の大きさを決定あるいは変更したりする。調整処理部1620は、また、合成画像に含まれる二次元符号の画像の生成に用いられた設定情報と異なる設定情報を用いて、当該二次元符号が表す情報と同一の情報を符号化して新たな二次元符号を生成することを二次元符号生成部160に依頼することもある。調整処理部1620は、例えば、後述の復号処理部164において合成画像の復号に失敗した場合に、上記で例示した処理の少なくともいずれかを行い、復号に成功する合成画像の生成を試みる。
【0039】
復号処理部164は、合成画像生成部162が生成した合成画像を復号する。復号処理部164は、二次元符号生成部160において二次元符号の生成に用いられた符号化の手順に対応する復号の手順として予め設定された手順に従って復号処理を行う。二次元符号としてQRコードが生成される本例では、QRコードの復号の手順として規格化された手順に従って復号処理を行えばよい。復号処理部164は、合成画像の復号の成否を合成画像生成部162に対して通知する。
【0040】
記憶部18は、処理部16における処理に必要な情報を記憶する記憶装置である。記憶部18は、例えば、処理部16の処理対象の画像、処理部16が行う処理で用いられる変数の値、及び処理部16が行う処理の手順を記述したプログラムなどを記憶する。また、記憶部18は、処理部16における処理の結果を記憶することもある。
【0041】
出力部20は、処理部16による処理の結果を出力する。例えば、出力部20は、処理部16による処理の結果として生成された画像を表示装置(図示しない)に対して出力し、当該画像を表示装置に表示させる。あるいは、例えば、出力部20は、処理結果の画像をネットワーク(図示しない)に対して出力することで、ネットワークを介して画像処理装置10に接続された装置に処理結果の画像を送ってもよい。
【0042】
以下、画像処理装置10の処理の例を説明する。
【0043】
図4は、処理部16が行う処理の手順の例を示すフローチャートである。
【0044】
図4を参照し、処理部16の二次元符号生成部160は、まず、符号化対象の情報を取得する(ステップS1)。ステップS1では、二次元符号生成部160は、例えば、ユーザ入力部14を介して、ユーザが入力した符号化対象の情報を取得する。あるいは、例えば、二次元符号生成部160は、記憶部18に記憶されている情報のうち、ユーザ入力部14を用いてユーザが指定した情報を符号化対象として取得してもよい。
【0045】
次に、二次元符号生成部160は、符号化に用いる設定情報を取得する(ステップS3
)。二次元符号生成部160は、例えば、ユーザ入力部14を介して、ユーザが入力した設定情報を取得する。あるいは、例えば、設定情報の初期値を記憶部18に記憶させておき、ステップS3において、この初期値を記憶部18から取得してもよい。
【0046】
QRコードを生成する本例では、ステップS3で、設定情報として、QRコードの誤り訂正レベル、マスクパターン、及び型番を指定する情報を取得する。
【0047】
QRコードは、その一部が損傷していても情報を復元できる機能を有する。誤り訂正レベルは、この復元機能によって復元可能な損傷の度合いを表す。QRコードの規格により、L(7%),M(15%),Q(25%),H(30%)の4段階の誤り訂正レベルが定められている。例えば誤り訂正レベルLのQRコードであれば、QRコードの面積に対する損傷部分の面積の割合が7%以下であればQRコードが表す情報を復元可能である。
【0048】
また、QRコードの画像における情報の偏りを低減するために、QRコードの生成において、マスクをかける処理が行われる。マスクパターンは、このマスクをかける処理に用いられる。QRコードの規格により8種類のマスクパターンA,B,C,D,E,F,G,Hが定義されている。
【0049】
型番は、QRコードの大きさを表し、QRコードが表現可能な情報量に対応する。QRコードの規格により、1〜40までの型番が定義されており、型番の数値が大きい程QRコードが表現可能な情報量は多い。なお、QRコードの型番は、「バージョン」と呼ばれることもある。
【0050】
符号化対象の情報及び符号化に用いる設定情報を取得すると、二次元符号生成部160は、QRコードを生成する(ステップS5)。二次元符号生成部160は、符号化対象の情報を符号化して、設定情報で指定された誤り訂正レベル、マスクパターン、及び型番のQRコードを生成する。二次元符号生成部160は、生成したQRコードを合成画像生成部162に渡す。
【0051】
合成画像生成部162は、QRコードに合成される対象画像を取得する(ステップS2)。対象画像は、例えば、画像入力部12を介して取得される。このとき、ユーザは、例えばユーザ入力部14を介して、画像入力部12から合成画像生成部162に渡される画像を対象画像として用いることを指示する。あるいは、合成画像生成部162は、記憶部18に記憶された画像のうち、ユーザ入力部14を介してユーザが対象画像として指定した画像を記憶部18から取得してもよい。
【0052】
以上で説明したQRコードの生成(ステップS1,S3,S5)と対象画像の取得(ステップS2)とは、いずれか一方を先に実行してもよいし、両方を並行して実行してもよい。
【0053】
合成画像生成部162は、QRコードと対象画像とを取得すると、対象画像をQRコード上に配置した画像を生成することで合成画像を生成する(ステップS7)。ステップS7では、QRコード上でユーザが指定した位置に対象画像を配置した合成画像を生成すればよい。ユーザによる対象画像の位置の指定は、例えば、QRコード及び対象画像を出力部20により表示画面(図示しない)に表示させ、ユーザにマウスなどの入力装置によって対象画像をQRコード上に配置させることで、ユーザ入力部14を介して受け付ける。
【0054】
合成画像を生成すると、合成画像生成部162は、合成画像の調整処理を行う(ステップS9)。ステップS9では、合成画像が復号可能か否かを確認し、復号可能でなければ、調整処理部1620によって対象画像の位置及び大きさやQRコードの設定などを調整して復号可能な合成画像の生成を試みる。本例では、合成画像調整処理の結果、復号可能な合成画像を生成できたか否かを表す戻り値(「復号可」又は「復号不可」)が得られる。ステップS9の処理の詳細は後述する。
【0055】
ステップS9の後、処理部16は、出力部20を用いて、合成画像及び復号の可否を出力する(ステップS11)。ステップS11では、例えば、合成画像調整処理の結果の戻り値が「復号可」であれば、合成画像調整処理で生成された合成画像及び当該合成画像が復号可能である旨を出力する。また、戻り値が「復号不可」であれば、ステップS7で生成された元の合成画像及び当該合成画像が復号不可である旨を出力する。
【0056】
ステップS11の後、図4の例の手順の処理は終了する。
【0057】
なお、図4の例の手順の処理では、符号化対象の情報を取得してQRコードの生成を行うが、他の処理の例では、すでに生成されたQRコードを取得して合成画像を生成してもよい。例えば、図4のステップS1,S3,S5の処理を行う代わりに、画像入力部12あるいは記憶部18からQRコードの画像を取得し、このQRコードを用いてステップS7以降の処理を行ってもよい。
【0058】
図5は、合成画像調整処理(図4のステップS9)の手順の例を示すフローチャートである。図4のステップS9が開始されると、図5の例の手順の処理が開始される。
【0059】
図5を参照し、まず、復号処理部164は、合成画像を復号する(ステップS90)。復号処理部164は、ステップS90の復号処理の成否を合成画像生成部162に対して通知する。復号処理部164は、例えば、復号処理によって合成画像から抽出した情報と、当該合成画像に含まれる二次元符号が表す情報として記憶部18に記憶された情報と、が一致すれば復号に成功したと判定する。一方、復号処理によって合成画像から抽出した情報と、前述のように記憶部18に記憶された情報と、が一致しない場合、又は、復号処理を行っても合成画像から情報を抽出できない場合、復号処理部164は、合成画像の復号に失敗したと判定する。
【0060】
復号に成功した場合(ステップS92でYES)、戻り値として「復号可」を設定し(ステップS96)、図5の例の手順は終了する。
【0061】
復号に失敗した場合(ステップS92でNO)、合成画像生成部162の調整処理部1620は、対象画像の調整を行う(ステップS94)。ステップS94では、QRコードにおいてデータを表す単位である「コード語」の配置に応じて、QRコードにおける対象画像の位置及び大きさが調整される。1つのコード語は1バイトのデータを表す。コード語によって符号化対象の情報が表される。また、QRコードは、誤り訂正のために用いられるコード語も含む。QRコードに含まれるコード語の数及び配置は、QRコードの型番及び誤り訂正レベルの組合せに応じて、規格により定義されている。
【0062】
図6に、型番が「1」、誤り訂正レベルが「L」であるQRコードのコード語の配置を模式的に示す。図6において、斜線を引いた部分にコード語が配置される。図6の斜線部に含まれる長方形のそれぞれが1つのコード語に対応する。ただし、図6において、符号a1,a2で示す2つの長方形及び符号b1,b2で示す2つの長方形は、それぞれ、2つの長方形が1つのコード語に対応する。図6の例のQRコードは、26個のコード語を含む。このうち、19個は符号化対象の情報を表すためのコード語であり、7個は誤り訂正用のコード語である(これらの区別は図示しない)。図6の例のようなコード語の配置に応じて、このQRコードに合成される対象画像の位置及び大きさの調整が行われる。
【0063】
なお、以下の説明において、対象画像は矩形を有するものとし、QRコードにおける「対象画像の位置」とは、その矩形の4つの角それぞれのQRコードにおける座標を意味するものとする。また、QRコードにおける座標は、図6に例示するように、回転角度が0°であるQRコードの左上の角を原点(0,0)とし、左右方向の軸をx軸、上下方向の軸をy軸とした座標系の座標であるとする。なお、QRコードの「回転角度」は、QRコードに含まれる3つの切り出しシンボル(ファインダパターン、位置検出パターン)d1,d2,d3の位置関係から認識されるものである。図6の例のように、QRコードの左上、右上、及び左下の隅に切り出しシンボルd1,d2,d3が配置されている状態が回転角度0°と定められている。
【0064】
図7に、対象画像調整処理(図5のステップS94)の詳細手順の例を示す。図5のステップS94が開始されると、図7の例の手順の処理が開始される。
【0065】
調整処理部1620は、現在の対象画像のQRコードにおける位置を記憶部18に記憶させて保持する(ステップS940)。本例では、対象画像の左上、右上、左下、及び右下の角の座標(以下、それぞれ、「左上座標」、「右上座標」、「左下座標」、及び「右下座標」と呼ぶ)をQRコードにおける位置として保持する。
【0066】
次に、調整処理部1620は、現在の対象画像の左上座標を含むコード語の左上の角の座標に、対象画像の左上座標を移動させる(ステップS942)。ステップS942での移動処理により、対象画像の領域との間に重複部分を有するコード語の数が最小となる位置に対象画像が移動される。以下、図8A及び図8Bを参照して、ステップS942の具体例を説明する。図8Aにおいて、対象画像Iの左上座標は、コード語c1の領域内に含まれる。この例では、ステップS942において、対象画像Iの左上座標の値をコード語c1の左上の角の座標の値に設定することで、対象画像Iの左上の角をコード語c1の左上の角まで移動させる。対象画像Iの左上座標の変化に伴い、右上座標、左下座標、及び右下座標のそれぞれの値も、左上座標の値の変化と同様に変化させる。つまり、右上座標、左下座標、及び右下座標のそれぞれを、破線矢印で表す左上座標の移動の方向と平行な方向に同じ距離だけ移動させる。ステップS942における対象画像の移動の結果の例を図8Bに示す。図8Aでは、対象画像Iは9個のコード語の領域との間に重複部分を有するのに対し、図8Bでは、対象画像Iは、4個のコード語の領域との間に重複部分を有する。対象画像Iの領域との間に重複部分を有するコード語の数が少ない程、対象画像によってデータの損失が生じるコード語の数が少なくなり、合成画像の復号が成功する可能性が高くなる。
【0067】
再び図7を参照し、ステップS942の結果の合成画像に対して、復号処理部164は復号処理を行う(ステップS944)。
【0068】
復号に成功すれば(ステップS946でYES)、戻り値が「復号可」に設定され(ステップS948)、図7の例の手順の処理は終了する。
【0069】
復号に失敗した場合(ステップS946でNO)、調整処理部1620は、対象画像が1つのコード語の領域内にあるか否かを判定する(ステップS950)。この判定は、例えば、対象画像の左上座標、右上座標、左下座標、及び右下座標のすべてが1つのコード語の領域内に存在するか否かを調べることで行えばよい。
【0070】
対象画像が1つのコード語の領域内にない場合(ステップS950でNO)、調整処理部1620は、対象画像の右下座標を含むコード語の領域との間の重複がなくなるまで、対象画像の左上座標を固定して対象画像を縮小する(ステップS956)。上述の図8Bの例を参照し、ステップS942の結果の合成画像において、対象画像Iは、1つのコード語の領域内ではなく、4つのコード語の領域との間に重複部分を有する。このため、ステップS950でNO判定され、ステップS956で、対象画像Iの右下座標を含むコード語c2の領域との間の重複がなくなるまで、対象画像Iは縮小される。対象画像Iの縮小において、左上座標は固定される。図8Bの例の合成画像においてステップS956の処理を行った結果の例を図8Cに示す。図8Cでは、対象画像Iとコード語c2の領域との間に重複部分は存在しない。
【0071】
ステップS956の後、処理はステップS944に戻り、合成画像の復号、及び復号の成否の判定(ステップS946)が行われる。
【0072】
ステップS950において対象画像が1つのコード語の領域内にある(YES)と判定された場合、調整処理部1620は、保持しておいた元の位置に対象画像の位置を戻す(ステップS952)。ステップS952では、対象画像の位置だけでなく、大きさも元に戻される。その後、戻り値が「復号不可」に設定され(ステップS954)、図7の例の手順の処理は終了する。ステップS950でYESと判定される場合、1つのコード語の領域内に収まるまでコード語を縮小しても合成画像の復号に失敗することを意味するため、戻り値が「復号不可」に設定される。
【0073】
図7の例の手順の処理において、ステップS944,S946,S950,S956を含むループ処理により、合成画像の復号に成功するか、あるいは、対象画像が1つのコード語の領域内に収まるまで、対象画像の縮小が繰り返される。上述の図8Cの例を再び参照し、ステップS956の縮小処理の結果の図8Cの合成画像の復号に失敗した場合(ステップS946でNO)、対象画像Iが2つのコード語c1,c3の領域との間に重複部分を有することから、ステップS950でNO判定されて、対象画像Iは、さらに、右下座標がコード語c3の領域外となるまで縮小される(ステップS956)。この縮小の結果の例を図8Dに示す。図8Dでは、対象画像Iは、1つのコード語c1の領域内に収まっている。図8Dの例の合成画像について復号に失敗すると(ステップS946でNO)、対象画像が1つのコード語の領域内にあることから、対象画像Iは元の位置及び大きさに戻され(図8A参照)、戻り値は「復号不可」に設定される(ステップS950でYES,S952,S954)。
【0074】
なお、図7の例の手順では、対象画像の左上座標を基準として対象画像を移動させ、縮小処理を行うが、左上座標の代わりに、右上座標、左下座標、及び右下座標のいずれかを基準として同様の処理を行ってもよい。対象画像の移動(ステップS942)においては、基準の座標と同様の位置にあるコード語の角(対象画像の右上座標が基準であれば、コード語の右上の角)の座標へ対象画像の基準の座標を移動させればよい。縮小処理(ステップS)では、基準の座標を固定し、基準の座標の対角線上の座標(右上座標が基準であれば、左下座標)を含むコード語の領域と対象画像との間の重複がなくなるまで対象画像を縮小すればよい。
【0075】
図7の例の手順において、対象画像の左上、右上、左下、及び右下のいずれの座標を基準とするかは、予め決定しておいてよい。あるいは、例えば、移動処理(ステップS942)において、対象画像をQRコードの中心に向かって移動させるように、QRコードの中心座標に最も近いコード語の領域内にある対象画像の座標を基準とするようにしてもよい。QRコードは、その中心付近のコード語に損失が生じている場合の方が、中心付近の他の部分のコード語に損失が生じている場合と比較して強い復元能力を有する傾向がある。このため、対象画像をQRコードの中心付近に配置すると、合成画像が復元可能となる可能性が高くなる。
【0076】
また、図7の例の手順の処理において、戻り値が「復号不可」となる場合に、基準の座標を変えて図7の例の手順の処理を繰り返してもよい。例えば、戻り値が「復号可」になるまで、左上、右上、左下、及び右下の座標のそれぞれを基準として図7の例の手順の処理を行う。左上、右上、左下、及び右下のすべてについて図7の例の手順の処理を行っても戻り値が「復号不可」であれば、そのまま対象画像調整処理を終了する。なお、基準とする座標を変更して処理を繰り返す場合、基準の座標の順番は任意に設定しておいてよい。
【0077】
また、上述の例の移動処理(ステップS942)では、対象画像の基準の座標の値を、対応するコード語の角の座標に設定する。他の例では、必ずしも、対象画像の基準の座標とコード語の角の座標とを等しくしなくてもよい。例えば、対象画像がその外周付近に余白部分を有し、この余白部分が透明である(つまり、対象画像をQRコードに重畳させた時に余白部分に覆われるQRコードの画素が合成画像上に現れる)場合に、その余白部分の大きさを考慮して対象画像の移動先を決定してもよい。例えば、対象画像の基準の座標から対角線方向の余白部分の大きさを求め、対象画像の基準の座標(左上、右上、左下、又は右下)を、対応するコード語の角の座標から求めた余白部分の大きさだけ当該コード語の外側にずらした位置に移動させてもよい。
【0078】
再び図5を参照し、対象画像調整処理(ステップS94,図7)が終了すると、その戻り値が「復号可」であるか否かが判定される(ステップS98)。戻り値が「復号可」であれば、ステップS100を行わずに図5の例の合成画像調整処理は終了する。戻り値が「復号不可」であれば、QRコードの調整が行われる(ステップS100)。
【0079】
図9に、QRコード調整処理(図5のステップS100)の詳細手順の例を示す。図5のステップS100の処理が開始されると、図9の例の手順の処理が開始される。
【0080】
図9を参照し、調整処理部1620は、合成画像に含まれるQRコードを回転させることで合成画像が復号可能となるか否かを判定する(ステップS102)。QRコード回転処理の結果、復号不可であれば(ステップS104でNO)、マスクパターンを変更したQRコードを含む合成画像が復号可能であるか否かを判定する(ステップS106)。マスクパターン変更処理の結果、復号不可であれば(ステップS108でNO)、さらに、調整処理部1620は、誤り訂正レベルを変更したQRコードを含む合成画像が復号可能であるか否かを判定する(ステップS110)。誤り訂正レベル変更処理が終了すると、図9の例の手順の処理は終了する。
【0081】
図9の例の手順において、QRコード回転処理(ステップS102)の結果、合成画像が復号可能となれば(ステップS104でYES)、ステップS106以下の処理を行わずに処理を終了する。また、マスクパターン変更処理(ステップS106)の結果、合成画像が復号可能となれば(ステップS108でYES)、誤り訂正レベル変更処理(ステップS110)を行わずに処理を終了する。これらの場合、図9の例のQRコード調整処理の結果の戻り値は「復号可」となる。誤り訂正レベル変更処理(ステップS110)を実行した場合、誤り訂正レベル変更処理の戻り値が、図9の例のQRコード調整処理の戻り値となる。
【0082】
以下、図10〜図12を参照し、図9の例のQRコード回転処理(ステップS102)、マスクパターン変更処理(ステップS106)、及び誤り訂正レベル変更処理(ステップS110)のそれぞれの詳細手順の例を説明する。
【0083】
図10は、QRコード回転処理の詳細手順の例を示すフローチャートである。図9の例の手順のステップS102の処理が開始されると、図10の例の手順の処理が開始される。
【0084】
まず、調整処理部1620は、現在の合成画像及び当該合成画像に含まれるQRコードの現在の回転角度を記憶部18に記憶させて保持する(ステップS1020)。
【0085】
そして、調整処理部1620は、現在の合成画像に含まれるQRコードの回転角度を+90°だけ進める(ステップS1022)。言い換えると、現在のQRコードの回転角度に対して90°加算する。ただし、現在のQRコードの回転角度が270°であり加算の結果が360°となる場合は、ステップS1022の結果の回転角度を0°とする。
【0086】
ステップS1022の結果の回転角度がステップS1020で保持された元の回転角度と同じであれば、調整処理部1620は、回転角度が一巡したと判定し(ステップS1024でYES)、現在の合成画像を元の合成画像に戻す(ステップS1034)。元の合成画像とは、ステップS1020で記憶部18に記憶された合成画像である。そして、戻り値が「復号不可」に設定され(ステップS1036)、処理は終了する。ステップS1024でYES判定されるのは、回転角度が一巡しても復号可能な合成画像が得られない場合であるため、戻り値は「復号不可」に設定される。
【0087】
ステップS1022の結果の回転角度が保持された元の回転角度と異なっていれば、調整処理部1620は、回転角度は一巡していないと判定し(ステップS1024でNO)、ステップS1022の結果の回転角度のQRコードを含む合成画像を生成する(ステップS1026)。ステップS1026では、合成画像に含まれるQRコードを90°回転させて、ステップS1022の結果の回転角度のQRコードとする。ステップS1026で、合成画像における対象画像の位置及び大きさは変更されない。合成画像における背景であるQRコードを回転させるだけである。
【0088】
ステップS1026の回転処理後のQRコードを含む合成画像は、復号処理部164により復号される(ステップS1028)。
【0089】
合成画像の復号に失敗すれば(ステップS1030でNO)、ステップS1022以下の処理を繰り返し、復号に成功すれば(ステップS1030でYES)、戻り値を「復号可」に設定して(ステップS1032)処理を終了する。
【0090】
図11は、マスクパターン変更処理の詳細手順の例を示すフローチャートである。図9の例の手順のステップS106の処理が開始されると、図11の例の手順の処理が開始される。
【0091】
まず、調整処理部1620は、現在の合成画像及び当該合成画像に含まれるQRコードのマスクパターンを記憶部18に記憶させて保持する(ステップS1060)。
【0092】
次に、調整処理部1620は、現在のQRコードのマスクパターンをアルファベット順に1つ進めたマスクパターンを求める(ステップS1062)。QRコードの規格では、上述のとおり、利用可能なマスクパターンとしてA〜Hの8種類が定義されている。よって、ステップS1062の結果は、現在のマスクパターンを表すアルファベットの次のアルファベットとなる。なお、現在のマスクパターンが「H」であれば、ステップS1062の結果を「A」とする。
【0093】
ステップS1062の結果のマスクパターンがステップS1060で保持したマスクパターンと同一であれば、調整処理部1620は、マスクパターンが一巡したと判定し(ステップS1064でYES)、合成画像を、ステップS1060で保持した元の合成画像に戻す(ステップS1074)。そして、戻り値を「復号不可」に設定して(ステップS1076)、処理を終了する。ステップS1064でYES判定されるのは、いずれのマスクパターンを用いても復号可能な合成画像が得られない場合であるため、戻り値は「復号不可」に設定される。
【0094】
ステップS1062の結果のマスクパターンがステップS1060で保持したマスクパターンと同一でなければ、調整処理部1620は、マスクパターンが一巡していないと判定し(ステップS1064でNO)、ステップS1062の結果のマスクパターンのQRコードを含む合成画像を生成する(ステップS1066)。ステップS1066で、調整処理部1620は、まず、ステップS1062の結果のマスクパターンのQRコードの生成を二次元符号生成部160に依頼する。この依頼を受けた二次元符号生成部160は、依頼されたマスクパターンを用いて、新たなQRコードを生成する。この新たなQRコードは、マスクパターンの他の条件(符号化対象の情報、型番、及び誤り訂正レベルなど)については元のQRコードと同様である。二次元符号生成部160は、この新たなQRコードを合成画像生成部162に渡し、合成画像生成部162は、この新たなQRコードを含む合成画像を生成する。なお、ステップS1066で生成される合成画像において、背景となるQRコードが新たなQRコードに置き換えられるだけで、対象画像の位置及び大きさは変更されない。
【0095】
ステップS1066の後、復号処理部164により、ステップS1066で生成された合成画像の復号が行われる(ステップS1068)。
【0096】
合成画像の復号に失敗すれば(ステップS1070でNO)、ステップS1062以下の処理が繰り返される。合成画像の復号に成功すれば(ステップS1070でYES)、戻り値は「復号可」に設定され(ステップS1072)、図11の例の手順の処理は終了する。
【0097】
図12は、誤り訂正レベル変更処理の詳細手順の例を示すフローチャートである。図9の例の手順のステップS110の処理が開始されると、図12の例の手順の処理が開始される。
【0098】
まず、調整処理部1620は、現在の合成画像及び当該合成画像に含まれるQRコードの誤り訂正レベルを記憶部18に記憶させて保持する(ステップS1102)。
【0099】
次に、調整処理部1620は、誤り訂正レベルをL(7%)に設定したQRコードの生成を二次元符号生成部160に対して依頼する。この依頼を受けて、二次元符号生成部160は、誤り訂正レベルが「L」であり、誤り訂正レベルの他の条件は現在のQRコードと同様である新たなQRコードを生成して合成画像生成部162に渡す。合成画像生成部162は、合成画像における対象画像の位置及び大きさを変更せず、QRコードを新たなQRコードに置き換えた合成画像を生成する(以上、ステップS1104)。なお、現在のQRコードの誤り訂正レベルがLである場合、ステップS1104は省略してよい。
【0100】
その後、復号処理部164により、合成画像の復号が行われる(ステップS1106)。
【0101】
合成画像の復号に成功すれば(ステップS1108でYES)、戻り値が「復号可」に設定されて(ステップS1110)処理は終了する。
【0102】
合成画像の復号に失敗すれば(ステップS1108でNO)、合成画像に含まれるQRコードの誤り訂正レベルが最高レベルであるH(30%)に設定されているか否かが判定される(ステップS1112)。
【0103】
誤り訂正レベルがHでなければ(ステップS1112でNO)、調整処理部1620は、現在の誤り訂正レベルよりも一段階だけ高い誤り訂正レベルのQRコードを新たに二次元符号生成部160に生成させ、この新たなQRコードを含む合成画像を生成する(ステップS1118)。誤り訂正レベルは、前述したように、L,M,Q,Hの順で高くなる。なお、ステップS1118における新たなQRコードの生成及び当該QRコードを含む合成画像の生成は、ステップS1104を参照して説明した処理と同様の手順で行えばよい。ステップS1118で生成された合成画像に対して、復号処理(ステップS1106)及び復号処理の成否の判定(ステップS1108)が行われる。
【0104】
誤り訂正レベルがHである場合(ステップS1112でYES)、調整処理部1620は、合成画像を、ステップS1102で保持した元の合成画像に戻す(ステップS1114)。そして、戻り値を「復号不可」に設定して(ステップS1116)、処理を終了する。ステップS1112でYES判定されるのは、QRコードの誤り訂正レベルが最高のHであっても合成画像の復号に失敗する場合であるため、戻り値は「復号不可」に設定される。
【0105】
以上、図10〜図12を参照し、QRコード調整処理(図5のステップS100,図9)で行われる3種類の処理の例を説明した。QRコード調整処理において、これらの3種類の処理(QRコード回転処理、マスクパターン変更処理、及び誤り訂正レベル変更処理)の実行の順番は、図9に例示する順番に限られない。これら3種類の処理は、どのような順番で実行してもよい。
【0106】
以上で説明した実施形態の処理の例では、QRコードにおいてユーザが指定した位置に対象画像を配置した合成画像の復号に失敗すると(図5のステップS92でNO)、まず対象画像調整処理(図5のステップS94,図7)を行い、対象画像調整処理によっても復号に成功する合成画像が得られなかった場合(図5のステップS98でNO)に、QRコード調整処理(図5のステップS100,図9)を行う。他の処理の例では、図5の例の手順において、対象画像調整処理(ステップS94)とQRコード調整処理(ステップS100)とを互いに入れ替えてもよい。
【0107】
また、以上で説明した実施形態の処理の例では、QRコードの調整において、回転角度、マスクパターン、及び誤り訂正レベルの変更が行われる。他の処理の例では、さらに、QRコードの型番を変更してもよい。
【0108】
図13に、QRコードの型番を変更する処理を含む場合の合成画像調整処理の手順の例を示す。図13の例の手順の処理は、例えば、図4の例の手順のステップS9の処理が開始されたときに、図5の例の合成画像調整処理の代わりに実行される。図13において、図5の例の手順と同様の処理ステップには図5と同様の符号を付し、その詳細な説明を省略する。
【0109】
図13を参照し、まず、合成画像の復号処理(ステップS90)が行われ、復号に成功すれば(ステップS92でYES)、戻り値に「復号可」が設定され(ステップS96)て処理は終了する。
【0110】
復号に失敗すると(ステップS92でNO)、調整処理部1620は、現在の合成画像及び当該合成画像に含まれるQRコードの型番を記憶部18に記憶させて保持する(ステップS93)。
【0111】
次に、調整処理部1620は、対象画像調整処理(ステップS94)を行う。ステップS94では、図7を参照して上記で説明した処理を行えばよい。対象画像調整処理の戻り値が「復号可」であれば(ステップS98でYES)、ステップS100以降の処理を行わずに終了し、「復号可」でなければ(ステップS98でNO)、QRコード調整処理(ステップS100)を行う。ステップS100のQRコード調整処理では、図9〜図12を参照して上記で説明したのと同様の処理を行えばよい。つまり、ここでは、回転角度、マスクパターン、及び誤り訂正レベルの変更処理が行われる。
【0112】
QRコード調整処理の戻り値が「復号可」であれば(ステップS130でYES)、ステップS132以降の処理を行わずに終了する。一方、QRコード調整処理の戻り値が「復号可」でなければ(ステップS130でNO)、合成画像に含まれるQRコードの型番が最大値であるか否かを判定する(ステップS132)。QRコードの型番は、上述のとおり、規格により1〜40まで定義されているので、ステップS132では、QRコードの型番が40であればYES判定されてステップS134に進み、QRコードの型番が40未満であればNO判定されてステップS136に進む。
【0113】
ステップS134で、調整処理部1620は合成画像を元に戻し、その後、処理を終了する。
【0114】
ステップS136では、調整処理部1620は、合成画像に含まれるQRコードの型番を1だけ増加させた型番のQRコードを二次元符号生成部160に新たに生成させ、この新たなQRコードを含む合成画像を生成する(ステップS136)。ステップS136で新たに生成されるQRコードにおいて、型番の他の条件(符号化対象の情報、回転角度、マスクパターン、及び誤り訂正レベルなど)は元のQRコードと同様である。また、ステップS136で生成される合成画像において、対象画像の位置及び大きさは、元の合成画像と同様であってよい。
【0115】
ステップS136で生成された、型番を1だけ増加させたQRコードを含む合成画像について、対象画像調整処理(ステップS94)以下の処理が行われる。
【0116】
図14に、合成画像調整処理の手順のさらに他の例を示す。QRコードに含まれるコード語は、回転角度が0°又は180°の状態において縦長の形状を有し、回転角度が90°又は270°の状態に置いて横長の形状を有する傾向がある。図14の例の合成画像調整処理では、対象画像の縦横比に応じて、QRコードの回転角度を設定する。図14の例の手順の処理は、例えば、図4のステップS9が開始された時に開始される。
【0117】
図14を参照し、まず合成画像の復号が行われる(ステップS90)。
【0118】
復号に成功すれば(ステップS92でYES)、戻り値として「復号可」が設定されて(ステップS156)処理は終了する。
【0119】
復号に失敗した場合(ステップS92でNO)、調整処理部1620は、合成画像に含まれる対象画像の縦横比を求める(ステップS140)。そして、求めた縦横比に基づき、対象画像が縦長であるか横長であるかを判定する(ステップS142)。なお、縦横比が1:1である場合は、例えば、横長及び縦長のいずれか一方であるとみなすように予め設定しておけばよい。また、対象画像が縦長であるか横長であるかの判定には、対象画像の縦横比を用いず、対象画像の縦辺と横辺との差を取るなどの方法を採ってもよい。
【0120】
縦長であれば、ステップS142からステップS144に進み、調整処理部1620は、回転角度を0°に設定したQRコードを含む合成画像を生成する。ステップS144では、例えば、現在の合成画像に含まれるQRコードの回転角度を検出し、検出した角度に応じて、回転角度が0°でなければ0°になるまで当該QRコードを回転させる。
【0121】
横長であれば、ステップS142からステップS146に進み、調整処理部1620は、回転角度を90°に設定したQRコードを含む合成画像を生成する。ステップS146では、例えば、現在の合成画像に含まれるQRコードの回転角度を検出し、検出した角度に応じて、回転角度が90°でなければ90°になるまで当該QRコードを回転させる。
【0122】
そして、ステップS144又はステップS146で生成された合成画像について、対象画像調整処理を行う(ステップS148)。この対象画像調整処理は、図7を参照して上記で説明した処理と同様の処理であってよい。
【0123】
ステップS148の対象画像調整処理の結果の戻り値が「復号可」であれば(ステップS150でYES)、ステップS152以下の処理を行わずに終了する。
【0124】
戻り値が「復号可」でなければ(ステップS150でNO)、調整処理部1620は、現在の合成画像に含まれるQRコードを+180°回転させたQRコードを含む合成画像を生成する(ステップS152)。そして、ステップS152で生成した合成画像について、再び図7で例示するような対象画像調整処理を行う(ステップS154)。ステップS154の後、図14の例の手順の処理は終了する。
【0125】
図14の例の手順の処理によると、対象画像が縦長であれば、回転角度0°又は180°のQRコードを含む合成画像について対象画像調整処理が行われ、対象画像が横長であれば、回転角度90°又は270°のQRコードを含む合成画像について対象画像調整処理が行われる。つまり、図14の例では、QRコード中のコード語が対象画像の形状(縦長又は横長)と共通の形状を有する可能性の高い回転角度のQRコードを用いて合成画像を生成し、対象画像調整処理を行う。
【0126】
以上で説明した各種の合成画像調整処理及びQRコード調整処理は、本発明の実施形態における処理の例に過ぎず、上述の他にも各種の変形例が考えられる。例えば、QRコード調整処理(図9)において、QRコード回転、マスクパターン変更、及び誤り訂正レベル変更処理のすべてを行う代わりに、1種類又は2種類だけを行ってもよい。また例えば、QRコード調整処理において、前述の3種類の処理の他に、QRコードの色を変更した場合の合成画像の復号の可否を判定する処理を行ってもよい。例えば、白黒のQRコードにおける黒色部分を黒以外の色で表したり、複数の異なる色で表したり、グラデーションを用いて表したりすることで、色を変更したQRコードを含む合成画像の復号の可否を判定する。
【0127】
また、図5の例の手順のように対象画像の位置及び大きさを固定してQRコードの回転角度、マスクパターン、及び誤り訂正レベルのそれぞれを変更する代わりに、例えば、QRコードの型番、回転角度、マスクパターン、及び誤り訂正レベルなどの設定情報のいずれか1つの項目に着目し、着目した項目の値を変更したQRコードのそれぞれについて、対象画像調整処理(図7)を行ってもよい。あるいは、QRコードの設定情報の複数の項目に着目し、これらの項目の値の組合せのそれぞれに対応するQRコードについて対象画像調整処理を行ってもよい。この例において、着目する1以上の項目は、管理者などが予め設定しておいてもよいし、ユーザによる指定を受け付けてもよい。また、着目した各項目の値を変更する順番についても、予め設定しておいてもよいし、ユーザの指定を受け付けてもよい。
【0128】
また、以上では、対象画像調整処理について、説明を簡単にするため、対象画像の形状を矩形として説明したが、他の形状の対象画像についても、基準となる座標を設定した上で図7の例の手順の処理を同様に実行してよい。また、対象画像の位置を表す座標系についても、図6の例と異なる設定の座標系を用いてもよい。例えば、座標系の原点をQRコードの中心に設定してもよい。
【0129】
以上では、QRコードに1つの対象画像を合成する場合の例の処理を説明した。他の例では、QRコードに複数の対象画像を合成してもよい。図15は、複数の対象画像をQRコードに合成する場合に処理部16が実行する処理の手順の例を示すフローチャートである。図15の例の手順の処理は、例えば、1つの対象画像に関して以上で説明した図4の例の手順の処理を行い、復号に成功した合成画像が得られた後、当該合成画像を処理対象として行われる。なお、図15において、図4と同様の処理ステップには図4と同様の符号を付し、その詳細な説明を省略する。
【0130】
図15を参照し、合成画像生成部162は、復号可能な合成画像(QRコード及び対象画像を含む)を取得する(ステップS4)。例えば、記憶部18に記憶された合成画像のうち、ユーザ入力部14を介してユーザが指定したものを記憶部18から取得すればよい。
【0131】
また、合成画像生成部162は、追加で合成する対象の画像(以下、「追加の対象画像」と呼ぶ)を取得する(ステップS6)。追加の対象画像は、画像入力部12を介して取得してもよいし、記憶部18に記憶された画像の中からユーザが指定したものを取得してもよい。
【0132】
ステップS4及びステップS6は、いずれか一方を先に実行してもよいし、両方を並行して実行してもよい。
【0133】
ステップS4,S6の後、調整処理部1620は、合成画像中の対象画像と追加の対象画像との面積の合計が現在のQRコードの復元能力の範囲内であるか否かを判定する(ステップS15)。ステップS15の判定は、例えば、合成画像中の対象画像と追加の対象画像との面積の合計がQRコードの全体の面積において占める割合を求め、求めた割合が、現在の合成画像に含まれるQRコードの誤り訂正レベルが表す、復元可能な損傷部分の割合(L(7%),M(15%),Q(25%),H(30%))以下であるか否かを判定することで行う。
【0134】
復元能力の範囲外であれば(ステップS15でNO)、調整処理部1620は、合成画像に含まれるQRコードの型番に対して1だけ増加させた型番を有するQRコードを二次元符号生成部160に新たに生成させ、この新たなQRコードを含む合成画像を生成する(ステップS17)。このとき生成される合成画像は、追加の対象画像を含まず、ステップS4で取得した合成画像にすでに含まれていた対象画像のみを含む。ステップS17の後、ステップS19に進む。
【0135】
復元能力の範囲内であれば(ステップS15でYES)、ステップS17の処理を行わずにステップS19に進む。
【0136】
ステップS19では、合成画像生成部162は、現在の合成画像に対して、追加の対象画像をさらに合成した合成画像を生成する(ステップS19)。追加の対象画像の配置位置は、ユーザ入力部14を介してユーザからの指定を受け付けて決定すればよい。
【0137】
そして、ステップS19で生成された合成画像に対して、合成画像調整処理を行う(ステップS21)。ステップS21の合成画像調整処理は、図5、図13、及び図14のいずれかの例の手順で行ってよい。ただし、ステップS21の合成画像調整処理において対象画像調整処理(図7)を行う場合は、追加の対象画像について位置及び大きさの調整を行い、ステップS4で取得された合成画像にすでに含まれていた対象画像の位置及び大きさは変更しない。
【0138】
ステップS21の後、処理部16は、合成画像及びその復号の可否を出力し(ステップS11)、処理を終了する。
【0139】
以上で説明した図4及び図15に例示する処理部16の処理において、ステップS7又はステップS19で生成されて合成画像調整処理(ステップS9又はステップS21)の対象となる合成画像は、QRコードにおいてユーザが指定した位置に対象画像を配置した合成画像である。他の処理の例では、ステップS7又はステップS19において、対象画像の配置位置に関してユーザの指定を受け付けることなく、予め設定された対象画像の基準の座標(例えば、右上、左上、右下、又は左下の座標)が、予め設定されたコード語の対応する角の座標の値となるように対象画像を配置してもよい。本例の場合、合成画像調整処理の一部として行なわれる対象画像調整処理において、ステップS942(基準の座標の移動)を省略してよい。
【0140】
なお、以上では、二次元符号の例としてQRコードを用いて各種の実施形態の例を説明した。本発明の実施形態の例の処理は、予め設定された単位量の情報を表す単位情報領域(QRコードのコード語に相当する領域)を複数含み、誤り訂正機能を有する二次元符号であれば、QRコードの他の二次元符号に適用してもよい。QRコードの他の二次元符号についても、対象画像調整処理は、図7を参照して説明した処理においてQRコードのコード語を上述の単位情報領域に置き換えて同様に実行してよい。また、QRコード調整処理に対応する処理として、処理対象の二次元符号の生成に用いられる設定情報を変更して新たな二次元符号を生成し、当該新たな二次元符号を含む合成画像の復号の可否を判定する処理を行えばよい。
【0141】
以上で説明した実施形態の画像処理装置10は、典型的には、汎用のコンピュータにて上述の画像処理装置の各部の機能又は処理内容を記述したプログラムを実行することにより実現される。コンピュータは、例えば、ハードウエアとして、図16に示すように、CPU(中央演算装置)60、メモリ(一次記憶)62、各種I/O(入出力)インタフェース64などがバス66を介して接続された回路構成を有する。また、そのバス66に対し、例えばI/Oインタフェース64経由で、キーボードやマウスなどの入力装置68、及び、CRT(Cathode Ray Tube)や液晶ディスプレイなどの表示装置70が接続される。また、バス66には、I/Oインタフェース64を介して、HDD(ハードディスクドライブ)72や、CD、DVD、フラッシュメモリなどの各種規格の可搬型の不揮発性記録媒体を読み取るためのディスクドライブ74が接続される。このようなドライブ72,74は、メモリに対する外部記憶装置として機能する。実施形態の処理内容が記述されたプログラムがCDやDVDなどの記録媒体を経由して、又はネットワーク経由で、HDD72などの固定記憶装置に保存され、コンピュータにインストールされる。固定記憶装置に記憶されたプログラムがメモリ62に読み出されCPU60により実行されることにより、上述の各種の実施形態の処理が実現される。
【0142】
なお、以上では、画像処理装置10を1台のコンピュータにより実現する例の実施形態を説明したが、画像処理装置10の上述の例の各種の機能を複数のコンピュータに分散させて実現してもよい。
【符号の説明】
【0143】
10 画像処理装置、12 画像入力部、14 ユーザ入力部、16 処理部、18 記憶部、20 出力部、60 CPU、62 メモリ、64 I/Oインタフェース、66 バス、68 入力装置、70 表示装置、72 HDD、74 ディスクドライブ、160 二次元符号生成部、162 合成画像生成部、164 復号処理部、1620 調整処理部。
【技術分野】
【0001】
本発明は、画像処理装置及びプログラムに関する。
【背景技術】
【0002】
QRコード(登録商標)などの誤り訂正機能を有する二次元符号に、人間が識別できる画像を合成する技術が開発されている。
【0003】
例えば、特許文献1には、QRコード内に、QRコードの規格で定められているデータ復元機能の範囲を超えない範囲で任意の画像情報を配置する技術が開示されている。特許文献1に記載の技術では、QRコードにおいて、規格で定められている位置検出パターン、位置検出パターン分離パターン、タイミングパターン、形式情報、型番情報、クワイエットゾーンの情報と重ならない位置に画像情報を合成したQRコードを生成する。
【0004】
特許文献2には、QRコードの画像データと合成の対象となる画像データとを合成して可視画像付きQRコードの画像データを作成し、当該QRコードの画像データの読み取り検査を行うとともに使用者による視認性に関する評価の入力を受け付けて、双方の条件のよいものを出力させる技術が開示されている。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2008−262521号公報
【特許文献2】特開2007−43456号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
ところで、二次元符号の画像に他の画像を合成する場合、二次元符号の表す情報が復元可能となる合成対象の画像の配置位置を効率よく見つけることが望まれる。そして、二次元符号には、予め設定された単位量の情報を表す領域を複数含み、この単位量の情報ごとに符号化及び復号の処理を行うものがある。
【0007】
本発明の目的は、二次元符号に他の画像を合成する場合に、二次元符号において予め設定された単位量の情報を表す領域の位置を考慮しない技術と比較して、二次元符号の表す情報が復元可能となる画像の配置位置をより効率よく決定できる画像処理装置及びプログラムを提供することである。
【課題を解決するための手段】
【0008】
請求項1に係る発明は、二次元符号の画像と指定された対象画像とを合成した画像である合成画像を生成する生成手段、を備え、前記二次元符号の画像は、予め設定された単位量の情報を表す領域である単位情報領域を複数含み、前記生成手段は、前記二次元符号の画像における前記複数の単位情報領域の位置に基づいて、前記二次元符号の画像において前記対象画像を配置する位置を決定し、決定した位置に前記対象画像を配置することで前記合成画像を生成する、ことを特徴とする画像処理装置である。
【0009】
請求項2に係る発明は、請求項1に係る発明において、前記生成手段は、前記合成画像において前記複数の単位情報領域のうち前記対象画像の領域との間に重複部分を有する単位情報領域の数が最小となるように、前記対象画像を配置する位置を決定する。
【0010】
請求項3に係る発明は、請求項1又は2に係る発明において、前記生成手段は、前記合成画像において、前記対象画像の外周のうち予め設定された部分と、前記複数の単位情報領域のうちの1つの外周のうち予め設定された部分と、が重なるように前記対象画像を配置する位置を決定する。
【0011】
請求項4に係る発明は、請求項3に係る発明において、前記合成画像に基づいて前記二次元符号が表す情報を復元できるか否かを判定する判定手段、をさらに備え、前記生成手段は、さらに、前記合成画像に含まれる前記二次元符号が表す情報を復元できないと前記判定手段が判定した場合に、前記対象画像を縮小して新たな前記合成画像を生成する。
【0012】
請求項5に係る発明は、請求項4に係る発明において、前記生成手段は、前記対象画像を縮小して新たな前記合成画像を生成するときに、前記合成画像において、前記対象画像の外周のうち予め設定された部分の位置を固定して前記対象画像を縮小する。
【0013】
請求項6に係る発明は、請求項5に係る発明において、前記生成手段は、前記対象画像を縮小して新たな前記合成画像を生成するときに、前記対象画像が前記複数の単位情報領域のうちの1つの領域内に収まるまで前記対象画像を縮小する。
【0014】
請求項7に係る発明は、請求項4から6のいずれか1項に係る発明において、前記生成手段は、さらに、前記二次元符号の画像において前記対象画像を配置する位置について利用者からの指定を受け付けた場合に、前記利用者により指定された位置に前記対象画像を配置して前記合成画像を生成し、当該合成画像について前記二次元符号が表す情報を復元できないと前記判定手段が判定した場合に、前記利用者により指定された位置および前記二次元符号の画像における前記複数の単位情報領域の位置に基づいて決定した位置に前記対象画像を配置することで新たな前記合成画像を生成する。
【0015】
請求項8に係る発明は、請求項7に係る発明において、前記生成手段は、前記利用者により指定された位置に前記対象画像を配置して生成した前記合成画像について前記二次元符号が表す情報を復元できないと前記判定手段が判定した場合に、前記新たな合成画像において、前記対象画像の外周のうち予め設定された部分と、当該予め設定された部分を含む前記単位情報領域の外周のうち予め設定された部分と、が重なるように、前記対象画像を配置する位置を決定する。
【0016】
請求項9に係る発明は、請求項8に係る発明において、前記対象画像の外周のうち予め設定された部分は、前記対象画像が前記利用者により指定された位置から前記二次元符号の画像の中心に向かう方向に移動して前記新たな合成画像が生成されるように設定される。
【0017】
請求項10に係る発明は、請求項1から9のいずれか1項に係る発明において、前記生成手段は、さらに、前記対象画像が縦長か否かに基づいて、前記合成画像における前記二次元符号の画像の回転角度を決定する。
【0018】
請求項11に係る発明は、二次元符号の画像と指定された対象画像とを合成した画像である合成画像を生成する生成ステップ、をコンピュータに実行させ、前記二次元符号の画像は、予め設定された単位量の情報を表す領域である単位情報領域を複数含み、前記生成ステップにおいて、前記二次元符号の画像における前記複数の単位情報領域の位置に基づいて、前記二次元符号の画像において前記対象画像を配置する位置を決定し、決定した位置に前記対象画像を配置することで前記合成画像を生成する、ことを特徴とするプログラムである。
【発明の効果】
【0019】
請求項1又は11に係る発明によると、二次元符号の画像に対象画像を合成する場合に、二次元符号に含まれる複数の単位情報領域の位置を考慮しない技術と比較して、二次元符号の表す情報が復元可能となる対象画像の配置位置をより効率よく決定できる。
【0020】
請求項2に係る発明によると、二次元符号の画像に対象画像を配置した合成画像において、対象画像の配置によって情報に損失が生じる単位情報領域の数を最小にすることができる。
【0021】
請求項3に係る発明によると、本構成を有さない場合と比較して、対象画像の配置によって情報に損失が生じる単位情報領域の数が少なくなる。
【0022】
請求項4に係る発明によると、合成画像に含まれる二次元符号の表す情報を復元できない場合に、合成画像において、対象画像の配置により情報の損失が生じる領域の面積を小さくすることができる。
【0023】
請求項5に係る発明によると、対象画像の外周のうち予め設定された部分と、二次元符号の画像に含まれる単位情報領域のうちの1つの外周のうち予め設定された部分と、の間の位置関係を保持したまま対象画像を縮小できる。
【0024】
請求項6に係る発明によると、対象画像の配置により情報の損失が生じる単位情報領域を1つにすることができる。
【0025】
請求項7に係る発明によると、利用者に指定された位置を考慮した、合成画像を生成できる。
【0026】
請求項8に係る発明によると、本構成を有さない場合と比較して、対象画像の配置によって情報に損失が生じる単位情報領域の数が少なくなる。
【0027】
請求項9に係る発明によると、本構成を有さない場合と比較して、合成画像が復元可能となる可能性が高くなる。
【0028】
請求項10に係る発明によると、本構成を有さない場合と比較して、対象画像と二次元符号に含まれる単位情報領域とが共通の形状を有する可能性が高くなる。
【図面の簡単な説明】
【0029】
【図1】画像処理装置の概略構成の例を示す図である。
【図2】QRコード及びQRコードに合成される対象画像の例を示す図である。
【図3】合成画像の例を示す図である。
【図4】処理部が行う処理の手順の例を示すフローチャートである。
【図5】合成画像調整処理の手順の例を示すフローチャートである。
【図6】QRコードの構成の例を説明するための図である。
【図7】対象画像調整処理の手順の例を示すフローチャートである。
【図8A】対象画像調整処理の様子の例を説明するための図である。
【図8B】対象画像調整処理の様子の例を説明するための図である。
【図8C】対象画像調整処理の様子の例を説明するための図である。
【図8D】対象画像調整処理の様子の例を説明するための図である。
【図9】QRコード調整処理の手順の例を示すフローチャートである。
【図10】QRコード回転処理の手順の例を示すフローチャートである。
【図11】マスクパターン変更処理の手順の例を示すフローチャートである。
【図12】誤り訂正レベル変更処理の手順の例を示すフローチャートである。
【図13】合成画像調整処理の手順の他の例を示すフローチャートである。
【図14】合成画像調整処理の手順のさらに他の例を示すフローチャートである。
【図15】複数の対象画像を用いて合成画像を生成する際に実行される処理の手順の例を示すフローチャートである。
【図16】コンピュータのハードウエア構成の例を示すブロック図である。
【発明を実施するための形態】
【0030】
図1は、本発明の1つの実施形態の例の画像処理装置の概略構成の例を示す図である。画像処理装置10は、画像入力部12、ユーザ入力部14、処理部16、記憶部18、及び出力部20を備える。
【0031】
画像入力部12は、処理対象の画像データの入力を受け付けて処理部16に渡す。画像入力部12が受け付ける画像データは、例えば、色などを表す数値を有する画素からなるデジタル画像データである。画像入力部12は、例えば、スキャナなどの一般的な画像生成装置から画像データの入力を受け付ける。また例えば、画像入力部12は、インターネットやLAN(Local Area Network)などのネットワーク(図示しない)を介して画像処理装置10と接続されたコンピュータなどの情報処理装置から画像データの入力を受け付けてもよい。なお、以下の説明では、処理部16で処理される画像データを単に「画像」と呼ぶ。
【0032】
ユーザ入力部14は、ユーザによる指示の入力を受け付けて処理部16に渡す。ユーザ入力部14は、例えば、キーボード及びマウスなどの一般的な入力装置であってよい。
【0033】
処理部16は、情報を二次元の情報に符号化して生成される二次元符号の画像と、人間が識別可能な画像と、を合成した画像に関する処理を行う。処理部16は、二次元符号生成部160、合成画像生成部162、及び復号処理部164を備える。
【0034】
二次元符号生成部160は、符号化の対象として指定された情報を予め設定された手順に従って符号化して二次元符号を生成する。二次元符号生成部160は、二次元符号を生成すると、当該二次元符号と、当該二次元符号が表す情報と、を対応づけて記憶部18に記憶させる。なお、以下では、二次元符号の一種であるQRコードを例にとり各種の実施形態の例を説明する。QRコードは、JIS及びISOによって規格化された二次元符号である(JIS−X−0510,ISO/IEC18004)。本例の二次元符号生成部160は、JIS又はISOによる規格で定められた手順に従って符号化の対象の情報を符号化してQRコードを生成する。図2(a)に、QRコードの一例を示す。
【0035】
図1の説明に戻り、合成画像生成部162は、二次元符号生成部160が生成した二次元符号の画像と、当該二次元符号の画像に合成する対象の画像として指定された画像(以下、「対象画像」と呼ぶ)と、を合成した画像を生成する。以下では、二次元符号の画像と対象画像とを合成した画像を「合成画像」と呼ぶ。合成画像生成部162は、二次元符号の画像上に対象画像を配置した画像を合成画像として生成する。
【0036】
例えば、図2(a)のQRコード(二次元符号の画像)と合成される対象画像として、図2(b)に示す画像が指定されたとする。このとき、合成画像生成部162は、図2(a)のQRコード上に図2(b)の対象画像を配置し、例えば図3に示すような合成画像を生成する。
【0037】
対象画像としては、例えば、画像が表す内容を人間が識別可能であり、かつ、二次元符号が表す情報と関連のある画像が指定される。これにより、合成画像を視認したユーザは、二次元符号が表す情報に関連する情報を対象画像から認識する。
【0038】
再び図1を参照し、合成画像生成部162は、調整処理部1620を備える。調整処理部1620は、二次元符号の画像における対象画像の位置を決定あるいは変更したり、対象画像の大きさを決定あるいは変更したりする。調整処理部1620は、また、合成画像に含まれる二次元符号の画像の生成に用いられた設定情報と異なる設定情報を用いて、当該二次元符号が表す情報と同一の情報を符号化して新たな二次元符号を生成することを二次元符号生成部160に依頼することもある。調整処理部1620は、例えば、後述の復号処理部164において合成画像の復号に失敗した場合に、上記で例示した処理の少なくともいずれかを行い、復号に成功する合成画像の生成を試みる。
【0039】
復号処理部164は、合成画像生成部162が生成した合成画像を復号する。復号処理部164は、二次元符号生成部160において二次元符号の生成に用いられた符号化の手順に対応する復号の手順として予め設定された手順に従って復号処理を行う。二次元符号としてQRコードが生成される本例では、QRコードの復号の手順として規格化された手順に従って復号処理を行えばよい。復号処理部164は、合成画像の復号の成否を合成画像生成部162に対して通知する。
【0040】
記憶部18は、処理部16における処理に必要な情報を記憶する記憶装置である。記憶部18は、例えば、処理部16の処理対象の画像、処理部16が行う処理で用いられる変数の値、及び処理部16が行う処理の手順を記述したプログラムなどを記憶する。また、記憶部18は、処理部16における処理の結果を記憶することもある。
【0041】
出力部20は、処理部16による処理の結果を出力する。例えば、出力部20は、処理部16による処理の結果として生成された画像を表示装置(図示しない)に対して出力し、当該画像を表示装置に表示させる。あるいは、例えば、出力部20は、処理結果の画像をネットワーク(図示しない)に対して出力することで、ネットワークを介して画像処理装置10に接続された装置に処理結果の画像を送ってもよい。
【0042】
以下、画像処理装置10の処理の例を説明する。
【0043】
図4は、処理部16が行う処理の手順の例を示すフローチャートである。
【0044】
図4を参照し、処理部16の二次元符号生成部160は、まず、符号化対象の情報を取得する(ステップS1)。ステップS1では、二次元符号生成部160は、例えば、ユーザ入力部14を介して、ユーザが入力した符号化対象の情報を取得する。あるいは、例えば、二次元符号生成部160は、記憶部18に記憶されている情報のうち、ユーザ入力部14を用いてユーザが指定した情報を符号化対象として取得してもよい。
【0045】
次に、二次元符号生成部160は、符号化に用いる設定情報を取得する(ステップS3
)。二次元符号生成部160は、例えば、ユーザ入力部14を介して、ユーザが入力した設定情報を取得する。あるいは、例えば、設定情報の初期値を記憶部18に記憶させておき、ステップS3において、この初期値を記憶部18から取得してもよい。
【0046】
QRコードを生成する本例では、ステップS3で、設定情報として、QRコードの誤り訂正レベル、マスクパターン、及び型番を指定する情報を取得する。
【0047】
QRコードは、その一部が損傷していても情報を復元できる機能を有する。誤り訂正レベルは、この復元機能によって復元可能な損傷の度合いを表す。QRコードの規格により、L(7%),M(15%),Q(25%),H(30%)の4段階の誤り訂正レベルが定められている。例えば誤り訂正レベルLのQRコードであれば、QRコードの面積に対する損傷部分の面積の割合が7%以下であればQRコードが表す情報を復元可能である。
【0048】
また、QRコードの画像における情報の偏りを低減するために、QRコードの生成において、マスクをかける処理が行われる。マスクパターンは、このマスクをかける処理に用いられる。QRコードの規格により8種類のマスクパターンA,B,C,D,E,F,G,Hが定義されている。
【0049】
型番は、QRコードの大きさを表し、QRコードが表現可能な情報量に対応する。QRコードの規格により、1〜40までの型番が定義されており、型番の数値が大きい程QRコードが表現可能な情報量は多い。なお、QRコードの型番は、「バージョン」と呼ばれることもある。
【0050】
符号化対象の情報及び符号化に用いる設定情報を取得すると、二次元符号生成部160は、QRコードを生成する(ステップS5)。二次元符号生成部160は、符号化対象の情報を符号化して、設定情報で指定された誤り訂正レベル、マスクパターン、及び型番のQRコードを生成する。二次元符号生成部160は、生成したQRコードを合成画像生成部162に渡す。
【0051】
合成画像生成部162は、QRコードに合成される対象画像を取得する(ステップS2)。対象画像は、例えば、画像入力部12を介して取得される。このとき、ユーザは、例えばユーザ入力部14を介して、画像入力部12から合成画像生成部162に渡される画像を対象画像として用いることを指示する。あるいは、合成画像生成部162は、記憶部18に記憶された画像のうち、ユーザ入力部14を介してユーザが対象画像として指定した画像を記憶部18から取得してもよい。
【0052】
以上で説明したQRコードの生成(ステップS1,S3,S5)と対象画像の取得(ステップS2)とは、いずれか一方を先に実行してもよいし、両方を並行して実行してもよい。
【0053】
合成画像生成部162は、QRコードと対象画像とを取得すると、対象画像をQRコード上に配置した画像を生成することで合成画像を生成する(ステップS7)。ステップS7では、QRコード上でユーザが指定した位置に対象画像を配置した合成画像を生成すればよい。ユーザによる対象画像の位置の指定は、例えば、QRコード及び対象画像を出力部20により表示画面(図示しない)に表示させ、ユーザにマウスなどの入力装置によって対象画像をQRコード上に配置させることで、ユーザ入力部14を介して受け付ける。
【0054】
合成画像を生成すると、合成画像生成部162は、合成画像の調整処理を行う(ステップS9)。ステップS9では、合成画像が復号可能か否かを確認し、復号可能でなければ、調整処理部1620によって対象画像の位置及び大きさやQRコードの設定などを調整して復号可能な合成画像の生成を試みる。本例では、合成画像調整処理の結果、復号可能な合成画像を生成できたか否かを表す戻り値(「復号可」又は「復号不可」)が得られる。ステップS9の処理の詳細は後述する。
【0055】
ステップS9の後、処理部16は、出力部20を用いて、合成画像及び復号の可否を出力する(ステップS11)。ステップS11では、例えば、合成画像調整処理の結果の戻り値が「復号可」であれば、合成画像調整処理で生成された合成画像及び当該合成画像が復号可能である旨を出力する。また、戻り値が「復号不可」であれば、ステップS7で生成された元の合成画像及び当該合成画像が復号不可である旨を出力する。
【0056】
ステップS11の後、図4の例の手順の処理は終了する。
【0057】
なお、図4の例の手順の処理では、符号化対象の情報を取得してQRコードの生成を行うが、他の処理の例では、すでに生成されたQRコードを取得して合成画像を生成してもよい。例えば、図4のステップS1,S3,S5の処理を行う代わりに、画像入力部12あるいは記憶部18からQRコードの画像を取得し、このQRコードを用いてステップS7以降の処理を行ってもよい。
【0058】
図5は、合成画像調整処理(図4のステップS9)の手順の例を示すフローチャートである。図4のステップS9が開始されると、図5の例の手順の処理が開始される。
【0059】
図5を参照し、まず、復号処理部164は、合成画像を復号する(ステップS90)。復号処理部164は、ステップS90の復号処理の成否を合成画像生成部162に対して通知する。復号処理部164は、例えば、復号処理によって合成画像から抽出した情報と、当該合成画像に含まれる二次元符号が表す情報として記憶部18に記憶された情報と、が一致すれば復号に成功したと判定する。一方、復号処理によって合成画像から抽出した情報と、前述のように記憶部18に記憶された情報と、が一致しない場合、又は、復号処理を行っても合成画像から情報を抽出できない場合、復号処理部164は、合成画像の復号に失敗したと判定する。
【0060】
復号に成功した場合(ステップS92でYES)、戻り値として「復号可」を設定し(ステップS96)、図5の例の手順は終了する。
【0061】
復号に失敗した場合(ステップS92でNO)、合成画像生成部162の調整処理部1620は、対象画像の調整を行う(ステップS94)。ステップS94では、QRコードにおいてデータを表す単位である「コード語」の配置に応じて、QRコードにおける対象画像の位置及び大きさが調整される。1つのコード語は1バイトのデータを表す。コード語によって符号化対象の情報が表される。また、QRコードは、誤り訂正のために用いられるコード語も含む。QRコードに含まれるコード語の数及び配置は、QRコードの型番及び誤り訂正レベルの組合せに応じて、規格により定義されている。
【0062】
図6に、型番が「1」、誤り訂正レベルが「L」であるQRコードのコード語の配置を模式的に示す。図6において、斜線を引いた部分にコード語が配置される。図6の斜線部に含まれる長方形のそれぞれが1つのコード語に対応する。ただし、図6において、符号a1,a2で示す2つの長方形及び符号b1,b2で示す2つの長方形は、それぞれ、2つの長方形が1つのコード語に対応する。図6の例のQRコードは、26個のコード語を含む。このうち、19個は符号化対象の情報を表すためのコード語であり、7個は誤り訂正用のコード語である(これらの区別は図示しない)。図6の例のようなコード語の配置に応じて、このQRコードに合成される対象画像の位置及び大きさの調整が行われる。
【0063】
なお、以下の説明において、対象画像は矩形を有するものとし、QRコードにおける「対象画像の位置」とは、その矩形の4つの角それぞれのQRコードにおける座標を意味するものとする。また、QRコードにおける座標は、図6に例示するように、回転角度が0°であるQRコードの左上の角を原点(0,0)とし、左右方向の軸をx軸、上下方向の軸をy軸とした座標系の座標であるとする。なお、QRコードの「回転角度」は、QRコードに含まれる3つの切り出しシンボル(ファインダパターン、位置検出パターン)d1,d2,d3の位置関係から認識されるものである。図6の例のように、QRコードの左上、右上、及び左下の隅に切り出しシンボルd1,d2,d3が配置されている状態が回転角度0°と定められている。
【0064】
図7に、対象画像調整処理(図5のステップS94)の詳細手順の例を示す。図5のステップS94が開始されると、図7の例の手順の処理が開始される。
【0065】
調整処理部1620は、現在の対象画像のQRコードにおける位置を記憶部18に記憶させて保持する(ステップS940)。本例では、対象画像の左上、右上、左下、及び右下の角の座標(以下、それぞれ、「左上座標」、「右上座標」、「左下座標」、及び「右下座標」と呼ぶ)をQRコードにおける位置として保持する。
【0066】
次に、調整処理部1620は、現在の対象画像の左上座標を含むコード語の左上の角の座標に、対象画像の左上座標を移動させる(ステップS942)。ステップS942での移動処理により、対象画像の領域との間に重複部分を有するコード語の数が最小となる位置に対象画像が移動される。以下、図8A及び図8Bを参照して、ステップS942の具体例を説明する。図8Aにおいて、対象画像Iの左上座標は、コード語c1の領域内に含まれる。この例では、ステップS942において、対象画像Iの左上座標の値をコード語c1の左上の角の座標の値に設定することで、対象画像Iの左上の角をコード語c1の左上の角まで移動させる。対象画像Iの左上座標の変化に伴い、右上座標、左下座標、及び右下座標のそれぞれの値も、左上座標の値の変化と同様に変化させる。つまり、右上座標、左下座標、及び右下座標のそれぞれを、破線矢印で表す左上座標の移動の方向と平行な方向に同じ距離だけ移動させる。ステップS942における対象画像の移動の結果の例を図8Bに示す。図8Aでは、対象画像Iは9個のコード語の領域との間に重複部分を有するのに対し、図8Bでは、対象画像Iは、4個のコード語の領域との間に重複部分を有する。対象画像Iの領域との間に重複部分を有するコード語の数が少ない程、対象画像によってデータの損失が生じるコード語の数が少なくなり、合成画像の復号が成功する可能性が高くなる。
【0067】
再び図7を参照し、ステップS942の結果の合成画像に対して、復号処理部164は復号処理を行う(ステップS944)。
【0068】
復号に成功すれば(ステップS946でYES)、戻り値が「復号可」に設定され(ステップS948)、図7の例の手順の処理は終了する。
【0069】
復号に失敗した場合(ステップS946でNO)、調整処理部1620は、対象画像が1つのコード語の領域内にあるか否かを判定する(ステップS950)。この判定は、例えば、対象画像の左上座標、右上座標、左下座標、及び右下座標のすべてが1つのコード語の領域内に存在するか否かを調べることで行えばよい。
【0070】
対象画像が1つのコード語の領域内にない場合(ステップS950でNO)、調整処理部1620は、対象画像の右下座標を含むコード語の領域との間の重複がなくなるまで、対象画像の左上座標を固定して対象画像を縮小する(ステップS956)。上述の図8Bの例を参照し、ステップS942の結果の合成画像において、対象画像Iは、1つのコード語の領域内ではなく、4つのコード語の領域との間に重複部分を有する。このため、ステップS950でNO判定され、ステップS956で、対象画像Iの右下座標を含むコード語c2の領域との間の重複がなくなるまで、対象画像Iは縮小される。対象画像Iの縮小において、左上座標は固定される。図8Bの例の合成画像においてステップS956の処理を行った結果の例を図8Cに示す。図8Cでは、対象画像Iとコード語c2の領域との間に重複部分は存在しない。
【0071】
ステップS956の後、処理はステップS944に戻り、合成画像の復号、及び復号の成否の判定(ステップS946)が行われる。
【0072】
ステップS950において対象画像が1つのコード語の領域内にある(YES)と判定された場合、調整処理部1620は、保持しておいた元の位置に対象画像の位置を戻す(ステップS952)。ステップS952では、対象画像の位置だけでなく、大きさも元に戻される。その後、戻り値が「復号不可」に設定され(ステップS954)、図7の例の手順の処理は終了する。ステップS950でYESと判定される場合、1つのコード語の領域内に収まるまでコード語を縮小しても合成画像の復号に失敗することを意味するため、戻り値が「復号不可」に設定される。
【0073】
図7の例の手順の処理において、ステップS944,S946,S950,S956を含むループ処理により、合成画像の復号に成功するか、あるいは、対象画像が1つのコード語の領域内に収まるまで、対象画像の縮小が繰り返される。上述の図8Cの例を再び参照し、ステップS956の縮小処理の結果の図8Cの合成画像の復号に失敗した場合(ステップS946でNO)、対象画像Iが2つのコード語c1,c3の領域との間に重複部分を有することから、ステップS950でNO判定されて、対象画像Iは、さらに、右下座標がコード語c3の領域外となるまで縮小される(ステップS956)。この縮小の結果の例を図8Dに示す。図8Dでは、対象画像Iは、1つのコード語c1の領域内に収まっている。図8Dの例の合成画像について復号に失敗すると(ステップS946でNO)、対象画像が1つのコード語の領域内にあることから、対象画像Iは元の位置及び大きさに戻され(図8A参照)、戻り値は「復号不可」に設定される(ステップS950でYES,S952,S954)。
【0074】
なお、図7の例の手順では、対象画像の左上座標を基準として対象画像を移動させ、縮小処理を行うが、左上座標の代わりに、右上座標、左下座標、及び右下座標のいずれかを基準として同様の処理を行ってもよい。対象画像の移動(ステップS942)においては、基準の座標と同様の位置にあるコード語の角(対象画像の右上座標が基準であれば、コード語の右上の角)の座標へ対象画像の基準の座標を移動させればよい。縮小処理(ステップS)では、基準の座標を固定し、基準の座標の対角線上の座標(右上座標が基準であれば、左下座標)を含むコード語の領域と対象画像との間の重複がなくなるまで対象画像を縮小すればよい。
【0075】
図7の例の手順において、対象画像の左上、右上、左下、及び右下のいずれの座標を基準とするかは、予め決定しておいてよい。あるいは、例えば、移動処理(ステップS942)において、対象画像をQRコードの中心に向かって移動させるように、QRコードの中心座標に最も近いコード語の領域内にある対象画像の座標を基準とするようにしてもよい。QRコードは、その中心付近のコード語に損失が生じている場合の方が、中心付近の他の部分のコード語に損失が生じている場合と比較して強い復元能力を有する傾向がある。このため、対象画像をQRコードの中心付近に配置すると、合成画像が復元可能となる可能性が高くなる。
【0076】
また、図7の例の手順の処理において、戻り値が「復号不可」となる場合に、基準の座標を変えて図7の例の手順の処理を繰り返してもよい。例えば、戻り値が「復号可」になるまで、左上、右上、左下、及び右下の座標のそれぞれを基準として図7の例の手順の処理を行う。左上、右上、左下、及び右下のすべてについて図7の例の手順の処理を行っても戻り値が「復号不可」であれば、そのまま対象画像調整処理を終了する。なお、基準とする座標を変更して処理を繰り返す場合、基準の座標の順番は任意に設定しておいてよい。
【0077】
また、上述の例の移動処理(ステップS942)では、対象画像の基準の座標の値を、対応するコード語の角の座標に設定する。他の例では、必ずしも、対象画像の基準の座標とコード語の角の座標とを等しくしなくてもよい。例えば、対象画像がその外周付近に余白部分を有し、この余白部分が透明である(つまり、対象画像をQRコードに重畳させた時に余白部分に覆われるQRコードの画素が合成画像上に現れる)場合に、その余白部分の大きさを考慮して対象画像の移動先を決定してもよい。例えば、対象画像の基準の座標から対角線方向の余白部分の大きさを求め、対象画像の基準の座標(左上、右上、左下、又は右下)を、対応するコード語の角の座標から求めた余白部分の大きさだけ当該コード語の外側にずらした位置に移動させてもよい。
【0078】
再び図5を参照し、対象画像調整処理(ステップS94,図7)が終了すると、その戻り値が「復号可」であるか否かが判定される(ステップS98)。戻り値が「復号可」であれば、ステップS100を行わずに図5の例の合成画像調整処理は終了する。戻り値が「復号不可」であれば、QRコードの調整が行われる(ステップS100)。
【0079】
図9に、QRコード調整処理(図5のステップS100)の詳細手順の例を示す。図5のステップS100の処理が開始されると、図9の例の手順の処理が開始される。
【0080】
図9を参照し、調整処理部1620は、合成画像に含まれるQRコードを回転させることで合成画像が復号可能となるか否かを判定する(ステップS102)。QRコード回転処理の結果、復号不可であれば(ステップS104でNO)、マスクパターンを変更したQRコードを含む合成画像が復号可能であるか否かを判定する(ステップS106)。マスクパターン変更処理の結果、復号不可であれば(ステップS108でNO)、さらに、調整処理部1620は、誤り訂正レベルを変更したQRコードを含む合成画像が復号可能であるか否かを判定する(ステップS110)。誤り訂正レベル変更処理が終了すると、図9の例の手順の処理は終了する。
【0081】
図9の例の手順において、QRコード回転処理(ステップS102)の結果、合成画像が復号可能となれば(ステップS104でYES)、ステップS106以下の処理を行わずに処理を終了する。また、マスクパターン変更処理(ステップS106)の結果、合成画像が復号可能となれば(ステップS108でYES)、誤り訂正レベル変更処理(ステップS110)を行わずに処理を終了する。これらの場合、図9の例のQRコード調整処理の結果の戻り値は「復号可」となる。誤り訂正レベル変更処理(ステップS110)を実行した場合、誤り訂正レベル変更処理の戻り値が、図9の例のQRコード調整処理の戻り値となる。
【0082】
以下、図10〜図12を参照し、図9の例のQRコード回転処理(ステップS102)、マスクパターン変更処理(ステップS106)、及び誤り訂正レベル変更処理(ステップS110)のそれぞれの詳細手順の例を説明する。
【0083】
図10は、QRコード回転処理の詳細手順の例を示すフローチャートである。図9の例の手順のステップS102の処理が開始されると、図10の例の手順の処理が開始される。
【0084】
まず、調整処理部1620は、現在の合成画像及び当該合成画像に含まれるQRコードの現在の回転角度を記憶部18に記憶させて保持する(ステップS1020)。
【0085】
そして、調整処理部1620は、現在の合成画像に含まれるQRコードの回転角度を+90°だけ進める(ステップS1022)。言い換えると、現在のQRコードの回転角度に対して90°加算する。ただし、現在のQRコードの回転角度が270°であり加算の結果が360°となる場合は、ステップS1022の結果の回転角度を0°とする。
【0086】
ステップS1022の結果の回転角度がステップS1020で保持された元の回転角度と同じであれば、調整処理部1620は、回転角度が一巡したと判定し(ステップS1024でYES)、現在の合成画像を元の合成画像に戻す(ステップS1034)。元の合成画像とは、ステップS1020で記憶部18に記憶された合成画像である。そして、戻り値が「復号不可」に設定され(ステップS1036)、処理は終了する。ステップS1024でYES判定されるのは、回転角度が一巡しても復号可能な合成画像が得られない場合であるため、戻り値は「復号不可」に設定される。
【0087】
ステップS1022の結果の回転角度が保持された元の回転角度と異なっていれば、調整処理部1620は、回転角度は一巡していないと判定し(ステップS1024でNO)、ステップS1022の結果の回転角度のQRコードを含む合成画像を生成する(ステップS1026)。ステップS1026では、合成画像に含まれるQRコードを90°回転させて、ステップS1022の結果の回転角度のQRコードとする。ステップS1026で、合成画像における対象画像の位置及び大きさは変更されない。合成画像における背景であるQRコードを回転させるだけである。
【0088】
ステップS1026の回転処理後のQRコードを含む合成画像は、復号処理部164により復号される(ステップS1028)。
【0089】
合成画像の復号に失敗すれば(ステップS1030でNO)、ステップS1022以下の処理を繰り返し、復号に成功すれば(ステップS1030でYES)、戻り値を「復号可」に設定して(ステップS1032)処理を終了する。
【0090】
図11は、マスクパターン変更処理の詳細手順の例を示すフローチャートである。図9の例の手順のステップS106の処理が開始されると、図11の例の手順の処理が開始される。
【0091】
まず、調整処理部1620は、現在の合成画像及び当該合成画像に含まれるQRコードのマスクパターンを記憶部18に記憶させて保持する(ステップS1060)。
【0092】
次に、調整処理部1620は、現在のQRコードのマスクパターンをアルファベット順に1つ進めたマスクパターンを求める(ステップS1062)。QRコードの規格では、上述のとおり、利用可能なマスクパターンとしてA〜Hの8種類が定義されている。よって、ステップS1062の結果は、現在のマスクパターンを表すアルファベットの次のアルファベットとなる。なお、現在のマスクパターンが「H」であれば、ステップS1062の結果を「A」とする。
【0093】
ステップS1062の結果のマスクパターンがステップS1060で保持したマスクパターンと同一であれば、調整処理部1620は、マスクパターンが一巡したと判定し(ステップS1064でYES)、合成画像を、ステップS1060で保持した元の合成画像に戻す(ステップS1074)。そして、戻り値を「復号不可」に設定して(ステップS1076)、処理を終了する。ステップS1064でYES判定されるのは、いずれのマスクパターンを用いても復号可能な合成画像が得られない場合であるため、戻り値は「復号不可」に設定される。
【0094】
ステップS1062の結果のマスクパターンがステップS1060で保持したマスクパターンと同一でなければ、調整処理部1620は、マスクパターンが一巡していないと判定し(ステップS1064でNO)、ステップS1062の結果のマスクパターンのQRコードを含む合成画像を生成する(ステップS1066)。ステップS1066で、調整処理部1620は、まず、ステップS1062の結果のマスクパターンのQRコードの生成を二次元符号生成部160に依頼する。この依頼を受けた二次元符号生成部160は、依頼されたマスクパターンを用いて、新たなQRコードを生成する。この新たなQRコードは、マスクパターンの他の条件(符号化対象の情報、型番、及び誤り訂正レベルなど)については元のQRコードと同様である。二次元符号生成部160は、この新たなQRコードを合成画像生成部162に渡し、合成画像生成部162は、この新たなQRコードを含む合成画像を生成する。なお、ステップS1066で生成される合成画像において、背景となるQRコードが新たなQRコードに置き換えられるだけで、対象画像の位置及び大きさは変更されない。
【0095】
ステップS1066の後、復号処理部164により、ステップS1066で生成された合成画像の復号が行われる(ステップS1068)。
【0096】
合成画像の復号に失敗すれば(ステップS1070でNO)、ステップS1062以下の処理が繰り返される。合成画像の復号に成功すれば(ステップS1070でYES)、戻り値は「復号可」に設定され(ステップS1072)、図11の例の手順の処理は終了する。
【0097】
図12は、誤り訂正レベル変更処理の詳細手順の例を示すフローチャートである。図9の例の手順のステップS110の処理が開始されると、図12の例の手順の処理が開始される。
【0098】
まず、調整処理部1620は、現在の合成画像及び当該合成画像に含まれるQRコードの誤り訂正レベルを記憶部18に記憶させて保持する(ステップS1102)。
【0099】
次に、調整処理部1620は、誤り訂正レベルをL(7%)に設定したQRコードの生成を二次元符号生成部160に対して依頼する。この依頼を受けて、二次元符号生成部160は、誤り訂正レベルが「L」であり、誤り訂正レベルの他の条件は現在のQRコードと同様である新たなQRコードを生成して合成画像生成部162に渡す。合成画像生成部162は、合成画像における対象画像の位置及び大きさを変更せず、QRコードを新たなQRコードに置き換えた合成画像を生成する(以上、ステップS1104)。なお、現在のQRコードの誤り訂正レベルがLである場合、ステップS1104は省略してよい。
【0100】
その後、復号処理部164により、合成画像の復号が行われる(ステップS1106)。
【0101】
合成画像の復号に成功すれば(ステップS1108でYES)、戻り値が「復号可」に設定されて(ステップS1110)処理は終了する。
【0102】
合成画像の復号に失敗すれば(ステップS1108でNO)、合成画像に含まれるQRコードの誤り訂正レベルが最高レベルであるH(30%)に設定されているか否かが判定される(ステップS1112)。
【0103】
誤り訂正レベルがHでなければ(ステップS1112でNO)、調整処理部1620は、現在の誤り訂正レベルよりも一段階だけ高い誤り訂正レベルのQRコードを新たに二次元符号生成部160に生成させ、この新たなQRコードを含む合成画像を生成する(ステップS1118)。誤り訂正レベルは、前述したように、L,M,Q,Hの順で高くなる。なお、ステップS1118における新たなQRコードの生成及び当該QRコードを含む合成画像の生成は、ステップS1104を参照して説明した処理と同様の手順で行えばよい。ステップS1118で生成された合成画像に対して、復号処理(ステップS1106)及び復号処理の成否の判定(ステップS1108)が行われる。
【0104】
誤り訂正レベルがHである場合(ステップS1112でYES)、調整処理部1620は、合成画像を、ステップS1102で保持した元の合成画像に戻す(ステップS1114)。そして、戻り値を「復号不可」に設定して(ステップS1116)、処理を終了する。ステップS1112でYES判定されるのは、QRコードの誤り訂正レベルが最高のHであっても合成画像の復号に失敗する場合であるため、戻り値は「復号不可」に設定される。
【0105】
以上、図10〜図12を参照し、QRコード調整処理(図5のステップS100,図9)で行われる3種類の処理の例を説明した。QRコード調整処理において、これらの3種類の処理(QRコード回転処理、マスクパターン変更処理、及び誤り訂正レベル変更処理)の実行の順番は、図9に例示する順番に限られない。これら3種類の処理は、どのような順番で実行してもよい。
【0106】
以上で説明した実施形態の処理の例では、QRコードにおいてユーザが指定した位置に対象画像を配置した合成画像の復号に失敗すると(図5のステップS92でNO)、まず対象画像調整処理(図5のステップS94,図7)を行い、対象画像調整処理によっても復号に成功する合成画像が得られなかった場合(図5のステップS98でNO)に、QRコード調整処理(図5のステップS100,図9)を行う。他の処理の例では、図5の例の手順において、対象画像調整処理(ステップS94)とQRコード調整処理(ステップS100)とを互いに入れ替えてもよい。
【0107】
また、以上で説明した実施形態の処理の例では、QRコードの調整において、回転角度、マスクパターン、及び誤り訂正レベルの変更が行われる。他の処理の例では、さらに、QRコードの型番を変更してもよい。
【0108】
図13に、QRコードの型番を変更する処理を含む場合の合成画像調整処理の手順の例を示す。図13の例の手順の処理は、例えば、図4の例の手順のステップS9の処理が開始されたときに、図5の例の合成画像調整処理の代わりに実行される。図13において、図5の例の手順と同様の処理ステップには図5と同様の符号を付し、その詳細な説明を省略する。
【0109】
図13を参照し、まず、合成画像の復号処理(ステップS90)が行われ、復号に成功すれば(ステップS92でYES)、戻り値に「復号可」が設定され(ステップS96)て処理は終了する。
【0110】
復号に失敗すると(ステップS92でNO)、調整処理部1620は、現在の合成画像及び当該合成画像に含まれるQRコードの型番を記憶部18に記憶させて保持する(ステップS93)。
【0111】
次に、調整処理部1620は、対象画像調整処理(ステップS94)を行う。ステップS94では、図7を参照して上記で説明した処理を行えばよい。対象画像調整処理の戻り値が「復号可」であれば(ステップS98でYES)、ステップS100以降の処理を行わずに終了し、「復号可」でなければ(ステップS98でNO)、QRコード調整処理(ステップS100)を行う。ステップS100のQRコード調整処理では、図9〜図12を参照して上記で説明したのと同様の処理を行えばよい。つまり、ここでは、回転角度、マスクパターン、及び誤り訂正レベルの変更処理が行われる。
【0112】
QRコード調整処理の戻り値が「復号可」であれば(ステップS130でYES)、ステップS132以降の処理を行わずに終了する。一方、QRコード調整処理の戻り値が「復号可」でなければ(ステップS130でNO)、合成画像に含まれるQRコードの型番が最大値であるか否かを判定する(ステップS132)。QRコードの型番は、上述のとおり、規格により1〜40まで定義されているので、ステップS132では、QRコードの型番が40であればYES判定されてステップS134に進み、QRコードの型番が40未満であればNO判定されてステップS136に進む。
【0113】
ステップS134で、調整処理部1620は合成画像を元に戻し、その後、処理を終了する。
【0114】
ステップS136では、調整処理部1620は、合成画像に含まれるQRコードの型番を1だけ増加させた型番のQRコードを二次元符号生成部160に新たに生成させ、この新たなQRコードを含む合成画像を生成する(ステップS136)。ステップS136で新たに生成されるQRコードにおいて、型番の他の条件(符号化対象の情報、回転角度、マスクパターン、及び誤り訂正レベルなど)は元のQRコードと同様である。また、ステップS136で生成される合成画像において、対象画像の位置及び大きさは、元の合成画像と同様であってよい。
【0115】
ステップS136で生成された、型番を1だけ増加させたQRコードを含む合成画像について、対象画像調整処理(ステップS94)以下の処理が行われる。
【0116】
図14に、合成画像調整処理の手順のさらに他の例を示す。QRコードに含まれるコード語は、回転角度が0°又は180°の状態において縦長の形状を有し、回転角度が90°又は270°の状態に置いて横長の形状を有する傾向がある。図14の例の合成画像調整処理では、対象画像の縦横比に応じて、QRコードの回転角度を設定する。図14の例の手順の処理は、例えば、図4のステップS9が開始された時に開始される。
【0117】
図14を参照し、まず合成画像の復号が行われる(ステップS90)。
【0118】
復号に成功すれば(ステップS92でYES)、戻り値として「復号可」が設定されて(ステップS156)処理は終了する。
【0119】
復号に失敗した場合(ステップS92でNO)、調整処理部1620は、合成画像に含まれる対象画像の縦横比を求める(ステップS140)。そして、求めた縦横比に基づき、対象画像が縦長であるか横長であるかを判定する(ステップS142)。なお、縦横比が1:1である場合は、例えば、横長及び縦長のいずれか一方であるとみなすように予め設定しておけばよい。また、対象画像が縦長であるか横長であるかの判定には、対象画像の縦横比を用いず、対象画像の縦辺と横辺との差を取るなどの方法を採ってもよい。
【0120】
縦長であれば、ステップS142からステップS144に進み、調整処理部1620は、回転角度を0°に設定したQRコードを含む合成画像を生成する。ステップS144では、例えば、現在の合成画像に含まれるQRコードの回転角度を検出し、検出した角度に応じて、回転角度が0°でなければ0°になるまで当該QRコードを回転させる。
【0121】
横長であれば、ステップS142からステップS146に進み、調整処理部1620は、回転角度を90°に設定したQRコードを含む合成画像を生成する。ステップS146では、例えば、現在の合成画像に含まれるQRコードの回転角度を検出し、検出した角度に応じて、回転角度が90°でなければ90°になるまで当該QRコードを回転させる。
【0122】
そして、ステップS144又はステップS146で生成された合成画像について、対象画像調整処理を行う(ステップS148)。この対象画像調整処理は、図7を参照して上記で説明した処理と同様の処理であってよい。
【0123】
ステップS148の対象画像調整処理の結果の戻り値が「復号可」であれば(ステップS150でYES)、ステップS152以下の処理を行わずに終了する。
【0124】
戻り値が「復号可」でなければ(ステップS150でNO)、調整処理部1620は、現在の合成画像に含まれるQRコードを+180°回転させたQRコードを含む合成画像を生成する(ステップS152)。そして、ステップS152で生成した合成画像について、再び図7で例示するような対象画像調整処理を行う(ステップS154)。ステップS154の後、図14の例の手順の処理は終了する。
【0125】
図14の例の手順の処理によると、対象画像が縦長であれば、回転角度0°又は180°のQRコードを含む合成画像について対象画像調整処理が行われ、対象画像が横長であれば、回転角度90°又は270°のQRコードを含む合成画像について対象画像調整処理が行われる。つまり、図14の例では、QRコード中のコード語が対象画像の形状(縦長又は横長)と共通の形状を有する可能性の高い回転角度のQRコードを用いて合成画像を生成し、対象画像調整処理を行う。
【0126】
以上で説明した各種の合成画像調整処理及びQRコード調整処理は、本発明の実施形態における処理の例に過ぎず、上述の他にも各種の変形例が考えられる。例えば、QRコード調整処理(図9)において、QRコード回転、マスクパターン変更、及び誤り訂正レベル変更処理のすべてを行う代わりに、1種類又は2種類だけを行ってもよい。また例えば、QRコード調整処理において、前述の3種類の処理の他に、QRコードの色を変更した場合の合成画像の復号の可否を判定する処理を行ってもよい。例えば、白黒のQRコードにおける黒色部分を黒以外の色で表したり、複数の異なる色で表したり、グラデーションを用いて表したりすることで、色を変更したQRコードを含む合成画像の復号の可否を判定する。
【0127】
また、図5の例の手順のように対象画像の位置及び大きさを固定してQRコードの回転角度、マスクパターン、及び誤り訂正レベルのそれぞれを変更する代わりに、例えば、QRコードの型番、回転角度、マスクパターン、及び誤り訂正レベルなどの設定情報のいずれか1つの項目に着目し、着目した項目の値を変更したQRコードのそれぞれについて、対象画像調整処理(図7)を行ってもよい。あるいは、QRコードの設定情報の複数の項目に着目し、これらの項目の値の組合せのそれぞれに対応するQRコードについて対象画像調整処理を行ってもよい。この例において、着目する1以上の項目は、管理者などが予め設定しておいてもよいし、ユーザによる指定を受け付けてもよい。また、着目した各項目の値を変更する順番についても、予め設定しておいてもよいし、ユーザの指定を受け付けてもよい。
【0128】
また、以上では、対象画像調整処理について、説明を簡単にするため、対象画像の形状を矩形として説明したが、他の形状の対象画像についても、基準となる座標を設定した上で図7の例の手順の処理を同様に実行してよい。また、対象画像の位置を表す座標系についても、図6の例と異なる設定の座標系を用いてもよい。例えば、座標系の原点をQRコードの中心に設定してもよい。
【0129】
以上では、QRコードに1つの対象画像を合成する場合の例の処理を説明した。他の例では、QRコードに複数の対象画像を合成してもよい。図15は、複数の対象画像をQRコードに合成する場合に処理部16が実行する処理の手順の例を示すフローチャートである。図15の例の手順の処理は、例えば、1つの対象画像に関して以上で説明した図4の例の手順の処理を行い、復号に成功した合成画像が得られた後、当該合成画像を処理対象として行われる。なお、図15において、図4と同様の処理ステップには図4と同様の符号を付し、その詳細な説明を省略する。
【0130】
図15を参照し、合成画像生成部162は、復号可能な合成画像(QRコード及び対象画像を含む)を取得する(ステップS4)。例えば、記憶部18に記憶された合成画像のうち、ユーザ入力部14を介してユーザが指定したものを記憶部18から取得すればよい。
【0131】
また、合成画像生成部162は、追加で合成する対象の画像(以下、「追加の対象画像」と呼ぶ)を取得する(ステップS6)。追加の対象画像は、画像入力部12を介して取得してもよいし、記憶部18に記憶された画像の中からユーザが指定したものを取得してもよい。
【0132】
ステップS4及びステップS6は、いずれか一方を先に実行してもよいし、両方を並行して実行してもよい。
【0133】
ステップS4,S6の後、調整処理部1620は、合成画像中の対象画像と追加の対象画像との面積の合計が現在のQRコードの復元能力の範囲内であるか否かを判定する(ステップS15)。ステップS15の判定は、例えば、合成画像中の対象画像と追加の対象画像との面積の合計がQRコードの全体の面積において占める割合を求め、求めた割合が、現在の合成画像に含まれるQRコードの誤り訂正レベルが表す、復元可能な損傷部分の割合(L(7%),M(15%),Q(25%),H(30%))以下であるか否かを判定することで行う。
【0134】
復元能力の範囲外であれば(ステップS15でNO)、調整処理部1620は、合成画像に含まれるQRコードの型番に対して1だけ増加させた型番を有するQRコードを二次元符号生成部160に新たに生成させ、この新たなQRコードを含む合成画像を生成する(ステップS17)。このとき生成される合成画像は、追加の対象画像を含まず、ステップS4で取得した合成画像にすでに含まれていた対象画像のみを含む。ステップS17の後、ステップS19に進む。
【0135】
復元能力の範囲内であれば(ステップS15でYES)、ステップS17の処理を行わずにステップS19に進む。
【0136】
ステップS19では、合成画像生成部162は、現在の合成画像に対して、追加の対象画像をさらに合成した合成画像を生成する(ステップS19)。追加の対象画像の配置位置は、ユーザ入力部14を介してユーザからの指定を受け付けて決定すればよい。
【0137】
そして、ステップS19で生成された合成画像に対して、合成画像調整処理を行う(ステップS21)。ステップS21の合成画像調整処理は、図5、図13、及び図14のいずれかの例の手順で行ってよい。ただし、ステップS21の合成画像調整処理において対象画像調整処理(図7)を行う場合は、追加の対象画像について位置及び大きさの調整を行い、ステップS4で取得された合成画像にすでに含まれていた対象画像の位置及び大きさは変更しない。
【0138】
ステップS21の後、処理部16は、合成画像及びその復号の可否を出力し(ステップS11)、処理を終了する。
【0139】
以上で説明した図4及び図15に例示する処理部16の処理において、ステップS7又はステップS19で生成されて合成画像調整処理(ステップS9又はステップS21)の対象となる合成画像は、QRコードにおいてユーザが指定した位置に対象画像を配置した合成画像である。他の処理の例では、ステップS7又はステップS19において、対象画像の配置位置に関してユーザの指定を受け付けることなく、予め設定された対象画像の基準の座標(例えば、右上、左上、右下、又は左下の座標)が、予め設定されたコード語の対応する角の座標の値となるように対象画像を配置してもよい。本例の場合、合成画像調整処理の一部として行なわれる対象画像調整処理において、ステップS942(基準の座標の移動)を省略してよい。
【0140】
なお、以上では、二次元符号の例としてQRコードを用いて各種の実施形態の例を説明した。本発明の実施形態の例の処理は、予め設定された単位量の情報を表す単位情報領域(QRコードのコード語に相当する領域)を複数含み、誤り訂正機能を有する二次元符号であれば、QRコードの他の二次元符号に適用してもよい。QRコードの他の二次元符号についても、対象画像調整処理は、図7を参照して説明した処理においてQRコードのコード語を上述の単位情報領域に置き換えて同様に実行してよい。また、QRコード調整処理に対応する処理として、処理対象の二次元符号の生成に用いられる設定情報を変更して新たな二次元符号を生成し、当該新たな二次元符号を含む合成画像の復号の可否を判定する処理を行えばよい。
【0141】
以上で説明した実施形態の画像処理装置10は、典型的には、汎用のコンピュータにて上述の画像処理装置の各部の機能又は処理内容を記述したプログラムを実行することにより実現される。コンピュータは、例えば、ハードウエアとして、図16に示すように、CPU(中央演算装置)60、メモリ(一次記憶)62、各種I/O(入出力)インタフェース64などがバス66を介して接続された回路構成を有する。また、そのバス66に対し、例えばI/Oインタフェース64経由で、キーボードやマウスなどの入力装置68、及び、CRT(Cathode Ray Tube)や液晶ディスプレイなどの表示装置70が接続される。また、バス66には、I/Oインタフェース64を介して、HDD(ハードディスクドライブ)72や、CD、DVD、フラッシュメモリなどの各種規格の可搬型の不揮発性記録媒体を読み取るためのディスクドライブ74が接続される。このようなドライブ72,74は、メモリに対する外部記憶装置として機能する。実施形態の処理内容が記述されたプログラムがCDやDVDなどの記録媒体を経由して、又はネットワーク経由で、HDD72などの固定記憶装置に保存され、コンピュータにインストールされる。固定記憶装置に記憶されたプログラムがメモリ62に読み出されCPU60により実行されることにより、上述の各種の実施形態の処理が実現される。
【0142】
なお、以上では、画像処理装置10を1台のコンピュータにより実現する例の実施形態を説明したが、画像処理装置10の上述の例の各種の機能を複数のコンピュータに分散させて実現してもよい。
【符号の説明】
【0143】
10 画像処理装置、12 画像入力部、14 ユーザ入力部、16 処理部、18 記憶部、20 出力部、60 CPU、62 メモリ、64 I/Oインタフェース、66 バス、68 入力装置、70 表示装置、72 HDD、74 ディスクドライブ、160 二次元符号生成部、162 合成画像生成部、164 復号処理部、1620 調整処理部。
【特許請求の範囲】
【請求項1】
二次元符号の画像と指定された対象画像とを合成した画像である合成画像を生成する生成手段、を備え、
前記二次元符号の画像は、予め設定された単位量の情報を表す領域である単位情報領域を複数含み、
前記生成手段は、前記二次元符号の画像における前記複数の単位情報領域の位置に基づいて、前記二次元符号の画像において前記対象画像を配置する位置を決定し、決定した位置に前記対象画像を配置することで前記合成画像を生成する、
ことを特徴とする画像処理装置。
【請求項2】
前記生成手段は、前記合成画像において前記複数の単位情報領域のうち前記対象画像の領域との間に重複部分を有する単位情報領域の数が最小となるように、前記対象画像を配置する位置を決定する、
ことを特徴とする請求項1に記載の画像処理装置。
【請求項3】
前記生成手段は、前記合成画像において、前記対象画像の外周のうち予め設定された部分と、前記複数の単位情報領域のうちの1つの外周のうち予め設定された部分と、が重なるように前記対象画像を配置する位置を決定する、
ことを特徴とする請求項1又は2に記載の画像処理装置。
【請求項4】
前記合成画像に基づいて前記二次元符号が表す情報を復元できるか否かを判定する判定手段、
をさらに備え、
前記生成手段は、さらに、前記合成画像に含まれる前記二次元符号が表す情報を復元できないと前記判定手段が判定した場合に、前記対象画像を縮小して新たな前記合成画像を生成する、
ことを特徴とする請求項3に記載の画像処理装置。
【請求項5】
前記生成手段は、前記対象画像を縮小して新たな前記合成画像を生成するときに、前記合成画像において、前記対象画像の外周のうち予め設定された部分の位置を固定して前記対象画像を縮小する、
ことを特徴とする請求項4に記載の画像処理装置。
【請求項6】
前記生成手段は、前記対象画像を縮小して新たな前記合成画像を生成するときに、前記対象画像が前記複数の単位情報領域のうちの1つの領域内に収まるまで前記対象画像を縮小する、
ことを特徴とする請求項5に記載の画像処理装置。
【請求項7】
前記生成手段は、さらに、前記二次元符号の画像において前記対象画像を配置する位置について利用者からの指定を受け付けた場合に、前記利用者により指定された位置に前記対象画像を配置して前記合成画像を生成し、当該合成画像について前記二次元符号が表す情報を復元できないと前記判定手段が判定した場合に、前記利用者により指定された位置および前記二次元符号の画像における前記複数の単位情報領域の位置に基づいて決定した位置に前記対象画像を配置することで新たな前記合成画像を生成する、
ことを特徴とする請求項4から6のいずれか1項に記載の画像処理装置。
【請求項8】
前記生成手段は、前記利用者により指定された位置に前記対象画像を配置して生成した前記合成画像について前記二次元符号が表す情報を復元できないと前記判定手段が判定した場合に、前記新たな合成画像において、前記対象画像の外周のうち予め設定された部分と、当該対象画像の外周のうち予め設定された部分を含む前記単位情報領域の外周のうち予め設定された部分と、が重なるように、前記対象画像を配置する位置を決定する、
ことを特徴とする請求項7に記載の画像処理装置。
【請求項9】
前記対象画像の外周のうち予め設定された部分は、前記対象画像が前記利用者により指定された位置から前記二次元符号の画像の中心に向かう方向に移動して前記新たな合成画像が生成されるように設定される、
ことを特徴とする請求項8に記載の画像処理装置。
【請求項10】
前記生成手段は、さらに、前記対象画像が縦長か否かに基づいて、前記合成画像における前記二次元符号の画像の回転角度を決定する、
ことを特徴とする請求項1から9のいずれか1項に記載の画像処理装置。
【請求項11】
二次元符号の画像と指定された対象画像とを合成した画像である合成画像を生成する生成ステップ、をコンピュータに実行させ、
前記二次元符号の画像は、予め設定された単位量の情報を表す領域である単位情報領域を複数含み、
前記生成ステップにおいて、前記二次元符号の画像における前記複数の単位情報領域の位置に基づいて、前記二次元符号の画像において前記対象画像を配置する位置を決定し、決定した位置に前記対象画像を配置することで前記合成画像を生成する、
ことを特徴とするプログラム。
【請求項1】
二次元符号の画像と指定された対象画像とを合成した画像である合成画像を生成する生成手段、を備え、
前記二次元符号の画像は、予め設定された単位量の情報を表す領域である単位情報領域を複数含み、
前記生成手段は、前記二次元符号の画像における前記複数の単位情報領域の位置に基づいて、前記二次元符号の画像において前記対象画像を配置する位置を決定し、決定した位置に前記対象画像を配置することで前記合成画像を生成する、
ことを特徴とする画像処理装置。
【請求項2】
前記生成手段は、前記合成画像において前記複数の単位情報領域のうち前記対象画像の領域との間に重複部分を有する単位情報領域の数が最小となるように、前記対象画像を配置する位置を決定する、
ことを特徴とする請求項1に記載の画像処理装置。
【請求項3】
前記生成手段は、前記合成画像において、前記対象画像の外周のうち予め設定された部分と、前記複数の単位情報領域のうちの1つの外周のうち予め設定された部分と、が重なるように前記対象画像を配置する位置を決定する、
ことを特徴とする請求項1又は2に記載の画像処理装置。
【請求項4】
前記合成画像に基づいて前記二次元符号が表す情報を復元できるか否かを判定する判定手段、
をさらに備え、
前記生成手段は、さらに、前記合成画像に含まれる前記二次元符号が表す情報を復元できないと前記判定手段が判定した場合に、前記対象画像を縮小して新たな前記合成画像を生成する、
ことを特徴とする請求項3に記載の画像処理装置。
【請求項5】
前記生成手段は、前記対象画像を縮小して新たな前記合成画像を生成するときに、前記合成画像において、前記対象画像の外周のうち予め設定された部分の位置を固定して前記対象画像を縮小する、
ことを特徴とする請求項4に記載の画像処理装置。
【請求項6】
前記生成手段は、前記対象画像を縮小して新たな前記合成画像を生成するときに、前記対象画像が前記複数の単位情報領域のうちの1つの領域内に収まるまで前記対象画像を縮小する、
ことを特徴とする請求項5に記載の画像処理装置。
【請求項7】
前記生成手段は、さらに、前記二次元符号の画像において前記対象画像を配置する位置について利用者からの指定を受け付けた場合に、前記利用者により指定された位置に前記対象画像を配置して前記合成画像を生成し、当該合成画像について前記二次元符号が表す情報を復元できないと前記判定手段が判定した場合に、前記利用者により指定された位置および前記二次元符号の画像における前記複数の単位情報領域の位置に基づいて決定した位置に前記対象画像を配置することで新たな前記合成画像を生成する、
ことを特徴とする請求項4から6のいずれか1項に記載の画像処理装置。
【請求項8】
前記生成手段は、前記利用者により指定された位置に前記対象画像を配置して生成した前記合成画像について前記二次元符号が表す情報を復元できないと前記判定手段が判定した場合に、前記新たな合成画像において、前記対象画像の外周のうち予め設定された部分と、当該対象画像の外周のうち予め設定された部分を含む前記単位情報領域の外周のうち予め設定された部分と、が重なるように、前記対象画像を配置する位置を決定する、
ことを特徴とする請求項7に記載の画像処理装置。
【請求項9】
前記対象画像の外周のうち予め設定された部分は、前記対象画像が前記利用者により指定された位置から前記二次元符号の画像の中心に向かう方向に移動して前記新たな合成画像が生成されるように設定される、
ことを特徴とする請求項8に記載の画像処理装置。
【請求項10】
前記生成手段は、さらに、前記対象画像が縦長か否かに基づいて、前記合成画像における前記二次元符号の画像の回転角度を決定する、
ことを特徴とする請求項1から9のいずれか1項に記載の画像処理装置。
【請求項11】
二次元符号の画像と指定された対象画像とを合成した画像である合成画像を生成する生成ステップ、をコンピュータに実行させ、
前記二次元符号の画像は、予め設定された単位量の情報を表す領域である単位情報領域を複数含み、
前記生成ステップにおいて、前記二次元符号の画像における前記複数の単位情報領域の位置に基づいて、前記二次元符号の画像において前記対象画像を配置する位置を決定し、決定した位置に前記対象画像を配置することで前記合成画像を生成する、
ことを特徴とするプログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8A】
【図8B】
【図8C】
【図8D】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8A】
【図8B】
【図8C】
【図8D】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【公開番号】特開2011−39878(P2011−39878A)
【公開日】平成23年2月24日(2011.2.24)
【国際特許分類】
【出願番号】特願2009−187821(P2009−187821)
【出願日】平成21年8月13日(2009.8.13)
【出願人】(000005496)富士ゼロックス株式会社 (21,908)
【Fターム(参考)】
【公開日】平成23年2月24日(2011.2.24)
【国際特許分類】
【出願日】平成21年8月13日(2009.8.13)
【出願人】(000005496)富士ゼロックス株式会社 (21,908)
【Fターム(参考)】
[ Back to top ]