(57)【要約】【課題】アンダーランが発生した場合でも、極力元の画像に近い品質で印刷出力させることができる画像処理装置及び画像処理方法を提供する。【解決手段】印刷動作が開始されると、処理制御部２２がデータバッファ部２０から１画素分の画像データを読み出し、変換部２４で印刷出力用のデータに変換して画像出力部１２に出力する。ここで、アンダーランエラーが発生すると、処理制御部２２はデータバッファ部２０からの画像データの読み出し処理を中断し、変換部２４に白の画像データを出力させる。処理制御部２２はアンダーランエラーの解消を監視し、アンダーランエラーが解消したときに、データバッファ部２０から画像データを読み出し、変換部２４に出力して画像出力部１２による印刷出力を再開する。【選択図】図１
2007283528.tif 000002
【特許請求の範囲】
【請求項１】
画像データを一時的に格納するバッファ手段と、
前記バッファ手段から画像データを受け取り、印刷出力用のデータに変換するデータ変換手段と、
前記バッファ手段に、前記データ変換手段へ供給可能な画像データが確保されているか否かを監視するバッファ監視手段と、
前記バッファ手段に、前記データ変換手段に供給可能な画像データが確保されていない場合に、画像データが供給されなかった画素数をカウントするカウント手段と、
前記カウント結果に基づいて決定される条件が満たされた場合に、前記データ変換手段への画像データの供給を再開する画像データ供給制御手段と、
を備えることを特徴とする画像処理装置。
【請求項２】
請求項１記載の画像処理装置において、カウント結果に基づいて決定される条件は、前記カウント結果に１を加えた画素数分の画像データが前記バッファ手段に確保されることであることを特徴とする画像処理装置。
【請求項３】
請求項１記載の画像処理装置において、前記バッファ手段から前記データ変換手段へは、一度にｎ画素分の画像データが供給され、前記カウント結果に基づいて決定される条件は、前記カウント結果に１を加えた数がｎより小さいことであることを特徴とする画像処理装置。
【請求項４】
請求項３記載の画像処理装置において、前記ｎは４であることを特徴とする画像処理装置。
【請求項５】
請求項１から請求項４のいずれか一項記載の画像処理装置において、前記画像データ供給制御手段は、前記バッファ手段に、前記データ変換手段に供給可能な画像データが確保されていない場合に、前記データ変換手段に元の画像データに代わる代替データを供給することを特徴とする画像処理装置。
【請求項６】
請求項５記載の画像処理装置において、前記代替データは、白または黒の画像データであることを特徴とする画像処理装置。
【請求項７】
画像データを一時的に格納するラインバッファ手段と、
前記ラインバッファ手段から画像データを受け取り、印刷出力用のデータに変換するデータ変換手段と、
前記ラインバッファ手段に、前記データ変換手段へ供給可能な画像データが確保されているか否かを監視するラインバッファ監視手段と、
前記ラインバッファ手段に現在出力中のラインの画像データが確保されていない場合に、当該画像データが確保されるまでの間、前回出力した画像データを前記データ変換手段に供給する画像データ読み出し制御手段と、
を備えることを特徴とする画像処理装置。
【請求項８】
画像データをバッファ手段に一時的に格納するステップと、
前記バッファ手段から画像データを受け取り、印刷出力用のデータに変換するステップと、
前記バッファ手段に、前記印刷出力用のデータに変換するための画像データが確保されているか否かを監視するステップと、
前記バッファ手段に、前記印刷出力用のデータに変換するための画像データが確保されていない場合に、画像データが供給されなかった画素数をカウントするステップと、
前記カウント結果に基づいて決定される条件が満たされた場合に、前記印刷出力用のデータ変換を再開するステップと、
を備えることを特徴とする画像処理方法。
【請求項９】
画像データをラインバッファ手段に一時的に格納するステップと、
前記ラインバッファ手段から画像データを受け取り、印刷出力用のデータに変換するステップと、
前記ラインバッファ手段に、現在出力中のラインの画像データが確保されているか否かを監視するステップと、
前記ラインバッファ手段に現在出力中のラインの画像データが確保されていない場合に、当該画像データが確保されるまでの間、前回出力した画像データを出力するステップと、
を備えることを特徴とする画像処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、バッファ等のメモリから画像データを読み出して印刷出力用のデータに変換する機能を有する画像処理装置及び画像処理方法に関する。
【背景技術】
【０００２】
プリンタ等の画像処理装置では、ホストコンピュータ等から入力された画像データを、一旦プリンタコントローラ上の画像記憶部（ＤＲＡＭ）にビットマップデータとして展開しておき、この画像記憶部から所定画素数分だけ画像データを読み出してバッファメモリに格納する。バッファメモリからは、例えば１画素分ずつ画像データを読み出し、印刷出力用のデータに変換してプリンタエンジンに転送し、画像データの印刷出力を行う。
【０００３】
この場合、画像記憶部から画像データを読み出す速度と、バッファメモリから画像データを読み出す速度とは、互いに相違するのが普通である。このため、バッファへの書き込みがプリンタエンジンへのデータ転送時期に間に合わず、ページを印刷している途中でバッファから読み出すデータが無くなって印刷が続けられなくなるエラー、すなわちアンダーランエラーが発生することがある。
【０００４】
そこで、例えば、特許文献１には、アンダーランエラーが発生したラインデータについて階調数を落としてデータ量を少なくし、この状態で再び画像データの転送を行って用紙等の記録媒体に画像を再出力させる技術が開示されている。
【特許文献１】特開平９−１９８２０３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかし、上上記従来に技術においては、階調数を落として画像を再出力させる場合でも、エラーの内容によっては再びアンダーランが発生し、画像品質が低下するという問題があった。
【０００６】
本発明は、上記従来の課題に鑑みなされたものであり、その目的は、アンダーランが発生した場合でも、極力元の画像に近い品質で印刷出力させることができる画像処理装置及び画像処理方法を提供することにある。
【課題を解決するための手段】
【０００７】
上記目的を達成するために、本発明は、画像処理装置であって、画像データを一時的に格納するバッファ手段と、前記バッファ手段から画像データを受け取り、印刷出力用のデータに変換するデータ変換手段と、前記バッファ手段に、前記データ変換手段へ供給可能な画像データが確保されているか否かを監視するバッファ監視手段と、前記バッファ手段に、前記データ変換手段に供給可能な画像データが確保されていない場合に、画像データが供給されなかった画素数をカウントするカウント手段と、前記カウント結果に基づいて決定される条件が満たされた場合に、前記データ変換手段への画像データの供給を再開する画像データ供給制御手段と、を備えることを特徴とする。
【０００８】
ここで、上記カウント結果に基づいて決定される条件は、前記カウント結果に１を加えた画素数分の画像データが前記バッファ手段に確保されることであることを特徴とする。
【０００９】
また、上記バッファ手段から前記データ変換手段へは、一度にｎ画素分の画像データが供給され、前記カウント結果に基づいて決定される条件は、前記カウント結果に１を加えた数がｎより小さいことであることであってもよい。上記ｎは４であるのが好適である。
【００１０】
また、上記画像データ供給制御手段は、前記バッファ手段に、前記データ変換手段に供給可能な画像データが確保されていない場合に、前記データ変換手段に元の画像データに代わる代替データを供給することを特徴とする。
【００１１】
また、上記代替データは、白または黒の画像データであることを特徴とする。
【００１２】
また、本発明は、画像データを一時的に格納するラインバッファ手段と、前記ラインバッファ手段から画像データを受け取り、印刷出力用のデータに変換するデータ変換手段と、前記ラインバッファ手段に、前記データ変換手段へ供給可能な画像データが確保されているか否かを監視するラインバッファ監視手段と、前記ラインバッファ手段に現在出力中のラインの画像データが確保されていない場合に、当該画像データが確保されるまでの間、前回出力した画像データを前記データ変換手段に供給する画像データ読み出し制御手段と、を備えることを特徴とする。
【００１３】
また、本発明は、画像処理方法であって、画像データをバッファ手段に一時的に格納するステップと、前記バッファ手段から画像データを受け取り、印刷出力用のデータに変換するステップと、前記バッファ手段に、前記印刷出力用のデータに変換するための画像データが確保されているか否かを監視するステップと、前記バッファ手段に、前記印刷出力用のデータに変換するための画像データが確保されていない場合に、画像データが供給されなかった画素数をカウントするステップと、前記カウント結果に基づいて決定される条件が満たされた場合に、前記印刷出力用のデータ変換を再開するステップと、を備えることを特徴とする。
【００１４】
また、本発明は、画像処理方法であって、画像データをラインバッファ手段に一時的に格納するステップと、前記ラインバッファ手段から画像データを受け取り、印刷出力用のデータに変換するステップと、前記ラインバッファ手段に、現在出力中のラインの画像データが確保されているか否かを監視するステップと、前記ラインバッファ手段に現在出力中のラインの画像データが確保されていない場合に、当該画像データが確保されるまでの間、前回出力した画像データを出力するステップと、を備えることを特徴とする。
【発明を実施するための最良の形態】
【００１５】
以下、本発明を実施するための最良の形態（以下、実施形態という）を、図面に従って説明する。
【００１６】
実施形態１．
図１には、本発明にかかる画像処理装置における実施形態１の構成例のブロック図が示される。図１において、画像処理装置はプリンタコントローラ１０と画像出力部１２とを含んで構成されている。プリンタコントローラ１０がホストコンピュータ１４から画像データを受け取ると、この画像データを印刷出力用のデータに変換して画像出力部１２に渡し、印刷出力が実行される。ここで、画像出力部１２は、プリンタエンジンを含んで構成されている。
【００１７】
上記プリンタコントローラ１０は、画像記憶部１６、書込制御部１８、データバッファ部２０、処理制御部２２及び変換部２４を含んで構成されている。
【００１８】
画像記憶部１６は、ＤＲＡＭにより構成され、ホストコンピュータ１４から受け取った画像データがビットマップデータとして展開される。
【００１９】
書込制御部１８は、上記画像記憶部１６にメモリ制御信号Ｃ１を出力して、所定画素数分の画像データを取得する。この場合の所定画素数は、データバッファ部２０の格納可能データ量を超えないように設定される。
【００２０】
データバッファ部２０は、例えばＦＩＦＯ形式の記憶素子であり、書込制御部１８により画像データが書き込まれる。書込制御部１８は、データバッファ部２０へ書込処理を実行するときに、書込信号Ｃ２をアクティブにする。また、データバッファ部２０から書込制御部１８へは、書込済のデータの個数（画素数）を表す書込個数信号Ｃ３を出力する。さらに、データバッファ部２０は、処理制御部２２に対して読み出し可能な画像データの量を表す読出可能個数信号Ｃ４も出力する。
【００２１】
処理制御部２２は、画像出力部１２から受け取ったＶＳＹＮＣ（垂直同期信号）とＨＳＹＮＣ（水平同期信号）に基づいて印刷タイミングを算出し、データバッファ部２０にデータ要求信号Ｃ５を出力して所定量、例えば１画素分または８ビットの画像データを受け取る。このデータ要求信号は、読み出す画像データの個数すなわち画素数も指定できる。また、処理制御部２２は、受け取った画像データを変換部２４に出力する。
【００２２】
なお、アンダーランエラーの発生確率を下げるため、データバッファ部２０への書込速度を読み出し速度より高くなるように、上記書込制御部１８と処理制御部２２とを構成しておく。
【００２３】
変換部２４は、処理制御部２２から受け取った画像データをパルス幅変調（ＰＷＭ）等により画像出力部１２が処理可能な印刷出力用のデータに変換し、画像出力部１２に出力する。
【００２４】
なお、上記書込制御部１８、データバッファ部２０、処理制御部２２及び変換部２４は、ＡＳＩＣ（特定用途向け集積回路）として形成してもよい。
【００２５】
図２には、本実施形態１にかかる画像処理装置の動作例のフローが示される。また、図３には、アンダーランエラーの発生から復帰までの動作のタイミングチャートが示される。なお、図２のフローでは、書込制御部１８が画像記憶部１６から所定画素数分の画像データを取得し、その画像データを、データバッファ部２０に、その格納可能データ量を超えないように供給することが前提となっている。
【００２６】
図２において、印刷が開始されると（Ｓ１０１）、エラー数すなわちデータバッファ部２０に格納された画像データの量が不足して変換部２４に画像データが供給されなかった画素の数の初期設定を０とする（Ｓ１０２）。この画像データが供給されなかった画素に対しては、変換部２４から画像出力部１２に代替えデータとして白の画像データが供給される。白にする理由は、エラー発生個所を目立たなくするためである。なお、この代替えデータは、エラー発生個所を目立たせるために、黒の画像データとしてもよい。
【００２７】
次に、処理制御部２２は、画像出力部１２から受け取った垂直同期信号と水平同期信号に基づいて印刷タイミングかどうか判断する（Ｓ１０３）。この印刷タイミングは、処理制御部２２が垂直同期信号を受け取った後、水平同期信号と受け取ったタイミングである。図３においては、水平同期信号がＨからＬに遷移した時点である。
【００２８】
Ｓ１０３において、印刷タイミングでないと判断した場合には、処理制御部２２が変換部２４に指示して白の画像データを出力させる（Ｓ１０４）。また、このとき処理制御部２２は、データバッファ部２０に対してデータ要求信号Ｃ５も出力しない。その後、Ｓ１０３からのステップを繰り返す。
【００２９】
一方、Ｓ１０３において、印刷タイミングであると判断した場合には、処理制御部２２がデータバッファ部２０から受け取った読出可能個数信号Ｃ４に基づき、データバッファ部２０から読出可能な画像データの個数（画素数）が０より大きいか否かを判断する（Ｓ１０５）。この場合の処理制御部２２が、本発明のバッファ監視手段として機能する。ここで、読出可能な画像データの個数が０より大きければ、アンダーランエラーは発生しないので、処理制御部２２がデータバッファ部２０から所定個数例えば１画素分の画像データを読み出し（Ｓ１０６）、この画像データを変換部２４が印刷出力用のデータに変換して画像出力部１２に出力する（Ｓ１０７）。その後、Ｓ１０３からのステップを繰り返す。
【００３０】
図３においては、印刷タイミングとなった時点でデータバッファ部２０から読み出し可能な画像データの個数（読出可能個数信号の値）が５であるので、処理制御部２２からデータ要求信号Ｃ５が出力され（Ｃ５＝１となる）、１画素分ずつ画像データが読み出される。図３の例では、読出画像データとして順次Ｄ１からＤ５までの画素の画像データが読み出され、変換部２４に出力される（変換部への出力画像データ）。この出力画像データは、変換部２４を介して画像出力部１２に出力され、印刷出力される。
【００３１】
この印刷出力中に、何らかの原因により書込制御部１８からデータバッファ部２０に画像データが書き込まれないと、読出可能個数信号の値は１ずつ減少して行き、例えばＤ５の画素の画像データが読み出されたときに読出可能個数信号の値が０となる。この結果、Ｓ１０５で読出可能な画像データの個数が０以下と判定される。この場合には、アンダーランエラーが発生しているので、処理制御部２２によるデータバッファ部２０からの画像データの読み出し処理を中断する（Ｓ１０８）。このとき、処理制御部２２は変換部２４に指示して白の画像データを出力させる（Ｓ１０９）。
【００３２】
また、処理制御部２２は、上記エラー数を１インクリメントし（Ｓ１１０）、読出可能な画像データの個数が０より大きいか否かを判断する（Ｓ１１１）。読出可能な画像データの個数が０以下の場合はＳ１０８からのステップを繰り返す。これにより、読出可能な画像データの個数が０以下である間は、１クロック信号毎に上記エラー数が１ずつ増えて行く。この場合の処理制御部２２が、本発明のカウント手段に相当する。
【００３３】
一方、Ｓ１１１において、書込制御部１８がデータバッファ部２０に画像データを書き込み、読出可能な画像データの個数が０より大きくなると、処理制御部２２は、読出可能な画像データの個数が上記エラー数に１加えた値より大きくなっているか否かを確認する（Ｓ１１２）。なお、エラー数に１を加えるのは、アンダーランエラーから復帰するためには既にエラーとなった画素の次の画素に画像データが供給される必要があるからである。読出可能な画像データの個数がエラー数に１加えた値より大きくなっていない場合には、読出可能な個数だけ画像データを読み出す。読み出した画像データは、対応する画素の印刷すべきタイミングが既に過ぎているので、廃棄する（Ｓ１１３）。なお、この場合の画像データの廃棄は、例えば処理制御部２２が画像データをデータバッファ部２０から読み出す際に、廃棄する画像データの個数に１加えた数だけ、ＦＩＦＯ形式のデータバッファ部２０における画像データのアドレスを先に進めることにより実現してもよい。データバッファ部２０における画像データのアドレスを操作する場合には、データバッファ部２０から画像データを実際に読み出す処理が不要となる。このアドレスの指定は、データ要求信号Ｃ５により行う。
【００３４】
また、エラー数の値を、Ｓ１１２で演算した値から上記Ｓ１１３で読み出した値を減算した値とする（Ｓ１１４）。
【００３５】
図３においては、Ｄ５の画素の画像データが読み出された後、読出可能個数信号が０となっているので、処理制御部２２がアンダーランエラー検出信号を出力する。このアンダーランエラー検出信号は、画像処理装置を制御するＣＰＵ（中央処理装置）に入力され、ＣＰＵにおいて、アンダーランエラーの発生標示処理等が実行される。
【００３６】
また、同時にエラー数の値が１ずつインクリメントされ、４まで増加している。その後、図３では読出可能個数信号の値が４となるが、エラー数に１加えた値（４＋１＝５）より小さいので、この画像データ（Ｄ６からＤ９）が全てデータバッファ部２０から読み出されて廃棄され、Ｓ１１４で演算したエラー数が１（４＋１−４）となる。なお、このときには、処理制御部２２が変換部２４に指示して白の画像データを出力させている。
【００３７】
次に、Ｓ１１２において、読出可能な画像データの個数が上記エラー数に１加えた値より大きくなった場合には、既にアンダーランエラーとなった画素の次の画素からの印刷が可能となる。従って、処理制御部２２は、データバッファ部２０に対してエラー数に１加えた値の個数を指定したデータ要求信号を出力して、当該個数の画像データを読み出す（Ｓ１１５）。処理制御部２２は、読み出した画像データを廃棄した後、次の順番の画像データを変換部２４に出力して画像出力部１２による印刷出力が再開される。また、処理制御部２２は、エラー数の値を０とし（Ｓ１１６）、Ｓ１０３からのステップを繰り返す。この場合の処理制御部２２が、本発明の画像データ供給制御手段に相当する。
【００３８】
図３においては、書込制御部１８による書込処理により読出可能個数信号の値が７まで増加し、エラー数に１加えた値（１＋１＝２）を超えているので、処理制御部２２がデータバッファ部２０から２個の画像データ（Ｄ１０、Ｄ１１）を読み出して廃棄し、次の画像データＤ１２からの印刷が再開される。なお、読出可能個数信号の値は、書込制御部１８による書込処理と処理制御部２２による読み出し処理との差分として決まる。
【００３９】
また、図３においては、画像データＤ１０、Ｄ１１の廃棄処理が実行されて時点で、処理制御部２２がアンダーランエラー復帰検出信号をＣＰＵに対して出力する。これにより、ＣＰＵは、アンダーランエラーからの復帰を表示する処理等を行う。
【００４０】
図４には、上記図２及び図３で示された印刷動作により印刷された１行分の印刷結果が示される。図４において、Ｄ１からＤ５まで正常に印刷された後、６個分の画素が白画素として出力され、Ｄ１２画素から印刷が再開されている。
【００４１】
以上の構成により、１画素ずつ印刷の可否（アンダーランエラーの有無）を監視し、アンダーランエラーが解消した場合に直ちに代替データから本来印刷すべき画像データによる印刷に復帰するので、極力元の画像に近い品質で印刷出力させることができる。
【００４２】
実施形態２．
本実施形態２にかかる画像処理装置の構成も図１と同様になる。ただし、本実施形態２では、データバッファ部２０に４画素分（３２ビット）の画像データを格納し、書込制御部１８から４画素分ずつ画像データが書き込まれる構成としている点が異なっている。このため、データバッファ部２０から処理制御部２２に出力する読出可能個数信号Ｃ４の代わりに、４画素分の画像データが読み出し可能であることを示す読出可能信号とする。また、データバッファ部２０から書込制御部１８へ書込個数信号Ｃ３も、書込済のデータの個数を表す情報を含む必要がなくなり、書込が可能であることを示す書込可能信号とする。さらに、処理制御部２２からデータバッファ部２０に出力するデータ要求信号Ｃ５にも読み出す画像データの個数を表す情報を含む必要がなくなる。これにより、データバッファ部２０の読み出し可能、及び書込可能なデータの個数を管理する必要がなくなるので、データバッファ部２０の構成を簡略化することができる。
【００４３】
図５、図６には、本実施形態２にかかる画像処理装置の動作例のフローが示される。また、図７には、アンダーランエラーの発生から復帰までの動作のタイミングチャートが示される。
【００４４】
図５及び図６において、印刷が開始されると（Ｓ２０１）、エラー数すなわちデータバッファ部２０に格納された画像データの量が不足して変換部２４に画像データが供給されなかった画素の数の初期設定を０とする。また、格納数すなわち処理制御部２２に一時的に格納されている画像データの画素単位の数の初期設定も０とする（Ｓ２０２）。
【００４５】
次に、処理制御部２２は、画像出力部１２から受け取った垂直同期信号と水平同期信号に基づいて印刷タイミングかどうか判断する（Ｓ２０３）。図７においては、水平同期信号がＨからＬに遷移した時点である。
【００４６】
Ｓ２０３において、印刷タイミングでないと判断した場合には、処理制御部２２が変換部２４に指示して白の画像データを出力させる（Ｓ２０４）。また、このとき処理制御部２２は、データバッファ部２０に対してデータ要求信号Ｃ５も出力しない。その後、Ｓ２０３からのステップを繰り返す。
【００４７】
一方、Ｓ２０３において、印刷タイミングであると判断した場合には、処理制御部２２が自分で格納している画像データの格納数が０か否かを確認し（Ｓ２０５）、格納数が０でない場合には、格納している画像データを変換部２４に出力する（Ｓ２０６）。この画像データを変換部２４が印刷出力用のデータに変換して画像出力部１２に出力する（Ｓ２０７）。その後、処理制御部２２が格納数をデクリメントし（Ｓ２０８）、Ｓ２０３からのステップを繰り返す。
【００４８】
また、Ｓ２０５において、格納数が０であった場合には、処理制御部２２が読出可能信号に基づきデータバッファ部２０から画像データの読み出しが可能か否かを確認する（Ｓ２０９）。Ｓ２０５からＳ２０９への遷移は、アンダーランエラーが発生しなければ、４クロック信号に１回である。データバッファ部２０から画像データの読み出しが可能である場合には、処理制御部２２がデータバッファ部２０にデータ要求信号Ｃ５を出力し、４画素分の画像データを読み出す（Ｓ２１０）。処理制御部２２は、データバッファ部２０から受け取った４画素分の画像データを１画素ずつ変換部２４に出力する（Ｓ２１１）。変換部２４では、受け取った画像データを印刷出力用のデータに変換して画像出力部１２に出力し、画像出力部１２により印刷される。また、処理制御部２２は、データバッファ部２０から受け取った４画素分の画像データのうち１画素分を出力したので格納数を３とし（Ｓ２１２）、Ｓ２０３からのステップを繰り返す。
【００４９】
図７においては、印刷タイミングとなった時点で格納数が０であるので、処理制御部２２がデータバッファ部２０にデータ要求信号Ｃ５を出力し、４画素分の画像データＤ１を受け取って、１画素分ずつ変換部２４に出力する。この結果、図７の例では、格納数が３→２→１→０と変更され、変換部２４へはＤ１ａ、Ｄ１ｂ、Ｄ１ｃ、Ｄ１ｄと画像データが１画素分ずつ出力されて画像出力部１２により印刷される。
【００５０】
この印刷出力中に、何らかの原因により書込制御部１８からデータバッファ部２０に画像データが書き込まれないと、データバッファ部２０からの画像データの読み出しができなくなり、読出可能信号がＨからＬに遷移する。この結果、Ｓ２０９でデータバッファ部２０からの読み出しが不能と判定される。この場合には、アンダーランエラーが発生しているので、処理制御部２２によるデータバッファ部２０からの画像データの読み出し処理を中断する（Ｓ２１３）。このとき、処理制御部２２は変換部２４に指示して黒の画像データを出力させる（Ｓ２１４）。なお、このときに白の画像データを出力させるように構成してもよい。
【００５１】
また、処理制御部２２は、上記エラー数を１インクリメントし（Ｓ２１５）、データバッファ部２０から画像データの読み出しが可能か否かを確認し（Ｓ２１６）、読み出しが不能な間はＳ２１３からのステップを繰り返す。これにより、データバッファ部２０から画像データの読み出しが不能な間は、１クロック信号毎に上記エラー数が１ずつ増えて行く。
【００５２】
一方、Ｓ２１６において、画像データの読み出しが可能となった場合には、処理制御部２２が、Ｓ２１５で演算したエラー数に１を加えた値が４より小さい否かを確認する（Ｓ２１７）。エラー数に１を加えるのは、アンダーランエラーから復帰するためには既にエラーとなった画素の次の画素に画像データが供給される必要があるからである。エラー数に１を加えてた値が４以上の場合には、処理制御部２２がデータバッファ部２０から４画素分の画像データを読み出してもアンダーランエラーを解消できないので、データバッファ部２０から４画素分の画像データを読み出した上で（Ｓ２１８）、エラー数の値を、上記エラー数に１を加えてた値から４減算した値とする（Ｓ２１９）。なお、読み出した画像データは、対応する画素の印刷すべきタイミングが既に過ぎているので、廃棄する。なお、画像データの廃棄を、図２のＳ１１３で説明したように、データバッファ部２０におけるアドレス操作（アドレスを次に読み出す４画素分の画像データに進ませる）により実現する場合には、データバッファ部２０から画像データを実際に読み出す処理が不要となる。
【００５３】
図７においては、Ｄ１ｄの画像データが変換部２４に出力されたときに、読出可能信号がＬとなっているので、処理制御部２２がアンダーランエラー検出信号を出力する。また、同時にエラー数の値が１ずつインクリメントされ、５まで増加している。その後図７では、読出可能信号がＬからＨに遷移するが、このときのエラー数は５であり、これに１を加えた値は６となるので４より大きくなる。このため、まず、４画素分の画像データＤ２を廃棄し、エラー数を２（５＋１−４）とする。なお、このときには、処理制御部２２が変換部２４に指示して黒の画像データを出力させている。これによりアンダーランエラーの発生をユーザが認識しやすくすることができる。
【００５４】
次に、Ｓ２１７において、エラー数に１を加えた値が４より小さい場合には、処理制御部２２がデータバッファ部２０にデータ要求信号を出力し、４画素分の画像データを読み出す（Ｓ２２０）。その後、処理制御部２２は、エラー数を０とし、格納数を（４−１−エラー数）とする（Ｓ２２１）。処理制御部２２は、この格納数に相当する画素数だけＳ２２０で読み出した画像データを変換部２４に出力して画像出力部１２に印刷させる。
【００５５】
図７においては、エラー数を２とした後、そのエラー数の２に１を加えると３となり、４より小さくなるので、処理制御部２２がデータバッファ部２０から４画素分の画像データＤ３を読み出す。このＤ３の画素の内、３個（エラー数＋１＝２＋１）は廃棄し、格納数を１（４−１＋２）として、これに相当する画素であるＤ３ｄの画像データを変換部２４に出力する。
【００５６】
また、図７においては、Ｄ３ｄの画像データが出力される際に、処理制御部２２がアンダーランエラー復帰検出信号をＣＰＵに対して出力する。
【００５７】
図８には、上記図５、図６及び図７で示された印刷動作により印刷された１行分の印刷結果が示される。図８において、Ｄ１ａ、Ｄ１ｂ、Ｄ１ｃ、Ｄ１ｄまで正常に印刷された後、７個分の画素が黒画素として出力され、Ｄ３ｄ画素から印刷が再開されている。
【００５８】
以上の構成により、１画素ずつ印刷の可否（アンダーランエラーの有無）を監視し、アンダーランエラーが解消した場合に直ちに代替データから本来印刷すべき画像データによる印刷に復帰するので、極力元の画像に近い品質で印刷出力させることができる。
【００５９】
また、処理制御部２２がデータバッファ部２０から４画素分ずつ画像データを読み出すので、読み出し処理を簡略化することができる。
【００６０】
実施形態３．
本実施形態３においては、図１に示されるデータバッファ部２０をラインバッファで構成している。
【００６１】
図９には、上記ラインバッファの構成例のブロック図が示される。図９において、ラインバッファ２６は、書込側制御回路２８、読み出し側制御回路３０及び２ポートＲＡＭ３２を含んで構成されている。
【００６２】
書込側制御回路２８は、２ポートＲＡＭ３２への書き込み（ライト）済み画像データの個数をカウントし、読み出し（リード）済みの画像データの個数の入力を受けてラインバッファ２６の現在の画像データの格納数を算出し、出力する。また、書込制御部１８からの書込画像データ（ライトデータ）と書込信号（ライトイネーブル）を２ポートＲＡＭ３２に転送する機能を持つ。
【００６３】
読み出し側制御回路３０は、読み出し済みの画像データの個数をカウントし、書き込み済みの画像データの個数の入力を受けて現在の画像データの格納数を算出する。また、算出した格納数を利用して、処理制御部２２からのデータ要求信号が正常に処理されたかどうか出力する。正常に処理されなかった場合には、エラー信号を出力する。また、画像データの変換部２４への出力は、上記格納数にかかわらず行われる。例えば、現在印刷中のラインの画像データが不足すると、１行前のラインの画像データを出力する。
【００６４】
２ポートＲＡＭ３２は、書込側、読み出し側でそれぞれ独立に動作可能な構成となっている。
【００６５】
以上に述べたラインバッファ２６においては、書込側制御回路２８が、図１に示される書込制御部１８から受け取った画像データ（ライトデータ）を２ポートＲＡＭ３２に上書き方式で書き込み、読み出し側制御回路３０が２ポートＲＡＭ３２に書き込まれた画像データを読み出して図１に示される変換部２４に出力する。本例のラインバッファ２６では、現在の格納数として（書き込み済みの画像データの個数−読み出し済みの画像データの個数）の値を管理している。この際、書込制御部１８の書き込み速度と、読み出し側制御回路３０の読み出し速度とが同じであれば、上記格納数が一定になる。通常は、書込制御部１８の書き込み速度を読み出し側制御回路３０の読み出し速度より大きくしておき、上記格納数に基づいて２ポートＲＡＭ３２の記憶データ量がオーバーフローしないように書込側制御回路２８が適宜なタイミングで書き込み処理を中断する構成となっている。なお、この格納数が０以下となると、読み出し側制御回路３０が処理制御部２２に対して読み出しエラー信号を出力する。この場合の読み出し側制御回路３０が、本発明のラインバッファ監視手段に相当する。
【００６６】
また、何らかの理由で書込側制御回路２８の書き込み処理が停止し、または書き込み速度が読み出し側制御回路３０の読み出し速度より低くなった場合には、２ポートＲＡＭ３２に上書きされずに残っていた画像データを読み出し側制御回路３０が読み出すことになる。この場合の読み出し側制御回路３０が、本発明の画像データ読み出し制御手段に相当する。
【００６７】
図１０には、本実施形態３において、アンダーランエラーの発生から復帰までの動作のタイミングチャートが示される。図１０において、水平同期信号がＨからＬに遷移した時点で印刷タイミングとなり、処理制御部２２がデータ要求信号をラインバッファ２６に出力する。なお、図１０の例では、このデータ要求信号が、以後出力されたままの状態となっているとして説明する。
【００６８】
印刷が開始されたときの画像データの格納数は６となっており、この状態から読み出し側制御回路３０が２ポートＲＡＭ３２より画像データを読み出し、処理制御部２２に出力して画像データの印刷が実行される。この際の読み出し画像データ及び変換部への出力画像データは、Ｂ１、Ｂ２、Ｂ３…となっている。
【００６９】
図１０では、上記読み出し側制御回路３０による読み出し処理中に、書込側制御回路２８の書き込み処理が停止している例が示されている。このため、上記格納数は１個ずつ減って行き、０となったときに読み出しエラー信号が読み出し側制御回路３０から出力される。この時点でアンダーランエラーが発生したことになる。
【００７０】
アンダーランエラーが発生した場合、本実施形態３では、図１０に示されるように、１行前の画像データＡ７、Ａ８…Ａ１４の画像データが２ポートＲＡＭ３２より読み出され、印刷される。これは、書込側制御回路２８による書き込み処理が停止されている間は、過去に書き込まれた画像データが上書きされずに２ポートＲＡＭ３２に残っているためである。
【００７１】
次に、書込側制御回路２８による書き込み処理が再開されると、１行前の画像データが順次上書きされる。図１０では、書き込み処理が行われていなかったＡ７の画素から書き込んで行き（Ｂ７、Ｂ８…）、Ｂ１５まで書き込んだときに読み出し側制御回路３０による読み出し処理に追いつく。これにより、Ｂ１５の画素から現在印刷中の行の画像データ（Ｂの列）が処理制御部２２に出力され、印刷される。このとき、処理制御部２２が読み出しエラー信号（アンダーランエラー検出信号）を停止し、アンダーランエラー復帰検出信号を出力する。
【００７２】
図１１には、本実施形態３において印刷された１行分の印刷結果が示される。図１１において、Ｂ１からＢ６まで正常に印刷された後、Ａ７からＡ１４まで前の行の画像データが印刷され、Ｂ１５から元の行の印刷が再開されている。
【００７３】
以上の構成により、アンダーランエラーが発生したときには前の行の画素が印刷され、アンダーランエラーが解消した場合に直ちに元の行の画像データによる印刷に復帰するので、極力元の画像に近い品質で印刷出力させることができる。
【００７４】
また、データバッファ部２０をラインバッファで構成しているので、アンダーランエラーが発生した際にも、前の行の画像データを成り行きで出力するだけなので、データバッファ部２０の制御を簡略化することができる。
【図面の簡単な説明】
【００７５】
【図１】本発明にかかる画像処理装置における実施形態１の構成例のブロック図である。
【図２】実施形態１にかかる画像処理装置の動作例のフロー図である。
【図３】アンダーランエラーの発生から復帰までの動作のタイミングチャートを示す図である。
【図４】実施形態１の印刷動作により印刷された１行分の印刷結果を示す図である。
【図５】実施形態２にかかる画像処理装置の動作例のフロー図である。
【図６】実施形態２にかかる画像処理装置の動作例のフロー図である。
【図７】アンダーランエラーの発生から復帰までの動作のタイミングチャートを示す図である。
【図８】実施形態２の印刷動作により印刷された１行分の印刷結果を示す図である。
【図９】実施形態３にかかるラインバッファの構成例のブロック図である。
【図１０】アンダーランエラーの発生から復帰までの動作のタイミングチャートを示す図である。
【図１１】実施形態３の印刷動作により印刷された１行分の印刷結果を示す図である。
【符号の説明】
【００７６】
１０  プリンタコントローラ、１２  画像出力部、１４  ホストコンピュータ、１６  画像記憶部、１８  書込制御部、２０  データバッファ部、２２  処理制御部、２４  変換部、２６  ラインバッファ、２８  書込側制御回路、３０  読み出し側制御回路、３２  ２ポートＲＡＭ。
【図１】
2007283528.tif 000003
【図２】
2007283528.tif 000004
【図３】
2007283528.tif 000005
【図４】
2007283528.tif 000006
【図５】
2007283528.tif 000007
【図６】
2007283528.tif 000008
【図７】
2007283528.tif 000009
【図８】
2007283528.tif 000010
【図９】
2007283528.tif 000011
【図１０】
2007283528.tif 000012
【図１１】
2007283528.tif 000013