(57)【要約】      （修正有）【課題】簡単な構成で画像の入力を継続させながら目標データ量以内に符号化する。【解決手段】符号化部１０２は画像データを圧縮符号化し、その結果を第１、第２のメモリに格納する。符号化シーケンス部１０８はこの符号量を監視し、設定値に達した場合符号化部１０２に対して量子化ステップを更に上げて継続させる。従前の符号化データは再符号化部１０９により符号化部１０２と同じ量子化ステップで再度符号化させる。また、符号化シーケンス制御部１０８は、符号化部１０２で生成された符号量に基づき、次の段階での量子化ステップで符号化した場合の設定値に到達する時刻Ｔ０と、その現時点での符号量に基づく再符号化が完了する時刻Ｔ１と予測演算し、Ｔ１＞Ｔ０−Δｔを満たすと判断した場合には量子化ステップを変更する。ただし、１ページの符号化処理が終了する時刻が、所定値に到達する以前にあるとした場合にはこの量子化ステップの変更は行わない。【選択図】  図１
2004320479.tif 000002
【特許請求の範囲】
【請求項１】
１ページの画像データを圧縮符号化する画像処理装置であって、
量子化ステップが変更可能な第１の符号化手段と、
量子化ステップが変更可能であって、前記第１の符号化手段で圧縮した符号データを再符号化する第２の符号化手段と、
前記第１の符号化手段によって生成される符号データ量を監視すると共に、当該符号データ量が所定量になったか否かを判断する第１の判断手段と、
１ページの画像データの符号化が完了する予測時刻Ｔ０、及び、前記第１の符号化手段で生成される符号データ量が前記所定量に到達する予測時刻Ｔ１を算出し、
条件１：  Ｔ０＞Ｔ１−Δｔ１
（ここで、Δｔ１は所定の正の値）
を満たすか否かを判断する第２の判断手段と、
前記符号データ量に基づき、前記第１の符号化手段が次の段階の量子化ステップで圧縮符号化したと仮定した場合の前記所定量に到達する時刻Ｔ２と、現在の量子化ステップに従って既に生成された符号データを、次の段階の量子化ステップを設定した前記第２の符号化手段で再符号化させたと仮定した場合の再符号化の完了時刻Ｔ３を算出し、
条件２：Ｔ３＞Ｔ２−Δｔ２
（ここで、Δｔ２は所定の正の値）
を満たすか否かを判断する第３の判断手段と、
前記第１の判断手段で前記所定量に到達したと判断した場合、或いは、前記第２、第３の判断手段での前記条件１、２の両方を満たす場合、前記第１、第２の符号化手段に次の段階の量子化ステップを設定する設定手段と、
該設定手段により量子化ステップを変更した場合、量子化ステップ変更後に入力する画像データについては前記第１の符号化手段による符号化を継続させ、量子化変更前の既に符号化された符号データについては前記第２の符号化手段によって再符号化させる制御手段と
を備えることを特徴とする画像処理装置。
【請求項２】
前記第３の判断手段で判断の元になる符号データ量には、シンボル数が含まれることを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記第２の圧縮符号化手段は、再符号化対象の符号化データを画像データに復号することなく、周波数成分のデータ形式まで復元してから再符号化することを特徴とする請求項１又は２に記載の画像処理装置。
【請求項４】
１ページの画像データを圧縮符号化する画像処理装置の制御方法であって、
量子化ステップが変更可能な第１の符号化工程と、
量子化ステップが変更可能であって、前記第１の符号化工程で圧縮した符号データを再符号化する第２の符号化工程と、
前記第１の符号化工程によって生成される符号データ量を監視すると共に、当該符号データ量が所定量になったか否かを判断する第１の判断工程と、
１ページの画像データの符号化が完了する予測時刻Ｔ０、及び、前記第１の符号化工程で生成される符号データ量が前記所定量に到達する予測時刻Ｔ１を算出し、
条件１：  Ｔ０＞Ｔ１−Δｔ１
（ここで、Δｔ１は所定の正の値）
を満たすか否かを判断する第２の判断工程と、
前記符号データ量に基づき、前記第１の符号化工程が次の段階の量子化ステップで圧縮符号化したと仮定した場合の前記所定量に到達する時刻Ｔ２と、現在の量子化ステップに従って既に生成された符号データを、次の段階の量子化ステップを設定した前記第２の符号化工程で再符号化させたと仮定した場合の再符号化の完了時刻Ｔ３を算出し、
条件２：Ｔ３＞Ｔ２−Δｔ２
（ここで、Δｔ２は所定の正の値）
を満たすか否かを判断する第３の判断工程と、
前記第１の判断工程で前記所定量に到達したと判断した場合、或いは、前記第２、第３の判断工程での前記条件１、２の両方を満たす場合、前記第１、第２の符号化工程に次の段階の量子化ステップを設定する設定工程と、
該設定工程により量子化ステップを変更した場合、量子化ステップ変更後に入力する画像データについては前記第１の符号化工程による符号化を継続させ、量子化変更前の既に符号化された符号データについては前記第２の符号化工程によって再符号化させる制御工程と
を備えることを特徴とする画像処理装置の制御方法。
【請求項５】
１ページの画像データを圧縮符号化する画像処理装置として機能するコンピュータプログラムであって、
量子化ステップが変更可能な第１の符号化手段と、
量子化ステップが変更可能であって、前記第１の符号化手段で圧縮した符号データを再符号化する第２の符号化手段と、
前記第１の符号化手段によって生成される符号データ量を監視すると共に、当該符号データ量が所定量になったか否かを判断する第１の判断手段と、
１ページの画像データの符号化が完了する予測時刻Ｔ０、及び、前記第１の符号化手段で生成される符号データ量が前記所定量に到達する予測時刻Ｔ１を算出し、
条件１：  Ｔ０＞Ｔ１−Δｔ１
（ここで、Δｔ１は所定の正の値）
を満たすか否かを判断する第２の判断手段と、
前記符号データ量に基づき、前記第１の符号化手段が次の段階の量子化ステップで圧縮符号化したと仮定した場合の前記所定量に到達する時刻Ｔ２と、現在の量子化ステップに従って既に生成された符号データを、次の段階の量子化ステップを設定した前記第２の符号化手段で再符号化させたと仮定した場合の再符号化の完了時刻Ｔ３を算出し、
条件２：Ｔ３＞Ｔ２−Δｔ２
（ここで、Δｔ２は所定の正の値）
を満たすか否かを判断する第３の判断手段と、
前記第１の判断手段で前記所定量に到達したと判断した場合、或いは、前記第２、第３の判断手段での前記条件１、２の両方を満たす場合、前記第１、第２の符号化手段に次の段階の量子化ステップを設定する設定手段と、
該設定手段により量子化ステップを変更した場合、量子化ステップ変更後に入力する画像データについては前記第１の符号化手段による符号化を継続させ、量子化変更前の既に符号化された符号データについては前記第２の符号化手段によって再符号化させる制御手段
として機能することを特徴とするコンピュータプログラム。
【請求項６】
請求項５に記載のコンピュータプログラムを格納することを特徴とするコンピュータ可読記憶媒体。
【請求項７】
１ページの画像データを圧縮符号化する画像処理装置であって、
量子化ステップが変更可能な第１の符号化手段と、
量子化ステップが変更可能で、少なくとも前記第１の符号化手段の量子化ステップよりも大きな量子化ステップで符号化する第２の符号化手段と、
量子化ステップが変更可能であって、前記第２の符号化手段で圧縮した符号データを再符号化する第３の符号化手段と、
入力中の画像データを前記第１、第２の符号化手段で生成された符号データ量を監視する監視手段と、
該監視手段で監視されている前記第１の符号化手段による符号データ量が所定量になったか否かを判断する第１の判断手段と、
１ページの画像データの符号化が完了する予測時刻Ｔ０、及び、前記第１の符号化手段で生成される符号データ量が前記所定量に到達する予測時刻Ｔ１を算出し、
条件１：  Ｔ０＞Ｔ１−Δｔ１
（ここで、Δｔ１は所定の正の値）
を満たすか否かを判断する第２の判断手段と、
前記監視手段で監視されている前記第２の符号化手段による符号データ量に基づき、当該第２の符号化手段による符号化を継続して前記所定量に到達する予測時刻をＴ２、前記第２の符号化手段の現在の量子化ステップに従って既に生成された符号データを、次の段階の量子化ステップを設定した前記第３の符号化手段で再符号化させたと仮定した場合の再符号化の完了時刻Ｔ３を算出し、
条件２：Ｔ３＞Ｔ２−Δｔ２
（ここで、Δｔ２は所定の正の値）
を満たすか否かを判断する第３の判断手段と、
前記第１の判断工程で前記所定量に到達したと判断した場合、或いは、前記第２、第３の判断工程での前記条件１、２の両方を満たすと判断した場合、前記第１の符号化手段の量子化ステップを前記第２の符号化手段で設定していた量子化ステップで更新し、前記第２、第３の符号化手段の量子化ステップを更に高い量子化ステップに更新する量子化ステップ更新手段と、
該量子化ステップ更新手段で量子化ステップを更新する場合、前記第２の符号化手段により従前に生成された従前符号データで、前記第１の符号化手段の従前符号化データを更新し、前記第２の符号化手段による従前符号データを前記第３の符号化手段で再符号化して更新する制御手段と
を備えることを特徴とする画像処理装置。
【請求項８】
１ページの画像データを圧縮符号化する画像処理装置の制御方法であって、
量子化ステップが変更可能な第１の符号化工程と、
量子化ステップが変更可能で、少なくとも前記第１の符号化工程の量子化ステップよりも大きな量子化ステップで符号化する第２の符号化工程と、
量子化ステップが変更可能であって、前記第２の符号化工程で圧縮した符号データを再符号化する第３の符号化工程と、
入力中の画像データを前記第１、第２の符号化工程で生成された符号データ量を監視する監視工程と、
該監視工程で監視されている前記第１の符号化工程による符号データ量が所定量になったか否かを判断する第１の判断工程と、
１ページの画像データの符号化が完了する予測時刻Ｔ０、及び、前記第１の符号化工程で生成される符号データ量が前記所定量に到達する予測時刻Ｔ１を算出し、
条件１：  Ｔ０＞Ｔ１−Δｔ１
（ここで、Δｔ１は所定の正の値）
を満たすか否かを判断する第２の判断工程と、
前記監視工程で監視されている前記第２の符号化工程による符号データ量に基づき、当該第２の符号化工程による符号化を継続して前記所定量に到達する予測時刻をＴ２、前記第２の符号化工程の現在の量子化ステップに従って既に生成された符号データを、次の段階の量子化ステップを設定した前記第３の符号化工程で再符号化させたと仮定した場合の再符号化の完了時刻Ｔ３を算出し、
条件２：Ｔ３＞Ｔ２−Δｔ２
（ここで、Δｔ２は所定の正の値）
を満たすか否かを判断する第３の判断工程と、
前記第１の判断工程で前記所定量に到達したと判断した場合、或いは、前記第２、第３の判断工程での前記条件１、２の両方を満たすと判断した場合、前記第１の符号化工程の量子化ステップを前記第２の符号化工程で設定していた量子化ステップで更新し、前記第２、第３の符号化工程の量子化ステップを更に高い量子化ステップに更新する量子化ステップ更新工程と、
該量子化ステップ更新工程で量子化ステップを更新する場合、前記第２の符号化工程により従前に生成された従前符号データで、前記第１の符号化工程の従前符号化データを更新し、前記第２の符号化工程による従前符号データを前記第３の符号化工程で再符号化して更新する制御工程と
を備えることを特徴とする画像処理装置の制御方法。
【請求項９】
１ページの画像データを圧縮符号化する画像処理装置として機能するコンピュータプログラムであって、
量子化ステップが変更可能な第１の符号化手段と、
量子化ステップが変更可能で、少なくとも前記第１の符号化手段の量子化ステップよりも大きな量子化ステップで符号化する第２の符号化手段と、
量子化ステップが変更可能であって、前記第２の符号化手段で圧縮した符号データを再符号化する第３の符号化手段と、
入力中の画像データを前記第１、第２の符号化手段で生成された符号データ量を監視する監視手段と、
該監視手段で監視されている前記第１の符号化手段による符号データ量が所定量になったか否かを判断する第１の判断手段と、
１ページの画像データの符号化が完了する予測時刻Ｔ０、及び、前記第１の符号化手段で生成される符号データ量が前記所定量に到達する予測時刻Ｔ１を算出し、
条件１：  Ｔ０＞Ｔ１−Δｔ１
（ここで、Δｔ１は所定の正の値）
を満たすか否かを判断する第２の判断手段と、
前記監視手段で監視されている前記第２の符号化手段による符号データ量に基づき、当該第２の符号化手段による符号化を継続して前記所定量に到達する予測時刻をＴ２、前記第２の符号化手段の現在の量子化ステップに従って既に生成された符号データを、次の段階の量子化ステップを設定した前記第３の符号化手段で再符号化させたと仮定した場合の再符号化の完了時刻Ｔ３を算出し、
条件２：Ｔ３＞Ｔ２−Δｔ２
（ここで、Δｔ２は所定の正の値）
を満たすか否かを判断する第３の判断手段と、
前記第１の判断工程で前記所定量に到達したと判断した場合、或いは、前記第２、第３の判断工程での前記条件１、２の両方を満たすと判断した場合、前記第１の符号化手段の量子化ステップを前記第２の符号化手段で設定していた量子化ステップで更新し、前記第２、第３の符号化手段の量子化ステップを更に高い量子化ステップに更新する量子化ステップ更新手段と、
該量子化ステップ更新手段で量子化ステップを更新する場合、前記第２の符号化手段により従前に生成された従前符号データで、前記第１の符号化手段の従前符号化データを更新し、前記第２の符号化手段による従前符号データを前記第３の符号化手段で再符号化して更新する制御手段
として機能することを特徴とするコンピュータプログラム。
【請求項１０】
請求項９に記載のコンピュータプログラムを格納することを特徴とするコンピュータ可読記憶媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、画像データを符号化する技術に関するものである。
【０００２】
【従来の技術】
従来、静止画像の圧縮方式には、離散コサイン変換（以下、ＤＣＴと略す）を利用したＪＰＥＧ方式や、Ｗａｖｅｌｅｔ変換を利用した方式が多く使われている。この種の符号化方式は、可変長符号化方式であるので、符号化対象の画像毎に符号量が変化するものである。
【０００３】
国際標準化方式であるＪＰＥＧ方式では，画像に対して１組の量子化マトリクスしか定義できないので、プリスキャン無しには、符号量調整が行えず、限られたメモリに記憶するシステムで使用する場合においては、メモリオーバーを起こす危険性があった。
【０００４】
これを防止するためには、充分なメモリ容量を確保しておくことが必要となるが、入力される画像のサイズが一律同じではなく、異なる場合もある。したがって、これまでは、その入力する可能性のある最大サイズ分に適合し得る容量のメモリを確保せざるを得ない。
【０００５】
【発明が解決しようとする課題】
しかしながら、最大サイズに合わせてメモリを確保するような装置においては、それより小さなサイズの画像を入力する場合にもそのメモリが確保されることを意味することになり、メモリを有効活用しているとは到底言えない。
【０００６】
そこで、確保するメモリ容量を中程度の画像に合わせることが考えられるが、今度は、符号化処理で得られた符号データがそれを越えてしまうということが発生する。
【０００７】
この場合の対策として、予定した符号量よりオーバーした場合は、圧縮率を変更して、原稿の再読み込みを行なう方法や、予めプリスキャンによる符号量見積もりを行ない、符号量を調整するために、量子化パラメータの再設定を行なう方法などが知られている。
【０００８】
従来、プリスキャンを行う符号量制御方式として、例えば、プリ圧縮したデータを内部バッファメモリに入れ、これを伸長し、圧縮パラメータを変え、本圧縮し、外部記憶に出力する方式が知られている。このとき、本圧縮は、プリ圧縮よりも圧縮率を高めにする必要がある。
【０００９】
また、例えば、画素ブロックごとの許容符号量を求め、符号量を減らすために、ＤＣＴ係数をｎ回レベルシフトした係数をハフマン符号化する方式が知られており、このシフト量ｎは許容符号量から決定される。
【００１０】
本発明者らは、画像を実質的に１回の符号化処理時間内で、尚且つ、少ないメモリ量で確実に符号化する技術を既に幾つか提案している。その詳細は後述するが、簡単に説明すると、符号量が目標とするメモリ容量をオーバーフローしそうなところで、符号器の圧縮率が高くなるようにし、尚且つ、それまでに既に符号化したデータを新に設定した圧縮率で圧縮したのと等価になるように再符号化するものである。
【００１１】
上記処理は非常に有効なものであるが、再符号化処理を行う再符号化部に対して高い処理能力が要求される。もし、再符号化の処理能力が低いと、その再符号化が完了する前に、再度設定した圧縮率での圧縮符号量が目標値を越えてしまうことがあり、このような事態になると再符号化処理を起動することができなくなり、結果的に、圧縮符号化が失敗することになってしまうからである。
【００１２】
以上の理由により、再符号化は高い処理能力が要求されるわけであるが、実際に、上記のような事態が発生するのはむしろ希であるのも事実である。従って、再符号化について高い処理能力を満たすようにするのは、過剰なものであり、コストアップにつながる。
【００１３】
本発明はかかる問題点に鑑みなされたものであり、比較的簡単な構成でもって、画像の入力を継続させながら、目標符号量以下に符号化することを確実なものとし、尚且つ、画質劣化を可能な限り抑制する技術を提供しようとするものである。
【００１４】
【課題を解決するための手段】
かかる課題を解決するため、例えば本発明の画像処理装置は以下の構成を備える。すなわち、
１ページの画像データを圧縮符号化する画像処理装置であって、
量子化ステップが変更可能な第１の符号化手段と、
量子化ステップが変更可能であって、前記第１の符号化手段で圧縮した符号データを再符号化する第２の符号化手段と、
前記第１の符号化手段によって生成される符号データ量を監視すると共に、当該符号データ量が所定量になったか否かを判断する第１の判断手段と、
１ページの画像データの符号化が完了する予測時刻Ｔ０、及び、前記第１の符号化手段で生成される符号データ量が前記所定量に到達する予測時刻Ｔ１を算出し、
条件１：  Ｔ０＞Ｔ１−Δｔ１
（ここで、Δｔ１は所定の正の値）
を満たすか否かを判断する第２の判断手段と、
前記符号データ量に基づき、前記第１の符号化手段が次の段階の量子化ステップで圧縮符号化したと仮定した場合の前記所定量に到達する時刻Ｔ２と、現在の量子化ステップに従って既に生成された符号データを、次の段階の量子化ステップを設定した前記第２の符号化手段で再符号化させたと仮定した場合の再符号化の完了時刻Ｔ３を算出し、
条件２：Ｔ３＞Ｔ２−Δｔ２
（ここで、Δｔ２は所定の正の値）
を満たすか否かを判断する第３の判断手段と、
前記第１の判断手段で前記所定量に到達したと判断した場合、或いは、前記第２、第３の判断手段での前記条件１、２の両方を満たす場合、前記第１、第２の符号化手段に次の段階の量子化ステップを設定する設定手段と、
該設定手段により量子化ステップを変更した場合、量子化ステップ変更後に入力する画像データについては前記第１の符号化手段による符号化を継続させ、量子化変更前の既に符号化された符号データについては前記第２の符号化手段によって再符号化させる制御手段とを備える。
【００１５】
【発明の実施の形態】
以下、添付図面に従って本発明に係る実施形態を説明するが、先ず、基本部分について説明する。
【００１６】
図１は、実施形態が適用する画像処理装置１００の機能ブロック構成図である。以下、同図の各部を簡単に説明する。
【００１７】
画像処理装置１００は、イメージスキャナから画像を入力する入力部１０１を備えている。なお、入力部１０１は、ページ記述言語をラスターイメージにレンダリングする手段などから画像データを入力しても良いし、記憶媒体に格納された画像ファイルを読込むことで実現しても良く、場合によってはネットワークより受信するようにしても良い。
【００１８】
符号化部１０２は、入力された画像データの符号化を行なう。なお、符号化方式は公知のＪＰＥＧ符号化方式を用い、８×８画素で画像データをＤＣＴ変換し、後述する量子化ステップを用いた量子化、ハフマン符号化処理を行なうものである。
【００１９】
第１のメモリ制御部１０３と、第２のメモリ制御部１０５は、上記符号化部１０２から出力されてくる上記符号化データ（同じ符号化データ）を第１のメモリ１０４と第２のメモリ１０６へそれぞれ格納する様に制御する。ここで、第１のメモリ１０４は、最終的に確定した（目標値以内のデータ量に圧縮し終わった）符号化データを、図１の基本構成の外部に接続されるネットワーク機器、画像出力装置や大容量記憶装置等へ出力するために、該符号化データを保持するためのメモリである。また、第２のメモリ１０６は、前記符号化データを第１のメモリ上に形成するための圧縮符号化処理を補助する作業用のメモリである。
【００２０】
カウンタ１０７は、符号化部１０２によって圧縮符号化された画像データのデータ量をカウントし、該カウント値を保持すると共に、そのカウント結果により符号化シーケンスの制御を行なう符号化シーケンス制御部１０８に出力する。
【００２１】
符号化シーケンス制御部１０８では、カウンタ１０７のカウント値がある設定値に達したかどうかを検出し、その設定値に達した（目標値を越えた）ことを検出した時にメモリ１０４内の格納済みの符号化データを廃棄するよう第１のメモリ制御部１０３に制御信号を出力する。上記第１のメモリ制御部１０３は、この制御信号に基づいて、メモリアドレスカウンタをクリアするか、あるいは符号化データ管理テーブルをクリアすることにより、前記格納データを廃棄する。また、このとき、符号化シーケンス制御部１０８は、第１のカウンタ１０７をゼロクリアして、第１のメモリ１０４におけるデータ量と一致させる（入力部１０１からの入力は継続している）。また、符号化部１０２に対して今までより、高い圧縮率で符号化を行なうよう制御する。具体的には、ＤＣＴ変換係数を量子化する際の量子化ステップを２倍にするよう設定する。
【００２２】
なお、ここでは、単純に量子化ステップを２倍としたが、カラー画像の場合、色変換した際に生成される１つの輝度信号（輝度データ）と、２つの色差信号（色差データ）に対して別々の量子化ステップを割り当て、片方ずつ交互に２倍にするようにする。
【００２３】
そして、圧縮率変更後の符号化データも、これまでと同様、第１のメモリ制御部１０３と第２のメモリ制御部１０５を経て、第１のメモリ１０４と第２のメモリ１０６に夫々格納される。なお、第１のメモリ１０４には、前記廃棄動作移以降に入力されるデータを符号化処理して生成された符号を格納することになる。
【００２４】
符号化シーケンス制御部１０８は、カウンタ１０７のカウント値がある設定値に達した場合に、前記制御と並行して、第２のメモリ制御部１０５に対して、これまでに第２のメモリ１０６に格納していた符号化データを読み出し、符号化データ変換手段である再符号化部１０９に該符号化データを出力するよう制御信号を出す。
【００２５】
再符号化部１０９は、入力された符号化データを復号化し、データ量を減らすための再量子化等を行なった後に再び符号化処理を行ない、該符号化データは、第１、第２のメモリ制御部１０３、１０５を介して第１、第２のメモリ１０４、１０５に格納する。このときの再符号化部１０９における再符号化の量子化ステップは、符号化部１０２の更新された量子化ステップと同じである。再符号化部１０９で再符号化して得られる符号量は第２のカウンタ１１０で計数する。
【００２６】
再符号化部１０９の再符号化処理が終了したかどうかは、第２のメモリ制御部が検出する。すなわち、再符号化処理するために読み出すデータが無くなれば、再符号化処理の終了を符号化シーケンス制御部１０８に知らせる。実際には、第２のメモリ制御部１０５の読みだし処理だけでなく、再符号化部１０９の処理も終了した後に、再符号化処理が完了したことになる。
【００２７】
第２のカウンタ１１０で得られるカウント値は、再符号化処理が完了した後、第１のカウンタ１０７で保持されているカウンタ値に加算される。この加算は、符号化シーケンス部１０８が第２のメモリ制御部１０５から再符号化完了の通知を受信した場合に行う。この加算をした結果、第１のカウンタ１０７は、第１のメモリ１０４内のデータ量の合計を表す計数値を保持することになる。即ち、１画面分（ページ分）の符号化部１０２と再符号化部１０９の符号化処理が終了した時点では、上記加算後の第１のカウンタ１０７で保持されているカウンタ値は、１画面分（１ページ分）を本装置が符号化した場合に発生した総データ量を表す（詳細は後述）。
【００２８】
符号化部１０２は、再符号化処理の終了／未終了に関わらず、符号化するべき入力部１０１からの画像データが残っている限りは符号化処理を継続して行なう。
【００２９】
第１のカウンタ１０７のカウント値がある設定値に達したかどうかの検出は、入力部１０１から入力される１ページ分の画像データの符号化処理（符号化、再符号化）が終わるまで繰り返され、上述した符号化と再符号化の処理は、ここで得られる検出結果に応じた制御の上で実行される。
【００３０】
上記処理内容をより分かりやすく説明すると次の通りである。なお、以下はモノクロ画像の符号化についてのものである。
【００３１】
入力部１０１より入力された画像データは符号化部１０２にて初期段階での量子化パラメータＱ１に従い圧縮符号化を行う。生成された圧縮符号データは、第１のメモリ１０４、第２のメモリ１０６にそれぞれ書き込まれていく。このとき、第１のカウンタ１０７は生成される符号データ量を計数していくが、設定量以下のまま圧縮符号化処理が完了した場合には、第１のメモリ１０４に格納されたデータを外部に出力し、後続する画像（次ページの画像）があれば、カウンタ１０７、１１０をリセットしてその入力を行う。
【００３２】
一方、或るページを符号化している最中に、生成される符号化データ量が設定値に達したと符号化シーケンス制御部１０８が検出した場合、第１のメモリ１０４内のデータを破棄させ、符号化部１０２に対して更に高い圧縮率となるよう、次の段階の量子化パラメータＱ２を設定して画像データの入力を継続させる。このとき、第１のカウンタ１０７をリセットする。これにより、設定値に達したと判断された以降に入力された画像データは、更に高い圧縮率で符号化が行われることになる。また、符号化データ量が設定値に達する以前の符号化データ（量子化パラメータＱ１で符号化されたデータ）は、第２のメモリ１０６に格納されている。そこで、このデータを再符号化部１０９にて、再符号化を行ない、その結果を、第１のメモリ１０４、第２のメモリ１０６にそれぞれ格納する。再符号化部１０９で再符号化する際の量子化パラメータは、設定変更後の符号化部１０２の量子化パラメータＱ２と同じである。第２のメモリ１０６に格納されていた以前の符号化データに対する再符号化が完了すると、その符号量は第２のカウンタ１１０に保持されているので、それを第１のカウンタ１０７に足しこむ。
【００３３】
以上の結果、第１のメモリ１０４、第２のメモリ１０６それぞれには、１ページの先頭から量子化パラメータＱ２で圧縮された符号化データが格納されることになる。この量子化パラメータＱ２で圧縮符号化している最中に、再度、カウンタ１０７の値が設定値に達したと判断した場合、更に高い圧縮率となるべく、量子化パラメータＱ３を符号化部１０２及び再符号化部１０９に設定して、上記の処理を行う。そして、量子化パラメータＱ３でも設定値に達したと判断した場合には、量子化パラメータをＱ４に設定することになる。
【００３４】
量子化ステップは、Ｑ２＝Ｑ１×ｍ、Ｑ３＝Ｑ２×ｍ、Ｑ４＝Ｑ３×ｍ…と、ｍ倍（ｍ＞１）ずつ大きくしていく（必ずしも等倍である必要はない）。量子化ステップを大きくすると、ＤＣＴ変換した際の周波数成分値が小さな値、すなわち、少ないビット数で表現できるわけであるから、データ量を減らすことが可能となる。
【００３５】
上記、図１の構成における処理のフローを表わすフローチャートを図８に示すが、説明を簡単にするため、簡略化した図３のフローチャートに従って先ず説明する。
【００３６】
既に説明したように、本発明の画像処理装置１００は、スキャナ等の入力部１０１から入力した１ページの画像データを所定のデータ量以下に圧縮符号化する装置である。該符号化処理を実現するために、前記入力部１０１以外に、符号化部１０２、再符号化部１０９、第１のメモリ１０４、第２のメモリ１０６等を有する。これらの機能ブロックを用い、図３に示すフローチャートに基づいて符号化処理を行なう。
【００３７】
図３のフローチャートは、大別すると、下記の３つの処理フェーズに分かれる。
（１）符号化フェーズ
（２）符号化・再符号化フェーズ
（３）転送フェーズ
上記それぞれの処理フェーズおいて、どのように画像データ、符号化データ等が流れて処理され，メモリにどのように格納されるかを視覚的に解り易く示したのが図４乃至図７である。
【００３８】
図４は、図３のフローチャートにおけるステップＳ３０３とＳ３０５に対応する符号化フェーズの初期状態を表わす。また、図５はステップＳ３０７〜Ｓ３１５に対応する符号化・再符号化フェーズの処理状態を、図６はステップＳ３１７に対応する転送フェーズの処理状態を、図７は転送フェーズ後の符号化フェーズの処理状態を表わす。以下、各フェーズについて説明する。
【００３９】
＜＜符号化フェーズ＞＞
１ページ分の画像データの符号化処理は、符号化パラメータの初期設定（ステップＳ３０１）から始まる。ここでは符号化処理する画像サイズ（スキャナ等の入力部１０１から読み取る用紙サイズ）から一意的に定まる符号化データ量の上限値に基づき符号化部１０２に適用する量子化ステップＱ１を設定する。
【００４０】
そして、ステップＳ３０３にて、第１のカウンタ１０７は、実際の符号化処理（画像を８×８画素のブロック単位でＪＰＥＧ圧縮）を行ない、出力される符号化データのデータ量を累積カウントする。
【００４１】
次にステップＳ３０５にて、該データ量のカウント値が上記上限値をオーバーしたかどうかを検知し、オーバーしていなければステップＳ３０３のＪＰＥＧ符号化処理を継続する。これが初期状態の符号化フェーズである。
【００４２】
符号化部１０２から出力する符号化データは、図４に示すように第１のメモリ１０４と第２のメモリ１０６の両方に格納されていく。縦縞で示した領域が該格納した符号を表現している。
【００４３】
＜＜符号化・再符号化フェーズ＞＞
符号化部１０２の符号化処理が進行し、前記データ量のカウント値が設定されている上限値をオーバーすると、ステップＳ３０７にて、第１のメモリ１０４内の符号化データを廃棄すると共に、ステップＳ３０９にて、符号化部１０２の量子化パラメータをＱ２に変更する。
【００４４】
符号化データのデータ量のカウント値が設定された上限値をオーバーするという事は、圧縮後のデータ量が目標値以内に収まらないことを意味する。よって同じ量子化ステップを用いて符号化処理を継続しても意味が無いので、前よりもデータ量が少なくなるように、Ｑ１よりも量子化ステップ幅の大きい量子化ステップＱ２に変更するわけである。
【００４５】
量子化ステップ及び量子化演算内容を変更した後、ステップＳ３１１では符号化部１０２の符号化処理を再開し、図５に示すように符号化データを第２のメモリ１０６のみに格納する。それと並行して、ステップＳ３１３の再符号化処理を行なう。再符号化処理では、第２のメモリ１０６に格納済みの符号化データを読み出して、再符号化部１０９にて再符号化処理を行ない、前記２つのメモリ１０４、１０６に格納する。そして、縦縞▲１▼の符号を全て再符号化するまで、該符号化処理と再符号化処理を継続する。
【００４６】
具体的にこの再符号化処理では、符号化データを一旦ハフマン復号した後の各量子化値に対して、これら値を２ｎで割った結果と同様の結果が出るビットシフト処理を施した後、再度ハフマン符号化を行なうことにより実現される（ｍ＝２の場合）。この方法は、ビットシフトのみで量子化ステップを変更する点と逆直交変換や再直交変換処理を行なわない点で、高速な再符号化処理が可能である。ステップ３１５では、再符号化処理の終了検知が行なわれる。
【００４７】
再符号化後のデータ量は再符号化前の符号化データのデータ量よりも少なくなるので、図５に示すように、再符号化前の符号を格納していたメモリ領域に再符号化後の符号化データを上書きするように格納することができる。再符号化処理が終了した時点で、縦縞▲１▼の符号化データのデータ量は図６に示すの斜め縞▲１▼の符号化データのデータ量へと減少する。
【００４８】
以上で説明したステップＳ３０７〜３１５が、符号化・再符号化フェーズで行なう処理である。
【００４９】
＜＜転送フェーズ＞＞
再符号化処理が終了したら、ステップＳ３１７では転送処理が行なわれる。該転送処理では、図６に示すように、符号化・再符号化フェーズで第２のメモリ１０６のみに格納した斜め縞▲２▼の符号化データを、第１のメモリ１０４内の斜め線▲１▼の符号化データに連結されるアドレスに転送し、格納する。その一方で、第２のメモリ１０６上で分散してしまっている斜め縞▲１▼の符号化データと斜め縞▲２▼の符号化データが第１のメモリ１０４上で連続して格納される様に、前記斜め縞▲２▼の符号化データを第２のメモリ１０６内で転送し、連結させる。これが、転送フェーズで行なう処理である。
【００５０】
上記転送フェーズが終了したら、ステップＳ３０３、Ｓ３０５の符号化フェーズに戻り、図７に示すように斜め縞▲４▼の符号を符号化部１０２から出力して２つのメモリ１０４，１０６に格納する。この符号化フェーズは、初期状態の符号化フェーズ（図４）と少し異なり、符号化部１０２で符号化する際の量子化ステップがＱ１からＱ２に変更されていると共に、２つのメモリ１０４，１０６に格納されている符号化データも様々なフェーズで処理された符号の集まりである。それらの違いを無視すれば、転送フェーズ直後の符号化フェーズと初期状態の符号化フェーズは、同じと見なせる。
【００５１】
よって、符号化フェーズ、符号化・再符号化フェーズと転送フェーズの３つを繰り返すことで、最終的に１ページの画像データを設定符号量以下に圧縮した符号を第１のメモリに格納することが出来る。しかも、入力部１０１は一連の処理が終わるまで、入力を継続するだけである。すなわち、画像を再度最初から入力し直すということが無くなる。
【００５２】
図３に示したフローチャートは、説明が理解しやすいように、図４、図５、及び、図６に示した各フェーズに対応する処理のみを記述した。しかしながら実際には、１ページの画像データの入力はどこかのフェーズで終了する。従って、どのフェーズで終了したかによって、それ以降の対応も多少異なる。それを考慮した流れを示したのが図８のフローチャートである。図８のフローチャートは、１ページ分の画像データの入力完了と図３で説明した各種処理との関係を考慮したものであり、ここでは図３のフローチャートに、ステップＳ８０１、Ｓ８０３、Ｓ８０５、Ｓ８０７を追加している。
【００５３】
ステップＳ８０１、Ｓ８０３、Ｓ８０５は、それぞれ、符号化フェーズ、符号化・再符号化フェーズ、転送フェーズにおいて、入力部１０１からの１ページ分の画像データの入力が終了したことを検知する。
【００５４】
符号化フェーズと転送フェーズで１ページ分の画像データの入力が終了したことを検知した場合（ステップＳ８０１、Ｓ８０５）、ステップＳ８０７へ移り、当該ページの圧縮符号化処理を終了し、次に圧縮処理すべき画像データがあれば、次の１ページ分の画像データの圧縮符号化処理を開始し（各カウンタをリセットし、量子化パラメータを初期値に設定する）、無ければ停止状態に入る。
【００５５】
一方、符号化・再符号化フェーズで１ページ分の画像データの入力終了を検知した場合（ステップＳ８０３）には、符号化部１０２では再符号化処理する画像データが無くなるまで一旦動作を止める必要があるので、ステップＳ３１１の符号化処理をパスし、ステップＳ３１３で、今までに符号化部１０２で符号化済みの画像データを所定の符号化データ量に抑える為の再符号化処理のみを継続して行なう。再符号化処理が全て終了して、その後の転送処理が終わらないと、１ページ分の画像データ全体の符号化データが第１のメモリ上に集まらないため、１ページ分の画像データの入力終了後も再符号化処理及びそれに続く転送処理は継続して行われる必要がある。この場合には、ステップＳ３１５にて、再符号化処理が全て終了したことを検知すると、符号化・再符号化フェーズ中に、第２のメモリ１０６のみに格納された符号化データを第１のメモリに転送し（ステップＳ３１７）た後、次のステップＳ８０５にて、１ページ分の画像データの入力終了が検知されてステップＳ８０７へ移ることになる。
【００５６】
以上が動作であり、図８の動作説明でもある。
【００５７】
＜メモリ格納方法の変形例＞
図９、図１０は図５、図６の概念図で示したメモリ格納方法の変形例を示す図である。
【００５８】
図５の概念図においては、符号化・再符号化フェーズでは、符号化部１０２から出力する符号化データは第２のメモリ１０６のみに格納していたが、図９に示すように符号化・再符号化フェーズ中に、符号化部１０２から出力する符号化データを第１、第２メモリの両方に直接格納する。
【００５９】
符号化部１０２から見ると、どのフェーズで符号化して出力する符号化データも両方のメモリへ格納することになる。また、図６の概念図とは異なり、図１０に示す様に、転送フェーズでメモリ間のデータ転送が必要なくなる。またこの変形例の場合には、符号化・再符号化フェーズにおいて、符号化データと再符号化データを第１のメモリ１０４へ送った順序で順次格納される。そのため２種類のデータが入り混じってしまうという問題は有る。
【００６０】
従って、この変形例の場合にはこれに対応する為に符号化データをある単位で区切って、ファイル或いはパケットとして管理する様にする。具体的には、ファイル管理テーブル、或いは、パケット管理テーブル等を別に作成して管理する。
【００６１】
一つの手法としては、符号化部１０２からのデータを第１メモリ１０４に格納する際、適当な単位（例えば前記直交変換の単位が８×８のブロックであるので、８×ｉ（ｉ＝１、２…の整数）ライン分のデータ）毎に、画像データの先頭から管理番号を割り当て、各管理番号に対応する符号化データの格納先頭アドレスと該符号化データ量とを、管理番号順に格納できるような管理テーブルを作成する。
【００６２】
符号化部１０２や再符号化部１０９は処理中のデータの管理番号を保持し、該管理番号に基づいて、符号化データ格納時の先頭アドレスと符号化データ量とを管理テーブルに書き込む。このようにすれば、符号化部１０２と再符号化部１０９で処理した符号化データをランダムに格納したとしても、前記管理テーブルを管理番号順にアクセスし、その時読み出させる先頭アドレスと符号化データ量に基づいて、符号化データを第１メモリ１０４から読み出せば、画像の先頭から順番に符号化データを読み出すことができる。このような管理機構を設ければ、画像上で連続するデータをメモリ上で連続するように格納する必要性が無くなる。
【００６３】
図１０の概念図における転送フェーズ後の符号化フェーズは、これまで説明した２つの符号化フェーズ（図４、図７）とほとんど同じであり、第１のメモリ内における符号の格納状態が図１１に示した様に若干異なるだけである。よって、先の説明と本変形例は、３つのフェーズを繰り返して処理することに変わりは無い。
【００６４】
＜第２の例＞
次に、本発明において特徴的な符号化処理を行なう為の、第２の例（これまで説明した構成を第１の例という）を図２を用いて説明する。
【００６５】
図２は、第２の例における画像処理装置２００のブロック構成図である。
【００６６】
図１の第１の例における画像処理装置１００と大きく異なる点は、最初に符号化を行なう符号化部が２つ並列に存在する点である。画像処理装置２００は、入力部２０１から入力される画像データを、第１の符号化部２０２と第２の符号化部２０５で並行して符号化し、互いに圧縮率の異なる２種類の符号化データを生成する。本第２の例でも、符号化方式は公知のＪＰＥＧ符号化方式を用い、８×８画素のブロック単位で画像データをＤＣＴ変換し、後述する量子化ステップを用いた量子化、ハフマン符号化処理を行なうものである。
【００６７】
なお、本例では第１の符号化部２０２よりも、第２の符号化部２０５の方が適用する圧縮率を高く設定する場合について説明する。具体的には、第１の符号化部２０２における量子化パラメータをＱ１、第２の符号化部２０５の量子化パラメータをＱ２（Ｑ２の量子化ステップは、Ｑ１の量子化ステップより大きい）とする。
【００６８】
符号化部２０２から出力される符号化データは、第１のメモリ制御部２０３を経由して、第１のメモリ２０４に格納される。このとき、第１のカウンタ２０８は、符号化部２０２から出力される符号化データのデータ量をカウントし、これを保持すると共に、符号化シーケンス制御部２０９にも出力する。
【００６９】
一方、符号化部２０５で符号化された符号化データは、第２のメモリ制御部２０６を経由して、第２のメモリ２０７に格納される。このとき、第２のカウンタ２１０は、符号化部２０５から出力される符号化データのデータ量をカウントし、これを保持する。更に、後述する第２のメモリ２０７に格納している符号化データを第１のメモリ２０４に転送する時には、それと同時に上記第２のカウンタ２１０のカウント値を、第１のカウンタ２０８に転送する。
【００７０】
さて、第１のカウンタ２０８が符号化部２０２から出力される符号化データのデータ量をカウント中に、該カウント値がある設定値に達した時には、符号化シーケンス制御部２０９は、第１の例と同様、メモリ制御部２０３に対して第１のメモリ２０４に格納されているデータを廃棄するよう制御信号を出す。
【００７１】
そして、符号化シーケンス制御部２０９は、第２のメモリ２０７に格納済みの符号化データを読み出して第１のメモリ２０４に転送し、第１のメモリ２０４に格納するよう、メモリ制御部２０６とメモリ制御部２０３に制御信号を出力する。この結果、第２のカウンタ２１０のカウント値が第１のカウンタ２０８に転送され、その値が第１のカウンタのカウント値としてロード（上書き）される。
【００７２】
要するに、上記第２のカウンタ２１０のカウント値は、第２のメモリ２０７に格納している符号化データのデータ量を表わしているので、そのカウント値と対応する符号化データを、そのまま第１のカウンタと第１のメモリへコピーしたと考えれば良い。
【００７３】
さらに、符号化シーケンス制御２０９は、第２の符号化部２０５に対して、今までよりも、符号化データが少なくなるような符号化を行なうように制御信号を出す。一方、第１の符号化部２０２に対しては、その直前までの第２の符号化部２０５における量子化パラメータＱ２を継承するよう設定を変更する。
【００７４】
例えば、第２の符号化部２０５における量子化ステップを２倍に切り替える。この結果、第１の符号化部２０２は、第２の符号化部２０５は更に大きな量子化ステップＱ３を用いて、次のオーバーフローに備えた更に高い圧縮率の符号化処理を行うことになる。切り替えられた各符号化部２０２、２０５から出力された符号化データは、それぞれ、対応するメモリ制御部２０３、２０６を経由して、対応するメモリ２０４、２０７に格納される。
【００７５】
ここでは、量子化ステップの倍率比を２倍としたがこれに限らず、任意に設定できることは示すまでもない。例えば、カラー画像の場合、色変換した際に生成される１つの輝度信号（輝度データ）と、２つの色差信号（色差データ）に対して別々の量子化ステップを割り当て、片方ずつ交互に２倍にするようにすることで、より細かな設定が可能となる。
【００７６】
そして、符号化シーケンス制御２０９は、メモリ制御部２０６に対し、既に第２のメモリ２０７内に格納している符号化データを読み出して、再符号化部２１１にデータを送るよう制御信号を出す。再符号化部２１１は、図１の再符号化部１０９と同様にして符号化データの再符号化処理を行なう。
【００７７】
第３のカウンタ２１２は、再符号化部２１１が出力したデータ量をカウントするもので、再符号化処理を開始する直前にゼロにリセットされ、再符号化処理中の出力データ量をカウントする。このカウンタ２１２は、再符号化処理が終了した時点で、そこで得られたカウント値を第２のカウンタ２１０に転送する。
【００７８】
第２のカウンタ２１０は、上記転送されてきたデータ量カウント値を、第２のカウンタ２１０内に保持しているカウンタ値に加算することにより、再符号化処理中にメモリ２０７に格納した、符号化データと再符号化データの合計のデータ量を算出する。即ち、メモリ２０７に格納しているデータ量とカウンタ２１０のカウント値とが一致する。
【００７９】
再符号化処理の終了／未終了に関わらず、符号化するべき入力部２０１からの画像データが残っていれば、２つの符号化部２０２と２０５による符号化処理を継続して行なう。そして、カウンタ２０８のカウント値がある設定値に達したかどうかの監視は入力部２０１から入力される１ページ分の画像データの符号化処理（符号化、再符号化）が終わるまで繰り返され、上述した符号化と再符号化の処理は、ここで得られる検出結果に応じた制御の上で実行される。
【００８０】
上記動作を簡単にまとめると、第２の符号化部２０５は、第１の符号化部２０２よりも１つ上の圧縮率での符号化を行う。そして、第１の符号化部２０２で生成された符号量が設定量に達した場合、第１の符号化部２０２の量子化パラメータを、直前の第２の符号化部２０５と同じにする。また、第２の符号化部２０５の量子化パラメータを更に高い圧縮率となるよう設定する。そして、第１のメモリ２０４内のデータを破棄し、第２のメモリ２０７に格納されていたデータを第１のメモリ２０４に転送すると共に、第２のカウンタ２１０の値を第１のカウンタ２０８に書き込む。そして、第２のメモリ内のデータを更に高い圧縮率で再符号化させるため、再符号化部２１１に対して、第２の符号化部２０５に新に設定した量子化パラメータと同じにする。この結果、第２のメモリ２０７内のデータは、ページの先頭から新たなに設定された量子化パラメータで圧縮したのと等価の符号データが格納されることになる。
【００８１】
図２で説明したように符号化部が２つある場合は、図１２に示すフローチャートに基づいて１ページ分の画像データの符号化を行なうことになる。なお、図１２の説明は、符号化部が１つの場合のフローチャートである図８とは、大半は類似しており、当業者であれば上記説明から本第２の例の特徴は十分に理解できるであろうから、符号化部１つの場合と同じように３つのフェーズで処理を説明する様にし、図８と異なる点を主に説明することとする。
【００８２】
上述した図８のフローと本例のフローとの一番大きな違いは、ステップＳ３１７の転送処理が、ステップＳ３０７とステップＳ３０９の間に移動していることである。要するに、符号化・再符号化フェーズと転送フェーズが入れ替わったと見なせば良い（ステップＳ３０７の符号化データの廃棄処理は例外である）。
【００８３】
ステップＳ３０１の符号化パラメータの初期設定では、第１の符号化部２０２に量子化パラメータＱ１を、第２の符号化部２０５には量子化パラメータＱ２を設定する。ただし、量子化パラメータＱ２で表される量子化ステップは、Ｑ１よりも大きい。
【００８４】
符号化フェーズでは、ステップＳ８０１、Ｓ３０３、Ｓ３０５を繰り返し実行する。ステップＳ８０１とステップＳ３０５は符号化部が１つの場合と同じ処理であるが、ステップＳ３０３の符号化処理だけは図１３に示すように異なっている。
【００８５】
第１のメモリ２０４へ格納する符号化データは圧縮率が段階的に高くなるようにするため、最初に格納する符号化データは圧縮率が一番低い量子化パラメータＱ１で符号化したデータを格納し、第２のメモリへ格納する符号化データは量子化パラメータＱ２で符号化したデータを格納する。
【００８６】
第１のメモリ２０４へ格納中のデータ量が設定されている上限値をオーバーしたら（ステップＳ３０５）、直ちに、第１のメモリ２０４で保持していた符号化データを廃棄し（ステップＳ３０７）、第２のメモリ２０７で保持している圧縮率の高い符号化データを、第１のメモリ２０４へ転送する（ステップＳ３１７、図１４参照）。これにより、第１の例で説明した１回目の再符号化処理の終了を待たずに、速やかに、上限値をオーバーしない適切な２番目の候補の符号化データを第１のメモリ２０７内に格納出来る。これが、図１に対する、２つの符号器を持つ図２を適用することの最大の利点である。
【００８７】
本第２の例では、２つのメモリ２０４、２０７で同じ圧縮率の符号化データを持っていることが無駄という考え方なので、第２のメモリ２０７には、第１のメモリ２０４に格納する符号化データよりも圧縮率の高い符号化データを格納しておくようにしている。従って、それ以降の処理もこの考え方に基づき行われるものであり、第２のメモリ２０７内の符号化データを第１のメモリ２０４に転送する処理（転送フェーズ）が終了した後は、第２のメモリ２０７の符号化データを、更に１段階圧縮率の高い符号化データを保持する様に再符号化することとなる。
【００８８】
具体的には、まず図１５に示す様に、転送フェーズの次の符号化・再符号化フェーズでは、上記再符号化の前に、２つの符号化部２０２，２０５に適用される各量子化パラメータＱ１、Ｑ２をそれぞれＱ２、Ｑ３へ変更し（ステップＳ３０９）、１ページの画像データの入力が終了せずに続いていれば（ステップＳ８０３）、後続の画像データは新たな量子化ステップが設定された２つの符号化部で該入力データを符号化して（ステップＳ３１１）、対応する各メモリ２０４，２０７へ格納する。そして、上記符号化処理と並行して第２のメモリに格納されている符号化データ（第１のメモリ２０４に転送したもの）は、第１のメモリ内の符号化データよりも１段階高い圧縮率の符号化データに変更するべく、再符号化部２１１にて量子化パラメータＱ３を用いて符号化されたデータが得られる様な再符号化処理（Ｓ３１３）を行ない、再符号化データを第２のメモリ２０７に格納し直す。
【００８９】
なお、本第２の例でも、第１の例と同様、再符号化処理では、符号化データを一旦ハフマン復号した後の各量子化値に対して、これら値を２ｎで割った結果と同様の結果が出るビットシフト処理を施した後、再度ハフマン符号化を行なうことにより実現される。この方法は、ビットシフトのみで量子化ステップを変更する点と逆直交変換や再直交変換処理を行わない点で、高速な再符号化処理が可能である。
【００９０】
また、本第２の例の様に符号化部が２つ有る場合には、図１５に示したように、第２のメモリ２０７に符号化データと再符号化データを混在して格納する状況が発生する。従って、前述したように、符号化データをある単位で区切って、ファイル或いはパケットとして管理することが、第２のメモリ２０７に対しても必要になる。その為には、例えば第１の例における変形例と同様の構成を設ければ良いであろう。
【００９１】
図１２において、再符号化処理の終了をステップＳ３１５で検知したら、また符号化フェーズ（ステップＳ８０１、Ｓ３０３）に移行する。なお、符号化・再符号化フェーズ後の符号化フェーズでは、図１６に示すように、２つのメモリ２０４，２０７が保持する符号化データは圧縮率が違うだけでなく、符号化データの混在の仕方（アドレス）もかなり違ってくる。従って、再度、第１のメモリ２０４のデータ量が設定値をオーバーした場合には、第２のメモリ２０７で保持されている符号化データ（▲６▼＋▲８▼の横縞の領域の符号）を第１のメモリ２０４へ転送する必要が出てくる。これらを考慮すると、第２のメモリ２０７だけでなく、第１のメモリ２０４でも符号化データをファイル或いはパケットとして管理する必要がある。よって、第１のメモリ２０４にも前述の管理テーブルを用いた管理機構が必要となる。
【００９２】
図１６に示された符号化フェーズの状態は、量子化パラメータと符号化データの混在の仕方が、再符号化処理の前後で異なっていること以外は、初期状態の符号化フェーズ（図１３）と同じである。よって、符号化フェーズ、転送フェーズと符号化・再符号化フェーズを繰り返すことで、最終的に、１ページ分の画像データを設定した上限値以下に圧縮した符号化データを確実に第１のメモリ２０４に格納することが出来る。
【００９３】
なお、第１の例に対し、転送フェーズと符号化・再符号化フェーズの配置順が逆であることから、図８において転送処理後に行なっていた１ページ分の画像データの入力終了検知（ステップＳ８０５）は、符号化・再符号化フェーズで行なう１ページ分の画像データの入力終了検知（ステップＳ８０３）と、ほとんど同じタイミングになってしまう。また、２つの検知処理は、機能的にはステップＳ８０５と同じで、タイミング的にはステップＳ８０３と同じである、従って、これら２つのステップは、新たな１ページ分の画像データの入力終了を検知するステップとして統合し、ステップＳ１２０１と表記しておく。
【００９４】
以上説明した第１、第２の例では、第１のメモリと第２のメモリは物理的に別のメモリであるとして説明をしてきた。これは、２つのメモリに対するアクセスが独立している方が有利なためである。しかしながら、第１のメモリと第２のメモリを、物理的に別のメモリとしない場合も本発明の範疇に含まれる。物理的に１つのメモリ上に、前記第１のメモリと第２のメモリに相当する２つの領域を確保して、第１のメモリを第１のメモリ領域、第２のメモリを第２のメモリ領域と言い直して、これまでの説明を読み直せば、本発明は、１つのメモリでも実現できることが分かる。
【００９５】
また、１つのメモリで上記各例を実現する場合には、前記転送フェーズで説明したデータ転送処理のいくつかは不要となる。その詳細はその都度容易に想像できるので説明は省略するが、前記２つの領域を厳密に別けて使用する場合、物理的に２つのメモリを持つ時と同じようにデータ転送処理が必要であるが、２つの領域間で同じデータを共有することになれば、データ転送処理が不要になるだけでなく記憶容量の削減も図れる。
【００９６】
例えば、第２のメモリ領域で保持していた符号化データを、第１のメモリ領域へ転送する際、該符号化データが格納されている先頭アドレスとデータサイズの２つの情報を第２のメモリ制御部から第１のメモリ制御部へ転送するだけで、前記符号化データを転送したのと同じ効果が得られる。
【００９７】
前記符号化データを、ファイル形式やパケット形式で格納している場合は、メモリ制御部の間で転送する情報は少し増え、該符号化データに関連する管理テーブル情報を転送する必要がある。それでも、符号化データを転送するよりは、効率が良い。
【００９８】
＜第１の実施形態＞
さて、上記の第１、第２の例においては、再符号化部１０９或いは２１１の再符号化能力が低いと、その再符号化が完了する以前に、第１の符号化部２０２による符号量が再度目標値に到達してしまう場合がおこり得る。このような状況になってしまうと、符号化処理が続行できなくなり、原稿画像を再度読み込みが余儀なくされる。
【００９９】
本発明の第１の実施形態では、図１の構成において、上記問題を解決する制御方法を提供する。
【０１００】
なお、本第１の実施形態においては、第１、第２のカウンタ１０７、１１０は共に発生する符号データ量を計測するのは勿論のこと、符号データのシンボル数をも計数することとする。シンボル数を計測する理由は、再符号化部１０９による再符号化処理にかかる時間を高い精度で求めるためである。すなわち、再符号化部１０９での再符号化は、１シンボル当たり或る時間（サイクル）を要するので、シンボル数が決まるとその全体の再符号化に要する時間を簡単に、しかも精度良く算出できるためである。例えば１シンボル当たり１サイクルの時間がかかる場合、３００シンボルの符号データを再符号化する際に要する時間は３００／１シンボル／サイクル＝３００サイクルと算出でき、高い演算精度の時間情報が得られる。ただし、あまり精度を要求しないのであれば、シンボル数と符号量との関係は概略比例関係にあるので、それでもって再符号化処理に要する時間を算出するようにしても構わない。
【０１０１】
図１７（Ａ）は横軸が入力する画像データの量、縦軸が符号量との関係を示している。
【０１０２】
同図（Ａ）では、時刻ｔ０から入力部１０１からの画像データの入力を開始し、符号化部１０２が初期量子化ステップＱ１で符号化を開始し、時刻ｔ１で第１のカウンタ１０７で計数した符号データ量が上限値に達した場合を示している。時刻ｔ１では、第１のメモリ１０４に格納されたデータを破棄すると共にそれ以降に入力される画像データに対して量子化ステップＱ２で符号化するよう符号化部１０２に設定する。このとき、カウンタ１０７は０クリアされる。この結果、符号化部１０２は時刻ｔ２以降に入力される画像データに対して、新に設定（更新）された量子化ステップＱ２での符号化を継続することになる。なお、量子化ステップＱ１で符号化した符号データを量子化ステップＱ２で再符号化する場合には、符号データから画像データまで復号する必要は無く、ＤＣＴ変換した直後の状態まで復元し、それに量子化ステップＱ２を用いて再符号化すればよい。量子化ステップＱ２＝Ｑ１×２の関係にある場合には、ＤＣＴ変換係数を単純に１ビット下位方向にシフトすればよい。
【０１０３】
また、時刻ｔ１以前の、量子化ステップＱ１で圧縮符号化されたデータは第２のメモリ１０６に残っているので、再符号化部１０９は一旦復号処理し、今度は量子化ステップＱ２で再符号化することになる。従って、時刻ｔ１における再符号化部１０９で再符号化しなければならない符号化データ量は実質的に設定された上限値に等しく、その再符号化が行われているに従って徐々に減っていき、最終的に再符号化すべきデータが０になるまで再符号化処理が行うことになる。図示では、時刻ｔ２で再符号化部１０９による再符号化処理が完了したことを示している。再符号化が完了すると、再符号化された後の符号データ量及びシンボル数が第２のカウンタ１１０で計数されているので、それらの値を第１のカウンタ１０７に足し込む。そして、最終的時刻ｔ３で再び上限値に達したと判断され、上記の処理を繰り返すことになる。
【０１０４】
上記のようなシーケンスをたどる場合、格別な問題は発生しない。理由は、時刻ｔ２≦ｔ３となりからである。より分かりやすく言えば、第１のメモリ１０３に格納されるデータ量は再び上限値に到達する以前に、再符号化部１０９の再符号化処理が完了するからでもある。
【０１０５】
一方、時刻ｔ２＞ｔ３となると、もはや正常な符号化処理が実現できないことも理解できよう。同図（Ｂ）はｔ２＞ｔ３となっている状況を示している。
【０１０６】
かかる状況を回避するためには、最初に符号化データ量が上限に達する時刻ｔ１よりも早い時刻である時刻ｔ１’で再符号化部１０９による再符号化を開始させることで、その再符号化処理が完了する時刻を時刻ｔ３以前にすることである。
【０１０７】
再符号化に要する時間は、先に説明したようにシンボル数により決定されるわけであるから、或る時刻Ｔａとしたとき、その時刻Ｔａにおける第１のカウンタ１０７に保持されているシンボル数に１シンボル数当たりにかかるサイクル数を乗算して得た時間Ｔｂを算出することで、再符号化完了時刻ｔ２＝Ｔａ＋Ｔｂで得られる。
【０１０８】
一方、量子化ステップＱ２と量子化ステップＱ１で同じ画像データを符号化した際の符号量の比を、幾つものサンプル画像に対して実験的に求めておき、その平均値α１２をテーブルに記憶しておく。これは、他の量子化ステップＱ３、Ｑ４…についても同じであり、それぞれの符号量比α１３、α１４…として記憶する。なお、テーブルではなく、演算式として記憶するようにしても構わない。
【０１０９】
従って、時刻Ｔａにおける量子化ステップＱ１での符号量をＶ１（実測値）としたとき、同時刻における量子化ステップＱ２での予測符号量Ｖ２ａは、Ｖ２ａ＝Ｖ１×α１２で演算できる。従って、座標を｛時刻、符号量｝としたとき、｛ｔ０、０｝と｛ｔａ、Ｖ２ａ｝を結ぶ延長線と上限値との交わる時刻が２回めの上限値に到達する予測時刻ｔ３を算出できることがわかる。
【０１１０】
そこで、本第１の実施形態では、図１７（Ｂ）の如く、量子化ステップＱ１での符号化を行っている最中に、２回めの目標値に到達する時刻ｔ３を予測演算し、且つ、そのときシンボル数から再符号化が完了する時刻ｔ２を予測演算し、
ｔ２＞ｔ３−Δｔ（Δｔは正の値で、予め経験的に求めた所定値）
という条件を満足するとき、例え上限値に到達していなくても、上限値に到達した場合と同様の処理を開始するようにした。
【０１１１】
上記の例は、符号化部１０２が量子化ステップＱ１で符号化し、次回に使用する量子化ステップがＱ２である例であったが、上記に限らず、一般に、符号化部１０２が量子化ステップＱｎで符号化している最中（次回の量子化ステップがＱｎ＋１）に適用できるのは明らかである。
【０１１２】
かかる処理を実現するためには、先に説明した図３の処理に代わって図１８、もしくは図８に代わって図１９のような処理を行えば良いであろう（図１８、１９の処理は、符号化シーケンス制御部１０８が行うことになる）。
【０１１３】
図３と図１８、図８と図１９との違いは、ステップＳ３１８を追加した点にある。
【０１１４】
すなわち、ステップＳ３０５で符号量が上限値に達していないと判断したとしても、ステップＳ３１５に進んで、次の段階の量子化ステップでの符号化を行った場合の上限値に到達する予測時刻ｔ３と、そのときのシンボル数Ｍによる再符号化が完了する予測時刻ｔ２との間に、
ｔ２＞ｔ３−Δｔ                  …（１）
なる関係が成立するか否かを判断する。もし、この関係が成立する場合には、ステップＳ３０７の処理に進むことで、符号量が上限値に到達した場合と同様の処理を行わせる。それ以外の処理は、先に説明した第１の例と同じであるので、説明するまでもないであろう。
【０１１５】
以上の説明によれば、生成される符号化データ量が上限値に再び到達する以前に、再符号化処理が完了することが可能となり、画像データの符号化処理がスムースに進むことになる。
【０１１６】
ところで、図１７（Ｂ）に示す状況にあるとき、１ページの画像データの入力が終了する時刻がｔ１よりも前になることが有り得る。この場合、量子化ステップＱ１で符号化し続けたとしても、上限値に到達する以前に１ページの符号化が完了するわけであるから、再符号化処理は開始させることは不要である。また、もし再符号化をさせてしまうと、本来量子化ステップＱ１で符号化しても良いはずが、それより大きな量子化ステップＱ２で再符号化してしまうことになる。これは、不必要な画質劣化処理を招くことを意味し、このような事態は避けることが望ましい。
【０１１７】
したがって、図１８や図１９におけるステップＳ３１８における再符号化を開始するタイミングであるか否かの上記条件である式（１）、更に、１ページの画像の符号化完了時刻をも加味して行うことが必要になる。
【０１１８】
実施形態における符号化部１０２は８×８画素単位のブロック単位にＪＰＥＧ符号化を行っている。換言すれば、１つのブロックの符号化が完了する毎に次のブロックを入力し符号化を行うことになる。ここで、１ブロックの画素データを符号化する平均時間をＴｂとする。そして、１ページの総ブロック数をＭ（入力する画像サイズで一意に決定される）、現在符号化しているブロックがＮ番目、現在時刻がＴｃとするなら、１ページの符号化が終了する予測時刻Ｔｅは、
Ｔｅ＝Ｔｃ＋（ＭーＮ）×Ｔｂ
として計算できる。なお、この時刻Ｔｅを算出するため、第１のカウンタ１０７は、符号化データ量、シンボル数を計数するのは勿論のこと、符号化部１０２から出力される符号化データをブロック単位に計数ことになる。ただし、説明するまでもないが、計数中のこのブロック数は１ページの符号化開始時にリセットされるものであり、符号量が上限値に達したとしてもリセット（ゼロクリア）されることはない。
【０１１９】
一方、現在時刻Ｔｃにおける第１のカウンタ２０８で計数された符号化データサイズをＶｃとしたとき、過去の１ブロック当たりの符号量ΔＶはＶｃ／Ｎで算出できる。上限値を仮にＶｍａｘとすると、このまま符号化部１０２での符号化処理を継続した場合に第１のカウンタ２０８で計数される符号化データ量が上限値Ｖｍａｘに到達する予測時刻Ｔ１は、
Ｔ１＝Ｔｃ＋｛（Ｖｍａｘ−Ｖｃ）／ΔＶ｝×Ｔｂ
として計算できる。したがって、
Ｔｅ≦Ｔ１
である場合には、再符号化処理を開始させる必要がないことになる。但し、安全性を確保することが必要であるので、許容誤差をε（＞０）とした場合、
Ｔｅ≦Ｔ１−ε
を満たす場合には再符号化を行わないこととする。
【０１２０】
要するに、図１８、図１９のステップＳ３１８において、ステップＳ３０７に進んで再符号化を開始させるのは、
Ｔｅ＞Ｔ１−ε        （３）
ｔ２＞ｔ３−Δｔ      （４）
の２つの条件（３）、（４）を満たす場合となる。そして、これら２つの条件のうち、少なくとも一方の条件が満たされない場合には、現在設定されている量子化ステップのまま符号化処理を継続する。なお、Ｔｅ、Ｔ１はともにＴｃ成分を含んでいるので、Ｔｃは算出対象外としても構わない。この場合、Ｔｅは現在から１ページの符号化が完了するまでの時間、Ｔ１は現在から上限値に到達するまでの時間を示すことになる。
【０１２１】
以上説明したようにすることで、画質劣化を最低限に抑え、尚且つ、一連の符号化処理が中断することなく、１回の画像データの入力でもって目標符号化データ量以内に符号化することが可能になる。
【０１２２】
なお、説明するまでもないと考えるが、１ページの画像データの符号化が完了する時刻Ｔｅは、イメージスキャナ等で画像を読込む場合には、その１ページの画像データの読取りが完了する時刻と実質的に同じである。
【０１２３】
また、上記例では、上限値に最初に到達する時刻と、１ページの画像データの符号化が完了する時刻とを比較したが、再符号化した後の２回め以降に上限値に到達する時刻と１ページの画像データの符号化が完了する時刻についても同様であるのは明らかであるし、図１８、１９に対する修正はない。
【０１２４】
＜第２の実施形態＞
上記第１の実施形態は図１の構成をその基礎にしたが、図２を基礎する例を第２の実施形態として以下に説明する。
【０１２５】
図１と図２との違いは、先に説明したように、２つの符号化部が並列に圧縮符号化を行う点である。
【０１２６】
第１の実施形態では、量子化ステップＱｎで圧縮符号化している最中に、量子化ステップＱｎ＋１での符号量を類推し、量子化ステップＱｎ＋１で圧縮符号化したと仮定したときの上限値に到達する時刻ｔ３を予測演算した。
【０１２７】
一方、本第２の実施形態では第１の符号化部２０２が量子化ステップＱｎで圧縮符号化し、第２の符号化部２０５が量子化ステップＱｎ＋１で圧縮符号化することになる。すなわち、量子化ステップＱｎ＋１での上限値に到達する時刻ｔ３は、実符号データ量に基づいて演算できることになるので、その精度は第１の実施形態よりも更に高くできることになる。換言すれば、第１の実施形態におけるΔｔを更に小さなものとし、再符号化を開始するタイミングを遅らせることができることになる。
【０１２８】
先ず、図２に適用する場合、第１のカウンタ２０８は符号化部２０２による符号化データ量を計数するだけでよく、シンボル数を計数する必要はない。その代わり、第２のカウンタ２１０、第３のカウンタ２１２は符号化データ量とシンボル数を計数する。
【０１２９】
以下、本第２の実施形態における動作概要を説明することとする。
【０１３０】
第１の符号化部２０２は、初期状態では量子化ステップＱ１に基づいて圧縮符号化処理を行ない、生成された符号化データは第１のメモリ２０４に格納される。第２の符号化部２０５はそれより１段階大きな量子化ステップＱ２で圧縮符号化し、その結果は第２のメモリ２０７に格納される。また、第１のカウンタ２０８は第１の符号化部２０２から出力される符号データ量を累積カウントし、第２のカウンタ２１０は第２の符号化部２０５から出力される符号化データ量を累積カウントする。
【０１３１】
１ページの画像の入力が完了したとき、第１のカウンタ２０８で計数した符号量が設定値以内であれば、第１のメモリ２０４に格納された符号化データを最終的な圧縮符号化データとして外部に出力する。
【０１３２】
一方、１ページの画像入力中に、第１の符号化部２０２から出力された符号量が設定値に到達してしまった場合については、図２０（Ａ）、（Ｂ）を用いて説明する。
【０１３３】
図２０（Ａ）において、今、時刻ｔ１で、第１のカウンタ２０８で計数している符号データ量が設定上限値に到達したと判断したとする。このとき、第１のメモリ２０４内のデータを破棄し、第２のメモリ２０７のデータを第１のメモリ２０４に転送し、且つ、第１の符号化部２０２が使用する量子化ステップを、その時点で第２の符号化部２０５が用いていた量子化ステップＱ２で更新する。この結果、画像の１ページを最初から量子化ステップＱ２で圧縮していたのと等価の構成を得る。また、第２の符号化部２０５に対しては、更に高い圧縮率とすべく量子化ステップＱ３を設定し、時刻ｔ１以降に入力される画像データについては量子化ステップＱ３で圧縮符号化を行う。ただし、時刻ｔ１のときに第２のメモリ２０７に格納されている符号化データは、量子化ステップＱ２に基づく符号化データであるので、それを量子化ステップＱ３で再符号化する必要がある。この再符号化は再符号化部２１１で行う。
【０１３４】
この量子化ステップＱ３での再符号化が完了する時刻ｔ２は、量子化ステップＱ２で符号化を開始した第１の符号化部２０２による符号量が再び上限値に到達する時刻ｔ３よりも前になっている必要がある。
【０１３５】
つまり、同図（Ａ）における時刻ｔ１”よりも前のタイミングで再符号化部２１１での再符号化を開始させる必要がある。
【０１３６】
第１の実施形態ではちょうど図２０の時刻ｔ１’以前に再符号化を開始する必要があったが、図２の構成にすることで時刻ｔ１”−ｔ１’だけ時間的余裕が生まれることになる。
【０１３７】
また、同図（Ａ）からも分かるように、再符号化部２１１の再符号化対象は、第２のメモリ２０７内の符号化データに対して行えば良く、第１の符号化部２０２による符号量とは直接には関係がない。従って、第２のカウンタ２１０、第３のカウンタ２１２は符号データ量及びシンボル数を計数することが必要になるものの、第１のカウンタ２０８は符号データ量のみを計数すればよい。
【０１３８】
なお、同図（Ａ）の場合、タイミングｔ１のときに、第１の符号化部２０２、第２の符号化部２０５に設定する量子化ステップを更新することになるので、実際は、時刻ｔ１で再符号化部２１１の再符号化処理を開始させることになる。以上は、最初に上限値に到達する場合の例であるが、２回め以降については符号化部２０２、２１０及び再符号化部２１１に設定する量子化ステップが異なるだけで、処理内容は同様である。
【０１３９】
図２０（Ｂ）は、第１のカウンタ２０８で計数した符号データ量が上限値に到達した時刻ｔ１で再符号化部２１１による再符号化を開始しても、量子化ステップＱ２での符号量が再び上限値に到達する時刻ｔ３以内に、その再符号化処理が完了できない状態を示している。すなわち、再符号化部２１１の処理は、同図（Ｂ）における時刻ｔ１”以前に開始する必要があることを示している。
【０１４０】
この判定は、第２のカウンタ２１０で保持されているシンボル数に基づく再符号化部２１１の再符号化処理に要する時刻ｔ２を算出し、且つ、そのときの符号量に基づいて再び上限値になる予測時刻ｔ３を算出し、
ｔ２＞ｔ３−Δｔ
なる関係にあるとき、第１のカウンタ２０８が例え上限値に達していなくても、上限値に達したものとして処理すれば良い。
【０１４１】
なお、図２０（Ｂ）によれば、再符号化を開始しなければならない時刻はｔ１”であるが、第１の実施形態における時刻ｔ１’よりは時間的な余裕があることもわかる。
【０１４２】
以上であるが、上記処理を実現するためには、例えば図１２の処理に代わって図２１に示す処理を行えば良い。図１２との違いは、ステップＳ３１８を追加した点である。
【０１４３】
すなわち、ステップＳ３０５で符号量が上限値に達していないと判断したとしても、ステップＳ３１５に進んで、第２のカウンタ２１０に保持された符号量及びシンボル数にもとづき、次の段階の量子化ステップでの符号化を行った場合の上限値に到達する予測時刻ｔ３と、そのときのシンボル数による再符号化が完了する予測時刻ｔ２との間に、
ｔ２＞ｔ３−Δｔ
なる関係が成立するか否かを判断する。もし、この関係が成立する場合には、ステップＳ３０７の処理に進むことで、符号量が上限値に到達した場合と同様の処理を行わせる。それ以外の処理は、先に説明した第１の例と同じであるので、説明するまでもないであろう。
【０１４４】
なお、本第２の実施形態の機能を実現する場合、符号化シーケンス部２０９は第２のカウンタ２１０に保持された情報（実施形態では符号化データ量及びシンボル数）をも参照することになるので、図２ではなく図２２に示す構成となる。図２２と図２との違いは、上記の如く、符号化シーケンス制御部２０９が第２のカウンタ２１０のデータをダイレクトに参照できるようにした点のみであるので、その詳細は説明するまでもないであろう。
【０１４５】
以上の説明によれば、第１の実施形態と同様の作用効果を奏することが可能となる。また、第２の実施形態の場合、２つの符号化部が並列して符号化処理を行うことになるので、その構成を利用することで再符号化処理に時間的余裕が発生する。従って、図２に相当する処理をコンピュータプログラムでもって実現する場合に都合が良い。なぜなら、例えばパーソナルコンピュータ等で画像データを入力し圧縮符号化する場合、別タスク等で予期せぬ処理が発生することがあるので、時間的に余裕のある処理が望ましいからである。また、再符号化処理に要する時間は、符号データ量でも良いが、シンボル数にすることで高い精度でその時刻を演算できるようになる。
【０１４６】
ただし、上記第２の実施形態でも、先に説明した第１の実施形態と同様、１ページの画像データの符号化終了時刻を加味して、再符号化を行うべきか否かを判定することが望ましい。
【０１４７】
すなわち、図２０（Ｂ）に示す状況、すなわち、１ページの符号化終了時刻Ｔｅが時刻ｔ１よりも前になる場合、再符号化は不要と判断する。第２の実施形態に適合する場合、２つの符号化部２０２、２０５が並行して符号化している点が第１の実施形態と異なるが、原理は同じである。
【０１４８】
すなわち、符号化部２０２の１ブロックの画素データを符号化する平均時間をＴｂとする。そして、１ページの総ブロック数をＭ（入力する画像サイズで一意に決定される）、現在符号化しているブロックがＮ番目、現在時刻がＴｃとするなら、１ページの符号化が終了する予測時刻Ｔｅは、
Ｔｅ＝Ｔｃ＋（ＭーＮ）×Ｔｂ
として計算する。
【０１４９】
一方、現在時刻Ｔｃにおける第１のカウンタ２０８で計数された符号化データサイズをＶｃとしたとき、過去の１ブロック当たりの符号量ΔＶはＶｃ／Ｎで算出できる。上限値を仮にＶｍａｘとすると、このまま符号化部１０２での符号化処理を継続した場合に第１のカウンタ２０８で計数される符号化データ量が上限値Ｖｍａｘに到達する予測時刻Ｔ１は、
Ｔ１＝Ｔｃ＋｛（Ｖｍａｘ−Ｖｃ）／ΔＶ｝×Ｔｂ
として計算できる。したがって、
Ｔｅ≦Ｔ１
である場合には、再符号化処理を開始させる必要がないことになる。但し、安全性を確保することが必要であるので、許容誤差をε（＞０）とした場合、
Ｔｅ≦Ｔ１−ε
を満たす場合には再符号化を行わないこととする。
【０１５０】
したがって、図２１のステップＳ３１８において、ステップＳ３０７に進んで再符号化を開始させるのは、＜第１の実施形態の改善例＞と同様、
Ｔｅ＞Ｔ１−ε        （３）
ｔ２＞ｔ３−Δｔ      （４）
の２つの条件（３）、（４）を満たす場合となる。そして、これら２つの条件のうち、少なくとも一方の条件が満たされない場合には、現在設定されている量子化ステップのまま符号化処理を継続すれば良い。
【０１５１】
以上説明したようにすることで、第１の実施形態と同様、画質劣化を最低限に抑え、尚且つ、一連の符号化処理が中断することなく、１回の画像データの入力でもって目標符号化データ量以内に符号化することが可能になる。
【０１５２】
なお、上記第１、第２の実施形態では、モノクロ画像入力の場合であったが、カラー画像の場合には、更に細かい調整が可能となる。カラー画像を符号化する場合には、公知の色変換により、輝度データ（Ｙ）と、２つの色差データ（Ｃ）とが得られるわけであるから、次のような関係にすることが可能になる。尚、以下においてＹは輝度、Ｃは色差を意味し、ＱＹｉ（ｉ＝１，２，３…）とは輝度成分についての量子化ステップを、ＱＣｉ（ｉ＝１，２，３…）は色差成分についての量子化ステップを示し、ｉが大きくなるほど量子化ステップが大きくなることを示している。
2004320479.tif 000003
また、実施形態では、圧縮率を向上させるために、量子化ステップを大きくする例を説明したが、パラメータを変更することで圧縮率が可変な符号化であれば適用できるのは上記実施形態から明らかであるので、必ずしも量子化ステップに限定されるものでもない。例えば、ＪＰＥＧ２０００によれば、量子化した後のエントロピー符号化の際、レイヤ単位に圧縮が行える。高位のレイヤほど画質に対して支配的であるので、最下位レイヤからｉ個のレイヤを切り捨てる等を行えば、圧縮率を変えることができよう。
【０１５３】
また、上記の通り、本発明は、汎用装置上で動作するアプリケーションプログラムによって実現できるものであるので、本発明はコンピュータプログラムをも含むものである。特に、コンピュータプログラムで実現する場合、そのコンピュータの処理能力はまちまちであろうから、上記の式（３）、（４）における「ε」や「Δｔ」はユーザが自由に変更可能とすることが望まれる。
【０１５４】
また、コンピュータプログラムは、通常、フロッピー（登録商標）ディスクやＣＤＲＯＭ等の記憶媒体を装置にセットしてコピー或いはインストールことで行われるので、かかる記憶媒体も本発明の範疇に当然に含まれる。
【０１５５】
また、本発明は、コンピュータプログラムと適当なハードウェア（符号化回路等）の組み合わせにも適用できる。
【０１５６】
【発明の効果】
以上説明したように本発明によれば、比較的簡単な構成でもって、画像の入力を継続させながら、目標符号量以下に符号化することを確実なものとし、尚且つ、画質劣化を可能な限り抑制することが可能になる。
【図面の簡単な説明】
【図１】本発明の前提である第１の例における画像処理装置のブロック構成図である。
【図２】第２の例における画像処理装置のブロック構成図である。
【図３】図１の構成における処理を簡略化して示したフローチャートである。
【図４】初期状態の符号化フェーズにおけるデータフローとメモリ内容を表わす図である。
【図５】符号化・再符号化フェーズにおけるデータフローとメモリ内容を表わす図である。
【図６】転送フェーズにおけるデータフローとメモリ内容を表わす図である。
【図７】転送フェーズ後の符号化フェーズにおけるデータフローとメモリ内容を表わす図である。
【図８】図１の構成における処理の詳細を示すフローチャートである。
【図９】図１の構成の変形例における符号化・再符号化フェーズにおけるデータフローとメモリ内容を表わす図である。
【図１０】図９の変形例における転送フェーズにおけるデータフローとメモリ内容を表わす図である。
【図１１】図９の変形例における転送フェーズ後の符号化フェーズにおけるデータフローとメモリ内容を表わす図である。
【図１２】図２の構成における処理手順を示すフローチャートである。
【図１３】図２の構成における、初期状態の符号化フェーズにおけるデータフローとメモリ内容を表わす図である。
【図１４】図２に構成における、転送フェーズにおけるデータフローとメモリ内容を表わす図である。
【図１５】図２の構成における、符号化・再符号化フェーズにおけるデータフローとメモリ内容を表わす図である。
【図１６】図２の構成における、符号化・再符号化フェーズ後の符号化フェーズにおけるデータフローとメモリ内容を表わす図である。
【図１７】第１の実施形態における再符号化処理開始タイミングの設定原理を説明するための図である。
【図１８】第１の実施形態における処理手順を示すフローチャートである。
【図１９】第１の実施形態における処理手順を示すフローチャートである。
【図２０】第２の実施形態における再符号化処理開始タイミングの設定原理を説明するための図である。
【図２１】第２の実施形態における処理手順を示すフローチャートである。
【図２２】第２の実施形態における画像処理装置のブロック構成図である。
【図１】
2004320479.tif 000004
【図２】
2004320479.tif 000005
【図３】
2004320479.tif 000006
【図４】
2004320479.tif 000007
【図５】
2004320479.tif 000008
【図６】
2004320479.tif 000009
【図７】
2004320479.tif 000010
【図８】
2004320479.tif 000011
【図９】
2004320479.tif 000012
【図１０】
2004320479.tif 000013
【図１１】
2004320479.tif 000014
【図１２】
2004320479.tif 000015
【図１３】
2004320479.tif 000016
【図１４】
2004320479.tif 000017
【図１５】
2004320479.tif 000018
【図１６】
2004320479.tif 000019
【図１７】
2004320479.tif 000020
【図１８】
2004320479.tif 000021
【図１９】
2004320479.tif 000022
【図２０】
2004320479.tif 000023
【図２１】
2004320479.tif 000024
【図２２】
2004320479.tif 000025