以下、図面に基づいて各実施形態を説明する。
[第1の実施形態]
<画像形成システムの構成例>
図1は、画像形成システムの構成の一例を示す図である。図1に示す画像形成システム10は、Personal Computer(PC)11と画像形成装置の一例としての印刷装置(プリンタ)12とを有する。PC11と印刷装置12とは、例えばLocal Area Network(LAN)やインターネット等に代表される通信ネットワーク13によりデータの送受信が可能な状態で接続されている。
PC11は、通信ネットワーク13を介して、印刷装置12に印刷対象データ(出力対象データ)を出力したり、印刷指示を出力する。印刷対象データとは、例えば文字や記号、表、写真等の画像データであるが、これに限定されるものではない。
また、PC11は、印刷装置12に対応したプリンタドライバ等がインストールされていてもよい。PC11は、インストールされたプリンタドライバにより用紙サイズやカラー種別(カラー又は白黒)、両面印刷の有無、倍率(拡大又は縮小)等の印刷パラメータ等を設定し、設定した印刷パラメータを、印刷装置12に出力してもよい。
PC11は、例えばユーザ毎に設けてもよい。その場合、印刷装置12は、複数のPC11から通信ネットワーク13を介して、印刷対象データや印刷指示、印刷パラメータ等を受けることができる。
印刷装置12は、PC11からの印刷指示に応じて動作し、印刷パラメータに基づいて印刷対象データを用紙等の印刷媒体に印刷する。図1に示す印刷装置12は、画像処理部21と、プリンタエンジン22とを有する。画像処理部21は、PC11等から通信ネットワーク13を介して入力された印刷対象データや印刷パラメータをメモリ34等に記憶する。また、画像処理部21は、メモリ34等に記憶した印刷対象データに対して、印刷パラメータに基づき所定の画像変換等を行い、ビットマップ画像(ラスターイメージ)を生成する。更に、画像処理部21は、生成したビットマップ画像を印刷用の画素データ(ライン印刷を行うための連続した画素データ列)としてプリンタエンジン22に出力する。
プリンタエンジン22は、画像処理部21から入力した画素データに対して画像形成に係る動作を行い、用紙等の印刷媒体に印刷する。例えば、プリンタエンジン22は、給紙、露光、現像、転写、定着等の物理的な印刷工程を実行するが、これに限定されるものではない。また、プリンタエンジン22は、例えば印刷工程を実行することで用紙を搬送する一方、ポリゴンミラー等を用いて所定のスキャン周期で感光ドラム上をスキャンするレーザ等のビーム光を検出し、検出したタイミングをビデオコントローラ33に出力する。ビーム光の検出信号は感光ドラム上をスキャンするスキャン周期を表しており、例えば水平同期信号に対応する。また、プリンタエンジン22は、水平同期信号の出力に対応するタイミングでビデオコントローラ33から得られる画素データを、所定の条件(例えば、カラー、白黒等)で用紙に印字する。
プリンタエンジン22は、例えばレーザプリンタのプリンタエンジンを用いることができるが、これに限定されるものではなく、インクジェットプリンタのプリンタエンジンを用いてもよい。
図1に示す画像処理部21は、外部I/Fコネクタ31と、処理制御部の一例としてのMicro Processing Unit(MPU;超小型演算装置)32と、ビデオコントローラ33と、記憶部の一例としてのメモリ34とを有する。また、MPU32は、通信制御部の一例としての外部I/Fコントローラ41と、Central Processing Unit(CPU)の一例としてのプロセッサコア42とを有する。更に、MPU32は、メモリ制御部の一例としてのメモリコントローラ43と、バス制御部の一例としてのバスコントローラ44とを有する。
外部I/Fコネクタ31は、通信ネットワーク13を介して接続されるPC11や他の外部装置とのデータ(印刷対象データ等)の送受信を行う。外部I/Fコネクタ31としては、例えばLANコネクタ等が挙げられるが、これに限定されるものではなく、例えばUniversal Serial Bus(USB)コネクタ等でもよい。
MPU32は、外部I/Fコネクタ31から入力された印刷対象データをメモリ34等に記憶して管理する。また、MPU32は、外部I/Fコネクタ31から入力された印刷対象データやメモリ34に記憶された印刷対象データを、プリンタエンジン22に出力するための制御を行う。
例えば、外部I/Fコントローラ41は、外部I/Fコネクタ31を介して外部装置等とのデータ(印刷対象データ等)の送受信等を制御する。プロセッサコア42は、印刷装置12の各構成全体の動作を制御する。また、プロセッサコア42は、起動や終了、異常処理等に対する制御を行う。メモリコントローラ43は、メモリ34に対するデータ(印刷対象データ等)の書き込みや、メモリ34からのデータの読み出しを制御する。
バスコントローラ44は、MPU32の内部のバス制御を行う。バスコントローラ44は、例えば外部データをメモリ34へ出力したり、メモリ34から読み出したデータを外部装置に出力したりデータ入出力制御等を行う。
ビデオコントローラ33は、例えば入力された印刷対象データをビットマップ画像(ラスターイメージ)等に変換し、変換したビットマップ画像を印刷用の画素データとして所定のタイミングでプリンタエンジン22に出力する等の制御を行う。例えば、ビデオコントローラ33は、プリンタエンジン22からビーム光の検出信号を取得し、その取得タイミングに対応させて印刷用の画素データを出力する。
このとき、ビデオコントローラ33は、入力される印刷対象データの各画素に対して、必要に応じて主走査方向及び副走査方向に対する画像修正を行ってもよい。なお、印刷対象データの各画素に対する画像修正は、主走査方向だけでもよく、副走査方向だけでもよく、また両方向でもよい。また、ビデオコントローラ33は、主走査方向及び副走査方向に対する画像修正として、dpi変換(例えば、300dpi→1200dpi)等を行ってもよい。これにより、より滑らかなジャギー減少効果を生み出すことができる。
メモリ34は、入力した印刷対象データを一時的に記憶したり、プリンタエンジン22に対して出力するためのビットマップ画像を記憶する。また、メモリ34は、後述の画像変換部54で画像修正時に使用する複数のマトリックス出力パターンを記憶してもよい。メモリ34は、Read Only Memory(ROM)やRandom Access Memory(RAM)等であるが、これに限定されるものではない。
なお、第1の実施形態における画像形成装置は、印刷装置12に限定されるものではなく、例えば複写機、イメージスキャナ、ファクシミリ等でもよく、これらを複合したMFP(Multi−Function Peripheral;多機能周辺装置)等でもよい。
第1の実施形態では、主走査方向だけでなく、副走査方向に対しても同等の画像修正を行うことで、より滑らかなジャギー減少効果を生み出すことができる。また、第1の実施形態におけるビデオコントローラ33は、これらの画像修正をハードウェア回路的技術を用いてライン単位で処理するため、必要なメモリ容量が数ライン分で済むとともに、画像修正の際に複雑な計算を行うこともない。このため、回路規模を小さくすることでき、処理にかかる時間も大幅に短縮することができる。以下、ビデオコントローラ33の詳細について説明する。
<ビデオコントローラ33の機能構成例>
ビデオコントローラ33の機能構成例について、図2を用いて説明する。図2は、ビデオコントローラの機能構成の一例を示す図である。図2に示すビデオコントローラ33は、ドットカウンタ部51と、記憶部の一例としてのバッファ部52と、生成部の一例としての行列変換部53と、画像変換部54と、出力部の一例としてのラスタライズ部55とを有する。なお、図2に示す各部は、基準クロック信号(clk)により同期処理を行うことができる。
ドットカウンタ部51は、プリンタエンジン22が印刷動作を開始し、用紙が搬送されることでプリンタエンジン22より出力された、水平同期信号(/Hsync)を受信し、受信した水平同期信号を、例えば2bitバイナリカウンタ等のカウンタでカウントする。また、ドットカウンタ部51は、そのカウント情報を出力タイミングとしてバッファ部52に出力する。これにより、バッファ部52は、出力タイミングに応じて、メモリ34に記憶された印刷対象データのラインデータをバッファリングすることができる。
また、ドットカウンタ部51は、水平同期信号をライン情報(Line_sel)として画像変換部54に出力する。これにより、画像変換部54は、ライン情報(Line_sel)に応じたタイミングで、後述する4×4ドットの二次元データの各ラインを補間データ(VOUT)としてラスタライズ部55に出力することができる。
バッファ部52は、メモリ34に記憶された印刷対象データを所定のライン単位で(つまり、ラインデータとして)バッファリングする記憶部である。バッファ部52は、バッファリングしたラインデータを行列変換部53に出力する。
バッファ部52は、所定数(例えば、7ライン)分のラインバッファを持ち、各ラインバッファを同期させて1ドット(dot)ずつ行列変換部53に出力する。このため、行列変換部53に対しては、副走査方向の7ドット分のデータ(7ドットの副走査データ)が出力される。
行列変換部53は、印刷対象データの各画素から二次元マトリックス(行列データ)を生成する。例えば、行列変換部53は、印刷対象データから所定の画像ピクセル領域を取得し、その領域に対応する二次元マトリックス(行列データ)を生成する。例えば、行列変換部53は、バッファ部52から得られる7ドットの副走査データを所定クロック(例えば、9クロック)分シフト(例えば、9クロック分)させる。これにより、行列変換部53は、縦×横が所定数(例えば、縦7×横9)の行列データ(所定の画像ピクセル領域の二次元マトリックス)を生成する。
図3は、行列変換部の一例を示す図である。図3に示す行列変換部53は、例えばフリップフロップ回路が縦7×横9に配列された例を示している。フリップフロップ回路は、各フリップフロップが1ドット分のデータを記憶する。バッファ部52から出力される7ドットの副走査データが基準クロック信号(clk)に基づいて順番に行列変換部53に入力される。
また、次の7ドットの副走査データが入力されるタイミングで、今まで入力されていた7ドットの副走査データが1つ横のフリップフロップにシフトされる。例えば、図3の例では、53−1に入力された7ドットの副走査データが、次の基準クロック信号のクロックのタイミングで53−2にシフトされる。以降クロックのタイミングで53−3、53−4、・・・と7ドットの副走査データが順番に格納され、9クロック後に縦7×横9の行列データが生成される。また、行列変換部53は、生成した縦7×横9の行列データを画像変換部54に出力する。
なお、7ラインのすべてのラインデータがバッファ部52から行列変換部53に対して出力されると、バッファリングされている7ライン分のラインデータのうち、最も古いラインデータが消去される。そして、バッファ部52には、メモリ34より読み出された次のラインデータがバッファリングされる。つまり、1ライン下にずらした7ライン分のラインデータが、バッファ部52にバッファリングされることになる。これらの処理は、印刷対象データに含まれる全ラインデータが終了するまで行われる。
画像変換部54は、入力された行列データと、予め設定された複数のマトリックス出力パターンとのマッチングを行い、マッチしたマトリックス出力パターンに応じた二次元データの出力を行う。なお、画像変換部54は、マトリックス出力パターンにマッチした縦7×横9の行列データに含まれる中心画素(注目画素)及びその周辺画素のうち、中心画素の画像ピクセルを、マッチしたマトリックス出力パターンに応じた二次元データに変換して出力する。そのため、行列データは、中心画素が1つに特定される奇数×奇数(例えば、縦3×横3、縦5×横5、縦3×横9、縦7×横9等)の行列が好ましいが、これに限定されるものではない。また、マトリックス出力パターンも、その行列データに対応したサイズが設定される。なお、マトリックス出力パターンは、メモリ34等から取得してもよく、外部装置や内部メモリ等から取得してもよい。
また、画像変換部54は、主走査方向だけでなく、副走査方向に対してもジャギーを減少させるための画像修正として、dpi変換を行う。なお、dpi変換は、例えば、300dpi→1200dpi、300dpi→600dpi等のように、解像度を増加(拡大)させる変換を行うが、変換内容はこれに限定されるものではない。
例えば、画像変換部54は、300dpiから1200dpiに解像度を増加させる変換を行う場合、マッチしたマトリックス出力パターンに対応する二次元データ(変換データ)として、4×4ドットの二次元データを出力する。つまり、行列データの中心画素の画像ピクセル(1ドット)が4×4ドットの二次元データに変換される。なお、画像変換部54は、300dpiから600dpiに解像度を増加させる変換を行う場合には、2×2ドットの二次元データに変換する。画像変換部54は、行列データの中心画素の画像ピクセルを、印刷対象データに対する解像度の変換内容に応じたサイズの二次元データに変換することができる。
画像変換部54は、例えば行列データの中心画素の画像ピクセル(1ドット)を4×4ドットの二次元データ等に変換して処理することができ、主走査方向及び副走査方向に細分化させて、より滑らかな画像を生成する画像形成処理を行うことができる。
このとき、画像変換部54は、例えば4ライン分の二次元データについて、各ラインのデータをドットカウンタ部51から得られるライン情報(Line_sel)に基づくタイミングで出力する。上述した画像修正例では、1ラインから4ラインに増加するため、バッファ部52は、変換された4ライン分の二次元データの出力中はメモリ34から新たにラインデータを読み込むことはなく、変換された4ライン分の二次元データを出力する。
ラスタライズ部55は、コンピュータが扱う文字や画像を、印刷装置12で印刷したり、PC11の画面(ディスプレイ)等に表示できるように、色付きの小さな点の集まりで表現して出力する。例えば、ラスタライズ部55は、画像変換部54により生成されたデータ(パラレルデータ)をシリアル変換して、プリンタエンジン22に対して画素データとして出力する。
<第1の実施形態における画像修正の概略例>
次に、第1の実施形態における画像修正の概略例について、図4を用いて説明する。図4は、画像修正の概略例を示す図である。図4(A)は、従来のライン単位の画像修正の一例を示し、図4(B)は、第1の実施形態における行列データの中心画素の画像ピクセルについての画像修正の一例を示している。
図4(A)では、ライン単位の画像修正において、ライン(点線部)に対して処理を行うため、副走査方向に対してのジャギー未処理部分が残ってしまう(例えば、図4(A)に示す〇点線部分)。
そこで、第1の実施形態では、図4(B)に示すように、行列データの中心画素の画像ピクセルについて処理を行い、出力結果(パターン)として二次元データを出力させる。出力された二次元データを新たに生成される複数のライン(図4(B)の例では、4ライン)にそれぞれ出力するため、副走査方向に対するジャギー減少効果を実現できる。
なお、第1の実施形態では、一例として、300dpiの印刷対象データが、1200dpiの解像度を持つプリンタエンジン22に出力される場合について説明する。この場合、画像処理部21は、縦(副走査)方向、横(主走査)方向、それぞれに対して、4倍のデータを生成する補間処理をしてプリンタエンジン22に出力する必要が生じる。
この補間処理に用いられる二次元データは、予め設定されたマトリックス出力パターンに対応付けて設定することができる。図5は、マトリックス出力パターンの一例を示す図である。図5の例では、非参照画素(白でも黒でもよい画素(don't care))、黒参照画素、白参照画素、中心画素が識別されて表示されている。なお、図5の例では、10種類のマトリックス出力パターン(Pattern10〜Pattern19)が表示されているが、数や内容についてはこれに限定されるものではない。また、図5の例では、横7×縦9のマトリックス出力パターンの例を示しているが、これに限定されるものではなく、上述した行列変換部53から出力される行列データに応じたサイズのマトリックス出力パターンを設定することができる。
また、図5の例では、各マトリックス出力パターンに対応付けられた二次元データが設定されている。二次元データは、300dpiから1200dpiに変換する場合には、4×4ドットの二次元データであるが、これに限定されるものではなく、画像修正の内容に応じて設定することができる。図5に示す二次元データのうち、「1」は黒画素を示し、「0」は白画素を示す。第1の実施形態では、図5に示すように、画像修正することで新たに複数のライン(N_1ライン〜N_4ライン)を生成することができ、副走査方向に対するジャギー減少効果を実現できる。
上述したように第1の実施形態では、行列データについてマッチング処理を行う。このため、画像変換部54は、例えば、中心画素の情報と中心画素の周囲(上下各3ライン,前後各4ドット)情報(行列データ)を認識する。また、第1の実施形態では、マッチしたマトリックス出力パターンに対応する二次元データを用いて補間処理を行う。二次元データは、4×4ドットに限定されるものではなく、ゲート規模等に応じて、例えば4×8ドット等のように増加させてもよい。
<第1の実施形態における各処理タイミングの一例>
次に、上述した第1の実施形態における各処理タイミングの一例について、図6を用いて説明する。図6は、第1の実施形態における各処理タイミングの一例を示す図である。図6の例では、所定周期(時間)による水平同期信号に対する出力タイミングの生成、行列データの生成、マトリックス出力パターン検出、補間データ生成の各タイミングを示している。
図6の例では、プリンタエンジン22から水平同期信号が出力され、その水平同期信号を画像処理部21が受信すると、図6に示すようにドットカウンタ部51が動作し、受信した水平同期信号をカウントすることで出力タイミングを生成し、バッファ部52に出力する。これにより新たなラインデータがバッファ部52にバッファリングされる。
バッファ部52は基準クロック信号に基づいて、7ドットの副走査データを行列変換部53に出力し、行列変換部53は、7ドットの副走査データから縦7×横9の行列データ(n_1ライン,n_2ライン,・・・,n_7ライン)を生成する。次に、画像変換部54は、生成された行列データと、予め設定されたマトリックス出力パターンとを比較し、マッチするマトリックス出力パターンを検出する。マッチするマトリックス出力パターンを検出した場合は、行列データの中心画素の画像ピクセルを二次元データに変換して出力する。このとき、例えば300dpiから1200dpiに解像度を増加する変換を行う場合においては、中心画素の画像ピクセル(1ドット)を4×4ドットの二次元データに変換し、補間データとしてライン情報(Line_sel)に対応させて出力する。
<画像形成処理(画像処理)の一例を示すフローチャート>
次に、第1の実施形態における画像形成処理(画像処理)の一例についてフローチャートを用いて説明する。図7は、第1の実施形態における画像形成処理の一例を示すフローチャートである。なお、図7に示す処理は、例えば図1に示すハードウェア構成に実行プログラム(例えば、画像処理プログラム等)をインストールすることで、ハードウェア資源とソフトウェアとが協働して実現する処理である。また、上述した実行プログラムは、コンピュータで読み取り可能な記録媒体等に記憶することで、他の装置にもインストールすることができる。記録媒体は、例えばフラッシュメモリ等の半導体メモリやCD−ROM、DVD等の可搬型の記録媒体であるが、これに限定されるものではない。
図7の例において、プリンタエンジン22が印刷動作を開始すると(S01)、用紙が搬送され、画像処理部21は、水平同期信号を受信し、ビデオコントローラ33のドットカウンタ部51に入力する(S02)。次に、ドットカウンタ部51は、水平同期信号に応じて、ライン情報(Line_sel)を画像変換部54に出力する(S03)。更に、ドットカウンタ部51は、水平同期信号に基づく出力タイミングをバッファ部52に出力する(S04)。
次に、バッファ部52は、メモリ34に記憶された印刷対象データをライン単位でバッファリングする(S05)。次に、バッファ部52は、バッファリングされた7ライン分のラインデータを、1ドットずつ基準クロック信号に基づいて出力することで、7ドットの副走査データを順次出力する(S06)。
次に、行列変換部53は、副走査データを各ドットシフト(9クロック分)させることにより、縦×横が所定数(例えば、縦7×横9)の行列データを生成する(S07)。次に、画像変換部54は、生成した行列データと、上述したマトリックス出力パターンとのマッチングを行い、マッチしたマトリックス出力パターンに対応する二次元データを用いて、行列データの中心画素の画像ピクセルを変換する(S08)。二次元データは、マトリックス出力パターン毎に対応付けて設定されており、例えば300dpiから1200dpiに解像度を増加する変換を行う場合には、4×4ドットの二次元データにより、行列データの中心画素の画像ピクセル(1ドット)が変換される。
次に、ラスタライズ部55は、行列データの中心画素の画像ピクセルを二次元データを用いて変換することで得られた補間データ(VOUT)をシリアル変換して、プリンタエンジン22に対して画素データとして出力する(S09)。プリンタエンジン22は、画素データに基づいて印刷処理を行う(S10)。
次に、画像形成処理を終了するか否かを判断し(S11)、画像形成処理を終了しない場合(S11において、NO)、例えば、印刷対象データの全てを処理していないため、S01の処理に戻る。また、ユーザからの強制終了指示や、印刷対象データの全てに対して画像形成処理が終了したことにより、終了すると判断した場合(S11において、YES)、画像形成処理を終了する。
<プリンタエンジン22の概略構成例>
次に、上述したプリンタエンジン22の概略構成例について、図を用いて説明する。図8は、プリンタエンジンの概略構成の一例を示す図である。なお、図8の例では、レーザプリンタのプリンタエンジンを示しているが、これに限定されるものではなく、インクジェットプリンタのプリンタエンジン等でもよい。
図8に示すプリンタエンジン22は、画像露光ユニット61と、帯電手段62と、感光ドラム63と、現像手段64と、転写手段65と、ドラムクリーナ66と、定着手段67とを有する。
プリンタエンジン22は、ビデオコントローラ33からの画素データを画像露光ユニット61が取得する。
画像露光ユニット61は、レーザ照射部やポリゴンミラー等を有する。画像露光ユニット61は、ポリゴンミラー等の回転周期等に対応したスキャン周期で感光ドラム63上をスキャンするビーム光を検出し、ビーム光の検出信号を画像処理部21に出力する。また、画像露光ユニット61は、ビーム光の検出信号の出力タイミングに合わせて画像処理部21から入力された画素データに対応させて、レーザ照射部からのレーザ光をポリゴンミラー等を用いて主走査方向に偏向させる。更に画像露光ユニット61は、その光ビームを感光ドラム63の所定位置に露光させる。
帯電手段62は、感光ドラム63の表面を所定の電位に均一に帯電させる。感光ドラム63は、図8に示す方向に軸回転しながら、画像露光ユニット61からのビーム光を受光する。
現像手段64は、1又は複数色のトナー(例えば、K(黒),C(シアン),M(マゼンタ),Y(イエロー))が充填されたトナーボトルを有し、感光ドラム63の露光された部分に所定の色のトナーを付着させる。
転写手段65は、用紙等の印刷媒体68を感光ドラム63の表面と接触するように搬送させて感光ドラム63の表面に付着したトナーを印刷媒体68の表面に転写させる。ドラムクリーナ66は、感光ドラム63の表面に付着したトナーを除去する。定着手段67は、印刷媒体68の表面に転写させたトナーを熱等により乾燥させる。上述したような、プリンタエンジン22において、上述した画像処理部21において第1の実施形態における画像修正が行われた画素データを入力することで、主走査方向だけでなく、副走査方向に対しても画像修正された印刷対象データを印刷(出力)することができる。なお、第1の実施形態における画像形成処理後の印刷対象データは、印刷媒体68に印刷されるだけでなく、例えばPC11の画面(ディスプレイ)等に表示させてもよい。
上述したように、第1の実施形態によれば、より滑らかなジャギー減少効果を生み出すことができる。例えば、第1の実施形態によれば、行列データの中心画素の画像ピクセル(1ドット)を、4×4ドットの二次元データを用いて変換し、変換することで得た補間データを新たに生成される複数のラインにそれぞれ出力する。このため、主走査方向だけでなく副走査方向に対しても、より滑らかなジャギー減少効果が実現できる。
なお、第1の実施形態における画像修正は、プロセッサを用いてソフトウェア的に行うことができる。ただし、ハードウェア回路的技術を用いることで、処理の迅速化が図れる。また、マッチしたマトリックス出力パターンに対応付けて設定された二次元データを用いて、行列データを変換するため、画像修正の際の補間処理においてプロセッサを用いた複雑な計算を行う必要がなくなる。このため、処理前の印刷対象データを格納するメモリエリアと、処理後の印刷対象データを格納するメモリエリアが大量に必要になることもなく、メモリアクセスも頻繁に行う必要がない。この結果、回路規模を小さくできるとともに、処理にかかる時間を大幅に短縮することができる。
[第2の実施形態]
上記第1の実施形態では、印刷対象データのdpiを偶数倍(2倍または4倍)に変換する場合について説明した。これに対して、第2の実施形態では、印刷対象データのdpiを非偶数倍に変換する場合について説明する。
なお、非偶数倍とは、偶数ではない倍数であり、例えば、奇数倍、小数点付き倍数等が含まれる。更に、小数点付き倍数には、1/2倍の整数倍である半整数倍(1.5倍、2.5倍等)が含まれる。以下では、説明の簡略化のため、半整数倍の例を用いて説明する。また、マトリックス出力パターンのサイズを、縦7×横9ではなく、縦2×横2とする。以下、第2の実施形態について、上記第1の実施形態との相違点を中心に説明を行う。
<ビデオコントローラ33の機能構成例>
はじめに、第2の実施形態におけるビデオコントローラ33の機能構成例について、図9を用いて説明する。図9は、ビデオコントローラの機能構成の一例を示す図である。図10に示すビデオコントローラ900は、ドットカウンタ部901と、記憶部の一例としてのバッファ部902と、生成部の一例としての行列変換部903と、変換率セレクト部904と、出力部の一例としてのラスタライズ部55とを有する。なお、図9に示す各部は、基準クロック信号(clk)により同期処理を行うことができる。
ドットカウンタ部901は、上記第1の実施形態において、図2を用いて説明したドットカウンタ部51と概ね同じである。ただし、ドットカウンタ部51では、4×4ドットの二次元データの各ラインを画像変換部54が出力するためのライン情報(Line_sel)を出力した。これに対して、ドットカウンタ部901は、3×3ドットの二次元データまたは5×5ドットの二次元データの各ラインを変換率セレクト部904が出力するためのライン情報(Line_sel)を出力する。
バッファ部902は、メモリ34から印刷対象データを所定のライン単位でバッファリングする記憶部である。第2の実施形態において、バッファ部902は、8ライン分のラインバッファ(第1のラインバッファ〜第8のラインバッファ)を有しており、印刷対象データの各ラインデータが順次バッファリングされるものとする。
例えば、印刷対象データの第1のラインデータが、バッファ部902の第1のラインバッファ902aにバッファリングされ、印刷対象データの第2のラインデータが、バッファ部902の第2のラインバッファ902bにバッファリングされる。以下、同様に、印刷対象データの第3のラインデータ〜第8のラインデータは第3のラインバッファ902c〜第8のラインバッファ902hにバッファリングされる。
ここで、第1のラインバッファ902a及び第2のラインバッファ902bにバッファリングされた印刷対象データの第1のラインデータ及び第2のラインデータが行列変換部903にすべて出力されたとする。この場合、第1のラインバッファ902aには、印刷対象データの第9のラインデータがバッファリングされる。また、第2のラインバッファ902bには印刷対象データの第10のラインデータがバッファリングされる。このように、バッファ部902の各ラインバッファは、バッファリングしているラインデータが出力されると、印刷対象データの次のラインデータが順次バッファリングされる。なお、第2の実施形態においては、2ライン分のラインデータを読み込む。
バッファ部902は、隣接するラインバッファにそれぞれバッファリングされたラインデータを、行列変換部53に対して、2ドット(dot)ずつ出力する。
行列変換部903は、バッファ部902より出力された2つのラインデータの2ドット分の画素データ(つまり、縦2×横2の行列データ)と、縦2×横2のマトリックス出力パターンとのマッチングを行う。
行列変換部903は、縦2×横2の行列データと、縦2×横2のマトリックス出力パターンとがマッチしていると判定した場合には、縦2×横2のマトリックス出力パターンに対応付けて格納された、5×5ドットの二次元データを読み出す。また、行列変換部903は、読み出した二次元データを構成する各データ(1,1)、(1,2)・・・(5,5)を変換率セレクト部904に出力する。
変換率セレクト部904は、行列変換部903より出力された5×5ドットの二次元データを、ドットカウンタ部901からのカウンタ情報(Line_sel)に基づいて必要に応じて3×3ドットの二次元データに変換することで、所定の解像度を実現する。
ここで、行列変換部903より出力された5×5ドットの二次元データは、もともと、縦2×横2の行列データを変換したものであり、この時点で、印刷対象データの解像度は2.5倍になっている。したがって、ドットカウンタ部901からのカウンタ情報が、印刷対象データの解像度を2.5倍にすることを指示するカウンタ情報であった場合、変換率セレクト部904は、行列変換部903より出力された5×5ドットの二次元データそのものを出力する。これにより、例えば、240dpi→600dpiに解像度を増加する変換を行うことができる。
また、変換率セレクト部904は、ドットカウンタ部901からのカウンタ情報が、印刷対象データの解像度を1.5倍にすることを指示するカウンタ情報であった場合、3×3ドットの二次元データを出力する。なお、3×3ドットの二次元データは、行列変換部903より出力された5×5ドットの二次元データのうちの中央の3×3ドットの二次元データを抽出することで得られる。これにより、例えば、400dpi→600dpiに解像度を増加する変換を行うことができる。
なお、変換率セレクト部904は、3ライン分の二次元データまたは5ライン分の二次元データを出力する。変換率セレクト部904は、ライン情報(Line_sel)に応じたタイミングで、3×3ドットの二次元データまたは5×5ドットの二次元データの各ラインを補間データ(VOUT)としてラスタライズ部55に出力する。
ラスタライズ部55は、上記第1の実施形態において、図2を用いて説明したラスタライズ部55と同様であるため、ここでは説明を省略する。
<マトリックス出力パターン>
次に、マトリックス出力パターンについて説明する。図10は、マトリックス出力パターンの一例を示す図である。図10に示すように、マトリックス出力パターンには、情報の項目として、"マトリックス出力パターン"と"二次元データ"とが含まれる。
"マトリックス出力パターン"には、バッファ部902より出力された縦2×横2の行列データとのマッチングに用いる縦2×横2のマトリックス出力パターンが格納される。
"二次元データ"には、バッファ部902より出力された縦2×横2の行列データが、マトリックス出力パターンにマッチした場合に、縦2×横2の行列データそのものを変換する二次元データが格納される。
図10に示すように、"二次元データ"に格納された5×5ドットの二次元データには、内部に3×3ドットの二次元データ(点線で囲まれた範囲)が含まれる。したがって、変換率セレクト部904において、解像度を2.5倍にする場合には、5×5ドットの二次元データが読み出される。一方、解像度を1.5倍にする場合には、3×3ドットの二次元データが読み出される。
<第2の実施形態における各処理タイミングの一例>
次に、上述した第2の実施形態における各処理のタイミングの一例について、図11を用いて説明する。図11は、第2の実施形態における各処理タイミングの一例を示す図である。図11の例では、所定周期(時間)による水平同期信号に対する出力タイミングの生成、行列データの生成、マトリックス出力パターン検出、二次元データ生成の各タイミングを示している。
図11の例では、プリンタエンジン22から水平同期信号が出力され、その水平同期信号を画像処理部21が入力すると、図11に示すように、ドットカウンタ部901が動作し、受信した水平同期信号に基づく出力タイミングをバッファ部902に出力する。これにより、新たなラインデータがバッファ部52にバッファリングされる。また、バッファ部52は基準クロック信号に基づいて、縦2×横2の行列データ(n_1ライン,n_2ライン)を行列変換部903に出力する。
次に、行列変換部903は、縦2×横2の行列データと、予め設定されたマトリックス出力パターンとを比較し、マッチするマトリックス出力パターンを検出する。マッチするマトリックス出力パターンを検出した場合は、縦2×横2の行列データの画像ピクセルを、マッチしたマトリックス出力パターンに対応付けられた二次元データに変換して出力する。このとき、例えば240dpiから600dpiに解像度を変換する場合には、行列データ(縦2×横2)を5×5ドットの二次元データに変換し、補間データ(VOUT)として、図11に示すようにライン情報(Line_sel)に対応させて出力する。
上述したように、第2の実施形態では、印刷対象データについて、主走査方向と副走査方向の両方向においてdpi変換を行う。これにより、より滑らかなジャギーの減少効果を実現できる。
また、印刷対象データについてdpi変換を行うにあたり、第2の実施形態では、印刷対象データから生成した行列データのうち、予め設定されたマトリックス出力パターンとマッチした行列データを、予め定めた二次元データに変換することで補間処理を行う。これにより、dpi変換における複雑な補間処理の計算を排除することが可能となる。
更に、第2の実施形態では、印刷対象データから縦2×横2の行列データを生成するとともに、行列データとのマッチングに用いる縦2×横2のマトリックス出力パターン、3×3ドットの二次元データ及び5×5ドットの二次元データを予め定めておく。これにより、半整数倍(1.5倍または2.5倍)のdpi変換を行うことが可能となる。
なお、第2の実施形態では、第1の実施形態において、図2を用いて説明したビデオコントローラ33に代えて、図9を用いて説明したビデオコントローラ900を配するものとして説明した。しかしながら、画像処理部21は、図2を用いて説明したビデオコントローラ33の機能と、図9を用いて説明したビデオコントローラ900の機能とを含むビデオコントローラを有していてもよい。
この場合、例えば、240dpiまたは400dpiの印刷対象データは、図9を用いて説明したビデオコントローラ900の機能を用いて600dpiに変換され、図2を用いて説明したビデオコントローラ33の機能を用いて1200dpiに変換される。
また、第2の実施形態では、印刷対象データのdpiを1.5倍または2.5倍に変換する場合について説明したが、半整数倍であれば、1.5倍または2.5倍に限定されない。
また、第2の実施形態では、行列変換部903が縦2×横2のマトリックス出力パターンを有する場合について説明したが、行列変換部903は、n行n列(nは偶数)のマトリックス出力パターンを有していてもよい。なお、この場合、行列変換部903は、半整数倍となるような変換パターンを有するものとする。また、行列変換部903は、n行n列の行列データを生成するものとする。
以上、実施例について詳述したが、特定の実施例に限定されるものではなく、特許請求の範囲に記載された範囲内において、種々の変形及び変更が可能である。また、上述した各実施例の一部又は全部を組み合わせることも可能である。
なお、以上の実施例に関し、更に以下の付記を開示する。
(付記1)
出力対象データから所定の画像ピクセル領域の二次元マトリックスを生成する生成部と、
前記生成部により得られた二次元マトリックスと、予め設定されたマトリックス出力パターンとのマッチングにより、前記二次元マトリックスの画像ピクセルを二次元データに変換し、変換した二次元データに対応して生成される複数のラインに、前記二次元データを出力して副走査方向に対する画像修正を行う画像変換部とを有する画像形成装置。
(付記2)
前記画像変換部は、
前記出力対象データに対する解像度の変換内容に応じた前記二次元データに変換することを特徴とする付記1に記載の画像形成装置。
(付記3)
所定のタイミングからなる水平同期信号を入力し、入力された水平同期信号に対応させて前記出力対象データの画像中のドット数をカウントするドットカウンタ部を有し、
前記ドットカウンタ部は、前記ドット数に基づいて前記複数のラインの出力タイミングを指示する信号を前記画像変換部に出力することを特徴とする付記1又は2に記載の画像形成装置。
(付記4)
前記生成部は、前記出力対象データから得られる複数のラインデータから副走査方向のデータを1画素毎に順番に取得し、取得した画素を所定クロック数分記憶することで、前記二次元マトリックスを生成することを特徴とする付記1乃至3の何れか1項に記載の画像形成装置。
(付記5)
前記生成部は、n行n列(nは偶数)の二次元マトリックスを生成し、
前記画像変換部は、前記生成部により生成された該二次元マトリックスの画像ピクセルを、半整数倍した二次元データに変換することを特徴とする付記1に記載の画像形成装置。
(付記6)
前記二次元マトリックスの画像ピクセルは、2行2列の行列データであり、前記二次元データは、3行3列または5行5列であることを特徴とする付記5に記載の画像形成装置。
(付記7)
画像形成装置が、
出力対象データから所定の画像ピクセル領域の二次元マトリックスを生成し、
生成した前記二次元マトリックスと、予め設定されたマトリックス出力パターンとのマッチングにより、前記二次元マトリックスの画像ピクセルを二次元データに変換し、
変換した二次元データに対応して生成される複数のラインに、前記二次元データを出力して副走査方向に対する画像修正を行う、ことを特徴とする画像処理方法。
(付記8)
出力対象データから所定の画像ピクセル領域の二次元マトリックスを生成し、
生成した前記二次元マトリックスと、予め設定されたマトリックス出力パターンとのマッチングにより、前記二次元マトリックスの画像ピクセルを二次元データに変換し、
変換した二次元データに対応して生成される複数のラインに、前記二次元データを出力して副走査方向に対する画像修正を行う、処理をコンピュータに実行させる画像処理プログラム。