(57)【特許請求の範囲】
【請求項１】
画素の挿抜を実行することで画像の変倍を行う画像処理装置であって、
変倍方向に直交する方向の第１の位置における第１の挿抜位置を決定する第１の決定手段と、
前記直交する方向の前記第１の位置とは異なる第２の位置における第２の挿抜位置を、前記決定された第１の挿抜位置に基づいて決定する第２の決定手段と、
前記決定された第１および第２の挿抜位置に基づいて、画素の挿抜を前記画像に対して実行する挿抜手段と、
を有し、
前記決定された第２の挿抜位置は、前記決定された第１の挿抜位置からの前記変倍方向の距離が第１の所定の距離以上、該第１の所定の距離より大きい第２の所定の距離以内となる範囲内のいずれかの位置であることを特徴とする画像処理装置。
【請求項２】
前記決定された第２の挿抜位置が、前記決定された第１の挿抜位置からの前記変倍方向の距離が第１の所定の距離以上、該第１の所定の距離より大きい第２の所定の距離以内となる範囲内のいずれかの位置であるとは、
前記決定された第２の挿抜位置の前記変倍方向の位置が、前記決定された第１の挿抜位置の前記変倍方向の位置からの前記変倍方向の距離が前記第１の所定の距離以上、前記第２の所定の距離以内となる範囲内のいずれかの位置であることを特徴とする請求項１の画像処理装置。
【請求項３】
前記直交する方向の第１および第２の位置それぞれは、前記直交する方向における画素の位置に対応し、
前記変倍方向の第１および第２の所定の距離それぞれの単位は、画素である請求項１または２の画像処理装置。
【請求項４】
前記第１の決定手段は、前記第１の位置において前記変倍方向に所定の数連続して並ぶ複数の画素からなる第１の画素列のうちの１つの画素の位置を、前記第１の挿抜位置として決定し、
前記第２の決定手段は、前記第２の位置において前記変倍方向に所定の数連続して並ぶ複数の画素からなる第２の画素列のうちの１つの画素の位置を、前記第２の挿抜位置として決定することを特徴とする請求項１乃至３の何れか１項の画像処理装置。
【請求項５】
前記第１の画素列と前記第２の画素列とは、前記直交する方向で互いに隣接することを特徴とする請求項４の画像処理装置。
【請求項６】
前記所定の範囲の両端の位置のうちの前記第１の挿抜位置に近い位置は、前記第１の所定の距離によって定まり、前記所定の範囲の両端の位置のうちの前記第１の挿抜位置から遠い位置は、前記第２の所定の距離によって定まることを特徴とする請求項１乃至５の何れか１項の画像処理装置。
【請求項７】
前記挿抜手段は、前記第１の挿抜位置および前記第２の挿抜位置の画素を前記画像から間引くことで、前記画像の縮小を行うことを特徴とする請求項１乃至６の何れか１項の画像処理装置。
【請求項８】
前記挿抜手段は、前記第１の挿抜位置および前記第２の挿抜位置の画素を前記画像に挿入することで、前記画像の拡大を行うことを特徴とする請求項１乃至６の何れか１項の画像処理装置。
【請求項９】
前記挿抜手段による画素の挿抜が行われた画像を印刷する印刷手段をさらに有する請求項１乃至８の何れか１項の画像処理装置。
【請求項１０】
乱数を生成する生成手段を有し、
前記第２の決定手段は、前記決定された第１の挿抜位置および前記生成された乱数に基づいて前記第２の挿抜位置を決定することで、前記決定された第２の挿抜位置を、前記決定された第１の挿抜位置からの前記変倍方向の距離が第１の所定の距離以上、該第１の所定の距離より大きい第２の所定の距離以内となる前記範囲内のいずれかの位置に決定する請求項１乃至９の何れか１項の画像処理装置。
【請求項１１】
前記乱数は、乱数を生成する関数に従って生成されることを特徴とする請求項１０の画像処理装置。
【請求項１２】
前記決定された第１の挿抜位置からの前記変倍方向の距離が前記第１の所定の距離以上、前記第２の所定の距離以内の前記範囲は、所定の情報に従って決まることを特徴とする請求項１乃至１１の何れか１項の画像処理装置。
【請求項１３】
前記第１および第２の所定の距離は、前記挿抜手段による画素の挿抜が行われた画像が印刷される用紙種に関する情報に従って決まることを特徴とする請求項１乃至１２の何れか１項の画像処理装置。
【請求項１４】
前記第１および第２の所定の距離は、前記挿抜手段による画素の挿抜が行われた画像が印刷される用紙種を特定するために用いられる情報に従って決まることを特徴とする請求項１乃至１２の何れか１項の画像処理装置。
【請求項１５】
前記第１および第２の所定の距離は、前記画像の面内情報に従って決まることを特徴とする請求項１乃至１２の何れか１項の画像処理装置。
【請求項１６】
前記第２の決定手段は、前記第２の位置を含むＮ個の前記直交する方向の位置に対する挿抜位置を、当該Ｎ個の挿抜位置の前記変倍方向における位置が前記第２の挿抜位置の前記変倍方向における位置と同じになるように決定することを特徴とする請求項１乃至１５の何れか１項の画像処理装置。
【請求項１７】
前記Ｎは、前記挿抜手段による画素の挿抜が行われた画像が印刷される用紙種に関する情報に従って決まることを特徴とする請求項１６の画像処理装置。
【請求項１８】
前記Ｎは、前記画像の面内情報に従って決まることを特徴とする請求項１６の画像処理装置。
【請求項１９】
画素の挿抜を実行することで画像の変倍を行う画像処理方法であって、
変倍方向に直交する方向の第１の位置における第１の挿抜位置を決定する第１の決定工程と、
前記直交する方向の前記第１の位置とは異なる第２の位置における第２の挿抜位置を、前記決定された第１の挿抜位置に基づいて決定する第２の決定工程と、
前記決定された第１および第２の挿抜位置に基づいて、画素の挿抜を前記画像に対して実行する挿抜工程と、
を有し、
前記決定された第２の挿抜位置は、前記決定された第１の挿抜位置からの前記変倍方向の距離が第１の所定の距離以上、該第１の所定の距離より大きい第２の所定の距離以内となる範囲内のいずれかの位置であることを特徴とする画像処理方法。
【請求項２０】
請求項１乃至１８の何れか１の各手段としてコンピュータを機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理装置、画像処理方法、及びそのコンピュータプログラムに関するものである。
【背景技術】
【０００２】
電子写真方式の印字方式は、顔料を含むトナーを用紙に定着させる現像段階において熱と圧力を利用する。熱と圧力をかけられた用紙は、用紙の縮小ないし伸張のいずれかの現象を起こす。電子写真方式の印字装置において使用可能な用紙では、この現象は一度目の定着において顕著に生じ、二回目以降はその変位はほぼ無視できる。
【０００３】
用紙の伸縮にあわせて印字画像も伸縮するので、両面印刷の実行時に表面印字と裏面印字の大きさがわずかに異なったものとなる。印字精度が重用視される分野においてはこの差を補正する必要がある。
【０００４】
このような課題に対して、印字画像情報自体を調整して用紙の伸縮に対応する方法がある。特許文献１には、所定数画素につき１画素をランダムに選択して挿入処理・間引き処理（以後、挿入処理と間引き処理を合わせて挿抜処理と呼ぶ）を実行することで、印字画像情報の拡大、縮小を行う方法が開示されている。
【０００５】
挿抜処理を行う画素位置をランダムにすることで、ハーフトーン画像についても挿抜処理による拡大、縮小を高画質で実現することが出来る。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開昭６１−２０６３６５
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、ハーフトーン画像について、挿抜処理を行う画素の位置（挿抜位置）を乱数でランダムに決定した場合には、ディザ処理によって作成されたディザパターンが壊れてしまい、印刷時のドットが不安定になってしまうという問題がある。
【０００８】
例えば、主走査位置をｘ、副走査位置をｙとし、副走査方向についての間引き処理を実施したとする。例えば縮小率が１％とすると１００ラインに一回の間引き処理とした場合、乱数の取り得る値は、
Ｒａｎｄｏｍ（ｘ）：０〜９９
である。なお、関数Ｒａｎｄｏｍ（ｘ）は、引数ｘに基づく乱数を生成する関数である。
【０００９】
今、間引き処理をする主走査位置ｘ０とｘ１は隣り合う列であった場合にＲａｎｄｏｍ（ｘ０）＝２、Ｒａｎｄｏｍ（ｘ１）＝９６となったと仮定すると、間引きする画素の座標は、（ｘ、ｙ）＝（ｘ０、ｙ２）、（ｘ１、ｙ９６）となり、図１１（ａ）に示すように、間引き位置が９４ライン分離れる事になる。
【００１０】
図１１（ｂ）では、実際に指定の画素が間引きされて、画素がシフトされた状態である。ｘ０はｙ２ライン目が間引きされるので、ｙ３ライン目以降の出力位置は１ラインずつ繰り上がる。一方、ｘ１はｙ９６ライン目が間引きされるので、ｙ９７ライン目以降の出力位置は１ラインずつ繰り上がる。
【００１１】
図１１（ａ）の状態でのｙ９７〜ｙ９９ライン目が図１１（ｂ）の状態のｙ９６〜ｙ９８ライン目にシフトしただけなので、図１１（ｂ）のｙ９６ライン目以降のラインの主走査位置ｘ０とｘ１の間のディザパターンは崩れない。また、ｙ９９ライン目（図１１（ｂ）で破線で囲まれた領域）は無くなるので、１％の縮小には成功している。一方、ｘ０、ｘ１について、ｙ２ライン目〜ｙ９５ライン目までは、間引きによる影響で隣り合うｘ０、ｘ１の位置がずれるので、ディザパターンはずれた状態で形成される。また、図１１（ａ）に示すように主走査位置ｘ１、ｘ２、ｘ３の間引く画素位置がそれぞれ異なるので、図１１（ｂ）に示す間引き処理後のパターンは、図１１（ａ）に示す間引き処理前のディザパターンとは異なるパターンとなり、このパターンによって画像形成が実施されるために電子写真の画像形成は不安定になってしまう。
【課題を解決するための手段】
【００１２】
上記課題を解決するため、本発明の画像処理装置は、画素の挿抜を実行することで画像の変倍を行う画像処理装置であって、変倍方向に直交する方向の第１の位置における第１の挿抜位置を決定する第１の決定手段と、前記直交する方向の前記第１の位置とは異なる第２の位置における第２の挿抜位置を、前記決定された第１の挿抜位置に基づいて決定する第２の決定手段と、前記決定された第１および第２の挿抜位置に基づいて、画素の挿抜を前記画像に対して実行する挿抜手段と、を有し、前記決定された第２の挿抜位置は、前記決定された第１の挿抜位置からの前記変倍方向の距離が第１の所定の距離以上、該第１の所定の距離より大きい第２の所定の距離以内となる範囲内のいずれかの位置であることを特徴とする。
【発明の効果】
【００１３】
本発明によれば、挿抜処理の対象となる画素の相対位置を制限することで、画像内の画素のパターンの崩れを抑制することができる。
【図面の簡単な説明】
【００１４】
【図１】本発明による画像処理装置のブロック図である。
【図２】実施例１の画像処理装置の動作を示すフローチャートである。
【図３】Ｓ２００５を詳細に説明した実施例１のフローチャートである。
【図４】Ｓ２００８を詳細に説明した実施例１のフローチャートである。
【図５】Ｓ２００５を詳細に説明した実施例２のフローチャートである。
【図６】Ｓ２００５を詳細に説明した実施例３のフローチャートである。
【図７】実施例４のハーフトーン画像と画像情報を説明した図である。
【図８】Ｓ２００５を詳細に説明した実施例４のフローチャートである。
【図９】Ｓ２００５を詳細に説明した実施例５のフローチャートである。
【図１０】本発明の画素の間引きによる変倍処理を表す図である。
【図１１】従来の画素の間引きによる変倍処理を表す図である。
【発明を実施するための形態】
【００１５】
以下、本発明を実施するための最良の形態について図面を用いて説明する。
【００１６】
（実施例１）
本発明を実施する為の実施例を説明する。
【００１７】
図１は、本発明における画像処理装置のブロック図である。画像処理装置は、ＣＰＵ１０１、ＲＡＭ１０３、ＲＯＭ１０４を有している。ＣＰＵ１０１は、ＲＯＭ１０４に格納されている制御プログラムをＲＡＭ１０３にロードし、展開、実行することで、当該画像処理装置を動作させる。また、この制御プログラムの実行において、ＲＡＭ１０３は、ＣＰＵ１０１がこの制御プログラムを実行する際のワーク用メモリとしても利用され、ビットマップイメージ等のデータの一時保存に利用される。
【００１８】
また、本画像処理装置は、操作部１０２、ネットワークＩ／Ｆ１０６を有している。操作部１０２は、ユーザからの変倍率設定を受け付ける。ＣＰＵ１０１は、この操作部１０２を介してユーザによって設定された変倍率をＲＡＭ１０３に格納する。この変倍率設定は、プリンタユニット（印字機構）１１１で画像の両面印刷を行うような場合、裏面に印字される画像を表面に印字される画像の位置・大きさに合わせるような値に設定される。例えば変倍率が９９％で指定された場合、裏面に印字される画像（ハーフトーン画像）の画素に間引き処理を施して裏面画像の縮小を図る。また例えば変倍率が１０１％で指定された場合、裏面に印字される画像（ハーフトーン画像）の画素に挿入処理を施して裏面画像の拡大を図る。変倍率が１００％の場合、挿抜処理を実行せずに等倍の裏面画像を印字することになる。画像を拡大する処理及び縮小する処理をあわせて変倍処理と呼ぶ。また、この操作部１０２及びネットワークＩ／Ｆ１０６は、ユーザからの印刷実行命令を受ける。例えば紙媒体の原稿をコピーする場合、ＣＰＵ１０１は、操作部１０２を介して印刷実行命令を受け、スキャナユニット（不図示）で読み取った原稿のビットマップ画像をＲＡＭ１０３へ格納する。また、例えばすでにＲＡＭ１０３に格納されているビットマップ画像をプリントする場合、ユーザはホストコンピュータ（不図示）からこのビットマップ画像のプリントの印刷実行命令をネットワークＩ／Ｆ１０６を介してＣＰＵ１０１へ送信し、この画像をプリントする。以下の本実施例では、印刷対象であるビットマップ画像がＲＡＭ１０３にすでに格納されているものとする。
【００１９】
また、本画像装置は、画像処理コントローラ１０７、乱数生成器１０８、乱数バッファ１０９、出力バッファ１１０、プリンタユニット（印字機構）１１１を有している。画像処理コントローラ１０７は、ＲＡＭ１０３に格納されているビットマップ画像に対してディザ処理を実行してハーフトーン画像を生成する。画像処理コントローラ１０７は、この生成されたハーフトーン画像を、出力バッファ１１０へ格納する。また、画像処理コントローラ１０７は、このハーフトーン画像の大きさをＲＡＭ１０３に格納する。以降の説明において、ハーフトーン画像の大きさについて、ハーフトーン画像の主走査方向の長さを主走査入力サイズ、副走査方向の長さを副走査入力サイズとする。
【００２０】
乱数生成器１０８は乱数列を生成し、この乱数列を乱数バッファ１０９へ格納する。この乱数生成器１０８の乱数列の生成手法については、ボックス・ミュラー法などの公知の手法を用いればよい。なお、この乱数生成器１０８の乱数列の生成手法は、本発明を限定するものではない。そして、ＣＰＵ１０１は、出力バッファ１１０に格納されたハーフトーン画像を走査して、乱数バッファ１０９に格納されている乱数列に基づいた変倍処理を実行する。そしてこの変倍処理が施されたハーフトーン画像をプリンタユニット１１１へ転送する。変倍処理の処理フローは図２に示される処理フローである。プリンタユニット１１１は、この変倍処理後のハーフトーン画像を取得し、取得した画像に基づいて画像形成が実行する。このプリンタユニットは紙などの記録媒体の両面を印字可能である。
【００２１】
以上説明した本画像処理装置が有する構成（ＣＰＵ１０１、操作部１０２、ＲＡＭ１０３、ＲＯＭ１０４、ネットワークＩ／Ｆ１０６、画像処理コントローラ１０７、乱数生成器１０８、乱数バッファ１０９、出力バッファ１１０、プリンタユニット１１１）の間でデータの送受信を行う場合、バス１０５を介してデータの送受信が行われる。
【００２２】
なお、前述のハーフトーン画像に対する画素の挿入・間引きを実施する為には、挿入・間引きされる画素の座標を計算する事が必要である。本実施例では、この計算はＣＰＵ１０１によって実行されるが、この計算を実行する装置を限定するものでは無く、例えば専用の演算回路等の別個のハードウェア回路を設けてこの計算を実行する事も出来る。
【００２３】
図２は、前述のＣＰＵ１０１が出力バッファ１１０に格納されたハーフトーン画像を走査しながら実行する挿入・間引き画素の座標演算のフローを示した図である。図２に示される処理フローは、ＲＯＭ１０４に格納されている制御プログラムをＣＰＵ１０１がＲＡＭ１０３にロードし、展開、実行することで実現される。なお、図２の処理フローは副走査方向を変倍処理方向とした変倍処理を実行するものであるが、本発明は主走査方向の変倍処理にも適用できる。なお、図２の処理フローを実行する前に、変倍率が操作部１０２を介してユーザによって設定されており、また、ＣＰＵ１０１はユーザによる印刷実行命令を受けて、変倍処理前のハーフトーン画像が出力バッファ１１０に格納されているものとする。
【００２４】
また、図１０は、図２の処理フローによる変倍処理の様子を示した図の一例である。図１０（ａ）は、図２の処理フローを実行する前に出力バッファ１１０に格納されているハーフトーン画像である。また、図１０（ａ）には挿抜処理（ここでは間引き処理）を施す画素位置が示されている。図１０（ｂ）は、図２の処理フローを実行して図１０（ａ）のハーフトーン画像に対して変倍処理が施された後のハーフトーン画像である。この変倍処理後のハーフトーン画像がプリンタユニット１１１へ転送される。なお、本実施例では図１０（ａ）に示すＮはＮ＝１である。
【００２５】
Ｓ２００１において、ＣＰＵ１０１は、初期化処理を実行する。初期化処理とは、変倍処理後のハーフトーン画像の座標位置を表すパラメータｘ、ｙのリセット（ｘ＝ｙ＝０）やＲＡＭ１０３の記憶領域の確保などが含まれる。また、ＣＰＵ１０１は、乱数生成回数カウンタｃをｃ＝−１で初期化する。なお、パラメータｘは変倍処理後のハーフトーン画像面内の主走査方向の座標位置を表すもので、以降の説明にて主走査位置ｘと表される。パラメータｙについても同様で、パラメータｙは変倍処理後のハーフトーン画像面内の副走査方向の座標位置を表すものであり、以降の説明に副走査位置ｙと表現される。
【００２６】
Ｓ２００２において、ＣＰＵ１０１は、操作部１０２を介して設定されてＲＡＭ１０３に格納された変倍率から、変倍処理単位を以下の式で求める。
変倍処理単位（ライン）  ＝  １  ÷  倍率
【００２７】
また、Ｓ２００２において、ＣＰＵ１０１は、ＲＡＭ１０３から主走査入力サイズと副走査入力サイズを取得し、変倍処理によって生成される変倍処理後のハーフトーン画像の大きさ（主走査出力サイズ、副走査出力サイズ）を演算によって求める。Ｓ２００２の後、処理はステップＳ２００３へ移行する。
【００２８】
変倍処理単位とは、例えば、１％（０．０１倍）の変倍処理（ここでは拡大・縮小は限定しない）の場合、変倍処理単位は１００（＝１÷０．０１）ラインとなる。つまり、１００ライン毎に挿入・間引きを実行することになる。
【００２９】
Ｓ２００３において、ＣＰＵ１０１は、副走査位置ｙが副走査出力サイズよりも小さいかを判断する。Ｓ２００３の後、処理はステップＳ２００４へ移行する。
【００３０】
Ｓ２００４において、ＣＰＵ１０１は、副走査位置ｙとステップＳ２００２で求めた変倍処理単位との剰余算が０であるかを判定する。ステップＳ２００４において副走査位置ｙと変倍処理単位との剰余算が０である場合（Ｓ２００４でＹＥＳである場合）、処理は、Ｓ２００５の乱数テーブル生成処理に進む。ステップＳ２００４において副走査位置ｙとステップＳ２００２で求めた変倍処理単位との剰余算が０ではない場合（Ｓ２００４でＮＯである場合）、処理は、ステップＳ２００７へ進む。
【００３１】
Ｓ２００５における乱数テーブル生成処理の処理フローを、図３のフローチャートに示す。図３に示す処理フローは、乱数生成器１０８の処理と、ＲＯＭ１０４に格納されている制御プログラムをＣＰＵ１０１がＲＡＭ１０３にロードし、展開、実行することで実現される処理とによって実行される。図３の処理フローを実行することで、どの位置の画素を挿抜処理の対象とするか、挿抜位置が決定される。
【００３２】
ステップＳ３０００において、ＣＰＵ１０１は、乱数位置カウンタｐの初期化（ｐ＝０）を実行し、また、乱数バッファ１０９のバッファサイズを主走査出力サイズで確保する。本実施例において、この乱数バッファ１０９上の位置は、乱数位置カウンタｐによって一意に決定される。なお、この乱数位置カウンタｐの値を１インクリメントすることは、主走査方向に沿って主走査位置ｘを１インクリメントすることに対応し、乱数位置カウンタｐによって決定される挿抜位置は、乱数位置カウンタｐによって決定される挿抜位置から見て、直前に決定された挿抜位置となっている。
【００３３】
Ｓ３００１において、ＣＰＵ１０１は、乱数位置カウンタｐがＲＡＭ１０３に格納されている主走査出力サイズより小さいかを判断する。乱数位置カウンタｐが主走査出力サイズより小さい場合（Ｓ３００１でＹＥＳの場合）、処理はステップＳ３００２へ移行する。乱数位置カウンタｐが主走査出力サイズ以上の場合（Ｓ３００１でＮＯの場合）、乱数テーブル生成処理は終了し、処理はステップＳ２００６へ移行する。
【００３４】
Ｓ３００２において、乱数生成器１０８が乱数を生成し、ＣＰＵ１０１は、乱数生成器１０８で生成した乱数を取得する。Ｓ３００２の後、処理はステップＳ３００３へ移行する。
【００３５】
Ｓ３００３において、ＣＰＵ１０１は、Ｓ３００２で取得した乱数が変倍処理単位より小さいかを判断する。取得した乱数が変倍処理単位より小さい場合（Ｓ３００３においてＹＥＳの場合）、処理は、ステップＳ３００４へ移行する。取得した乱数が変倍処理単位以上の場合（Ｓ３００３においてＮＯの場合）、処理はステップＳ３００２へ移行する。
【００３６】
Ｓ３００４において、ＣＰＵ１０１は、乱数位置カウンタｐが０であるかを判断する。乱数位置カウンタｐが０である場合（Ｓ３００４でＹＥＳの場合）、処理は、Ｓ３００５に移行する。乱数位置カウンタｐが０でない（開始位置でない）場合（Ｓ３００４でＮＯの場合）、処理は、Ｓ３００５に移行する。
【００３７】
Ｓ３００５において、ＣＰＵ１０１は、乱数位置カウンタｐに対応する乱数バッファ１０９の位置に、取得した乱数を上書き格納する。この乱数バッファ１０９に格納された乱数が挿抜位置を決定するために用いられる。Ｓ３００５の後、処理は、Ｓ３００７へ移行し、Ｓ３００７において、ＣＰＵ１０１は、乱数位置カウンタｐを１だけインクリメントして、処理は、Ｓ３００１に進む。
【００３８】
Ｓ３００６において、ＣＰＵ１０１は、取得した乱数と、１つ前の乱数位置カウンタｐ−１に対応する乱数バッファ１０９の位置に格納された乱数（隣接乱数）との差の絶対値（図１０（ａ）に示す距離Ｌに相当）が所定の最小値から所定の最大値の間、即ち所定の範囲内であるかを判定する。この差の絶対値が所定の範囲内である場合（Ｓ３００６でＹＥＳの場合）、処理は、ステップＳ３００５へ移行する。また、この差の絶対値が所定の範囲内でない場合（Ｓ３００６でＮＯの場合）、処理は、Ｓ３００２へ移行する。この所定の最小値及び最大値は、隣接する画素の挿抜位置間で取り得る相対距離を第１の距離（最小値）と第２の距離（最大値）の間に制限するものであり、例えばハーフトーン画像の線数と解像度とによって決定される。解像度６００ｄｐｉ、線数１００ｌｐｉのハーフトーン画像よりも、６００ｄｐｉ、２００ｌｐｉのハーフトーン画像の方が、ある位置の画素の挿入・間引きが、他の位置のドット形成への影響が大きくなってしまう。そのため、解像度に対する線数が多いハーフトーン画像の最大値に対しては、それが少ないハーフトーン画像で設定される最大値よりも小さく設定する。
【００３９】
図２の説明に戻る。Ｓ２００６において、ＣＰＵ１０１は、乱数生成回数カウント値ｃを＋１だけインクリメントする。この乱数生成回数カウント値ｃは、後述のステップＳ２００８の座標演算処理で、変倍処理前のハーフトーン画像に対する画素の挿抜処理を行う時に用いる。Ｓ２００６の後、処理はステップＳ２００７へ進む。
【００４０】
ステップＳ２００７〜Ｓ２０１０は、主走査出力サイズ分の画素の値を計算するステップである。
【００４１】
Ｓ２００７において、ＣＰＵ１０１は、主走査位置ｘが主走査出力サイズより小さいかを判断する。主走査位置ｘが主走査出力サイズより小さい場合（Ｓ２００７でＹＥＳの場合）、処理は、ステップＳ２００８へ移行する。主走査位置ｘが主走査出力サイズ以上である場合（Ｓ２００７でＮＯの場合）、処理は、ステップＳ２０１１へ移行する。処理がＳ２０１１へ移行した場合、ＣＰＵ１０１は、主走査位置ｘに０を代入し、副走査位置ｙを１だけインクリメントして、処理をＳ２００３へと進める。
【００４２】
Ｓ２００８において、ＣＰＵ１０１は、乱数バッファ１０９に蓄積された乱数を利用して、出力バッファ１１０に格納された変倍処理前のハーフトーン画像に対してどの画素をプリンタユニット１１１へ転送するかを決定する処理（座標演算処理）を実行する。図４のフローチャートは、この座標演算処理の処理フローを説明した図である。
【００４３】
図４のフローチャートの説明を行う。Ｓ４００１において、ＣＰＵ１０１は、変倍処理が拡大処理であるかを判断する。変倍処理が拡大処理である場合（Ｓ４００１でＹＥＳの場合）、処理は、Ｓ４００２に移行する。変倍処理が拡大処理でない場合（Ｓ４００１でＮＯの場合）、処理は、Ｓ４００３へ移行する。
【００４４】
ステップＳ４００２において、ＣＰＵ１０１は、主走査位置ｘに対応する乱数として、Ｓ３００５にて乱数位置カウンタｐ＝ｘのときに格納した乱数を乱数バッファ１０９から読み込み、この読み込んだ乱数が、副走査位置ｙと変倍処理単位との剰余算の結果より小さいかを判断する。つまり、走査しているハーフトーン画像の主走査位置ｘにおいて、変倍処理単位内で画素の挿入が終わっているかどうかの判断をしている。この読み込んだ乱数がこの剰余算の結果より小さい場合（Ｓ４００２でＹＥＳの場合）、処理は、Ｓ４００４へ移行する。また、この読み込んだ乱数がこの剰余算の結果以上の場合（Ｓ４００２でＮＯの場合）、処理は、Ｓ４００５へ移行する。
【００４５】
Ｓ４００４において、ＣＰＵ１０１は、副走査位置ｙから乱数生成回数カウント値ｃと１画素挿入分を考慮した値ｙ−ｃ−１の画素を指定する演算を行う。つまり、このＳ４００４の処理において、ＣＰＵ１０１は、変倍処理前のハーフトーン画像の面内座標で（ｘ、ｙ−ｃ−１）の画素を、変倍処理後のハーフトーン画像の座標（ｘ、ｙ）の画素として指定する演算を行う。Ｓ４００４の処理の後、処理は、図２のステップＳ２００９へ移行する。
【００４６】
Ｓ４００５において、ＣＰＵ１０１は、副走査位置ｙから、乱数生成回数カウント値ｃを減算した値ｙ−ｃの画素を指定する演算を行う。つまり、このＳ４００５の処理において、ＣＰＵ１０１は、ハーフトーン画像の面内座標（ｘ、ｙ−ｃ）の画素を、変倍処理後のハーフトーン画像の座標（ｘ、ｙ）の画素として指定する演算を行う。Ｓ４００５の処理の後、処理は、図２のステップＳ２００９へ移行する。
【００４７】
一方、ステップＳ４００３において、ＣＰＵ１０１は、主走査位置ｘに対応する乱数として、Ｓ３００５にて乱数位置カウンタｐ＝ｘのときに格納した乱数を乱数バッファ１０９から読み込み、この読み込んだ乱数が、副走査位置ｙと変倍処理単位との剰余算の結果より小さいかを判断する。つまり、走査しているハーフトーン画像の主走査位置ｘにおいて、変倍処理単位内で画素の挿入が終わっているかどうかの判断をしている。この読み込んだ乱数がこの剰余算の結果より小さい場合（Ｓ４００３でＹＥＳの場合）、処理は、Ｓ４００６へ移行する。また、この読み込んだ乱数がこの剰余算の結果以上の場合（Ｓ４００３でＮＯの場合）、処理は、Ｓ４００７へ移行する。
【００４８】
Ｓ４００６において、ＣＰＵ１０１は、副走査位置ｙから乱数生成回数カウント値ｃと１画素間引き分を考慮した値ｙ＋ｃ＋１の画素を指定する演算を行う。つまり、このＳ４００６の処理において、ＣＰＵ１０１は、ハーフトーン画像の面内座標で（ｘ、ｙ＋ｃ＋１）の画素を、変倍処理後のハーフトーン画像の座標（ｘ、ｙ）の画素として指定する演算を行う。Ｓ４００６の処理の後、処理は、図２のステップＳ２００９へ移行する。
【００４９】
Ｓ４００７において、ＣＰＵ１０１は、副走査位置ｙから、乱数生成回数カウント値ｃを加算した値ｙ＋ｃの画素を指定する演算を行う。つまり、このＳ４００５の処理において、ＣＰＵ１０１は、ハーフトーン画像の面内座標（ｘ、ｙ＋ｃ）の画素を、変倍処理後のハーフトーン画像の座標（ｘ、ｙ）の画素として指定する演算を行う。Ｓ４００７の処理の後、処理は、図２のステップＳ２００９へ移行する。
【００５０】
Ｓ２００９において、ＣＰＵ１０１は、ステップＳ２００８での演算により求めた座標値を出力バッファ１１０に指示し、出力バッファ１１０に格納されたハーフトーン画像の当該座標値の画素をプリンタユニット１１１転送する。
【００５１】
Ｓ２０１０において、ＣＰＵ１０１は、主走査位置ｘを１だけインクリメントする。Ｓ２０１０の後、処理はＳ２００７へ移行する。
【００５２】
以上の処理フローを実行すると図１０（ａ）のように画素の挿抜位置を、１つ前の挿抜位置との変倍処理方向での距離Ｌを制御して決定することができ、図１０（ｂ）に示すように挿抜処理後のハーフトーン画像を出力できる。図１０（ｂ）に示すハーフトーン画像は、ディザパターンの崩れでドットが不安定になる箇所の変倍処理方向の長さを抑えつつ、変倍処理方向に適度に分散させたものとなる。
【００５３】
以上、本実施例によれば、乱数を利用しても安定したハーフトーン画像を提供する事が可能となる。
【００５４】
（実施例２）
実施例１の乱数テーブル生成処理において、乱数生成器１０８で生成した乱数とその生成した乱数の隣接乱数との差が所定の範囲内に収まるように、ＣＰＵ１０１は主走査位置ｘが１増えるごとに乱数を取得していた。本実施例では、乱数テーブル生成処理において、ＣＰＵ１０１は主走査位置ｘ＋１に対応する乱数テーブルの値に、直前の主走査位置ｘに対応する乱数テーブルの値をコピーした同じ値を使う実施例を説明する。乱数テーブルの値を同じにすることで、画素の挿抜位置は、主走査方向に連続して隣接することになる。本実施例では、この同じ値をどの程度連続して使うかを決定するために、主走査処理単位Ｎ（Ｎは自然数）が設定される。つまり、本実施例において、この設定された主走査処理単位のＮ回（回数Ｎ）、連続して画素の挿抜位置が隣接するように、挿抜位置は決定される。
【００５５】
なお、主走査処理単位とは、変倍処理方向（本実施例において副走査方向）に対して垂直方向に、挿抜位置を隣接して連続させる量であり、乱数テーブル生成処理で、乱数バッファ１０９に格納する値を何回連続で同じ値をコピーするかを決定する値である。例えば、主走査処理単位が５である場合、乱数バッファ１０９に格納される値は５つごとに変わることになる。一般的な乱数生成器１０８はシフトレジスタで構成され、生成する乱数は疑似乱数である。よって、シフトレジスタの大きさによっては、生成される乱数がパターンとして周期性をもってしまう。主走査処理単位は、生成する乱数の量を調整して乱数パターンが周期性を持たないようにするためのものである。
【００５６】
本実施例において、主走査処理単位は挿入・間引きが人の目に見えにくいように、ハーフトーン画像の線数に応じて、所定の値として予めＲＯＭ１０４に格納されている。なお、主走査処理単位としてＣＰＵ１０１は操作部１０２を介してユーザが設定した値を取得しても良い。
【００５７】
以下、本実施例における乱数テーブル生成処理ステップ（Ｓ２００５）について説明する。なお、本実施例において乱数テーブル生成処理以外の他の構成は、実施例１の構成と同様のものとする。
【００５８】
図５は、本実施例における乱数テーブル生成処理（Ｓ２００５）の処理フローを示したフローチャートである。図５に示す処理フローは、乱数生成器１０８の処理と、ＲＯＭ１０４に格納されている制御プログラムをＣＰＵ１０１がＲＡＭ１０３にロードし、展開、実行することで実現される処理とによって実行される。
【００５９】
ステップＳ５０００において、ＣＰＵ１０１は、乱数位置カウンタｐの初期化（ｐ＝０）を実行し、また、乱数バッファ１０９のバッファサイズを主走査出力サイズで確保する。本実施例において、この乱数バッファ１０９上の位置は、乱数位置カウンタｐによって一意に決定される。また、ＣＰＵ１０１は、ＲＯＭ１０４から主走査処理単位Ｎを読み出してこれを参照する。ステップＳ５０００の次にＣＰＵ１０１はステップＳ５００１に処理を進める。
【００６０】
Ｓ５００１において、ＣＰＵ１０１は、乱数位置カウンタｐがＲＡＭ１０３に格納されている主走査出力サイズより小さいかを判断する。乱数位置カウンタｐが主走査出力サイズより小さい場合（Ｓ５００１でＹＥＳの場合）、処理はステップＳ５００２へ移行する。乱数位置カウンタｐが主走査出力サイズ以上の場合（Ｓ５００１でＮＯの場合）、乱数テーブル生成処理は終了し、Ｓ２００６へ処理は移行する。
【００６１】
Ｓ５００２において、ＣＰＵ１０１は、乱数位置カウンタｐと主走査処理単位Ｎとの剰余算が０であるかを判断する。この乱数位置カウンタｐと主走査処理単位Ｎとの剰余算が０である場合（Ｓ５００２でＹＥＳの場合）、処理は、ステップＳ５００３へ移行する。また、この乱数位置カウンタｐと主走査処理単位Ｎとの剰余算が０でない場合（Ｓ５００２でＮＯの場合）、処理は、ステップＳ５００７へ移行する。
【００６２】
Ｓ５００７において、ＣＰＵ１０１は、乱数位置カウンタｐ−１に対応する位置の乱数バッファ１０９の格納された乱数を取得する。そして処理はＳ５００６へ移行する。
【００６３】
Ｓ５００３において、乱数生成器１０８が乱数を生成し、ＣＰＵ１０１は、乱数生成器１０８で生成した乱数を取得する。そして処理はステップＳ５００４へ移行する。
【００６４】
Ｓ５００４において、ＣＰＵ１０１は、Ｓ５００３で取得した乱数が変倍処理単位より小さいかを判断する。取得した乱数が変倍処理単位より小さい場合（Ｓ５００４においてＹＥＳの場合）、処理は、ステップＳ５００５へ移行する。取得した乱数が変倍処理単位以上の場合（Ｓ５００４においてＮＯの場合）、処理はステップＳ５００３へ移行する。
【００６５】
Ｓ５００５において、ＣＰＵ１０１は、乱数位置カウンタｐが０であるかを判断する。乱数位置カウンタｐが０である場合（Ｓ５００５でＹＥＳの場合）、処理は、Ｓ５００６に移行する。乱数位置カウンタｐが０でない場合（Ｓ５００５でＮＯの場合）、処理は、Ｓ５００８に移行する。
【００６６】
Ｓ５００８において、ＣＰＵ１０１は、取得した乱数と、１つ前の乱数位置カウンタｐ−１に対応する乱数バッファ１０９の位置に格納された乱数（隣接乱数）との差の絶対値が所定の最小値から所定の最大値の間、即ち所定の範囲内であるかを判定する。この差の絶対値が所定の範囲内である場合（Ｓ５００８でＹＥＳの場合）、処理は、ステップＳ５００６へ移行する。また、この差の絶対値が所定の範囲内でない場合（Ｓ５００８でＮＯの場合）、処理は、Ｓ５００３へ移行する。この所定の最小値及び最大値については実施例１と同様なものである。
【００６７】
Ｓ５００６において、ＣＰＵ１０１は、乱数位置カウンタｐに対応する乱数バッファ１０９の位置に、取得した乱数を上書き格納する。そして処理は、Ｓ５００９へ移行し、Ｓ５００９において、ＣＰＵ１０１は、乱数位置カウンタｐを１だけインクリメントして、処理は、Ｓ５００１に進む。
【００６８】
以上の処理フローを実行すると、図１０（ａ）のように挿抜位置を変倍処理方向に垂直な方向にＮ回連続して隣接する。
【００６９】
以上、本実施例によれば、乱数生成器１０８で生成する乱数量を抑制しながら、挿入・間引き座標を制御する事が可能となり、安定したハーフトーン画像を提供する事が可能となる。
【００７０】
（実施例３）
実施例２では主走査処理単位Ｎを所定の定数としていたが、これにはハーフトーン画像の線数に応じて決定する必要がある。本実施例では、ハーフトーン画像の線数が分からない場合に対応するため、主走査処理単位Ｎ（回数Ｎ）に所定の定数を用いずに、挿抜位置を隣接させるか否かの決定に乱数を利用する。なお、本実施例において、ＲＯＭ１０４には所定の規定値（例えば「７」）が格納されている。
【００７１】
以下、本実施例における乱数テーブル生成処理ステップ（Ｓ２００５）について説明する。なお、本実施例において乱数テーブル生成処理以外の他の構成は、実施例１の構成と同様のものとする。
【００７２】
図６は、本実施例における乱数テーブル生成処理（Ｓ２００５）の処理フローを示したフローチャートである。図６に示す処理フローは、乱数生成器１０８の処理と、ＲＯＭ１０４に格納されている制御プログラムをＣＰＵ１０１がＲＡＭ１０３にロードし、展開、実行することで実現される処理とによって実行される。
【００７３】
ステップＳ６０００において、ＣＰＵ１０１は、乱数位置カウンタｐの初期化（ｐ＝０）を実行し、また、乱数バッファ１０９のバッファサイズを主走査出力サイズで確保する。本実施例においても、この乱数バッファ１０９上の位置は、乱数位置カウンタｐによって一意に決定される。また、ＣＰＵ１０１は、ＲＯＭ１０４から所定の規定値を読み出し、ＲＡＭ１０３へ格納する。このＲＡＭ１０３に格納された所定の規定値はＣＰＵ１０１によって適宜参照される。
【００７４】
Ｓ６００１において、ＣＰＵ１０１は、乱数位置カウンタｐがＲＡＭ１０３に格納されている主走査出力サイズより小さいかを判断する。乱数位置カウンタｐが主走査出力サイズより小さい場合（Ｓ６００１でＹＥＳの場合）、処理はステップＳ６００２へ移行する。乱数位置カウンタｐが主走査出力サイズ以上の場合（Ｓ６００１でＮＯの場合）、乱数テーブル生成処理は終了し、ＣＰＵ１０１は処理をステップＳ２００６へ進める。
【００７５】
Ｓ６００２において、ＣＰＵ１０１は、乱数を生成する。そして処理は、ステップＳ６００３へ移行する。
【００７６】
Ｓ６００３において、ＣＰＵ１０１は、Ｓ６００２で生成した乱数と所定の規定値との剰余算が０であるかを判断する。この剰余算の結果が０である場合（Ｓ６００３でＹＥＳの場合）、処理は、ステップＳ６００４へ移行する。また、この剰余算の結果が０出ない場合（Ｓ６００３でＮＯの場合）、処理は、ステップＳ６００８へ移行する。
【００７７】
このステップＳ６００３の判断が挿抜位置をどの程度連続して隣接させるかを決定することになる。つまり主走査処理単位Ｎを乱数によって制御していることになる。なお、このステップＳ６００３では、剰余算の結果が０でなくとも、例えば剰余算の結果が所定の規定値の１／２以下の場合にステップＳ６００４へ処理を進め、１／２より大きい場合にステップＳ６００８へ処理を進めるようにしても良く、本実施例のＣＰＵ１０１が生成した乱数の利用の仕方に制限されない。
【００７８】
Ｓ６００８において、ＣＰＵ１０１は、乱数位置カウンタｐ−１に対応する位置の乱数バッファ１０９の格納された乱数を取得する。そして処理はステップＳ６００７へ移行する。
【００７９】
Ｓ６００４において、乱数生成器１０８が乱数を生成し、ＣＰＵ１０１は、乱数生成器１０８で生成した乱数を取得する。
【００８０】
Ｓ６００５において、ＣＰＵ１０１は、Ｓ６００４で取得した乱数が変倍処理単位より小さいかを判断する。取得した乱数が変倍処理単位より小さい場合（Ｓ６００５においてＹＥＳの場合）、処理は、ステップＳ６００６へ移行する。取得した乱数が変倍処理単位以上の場合（Ｓ６００５においてＮＯの場合）、処理はステップＳ６００４へ移行する。
【００８１】
Ｓ６００６において、ＣＰＵ１０１は、乱数位置カウンタｐが０であるかを判断する。乱数位置カウンタｐが０である場合（Ｓ６００６でＹＥＳの場合）、処理は、Ｓ６００７に移行する。乱数位置カウンタｐが０でない場合（Ｓ６００６でＮＯの場合）、処理は、Ｓ６００９に移行する。
【００８２】
Ｓ６００９において、ＣＰＵ１０１は、取得した乱数と、１つ前の乱数位置カウンタｐ−１に対応する乱数バッファ１０９の位置に格納された乱数（隣接乱数）との差の絶対値が所定の最小値から所定の最大値の間、即ち所定の範囲内であるかを判定する。この差の絶対値が所定の範囲内である場合（Ｓ６００９でＹＥＳの場合）、処理は、ステップＳ６００７へ移行する。また、この差の絶対値が所定の範囲内でない場合（Ｓ６００９でＮＯの場合）、処理は、Ｓ６００４へ移行する。この所定の最小値及び最大値については実施例１と同様なものである。
【００８３】
Ｓ６００７において、ＣＰＵ１０１は、乱数位置カウンタｐに対応する乱数バッファ１０９の位置に、取得した乱数を上書き格納する。そして処理は、Ｓ６０１０へ移行して、ＣＰＵ１０１は、乱数位置カウンタｐを１だけインクリメントする。そして、処理は、Ｓ６００１に進む。
【００８４】
以上、本実施例を用いれば、ハーフトーン画像に利用されている線数が不明であった場合に、乱数生成器１０８の生成する乱数の量を抑制しながら、挿入・間引き座標を制御する事が可能となる。
【００８５】
（実施例４）
実施例２では、所定の主走査処理単位Ｎにもとづいて乱数生成器１０８の生成する乱数生成量を抑制した。しかしながら、一般に画像処理装置内の画像処理コントローラ１０７は、連続諧調の画像からハーフトーン画像を生成する時に、ハーフトーン処理を連続諧調の画像の面内情報に応じて処理を切りかえる。面内情報とは、連続階調画像のある処理対象領域が写真であるといった情報である。図７（ａ）は、この時のハーフトーン画像を示した図であり、図７（ｂ）はこのハーフトーン画像の面内情報を示した図である。この面内情報に応じて、画像処理コントローラ１０７は、処理対象領域のハーフトーン処理の線数や角度を切りかえる。このため、画素を挿入・間引きすべき位置の範囲、主走査処理単位は処理対象領域の面内情報に応じて、適した値にすることが好ましい。
【００８６】
本実施例では、画像の面内情報に応じて変倍処理に関わる各係数が変更される。
【００８７】
以下、本実施例における乱数テーブル生成処理ステップ（Ｓ２００５）について説明する。なお、本実施例において乱数テーブル生成処理以外の他の構成は、実施例１の構成と同様のものとする。なお、本実施例において、表１に示されるような面内情報と変倍処理に関わる各係数との関係を示すテーブルが予めＲＯＭ１０４に格納されている。
【００８８】
【表１】
0005701030.tif 000002
【００８９】
この表１について説明する。イメージ種類は「写真」「グラフィック」「文字」「背景」の４種類あり、イメージ種類ごとに最小値、最大値、主走査処理単位が設定されている。例えばイメージ種類「写真」には、最小値ａ、最大値ｂ、主走査処理単位ｃが設定されている。他のイメージ種類についても同様である。これら最小値、最大値、主走査処理単位は、後述するステップＳ８００９、Ｓ８００３で用いられる値であり、実施例２におけるステップＳ５００８の所定の最小値、所定の最大値、Ｓ５００２の主走査処理単位と同様のものである。
【００９０】
図８は、本実施例における乱数テーブル生成処理（Ｓ２００５）の処理フローを示したフローチャートである。図８に示す処理フローは、乱数生成器１０８の処理と、ＲＯＭ１０４に格納されている制御プログラムをＣＰＵ１０１がＲＡＭ１０３にロードし、展開、実行することで実現される処理とによって実行される。
【００９１】
ステップＳ８０００において、ＣＰＵ１０１は、乱数位置カウンタｐの初期化（ｐ＝０）を実行し、また、乱数バッファ１０９のバッファサイズを主走査出力サイズで確保する。本実施例において、この乱数バッファ１０９上の位置は、乱数位置カウンタｐによって一意に決定される。そしてＣＰＵ１０１は、処理をステップＳ８００１へ進める。
【００９２】
Ｓ８００１において、ＣＰＵ１０１は、乱数位置カウンタｐがＲＡＭ１０３に格納されている主走査出力サイズより小さいかを判断する。乱数位置カウンタｐが主走査出力サイズより小さい場合（Ｓ８００１でＹＥＳの場合）、処理はステップＳ８００２へ移行する。乱数位置カウンタｐが主走査出力サイズ以上の場合（Ｓ８００１でＮＯの場合）、乱数テーブル生成処理は終了し、処理はステップＳ２００６へ進む。
【００９３】
Ｓ８００２において、ＣＰＵ１０１は、乱数位置カウンタｐに対応する主走査位置ｘ、副走査位置ｙに対応するハーフトーン画像の座標（ｐ、ｙ）の面内情報（イメージ種類）を取得して、ＲＯＭ１０４に格納されている表１から所定の最小値、最大値、および主走査処理単位といった各係数を取得する。そして処理はステップＳ８００３へ移行する。
【００９４】
Ｓ８００３において、ＣＰＵ１０１は、乱数位置カウンタｐとＳ８００２で取得した主走査処理単位との剰余算が０であるかを判断する。この乱数位置カウンタｐと主走査処理単位との剰余算が０である場合（Ｓ８００３でＹＥＳの場合）、処理は、ステップＳ８００４へ移行する。また、この乱数位置カウンタｐと主走査処理単位との剰余算が０でない場合（Ｓ８００３でＮＯの場合）、処理は、ステップＳ８００８へ移行する。
【００９５】
Ｓ８００８において、ＣＰＵ１０１は、乱数位置カウンタｐ−１に対応する位置の乱数バッファ１０９の格納された乱数を取得する。そして処理はＳ８００７へ移行する。
【００９６】
Ｓ８００４において、乱数生成器１０８が乱数を生成し、ＣＰＵ１０１は、乱数生成器１０８で生成した乱数を取得する。そして処理はステップＳ８００５へ移行する。
【００９７】
Ｓ８００５において、ＣＰＵ１０１は、Ｓ８００４で取得した乱数が変倍処理単位より小さいかを判断する。取得した乱数が変倍処理単位より小さい場合（Ｓ８００５においてＹＥＳの場合）、処理は、ステップＳ８００６へ移行する。取得した乱数が変倍処理単位以上の場合（Ｓ８００５においてＮＯの場合）、処理はステップＳ８００４へ移行する。
【００９８】
Ｓ８００６において、ＣＰＵ１０１は、乱数位置カウンタｐが０であるかを判断する。乱数位置カウンタｐが０である場合（Ｓ８００６でＹＥＳの場合）、処理は、Ｓ８００６に移行する。乱数位置カウンタｐが０でない場合（Ｓ８００６でＮＯの場合）、処理は、Ｓ８００９に移行する。
【００９９】
Ｓ８００９において、ＣＰＵ１０１は、取得した乱数と、１つ前の乱数位置カウンタｐ−１に対応する乱数バッファ１０９の位置に格納された乱数（隣接乱数）との差の絶対値がＳ８００２で取得した所定の最小値から所定の最大値の間、即ち所定の範囲内であるかを判定する。この差の絶対値が所定の範囲内である場合（Ｓ８００９でＹＥＳの場合）、処理は、ステップＳ８００７へ移行する。また、この差の絶対値が所定の範囲内でない場合（Ｓ８００９でＮＯの場合）、処理は、Ｓ８００４へ移行する。この所定の最小値及び最大値については実施例１と同様なものである。
【０１００】
Ｓ８００７において、ＣＰＵ１０１は、乱数位置カウンタｐに対応する乱数バッファ１０９の位置に、取得した乱数を上書き格納する。そして処理は、Ｓ８０１０へ移行し、Ｓ８０１０において、ＣＰＵ１０１は、乱数位置カウンタｐを１だけインクリメントして、処理は、Ｓ８００１に進む。
【０１０１】
以上、本実施例によれば、面内情報すなわちハーフトーン処理方法に応じた挿入・補間処理方法を利用する事ができる。結果、安定したハーフトーン画像を提供する事が可能となる。
【０１０２】
なお、イメージ種類と各係数の関係を表す表は表１だけに限らず、イメージ種類の数に応じて表の大きさを変えても良い。
【０１０３】
（実施例５）
実施例２では、所定の主走査処理単位にもとづいて乱数生成器１０８の生成する乱数生成量を抑制した。しかしながら、電子写真では、プリンタユニット１１１が利用する記録メディア（記録媒体）の種類に応じて、記録時の電圧や定着温度などの環境を変更する。この記録時の環境（電圧、定着温度など）がハーフトーン画像のドット形成に影響を与え、本発明による挿入・間引き方法による変倍処理に影響を与える。
【０１０４】
そこで、本実施例ではこれに対応する為、記録メディアに応じて変倍処理に関わる各係数が変更される画像処理装置について説明する。
【０１０５】
以下、本実施例における乱数テーブル生成処理ステップ（Ｓ２００５）について説明する。なお、本実施例において乱数テーブル生成処理以外の他の構成は、実施例１の構成と同様のものとする。なお、本実施例において、表２に示されるような記録メディアと変倍処理に関わる各係数との関係を示すテーブルが予めＲＯＭ１０４に格納されている。また、記録メディアの種類の情報は操作部１０２を介してユーザが設定し、この設定情報をＣＰＵ１０１はＲＡＭ１０３に格納している。
【０１０６】
【表２】
0005701030.tif 000003
【０１０７】
この表２について説明する。メディア種類は「紙種Ａ」「紙種Ｂ」「紙種Ｃ」「紙種Ｄ」の４種類あり、メディア種類ごとに最小値、最大値、主走査処理単位が設定されている。例えばメディア種類「紙種Ａ」には、最小値ａ、最大値ｂ、主走査処理単位ｃが設定されている。他のメディア種類についても同様である。これら最小値、最大値、主走査処理単位は、後述するステップＳ９００９、Ｓ９００３で用いられる値であり、実施例２におけるステップＳ５００８の所定の最小値、所定の最大値、Ｓ５００２の主走査処理単位と同様のものである。
【０１０８】
図９は、本実施例における乱数テーブル生成処理（Ｓ２００５）の処理フローを示したフローチャートである。図９に示す処理フローは、乱数生成器１０８の処理と、ＲＯＭ１０４に格納されている制御プログラムをＣＰＵ１０１がＲＡＭ１０３にロードし、展開、実行することで実現される処理とによって実行される。
【０１０９】
ステップＳ９０００において、ＣＰＵ１０１は、乱数位置カウンタｐの初期化（ｐ＝０）を実行し、また、乱数バッファ１０９のバッファサイズを主走査出力サイズで確保する。本実施例において、この乱数バッファ１０９上の位置は、乱数位置カウンタｐによって一意に決定される。
【０１１０】
Ｓ９００１において、ＣＰＵ１０１は、乱数位置カウンタｐがＲＡＭ１０３に格納されている主走査出力サイズより小さいかを判断する。乱数位置カウンタｐが主走査出力サイズより小さい場合（Ｓ９００１でＹＥＳの場合）、処理はステップＳ９００２へ移行する。乱数位置カウンタｐが主走査出力サイズ以上の場合（Ｓ９００１でＮＯの場合）、乱数テーブル生成処理は終了し、処理はステップＳ２００６へ進む。
【０１１１】
Ｓ９００２において、ＣＰＵ１０１は、メディア種類（紙種）をＲＡＭ１０３から読み出して、ＲＯＭ１０４に格納されている表２から読み出したメディア種類に対応する所定の最小値、最大値、および主走査処理単位といった各係数を取得する。
【０１１２】
Ｓ９００３において、ＣＰＵ１０１は、乱数位置カウンタｐとＳ９００２で取得した主走査処理単位との剰余算が０であるかを判断する。この乱数位置カウンタｐと主走査処理単位との剰余算が０である場合（Ｓ９００３でＹＥＳの場合）、処理は、ステップＳ９００４へ移行する。また、この乱数位置カウンタｐと主走査処理単位との剰余算が０でない場合（Ｓ９００３でＮＯの場合）、処理は、ステップＳ９００８へ移行する。
【０１１３】
Ｓ９００８において、ＣＰＵ１０１は、乱数位置カウンタｐ−１に対応する位置の乱数バッファ１０９の格納された乱数を取得する。そして処理はＳ９００７へ移行する。
【０１１４】
Ｓ９００４において、乱数生成器１０８が乱数を生成し、ＣＰＵ１０１は、乱数生成器１０８で生成した乱数を取得する。そして処理はステップＳ９００５へ移行する。
【０１１５】
Ｓ９００５において、ＣＰＵ１０１は、Ｓ９００４で取得した乱数が変倍処理単位より小さいかを判断する。取得した乱数が変倍処理単位より小さい場合（Ｓ９００５においてＹＥＳの場合）、処理は、ステップＳ９００６へ移行する。取得した乱数が変倍処理単位以上の場合（Ｓ９００５においてＮＯの場合）、処理はステップＳ９００４へ移行する。
【０１１６】
Ｓ９００６において、ＣＰＵ１０１は、乱数位置カウンタｐが０であるかを判断する。乱数位置カウンタｐが０である場合（Ｓ９００６でＹＥＳの場合）、処理は、Ｓ９００６に移行する。乱数位置カウンタｐが０でない場合（Ｓ９００６でＮＯの場合）、処理は、Ｓ９００９に移行する。
【０１１７】
Ｓ９００９において、ＣＰＵ１０１は、取得した乱数と、１つ前の乱数位置カウンタｐ−１に対応する乱数バッファ１０９の位置に格納された乱数（隣接乱数）との差がＳ８００２で取得した所定の最小値から所定の最大値の間、即ち所定の範囲内であるかを判定する。この差が所定の範囲内である場合（Ｓ９００９でＹＥＳの場合）、処理は、ステップＳ９００７へ移行する。また、この差が所定の範囲内でない場合（Ｓ９００９でＮＯの場合）、処理は、Ｓ９００４へ移行する。この所定の最小値及び最大値については実施例１と同様なものである。
【０１１８】
Ｓ９００７において、ＣＰＵ１０１は、乱数位置カウンタｐに対応する乱数バッファ１０９の位置に、取得した乱数を上書き格納する。そして処理は、Ｓ９０１０へ移行し、Ｓ９０１０において、ＣＰＵ１０１は、乱数位置カウンタｐを１だけインクリメントして、処理は、Ｓ９００１に進む。
【０１１９】
以上、本実施例はメディア種類に応じて各係数を取得するが、実施例４の技術思想と組み合わせて、面内情報とメディア種類との両方を考慮したテーブルを予めＲＯＭ１０４に格納しておき、ＣＰＵ１０１はこのテーブルを適宜参照するようにしても良い。
【０１２０】
以上、本実施例によれば、記録メディアの種類に応じた挿入・補間処理方法を利用する事ができる。結果、安定したハーフトーン画像を提供する事が可能となる。
【０１２１】
なお、メディア種類と各係数の関係を表す表は表２だけに限らず、メディア種類の数に応じて表の大きさを変えても良い。
【０１２２】
（その他の実施例）
また、本発明は、以下の処理を実行することによっても実現される。その処理は、上述した実施例の機能を実現させるソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【図１】
0005701030.tif 000004
【図２】
0005701030.tif 000005
【図３】
0005701030.tif 000006
【図４】
0005701030.tif 000007
【図５】
0005701030.tif 000008
【図６】
0005701030.tif 000009
【図７】
0005701030.tif 000010
【図８】
0005701030.tif 000011
【図９】
0005701030.tif 000012
【図１０】
0005701030.tif 000013
【図１１】
0005701030.tif 000014