説明

画像処理装置、画像処理方法、および、画像処理プログラム

【課題】 撮像画像から元の画像を特定した上で、改変された位置を高速に特定することができる画像処理装置、画像処理方法、および、画像処理プログラムを提供する。
【解決手段】 画像処理装置は、コードが埋め込まれた第1の印刷画像に対して改変が付加された第2の印刷画像を撮影することによって撮影画像を取得する画像取得部と、撮影画像から第2の印刷画像の特徴量に基づいて第1の印刷画像に埋め込まれたコードを得るデコード部と、デコード部で得られたコードに基づいて撮影画像における改変箇所の座標を取得する改変座標取得部と、を備える。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、画像処理装置、画像処理方法、および、画像処理プログラムに関する。
【背景技術】
【0002】
紙などの媒体に印刷された画像を取り込み、取り込まれた画像に対して処理する技術などが開示されている。一方で、サーバから通信によって取り込んだ画像をクライアントで処理するとともに表示する技術などが開示されている。このように、画像を処理する技術が開示されている。
【0003】
印刷された画像を識別する技術として、画像の特徴点を用いて他の画像との一致を判定する方法がある。該方法では、サーバまたはローカルに候補となる画像群を用意しておき、印刷された画像の画素の一部を特徴点として該画像群の特徴点と比較し、全てまたは所定値以上の特徴点が一致する画像を選定し、識別情報を特定する。
【0004】
印刷された画像を識別する別の技術として、人間の目には見えづらい形でコードを元の印刷された画像に埋め込み、該印刷された画像を光学的に撮影した撮影画像から、埋め込まれたコードを特定して、画像を特定する方法がある。撮影画像に含まれる元の画像から、ユーザによって改変された位置を検出する方法としては、元の画像が特定されている場合に、前述の特徴点を比較し異なる位置を改変箇所として特定する方法がある。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2006−113509号公報
【特許文献2】特開2009−300501号公報
【特許文献3】特開2001−134776号公報
【特許文献4】特開2000−222565号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
特徴点を用いて画像の一致を判定する技術には以下の3点の課題がある。1点目は、特徴点による画像比較を行う場合にサーバまたはローカルに画像を用意しておく必要がある点である。これによりサーバまたはローカルに一定以上の記憶領域を使用する必要があり、さらに元の画像を登録しておく必要があるため運用コストがかかる。
【0007】
2点目は、ネットワーク上の通信によって処理速度が遅くなる点である。3点目は、与えられた画像が改変されるような場合において、サーバまたはローカルに登録されたどの画像とも特徴点が一致しなくなり画像が識別できない場合が発生する点である。また、誤った画像と一致していると判定される可能性もある。
【0008】
一方、画像に埋め込まれたコードを検出する方法では、サーバまたはローカルに元画像を用意することなく画像の特定が可能である。また該方法では、印刷画像の一部に改変があった場合でも誤り訂正によって元の埋め込まれたコードを検出することが可能である。しかしながら、改変があった箇所を特定する方法については提案されていない。
【0009】
本発明は上記課題に鑑みなされたものであり、撮像画像から元の画像を特定した上で、改変された位置を高速に特定することができる画像処理装置、画像処理方法、および、画像処理プログラムを提供することを目的とする。
【課題を解決するための手段】
【0010】
上記課題を解決するために、明細書開示の画像処理装置は、コードが埋め込まれた第1の印刷画像に対して改変が付加された第2の印刷画像を撮影することによって撮影画像を取得する画像取得部と、前記撮影画像から第2の印刷画像の特徴量に基づいて前記第1の印刷画像に埋め込まれたコードを得るデコード部と、前記デコード部で得られたコードに基づいて、前記撮影画像における改変箇所の座標を取得する改変座標取得部と、を備えるものである。
【0011】
上記課題を解決するために、明細書開示の画像処理方法は、コードが埋め込まれた第1の印刷画像に対して改変が付加された第2の印刷画像を撮影することによって撮影画像を取得する画像取得ステップと、前記撮影画像から第2の印刷画像の特徴量に基づいて前記第1の印刷画像に埋め込まれたコードを得るデコードステップと、前記デコードステップで得られたコードに基づいて、前記撮影画像における改変箇所の座標を取得する改変座標取得ステップと、を含むものである。
【0012】
上記課題を解決するために、明細書開示の画像処理プログラムは、コンピュータに、コードが埋め込まれた第1の印刷画像に対して改変が付加された第2の印刷画像を撮影することによって撮影画像を取得する画像取得ステップと、前記撮影画像から第2の印刷画像の特徴量に基づいて前記第1の印刷画像に埋め込まれたコードを得るデコードステップと、前記デコードステップで得られたコードに基づいて、前記撮影画像における改変箇所の座標を取得する改変座標取得ステップと、を実行させるものである。
【発明の効果】
【0013】
明細書開示の画像処理装置、画像処理方法、および、画像処理プログラムによれば、撮像画像から元の画像を特定した上で改変された位置を高速に特定することができる。
【図面の簡単な説明】
【0014】
【図1】実施例1に係る画像処理装置のハードウェア構成を説明するためのブロック図である。
【図2】実施例1に係る画像処理プログラムの実行によって実現される各機能のブロック図である。
【図3】(a)は、実施例1において用いる印刷画像Pについて説明するための図であり、(b)は、四角形領域SQについて説明するための図である。
【図4】四角形領域SQについて説明するための図である。
【図5】36ビットの同一コードを説明するための図である。
【図6】(a)は四角形領域SQ´を説明するための図であり、(b)は撮影された四角形領域SQ´を説明するための図である。
【図7】実施例1に係る画像処理装置によって実行されるフローチャートの一例を説明するための図である。
【図8】デコードの手順を説明するための図である。
【図9】ステップS4の詳細を表すフローチャートの一例を説明するための図である。
【図10】エラービットパターンBeの取得過程の詳細を表している。
【図11】四角形領域SQ´に含まれるペアブロックの位置を説明するための図である。
【図12】(a)は、1回目に取得したペアブロック群の位置の例を示し、(b)は、2回目に走査を行ったペアブロック群の位置を示す図である。
【図13】ペアブロック群の走査の詳細を表す図である。
【図14】改変ペアブロックの位置を表す図である。
【図15】撮影画像I上にテキストが表示された図である。
【図16】テーブルの一例を説明するための図である。
【図17】実施例2に係る画像処理装置のハードウェア構成を説明するためのブロック図である。
【図18】実施例2に係る画像処理プログラムの実行によって実現される各機能のブロック図である。
【図19】実施例2において用いるカレンダーについて説明するための図である。
【図20】カレンダーの3か所に記入されたスケジュールSC1,SC2,SC3を説明するための図である。
【図21】日付欄全体SQ2の単ブロックを説明するための図である。
【図22】実施例2に係る画像処理装置によって実行されるフローチャートの一例を説明するための図である。
【図23】1回目に走査するペアブロック群の位置を説明するための図である。
【図24】紙に書き込んだスケジュールが表示された画面を説明するための図である。
【図25】実施例3に係る画像処理装置の外観図である。
【発明を実施するための形態】
【0015】
以下、図面を参照しつつ、実施例について説明する。
【実施例1】
【0016】
実施例1に係る画像処理装置100は、ユーザによって改変された印刷画像を撮影することによって、印刷画像に埋め込まれたコードと改変箇所とを特定する装置である。印刷画像は、印刷媒体に印刷された画像である。印刷媒体は、情報が紙面などに読み取り可能に描画されている媒体をいう。印刷媒体は、例えば、紙面にインク、塗料などで印刷された新聞、雑誌、書籍、広告のちらし、ポスターなどを含む。また、広告媒体は、広告のちらしの他、屋外広告の看板、屋外の大型ディスプレイの表示、テレビの画像広告、インターネットのウェブ上の画像広告などを含む。
【0017】
本実施例においては、一例として、正解の地名を確認することができる地理学習システムについて説明する。具体的には、本実施例においては、画像処理装置100は、ユーザによって地名が記入された白地図の印刷画像を撮影することによって、ユーザによって記入された箇所のみの正解を撮影画像に重畳して表示する。
【0018】
図1は、実施例1に係る画像処理装置100のハードウェア構成を説明するためのブロック図である。図1を参照して、画像処理装置100は、CPU10、RAM20、通信部30、操作部40、インタフェース50、撮影装置60、記憶装置70、メディアアクセス装置80、インタフェース90などを含む。これらの各機器は、バスなどによって接続されている。
【0019】
CPU10は、中央演算処理装置である。CPU10は、1以上のコアを含む。RAM20は、CPU10が実行するプログラム、CPU10が処理するデータなどを一時的に記憶する揮発性メモリである。なお、RAM20は、ROMおよびDRAM(Dynamic Random Access Memory)を含んでいてもよい。
【0020】
記憶装置70は、不揮発性記憶装置であり、フラッシュメモリなどのソリッド・ステート・ドライブ(SSD)等である。また、記憶装置70は、ハードディスクドライブに駆動されるハードディスクなどであってもよい。さらに、記憶装置70は、外部記憶装置であってもよい。なお、記憶装置70は、RAM20と一体化されていてもよい。また、記憶装置70とRAM20とが同一の物理アドレス空間に配置されてもよい。記憶装置70は、本実施例に係る画像処理プログラムを記憶する。
【0021】
ディスプレイ300は、例えば、液晶ディスプレイ、エレクトロルミネッセンスパネル等である。インタフェース90は、例えば、VGA(Video Graphics Array)等のグラフィックスモジュール、DVI(Digital Visual Interface)等のインタフェースである。画像処理装置100は、インタフェース90を介してディスプレイ300に接続されている。
【0022】
操作部40は、キー配列、マウス、タッチパネル、静電パッド等の入力装置である。キー配列は、複数の押しボタンを含む。なお、キー配列としてキーボードを用いてもよい。静電パッドは、平面パッドを指等でなぞるユーザ操作を検知し、ユーザ操作に応じてディスプレイ300上のカーソルの位置と移動状態とを制御するために使用される装置である。例えば、平面パッド下の電極の静電容量変化に基づいて、ユーザの指の動きが検知される。
【0023】
通信部30は、例えば、無線LAN(Local Area Network)などのインタフェースである。ただし、通信部30は、携帯電話基地局との通信部、あるいはPHS(Personal Handy Phone System)基地局との通信部であってもよい。また、通信部30は、LANへの接続インタフェース(NIC(Network Interface Card))であってもよい。画像処理装置100は、通信部30を通じて、ネットワーク上のサーバ200と通信し、情報を取得する。なお、サーバ200に保存されているデータは、記憶装置70に記憶されていてもよい。
【0024】
メディアアクセス装置80は、例えば、フラッシュメモリカード等の入出力装置である。メディアアクセス装置80は、CD(Compact Disk)、DVD(Digital Versatile Disk)、ブルーレイディスクなどの入出力装置へのインタフェースであってもよい。
【0025】
撮影装置60は、例えば、CCD(Charge Coupled Device)デバイス、MOS(Metal Oxide Semiconductor)デバイスなどである。撮影装置60は、インタフェース50に接続される。インタフェース50は、USBのような外部インタフェースであってもよい。また、インタフェース50は、撮影装置60のメーカ独自のインタフェースであってもよい。また、撮影装置60が画像処理装置100に内蔵される場合には、インタフェース50は、CPU10と通信可能などのようなインタフェースであってもよい。
【0026】
記憶装置70に記憶されている画像処理プログラムは、実行可能にRAM20に展開される。CPU10は、RAM20に展開された画像処理プログラムを実行する。それにより、画像処理装置100による画像処理が実行される。図2は、画像処理プログラムの実行によって実現される各機能のブロック図である。
【0027】
図2を参照して、画像処理装置100は、画像取得部110、デコード部120、改変座標取得部130、通信部140、および表示部150として機能する。さらに、改変座標取得部130は、正解ビットパターン取得部131、エラービットパターン取得部132、改変箇所検出部133、および改変座標変換部134として機能する。画像取得部110は、図1の撮影装置60およびインタフェース50に対応する。また、通信部140は、図1の通信部30に対応する。また、表示部150は、インタフェース90に対応する。
【0028】
図3(a)は、本実施例において用いる印刷画像P(第1の印刷画像)について説明するための図である。図3(a)を参照して、本実施例においては、都道府県名が書き込まれていない日本地図を印刷画像Pとして用いる。印刷画像Pは、1以上の領域に分割されている。デコード部120は、分割されたいずれかの領域(所定領域)に対してデコード処理する。詳細は後述する。分割された領域の形状は特に限定されるものではない。本実施例においては、印刷画像Pは、縦横の罫線によって横10個×縦11個の計110個の四角形領域に分割されている。
【0029】
図3(b)は、上記の110個の四角形領域の1つである四角形領域SQについて説明するための図である。四角形領域SQには、当該地域に対応する位置コードGが埋め込まれている。位置コードGは、左上隅の緯度、左上隅の経度および緯度範囲、経度範囲の値であってもよい。また、位置コードGは、四角形領域SQの特定座標であってもよく、たとえば四角形の中心についての位置情報を一意に判定可能な値(郵便番号など)を示す値であってもよい。ただしこの場合には、該値を用いて四角形領域SQの任意の点についても位置コードGが計算できるように、地図の縮尺および方向が規定されている。
【0030】
本実施例においては、四角形領域SQは、M行×N列の単ブロックに分割されている。各単ブロックの特徴量を変更することによって位置コードGが埋め込まれている。図4で説明する四角形領域SQは、一例として24行×24列に分割されている。2つの単ブロック(以後、ペアブロックまたはブロックと称する。)の特徴量に差を設定することにより、ペアブロックに「0」または「1」のビットが割り当てられている。特徴量とは、例えば、単ブロックに含まれる画素の平均濃度、階調のレベル、単ブロックに含まれる画素の特定色(例えば黄色)の平均濃度などである。ペアブロックは、互いに離れた2つの単ブロックであってもよく、互いに隣接する2つの単ブロックであってもよい。本実施例においては、互いに隣接する2つの単ブロックをペアブロックとする。
【0031】
例えば、単ブロックAの特徴量が隣接する単ブロックBの特徴量よりも小さい場合に、ペアブロックのビットを「0」と定義する。また、単ブロックAの特徴量が単ブロックBの特徴量よりも大きい場合に、ペアブロックのビットを「1」と定義する。図4の例では、1行あたりに12個のペアブロック(24単ブロック)が含まれるため、各行は12ビット分のコードを表すことができる。したがって、全行(24行)で、288ビット分のコードを表すことができる。
【0032】
ただし、288ビットのコードに限定されることはない。例えば、図5を参照して、36ビットの同一コードを複数回(例えば8回)繰り返して四角形領域SQに埋め込んでもよい。同一コードを複数回埋め込むことで、多数決によっていわゆる誤り訂正を行うことができる。なお、単ブロック数が24×24に限定される訳ではない。また、コードに誤り検出符号を含むこともできる。
【0033】
図5の例では、四角形領域SQに埋め込まれるコード(以下、埋め込みコードC)は、「011010000101100110101011101101101110」の36ビットである。この36ビットのデータが8回繰り返して埋め込まれている。コードを埋め込む方向として、例えば、左上から右下に向かう方向とすることができる。すなわち、図5の左から右に向かう行方向について、最上位の行を第1行と定義し、最下位の行を第24行と定義する。そして、各行ごとに左から右に並ぶペアブロックごとにビットを定義する。さらに、第1行を開始行とし、第24行を終了行とする。
【0034】
図5は、8回の繰り返しの埋め込み位置を表している。埋め込みコードCのうち先頭の12ビット「011010000101」が位置コードGで、残りの24ビット「100110101011101101101110」が誤り訂正コードEである。誤り訂正コードEによって、埋め込みコードCのうち任意の5ビットまで誤りがあっても正しく位置コードGを検出することができる。
【0035】
埋め込みコードCの埋め込み方法は、例えば、パラメータdirに対して、dir={0,1,2,3}という4つの値によって定義できる。dir=0とは、四角形領域SQの左上から開始し、左から右への行方向のペアブロック群によって、右下で終了するようにコードが埋めこまれた場合である。dir=1は、dir=0のコード埋め込み方向を90度時計回りに回転したコードの埋め込み方向を指定する。すなわち、dir=1とは、四角形領域SQの右上から開始し、上から下への列方向のペアブロック群によって、左下で終了するようにコードが埋めこまれた場合である。
【0036】
dir=2は、dir=0のコード埋め込み方向を180度時計回りに回転したコードの埋め込み方向を指定する。すなわち、dir=2とは、四角形領域SQの右下から開始し、右から左への行方向のペアブロック列に群によって、左上で終了するようにコードが埋めこまれた場合である。dir=3は、dir=0のコード埋め込み方向を270度時計回りに回転したコードの埋め込み方向を指定する。すなわち、dir=3とは、四角形領域SQの左下から開始し、下から上への列方向のペアブロック群によって、右上で終了するようにコードが埋めこまれた場合である。ただし、情報の埋め込み方向は、上記の場合に限定される訳ではない。例えば、上記定義とは逆に半時計周りに回転する方向で、dir={0,1,2,3}を定義してもよい。dir=0が、左上から開始するものでなくてもよい。
【0037】
例えば、地図上の埋め込みコードは、地図上の東西南北を基準に、地図の上方向を北とする画像で、dir=0の埋め込み方向で埋め込むものとする。さらに、ネットワーク経由で取得される緯度経度情報は、地図上の東西南北を基準に、上を北とする画像でdir=0の埋め込み方向のときの左上点、右上点、右下点、左下点の緯度、経度が取得できるとする。デコード部120は、得られた埋め込みコードに基づいて、四角形領域SQの四隅の緯度および経度をサーバ200から取得する。デコード部120は、サーバ200から取得した緯度経度情報と、四角形領域SQの四隅座標とを対応付ける。ここで、四角形領域SQの四隅座標は、撮影装置60が撮影した画像上の座標軸での座標である。
【0038】
このような定義を前提として、デコード部120が埋め込み方向dir=0を検出した場合には、デコード部120は、サーバ200から取得した緯度および経度を左上点、右上点、右下点、左下点の緯度および経度として用いればよい。埋め込み方向dir=0を検出できたか否かは、撮影された画像に対して、デコード部120が埋め込み方向dir=0でのデコード処理を試行し、デコードが成功したことによって判定できる。デコードが成功したか否かは、例えば、コードを示す情報の誤り検出において、誤りが検出されず、正常に復号できたか否かで判定できる。また、埋め込まれる情報に、コードそのものの他、特定の記号、例えば、"code="というようなコマンドあるいはキーワードを埋め込んでおいてもよい。そして、デコード部120は、コードとともに、コマンド、あるいはキーワードが検出されたことによって、正常にデコードできたか否かを判定してもよい。
【0039】
また、デコード部120が例えば埋め込み方向dir=1を検出した場合には、デコード部120は、サーバ200から取得した緯度および経度を反時計回りに90回転させて左上点、右上点、右下点、左下点の緯度および経度として用いればよい。dir=2、dir=3の場合も同様である。
【0040】
図6(a)は、印刷画像Pの四角形領域SQにユーザがペンで一部の県名を記入することによって改変された四角形領域SQ´(第2の印刷画像)を説明するための図である。なお、ここでいう記入とは、ペンで記入することに限られず、文字が記入されたシールなどを貼付することも含まれる。図6(a)の例では、長野県(改変箇所M1)および静岡県(改変箇所M2)の2箇所が、文字の記入によって改変されている。改変箇所M1,M2の特定には、デコード処理において訂正された誤りビット情報を用いる。
【0041】
図6(b)は、撮影装置60によって撮影された四角形領域SQ´の撮影画像Iを説明するための図である。撮影画像Iでは、印刷画像Pに対する撮影装置60の傾き回転角度によって、四角形領域SQ´がゆがんで撮影されることがある。本実施例では、撮影画像Iの中から、埋め込まれた位置コードGを特定するとともに、改変箇所M1,M2の座標とその座標に相当する位置コードGを特定する。
【0042】
続いて、誤りビット情報と改変箇所との関係について説明する。ユーザにより改変された四角形領域SQ´のうち、ユーザが改変した改変箇所M1,M2の領域については、元の四角形領域SQで設定されていた特徴量が変化することになる。たとえば、あるペアブロックについて、黄色の階調レベルを特徴量として大小関係を比較する場合において、元の四角形領域SQでは左側の単ブロックの黄色階調レベルYl=200、右側の単ブロックの黄色階調レベルYr=170であるとする。この場合、Yl>Yrとなるので当該ペアブロックには「1」のビットが埋め込まれていると判定できる。
【0043】
ユーザが黒いペンで情報を記入した際に、当該ペアブロックの左側の単ブロックに黒いインクが上書きされると、当該単ブロックの黄色階調レベルYrが変更され、たとえば、Yr´=100となる。これにより、Yl<Yr´となり、当該ペアブロックには「0」のビットが埋め込まれていると判定される。この場合、四角形領域SQと四角形領域SQ´とで、当該ペアブロックのビットが異なるため、当該ペアブロックに対して判定されるビットは誤りビットとなる。
【0044】
なお、上書きされた場合でも、たとえば黄色階調レベルYrが変更され、Yr´=50となるような場合ではYl>Yr´となる大小関係は元の状態と変わらないため、判定されるビットは誤りビットにならない。ユーザがペンなどで情報を上書きする際に単ブロックの位置を意識して記入することはない場合、上書きされたことによる特徴量の大小関係の変化が起こる確率と起こらない確率とは等しいといえる。したがって、上書きされたペアブロックでは、平均して50%の誤りが発生する。互いに隣接する複数の所定個数のペアブロック(以下、ペアブロック群と呼ぶ)において50%から所定の範囲内のしきい値以上(例えば40%以上)のペアブロックが誤りを含むペアブロック群の位置を改変箇所として特定することが好ましい。
【0045】
図7は、画像処理装置100によって実行されるフローチャートの一例を説明するための図である。図7を参照して、画像取得部110は、撮影画像Iを取得する(ステップS1)。撮影画像Iは、カメラプレビューで取得される毎秒例えば15枚の撮影画像の全てでもよく、ユーザがシャッターを押して取得した一枚の撮影画像であってもよい。
【0046】
次に、デコード部120は、撮影画像Iに含まれる四角形領域SQ´に埋め込まれた位置コードGに対してデコード処理する(ステップS2)。デコード部120は、最初に四隅の座標を検出する。四隅の座標検出については、ハフ変換を用いた方法を使用して、四角形領域の四隅の辺を特定し、辺の交点座標を四隅の座標として検出すればよい。
【0047】
ハフ変換は、XY座表系のN個の点のうちの最も多くの点を通過する直線LMを求める手法として知られている。例えば、直線LMの式をy=a*x+bと仮定する。ここで、「*」は乗算記号である。このとき、XY座表系のN個の点(xi,yi)i=1,Nを通る複数の関係式yi=ai*xi+biが作成できる。関係式yi=ai*xi+biは、座標系(a,b)では、複数の直線の軌跡を構成する。XY座表系のN個の点(xi,yi)i=1,Nが一直線上(傾きa0、Y切片b0)にある場合には、関係式yi=ai*xi+biは、一点(a0,b0)を通る直線群となる。そこで、(a,b)座標系で最も多くの直線が通過する点(a0,b0)を求めることで、XY座表系のN個の点(xi,yi)i=1,Nの最も多数を通る直線を求めることができる。
【0048】
四隅座標が1つでも検出できなかった場合には、デコード部120は、デコード処理を終了する。四隅座標が全て検出できた場合には、デコード部120は、四角形領域の4辺を順に埋め込み領域の上辺とした場合について、上辺方向に並ぶペアブロックに対して、画像の特徴量からビット0かビット1かを判定する。すなわち、デコード部120は、上辺に隣接するペアブロックの並びをビットの埋め込みと同一方向に辿り、ペアブロック内の単ブロック間で、特徴量を比較する。上辺に隣接するペアブロックの並びが第1ブロック群に相当する。デコード部120は、ビット埋め込み時と同一の定義にしたがって、ビット=0またはビット=1を判定する。特徴量が同一と判定された場合には、該ビットについては不定として、「2」を割り当てる。本実施例において、1行について12ビットの情報が得られることになる。
【0049】
図8を参照して、本実施例においては、全24行で計288ビットの暫定ビットパターンBtが得られる。8回の埋め込みに合わせて、36ビットごとの多数決を実施することによって、36ビットの埋め込みコードC´が得られる。この際、不定として「2」を割り当てられたビットについては多数決から除外する。多数決の際に、「0」と「1」とが同数になった場合には、「0」または「1」のどちらかを強制的に割り当てる。たとえば、偶数番目のビットでは「0」を、奇数番目のビットでは「1」を割り当てる。
【0050】
次に、図7を再度参照して、デコード部120は、デコード処理が成功したか否かを判定する(ステップS3)。ステップS3においては、誤り訂正処理により、埋め込みコードC´から誤りビットの検出・訂正を行い、誤り訂正に成功すると四角形領域SQ´に埋め込まれた位置コードGが特定される。この場合、デコード処理が成功したと判定される。誤り訂正に失敗した場合には、デコード処理が成功しなかったと判定される。誤り訂正には、BCH、リードソロモンなどの方式がある。ステップS3においてデコード処理が成功したと判定されなかった場合には、フローチャートの実行が終了する。ステップS3においてデコード処理が成功したと判定された場合、改変座標取得部130は、改変箇所を検出する(ステップS4)。
【0051】
図9は、ステップS4の詳細を表すフローチャートの一例を説明するための図である。図9を参照して、まず、正解ビットパターン取得部131は、四角形領域SQ´に含まれる正解ビットパターンBcを取得する(ステップS11)。正解ビットパターン取得部131は、位置コードGに基づいて、誤り検出コードEを追加した埋め込みコードCを特定し、埋め込みコードCを8回繰り返した288ビットの正解ビットパターンBcを得る。
【0052】
次に、エラービットパターン取得部132は、正解ビットパターンBcと暫定ビットパターンBtとを比較することによって、エラービットパターンBeを取得する。この場合、各n番目の正解ビットパターンBcと暫定ビットパターンBtとを比較し、一致していればエラービットパターンBeのn番目に正解ビットとして「1」を、異なっていれば誤りビットとして「0」を割り当てる。この処理を1番目から288番目までの全ビットについて行い、288ビットのエラービットパターンBeを取得する。図10は、エラービットパターンBeの取得過程の詳細を表している。
【0053】
図11(a)および図11(b)は、四角形領域SQ´に含まれるペアブロックの位置を説明するための図である。図11(b)では、正解ビットおよび誤りビットが表されている。図11(b)を参照して、誤りビットと判定されたペアブロックは、改変箇所M1,M2の周囲に集中的に発生している。改変箇所M1,M2以外の箇所の誤りビットは、撮影画像に発生したカメラのノイズ、紙の一部の汚れなどが原因で生じる。これらの原因による誤りビットは、改変箇所と比べて発生位置が集中的ではなく分散する。
【0054】
次に、図9を再度参照して、改変箇所検出部133は、四角形領域SQ´内のペアブロックについて、所定のペアブロックを中心とする3行×3列のペアブロックの集合(以後、ペアブロック群と呼ぶ)を1つ取得する(ステップS13)。図12(a)は、1回目に取得したペアブロック群の位置の例を示す。次に、改変箇所検出部133は、該ペアブロック群に含まれる誤りビットの数Neが所定の割合Th以上であるか否かを判定する(ステップS14)。ステップS14において「Yes」と判定された場合、改変箇所検出部133は、該ペアブロック群の中心のペアブロックを改変ペアブロックと判定する(ステップS15)。所定の割合Thは、上書きされたペアブロックにおける誤りビットの発生確率50%をもとに決定した値である。所定の割合Thは、たとえばペアブロック群に含まれるペアブロックの数9個の50%に相当する4.5個の小数点を切り捨てた数である「4」とする。
【0055】
図9を再度参照して、ステップS14において「No」と判定された場合およびステップS15の実行後、改変箇所検出部133は、全てのペアブロック群の走査が完了したか否かを判定する(ステップS16)。ステップS16において「No」と判定された場合、改変箇所検出部133は、対象を1ペアブロック分進行方向に走査を進め、改変ペアブロックの判定を再度行う(ステップS17)。ステップS17の実行後、ステップS13が再度実行される。図12(b)は、2回目に走査を行ったペアブロック群の位置を説明するための図である。なお、ペアブロック群のサイズは3行×3列以外でもよい。また、ペアブロック群は、図12(c)および図12(d)を参照して、正方形でなくてもよい。ペアブロック群は、2以上のペアブロックから構成され、所定のペアブロックと、該ペアブロックと隣接するまたは頂点が一致するペアブロックとから構成されていればよい。
【0056】
図13は、ペアブロック群の走査の詳細を表している。図13の走査の結果、四角形領域SQ´に含まれるすべてのペアブロック群について、改変ペアブロックは以下の17個であった。なお、ここでは、(ペアブロックのN列目、ペアブロックのM行目)として表記した。図14は、当該17個の改変ペアブロックの位置を表す。
(4,5)、(4,6)、(4,7)、(4,8)
(2,22)、(3,22)、(4,22)、(6,22)
(2,23)、(3,23)、(4,23)、(5,23)、(6,23)、(7,23)
(3,24)、(4,24)、(5,24)
【0057】
次に、図9を再度参照して、改変箇所検出部133は、当該17個の改変ペアブロックについて、列または行が隣接するペアブロックを検出する。具体的には、改変箇所検出部133は、列および行のどちらかが同じで、かつもう片方の値の差が±1となる改変ペアブロックを検出する。さらに、改変箇所検出部133は、それらの列および行を平均して、改変ペアブロックの中央の列および行を求める(ステップS18)。
【0058】
本実施例においては、隣接する改変ペアブロックは、
(4,5)、(4,6)、(4,7)、(4,8)と、
(2,22)、(3,22)、(4,22)、(6,22)、(2,23)、(3,23)、(4,23)、(5,23)、(6,23)、(7,23)、(3,24)、(4,24)、(5,24)との2組に分類される。
【0059】
中央のペアブロックの列および行の平均をEM1,EM2とすると、
EM1=(4,6.5)
EM2=(4.2,22.9)
となる。
【0060】
次に、改変座標変換部134は、EM1、EM2の列および行の情報を地理コードGM1,GM2に変換する(ステップS19)。改変箇所の地理コードが緯度および経度であった場合には、改変座標変換部134は、以下の処理によりGM1,GM2を求める。まず、デコード処理において四角形領域SQ´の左上隅の緯度、左上隅の経度、緯度範囲、および経度範囲が特定されているので、改変座標変換部134は、これらをもとに四隅の緯度経度を計算する。また、四隅のペアブロックの座標系(列,行)における座標は(0,0)(12,0)(0,24)(12,24)となるので、改変座標変換部134は、四隅の対応から射影変換による座標変換方法で緯度経度座標系への座標変換式を求める。
【0061】
変換前の4点の座標を(X1,Y1)(X2,Y2)(X3,Y3)(X4,Y4)とし、変換後の座標を(x1,y1)(x2,y2)(x3,y3)(x4,y4)とする。この場合、射影変換の連立方程式は次のように表される。それにより、変換係数A〜Hを求めることができる。
【0062】
X1*A+Y1*B+C−x1*X1*G−x1*Y1*H=x1
X1*D+Y1*E+F−y1*X1*G−y1*Y1*H=y1
X2*A+Y2*B+C−x2*X2*G−x2*Y2*H=x2
X2*D+Y2*E+F−y2*X2*G−y2*Y2*H=y2
X3*A+Y3*B+C−x3*X3*G−x3*Y3*H=x3
X3*D+Y3*E+F−y3*X3*G−y3*Y3*H=y3
X4*A+Y4*B+C−x4*X4*G−x4*Y4*H=x4
X4*D+Y4*E+F−y4*X4*G−y4*Y4*H=y4
【0063】
次に、改変座標変換部134は、以上の式から求めた係数A〜Hを使った下式の座標変換式を作成する。改変座標変換部134は、下記座標変換式を用いて、四角形領域SQ´の四隅の座標を緯度および経度に変換する。ここで、XおよびYは撮影画像の座標系、xおよびyは緯度および経度である。
x=(A*X+B*Y+C)/(G*X+H*Y+1)
y=(D*X+E*Y+F)/(G*X+H*Y+1)
【0064】
改変座標変換部134は、求めた座標変換式にEM1,EM2を代入してGM1,GM2を得る。次に、図7を再度参照して、改変座標変換部134は、1個以上の改変箇所が検出できたか否かを判定する(ステップS5)。ここで、1個の改変箇所とは、互いに隣接するペアブロックによって構成されるペアブロック群のことである。図14の例では、2個の改変箇所が検出される。ステップS5において「No」と判定された場合には、フローチャートの実行が終了する。ステップS5において「Yes」と判定された場合には、通信部140は、改変箇所の地理コードGM1,GM2を、サーバ200に送信する。サーバ200は、地理コードGM1,GM2に対応する地名を通信部140に返す。それにより、通信部140は、改変箇所の地名を取得する(ステップS6)なお、地理コードに対応する地名は、記憶装置70に記憶されていてもよい。
【0065】
本実施例においては、地理コードGM1は「長野県」に対応し、地理コードGM2は「静岡県」にする。表示部150は、ディスプレイ300に撮影画像Iを表示させる。さらに、表示部150は、サーバ200から取得した「長野県」のテキスト情報を撮影画像I上の(XM1,YM1)の座標に、「静岡県」のテキスト情報を(XM2,YM2)の座標に重ねて表示させる(ステップS7)。その後、フローチャートの実行が終了する。
【0066】
(XM1,YM1)および(XM2,YM2)は、デコード処理で検出された四角形領域SQ´の撮影画像IにおけるXY座標情報と、四隅のペアブロックの座標系(列,行)における座標情報とから、前述の座標変換方法で得られる。以上の処理により、図15を参照して、撮影画像I上にテキストが表示される。なお、テキストの表示はテキストの中央が指定した座標となるようにしてもよいし、指定した座標に丸印などのアイコンを表示したうえで、その上下左右いずれかの方向に、テキストを表示してもよい。また、地理情報データベースから返却された改変箇所のテキスト情報に重複がある場合には、重複するテキストについてはいずれか一箇所のみを選択して(たとえば画面中央に最も近い座標に)表示してもよい。
【0067】
図16(a)は、サーバ200または記憶装置70に記憶されている四角形領域SQの座標情報のテーブルの一例を説明するための図である。図16(b)は、サーバ200または記憶装置70に記憶されている地理コードと地名との関係のテーブルの一例を説明するための図である。
【0068】
本実施例によれば、撮影画像から元の画像を特定することができる。また、改変箇所の特定に際して、改変画像と元画像とを照合しなくてもよい。これにより、元画像をサーバまたはローカルに用意する必要がなくなり、サーバまたはローカルの記憶領域の使用を削減でき、運用コストが下がる。また、ネットワーク上の通信を行わなくてもよくなる。
【0069】
また、元画像との照合を行わなくてもよいため、改変箇所を高速に特定することができる。元画像との照合では、比較のために撮影画像を射影変換して元画像の座標系に合わせた上で、元画像との階調レベルなどを画素単位で比較する方法がある。このとき、撮影画像が横480画素、縦640画素、元画像が縦500画素、横700画素とすると、比較のために参照する画素の数は480×640+500×700=657200画素となる。一方、本実施例の方式では、参照する情報は埋め込みペアブロックのビットパターンの情報で、本実施例では12×24=288である。したがって、参照するデータの数が大幅に減少されるため、高速処理が可能となる。
【0070】
また、本実施例によれば、改変された箇所の地名を選択的に表示することができる。改変の有無にかかわらず知名が表示されれば、ユーザが答えを記入していない箇所が残っていても、すべての正解が表示されてしまう。地図上で解答が記入済みの地域と未記入の地域とが隣接して入り組んでいるような場合に、記入済みの地域のみを撮影するということは困難である。本実施例によれば、ユーザが学習途中に解答を記入済みの地域と未記入の地域とを含む地図を撮影しても、記入済の箇所の正解が選択的に表示される。それにより、記入の都度解答を確認することができるため、学習効果の向上が期待できる。
【実施例2】
【0071】
実施例2では、紙のカレンダーにユーザが記入した情報を、記入した日付とともに検出する予定記入検出システムについて説明する。図17は、実施例2に係る画像処理装置100aのハードウェア構成を説明するためのブロック図である。図17を参照して、画像処理装置100aが図1の画像処理装置100と異なる点は、通信部30が備わっていない点である。本実施例においては、記憶装置70は、実施例2に係る画像処理プログラムを記憶している。
【0072】
CPU10は、RAM20に展開された画像処理プログラムを実行する。それにより、画像処理装置100aによる画像処理が実行される。図18は、画像処理プログラムの実行によって実現される各機能のブロック図である。図18を参照して、画像処理装置100aは、図2の画像処理装置100と異なり、通信部140の機能を有していない。
【0073】
図19は、本実施例において用いるカレンダー(第1の印刷画像)について説明するための図である。1か月分の日付欄全体SQ2(所定領域)に、年月を示すコードTが埋め込まれている。図19のカレンダーは2010年10月を表しているため、コードTとして、たとえば10進数で「201010」、2進数で「110001000100110010」というコードが埋め込まれている。ユーザは、日付欄の中に、ペンなどで予定を記入していくものとする。図20は、図19のカレンダーの3か所に記入されたスケジュールSC1,SC2,SC3を説明するための図である。本実施例では、図21を参照して、日付欄全体SQ2に、横48×縦34個の単ブロックが配置されている。互いに隣接する2つの単ブロックをペアブロックとして用いる場合には、日付欄全体SQ2に、横24×縦34個のペアブロックが配置されている。
【0074】
図22は、画像処理装置100aによって実行されるフローチャートの一例を説明するための図である。図22を参照して、ステップS21〜ステップS25は、図7のステップS1〜ステップS5と同様である。ただし、日付欄の位置とペアブロックの位置との関係を予め記憶装置70に保持しておくことで、ステップS24の改変箇所の検出において、ペアブロック群の位置および走査する回数を日付欄の位置に合わせてもよい。
【0075】
例えば、カレンダーにおいて、日付欄が始まるペアブロックの行数は5行目であることが予め記憶装置70に登録されており、検出したコードTから2010年10月のカレンダーであることが特定されているものとする。この場合、2010年10月1日の土曜日のペアブロックの位置が5行目かつ18列目から始まると予め判定できるので、図23を参照して、1回目に走査するペアブロック群の位置を、5行目かつ18列目としてもよい。
【0076】
以上の処理により改変箇所が検出されると、図22を再度参照して、記憶装置70に予め記憶された日付欄とペアブロックの位置との対応関係に基づいて、改変箇所検出部1133は、改変が付加された日付を検出する(ステップS26)。次に、改変座標変換部134は、撮影画像の中から該当の日付欄の四隅の座標を前述の座標変換方法により特定し、該日付欄の画像を切り出す処理を行う(ステップS27)。画像の切り出しの際には、射影変換によって撮影時の画像の歪みを補正してもよい。
【0077】
次に、記憶装置70は、切り出した画像を、別途用意された電子カレンダーシステムの該当日に対応付けて保存する(ステップS28)。これにより、電子カレンダーシステムを起動した際に、図24を参照して、該当日のスケジュールを閲覧した際に、紙に書き込んだスケジュールも参照することができる。
【0078】
本実施例によれば、撮影画像から元の画像を特定することができる。また、改変箇所の特定に際して、改変画像と元画像とを照合しなくてもよい。これにより、元画像をサーバまたはローカルに用意する必要がなくなり、サーバまたはローカルの記憶領域の使用を削減でき、運用コストが下がる。また、ネットワーク上の通信を行わなくてもよくなる。また、元画像との照合を行わなくてもよいため、改変箇所を高速に特定することができる。
【実施例3】
【0079】
実施例3では、文字、印などが記入された地図の印刷画像を撮影することによって、当該文字、印などが記入された改変箇所の位置を特定するナビゲーションシステムについて説明する。地図上において文字、印などが記入された改変箇所の位置が特定できれば、当該改変箇所を利用することができる。例えば、検索などを行わずに目的地を設定することができる。文字、印などが記入されておらず、コードが埋め込まれた地図を第1の印刷画像として用いる。文字、印などが記入された第1の印刷画像を第2の印刷画像として用いる。
【0080】
画像処理装置100bは、図1の画像処理装置100と同様のハードウェア構成を有している。ただし、通信部30および操作部40は設けられていなくてもよい。本実施例においては、記憶装置70は、実施例3に係る画像処理プログラムを記憶している。CPU10は、RAM20に展開された画像処理プログラムを実行する。それにより、画像処理装置100bによる画像処理が実行される。画像処理装置100bは、図2の画像処理装置100と同様の機能を有している。ただし、画像処理装置100bは、通信部140の機能を有していなくてもよい。
【0081】
図25は、画像処理装置100bの外観図である。図25(a)を参照して、画像処理装置100bは、一面にディスプレイ300が配置されている。図25(b)を参照して、画像処理装置100bは、他面に撮影装置60が配置されている。撮影装置60は、地図を撮影する。地図500の撮影に際して画像がゆがむことを抑制する目的で、撮影装置60と地図との距離を固定するための透明カバー400が設けられていてもよい。
【0082】
図7のステップS1〜ステップS5と同様の処理を実行することによって、地図上における改変箇所を特定することができる。改変箇所が特定できれば、当該改変箇所を利用することができる。本実施例においても、撮影画像から元の画像を特定することができる。また、改変箇所の特定に際して、改変画像と元画像とを照合しなくてもよい。これにより、元画像をサーバまたはローカルに用意する必要がなくなり、サーバまたはローカルの記憶領域の使用を削減でき、運用コストが下がる。また、ネットワーク上の通信を行わなくてもよくなる。また、元画像との照合を行わなくてもよいため、改変箇所を高速に特定することができる。
【0083】
以上、本発明の実施例について詳述したが、本発明は係る特定の実施例に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【符号の説明】
【0084】
10 CPU
20 RAM
30 通信部
40 操作部
50 インタフェース
60 撮影装置
70 記憶装置
80 メディアアクセス装置
90 インタフェース
100 画像処理装置
110 画像取得部
120 デコード部
130 改変座標取得部
131 正解ビットパターン取得部
132 エラービットパターン取得部
133 改変箇所検出部
134 改変座標変換部
140 通信部
150 表示部

