(57)【特許請求の範囲】
【請求項１】
画像データを圧縮符号化する画像処理装置であって、
量子化誤差演算モードを設定する設定手段と、
画像データを前記量子化誤差演算モードに応じた量子化誤差演算方法及び第１の量子化ステップに基づいて符号化する第１の符号化手段と、
前記第１の符号化手段で得られた符号化データを復号し、前記量子化誤差演算モードに応じた量子化誤差演算方法及び第２の量子化ステップに基づいて再符号化する第２の符号化手段と、
前記第１の符号化手段によって生成される符号化データの符号量を監視すると共に、当該符号量が所定量になったか否かを判断する符号量監視手段とを備え、
前記符号量監視手段によって前記符号量が所定量に達したと判断した場合に、
前記量子化誤差演算モードに応じた量子化誤差演算方法を再設定すると共に、前記第１、第２の量子化ステップを変更し、
前記第１の符号化手段で既に得られた符号化データを前記第２の符号化手段によって再符号化させ、
前記再符号化により得られた再符号化データを、前記第１量子化ステップを変更後の第１の符号化手段により前記画像データを符号化して得られた符号化データとして、所定の記憶手段に記憶させ、
前記第１量子化ステップを変更後の第１の符号化手段により、未だ符号化されていない後続の画像データを符号化させ、後続の符号化データとして前記記憶手段に記憶させる
ことを特徴とする画像処理装置。
【請求項２】
前記量子化誤差演算モードには、圧縮率優先モード、エッジ強調強モード、エッジ強調弱モードが含まれることを特徴とする請求項第１項に記載の画像処理装置。
【請求項３】
前記量子化誤差演算のモードには、画質優先モードが更に含まれることを特徴とする請求項第２項に記載の画像処理装置。
【請求項４】
前記圧縮率優先モードは、初期段階では量子化後のデータの小数点以下を四捨五入し、符号データ量が前記所定量には到達した以降では切り捨てが行われることを特徴とする請求項第２項に記載の画像処理装置。
【請求項５】
前記エッジ強調強モードは、初期段階では量子化後のデータの小数点以下を四捨五入し、符号データ量が前記所定量には到達した以降では条件つき切り上げが行われることを特徴とする請求項第２項に記載の画像処理装置。
【請求項６】
前記条件つき切り上げは、量子化後のデータが所定値以上の値である場合に行われることを特徴とする請求項第５項に記載の画像処理装置。
【請求項７】
前記エッジ強調弱モードは、初期段階では量子化後のデータの小数点以下を四捨五入し、符号データ量が前記所定量には到達した以降では条件つき切り捨てが行われることを特徴とする請求項第２項に記載の画像処理装置。
【請求項８】
前記条件つき切り捨ては、量子化後のデータが所定値以上の値である場合に行われることを特徴とする請求項第７項に記載の画像処理装置。
【請求項９】
画像データを圧縮符号化する画像処理方法であって、
量子化誤差演算モードを設定する設定工程と、
画像データを前記量子化誤差演算モードに応じた量子化誤差演算方法及び第１の量子化ステップに基づいて符号化する第１の符号化工程と、
前記第１の符号化工程で得られた符号化データを復号し、前記量子化誤差演算モードに応じた量子化誤差演算方法及び第２の量子化ステップに基づいて再符号化する第２の符号化工程と、
前記第１の符号化手段によって生成される符号化データの符号量を監視すると共に、当該符号量が所定量になったか否かを判断する符号量監視工程とを備え、
前記符号量監視工程によって前記符号量が所定量に達したと判断した場合に、
前記量子化誤差演算モードに応じた量子化誤差演算方法を再設定すると共に、前記第１、第２の量子化ステップを変更し、
前記第１の符号化手段で既に得られた符号化データを前記第２の符号化工程によって再符号化させ、
前記再符号化により得られた再符号化データを、前記第１量子化ステップを変更後の第１の符号化手段により前記画像データを符号化して得られた符号化データとして、所定の記憶手段に記憶させ、
前記第１量子化ステップを変更後の第１の符号化工程により、未だ符号化されていない後続の画像データを符号化させ、後続の符号化データとして前記記憶手段に記憶させる
ことを特徴とする画像処理方法。
【請求項１０】
コンピュータが実行することで、画像データを圧縮符号化する画像処理装置として機能するコンピュータプログラムであって、
量子化誤差演算モードを設定する設定手段と、
画像データを前記量子化誤差演算モードに応じた量子化誤差演算方法及び第１の量子化ステップに基づいて符号化する第１の符号化手段と、
前記第１の符号化手段で得られた符号化データを復号し、前記量子化誤差演算モードに応じた量子化誤差演算方法及び第２の量子化ステップに基づいて再符号化する第２の符号化手段と、
前記第１の符号化手段によって生成される符号化データの符号量を監視すると共に、当該符号量が所定量になったか否かを判断する符号量監視手段とを備え、
前記符号量監視手段によって前記符号量が所定量に達したと判断した場合に、
前記量子化誤差演算モードに応じた量子化誤差演算方法を再設定すると共に、前記第１、第２の量子化ステップを変更し、
前記第１の符号化手段で既に得られた符号化データを前記第２の符号化手段によって再符号化させ、
前記再符号化により得られた再符号化データを、前記第１量子化ステップを変更後の第１の符号化手段により前記画像データを符号化して得られた符号化データとして、所定の記憶手段に記憶させ、
前記第１量子化ステップを変更後の第１の符号化手段により、未だ符号化されていない後続の画像データを符号化させ、後続の符号化データとして前記記憶手段に記憶させる
として機能することを特徴とするコンピュータプログラム。
【請求項１１】
請求項１０に記載のコンピュータプログラムを格納したことを特徴とするコンピュータ可読記憶媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、画像データを符号化する画像処理装置及びその制御方法及びコンピュータプログラム及び記憶媒体に関するものである。
【０００２】
【従来の技術】
従来、静止画像の圧縮方式には、離散コサイン変換を利用したＪＰＥＧ方式や、Wavelet変換を利用した方式が多く使われている。この種の符号化方式は、可変長符号化方式であるので、符号化対象の画像毎に符号量が変化するものである。
【０００３】
国際標準化方式であるＪＰＥＧ方式では，画像に対して１組の量子化マトリクスしか定義できないので、プリスキャン無しには、符号量調整が行えず、限られたメモリに記憶するシステムで使用する場合においては、メモリオーバーを起こす危険性があった。
【０００４】
これを防止するためには、充分なメモリ容量を確保しておくことが必要となるが、入力される画像のサイズが一律同じではなく、異なる場合もある。したがって、これまでは、その入力する可能性のある最大サイズ分に適合し得る容量のメモリを確保せざるを得ない。
【０００５】
【発明が解決しようとする課題】
しかしながら、最大サイズに合わせてメモリを確保するような装置においては、それより小さなサイズの画像を入力する場合にもそのメモリが確保されることを意味することになり、メモリを有効活用しているとは到底言えない。
【０００６】
そこで、確保するメモリ容量を中程度の画像に合わせることが考えられるが、今度は、符号化処理で得られた符号データがそれを越えてしまうということが発生する。
【０００７】
この場合の対策として、予定した符号量よりオーバーした場合は、圧縮率を変更して、原稿の再読み込みを行なう方法や、予めプリスキャンによる符号量見積もりを行ない、符号量を調整するために、量子化パラメータの再設定を行なう方法などが知られている。
【０００８】
従来、プリスキャンを行う符号量制御方式として、例えば、プリ圧縮したデータを内部バッファメモリに入れ、これを伸長し、圧縮パラメータを変え、本圧縮し、外部記憶に出力する方式が知られている。このとき、本圧縮は、プリ圧縮よりも圧縮率を高めにする必要がある。
【０００９】
しかしながら、従来は、圧縮バッファとして、目標圧縮率以上の圧縮バッファが必要となり、中間的に使うバッファのオーバーフローを防ぐには、原画のデータを記録できるほどの容量が必要となることは避けられなかった。
【００１０】
さらに、符号化処理を繰り返す方法では、圧縮した全データに対して、復号、再圧縮を行なう処理が入るため、連続処理のスピードがあがらないという問題があった。
【００１１】
本発明は上記従来例に鑑みて成されたものであり、画像の再入力を不要とし、且つ、少ないメモリ量でもって目的とするサイズ以下に圧縮符号化させると共に、画質についてもユーザの意図を反映させることを可能ならしめる画像処理装置及びその制御方法、並びにコンピュータプログラム及び可読記憶媒体を提供しようとするものである。
【００１２】
【課題を解決するための手段】
かかる課題を解決するため、例えば本発明の画像処理装置は以下の構成を備える。すなわち、
画像データを圧縮符号化する画像処理装置であって、
量子化誤差演算モードを設定する設定手段と、
画像データを前記量子化誤差演算モードに応じた量子化誤差演算方法及び第１の量子化ステップに基づいて符号化する第１の符号化手段と、
前記第１の符号化手段で得られた符号化データを復号し、前記量子化誤差演算モードに応じた量子化誤差演算方法及び第２の量子化ステップに基づいて再符号化する第２の符号化手段と、
前記第１の符号化手段によって生成される符号化データの符号量を監視すると共に、当該符号量が所定量になったか否かを判断する符号量監視手段とを備え、
前記符号量監視手段によって前記符号量が所定量に達したと判断した場合に、
前記量子化誤差演算モードに応じた量子化誤差演算方法を再設定すると共に、前記第１、第２の量子化ステップを変更し、
前記第１の符号化手段で既に得られた符号化データを前記第２の符号化手段によって再符号化させ、
前記再符号化により得られた再符号化データを、前記第１量子化ステップを変更後の第１の符号化手段により前記画像データを符号化して得られた符号化データとして、所定の記憶手段に記憶させ、
前記第１量子化ステップを変更後の第１の符号化手段により、未だ符号化されていない後続の画像データを符号化させ、後続の符号化データとして前記記憶手段に記憶させることを特徴とする。
【００１３】
【発明の実施の形態】
以下、添付図面に従って本発明に係る実施形態を説明するが、先ず、基本部分について説明する。
【００１４】
図１は、実施形態が適用する画像処理装置１００の機能ブロック構成図である。以下、同図の各部を簡単に説明する。
【００１５】
画像処理装置１００は、イメージスキャナから画像を入力する入力部１０１を備えている。なお、入力部１０１は、ページ記述言語をラスターイメージにレンダリングする手段などから画像データを入力しても良いし、記憶媒体に格納された画像ファイルを読込むことで実現しても良く、場合によってはネットワークより受信するようにしても良い。
【００１６】
符号化部１０２は、入力された画像データの符号化を行なう。なお、符号化方式は公知のＪＰＥＧ符号化方式を用い、８×８画素単位に相当する画像データを直交変換し、後述する量子化ステップを用いた量子化、ハフマン符号化処理を行なうものである。
【００１７】
第１のメモリ制御部１０３と、第２のメモリ制御部１０５は、上記符号化部１０２から夫々に出力されてくる上記符号化データ（同じ符号化データ）を第１のメモリ１０４と第２のメモリ１０６へ格納する様に制御する。ここで、第１のメモリ１０４は、最終的に確定した（目標値以内のデータ量に圧縮し終わった）符号化データを、図１の基本構成の外部に接続されるネットワーク機器、画像出力装置や大容量記憶装置等へ出力するために、該符号化データを保持するためのメモリである。また、第２のメモリ１０６は、前記符号化データを第１のメモリ上に形成するための圧縮符号化処理を補助する作業用のメモリである。
【００１８】
カウンタ１０７は、符号化部１０２によって圧縮符号化された画像データのデータ量をカウントし、該カウント値を保持すると共に、そのカウント結果により符号化シーケンスの制御を行なう符号化シーケンス制御部１０８に出力する。
【００１９】
符号化シーケンス制御部１０８では、カウンタ１０７のカウント値がある設定値に達したかどうかを検出し、その設定値に達した（目標値を越えた）ことを検出した時にメモリ１０４内の格納済みのデータを廃棄するよう第１のメモリ制御部１０３に制御信号を出力する。上記第１のメモリ制御部１０３は、この制御信号に基づいて、メモリアドレスカウンタをクリアするか、あるいは符号化データ管理テーブルをクリアすることにより、前記格納データを廃棄する。また、このとき、符号化シーケンス制御部１０８は、第１のカウンタ１０７をゼロクリアする（入力部１０１からの入力は継続している）と共に、符号化部１０２に対して今までより、高い圧縮率で符号化を行なうよう制御する。すなわち、本装置の符号化処理で発生する符号化データのデータ量が最終的に例えば１／２になるように制御する。なお、ここでは、１／２としたが任意に設定できることは言うまでもない。
【００２０】
そして、圧縮率変更後の符号化データも、これまでと同様、第１のメモリ制御部１０３と第２のメモリ制御部１０５を経て、第１のメモリ１０４と第２のメモリ１０６に夫々格納される。
【００２１】
さらに、符号化シーケンス制御部１０８は、カウンタ１０７のカウント値がある設定値に達した場合に、第２のメモリ制御部１０５に対して、これまでに第２のメモリ１０６に格納した符号化データを読み出し、符号化データ変換手段である再符号化部１０９に該符号化データを出力するよう制御信号を出す。
【００２２】
再符号化部１０９は、入力された符号化データを復号化し、データ量を減らすための再量子化等を行なった後に再び符号化処理を行ない、圧縮率が変更された符号化部１０２と同じ圧縮率のデータ量を第２のカウンタ１１０に出力する。
【００２３】
この再符号化部１０９から出力される符号化データは、第１のメモリ制御部１０３と第２のメモリ制御部１０５を経由して、それぞれ、第１のメモリ１０４と第２のメモリ１０６に格納される。
【００２４】
再符号化処理が終了したかどうかは、第２のメモリ制御部が検出する。すなわち、再符号化処理するために読み出すデータが無くなれば、再符号化処理の終了を符号化シーケンス制御部１０８に知らせる。実際には、第２のメモリ制御部１０５の読みだし処理だけでなく、再符号化部１０９の処理も終了した後に、符号化処理が完了したことになる。
【００２５】
第２のカウンタ１１０で得られるカウント値は、再符号化処理が完了した後、第１のカウンタ１０７で保持されているカウンタ値に加算される。この加算結果は再符号化処理が完了した直後における、第１のメモリ１０４内のデータ量の合計を表す。即ち、１画面分（ページ分）の符号化部１０２と再符号化部１０９の符号化処理が終了した時点では、上記加算後の第１のカウンタ１０７で保持されているカウンタ値は、１画面分（１ページ分）を本装置が符号化した場合に発生した総データ量を表す（詳細は後述）。
【００２６】
符号化部１０２は、再符号化処理の終了／未終了に関わらず、符号化するべき入力部１０１からの画像データが残っている限りは符号化処理を継続して行なう。
【００２７】
カウンタ１０７のカウント値がある設定値に達したかどうかは入力部１０１から入力される１ページ分の画像データの符号化処理（符号化、再符号化）が終わるまで繰り返され、上述した符号化と再符号化の処理は、ここで得られる検出結果に応じた制御の上で実行される。
【００２８】
上記処理内容をより分かりやすく説明すると次の通りである。
【００２９】
入力部１０１より入力された画像データは符号化部１０２にて初期段階での量子化パラメータＱ１に従い圧縮符号化を行う。生成された圧縮符号データは、第１のメモリ１０４、第２のメモリ１０６にそれぞれ書き込まれていく。このとき、第１のカウンタ１０７は生成される符号データ量を計数していくが、設定量以下のまま圧縮符号化処理が完了した場合には、第１のメモリ１０４に格納されたデータを外部に出力し、後続する画像があれば、カウンタ１０７、１１０をリセットしてその入力を行う。
【００３０】
一方、或るページの符号化している最中に、生成される符号化データ量が設定値に達したと符号化シーケンス制御部１０８が判断した場合、第１のメモリ１０４内のデータを破棄させ、符号化部１０２に対して更に高い圧縮率となるよう、次の段階の量子化パラメータＱ２を設定して画像データの入力を継続させる。これにより、設定値に達したと判断された以降に入力された画像データは、更に高い圧縮率で符号化が行われることになる。また、符号化データ量が設定値に達する以前の符号化データ（量子化パラメータＱ１で符号化されたデータ）は、第２のメモリ１０６に格納されている。そこで、このデータを再符号化部１０９にて、再度符号化を行い、その結果を、第１のメモリ１０４、第２のメモリ１０６にそれぞれ格納する。再符号化部１０９で再符号化する際の量子化パラメータは、変更後の符号化部１０２の量子化パラメータＱ２と同じである。第２のメモリ１０６に格納されていた以前の符号化データに対する再符号化が完了すると、その符号量は第２のカウンタ１１０に保持されているので、それを第１のカウンタ１０７に足しこむ。
【００３１】
以上の結果、第１のメモリ１０４、第２のメモリ１０６それぞれには、１ページの先頭から量子化パラメータＱ２で圧縮された符号化データが格納されることになる。この量子化パラメータＱ２で圧縮符号化している最中に、再度、カウンタ１０７の値が設定値に達したと判断した場合、更に高い圧縮率となるべく、量子化パラメータＱ３を符号化部１０２及び再符号化部１０９に設定して、上記の処理を行う。そして、量子化パラメータＱ３でも設定値に達したと判断した場合には、量子化パラメータをＱ４に設定することになる。
【００３２】
さて、実施形態では、符号化部１０２及び再符号化部１０９における設定する量子化パラメータＱｉ（ｉ＝１、２、３）は、量子化ステップと、量子化する際の演算モード（演算誤差の取り扱いを指定するモード）の２つで構成される。
【００３３】
量子化ステップは、Ｑ２＝Ｑ１×ｍ、Ｑ３＝Ｑ２×ｍ、Ｑ４＝Ｑ３×ｍ…と、ｍ倍（ｍ＞１）ずつ大きくしていく（必ずしも等倍である必要はない）。量子化ステップを大きくすると、ＤＣＴ変換した際の周波数成分値が小さな値、すなわち、少ないビット数で表現できるわけであるから、データ量を減らすことが可能となる。
【００３４】
また、演算モードは、操作者が指定するモード指定部１２５で指定されたモードに従い決定する。
【００３５】
モード指定部１２５で指定する演算モードの種類は、圧縮率優先、エッジ強調強、エッジ強調弱の３種類存在する（もちろん、これ以上であっても以下であっても構わない）。
【００３６】
各演算モードの内容は、図１８に示す通りである。同図は、モード指定部１２５で指定されたモードに基づく、シナリオテーブルであって、符号化シーケンス制御部１０８内にテーブル（メモリ）として予め記憶されているものである。各モードついて説明すると以下の通りである。
【００３７】
［圧縮率優先］
再符号化が無い場合（設定値に達しないまま符号化が行われる場合）は、符号器で四捨五入が選ばれる。再符号化時は、切り捨て処理が選ばれる
［エッジ強調強］
再符号化が無い場合は、符号器で四捨五入が選ばれる。再符号化時は、条件付き切り上げ処理が選ばれる。ここで言う条件つき切り上げとは、ＤＣＴ係数の値が所定閾値以上の値の場合に切り上げることを意味する（それ以外の場合には切り捨てる）。換言すれば、ＤＣＴ係数が小さい場合には、その切り上げによる影響が大きくなり、結果的にノイズ成分となりやすくなるからでもある。
【００３８】
［エッジ強調弱］
再符号化が無い場合は、符号器で四捨五入が選ばれる。最初に設定値に達した場合には、条件付き切り上げを行い。２回目以降にも設定値に達した場合には、無条件で切り捨てを行うことを意味する。
【００３９】
上記、図１の構成における処理のフローを表わすフローチャートを図８に示すが、説明を簡単にするため、簡略化した図３のフローチャートに従って先ず説明する。
【００４０】
既に説明したように、本発明の画像処理装置１００は、スキャナ等の入力部１０１から入力した１ページの画像データを所定のデータ量以下に圧縮符号化する装置である。該符号化処理を実現するために、前記入力部１０１以外に、符号化部１０２、再符号化部１０９、第１のメモリ１０４、第２のメモリ１０６等を有する。これらの機能ブロックを用い、図３に示すフローチャートに基づいて符号化処理を行なう。
【００４１】
図３のフローチャートは、大別すると、下記の３つの処理フェーズに分かれる。
（１）符号化フェーズ
（２）符号化・再符号化フェーズ
（３）転送フェーズ
上記それぞれの処理フェーズおいて、どのように画像データ、符号化データ等が流れて処理され，メモリにどのように格納されるかを視覚的に解り易く示したのが図４乃至図７である。
【００４２】
図４は、図３のフローチャートにおけるステップＳ３０３とＳ３０５に対応する符号化フェーズの初期状態を表わす。また、図５はステップＳ３０７〜Ｓ３１５に対応する符号化・再符号化フェーズの処理状態を、図６はステップＳ３１７に対応する転送フェーズの処理状態を、図７は転送フェーズ後の符号化フェーズの処理状態を表わす。以下、各フェーズについて説明する。
【００４３】
＜＜符号化フェーズ＞＞
１ページ分の画像データの符号化処理は、符号化パラメータの、モード指定部１２５で指定された初期設定（ステップＳ３０１）から始まる。ここでは符号化処理する画像サイズ（スキャナ等の入力部１０１から読み取る用紙サイズ）から一意的に定まる符号化データ量の上限値や符号化部１０２（ここでは公知のＪＰＥＧ符号化方式を用いるものとする）に適用する量子化パラメータ（量子化ステップと演算モード）を設定する。
【００４４】
そして、ステップＳ３０３にて、第１のカウンタ１０７は、実際の符号化処理（画像の８×８画素単位にＪＰＥＧ圧縮）を行ない、出力される符号化データのデータ量を累積カウントする。
【００４５】
次にステップＳ３０５にて、該データ量のカウント値が上記上限値をオーバーしたかどうかを検知し、オーバーしていなければステップＳ３０３のＪＰＥＧ符号化処理を継続する。これが初期状態の符号化フェーズである。
【００４６】
符号化部１０２から出力する符号化データは、図４に示すように第１のメモリ１０４と第２のメモリ１０６の両方に格納されていく。縦縞で示した領域が該格納した符号を表現している。
【００４７】
＜＜符号化・再符号化フェーズ＞＞
符号化部１０２の符号化処理が進行し、前記データ量のカウント値が設定されている上限値をオーバーすると、ステップＳ３０７にて、第１のメモリ１０４内の符号化データを廃棄すると共に、ステップＳ３０９にて、符号化部１０２の量子化パラメータをＱ２に変更する。
【００４８】
符号化データのデータ量のカウント値が設定された上限値をオーバーするという事は、圧縮後のデータ量が目標値以内に収まらないことを意味する。よって同じ量子化ステップを用いて符号化処理を継続しても意味が無いので、前よりもデータ量が少なくなるように、Ｑ１よりも量子化ステップ幅の大きい量子化ステップＱ２に変更するわけである。また、この際、量子化演算モードに設定されたシナリオに従って設定されることになる。
【００４９】
量子化ステップ及び量子化演算内容を変更した後、ステップＳ３１１では符号化部１０２の符号化処理を再開し、図５に示すように符号化データを第２のメモリ１０６のみに格納する。それと並行して、ステップＳ３１３の再符号化処理を行なう。再符号化処理では、第２のメモリ１０６に格納済みの符号化データを読み出して、再符号化部１０９にて再符号化処理を行ない、前記２つのメモリ１０４、１０６に格納する。そして、縦縞▲１▼の符号を全て再符号化するまで、該符号化処理と再符号化処理を継続する。再符号化部１０９から出力される再符号化データは、量子化パラメータ変更後の符号化部１０２と全く同じである。
【００５０】
具体的にこの再符号化処理では、符号化データを一旦ハフマン復号した後の各量子化値に対して、これら値を２nで割った結果と同様の結果が出るビットシフト処理を施した後、再度ハフマン符号化を行なうことにより実現される（ｍ＝２の場合）。この方法は、ビットシフトのみで量子化ステップを変更する点と逆直交変換や再直交変換処理を行なわない点で、高速な再符号化処理が可能である。ステップ３１５では、再符号化処理の終了検知が行なわれる。
【００５１】
再符号化後のデータ量は再符号化前の符号化データのデータ量よりも少なくなるので、図５に示すように、再符号化前の符号を格納していたメモリ領域に再符号化後の符号化データを上書きするように格納することができる。再符号化処理が終了した時点で、縦縞▲１▼の符号化データのデータ量は図６に示すの斜め縞▲１▼の符号化データのデータ量へと減少する。
【００５２】
以上で説明したステップＳ３０７〜３１５が、符号化・再符号化フェーズで行なう処理である。
【００５３】
＜＜転送フェーズ＞＞
再符号化処理が終了したら、ステップＳ３１７では転送処理が行なわれる。該転送処理では、図６に示すように、符号化・再符号化フェーズで第２のメモリ１０６のみに格納した斜め縞▲２▼の符号化データを、第１のメモリ１０４内の斜め線▲１▼の符号化データに連結されるアドレスに転送し、格納する。その一方で、第２のメモリ１０６上で分散してしまっている斜め縞▲１▼の符号化データと斜め縞▲２▼の符号化データが第１のメモリ１０４上で連続して格納される様に、前記斜め縞▲２▼の符号化データを第２のメモリ１０６内で転送し、連結させる。これが、転送フェーズで行なう処理である。
【００５４】
上記転送フェーズが終了したら、ステップＳ３０３、Ｓ３０５の符号化フェーズに戻り、図７に示すように斜め縞▲４▼の符号を符号化部１０２から出力して２つのメモリ１０４，１０６に格納する。この符号化フェーズは、初期状態の符号化フェーズ（図４）と少し異なり、符号化部１０２で符号化する際の量子化ステップがＱ１からＱ２に変更されていると共に、２つのメモリ１０４，１０６に格納されている符号化データも様々なフェーズで処理された符号の集まりである。それらの違いを無視すれば、転送フェーズ直後の符号化フェーズと初期状態の符号化フェーズは、同じと見なせる。
【００５５】
よって、符号化フェーズ、符号化・再符号化フェーズと転送フェーズの３つを繰り返すことで、最終的に１ページの画像データをデータ量設定値以下に圧縮した符号を第１のメモリに格納することが出来る。しかも、入力部１０１は一連の処理が終わるまで、入力を継続するだけである。すなわち、画像を再度最初から入力し直すということが無くなる。
【００５６】
図３に示したフローチャートは、説明が理解しやすいように、図４、図５、及び、図６に示した各フェーズに対応する処理のみを記述した。しかしながら実際には、１ページの画像データの入力はどこかのフェーズで終了する。従って、どのフェーズで終了したかによって、それ以降の対応も多少異なる。それを考慮した流れを示したのが図８のフローチャートである。図８のフローチャートは、１ページ分の画像データの入力完了と図３で説明した各種処理との関係を考慮したものであり、ここでは図３のフローチャートに、ステップＳ８０１、Ｓ８０３、Ｓ８０５、Ｓ８０７を追加している。
【００５７】
ステップＳ８０１、Ｓ８０３、Ｓ８０５は、それぞれ、符号化フェーズ、符号化・再符号化フェーズ、転送フェーズにおいて、入力部１０１からの１ページ分の画像データの入力が終了したことを検知する。
【００５８】
符号化フェーズと転送フェーズで１ページ分の画像データの入力が終了したことを検知した場合（ステップＳ８０１、Ｓ８０５）、ステップＳ８０７へ移り、当該ページの圧縮符号化処理を終了し、次に処理すべき１ページ以上の画像データがあれば、次の１ページ分の画像データの圧縮符号化処理を開始し（各カウンタをリセットし、量子化パラメータを初期値に設定する）、無ければ停止状態に入る。
【００５９】
一方、符号化・再符号化フェーズで１ページ分の画像データの入力終了を検知した場合（ステップＳ８０３）には、符号化部１０２では再符号化処理する画像データが無くなるまで一旦動作を止める必要があるので、ステップＳ３１１の符号化処理をパスし、ステップＳ３１３で、今までに符号化部１０２で符号化済みの画像データを所定の符号化データ量に抑える為の再符号化処理のみを継続して行なう。再符号化処理が全て終了して、その後の転送処理が終わらないと、１ページ分の画像データ全体の符号化データが第１のメモリ上に集まらないため、１ページ分の画像データの入力終了後も再符号化処理及びそれに続く転送処理は継続して行われる必要がある。この場合には、ステップＳ３１５にて、再符号化処理が全て終了したことを検知すると、符号化・再符号化フェーズ中に、第２のメモリ１０６のみに格納された符号化データを第１のメモリに転送し（ステップＳ３１７）た後、次のステップＳ８０５にて、１ページ分の画像データの入力終了が検知されてステップＳ８０７へ移ることになる。
【００６０】
以上が動作であり、図８の動作説明でもある。
【００６１】
＜メモリ格納方法の変形例＞
図９、図１０は図５、図６の概念図で示したメモリ格納方法の変形例を示す図である。
【００６２】
図５の概念図においては、符号化・再符号化フェーズでは、符号化部１０２から出力する符号化データは第２のメモリ１０６のみに格納していたが、図９に示すように符号化・再符号化フェーズ中に、符号化部１０２から出力する符号化データを第１、第２メモリの両方に直接格納する。
【００６３】
符号化部１０２から見ると、どのフェーズで符号化して出力する符号化データも両方のメモリへ格納することになる。また、図６の概念図とは異なり、図１０に示す様に、転送フェーズでメモリ間のデータ転送が必要なくなる。またこの変形例の場合には、符号化・再符号化フェーズにおいて、符号化データと再符号化データを第１のメモリ１０４へ送った順序で順次格納される。そのため２種類のデータが入り混じってしまうという問題は有る。
【００６４】
従って、この変形例の場合にはこれに対応する為に符号化データをある単位で区切って、ファイル或いはパケットとして管理する様にする。具体的には、ファイル管理テーブル、或いは、パケット管理テーブル等を別に作成して管理する。
【００６５】
一つの手法としては、符号化部１０２からのデータを第１メモリ１０４に格納する際、適当な単位（例えば前記直交変換の単位が８×８のブロックであるので、８×ｉ（ｉ＝１、２…の整数）ライン分のデータ）毎に、画像データの先頭から管理番号を割り当て、各管理番号に対応する符号化データの格納先頭アドレスと該符号化データ量とを、管理番号順に格納できるような管理テーブルを作成する。
【００６６】
符号化部１０２や再符号化部１０９は処理中のデータの管理番号を保持し、該管理番号に基づいて、符号化データ格納時の先頭アドレスと符号化データ量とを管理テーブルに書き込む。このようにすれば、符号化部１０２と再符号化部１０９で処理した符号化データをランダムに格納したとしても、前記管理テーブルを管理番号順にアクセスし、その時読み出させる先頭アドレスと符号化データ量に基づいて、符号化データを第１メモリ１０４から読み出せば、画像の先頭から順番に符号化データを読み出すことができる。このような管理機構を設ければ、画像上で連続するデータをメモリ上で連続するように格納する必要性が無くなる。
【００６７】
図１０の概念図における転送フェーズ後の符号化フェーズは、これまで説明した２つの符号化フェーズ（図４、図７）とほとんど同じであり、第１のメモリ内における符号の格納状態が図１１に示した様に若干異なるだけである。よって、先の説明と本変形例は、３つのフェーズを繰り返して処理することに変わりは無い。
【００６８】
＜第２の実施形態＞
次に、本発明において特徴的な符号化処理を行なう為の、第２の実施形態（これまで説明した構成を第１の実施形態という）を図２を用いて説明する。
【００６９】
図２は、第２の例における画像処理装置２００のブロック構成図である。
【００７０】
図１の第１の実施形態における画像処理装置１００と大きく異なる点は、最初に符号化を行なう符号化部が２つ並列に存在する点である。画像処理装置２００は、入力部２０１から入力される画像データを、第１の符号化部２０２と第２の符号化部２０５で並行して符号化し、互いに圧縮率の異なる２種類の符号化データを生成する。本第２の実施形態でも、符号化方式は公知のＪＰＥＧ符号化方式を用い、８×８画素単位に相当する画像データを直交変換し、後述する量子化ステップを用いた量子化、ハフマン符号化処理を行なうものである。
【００７１】
なお、本例では第１の符号化部２０２よりも、第２の符号化部２０５の方が適用する圧縮率を高く設定する場合について説明する。具体的には、モード指定部１２６で指定された演算モードに従い、第１の符号化部２０２における量子化パラメータをＱ１、第２の符号化部２０５の量子化パラメータをＱ２（Ｑ２の量子化ステップは、Ｑ１の量子化ステップより大きい）とする。
【００７２】
符号化部２０２から出力される符号化データは、第１のメモリ制御部２０３を経由して、第１のメモリ２０４に格納される。このとき、第１のカウンタ２０８は、符号化部２０２から出力される符号化データのデータ量をカウントし、これを保持すると共に、符号化シーケンス制御部２０９にも出力する。
【００７３】
一方、符号化部２０５で符号化された符号化データは、第２のメモリ制御部２０６を経由して、第２のメモリ２０７に格納される。このとき、第２のカウンタ２１０は、符号化部２０５から出力される符号化データのデータ量をカウントし、これを保持する。更に、後述する第２のメモリ２０７に格納している符号化データを第１のメモリ２０４に転送する時には、それと同時に上記カウント値を、第１のカウンタ２０８に転送する。
【００７４】
さて、第１のカウンタ２０８が符号化部２０２から出力される符号化データのデータ量をカウント中に、該カウント値がある設定値に達した時には、符号化シーケンス制御部２０９は、第１の実施形態と同様、メモリ制御部２０３に対して第１のメモリ２０４に格納されているデータを廃棄するよう制御信号を出す。
【００７５】
そして、符号化シーケンス制御部２０９は、第２のメモリ２０７に格納している符号化データを読み出して第１のメモリ２０４に転送し、第１のメモリ２０４に格納するよう、メモリ制御部２０６とメモリ制御部２０３に制御信号を出力する。この結果、第２のカウンタ２１０のカウント値が第１のカウンタ２０８に転送され、その値が第１のカウンタのカウント値としてロード（上書き）される。
【００７６】
要するに、上記第２のカウンタ２１０のカウント値は、第２のメモリ２０７に格納している符号化データのデータ量を表わしているので、そのカウント値と符号化データを、互いの対応付けが変わらない様に、そのまま第１のカウンタと第１のメモリへコピーしたと考えれば良い。
【００７７】
さらに、符号化シーケンス制御２０９は、第１の符号化部２０２および、第２の符号化部２０５に対して、今までよりも、符号化データが少なくなるような符号化を行なうように制御信号を出す。
【００７８】
例えば、第１の符号化部２０２、及び、第２の符号化部２０５における量子化ステップをそれぞれ２倍に切り替える。この結果、第１の符号化部２０２は、その直前までの第２の符号化部２０５における量子化パラメータＱ２を継承することになり、第２の符号化部２０５は更に大きな量子化ステップＱ３を用いて、次のオーバーフローに備えた更に高い圧縮率の符号化処理を行うことになる。
【００７９】
ここでは、量子化ステップの倍率比を２倍としたがこれに限らず、任意に設定できることは示すまでもない。切り替えられた各符号化部２０２、２０５から出力された符号化データは、それぞれ、対応するメモリ制御部２０３、２０６を経由して、対応するメモリ２０４、２０７に格納される。
【００８０】
そして、符号化シーケンス制御２０９は、メモリ制御部２０６に対し、既に第２のメモリ２０７内に格納している符号化データを読み出して、再符号化部２１１にデータを送るよう制御信号を出す。再符号化部２１１は、図１の再符号化部１０９と同様にして符号化データの再符号化処理を行なう。
【００８１】
第３のカウンタ２１２は、再符号化部２１１が出力したデータ量をカウントするもので、再符号化処理を開始する直前にゼロにリセットされ、再符号化処理中の出力データ量をカウントする。このカウンタ２１２は、再符号化処理が終了した時点で、そこで得られたカウント値を第２のカウンタ２１０に転送する。
【００８２】
第２のカウンタ２１０は、上記転送されてきたデータ量カウント値を、第２のカウンタ２１０内に保持しているカウンタ値に加算することにより、再符号化処理中にメモリ２０７に格納した、符号化データと再符号化データの合計のデータ量を算出する。即ち、メモリ２０７に格納しているデータ量とカウンタ２１０のカウント値とが一致する。
【００８３】
再符号化処理の終了／未終了に関わらず、符号化するべき入力部２０１からの画像データが残っていれば、２つの符号化部２０２と２０５による符号化処理を継続して行なう。そして、カウンタ２０８のカウント値がある設定値に達したかどうかの監視は入力部２０１から入力される１ページ分の画像データの符号化処理（符号化、再符号化）が終わるまで繰り返され、上述した符号化と再符号化の処理は、ここで得られる検出結果に応じた制御の上で実行される。
【００８４】
上記動作を簡単にまとめると、第２の符号化部２０５は、第１の符号化部２０２よりも１つ上の圧縮率での符号化を行う。そして、第１の符号化部２０２で生成された符号量が設定量に達した場合、第１の符号化部２０２の量子化パラメータを、直前の第２の符号化部２０５と同じにする。また、第２の符号化部２０５の量子化パラメータを更に高い圧縮率となるよう設定する。そして、第１のメモリ２０４内のデータを破棄し、第２のメモリ２０７に格納されていたデータを第１のメモリ２０４に転送すると共に、第２のカウンタ２１０の値を第１のカウンタ２０８に書き込む。そして、第２のメモリ内のデータを更に高い圧縮率で再符号化させるため、再符号化部２１１に対して、第２の符号化部２０５に新に設定した量子化パラメータと同じにする。この結果、第２のメモリ２０７内のデータは、ページの先頭から新たなに設定された量子化パラメータで圧縮したのと等価の符号データが格納されることになる。
【００８５】
なお、本第２の実施形態でも、符号化する際のモードがモード指定部１２６で指定できるようになっている。第２の符号化部２０５は、第１の符号化部２０２よりも常に高い圧縮率での符号化を行っているので、以下では、この第２の符号化部２０５を高圧縮率符号化器と呼び、逆に、第１の符号化部２０２を底圧縮率符号化器と呼んで、各モードについて説明する。
【００８６】
本第２の実施形態では、モード指定部１２６で指定可能な、ＤＣＴ係数に関する量子化演算誤差にかかる演算モードは、図２７に示すごとく、画質優先、圧縮率優先、エッジ強調（強）、エッジ強調（弱）の４つ存在する（ただし、図１８に示したものを本第２の実施形態に採用しても構わないし、図２７を第１の実施形態に適用しても構わない。）
［画質優先］
初期段階では、低圧縮率用符号器、高圧縮率用符号器とも四捨五入が選ばれる。再符号化時１回目、２回目以降は、切り捨て処理が選ばれる。
【００８７】
［圧縮率優先］
初期段階では、低圧縮率用符号器は四捨五入が選ばれ、高圧縮率用符号器は、切り捨てが選ばれる。再符号化時１回目、２回目以降は、切り捨て処理が選ばれる。
【００８８】
［エッジ強調（強）］
初期段階では、低圧縮率用符号器は、四捨五入が選ばれ、高圧縮率用符号器は、条件付切り上げ処理が選ばれる（条件は第１の実施形態と同様）。再符号化時１回目、２回目以降は、条件付切り上げ処理が選ばれる。
【００８９】
［エッジ強調（弱）］
初期段階では、低圧縮率用符号器は、四捨五入が選ばれ、高圧縮率用符号器は、条件付切り上げ処理が選ばれる。再符号化時１回目、２回目以降は、切り捨て処理が選ばれる。
【００９０】
次に、上記図２の構成における処理のフローを表わすフローチャートを図１２に示す。
【００９１】
図２で説明したように符号化部が２つある場合は、図１２に示すフローチャートに基づいて１ページ分の画像データの符号化を行なう。なお、図１２の説明は、符号化部が１つの場合のフローチャートである図８とは、大半は類似しており、当業者であれば上記説明から本第２の例の特徴は十分に理解できるであろうから、符号化部１つの場合と同じように３つのフェーズで処理を説明する様にし、図８と異なる点を主に説明することとする。
【００９２】
上述した図８のフローと本例のフローとの一番大きな違いは、ステップＳ３１７の転送処理が、ステップＳ３０７とステップＳ３０９の間に移動していることである。要するに、符号化・再符号化フェーズと転送フェーズが入れ替わったと見なせば良い（ステップＳ３０７の符号化データの廃棄処理は例外である）。
【００９３】
ステップＳ３０１の符号化パラメータの初期設定では、第１の符号化部２０２に量子化パラメータＱ１を、第２の符号化部２０５には量子化パラメータＱ２を設定する。ただし、量子化パラメータＱ２で表される量子化ステップは、Ｑ１よりも大きく、演算モードはモード指定部１２６で指定されたシナリオに従って決定される。
【００９４】
符号化フェーズでは、ステップＳ８０１、Ｓ３０３、Ｓ３０５を繰り返し実行する。ステップＳ８０１とステップＳ３０５は符号化部が１つの場合と同じ処理であるが、ステップＳ３０３の符号化処理だけは図１３に示すように異なっている。
【００９５】
第１のメモリ２０４へ格納する符号化データは圧縮率が段階的に高くなるようにするため、最初に格納する符号化データは圧縮率が一番低い量子化パラメータＱ１で符号化したデータを格納し、第２のメモリへ格納する符号化データは量子化パラメータＱ２で符号化したデータを格納する。
【００９６】
第１のメモリ２０４へ格納中のデータ量が設定されている上限値をオーバーしたら（ステップＳ３０５）、直ちに、第１のメモリ２０４で保持していた符号化データを廃棄し（ステップＳ３０７）、第２のメモリ２０７で保持している圧縮率の高い符号化データを、第１のメモリ２０４へ転送する（ステップＳ３１７、図１４参照）。これにより、第１の実施形態で説明した１回目の再符号化処理の終了を待たずに、速やかに、上限値をオーバーしない適切な２番目の候補の符号化データを第１のメモリ２０７内に格納出来る。これが、図１に対する、２つの符号器を持つ図２を適用することの最大の利点である。
【００９７】
本第２の実施形態では、２つのメモリ２０４、２０７で同じ圧縮率の符号化データを持っていることが無駄という考え方なので、第２のメモリ２０７には、第１のメモリ２０４に格納する符号化データよりも圧縮率の高い符号化データを格納しておくようにしている。従って、それ以降の処理もこの考え方に基づき行われるものであり、第２のメモリ２０７内の符号化データを第１のメモリ２０４に転送する処理（転送フェーズ）が終了した後は、第２のメモリ２０７の符号化データを、更に１段階圧縮率の高い符号化データを保持する様に再符号化することとなる。
【００９８】
具体的には、まず図１５に示す様に、転送フェーズの次の符号化・再符号化フェーズでは、上記再符号化の前に、２つの符号化部２０２，２０５に適用される各量子化パラメータＱ１、Ｑ２をそれぞれＱ２、Ｑ３へ変更し（ステップＳ３０９）、１ページの画像データの入力が終了せずに続いていれば（ステップＳ８０３）、後続の画像データは新たな量子化ステップが設定された２つの符号化部で該入力データを符号化して（ステップＳ３１１）、対応する各メモリ２０４，２０７へ格納する。そして、上記符号化処理と並行して第２のメモリに格納されている符号化データ（第１のメモリ２０４に転送したもの）は、第１のメモリ内の符号化データよりも１段階高い圧縮率の符号化データに変更するべく、再符号化部２１１にて量子化パラメータＱ３を用いて符号化されたデータが得られる様な再符号化処理（Ｓ３１３）を行ない、再符号化データを第２のメモリ２０７に格納し直す。
【００９９】
なお、本第２の実施形態でも、第１の実施形態と同様、再符号化処理では、符号化データを一旦ハフマン復号した後の各量子化値に対して、これら値を２nで割った結果と同様の結果が出るビットシフト処理を施した後、再度ハフマン符号化を行なうことにより実現される。この方法は、ビットシフトのみで量子化ステップを変更する点と逆直交変換や再直交変換処理を行わない点で、高速な再符号化処理が可能である。
【０１００】
また、本第２の例の様に符号化部が２つ有る場合には、図１５に示したように、第２のメモリ２０７に符号化データと再符号化データを混在して格納する状況が発生する。従って、前述したように、符号化データをある単位で区切って、ファイル或いはパケットとして管理することが、第２のメモリ２０７に対しても必要になる。その為には、例えば第１の実施形態における変形例と同様の構成を設ければ良いであろう。
【０１０１】
図１２において、再符号化処理の終了をステップＳ３１５で検知したら、また符号化フェーズ（ステップＳ８０１、Ｓ３０３）に移行する。なお、符号化・再符号化フェーズ後の符号化フェーズでは、図１６に示すように、２つのメモリ２０４，２０７が保持する符号化データは圧縮率が違うだけでなく、符号化データの混在の仕方（アドレス）もかなり違ってくる。従って、再度、第１のメモリ２０４のデータ量が設定値をオーバーした場合には、第２のメモリ２０７で保持されている符号化データ（▲６▼＋▲８▼の横縞の領域の符号）が第１のメモリ２０４へ転送される必要が出てくる。これらを考慮すると、第２のメモリ２０７だけでなく、第１のメモリ２０４でも符号化データをファイル或いはパケットとして管理する必要がある。よって、第１のメモリ２０４にも前述の管理テーブルを用いた管理機構が必要となる。
【０１０２】
図１６に示された符号化フェーズの状態は、量子化パラメータと符号化データの混在の仕方が、再符号化処理の前後で異なっていること以外は、初期状態の符号化フェーズ（図１３）と同じである。よって、符号化フェーズ、転送フェーズと符号化・再符号化フェーズを繰り返すことで、最終的に、１ページ分の画像データを設定した上限値以下に圧縮した符号化データを確実に第１のメモリ２０４に格納することが出来る。
【０１０３】
なお、第１の実施形態に対し、転送フェーズと符号化・再符号化フェーズの配置順が逆であることから、図８において転送処理後に行なっていた１ページ分の画像データの入力終了検知（ステップＳ８０５）は、符号化・再符号化フェーズで行なう１ページ分の画像データの入力終了検知（ステップＳ８０３）と、ほとんど同じタイミングになってしまう。また、２つの検知処理は、機能的にはステップＳ８０５と同じで、タイミング的にはステップＳ８０３と同じである、従って、これら２つのステップは、新たな１ページ分の画像データの入力終了を検知するステップとして統合し、ステップＳ１２０１と表記しておく。
【０１０４】
以上説明した第１、第２の実施形態では、第１のメモリと第２のメモリは物理的に別のメモリであるとして説明をしてきた。これは、２つのメモリに対するアクセスが独立したものとすることができるので有利なためであり、本発明の特徴となす。しかしながら、第１のメモリと第２のメモリを、物理的に別のメモリとしない場合も本発明の範疇に含まれる。物理的に１つのメモリ上に、前記第１のメモリと第２のメモリに相当する２つの領域を確保して、第１のメモリを第１のメモリ領域、第２のメモリを第２のメモリ領域と言い直して、これまでの説明を読み直せば、本発明は、１つのメモリでも実現できることが分かる。
【０１０５】
また、１つのメモリで上記各例を実現する場合には、前記転送フェーズで説明したデータ転送処理のいくつかは不要となる。その詳細はその都度容易に想像できるので説明は省略するが、前記２つの領域を厳密に別けて使用する場合、物理的に２つのメモリを持つ時と同じようにデータ転送処理が必要であるが、２つの領域間で同じデータを共有することになれば、データ転送処理が不要になるだけでなく記憶容量の削減も図れる。
【０１０６】
例えば、第２のメモリ領域で保持していた符号化データを、第１のメモリ領域へ転送する際、該符号化データが格納されている先頭アドレスとデータサイズの２つの情報を第２のメモリ制御部から第１のメモリ制御部へ転送するだけで、前記符号化データを転送したのと同じ効果が得られる。
【０１０７】
前記符号化データを、ファイル形式やパケット形式で格納している場合は、メモリ制御部の間で転送する情報は少し増え、該符号化データに関連する管理テーブル情報を転送する必要がある。それでも、符号化データを転送するよりは、効率が良い。
【０１０８】
＜適用例の説明＞
図１７は本実施形態が適用するデジタル画像処理装置のブロック構成図である。
【０１０９】
図中、１０００はカラー画像の入力ポート（像域情報及びカラー画像データ）である。この入力ポート１０００には、図示に示す如く、イメージスキャナー１０２０及びホストコンピュータから出力されてきた印刷データに基づくレンダリングエンジン１０２１のいずれか一方を選択するセレクタ１０２３が接続されている（不図示の操作パネルで選択するか、入力があった方を自動選択する）。いずれからもカラー画像データ１０３１、１０３２と像域情報１０３３、１０３４（画素毎に、その画素が文字・線画領域か中間調領域にあるか、及び、カラーかモノクロかを識別する情報）が出力されてくるものとする。レンダリングエンジン１０２１においては、印刷データに基づいて像域情報を生成できる（中間調画像の場合にはホストコンピュータコンピュータからイメージデータとして転送されてくるし、文字線画の場合には描画コマンドに従うからである）。一方、イメージスキャナ部１０２０では、基本的に原稿画像を読み取って、その読み取った画像に基づいて文字線画領域か中間調領域かの判断、及び、カラーかモノクロかを判断する必要がある。従ってこの像域情報を生成する回路が内臓されているものとする。
【０１１０】
１００１は入力した画像を複数ライン（後述するタイルを抽出するだけの容量）を有するラインバッファである。また、１００２はカラー画像符号化器であり、図１における符号化部１０２、図２における符号化部２０２に対応する。ただし、本実施形態におけるカラー画像符号化器１００２内には、入力したカラー画像データを一旦、輝度信号と色差信号に変換する変換回路を備え、その変換された後のデータについて圧縮符号化するものとする。輝度、色差信号としては、Ｙ、Ｃｒ、Ｃｂ等で代表される色空間があるが、ＹＩＱでも構わない。従って、実施形態では便宜上、輝度データをＹ、色差信号をＣ１、Ｃ２と表記することとする。
【０１１１】
１００３は符号化されたカラー画像を記憶する外部メモリである（例えばハードディスク等）。１００５は外部メモリ１００４から読み込んだ符号化済み画像データに対して復号処理するために一時的に格納する復号バッファであり、１００６は復号器である。１００７は復号された画像を一時的に記憶するラインバッファである。１００８は接続されたプリンタ部１００９に、ラインバッファ１００８に格納された画像を出力するための出力ポートである。なお、プリンタ部１００９内には、Ｙ、Ｃ１、Ｃ２のデータを記録色成分であるＹ、Ｍ、Ｃ（もしくはＹ、Ｍ、Ｃ、Ｂｋ）に変換する変換回路が設けられているものとする。また、プリンタ部１００９の記録方式は例えばレーザビームプリンタ、インク液滴を吐出するタイプのプリンタ等、その印刷方式は如何なるものでも良い。
【０１１２】
また、１０１０は内部バッファ１００３に格納される符号データ量を監視する符号量監視部であり、１０１１は再度符号化を行う符号変換部である。
【０１１３】
図１との関係からすると、内部バッファ１００３が、図１における第１のメモリ、第２のメモリを兼用することになる。また、符号シーケンス制御部１０８、第１カウンタ１０７、第２カウンタ１１０、セレクタ１１１が符号量監視部１０１０に対応し、再符号化部１０９が符号変換部１０１１に対応することになる。
【０１１４】
カラー画像符号化器１００２では、ラインバッファ１００１に格納された画像データを８×８画素のサイズのタイルに分割し（各タイルは８×８に限らずＭ×Ｍ画素でも良い）、この８×８画素毎にカラー情報の符号化を行う。カラー画像については離散コサイン変換符号化（JPEG）、像域情報についてはランレングス符号化に分けて符号化される。
【０１１５】
像域情報は、各画素毎につけられるものであるが、本実施形態のように８×８ブロック毎にＤＣＴで処理するものに対しては、ブロック毎に、像域フラグを代表させて用いられることになる。像域の分け方としては、先に説明したように、画像の文字領域と写真領域、カラーかモノクロかであるものとするが、これ以外であってもよいし、これに更なる成分を追加しても構わない。
【０１１６】
さて、符号量監視部１０１０は、符号化器１００２によって生成される符号量の監視を行い、設定量を超えると予想された場合は、符号化器１００２に対してそれ以降に入力されるカラー画像データ（及び属性情報）についてはより高くなるように符号化を行わせ、従前に符号化されたデータについては、符号変換器１０１１で再符号化をしてより高い符号化を行うことになる。なお、不図示の操作部には、第１、第２の実施形態で説明したモード指定部が設けられ、指定されたシナリオに従って処理が行われるものである。
【０１１７】
図１９は、符号化進行状況とメモリ充足率との関係の説明図である。以下、同図に従って、動作シーケンスについて簡単に説明する。
【０１１８】
図では，２／８の時点で、初期値の条件（初期段階での量子化パラメータ）での符号化データ量がオーバーフローしたことを示している。
【０１１９】
また、３／８の時点では、目標値オーバーと判断されたとき以前の再符号化が完了し、第１のメモリ１０４への転送処理が完了したことを示している。
【０１２０】
また、４／８の時点で、再び、オーバーフローするので，再符号化処理をスタートする。このときのオーバーフローは２回めであるので、指定したシナリオに従う２回めの量子化パラメータ（演算モード）で設定することになる。５／８の時点で、この再符号化が終了し、転送処理を完了していることを示している。そして、８／８の時点で、１ページの符号化が完了していることを示している。
【０１２１】
上記例では、３／８の時点で、メモリが約２５％オーバーランしているが、これは、圧縮率と再符号化時間で、決まってくるものであり、実機では、設計パラメータとして、バッファメモリの余裕分として確保する必要があるが、それほど大きくなるものではない。処理時間は、図からわかるように、１枚画像を符号化する時間内で終了している。
【０１２２】
図２０（ａ）乃至（ｄ）は、ＤＣＴ係数の直流係数（DC係数）の説明図である。同図（ｂ）はDC係数符号化の説明図である。８×８のＤＣＴ変換されたＤＣ係数値（図の左上の小さい正方形）とその隣接するブロックのDC係数値との差分をとり、これを可変長符号化する。
【０１２３】
同図（ａ）は符号化ブロック図であり、ＤＣ係数１２０５は、ブロック遅延器１２０１で遅延された直前のブロックのDC係数との差分が差分器１２０２でとられる。差分値は，グループ化処理でグループ番号SSSSに変換される。
【０１２４】
またグループ化部では、同図（ｃ）で示したように、ＤＣ差分値に応じた付加ビット数が決定される。また、グループ番号SSSSは１次元ハフマン符号化器１２０４，同図（d）で示した表にしたがって、ハフマン符号化される。
【０１２５】
これらの表をみると，グループ番号が小さい方がハフマン符号と付加ビット数が少ないことがわかる（場合によっては同じ）。
【０１２６】
したがって、ＤＣ差分値が、１／２になると，グループ番号が１つ小さくなり、ハフマン符号と付加ビットを合わせた可変長符号部が１〜２ビット短くなることがわかる。
【０１２７】
図２１は、ＤＣＴ係数の交流係数（ＡＣ）係数の符号化方式の説明図である。
【０１２８】
ＡＣ係数１３０１は、ジグザグスキャン順に並び替えて、判定器１３０２で０の場合は，ランレングスカウンタ１３０３で０の係数の連続数（ラン長）を計数しラン長NNNN１３０６を出力する。また０以外の係数値は、図２０と同じようにグループ化器１３０４でグループ番号１３０７と付加ビット１３０２を出力する。二次元ハフマン符号化器１３０５では，ラン長NNNNとグループ番号SSSSを組み合わせてハフマン符号化する（図２３参照）。
【０１２９】
ラン長NNNNが１５を超える場合は、ラン長１６を示すZRLを必要な数だけ出力する。たとえば，ラン長３５は，ZRL＋ZRL＋ラン長３に変換し、符号化する。
【０１３０】
また、最後の有効係数（０以外の係数）の後に，EOB(End of Block)を付加する。
【０１３１】
なお、実施形態では、８×８のブロックについてＤＣＴ処理することになるので、ジグザグスキャンする順番は図２２に示すようになる。
【０１３２】
図２４は、ラン長とサイズから引くハフマン符号テーブルの一部を示したものである。
【０１３３】
したがって、ＡＣ係数値が、１／２になると、グループ番号が１つ小さくなり、ハフマン符号と付加ビットを合わせた可変長符号部が１〜２ビット短くなることがわかる。
【０１３４】
さらに、係数値がゼロになりラン長も長くなるので、符号化対象となる優位シンボルの数も減少するので、符号長がさらに短くなる。
【０１３５】
図２５は、係数をビットシフトしたものと、量子化ステップを２倍にしたものは等価であることを示した説明する図である。ただし、厳密には、量子化時には、四捨五入ではなく、切り捨て処理をした場合に限定される。
【０１３６】
係数入力器９０から係数列｛１，１７，３３，６５，１２９．．．｝が入力される。量子化器９１では、量子化ステップ｛１６｝を２倍した値｛３２｝で、係数列が除算され、出力列｛０，０，１，２，４．．．｝が結果として出力される。一方、量子化器９２では、量子化ステップ｛１６｝、係数列が除算され、出力列｛０，１，２，４，８．．．｝が出力され、さらに、ビットシフト器９３で、量子化値の右シフトにより、｛０，０，１，２，４．．．｝が結果として出力される。すなわち、量子化ステップを２倍するのと、量子化したあとに、ビットシフトで１／２にするのは、等価となる。また、負の係数値に関しても、サイン符号と絶対値を分けて処理をすれば、同じ効果が得られる。
【０１３７】
しかしながら、単にレベルシフトして係数を切捨てると、復号時に、適正なレベルシフト補正処理を行わないと、画像がボケやすいという問題があった。
【０１３８】
そこで、係数変換ブロックをシフト処理から、以下のような、条件付切上処理に切り替える、画像の先鋭度をある程度保つことができる。
【０１３９】
条件付切上の例としては、係数値０の時はそのまま、係数値１の時は、切捨て、係数値２以上の時は、切上などとする方法である。すなわち、切り上げするのはある程度、大きな値にすることである。小さい値を切り上げてしまうと、その小さな値における切り上げによる誤差値の占める割合が大きく、ノイズとして目立つためである。
【０１４０】
図２６は、量子化後の処理の比較で、入力｛１，１７，３３，４９，６５，８１，９７，１１３，１２９｝に対して、シフト処理の場合のビットシフト回路９３を通った場合、｛０，０，１，１，２，２，３，３，４｝という出力が、条件付切上器９５を通った場合は、｛０，０，１，２，２，３，３，４，４｝という出力に変更される。
【０１４１】
すなわち、波形の振幅が大きく強調される傾向の変換となり、画像の先鋭度をある程度保つことができるようになる。
【０１４２】
以上説明したように第１、第２の実施形態及びその適用例によれば、入力されつつある画像データを圧縮符号化している最中に、目標値に達した場合であっても、その入力を継続しつつ、より高い圧縮率に設定し、最終的に目標量以下の符号化データを得ることが出来るようになる。また、目標値に達した、或いは越えてしまった場合でも、再符号化の回数が少ない段階は、符号量の削減よりも画質を重視する再量子化手法を用い、再符号化の回数が進むにつれて、符号の削減量が多くなるようにすることにより、符号量制御と画質制御を両立させることが可能となる。
【０１４３】
＜他の適用例の説明＞
図２８は、構成を模式的に示す図であり、その処理内容は先に説明した第１の実施形態と同様であるので、以下に簡単に説明する。
【０１４４】
ＪＰＥＧ符号化部３００（図１における符号化部１０２に相当する）は、入力された画像データをＤＣＴ変換を行い、得られたＤＣＴ係数を、設定された量子化ステップ（＝２nで、初期状態ではｎ＝０）で量子化し、ハフマン符号化処理を行い、その結果をハードディスク等の外部メモリ３０４（図１における第１のメモリ１０４に相当する）、読み書きが高速なＲＡＭで構成される内部バッファ３０６（図１の第２のメモリ１０６に相当する）に格納していく。
【０１４５】
ここで、外部メモリ３０４に格納されるデータ量を監視し、それが予め設定された値に達した（或いは越えた）場合、外部メモリ３０４のデータを破棄すると共に、ＪＰＥＧ符号化部３００に対して従前よりも２倍にした量子化ステップ（ｎ←ｎ＋１）を設定し、符号化を継続させる。また、このとき、外部メモリ３０４内のデータは破棄されているので、ページの途中から、新に設定された量子化ステップに従って圧縮符号化されたデータが外部メモリ３０４に格納されていくことになるが、それ以前のデータは内部バッファ３０６に保存されている。そこで、それをハフマン復号部３０１で復号することで、ハフマン符号化前のシンボルまで復号し、符号変換部３０２によって再開ビットを削除し（１ビット右シフトして１／２にする）、ハフマン符号化部３０３で再度符号化の処理を行い、その結果を内部バッファ３０６及び外部メモリ３０４に格納する。
【０１４６】
これ以降、再度、設定量に達した場合には、量子化ステップを更に大きなものものに設定し、上記処理を繰り返すことになる。
【０１４７】
本適用例の装置構成は図１７と同様であるものとし、その構成の説明は省略し、処理手順を図２９のフローチャートに従って説明する。
【０１４８】
ステップＳ１５０１において、画像データを符号化し、それをバッファメモリ及び外部メモリそれぞれに出力する。この状態は図３０に示す通りであり、内部バッファ及び外部メモリの両方に符号化データが格納されていくことになる。
【０１４９】
ステップＳ１５０２では、符号量が設定値に達したと判断した場合には、外部メモリ３０４のデータを破棄し、量子化ステップを変更し、圧縮処理を再圧縮処理を行わせる。また、再符号化処理では、内部バッファ内の符号データをハフマン符号前のシンボルにまで復号化し、それの最下位ビットを削除（最下位方向に１ビットシフト）し、再符号化を行う。この状態を示すのが図３１である。
【０１５０】
ステップＳ１５０３では、再符号化することで得たデータを内部バッファ及び外部メモリに転送する。この状態を示すのが図３２である。
【０１５１】
そして、この転送が終わると、ステップＳ１５０４で、内部バッファへの書き込み位置を、最後尾に写して、符号化データの格納位置を更新する。格納位置を変更した後は、更新された量子化ステップで符号化されたデータが、図３３に示すように、内部バッファ及び外部メモリそれぞれに格納される。
【０１５２】
なお、ステップＳ１５０４の処理中に、再び設定量に達した場合には、量子化ステップを更新して上記処理を繰り返すことになる。この場合の、外部メモリ３０４の充足の推移は、先に説明した図１９と実質的同じであり、再符号化する再におけるビットシフトに関しても図２６で説明した通りであるので、その説明は省略する。
【０１５３】
図３４は具体的な適用例を示している。以下、その動作概要を説明する。
【０１５４】
符号化部４００はＪＰＥＧ符号化部３００に対応するものであり、カラー信号の場合、赤（Ｒ）、緑（Ｇ）、青（Ｂ）（各８ビットとする）は、符号化部４００内の色変換部で輝度色差信号Ｙ、Ｃｂ、Ｃｒに変換される。変換して得られた輝度色差信号それぞれはＤＣＴ（離散コサイン変換）部４０２で空間周波数成分への変換が行われる。次いで、量子化部４０３で、不図示の操作部等から指定された内容に従った量子化パラメータに基づく量子化が行われる。量子化後のデータは可変長符号化部（ＶＬＣ）４０４で圧縮符号化を行い、これを圧縮バッファ６００に記憶する。
【０１５５】
符号量監視部５００はＶＬＣ４０４より出力される符号データ量を監視する。そして、予め設定された設定量（設定値）に達した、或いは越えたと判断した場合（以下、オーバーフローという）、量子化パラメータを更新し、量子化部４０３に再度設定する。また、オーバーフローした場合には、再符号化部７００で従前に符号化されたデータを再符号化する。このため、従前の符号データを可変長復号部（ＶＬＤ）７０１で、符号化する以前のデータ（量子化済み係数データ）にまで復号する。そして、この結果を受け、係数変換部７０２は係数データをレベルシフトすることで、より小さな値にする。そして、ＶＬＣ７０３が再度符号化を行い、圧縮バッファ６００に戻す。こうして、圧縮バッファ６００には最終的に１ページ分の画像に対する圧縮データが生成されるので、それを外部メモリ８００に出力する。
【０１５６】
上記実施形態では、イメージスキャナから画像を読み取る装置を例にし、その装置の機能動作について説明した。そして、その機能のほとんど（符号化処理も含む）は、上述した様にコンピュータプログラムによって実現できる。
【０１５７】
従って、本発明はパーソナルコンピュータ等の汎用情報処理装置上で動作するアプリケーションプログラムに適用しても構わない。アプリケーションプログラムに適用する場合には、圧縮元となる画像ファイルをユーザに指定させると共に、目標サイズをユーザに選択させる等のＧＵＩを設ければ良いであろう。このときの目標値は、ユーザーが任意に設定できるものとするが、数値での設定はわかりずらいので、原稿サイズと画質（高中低等）を加味した直感的に分かりやすいメニューから選択させることで、決定するようにすれば良いであろう。
【０１５８】
また、符号化パラメータとして量子化ステップ及び量子化する際の演算モードの２つとして説明したが、圧縮率の異なるデータが混在した際に、それらの間での画質が違和感が発生しないようにする限りは、他のパラメータを用いても良い。但し、例えば、図１の構成においては、再符号化部１０９からの再度符号化するデータが、パラメータ変更後の符号化部１０２からの符号化データと実質的に同じにするには、上記実施形態に示す如く、量子化ステップを増加する手法が好ましい。
【０１５９】
また、実施形態では、カラー画像を輝度、色差データとして圧縮符号化する例を説明したが、色成分を表現する色空間として輝度、色差に限定されるものではない。例えば、Ｌａ*ｂ*表色空間等を用いてもよい。
【０１６０】
また、メモリオーバする毎に圧縮パラメータを変更するが、その対象としては人間の視覚では判別しずらい色成分を優先して量子化ステップを大きくすることが望ましい。従って、ＲＧＢ色空間よりは、むしろ、輝度、色差（色相、彩度）といった、人間の視覚特性に適合する色空間を採用することが望ましい。
【０１６１】
また、上記の通り、本発明は、汎用装置上で動作するアプリケーションプログラムによって実現できるものであるので、本発明はコンピュータプログラムをも含むものである。また、コンピュータプログラムは、通常、フロッピーディスクやＣＤＲＯＭ等の記憶媒体を装置にセットしてコピー或いはインストールことで行われるので、かかる記憶媒体も本発明の範疇に当然に含まれる。
【０１６２】
また、実施形態では、スキャナから画像データを入力するものとして説明したが、ホストコンピュータ上で動作するプリンタドライバに適用しても良い。プリンタドライバに適用する場合には、上位処理（アプリケーション等）から印刷対象のデータを受信したときに、その時点で、そのデータが中間調画像か、文字・線画かは勿論は判別できるので、像域情報生成処理にかかる構成を省くか、或いはより簡素なものとすることができる。
【０１６３】
また、本発明は、コンピュータプログラムと適当なハードウェア（符号化回路等）の組み合わせにも適用できる。
【０１６４】
【発明の効果】
以上説明したように本発明によれば、画像の符号化において、再入力を行うことなく、目標サイズに収まるよう符号化させると共に、その符号化する際に圧縮する際のモードとしてユーザーの意図を反映させて符号化することも可能になる。
【図面の簡単な説明】
【図１】本発明の第１の実施形態における画像処理装置のブロック構成図である。
【図２】本発明の第２の実施形態における画像処理装置のブロック構成図である。
【図３】図１の構成における処理を簡略化して示したフローチャートである。
【図４】初期状態の符号化フェーズにおけるデータフローとメモリ内容を表わす図である。
【図５】符号化・再符号化フェーズにおけるデータフローとメモリ内容を表わす図である。
【図６】転送フェーズにおけるデータフローとメモリ内容を表わす図である。
【図７】転送フェーズ後の符号化フェーズにおけるデータフローとメモリ内容を表わす図である。
【図８】図１の構成における処理の詳細を示すフローチャートである。
【図９】図１の構成の変形例における符号化・再符号化フェーズにおけるデータフローとメモリ内容を表わす図である。
【図１０】図９の変形例における転送フェーズにおけるデータフローとメモリ内容を表わす図である。
【図１１】図９の変形例における転送フェーズ後の符号化フェーズにおけるデータフローとメモリ内容を表わす図である。
【図１２】図２の構成における処理手順を示すフローチャートである。
【図１３】図２の構成における、初期状態の符号化フェーズにおけるデータフローとメモリ内容を表わす図である。
【図１４】図２に構成における、転送フェーズにおけるデータフローとメモリ内容を表わす図である。
【図１５】図２の構成における、符号化・再符号化フェーズにおけるデータフローとメモリ内容を表わす図である。
【図１６】図２の構成における、符号化・再符号化フェーズ後の符号化フェーズにおけるデータフローとメモリ内容を表わす図である。
【図１７】実施形態が適用するデジタル複写機の構成図である。
【図１８】第１の実施形態におけるモード指定部によるシナリオテーブルの内容を示す図である。
【図１９】符号化処理中における内部バッファの充足率の推移の一例を示す図である。
【図２０】実施形態の適用例におけるＤＣＴ係数の直流係数（DC係数）の変換にかかる構成と、符号化の処理内容を説明するための図である。
【図２１】図２１は、適用例におけるＤＣＴ係数の交流係数（ＡＣ）係数の符号化処理の内容を説明するための図である。
【図２２】量子化する際のジグザグスキャンの概念図である。
【図２３】ＡＣ係数のハフマン符号化処理のテーブルを示す図である。
【図２４】ラン長とサイズから引くハフマン符号テーブルの一部を示す図である。
【図２５】実施形態の適用例における量子化の処理の流れを示す図である。
【図２６】実施形態の適用例における、量子化後の処理の処理の流れを示す図である。
【図２７】第２の実施形態におけるモード指定部によるシナリオテーブルの内容を示す図である。
【図２８】実施形態の他の適用例における装置のブロック構成図である。
【図２９】実施形態の他の適用例における動作処理手順を示すフローチャートである。
【図３０】実施形態の他の適用例における或る処理工程における装置の動作内容を示す図である。
【図３１】実施形態の他の適用例における或る処理工程における装置の動作内容を示す図である。
【図３２】実施形態の他の適用例における或る処理工程における装置の動作内容を示す図である。
【図３３】実施形態の他の適用例における或る処理工程における装置の動作内容を示す図である。
【図３４】実施形態の他の適用例における具体的な装置構成を示す図である。
【図１】
0003902968.tif 000002
【図２】
0003902968.tif 000003
【図３】
0003902968.tif 000004
【図４】
0003902968.tif 000005
【図５】
0003902968.tif 000006
【図６】
0003902968.tif 000007
【図７】
0003902968.tif 000008
【図８】
0003902968.tif 000009
【図９】
0003902968.tif 000010
【図１０】
0003902968.tif 000011
【図１１】
0003902968.tif 000012
【図１２】
0003902968.tif 000013
【図１３】
0003902968.tif 000014
【図１４】
0003902968.tif 000015
【図１５】
0003902968.tif 000016
【図１６】
0003902968.tif 000017
【図１７】
0003902968.tif 000018
【図１８】
0003902968.tif 000019
【図１９】
0003902968.tif 000020
【図２０】
0003902968.tif 000021
【図２１】
0003902968.tif 000022
【図２２】
0003902968.tif 000023
【図２３】
0003902968.tif 000024
【図２４】
0003902968.tif 000025
【図２５】
0003902968.tif 000026
【図２６】
0003902968.tif 000027
【図２７】
0003902968.tif 000028
【図２８】
0003902968.tif 000029
【図２９】
0003902968.tif 000030
【図３０】
0003902968.tif 000031
【図３１】
0003902968.tif 000032
【図３２】
0003902968.tif 000033
【図３３】
0003902968.tif 000034
【図３４】
0003902968.tif 000035