(57)【特許請求の範囲】
【請求項１】
イメージデータの主走査方向における白画素及び黒画素への変化点座標列に対し、縮小倍率に応じた縮小後の変化点座標列を求め、
この求められた変化点座標列中の変化点座標について、それぞれ直前の変化点座標との距離を求め、
前記変化点座標列のそれぞれの変化点座標を、
求められた距離が０より大きく、かつ白画素への変化点座標である場合に、白画素への変化点候補とし、
求められた距離が０より大きくない場合に、直前の変化点座標に対応する白画素への変化点候補を無効とし、
求められた距離が０より大きく、かつ黒画素への変化点座標であり、かつ白画素への変化点候補が存在する場合に、黒画素への変化点座標とすると共に、白画素の変化点候補を白画素への変化点座標とし、
求められた距離が１より大きく、かつ黒画素への変化点座標であり、かつ白画素への変化点候補が存在しない場合に、黒画素への変化点座標とすると共に、直前の変化点座標に所定の座標値を加えた上で白画素への変化点座標とする
ことを特徴とするイメージ縮小方法。
【請求項２】
イメージデータの主走査方向における白画素及び黒画素への変化点座標列からなる第１変化点テーブルと、前記第１変化テーブルの副走査方向への次のラインの変化点座標列からなる第２変化点テーブルに対し、何れかの変化点テーブル中の黒画素への変化点位置が小さい変化点座標を注目変化点とすると共に変換後の黒画素への変化点座標とし、注目変化点の右側にある最初の白画素への変化点を白変化点候補とし、
注目変化点のある変化点テーブルの反対側の変化点テーブルで、変化点座標値が白変化点候補以上となる変化点を検出し、
検出した変化点が白変化点候補と同じ座標位置にあり、その色が白画素への変化点であった場合、または白変化点候補を越える座標位置にあり、その色が黒画素への変化点であった場合に、白変化点候補を変換後の白画素への変化点座標とし、
検出した変化点が白変化点候補と同じ座標位置にあり、その変化点の色が黒画素への変化点であった場合、この変化点を注目変化点とし、その右側にある最初の白画素への変化点を白変化点候補とし、
検出した変化点が白変化点候補を越える座標位置にあり、その変化点の色が白画素への変化点であった場合、白変化点候補の位置を注目変化点とし、この検出した変化点を白変化点候補とし、
注目変化点または白変化点候補がライン終端であるかを判定し、ライン終端である場合、白変化点候補を変換後の白画素への変化点座標とすることを特徴とするイメージ縮小方法。
【請求項３】
イメージデータの主走査方向における白画素及び黒画素への変化点座標列から順次読み出される変化点座標のそれぞれを所定の値で除算して商と余り値を求め、
この変化点座標のそれぞれについて求めた商と、この商に対応する変化点座標の直前の変化点座標に対して求めた商との差をそれぞれ求め、
この求めた差の値が０の時に、所定の値に達しない変化点座標に対するイメージパターンを前記余り値に応じて求め、
求めた差の値が１以上の時に、所定の値に達しない変化点座標に対して求めた前記イメージパターンを変換結果のイメージパターンとして出力し、さらに求めた差に応じた白画素または黒画素が連続するイメージパターンを変換結果のイメージパターンとして出力することを特徴とするデータ変換方法。
【請求項４】
イメージデータを符号化して得られる圧縮データをもとに、縮小処理を施したイメージを生成するイメージ処理方法において、
圧縮データから白画素及び黒画素への変化点座標列を生成し、
この生成された変化点座標列をもとに請求項２に記載されたイメージ縮小方法により、副走査方向に対して縮小した変化点座標列を生成し、生成した変化点座標列をもとに請求項１に記載されたイメージ縮小方法により、主走査方向に対して縮小した変化点座標列を生成し、この生成した変化点座標列をもとに請求項３に記載されたデータ変換方法により、イメージデータを生成し、以上の処理を１画面分実行することで、圧縮データから縮小後のイメージデータを生成することを特徴とするイメージ処理方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ソフトウエアにより２値イメージを扱うシステムにおいて、イメージの縮小等の処理を行なうイメージ処理方法に関する。
【０００２】
【従来の技術】
従来、イメージ処理用の専用のハードウェアが設けられていないシステムでは、ソフトウェアによりイメージ処理の機能が実現されている。こうした、システムにおいて、イメージデータを圧縮することによって得られた圧縮データから、元のイメージを縮小した縮小イメージデータを生成する場合には、伸張処理と縮小処理とを組み合わせたイメージ編集処理が必要となる。
【０００３】
すなわち、伸張処理によって圧縮データから作業メモリ上にイメージ全体のイメージデータを展開し、次に縮小処理によって作業メモリ上に展開したイメージデータを所定の縮小倍率に応じて縮小して縮小イメージデータを生成している。
【０００４】
また、従来の縮小処理では、文字や図形等を含むイメージデータに対しては、文字や図形を構成する線の消失やかすれを防ぐためにＯＲ処理方式を採用している。
【０００５】
例えば、図１８に示すように、２２ドットのイメージデータ（入力イメージ）に対して、７ドットの縮小イメージデータを得るようなＯＲ縮小方式では、ＤＤＡ（Differential Digital Analaizer）を使用してキャリーパターンを発生させ、キャリー発生位置の右隣の画素から次のキャリーが発生するまでの画素をＯＲ演算し、キャリー個数分（７個）の画素を出力する。
【０００６】
ここで、ＤＤＡの動作原理について簡単に説明する。図１９はＤＤＡのキャリーパターンの生成過程を示す。倍率をＮ／Ｍ（Ｎ＜Ｍ）にすると、初期値とスケール値を次のようにして求める。但し、 divは整数除算、 modは整数除算の余りを示す。
【０００７】
スケール値＝（１００００Ｈ×Ｎ）div Ｍ
初期値    ＝（１００００Ｈ×Ｎ）mod Ｍ
２２ドットのイメージを７ドットのイメージに縮小する例では、上式の演算に従うとスケール値＝５１７４Ｈ、初期値＝０００８Ｈとなる。
【０００８】
ＤＤＡでは、図１９に示すように、まずカレント値に初期値０００８Ｈをセットし、スケール値５１７４Ｈを加算する。アダーのビット幅を１６ビットとし、アダーの出力に対してスケール値を加算する。以下、データの個数分となるまで、順次、アダーの出力に対してスケール値を加算していき、この間に発生したキャリーパターンを出力画素を決める為に使用する。すなわち、ＯＲ演算の対象とする画素の範囲を求める。
この結果、図１８に示すように、入力イメージに対するキャリー発生位置に応じたＯＲ縮小の結果は、全ての画素が黒となる。
【０００９】
【発明が解決しようとする課題】
このように従来のイメージ処理方法では、圧縮データをもとに縮小イメージデータを生成するために、伸張処理と縮小処理とを組み合わせてイメージ編集する場合、伸張時間と縮小処理とを逐次実行しなければならない。従って、最終的な縮小イメージを得るための時間が、伸張時間分と縮小処理時間分とを要すため、作業応答性が悪くなっていた。
【００１０】
また、従来の縮小処理ではＯＲ処理方式を採用することによって、文字や図形を構成する線の消失やかすれを防ぐことができたが、原理上、縮小倍率が大きくなると文字や図形の部分で黒潰れが発生してしまい、著しくイメージの品質が低下してしまうことがあった。
【００１１】
本発明は前記のような事情を考慮してなされたもので、伸張処理と縮小処理とを組み合わせた処理でも高速にイメージ処理ができ、かつ画質劣化の少ない縮小結果を提供することが可能なイメージ処理方法を提供することを目的とする。
【００１２】
【課題を解決するための手段】
本発明は、イメージデータの主走査方向における白画素及び黒画素への変化点座標列に対し、縮小倍率に応じた縮小後の変化点座標列を求め、この求められた変化点座標列中の変化点座標について、それぞれ直前の変化点座標との距離を求め、前記変化点座標列のそれぞれの変化点座標を、求められた距離が０より大きく、かつ白画素への変化点座標である場合に、白画素への変化点候補とし、求められた距離が０より大きくない場合に、直前の変化点座標に対応する白画素への変化点候補を無効とし、求められた距離が０より大きく、かつ黒画素への変化点座標であり、かつ白画素への変化点候補が存在する場合に、黒画素への変化点座標とすると共に、白画素の変化点候補を白画素への変化点座標とし、求められた距離が１より大きく、かつ黒画素への変化点座標であり、かつ白画素への変化点候補が存在しない場合に、黒画素への変化点座標とすると共に、直前の変化点座標に所定の座標値を加えた上で白画素への変化点座標とすることを特徴とする。
【００１３】
また本発明は、イメージデータの主走査方向における白画素及び黒画素への変化点座標列からなる第１変化点テーブルと、前記第１変化テーブルの副走査方向への次のラインの変化点座標列からなる第２変化点テーブルに対し、何れかの変化点テーブル中の黒画素への変化点位置が小さい変化点座標を注目変化点とすると共に変換後の黒画素への変化点座標とし、注目変化点の右側にある最初の白画素への変化点を白変化点候補とし、注目変化点のある変化点テーブルの反対側の変化点テーブルで、変化点座標値が白変化点候補以上となる変化点を検出し、検出した変化点が白変化点候補と同じ座標位置にあり、その色が白画素への変化点であった場合、または白変化点候補を越える座標位置にあり、その色が黒画素への変化点であった場合に、白変化点候補を変換後の白画素への変化点座標とし、検出した変化点が白変化点候補と同じ座標位置にあり、その変化点の色が黒画素への変化点であった場合、この変化点を注目変化点とし、その右側にある最初の白画素への変化点を白変化点候補とし、検出した変化点が白変化点候補を越える座標位置にあり、その変化点の色が白画素への変化点であった場合、白変化点候補の位置を注目変化点とし、この検出した変化点を白変化点候補とし、注目変化点または白変化点候補がライン終端であるかを判定し、ライン終端である場合、白変化点候補を変換後の白画素への変化点座標とすることを特徴とする。
【００１４】
また本発明は、イメージデータの主走査方向における白画素及び黒画素への変化点座標列から順次読み出される変化点座標のそれぞれを所定の値で除算して商と余り値を求め、この変化点座標のそれぞれについて求めた商と、この商に対応する変化点座標の直前の変化点座標に対して求めた商との差をそれぞれ求め、この求めた差の値が０の時に、所定の値に達しない変化点座標に対するイメージパターンを前記余り値に応じて求め、求めた差の値が１以上の時に、所定の値に達しない変化点座標に対して求めた前記イメージパターンを変換結果のイメージパターンとして出力し、さらに求めた差に応じた白画素または黒画素が連続するイメージパターンを変換結果のイメージパターンとして出力することを特徴とする。
【００１５】
また本発明は、イメージデータを符号化して得られる圧縮データをもとに、縮小処理を施したイメージを生成するイメージ処理方法において、圧縮データから白画素及び黒画素への変化点座標列を生成し、この生成された変化点座標列をもとにしたイメージ縮小方法により、副走査方向に対して縮小した変化点座標列を生成し、変化点座標列をもとにしたイメージ縮小方法により、主走査方向に対して縮小した変化点座標列を生成し、この生成した変化点座標列をもとにしたデータ変換方法により、イメージデータを生成し、以上の処理を１画面分実行することで、圧縮データから縮小後のイメージデータを生成することを特徴とする。
【００１６】
【発明の実施の形態】
以下、図面を参照して本発明の実施の形態について説明する。図１は、本実施形態に係わるイメージ処理方法を実現するシステムの構成を示すブロック図である。図１に示すように本システムは、ＣＰＵ１０、ＲＡＭ１２、ＶＲＡＭ１４、ＲＯＭ１６、入力装置１８、入力制御部２０、表示装置２２、表示制御部２４、記憶装置２６、記憶制御部２８によって構成されている。
【００１７】
ＣＰＵ１０は、装置全体の制御を行なうもので、ＲＡＭ１２、ＶＲＡＭ１４、ＲＯＭ１６をアクセスして入力指示に従うプログラムの起動で、本発明によるイメージ処理方法の機能を実現する。
【００１８】
ＲＡＭ１２は、ＣＰＵ１０の動作を決定する各種処理プログラムが格納されたプログラム領域１２ａをはじめ、イメージ処理を行なう際に使用される各種変数、テーブル、処理対象とする変化点座標データ等を格納するための作業メモリとしてのワーク領域１２ｂ等が設けられている。
【００１９】
ＶＲＡＭ１４は、表示装置２２において表示すべき表示データを展開するための領域である。ＶＲＡＭ１４に展開された表示データは、表示制御部２４によって読み出され、表示装置２２における表示に供される。
【００２０】
ＲＯＭ１６は、ＣＰＵ１０の動作を決定する各種処理プログラムが格納されたプログラム領域１６ａ、各種データを格納するためのデータ領域１６ｂ等が設けられている。
【００２１】
入力装置１８は、キーボードまたはマウス等によって構成され、システムに対する指示を入力する。
表示装置２２は、例えば液晶ディスプレイによって構成され、表示制御部２４の制御のもとに表示を行なう。表示制御部２４は、表示装置２２における表示を制御するもので、ＶＲＡＭ１４に格納された表示データを読み込み、表示装置２２における表示に供する。
【００２２】
記憶装置２６は、処理対象とするイメージデータを符号化して得られる圧縮データ、変化点座標データ、イメージデータ等を格納する。記憶制御部２８は、記憶装置２６に対するデータ等の入出力制御を行なう。
【００２３】
次に、本発明の第１実施形態に係わるイメージ処理方法におけるデータ縮小方法について説明する。
図２及び図３は第１実施形態のデータ縮小方法を説明するためのフローチャートである。第１実施形態のデータ縮小方法では、イメージデータの主走査方向における白及び黒への変化点座標情報をもとに主走査方向に縮小処理を行なう。
【００２４】
ステップＡ１は、イメージデータの１ライン目の処理を開始する前に行う初期化処理であり、縮小倍率（ＳＣＡＬＥＸ）の設定と変倍後の変化点座標をセットする変数を初期化するステップである。
【００２５】
ステップＡ２は、縮小後の変化点検索のための初期化処理であり、直前に検出した変化点座標（ＲＥＧ＿ＳＣＡＬＥ＿ＰＯＳ）をセットし、変化点検出フラグ、すなわち白画素から黒画素への変化点を検出したことを示すフラグ（ＢＬＡＣＫ＿ＦＯＵＮＤ）、及び黒画素から白画素への変化点を検出したことを示すフラグ（ＷＨＩＴＥ＿ＦＯＵＮＤ）を無効にするステップである。
【００２６】
ステップＡ３は、ラスタ走査方向に順次読み出された変化点座標（ＣＲＮＴ＿ＰＯＳ）に対し縮小倍率（ＳＣＡＬＥＸ）を乗算し、その値をカレントの変化点演算値（ＳＣＡＬＥ＿ＰＯＳ）とするステップである。
【００２７】
ステップＡ４は、カレントの変化点演算値（ＳＣＡＬＥ＿ＰＯＳ）と直前に検出した変化点座標（ＲＥＧ＿ＳＣＡＬＥ＿ＰＯＳ）との差（ＤＩＳＴ＿ＰＯＳ）を求めるステップである。
【００２８】
ステップＡ５は、ステップＡ４で求めた差（ＤＩＳＴ＿ＰＯＳ）が０より大きいか否かを判定するステップである。
ステップＡ６は、カレントの変化点演算値の色（ＣＯＬＯＲ）が黒画素への変化点か否かを判定するステップである。
【００２９】
ステップＡ７は、白画素への変化点検出フラグ（ＷＨＩＴＥ＿ＦＯＵＮＤ）が有効であるか否かを判定するステップである。
ステップＡ８は、差（ＤＩＳＴ＿ＰＯＳ）が１より大きいか否かを判定するステップである。
【００３０】
ステップＡ９は、白画素から黒画素への変化点を検出した時のステップであり、変化点検出処理、すなわちカレントの変化点演算結果（ＳＣＡＬＥ＿ＰＯＳ）を白から黒への変化点座標（ＡＶＬ＿ＳＣＡＬＥ＿ＰＯＳＢ）とし、直前に決定した変化点座標（ＲＥＧ＿ＳＣＡＬＥ＿ＰＯＳ）を黒から白への変化点座標（ＡＶＬ＿ＳＣＡＬＥ＿ＰＯＳＷ）として確定する処理を実行する。また、変化点が検出されたことを示す各々の変化点検出フラグ（ＷＨＩＴＥ＿ＦＯＵＮＤ）、（ＢＬＡＣＫ＿ＦＯＵＮＤ）を有効（ＴＲＵＥ）にする。
【００３１】
ステップＡ１０は、黒画素への変化点を検出し、直前の縮小演算処理で消失した白画素への変化点を復活させる処理であり、カレントの変化点演算結果（ＳＣＡＬＥ＿ＰＯＳ）を白から黒への変化点座標（ＡＶＬ＿ＳＣＡＬＥ＿ＰＯＳＢ）とし、直前に決定した変化点座標（ＲＥＧ＿ＳＣＡＬＥ＿ＰＯＳ）＋１を、白画素への変化点座標（ＡＶＬ＿ＳＣＡＬＥ＿ＰＯＳＷ）として確定する。また、変化点が検出されたことを示す各々の変化点検出フラグ（ＷＨＩＴＥ＿ＦＯＵＮＤ）、（ＢＬＡＣＫ＿ＦＯＵＮＤ）を有効（ＴＲＵＥ）にする。
【００３２】
ステップＡ１１は、黒画素から白画素への変化点候補を検出した時のステップであり、カレントの変化点演算結果（ＳＣＡＬＥ＿ＰＯＳ）を直前に決定した変化点座標（ＲＥＧ＿ＳＣＡＬＥ＿ＰＯＳ）とする。また、白画素への変化点検出フラグ（ＷＨＩＴＥ＿ＦＯＵＮＤ）を有効にし、次の黒画素への変化点を検出するためにステップＡ３のステップに戻る。
【００３３】
ステップＡ１２は、白への変化点検出結果を無効にするステップであり、白への変化点検出フラグ（ＷＨＩＴＥ＿ＦＯＵＮＤ）を無効（ＦＡＬＳＥ）にする。
ステップＡ１３は、ライン終端を検出するステップである。
【００３４】
ステップＡ１４は、変化点を検索中にライン終端に到達した時のステップであり、白画素への変化点座標（ＡＶＬ＿ＳＣＡＬＥ＿ＰＯＳＷ）を縮小後のライン終端座標の右側に置く。
【００３５】
以上ステップＡ２からステップＡ１４までの処理を、一画面のライン分が終了するまで繰り返すことにより、一画面分のイメージ縮小後の変化点座標が求められる。
【００３６】
次に、具体例を用いながら第１実施形態におけるデータ縮小処理の動作について説明する。
図４は、縮小倍率（ＳＣＡＬＥＸ）を２／３とした時の、入力データとする変化点座標（ＣＲＮＴ＿ＰＯＳ）列に対する縮小後の変化点座標（ＡＶＬ＿ＳＣＡＬＥ＿ＰＯＳＢ）（ＡＶＬ＿ＳＣＡＬＥ＿ＰＯＳＷ）を算出する過程を示すものである。
【００３７】
イメージ縮小処理の対象（入力データ）は、図４（ｂ）に示す変化点座標（ＣＲＮＴ＿ＰＯＳ）列、すなわち図４（ａ）に示すイメージパターンの圧縮データである。また、イメージパターンは変化点座標（座標位置０，１，…）が示すビットパターンを表すものである。
【００３８】
変化点座標（ＣＲＮＴ＿ＰＯＳ）は、黒画素への変化点座標から始まり、次に黒画素から白画素への変化点座標が続き、以降ライン終端まで交互に並ぶ。ただし、変化点座標（ＣＲＮＴ＿ＰＯＳ）のライン終端値を、イメージパターンのライン終端の座標の右側に設けた仮想変化点の値とする。
【００３９】
まず、入力となる変化点座標（ＣＲＮＴ＿ＰＯＳ）をステップＡ１で設定された縮小倍率（２／３）で乗算し、カレントの変化点演算値（ＳＣＡＬＥ＿ＰＯＳ）を求める。（ステップＡ３）。例えば、ＣＲＮＴ＿ＰＯＳ＝３、ＣＯＬＯＲ＝黒の変化点座標に対しては、カレントの変化点演算値（ＳＣＡＬＥ＿ＰＯＳ）＝２が求められる（図４（ｃ）参照）。
【００４０】
次に、ステップＡ４により、カレントの変化点演算値（ＳＣＡＬＥ＿ＰＯＳ）と直前に検出した変化点座標（ＲＥＧ＿ＳＣＡＬＥ＿ＰＯＳ）との差（ＤＩＳＴ＿ＰＯＳ）を求める。例えば、カレントの変化点演算値が４（ＳＣＡＬＥ＿ＰＯＳの第２番目、ＣＯＬＯＲ＝白）であった場合、直前に検出した変化点座標は２であるため、その差（ＤＩＳＴ＿ＰＯＳ）は２となる。
【００４１】
次に、カレントの変化点演算値（ＳＣＡＬＥ＿ＰＯＳ）と直前に検出した変化点座標（ＲＥＧ＿ＳＣＡＬＥ＿ＰＯＳ）との差（ＤＩＳＴ＿ＰＯＳ）が０より大きいか否かを判定する（ステップＡ５）。図４（ｃ）の第２番目の（ＳＣＡＬＥ＿ＰＯＳ）を対象としている場合には、ＤＩＳＴ＿ＰＯＳ＞０となる。
【００４２】
この場合、カレントの変化点演算値の色（ＣＯＬＯＲ）が黒であるか否かを判定する（ステップＡ６）。この例では、ＣＯＬＯＲ＝白であるため、ステップＡ１１に移行する。
【００４３】
ステップＡ１１では、変化点（ＳＣＡＬＥ＿ＰＯＳ）を、黒画素から白画素への変化点候補として直前に検出した変化点座標（ＲＥＧ＿ＳＣＡＬＥ＿ＰＯＳ）に保存し、変化点検出フラグ（ＷＨＩＴＥ＿ＦＯＵＮＤ）を有効にする。この時点では、あくまでも変化点の候補であり、次の変化点演算結果により確定される。
【００４４】
ここで、ライン終端に処理が達していなければ、次の黒画素への変化点を検出するためにステップＡ３のステップに戻る（ステップＡ１３）。
この例では、次の変化点座標（ＣＲＮＴ＿ＰＯＳ）＝９に対するカレントの変化点演算値（ＳＣＡＬＥ＿ＰＯＳ）は６であり、ＤＩＳＴ＿ＰＯＳ＞０かつＣＯＬＯＲ＝黒であり、さらに前の変化点座標の処理で変化点検出フラグ（ＷＨＩＴＥ＿ＦＯＵＮＤ）を有効としているため（ステップＡ５，Ａ６，Ａ７）、ステップＡ９が実行される。
【００４５】
ここで、ステップＡ９では、白画素から黒画素への変化点が検出されたため、変化点検出処理を実行する。すなわち、カレントの変化点演算結果（ＳＣＡＬＥ＿ＰＯＳ）を白から黒への変化点座標（ＡＶＬ＿ＳＣＡＬＥ＿ＰＯＳＢ）とし、またステップＡ１１において設定されている、直前に検出された黒画素から白画素への変化点座標（ＲＥＧ＿ＳＣＡＬＥ＿ＰＯＳ）を黒から白への変化点座標（ＡＶＬ＿ＳＣＡＬＥ＿ＰＯＳＷ）として確定する。さらに、各変化点検出フラグ（ＷＨＩＴＥ＿ＦＯＵＮＤ）（ＢＬＡＣＫ＿ＦＯＵＮＤ）も有効（ＴＲＵＥ）にする。
【００４６】
次に、ステップＡ４において求められるカレントの変化点演算値（ＳＣＡＬＥ＿ＰＯＳ）と直前に検出した変化点座標（ＲＥＧ＿ＳＣＡＬＥ＿ＰＯＳ）との差（ＤＩＳＴ＿ＰＯＳ）＝０の場合について説明する。
【００４７】
図４（ｂ）に示す例では、変化点座標（ＣＲＮＴ＿ＰＯＳ）が１２（第４番目）から１３（第５番目）になる時に、図４（ｃ）に示すように、ＳＣＡＬＥ＿ＰＯＳの値が共に８になり、ＤＩＳＴ＿ＰＯＳ＝０の条件が成立する。
【００４８】
変化点座標（ＣＲＮＴ＿ＰＯＳ）が１３の時点で、ＤＩＳＴ＿ＰＯＳ＞０、すなわちＤＩＳＴ＿ＰＯＳ＝０であることが判定される。ここでは、ＷＨＩＴＥ＿ＦＯＵＮＤ＝ＴＲＵＥとなっており、かつＣＯＬＯＲ＝黒であるため、直前で検出した白への変化点を無効にする（ステップＡ１２）。
【００４９】
この処理によって、カレントの変化点演算値（ＳＣＡＬＥ＿ＰＯＳ）と直前に検出した変化点座標（ＲＥＧ＿ＳＣＡＬＥ＿ＰＯＳ）との差（ＤＩＳＴ＿ＰＯＳ）＝０の場合、すなわち同じ画素位置において白、黒の両方を示す演算結果が得られた際に、縮小後のイメージパターンに黒画素を優先的に残す。
【００５０】
次に、変化点を検索中にライン終端に到達した時の動作を説明する。図４の例では、変化点座標（ＣＲＮＴ＿ＰＯＳ）の値が２２のとき、ＤＩＳＴ＿ＰＯＳ＞０かつＣＯＬＯＲ＝白のため（ステップＡ５，Ａ６）、白画素への変化点候補を検出した時の処理（ステップＡ１１）を実行する。
【００５１】
この時、変化点座標（ＣＲＮＴ＿ＰＯＳ）はライン終端であるため（ステップＡ１３）、次の黒画素への変化点を検索する処理に移行せずライン終端処理を実行する（ステップＡ１４）。すなわち、白の変化点座標（ＡＶＬ＿ＳＣＡＬＥ＿ＰＯＳＷ）を縮小後のライン終端座標の右側に置く。
【００５２】
こうして図４（ｂ）に示す変化点座標（ＣＲＮＴ＿ＰＯＳ）列に対する縮小後の変化点座標（白から黒への変化点座標（ＡＶＬ＿ＳＣＡＬＥ＿ＰＯＳＢ）と黒から白への変化点座標（ＡＶＬ＿ＳＣＡＬＥ＿ＰＯＳＷ））とが図４（ｄ）に示すようにして得られる。図４（ｄ）に示す縮小後の変化点座標列に対応するイメージパターンは図４（ｅ）に示すようになる。
【００５３】
次に、ステップＡ１０の縮小演算処理における、消失した白画素への変化点を復活させる処理を図５を用いて説明する。
図５は、縮小倍率（ＳＣＡＬＥＸ）を１／３とした時の、入力データとする変化点座標（ＣＲＮＴ＿ＰＯＳ）列に対する縮小後の変化点座標（ＡＶＬ＿ＳＣＡＬＥ＿ＰＯＳＢ）（ＡＶＬ＿ＳＣＡＬＥ＿ＰＯＳＷ）を算出する過程を示すものである。
【００５４】
縮小倍率を１／３に設定した場合、図５（ｂ）に示す変化点座標（ＣＲＮＴ＿ＰＯＳ）列に対して、図４を用いて説明したようにして順次処理を進めていくと、変化点座標（ＣＲＮＴ＿ＰＯＳ）＝１２に対しては以下のように処理が施される。
【００５５】
まず、変化点座標（ＣＲＮＴ＿ＰＯＳ）＝１２に対して縮小倍率（１／３）を乗算し、カレントの変化点演算値（ＳＣＡＬＥ＿ＰＯＳ）＝４（ＣＯＬＯＲ＝白）を求める（ステップＡ３）。
【００５６】
この場合、カレントの変化点演算値（ＳＣＡＬＥ＿ＰＯＳ）＝４と直前に検出した変化点座標（ＲＥＧ＿ＳＣＡＬＥ＿ＰＯＳ）＝３との差（ＤＩＳＴ＿ＰＯＳ）＝１となるので、ステップＡ５，Ａ６により、ステップＡ１１の処理に移行する。
【００５７】
ステップＡ１１では、変化点（ＳＣＡＬＥ＿ＰＯＳ）＝４を黒画素から白画素への変化点候補として直前に検出した変化点座標（ＲＥＧ＿ＳＣＡＬＥ＿ＰＯＳ）に保存し、変化点検出フラグ（ＷＨＩＴＥ＿ＦＯＵＮＤ）を有効にする。
【００５８】
次に、変化点座標（ＣＲＮＴ＿ＰＯＳ）＝１３に対する処理では、カレントの変化点演算値（ＳＣＡＬＥ＿ＰＯＳ）＝４（ＣＯＬＯＲ＝黒）となる。従って、ステップＡ４において、カレントの変化点演算値（ＳＣＡＬＥ＿ＰＯＳ）＝４と直前に検出した変化点座標（ＲＥＧ＿ＳＣＡＬＥ＿ＰＯＳ）＝４との差（ＤＩＳＴ＿ＰＯＳ）＝０となるため、ステップＡ１２において、先のステップＡ１１において有効にした変化点検出フラグ（ＷＨＩＴＥ＿ＦＯＵＮＤ）を無効とする。
【００５９】
また、変化点座標（ＣＲＮＴ＿ＰＯＳ）＝１４に対する処理においても、カレントの変化点演算値（ＳＣＡＬＥ＿ＰＯＳ）＝４（ＣＯＬＯＲ＝白）となるため、変化点座標（ＣＲＮＴ＿ＰＯＳ）＝１３に対する処理と同様に、ステップＡ４において、カレントの変化点演算値（ＳＣＡＬＥ＿ＰＯＳ）＝４と直前に検出した変化点座標（ＲＥＧ＿ＳＣＡＬＥ＿ＰＯＳ）＝４との差（ＤＩＳＴ＿ＰＯＳ）＝０となる。
【００６０】
次に、変化点座標（ＣＲＮＴ＿ＰＯＳ）＝１８に対する処理では、カレントの変化点演算値（ＳＣＡＬＥ＿ＰＯＳ）＝６（ＣＯＬＯＲ＝黒）となる。従って、ステップＡ４において、カレントの変化点演算値（ＳＣＡＬＥ＿ＰＯＳ）＝６と直前に検出した変化点座標（ＲＥＧ＿ＳＣＡＬＥ＿ＰＯＳ）＝４との差（ＤＩＳＴ＿ＰＯＳ）＝２となるため、ＤＩＳＴ＿ＰＯＳ＞１かつＣＯＬＯＲ＝黒の条件が成立する（ステップＡ５，Ａ６）。さらに、先の変化点座標（ＣＲＮＴ＿ＰＯＳ）に対する処理の際に、ステップＡ１２において、変化点検出フラグ（ＷＨＩＴＥ＿ＦＯＵＮＤ）を無効としており、さらにカレントの変化点演算値（ＳＣＡＬＥ＿ＰＯＳ）と直前に検出した変化点座標（ＲＥＧ＿ＳＣＡＬＥ＿ＰＯＳ）との差（ＤＩＳＴ＿ＰＯＳ）＝２であるため、ステップＡ１０の処理に移行する（ステップＡ７，Ａ８）。
【００６１】
ステップＡ１０では、直前の縮小演算処理で消失した白画素への変化点を復活させる。すなわち、カレントの変化点演算結果（ＳＣＡＬＥ＿ＰＯＳ）を白から黒への変化点座標（ＡＶＬ＿ＳＣＡＬＥ＿ＰＯＳＢ）とし、直前に決定した変化点座標（ＲＥＧ＿ＳＣＡＬＥ＿ＰＯＳ）＋１を、白画素への変化点座標（ＡＶＬ＿ＳＣＡＬＥ＿ＰＯＳＷ）として確定する。
【００６２】
ここでは、カレントの変化点演算結果（ＳＣＡＬＥ＿ＰＯＳ）＝６であるので白から黒への変化点座標（ＡＶＬ＿ＳＣＡＬＥ＿ＰＯＳＢ）＝６とし、一方、直前に決定した変化点座標（ＲＥＧ＿ＳＣＡＬＥ＿ＰＯＳ）＝４であるので、白画素への変化点座標（ＡＶＬ＿ＳＣＡＬＥ＿ＰＯＳＷ）＝５として白画素への変化点を復活させる。また、変化点検出フラグ（ＷＨＩＴＥ＿ＦＯＵＮＤ）（ＢＬＡＣＫ＿ＦＯＵＮＤ）を有効（ＴＲＵＥ）にする。
【００６３】
以下、残りの変化点座標（ＣＲＮＴ＿ＰＯＳ）に対して、前述と同様にして処理を施す。
こうして図５（ｂ）に示す変化点座標（ＣＲＮＴ＿ＰＯＳ）列に対する縮小後の変化点座標（白から黒への変化点座標（ＡＶＬ＿ＳＣＡＬＥ＿ＰＯＳＢ）と黒から白への変化点座標（ＡＶＬ＿ＳＣＡＬＥ＿ＰＯＳＷ））とが図５（ｄ）に示すようにして得られる。図５（ｄ）において、黒から白への変化点座標（ＡＶＬ＿ＳＣＡＬＥ＿ＰＯＳＷ）＝５が復活された変化点である。図５（ｄ）に示す縮小後の変化点座標列に対応するイメージパターンは図５（ｅ）に示すようになる。
【００６４】
このようにして、イメージデータの主走査方向における縮小処理を行なう際に、白及び黒への変化点座標情報をもとに行なうので、作業メモリ上でのイメージデータの展開が不要となり、データ転送量を減少させることができ高速なイメージ処理が可能となる。特に、図形や文字等を含むイメージにおいては、白（空白）の領域が少ない場合には、縮小処理における演算量とメモリアクセス量が減るため、大幅なイメージ処理の高速化が可能である。
【００６５】
さらに、縮小後のイメージパターンに黒画素を優先的に残し、かつ白画素の消失が最小限になるような変化点座標（ＡＶＬ＿ＳＣＡＬＥ＿ＰＯＳＢ）（ＡＶＬ＿ＳＣＡＬＥ＿ＰＯＳＷ）を生成するので、図面や文字を含むイメージであっても、図形や文字等を構成する線の掠れや消失を防ぐことができ、高品質な縮小処理が可能となる。
【００６６】
次に、本発明の第２実施形態に係わるイメージ処理方法におけるデータ縮小方法を、図６及び図７に示すフローチャートを参照しながら説明する。第２実施形態におけるデータ縮小方法は、図８に示すように、イメージデータの主走査方向における白及び黒への変化点座標情報が格納される入力変化点テーブルをもとに副走査線方向に対して縮小処理を行なう。
【００６７】
図８（ａ）には、２ライン分の変化点テーブル（各ラインの変化点座標列）をもとに、ＯＲ縮小により１ライン分の変化点テーブル（縮小後の変化点座標列）を生成する例を示している。図８（ｂ）は、直観的に分かるように図８（ａ）に示す変化点座標をイメージパターンに置き換えたものである。
【００６８】
本実施形態では、変化点テーブルＡ／Ｂにおける変化点の相対的な位置関係をもとに、図６及び図７に示すフローチャートの手順に従ってＯＲ処理後の変化点座標を抽出する。
【００６９】
ステップＢ１は、初期化処理であり、縮小後の変化点を格納するメモリエリアを２ライン分（読みだし用バンク及び書き込み用バンク）確保し、この縮小変化点テーブル及び縮小後の変化点検出に使用する変数を初期化するステップである。
【００７０】
ステップＢ２は、以降のステップで使用する注目変化点Ｃ１、白変化点候補Ｃ２が検出されているか否かを判断するステップである。
ステップＢ３は、変化点Ｃ１、Ｃ２を検出するステップであり、入力変化点テーブルと読みだし用縮小変化点テーブルの内、黒画素への変化点位置が小さい方を注目変化点（Ｃ１）として書き込み用縮小変化点テーブルに登録し、注目変化点の右側にある最初の白画素への変化点を白変化点候補（Ｃ２）とするステップである。
【００７１】
ステップＢ４は、変化点テーブル中の変化点がライン終端に到達したか否かを判定するステップである。
ステップＢ５は、注目変化点Ｃ１の反対側のラインで、座標値が白変化点候補（Ｃ２）以上となる変化点（ＣＸ）を検索するステップである。
【００７２】
ステップＢ６は、ステップＢ５で検出した変化点ＣＸが条件ａまたは条件ｃ（条件ａ，ｃの詳細については図９、図１０を用いて後述する）を満たすか否か判定するステップである。
【００７３】
ステップＢ７は、条件ａまたは条件ｃが成立した時の処理であり、白変化点候補Ｃ２を縮小変化点テーブルに登録する。また、次の注目変化点Ｃ１、白変化点候補Ｃ２を検出するために（Ｃ１Ｃ２＿ＦＯＵＮＤ）フラグを無効にする。
【００７４】
ステップＢ８は、ステップＢ５で検出した変化点ＣＸが条件ｂ（条件ｂの詳細については図１１を用いて後述する）を満たしているか否かを判定するステップである。
【００７５】
ステップＢ９は、条件ｂが成立した時の処理であり、変化点ＣＸを注目変化点Ｃ１とし、その右側にある最初の白画素への変化点を白変化点候補（Ｃ２）とする。
【００７６】
ステップＢ１０は、条件ａ、条件ｂ、条件ｃ以外の場合の処理であり、変化点ＣＸが白変化点候補（Ｃ２）を越える座標位置にあり、その変化点の色が白画素への変化点であったケースに該当する。この場合、白変化点候補（Ｃ２）の位置を注目変化点（Ｃ１）とし、この検出した変化点（ＣＸ）を白変化点候補（Ｃ２）とする。
【００７７】
ステップＢ１１，Ｂ１２，Ｂ１３は、注目変化点（Ｃ１）、または白変化点候補（Ｃ２）がライン終端であるかを判定し、ライン終端である場合、白変化点候補Ｃ２を縮小変化点テーブルに登録し、ライン終端でない場合、さらに座標値が白変化点候補Ｃ２以上となる変化点を検出するために（Ｃ１Ｃ２＿ＦＯＵＮＤ）フラグを有効にする。
【００７８】
ステップＢ１４、Ｂ１５は、入出力イメージのライン数情報から出力すべき縮小変化点テーブルを選択するステップである。出力する場合は、ステップＢ１において変化点テーブルが初期化されるように（ＣＬＲ＿ＴＢＬ）フラグを有効にする。
【００７９】
ステップＢ１６、Ｂ１７は、１画面分の処理を終了したか判断し、終了していない場合は、縮小変化点テーブルのバンクを切替え、ステップＢ１の処理を繰り返すステップである。
【００８０】
次に、第２実施形態におけるデータ縮小処理の動作について説明する。
まず、縮小後の変化点を格納するエリアを２ライン分（読みだし用、書き込み用）確保し、この縮小変化点テーブル及び縮小後の変化点検出に使用する変数を初期化する（ステップＢ１）。
【００８１】
次に、以降のステップで使用する注目変化点（Ｃ１）、白変化点候補（Ｃ２）が検出されているか否か、すなわち（Ｃ１Ｃ２＿ＦＯＵＮＤ）フラグが有効（ＴＲＵＥ）となっているかを判断する（ステップＢ２）。注目変化点Ｃ１、白変化点候補Ｃ２は、変化点テーブルＡ（１ライン目）から抽出されるもので、ここで抽出されていなければステップＢ３に移行する。
【００８２】
ステップＢ３では、入力変化点テーブルと読みだし用縮小変化点テーブルの内、黒画素への変化点位置が小さい方を注目変化点（Ｃ１）として書き込み用縮小変化点テーブルに登録し、注目変化点の右側にある最初の白画素への変化点を白変化点候補（Ｃ２）とする。
【００８３】
図８に示す例において、入力変化点テーブルを変化点テーブルＡとし、読みだし用変化点テーブルを変化点テーブルＢとした場合、注目変化点（Ｃ１）が変化点テーブルＡにある１（１番目の変化点）であり、白変化点候補（Ｃ２）はその右側にある７（２番目の変化点）となる。また、注目変化点（Ｃ１）については、２ラインのＯＲ縮小結果として確定するため、書き込み用縮小変化点テーブルに登録する（図８に示す変化点テーブルＡの１番目の変化点１）。
【００８４】
次に、処理がラインの終端に達していなければ、注目変化点（Ｃ１）が検出されたラインの反対側のライン（読みだし用変化点テーブルである変化点テーブルＢ）から、座標値が白変化点候補（Ｃ２）以上となる変化点（ＣＸ）を検索する（ステップＢ５）。図８に示す例では、変化点テーブルＢの８（５番目の変化点）が変化点（ＣＸ）となる。
【００８５】
ここで、検出した変化点（ＣＸ）が条件ａまたは条件ｃを満たすか否か判定する（ステップＢ６）。
条件ａは、変化点（ＣＸ）が白変化点候補（Ｃ２）と同じ位置にあり、その色が白の変化点であった場合を意味する。図９には条件ａが成立するケースを示している（２ライン目の４番目の変化点７が変化点（ＣＸ））。なお、実際は変化点テーブル上で処理しているが、ここでは直観的に理解しやすいようにイメージパターンで示している。
【００８６】
また条件ｃは、変化点（ＣＸ）が白変化点候補（Ｃ２）を越える座標位置にあり、その色が黒画素への変化点であった場合を意味する。図１０には条件ｃが成立するケースを示している（２ライン目の５番目の変化点８が変化点（ＣＸ））。
【００８７】
どちらかの条件が成立すればステップＢ７の処理に移行する。ステップＢ７では、白変化点候補Ｃ２を書き込み用縮小変化点テーブルに登録する。図８に示す例では条件ｃが成立するので、白変化点候補Ｃ２の変化点、すなわち２番目の変化点７を書き込み用縮小変化点テーブルに登録する。また、次のＣ１、Ｃ２を検出するために（Ｃ１Ｃ２＿ＦＯＵＮＤ）フラグを無効（ＦＡＬＳＥ）にし、ステップＢ２に戻る。
【００８８】
ステップＢ２では（Ｃ１Ｃ２＿ＦＯＵＮＤ）フラグが無効（ＦＡＬＳＥ）となっているため、次の変化点（Ｃ１）（Ｃ２）を検出するステップＢ３の処理に移行する。図８に示す例においては、読みだし用縮小変化点テーブルである変化点テーブルＢの５番目の変化点８を注目変化点（Ｃ１）、変化点テーブルＢの６番目の変化点９を白変化点候補Ｃ２として検出される（ステップＢ３）。（なお、図９、図１０においては、次の変化点（Ｃ１）（Ｃ２）を（Ｃ１´）（Ｃ２´）で表している。）
次に、ステップＢ５では、注目変化点Ｃ１の反対側のラインで、座標値が白変化点候補（Ｃ２）以上となる変化点（ＣＸ）として、入力変化点テーブルの変化点テーブルＡの４番目の変化点１０を検出する。
【００８９】
この場合、変化点（ＣＸ）は条件ａ、条件ｃの何れも満たさないため（ステップＢ６）、ステップＢ８の処理に移行して条件ｂを満たすか否かを判定する。
条件ｂは、変化点（ＣＸ）が白変化点候補（Ｃ２）と同じ位置にあり、その色が黒への変化点であった場合を意味する。
【００９０】
図１１には条件ｂが成立するケースを示している。条件ｂは、変化点（ＣＸ）が白変化点候補（Ｃ２）と同じ位置にあり、その色が黒への変化点であった場合を意味している。
【００９１】
図８に示す例では、白変化点候補（Ｃ２）（変化点テーブルＢの７番目の変化点９）と、変化点（ＣＸ）（変化点テーブルＡの３番目の変化点９）とが同じ位置にあるので条件ｂが成立する。
【００９２】
条件ｂが成立した場合、変化点（ＣＸ）を注目変化点（Ｃ１）とし、その右側にある最初の白画素への変化点を白変化点候補（Ｃ２）とする（ステップＢ９）。
【００９３】
図１１に示す例では、新しい注目変化点が（Ｃ１´）、白変化点候補が（Ｃ２´）のようになる。この場合、白変化点候補（Ｃ２）が注目変化点（Ｃ１´）の黒への変化点に潰されるため、縮小変化点テーブルには登録しない。
【００９４】
なお、条件ｂを満たさない場合、すなわち条件ａ、条件ｂ、条件ｃ以外の場合には、白変化点候補（Ｃ２）の位置を注目変化点（Ｃ１）とし、検出した変化点（ＣＸ）を白変化点候補（Ｃ２）とする（ステップＢ１０）。
【００９５】
図１２に条件ａ，ｂ，ｃの何れも満たさないその他のケースを示している。図１２の例では新しい注目変化点が（Ｃ１´）、白変化点候補が（Ｃ２´）のようになる。条件ｂの時と同様に、ここでも白変化点候補（Ｃ２）が変化点（Ｃ１´）の黒への変化点に潰されるため、縮小変化点テーブルには登録しない。
【００９６】
ステップＢ９（またはＢ１０）の処理が終了すると、注目変化点（Ｃ１）、または白変化点候補（Ｃ２）がライン終端であるかを判定する（ステップＢ１１）。ライン終端でない場合には、さらに座標値が白変化点候補（Ｃ２）以上となる変化点を検出するために（Ｃ１Ｃ２＿ＦＯＵＮＤ）フラグを有効（ＴＲＵＥ）にして、ステップＢ２の処理に戻る。
【００９７】
一方、ライン終端である場合、白変化点候補Ｃ２を書き込み用縮小変化点テーブルに登録する（ステップＢ１２）。なお、ステップＢ４において、変化点テーブル中の変化点がライン終端に到達したことが判定された場合にも、ステップＢ１２を実行する。
【００９８】
次に、入出力イメージのライン数情報から出力すべき縮小変化点テーブルを選択する（ステップＢ１４）。例えばＤＤＡのキャリー発生条件により実現できる。つまり、１ライン毎にＤＤＡを作動させ、ＤＤＡのキャリーが発生した時の書き込み用縮小変化点テーブルを出力すれば良い。
【００９９】
また、書き込み用縮小変化点テーブルを出力する場合は、変化点テーブルを初期化することを示す（ＣＬＲ＿ＴＢＬ）フラグを有効（ＴＲＵＥ）にする（ステップＢ１５）。これにより、ステップＢ１において縮小変化点テーブルが初期化される。
【０１００】
ここで、１画面分の処理を終了したか判断し（ステップＢ１６）、終了していない場合は、縮小変化点テーブルのバンクを切替え、ステップＢ１の処理に戻り、前述した処理を繰り返す。
【０１０１】
このようにして、イメージデータの副走査方向における縮小処理を行なう際に、各ラインの白及び黒への変化点座標情報が格納された変化点テーブルをもとにＯＲ縮小変化点情報を求めるので、第１実施形態の場合と同様にして、作業メモリ上でのイメージデータの展開が不要となり、データ転送量を減少させることができ高速なイメージ処理が可能となる。
【０１０２】
次に、本発明の第３実施形態に係わるイメージ処理方法におけるデータ変換方法を、図１３に示すフローチャートを参照しながら説明する。第３実施形態におけるデータ変換方法は、図１６に示すように、イメージデータの白及び黒への変化点座標情報からなる変化点データ列をもとにイメージデータを生成する。
【０１０３】
ステップＣ１は、初期化処理を実行するステップであり、直前の変化点演算結果の初期化を行う。
ステップＣ２は、直前の変化点座標に対する演算結果を（ＢＹＴＥＬＥＮ＿ＯＬＤ）に保存し、入力変化点の座標を所定の値で除算した商と余りを求めるステップである。
【０１０４】
ステップＣ３は、ステップＣ２で求めた変化点座標のバイトレングス（ＢＹＴＥＬＥＮ）と直前の値（ＢＹＴＥＬＥＮ＿ＯＬＤ）との差を求め、これを（ＦＩＬＬ＿ＮＯ）に保持するステップである。
【０１０５】
ステップＣ４は、ステップＣ３で求めた（ＦＩＬＬ＿ＮＯ）が１以上であるか否かを判定するステップである。
ステップＣ５は、カレント変化点の色が黒か否かを判定するステップ。
【０１０６】
ステップＣ６，Ｃ７は、バイトレングスの端数値（ＢＩＴＰＡＴ＿ＮＯ）とカレント色（ＣＯＬＯＲ）をアドレスとし、イメージ変換テーブルを参照し、端数部のイメージパターン（ＢＩＴＰＡＴ＿ＲＥＧ）を求めるステップであり、カレント色が黒の場合、（ＢＩＴＰＡＴ＿ＲＥＧ）とイメージ変換テーブルの出力をＯＲ演算し、（ＢＩＴＰＡＴ＿ＲＥＧ）に代入する。
【０１０７】
一方、カレント色が白の場合、（ＢＩＴＰＡＴ＿ＲＥＧ）とイメージ変換テーブルの出力をＡＮＤした結果を（ＢＩＴＰＡＴ＿ＲＥＧ）に代入する。
ステップＣ８は、ステップＣ４の判定で（ＦＩＬＬ＿ＮＯ）が１以上の場合、実行されるステップであり、ステップＣ６、Ｃ７で生成した端数部のイメージパターン（ＢＩＴＰＡＴ＿ＲＥＧ）を出力イメージ領域に転送するステップである。また、（ＢＩＴＰＡＴ＿ＲＥＧ）をステップＣ２で求めた（ＢＩＴＰＡＴ＿ＮＯ）に対応するイメージパターンで初期化する。
【０１０８】
ステップＣ９は、１バイト（ここでは８ビット）で構成される白または黒のイメージを（ＦＩＬＬ＿ＮＯ）−１回分出力イメージ領域に転送するステップである。
【０１０９】
ステップＣ１０，Ｃ１１は、ライン終端、１画面終了を判定するステップであり、１画面分の変化点情報をイメージに変換するまでラスタ走査方向に順次処理を実行するための終了判定である。
【０１１０】
次に、第３実施形態におけるデータ変換方法の動作について、図１４、図１５、図１６に示す具体例を用いながら説明する。
図１４（ｂ）に示す入力変化点データが入力データとなる。図１４（ｂ）の変化点座標列に対応するイメージデータを、図１４（ａ）に示している。
【０１１１】
まず、直前の変化点演算結果の初期化を行なった後、直前の演算結果を（ＢＹＴＥＬＥＮ＿ＯＬＤ）に保存し、入力データの変化点座標を所定の値で除算した商（バイトレングス（ＢＹＴＥＬＥＮ））と余り（ＢＩＴＰＡＴ＿ＮＯ）を求める（ステップＣ１，Ｃ２）。本実施形態では、所定の値を８とし、変化点座標のバイトレングス（ＢＹＴＥＬＥＮ）とその余り（ＢＩＴＰＡＴ＿ＮＯ）を求めている。すなわち、ＰＯＳＨＩＦＴ＝３として入力変化点データ（ＣＰＯＳ）をシフトして商をもとめ、またＰＯＳＭＡＳＫ＝７として入力変化点データ（ＣＰＯＳ）に対する論理積によって余りを求めている。
【０１１２】
次に、ステップＣ２で求めた変化点座標のバイトレングス（ＢＹＴＥＬＥＮ）と直前の値（ＢＹＴＥＬＥＮ＿ＯＬＤ）との差を求め、これを（ＦＩＬＬ＿ＮＯ）とする（ステップＣ３）。
【０１１３】
ここで、（ＦＩＬＬ＿ＮＯ）が０であった場合（ステップＣ４）、ステップＣ５に移行する。ステップＣ５ではカレント変化点の色が黒か否かを判定する。
カレント変化点の色が黒である場合、前の端数部のイメージパターン（ＢＩＴＰＡＴ＿ＲＥＧ）と、図１５（１）に示す黒用のイメージ変換テーブルから得られるイメージパターンとをＯＲ演算することによって、（ＢＩＴＰＡＴ＿ＲＥＧ）を生成する（ステップＣ６）。
【０１１４】
また、カレント変化点の色が白である場合、前の端数部のイメージパターン（ＢＩＴＰＡＴ＿ＲＥＧ）と、図１５（２）に示す白用のイメージ変換テーブルから得られるイメージパターンとをＡＮＤ演算することによって、（ＢＩＴＰＡＴ＿ＲＥＧ）を生成する（ステップＣ７）。
【０１１５】
なお、本実施形態では、端数（ＢＩＴＰＡＴ＿ＮＯ）によりアクセスされるイメージ変換用テーブルに白変化点用と黒変化点用を設けているが、２つのテーブルは互いにビット反転により求められるため必ずしも２つ必要ではない。すなわち、一方のテーブルから得られるイメージパターンを反転して用いることで、他方のテーブルに代用する。また、本実施形態では、８ビットのイメージパターンを格納するテーブルであるが、出力イメージ領域に展開する単位によっては、１６ビット／３２ビット等のテーブル構成とする。イメージ変換テーブルに格納されるイメージパターンは、例えば黒用とすると、端数（ＢＩＴＰＡＴ＿ＮＯ）が示す数の連続した白画素の後、残りの画素分の黒画素が連続するパターンである。
【０１１６】
一方、ステップＣ４において、ステップＣ３で求めた（ＦＩＬＬ＿ＮＯ）が１以上であると判定した場合、ステップＣ６、Ｃ７で生成した端数部のイメージパターン（ＢＩＴＰＡＴ＿ＲＥＧ）を、変化点データをもとに生成された最終的なイメージパターンとして出力イメージ領域に転送する（ステップＣ８）。また、（ＢＩＴＰＡＴ＿ＲＥＧ）を、次の変化点データに対する処理（ステップＣ６，Ｃ７）のために、ステップＣ２で求めた（ＢＩＴＰＡＴ＿ＮＯ）に対応するイメージ変換テーブルから得られたイメージパターンで初期化する。
【０１１７】
そして、８ビットで構成される白または黒のイメージを（ＦＩＬＬ＿ＮＯ）−１回分出力イメージ領域に転送する。すなわち、（ＦＩＬＬ＿ＮＯ）が２以上である場合には、白または黒の同じ色が連続して１バイト以上連続することを示すので、必要なバイト数の白または黒のデータを連続して出力する。
【０１１８】
ここで、ライン終端に達していなければ、ステップＣ２の処理に戻り、対象ラインの残りの部分に対して処理を繰り返す。また、ライン終端に達し、１画面分の処理が終了していなければ、ステップＣ１の初期化処理にもどり、残りのラインの入力変化点データに対する処理を行なう。全てのラインについての処理が完了したら処理を終了する。
【０１１９】
図１４に示す例では、まず、（ＦＩＬＬ＿ＮＯ）が１以上となるまで端数部の演算を行う。この例では入力変化点データ（ＣＰＯＳ）が５から７までの間、図１４（ｃ）に示すように、バイトレングス（ＢＹＴＥＬＥＮ）が０なので、端数部についての演算を行なうことになる。
【０１２０】
入力変化点データ（ＣＰＯＳ）＝５の時、端数（ＢＩＴＰＡＴ＿ＮＯ）が５（黒画素への変化点）であるので、端数部のイメージパターン（ＢＩＴＰＡＴ＿ＲＥＧ）を、（ＢＩＴＰＡＴ＿ＮＯ）＝５に対応する黒用のイメージ変換テーブル値（０ｘ０７）、すなわち図１６に示すＣＰＯＳに対応するＢＩＴＰＡＴ（ＢＩＴＰＡＴ＿ＮＯ）で初期化する。
【０１２１】
入力変化点データ（ＣＰＯＳ）＝６の時、端数（ＢＩＴＰＡＴ＿ＮＯ）が６であり、白画素への変化点であるので、白用のイメージ変換テーブルから得られる（ＢＩＴＰＡＴ＿ＮＯ）＝６のテーブル値（０ｘｆｃ）と、前の端数部のイメージパターン（ＢＩＴＰＡＴ＿ＲＥＧ）とＡＮＤをとることで（ＢＩＴＰＡＴ＿ＲＥＧ）を求める（ステップＣ７）。
【０１２２】
（ＣＰＯＳ）＝７の時、変化点の色が黒であるため、黒用のイメージ変換テーブルから得られる（ＢＩＴＰＡＴ＿ＮＯ）＝７に対応するイメージパターンと、前の端数部のイメージパターン（ＢＩＴＰＡＴ＿ＲＥＧ）とＯＲをとることで（ＢＩＴＰＡＴ＿ＲＥＧ）を求める（ステップＣ６）。
【０１２３】
（ＣＰＯＳ）＝９の時（白画素への変化点）、バイトレングス（ＢＹＴＥＬＥＮ）＝１となるので、ステップＣ３において（ＦＩＬＬ＿ＮＯ）＝１が求められる。従って、直前で求めた（ＢＩＴＰＡＴ＿ＲＥＧ）の値を出力イメージ領域に転送する。また、（ＢＩＴＰＡＴ＿ＮＯ）＝１から白用のイメージ変換テーブルを参照し、（ＢＩＴＰＡＴ＿ＲＥＧ）に代入する（ステップＣ８）。
【０１２４】
以下、（ＣＰＯＳ）＝１５まで同様に演算が可能である。最終変化点の（ＣＰＯＳ）＝２４の時、前のバイトレングス（ＢＹＴＥＬＥＮ−ＯＬＤ）＝１であり、バイトレングス（ＢＹＴＥＬＥＮ）＝３であるため（ＦＩＬＬ＿ＮＯ）＝２となる。このため、ステップＣ８において直前の（ＢＩＴＰＡＴ＿ＲＥＧ）を出力した後、（ＦＩＬＬ＿ＮＯ）−１回分のバイトデータ、つまり１バイト分の黒のイメージパターンを出力する。処理対象とする入力変化点データ（イメージパターン）によっては、ここで白のイメージパターンを出力する。
【０１２５】
このようにして、イメージパターンの主走査方向における白または黒への変化点座標情報列からなる入力変化点データをイメージデータに変換することができる。
【０１２６】
次に、本発明の第４実施例に係わるイメージ処理方法について、図１７に示すフローチャートを参照しながら説明する。第４実施形態では、イメージデータの圧縮データから、全体のイメージを作業メモリ上に展開することなく縮小イメージデータを生成する処理である。
【０１２７】
ステップＤ１は、圧縮データから白または黒への変化点座標情報からなる変化点座標データを１ライン分生成するステップである。
ステップＤ２は、ステップＤ１により生成した変化点座標データをもとに、副走査方向に対して縮小した変化点情報を生成するステップである。
【０１２８】
ステップＤ３は、ステップＤ２に生成した変化点座標データをもとに、主走査方向に対して縮小した変化点情報を生成するステップである。
ステップＤ４は、ステップＤ２において生成した変化点情報をもとにイメージデータを生成するステップである。
【０１２９】
次に、第４実施形態におけるデータ処理の動作について説明する。
まず、イメージデータの圧縮データから、白または黒への変化点座標情報からなる変化点座標データを１ライン分生成し、ラインバッファに格納する（ステップＤ１）。
【０１３０】
例えば、２値化イメージに対する符号化方式としては、一般にＭＨ（Modified Huffman）符号化方式、ＭＲ（Modified READ ）符号化方式などがある。これらの符号化方式によりイメージデータを圧縮して得られた圧縮データ（符号データ）は、所定の規則に従って符号化されており、この規則に基づいて白または黒への変化点座標を抽出し、変化点座標データとする。
【０１３１】
次に、ステップＤ１によって得られた変化点座標データを用いて、副走査方向に対して縮小した変化点情報を生成する。ここで、前述した第２実施形態において説明したデータ縮小方法を用いる。ただし、副走査方向への縮小は２ライン分の変化点座標情報列、すなわち２ライン分の変化点データに対して実行されるので、ステップＤ１において２ライン分の変化点座標データ（変化点テーブル）が生成されてから実行する。
【０１３２】
なお、ステップＤ２は、第２実施形態において説明したデータ縮小方法を用いるものとし、詳細な説明を省略する。
次に、ステップＤ２における副走査方向への縮小処理により得られた変化点座標データに対して、主走査方向に対する縮小処理を行なう（ステップＤ３）。なお、ステップＤ３は、第１実施形態において説明したデータ縮小方法を用いるものとし、詳細な説明を省略する。
【０１３３】
次に、ステップＤ３における主走査方向への縮小処理により得られた変化点座標データに対するイメージデータへの変換を行なう。変化点座標データは、主走査方向、副走査方向の両方向に対して縮小処理が施されているため、ここで変化点座標データからイメージデータを生成することで、元のイメージデータを展開することなく縮小イメージデータが得られることになる。なお、ステップＤ４は、第３実施例において説明したデータ変換方法を用いるものとし、詳細な説明を省略する。
【０１３４】
ここで、１画面分の符号データについての処理が完了していなければ（ステップＤ５）、ステップＤ１の処理に戻り、次のラインについて前述した処理を実行する。以下、１画面分の符号データについての処理が完了すると処理を終了する。
【０１３５】
このようにして、イメージデータの圧縮データから、作業メモリ上にイメージデータを展開することなく、縮小後のイメージデータを生成することができる。従って、データ転送量を減少させることができ高速なイメージ処理が可能となる。特に、図形や文字等を含むイメージにおいては、白（空白）の領域が少ない場合には、縮小処理における演算量とメモリアクセス量が減るため、大幅なイメージ処理の高速化が可能である。
【０１３６】
【発明の効果】
以上詳述したように本発明によれば、伸張処理と縮小処理とを組み合わせた処理でも高速にイメージ処理ができ、かつ画質劣化の少ない縮小結果を提供することが可能となる。
【図面の簡単な説明】
【図１】本発明の実施形態に係わるイメージ処理方法を実現するシステムの構成を示すブロック図。
【図２】第１実施形態のデータ縮小方法を説明するためのフローチャート。
【図３】第１実施形態のデータ縮小方法を説明するためのフローチャート。
【図４】第１実施形態における縮小後の変化点座標を検出する処理の過程を説明するための図。
【図５】第１実施形態におけるステップＡ１０の縮小演算処理の消失した白画素への変化点を復活させる処理を説明するための図。
【図６】第２実施形態に係わるイメージ処理方法におけるデータ縮小方法を説明するためのフローチャート。
【図７】第２実施形態に係わるイメージ処理方法におけるデータ縮小方法を説明するためのフローチャート。
【図８】第２実施形態の処理対象とする入力変化点テーブルの一例を示す図。
【図９】第２実施形態における条件ａを説明するための図。
【図１０】第２実施形態における条件ｃを説明するための図。
【図１１】第２実施形態における条件ｂを説明するための図。
【図１２】第２実施形態における条件ａ，ｂ，ｃの何れも満たさないその他のケースを説明するための図。
【図１３】第３実施形態に係わるイメージ処理方法におけるデータ変換方法を説明するためのフローチャート。
【図１４】第３実施形態におけるデータ変換方法の動作を説明するためのイメージ生成過程を示す図。
【図１５】第３実施形態におけるイメージ変換テーブルの一例を示す図。
【図１６】第３実施形態におけるデータ変換方法の動作を説明するためのイメージ生成過程を示す図。
【図１７】第４実施例に係わるイメージ処理方法を説明するためのフローチャート。
【図１８】従来のＯＲ縮小処理を説明するための図。
【図１９】ＤＤＡによるキャリーパターンの発生過程を示す図。
【符号の説明】
１０…ＣＰＵ１０        １２…ＲＡＭ
１４…ＶＲＡＭ          １６…ＲＯＭ
１８…入力装置          ２０…入力制御部
２２…表示装置          ２４…表示制御部
２６…記憶装置          ２８…記憶制御部
【図１】
0003724868.tif 000002
【図２】
0003724868.tif 000003
【図３】
0003724868.tif 000004
【図４】
0003724868.tif 000005
【図５】
0003724868.tif 000006
【図６】
0003724868.tif 000007
【図７】
0003724868.tif 000008
【図８】
0003724868.tif 000009
【図９】
0003724868.tif 000010
【図１０】
0003724868.tif 000011
【図１１】
0003724868.tif 000012
【図１２】
0003724868.tif 000013
【図１３】
0003724868.tif 000014
【図１４】
0003724868.tif 000015
【図１５】
0003724868.tif 000016
【図１６】
0003724868.tif 000017
【図１７】
0003724868.tif 000018
【図１８】
0003724868.tif 000019
【図１９】
0003724868.tif 000020