(57)【要約】      （修正有）【課題】印刷媒体に対して画像の傾きを抑制できる画像形成装置を提供する。【解決手段】印刷媒体１２に画像を形成する画像形成装置２０であって、第一位置を起点として画像形成装置２０の位置が移動した際、印刷媒体１２の面に平行な第一方向と第二方向の画像形成装置２０の移動量を検出する移動量取得手段と、第一方向の移動量と第二方向の移動量を用いて、第一位置における画像形成装置２０の傾度情報を取得する傾度情報取得手段と、画像形成の開始位置で印刷媒体１２に対し傾きを有している画像形成装置２０が画像を形成した場合に生じ得る画像の傾きを、傾度情報を用いて抑制する傾き抑制手段と、傾き抑制手段により傾きが抑制された画像を印刷媒体１２に形成する画像形成手段と、を有する。【選択図】図３
2016215472.tif 000002
【特許請求の範囲】
【請求項１】
印刷媒体に画像を形成する画像形成装置であって、
第一位置を起点として前記画像形成装置の位置が移動した際、前記印刷媒体の面に平行な第一方向と第二方向の前記画像形成装置の移動量を検出する移動量取得手段と、
前記第一方向の移動量と前記第二方向の移動量を用いて、前記第一位置における前記画像形成装置の傾度情報を取得する傾度情報取得手段と、
画像形成の開始位置で前記印刷媒体に対し傾きを有している前記画像形成装置が画像を形成した場合に生じ得る前記画像の傾きを、前記傾度情報を用いて抑制する傾き抑制手段と、
前記傾き抑制手段により傾きが抑制された前記画像を前記印刷媒体に形成する画像形成手段と、を有する画像形成装置。
【請求項２】
前記移動量取得手段が取得する前記移動量に基づき前記画像形成装置の現在位置を検出する現在位置検出手段を有し、
前記傾き抑制手段は、画素の形成先として前記画像形成手段が目標とする目標位置を前記傾度情報に応じて補正し、
前記画像形成手段は、前記現在位置が補正後の前記目標位置から所定範囲内に入ると前記画素を形成する請求項１に記載の画像形成装置。
【請求項３】
前記印刷媒体に形成される前記画像を記憶する画像記憶手段を有し、
前記傾き抑制手段は、前記画像記憶手段に記憶された前記画像を前記傾度情報とは逆方向に前記傾度情報だけ傾かせる画像補正を行い、
前記画像形成手段は、前記傾き抑制手段により画像補正された前記画像を前記印刷媒体に形成する請求項１に記載の画像形成装置。
【請求項４】
前記移動量取得手段が取得する前記移動量に基づき前記画像形成装置の現在位置を検出する現在位置検出手段を有し、
前記傾き抑制手段は、前記傾度情報に基づき補正後の前記開始位置を求め、
前記画像形成手段は、補正後の前記開始位置を基準にして画素の形成先として前記画像形成手段が目標とする目標位置を設定し、前記現在位置が前記目標位置から所定範囲内に入ると前記画素を形成する請求項１に記載の画像形成装置。
【請求項５】
前記傾き抑制手段は、前記画像記憶手段に記憶された前記画像を、前記開始位置に対応する前記画像の原点を中心に前記傾度情報とは逆方向に前記傾度情報だけ回転させることで画像補正を行う請求項３に記載の画像形成装置。
【請求項６】
前記傾度情報は、画像形成の開始前に前記画像形成装置の位置が移動することで得られた直線に対する前記画像形成装置の傾きである請求項１〜５いずれか１項に記載の画像形成装置。
【請求項７】
前記直線は、前記第一位置と前記第一位置から水平方向に離れた第二位置とを結ぶことで得られる請求項６に記載の画像形成装置。
【請求項８】
操作を受け付ける操作受付手段を有し、
前記傾き抑制手段は、前記操作受付手段が予め定められた操作を受け付けた位置を前記第一位置と前記第二位置にそれぞれ決定する請求項７に記載の画像形成装置。
【請求項９】
前記傾き抑制手段は、前記第一位置から水平方向に最も離れた位置を前記第二位置に決定する請求項７に記載の画像形成装置。
【請求項１０】
前記傾度情報取得手段は、前記第一方向の移動量と前記第二方向の移動量を検出可能なセンサである請求項１〜９いずれか１項に記載の画像形成装置。
【請求項１１】
前記第二方向の移動量は、インクを出力する複数のノズルの配列方向に平行な移動量であり、前記第一方向の移動量は、前記配列方向に垂直な方向の移動量であり、
前記傾度情報取得手段は、前記第一方向の移動量と前記第二方向の移動量の比を用いて前記傾度情報を取得する請求項１０に記載の画像形成装置。
【請求項１２】
印刷媒体に画像を形成する画像形成装置によって行われる画像形成方法であって、
第一位置を起点として前記画像形成装置の位置が移動した際、前記印刷媒体の面に平行な第一方向と第二方向の前記画像形成装置の移動量を検出する移動量取得ステップと、
前記第一方向の移動量と前記第二方向の移動量を用いて、前記第一位置における前記画像形成装置の傾度情報を取得する傾度情報取得ステップと、
画像形成の開始位置で前記印刷媒体に対し傾きを有している前記画像形成装置が画像を形成した場合に生じ得る前記画像の傾きを、前記傾度情報を用いて抑制する傾き抑制ステップと、
前記傾き抑制ステップにより傾きが抑制された前記画像を前記印刷媒体に形成する画像形成ステップと、を有する画像形成方法。
【請求項１３】
印刷媒体に画像を形成する画像形成装置を、
第一位置を起点として前記画像形成装置の位置が移動した際、前記印刷媒体の面に平行な第一方向と第二方向の前記画像形成装置の移動量を検出する移動量取得手段と、
前記第一方向の移動量と前記第二方向の移動量を用いて、前記第一位置における前記画像形成装置の傾度情報を取得する傾度情報取得手段と、
画像形成の開始位置で前記印刷媒体に対し傾きを有している前記画像形成装置が画像を形成した場合に生じ得る前記画像の傾きを、前記傾度情報を用いて抑制する傾き抑制手段と、
前記傾き抑制手段により傾きが抑制された前記画像を前記印刷媒体に形成する画像形成手段と、として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像形成装置及び画像形成方法に関する。
【背景技術】
【０００２】
用紙を搬送させて用紙が画像の形成位置に到達したタイミングでインクなどを吐出して画像を形成するプリンタ装置が知られている。これに対し、プリンタ装置から紙搬送システムを削除することで小型化されたプリンタ装置（以下、ハンドヘルドプリンタという）が実用化されつつある。
【０００３】
図１は、ハンドヘルドプリンタ２０による画像形成を模式的に示す図の一例である。ハンドヘルドプリンタ２０には、例えばスマートフォンやＰＣ（Personal Computer）等の画像データ出力器１１から画像データが送信される。ユーザはこのハンドヘルドプリンタ２０を把持して、印刷媒体１２（例えば定型用紙やノートなど）上をフリーハンドで走査させる。ハンドヘルドプリンタ２０は位置検出機構を有しているため、ハンドヘルドプリンタ２０が目標吐出位置に移動すると、目標吐出位置で吐出すべき色のインクを吐出する。すでにインクを吐出した場所はマスクされるので（インクの吐出の対象とならないので）、ユーザは印刷媒体１２上で任意の方向にハンドヘルドプリンタ２０を走査させることで画像を形成できる。
【０００４】
しかしながら、ハンドヘルドプリンタ２０をユーザがフリーハンドで走査させた場合、ハンドヘルドプリンタ２０が印刷媒体１２に対し回転するおそれがある（ハンドヘルドプリンタ２０が回転するとハンドヘルドプリンタ２０のノズルの配列方向が回転する。）。このようなハンドヘルドプリンタ２０の回転に対し、回転量を検出する技術が知られている（例えば、特許文献１参照。）。特許文献１には、ハンドヘルドプリンタ２０に搭載された２つの位置検出センサが検出する移動量の差を用いてハンドヘルドプリンタ２０の回転を検出する技術が開示されている。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１の技術はハンドヘルドプリンタ２０の画像形成中に生じた回転を補正することは可能でも、ハンドヘルドプリンタ２０が初期位置にある時の傾きを補正することは困難であるという問題がある。図を用いて説明する。
【０００６】
図２はハンドヘルドプリンタ２０が印刷媒体１２に対し傾いていた場合の画像を例示する図である。まず、図２（ａ）では、ハンドヘルドプリンタ２０が印刷媒体１２に対し傾いていない。このため、印刷媒体１２に対し画像が傾くことなく形成されている。
【０００７】
また、図２（ｂ）に示すように、画像形成中にハンドヘルドプリンタ２０が印刷媒体１２に対し回転したとしても、特許文献１に記載されているようにハンドヘルドプリンタ２０は画像形成中の傾きを検出して補正する機能を有している。このため、図２（ｂ）においても印刷媒体１２に対し画像が傾くことなく形成されている。
【０００８】
なお、図示するように、ハンドヘルドプリンタ２０が印刷媒体１２に対し「回転する」や「傾く」とは、印刷媒体１２の面とハンドヘルドプリンタ２０のノズル面が平行なまま、印刷媒体１２の例えば垂直方向に対しハンドヘルドプリンタ２０の垂直方向（ノズルの配列方向）が垂直でなくなることをいう。
【０００９】
しかし、図２（ｃ）に示すように、印刷を開始する初期位置でハンドヘルドプリンタ２０が印刷媒体１２に対し傾いている場合、印刷媒体１２に形成される画像が傾いてしまう。これは、ハンドヘルドプリンタ２０は初期位置のヘッドの向きを無条件に０度として、画像形成中のハンドヘルドプリンタ２０の位置を求めるためである。したがって、印刷媒体１２に対して初期位置ですでにハンドヘルドプリンタ２０が傾いている場合、傾いた画像が形成されてしまう。
【００１０】
本発明は、上記課題に鑑み、印刷媒体に対して画像の傾きを抑制できる画像形成装置を提供することを目的とする。
【課題を解決するための手段】
【００１１】
上記課題に鑑み、本発明は、印刷媒体に画像を形成する画像形成装置であって、第一位置を起点として前記画像形成装置の位置が移動した際、前記印刷媒体の面に平行な第一方向と第二方向の前記画像形成装置の移動量を検出する移動量取得手段と、前記第一方向の移動量と前記第二方向の移動量を用いて、前記第一位置における前記画像形成装置の傾度情報を取得する傾度情報取得手段と、画像形成の開始位置で前記印刷媒体に対し傾きを有している前記画像形成装置が画像を形成した場合に生じ得る前記画像の傾きを、前記傾度情報を用いて抑制する傾き抑制手段と、前記傾き抑制手段により傾きが抑制された前記画像を前記印刷媒体に形成する画像形成手段と、を有する。
【発明の効果】
【００１２】
印刷媒体に対して画像の傾きを抑制できる画像形成装置を提供することができる。
【図面の簡単な説明】
【００１３】
【図１】ハンドヘルドプリンタによる画像形成を模式的に示す図の一例である。
【図２】ハンドヘルドプリンタが印刷媒体に対し傾いていた場合の画像を例示する図である。
【図３】初期位置でハンドヘルドプリンタが印刷媒体に対し傾いていた場合の傾きの補正方法を説明する図の一例である。
【図４】ハンドヘルドプリンタのハードウェア構成図の一例である。
【図５】制御部の構成を説明する図の一例である。
【図６】傾き算出／補正回路の機能ブロック図の一例である。
【図７】目標吐出位置とノズルの位置の関係を説明する図の一例である。
【図８】ハンドヘルドプリンタの概略的な外観図の一例である。
【図９】ハンドヘルドプリンタの平面図の一例である。
【図１０】ナビゲーションセンサの移動量ΔＸ´、ΔＹ´と印刷媒体座標のＸ、Ｙとの対応を説明する図の一例である。
【図１１】画像形成中に生じるハンドヘルドプリンタの回転角ｄθの求め方を説明する図の一例である。
【図１２】キャリブレーションにより求められる傾きPsφを説明する図の一例である。
【図１３】目標吐出位置の補正を説明するための図の一例である。
【図１４】傾きPsφを用いたハンドヘルドプリンタの初期位置の補正を模式的に示す図の一例である。
【図１５】Ｎ番目のノズルＮの位置の算出方法を説明するための図の一例である。
【図１６】ハンドヘルドプリンタの起動から画像形成の終了までの動作手順を示すフローチャート図の一例である。
【図１７】ハンドヘルドプリンタの起動から画像形成の終了までの動作手順を示すフローチャート図の一例である。
【図１８】プレスキャン状態を含む、ハンドヘルドプリンタの状態遷移図の一例である。
【図１９】ハンドヘルドプリンタの傾き補正を説明する図の一例である（実施例２）。
【図２０】画像データの元の配置と傾きPsφの補正を説明する図の一例である。
【図２１】ハンドヘルドプリンタの起動から画像形成の終了までの動作手順を示すフローチャート図の一例である（実施例２）。
【図２２】ハンドヘルドプリンタの起動から画像形成の終了までの動作手順を示すフローチャート図の一例である（実施例２）。
【発明を実施するための形態】
【００１４】
以下、本発明を実施するための形態について図面を参照しながら実施例を挙げて説明する。
【実施例１】
【００１５】
＜初期位置の傾きの補正方法の概略＞
本実施例のハンドヘルドプリンタ２０は、画像形成前にユーザが１度、キャリブレーションを行うことで、初期位置（画像形成を開始する位置）におけるハンドヘルドプリンタ２０の傾きを補正する。図３を用いて説明する。
【００１６】
図３は、初期位置でハンドヘルドプリンタ２０が印刷媒体１２に対し傾いていた場合の傾きの補正方法を説明する図の一例である。図３（ａ）はユーザが行うキャリブレーションを模式的に示している。ユーザは、ハンドヘルドプリンタ２０を印刷媒体１２に対してほぼ水平に移動させる。この時、ハンドヘルドプリンタ２０は印刷媒体１２に対し傾いてよい（傾いていない場合はキャリブレーションの必要がないが、キャリブレーションを行ってもよい）。図３（ａ）では初期位置のハンドヘルドプリンタ２０が反時計方向にPsφ傾いている。
【００１７】
図３（ｂ）は、水平移動の移動軌跡３０１と傾きPsφの関係を示す図である。ハンドヘルドプリンタ２０はプレスキャンの開始点Ｓから終了地点Ｅ（後述する折返し点）を結んだ直線を水平と定義する。ハンドヘルドプリンタ２０は開始点Ｓから終了地点Ｅまでの移動量を取得している。説明の便宜上、開始点Ｓの座標を（０，０）、終了地点Ｅの座標を（Ｘ0，Ｙ0）とする。（０，０）（Ｘ0，Ｙ0）は、印刷媒体１２に対し水平・垂直な向きを軸とする座標系の座標（後述する印刷媒体座標）である。
【００１８】
これに対し、ハンドヘルドプリンタ２０は記録ヘッドのノズルの配列方向に水平・垂直な向きを座標系として移動量を検出する。この座標系をＸ´、Ｙ´で示す。したがって、終了地点Ｅまで移動した時のハンドヘルドプリンタ２０のＸ´軸方向における移動量はΔＸ´、Ｙ´軸方向の移動量は-ΔＹ´である。このΔＸ´と-ΔＹ´から傾きPsφを求めることができる。図３（ｂ）の傾きPsφはそのまま、図３（ａ）の初期位置におけるハンドヘルドプリンタ２０の傾きPsφである。
【００１９】
本実施例のハンドヘルドプリンタ２０は、初期位置の傾きPsφを用いてインクの目標吐出位置を補正する。傾いている分、目標吐出位置を補正することで、図３（ｃ）に示すように、初期位置のヘッドが傾いていても印刷媒体１２に対して傾きの少ない画像を形成できる。また、ハンドヘルドプリンタ２０が初期位置で傾いていなくても、位置検出のためのセンサ自体が傾いて組み付けられている場合には、傾きの少ない画像を形成できる。
【００２０】
＜構成例＞
図４は、ハンドヘルドプリンタ２０のハードウェア構成図の一例を示す。ハンドヘルドプリンタ２０は、印刷媒体１２に画像を形成する画像形成装置の一例である。ハンドヘルドプリンタ２０は、制御部２５によって全体の動作が制御され、制御部２５には通信Ｉ/Ｆ２７、ＩＪ記録ヘッド駆動回路２３、ＯＰＵ２６、ＲＯＭ２８、ＤＲＡＭ２９、及び、ナビゲーションセンサ３０が電気的に接続されている。また、ハンドヘルドプリンタ２０は電力により駆動されるため、電源２２と電源回路２１を有している。電源回路２１が生成する電力は、通信Ｉ/Ｆ２７、ＩＪ記録ヘッド駆動回路２３、ＯＰＵ２６、ＲＯＭ２８、ＤＲＡＭ２９、ＩＪ記録ヘッド２４、制御部２５、及び、ナビゲーションセンサ３０に供給されている。
【００２１】
電源２２は主に電池（バッテリー）が利用される。太陽電池や商用電源（交流電源）、燃料電池等が用いられてもよい。電源回路２１は、電源２２が供給する電力をハンドヘルドプリンタ２０の各部に分配する。また、電源２２の電圧を各部に適した電圧に降圧や昇圧する。また、電源２２が電池で充電可能である場合、電源回路２１は交流電源の接続を検出して電池の充電回路に接続し、電源２２の充電を可能にする。
【００２２】
通信Ｉ/Ｆ２７は、スマートフォンやＰＣ（Personal Computer）等の画像データ出力器１１から画像データの受信等を行う。通信Ｉ/Ｆ２７は例えば無線ＬＡＮ、Bluetooth（登録商標）、ＮＦＣ（Near Field Communication）、赤外線、３Ｇ、ＬＴＥ（Long Term Evolution）等の通信規格に対応した通信装置である。また、このような無線通信の他、有線ＬＡＮ、ＵＳＢケーブルなどを用いた有線通信に対応した通信装置であってもよい。
【００２３】
ＲＯＭ２８は、ハンドヘルドプリンタ２０のハードウェア制御を行うファームウェアや、ＩＪ記録ヘッド２４の駆動波形データ（液滴を吐出するための電圧変化を規定するデータ）や、ハンドヘルドプリンタ２０の初期設定データ等を格納している。
【００２４】
ＤＲＡＭ２９は通信Ｉ/Ｆ２７が受信した画像データを記憶したり、ＲＯＭ２８から展開されたファームウェアの格納のために使用される。したがって、ＣＰＵ３１がファームウェアを実行する際のワークメモリとして使用される。
【００２５】
ナビゲーションセンサ３０は、ハンドヘルドプリンタ２０の位置を検出するセンサである。ナビゲーションセンサ３０は、例えば、発光ダイオード（ＬＥＤ）やレーザ等の光源と、印刷媒体１２を撮像する撮像センサを有している。ハンドヘルドプリンタ２０が印刷媒体１２上を走査されると、印刷媒体１２の微小なエッジが次々に検出され（撮像され）エッジ間の距離を解析することで移動量が得られる。ナビゲーションセンサ３０は、ハンドヘルドプリンタ２０の少なくとも２箇所に搭載されている。両者を区別する場合、ナビゲーションセンサＳ０，Ｓ１という。なお、ナビゲーションセンサ３０として、さらに多軸の加速度センサやジャイロセンサ等を用いてもよく、加速度センサやジャイロセンサのみでハンドヘルドプリンタ２０の位置を検出してもよい。
【００２６】
ＯＰＵ（Operation panel Unit）２６は、ハンドヘルドプリンタ２０の状態を表示するＬＥＤ、ユーザが画像形成を指示するためのスイッチ等を有している。ただし、これに限定するものではなく、液晶ディスプレイを有していてよく、さらにタッチパネルを有していてもよい。また、音声入力機能を有していてもよい。
【００２７】
ＩＪ記録ヘッド駆動回路２３は上記の駆動波形データを用いて、ＩＪ記録ヘッド２４を駆動するための駆動波形（電圧）を生成する。インクの液滴のサイズなどに応じた駆動波形を生成できる。
【００２８】
ＩＪ記録ヘッド２４は、インクが吐出されるヘッドである。図ではＣＭＹＫの４色のインクを吐出可能になっているが、単色でもよく５色以上の吐出が可能でもよい。各色ごとに一列（二列以上でもよい）に並んだ複数のインク吐出用のノズルが配置されている。また、インクの吐出方式はピエゾ方式でもサーマル方式でもよく、この他の方式でもよい。
【００２９】
制御部２５は、ナビゲーションセンサ３０が検出する移動量を元に、ＩＪ記録ヘッド２４の各ノズルの位置、該位置に応じて形成する画像の決定、吐出ノズル可否判定等を行う。制御部２５について詳細は次述する。
【００３０】
図５は、制御部２５の構成を説明する図の一例である。制御部２５はＳｏＣ５０とＡＳＩＣ/ＦＰＧＡ４０を有している。ＳｏＣ５０とＡＳＩＣ/ＦＰＧＡ４０はバス４４，４５を介して通信する。ＡＳＩＣ/ＦＰＧＡ４０はどちらの実装技術で設計されてもよいことを意味し、ＡＳＩＣ/ＦＰＧＡ４０以外の他の実装技術で構成されてよい。また、ＳｏＣ５０とＡＳＩＣ/ＦＰＧＡ４０を別のチップにすることなく１つのチップや基盤で構成してもよい。あるいは、３つ以上のチップや基盤で実装してもよい。
【００３１】
ＳｏＣ５０は、バス４４を介して接続されたＣＰＵ３１、位置算出回路３２、傾き算出／補正回路３３、メモリＣＴＬ（コントローラ）３４、及び、ＲＯＭ ＣＴＬ（コントローラ）３５等の機能を有している。なお、ＳｏＣ５０が有する構成要素はこれらに限られない。
【００３２】
また、ＡＳＩＣ/ＦＰＧＡ４０は、バス４５を介して接続されたImage RAM３６、ＤＭＡＣ３７、回転器３８、割り込みコントローラ３９、ナビゲーションセンサＩ/Ｆ、印字/センサタイミング生成部４２、及び、ＩＪ記録ヘッド制御部４３を有している。なお、ＡＳＩＣ/ＦＰＧＡ４０が有する構成要素はこれらに限られない。
【００３３】
ＣＰＵ３１は、ＲＯＭ２８からＤＲＡＭ２９に展開されたファームウェアなどを実行し、ＳｏＣ５０内の位置算出回路３２、傾き算出／補正回路３３、メモリＣＴＬ３４、及び、ＲＯＭ ＣＴＬ３５の動作を制御する。また、ＡＳＩＣ/ＦＰＧＡ４０内のImage RAM３６、ＤＭＡＣ３７、回転器３８、割り込みコントローラ３９、ナビゲーションセンサＩ/Ｆ４１、印字/センサタイミング生成部４２、及び、ＩＪ記録ヘッド制御部４３の動作を制御する。
【００３４】
位置算出回路３２は、ナビゲーションセンサ３０が検出するサンプリング周期ごとの移動量に基づいてハンドヘルドプリンタ２０の位置（座標情報）を算出する。ハンドヘルドプリンタ２０の位置とは、厳密にはノズルの位置であるが、ナビゲーションセンサ３０のある位置が分かればノズルの位置を算出できる。本実施例では、特に断らない限りナビゲーションセンサ３０の位置としてナビゲーションセンサＳ０の位置をいう。また、位置算出回路３２は目標吐出位置を算出する。
【００３５】
ナビゲーションセンサ３０の位置は、後述するように例えば所定の原点（画像形成が開始される時のハンドヘルドプリンタ２０の初期位置）を基準に算出されている。また、位置算出回路３２は、過去の位置と最も新しい位置の差に基づいて移動速度や移動方向を推定し、例えば次回の算出タイミングにおける位置を予測する。こうすることで、ユーザの走査に対する遅れを抑制してインクを吐出できる。
【００３６】
傾き算出／補正回路３３は、初期位置のハンドヘルドプリンタ２０の印刷媒体１２に対する傾きPsφを算出する。また、この傾きPsφに基づき位置算出回路３２が算出した目標吐出位置を補正する。傾き算出／補正回路３３の詳細は図６にて説明する。  メモリＣＴＬ３４は、ＤＲＡＭ２９とのインタフェースであり、ＤＲＡＭ２９に対しデータを要求し、取得したファームウェアをＣＰＵ３１に送出したり、取得した画像データをＡＳＩＣ/ＦＰＧＡ４０に送出する。
【００３７】
ＲＯＭ ＣＴＬ３５は、ＲＯＭ２８とのインタフェースであり、ＲＯＭ２８に対しデータを要求し、取得したデータをＣＰＵ３１やＡＳＩＣ/ＦＰＧＡ４０に送出する。
【００３８】
ＤＭＡＣ３７は、位置算出回路３２が算出した位置情報を元に、メモリＣＴＬ３４を介してＩＪ記録ヘッド２４の各ノズル周辺の画像データを取得する。つまり、印刷媒体１２に対しハンドヘルドプリンタ２０が存在する位置の周辺の画像データが取得される。
【００３９】
回転器３８は、ＤＭＡＣ３７が取得した画像データを、インクを吐出するヘッド、及び、ヘッド内のノズル位置に応じて回転させる。ＤＭＡＣ３７は回転後の画像データをＩＪ記録ヘッド制御部４３へ出力する。回転器３８は、例えば、位置算出回路３２が位置を算出する際に算出した回転角θを取得し、その回転角θを用いて周辺画像を回転させることができる。
【００４０】
Image RAM３６はＤＭＡＣ３７が取得した画像データを一時的に格納する。すなわち、ある程度の画像データがバッファリングされ、ハンドヘルドプリンタ２０の位置に応じて読み出される。
【００４１】
ＩＪ記録ヘッド制御部４３は、画像データ（ビットマップデータ）にディザ処理などを施して大きさと密度で画像を表す点の集合に画像データを変換する。これにより、画像データは吐出位置と点のサイズのデータとなる。ＩＪ記録ヘッド制御部４３は点のサイズに応じた制御信号をＩＪ記録ヘッド駆動回路２３に出力する。ＩＪ記録ヘッド駆動回路２３は上記のように制御信号に対応した駆動波形データを用いて、駆動波形（電圧）を生成する。
【００４２】
ナビゲーションセンサＩ/Ｆ４１は、ナビゲーションセンサ３０と通信し、ナビゲーションセンサ３０からの情報として移動量ΔＸ´、ΔＹ´（これらについては後述する）を受信し、その値を内部レジスタに格納する。
【００４３】
印字/センサタイミング生成部４２は、ナビゲーションセンサＩ/Ｆ４１にナビゲーションセンサ３０の情報を読み取るタイミングを通知し、ＩＪ記録ヘッド制御部４３に駆動タイミングを通知する。ＩＪ記録ヘッド制御部４３は吐出ノズル可否判定を行いインクを吐出すべき目標吐出位置があればインクを吐出しなければ吐出しない。
【００４４】
割り込みコントローラ３９は、ナビゲーションセンサＩ/Ｆ４１がナビゲーションセンサ３０との通信が完了したことを検知して、ＳｏＣ５０へそれを通知するための割り込み信号を出力する。ＣＰＵ３１はこの割り込みにより、ナビゲーションセンサＩ/Ｆ４１が内部レジスタに記憶するΔＸ´、ΔＹ´を取得する。その他、エラー等のステータス通知機能も有する。
【００４５】
<<傾き算出／補正回路３３>>
図６は、傾き算出／補正回路３３の機能ブロック図の一例である。傾き算出／補正回路３３は、傾き演算部３３ａと補正演算部３３ｂを有している。傾き演算部３３ａは、キャリブレーションの際に位置算出回路３２が算出した位置情報を元に傾きPsφを算出し、ＤＲＡＭ２９などに記憶させる。
【００４６】
補正演算部３３ｂは、ＤＲＡＭ２９などに記憶された傾きPsφに基づいて、目標吐出位置を補正する。また、傾きPsφに基づいてハンドヘルドプリンタ２０の初期位置を補正してから、目標吐出位置を補正してもよい。
【００４７】
なお、図５，６では傾き算出／補正回路３３をハードウェアにより構成される回路として記載しているが、ソフトウェアにより傾き算出／補正回路３３と同等の機能を実現してよい。この場合、図５，６から傾き算出／補正回路３３は削除され、ＣＰＵ３１がファームウェアなどのプログラムを実行し、ＣＰＵ３１からの命令によって実現される機能又は手段として傾き算出／補正回路３３が実現される。なお、位置算出回路３２についても同様であり、ソフトウェアによりこの機能を実現してよい。
【００４８】
＜目標吐出位置＞
続いて、図７を用いて目標吐出位置について説明する。図７は、目標吐出位置とノズル６１の位置の関係を説明する図の一例である。図７は初期位置でＩＪ記録ヘッド２４が印刷媒体１２に対し傾いている場合の目標吐出位置Ｇ１〜Ｇ９を示す。目標吐出位置Ｇ１〜Ｇ９は、ハンドヘルドプリンタ２０がノズル６１からインクを着弾させる目標位置（画素の形成先）である。目標吐出位置Ｇ１〜Ｇ９は、ハンドヘルドプリンタ２０の初期位置とハンドヘルドプリンタ２０のＸ軸/Ｙ軸方向の解像度(Xdpi,Ydpi)から求めることができる。
【００４９】
例えば、解像度が３００dpiの場合、ＩＪ記録ヘッド２４の長手方向及びこれに対し垂直な方向に約0.084[mm]ごとに目標吐出位置が設定される。この目標吐出位置Ｇ１〜Ｇ９に吐出される画素があれば、ハンドヘルドプリンタ２０はインクを吐出する。
【００５０】
しかし、実際には、ノズル６１と目標吐出位置が完全に一致するタイミングを捉えることは困難なので、ハンドヘルドプリンタ２０は目標吐出位置とノズル６１の現在位置との間に許容誤差６２を設けている。そして、ノズル６１の現在位置が目標吐出位置から許容誤差６２の範囲内にある場合に、ノズル６１からインクを吐出する（このような許容範囲を設けることを「吐出ノズル可否判定」という。）。
【００５１】
また、矢印６３に示すように、ハンドヘルドプリンタ２０はノズル６１の移動方向と速度を監視しており、次回のサンプリング周期のノズル６１の位置を予測している。したがって、予測された位置と許容誤差６２の範囲内を比較してインクの吐出を準備することが可能になる。なお、本実施例では、区別して説明する必要がなければ、最も新しく算出された位置と予測された位置を区別することなく現在位置と称する。
【００５２】
図７に示すように、初期位置でＩＪ記録ヘッド２４が傾いていると、初期位置を基準に設定される目標吐出位置Ｇ１〜Ｇ９も傾いてしまい形成される画像も傾いてしまう。
【００５３】
本実施例では、後述する図１３に示すように、初期位置におけるハンドヘルドプリンタ２０の傾きに応じて目標吐出位置を補正する。これにより、形成される画像が傾くことを抑制できる。
【００５４】
＜ハンドヘルドプリンタ２０の外観の一例＞
図８は、本実施形態のハンドヘルドプリンタ２０の概略的な外観図の一例を示す。図８のハンドヘルドプリンタ２０は、ユーザが手５５で把持できる程度の大きさを有するが、ハンドルなどの把持部を備えていれば、ハンドヘルドプリンタ２０はより大きくてよい（より大きなＩＪ記録ヘッド２４を搭載してよい）。また、図ではハンドヘルドプリンタ２０は直方体の形状を有しているが、外観の形状は本実施形態では制限されない。
【００５５】
ハンドヘルドプリンタ２０はいくつかのＬＥＤとボタンを備えた操作部を有している。電源ボタン５３は、ハンドヘルドプリンタ２０の電源２２をＯＮ又はＯＦＦさせる際にユーザにより押下されるボタンである。印字ボタン５４は、ハンドヘルドプリンタ２０による画像形成又はプレスキャンを実施するためにユーザにより押下されるボタンである。
【００５６】
電源ＬＥＤ５１は、ハンドヘルドプリンタ２０の電源２２がＯＮとなり、使用可能な状態であることを点灯状態や点灯色などによりユーザに通知する。印字ＬＥＤ５２は、ハンドヘルドプリンタ２０が画像形成中又はプレスキャン中であることを点灯状態や点灯色などによりユーザに通知する。
【００５７】
<< ＬＥＤ点灯によるユーザへの通知バリエーション>>
図８のＬＥＤは点灯状態によりハンドヘルドプリンタ２０の様々な状態を表現することができる。
【００５８】
【表１】
2016215472.tif 000003
表１は、ＬＥＤの点灯状態とハンドヘルドプリンタ２０の状態の対応を示すＬＥＤ状態テーブルの一例である。表１のＬＥＤ状態テーブルでは、状態１，２がハンドヘルドプリンタ２０の状態を表し、この状態を表す電源ＬＥＤ５１と印字ＬＥＤ５２の点灯状態が対応づけられている。
【００５９】
電源ＬＥＤ５１と印字ＬＥＤ５２の状態には、点灯/消灯/点滅があり、さらに点滅は複数の点滅時間間隔を取り得る。
【００６０】
例えば、電源ＬＥＤ５１が点灯している場合、ハンドヘルドプリンタ２０は通常待機の状態である（状態１）。そして、印字ＬＥＤ５２が消灯している場合、ハンドヘルドプリンタ２０は待機中（何もしてない）であり（状態２）、印字ＬＥＤ５２が点滅（１秒間隔）している場合、ハンドヘルドプリンタ２０はデータ転送中であることが分かる（状態２）。
【００６１】
このように、２つのＬＥＤによっても、点灯/消灯/点滅（時間間隔を変更）の組み合わせることでハンドヘルドプリンタ２０の様々な状態を表現できる。なお、点灯色を用いてハンドヘルドプリンタ２０の状態を表現してもよい。
【００６２】
＜ＩＪ記録ヘッドにおけるノズル位置について＞
次に、図９を用いて、ＩＪ記録ヘッド２４におけるノズル位置等について説明する。図９（ａ）は、ハンドヘルドプリンタ２０の平面図の一例である。図９（ｂ）はＩＪ記録ヘッド２４のみを説明する図の一例である。図示されている面が印刷媒体１２に対向する面である。
【００６３】
本実施形態のハンドヘルドプリンタ２０は、２つ以上のナビゲーションセンサ３０を有している。ナビゲーションセンサ３０が２つ以上あることで、画像形成中の回転を検出できる。図９（ａ）ではノズル６１の配列方向に離間して２つのナビゲーションセンサＳ０，Ｓ１が配置されている。２つのナビゲーションセンサＳ０，Ｓ１の間の長さは距離Ｌである。距離Ｌは長いほどよい。これは、距離Ｌが長いほど検出可能な最小の回転角θが小さくなり、ハンドヘルドプリンタ２０の位置の誤差が少なくなるからである。
【００６４】
ナビゲーションセンサ３０からＩＪ記録ヘッド２４までの距離はそれぞれ距離ａ、ｂである。距離ａと、距離ｂは等しくてもよい。また、図９（ｂ）に示すように、ＩＪ記録ヘッド２４の端から最初のノズル６１までの距離は距離ｄ、隣接するノズル間の距離は距離ｅである。ａ〜ｅの値はＲＯＭ２８などに予め記憶されている。
【００６５】
したがって、位置算出回路３２などがナビゲーションセンサ３０の位置を算出すれば、距離ａ、距離ｂ、距離ｄ、距離ｅを用いて、位置算出回路３２はノズル６１の位置を算出できる。
【００６６】
本実施形態では、印刷媒体１２に水平な方向をＸ軸、垂直な方向をＹ軸に設定する。この座標を印刷媒体座標と称することにする。これに対し、ナビゲーションセンサ３０は図９（ａ）の座標軸（Ｘ´軸、Ｙ´軸）で位置を出力する。すなわち、ノズル６１の配列方向（２つのナビゲーションセンサＳ０、Ｓ１を結ぶ方向）をＹ´軸、Ｙ´軸に直交する方向をＸ´軸とする。位置の算出は位置算出回路３２によって行われる。
【００６７】
＜印刷媒体１２におけるハンドヘルドプリンタ２０の位置について＞
次に、ハンドヘルドプリンタ２０の位置について説明する。図９（ａ）では、印刷媒体１２に対しハンドヘルドプリンタ２０が時計回りにθ回転している。全く回転していなければ、Ｘ＝Ｘ´、Ｙ＝Ｙ´である。しかし、ハンドヘルドプリンタ２０が印刷媒体１２に対し回転角θ、回転した場合、ナビゲーションセンサＳ０、Ｓ１の出力とハンドヘルドプリンタ２０の印刷媒体１２における実際の位置が一致しなくなる。回転角θ、傾きPsφは時計回りが正、Ｘ、Ｘ´右方向が正、Ｙ、Ｙ´は上方向が正である。
【００６８】
図１０（ａ）に示すように、ナビゲーションセンサＳ０，Ｓ１が出力するΔＸ´、ΔＹ´は、印刷媒体座標のＸ、Ｙと以下のように対応する。図１０（ａ）では回転角θのハンドヘルドプリンタ２０がＸ方向にのみ同じ回転角θのまま移動した場合のナビゲーションセンサＳ０，Ｓ１（平行移動なので出力は等しい）が検出する移動量ΔＸ´、ΔＹ´とＸ，Ｙの対応を示している。ナビゲーションセンサＳ０，Ｓ１が出力するΔＸ´はＸ１に反映され、ΔＹ´はＸ２に反映される。
【００６９】
図１０（ｂ）では回転角θのハンドヘルドプリンタ２０がＹ方向にのみ同じ回転角θのまま移動した場合のナビゲーションセンサＳ０，Ｓ１（平行移動なので出力は等しい）が検出する移動量ΔＸ´、ΔＹ´とＸ，Ｙの対応を示している。ナビゲーションセンサＳ０，Ｓ１が出力するΔＹ´はＹ１に反映され、−ΔＸ´はＹ２に反映される。
【００７０】
したがって、ハンドヘルドプリンタ２０がＸ方向及びＹ方向に回転角θのまま移動した場合、ナビゲーションセンサＳ０，Ｓ１が出力するΔＸ´、ΔＹ´は印刷媒体座標のＸ，Ｙに以下のように変換できる。
Ｘ＝ΔＸ´cosθ＋ΔＹ´sinθ  …（１）
Ｙ＝−ΔＸ´sinθ＋ΔＹ´cosθ  …（２）
<<回転角θの検出>>
次に、図１１を用いて、画像形成中にハンドヘルドプリンタ２０が回転した場合の回転角θについて説明する。図１１は、画像形成中に生じるハンドヘルドプリンタ２０の回転角ｄθの求め方を説明する図の一例である。回転角ｄθは２つのナビゲーションセンサＳ０，Ｓ１検出する移動量ΔＸ´を用いて算出される。印刷媒体１２の上側のナビゲーションセンサＳ０が検出する移動量ΔＸ´0、Ｓ１が検出する移動量をΔＸ´1とする。なお、図１１ではすでに得られている回転角をθとしている。
【００７１】
ハンドヘルドプリンタ２０が平行移動しながらｄθ回転したとする。このため、移動量ΔＸ´0とΔＸ´1は一致しない。しかし、どちらの出力も２つのナビゲーションセンサＳ０，Ｓ１を結ぶ直線に垂直な方向の移動量なので、移動量ΔＸ´0とΔＸ´1の差は「ΔＸ´0−ΔＸ´1」として求めることができる。この差はハンドヘルドプリンタ２０がｄθ回転したことにより生じた値である。したがって、２つのナビゲーションセンサＳ０，Ｓ１の間隔がＬであるとすると、ｄθは以下のように表すことができる。
ｄθ＝arcsin｛（ΔＸ´0−ΔＸ´1）/Ｌ｝  …（３）
したがって、式（３）により画像形成中に生じる回転角ｄθを適宜、算出すれば、常に（ナビゲーションセンサＳ０，Ｓ１のサンプリング周期で）、ハンドヘルドプリンタ２０の印刷媒体１２に対する回転角θを特定できる。そしてこの回転角θを使用すれば、式（１）（２）により印刷媒体座標におけるハンドヘルドプリンタ２０の位置を特定できる。
【００７２】
以上のようにして、印刷媒体座標のハンドヘルドプリンタ２０の位置が算出される。例えば、ナビゲーションセンサＳ０の位置（Ｘ０，Ｙ０）が算出されれば、間隔Ｌを使用してナビゲーションセンサＳ１の位置を以下のように求めることができる。なお、ナビゲーションセンサＳ１の位置も式（１）〜（３）から求めてもよい。
Ｘ１＝Ｘ０−Ｌ×sinθ
Ｙ１＝Ｙ０−Ｌ×cosθ
なお、位置算出回路３２が実際にＸ０、Ｘ１、Ｙ０、Ｙ１を算出する際はsinθ、tanθ等を直接、算出しなくてよい場合がある。
【００７３】
θが十分に小さい場合（０と見なせるくらい小さい場合）、sinθ= tanθ = θが成り立つ。ナビゲーションセンサＳ０、Ｓ１がΔＸ´、ΔＹを検知するサンプリング周期は極めて短いので、θも小さい値となる。
【００７４】
例えば、ユーザが比較的高速な走査速度＝400〔mm/s〕で走査しているとする。また、Ｌ＝1〔inch〕、サンプリング周期＝100〔us〕と仮定する。この場合、１サンプリング周期で移動できる距離は４０〔um〕に過ぎず、回転できる回転角dθは0.0015〔rad〕である。また、sindθ＝tandθ＝0.0015となる。したがって、ｄθが十分に小さい場合があり、この場合は、sindθ＝tandθ＝ｄθとしてよい。
【００７５】
＜キャリブレーション（プレスキャン）＞
続いて、図１２を用いて、初期位置におけるハンドヘルドプリンタ２０の傾きPsφを求めるためのキャリブレーションについて説明する。図１２はキャリブレーションにより求められる傾きPsφを説明する図の一例である。
【００７６】
従来は、ハンドヘルドプリンタ２０を基準（例えばＩＪ記録ヘッド２４の長手方向とこれに垂直な方向）とする水平/垂直方向がＸＹ座標系として定義されていた。つまり、ハンドヘルドプリンタ２０を基準とする座標系がそのまま印刷媒体座標であった。このため、初期位置でハンドヘルドプリンタ２０が傾いていると、形成される画像が印刷媒体１２に対し傾いてしまう。
【００７７】
本実施形態では、画像形成の開始時のハンドヘルドプリンタ２０の傾きPsφを検出するために、ユーザが印刷媒体１２に対し略水平にハンドヘルドプリンタ２０をプレスキャンさせる（ユーザ操作は外力の一例）。これにより、画像形成の前に印刷媒体１２の水平方向が定義され、ハンドヘルドプリンタ２０の傾きPsφが得られる。
【００７８】
以下では、ナビゲーションセンサＳ０の位置を用いて説明するが、ナビゲーションセンサＳ１の位置を用いても傾きPsφを検出できる。画像形成の開始前、ナビゲーションセンサＳ０のプレスキャンの開始点（Ｘ01，Ｙ01）を起点としてユーザがプレスキャンを実行し、折返し点（Ｘ02，Ｙ02）までほぼ水平にハンドヘルドプリンタ２０を走査させる（開始点は第一位置の一例、折返し点は第二位置の一例）。矢印６５と矢印６６はプレスキャンの軌跡を示す。折り返し点は、プレスキャンの終点であるが特に決まりはなく、開始点（Ｘ01，Ｙ01）から水平方向に一定距離以上の点であればよい。また、往路だけなく復路においてもユーザがプレスキャンして、往路と復路の平均の傾きPsφを算出してもよい。この場合、開始点（Ｘ01，Ｙ01）から水平方向に最も離れた位置が折り返し点である。
【００７９】
これまで説明したように、ナビゲーションセンサＳ０，Ｓ１が出力する移動量は矢印６７と矢印６８で定義される座標系の値である。このため、ナビゲーションセンサＳ０は、Ｘ02とＸ01の差でなく、矢印６７に平行な移動量（第一方向の移動量）としてΔＸ´を出力する。Ｙ02とＹ01についても同様であり、印刷媒体座標では差がないが、ナビゲーションセンサＳ０は矢印６８に平行な移動量（第二方向の移動量）としてΔＹ´を出力する。
【００８０】
傾きPsφがゼロであれば、ΔＹ´はゼロである。したがって、ΔＸ´とΔＹ´の比から開始点におけるハンドヘルドプリンタ２０の傾きPsφ（傾度情報）を算出できる。
psφ=arctan（ΔＹ´/ΔＸ´）  …（４）
傾き算出／補正回路３３の傾き演算部３３ａはこのようにして傾きPsφを算出しＤＲＡＭ２９等に記憶させる。
【００８１】
なお、図１２ではハンドヘルドプリンタ２０を印刷媒体１２に対して完全な平行移動をさせたものとして記載しているが、開始点（Ｘ01，Ｙ01）と折り返し点（Ｘ02，Ｙ02）とを結ぶ直線は完全な平行移動によって得られたものではなくてよい。折り返し点（Ｘ02，Ｙ02）が開始点（Ｘ01，Ｙ01）に対し多少のずれがある場所であっても、このずれはほとんど傾きPsφに影響しないので、傾きPsφの補正に関しては微少量とみなせる。
【００８２】
したがって、多少のずれがある場合であっても印刷媒体１２に対して画像の傾きを抑制することができる。
【００８３】
＜目標吐出位置の補正＞
ハンドヘルドプリンタ２０の傾きPsφが得られると、傾き算出/補正回路３３は目標吐出位置を補正できる。
【００８４】
図１３は目標吐出位置の補正を説明するための図の一例である。図の目標吐出位置Ｇ１〜Ｇ８は補正前の目標吐出位置を表しており、ハンドヘルドプリンタ２０が傾きPsφ傾いている初期位置を基準とした目標吐出位置である。これに対し、図の目標吐出位置Ｇ´１〜Ｇ´８は補正後の目標吐出位置を表している。
【００８５】
目標吐出位置Ｇ´１〜Ｇ´８はプレスキャンにより得られた傾きPsφだけ初期位置（原点（０，０））を中心に目標吐出位置Ｇ１〜Ｇ８を回転させることで算出できる（回転のアフィン変換）。より具体的には、以下の式によって傾きの補正を行う。ｎ番目の目標吐出位置Ｇ´の座標をａ´ｎ、ｂ´ｎとする。
ａ´ｎ＝ａｎ×cosPsφ−ｂｎ×sinPsφ  …（５）
ｂ´ｎ＝ａｎ×sinPsφ＋ｂｎ×cosPsφ  …（６）
ＩＪ記録ヘッド制御部４３がハンドヘルドプリンタ２０の現在位置と補正後の目標吐出位置に対し吐出ノズル可否判定を行うことで、目標吐出位置Ｇ１〜Ｇ８の画素を目標吐出位置Ｇ´１〜Ｇ´８で吐出することができる。したがって、形成される画像の傾きを抑制できる。
【００８６】
また、目標吐出位置の算出は、ハンドヘルドプリンタ２０の初期位置を補正してから行ってもよい。図１４は、傾きPsφを用いたハンドヘルドプリンタ２０の初期位置の補正を模式的に示す図の一例である。
【００８７】
ナビゲーションセンサＳ０の初期位置の座標を（Ｘ0，Ｙ0）、ナビゲーションセンサＳ１の初期位置の座標を（Ｘ1，Ｙ1）、ナビゲーションセンサＳ０の補正後の初期位置の座標を（Ｘ0c，Ｙ0c）、プレスキャンにより得られた傾きをPsφ、ナビゲーションセンサＳ０、Ｓ１の間の距離をＬとする。ここで、実際に補正する傾きPsφは逆方向の傾きとして「（-1）×プレスキャン時の傾きPsφ」のように符号を逆にする必要があることに留意する。Pφ、Psφの単位はradianとする。
Pφ=(-1)×Psφ
印刷媒体座標において、ナビゲーションセンサＳ０の初期位置のＸ座標と補正後のＸ座標との差ｄＸ0は以下のように表すことができる。Psφは十分に小さいという仮定を用いた。
ｄＸ0＝Ｌ×sinPφ＝Ｌ×Pφ
同様に、ナビゲーションセンサＳ０の初期位置のＹ座標と補正後のＹ座標との差ｄＹ0（印刷媒体座標）は以下のように表すことができる。
ｄＹ0＝Ｌ×(１−cosPφ)
この結果、補正後のナビゲーションセンサＳ０の初期位置の座標（Ｘc0,Ｙ0c)、補正後のナビゲーションセンサＳ１の初期位置の座標（Ｘ1c,Ｙ1c)は以下により求めることができる。
（Ｘ0c,Ｙ0c)＝（Ｘ0＋ｄＸ0,Ｙ0＋ｄＹ0)  …（７）
（Ｘ1c,Ｙ1c)＝（Ｘ1,Ｙ1)                …（８）
傾き算出／補正回路３３はこのようにして傾きPsφを用いて、初期位置を補正しＤＲＡＭ２９等に記憶させる。また、傾き算出／補正回路３３は補正された初期位置を使用して、目標吐出位置を算出する。この場合、図１３の目標吐出位置Ｇ´１〜Ｇ´８が直接、得られる。
【００８８】
＜ノズル位置＞
図１５はＮ番目のノズルＮの位置の算出方法を説明するための図の一例である。一般に、ノズル列内のノズル間距離（距離e）は等しい。また、ナビゲーションセンサＳ０，Ｓ１に対するノズル６１の相対位置は固定である。したがって、ナビゲーションセンサＳ０，Ｓ１の現在位置が算出されれば、任意のノズルＮの位置を求めることができる。先頭のノズル６１の座標を(Xs,Ys)、後尾のノズル６１の座標を(Xe,Ye)とする。これらから、Ｎ番目のノズルＮの座標は、次式により算出することができる。
ＮＺＬＮ_Ｘ＝Ｘｓ＋Ｎ×｛（Ｘe−Ｘs）/（ノズル総数−１）｝
ＮＺＬＮ_Ｙ＝Ｙｓ＋Ｎ×｛（Ｙe−Ｙs）/（ノズル総数−１）｝
＜動作手順＞
図１６、１７を用いてハンドヘルドプリンタ２０の動作手順について説明する。図１６、図１７はハンドヘルドプリンタ２０の起動から画像形成の終了までの動作手順を示すフローチャート図の一例である。図１６、１７では左側がユーザの操作を示し、右側がハンドヘルドプリンタ２０の動作を示す。なお、以下の説明でＣＰＵ３１が主語となる処理は、ＣＰＵ３１がファームウェア等を実行して得られる機能により実現される。
【００８９】
<<起動時>>
U101：ユーザはハンドヘルドプリンタ２０の電源ボタン５３を押下する。
S101,S102：ハンドヘルドプリンタ２０は電源２２から電源供給され、ＳｏＣ５０のＣＰＵ３１は、ＡＳＩＣ/ＦＰＧＡ４０を含め各構成要素の初期化を実施し、各構成要素を立ち上げる。
S103：初期化完了後、ＣＰＵ３１は例えば電源ＬＥＤ５１を点灯させることでユーザに使用可能な状態であることを通知する。
【００９０】
<<画像転送時>>
U102：ユーザは、印刷したい画像を画像データ出力器１１に表示させるなどして選択する。
U103：ユーザは、印刷ジョブの実行を指示する。画像データ出力器１１に搭載されているアプリはプリンタドライバを呼び出し、プリンタドライバは印刷条件と画像をＰＤＬ（Printer Description Language）で記述してハンドヘルドプリンタ２０に送信する。また、プリンタドライバを介することなく、TIFF、JPEG、GIF等の形式のデータのまま画像データを送信してもよい。
S104：ＣＰＵ３１は、例えば印字ＬＥＤ５２を点滅させることで、画像転送中であることをユーザに通知する。
S105-1：そして画像転送が完了するとＣＰＵ３１は印字ＬＥＤ５２を消灯させることで、ユーザに画像形成の開始が可能な状態であることを通知する。
【００９１】
<<プレスキャン動作時>>
U104：ユーザは、印刷媒体１２の上でハンドヘルドプリンタ２０の初期位置を決定する。
U105：ユーザは、プレスキャンの開始点（ユーザが決定する画像形成の開始予定位置）にて、印字ボタン５４を押下する（１回目）。
S105-2：ＣＰＵ３１は印字ボタン５４によるキー割込みを受付け、印字ＬＥＤ５２を点滅させることでプレスキャン中であることをユーザに通知する。また、ＣＰＵ３１は、ナビゲーションセンサＳ０，Ｓ１の出力をリードするようナビゲーションセンサＩ/Ｆ４１に通知する。
S1001：ナビゲーションセンサ３０は位置情報（移動量）の検知を開始し、位置情報（移動量）をナビゲーションセンサ３０内のメモリに格納する。ハンドヘルドプリンタ２０は移動していないので位置情報（移動量）はゼロである。
S106：ナビゲーションセンサＩ/Ｆ４１はナビゲーションセンサ３０と通信し、位置情報（移動量）をリードする。
S107：ＣＰＵ３１はリードした位置情報（移動量）を仮の初期位置としてＤＲＡＭ２９などに保持する。例えば仮の初期位置の座標を（0,0）とする。
U106：ユーザは、プレスキャンの開始点から印刷媒体１２に対して略水平になるようにフリーハンドによるプレスキャンを実行する。このプレスキャンによって、ユーザ自身が画像形成動作における水平方向を定義することができる。プレスキャンの操作距離は任意の長さでよいが、後に求める傾きPsφへの影響を考えると、できるだけ走査距離は長い方が望ましい。
U107：ユーザは、プレスキャンの折り返し点まで到達したと判断すると、印字ボタン５４を押下する（２回目）。ユーザが印字ボタン５４を押下することなく、開始点からの移動距離が閾値以上になった場合に傾き算出/補正回路３３が折り返し点まで到達したと判断してもよい。
S108：ＣＰＵ３１は、印字ボタン５４によるキー割込みを受付け、印字ＬＥＤ５２を消灯させることでユーザにプレスキャン動作が完了したことを通知する。また、ＣＰＵ３１は、ナビゲーションセンサＳ０，Ｓ１の位置情報（移動量）をリードするよう、ナビゲーションセンサＩ/Ｆ４１に通知する。
S1002：ナビゲーションセンサＳ０，Ｓ１は位置情報（移動量）の検知を開始し、位置情報（移動量）をナビゲーションセンサ３０内のメモリに格納する。
S109：ナビゲーションセンサＩ/Ｆ４１はナビゲーションセンサＳ０，Ｓ１と通信し、位置情報（移動量）をリードする。
S110：傾き算出／補正回路３３は、プレスキャンの開始点である仮の初期位置（０，０）と今回リードした移動量（ΔＸ´,ΔＹ´）を式（４）に適用し、開始点(初期位置)における傾きPsφを算出する。PsφはＤＲＡＭ２９などに記憶される。
【００９２】
<<画像形成動作時>>
U109：画像形成時、ユーザはフリーハンドでプレスキャンの開始点（初期位置）までハンドヘルドプリンタ２０を移動させ、印字ボタン５４を押下する（３回目）。プレスキャンの開始点と画像形成の開始位置は完全に同じでなくてもよい。しかしながら、プレスキャンの開始点と画像形成の開始位置の傾きは同定度であることが好ましい。
S110-2：傾き算出／補正回路３３はプレスキャンによって得られた傾きPsφに基づいて目標吐出位置を補正する。
S111：ＣＰＵ３１は印字ボタン５４によるキー割込みを受付け、画像形成中は印字ＬＥＤ５２を点灯させて画像形成中であることをユーザに通知する。また、ＣＰＵ３１はナビゲーションセンサＳ０，Ｓ１の位置情報（移動量）をリードするようナビゲーションセンサＩ/Ｆ４１に通知する。
S1003：ナビゲーションセンサＳ０、Ｓ１は位置情報（移動量）の検知を開始し、ナビゲーションセンサ３０内のメモリに記憶させる。ハンドヘルドプリンタ２０は移動していないので位置情報（移動量）はゼロである。
S112：ナビゲーションセンサＩ/Ｆ４１はナビゲーションセンサＳ０、Ｓ１と通信し、位置情報（移動量）をリードする。
(S113)：なお、目標吐出位置を初期位置の補正後に補正する場合、この段階で、傾き算出／補正回路３３は、プレスキャンで得られた傾きPsφを式（５）（６）に適用することで、リードした位置情報（ほぼゼロ）を補正して初期位置としてＤＲＡＭ２９などに記憶させる。そして、目標吐出位置を算出する。
S114、S115：その後、ＣＰＵ３１は印字/センサタイミング生成部４２に時間（ＩＪ記録ヘッド２４の駆動周期）の計測を開始させる。
S116：印字/センサタイミング生成部４２は設定された時間ごとにナビゲーションセンサ３０へのリードを繰り返す。ＣＰＵ３１は、割り込みを検知してＡＳＩＣ/ＦＰＧＡ４０からナビゲーションセンサ３０が検出する位置情報（移動量）をリードする。
S117：位置算出回路３２は前回、算出した位置（Ｘ0,Ｙ0）と、今回、リードした移動量（ΔＸ´，ΔＹ´）から現在の位置（Ｘ,Ｙ）を算出し、ＤＲＡＭ２９などに記憶させる。すなわち、式（３）により回転角ｄθを算出し、式（１）（２）により印刷媒体座標における位置（Ｘ,Ｙ）を算出する。ＣＰＵ３１は、算出した各ナビゲーションセンサＳ０，Ｓ１の現在の位置をＡＳＩＣ/ＦＰＧＡ４０に伝える。
S119：ＤＭＡＣ３７は、位置算出回路３２が算出した位置を元にＩＪ記録ヘッド（各ノズル）２４の周辺の画像データをＤＲＡＭ２９などからリードする。また、回転器３８は回転角θを用いて周辺画像を回転させる。
S120、S121：その後、ＩＪ記録ヘッド制御部４３は、各ノズル位置が目標吐出位置から許容誤差６２の範囲内かどうかを判定することで、吐出条件を満たすか否かを判定する。
S122：各ノズル位置が、目標吐出位置から許容誤差６２の範囲内に入ると吐出条件を満たすと判定して、ＩＪ記録ヘッド制御部４３はＩＪ記録ヘッド駆動回路２３へ目標吐出位置で吐出すべき画素を吐出するための制御信号を出力する。
【００９３】
上記のステップS114-S122を繰り返すことで、ハンドヘルドプリンタ２０は印刷媒体１２上に画像を形成していく。
S123：ＣＰＵ３１は全データを吐出したか否かを判定する。全データを吐出したか否かは、送出していない画像データがなくなることで検出できる。
S124：全データを吐出すると、ＣＰＵ３１は例えば印字ＬＥＤ５２を消灯してユーザに通知する。
U111：ユーザは、全データを吐出してなくても、十分と判断した際には、印字ボタン５４を押下することで画像形成を完了してよい。
【００９４】
<<電源OFF時>>
U112：最後に、ユーザはハンドヘルドプリンタの電源ボタン５３を押下する。ＣＰＵ３１は電源ボタン５３によるキー割込みを受付け、電源２２をＯＦＦする。
【００９５】
＜状態遷移＞
図１８は、プレスキャン状態を含む、ハンドヘルドプリンタ２０の状態遷移図の一例である。
（１）「電源ＯＦＦ」状態でユーザが電源ボタン５３を押下することで「通常待機」状態に移行する。
（２）「通常待機」状態の「待機中」状態で、画像データ出力器１１が画像データの転送を開始すると「データ転送中」状態に移行する。
（３）「通常待機」状態の「データ転送中」状態で、画像データの転送が完了すると「待機中」状態に移行する。一度「データ転送中」を経由することで次の「プレスキャン中」状態への遷移フラグが立つ。よって、「データ転送中」を経由せずに印字ボタン５４をユーザが押下しても、遷移フラグが立っていないため「待機中」状態から状態遷移しない。
（４）データ転送完了後、「待機中」状態で、ユーザが（ハンドヘルドプリンタ２０を初期位置に移動させ）印字ボタン５４を押下すると「プレスキャン中」状態に移行する。
（５）「プレスキャン中」状態で、ユーザはプレスキャンを実行し、プレスキャンの折返し点まで到達したら印字ボタン５４を押下することで「印字待機」状態に移行する。
（６）「印字待機」状態にてユーザが（画像形成開始の初期位置までフリーハンド走査で移動させ）印字ボタン５４を押下すると「印字中」状態に移行する。
（７）「印字中」状態にてユーザが印字ボタン５４を押下するか又は全ての画像データの吐出が完了した場合、「通常待機」状態に移行する。
（８）仮に「印字中」状態にて警告が発生した場合、「異常」状態の「警告」状態に移行する。
（９）「異常」状態の「警告」状態に移行するとＣＰＵ３１がユーザにログ表示等の手段で警告を通知することで「印字中」状態に移行して画像形成を続行する。
（１０）仮に「印字中」状態にてエラーが発生した場合、「異常」状態の「印字停止」状態に移行する。
（１１）「異常」状態の「印字停止」状態では、ユーザが電源ボタン５３を長押しすることで「電源ＯＦＦ」状態に移行する。
（１２）なお、「通常待機」状態、「プレスキャン中」状態、「印字待機」状態、及び、「印字中」状態からも、電源ボタン５３を長押しすることで「電源ＯＦＦ」状態に移行することができる。
【００９６】
以上説明したように、ハンドヘルドプリンタ２０は初期位置の傾きPsφを用いて目標吐出位置を補正することで、初期位置のヘッドが傾いていても印刷媒体１２に対して傾きの少ない画像が形成できる。
【実施例２】
【００９７】
実施例１では傾きPsφを用いて目標吐出位置を補正することで傾きが抑制された画像の形成を可能とした。本実施例では、インクとして吐出される前の画像データの傾きを補正する（画像補正する）ことで傾きが抑制された画像の形成を可能とするハンドヘルドプリンタ２０について説明する。
【００９８】
図１９は、本実施例におけるハンドヘルドプリンタ２０の傾き補正を説明する図の一例である。図１９（ａ）ではこれまで説明したように、ハンドヘルドプリンタ２０が初期位置において傾きPsφだけ傾いている。このため、実施例１のように傾きPsφを補正しないと形成される画像データも傾いてしまう。
【００９９】
これに対し、本実施例では図１９（ｂ）に示すように、画像形成される画像データを−Psφだけ回転させる。これにより、ハンドヘルドプリンタ２０が初期位置で傾いていても、形成される画像が傾くことを抑制できる。
【０１００】
なお、本実施例のハンドヘルドプリンタ２０の制御部２５の構成は実施例１の図５、６と同様でよい。また、本明細書において、同一の符号を付した構成要素については、同様の機能を果たすので、一度説明した構成要素の説明を省略あるいは相違点についてのみ説明する場合がある。
【０１０１】
本実施例の傾き算出／補正回路３３の傾き演算部３３ａは実施例１と同様にプレスキャンにより傾きPsφを求める。これに対し、補正演算部３３ｂはＤＲＡＭ２９に記憶された画像データの傾きを補正する。
【０１０２】
図２０を用いて説明する。図２０は画像データの元の配置と傾きPsφの補正を説明する図の一例である。図２０（ａ）はＤＲＡＭ２９に記憶された画像データの一例として「Ｒ」の文字を示す。画像データ出力器１１から送信された画像データは、ハンドヘルドプリンタ２０が受信して制御部２５がＤＲＡＭ２９上にビットマップ形式で展開する。なお、送信時の画像データが圧縮されている場合、必要に応じて制御部２５が伸長する。
【０１０３】
この画像データにプレスキャンにより得られた傾きPsφを適用することで、補正演算部３３ｂは画像データを傾かせる。
【０１０４】
原点（０，０）を中心に、任意の点（ｘ,ｙ）を傾きPsφだけ回転させた場合に点（x´,y´）に移動されるものとする。点（x',y'）は下記計算により求めることができる（回転のアフィン変換）。
ｘ´＝ｘ×cos(-Psφ)−ｙ×sin(-Psφ)  …（９）
ｙ´＝ｘ×sin(-Psφ)＋ｙ×cos(-Psφ)  …（１０）
図２０（ｂ）は傾きPsφだけ回転された「Ｒ」の文字を示す。図２０（ｂ）に示すように、各画素を回転させることで画像データが傾いて形成されることを抑制できる。なお、図２０（ｂ）ではＲという文字の一部だけが回転しているように見えるが、これは解像度と原点からの各画素の距離によるものである。
【０１０５】
このように、各画素を傾きPsφに応じて回転させることで、ハンドヘルドプリンタ２０が初期位置で傾いた状態で画像形成を開始しても形成される画像データが傾くことを抑制できる。
【０１０６】
なお、本実施例で画像データの傾きを補正するのは、補正演算部３３ｂであると説明したが、回転器３８がImage RAM３６の画像データを回転させてもよい。また、ＤＭＡＣ３７が補正してもよい。また、画像データ出力器１１が画像データを回転させてもよい。
【０１０７】
＜動作手順＞
図２１、２２は、本実施例のハンドヘルドプリンタ２０の動作手順を示すフローチャート図の一例である。図２１，２２では図１６、１７と異なる処理について主に説明する。
S110-2：ステップS109でユーザが印字ボタン５４を押下すると、補正演算部３３ｂは画像データの傾きを補正する。すなわち、目標吐出位置を補正しない。なお、画像データの傾きを補正するタイミングは画像形成の開始までの間であればよい。
【０１０８】
次のS111とS112の処理は、実施例１と同様であるが、本実施例では初期位置を補正するステップS113が実行される場合がない。以降の処理は実施例１と同様である。
【０１０９】
以上説明したように、本実施例のハンドヘルドプリンタ２０は、初期位置の傾きPsφを用いて画像データを補正することで、初期位置のヘッドが傾いていても印刷媒体１２に対して傾きの少ない画像が形成できる。
【０１１０】
＜その他の適用例＞
以上、本発明を実施するための最良の形態について実施例を用いて説明したが、本発明はこうした実施例に何等限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々の変形及び置換を加えることができる。
【０１１１】
例えば、上記したＳｏＣ５０、ＡＳＩＣ/ＦＰＧＡ４０の構成要素は、ＣＰＵ性能やＡＳＩＣ/ＦＰＧＡ４０の回路規模等により、どちらに含まれていてもよい。
【０１１２】
また、本実施形態では、三方向(例えばＸ/Ｙ/Ｒ軸、Ｒ：回転)の位置をそれぞれ検知し、平面上を自由に走査可能（フリーハンド走査）なハンドヘルドプリンタ２０を例にして説明した。しかし、一方向(例えばＸ軸方向)の位置を検知し、一方向にのみ走査させて画像形成するハンドヘルドプリンタ２０に対しても傾きPsφを検出できれば本実施形態の補正方法を適用できる。また、二方向(例えばＸ/Ｙ軸方向) の位置をそれぞれ検知し、二方向にのみ走査させて画像形成するハンドヘルドプリンタ２０に対しても傾きPsφを検出できれば本実施形態の補正方法を適用できる。
【０１１３】
また、本実施形態ではインクを吐出して画像を形成すると説明したが、可視光、紫外線、赤外線、レーザなどを照射して画像を形成してもよい。この場合、印刷媒体１２として例えば熱や光に反応するものが用いられる。また、透明な液体を吐出してもよい。この場合、特定の波長域の光が照射されると可視情報が得られる。
【０１１４】
また、本実施形態では、ユーザはフリーハンドでプレスキャンすると説明したが、定規などの直線状のものに沿わせてプレスキャンしてもよい。
【０１１５】
また、本実施形態では、ユーザがプレスキャンしたり、画像形成の際にフリーハンドで走査させると説明したが、ハンドヘルドプリンタがモータなどを動力にして印刷媒体上を自走してもよい。この場合、プレスキャンの際、水平方向に精度よく移動できる可能性があるため、画像の傾きをより精度よく補正できる。
【符号の説明】
【０１１６】
１１      画像データ出力器
１２      印刷媒体
２０      ハンドヘルドプリンタ
２３      ＩＪ記録ヘッド駆動回路
２４      ＩＪ記録ヘッド
２５      制御部
２９      ＤＲＡＭ
３０      ナビゲーションセンサ
３２      位置算出回路
３３      傾き算出/補正回路
３３ａ    傾き演算部
３３ｂ    補正演算部
【先行技術文献】
【特許文献】
【０１１７】
【特許文献１】特表２０１０−５２２６５０号公報
【図２】
2016215472.tif 000004
【図３】
2016215472.tif 000005
【図４】
2016215472.tif 000006
【図５】
2016215472.tif 000007
【図６】
2016215472.tif 000008
【図７】
2016215472.tif 000009
【図８】
2016215472.tif 000010
【図９】
2016215472.tif 000011
【図１０】
2016215472.tif 000012
【図１１】
2016215472.tif 000013
【図１２】
2016215472.tif 000014
【図１３】
2016215472.tif 000015
【図１４】
2016215472.tif 000016
【図１５】
2016215472.tif 000017
【図１６】
2016215472.tif 000018
【図１７】
2016215472.tif 000019
【図１８】
2016215472.tif 000020
【図１９】
2016215472.tif 000021
【図２０】
2016215472.tif 000022
【図２１】
2016215472.tif 000023
【図２２】
2016215472.tif 000024
【図１】
2016215472.tif 000025