(57)【要約】      （修正有）【課題】印刷媒体上の位置を検知できる情報処理装置を提供する。【解決手段】印刷媒体上の位置を移動しながら画像データに基づき画像を形成する画像形成装置２０（ハンドヘルドプリンタ）と通信可能な情報処理装置１１画像データ出力器であって、画像形成装置及び印刷媒体の撮像データを取得する撮像部５２と、撮像データから印刷媒体を検出する印刷媒体検出部５４と、撮像データから画像形成装置を検出する特徴点検出部５３と、印刷媒体検出手段が検出した印刷媒体上の画像形成装置の位置を決定する装置位置決定部５５と、画像形成装置の位置を画像形成装置に送信する送受信部５１と、を有する。【選択図】図６
2017010271.tif 000002
【特許請求の範囲】
【請求項１】
印刷媒体上の位置を移動しながら画像データに基づき画像を形成する画像形成装置と通信可能な情報処理装置であって、
前記画像形成装置及び前記印刷媒体が撮像されている撮像データを取得する取得手段と、
前記撮像データから前記印刷媒体を検出する印刷媒体検出手段と、
前記撮像データから前記画像形成装置を検出する画像形成装置検出手段と、
前記印刷媒体に対する前記画像形成装置の位置を決定する位置決定手段と、
前記画像形成装置の位置を前記画像形成装置に送信する送信手段と、
を有する情報処理装置。
【請求項２】
前記撮像データに撮像されている前記印刷媒体に前記画像データを配置する画像データ配置手段を有し、
前記位置決定手段は、前記撮像データに撮像されている前記印刷媒体に配置された前記画像データに対する前記画像形成装置の相対位置情報を検出し、
前記送信手段は、前記相対位置情報を前記画像形成装置に送信する請求項１に記載の情報処理装置。
【請求項３】
前記画像データ配置手段は、前記撮像データに撮像されている前記印刷媒体の外縁以内に前記画像データの全体を配置する請求項２に記載の情報処理装置。
【請求項４】
前記画像データ配置手段は、前記撮像データに撮像されている前記印刷媒体に設けられた余白の内側に前記画像データの全体を配置する請求項３に記載の情報処理装置。
【請求項５】
前記印刷媒体検出手段は、前記撮像データに撮像されている寸法が既知の撮像物の大きさに基づいて、前記印刷媒体の寸法を検出し、
前記画像データ配置手段は、前記画像データが前記印刷媒体に画像形成された際の寸法を算出し、
前記印刷媒体の寸法が前記画像データの寸法より小さい場合、前記画像データが前記印刷媒体の外縁以内に収まるように縮小し、縮小した前記画像データを前記印刷媒体に配置する請求項３又は４に記載の情報処理装置。
【請求項６】
前記画像データ配置手段は、前記印刷媒体の寸法が前記画像データの寸法より大きい場合、前記印刷媒体の外縁以内に収まる範囲で前記画像データを拡大し、拡大した前記画像データを前記印刷媒体に配置する請求項５に記載の情報処理装置。
【請求項７】
所定の座標系における前記画像形成装置及び前記画像データの三次元座標を、前記撮像データの撮像に用いられた撮像装置のカメラ座標系における三次元座標に変換するための変換行列を、前記撮像データに写っているマーク又は特徴点に基づいて生成する変換行列生成手段と、
前記変換行列により前記カメラ座標系に変換された前記画像データを前記撮像データに重畳して表示装置に表示する表示手段と、を有する請求項２〜６いずれか１項に記載の情報処理装置。
【請求項８】
前記画像データ配置手段は、前記カメラ座標系における前記印刷媒体の特徴点の三次元座標と前記画像データの三次元座標に応じて変倍した前記画像データを前記印刷媒体に配置する請求項７に記載の情報処理装置。
【請求項９】
前記印刷媒体の寸法と共に前記印刷媒体のフォーマット情報が記憶されている寸法情報記憶手段と、
前記画像データ配置手段が前記変換行列を用いて求めた前記印刷媒体の寸法に適合する前記フォーマット情報を前記寸法情報記憶手段から読み出すフォーマット情報特定手段と、を有し、
前記画像データ配置手段は、前記フォーマット情報特定手段が特定した前記フォーマット情報に従って生成された前記画像データを前記印刷媒体に配置する請求項７又は８に記載の情報処理装置。
【請求項１０】
前記画像形成装置及び前記印刷媒体と共に前記表示装置に表示された前記画像データに対する移動操作又は変倍操作を受け付ける操作受付手段を有し、
前記位置決定手段は、前記操作受付手段が移動操作又は変倍操作を受け付けた前記画像データに対する前記画像形成装置の相対位置情報を検出し、
前記送信手段は、前記相対位置情報を前記画像形成装置に送信する請求項７〜９いずれか１項に記載の情報処理装置。
【請求項１１】
前記操作受付手段は、前記表示装置に表示された前記画像データ又は該画像データの外縁を固定して表示すると共に、該画像データの少なくとも外縁の複製を作成し、前記複製に対する移動操作又は変倍操作を受け付け、固定された前記画像データ又は前記外縁と前記複製の重複領域を特定し、
前記送信手段は、前記画像データのうち前記重複領域のみを前記画像形成装置に送信する請求項１０に記載の情報処理装置。
【請求項１２】
前記位置決定手段は、前記カメラ座標系における前記画像データに対する前記画像形成装置の相対位置情報を検出し、
前記変換行列の逆行列を前記相対位置情報に適用して元の座標系に変換し、
前記送信手段は、元の座標系に変換された前記相対位置情報を前記画像形成装置に送信する請求項７〜１１いずれか１項に記載の情報処理装置。
【請求項１３】
印刷媒体上の位置を移動しながら画像データに基づき画像を形成する画像形成装置と、前記画像形成装置と通信可能な情報処理装置とを有する画像形成システムであって、
前記画像形成装置及び前記印刷媒体が撮像されている撮像データを取得する取得手段と、
前記撮像データから前記印刷媒体を検出する印刷媒体検出手段と、
前記撮像データから前記画像形成装置を検出する画像形成装置検出手段と、
前記印刷媒体に対する前記画像形成装置の位置を決定する位置決定手段と、
前記画像形成装置の位置を前記画像形成装置に送信する送信手段と、
を有する画像形成システム。
【請求項１４】
印刷媒体の位置を移動しながら画像データに基づき画像を形成する画像形成装置であって、
前記画像形成装置及び前記印刷媒体が撮像されている撮像データを取得する取得手段と、
前記撮像データから前記印刷媒体を検出する印刷媒体検出手段と、
前記撮像データから前記画像形成装置を検出する画像形成装置検出手段と、
前記印刷媒体に対する前記画像形成装置の位置を決定する位置決定手段と、
前記位置決定手段が決定した前記位置を基準に画像形成を行う画像形成手段と、を有する画像形成装置。
【請求項１５】
印刷媒体上の位置を移動しながら画像データに基づき画像を形成する画像形成装置と通信可能な情報処理装置を、
前記画像形成装置及び前記印刷媒体が撮像されている撮像データを取得する取得手段と、
前記撮像データから前記印刷媒体を検出する印刷媒体検出手段と、
前記撮像データから前記画像形成装置を検出する画像形成装置検出手段と、
前記印刷媒体に対する前記画像形成装置の位置を決定する位置決定手段と、
前記画像形成装置の位置を前記画像形成装置に送信する送信手段と、
として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、画像形成システム、画像形成装置及びプログラムに関する。
【背景技術】
【０００２】
用紙を搬送させて用紙が画像の形成位置に到達したタイミングでインクなどを吐出して画像を形成するプリンタ装置が知られている。これに対し、プリンタ装置から紙搬送システムを削除することで小型化されたプリンタ装置（以下、ハンドヘルドプリンタという）が実用化されつつある。
【０００３】
図１は、ハンドヘルドプリンタ２０による画像形成を模式的に示す図の一例である。ハンドヘルドプリンタ２０には、例えばスマートフォンやＰＣ（Personal Computer）等の画像データ出力器１１から画像データが送信される。ユーザはこのハンドヘルドプリンタ２０を把持して、印刷媒体１２（例えば定型用紙やノートなど）上をフリーハンドで走査させる。ハンドヘルドプリンタ２０は位置検出機構を有しているため、ハンドヘルドプリンタ２０が目標吐出位置に移動すると、目標吐出位置で吐出すべき色のインクを吐出する。すでにインクを吐出した場所はマスクされるので（インクの吐出の対象とならないので）、ユーザは印刷媒体１２上で任意の方向にハンドヘルドプリンタ２０を走査させることで画像を形成できる。
【０００４】
ところで、従来のハンドヘルドプリンタ２０が検出する位置は、例えば画像形成の開始位置を原点とする相対位置である。つまり、画像形成の開始位置が無条件に原点とされてしまうため、ユーザは印刷媒体１２の例えば左上などの決まった場所からハンドヘルドプリンタの走査を開始しなければならない。
【０００５】
このような不都合に対し、印刷媒体１２上の絶対位置を検出可能な技術も知られている（例えば、特許文献１参照。）。特許文献１には、符号化可能な絶対位置情報等が形成された用紙を用い、ハンドヘルドプリンタがそれを読み取ることで印刷媒体上の絶対位置を検出できるという記載がある。このような特殊な用紙を用いれば、ハンドヘルドプリンタが印刷媒体における絶対位置を検知できるので、ユーザは印刷媒体１２の任意の場所からハンドヘルドプリンタの走査を開始できる。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、特許文献１に記載されている技術では、絶対位置情報が形成された特殊な用紙が必要であるし、さらに、ハンドヘルドプリンタが絶対位置情報を読み取るためのスキャナユニットを有していなければならないという問題がある。
【０００７】
本発明は、上記課題に鑑み、印刷媒体上の位置を検知できる情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明は、上記課題に鑑み、印刷媒体上の位置を移動しながら画像データに基づき画像を形成する画像形成装置と通信可能な情報処理装置であって、前記画像形成装置及び前記印刷媒体の撮像データを取得する取得手段と、前記撮像データから前記印刷媒体を検出する印刷媒体検出手段と、前記撮像データから前記画像形成装置を検出する画像形成装置検出手段と、前記印刷媒体検出手段が検出した前記印刷媒体上の前記画像形成装置の位置を決定する位置決定手段と、前記画像形成装置の位置を前記画像形成装置に送信する送信手段と、を有する。
【発明の効果】
【０００９】
印刷媒体上の位置を検知できる情報処理装置を提供することができる。
【図面の簡単な説明】
【００１０】
【図１】ハンドヘルドプリンタによる画像形成を模式的に示す図の一例である。
【図２】ハンドヘルドプリンタの印刷媒体上の絶対位置を検出する画像形成システムについて説明する図の一例である。
【図３】画像形成システムのシステム構成図の一例である。
【図４】画像データ出力器とハンドヘルドプリンタのハードウェア構成図の一例である。
【図５】制御部の構成を説明する図の一例である。
【図６】画像データ出力器とハンドヘルドプリンタの機能ブロック図の一例である。
【図７】ＩＪ記録ヘッドにおけるノズル位置等を説明する図の一例である。
【図８】ハンドヘルドプリンタの位置を説明する図の一例である。
【図９】ハンドヘルドプリンタの上面図における位置検出マークの配置例を示す図である。
【図１０】位置検出マークとナビゲーションセンサの相対位置を示す図の一例である。
【図１１】撮像データにおけるハンドヘルドプリンタの位置を説明する図の一例である。
【図１２】印刷媒体への画像データの配置方法を説明する図の一例である。
【図１３】印刷媒体への画像データの配置方法を説明する図の一例である。
【図１４】印刷媒体に配置された画像データ及びハンドヘルドプリンタの位置の一例を示す図である。
【図１５】画像データ出力器が画像データに対するハンドヘルドプリンタの位置を検出する手順を示すフローチャート図の一例である。
【図１６】ＡＲマーカーが形成されたハンドヘルドプリンタを撮像する画像データ出力器を示す図の一例である。
【図１７】マーカー座標系、マーカー座標系におけるナビゲーションセンサの座標を示す図の一例である。
【図１８】マーカー座標系とモデル座標系の関係を説明する図の一例である。
【図１９】ＳｆＭに適したハンドヘルドプリンタを撮像する画像データ出力器を示す図の一例である。
【図２０】ハンドヘルドプリンタの寸法を説明する図の一例である。
【図２１】画像データ出力器の機能ブロック図の一例である（実施例２）。
【図２２】プレビュー表示を模式的に説明する図の一例である。
【図２３】平行移動される画像データを説明する図の一例である。
【図２４】平行移動、拡大・縮小後の画像データとハンドヘルドプリンタの相対位置を示す図の一例である。
【図２５】画像形成システムの動作手順を説明するためのフローチャート図の一例である（実施例２）。
【図２６】平行移動、変倍によるトリミングを模式的に示す図の一例である。
【図２７】画像データ出力器の機能ブロック図の一例である（実施例３）。
【図２８】ハンドヘルドプリンタと印刷媒体を撮像する画像データ出力器を示す図の一例である。
【図２９】印刷媒体への画像データの配置を模式的に説明する図の一例である。
【図３０】画像データ出力器の動作手順を示すフローチャート図の一例である。
【図３１】ハンドヘルドプリンタとハガキと呼ばれる印刷媒体を撮像する画像データ出力器を示す図の一例である。
【図３２】ハガキへの画像データの配置を模式的に示す図の一例である。
【図３３】画像データ出力器の動作手順を示すフローチャート図の一例である（実施例３）。
【発明を実施するための形態】
【００１１】
以下、本発明を実施するための形態について図面を参照しながら実施例を挙げて説明する。
【実施例１】
【００１２】
＜処理の概略＞
まず、図２を用いて印刷媒体１２におけるハンドヘルドプリンタ２０の絶対位置の検出の概略について説明する。図２は、ハンドヘルドプリンタ２０の印刷媒体１２上の絶対位置を検出する画像形成システム１について説明する図の一例である。なお、絶対位置とは、印刷媒体１２上の予め定められた原点を基準としてハンドヘルドプリンタ２０の位置を特定するための座標である。従来は、画像形成の開始位置が原点であったため、開始位置に対する相対座標しか得られなかった。なお、以下では、ハンドヘルドプリンタ２０を以下「ＨＨＰ（Hand Held Printer）」と称する。
【００１３】
図２（ａ）に示すように、ユーザは画像データ出力器１１でＨＨＰ２０を好ましくは印刷媒体１２の正面から（光軸が印刷媒体１２に垂直になるように）撮像する。ＨＨＰ２０には予め所定の位置検出マークＭ１，Ｍ２が形成されている。ＨＨＰ２０における位置検出マークＭ１，Ｍ２の位置は既知であり、また、観測側がＨＨＰ２０の姿勢を分かるように配置されている。
【００１４】
画像データ出力器１１は撮像データ１４を解析して、位置検出マークＭ１，Ｍ２を検出することで、印刷媒体１２におけるＨＨＰ２０の位置と姿勢を推定できる。また、画像データ出力器１１は、例えば長方形のエッジで囲まれた領域などとして印刷媒体１２を検出する。位置検出マークＭ１とＭ２の間の距離が既知なので、実空間における印刷媒体１２の寸法を検出することができる。
【００１５】
画像データ出力器１１は、図２（ｂ）に示すように、ユーザが画像形成しようとしている画像データ１３を撮像データ１４の印刷媒体１２上に配置する。画像データ１３は、印刷媒体１２の左上コーナーから余白分だけ内側に配置してもよいし、印刷媒体１２の中央に配置してもよい。印刷媒体１２及び画像データ１３のサイズに応じて拡大・縮小してもよい。
【００１６】
図２（ｂ）のように印刷媒体１２に画像データ１３が配置されることで、ＨＨＰ２０に対する画像データ１３の位置が定まる。すなわち、ＨＨＰ２０の位置が画像データ１３のどの位置と一致しているかが明らかになる。
【００１７】
画像データ出力器１１は、画像データ１３に対するＨＨＰ２０の位置（画像データ１３の原点に対する座標。相対位置情報）をＨＨＰ２０に通知する。印刷媒体１２に対する画像データ１３の配置位置は制御値なので、画像データ１３に対するＨＨＰ２０の位置は、印刷媒体１２におけるＨＨＰ２０の位置ということができる。また、画像データ出力器１１は、印刷媒体１２に配置した画像データ１３をＨＨＰ２０に送信する。これにより、ＨＨＰ２０は、画像データ１３に対する自機の位置から画像形成を開始できる。
【００１８】
このように、画像データ出力器１１は印刷媒体１２に対するＨＨＰ２０の絶対座標を検知することができる。印刷媒体１２に対する絶対座標が分かるので、印刷媒体１２に対し配置された画像データとＨＨＰ２０の相対位置がわかる。これにより、ＨＨＰ２０が撮像時に置かれていた場所からユーザは画像形成を開始できる。また、例えば、画像形成の終了前にＨＨＰ２０が位置を見失った場合、従来は、画像形成の再開が困難であったが、本実施例では、絶対位置を検出できるので画像形成を再開できる。
【００１９】
＜用語について＞
本実施形態で使用される用語について説明する。
【００２０】
画像データ１３…画像形成に用いられるデータであり、画像データ出力器１１が保持している。
【００２１】
撮像データ１４…印刷媒体１２とＨＨＰ２０が撮像されたデータである。
【００２２】
印刷媒体１２…例えば定形用紙やノートなどであるが、これらに限られるわけではなく、机などの固定物を印刷媒体１２としてもよいし、紙以外のシート状部材を印刷媒体１２としてもよい。また、印刷媒体１２は必ずしも水平に配置されていなくてもよい。
【００２３】
＜構成例＞
図３は、画像形成システム１のシステム構成図の一例を示す。図３（ａ）の画像形成システム１は、互いに通信可能な画像データ出力器１１とハンドヘルドプリンタ２０を有している。このようなシステム構成では、画像データ出力器１１が画像データ１３をＨＨＰ２０に送信すると共に、画像データ出力器１１がＨＨＰと印刷媒体１２を撮像する。
【００２４】
画像データ出力器１１は、画像データ１３に対するＨＨＰ２０の位置を検出してＨＨＰ２０に送信する。
【００２５】
また、図３（ａ）のシステム構成において、ＨＨＰ２０が画像データ１３に対するＨＨＰ２０の位置を検出してもよい。この場合、画像データ出力器１１は撮像データ１４をＨＨＰ２０に送信する。ＨＨＰ２０は少なくとも一部の画像データ１３を保持しているが、必要であれば画像データ出力器１１から画像データ１３の全体を取得する。ＨＨＰ２０は、画像データ出力器１１と同様に、画像データ１３に対するＨＨＰ２０の位置を検出する。
【００２６】
図３（ｂ）の画像形成システム１は画像データ出力器１１、ＨＨＰ２０及び撮像装置８を有している。このようなシステム構成では、撮像装置８がＨＨＰ２０と印刷媒体１２を撮像する。撮像装置８は撮像データ１４を画像データ出力器１１に送信するので、画像データ出力器１１は、撮像データ１４を解析して画像データ１３に対するＨＨＰ２０の位置を検出してＨＨＰ２０に送信する。
【００２７】
また、この場合もＨＨＰ２０が画像データ１３に対するＨＨＰ２０の位置を検出してもよい。この場合、撮像装置８は撮像データ１４をＨＨＰ２０に送信する（画像データ出力器１１を経由して送信してもよい）。ＨＨＰ２０は図３（ａ）と同様に画像データ１３に対するＨＨＰ２０の位置を検出する。
【００２８】
また、撮像装置８がＨＨＰ２０の位置を検出してもよい。この場合、撮像装置８は画像データ出力器１１から画像データ１３を取得して、画像データ１３に対するＨＨＰ２０の位置を検出する。撮像装置８は検出した位置をＨＨＰ２０に送信する。
【００２９】
本実施形態の画像形成システム１では、このように画像データ１３と撮像データ１４を取得した装置であれば、ＨＨＰ２０の位置を検出できる。従って、図３（ｃ）に示すように、画像データ出力器１１が画像データ１３と撮像データ１４をサーバ９に送信することで、サーバ９が画像データ１３に対するＨＨＰ２０の位置を検出してもよい。サーバ９は検出した位置を画像データ出力器１１に送信し、画像データ出力器１１はこの位置をＨＨＰ２０に送信する。
【００３０】
以下では、説明の便宜上、画像データ出力器１１がＨＨＰ２０の位置（絶対座標）を検出するものとして説明する。
【００３１】
なお、画像データ出力器１１は、情報処理装置である。例えばスマートフォン、ＰＣ（Personal Computer）、タブレット端末、ＰＤＡ(Personal Digital Assistant)、携帯電話又はウェアラブルＰＣなどである。あるいは、ＭＦＰ（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）、ＯＳ設定、及びネットワーク設定などのプログラムやデータが格納されている。
【００３８】
ＣＰＵ１０６は、ＲＯＭ１０５やＳＳＤ１０８などの記憶装置からプログラムやデータをＲＡＭ１０４上に読み出し、処理を実行することで、画像データ出力器１１全体の制御や機能を実現する演算装置である。
【００３９】
通信Ｉ/Ｆ１０７は、通信を行うためのインタフェースである。通信Ｉ/Ｆ１０７は、例えばBluetooth（登録商標）や無線ＬＡＮなどの通信規格でＨＨＰ２０と通信する。なお、アクセスポイントを介さない無線ＬＡＮの通信規格として、Ｗｉ−Ｆｉ  Ｄｉｒｅｃｔ、アドホックモードなどがある。なお、通信Ｉ/Ｆ１０７は、携帯電話網に接続するためのインタフェースであってもよい。
【００４０】
ＳＳＤ１０８は、プログラムやデータを格納している不揮発性の記憶装置である。格納されるプログラムやデータには、例えば画像データ出力器１１全体を制御する基本ソフトウェアであるＯＳ（Operating System）や、ＯＳ上において各種機能を提供するアプリケーションソフトウェア（後述する出力器用プログラムが含まれる）などがある。なお、画像データ出力器１１は、ＳＳＤ１０８の代わりに又はＳＳＤ１０８と併せて、ＨＤＤ（Hard Disk Drive）等を備えていてもよい。
【００４１】
近距離無線通信装置１０９は、例えば、ＮＦＣ（Near Field Communication）やTransferJet（登録商標）などのＩＣチップを用いた通信規格に従って通信する。画像データ出力器１１は、通信Ｉ/Ｆや近距離無線通信装置１０９を用いてＨＨＰ２０に画像データ１３を送信する。この場合、ＨＨＰ２０もＩＣチップによる通信が可能である。
【００４２】
続いて、図４を用いてＨＨＰ２０のハードウェア構成について説明する。ＨＨＰ２０は、印刷媒体１２に画像を形成する画像形成装置の一例である。ＨＨＰ２０は、制御部２５によって全体の動作が制御され、制御部２５には通信Ｉ/Ｆ２７、ＩＪ記録ヘッド駆動回路２３、ＯＰＵ２６、ＲＯＭ２８、ＤＲＡＭ２９、及び、ナビゲーションセンサ３０が電気的に接続されている。また、ＨＨＰ２０は電力により駆動されるため、電源２２と電源回路２１を有している。電源回路２１が生成する電力は、点線２２ａで示す配線などにより、通信Ｉ/Ｆ２７、ＩＪ記録ヘッド駆動回路２３、ＯＰＵ２６、ＲＯＭ２８、ＤＲＡＭ２９、ＩＪ記録ヘッド２４、制御部２５、及び、ナビゲーションセンサ３０に供給されている。
【００４３】
電源２２は主に電池（バッテリー）が利用される。太陽電池や商用電源（交流電源）、燃料電池等が用いられてもよい。電源回路２１は、電源２２が供給する電力をＨＨＰ２０の各部に分配する。また、電源２２の電圧を各部に適した電圧に降圧や昇圧する。また、電源２２が電池で充電可能である場合、電源回路２１は交流電源の接続を検出して電池の充電回路に接続し、電源２２の充電を可能にする。
【００４４】
通信Ｉ/Ｆ２７は、スマートフォンやＰＣ等の画像データ出力器１１から画像データ１３の受信等を行う。通信Ｉ/Ｆ２７は例えば無線ＬＡＮ、Bluetooth（登録商標）、ＮＦＣ（Near Field Communication）、赤外線、３Ｇ（携帯電話）、又は、ＬＴＥ（Long Term Evolution）等の通信規格に対応した通信装置である。また、このような無線通信の他、有線ＬＡＮ、ＵＳＢケーブルなどを用いた有線通信に対応した通信装置であってもよい。
【００４５】
ＲＯＭ２８は、ＨＨＰ２０のハードウェア制御を行うファームウェアや、ＩＪ記録ヘッド２４の駆動波形データ（液滴を吐出するための電圧変化を規定するデータ）や、ＨＨＰ２０の初期設定データ等を格納している。
【００４６】
ＤＲＡＭ２９は通信Ｉ/Ｆ２７が受信した画像データ１３を記憶したり、ＲＯＭ２８から展開されたファームウェアを格納したりするために使用される。従って、ＣＰＵ３１がファームウェアを実行する際のワークメモリとして使用される。
【００４７】
ナビゲーションセンサ３０は、ＨＨＰ２０の位置を検出するセンサである。ナビゲーションセンサ３０は、例えば、発光ダイオード（ＬＥＤ）やレーザ等の光源と、印刷媒体１２を撮像する撮像センサ、又は、入反射光の干渉縞を撮像するセンサを有している。ＨＨＰ２０が印刷媒体１２上を走査されると、印刷媒体１２の微小なエッジが次々に検出され（撮像され）エッジ間の距離を解析することで移動量が得られる。ナビゲーションセンサ３０は、ＨＨＰ２０の少なくとも２箇所に搭載されている。両者を区別する場合、ナビゲーションセンサＳ０，Ｓ１という。なお、ナビゲーションセンサ３０として、さらに多軸の加速度センサやジャイロセンサ等を用いてもよく、加速度センサやジャイロセンサのみでＨＨＰ２０の位置を検出してもよい。
【００４８】
ＯＰＵ（Operation Unit）２６は、ＨＨＰ２０の状態を表示するＬＥＤ、ユーザがＨＨＰ２０に画像形成を指示するためのスイッチ等を有している。ただし、これに限定するものではなく、液晶ディスプレイを有していてよく、さらにタッチパネルを有していてもよい。また、音声入力機能を有していてもよい。
【００４９】
ＩＪ記録ヘッド駆動回路２３は上記の駆動波形データを用いて、ＩＪ記録ヘッド２４を駆動するための駆動波形（電圧）を生成する。インクの液滴のサイズなどに応じた駆動波形を生成できる。
【００５０】
ＩＪ記録ヘッド２４は、インクを吐出するためのヘッドである。図ではＣＭＹＫの４色のインクを吐出可能になっているが、単色でもよく５色以上の吐出が可能でもよい。各色ごとに一列（二列以上でもよい）に並んだ複数のインク吐出用のノズル（後述する）が配置されている。また、インクの吐出方式はピエゾ方式でもサーマル方式でもよく、この他の方式でもよい。
【００５１】
制御部２５は、ナビゲーションセンサ３０が検出する移動量を元に、ＩＪ記録ヘッド２４の各ノズルの位置、該位置に応じて形成する画像の決定、吐出ノズル可否判定（ノズルの位置が目標吐出位置から所定範囲内かどうかの判定）等を行う。制御部２５について詳細は次述する。
【００５２】
図５は、制御部２５の構成を説明する図の一例である。制御部２５はＳｏＣ５０とＡＳＩＣ/ＦＰＧＡ４０を有している。ＳｏＣ５０とＡＳＩＣ/ＦＰＧＡ４０はバス４５，４６を介して通信する。ＡＳＩＣ/ＦＰＧＡ４０はどちらの実装技術で設計されてもよいことを意味し、ＡＳＩＣ/ＦＰＧＡ４０以外の他の実装技術で構成されてよい。また、ＳｏＣ５０とＡＳＩＣ/ＦＰＧＡ４０を別のチップにすることなく１つのチップや基盤で構成してもよい。あるいは、３つ以上のチップや基盤で実装してもよい。
【００５３】
ＳｏＣ５０は、バス４６を介して接続されたＣＰＵ３１、位置算出回路３２、メモリＣＴＬ（コントローラ）３５、及び、ＲＯＭ ＣＴＬ（コントローラ）３６等の機能を有している。なお、ＳｏＣ５０が有する構成要素はこれらに限られない。
【００５４】
また、ＡＳＩＣ/ＦＰＧＡ４０は、バス４５を介して接続されたＩｍａｇｅ ＲＡＭ３７、ＤＭＡＣ３８、回転器３９、割込みコントローラ４１、ナビゲーションセンサＩ/Ｆ４２、印字/センサタイミング生成部４３、及び、ＩＪ記録ヘッド制御部４４を有している。なお、ＡＳＩＣ/ＦＰＧＡ４０が有する構成要素はこれらに限られない。
【００５５】
ＣＰＵ３１は、ＲＯＭ２８からＤＲＡＭ２９に展開されたファームウェア（プログラム）などを実行し、ＳｏＣ５０内の位置算出回路３２、メモリＣＴＬ３５、及び、ＲＯＭ ＣＴＬ３６の動作を制御する。また、ＡＳＩＣ/ＦＰＧＡ４０内のＩｍａｇｅ ＲＡＭ３７、ＤＭＡＣ３８、回転器３９、割込みコントローラ４１、ナビゲーションセンサＩ/Ｆ４２、印字/センサタイミング生成部４３、及び、ＩＪ記録ヘッド制御部４４の動作を制御する。
【００５６】
位置算出回路３２は、ナビゲーションセンサ３０が検出するサンプリング周期ごとの移動量に基づいてＨＨＰ２０の位置（座標情報）を算出する。ＨＨＰ２０の位置とは、厳密にはノズル６１の位置であるが、ナビゲーションセンサ３０のある位置が分かればノズル６１の位置を算出できる。本実施例では、特に断らない限りナビゲーションセンサ３０の位置としてナビゲーションセンサＳ０、Ｓ１の位置をいう。また、位置算出回路３２は目標吐出位置を算出する。
【００５７】
ナビゲーションセンサ３０の位置は、後述するように例えば所定の原点（例えば、印刷用紙又は画像データ１３の左上コーナーなど）を基準に算出されている。また、位置算出回路３２は、過去の位置と最も新しい位置の差に基づいて移動速度や移動方向を推定し、例えば次回の算出タイミングにおける位置を予測する。こうすることで、ユーザの走査に対する遅れを抑制してインクを吐出できる。
【００５８】
メモリＣＴＬ３５は、ＤＲＡＭ２９とのインタフェースであり、ＤＲＡＭ２９に対しデータを要求し、取得したファームウェアをＣＰＵ３１に送出したり、取得した画像データ１３をＡＳＩＣ/ＦＰＧＡ４０に送出したりする。
【００５９】
ＲＯＭ ＣＴＬ３６は、ＲＯＭ２８とのインタフェースであり、ＲＯＭ２８に対しデータを要求し、取得したデータをＣＰＵ３１やＡＳＩＣ/ＦＰＧＡ４０に送出する。
【００６０】
ＤＭＡＣ３８は、位置算出回路３２が算出した位置情報を元に、メモリＣＴＬ３５を介してＩＪ記録ヘッド２４の各ノズル周辺の画像データ１３を取得する。つまり、印刷媒体１２に対しＨＨＰ２０が存在する位置の周辺の画像データ１３が取得される。
【００６１】
回転器３９は、ＤＭＡＣ３８が取得した画像データを、インクを吐出するヘッド、及び、ヘッド内のノズル位置に応じて回転させる。ＤＭＡＣ３８は回転後の画像データをＩＪ記録ヘッド制御部４４へ出力する。回転器３９は、例えば、位置算出回路３２が位置を算出する際に算出した回転角θを取得し、その回転角θを用いて画像を回転させることができる。
【００６２】
Ｉｍａｇｅ ＲＡＭ３７はＤＭＡＣ３８が取得した画像データ１３を一時的に格納する。すなわち、ある程度の画像データ１３がバッファリングされ、ＨＨＰ２０の位置に応じて読み出される。
【００６３】
ＩＪ記録ヘッド制御部４４は、画像データ１３（ビットマップデータ）にディザ処理などを施して大きさと密度で画像を表す点の集合に画像データ１３を変換する。これにより、画像データ１３は吐出位置と点のサイズのデータとなる。ＩＪ記録ヘッド制御部４４は点のサイズに応じた制御信号をＩＪ記録ヘッド駆動回路２３に出力する。ＩＪ記録ヘッド駆動回路２３は上記のように制御信号に対応した駆動波形データを用いて、駆動波形（電圧）を生成する。
【００６４】
ナビゲーションセンサＩ/Ｆ４２は、ナビゲーションセンサ３０と通信し、ナビゲーションセンサ３０からの情報として移動量ΔＸ´、ΔＹ´（これらについては後述する）を受信し、その値を内部レジスタに格納する。
【００６５】
印字/センサタイミング生成部４３は、ナビゲーションセンサＩ/Ｆ４２にナビゲーションセンサ３０の情報を読み取るタイミングを通知し、ＩＪ記録ヘッド制御部４４に駆動タイミングを通知する。ＩＪ記録ヘッド制御部４４は吐出ノズル可否判定を行い、インクを吐出すべき目標吐出位置があればインクを吐出し、目標吐出位置がなければ吐出しないと判定する。
【００６６】
割込みコントローラ４１は、ナビゲーションセンサＩ/Ｆ４２がナビゲーションセンサ３０との通信が完了したことを検知して、ＳｏＣ５０へそれを通知するための割り込み信号を出力する。ＣＰＵ３１はこの割り込みにより、ナビゲーションセンサＩ/Ｆ４２が内部レジスタに記憶するΔＸ´、ΔＹ´を取得する。その他、エラー等のステータス通知機能も有する。
【００６７】
＜画像データ出力器１１とＨＨＰの機能について＞
続いて、図６を用いて画像データ出力器１１とＨＨＰ２０の機能について説明する。図６は画像データ出力器１１とＨＨＰ２０の機能ブロック図の一例である。
【００６８】
<<画像データ出力器>>
画像データ出力器１１は、送受信部５１、撮像部５２、特徴点検出部５３、印刷媒体検出部５４、装置位置決定部５５、画像データ配置部５６、印字画像変換部５７、操作受付部５８、及び記憶・読出部５９を有している。画像データ出力器１１が有するこれらの各部は、図４に示されている各構成要素のいずれかが、ＳＳＤ１０８からＲＡＭ１０４上に展開された出力器用プログラム１００１に従ったＣＰＵ１０６からの命令によって動作することで実現される機能、又は機能される手段である。
【００６９】
また、画像データ出力器１１は、図４に示されているＳＳＤ１０６、ＲＡＭ１０４、又は記録媒体１０３ａによって構築される記憶部１０００を有している。記憶部１０００には出力器用プログラム１００１、撮像データ１４、及び、画像データ１３が記憶される。出力器用プログラム１００１は記録媒体１０３ａに記憶された状態で配布される他、プログラムを配信するサーバ装置から配信されてもよい。
【００７０】
送受信部５１は、図４に示されているＣＰＵ１０６からの命令、通信Ｉ/Ｆ１０７及び近距離無線通信装置１０９によって実現され、ＨＨＰ２０と各種データの送受信を行う。
【００７１】
撮像部５２は、図４に示されているＣＰＵ１０６からの命令、及びカメラ１１０によって実現され、印刷媒体１２とＨＨＰ２０を撮像する。なお、撮像部が撮像する撮像データ１４はユーザの操作を契機に撮像される静止画の場合と、継続して撮像される動画の場合がある。
【００７２】
特徴点検出部５３は、図４に示されているＣＰＵ１０６からの命令等により実現され、撮像データ１４から後述する位置検出マークＭ１，Ｍ２を検出する。詳細は後述される。
【００７３】
印刷媒体検出部５４は、図４に示されているＣＰＵ１０６からの命令等により実現され、撮像データ１４から印刷媒体１２を検出する。詳細は後述される。
【００７４】
装置位置決定部５５は、図４に示されているＣＰＵ１０６からの命令等により実現され、印刷媒体１２又は画像データに対するＨＨＰ２０の位置を決定する。
【００７５】
画像データ配置部５６は、図４に示されているＣＰＵ１０６からの命令等により実現され、撮像された印刷媒体１２に画像データ１３を配置する。
【００７６】
印字画像変換部５７は、図４に示されているＣＰＵ１０６からの命令等により実現され、画像データ１３を印刷ジョブに変換する。
【００７７】
操作受付部５８は、図４に示されているＣＰＵ１０６からの命令及び入力装置１０１等により実現され、ユーザからの各種の操作を受け付ける。
【００７８】
記憶・読出部５９は、図４に示されているＣＰＵ１０６からの命令、及ぶＳＳＤ１０８等によって実現され、記憶部１０００に各種データを記憶したり、記憶部１０００に記憶された各種データを読み出したりする処理を行う。
【００７９】
<<ＨＨＰ>>
ＨＨＰ２０は、送受信部７１、位置設定部７２、及び記憶・読出部７９を有している。ＨＨＰ２０が有するこれらの各部は、図４，５に示されている各構成要素のいずれかが、ＲＯＭ２８からＤＲＡＭ２９上に展開されたプリンタ用プログラム２００１に従ったＣＰＵ３１からの命令によって動作することで実現される機能、又は機能される手段である。
【００８０】
また、ＨＨＰ２０は、図４に示されているＲＯＭ２８又はＤＲＡＭ２９によって構築される記憶部２０００を有している。記憶部２０００にはプリンタ用プログラム２００１が記憶される。
【００８１】
送受信部７１は、図５に示されているＣＰＵ３１からの命令、及び通信Ｉ/Ｆ２７等によって実現され、画像データ出力器１１と各種データの送受信を行う。
【００８２】
位置設定部７２は、図５に示されているＣＰＵ３１からの命令、及び位置算出回路３２などによって実現され、画像データ出力器１１から送信された画像データ１３に対するＨＨＰ２０の位置を位置算出回路３２に設定する。
【００８３】
記憶・読出部７９は、図５に示されているＣＰＵ３１からの命令、ＲＯＭ２８及びＤＲＡＭ２９等によって実現され、記憶部２０００に各種データを記憶したり、記憶部２０００に記憶された各種データを読み出したりする処理を行う。
【００８４】
＜ＩＪ記録ヘッドにおけるノズル位置について＞
次に、図７を用いて、ＩＪ記録ヘッド２４におけるノズル位置等について説明する。図７（ａ）は、ＨＨＰ２０の平面図の一例である。図７（ｂ）はＩＪ記録ヘッド２４のみを説明する図の一例である。図示されている面が印刷媒体１２に対向する面である。
【００８５】
本実施形態のＨＨＰ２０は、２つ以上のナビゲーションセンサ３０を有している。ナビゲーションセンサ３０が２つ以上あることで、ナビゲーションセンサ３０が画像形成中に印刷媒体１２に対し回転しても回転角θを検出できる。図７（ａ）ではノズル６１の配列方向に離間して２つのナビゲーションセンサＳ０，Ｓ１が配置されている。２つのナビゲーションセンサＳ０，Ｓ１の間の長さは距離Ｌである。距離Ｌは長いほどよい。これは、距離Ｌが長いほど検出可能な最小の回転角θが小さくなり、ＨＨＰ２０の位置の誤差が少なくなるからである。
【００８６】
ナビゲーションセンサ３０からＩＪ記録ヘッド２４までの距離はそれぞれ距離ａ、ｂである。距離ａと、距離ｂは等しくてもよい。また、図７（ｂ）に示すように、ＩＪ記録ヘッド２４の端から最初のノズル６１までの距離は距離ｄ、隣接するノズル間の距離は距離ｅである。ａ〜ｅの値はＲＯＭ２８などに予め記憶されている。
【００８７】
従って、位置算出回路３２などがナビゲーションセンサ３０の位置を算出すれば、距離ａ、距離ｂ、距離ｄ、距離ｅを用いて、位置算出回路３２はノズル６１の位置を算出できる。
【００８８】
本実施形態では、印刷媒体１２に水平な方向をＸ軸、垂直な方向をＹ軸に設定する。この座標を印刷媒体座標と称することにする。これに対し、ナビゲーションセンサ３０は次のような座標軸（Ｘ´軸、Ｙ´軸）で位置を出力する。すなわち、ノズル６１の配列方向（２つのナビゲーションセンサＳ０、Ｓ１を結ぶ方向）をＹ´軸、Ｙ´軸に直交する方向をＸ´軸とする。位置の算出は位置算出回路３２によって行われる。
【００８９】
＜印刷媒体におけるＨＨＰの位置について＞
次に、図８を用いて、ＨＨＰ２０の位置について説明する。図８（ａ）では、印刷媒体１２に対しＨＨＰ２０が時計回りにθ回転している。全く回転していなければ、Ｘ＝Ｘ´、Ｙ＝Ｙ´である。しかし、ＨＨＰ２０が印刷媒体１２に対し回転角θ、回転した場合、ナビゲーションセンサＳ０、Ｓ１の出力とＨＨＰ２０の印刷媒体１２における実際の位置が一致しなくなる。
【００９０】
このため、図８（ａ）に示すように、ナビゲーションセンサＳ０，Ｓ１が出力するΔＸ´、ΔＹ´は、印刷媒体座標のＸ、Ｙと以下のように対応する。図８（ａ）では回転角θのＨＨＰ２０がＸ方向にのみ同じ回転角θのまま移動した場合のナビゲーションセンサＳ０，Ｓ１（平行移動なので出力は等しい）が検出する移動量ΔＸ´、ΔＹ´とＸ，Ｙの対応を示している。ナビゲーションセンサＳ０，Ｓ１が出力するΔＸ´はＸ１に反映され、ΔＹ´はＸ２に反映される。
【００９１】
図８（ｂ）では回転角θのＨＨＰ２０がＹ方向にのみ同じ回転角θのまま移動した場合のナビゲーションセンサＳ０，Ｓ１（平行移動なので出力は等しい）が検出する移動量ΔＸ´、ΔＹ´とＸ，Ｙの対応を示している。ナビゲーションセンサＳ０，Ｓ１が出力するΔＹ´はＹ１に反映され、−ΔＸ´はＹ２に反映される。
【００９２】
従って、ＨＨＰ２０がＸ方向及びＹ方向に回転角θのまま移動した場合、ナビゲーションセンサＳ０，Ｓ１が出力するΔＸ´、ΔＹ´は印刷媒体座標のＸ，Ｙに以下のように変換できる。
Ｘ＝ΔＸ´cosθ＋ΔＹ´sinθ  …（１）
Ｙ＝−ΔＸ´sinθ＋ΔＹ´cosθ  …（２）
このように、回転角θが分かれば画像形成の開始位置を基点にして、式（１）（２）からナビゲーションセンサＳ０，Ｓ１の印刷媒体座標の位置を求めることができる。画像形成の開始位置は、ユーザが印刷媒体１２にＨＨＰ２０を配置した位置である。本実施例では、印刷媒体１２とＨＨＰ２０の撮像時における、印刷媒体１２上のＨＨＰ２０の位置である。
【００９３】
なお、ΔＸ´、ΔＹ´のサンプリング時間における回転角ｄθは２つのナビゲーションセンサＳ０，Ｓ１の出力（ΔＸ´0、ΔＸ´1）の差から以下のようにして求めることができる。ｄθが蓄積されることで回転角θを求めることができる。
ｄθ＝arcsin｛（ΔＸ´0−ΔＸ´1）/Ｌ｝  …（３）
＜位置検出マーク＞
図９を用いて位置検出マークＭ１、Ｍ２について説明する。図９では、ＨＨＰ２０の上面図における位置検出マークＭ１、Ｍ２の配置例を示している。ＨＨＰ２０の少なくとも２点の位置が分かれば、ＨＨＰ２０の位置と姿勢を決定できる。このため、位置検出マークＭ１、Ｍ２は２点の位置を特定できるように二箇所に配置されている。
【００９４】
位置検出マークＭ１，Ｍ２は、ＨＨＰ２０に一体に形成されていてもよいし、シールのように貼付されたものでもよい。また、ＯＰＵ２６が液晶ディスプレイなどの場合、ＯＰＵ２６が表示してもよい。
【００９５】
図９（ａ）ではＨＨＰ２０の右上コーナーと左下コーナーにそれぞれ位置検出マークＭ１、Ｍ２が配置されている。どちらの位置検出マークＭ１，Ｍ２もＨＨＰ２０の１点の座標を示すため、撮像データ１４からは、例えば位置検出マークＭ１の左上頂点Ｐ１の座標が検出され、位置検出マークＭ２の上側頂点Ｐ２の座標が検出される。これら以外の頂点が検出されてもよい。
【００９６】
また、図９（ａ）では位置検出マークＭ１とＭ２の向きが異なっているが（位置検出マークＭ２が菱形形状になっている）、図９（ｂ）に示すように位置検出マークＭ１とＭ２の向きは同じでもよい。また、図９（ｃ）に示すように、ＨＨＰ２０の右上コーナーと左上コーナーにそれぞれ位置検出マークＭ１、Ｍ２が配置されていてもよい。
【００９７】
また、図９（ｄ）ではＨＨＰ２０の右上コーナーに１つのみ位置検出マークＭ１が配置されている。この位置検出マークＭ１は中央に長方形のベタ部とそれを囲む四角とを有している。このような位置検出マークＭ１では上下方向と左右方向で、横切る直線が通過する黒、白の画素の長さの比が異なる。例えば、上下方向に１（黒）：１（白）：３（黒）：１（白）：１（黒）、左右方向に１（黒）：１（白）：７（黒）：１（白）：１（黒）、になる。このような予め定められた白黒の画素の比率が、角度が９０度異なる２本の直線で検出された場合、位置検出マークＭ１が検出されたと判断してよいので、位置検出マークＭ１の検出精度を向上させることができる。このため、位置検出マークＭ１が１つのみ配置された場合でも、例えば位置検出マークＭ１の左上頂点Ｐ３と右下頂点Ｐ４をそれぞれＨＨＰ２０の２点の位置として採用できる。
【００９８】
同様に、図９（ａ）〜（ｃ）の矩形状の位置検出マークＭ１、Ｍ２がいずれか１つのみが配置されていても、位置検出マークＭ１（又はＭ２）が長方形などの向きが分かる形状であれば、位置検出マークＭ１（又はＭ２）の任意の２つ以上の頂点の位置をＨＨＰ２０の２点の座標として採用してよい。
【００９９】
また、位置検出マークＭ１、Ｍ２は三角形、星形などでもよい。また、位置検出マークＭ１、Ｍ２の２つが配置される場合、位置検出マークＭ１、Ｍ２は円形でもよい。
【０１００】
続いて、位置検出マークＭ１、Ｍ２の検出方法について説明する。位置検出マークＭ１、Ｍ２は、ＨＨＰ２０の筐体の色と異なる色で形成されている。従って、特徴点検出部５３は例えば以下のような手順で撮像データ１４から位置検出マークＭ１、Ｍ２を検出できる。以下では、図９（ａ）〜（ｃ）の位置検出マークＭ１，Ｍ２の検出方法を説明する。
(i) 画像を白又は黒に二値化する。
(ii) 連続した黒画素を探しだす。
(iii) 上下左右方向のエッジを検出する。
(iv) ハフ変換により直線を検出し、４つの直線で囲まれた黒画素を検出する。
(v) (iv)の黒画素が二箇所見つかった場合（二箇所より多く見つかった場合は矩形を囲む４つの直線の縦横比で判別する）、それぞれを位置検出マークＭ１，Ｍ２に決定する。
【０１０１】
なお、このような位置検出マークの検出方法は一例に過ぎず、例えば(iv)でハリスのコーナー検出方法を用い、位置検出マークＭ１，Ｍ２の各頂点を検出してもよい。また、例えば、機械学習により位置検出マークＭ１，Ｍ２を学習した識別装置が位置検出マークを検出してもよい。
【０１０２】
図１０は、位置検出マークＭ１、Ｍ２とナビゲーションセンサ３０の相対位置を示す図の一例である。図１０に示すように、位置検出マークＭ１の左上頂点Ｐ１からナビゲーションセンサＳ０までの距離αと距離βは既知である。従って、位置検出マークＭ１，Ｍ２の位置が検出されれば、ナビゲーションセンサＳ０の位置を特定できる。
【０１０３】
なお、位置検出マークＭ２からナビゲーションセンサＳ０の位置を求めることも可能である。また、ナビゲーションセンサＳ０に対するＳ１の相対位置も既知なので、ナビゲーションセンサＳ０又はＳ１が分かれば、ナビゲーションセンサＳ１又はＳ０の位置も特定できる。
【０１０４】
<<印刷媒体の検出>>
次に、印刷媒体１２の検出方法について説明する。印刷媒体１２は長方形の形状のものがほとんどである。また、印刷媒体１２の色（多くは白や薄い茶色など）は均一である場合が多く、印刷媒体１２が置かれている机などの色とは異なっていることが多い。従って、例えば以下のような処理により検出できる。
(i) 例えば、色クラスタリングを行い均一色の範囲を決定する。これにより、微小な色むらの影響を低減する。ＨＨＰ２０が存在する領域は分かっているので、ＨＨＰ２０が占める領域は無視してよい（例えば、色クラスタリング後の色であるとみなす）。
(ii) 二値化処理を行い、印刷媒体１２の地肌色の領域を取り出す。
(iii) 上下方向、左右方向にエッジ検出処理を行う。
(iv) ハフ変換により直線を検出し、４つの直線で囲まれた領域を印刷媒体１２に決定する。
【０１０５】
なお、この場合も例えばハリスのコーナー検出方法を用い、印刷媒体１２の各頂点を検出してもよい。また、例えば、機械学習により印刷媒体１２を学習した識別装置が印刷媒体１２を検出してもよい。
【０１０６】
<<印刷媒体１２のサイズ>>
撮像データ１４において印刷媒体１２がどのくらいの大きさで写るかは、カメラ１１０と印刷媒体１２との距離、焦点距離などにより異なる。従って、画像データ１３を印刷媒体１２に配置するには、実空間における印刷媒体１２のサイズ（寸法）を検出することが好ましい。
【０１０７】
そこで、印刷媒体検出部５４は、位置検出マークＭ１とＭ２の距離（位置検出マークが１つだけの場合は辺の長さ）に基づき、印刷媒体１２のサイズを検出する。位置検出マークＭ１とＭ２の間のピクセル数がＮであり、位置検出マークＭ１とＭ２の実際の長さが例えば５０〔ｍｍ〕であるとする（この場合、位置検出マークＭ１とＭ２の寸法が既知の撮像物となる）。すると、印刷媒体１２において１ピクセル当たりの実空間の長さは「５０／Ｎ」である。
【０１０８】
従って、撮像データ１４における印刷媒体１２の幅方向のピクセル数がＮｗ、縦方向のピクセル数がＮｈであるとすると、印刷媒体１２の実空間の寸法（幅Ｗ１〔mm〕と縦長さＨ１〔mm〕）は以下のようになる。
Ｗ１＝Ｎｗ×５０／Ｎ
Ｈ１＝Ｎｈ×５０／Ｎ
位置検出マークＭ１とＭ２の距離を利用したのは一例であって、ＨＨＰ２０の既知の辺の長さ等を使用してよい。ＯＰＵ２６が液晶ディスプレイなどの場合、ＯＰＵ２６に長さが既知のオブジェクトを表示してよい。
【０１０９】
<<印刷媒体に対するＨＨＰの位置の決定>>
印刷媒体１２と位置検出マークＭ１，Ｍ２を検出できたため、印刷媒体１２に対するＨＨＰ２０の位置（絶対座標）を決定できる。
【０１１０】
図１１は、印刷媒体１２に対するＨＨＰ２０の位置を説明する図の一例である。例えば、印刷媒体１２の左上コーナーを原点（０，０）とする。従って、位置検出マークＭ１の左上頂点Ｐ１の座標、位置検出マークＭ２の上側頂点Ｐ２の座標を寸法〔mm〕により特定することができる。
【０１１１】
（画像データの拡大・縮小）
次に、図１２を用いて、印刷媒体１２に対する画像データ１３の配置について説明する。画像データ配置部５６は印刷媒体１２の外縁以内に画像データ１３を配置すればよい。しかし、ユーザは画像データ１３のサイズを意識せずに印刷媒体１２を撮像するため、印刷媒体１２と画像データ１３のサイズが一致することは多くない。そこで、以下のように、画像データ配置部５６は、画像データ１３を拡大又は縮小することで、画像データ１３を印刷媒体１２に配置する。
【０１１２】
まず、印刷媒体１２と画像データ１３のサイズを以下のように表す。なお、印刷媒体１２から余白１５が除外された画像形成領域１６に画像データ１３が配置されるものとして説明する。余白１５は印刷媒体１２のサイズに対し上下左右に５〜１０％のように定められる。また、ユーザが余白の大きさを設定可能でもよい。余白を考慮せずに画像データ１３を配置してもよい。
【０１１３】
また、画像データ１３のサイズはピクセル数で規定されているため、実空間におけるサイズに変換する。ここでは、一例としてＨＨＰの主走査方向と副走査方向の解像度を３００dpiであるものとする。すると、実空間の画像データ１３の幅Ｗ２〔mm〕と縦長さＨ〔mm〕は以下のように算出できる。
Ｗ２＝（画像データの幅のピクセル数／３００）×２５．４（１インチ）
Ｈ２＝（画像データの縦のピクセル数／３００）×２５．４（１インチ）
以上から、画像形成領域１６と画像データ１３のサイズが以下のように検出されたものとする。
印刷媒体（画像形成領域）：Ｗ１〔mm〕×Ｈ１〔mm〕
画像データ：Ｗ２〔mm〕×Ｈ２〔mm〕
図１２（ａ）は画像形成領域１６と画像データ１３のサイズの一例を示している。図１２（ａ）では「Ｗ１＞Ｗ２  Ｈ１＜Ｈ２」の関係があるため、画像データ１３を縦方向に縮小する必要がある。また、縮小及び拡大は縦横比を保って行われる。変倍後のＨ２をＨ２´、変倍後のＷ２をＷ２´とする。
Ｗ２´＝Ｗ２（Ｈ１/Ｈ２）
Ｈ２´＝Ｈ１
図１２（ｂ）では「Ｗ１＜Ｗ２  Ｈ１＞Ｈ２」の関係があるため、画像データ１３を幅方向に縮小する必要がある。また、縮小及び拡大は縦横比を保って行われる。変倍後のＨ２をＨ２´、変倍後のＷ２をＷ２´とする。
Ｗ２´＝Ｗ１
Ｈ２´＝Ｈ２（Ｗ１/Ｗ２）
こうすることで、縦横比を維持したまま、画像データ１３が印刷媒体１２に入るように縮小できる。
【０１１４】
続いて、拡大する場合を説明する。図１３（ａ）では「Ｗ１＞Ｗ２  Ｈ１＞Ｈ２」かつ「Ｈ１/Ｗ１＜Ｈ２/Ｗ２」の関係があるため、Ｈ２がＨ１になるように拡大する必要がある。
Ｗ２´＝Ｗ２（Ｈ１/Ｈ２）
Ｈ２´＝Ｈ１
図１３（ｂ）では「Ｗ１＞Ｗ２  Ｈ１＞Ｈ２」かつ「Ｈ１/Ｗ１＞Ｈ２/Ｗ２」の関係があるため、Ｗ２がＷ１になるように拡大する必要がある。
Ｗ２´＝Ｗ１
Ｈ２´＝Ｈ２（Ｗ１/Ｗ２）
以上のように、縮小又は拡大により画像データ１３が印刷媒体１２に配置可能となる。なお、拡大・縮小は必ずしも行わなくてもよい。縮小されなくても、ユーザがＨＨＰ２０を印刷媒体１２上でのみ操作すれば、印刷媒体１２の外部に画像形成させることはない。また、拡大されなくても、画像データ１３は印刷媒体１２内に形成される。
【０１１５】
（画像データの配置）
図１４は印刷媒体１２に配置された画像データ１３及びＨＨＰ２０の位置の一例を示す。これにより、画像データ１３に対する位置検出マークＭ１の左上頂点Ｐ１の座標（ｘ１，ｙ１）及び位置検出マークＭ２の上側頂点Ｐ２の座標（ｘ２，ｙ２）を決定できる。
【０１１６】
ところで、図１１の説明では、位置検出マークＭ１の左上頂点Ｐ１の座標（ｘ１，ｙ１）及び位置検出マークＭ２の上側頂点Ｐ２の座標（ｘ２，ｙ２）は、印刷媒体１２の原点（０，０）を基準に決定されている。従って、画像データ１３の左上コーナーの座標を原点Ｏ（ｘ０，ｙ０）とすると、左上頂点Ｐ１の座標（ｘ１´，ｙ１´）、上側頂点Ｐ２の座標（ｘ２´，ｙ２´）は以下のようになる。
ｘ１´＝ｘ１−ｘ０、ｙ１´＝ｙ１−ｙ０
ｘ２´＝ｘ２−ｘ０、ｙ２´＝ｙ２−ｙ０
以上により、配置された画像データ１３に対するＨＨＰ２０の位置を特定できた。なお、図１４では、印刷媒体１２の左上コーナーに画像データ１３が配置されたが、右上コーナー、左下コーナー、右下コーナーに配置してもよい。また、印刷媒体１２の中央に配置してもよい。また、ユーザが画像データ１３の配置位置を調整可能でもよい。
【０１１７】
画像データ出力器１１は以上のようにして算出されたＨＨＰ２０の位置（ナビゲーションセンサ３０の位置）、及び、拡大・縮小された画像データ１３をＨＨＰ２０に送信する。
【０１１８】
＜動作手順＞
図１５は、画像データ出力器１１が画像データ１３に対するＨＨＰ２０の位置を検出する手順を示すフローチャート図の一例である。図１５の手順は、電源がＯＮされたＨＨＰ２０をユーザが印刷媒体１２上に配置してからスタートする。ＨＨＰ２０は筐体の全体又は少なくともナビゲーションセンサ３０の位置が印刷媒体１２の上にあることが好ましい。ただし、ナビゲーションセンサ３０による位置検出に支障がなければ（印刷媒体１２以外でも位置の検出が可能であれば）、ＨＨＰ２０が印刷媒体１２の外に存在してもよい。
【０１１９】
まず、ユーザは画像データ出力器１１を操作して印刷媒体１２とＨＨＰ２０を１枚の撮像データ１４に撮像する（Ｓ１０）。撮像部５２は撮像データ１４を記憶部１０００に記憶させる。
【０１２０】
特徴点検出部５３は、撮像データ１４を解析し位置検出マークＭ１，Ｍ２を検出する（Ｓ２０）。
【０１２１】
また、印刷媒体検出部５４は撮像データ１４から印刷媒体１２を検出する（Ｓ３０）。印刷媒体検出部５４は印刷媒体１２の実空間のサイズを算出しておく。
【０１２２】
装置位置決定部５５は、印刷媒体１２の例えば左上コーナーを原点として位置検出マークＭ１，Ｍ２の座標を決定する（Ｓ４０）。なお、ステップＳ４０で位置検出マークＭ１，Ｍ２の座標を検出するのでなく、画像データ１３の印刷媒体１２への配置後に、画像データ１３に対する位置検出マークＭ１，Ｍ２の座標を決定してもよい。
【０１２３】
次に、画像データ配置部５６は印刷媒体１２に画像データ１３を配置する（Ｓ５０）。上記のように必要であれば、画像データ１３は拡大・縮小される。
【０１２４】
装置位置決定部５５は、配置された画像データ１３に対するＨＨＰ２０の位置を決定する（Ｓ６０）。ＨＨＰ２０の位置は、例えばナビゲーションセンサ３０の位置でも位置検出マークＭ１，Ｍ２の位置でもよい。
【０１２５】
この後、画像データ出力器１１は画像データ１３に対するＨＨＰ２０の位置をＨＨＰ２０に送信する。ＨＨＰ２０は、画像データ出力器１１により通知されたＨＨＰ２０の位置から画像形成を開始する。
【０１２６】
以上説明したように、本実施例によれば、撮像データ１４から印刷媒体１２が検出されているので、画像データ出力器１１は印刷媒体１２に対するＨＨＰ２０の絶対座標を検知することができる。また、ＨＨＰ２０が撮像時に置かれていた場所からユーザは画像形成を開始できる。
【実施例２】
【０１２７】
本実施例では、ＨＨＰ２０の三次元座標を求め、ＨＨＰ２０と同じ座標系に画像データ１３を配置する画像形成システム１について説明する。画像データ１３をＨＨＰ２０と同じ座標系で表すことができるので、撮像データ１４に画像データ１３を表示できる。撮像データ１４には印刷媒体１２も写っているので、画像データ１３をいわば三次元空間にプレビュー表示することができる。
【０１２８】
本実施例では、ＨＨＰ２０の三次元座標を求める手法としてＡＲ（Augmented Reality）マーカーを使用する場合と、ＳｆＭ（Structure from Motion）を用いる例を説明する。これらの手法は周知であるため以下に簡単に説明する。
【０１２９】
＜ＡＲマーカー＞
図１６（ａ）は、ＡＲマーカー８１が形成されたＨＨＰ２０を撮像する画像データ出力器１１を示す図の一例であり、図１６（ｂ）はＡＲマーカー８１の一例を示す。ＡＲマーカー８１とは、ARToolKit（非特許文献１参照）と呼ばれる拡張現実感アプリケーションソフトのライブラリで使用されるマーカーである。後述するようにＡＲマーカー８１を撮像することで、撮像データ１４に三次元モデル（本実施例では画像データ１３）を配置することができる。ＡＲマーカー８１を用いた画像データ１３の配置は以下のように行われる。以下の処理において主語が省略された場合は、画像データ出力器１１が行うものとする。
（１）画像データ出力器１１が画像データ１３の３次元モデルを作成する（モデル座標系における画像データ１３の座標を設定する）。
（２）ユーザがＨＨＰ２０に形成されたＡＲマーカー８１と印刷媒体１２の全体を撮像する。
（３）画像データ出力器１１は、ＡＲマーカー８１を検出し、カメラ座標系ＣｏにおけるＡＲマーカー８１の位置・姿勢を測定する。
（４）ＡＲマーカー８１の位置・姿勢に基づいて、ＡＲマーカー８１が貼り付けられているＨＨＰ２０の位置・姿勢を求める（ナビゲーションセンサ３０のカメラ座標が分かる）。
（５）ＨＨＰ２０の位置・姿勢に基づいて、カメラ座標系Ｃｏに画像データ１３の３次元モデルを配置する。
【０１３０】
なお、ＡＲマーカー８１を用いる場合、以下の座標系が使用される。
マーカー座標系…ＡＲマーカー８１の中心を原点とする三次元の座標系
カメラ座標系…カメラ１１０の所定の画素を原点とする三次元の座標系
モデル座標系…画像データ１３を３次元モデルとして表すための三次元の座標系
図１７（ａ）はマーカー座標系Ｍａを示し、図１７（ｂ）はマーカー座標系におけるナビゲーションセンサ３０の座標を示す。例えば、ＡＲマーカー８１の中心を（x0, y0, z0）とする。これを原点（０，０，０）としてよい。ＡＲマーカー８１に対するナビゲーションセンサＳ０、Ｓ１の相対位置も既知であるため、マーカー座標系におけるナビゲーションセンサＳ０の座標（xm0, ym0, zm0）は下記のように表すことができる。
(xm0,ym0,zm0)=(x0-lHw,y0+lHd,z0-lHh)
lHw：ＡＲマーカー８１の原点からナビゲーションセンサＳ０までのｘ方向の距離
lHd：ＡＲマーカー８１の原点からナビゲーションセンサＳ０までのｙ方向の距離
lHh：ＡＲマーカー８１の原点からナビゲーションセンサＳ０までのｚ方向の距離
また、ナビゲーションセンサＳ１の座標(xm1,ym1,zm1)は下記のようにナビゲーションセンサＳ０の座標から求められる。lsdはナビゲーションセンサＳ０、Ｓ１の間の距離である。
【０１３１】
(xm1,ym1,zm1)= (xm0,ym0-lsd,zm0)
次に、ＡＲマーカー８１をカメラ１１０で撮像することで、カメラ座標系でのＡＲマーカー８１の位置・姿勢を変換行列Ｒの形式で得ることができる。
【０１３２】
【数１】
2017010271.tif 000003
この変換行列Ｒはマーカー座標系をカメラ座標系に座標変換する変換行列である。（xm,ym,zm,1）をマーカー座標系の座標、（xc,yc,zc,1）をカメラ座標系の座標とする。式（４）により、ＡＲマーカー８１の頂点などの座標、及び、ナビゲーションセンサＳ０，Ｓ１の座標をカメラ座標系に変換できる。
【０１３３】
【数２】
2017010271.tif 000004
次に、図１８を用いて画像データ１３の三次元座標が表されるモデル座標系について説明する。図１８（ａ）は、マーカー座標系Ｍａとモデル座標系Ｍｏの関係を説明する図の一例である。本実施例では、モデル座標系とマーカー座標系が同じものであるとする。また、画像データ１３はｘｙ平面（ｚ座標（厚さ）はゼロ）に配置される。つまり、モデル座標系をマーカー座標系に変換する必要なく、画像データ１３をカメラ座標系に変換できる。
【０１３４】
なお、画像データ１３がｘｚ平面に配置されている場合には、ｘ軸を中心に画像データ１３の座標を９０度回転させる座標変換を行えばよく、また、モデル座標系とマーカー座標系の原点が異なる場合には平行移動すればよい。従って、マーカー座標系とモデル座標が同じである必要はない。
【０１３５】
図１８（ａ）ではＨＨＰ２０の上面に画像データ１３が配置されてしまうが、画像データ１３はＨＨＰ２０の下面のノズルが吐出する液滴により形成される。従って、図１８（ｂ）のように画像データ１３を配置してもよい。この場合、画像データ１３のｚ座標を「-lHh」とすればよい。このように設定された画像データ１３の座標により、撮像データ１４にプレビュー表示された際の、ＨＨＰ２０に対する画像データ１３の位置（初期位置）が定まる。なお、プレビュー表示における画像データ１３の初期位置は、ナビゲーションセンサＳ０，Ｓ１の直下に画像データ１３の例えば左端部が位置するなど、ＨＨＰ２０の制作者などが適宜、設定できる。
【０１３６】
実施例１にて説明したように、印刷媒体１２に画像形成される実空間の画像データ１３のサイズは既知であるので、画像データ１３の各画素の座標は既知である。従って、式（４）により画像データ１３をカメラ座標に変換すれば、撮像データ１４に画像データ１３を配置して、印刷媒体１２やＨＨＰ２０と共に表示装置１０２にプレビュー表示することができる。
【０１３７】
＜ＳｆＭ>
ＳｆＭとは、同じシーンを多視点から撮像した複数の画像から、そのシーンの３次元形状とカメラ１１０の位置を同時に推定する手法である。ＳｆＭのアルゴリズムの１つとしてＰＴＡＭ（Parallel Tracking And Mapping）やＤＴＡＭ（Dense Tracking and Mapping）が知られている。ＳｆＭ又はＰＴＡＭと物体推定を組み合わせることにより、式（４）と同じ、カメラ座標系とＨＨＰ２０の座標系（マーカー座標系）の変換式が得られる。以下、カメラ１１０とＨＨＰ２０の位置・姿勢（式（４））を求める手順を説明する。
（１）画像データ出力器１１が画像データの３Ｄモデルを作成する。
（２）ユーザがＨＨＰ２０や印刷媒体１２を含む領域を撮像する。
（３）画像データ出力器１１は撮像領域の特徴点を検出し、特徴点からＡＲモデル空間を作成する（ＳｆＭ）。
（４）（３）で作成したＡＲモデル空間（マップ）からカメラの位置・姿勢を画像データ出力器１１が計算する。ＡＲモデル空間からＨＨＰ２０や印刷媒体１２を含む物体を識別しておく。
（５）（４）で識別した物体の中で縦・横・高さの比がＨＨＰ２０の寸法（lHw（幅）×lHd（縦長さ）×lHh（高さ））の比と近い物体をＨＨＰ２０として推定する。ＨＨＰ２０からの位置・姿勢を推定する。
（６）ＨＨＰ２０の位置・姿勢に基づいてカメラ座標に画像データ１３の３次元モデルを配置する。
【０１３８】
なお、ＳｆＭではＡＲマーカー８１が使用されないが、本実施例で用いる座標系はＡＲマーカーが使用される場合と同様とする。ＳｆＭではマーカー座標系に相当する座標系が所定の特徴点（後述するようにＨＨＰ２０のコーナーなど）を原点とする三次元の座標系となる。しかし、区別しないでＳｆＭでマーカー座標系に相当する座標系をマーカー座標系と称して説明される場合がある。
【０１３９】
図１９は、ＳｆＭに適したＨＨＰ２０を撮像する画像データ出力器１１を示す図の一例である。図１９では、ＨＨＰ２０の形状から向きと位置を画像データ出力器１１が計算するため、ＨＨＰ２０の上面を５角形とした。５角形の頂点が特徴点８２である。これは一例であって、ＨＨＰ２０や形状の検出の精度を上げるためにコーナーを増やす形状を採用してもよい。また、ＨＨＰ２０の形状の標準パターンを画像データ出力器１１が保持しておき、パターンマッチング処理によりＨＨＰ２０の向きを検出しても良い。
【０１４０】
図２０は、ＨＨＰ２０の寸法を説明する図の一例である。図２０ではＨＨＰ２０の寸法は、lHw（幅）×lHd（縦長さ）×lHh（高さ）となっている。図２０では、上面図の左下コーナーを基準位置（x0, y0, z0）とする。基準位置（x0, y0, z0）を原点Ｏとしてよい。ただし、ナビゲーションセンサＳ０、Ｓ１との距離が既知のコーナーであればどこを原点にとってもよい。
【０１４１】
従って、ナビゲーションセンサＳ０の座標（xm0, ym0, zm0）は以下のようになる。lNwは原点ＯからナビゲーションセンサＳ０までのｘ方向の距離であり、lNdは原点ＯからナビゲーションセンサＳ０までのｙ方向の距離である。
(xm0,ym0,zm0)=(x0+lNw,y0+lNd,z0-lHh)
ナビゲーションセンサＳ１の座標は、Ｓ０の座標から求められる。従って、ＳｆＭを用いても、ＡＲマーカー８１を用いた場合と同様に画像データ１３をカメラ座標系で表し表示装置１０２に表示することができる。
【０１４２】
＜プレビュー表示の手順＞
<<機能について>>
まず、図２１に基づき本実施例の機能について説明する。図２１は、画像データ出力器１１の機能ブロック図の一例を示す。なお、ＨＨＰ２０の機能は実施例１と同様でよい。本実施例において、図６において同一の符号を付した構成要素は同様の機能を果たすので、主に本実施例の主要な構成要素についてのみ説明する場合がある。
【０１４３】
本実施例の画像データ出力器１１は、位置姿勢計算部９１、撮像データ表示部９２、印刷位置決定部９３、及び、トリミング部９４を新たに有している。また、特徴点検出部５３と画像データ配置部５６の機能は実施例１と異なっている。
【０１４４】
特徴点検出部５３は、図４に示されているＣＰＵ１０６からの命令等により実現され、撮像データ１４からＡＲマーカー８１や特徴点８２を検出する。ＡＲマーカー８１の検出は、例えば位置検出マークＭ１，Ｍ２の検出と同様でよい。ＨＨＰ２０のコーナーの検出は上記のようにパターンマッチングなどを利用する。
【０１４５】
位置姿勢計算部９１は、図４に示されているＣＰＵ１０６からの命令等により実現され、撮像データ１４にARtoolkit又はＳｆＭなどを適用し変換行列Ｒを求める。変換行列Ｒが求められることで、カメラ１１０に対するＨＨＰ２０の位置と姿勢を推定できる。
【０１４６】
画像データ配置部５６は、図４に示されているＣＰＵ１０６からの命令等により実現され、変換行列Ｒを用いてモデル座標系の画像データ１３をカメラ座標系に変換し、撮像されている印刷媒体１２に画像データを配置する。
【０１４７】
撮像データ表示部９２は、図４に示されているＣＰＵ１０６からの命令及び表示装置１０２等により実現され、撮像データ１４に画像データ１３を配置して表示装置１０２に表示する。画像データ１３の座標は変換行列Ｒによりカメラ座標系に変換されているので、画像データ１３のｘ座標とｙ座標は、そのまま撮像データ１４の二次元平面の座標となる。よって、画像データ１３が撮像データ１４に撮像されているように表示できる。
【０１４８】
印刷位置決定部９３は、図４に示されているＣＰＵ１０６からの命令等により実現され、画像データ１３に対するＨＨＰ２０の位置を算出する。すなわち、カメラ座標系のＨＨＰ２０の位置は、元のモデル座標系のＨＨＰ２０の位置に再度、変換される。
【０１４９】
トリミング部９４は、図４に示されているＣＰＵ１０６からの命令等により実現され、画像データ１３の一部を切り取る（トリミングする）。
【０１５０】
<<プレビュー>>
図２２は、プレビュー表示を模式的に説明する図の一例である。図２２（ａ）は画像データ１３を示す。まず、図１８にて説明したように、画像データ配置部５６は、平面の画像データ１３をマーカー座標系で表す。本実施例では、説明の便宜上、モデル座標系とマーカー座標系を同じ座標系であるとした。
【０１５１】
画像データ配置部５６はマーカー座標系の画像データ１３に変換行列Ｒを適用して、カメラ座標系に変換する。図２２（ｂ）はカメラ座標系の画像データ１３の一例を示す。画像データ１３は縦〔mm〕×横〔mm〕でサイズが表されており、画像形成時のサイズと一致している。
【０１５２】
図２２（ｃ）は撮像データ１４を示す。カメラ１１０から見たナビゲーションセンサＳ０，Ｓ１の座標は、変換行列Ｒを用いることで、マーカー座標系におけるナビゲーションセンサＳ０，Ｓ１の座標から求められる。
【０１５３】
撮像データ表示部９２は、図２２（ｂ）と図２２（ｃ）を合成する（重畳する。重ね合わせる）ことで、表示データ８３を作成し表示装置１０２に表示する。図２２（ｄ）は表示データ８３の一例を示す。図１８（ｂ）にて説明したように、マーカー座標系のｘｙ平面の原点Ｏと画像データ１３の左下コーナーが一致している。なお、図２２では明らかでないが印刷媒体１２も撮像データ１４に表示されている。
【０１５４】
従って、ユーザは印刷媒体１２とＨＨＰ２０に対し、画像データ１３がどのように配置されるかをプレビュー表示により目視することができる。
【０１５５】
また、図２２（ｄ）に示されているように、画像データ１３が配置された際のナビゲーションセンサＳ０，Ｓ１のカメラ座標系の座標の、画像データ１３に対する位置（画像データ１３の任意の原点に対する相対位置）が、画像データ１３に対するＨＨＰ２０の位置である。この位置は、後述するように、ナビゲーションセンサＳ０，Ｓ１のカメラ座標系の座標に変換行列Ｒの逆行列を適用してモデル座標系の座標に変換することで得られる。
【０１５６】
<<平行移動、拡大・縮小>>
上記のプレビュー表示では印刷媒体１２の位置は考慮されていないので、画像データ１３が印刷媒体１２にちょうどよく収まるという保証がない。また、そもそも画像データ１３の実空間のサイズ＞印刷媒体１２のサイズの場合、印刷媒体１２に入りきらないおそれがある。そこで、本実施例では、操作受付部５８がユーザによる画像データ１３の平行移動（移動操作）、拡大・縮小（変倍操作）を受け付ける。
【０１５７】
（平行移動）
図２３は平行移動される画像データ１３を説明する図の一例である。図２３（ａ）は平行移動前の画像データ１３を、図２３（ｂ）は平行移動後の画像データ１３をそれぞれ示す。ユーザは指やマウスなどのポインティングデバイスで表示装置１０２の画像データ１３を選択し、ｘ方向ｙ方向に画像データ１３を移動させる。操作受付部５８は操作を受け付けて、画像データ１３を移動する。なお、ｚ軸方向への移動は禁止されている。従って、平行移動後の画像データ１３のｘ座標、ｙ座標（カメラ座標系の座標）が得られる。
【０１５８】
図２３においても印刷媒体１２がＨＨＰ２０と共に表示されているため、ユーザは印刷媒体１２に対し画像データ１３の全体が入るように平行移動させることができる。これにより、画像データ１３に対するＨＨＰ２０の位置が定まる。
【０１５９】
また、本実施例では撮像中であれば、ＨＨＰ２０と印刷媒体１２の相対位置を変更させてもよい。つまり、撮像後もＨＨＰ２０と印刷媒体１２を動かすことができる。これは、撮像部５２が繰り返し印刷媒体１２とＨＨＰ２０を撮像し、位置姿勢計算部９１が変換行列Ｒを繰り返し算出しているためである。
【０１６０】
（拡大・縮小）
図２３（ｃ）は拡大・縮小前の画像データ１３を、図２３（ｄ）は拡大後の画像データ１３を、図２３（ｅ）は縮小後の画像データ１３を、それぞれ示す。なお、図２３（ｃ）は平行移動後の画像データ１３である。
【０１６１】
ユーザは画面上で２本の指でピンチアウトやピンチインすることで、画像データ１３を縮小又は拡大する。キーボードの所定のキーやマウスのクリックにより、決まった倍率だけ縮小又は拡大してもよい。操作受付部５８は操作を受け付けて、画像データ１３の左上コーナーや左下コーナーを中心に、画像データ１３を拡大・縮小する。なお、縮小時には、画像データ１３の各ｘ座標、ｙ座標をユーザが指示する縮小率だけ小さくし、拡大時には画像データ１３の各ｘ座標、ｙ座標をユーザが指示する拡大率だけ大きくする。
【０１６２】
平行移動及び拡大・縮小の際、初期状態、変更中状態、及び、決定時の違いをユーザが分かるように、撮像データ表示部９２は、それぞれの画像データ１３の色を変えて表示するなどしてもよい。撮像データ表示部９２は、初期状態（図２３（ａ）（ｃ）の画像データ１３）の複製を作成し、初期状態の画像データ１３の複製の外縁を固定したまま、ユーザの操作に応じて複製を平行移動、拡大・縮小する。初期状態の画像データ１３と複製の画像データ１３の色を変えたり、他方だけを点滅させたりするなどして表示する。なお、初期状態又は複製の画像データ１３は外枠だけが表示されてもよい。
【０１６３】
<<モデル座標系への再変換>>
平行移動、拡大・縮小により、ユーザは画像データ１３の位置をＨＨＰ２０や印刷媒体１２に対し決定することができる。
【０１６４】
図２４（ａ）は平行移動、拡大・縮小後の画像データ１３とＨＨＰ２０の相対位置を示す図の一例である。画像データ１３におけるナビゲーションセンサＳ０，Ｓ１の座標が、ＨＨＰ２０に通知すべきＨＨＰ２０の位置である。ナビゲーションセンサＳ０，Ｓ１の座標は求められているが、この座標はカメラ座標系の座標なので（実空間の座標でないので）、このままではＨＨＰ２０が画像データ１３の座標を指示できない。
【０１６５】
そこで、まずカメラ座標系の画像データ１３をマーカー座標系（モデル座標系）に再度、変換する。平行移動、拡大・縮小前の画像データ１３に対する平行移動、拡大・縮小による座標の変換行列Ａを以下のように示す。
【０１６６】
【数３】
2017010271.tif 000005
変換行列ＡのＴｘはｘ方向への移動量を、Ｔｙは方向への移動量を示す。また、Ｓｘはｘ座標の拡大・縮小率を示し、Ｓｙはｙ座標の拡大・縮小率を示す。従って、平行移動、拡大・縮小後の画像データ１３の座標Ｇ´は、Ａを用いて以下のように表すことができる。Ｇは平行移動、拡大・縮小前の画像データ１３の座標である。
Ｇ´＝ＡＧ  …（５）
マーカー座標系（モデル座標系）に戻すには、ＡとＲの逆変換を行えばよい。しかし、ＳｘとＳｙについても逆変換してしまうと、ユーザによる拡大・縮小が元に戻ってしまうので、ＡにおいてＳｘ＝Ｓｙ＝１としたＡ´の逆行列を用いる。
Ｇ＝Ａ´-1Ｒ-1Ｇ´  …（６）
印刷位置決定部９３は、式（６）の変換をユーザが平行移動、拡大・縮小後の画像データ１３に適用する。これにより、図２４（ｂ）に示すように、モデル座標系の画像データ１３が得られる。
【０１６７】
なお、カメラ座標系におけるナビゲーションセンサＳ０，Ｓ１の座標を求めるため、印刷位置決定部９３は、図２４（ａ）においてナビゲーションセンサＳ０，Ｓ１の座標を保持しておく。そして、式（６）によりモデル座標系におけるナビゲーションセンサＳ０，Ｓ１の座標を求める。図１８にて説明したように、モデル座標系は左下コーナーを原点Ｏとする座標系なので、ナビゲーションセンサＳ０，Ｓ１の座標を決定できる。つまり、左下コーナーを原点ＯとするナビゲーションセンサＳ０，Ｓ１の座標を求めればよい。
【０１６８】
以上の処理により、画像データ１３に対しＨＨＰ２０が配置されている位置の座標を決定できる。印刷位置決定部９３は決定したナビゲーションセンサＳ０，Ｓ１の座標をＨＨＰ２０に送信する。
【０１６９】
なお、図２４（ｂ）で得られたモデル座標系の画像データ１３から、画像データ１３の実空間のサイズを算出してもよい。図２４（ｂ）のナビゲーションセンサＳ０，Ｓ１の間隔（ピクセル数）と実空間の寸法であるlsdの比を、画像データ１３の幅lpwと縦長さlpdに乗じることで、画像データ１３の実空間のサイズが求められる。印刷位置決定部９３は、この画像データ１３の原点Ｏに対するナビゲーションセンサＳ０，Ｓ１の座標を決定する。例えば、画像データ１３がモデル座標系へ変換される際に、実空間の正しいサイズに変換されていなくても、この段階で画像データ１３に対するナビゲーションセンサＳ０，Ｓ１の正しい座標を求めることができる。
【０１７０】
＜動作手順＞
図２５は、画像形成システム１の以上の動作手順の全体を説明するためのフローチャート図の一例である。
【０１７１】
ユーザは、画像データ出力器１１を操作して、ＨＨＰ２０を含む印刷媒体１２を撮像する（Ｓ１０）。なお、撮像は繰り返し行われる。
【０１７２】
特徴点検出部５３は、撮像データ１４からＡＲマーカー８１又は特徴点８２を検出する（Ｓ２０）。
【０１７３】
次に、位置姿勢計算部９１は、撮像した撮像データ１４からＡＲマーカー８１又は特徴点８２をフレームごとに検出し、画像データ出力器１１に対するＨＨＰ２０の位置・姿勢を計算する（Ｓ３０）。
【０１７４】
画像データ配置部５６は画像データ１３をカメラ座標系に変換する（Ｓ４０）。
【０１７５】
撮像データ表示部９２は撮像データ１４において画像データ１３をプレビュー表示する（Ｓ５０）。
【０１７６】
次に、ユーザは画像データ出力器１１の表示装置１０２に表示された画像データ１３を操作し、意図した大きさに変倍し意図した位置に画像データ１３を配置する（Ｓ６０）。ユーザが画像データ１３を配置するまで、ステップＳ１０〜Ｓ６０が繰り返される。
【０１７７】
ユーザが位置及び大きさを決定すると、印刷位置決定部９３は画像データ１３に対するナビゲーションセンサＳ０，Ｓ１の位置を保持しておく（Ｓ７０）。
【０１７８】
印刷位置決定部９３は画像データ１３を元のモデル座標系に戻すことで、画像形成時の画像データ１３に対するナビゲーションセンサＳ０，Ｓ１の位置を決定する（Ｓ８０）。
【０１７９】
印刷位置決定部９３は、ステップＳ８０で得られたナビゲーションセンサＳ０，Ｓ１の位置及び画像データ１３をＨＨＰ２０に送信する（Ｓ９０）。
【０１８０】
なお、画像データ１３の送信は、画像データ１３の配置の決定と同時に行われてもよく、配置を決定した後、ユーザが確認してから送信してもよい。
【０１８１】
以上のように、本実施例によれば、画像データ１３を三次元座標系でプレビュー表示させ、ユーザにより所望の位置に配置させることができる。ユーザは、ＨＨＰ２０や印刷媒体１２を動かすことができるので、画像データ１３の任意の位置から画像データ１３の画像形成を開始することができる。
【０１８２】
〔変形例〕
ユーザが画像データ１３の一部のみを印刷したい場合がある。ＨＨＰ２０では簡易的に手軽に印刷できるため、このようなニーズがさらに増えると考えられる。しかしながら、画像データ１３の一部を取り出す（トリミングする）には、ペイント系のソフトウェアを起動させ、ユーザが画像データ１３の一部を指定して別ファイルとして保存する等の操作が必要である場合が多い。本実施例の画像データ出力器１１は、画像形成の開始位置の設定作業の中で（プレビュー中に）、以下のような方法で一部のみの画像のトリミングを行うことができる。
【０１８３】
図２６（ａ）〜（ｃ）は平行移動によるトリミングを模式的に示す。なお、図２６はいずれも、撮像データ表示部９２が表示装置１０２に画像データ１３を表示した表示データ８３を示す。表示までの手順は図２５などで説明した通りである。
【０１８４】
平行移動の場合、ユーザが画像形成したい画像データ１３の一部をＨＨＰ２０又は印刷媒体１２に対し相対的に移動させる（実際には画像データ１３の全体が移動する）。この時、移動前の画像データ１３ａの複製が作成され、複製の画像データ１３ｂのみが移動される。画像データ１３ａ又は１３ｂの外枠のみが表示されてよい。従って、ユーザは移動前の画像データ１３ａと移動後の画像データ１３ｂの重複領域８４を把握できる。ユーザはトリミングされる画像データ１３の一部を重複領域８４に含めるように画像データ１３ｂを移動させる。
【０１８５】
トリミング部９４は、移動前の画像データ１３ａと移動後の画像データ１３ｂの重複領域８４を取り出す。図の例では、点Ｃ１〜Ｃ４で囲まれた領域が取り出される。点Ｃ１のｘ座標は移動後の画像データ１３ｂの左辺のｘ座標、点Ｃ１のｙ座標は移動前の画像データ１３ａの上辺のｙ座標である。点Ｃ２のｘ座標は点Ｃ１と等しく、点Ｃ２のｙ座標は移動後の画像データ１３ｂの下辺のｙ座標である。点Ｃ３のｘ座標は移動前の画像データ１３ａの右辺のｘ座標、点Ｃ３のｙ座標は点Ｃ１と等しい。点Ｃ４のｘ座標は点Ｃ３と等しく、点Ｃ４のｙ座標は点Ｃ２と等しい。
【０１８６】
図２６（ｄ）〜（ｈ）は拡大・縮小時のトリミングを模式的に示す図の一例である。ユーザは、図２３にて説明されたように、画像データ１３を縮小又は拡大する。図１３（ｅ）では拡大された画像データ１３ｃが示されている。図１３（ｇ）では縮小された画像データ１３ｄが示されている。これらの場合も、移動前の画像データ１３ａの複製が作成され、複製された画像データ１３ｃ、１３ｄが拡大・縮小される。トリミング部９４は、平行移動の場合と同様に、拡大・縮小後の画像データ１３ｃ、１３ｄと拡大・縮小前の画像データ１３ａの重複領域８４をトリミングする。
【０１８７】
平行移動、拡大・縮小の操作が終わると（ユーザが終わりを指示する）、印刷位置決定部９３は式（６）を用いて、画像データ１３をモデル座標系に変換する。この時、式（６）に入力される座標をトリミングした重複領域８４に限ることで、モデル座標系に変換される画像データ１３はトリミングされた範囲だけになる。
【０１８８】
従って、このような変形例によれば、ユーザは画像形成の開始位置を決定しながら、トリミングして画像データ１３の一部だけを画像形成できる。
【実施例３】
【０１８９】
本実施例では、印刷媒体１２に対し画像データ１３を自動的に配置する画像形成システム１について説明する。
【０１９０】
図２７は、本実施例の機能ブロック図の一例である。本実施例の画像データ出力器１１は、フォーマット決定部９５、及び、印刷媒体検出部５４を有している。印刷媒体検出部５４は撮像データ１４から印刷媒体を検出する。また、フォーマット決定部９５は、印刷媒体１２と似ている既存フォーマットを探索する。既存フォーマットとは、一般的な用紙サイズ（Ａ３，Ａ４、Ｂ４、Ｂ５など）、ハガキ、Ｌｅｔｔｅｒサイズなどの規定サイズの印刷媒体のことである。
【０１９１】
記憶部１０００には既存フォーマットＤＢ１００２が記憶されている。既存フォーマットＤＢ１００２には、既存フォーマットの寸法情報が記憶されている。既存フォーマットの寸法情報は、既存フォーマットを特定するための情報（フォーマット情報）であり、幅、縦長さ、既存フォーマット内の四角などの幾何学形状の配置を特定するための情報（幾何学形状の幅と縦長さ、幾何学形状の原点からの距離等）を含む。
【０１９２】
図２８は、ＨＨＰ２０と印刷媒体１２を撮像する画像データ出力器１１を示す図の一例である。図２８では、印刷媒体１２の特徴点（左上コーナー８２０１、右上コーナー８２０２、右下コーナー８２０３、左下コーナー８２０４）のカメラ座標を検出するため、ＳｆＭにより位置・姿勢が検出されることが好ましい。
【０１９３】
図２９は、印刷媒体への画像データ１３の配置を模式的に説明する図の一例である。図２９（ａ）（ｂ）については図２２（ａ）（ｂ）と同様である。本実施例では、印刷媒体１２を検出して、印刷媒体１２に画像データ１３を配置する。印刷媒体１２の検出方法は実施例１と同様でよい。画像データ配置部５６は、検出された印刷媒体１２に画像データ１３を配置する。
【０１９４】
画像データ１３が印刷媒体１２に入りきらない場合、画像データ配置部５６は、画像データ１３を縮小し、画像データ１３が印刷媒体１２より小さい場合は拡大する。図２９（ｃ）では印刷媒体１２が撮像されているが、印刷媒体１２を検出できればカメラに写っている印刷媒体１２の左上コーナー８２０１、右上コーナー８２０２、右下コーナー８２０３、左下コーナー８２０４のカメラ座標がわかる。また、画像データ１３のカメラ座標は式（４）から算出されるので、両者の相対位置を容易に比較できる。従って、実施例１の図１２、１３で説明したように同様に拡大・縮小できる。また、図２９（ｄ）に示すように、印刷媒体１２に画像データ１３を配置できる。
【０１９５】
図３０は、本実施例の画像データ出力器１１の動作手順を示すフローチャート図の一例である。なお、図３０においては主に図２５と異なる処理を説明する。
【０１９６】
図３０では、ステップＳ４５において、印刷媒体検出部５４が印刷媒体を検出し、画像データ配置部５６が画像データ１３を配置する（Ｓ４５）。その後、画像データ１３のプレビューが表示され、ユーザが画像データ１３の位置を調整できる。なお、ユーザによる画像データ１３の位置調整を省略してもよい。この場合、ユーザが印刷媒体１２とＨＨＰ２０を撮像すれば、自動的に画像データ１３の画像形成を開始できる。
【０１９７】
従って、本実施例によれば、ＨＨＰ２０の三次元座標を検出した場合も、印刷媒体１２を自動的に検出して、画像データ１３を自動的に配置することができる。
【０１９８】
＜所定のフォーマットを有する印刷媒体への印刷＞
本実施例の画像形成システム１は、さらに所定のフォーマットを有する印刷媒体に画像データ１３を配置することができる。
【０１９９】
図３１は、ＨＨＰ２０とハガキと呼ばれる印刷媒体を撮像する画像データ出力器１１を示す図の一例である。印刷媒体１２のサイズの求め方について説明する。図２８と同様に、印刷媒体検出部５４が撮像データ１４から印刷媒体１２を検出すると、ハガキの左上コーナー８２０１、右上コーナー８２０２、右下コーナー８２０３、左下コーナー８２０４のカメラ座標がわかる。これらはカメラ座標系の座標であるが、カメラ座標に変換行列Ｒの逆行列を適用すれば、モデル座標系の座標が分かる。ＳｆＭを用いた場合も、上記のようにＳｆＭと物体推定を組み合わせハガキの大きさや外縁を検出することで、モデル座標系のハガキの座標（寸法）が分かる。従って、フォーマット決定部９５は、印刷媒体１２の実空間の寸法を推定できる。
【０２００】
あるいは、以下のように印刷媒体１２の実空間の寸法を推定してもよい。この場合、撮像部は好ましくは印刷媒体１２の正面から印刷媒体１２とＨＨＰ２０を撮像する。よって、印刷媒体の幅のピクセル数ｍ、縦長さのピクセル数ｎを検出できる。また、ＨＨＰ２０の幅のピクセル数ｐ、縦長さのピクセル数ｑを検出できる。また、ＨＨＰ２０の寸法は実測されており、幅がlHw、縦長さがｌHdである。
【０２０１】
従って、lHw/p又はｌHd/qにより１ピクセル当たりの実測値が分かる。フォーマット決定部９５は、１ピクセル当たりの実測値をｎ及びｍに乗じて、印刷媒体１２の実空間の寸法を推定する。この寸法に適合する所定のフォーマットを既存フォーマットＤＢ１００２から探し出す。
【０２０２】
なお、フォーマット決定部９５は、印刷媒体の寸法と最も近い所定のフォーマットを既存フォーマットＤＢ１００２から選び出すものとするが、例えば所定のフォーマットの寸法との違いが閾値以上に大きい場合、所定のフォーマットがないと判断する。また、ハガキのように特徴的な幾何学形状が決まった場所に配置されている印刷媒体では、パターン認識によりハガキであることを検出できる。
【０２０３】
図３２は、撮像データ１４に配置されるハガキ用の画像データ１３を模式的に示す図である。図３２（ａ）は検知された所定のフォーマット８６である。このフォーマット８６は、既存フォーマットＤＢ１００２に記憶されている。図３２（ａ）に示すように、ハガキは郵便番号欄５０１、宛先住所欄５０２、宛先氏名欄５０３、送信元郵便番号欄５０７、送信元住所欄５０５、及び、送信元氏名欄５０６を有している。
【０２０４】
図３２（ａ）のフォーマット８６は、既存フォーマットＤＢ１００２から読み出されたものである。ユーザは、このフォーマットの各欄に文字や数字を入力して画像データ１３を作成する。なお、ユーザが図３２（ａ）のフォーマット８６を予め得ておけば、ユーザは印刷媒体１２とＨＨＰ２０の撮像前に画像データ１３を作成できる。
【０２０５】
図３２（ｂ）はカメラ座標系に変換されたハガキの画像データ１３を示す。画像データ配置部５６はこれを図３２（ｃ）の撮像データ１４に配置する。印刷媒体１２と画像データ１３は同じハガキなので、変倍することなく一致する。しかし、画像データ配置部５６は、必要であれば、撮像データ１４のサイズが印刷媒体１２と一致するように、撮像データ１４を変倍する。印刷媒体１２と画像データ１３の外縁が一致すれば、画像データ１３の各欄が印刷媒体１２の各欄と一致する。
【０２０６】
図３３は、本実施例の画像データ出力器１１の動作手順を示すフローチャート図の一例である。図３３では主に図３０との相違点を説明する。
【０２０７】
ステップＳ４５において、印刷媒体検出部５４が印刷媒体を検出し、フォーマット決定部９５がフォーマットを決定する（Ｓ４５）。
【０２０８】
次に、画像データ配置部５６が、フォーマット８６に形成されている画像データ１３を印刷媒体１２に配置する（Ｓ４７）。
【０２０９】
その後、画像データ１３のプレビューが表示され、ユーザが画像データ１３の位置を調整できる。なお、ユーザによる画像データ１３の位置調整を省略してもよい。この場合、ユーザが印刷媒体１２とＨＨＰ２０を撮像すれば、自動的に画像データ１３の画像形成を開始できる。
【０２１０】
＜その他の適用例＞
以上、本発明を実施するための最良の形態について実施例を用いて説明したが、本発明はこうした実施例に何等限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々の変形及び置換を加えることができる。
【０２１１】
例えば、上述したＳｏＣ５０、ＡＳＩＣ/ＦＰＧＡ４０の構成要素は、ＣＰＵ性能やＡＳＩＣ/ＦＰＧＡ４０の回路規模等により、どちらに含まれていてもよい。
【０２１２】
また、図４，５等で説明されたＨＨＰ２０の機能は、ＣＰＵ３１がプログラムを実行することで実現してよい。
【０２１３】
また、本実施形態では、三方向(例えばＸ/Ｙ/Ｒ軸、Ｒ：回転)の位置をそれぞれ検知し、平面上を自由に走査可能（フリーハンド走査）なハンドヘルドプリンタ２０を例にして説明した。しかし、一方向(例えばＸ軸方向)の位置を検知し、一方向にのみ走査させて画像形成するハンドヘルドプリンタ２０に対しても本実施形態を適用できる。また、二方向(例えばＸ/Ｙ軸方向) の位置をそれぞれ検知し、二方向にのみ走査させて画像形成するハンドヘルドプリンタ２０に対しても本実施形態を適用できる。
【０２１４】
また、本実施形態ではインクを吐出して画像を形成すると説明したが、可視光、紫外線、赤外線、レーザなどを照射して画像を形成してもよい。この場合、印刷媒体１２として例えば熱や光に反応するものが用いられる。また、透明な液体を吐出してもよい。この場合、特定の波長域の光が照射されると可視情報が得られる。すなわち、化学的・物理的な作用を経て最終的に肉眼で確認しうる視覚情報を形成できればよい。
【０２１５】
また、本実施形態では、画像形成の際にフリーハンドでユーザが走査させると説明したが、ＨＨＰ２０がモータなどを動力にして印刷媒体上を自走してもよい。
【符号の説明】
【０２１６】
１      画像形成システム
８      撮像装置
１１    画像データ出力器
１２    印刷媒体
１３    画像データ
１４    撮像データ
２０    ハンドヘルドプリンタ
５２    撮像部
５３    特徴点検出部
５４    印刷媒体検出部
５５    装置位置決定部
５６    画像データ配置部
５７    印字画像変換部
９１    位置姿勢計算部
９２    撮像データ表示部
９３    印刷位置決定部
９４    トリミング部
９５    フォーマット決定部
【先行技術文献】
【特許文献】
【０２１７】
【特許文献１】特許第５０３３２４７号公報
【非特許文献】
【０２１８】
【非特許文献１】加藤博一, "拡張現実感システム構築ツールARToolKitの開発", 信学会パターン認識・メディア理解研究会技術研究報告(PRMU), Vol.101, No.652, pp.79-86, 2002.
【図１】
2017010271.tif 000006
【図２】
2017010271.tif 000007
【図３】
2017010271.tif 000008
【図４】
2017010271.tif 000009
【図５】
2017010271.tif 000010
【図６】
2017010271.tif 000011
【図７】
2017010271.tif 000012
【図８】
2017010271.tif 000013
【図９】
2017010271.tif 000014
【図１０】
2017010271.tif 000015
【図１１】
2017010271.tif 000016
【図１２】
2017010271.tif 000017
【図１３】
2017010271.tif 000018
【図１４】
2017010271.tif 000019
【図１５】
2017010271.tif 000020
【図１６】
2017010271.tif 000021
【図１７】
2017010271.tif 000022
【図１８】
2017010271.tif 000023
【図１９】
2017010271.tif 000024
【図２０】
2017010271.tif 000025
【図２１】
2017010271.tif 000026
【図２２】
2017010271.tif 000027
【図２３】
2017010271.tif 000028
【図２４】
2017010271.tif 000029
【図２５】
2017010271.tif 000030
【図２６】
2017010271.tif 000031
【図２７】
2017010271.tif 000032
【図２８】
2017010271.tif 000033
【図２９】
2017010271.tif 000034
【図３０】
2017010271.tif 000035
【図３１】
2017010271.tif 000036
【図３２】
2017010271.tif 000037
【図３３】
2017010271.tif 000038