【特許請求の範囲】
【請求項1】
コードが埋め込まれた第1の印刷画像に対して改変が付加された第2の印刷画像を撮影することによって撮影画像を取得する画像取得部と、
前記撮影画像から第2の印刷画像の特徴量に基づいて前記第1の印刷画像に埋め込まれたコードを得るデコード部と、
前記デコード部で得られたコードに基づいて、前記撮影画像における改変箇所の座標を取得する改変座標取得部と、を備えることを特徴とする画像処理装置。
【請求項2】
前記デコード部は、前記第2の印刷画像の所定領域に含まれる1以上のブロックごとに、前記コードを得ることを特徴とする請求項1記載の画像処理装置。
【請求項3】
前記改変座標取得部は、
前記デコード部によって得られたコードから正解ビットパターンを取得する正解ビットパターン取得部と、
前記正解ビットパターンと前記デコード部で取得されたビットパターンとを比較して、差異が生じたビットをエラービットとして判定するエラービットパターン取得部と、
前記エラービットに基づいて、前記改変箇所の座標を特定する改変箇所検出部と、
前記改変箇所検出部で検出した座標を、前記撮影画像中での前記改変箇所の座標に変換する改変座標変換部と、を備えることを特徴とする請求項2記載の画像処理装置。
【請求項4】
前記改変箇所検出部は、前記エラービットパターン取得部で取得したエラービットの位置とブロックの位置とを照合し、前記所定領域に含まれるブロックの中から隣接するまたは頂点が一致する複数のブロックの組み合わせをブロック群として選択し、前記ブロック群に含まれるエラービットの個数が所定値を上回る場合に該ブロック群に含まれる座標を特定することを特徴とする請求項3記載の画像処理装置。
【請求項5】
前記所定値は、前記ブロック群に含まれるブロックの数の50%であることを特徴とする請求項4記載の画像処理装置。
【請求項6】
前記改変箇所検出部は、前記ブロックが複数個存在しかつ前記ブロックの少なくとも一部のブロックが互いに隣接する場合には、前記隣接する複数のブロックについて前記所定領域における座標の平均値を求め、該平均値を前記所定領域における改変箇所の座標として特定すること請求項4または5記載の画像処理装置。
【請求項7】
前記ブロックは、複数の単ブロックを含み、
前記デコード部は、前記ブロックに含まれる複数の単ブロックの特徴量の関係に基づいてビットパターンを特定することを特徴とする請求項3〜6のいずれか一項に記載の画像処理装置。
【請求項8】
前記ブロックは、2つの互いに隣接する単ブロックであることを特徴とする請求項7記載の画像処理装置。
【請求項9】
コードが埋め込まれた第1の印刷画像に対して改変が付加された第2の印刷画像を撮影することによって撮影画像を取得する画像取得ステップと、
前記撮影画像から第2の印刷画像の特徴量に基づいて前記第1の印刷画像に埋め込まれたコードを得るデコードステップと、
前記デコードステップで得られたコードに基づいて、前記撮影画像における改変箇所の座標を取得する改変座標取得ステップと、を含むことを特徴とする画像処理方法。
【請求項10】
コンピュータに、
コードが埋め込まれた第1の印刷画像に対して改変が付加された第2の印刷画像を撮影することによって撮影画像を取得する画像取得ステップと、
前記撮影画像から第2の印刷画像の特徴量に基づいて前記第1の印刷画像に埋め込まれたコードを得るデコードステップと、
前記デコードステップで得られたコードに基づいて、前記撮影画像における改変箇所の座標を取得する改変座標取得ステップと、を実行させることを特徴とする画像処理プログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate

【図23】
image rotate

【図24】
image rotate

【図25】
image rotate


【公開番号】特開2012−85183(P2012−85183A)
【公開日】平成24年4月26日(2012.4.26)
【国際特許分類】
【出願番号】特願2010−230950(P2010−230950)
【出願日】平成22年10月13日(2010.10.13)
【出願人】(000005223)富士通株式会社 (25,993)
【Fターム(参考)】