(57)【特許請求の範囲】
【請求項１】
記録媒体上の位置を移動しながら画像データに基づき画像を形成する画像形成装置と通信可能な情報処理装置であって、
前記画像形成装置及び前記画像形成装置が記録媒体に形成した形成画像が撮像されている撮像データを取得する取得手段と、
前記撮像データから前記画像形成装置及び前記形成画像を検出する画像処理手段と、
前記形成画像の形成に用いられた前記画像データにおいて前記形成画像と一致する一致画像を特定し、前記撮像データにおける前記形成画像に対する前記画像形成装置の相対位置を決定し、
前記画像データにおける前記一致画像を基準とする前記相対位置に基づいて前記画像データにおける前記画像形成装置の位置を推定する位置推定手段と、
前記位置推定手段が推定した前記位置を前記画像形成装置に送信する送信手段と、
を有する情報処理装置。
【請求項２】
前記位置推定手段は、前記画像形成装置の周囲に写っている前記形成画像を抽出し、前記画像形成装置の周囲の前記形成画像を用いて前記画像データに対しパターンマッチングを行うことで前記一致画像を特定する請求項１に記載の情報処理装置。
【請求項３】
前記位置推定手段は、文字列を含む前記形成画像を用いて前記画像データに対しパターンマッチングを行い、前記文字列と同じ文字列を含む前記一致画像を前記画像データから特定する請求項２に記載の情報処理装置。
【請求項４】
前記位置推定手段は、前記形成画像に含まれる文字列の外接矩形の頂点を接続して得られる複数の直線の長さの組と、前記画像データに含まれる文字列の外接矩形の頂点を接続して得られる複数の直線の長さの組とを比較し、
複数の直線の長さの組が一致する前記一致画像を前記画像データから特定する請求項２に記載の情報処理装置。
【請求項５】
前記位置推定手段は、前記形成画像と前記画像データを表示装置に表示させ、前記形成画像に対応する前記一致画像の選択を受け付ける請求項１〜４のいずれか１項に記載の情報処理装置。
【請求項６】
前記画像処理手段は、前記画像形成装置に配置された前記画像形成装置の位置と記録媒体上の向きに関する姿勢を推定可能な第一マークを前記撮像データから検出し、
前記位置推定手段は、前記撮像データにおける前記形成画像に対する前記第一マークの相対位置を、前記画像データにおける前記一致画像に対する前記画像形成装置の相対位置として決定する請求項１〜５のいずれか１項に記載の情報処理装置。
【請求項７】
前記画像形成装置及び前記画像形成装置が形成した前記形成画像を撮像する撮像手段を有し、
前記画像形成装置には第二マークが配置されており、
前記撮像手段は、定期的に前記画像形成装置を撮像しながら前記第二マークが撮像されないこと又は複数の前記第二マークが同じ厚みで撮像されたことを契機に、前記画像形成装置及び前記画像形成装置が形成した前記形成画像を撮像して前記撮像データを生成する請求項１〜６のいずれか１項に記載の情報処理装置。
【請求項８】
前記撮像手段は、さらに、前記撮像データにおける前記形成画像のサイズと、前記画像データにおいて前記形成画像と一致する前記一致画像のサイズとがほぼ同じになったことを契機に、
前記画像形成装置及び前記画像形成装置が形成した前記形成画像を撮像する請求項７に記載の情報処理装置。
【請求項９】
前記撮像手段は、さらに、前記撮像データにおいて、前記画像形成装置に配置された前記画像形成装置の位置と記録媒体上の向きに関する姿勢を推定可能な第一マークから得られる長さ情報が、予め定められたピクセル数になったことを契機に、前記画像形成装置及び前記画像形成装置が形成した前記形成画像を撮像する請求項７に記載の情報処理装置。
【請求項１０】
撮像時に生じた前記形成画像の歪みを補正するための補正情報を算出する補正情報算出手段を有し、
前記位置推定手段は、前記補正情報算出手段により算出された前記補正情報を用いて歪みが補正された前記形成画像を用いて前記画像データに対しパターンマッチングを行い、前記一致画像を特定する請求項２に記載の情報処理装置。
【請求項１１】
記録媒体上の位置を移動しながら画像データに基づき画像を形成する画像形成装置と、前記画像形成装置と通信可能な情報処理装置とを有する画像形成システムであって、
前記画像形成装置及び前記画像形成装置が記録媒体に形成した形成画像が撮像されている撮像データを取得する取得手段と、
前記撮像データから前記画像形成装置及び前記形成画像を検出する画像処理手段と、
前記形成画像の形成に用いられた前記画像データにおいて前記形成画像と一致する一致画像を特定し、前記撮像データにおける前記形成画像に対する前記画像形成装置の相対位置を決定し、
前記画像データにおける前記一致画像を基準とする前記相対位置に基づいて前記画像データにおける前記画像形成装置の位置を推定する位置推定手段と、
前記位置推定手段が推定した前記位置を前記画像形成装置に送信する送信手段と、
を有する画像形成システム。
【請求項１２】
記録媒体の位置を移動しながら画像データに基づき画像を形成する画像形成装置であって、
前記記録媒体に対する位置を検出する位置検出手段と、
前記画像形成装置及び前記画像形成装置が前記記録媒体に形成した形成画像が撮像されている撮像データを取得する取得手段と、
前記取得手段が取得した前記撮像データから前記画像形成装置及び前記画像を検出する画像処理手段と、
前記形成画像の形成に用いられた前記画像データにおいて前記形成画像と一致する一致画像を特定し、前記撮像データにおける前記形成画像に対する前記画像形成装置の相対位置を決定し、
前記画像データにおける前記一致画像を基準とする前記相対位置に基づいて前記画像データにおける前記画像形成装置の位置を推定する位置推定手段と、
前記位置推定手段が推定した前記位置を用いて前記形成画像を形成する画像形成手段と、を有する画像形成装置。
【請求項１３】
記録媒体上の位置を移動しながら画像データに基づき画像を形成する画像形成装置と通信可能な情報処理装置を、
前記画像形成装置及び前記画像形成装置が記録媒体に形成した形成画像が撮像されている撮像データを取得する取得手段と、
前記撮像データから前記画像形成装置及び前記形成画像を検出する画像処理手段と、
前記形成画像の形成に用いられた前記画像データにおいて前記形成画像と一致する一致画像を特定し、前記撮像データにおける前記形成画像に対する前記画像形成装置の相対位置を決定し、
前記画像データにおける前記一致画像を基準とする前記相対位置に基づいて前記画像データにおける前記画像形成装置の位置を推定する位置推定手段と、
前記位置推定手段が推定した前記位置を前記画像形成装置に送信する送信手段、
として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、画像形成システム及び画像形成装置に関する。
【背景技術】
【０００２】
用紙を搬送させて用紙が画像の形成位置に到達したタイミングでインクなどを吐出して画像を形成するプリンタ装置が知られている。これに対し、プリンタ装置から紙搬送システムを削除することで小型化されたプリンタ装置（以下、ハンドヘルドプリンタという）が実用化されつつある。
【０００３】
図１は、ハンドヘルドプリンタ２０による画像形成を模式的に示す図の一例である。ハンドヘルドプリンタ２０には、例えばスマートフォンやＰＣ（Personal Computer）等の画像データ出力器１１から画像データが送信される。ユーザはこのハンドヘルドプリンタ２０を把持して、印刷媒体１２（例えば定型用紙やノートなど）上をフリーハンドで走査させる。ハンドヘルドプリンタ２０は位置検出機構を有しているため、ハンドヘルドプリンタ２０が目標吐出位置に移動すると、目標吐出位置で吐出すべき色のインクを吐出する。すでにインクを吐出した場所はマスクされるので（インクの吐出の対象とならないので）、ユーザは印刷媒体１２上で任意の方向にハンドヘルドプリンタ２０を走査させることで画像を形成できる。
【０００４】
しかしながら、ハンドヘルドプリンタ２０の走査はユーザに委ねられるため、ユーザが誤って印刷媒体１２からハンドヘルドプリンタ２０を浮かしてしまう場合がある。この場合、ハンドヘルドプリンタ２０が検出する位置が正確でなくなるおそれがある。また、ユーザが仕様よりも高速にハンドヘルドプリンタ２０を走査させる場合があり、この場合も上記位置が正確でなくなるおそれがある。これらの場合、ハンドヘルドプリンタ２０が現在の位置を見失って、画像形成を再開することが困難になる。
【０００５】
このような不都合に対し、現在の位置を再認識するハンドヘルドプリンタ２０が考案されている（例えば、特許文献１参照。）。特許文献１には、見えないインクで定期的に位置情報を印字し、現在の位置を見失った場合にはスキャナユニットで位置情報を読み取り、現在の位置を認識して画像形成を再開するハンドヘルドプリンタが開示されている。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、特許文献１に記載されたハンドヘルドプリンタでは、見えないインクを吐出するユニットやスキャナユニットを搭載する必要があるため、コスト増をもたらすという問題がある。また、重くなったり筐体が大きくなったりするため、操作性が低下するおそれもある。
【０００７】
本発明は、上記課題に鑑み、コスト増等を抑制して画像形成を再開することができる情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記課題に鑑み、本発明は、記録媒体上の位置を移動しながら画像データに基づき画像を形成する画像形成装置と通信可能な情報処理装置であって、前記画像形成装置及び前記画像形成装置が記録媒体に形成した形成画像が撮像されている撮像データを取得する取得手段と、前記撮像データから前記画像形成装置及び前記形成画像を検出する画像処理手段と、前記形成画像の形成に用いられた前記画像データにおいて前記形成画像と一致する一致画像を特定し、前記撮像データにおける前記形成画像に対する前記画像形成装置の相対位置を決定し、前記画像データにおける前記一致画像を基準とする前記相対位置に基づいて前記画像データにおける前記画像形成装置の位置を推定する位置推定手段と、前記位置推定手段が推定した前記位置を前記画像形成装置に送信する送信手段と、を有する。
【発明の効果】
【０００９】
コスト増等を抑制して画像形成を再開することができる情報処理装置を提供することができる。
【図面の簡単な説明】
【００１０】
【図１】ハンドヘルドプリンタによる画像形成を模式的に示す図の一例である。
【図２】ハンドヘルドプリンタが見失った現在の位置を取得する手順の概略を説明する図の一例である。
【図３】画像形成システムのシステム構成図の一例である。
【図４】画像データ出力器とハンドヘルドプリンタのハードウェア構成図の一例である。
【図５】制御部の構成を説明する図の一例である。
【図６】画像データ出力器とハンドヘルドプリンタの機能ブロック図の一例である。
【図７】ＩＪ記録ヘッドにおけるノズル位置等を説明する図の一例である。
【図８】ハンドヘルドプリンタの位置を説明する図の一例である。
【図９】ハンドヘルドプリンタの上面図における位置検出マークの配置例を示す図である。
【図１０】位置検出マークとナビゲーションセンサの相対位置を示す図の一例である。
【図１１】撮像データにおけるハンドヘルドプリンタの位置を説明する図の一例である。
【図１２】画像データに対する照合用画像を用いたパターンマッチングを模式的に説明する図の一例である。
【図１３】表示装置に表示された問い合わせ画面の一例を示す図である。
【図１４】照合用画像の辺の長さに着目したパターンマッチングの一例を示す図である。
【図１５】画像データにおけるハンドヘルドプリンタの位置を説明する図の一例である。
【図１６】画像形成システムの動作手順を示すフローチャート図の一例である。
【図１７】画像データ出力器の機能ブロック図の一例である（実施例２）。
【図１８】撮像データの歪みを説明する図の一例である。
【図１９】変換前と後の照合用画像をそれぞれ示す図の一例である。
【図２０】ハンドヘルドプリンタと配置された非正面マークの一例を示す図である。
【図２１】画像データ出力器によるハンドヘルドプリンタの撮像を模式的に説明する図の一例である。
【図２２】画像データ出力器の撮像手順を示すフローチャート図の一例である（実施例３）。
【図２３】画像データ出力器の撮像手順を示すフローチャート図の一例である（実施例４）。
【発明を実施するための形態】
【００１１】
以下、本発明を実施するための形態について図面を参照しながら実施例を挙げて説明する。
【実施例１】
【００１２】
＜ハンドヘルドプリンタの位置の取得の概略＞
まず、図２を用いてハンドヘルドプリンタ２０が現在の位置を見失った際に、現在の位置を取得する手順の概略を説明する。図２は、ハンドヘルドプリンタ２０が見失った現在の位置を取得する手順の概略を説明する図の一例である。
(i) 図２（ａ）に示すように、ユーザは印刷媒体（記録媒体の一例）上でハンドヘルドプリンタ２０を走査させて画像を形成させる。そして、画像を全て形成するまでに、ハンドヘルドプリンタ２０が現在の位置を見失ったものとする。
(ii)ユーザはハンドヘルドプリンタ２０の状態をＬＥＤランプや警報音で把握する。すると、ユーザは印刷媒体１２の適当な場所にハンドヘルドプリンタ２０を置いて、画像データ出力器１１でハンドヘルドプリンタ２０と印刷媒体１２を撮像する（図２（ｂ））。ここで、ハンドヘルドプリンタ２０には予め位置検出マークＭ１，Ｍ２（第一マークの一例）が形成されている。
(iii) 図２（ｃ）の左図は撮像されたハンドヘルドプリンタ２０と印刷媒体１２の撮像データ１４である。画像データ出力器１１は、撮像データ１４からハンドヘルドプリンタ２０の位置検出マークＭ１，Ｍ２を検出する。また、画像データ出力器１１はハンドヘルドプリンタ２０の周囲又は近くの画像（以下、照合用画像１４ａという）を撮像データ１４から取得する。そして、画像データ出力器１１は、画像形成に使用した画像データ１３から照合用画像１４ａと一致する一致画像１３ａを探索する（パターンマッチングする）。
(iv) 図２（ｄ）は画像データ１３を示す。図２（ｃ）に示したように撮像データ１４において照合用画像１４ａに対する位置検出マークＭ１，Ｍ２の相対位置が分かっているので、画像データ１３においても一致画像１３ａに対する位置検出マークＭ１，Ｍ２の相対位置を特定できる。つまり、画像データ１３におけるハンドヘルドプリンタ２０の位置を特定できる。
(v) 画像データ出力器１１は、ハンドヘルドプリンタ２０の位置（又は、位置検出マークＭ１，Ｍ２の位置のそのもの）をハンドヘルドプリンタ２０に送信する。これにより、図２（ｅ）に示すように、ハンドヘルドプリンタ２０は現在の位置を取得して画像形成を再開できる。
【００１３】
したがって、本実施形態のハンドヘルドプリンタ２０は位置を見失っても、コスト増等を抑制して、位置を取得し画像形成を再開できる。
【００１４】
＜用語について＞
本実施形態で使用される用語について説明する。
画像データは、画像形成に用いられるデータであり、画像データ出力器が保持している。
撮像データは、印刷媒体１２とハンドヘルドプリンタ２０が撮像されたデータである。
【００１５】
ハンドヘルドプリンタ２０が位置を見失うとは、現在の位置を算出できないことや極度に不正確となることをいう。要因としては、用紙からハンドヘルドプリンタ２０が浮いてしまうことや、ユーザが仕様よりも高速にハンドヘルドプリンタ２０を走査させることなどがあるが、本実施形態では要因は制限されない。
【００１６】
印刷媒体１２は例えば定形用紙やノートなどであるが、これらに限られるわけではなく、机などの固定物を印刷媒体１２としてもよいし、紙以外のシート状部材を印刷媒体１２としてもよい。また、印刷媒体１２は必ずしも水平に配置されていなくてもよい。
【００１７】
＜構成例＞
図３は、画像形成システム１のシステム構成図の一例を示す。図３（ａ）の画像形成システム１は、互いに通信可能な画像データ出力器１１とハンドヘルドプリンタ２０を有している。このようなシステム構成では、画像データ出力器１１が画像データ１３をハンドヘルドプリンタ２０に送信し、さらにハンドヘルドプリンタ２０が位置を見失った場合は画像データ出力器１１がハンドヘルドプリンタ２０と印刷媒体１２を撮像する。画像データ出力器１１は、撮像データ１４からハンドヘルドプリンタ２０の位置を検出してハンドヘルドプリンタ２０に送信する。
【００１８】
また、図３（ａ）のシステム構成において、ハンドヘルドプリンタ２０がハンドヘルドプリンタ２０の位置を検出してもよい。この場合、画像データ出力器１１は撮像データ１４をハンドヘルドプリンタ２０に送信する。ハンドヘルドプリンタ２０は少なくとも一部の画像データ１３を保持しているが、必要であれば画像データ出力器１１から画像データ１３の全体を取得する。ハンドヘルドプリンタ２０は、画像データ出力器１１と同様にハンドヘルドプリンタ２０の位置を検出する。
【００１９】
図３（ｂ）の画像形成システム１は画像データ出力器１１、ハンドヘルドプリンタ２０及び撮像装置８を有している。このようなシステム構成では、ハンドヘルドプリンタ２０が位置を見失った場合、撮像装置８がハンドヘルドプリンタ２０と印刷媒体１２を撮像する。撮像装置８は撮像データ１４を画像データ出力器１１に送信するので、画像データ出力器１１は、撮像データ１４からハンドヘルドプリンタ２０の位置を検出してハンドヘルドプリンタ２０に送信する。
【００２０】
また、この場合もハンドヘルドプリンタ２０がハンドヘルドプリンタ２０の位置を検出してもよい。この場合、撮像装置８は撮像データ１４をハンドヘルドプリンタ２０に送信する（画像データ出力器１１を経由して送信してもよい）。ハンドヘルドプリンタ２０は図３（ａ）と同様にハンドヘルドプリンタ２０の位置を検出する。
【００２１】
また、撮像装置８がハンドヘルドプリンタ２０の位置を検出してもよい。この場合、撮像装置８は画像データ出力器１１から画像データ１３を取得して、ハンドヘルドプリンタ２０の位置を検出する。撮像装置８は検出した位置をハンドヘルドプリンタ２０に送信する。
【００２２】
本実施形態の画像形成システム１では、このように画像データ１３と撮像データ１４を取得した装置であれば、ハンドヘルドプリンタ２０の位置を検出できる。したがって、図３（ｃ）に示すように、画像データ出力器１１が画像データ１３と撮像データ１４をサーバ９に送信することで、サーバ９がハンドヘルドプリンタ２０の位置を検出してもよい。サーバ９は検出した位置を画像データ出力器１１に送信し、画像データ出力器１１はこの位置をハンドヘルドプリンタ２０に送信する。
【００２３】
以下では、説明の便宜上、画像データ出力器１１がハンドヘルドプリンタ２０の位置を検出するものとして説明する。
【００２４】
なお、画像データ出力器１１は、情報処理装置である。例えばスマートフォン、ＰＣ（Personal Computer）、タブレット端末、ＰＤＡ(Personal Digital Assitant)、携帯電話又はウェアラブルＰＣなどである。あるいは、ＭＦＰ（Multifunctional Peripheral/Printer/Product）、各種のカメラ、電子黒板、ゲーム機器、カーナビゲーション端末、プロジェクタなどでもよい。
【００２５】
<<ハードウェア構成>>
図４を用いて画像データ出力器１１とハンドヘルドプリンタ２０のハードウェア構成について説明する。画像データ出力器１１は、例えば図４に示すようなハードウェア構成により実現される。画像データ出力器１１は、入力装置１０１、表示装置１０２、外部Ｉ/Ｆ１０３、カメラ１１０、ＲＡＭ１０４、ＲＯＭ１０５、ＣＰＵ１０６、通信Ｉ/Ｆ１０７、ＳＳＤ（Solid State Drive）１０８、及び近距離無線通信装置１０９などを備え、それぞれがバスＢで相互に接続されている。
【００２６】
入力装置１０１は、例えば、タッチパネルであり、画像データ出力器１１に各操作信号を入力するのに用いられる。なお、入力装置１０１は、キーボードやマウスなどであってもよい。表示装置１０２は、例えば、ＬＣＤ（Liquid Crystal Display）などであり、画像データ出力器１１による処理結果を表示する。
【００２７】
外部Ｉ/Ｆ１０３は、外部装置とのインタフェースである。外部装置には、記録媒体１０３ａなどがある。記録媒体１０３ａには、本実施形態の機能を実現するためのプログラム（後述する出力器用プログラム）を格納することができる。画像データ出力器１１は外部Ｉ/Ｆ１０３を介して、記録媒体１０３ａの読み取り及び／又は書き込みを行うことができる。
【００２８】
記録媒体１０３ａは、例えば、ＳＤメモリカード（SD Memory card）などの記録媒体である。記録媒体１０３ａは、ＵＳＢメモリ（Universal Serial Bus memory）、ＤＶＤ（Digital Versatile Disk）、ＣＤ（Compact Disk）、フレキシブルディスクなどの記録媒体であってもよい。
【００２９】
カメラ１１０は、像を結像させるレンズ、絞り、ＣＭＯＳやＣＣＤなどの撮像素子などを備えた撮像装置である。静止画だけでなく動画を撮像できる。
【００３０】
ＲＡＭ１０４は、プログラムやデータを一時保持する揮発性の半導体メモリ（記憶装置）である。ＲＯＭ１０５は、電源を切ってもプログラムやデータを保持することができる不揮発性の半導体メモリ（記憶装置）である。ＲＯＭ１０５には、画像データ出力器１１の起動時に実行されるＢＩＯＳ（Basic Input/Output System）、ＯＳ設定、及びネットワーク設定などのプログラムやデータが格納されている。
【００３１】
ＣＰＵ１０６は、ＲＯＭ１０５やＳＳＤ１０８などの記憶装置からプログラムやデータをＲＡＭ１０４上に読み出し、処理を実行することで、画像データ出力器１１全体の制御や機能を実現する演算装置である。
【００３２】
通信Ｉ/Ｆ１０７は、通信を行うためのインタフェースである。通信Ｉ/Ｆ１０７は、例えばＢｌｕｅｔｏｏｔｈ（登録商標）や無線ＬＡＮなどの通信規格でハンドヘルドプリンタ２０と通信する。なお、アクセスポイントを介さない無線ＬＡＮの通信規格として、Ｗｉ−Ｆｉ  Ｄｉｒｅｃｔ、アドホックモードなどがある。なお、通信Ｉ/Ｆ１０７は、携帯電話網に接続するためのインタフェースであってもよい。
【００３３】
ＳＳＤ１０８は、プログラムやデータを格納している不揮発性の記憶装置である。格納されるプログラムやデータには、例えば画像データ出力器１１全体を制御する基本ソフトウェアであるＯＳ（Operating System）や、ＯＳ上において各種機能を提供するアプリケーションソフトウェア（後述する出力器用プログラムが含まれる）などがある。なお、画像データ出力器１１は、ＳＳＤ１０８の代わりに又はＳＳＤ１０８と併せて、ＨＤＤ（Hard Disk Drive）等を備えていてもよい。
【００３４】
近距離無線通信装置１０９は、例えば、ＮＦＣ（Near Field Communication）やTransferJet（登録商標）などのＩＣチップを用いた通信規格にしたがって通信する。画像データ出力器１１は、通信Ｉ/Ｆや近距離無線通信装置１０９を用いてハンドヘルドプリンタ２０に画像データ１３を送信する。この場合、ハンドヘルドプリンタ２０もＩＣチップによる通信が可能である。
【００３５】
続いて、図４を用いてハンドヘルドプリンタ２０のハードウェア構成について説明する。ハンドヘルドプリンタ２０は、印刷媒体１２に画像を形成する画像形成装置の一例である。ハンドヘルドプリンタ２０は、制御部２５によって全体の動作が制御され、制御部２５には通信Ｉ/Ｆ２７、ＩＪ記録ヘッド駆動回路２３、ＯＰＵ２６、ＲＯＭ２８、ＤＲＡＭ２９、及び、ナビゲーションセンサ３０が電気的に接続されている。また、ハンドヘルドプリンタ２０は電力により駆動されるため、電源２２と電源回路２１を有している。電源回路２１が生成する電力は、点線２２ａで示す配線などにより、通信Ｉ/Ｆ２７、ＩＪ記録ヘッド駆動回路２３、ＯＰＵ２６、ＲＯＭ２８、ＤＲＡＭ２９、ＩＪ記録ヘッド２４、制御部２５、及び、ナビゲーションセンサ３０に供給されている。
【００３６】
電源２２は主に電池（バッテリー）が利用される。太陽電池や商用電源（交流電源）、燃料電池等が用いられてもよい。電源回路２１は、電源２２が供給する電力をハンドヘルドプリンタ２０の各部に分配する。また、電源２２の電圧を各部に適した電圧に降圧や昇圧する。また、電源２２が電池で充電可能である場合、電源回路２１は交流電源の接続を検出して電池の充電回路に接続し、電源２２の充電を可能にする。
【００３７】
通信Ｉ/Ｆ２７は、スマートフォンやＰＣ等の画像データ出力器１１から画像データの受信等を行う。通信Ｉ/Ｆ２７は例えば無線ＬＡＮ、Bluetooth（登録商標）、ＮＦＣ（Near Field Communication）、赤外線、３Ｇ（携帯電話）、又は、ＬＴＥ（Long Term Evolution）等の通信規格に対応した通信装置である。また、このような無線通信の他、有線ＬＡＮ、ＵＳＢケーブルなどを用いた有線通信に対応した通信装置であってもよい。
【００３８】
ＲＯＭ２８は、ハンドヘルドプリンタ２０のハードウェア制御を行うファームウェアや、ＩＪ記録ヘッド２４の駆動波形データ（液滴を吐出するための電圧変化を規定するデータ）や、ハンドヘルドプリンタ２０の初期設定データ等を格納している。
【００３９】
ＤＲＡＭ２９は通信Ｉ/Ｆ２７が受信した画像データを記憶したり、ＲＯＭ２８から展開されたファームウェアの格納のために使用される。したがって、ＣＰＵ３１がファームウェアを実行する際のワークメモリとして使用される。
【００４０】
ナビゲーションセンサ３０は、ハンドヘルドプリンタ２０の位置を検出するセンサである。ナビゲーションセンサ３０は、例えば、発光ダイオード（ＬＥＤ）やレーザ等の光源と、印刷媒体１２を撮像する撮像センサ、又は、入反射光の干渉縞を撮像するセンサを有している。ハンドヘルドプリンタ２０が印刷媒体１２上を走査されると、印刷媒体１２の微小なエッジが次々に検出され（撮像され）エッジ間の距離を解析することで移動量が得られる。ナビゲーションセンサ３０は、ハンドヘルドプリンタ２０の少なくとも２箇所に搭載されている。両者を区別する場合、ナビゲーションセンサＳ０，Ｓ１という。なお、ナビゲーションセンサ３０として、さらに多軸の加速度センサやジャイロセンサ等を用いてもよく、加速度センサやジャイロセンサのみでハンドヘルドプリンタ２０の位置を検出してもよい。
【００４１】
ＯＰＵ（Operation panel Unit）２６は、ハンドヘルドプリンタ２０の状態を表示するＬＥＤ、ユーザがハンドヘルドプリンタ２０に画像形成を指示するためのスイッチ等を有している。ただし、これに限定するものではなく、液晶ディスプレイを有していてよく、さらにタッチパネルを有していてもよい。また、音声入力機能を有していてもよい。
【００４２】
ＩＪ記録ヘッド駆動回路２３は上記の駆動波形データを用いて、ＩＪ記録ヘッド２４を駆動するための駆動波形（電圧）を生成する。インクの液滴のサイズなどに応じた駆動波形を生成できる。
【００４３】
ＩＪ記録ヘッド２４は、インクを吐出するためのヘッドである。図ではＣＭＹＫの４色のインクを吐出可能になっているが、単色でもよく５色以上の吐出が可能でもよい。各色ごとに一列（二列以上でもよい）に並んだ複数のインク吐出用のノズル（後述する）が配置されている。また、インクの吐出方式はピエゾ方式でもサーマル方式でもよく、この他の方式でもよい。
【００４４】
制御部２５は、ナビゲーションセンサ３０が検出する移動量を元に、ＩＪ記録ヘッド２４の各ノズルの位置、該位置に応じて形成する画像の決定、吐出ノズル可否判定（ノズルの位置が目標吐出位置から所定範囲内かどうかの判定）等を行う。制御部２５について詳細は次述する。
【００４５】
図５は、制御部２５の構成を説明する図の一例である。制御部２５はＳｏＣ５０とＡＳＩＣ/ＦＰＧＡ４０を有している。ＳｏＣ５０とＡＳＩＣ/ＦＰＧＡ４０はバス４５，４６を介して通信する。ＡＳＩＣ/ＦＰＧＡ４０はどちらの実装技術で設計されてもよいことを意味し、ＡＳＩＣ/ＦＰＧＡ４０以外の他の実装技術で構成されてよい。また、ＳｏＣ５０とＡＳＩＣ/ＦＰＧＡ４０を別のチップにすることなく１つのチップや基盤で構成してもよい。あるいは、３つ以上のチップや基盤で実装してもよい。
【００４６】
ＳｏＣ５０は、バス４６を介して接続されたＣＰＵ３１、位置算出回路３２、メモリＣＴＬ（コントローラ）３５、及び、ＲＯＭ ＣＴＬ（コントローラ）３６等の機能を有している。なお、ＳｏＣ５０が有する構成要素はこれらに限られない。
【００４７】
また、ＡＳＩＣ/ＦＰＧＡ４０は、バス４５を介して接続されたＩｍａｇｅ ＲＡＭ３７、ＤＭＡＣ３８、回転器３９、割込みコントローラ４１、ナビゲーションセンサＩ/Ｆ４２、印字/センサタイミング生成部４３、及び、ＩＪ記録ヘッド制御部４４を有している。なお、ＡＳＩＣ/ＦＰＧＡ４０が有する構成要素はこれらに限られない。
【００４８】
ＣＰＵ３１は、ＲＯＭ２８からＤＲＡＭ２９に展開されたファームウェア（プログラム）などを実行し、ＳｏＣ５０内の位置算出回路３２、メモリＣＴＬ３５、及び、ＲＯＭ ＣＴＬ３６の動作を制御する。また、ＡＳＩＣ/ＦＰＧＡ４０内のＩｍａｇｅ ＲＡＭ３７、ＤＭＡＣ３８、回転器３９、割込みコントローラ４１、ナビゲーションセンサＩ/Ｆ４２、印字/センサタイミング生成部４３、及び、ＩＪ記録ヘッド制御部４４の動作を制御する。
【００４９】
位置算出回路３２は、ナビゲーションセンサ３０が検出するサンプリング周期ごとの移動量に基づいてハンドヘルドプリンタ２０の位置（座標情報）を算出する。ハンドヘルドプリンタ２０の位置とは、厳密にはノズル６１の位置であるが、ナビゲーションセンサ３０のある位置が分かればノズル６１の位置を算出できる。本実施例では、特に断らない限りナビゲーションセンサ３０の位置としてナビゲーションセンサＳ０、Ｓ１の位置をいう。また、位置算出回路３２は目標吐出位置を算出する。
【００５０】
ナビゲーションセンサ３０の位置は、後述するように例えば所定の原点（画像形成が開始される時のハンドヘルドプリンタ２０の初期位置）を基準に算出されている。また、位置算出回路３２は、過去の位置と最も新しい位置の差に基づいて移動速度や移動方向を推定し、例えば次回の算出タイミングにおける位置を予測する。こうすることで、ユーザの走査に対する遅れを抑制してインクを吐出できる。
【００５１】
メモリＣＴＬ３５は、ＤＲＡＭ２９とのインタフェースであり、ＤＲＡＭ２９に対しデータを要求し、取得したファームウェアをＣＰＵ３１に送出したり、取得した画像データをＡＳＩＣ/ＦＰＧＡ４０に送出する。
【００５２】
ＲＯＭ ＣＴＬ３６は、ＲＯＭ２８とのインタフェースであり、ＲＯＭ２８に対しデータを要求し、取得したデータをＣＰＵ３１やＡＳＩＣ/ＦＰＧＡ４０に送出する。
【００５３】
ＤＭＡＣ３８は、位置算出回路３２が算出した位置情報を元に、メモリＣＴＬ３５を介してＩＪ記録ヘッド２４の各ノズル周辺の画像データ１３を取得する。つまり、印刷媒体１２に対しハンドヘルドプリンタ２０が存在する位置の周辺の画像データが取得される。
【００５４】
回転器３９は、ＤＭＡＣ３８が取得した画像データを、インクを吐出するヘッド、及び、ヘッド内のノズル位置に応じて回転させる。ＤＭＡＣ３８は回転後の画像データをＩＪ記録ヘッド制御部４４へ出力する。回転器３９は、例えば、位置算出回路３２が位置を算出する際に算出した回転角θを取得し、その回転角θを用いて画像を回転させることができる。
【００５５】
Ｉｍａｇｅ ＲＡＭ３７はＤＭＡＣ３８が取得した画像データ１３を一時的に格納する。すなわち、ある程度の画像データ１３がバッファリングされ、ハンドヘルドプリンタ２０の位置に応じて読み出される。
【００５６】
ＩＪ記録ヘッド制御部４４は、画像データ（ビットマップデータ）にディザ処理などを施して大きさと密度で画像を表す点の集合に画像データ１３を変換する。これにより、画像データ１３は吐出位置と点のサイズのデータとなる。ＩＪ記録ヘッド制御部４４は点のサイズに応じた制御信号をＩＪ記録ヘッド駆動回路２３に出力する。ＩＪ記録ヘッド駆動回路２３は上記のように制御信号に対応した駆動波形データを用いて、駆動波形（電圧）を生成する。
【００５７】
ナビゲーションセンサＩ/Ｆ４２は、ナビゲーションセンサ３０と通信し、ナビゲーションセンサ３０からの情報として移動量ΔＸ´、ΔＹ´（これらについては後述する）を受信し、その値を内部レジスタに格納する。
【００５８】
印字/センサタイミング生成部４３は、ナビゲーションセンサＩ/Ｆ４２にナビゲーションセンサ３０の情報を読み取るタイミングを通知し、ＩＪ記録ヘッド制御部４４に駆動タイミングを通知する。ＩＪ記録ヘッド制御部４４は吐出ノズル可否判定を行い、インクを吐出すべき目標吐出位置があればインクを吐出し、目標吐出位置がなければ吐出しないと判定する。
【００５９】
割込みコントローラ４１は、ナビゲーションセンサＩ/Ｆ４２がナビゲーションセンサ３０との通信が完了したことを検知して、ＳｏＣ５０へそれを通知するための割り込み信号を出力する。ＣＰＵ３１はこの割り込みにより、ナビゲーションセンサＩ/Ｆ４２が内部レジスタに記憶するΔＸ´、ΔＹ´を取得する。その他、エラー等のステータス通知機能も有する。
【００６０】
＜画像データ出力器１１とハンドヘルドプリンタの機能について＞
続いて、図６を用いて画像データ出力器１１とハンドヘルドプリンタ２０の機能について説明する。図６は画像データ出力器１１とハンドヘルドプリンタ２０の機能ブロック図の一例である。
【００６１】
<<画像データ出力器>>
画像データ出力器１１は、送受信部５１、撮像部５２、マーク検出部５３、パターンマッチング部５４、位置決定部５５、及び記憶・読出部５９を有している。画像データ出力器１１が有するこれらの各部は、図４に示されている各構成要素のいずれかが、ＳＳＤ１０８からＲＡＭ１０４上に展開された出力器用プログラム１００１に従ったＣＰＵ１０６からの命令によって動作することで実現される機能、又は機能される手段である。
【００６２】
また、画像データ出力器１１は、図４に示されているＳＳＤ１０６、ＲＡＭ１０４、又は記録媒体１０３ａによって構築される記憶部１０００を有している。記憶部１０００には出力器用プログラム１００１、撮像データ１４、及び、画像データ１３が記憶される。出力器用プログラム１００１は記録媒体１０３ａに記憶された状態で配布される他、プログラムを配信するサーバ装置から配信されてもよい。
【００６３】
送受信部５１は、図４に示されているＣＰＵ１０６からの命令、及び通信Ｉ/Ｆ１０７によって実現され、ハンドヘルドプリンタ２０と各種データの送受信を行う。
【００６４】
撮像部５２は、図４に示されているＣＰＵ１０６からの命令、及びカメラ１１０によって実現され、印刷媒体１２とハンドヘルドプリンタ２０を撮像する。なお、撮像はユーザの操作を契機にする場合と、実施例３などで後述される条件を満たしたことを契機にする場合がある。
【００６５】
マーク検出部５３は、図４に示されているＣＰＵ１０６からの命令等により実現され、撮像データ１４から位置検出マークＭ１，Ｍ２を検出し、撮像データ１４において照合用画像１４ａに対する位置検出マークＭ１，Ｍ２の相対位置を特定する。
【００６６】
パターンマッチング部５４は、図４に示されているＣＰＵ１０６からの命令等により実現され、画像データ１３に対し照合用画像１４ａを用いてパターンマッチングを行い、照合用画像１４ａと一致する一致画像１３ａを検出する。
【００６７】
位置決定部５５は、撮像データ１４における照合用画像１４ａに対する位置検出マークＭ１，Ｍ２の相対位置に基づき、画像データ１３の一致画像１３ａに対する位置検出マークＭ１，Ｍ２の位置を決定する。これを、画像データ１３におけるハンドヘルドプリンタ２０の現在の位置（撮像時の位置）とする。このハンドヘルドプリンタ２０の位置は送受信部５１を介してハンドヘルドプリンタ２０に送信される。
【００６８】
記憶・読出部５９は、図４に示されているＣＰＵ１０６からの命令、及ぶＳＳＤ１０８等によって実現され、記憶部１０００に各種データを記憶したり、記憶部１０００に記憶された各種データを読み出したりする処理を行う。
【００６９】
<<ハンドヘルドプリンタ>>
ハンドヘルドプリンタ２０は、送受信部６５、位置喪失検知部６６、位置設定部６７、及び記憶・読出部６９を有している。ハンドヘルドプリンタ２０が有するこれらの各部は、図４，５に示されている各構成要素のいずれかが、ＲＯＭ２８からＤＲＡＭ２９上に展開されたプリンタ用プログラム２００１に従ったＣＰＵ３１からの命令によって動作することで実現される機能、又は機能される手段である。
【００７０】
また、ハンドヘルドプリンタ２０は、図４に示されているＲＯＭ２８又はＤＲＡＭ２９によって構築される記憶部２０００を有している。記憶部２０００にはプリンタ用プログラム２００１が記憶される。
【００７１】
送受信部６５は、図５に示されているＣＰＵ３１からの命令、及び通信Ｉ/Ｆ２７等によって実現され、画像データ出力器１１と各種データの送受信を行う。
【００７２】
位置喪失検知部６６は、図５に示されているＣＰＵ３１からの命令、ナビゲーションセンサＩ/Ｆ４２及び位置算出回路３２等によって実現され、ハンドヘルドプリンタ２０が印刷媒体１２から浮いたことや現在の位置を見失ったことを検知する。ナビゲーションセンサ３０は光源の光が印刷媒体１２で反射する反射光をレンズで集光しイメージアレイで撮像している。ハンドヘルドプリンタ２０が印刷媒体１２から浮くと、印刷媒体１２とイメージアレイの距離が大きくなり、反射光を検出できなくなる。これにより、位置喪失検知部６６は、ナビゲーションセンサ３０が浮いたことや現在の位置を見失ったことを検知する。また、例えば、位置算出回路３２により算出可能な最大の速度が連続して検出されることなどにより現在の位置を見失ったことを検知してもよい。
【００７３】
位置設定部６７は、図５に示されているＣＰＵ３１からの命令、及び位置算出回路３２などによって実現され、画像データ出力器１１から送信されたハンドヘルドプリンタ２０の位置を位置算出回路３２に設定する。
【００７４】
記憶・読出部６９は、図５に示されているＣＰＵ３１からの命令、ＲＯＭ２８及びＤＲＡＭ２９等によって実現され、記憶部２０００に各種データを記憶したり、記憶部２０００に記憶された各種データを読み出したりする処理を行う。
【００７５】
＜ＩＪ記録ヘッドにおけるノズル位置について＞
次に、図７を用いて、ＩＪ記録ヘッド２４におけるノズル位置等について説明する。図７（ａ）は、ハンドヘルドプリンタ２０の平面図の一例である。図７（ｂ）はＩＪ記録ヘッド２４のみを説明する図の一例である。図示されている面が印刷媒体１２に対向する面である。
【００７６】
本実施形態のハンドヘルドプリンタ２０は、２つ以上のナビゲーションセンサ３０を有している。ナビゲーションセンサ３０が２つ以上あることで、ナビゲーションセンサ３０が画像形成中に印刷媒体１２に対し回転しても回転角θを検出できる。図７（ａ）ではノズル６１の配列方向に離間して２つのナビゲーションセンサＳ０，Ｓ１が配置されている。２つのナビゲーションセンサＳ０，Ｓ１の間の長さは距離Ｌである。距離Ｌは長いほどよい。これは、距離Ｌが長いほど検出可能な最小の回転角θが小さくなり、ハンドヘルドプリンタ２０の位置の誤差が少なくなるからである。
【００７７】
ナビゲーションセンサ３０からＩＪ記録ヘッド２４までの距離はそれぞれ距離ａ、ｂである。距離ａと、距離ｂは等しくてもよい。また、図７（ｂ）に示すように、ＩＪ記録ヘッド２４の端から最初のノズル６１までの距離は距離ｄ、隣接するノズル間の距離は距離ｅである。ａ〜ｅの値はＲＯＭ２８などに予め記憶されている。
【００７８】
したがって、位置算出回路３２などがナビゲーションセンサ３０の位置を算出すれば、距離ａ、距離ｂ、距離ｄ、距離ｅを用いて、位置算出回路３２はノズル６１の位置を算出できる。
【００７９】
本実施形態では、印刷媒体１２に水平な方向をＸ軸、垂直な方向をＹ軸に設定する。この座標を印刷媒体座標と称することにする。これに対し、ナビゲーションセンサ３０は次のような座標軸（Ｘ´軸、Ｙ´軸）で位置を出力する。すなわち、ノズル６１の配列方向（２つのナビゲーションセンサＳ０、Ｓ１を結ぶ方向）をＹ´軸、Ｙ´軸に直交する方向をＸ´軸とする。位置の算出は位置算出回路３２によって行われる。
【００８０】
＜印刷媒体におけるハンドヘルドプリンタの位置について＞
次に、図８を用いて、ハンドヘルドプリンタ２０の位置について説明する。図８（ａ）では、印刷媒体１２に対しハンドヘルドプリンタ２０が時計回りにθ回転している。全く回転していなければ、Ｘ＝Ｘ´、Ｙ＝Ｙ´である。しかし、ハンドヘルドプリンタ２０が印刷媒体１２に対し回転角θ、回転した場合、ナビゲーションセンサＳ０、Ｓ１の出力とハンドヘルドプリンタ２０の印刷媒体１２における実際の位置が一致しなくなる。
【００８１】
このため、図８（ａ）に示すように、ナビゲーションセンサＳ０，Ｓ１が出力するΔＸ´、ΔＹ´は、印刷媒体座標のＸ、Ｙと以下のように対応する。図８（ａ）では回転角θのハンドヘルドプリンタ２０がＸ方向にのみ同じ回転角θのまま移動した場合のナビゲーションセンサＳ０，Ｓ１（平行移動なので出力は等しい）が検出する移動量ΔＸ´、ΔＹ´とＸ，Ｙの対応を示している。ナビゲーションセンサＳ０，Ｓ１が出力するΔＸ´はＸ１に反映され、ΔＹ´はＸ２に反映される。
【００８２】
図８（ｂ）では回転角θのハンドヘルドプリンタ２０がＹ方向にのみ同じ回転角θのまま移動した場合のナビゲーションセンサＳ０，Ｓ１（平行移動なので出力は等しい）が検出する移動量ΔＸ´、ΔＹ´とＸ，Ｙの対応を示している。ナビゲーションセンサＳ０，Ｓ１が出力するΔＹ´はＹ１に反映され、−ΔＸ´はＹ２に反映される。
【００８３】
したがって、ハンドヘルドプリンタ２０がＸ方向及びＹ方向に回転角θのまま移動した場合、ナビゲーションセンサＳ０，Ｓ１が出力するΔＸ´、ΔＹ´は印刷媒体座標のＸ，Ｙに以下のように変換できる。
Ｘ＝ΔＸ´cosθ＋ΔＹ´sinθ  …（１）
Ｙ＝−ΔＸ´sinθ＋ΔＹ´cosθ  …（２）
このように、画像形成の開始位置を基点にして、回転角θが分かれば式（１）（２）からナビゲーションセンサＳ０，Ｓ１の印刷媒体座標の位置を求めることができる。画像形成の開始位置は、ユーザがハンドヘルドプリンタ２０のボタンなどを押下して画像形成を開始する位置であり、例えば印刷媒体１２の左上コーナーのやや内側などである。
【００８４】
なお、ΔＸ´、ΔＹ´のサンプリング時間における回転角ｄθは２つのナビゲーションセンサＳ０，Ｓ１の出力（ΔＸ´0、ΔＸ´1）の差から以下のようにして求めることができる。ｄθが蓄積されることで回転角θを求めることができる。
ｄθ＝arcsin｛（ΔＸ´0−ΔＸ´1）/Ｌ｝  …（３）
＜位置検出マーク＞
図９を用いて位置検出マークＭ１、Ｍ２について説明する。図９では、ハンドヘルドプリンタ２０の上面図における位置検出マークＭ１、Ｍ２の配置例を示している。ハンドヘルドプリンタ２０の少なくとも２点の位置が分かれば、ハンドヘルドプリンタ２０の位置と姿勢を推定可能である。このため、位置検出マークＭ１、Ｍ２は２点の位置を特定できるように二箇所に配置されている。
【００８５】
位置検出マークＭ１，Ｍ２は、ＨＨＰ２０に一体に形成されていてもよいし、シールのように貼付されたものでもよい。また、ＯＰＵ２６が液晶ディスプレイなどの場合、ＯＰＵ２６が表示してもよい。
【００８６】
図９（ａ）ではハンドヘルドプリンタ２０の右上コーナーと左下コーナーにそれぞれ位置検出マークＭ１、Ｍ２が配置されている。どちらの位置検出マークＭ１，Ｍ２もハンドヘルドプリンタ２０の１点の座標を示すため、撮像データ１４からは、例えば位置検出マークＭ１の左上頂点Ｐ１の位置が検出され、位置検出マークＭ２の上側頂点Ｐ２の位置が検出される。これら以外の頂点が検出されてもよい。
【００８７】
また、図９（ａ）では位置検出マークＭ１とＭ２の向きが異なっているが（位置検出マークＭ２が菱形形状になっている）、図９（ｂ）に示すように位置検出マークＭ１とＭ２の向きは同じでもよい。また、図９（ｃ）に示すように、ハンドヘルドプリンタ２０の右上コーナーと左上コーナーにそれぞれ位置検出マークＭ１、Ｍ２が配置されていてもよい。
【００８８】
また、図９（ｄ）ではハンドヘルドプリンタ２０の右上コーナーに１つのみ位置検出マークＭ１が配置されている。この位置検出マークＭ１は中央に長方形のベタ部とそれを囲む四角とを有している。このような位置検出マークＭ１では上下方向と左右方向で、横切る直線が通過する黒、白の画素の長さの比が異なる。例えば、上下方向に１（黒）：１（白）：３（黒）：１（白）：１（黒）、左右方向に１（黒）：１（白）：７（黒）：１（白）：１（黒）、になる。このような予め定められた白黒の画素の比率が、角度が９０度異なる２本の直線で検出された場合、位置検出マークＭ１が検出されたと判定してよいので、位置検出マークＭ１の検出精度を向上させることができる。このため、位置検出マークＭ１が１つのみ配置された場合でも、例えば位置検出マークＭ１の左上頂点Ｐ３と右下頂点Ｐ４をそれぞれハンドヘルドプリンタ２０の２点の位置として採用できる。
【００８９】
同様に、図９（ａ）〜（ｃ）の矩形状の位置検出マークＭ１、Ｍ２がいずれか１つのみが配置されていても、位置検出マークＭ１（又はＭ２）が長方形などの向きが分かる形状であれば、位置検出マークＭ１（又はＭ２）の任意の２つ以上の頂点の位置をハンドヘルドプリンタ２０の２点の座標として採用してよい。
【００９０】
また、位置検出マークＭ１、Ｍ２は三角形、星形などでもよい。また、位置検出マークＭ１、Ｍ２の２つが配置される場合、位置検出マークＭ１、Ｍ２は円形でもよい。
【００９１】
続いて、位置検出マークＭ１、Ｍ２の検出方法について説明する。位置検出マークＭ１、Ｍ２は、ハンドヘルドプリンタ２０の筐体の色と異なる色で形成されている。したがって、マーク検出部５３は例えば以下のような手順で撮像データ１４から位置検出マークＭ１、Ｍ２を検出できる。以下では、図９（ａ）〜（ｃ）の位置検出マークＭ１，Ｍ２の検出方法を説明する。
(i) 画像を白又は黒に二値化する。
(ii) 連続した黒画素を探しだす。
(iii) 上下左右方向のエッジを検出する。
(iv) ハフ変換により直線を検出し、４つの直線で囲まれた黒画素を検出する。
(v) (iv)の黒画素が二箇所見つかった場合（二箇所より多く見つかった場合は矩形を囲む４つの直線の縦横比で判別する）、それぞれを位置検出マークＭ１，Ｍ２に決定する。
【００９２】
なお、このような位置検出マークの検出方法は一例に過ぎず、例えば(iv)でハリスのコーナー検出方法を用い、位置検出マークＭ１，Ｍ２の各頂点を検出してもよい。また、例えば、機械学習により位置検出マークＭ１，Ｍ２を学習した識別装置が位置検出マークを検出してもよい。
【００９３】
図１０は、位置検出マークＭ１、Ｍ２とナビゲーションセンサ３０の相対位置を示す図の一例である。図１０に示すように、位置検出マークＭ１の左上頂点Ｐ１からナビゲーションセンサＳ０までの距離αと距離βは既知である。したがって、位置検出マークＭ１，Ｍ２の位置が検出されれば、ナビゲーションセンサＳ０の位置を特定できる。
【００９４】
なお、位置検出マークＭ２からナビゲーションセンサＳ０の位置を求めることも可能である。また、ナビゲーションセンサＳ０に対するＳ１の相対位置も既知なので、ナビゲーションセンサＳ０又はＳ１が分かれば、ナビゲーションセンサＳ１又はＳ０の位置も特定できる。
【００９５】
＜撮像データからの照合用画像の取得＞
次に、撮像データからの照合用画像の取得について説明する。まず、図１１（ａ）を用いて、画像データ出力器１１が有する画像データ１３を説明する。図１１（ａ）は画像データ１３の一例を座標と共に示す図である。画像データ出力器はハンドヘルドプリンタ２０へ図１１（ａ）の画像データ１３を送信する。また、画像データ出力器１１は、画像データ１３の全体を保持しているため、画像データ１３の各画素の座標も特定できる。なお、説明の便宜上、画像データ１３の左上コーナーを原点（０，０）とするが、原点はどこにとってもよい。
【００９６】
ハンドヘルドプリンタ２０が途中まで画像を形成したが、画像形成の終了までに現在の位置を見失った場合、ユーザはハンドヘルドプリンタ２０と印刷媒体１２を撮像する。図１１（ｂ）は撮像時の画像データ出力器１１の姿勢を示す図である。図１１（ｂ）に示すように、画像データ出力器１１の光軸７は印刷媒体１２に対し垂直であることが好ましい。これにより、撮像データ１４に光軸７の傾きにより生じる歪み（射影変形）が生じないので、撮像データ１４と画像データ１３の比較が容易になる。
【００９７】
<<撮像データの変倍>>
ここで、撮像データ１４の大きさは画像データ出力器１１が印刷媒体１２に対しどのくらいの距離で撮像したかや焦点距離（倍率）によって変動しうる。これに対し、画像データ１３が印刷媒体１２に形成された際の大きさは決まっている（例えばＡ４に収まる大きさ）。このため、パターンマッチング部５４は、位置検出マークＭ１とＭ２の距離（位置検出マークが１つだけの場合は辺の長さ）が、画像形成時の実際の長さになるように撮像データ１４を変倍する。例えば、１ピクセル（ピクセル間のピッチ間隔を含む）が実空間のｓ〔ｍｍ〕の長さに相当することが分かっているものとする。また、位置検出マークＭ１とＭ２の実際の長さが５０ｍｍ、撮像データ１４における位置検出マークＭ１とＭ２の距離が３００ピクセルであるとする。この場合、画像形成時の位置検出マークＭ１とＭ２の距離は「ｓ×３００」の長さとなるので、これが５０〔ｍｍ〕になるように撮像データ１４を変倍する。したがって、ｓの値が焦点距離ごとに予め定められたテーブルなどを参照することで、パターンマッチング部５４は撮像データ１４が画像データ１３と同じ大きさになるように変倍できる。なお、画像データ１３を変倍することで撮像データ１４が画像データ１３と同じ大きさになるようしてもよい。
【００９８】
なお、パターンマッチング部５４は位置検出マークＭ１とＭ２のピクセル数から画像データ出力器１１と印刷媒体１２の距離を算出してもよい。そして、この距離に応じて撮像データ１４を変倍してよい。距離と変倍率の関係は、撮像データ１４と画像データ１３の大きさが合うように予め設定されている。
【００９９】
<<照合用画像の取得とパターンマッチング>>
図１１（ｃ）は、画像データ出力器１１が撮像した撮像データ１４の一例を示す。この撮像データ１４には印刷媒体上に形成画像７１とハンドヘルドプリンタ２０が撮像されている。形成画像７１とハンドヘルドプリンタ２０の相対位置は明らかである。したがって、画像データ１３から形成画像７１を検出できれば、この相対位置を用いて画像データ１３におけるハンドヘルドプリンタ２０の位置を決定できる。
【０１００】
パターンマッチング部５４は形成画像７１のうち、ハンドヘルドプリンタ２０の周囲又は近くの一部又は全部を照合用画像１４ａとして取り出す。まず、文字列が含まれる照合用画像１４ａについて説明する。文字列を用いるのは、説明の便宜によるものであり、照合用画像１４ａが画像（イメージ）であってもよい。
【０１０１】
パターンマッチング部５４は、画像処理により文字列を取り出す。文字領域は、例えば、空間周波数を求めてその高さが閾値以上の領域として抽出される。また、連続する黒画素の外接矩形を求め、ほぼ一定の高さの外接矩形がほぼ一定間隔で一方向に並んでいる場合に文字列であると判定できる。本実施例では、「ＨＡＮＤ ＨＥＬＤ ＰＲＩＮ」という文字を含む照合用画像１４ａを取り出したものとする。
【０１０２】
図１２は画像データ１３に対する照合用画像１４ａを用いたパターンマッチングを模式的に説明する図の一例である。図１２（ａ）は照合用画像１４ａと画像データ１３を示している。パターンマッチング部５４は、例えば、原点（０，０）に照合用画像１４ａのお左上コーナーを合わせて１画素ごとに（又は画素ブロック毎に）差分を算出する。画像データ１３と照合用画像１４ａのどちらも黒画素又は白画素ならその画素の差分はゼロである。一方、画像データ１３と照合用画像１４ａの一方だけが黒画素又は白画素ならその画素の差分の絶対値は１である。したがって、照合用画像１４ａがしめる面積分の差分の合計が小さいほど照合用画像１４ａが画像データ１３と一致していることを示す。
【０１０３】
図１２（ｂ）に示すように、パターンマッチング部５４は画像データ１３に対し照合用画像１４ａを１画素ずつずらしながら（又は画素ブロックずつずらしながら）、差分の合計を算出する。最も差分の合計が小さい時に照合用画像１４ａと重なっている領域が一致画像１３ａである。
【０１０４】
図１２（ｃ）では、照合用画像１４ａが画像データ１３と一致している。このようにして、画像データ１３から一致画像１３ａが特定される。
【０１０５】
なお、文字でなく画像（イメージ）の場合も同様にパターンマッチングすることができる。すなわち、ハンドヘルドプリンタ２０の周囲又は近くの任意の矩形領域を照合用画像１４ａとしてパターンマッチングを行えばよい。
【０１０６】
ただし、照合用画像１４ａが文字又は画像（イメージ）のどちらであるかを特定することで、一致画像１３ａの検出に要する時間を短縮できる。すなわち、画像データ１３においても文字領域又は画像領域のみでパターンマッチングを行えばよい。画像領域は、文字領域でない領域として判定してもよいし、画素を色空間へのクラスタリングすることなどにより検出できる。
【０１０７】
また、文字でパターンマッチングを行う場合、パターンマッチング部５４が画素単位でパターンマッチングするのでなく、文字単位でパターンマッチングしてもよい。例えば、パターンマッチング部５４が照合用画像１４ａに対しＯＣＲ（Optical Character Reader）を行う。これにより、照合用画像１４ａに含まれる文字コードがわかるので、パターンマッチング部５４は画像データ１３に対してもＯＣＲを行い、同じ文字コードが並んでいる文字列をさがす。これにより、画像データ１３の一致画像１３ａの場所が分かる。
【０１０８】
<<一致画像１３ａを一意に決定できない場合>>
ここで、一致画像１３ａを一意に決定できない場合を考える。すでに形成された画像データ１３が極端に少ない（例えば２〜３文字しか形成されておらず同じ文字が画像データに複数ある）、又は、画像データ１３に同一の文字パターンが複数ある場合、一致画像１３ａを特定できない。前者の場合、パターンマッチング部５４は、画像形成開始位置に近い位置の文字であると判定する。後者の場合、パターンマッチング部５４が複数の文字パターンを表示装置１０２に表示して、ユーザに選択してもらう。
【０１０９】
図１３は表示装置１０２に表示された問い合わせ画面１３００の一例を示す図である。この問い合わせ画面１３００には、画像データ１３と撮像データ１４とが表示されている。パターンマッチング部５４は、撮像データ１４から照合用画像１４ａを選択し、画像データ１３から４つの一致画像１３ｂ１〜１３ｂ４を検出した。パターンマッチング部５４はこの４つの一致画像１３ｂ１〜１３ｂ４を矩形で囲むなどして強調する。また、問い合わせ画面１３００に「右の四角で囲まれた文字列に相当する文字列を選択してください。」などのメッセージ１３０１を表示する。ユーザは、撮像データ１４の照合用画像１４ａが一致画像１３ｂ１〜１３ｂ４のうちどれに対応するかを判定し、４つの一致画像１３ｂ１〜１３ｂ４からいずれか１つを選択する（タッチする）。
【０１１０】
<<パターンマッチングの別の例>>
図１４を用いてパターンマッチングの別の方法について説明する。図１４は、照合用画像１４ａの辺の長さに着目したパターンマッチングの一例を示す図である。
【０１１１】
この方法は、文字を含む照合用画像１４ａ（ここでは"ＨＡＮＤ"）の短辺(a-b)・長辺(b-c)・対角線(a-c)を結ぶ直線（又は各頂点）を検出する方法である。画素レベルでパターンマッチングするよりも、演算処理負荷を低減できる。
【０１１２】
パターンマッチング部５４は、撮像データ１４から一定以上の余白で区切られている文字の集合体を取り出す。この集合体は照合用画像１４ａである。英語の場合は、単語ごとに切り出せばよい。日本語のように単語間にスペースがない言語では、句読点と句読点の間の文字を切り出す。これは、スペースを排除して文字列を取り出すためである。また、単語や句読点に着目することで、画像データ１３からも同じ区切りで文字の集合体を取り出すことができる。この集合体は一致画像１３ｂの候補となる。なお、改行により２行にわたった文字列は含まない。
【０１１３】
画像データ１３によっては、行間のスペースが少ない場合等もあるため、一概に文字の塊の区切りは決まっていないが、塊（集合体）として扱うために、一定の閾値を儲け、塊を検出すればよい。
【０１１４】
図１４（ａ）の例では、「ＨＡＮＤ」という文字の集合体を含む照合用画像１４ａの各頂点ａｂｃにより三角形が構成される。図１４（ｂ）では、「ＨＡＮＤ」という文字の集合体を含む一致画像１３ａの候補の矩形領域のうち、各頂点a',b',c'により三角形が構成されている。
【０１１５】
したがって、照合用画像１４ａの三角形ａｂｃと同じ長さの辺を持つ三角形が一致画像１３ａの候補から見つかれば、それが一致画像１３ａである可能性が高い。
【０１１６】
なお、本実施形態では撮像データ１４は画像データ１３に対し回転していないことが前提とされ、回転していても撮像部５２が文字列などに着目し傾き補正することで、画像データ１３と撮像データ１４の角度の違いは考慮しなくてよい。
【０１１７】
しかし、図１４（ｃ）に示すように、撮像データ１４が画像データ１３に対し回転している場合、パターンマッチング部５４は照合用画像１４ａを回転させて確認してもよい。まず、a点とa'点の座標を合わせ、c点、c'点の座標が合うように回転していく。代わりにb点、b'点を用いても構わないが、距離が長い方が演算精度を高めることができる。
【０１１８】
ここで、距離の長さが精度に起因するのは、プログラム上のbit数が関係する。演算上、扱われる値は有限なbit数である（例えばC言語のdouble型は16bit）。よって、最小単位の演算ズレが生じる。また、画像データ１３が座標化される際も同様に有限bit数の影響を受ける。以上から、ずれ得る最小単位は同じであるが、表す距離が異なる場合、相対的に距離が長い方が、最小単位誤差の影響が低減することがわかる。
【０１１９】
＜画像データにおけるハンドヘルドプリンタの位置＞
図１５は、画像データ１３におけるハンドヘルドプリンタ２０の位置を説明する図の一例である。図１５（ａ）は撮像データ１４におけるハンドヘルドプリンタ２０の相対位置を示している。撮像データ１４から位置検出マークＭ１，Ｍ２が検出されて、照合用画像１４ａとの相対位置も明らかになっている。例えば、照合用画像１４ａの左上頂点Ｐ５からの距離と方位φで位置検出マークＭ１，Ｍ２の位置を表す。
位置検出マークＭ１：距離ｋ１、方位φ１
位置検出マークＭ２：距離ｋ２、方位φ２
図１５（ｂ）は画像データ１３における一致画像１３ａと推定される位置検出マークＭ１，Ｍ２の位置を示す。画像データ１３において、位置検出マークＭ１は一致画像１３ａの左上頂点Ｐ６に対し距離ｋ１、方位φ１にあり、位置検出マークＭ２は一致画像１３ａの左上頂点Ｐ６に対し距離ｋ２、方位φ２にある。したがって、パターンマッチングにより検出された一致画像１３の左上頂点Ｐ６を基点にして、画像データ１３における位置検出マークＭ１、Ｍ２の位置（座標）を特定できる。
【０１２０】
位置決定部５５は、一致画像１３の左上頂点Ｐ６から距離ｋ１、方位φ１にある点Ｐ１の座標（M0x、M0y）を位置検出マークＭ１の座標に決定する。同様に、一致画像の左上頂点から距離ｋ２、方位φ２にある点Ｐ２の座標（M1x、M1y）を位置検出マークＭ２の座標に決定する。位置決定部５５はこのようにして決定した（M0x、M0y）（M1x、M1y）、又は、ナビゲーションセンサＳ０，Ｓ１の位置をハンドヘルドプリンタ２０に送信する。
【０１２１】
＜動作手順＞
図１６は、本実施形態の画像形成システム１の動作手順を示すフローチャート図の一例である。
【０１２２】
まず、ユーザはハンドヘルドプリンタ２０の電源ボタンを押下する（Ｕ０１）。
【０１２３】
ハンドヘルドプリンタ２０は電源ＯＮにより起動して、ＳｏＣ５０やＡＳＩＣ／ＦＰＧＡ４０を初期化する（Ｈ０１）。
【０１２４】
この後、初期化を完了することで（Ｈ０２のＹｅｓ）、ハンドヘルドプリンタ２０は画像形成の開始が可能である旨の意味するＬＥＤを点灯させる（Ｈ０３）。
【０１２５】
次に、ユーザは画像データ出力器１１を操作して印刷に使用する画像データ１３を選択する（Ｕ０２）。
【０１２６】
また、ユーザは画像データ出力器１１を操作して印刷ジョブを実行する（Ｕ０３）。
【０１２７】
これに対し、画像データ出力器１１の記憶・読出部５９は記憶部１０００に画像データ１３を記憶させる（Ｄ０１）。
【０１２８】
また、画像データ出力器１１のパターンマッチング部５４は画像データ１３の座標を保持しておく（Ｄ０２）。すなわち、画像データ１３が印刷媒体１２に形成された場合の各画素の座標を求めておく。なお、画像データ出力器１１の送受信部５１は画像データ１３をハンドヘルドプリンタ２０に送信する。
【０１２９】
次に、ハンドヘルドプリンタ２０は画像データ１３を受信したことにより、ＬＥＤを点滅させる（Ｈ０４）。これにより、ユーザは画像形成できることを把握する。
【０１３０】
ユーザはハンドヘルドプリンタ２０の初期位置を決定する（Ｕ０４）。そして、印字開始決定ボタンを押下して（Ｕ０５）、フリーハンドで操作を行う（Ｕ０６）。
【０１３１】
ハンドヘルドプリンタ２０は現在の位置に応じてインクを吐出して画像形成を行う（Ｈ０５）。
【０１３２】
そして、走査中にユーザがハンドヘルドプリンタ２０を浮かせてしまったものとする（Ｕ０７）。
【０１３３】
これにより、ハンドヘルドプリンタ２０の位置喪失検知部６６は位置情報と浮き情報を取得して内部メモリに記憶させる（Ｈ０６）。
【０１３４】
以降、ユーザは位置の取得に必要な操作を行う。すなわち、すでに形成された画像データ１３とハンドヘルドプリンタ２０を１つの撮像データ１４に撮像する（Ｕ０８）。
【０１３５】
画像データ出力器１１のマーク検出部５３は撮像データ１４から位置検出マークＭ１，Ｍ２を検出する（Ｄ０３）。
【０１３６】
そして、パターンマッチング部５４が位置検出マークの周囲又は近くから照合用画像１４ａを取得し、画像データ１３に対しパターンマッチングを行う（Ｄ０４）。照合用画像１４ａは文字でも画像（イメージ）でもよい。
【０１３７】
次に、位置決定部５５は、画像データ１３において照合用画像１４ａと一致した一致画像１３ａに対する位置検出マークＭ１，Ｍ２の相対位置を決定する（Ｄ０５）。
【０１３８】
そして、ナビゲーションセンサＳ０，Ｓ１の位置又は位置検出マークＭ１，Ｍ２の位置をハンドヘルドプリンタ２０に送信する（Ｄ０６）。
【０１３９】
ハンドヘルドプリンタ２０の位置設定部６７は、ナビゲーションセンサＳ０，Ｓ１の位置を位置算出回路３２に設定する（Ｈ０７）。これにより、位置算出回路３２はノズルの位置を算出できる。ハンドヘルドプリンタ２０はＬＥＤを点灯するなどして画像形成を再開できる旨をユーザに通知する。したがって、ユーザは画像形成を再開できる。
【０１４０】
以上説明したように、本実施例の画像形成システム１は、ハンドヘルドプリンタ２０が位置を見失っても画像データ出力器１１が位置を算出して画像形成を再開できる。見えないインクを吐出するユニットやスキャナユニットを搭載する必要もない。
【実施例２】
【０１４１】
実施例１では、画像データ出力器１１が印刷媒体１２の正面から形成画像とハンドヘルドプリンタ２０を撮像した。本実施例では、撮像時の光軸が印刷媒体１２に対し傾いていてもハンドヘルドプリンタ２０の位置を算出可能な画像データ出力器１１について説明する。
【０１４２】
図１７は、本実施例の画像データ出力器１１の機能ブロック図の一例を示す。なお、本実施例において、図６において同一の符号を付した構成要素は同様の機能を果たすので、主に本実施例の主要な構成要素についてのみ説明する場合がある。本実施例の画像データ出力器１１は行列算出部５６を有している。
【０１４３】
行列算出部５６は、図４に示されているＣＰＵ１０６からの命令等によって実現され、後述する射影変換行列を算出する。
【０１４４】
＜射影変換行列＞
射影変換行列について説明する。画像データ出力器１１の光軸が傾くことで印刷媒体や撮像データ１４が歪んでしまうことを考える。図１８は、撮像データ１４の歪みを説明する図の一例である。図１８（ａ）は画像データ出力器１１が保持する画像データ１３の一例を、図１８（ｂ）は画像データ出力器１１により撮像された撮像データ１４の一例を示す。
【０１４５】
撮像データ１４は画像データ１３に基づき形成されているので、撮像データ１４は画像データ１３と対応する点を有している。画像データ１３の座標をｍp（ｘp、ｙp）、撮像データ１４の座標をｍc（ｘc、ｙc）とすると、ｍｐとｍｃは射影変換行列Ｈ（補正情報の一例）を用いて以下のように表すことができる。ｍp（ｘp、ｙp）は画像データ１３の左上頂点を原点とする座標系の座標であり、ｍc（ｘc、ｙc）は撮像データ１４の左上頂点を原点とする座標系の座標である。
【０１４６】
【数１】
0006507865.tif 000002
そして、ｍp（ｘp、ｙp）とｍc（ｘc、ｙc）の１つの対応点から以下の拘束が得られる。
【０１４７】
【数２】
0006507865.tif 000003
１つの拘束で、８つの未知パラメータに対し２つの拘束式が得られる。したがって、画像データ１３と撮像データ１４で４つの対応点が得られれば、射影変換行列Ｈの全ての要素を決定できる。
【０１４８】
図１８において画像データ１３と撮像データ１４の対応は必ずしも明確でない。このため、画像データ出力器１１が例えば、表示装置１０２に画像データ１３と撮像データ１４を表示して、対応点をユーザに入力させる。この場合、ユーザは例えば画像データ１３と撮像データ１４で対応する文字の同じ場所（例えばＨの左上頂点、Ｎの右上頂点、Ｎの右下頂点、Ｈの左下頂点など）をそれぞれ指示する。
【０１４９】
あるいは、画像データ１３のうち画像形成された画素を画像データ出力器１１がハンドヘルドプリンタ２０から取得して、以下のように対応点を抽出する。上記のように、ハンドヘルドプリンタ２０はインクを吐出した画素を記録しているので、画像形成された画素は明らかである。
【０１５０】
図１８の例では、画像データ１３のうち「ＨＡＮＤ ＨＥＬＤ ＰＲＩＮ」という文字が形成済みである。行列算出部５６はこの形成済みの領域の左上頂点、右上頂点、右下頂点、左下頂点を対応点として採用する。よって、行列算出部５６は画像データ１３の左上頂点ｍp1、Ｎの右上頂点ｍp2、Ｎの右下頂点ｍp3、Ｈの左下頂点ｍp4を対応点とする。したがって、行列算出部５６は、ハンドヘルドプリンタ２０から「ＨＡＮＤ ＨＥＬＤ ＰＲＩＮ」という画像を形成したことを座標データとして取得し、座標データから４つの頂点ｍp1、ｍp2、ｍp3、ｍp4を決定する（ハンドヘルドプリンタ２０が有する点ｍp1〜ｍp4の座標は画像データ１３の点ｍc1〜ｍc4の座標と同じものである。）。
【０１５１】
撮像データ１４において点ｍp1、ｍp2、ｍp3、ｍp4と対応する点ｍc1、ｍc2、ｍc3、ｍc4は以下のように求められる。すなわち、点ｍc1は最も左上の画素、点ｍc2は最も右上の画素、点ｍc3は最も右下の画素、点ｍc4は最も左下の画素、を探索することで得られる。なお、単独点などノイズの影響を低減するため好ましくはフィルターなどで撮像データ１４を平滑化しておく。
【０１５２】
以上は、照合用画像１４ａが文字列の場合を説明したが、画像（イメージ）が形成されている場合も、画像（イメージ）の左上頂点、右上頂点、右上頂点、左下頂点を特定できれば同様に対応点を求めることができる。なお、対応点で囲まれる面積が広い方がＨを精度よく求めることができるため、可能な限り広範囲の対応点を決定することが好ましい。
【０１５３】
＜照合用画像の取得＞
実施例１と同様に、マーク検出部５３は位置検出マークＭ１，Ｍ２を検出できる。パターンマッチング部５４は位置検出マークＭ１，Ｍ２の周囲又は近くの所定範囲の画像を照合用画像１４ａに決定する。
【０１５４】
＜パターンマッチング＞
パターンマッチングは歪みのない照合用画像１４ａで行うことが好ましいので、パターンマッチング部５４は、照合用画像１４ａの画素の全てを式（４）に適用して歪みを補正する（正面から撮像された状態に変換する）。図１９（ａ）は変換前の照合用画像１４ａを、図１９（ｂ）は変換後の照合用画像１４ａをそれぞれ示す。変換することで照合用画像１４ａの歪みが低減される。したがって、パターンマッチング部５４は実施例１と同様にパターンマッチングすることが可能になる。なお、図１９では射影変換行列Ｈを求めた画像データ１３の範囲と照合用画像１４ａが同じであるが、異なっていてよい。
【０１５５】
照合用画像１４ａの座標系においてパターンマッチング部５４は、位置検出マークＭ１，Ｍ２の座標を式（４）で変換しておく。これにより、照合用画像１４ａに対する位置検出マークＭ１，Ｍ２の距離と方位が、正面から撮像された場合に（すなわち画像データ１３において）どの程度になるかを算出することができる。したがって、図１９（ｂ）に示すように、歪みが補正された照合用画像１４ａに対する歪みが補正された位置検出マークＭ１，Ｍ２の位置が分かる。
【０１５６】
＜画像データにおけるハンドヘルドプリンタの位置＞
パターンマッチング部５４が画像データ１３において一致画像１３ａを検出したものとする。位置決定部５５は図１９（ｂ）のように求められた距離ｋ１，ｋ２と方位φ１、φ２を一致画像１３ａに適用して、画像データ１３における位置検出マークＭ１，Ｍ２の位置を決定する。
【０１５７】
このように、本実施例によれば、画像データ出力器１１が印刷媒体１２と形成された画像を正面から撮像していなくても、ハンドヘルドプリンタ２０の位置を算出して画像形成を再開できる。
【実施例３】
【０１５８】
本実施例では正面から撮像されるように非正面マークが配置されたハンドヘルドプリンタ２０を用いた画像形成システム１について説明する。なお、本実施例の機能ブロック図は実施例１の図６と同様でよい。
【０１５９】
図２０を用いて、ハンドヘルドプリンタ２０に配置される非正面マークＱ１〜Ｑ４（第二マークの一例）について説明する。図２０は、ハンドヘルドプリンタ２０とハンドヘルドプリンタ２０に配置された非正面マークＱ１〜Ｑ４の一例を示す図である。位置検出マークＭ１，Ｍ２については実施例１，２と同様である。これに対し、本実施例ではハンドヘルドプリンタ２０の４つの側面に非正面マークＱ１〜Ｑ４が配置されている。非正面マークＱ１〜Ｑ４は厚みがないため、ハンドヘルドプリンタ２０に対し画像データ出力器１１の光軸が垂直になると撮像データ１４に写らない。換言すれば、非正面マークＱ１〜Ｑ４が写っている間は、光軸が垂直でないことを意味する。
【０１６０】
非正面マークは位置検出マークＭ１，Ｍ２と同じ色であるとして説明するが、異なる色でもよい。異なる色の場合、非正面マークＱ１〜Ｑ４のみを検出できる。同じ色である場合、位置検出マークＭ１，Ｍ２から所定距離内に非正面マークＱ１〜Ｑ４があることを利用して非正面マークを特定する。
【０１６１】
図２１は、画像データ出力器１１によるハンドヘルドプリンタ２０の撮像を模式的に説明する図の一例であり、図２２は画像データ出力器１１の撮像手順を示すフローチャート図の一例である。
【０１６２】
ユーザは画像データ出力器１１が非正面マークＱ１〜Ｑ４を写さないように角度を調整しながら画角に収める。この間、画像データ出力器１１の撮像部５２は定期的に画像を撮像している（Ｓ１０）。
【０１６３】
画像データ出力器１１の撮像部５２は、位置検出マークＭ１、Ｍ２と同様に非正面マークＱ１〜Ｑ４を検出する（Ｓ２０）。
【０１６４】
撮像部５２は、何らかのマークが２つだけ撮像されているか否かを判定する（Ｓ３０）。位置検出マークＭ１、Ｍ２は正面に配置されているので必ず撮像される。したがって、マークが２つだけ撮像されている場合は、光軸が印刷媒体１２に対し正面であると判定できる。
【０１６５】
何らかのマークが２つだけ撮像されている場合（非正面マークＱ１〜Ｑ４を検出できない場合）、撮像部５２は撮像データ１４を取得する（Ｓ４０）。
【０１６６】
したがって、このように撮像された撮像データ１４を用いて、実施例１と同様に拡大・縮小を行い、画像データ１３とパターンマッチングすることで、ハンドヘルドプリンタ２０の位置を算出できる。
【０１６７】
なお、非正面マークＱ１〜Ｑ４は厚みがないと説明したが、非正面マークＱ１〜Ｑ４に厚みがあってもよい。例えば、複数の非正面マークＱ１〜Ｑ４の厚みが同じであることを前提にすれば、撮像データ１４において非正面マークＱ１〜Ｑ４の厚みが同じ場合に、光軸が垂直であることを確認できる。
【０１６８】
また、本実施例では非正面マークＱ１〜Ｑ４が撮像されていないことを撮像部５２が自動的に判定しているが、ユーザが判断して撮像してもよい（シャッターボタンを押してもよい）。ただし、自動的に撮像することで手ぶれなどによる光軸のずれを抑制できる。
【実施例４】
【０１６９】
本実施例では実施例３の構成に加え、画像データ出力器１１が撮像データ１４を拡大・縮小することが不要な画像形成システム１について説明する。なお、本実施例の機能ブロック図は実施例１の図６と同様でよい。
【０１７０】
図２１のように撮像部５２がハンドヘルドプリンタ２０を写す過程で、撮像データ１４にはすでに画像形成された文字などが写っている。したがって、撮像部５２は位置検出マークＭ１，Ｍ２の周囲又は近くの文字を撮像データ１４から取得して、同じ文字を画像データ１３から探し出す。ここではパターンマッチングしてもＯＣＲしてもよい。例えば、撮像データ１４から「ＨＡＮＤ」という文字列を検出した場合、画像データ１３から「ＨＡＮＤ」という文字列を探し出す。両者のサイズが同じであれば、撮像後に撮像データ１４を拡大・縮小することが不要である。
【０１７１】
画像（イメージ）の場合は照合用画像１４ａを取得しパターンマッチングにより一致画像を検出する。そして、両者のサイズが同じになるように撮像する。
【０１７２】
図２３は画像データ出力器１１の撮像時のフローチャート図の一例である。図２３の説明においては図２２との相違点について主に説明する。
【０１７３】
ステップＳ３０でマークが２つだけ撮像されている場合、撮像部５２は撮像データ１４と画像データ１３のサイズが同じになったかどうかを判定する（Ｓ３５）。なお、撮像部５２は、例えば撮像データ１４と画像データ１３のサイズが同じになるように、「カメラを高くしてください」又は「カメラを低くしてください」などの音声を出力してユーザを誘導することが好ましい。
【０１７４】
サイズが同じになった場合、撮像部５２は撮像データ１４を取得する（Ｓ４０）。
【０１７５】
したがって、本実施例の画像データ出力器１１は、ハンドヘルドプリンタ２０の位置の算出過程で、拡大・縮小を省略できる。また、撮像中に照合用画像１４ａと一致する一致画像を特定するので、ユーザの待ち時間を短縮できる。
【０１７６】
なお、本実施例では、文字列のサイズを比較したが、位置検出マークＭ１とＭ２の距離を撮像データ１４と画像データ１３で比較してもよい。すなわち、実施例１のようにピクセル数と形成される画像の長さの関係を利用して、撮像データ１４における位置検出マークＭ１とＭ２の距離（ピクセル）が、予め定められた値（つまり画像形成時に５０〔ｍｍ〕なるピクセル数）になった時に撮像データ１４を取得する。
【０１７７】
＜その他の適用例＞
以上、本発明を実施するための最良の形態について実施例を用いて説明したが、本発明はこうした実施例に何等限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々の変形及び置換を加えることができる。
【０１７８】
例えば、図１３の問い合わせ画面１３００は、複数の一致画像１３ａが検出される場合に表示されると説明したが、照合用画像１４ａが検出された時点で問い合わせ画面１３００が表示されてもよい。この場合、ユーザは照合用画像１４ａと一致する一致画像を候補がない状態の画像データ１３から選択する。また、ユーザが撮像データ１４から照合用画像１４ａを指定してもよい。
【０１７９】
また、本実施形態では位置検出マークＭ１,Ｍ２によりハンドヘルドプリンタ２０の位置を検出した。しかし、ハンドヘルドプリンタ２０の全体の形状や模様が撮像された写真を教師信号として識別器の重みを学習した識別装置により撮像データからハンドヘルドプリンタ２０を認識してもよい。この場合も、ハンドヘルドプリンタ２０が写っている範囲が分かるので、ナビゲーションセンサ３０の位置を特定できる。
【０１８０】
例えば、上記したＳｏＣ５０、ＡＳＩＣ/ＦＰＧＡ４０の構成要素は、ＣＰＵ性能やＡＳＩＣ/ＦＰＧＡ４０の回路規模等により、どちらに含まれていてもよい。
【０１８１】
また、図４，５等で説明されたハンドヘルドプリンタ２０の機能は、ＣＰＵ３１がプログラムを実行することで実現してよい。
【０１８２】
また、本実施形態では、三方向(例えばＸ/Ｙ/Ｒ軸、Ｒ：回転)の位置をそれぞれ検知し、平面上を自由に走査可能（フリーハンド走査）なハンドヘルドプリンタ２０を例にして説明した。しかし、一方向(例えばＸ軸方向)の位置を検知し、一方向にのみ走査させて画像形成するハンドヘルドプリンタ２０に対しても本実施形態を適用できる。また、二方向(例えばＸ/Ｙ軸方向) の位置をそれぞれ検知し、二方向にのみ走査させて画像形成するハンドヘルドプリンタ２０に対しても本実施形態を適用できる。
【０１８３】
また、本実施形態ではインクを吐出して画像を形成すると説明したが、可視光、紫外線、赤外線、レーザなどを照射して画像を形成してもよい。この場合、印刷媒体１２として例えば熱や光に反応するものが用いられる。また、透明な液体を吐出してもよい。この場合、特定の波長域の光が照射されると可視情報が得られる。すなわち、化学的・物理的な作用を経て最終的に肉眼で確認しうる視覚情報を形成できればよい。
【０１８４】
また、本実施形態では、画像形成の際にフリーハンドでユーザが走査させると説明したが、ハンドヘルドプリンタ２０がモータなどを動力にして印刷媒体上を自走してもよい。
【符号の説明】
【０１８５】
１      画像形成システム
１１    画像データ出力器
１２    印刷媒体
１３    画像データ
１４    撮像データ
２０    ハンドヘルドプリンタ
５２    撮像部
５３    マーク検出部
５４    パターンマッチング部
５５    位置決定部
５６    行列算出部
【先行技術文献】
【特許文献】
【０１８６】
【特許文献１】特許第５０３３２４７号公報
【図１】
0006507865.tif 000004
【図２】
0006507865.tif 000005
【図３】
0006507865.tif 000006
【図４】
0006507865.tif 000007
【図５】
0006507865.tif 000008
【図６】
0006507865.tif 000009
【図７】
0006507865.tif 000010
【図８】
0006507865.tif 000011
【図９】
0006507865.tif 000012
【図１０】
0006507865.tif 000013
【図１１】
0006507865.tif 000014
【図１２】
0006507865.tif 000015
【図１３】
0006507865.tif 000016
【図１４】
0006507865.tif 000017
【図１５】
0006507865.tif 000018
【図１６】
0006507865.tif 000019
【図１７】
0006507865.tif 000020
【図１８】
0006507865.tif 000021
【図１９】
0006507865.tif 000022
【図２０】
0006507865.tif 000023
【図２１】
0006507865.tif 000024
【図２２】
0006507865.tif 000025
【図２３】
0006507865.tif 000026