(57)【特許請求の範囲】
【請求項１】
複数ビットのデータを記憶し、第１のシフト信号に基づいて記憶内容をシフトさせる第１のシフトレジスタ手段と、
複数ビットのデータを記憶可能で、第２のシフト信号に基づいて、記憶内容をシフトさせるとともに、前記第１のシフトレジスタ手段の最下位ビットの内容を最上位ビットの内容として取り込む第２のシフトレジスタ手段と、
拡大率および／または縮小率に応じた複数ビットの数値データの一部を累積加算する加算手段とを有し、
前記加算手段により得られた加算結果としての数値データの所定ビットの情報に基づいて、前記第１のシフト信号および／または前記第２のシフト信号を生成することにより、前記拡大率および／または縮小率に応じて２値の画像データを伸長および／または圧縮する画像処理装置であって、
前記加算手段に初期値を設定するための初期値設定手段と、
挿入および／または削除される画素の位置が全ラインについて同一にならないように、前記初期値設定手段によって設定される初期値をライン毎に変更させる初期値変更手段とを備えたことを特徴とする画像処理装置。
【請求項２】
前記加算手段により得られた加算結果としての数値データの隣接する２個の所定ビットの情報に基づいて、前記第１のシフト信号および前記第２のシフト信号を生成する、請求項１に記載の画像処理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、カウンタのキャリーを利用して画像の拡大、縮小を行う画像処理装置に関するものである。
【０００２】
【従来の技術】
従来の画像処理装置として、カウンタのキャリーを利用して画像の拡大、縮小を行う構成のものがあった。
【０００３】
すなわち、第１のシフトレジスタと第２のシフトレジスタとを設け、第１のシフトレジスタの最下位ビットと第２のシフトレジスタの最上位ビットとを接続し、伸長、圧縮すべき画像データを第１のシフトレジスタにセットして、この第１のシフトレジスタの内容を第１のシフト信号に基づいてシフトさせるとともに、第２のシフトレジスタの内容を第２のシフト信号に基づいてシフトさせることにより、第１のシフト信号に基づくシフト回数と第２のシフト信号に基づくシフト回数との比に応じて画像データが伸長、圧縮される。
【０００４】
たとえば、画像を２倍に拡大する場合、第２のシフト信号に基づくシフト回数を第１のシフト信号に基づくシフト回数の２倍にする。これにより、第２のシフトレジスタの内容は第１のシフトレジスタの内容の２倍の速度でシフトされるので、第１のシフトレジスタの最下位ビットの内容が第２のシフトレジスタの最上位ビットに２回ずつ入力される結果となって、画像が２倍に拡大されるのである。
【０００５】
そして、このような拡大、縮小の倍率を任意に設定するために、カウンタを用いて、拡大、縮小の倍率に応じた数値データの一部を累積加算し、その加算結果のキャリーに基づいて第１あるいは第２のシフト信号を生成するのである。
【０００６】
たとえば、累積加算のキャリーを最下位ビットから１０ビット目とし、数値データを２５６に設定すると、２回に１回の割合でキャリーが出力されるので、このキャリーを第１のシフト信号として用いることにより、画像が２倍に拡大される。第２のシフト信号は、最下位ビットから１１ビット目の内容に基づいて生成してもよいし、あるいはカウンタのクロック信号を用いてもよい。
【０００７】
【発明が解決しようとする課題】
しかしながら、従来の画像処理装置では、カウンタに初期値を設定していなかったので、挿入、削除される画素の位置が全ラインについて同一になってしまい、縦縞モアレが発生するという課題があった。
【０００８】
本発明は、上記の点に鑑みて提案されたものであって、縮小、拡大による縦縞モアレの発生を抑制できる画像処理装置を提供することを目的としている。
【０００９】
【課題を解決するための手段】
上記目的を達成するため、請求項１に記載した発明の画像処理装置は、複数ビットのデータを記憶し、第１のシフト信号に基づいて記憶内容をシフトさせる第１のシフトレジスタ手段と、複数ビットのデータを記憶可能で、第２のシフト信号に基づいて、記憶内容をシフトさせるとともに、第１のシフトレジスタ手段の最下位ビットの内容を最上位ビットの内容として取り込む第２のシフトレジスタ手段と、拡大率および／または縮小率に応じた複数ビットの数値データの一部を累積加算する加算手段とを有し、加算手段により得られた加算結果としての数値データの所定ビットの情報に基づいて、第１のシフト信号および／または第２のシフト信号を生成することにより、拡大率および／または縮小率に応じて２値の画像データを伸長および／または圧縮する画像処理装置であって、加算手段に初期値を設定するための初期値設定手段と、挿入および／または削除される画素の位置が全ラインについて同一にならないように、初期値設定手段によって設定される初期値をライン毎に変更させる初期値変更手段とを備えている。
【００１０】
この画像処理装置によれば、初期値変更手段が、初期値設定手段によって設定される初期値をライン毎に変更させるので、挿入および／または削除される画素が全ラインについて同一にならないことから、縮小、拡大による縦縞モアレの発生を良好に抑制できる。
【００１１】
初期値設定手段によって設定される初期値は、たとえば拡大率および／または縮小率毎に２種類用いて、ライン毎に交互に切り換えるようにしてもよいし、拡大率および／または縮小率毎に３種類以上用いて、ライン毎に順次切り換えるようにしてもよい。なお、第１および第２のシフトレジスタにおける最下位ビットおよび最上位ビットは、データのシフト方向を基準にしたものであり、シフト方向上流側の端を最上位ビットと呼び、シフト方向下流側の端を最下位ビットと呼んでいる。
【００１２】
また、請求項２に記載した発明の画像処理装置は、請求項１に記載の画像処理装置であって、加算手段により得られた加算結果としての数値データの隣接する２個の所定ビットの情報に基づいて、第１のシフト信号および第２のシフト信号を生成する。
【００１３】
この画像処理装置によれば、請求項１に記載の画像処理装置による効果に加えて、加算手段により得られた加算結果としての数値データの１個の所定ビットの情報に基づいて１個のシフト信号を生成し、そのシフト信号を拡大の場合と縮小の場合とで第１のシフトレジスタ手段と第２のシフトレジスタ手段とに振り分けて使用する場合と比較して、シフト信号を振り分けるためのスイッチ手段が不要であり、ハードウェアで構成する場合には、回路が簡単になって安価に製造できる。
【００１４】
【発明の実施の形態】
以下、本発明の好ましい実施の形態を、図面を参照しつつ具体的に説明する。
【００１５】
図１は、本発明に係る画像処理装置を備えたファクシミリ装置の回路ブロック図であって、このファクシミリ装置は、ＣＰＵ１、ＮＣＵ２、ＲＡＭ３、モデム４、ＲＯＭ５、ＥＥＰＲＯＭ６、ゲートアレイ７、コーデック８、ＤＭＡＣ９、読取部１１、記録部１２、操作部１３、および表示部１４を備えている。ＣＰＵ１、ＮＣＵ２、ＲＡＭ３、モデム４、ＲＯＭ５、ＥＥＰＲＯＭ６、ゲートアレイ７、コーデック８、およびＤＭＡＣ９は、バス線により相互に接続されている。バス線には、アドレスバス、データバス、および制御信号線が含まれる。ゲートアレイ７には、読取部１１、記録部１２、操作部１３、および表示部１４が接続されている。ＮＣＵ２には、通信回線の一例としての電話回線１５が接続されている。
【００１６】
ＣＰＵ１は、ファクシミリ装置全体を制御する。ＮＣＵ２は、電話回線１５に接続されて網制御を行う。ＲＡＭ３は、各種のデータを記憶する。モデム４は、送信データの変調や受信データの復調などを行う。ＲＯＭ５は、各種のプログラムなどを記憶している。ＥＥＰＲＯＭ６は、各種の登録データやフラグなどを記憶する。ゲートアレイ７は、ＣＰＵ１の入出力インターフェイスとして機能するとともに、読取画像信号に対して各種の処理を施す。コーデック８は、送信ファクシミリデータの符号化や受信ファクシミリデータの復号化を行う。ＤＭＡＣ９は、ＲＡＭ３およびＥＥＰＲＯＭ６へのデータの書き込みや読み出しを行う。読取部１１は、通電電流に応じて発光量が変化する発光素子により読取原稿を照射する発光手段や、発光手段により照射された読取原稿からの反射光を受光して受光量に応じた読取画像信号を出力する受光手段や、読取原稿を搬送するための原稿送りモータなどを備えており、読取原稿を読み取って読取画像信号を出力する。記録部１２は、インクジェット方式あるいは熱転写方式などの印刷手段を備えており、受信画像などを記録用紙上に記録する。操作部１３は、キースイッチ群などからなり、使用者の操作に応じた信号を出力する。表示部１４は、ＬＣＤなどからなり、ＣＰＵ１により制御されて各種の表示を行う。
【００１７】
図２は、ゲートアレイ７に含まれる画像処理装置の回路ブロック図であって、この画像処理装置は、第１のレジスタ２１、第２のレジスタ２２、加算器２３、第１のラッチ回路２４、第２のラッチ回路２５、第１のシフトレジスタ２６、第２のシフトレジスタ２７、否定回路２８、および論理和回路３０を備えている。
【００１８】
第１のレジスタ２１には、ＣＰＵ１により画像の拡大率あるいは縮小率に応じた数値データである、たとえば１０ビットの拡縮データが格納される。第２のレジスタ２２には、加算器２３によるたとえば１１ビットの加算結果のうち、下位９ビットが格納される。なお第２のレジスタ２２には、ＣＰＵ１により、各ラインの加算の開始時に、初期値が設定される。加算器２３は、第１のレジスタ２１からの１０ビットの拡縮データと、第２のレジスタ２２からの９ビットの累積加算データとを加算し、その加算結果の下位９ビットを第２のレジスタ２２に格納し、最下位ビットから１０ビット目を第１のラッチ回路２４に格納し、最下位ビットから１１ビット目、すなわち最上位ビットを第２のラッチ回路２５に格納する。第１のラッチ回路２４は、たとえばＤフリップフロップ回路により構成されており、加算器２３による加算結果の最下位ビットから１０ビット目をラッチする。第２のラッチ回路２５は、たとえばＤフリップフロップ回路により構成されており、加算器２３による加算結果の最下位ビットから１１ビット目すなわち最上位ビットをラッチする。
【００１９】
第１のシフトレジスタ２６は、拡大あるいは縮小すべきたとえば８ビット分の画像データを保持し、論理和回路３０からの第１のシフト信号に基づいて、その内容を下位ビット側へシフトさせる。第２のシフトレジスタ２７は、否定回路２８からの第２のシフト信号に基づいて、その内容を下位ビット側へシフトさせるとともに、第１のシフトレジスタ２６の最下位ビットの内容を最上位ビットに取り込む。否定回路２８は、第２のラッチ回路２５からの出力を反転して第２のシフト信号として第２のシフトレジスタ２７に供給する。論理和回路３０は、第１のラッチ回路２４からの出力と第２のラッチ回路２５からの出力との論理和を第１のシフト信号として第１のシフトレジスタ２６に供給する。
【００２０】
すなわち、第１のシフトレジスタ２６は、複数ビットのデータを記憶し、第１のシフト信号に基づいて記憶内容をシフトさせる第１のシフトレジスタ手段を構成している。第２のシフトレジスタ２７は、複数ビットのデータを記憶可能で、第２のシフト信号に基づいて、記憶内容をシフトさせるとともに、第１のシフトレジスタ手段の最下位ビットの内容を最上位ビットの内容として取り込む第２のシフトレジスタ手段を構成している。加算器２３は、拡大率および／または縮小率に応じた数値データの一部を累積加算する加算手段を構成している。ＣＰＵ１は、ＲＯＭ５に記憶されているプログラムに基づいて動作することにより、加算手段に初期値を設定するための初期値設定手段を実現している。またＣＰＵ１は、ＲＯＭ５に記憶されているプログラムに基づいて動作することにより、挿入および／または削除される画素の位置が全ラインについて同一にならないように、初期値設定手段によって設定される初期値をライン毎に変更させる初期値変更手段を実現している。
【００２１】
次に、このように構成されたファクシミリ装置の動作の要点について説明する。読取部１１からゲートアレイ７にシリアルに出力されたアナログの読取画像信号は、ゲートアレイ７により２値の画像データに変換され、各種の処理が施されて、バッファメモリに格納され、８ビット分の画像データが、第１のシフトレジスタ２６にパラレルに格納される。一方、ＣＰＵ１により、第１のレジスタ２１に拡大率あるいは縮小率に応じた１０ビットの拡縮データが格納され、さらに、第２のレジスタ２２に初期値データが格納される。そして加算器２３が、たとえばシステムクロックに基づく所定のタイミングで、第１のレジスタ２１の内容と第２のレジスタ２２の内容とを加算し、その１１ビットの加算結果のうち、下位９ビットを第２のレジスタ２２に格納し、最下位ビットから１０ビット目を第１のラッチ回路２４に出力し、最下位ビットから１１ビット目すなわち最上位ビットを第２のラッチ回路２５に出力する。
【００２２】
これにより第１のラッチ回路２４が、システムクロックに基づく所定のタイミングで、加算器２３からの最下位ビットから１０ビット目の内容をラッチし、論理和回路３０に出力する。また第２のラッチ回路２５が、システムクロックに基づく所定のタイミングで、加算器２３からの最下位ビットから１１ビット目の内容をラッチし、否定回路２８に出力する。これにより否定回路２８が、第２のラッチ回路２５からの出力を反転させ、第２のシフト信号として第２のシフトレジスタ２７に出力する。さらに論理和回路３０が、第１のラッチ回路２４の出力と第２のラッチ回路２５の出力とから第１のシフト信号を生成し、第１のシフトレジスタ２６に出力する。そして第１のシフトレジスタ２６が、第１のラッチ回路２４からの第１のシフト信号がハイレベルであれば、システムクロックに基づく所定のタイミングで、保持している画像データを下位側へ１ビットシフトさせる。また第２のシフトレジスタ２７が、否定回路２８からの第２のシフト信号がハイレベルであれば、システムクロックに基づく所定のタイミングで、保持している画像データを下位側へ１ビットシフトさせるとともに、第１のシフトレジスタ２６の最下位ビットの内容を最上位ビットに取り込む。
【００２３】
したがって、第１のシフト信号に基づくシフト回数と第２のシフト信号に基づくシフト回数との組み合わせに応じて、第１のシフトレジスタ２６に格納されている画像データが圧縮あるいは伸長されて第２のシフトレジスタ２７に格納され、画像が縮小あるいは拡大される結果になる。もちろん、第１のシフト信号に基づくシフト回数と第２のシフト信号に基づくシフト回数とが常に同じであれば、等倍の画像が得られる。
【００２４】
たとえば、第１のシフト信号が２クロックに１回ハイレベルになり、第２のシフト信号が１クロックに１回ハイレベルになったとすると、第１のシフトレジスタ２６の内容は２クロックに１回シフトされ、第２のシフトレジスタ２７の内容は１クロックに１回シフトされるので、第１のシフトレジスタ２６がシフトされて最下位ビットの内容が変更される間に、その内容が第２のシフトレジスタ２７の最上位ビットに２回取り込まれることになり、２クロックに１回は前回と同一内容が取り込まれて、画像データは２倍に伸長される。逆に、第１のシフト信号が１クロックに１回ハイレベルになり、第２のシフト信号が２クロックに１回ハイレベルになったとすると、第１のシフトレジスタ２６の内容は１クロックに１回シフトされ、第２のシフトレジスタ２７の内容は２クロックに１回シフトされるので、第１のシフトレジスタ２６が２回シフトされて最下位ビットの内容が２回変更される間に、その内容が第２のシフトレジスタ２７に１回取り込まれることになり、２クロックに１回は取り込みが行われず、画像データは１／２倍に圧縮される。
【００２５】
そして、第１および第２のシフト信号は、加算器２３による加算結果のキャリーに基づいて生成されるので、第１のレジスタ２１に設定する拡縮データによって、オン・オフを任意に設定できることになり、拡縮データに応じた拡大、縮小を実現できる。
【００２６】
たとえば、第２のレジスタ２２の初期値を仮に０であるとし、拡縮データを２５６に設定すると、加算結果として２５６と５１２とが交互に表れる。これは、加算結果が５１２になると、第２のレジスタ２２に戻される下位９ビットのデータがオール０になるからである。したがって、加算結果の最下位ビットから１０番目のビットが２回に１回「１」になり、第１のシフト信号が２回に１回ハイレベルになって、第１のシフトレジスタ２６の内容が２クロックに１回シフトされる。すなわち、第１のラッチ回路２４の出力がハイレベルになると、論理和回路３０の出力である第１のシフト信号もハイレベルになるのである。一方、加算結果の最下位ビットから１１番目のビットは常に「０」であり、否定回路２８の出力である第２のシフト信号が毎回ハイレベルになって、第２のシフトレジスタ２６の内容が２クロックに２回シフトされる。この結果、第２のシフトレジスタ２７には２倍に伸長された画像データが得られ、画像が２倍に拡大されることになる。
【００２７】
また、第２のレジスタ２２の初期値を仮に０であるとし、拡縮データを７６８に設定すると、加算結果として７６８と１０２４とが交互に表れる。これは、加算結果が７６８になると、第２のレジスタ２２に戻される下位９ビットのデータが２５６になり、加算結果が１０２４になると、第２のレジスタ２２に戻される下位９ビットのデータがオール０になるからである。したがって、加算結果の最下位ビットから１１番目のビットが２回に１回「０」になり、第２のシフト信号が２回に１回ハイレベルになって、第２のシフトレジスタ２７の内容が２クロックに１回シフトされる。一方、加算結果が１０２４になったときには、最下位ビットから１０番目のビットが「０」になるが、このとき、最下位ビットから１１番目のビットが「１」であり、第２のラッチ回路２５の出力はハイレベルであるので、論理和回路３０の出力である第１のシフト信号がハイレベルになる。したがって第１のシフト信号が常にハイレベルになって、第１のシフトレジスタ２６の内容が２クロックに２回シフトされる。この結果、第２のシフトレジスタ２７には１／２倍に圧縮された画像データが得られ、画像が１／２倍に縮小されることになる。
【００２８】
第１のシフトレジスタ２６の内容が順次シフトされて空になると、第２のシフトレジスタ２７の内容がパラレルに出力され、第１のシフトレジスタ２６に新たな８ビット分の画像信号がパラレルに入力されるとともに、第２のシフトレジスタ２７の内容がクリアされる。
【００２９】
上記のような動作が繰り返され、１ライン分の処理が終了すると、次のラインの処理に移るのであるが、このとき、第２のレジスタ２２の初期値を前のラインと同様にたとえば０に設定すると、挿入あるいは削除される画素の位置が全てのラインについて同じになってしまい、縦縞モアレが発生してしまう。そこで、ＣＰＵ１が、たとえば３８４を初期値として第２のレジスタ２２に設定するのである。したがって、拡縮データを２５６に設定すると、加算結果として６４０と３８４とが交互に表れる。これは、加算結果が６４０になると、第２のレジスタ２２に戻される下位９ビットのデータが１２８になるからである。これを前ラインの場合と比較すると、前ラインの場合は初期値が０であり、加算結果として２５６と５１２とが交互に表れる結果、第１のシフト信号が、第１回目のクロックでローレベル、第２回目のクロックでハイレベルになって、第２回目のクロックで第１のシフトレジスタ２６の内容がシフトされるのに対して、今回のラインの場合は初期値が３８４であり、加算結果として６４０と３８４とが交互に表れる結果、第１のシフト信号が、第１回目のクロックでハイレベル、第２回目のクロックでローレベルになって、第１回目のクロックで第１のシフトレジスタ２６の内容がシフトされる。したがって、前ラインの場合は、図３に示すように、最初に処理された画素も２個に伸長されるのに対して、今回のラインの場合は、図４に示すように、最初に処理された画素は２個に伸長されず、その次の画素から２個に伸長される。この結果、図３と図４とを対比すれば明らかなように、挿入される画素の位置が前ラインと今回のラインとで異なっている。したがって、各ラインの処理の初めに第２のレジスタ２２に設定する初期値として、０と３８４とを交互に設定することにより、挿入される画素の位置が各ライン毎に交互に切り換わり、縦縞モアレの発生を抑制できる。
【００３０】
縮小の場合も同様であり、第２のレジスタ２２の初期値を８９６に設定し、拡縮データを７６８に設定すると、加算結果として、最初が１６６４になり、その次からは８９６と１１５２とが交互に表れる。これは、加算結果が１６６４あるいは１１５２になると、第２のレジスタ２２に戻される下位９ビットのデータが１２８になり、加算結果が８９６になると、第２のレジスタ２２に戻される下位９ビットのデータが３８４になるからである。これを前ラインの場合と比較すると、前ラインの場合は初期値が０であり、加算結果として７６８と１０２４とが交互に表れる結果、第２のシフト信号が、第１回目のクロックでハイレベル、第２回目のクロックでローレベルになって、第１回目のクロックで第２のシフトレジスタ２７の内容がシフトされるのに対して、今回のラインの場合は初期値が８９６であり、加算結果として、最初が１６６４で、その次からは８９６と１１５２とが交互に表れる結果、第２のシフト信号が、第１回目のクロックでローレベル、第２回目のクロックでハイレベルになって、第２回目のクロックで第２のシフトレジスタ２７の内容がシフトされる。なお、第２のシフト信号は第２のラッチ回路２５の出力を否定回路２８により反転させたものであるので、加算結果の最下位から１１番目のビットが「０」のときに第２のシフト信号がハイレベルになる。したがって、前ラインの場合は、図５に示すように、偶数番目に処理された画素が捨てられるのに対して、今回のラインの場合は、図６に示すように、奇数番目に処理された画素が捨てられる。この結果、図５と図６とを対比すれば明らかなように、削除される画素の位置が前ラインと今回とで異なっている。したがって、各ラインの処理の初めに第２のレジスタ２２に設定する初期値として、０と８９６とを交互に設定することにより、削除される画素の位置が各ライン毎に交互に切り換わり、縦縞モアレの発生を抑制できる。
【００３１】
もちろん、初期値は上記の数値に限定されるものではなく、また２種類に限られるものでもない。なお、各ライン毎の処理に際して、最初に第１のレジスタ２１、第２のレジスタ２２、第１のラッチ回路２４、第２のラッチ回路２５、第１のシフトレジスタ２６、および第２のシフトレジスタ２７の内容がクリアされる。また、上記のような構成では、第１のレジスタ２１に設定される拡縮データをＡとすると、１≦Ａ≦５１２の場合、画像が５１２／Ａ倍に拡大され、５１２＜Ａ≦１０２３の場合、画像が（１０２４−Ａ）／５１２倍に縮小される。
【００３２】
なお、上記実施形態では、拡大・縮小処理をハードウェアにより実現したが、ＣＰＵ１を用いてソフトウェアにより実現することもできる。このようにソフトウェアにより拡大および縮小処理を行う場合のＣＰＵ１の動作の一例について、図７に示すフローチャートを参照しながら説明する。
【００３３】
先ずＣＰＵ１が、変数Ｌ，Ｎ，Ｆをそれぞれ０に初期設定する（Ｓ１）。具体的には、変数Ｌ，Ｎ，Ｆを格納するためのＲＡＭ３の領域を決定し、それらの領域に０を書き込む。変数Ｌは処理済のライン数、変数Ｎは各ラインにおける処理済のビット数をそれぞれ表すものであり、変数Ｆは加算の初期値をライン毎に交互に切り換えるためのフラグとして用いられる。処理すべきライン数Ｌおよび１ライン当たりのビット数すなわち画素数は、予めＣＰＵ１により演算されてＲＡＭ３の所定領域に書き込まれている。またＣＰＵ１が、使用者により選択された拡大率あるいは縮小率に基づいて、それに対応したたとえば１０ビットの拡縮データをＥＥＰＲＯＭ６から読み出し、ＲＡＭ３の所定領域に書き込む（Ｓ２）。またＣＰＵ１が、拡大率あるいは縮小率に基づいて、それに対応したたとえば９ビットの第１および第２の初期値データをＥＥＰＲＯＭ６から読み出し、ＲＡＭ３の所定領域に書き込む（Ｓ３）。
【００３４】
そしてＣＰＵ１が、処理すべき画像データをＲＡＭ３から１ライン分読み出し、それらをＲＡＭ３の所定領域に書き込む（Ｓ４）。またＣＰＵ１が、処理済の画像データを格納すべきＲＡＭ３の所定領域に０を書き込む（Ｓ５）。
【００３５】
そしてＣＰＵ１が、変数Ｆが０であるか否かを判断する（Ｓ６）。変数Ｆが０であれば（Ｓ６：ＹＥＳ）、ＣＰＵ１が、第１の初期値データをＲＡＭ３から読み出し（Ｓ７）、その初期値データとＳ２においてＲＡＭ３の所定領域に書き込んだ拡縮データとを加算し（Ｓ８）、その加算結果をＲＡＭ３の所定領域に書き込む（Ｓ９）。
【００３６】
そしてＣＰＵ１が、Ｓ９においてＲＡＭ３の所定領域に書き込んだ加算結果の最下位ビットから１１番目のビットが０であるか否かを判断する（Ｓ１０）。加算結果の最下位ビットから１１番目のビットが０であれば（Ｓ１０：ＹＥＳ）、ＣＰＵ１が、ＲＡＭ３の所定領域に記憶されている出力データを下位側に１ビットシフトさせ（Ｓ１１）、ＲＡＭ３の所定領域に記憶されている入力データの最下位ビットの内容を出力データの最上位ビットに書き込む（Ｓ１２）。
【００３７】
そしてＣＰＵ１が、Ｓ９においてＲＡＭ３の所定領域に書き込んだ加算結果の最下位ビットから１０番目のビットが１であるか否かを判断する（Ｓ１３）。加算結果の最下位ビットから１０番目のビットが１であれば（Ｓ１３：ＹＥＳ）、ＣＰＵ１が、ＲＡＭ３の所定領域に記憶されている入力データを下位側へ１ビットシフトさせる（Ｓ１４）。
【００３８】
そしてＣＰＵ１が、変数Ｎに１を加算し（Ｓ１５）、変数ＮがＲＡＭ３の所定領域に記憶されている所定値であるか否かを判断する（Ｓ１６）。変数Ｎが所定値であれば（Ｓ１６：ＹＥＳ）、１ラインの処理が終了しているということなので、ＣＰＵ１が、変数Ｎを０にし（Ｓ１７）、変数Ｌに１を加算して（Ｓ１８）、変数ＬがＲＡＭ３の所定領域に記憶されている所定値であるか否かを判断する（Ｓ１９）。変数Ｌが所定値であれば（Ｓ１９：ＹＥＳ）、全ての処理が終了しているということなので、このルーチンを終了する。
【００３９】
Ｓ１９において、変数Ｌが所定値でなければ（Ｓ１９：ＮＯ）、処理が終了していないということなので、ＣＰＵ１が、変数Ｆに１を加算し（Ｓ２０）、変数Ｆが２であるか否かを判断する（Ｓ２１）。変数Ｆが２であれば（Ｓ２１：ＹＥＳ）、ＣＰＵ１が、変数Ｆを０にし（Ｓ２２）、Ｓ４に戻って次のラインの処理を開始する。
【００４０】
Ｓ２１において、変数Ｆが２でなければ（Ｓ２１：ＮＯ）、変数Ｆが１であるということなので、Ｓ４に戻って次のラインの処理を開始する。
【００４１】
Ｓ１６において、変数Ｎが所定値でなければ（Ｓ１６：ＮＯ）、１ラインの処理が終了していないということなので、Ｓ８に戻って次のビットの処理を開始する。
【００４２】
Ｓ１３において、加算結果の最下位ビットから１０番目のビットが１でなければ（Ｓ１３：ＮＯ）、ＣＰＵ１が、Ｓ９においてＲＡＭ３の所定領域に書き込んだ加算結果の最下位ビットから１１番目のビットが１であるか否かを判断する（Ｓ２３）。加算結果の最下位ビットから１１番目のビットが１であれば（Ｓ２３：ＹＥＳ）、Ｓ１４に進んで処理を継続する。
【００４３】
Ｓ２３において、加算結果の最下位ビットから１１番目のビットが１でなければ（Ｓ２３：ＮＯ）、Ｓ１６に進んで処理を継続する。
【００４４】
Ｓ１０において、加算結果の最下位ビットから１１番目のビットが０でなければ（Ｓ１０：ＮＯ）、Ｓ１３に進んで処理を継続する。
【００４５】
Ｓ６において、変数Ｆが０でなければ（Ｓ６：ＮＯ）、ＣＰＵ１が、第２の初期値データをＲＡＭ３から読み出し（Ｓ２４）、Ｓ８に進んで処理を継続する。
【００４６】
なお、上記ＣＰＵ１の動作説明では、画像データを１ライン毎にＲＡＭ３の所定領域に格納して処理を実行したが、必ずしもこのようにする必要はなく、画像データをたとえば１バイト毎にＲＡＭ３の所定領域に格納して処理を実行してもよい。
【００４７】
また、上記実施形態においては、加算器２３による加算結果の最下位ビットから１０番目および１１番目のビットの内容に基づいて、第１および第２のシフト信号を生成したが、加算器２３による加算結果の最下位ビットから１０番目のビットの内容をシフト信号として用い、拡大の場合と縮小の場合とでシフト信号を第１のシフトレジスタと第２のシフトレジスタとに振り分けて使用してもよい。この場合、シフト信号を振り分けるためのスイッチ手段を設けるとともに、シフト信号が振り分けられていないシフトレジスタに対して、たとえば常にハイレベルの信号をシフト信号として供給する。もちろん、ハイレベルの信号も拡大の場合と縮小の場合とで第１のシフトレジスタと第２のシフトレジスタとに振り分けることになる。
【００４８】
更に、上記実施形態においては、画像の拡大と縮小との双方を行うようにしたが、もちろん画像の拡大のみあるいは縮小のみを行う場合に本発明を用いてもよい。
【００４９】
【発明の効果】
以上説明したように請求項１に記載した発明の画像処理装置によれば、初期値変更手段が、初期値設定手段によって設定される初期値をライン毎に変更させるので、挿入および／または削除される画素が全ラインについて同一にならないことから、縮小、拡大による縦縞モアレの発生を良好に抑制できる。
【００５０】
また、請求項２に記載した発明の画像処理装置によれば、請求項１に記載の画像処理装置による効果に加えて、加算手段により得られた加算結果としての数値データの１個の所定ビットの情報に基づいて１個のシフト信号を生成し、そのシフト信号を拡大の場合と縮小の場合とで第１のシフトレジスタ手段と第２のシフトレジスタ手段とに振り分けて使用する場合と比較して、シフト信号を振り分けるためのスイッチ手段が不要であり、ハードウェアで構成する場合には、回路が簡単になって安価に製造できる。
【図面の簡単な説明】
【図１】本発明に係る画像処理装置を備えたファクシミリ装置の回路ブロック図である。
【図２】本発明に係る画像処理装置の回路ブロック図である。
【図３】本発明に係る画像処理装置による画像の拡大処理における画素の挿入状況を説明する説明図である。
【図４】本発明に係る画像処理装置による画像の拡大処理における画素の挿入状況を説明する説明図である。
【図５】本発明に係る画像処理装置による画像の拡大処理における画素の挿入状況を説明する説明図である。
【図６】本発明に係る画像処理装置による画像の拡大処理における画素の挿入状況を説明する説明図である。
【図７】本発明に係る画像処理装置による画像の拡大・縮小処理をソフトウェアで実行した場合の処理手順を説明するフローチャートである。
【符号の説明】
１  ＣＰＵ
３  ＲＡＭ
５  ＲＯＭ
６  ＥＥＰＲＯＭ
２１  第１のレジスタ
２２  第２のレジスタ
２３  加算器
２４  第１のラッチ回路
２５  第２のラッチ回路
２６  第１のシフトレジスタ
２７  第２のシフトレジスタ
２８  否定回路
３０  論理和回路
【図１】
0003713873.tif 000002
【図２】
0003713873.tif 000003
【図３】
0003713873.tif 000004
【図４】
0003713873.tif 000005
【図５】
0003713873.tif 000006
【図６】
0003713873.tif 000007
【図７】
0003713873.tif 000008