(57)【特許請求の範囲】
【請求項１】
多値画像データの各画素に対する像域情報を入力し、圧縮符号化する画像処理方法であって、
入力した前記像域情報を可逆符号化する第１符号化工程と、
該第１の符号化工程で可逆符号化された符号化データを伸長し、再度可逆符号化する第２符号化工程と、
前記第１符号化工程で得られる符号化データ量を監視し、該符号化データ量が所定基準を満たしたか否かを判断する監視工程とを備え、
該監視工程によって前記符号化データ量が所定基準を満たしたと判断した時、前記第１の符号化工程では、後続して入力される像域情報を所定の条件に従って変換してから可逆符号化し、前記第２の符号化工程では、第１符号化手段で既に符号化されている符号化データが表す像域情報を所定の条件に従って変換してから再符号化することを特徴とする画像処理方法。
【請求項２】
更に、前記多値画像データを符号化する第３符号化工程を備え、
前記監視工程は、前記第３符号化工程で得られる符号化データ量と前記第１符号化工程で得られる符号化データ量の合計を監視し、前記合計のデータ量に基づいて前記所定基準を満たしたか否かを判断することを特徴とする請求項１に記載の画像処理方法。
【請求項３】
更に、前記多値画像データを符号化する第３符号化工程を備え、
前記監視工程は、前記第３符号化工程で得られる符号化データ量と前記第１符号化工程で得られる符号化データ量の合計を監視し、前記合計のデータ量及び前記第１符号化工程で得られる符号化データ量の夫々が目標符号量を越えたか否かを判断することにより、前記所定基準を満たしたか否かを判断することを特徴とする請求項１に記載の画像処理方法。
【請求項４】
多値画像データの各画素に対する像域情報を入力し、圧縮符号化する画像処理装置であって、
入力した前記像域情報を可逆符号化する第１符号化手段と、
該第１の符号化手段で可逆符号化された符号化データを伸長し、再度可逆符号化する第２符号化手段と、
前記第１符号化手段で得られる符号化データ量を監視し、該符号化データ量が所定基準を満たしたか否かを判断する監視手段とを備え、
該監視手段によって前記符号化データ量が所定基準を満たしたと判断した時、前記第１の符号化手段は、後続して入力される像域情報を所定の条件に従って変換してから可逆符号化し、前記第２の符号化手段は、第１符号化手段で既に符号化されている符号化データが表す像域情報を所定の条件に従って変換してから再符号化することを特徴とする画像処理装置。
【請求項５】
更に、前記多値画像データを符号化する第３符号化手段を備え、
前記監視手段は、前記第３符号化手段で得られる符号化データ量と前記第１符号化手段で得られる符号化データ量の合計を監視し、前記合計のデータ量に基づいて前記所定基準を満たしたか否かを判断することを特徴とする請求項４に記載の画像処理装置。
【請求項６】
更に、前記多値画像データを符号化する第３符号化手段を備え、
前記監視手段は、前記第３符号化手段で得られる符号化データ量と前記第１符号化手段で得られる符号化データ量の合計を監視し、前記合計のデータ量及び前記第１符号化手段で得られる符号化データ量の夫々が目標符号量を越えたか否かを判断することにより、前記所定基準を満たしたか否かを判断することを特徴とする請求項４に記載の画像処理装置。
【請求項７】
コンピュータが読込み実行することで、多値画像データの各画素に対する像域情報を入力し、圧縮符号化する画像処理装置として機能するコンピュータプログラムであって、
入力した前記像域情報を可逆符号化する第１符号化手段と、
該第１の符号化手段で可逆符号化された符号化データを伸長し、再度可逆符号化する第２符号化手段と、
前記第１符号化手段で得られる符号化データ量を監視し、該符号化データ量が所定基準を満たしたか否かを判断する監視手段として機能し、
該監視手段によって前記符号化データ量が所定基準を満たしたと判断した時、前記第１の符号化手段は、後続して入力される像域情報を所定の条件に従って変換してから可逆符号化し、前記第２の符号化手段は、第１符号化手段で既に符号化されている符号化データが表す像域情報を所定の条件に従って変換してから再符号化する
ことを特徴とするコンピュータプログラム。
【請求項８】
請求項７に記載のコンピュータプログラムを格納したことを特徴とする記憶媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、画像データを該画像データに付随する像域情報を一定符号量以内に圧縮符号化する機能を有する画像処理装置に関するものである。
【０００２】
【従来の技術】
従来，静止画像の圧縮方式には，離散コサイン変換を利用したＪＰＥＧ方式や，Wavelet変換を利用した方式が多く使われている．この種の符号化方式は，可変長符号化方式であるので，符号化対象の画像毎に符号量が変化する。
【０００３】
国際標準化方式であるＪＰＥＧ方式では，画像に対して１組の量子化マトリクスしか定義できないので、プリスキャン無しには、符号量調整が行なえず、限られたメモリに記憶するシステムで使用する場合においては、メモリオーバーを起こす危険性があった。
【０００４】
これを防止するために、予定した符号量よりオーバーした場合は、圧縮率を変更して、原稿の再読み込みを行なう方法や、予めプリスキャンによる符号量見積もりを行ない、符号量を調整するために，量子化パラメータの再設定を行なう方法などがとられていた。
【０００５】
一方、画像情報には、元の画像データ以外に、該画像データに付随する像域情報というものがある。像域情報は主に、画像出力時の見栄えを良くするために、画像出力部での色処理や諧調数の調整に用いられる。有彩色と無彩色が混在する自然画像と、原稿中に多く見られる黒文字とでは、同じ黒色でも使用するインクの種類を変えることで、自然画像を自然画像らしく見せる一方で、鮮明な文字を出力することが出来る。
【０００６】
このように、画素毎に、有彩色か無彩色、文字部かそうでないか、といった各々１ビットの属性フラグデータを持つことにより、画像出力時、特にプリントアウト時に出力画像の画質向上を図ることが出来る。像域情報には前記以外の他の情報もある。
【０００７】
画像情報を圧縮するには、画像データの圧縮はもちろんのこと、上記像域情報も圧縮する必要がある。像域情報は２値データの集まりであり、これを圧縮するには基本的に可逆の符号化方式を用いる必要がある。従来、像域情報の圧縮にはＰａｃｋｂｉｔｓやＪＢＩＧ符号化方式が用いられてきた。
【０００８】
しかしながら、前記像域情報をこれらの符号化方式で圧縮するだけでは、符号量調整を行なえず、限られたメモリに記憶するシステムで使用する場合においては、メモリオーバーを起こす危険性があり、大きな問題であった。
【０００９】
【発明が解決しようとする課題】
しかしながら、従来は、画像データの圧縮ばかりが検討され、像域情報の圧縮については、検討されることが少なかった。まして、該像域情報の圧縮後の符号量を目標値以内に収めること等、ほとんど考えられることが無く、ある符号化方式を用いて該像域情報を単純に符号化するだけであった。
【００１０】
本発明は上記従来例に鑑みて成されたものであり、像域情報の入力を目標値以内の符号量に収めるための効果的な画像処理装置及びその制御方法及びコンピュータプログラム及び記憶媒体を提供しようとするものである。
【００１１】
【課題を解決するための手段】
かかる課題を解決するため、例えば本発明の画像処理方法は以下の構成を備える。すなわち、
多値画像データの各画素に対する像域情報を入力し、圧縮符号化する画像処理方法であって、
入力した前記像域情報を可逆符号化する第１符号化工程と、
該第１の符号化工程で可逆符号化された符号化データを伸長し、再度可逆符号化する第２符号化工程と、
前記第１符号化工程で得られる符号化データ量を監視し、該符号化データ量が所定基準を満たしたか否かを判断する監視工程とを備え、
該監視工程によって前記符号化データ量が所定基準を満たしたと判断した時、前記第１の符号化工程では、後続して入力される像域情報を所定の条件に従って変換してから可逆符号化し、前記第２の符号化工程では、第１符号化手段で既に符号化されている符号化データが表す像域情報を所定の条件に従って変換してから再符号化することを特徴とする。
【００１２】
【発明の実施の形態】
以下、添付図面に従って本発明に係る実施形態を説明するが、先ず、基本部分について説明する。
【００１３】
図１は、実施形態が適用する画像処理装置１００の機能ブロック構成図である。以下、同図の各部を簡単に説明する。
【００１４】
画像処理装置１００は、イメージスキャナから画像を入力する入力部１０１を備えている。なお、入力部１０１は、ページ記述言語レンダリングなどから画像データを入力しても良いし、記憶媒体に格納された画像ファイルを読込むことで実現しても良く、場合によってはネットワークより受信するようにしても良い。
【００１５】
符号化部１０２は、入力された画像データの符号化を行なう。なお、符号化方式は公知のＪＰＥＧ符号化方式を用い、８×８画素単位に相当する画像データを直交変換し、後述する量子化ステップを用いた量子化、ハフマン符号化処理を行なうものである。
【００１６】
第１のメモリ制御部１０３と第２のメモリ制御部１０５は、上記符号化部１０２から夫々に出力されてくる上記符号化データ（同じ符号化データ）を第１のメモリ１０４と第２のメモリ１０６へ格納する様に制御する。ここで、第１のメモリ１０４は、最終的に確定した（目標値以内のデータ量に圧縮し終わった）符号化データを、図１の基本構成の外部に接続されるネットワーク機器、画像出力装置や大容量記憶装置等へ出力するために、該符号化データを保持するためのメモリである。また、第２のメモリ１０６は、前記符号化データを第１のメモリ上に形成するための圧縮符号化処理を補助する作業用のメモリである。
【００１７】
カウンタ１０７は、符号化部１０２によって圧縮符号化された画像データのデータ量をカウントし、該カウント値を保持すると共に、そのカウント結果を符号化シーケンスの制御を行なう符号化シーケンス制御部１０８に出力する。
【００１８】
符号化シーケンス制御部１０８では、カウンタ１０７のカウント値がある設定値に達したかどうかを検出し、その設定値に達した（目標値を越えた）ことを検出した時にメモリ１０４内の格納済みのデータを廃棄するよう第１のメモリ制御部１０３に制御信号を出力する。上記第１のメモリ制御部１０３は、この制御信号に基づいて、メモリアドレスカウンタをクリアするか、あるいは符号化データ管理テーブルをクリアすることにより、前記格納データを廃棄する。また、このとき、符号化シーケンス制御部１０８は、第１のカウンタ１０７をゼロクリアする（入力部１０１からの入力は継続している）と共に、符号化部１０２に対して今までより、高い圧縮率で符号化を行なうよう制御する。すなわち、本装置の符号化処理で発生する符号化データのデータ量が最終的に例えば１／２になるように制御する。なお、ここでは、１／２としたが任意に設定できることは言うまでもない。
【００１９】
そして、圧縮率変更後の符号化データも、これまでと同様、第１のメモリ制御部１０３と第２のメモリ制御部１０５を経て、第１のメモリ１０４と第２のメモリ１０６に夫々格納される。
【００２０】
さらに、符号化シーケンス制御部１０８は、第２のメモリ制御部１０５に対して、これまでに第２のメモリ１０６に格納した符号化データを読み出し、符号化データ変換手段である再符号化部１０９に該符号化データを出力するよう制御信号を出す。
【００２１】
再符号化部１０９は、入力された符号化データを復号化し、データ量を減らすための再量子化等を行なった後に再び符号化処理を行ない、圧縮率が変更された符号化部１０２と同じ圧縮率のデータ量を第２のカウンタ１１０に出力する。
【００２２】
この再符号化部１０９から出力される符号化データは、第１のメモリ制御部１０３と第２のメモリ制御部１０５を経由して、それぞれ、第１のメモリ１０４と第２のメモリ１０６に格納される。
【００２３】
再符号化処理が終了したかどうかは、第２のメモリ制御部が検出する。すなわち、再符号化処理するために読み出すデータが無くなれば、再符号化処理の終了を符号化シーケンス制御部１０８に知らせる。実際には、第２のメモリ制御部１０５の読みだし処理だけでなく、再符号化部１０９の処理も終了した後に、符号化処理が完了したことになる。
【００２４】
第２のカウンタ１１０で得られるカウント値は、再符号化処理が完了した後、第１のカウンタ１０７で保持されているカウンタ値に加算される。この加算結果は再符号化処理が完了した直後における、第１のメモリ１０４内のデータ量の合計を表す。即ち、１画面分の符号化部１０２と再符号化部１０９の符号化処理が終了した時点では、上記加算後の第１のカウンタ１０７で保持されているカウンタ値は、１画面分を本装置が符号化した場合に発生した総データ量を表す（詳細は後述）。
【００２５】
符号化部１０２は、再符号化処理の終了／未終了に関わらず、符号化するべき入力部１０１からの画像データが残っている限りは符号化処理を継続して行なう。
【００２６】
カウンタ１０７のカウント値がある設定値に達したかどうかは入力部１０１から入力される１ページ分の画像データの符号化処理（符号化、再符号化）が終わるまで繰り返され、上述した符号化と再符号化の処理は、ここで得られる検出結果に応じた制御の上で実行される。
【００２７】
上記、図１の構成における処理のフローを表わすフローチャートを図８に示すが、説明を簡単にするため、簡略化した図３のフローチャートに従って先ず説明する。
【００２８】
既に説明したように、本発明の画像処理装置１００は、スキャナ等の入力部１０１から入力した１ページの画像データを所定のデータ量以下に圧縮符号化する装置である。該符号化処理を実現するために、前記入力部１０１以外に、符号化部１０２、再符号化部１０９、第１のメモリ１０４、第２のメモリ１０６等を有する。これらの機能ブロックを用い、図３に示すフローチャートに基づいて符号化処理を行なう。
【００２９】
図３のフローチャートは、大別すると、下記の３つの処理フェーズに分かれる。
（１）符号化フェーズ
（２）符号化・再符号化フェーズ
（３）転送フェーズ
上記それぞれの処理フェーズおいて、どのように画像データ、符号化データ等が流れて処理され，メモリにどのように格納されるかを視覚的に解り易く示したのが図４乃至図７である。
【００３０】
図４は、図３のフローチャートにおけるステップＳ３０３とＳ３０５に対応する符号化フェーズの初期状態を表わす。また、図５はステップＳ３０７〜Ｓ３１５に対応する符号化・再符号化フェーズの処理状態を、図６はステップＳ３１７に対応する転送フェーズの処理状態を、図７は転送フェーズ後の符号化フェーズの処理状態を表わす。以下、各フェーズについて説明する。
【００３１】
＜＜符号化フェーズ＞＞
１ページ分の画像データの符号化処理は、符号化パラメータの初期設定（ステップＳ３０１）から始まる。ここでは符号化処理する画像サイズ（スキャナ等の入力部１０１から読み取る用紙サイズ）から一意的に定まる符号化データ量の上限値や符号化部１０２（ここでは公知のＪＰＥＧ符号化方式を用いるものとする）に適用する量子化ステップ（Ｑ１）といったパラメータを設定する。
【００３２】
そして、ステップＳ３０３にて、第１のカウンタ１０７は、実際の符号化処理（画像の８×８画素単位にＪＰＥＧ圧縮）を行ない、出力される符号化データのデータ量を累積カウントする。
【００３３】
次にステップＳ３０５にて、該データ量のカウント値が上記上限値をオーバーしたかどうかを検知し、オーバーしていなければステップＳ３０３のＪＰＥＧ符号化処理を継続する。これが初期状態の符号化フェーズである。
【００３４】
符号化部１０２から出力する符号化データは、図４に示すように第１のメモリ１０４と第２のメモリ１０６の両方に格納されていく。縦縞で示した領域が該格納した符号を表現している。
【００３５】
＜＜符号化・再符号化フェーズ＞＞
符号化部１０２の符号化処理が進行し、前記データ量のカウント値が設定されている上限値をオーバーすると、ステップＳ３０７にて、第１のメモリ１０４内の符号化データを廃棄すると共に、ステップＳ３０９にて、符号化部１０２の量子化ステップをＱ２に変更する。
【００３６】
符号化データのデータ量のカウント値が設定された上限値をオーバーするという事は、圧縮後のデータ量が目標値以内に収まらないことを意味する。よって同じ量子化ステップを用いて符号化処理を継続しても意味が無いので、前よりもデータ量が少なくなるように、Ｑ１よりも量子化ステップ幅の大きい量子化ステップＱ２に変更するわけである。
【００３７】
量子化ステップを変更した後、ステップＳ３１１では符号化部１０２の符号化処理を再開し、図５に示すように符号化データを第２のメモリ１０６のみに格納する。それと並行して、ステップＳ３１３の再符号化処理を行なう。再符号化処理では、第２のメモリ１０６に格納済みの符号化データを読み出して、再符号化部１０９にて再符号化処理を行ない、前記２つのメモリ１０４、１０６に格納する。そして、縦縞▲１▼の符号を全て再符号化するまで、該符号化処理と再符号化処理を継続する。再符号化部１０９から出力される再符号化データは、量子化ステップ変更後に符号化部１０２から出力される符号化データと同じ量子化ステップで符号化して得られる符号化データと全く同一の符号化データである。
【００３８】
具体的にこの再符号化処理では、符号化データを一旦ハフマン復号した後の各量子化値に対して、これら値を２nで割った結果と同様の結果が出るビットシフト処理を施した後、再度ハフマン符号化を行なうことにより実現される。この方法は、ビットシフトのみで量子化ステップを変更する点と逆直交変換や再直交変換処理を行なわない点で、高速な再符号化処理が可能である。ステップ３１５では、再符号化処理の終了検知が行なわれる。
【００３９】
再符号化後のデータ量は再符号化前の符号化データのデータ量よりも少なくなるので、図５に示すように、再符号化前の符号を格納していたメモリ領域に再符号化後の符号化データを上書きするように格納することができる。再符号化処理が終了した時点で、縦縞▲１▼の符号化データのデータ量は図６に示すの斜め縞▲１▼の符号化データのデータ量へと減少する。
【００４０】
以上で説明したステップＳ３０７〜３１５が、符号化・再符号化フェーズで行なう処理である。
【００４１】
＜＜転送フェーズ＞＞
再符号化処理が終了したら、ステップＳ３１７では転送処理が行なわれる。該転送処理では、図６に示すように、符号化・再符号化フェーズで第２のメモリ１０６のみに格納した斜め縞▲２▼の符号化データを、第１のメモリ１０４内の斜め線▲１▼の符号化データに連結されるアドレスに転送し、格納する。その一方で、第２のメモリ１０６上で分散してしまっている斜め縞▲１▼の符号化データと斜め縞▲２▼の符号化データが第１のメモリ１０４上で連続して格納される様に、前記斜め縞▲２▼の符号化データを第２のメモリ１０６内で転送し、連結させる。これが、転送フェーズで行なう処理である。
【００４２】
上記転送フェーズが終了したら、ステップＳ３０３、Ｓ３０５の符号化フェーズに戻り、図７に示すように斜め縞▲４▼の符号を符号化部１０２から出力して２つのメモリ１０４，１０６に格納する。この符号化フェーズは、初期状態の符号化フェーズ（図４）と少し異なり、符号化部１０２で符号化する際の量子化ステップがＱ１からＱ２に変更されていると共に、２つのメモリ１０４，１０６に格納されている符号化データも様々なフェーズで処理された符号の集まりである。それらの違いを無視すれば、転送フェーズ直後の符号化フェーズと初期状態の符号化フェーズは、同じと見なせる。
【００４３】
よって、符号化フェーズ、符号化・再符号化フェーズと転送フェーズの３つを繰り返すことで、最終的に１ページの画像データをデータ量設定値以下に圧縮した符号を第１のメモリに格納することが出来る。しかも、入力部１０１は一連の処理が終わるまで、入力を継続するだけである。すなわち、画像を再度最初から入力し直すということが無くなる。
【００４４】
図３に示したフローチャートは、説明が理解しやすいように、図４、図５、及び、図６に示した各フェーズに対応する処理のみを記述した。しかしながら実際には、１ページの画像データの入力はどこかのフェーズで終了する。従って、どのフェーズで終了したかによって、それ以降の対応も多少異なる。それを考慮した流れを示したのが図８のフローチャートである。図８のフローチャートは、１ページ分の画像データの入力完了と図３で説明した各種処理との関係を考慮したものであり、ここでは図３のフローチャートに、ステップＳ８０１、Ｓ８０３、Ｓ８０５、Ｓ８０７を追加している。
【００４５】
ステップＳ８０１、Ｓ８０３、Ｓ８０５は、それぞれ、符号化フェーズ、符号化・再符号化フェーズ、転送フェーズにおいて、入力部１０１からの１ページ分の画像データの入力が終了したことを検知する。
【００４６】
符号化フェーズと転送フェーズで１ページ分の画像データの入力が終了したことを検知した場合（ステップＳ８０１、Ｓ８０５）、ステップＳ８０７へ移り、当該ページの圧縮符号化処理を終了し、次に処理すべき１ページ以上の画像データがあれば、次の１ページ分の画像データの圧縮符号化処理を開始し、無ければ停止状態に入る。
【００４７】
一方、符号化・再符号化フェーズで１ページ分の画像データの入力終了を検知した場合（ステップＳ８０３）には、符号化部１０２では再符号化処理する画像データが無くなるまで一旦動作を止める必要があるので、ステップＳ３１１の符号化処理をパスし、ステップＳ３１３で、今までに符号化部１０２で符号化済みの画像データを所定の符号化データ量に抑える為の再符号化処理のみを継続して行なう。再符号化処理が全て終了して、その後の転送処理が終わらないと、１ページ分の画像データ全体の符号化データが第１のメモリ上に集まらないため、１ページ分の画像データの入力終了後も再符号化処理及びそれに続く転送処理は継続して行われる必要がある。この場合には、ステップＳ３１５にて、再符号化処理が全て終了したことを検知すると、符号化・再符号化フェーズ中に、第２のメモリ１０６のみに格納された符号化データを第１のメモリに転送し（ステップＳ３１７）た後、次のステップＳ８０５にて、１ページ分の画像データの入力終了が検知されてステップＳ８０７へ移ることになる。
【００４８】
以上が動作であり、図８の動作説明でもある。
【００４９】
＜メモリ格納方法の変形例＞
図９、図１０は図５、図６の概念図で示したメモリ格納方法の変形例を示す図である。
【００５０】
図５の概念図においては、符号化・再符号化フェーズでは、符号化部１０２から出力する符号化データは第２のメモリ１０６のみに格納していたが、図９に示すように符号化・再符号化フェーズ中に、符号化部１０２から出力する符号化データを第１、第２メモリの両方に直接格納する。
【００５１】
符号化部１０２から見ると、どのフェーズで符号化して出力する符号化データも両方のメモリへ格納することになる。また、図６の概念図とは異なり、図１０に示す様に、転送フェーズでメモリ間のデータ転送が必要なくなる。またこの変形例の場合には、符号化・再符号化フェーズにおいて、符号化データと再符号化データを第１のメモリ１０４へ送った順序で順次格納される。そのため２種類のデータが入り混じってしまうという問題は有る。
【００５２】
従って、この変形例の場合にはこれに対応する為に符号化データをある単位で区切って、ファイル或いはパケットとして管理する様にする。具体的には、ファイル管理テーブル、或いは、パケット管理テーブル等を別に作成して管理する。
【００５３】
一つの手法としては、符号化部１０２からのデータを第１メモリ１０４に格納する際、適当な単位（例えば前記直交変換の単位が８×８のブロックであるので、８×ｉ（ｉ＝１、２…の整数）ライン分のデータ）毎に、画像データの先頭から管理番号を割り当て、各管理番号に対応する符号化データの格納先頭アドレスと該符号化データ量とを、管理番号順に格納できるような管理テーブルを作成する。
【００５４】
符号化部１０２や再符号化部１０９は処理中のデータの管理番号を保持し、該管理番号に基づいて、符号化データ格納時の先頭アドレスと符号化データ量とを管理テーブルに書き込む。このようにすれば、符号化部１０２と再符号化部１０９で処理した符号化データをランダムに格納したとしても、前記管理テーブルを管理番号順にアクセスし、その時読み出させる先頭アドレスと符号化データ量に基づいて、符号化データを第１メモリ１０４から読み出せば、画像の先頭から順番に符号化データを読み出すことができる。このような管理機構を設ければ、画像上で連続するデータをメモリ上で連続するように格納する必要性が無くなる。
【００５５】
図１０の概念図における転送フェーズ後の符号化フェーズは、これまで説明した２つの符号化フェーズ（図４、図７）とほとんど同じであり、第１のメモリ内における符号の格納状態が図１１に示した様に若干異なるだけである。よって、先の説明と本変形例は、３つのフェーズを繰り返して処理することに変わりは無い。
【００５６】
次に、本発明において特徴的な符号化処理を行なう為の、第２の基本構成の例（これまで説明した構成を第１の例という）を図２を用いて説明する。
【００５７】
図２は、第２の例における画像処理装置２００のブロック構成図である。
【００５８】
図１の画像処理装置１００と大きく異なる点は、最初に符号化を行なう符号化部が２つ並列に存在する点である。画像処理装置２００は、入力部２０１から入力される画像データを、第１の符号化部２０２と第２の符号化部２０５で並行して符号化し、互いに圧縮率の異なる２種類の符号化データを生成する。本例でも、符号化方式は公知のＪＰＥＧ符号化方式を用い、８×８画素単位に相当する画像データを直交変換し、後述する量子化ステップを用いた量子化、ハフマン符号化処理を行なうものである。
【００５９】
なお、本例では第１の符号化部２０２よりも、第２の符号化部２０５の方が適用する圧縮率を高く設定する場合について説明する。具体的には、第１の符号化部２０２における量子化ステップをＱ１、第２の符号化部２０５の量子化ステップをＱ２（＝２×Ｑ１）とする。
【００６０】
符号化部２０２から出力される符号化データは、第１のメモリ制御部２０３を経由して、第１のメモリ２０４に格納される。このとき、第１のカウンタ２０８は、符号化部２０２から出力される符号化データのデータ量をカウントし、これを保持すると共に、符号化シーケンス制御部２０９にも出力する。
【００６１】
一方、符号化部２０５で符号化された符号化データは、第２のメモリ制御部２０６を経由して、第２のメモリ２０７に格納される。このとき、第２のカウンタ２１０は、符号化部２０５から出力される符号化データのデータ量をカウントし、これを保持する。更に、後述する第２のメモリ２０７に格納している符号化データを第１のメモリ２０４に転送する時には、それと同時に上記カウント値を、第１のカウンタ２０８に転送する。
【００６２】
さて、第１のカウンタ２０８が符号化部２０２から出力される符号化データのデータ量をカウント中に、該カウント値がある設定値に達した時には、符号化シーケンス制御部２０９は、第１の例と同様、メモリ制御部２０３に対してメモリ２０４に格納されているデータを廃棄するよう制御信号を出す。
【００６３】
そして、符号化シーケンス制御部２０９は、第２のメモリ２０７に格納している符号化データを読み出して第１のメモリ２０４に転送し、第１のメモリ２０４に格納するよう、メモリ制御部２０６とメモリ制御部２０３に制御信号を出力する。この結果、第２のカウンタ２１０のカウント値が第１のカウンタ２０８に転送され、その値が第１のカウンタのカウント値としてロード（上書き）される。
【００６４】
要するに、上記第２のカウンタ２１０のカウント値は、第２のメモリ２０７に格納している符号化データのデータ量を表わしているので、そのカウント値と符号化データを、互いの対応付けが変わらない様に、そのまま第１のカウンタと第１のメモリへコピーしたと考えれば良い。
【００６５】
さらに、符号化シーケンス制御２０９は、第１の符号化部２０２および、第２の符号化部２０５に対して、今までよりも、符号化データが少なくなるような符号化を行なうように制御信号を出す。
【００６６】
例えば、第１の符号化部２０２、及び、第２の符号化部２０５における量子化ステップＳを２倍に切り替えす。この結果、第１の符号化部２０２は、その直前までの第２の符号化部２０５における量子化ステップＱ２（＝２×Ｑ１）を継承することになり、第２の符号化部２０５は更に大きな量子化ステップＱ２×２を用いて、次のオーバーフローに備えた更に高い圧縮率の符号化処理を行うことになる。
【００６７】
ここでは、量子化ステップの倍率比を２倍としたがこれに限らず、任意に設定できることは示すまでもない。切り替えられた各符号化部２０２、２０５から出力された符号化データは、それぞれ、対応するメモリ制御部２０３、２０６を経由して、対応するメモリ２０４、２０７に格納される。
【００６８】
そして、符号化シーケンス制御２０９は、メモリ制御部２０６に対し、既に第２のメモリ内に格納している符号化データを読み出して、再符号化部２１１にデータを送るよう制御信号を出す。再符号化部２１１は、図１の再符号化部１０９と同様にして符号化データの再符号化処理を行なう。
【００６９】
第３のカウンタ２１２は、再符号化部２１１が出力したデータ量をカウントするもので、再符号化処理を開始する直前にゼロにリセットされ、再符号化処理中の出力データ量をカウントする。このカウンタ２１２は、再符号化処理が終了した時点で、そこで得られたカウント値を第２のカウンタ２１０に転送する。
【００７０】
第２のカウンタ２１０は、上記転送されてきたデータ量カウント値を、第２のカウンタ２１０内に保持しているカウンタ値に加算することにより、再符号化処理中にメモリ２０７に格納した、符号化データと再符号化データの合計のデータ量を算出する。即ち、メモリ２０７に格納しているデータ量とカウンタ２１０のカウント値とが一致する。
【００７１】
再符号化処理の終了／未終了に関わらず、符号化するべき入力部２０１からの画像データが残っていれば、２つの符号化部２０２と２０５による符号化処理を継続して行なう。そして、カウンタ２０８のカウント値がある設定値に達したかどうかの監視は入力部２０１から入力される１ページ分の画像データの符号化処理（符号化、再符号化）が終わるまで繰り返され、上述した符号化と再符号化の処理は、ここで得られる検出結果に応じた制御の上で実行される。
【００７２】
上記図２の構成における処理のフローを表わすフローチャートを図１２に示す。
【００７３】
図２で説明したように符号化部が２つある場合は、図１２に示すフローチャートに基づいて１ページ分の画像データの符号化を行なう。なお、図１２の説明は、符号化部が１つの場合のフローチャートである図８とは、大半は類似しており、当業者であれば上記説明から本第２の例の特徴は十分に理解できるであろうから、符号化部１つの場合と同じように３つのフェーズで処理を説明する様にし、図８と異なる点を主に説明することとする。
【００７４】
上述した図８のフローと本例のフローとの一番大きな違いは、ステップＳ３１７の転送処理が、ステップＳ３０７とステップＳ３０９の間に移動していることである。要するに、符号化・再符号化フェーズと転送フェーズが入れ替わったと見なせば良い（ステップＳ３０７の符号化データの廃棄処理は例外である）。
【００７５】
ステップＳ３０１の符号化パラメータの初期設定では、第１の符号化部２０２に量子化ステップＱ１を、第２の符号化部２０５には量子化ステップＱ２（＝２×Ｑ１）を設定する。
【００７６】
符号化フェーズでは、ステップＳ８０１、Ｓ３０３、Ｓ３０５を繰り返し実行する。ステップＳ８０１とステップＳ３０５は符号化部が１つの場合と同じ処理であるが、ステップＳ３０３の符号化処理だけは図１３に示すように異なっている。
【００７７】
第１のメモリ２０４へ格納する符号化データは圧縮率が段階的に高くなるようにするため、最初に格納する符号化データは圧縮率が一番低い量子化ステップＱ１で符号化したデータを格納し、第２のメモリへ格納する符号化データは量子化ステップＱ２で符号化したデータを格納する。
【００７８】
第１のメモリ２０４へ格納中のデータ量が設定されている上限値をオーバーしたら（ステップＳ３０５）、直ちに、第１のメモリ２０４で保持していた符号化データを廃棄し（ステップＳ３０７）、第２のメモリ２０７で保持している圧縮率の高い符号化データを、第１のメモリ２０４へ転送する（ステップＳ３１７、図１４参照）。これにより、第１の例（図１）で説明した１回目の再符号化処理の終了を待たずに、速やかに、上限値をオーバーしない適切な２番目の候補の符号化データを第１のメモリ２０７内に格納出来る。これが、図１に対する、２つの符号器を持つ図２を適用することの最大の利点である。
【００７９】
本第２の例では、２つのメモリ２０４、２０７で同じ圧縮率の符号化データを持っていることが無駄という考え方なので、第２のメモリ２０７には、第１のメモリ２０４に格納する符号化データよりも圧縮率の高い符号化データを格納しておくようにしている。従って、それ以降の処理もこの考え方に基づき行われるものであり、第２のメモリ２０７内の符号化データを第１のメモリ２０４に転送する処理（転送フェーズ）が終了した後は、第２のメモリ２０７の符号化データを、更に１段階圧縮率の高い符号化データを保持する様に再符号化することとなる。
【００８０】
具体的には、まず図１５に示す様に、転送フェーズの次の符号化・再符号化フェーズでは、上記再符号化の前に、２つの符号化部２０２，２０５に適用される各量子化ステップＱ１、Ｑ２をそれぞれＱ２、Ｑ３へ変更し（ステップＳ３０９）、１ページの画像データの入力が終了せずに続いていれば（ステップＳ８０３）、後続の画像データは新たな量子化ステップが設定された２つの符号化部で該入力データを符号化して（ステップＳ３１１）、対応する各メモリ２０４，２０７へ格納する。そして、上記符号化処理と並行して第２のメモリに格納されている符号化データ（第１のメモリ２０４に転送したもの）は、第１のメモリ内の符号化データよりも１段階高い圧縮率の符号化データに変更するべく、再符号化部２１１にて量子化ステップＱ３を用いて符号化されたデータが得られる様な再符号化処理（Ｓ３１３）を行ない、再符号化データを第２のメモリ２０７に格納し直す。
【００８１】
なお、本第２の例でも、第１の例と同様、再符号化処理では、符号化データを一旦ハフマン復号した後の各量子化値に対して、これら値を２nで割った結果と同様の結果が出るビットシフト処理を施した後、再度ハフマン符号化を行なうことにより実現される。この方法は、ビットシフトのみで量子化ステップを変更する点と逆直交変換や再直交変換処理を行わない点で、高速な再符号化処理が可能である。
【００８２】
なお、本第２の例の様に符号化部が２つ有る場合には、図１５に示したように、第２のメモリ２０７に符号化データと再符号化データを混在して格納する状況が発生する。従って、前述したように、符号化データをある単位で区切って、ファイル或いはパケットとして管理することが、第２のメモリ２０７に対しても必要になる。その為には、例えば第１の例における変形例と同様の構成を設ければ良いであろう。
【００８３】
図１２において、再符号化処理の終了をステップＳ３１５で検知したら、また符号化フェーズ（ステップＳ８０１、Ｓ３０３）に移行する。なお、符号化・再符号化フェーズ後の符号化フェーズでは、図１６に示すように、２つのメモリ２０４，２０７が保持する符号化データは圧縮率が違うだけでなく、符号化データの混在の仕方（アドレス）もかなり違ってくる。従って、再度、第１のメモリ２０４のデータ量が設定値をオーバーした場合には、第２のメモリ２０７で保持されている符号化データ（▲６▼＋▲８▼の横縞の領域の符号）が第１のメモリ２０４へ転送される必要が出てくる。これらを考慮すると、第２のメモリ２０７だけでなく、第１のメモリ２０４でも符号化データをファイル或いはパケットとして管理する必要がある。よって、第１のメモリ２０４にも前述の管理テーブルを用いた管理機構が必要となる。
【００８４】
図１６に示された符号化フェーズの状態は、量子化ステップと符号化データの混在の仕方が、再符号化処理の前後で異なっていること以外は、初期状態の符号化フェーズ（図１３）と同じである。よって、符号化フェーズ、転送フェーズと符号化・再符号化フェーズを繰り返すことで、最終的に、１ページ分の画像データを設定した上限値以下に圧縮した符号化データを確実に第１のメモリ２０４に格納することが出来る。
【００８５】
なお、第１の例の説明とは、転送フェーズと符号化・再符号化フェーズの配置順が逆であることから、図８において転送処理後に行なっていた１ページ分の画像データの入力終了検知（ステップＳ８０５）は、符号化・再符号化フェーズで行なう１ページ分の画像データの入力終了検知（ステップＳ８０３）と、ほとんど同じタイミングになってしまう。また、２つの検知処理は、機能的にはステップＳ８０５と同じで、タイミング的にはステップＳ８０３と同じである、従って、これら２つのステップは、新たな１ページ分の画像データの入力終了を検知するステップとして統合し、ステップＳ１２０１と表記しておく。
【００８６】
以上説明した第１、第２の例では、第１のメモリと第２のメモリは物理的に別のメモリであるとして説明をしてきた。これは、２つのメモリに対するアクセスが独立したものとすることができるので有利なためであり、本発明の特徴となす。しかしながら、第１のメモリと第２のメモリを、物理的に別のメモリとしない場合も本発明の範疇に含まれる。物理的に１つのメモリ上に、前記第１のメモリと第２のメモリに相当する２つの領域を確保して、第１のメモリを第１のメモリ領域、第２のメモリを第２のメモリ領域と言い直して、これまでの説明を読み直せば、本発明は、１つのメモリでも実現できることが分かる。
【００８７】
また、１つのメモリで上記各例を実現する場合には、前記転送フェーズで説明したデータ転送処理のいくつかは不要となる。その詳細はその都度容易に想像できるので説明は省略するが、前記２つの領域を厳密に別けて使用する場合、物理的に２つのメモリを持つ時と同じようにデータ転送処理が必要であるが、２つの領域間で同じデータを共有することになれば、データ転送処理が不要になるだけでなく記憶容量の削減も図れる。
【００８８】
例えば、第２のメモリ領域で保持していた符号化データを、第１のメモリ領域へ転送する際、該符号化データが格納されている先頭アドレスとデータサイズの２つの情報を第２のメモリ制御部から第１のメモリ制御部へ転送するだけで、前記符号化データを転送したのと同じ効果が得られる。
【００８９】
前記符号化データを、ファイル形式やパケット形式で格納している場合は、メモリ制御部の間で転送する情報は少し増え、該符号化データに関連する管理テーブル情報を転送する必要がある。それでも、符号化データを転送するよりは、効率が良い。
【００９０】
さて、上述した画像処理装置によると、入力した画像データを符号化していく際に、目的とするサイズに越えるような場合であっても、その入力を継続しつつ目標とするサイズに収めるよう処理を継続することができるようになるが、本発明では、上記画像データの圧縮データの符号量の制御以外に、該画像データに付随する像域情報を符号化したデータの符号量の制御も行なうものである。
【００９１】
以下に説明する実施形態では、像域情報の符号化処理と符号化データの符号量の制御をどのように行なうかを説明する。
【００９２】
＜第１の実施形態＞
上述の画像処理装置に本発明を適用した第１の実施形態を図１７に示す。同図は図１に示した基本構成に本発明を適用したもので、図１の構成と同じ機能ブロックには、同一番号を付すことで、その説明は省略する。
【００９３】
イメージスキャナやページ記述言語レンダリングなどから入力部１０１を通して入力した画像データは、既に説明した処理方法に基づいて符号化と再符号化処理を繰り返して行ない、符号化データを設定した符号量以内に収める。
【００９４】
一方で、画像データは像域情報生成部１７０１に供給され、前述の像域情報を生成する。本実施形態では、スキャナ入力画像について説明しているので、画像データのみに基づいて像域情報を生成するが、ページ記述言語（ＰＤＬ）を展開・描画した画像の場合、該ＰＤＬ情報も参照して像域情報を生成すれば良い。なお、像域情報はスキャナ等の画像入力機器で生成することもある。その場合、前記像域情報も入力部１０１を通して入力され、像域情報生成部１７０１を素通りして、次のユニットへ送られる。
【００９５】
さて、像域情報生成部１７０１で生成する像域情報であるが、実施形態では、着目画素が文字・線画領域であるか中間調領域であるのか、及び、有彩色か無彩色なのかを示す情報を生成する。それぞれ１ビットで表現できるので、１画素について合計２ビットの像域情報（それぞれのビットは、像域情報を構成することになるので像域成分情報という）を生成することになる。
【００９６】
像域情報生成部１７０１の動作を簡単に説明すると、次の通りである。
【００９７】
先ず、文字・線画領域か中間調領域であるのかの判断であるが、文字・線画のの場合には背景に対してその輝度（或いは濃度）が急峻に変化する。一方、中間調領域にある場合、注目画素の輝度（或いは濃度）は隣接する画素に対して変化が小さい。従って、注目画素の輝度をＬｉ、左右の画素の輝度をＬi-1、Ｌi+1と定義したとき、
｜Ｌi−Ｌi-1｜＞Ｔ
又は、
｜Ｌi−Ｌi+1｜＞Ｔ
である場合に、注目画素は文字線画（のエッジ）にあると判断できる。尚、ここでの｜ｘ｜はｘの絶対値を示すものである。
【００９８】
なお、濃度が急峻に変化しているか否かを判断する式は上記のものに限らない。例えば、
｜２Ｌi−Ｌi-1−Ｌi+1｜＞Ｔ
を満たすかどうかで判断してもよいし、一次元方向のみではなく、２次元方向について判断するようにしても良い（但し、２次元で判断する場合には、像域情報生成部１７０１内には、複数ライン分の画像データを記憶するためのメモリを必要とする）。
【００９９】
一方、有彩色／無彩色の判断であるが、入力される画像データはスキャナより読み取られたものであるので、Ｒ、Ｇ、Ｂのデータ形式になっている。
【０１００】
無彩色というのは、ＲＧＢの各色成分が互いに同じ輝度である場合であるので、
Ｒ＝Ｇ＝Ｂ
なる関係を有する場合には無彩色として判断し、それを満たさない場合には有彩色と判断する。ただし、スキャナ装置が有するＣＣＤの精度も加味する必要があるので、実際は、
Ｂ−Δ＜Ｒ＜Ｂ＋Δ
Ｒ−Δ＜Ｇ＜Ｒ＋Δ
Ｇ−Δ＜Ｂ＜Ｇ＋Δ
の全てを満たすとき無彩色と判断し（Δは適当な小さい数値）、それ以外を有彩色と判断するようにしても良い。
【０１０１】
場合によっては、ＲＧＢ色空間を例えば輝度、色相、彩度（例えばＬａｂ表色空間）に変換し、その彩度が所定値以下の場合に無彩色、所定値を越える場合に有彩色と判断しても良いであろう。
【０１０２】
以上の如く、像域情報生成部１７０１は、入力された画像データから注目画素が文字・線画／中間調領域か、有彩色か無彩色かを示す２ビットの像域情報を生成し、出力する。
【０１０３】
図１７の説明に戻る。上記のようにして、生成した像域情報は、ブロック化ユニット１７０３にて、まとめて符号化するデータのサイズ、例えばＭ×Ｎのサイズ（従ってＭ×Ｎ×２ビット）へブロック化する。ブロックサイズは、３２×３２とするが、符号化効率を上げるため、それ以上、例えば６４×６４や１２８×１２８でも構わないし、必ずしも正方サイズである必要もない。それ故、Ｍ×Ｎサイズとした。
【０１０４】
ところで、像域情報を符号化する場合、通常の画像データの圧縮に利用するＪＰＥＧのような多値の非可逆圧縮は適さない。それ故、可逆圧縮であるＪＢＩＧ、或いはＰａｃｋＢｉｔｓ等のランレングス符号化を用いることとした。可逆符号化部１７０５では、該当するブロックの像域情報を、この可逆符号化する。
【０１０５】
符号化した像域情報は、第３のメモリ制御部１７０７を経由して、第３のメモリ１７０９に格納する。また、これと同時に、前記可逆符号化部１７０５から出力する符号量を第４のカウンタ１７１１が累積カウントしており（１ページの読み取りを開始する際にリセットされる）、その結果を符号化制御部１７１３に供給している。
【０１０６】
符号化制御部１７１３には、不図示のレジスタが設けられ、このレジスタに像域情報の目標符号量が予め設定されいる。そして、符号化制御部１７１３は、第４のカウンタ１７１１で計数されている符号量が、この目標値をオーバーしたか否かを監視していている。そして、目標値をオーバーしたと判断した場合、符号化制御部１７１３は、可逆符号化部１７０５及び可逆符号再符号化部１７０７にそれぞれに対して以下に示す指令を発すると共に、第４カウンタ１７１１をリセットする。
【０１０７】
先ず、可逆符号再符号部１７０７に対しては、第３のメモリ１７０９から符号化した像域データを読み出し再符号化するよう指令を発する。この結果、可逆符号再符号化部１７１５は、第３のメモリ１７０９から符号化されたブロック単位の像域情報を読出し、それを一旦復号し、ランレングスを高める処理を行い、再度符号化して、第３のメモリ１７０９に格納する。
【０１０８】
このランレングスを高める処理であるが、次の２通りを用意した。
処理Ｐ１：文字・線画／中間調画素の識別ビットが中間調画素を示している画素位置の、有彩色／無彩色の識別情報を全て有彩色に変更する。
処理Ｐ２：文字・線画／中間調画素の識別ビットを中間調画素を示すように変更する。
【０１０９】
符号化制御部１７１３は、或るページの像域情報を符号化している最中に、最初に目標値をオーバーすると判断した場合には、上記の処理Ｐ１を採用する。そして、この処理を行っても、目標値をオーバーすると判断した場合（２回目にオーバすると判断した場合）には、処理Ｐ２を用いて再度符号するようにした。
【０１１０】
有彩色／無彩色の識別情報を有彩色にするのは、色空間において有彩色空間が無彩色を含んでいるため、大きな問題にはならないからである。また、文字・線画／中間調の識別情報を中間調にすることも、同様の理由による。
【０１１１】
いずれにしても、かかる像域情報を変更することで、そのエントロピーが低下するため、ランレングス符号化後のデータ量は減少する。再符号化後の属性データは、メモリ１７０９に再び格納すると共に、その符号量を第５のカウンタ１７１７にてカウントする。そして、可逆符号再符号化部１７１５は、可逆符号化部１７０５によって既に符号化した全符号についてこの処理を行っていく。こうして、符号化制御部１７１３から指令があった時点で、第３のメモリ１７０９に格納されていた符号データ（可逆符号化部１７０５で符号化されたデータ）に対する再符号化及び格納を行う。このときの符号量は、第５のカウンタ１７１５で計数しており、その計数結果が第４のカウンタに加算される。
【０１１２】
一方、可逆符号化部１７０５は、符号化符号化制御部１７１３から目標値をオーバーした場合に発した命令に従い、注目ブロック以降について、上記の可逆符号再符号化部１７１５と同じ処理を開始する。すなわち、或るページの符号化を行って最初にオーバーすると判断された場合には、先に示した処理Ｐ１でもってブロック化部１７０３からのブロックについてランレングスを高める処理を行い、その結果を符号化して第３のメモリ１７０９に格納する。この間、可逆符号化部１７０５で符号化された符号量は、第４カウンタ（オーバーすると判断された時点でリセットされる）で計数回数を開始するが、先に説明したように、可逆符号再符号化部１７１５でも再符号化が行われた際の、符号量（第５のカウンタ１７１７）と加算されることになるので、結果的に、１ページについての属性情報について、処理Ｐ１で行った結果と同様の符号量を第４カウンタ１７１１が計数することになる。
【０１１３】
こうして、処理Ｐ１に切り換わって像域情報の符号が行われている最中に、再度目標値をオーバーすると判断した場合、符号化制御部１７１３は、第４カウンタ１７１１をリセットすると共に、可逆符号化部１７０５及び可逆符号再符号化部１７１５に対して、先に示した処理Ｐ２に切り換わるよう指令を発する。
【０１１４】
以上をまとめると、次のようになる。
【０１１５】
符号化制御部１７１３は、可逆符号化部１７０５における像域情報の符号化量を監視していて、その符号量が目標値をオーバーすると判断した場合、可逆符号化部１７０５及び可逆符号再符号化部１７１５に対して処理Ｐ１で行うように設定し、第４カウンタ１７１１をリセットする。第４カウンタ１７１１は、これ以降、可逆符号化部１７０５による符号量及び第５カウンタ１７１７のカウント値を加算していく。従って、可逆符号再符号化部１７１５による再符号化が完了した時点では、１つの画像（或いは１ページの画像）について最初から処理Ｐ１で行ったときと実質的に同じ符号量を計数することとなる。また、第３のメモリ１７０９には処理Ｐ１での符号化データが格納されることになる。
【０１１６】
この処理Ｐ１による処理中に、再度、目標値をオーバーすると判断した場合、今度は、可逆符号化部１７０５及び可逆符号再符号化部１７１５に対して処理Ｐ２で行うように設定し、第４カウンタ１７１１及び第５カウンタ１７１７をリセットするようにする。
【０１１７】
以上の結果、入力部１０１からの画像データの入力を継続しつつ、目標値（目標サイズ）以内に像域情報を可逆符号化させることができるようになる。
【０１１８】
次に、本第１の実施形態の処理内容を表わすフローチャートを図１８に示し、該フローチャートを用いて説明を行なう。本実施形態の処理は、上述したように、大きく２つの処理に分かれる。１つは可逆符号化処理、もう１つは再符号化処理である。
【０１１９】
符号化処理は、ステップＳ１８０５の像域情報変換処理とステップＳ１８０７の可逆符号化処理とからなり、再符号化処理は、ステップＳ１８１５の復号化処理と、ステップＳ１８１７の像域情報変換処理、それにステップＳ１８１９の再符号化処理とからなる。
【０１２０】
その他のステップは、Ｓ１８１３の像域情報変更処理の変更を除くと、条件分岐と開始及び終了ステップである。
【０１２１】
まず、ステップＳ１８０１から、像域情報の符号化処理を開始する。次のステップＳ１８０３で、画像１ページに対する像域情報の入力が全て終了しているかどうかを検知し、終了していればステップＳ１８２１へ行き、終了していない場合、すなわち、像域情報の入力がある場合には、ステップＳ１８０５の像域情報変換処理を行なう。
【０１２２】
再符号化処理がまだ一度も起動していない初期状態では、像域変換処理では何も処理せず、入力された像域情報をそのまま次のステップＳ１８０７の可逆符号化処理で符号化する。
【０１２３】
次のステップＳ１８０９では、再符号化処理中であるかどうかを判定し、再符号化処理中であれば、前記ステップＳ１８１５〜Ｓ１８１９から成る再符号化処理を行なうが、再符号化処理中でなければ、ステップＳ１８１１へ行き、符号化したデータ（符号量）が設定値をオーバーしたかどうかを判定する。
【０１２４】
オーバーしていなければ、ステップＳ１８０３に戻り、符号化処理を繰り返し、オーバーしていれば、像域情報変換処理における処理内容を変更する。該変更により、ステップＳ１８０５、Ｓ１８１７における像域変換処理の内容が変わる。具体的には、初期状態では、処理Ｐ１、すなわち、入力された像域情報中の、文字・線画／中間調の識別情報が中間調であると判断された画素位置の、有彩色／無彩色の識別情報を全て有彩色とする。
【０１２５】
この像域情報変換処理内容の変更後は、再符号化処理を行なう。再符号化処理では、ステップＳ１８１５にて、符号化した像域情報を復号化処理して符号化前のデータに戻す。次のステップＳ１８１７にて、前記像域情報変換処理を行ない、上記像域情報変更処理を行い、次のステップＳ１８１９にて、変換した像域情報を再び可逆符号化する。
【０１２６】
上記再符号化処理が終わったら、ステップＳ１８０３に戻り、像域情報の入力があれば、それを符号化処理する。符号量が一度でも設定値をオーバーすると、像域情報変換処理内容が変更され、ステップＳ１８０５の像域情報変換処理にて、処理Ｐ１に置き換えられた後に、ステップＳ１８０７にて、可逆符号化される。
【０１２７】
こうして、処理Ｐ１に置き換わった後に、再び、ステップＳ１８１１で符号量が目標値をオーバーしたと判断した場合には、ステップＳ１８１３で、ステップＳ１８０５及びＳ１８１７における像域変更を処理Ｐ２に変更するように設定する。
【０１２８】
いずれにしても、像域情報の入力が全て終了し、且つ、再符号化処理もしていなければ、ステップＳ１８２３へ移り、像域情報の符号化処理を終了する。
【０１２９】
以上説明したように、本第１の実施形態によれば、１つ、或いは１ページの画像データの入力を中断したり、再入力することなく、目標サイズ以内に画像データを符号化させると共に、その画像の像域情報についても目標サイズ以内に可逆符号化させることができるようになる。
【０１３０】
実施形態における可逆符号化部及び可逆符号再符号化部がｐａｃｋｂｉｔｓ符号化を採用した場合の例を以下に説明する。
【０１３１】
ここでは、１画素あたり２ビットの像域情報に、６ビットデータ“００００００”を付加して８ビット化した後、可逆符号としてＰａｃｋｂｉｔｓ符号化を行なった場合の、本実施形態における具体的な処理内容を図１９を用いて説明する。
【０１３２】
Ｐａｃｋｂｉｔｓ符号化する前の８ビットデータは、図１９（ａ）に示すように上位６ビットは全て０で、下位２ビットの上位側に、対応する画素データが文字・線画／中間調を識別するためのフラグ、下位側には有彩色／無彩色を表わすフラグが格納されているものとする。よって、該８ビットデータが取り得る値は、０以上３以下の値である。また、説明を簡単にするため、像域情報生成部１７０１からは１次元の像域情報が出力されるものとして説明する。
【０１３３】
像域情報生成部１７０１からは、上記８ビットのデータが画素単位で出力される。具体的な出力データとして、図１９（ｂ）に示すデータを考える。
【０１３４】
これをＰａｃｋｂｉｔｓ符号化すると図１９（ｃ）に示すデータに圧縮される。圧縮後のデータで負の値は連続するデータの個数を表わし、非連続データの個数は正の値で表わしている。これらは長さ情報と言うもので、該長さ情報のサインビットから連続データが続くのか、非連続データが続くのかを判別することが出来るようになっている。圧縮後の各データは（ｂ）と同じく８ビット（１バイト）である。１バイトの長さ情報で、表わすことができる最大値は２５５の半分の約１２８であり、長さ情報がそれ以下の場合は１組の長さ情報とそれに続く像域フラグデータ群で符号化でき、それを超える場合は複数の組の、長さ情報＋像域フラグデータ群、に分けて符号化される。
【０１３５】
図１９（ｃ）の圧縮データを詳しく見てみることにする。最初の長さ情報「−４」はマイナスの値なので、上述したように連続データの連続個数を表わし、長さ情報直後の像域フラグデータ「１」が４つ続くことを表わしている。
【０１３６】
次のデータ「４」はまた長さ情報であるが、今度はプラスの値なので非連続データが４つ続くことを示している。よって、前記「４」に続く４つのデータ「２，３，２，３」が非連続データを表わす。図１９（ｃ）では、長さ情報と像域フラグデータとが区別し易いように、プラスの長さ情報のみ下線を引いている。
【０１３７】
上記非連続データの次の「−５」は又、連続データの長さ情報で、該長さ情報直後の像域フラグデータ「２」が５つ続くことを表わしている。次の下線付きのデータ「３」は非連続データの長さ情報で、後続する３つのデータ「１，０，１」が像域フラグデータであり、さらに次の「−６，０」は、データ「０」が６個連続することを示している。
【０１３８】
上記圧縮データを可逆符号再符号化部１７１５で再符号化処理するとどのようになるのかを、図１９（ｄ）（ｅ）を用いて説明する。ここで説明を簡単にするため、再符号化処理において、有彩色・無彩色フラグのビットを「１」に固定することで、すべて有彩色にしてしまう場合について説明する。
【０１３９】
符号化された像域データは一旦復号され、図１９（ｂ）のデータに戻された後、上記フラグデータの置き換えが行なわれることで、図１９（ｄ）のデータに変換される。これを再び、Ｐａｃｋｂｉｔｓ符号化すると、同図（ｅ）の符号化データが得られる。再符号化前は１５バイトの符号化データであったのに対し、再符号化後には６バイトにまで減少することが解かる。
【０１４０】
上記の再符号化処理を行なったにもかかわらず、全符号量の計数値が符号化制御部１７１３内のレジスタに設定された目標値を再びオーバーした場合には、前記再符号化処理が終了していれば、直ちに次の新たな再符号化処理を開始する。前記再符号化処理が終了していなければ、該再符号化処理が終了後、直ちに次の新たな再符号化処理を開始する。
【０１４１】
新たな再符号化処理では、残りの１ビットの像域フラグも“１”に置き換える。これにより、すべての像域フラグデータ（８ビット）の値は“３”となり、データのバイト数をＮとすると、符号化後のデータ量はおよそ（２Ｎ／１２８）＋２バイトとなる。
【０１４２】
これは、連続データの個数が１２８個を超えるたびに、あらたな２バイト１組の符号化データ（長さ情報と連続データ）が増えるためである。
【０１４３】
Ｐａｃｋｂｉｔｓの符号化回路や復号回路それにデータ変換回路はそれぞれ公知の技術であるため、個別の回路構成についての説明は省略する。
【０１４４】
なお、上記実施形態では、説明では簡単化のため、各画素の像域フラグを２ビットとして説明したが、前述したように像域フラグとして他の情報を付加させるようにしてもよい。
【０１４５】
理論上、像域情報を変換する処理は、像域の種別としてＮビットであれば２N個存在することになる。但し、変換する毎に、圧縮率が高くなる必要がある。いずれにしても、像域情報のビット数が多ければ多いほど再符号化処理の回数を増やすことができ、符号量を多段階で制御することができる。
【０１４６】
上述したように像域情報データの可逆符号化処理は、画像データの圧縮符号化処理とは独立に制御され、それぞれに目標符号量以内のデータに収められる。
【０１４７】
符号化された２種類のデータは、外部に接続されるネットワーク機器、画像出力装置や大容量記憶装置等へ出力する際に多重化する。該多重化を考慮して、前記２種類のデータを符号化処理する単位を同じサイズに合わせておき、１単位を符号化して生成される符号化データを１つのパケットあるいはファイルとして管理・格納する。多重化する際に、画像位置が同じ２種類のパケットデータを、例えば画像データ・像域データの順に連結して、１パケット化し、外部へ出力する。
【０１４８】
前記２つの符号化処理は独立に制御されるので、画像データの圧縮符号化処理部が他の構成であっても構わない。よって、像域情報データを可逆符号化処理するユニット１７０１〜１７１７を前記図２の構成に対して付加しても、同じように処理することが可能である。その構成を図２０に示しておくが、ユニット１７０１〜１７１７の動作は図１７とまったく同じであり、画像データ圧縮部分の動作も図２の動作とまったく同じである。
【０１４９】
＜第１の実施形態の変形例＞
上記実施形態では、像域成分情報の２ビットは、一方が文字・線画／中間調の識別ビット、他方が有彩色／無彩色のビットとし、それらを１つの値として０〜３の値を持つものとして扱った。しかしながら、文字・線画／中間調の識別情報と、有彩色／無彩色の識別情報は、本来は独立した情報である。そこで、文字・線画／中間調の識別ビットで構成されるブロックと、有彩色／無彩色の識別ビットで構成されるブロックを独立させ、それぞれ独立して符号化するようにしても良いであろう。この結果、それぞれのブロック内の各ビットは同じ種類のビットのみで構成されることになり、最初の段階で圧縮効率を高くできるようになり、その結果、像域情報の一部のビットを固定値に変換する確率を低くして、原像域情報のまま圧縮符号化できる確率を高くできる。
【０１５０】
＜第２の実施形態＞
第２の実施形態では、像域情報のビット数が前記第１の実施形態と同じでも、再符号化処理の回数を増やせて、符号量を細かく制御することが出来る処理方法について説明する。本実施形態の構成も前記第１の実施形態と同じであり、違うのは、可逆符号化部１７０５と可逆符号再符号化部１７１５における像域フラグデータの圧縮方法である。
【０１５１】
前記第１の実施形態では、像域フラグデータを１ビットずつ固定値に置き換えるものであったが、本第２の実施形態では、状態数を縮退させる。例えば、２ビットの像域フラグでは、４状態を表わすことができるが、これを１回目の再符号化処理で３状態に縮退させ、２回目の再符号化処理で２状態に縮退させることで、符号化前の情報エントロピーを減らし、符号化後のデータ量（符号量）を細かく減らしていくものである。
【０１５２】
状態数という言葉を用いて、前記第１の実施形態を表現すると、像域情報を再符号化するごとに状態数を半分に減らす、と言うことが出来る。
【０１５３】
１回の再符号化処理で、上記第１の実施形態では実質的に状態数を半分に減らすのに対し、本実施形態は状態数を１つずつ減らすわけであるから、符号量を細かく減らせるのは当然である。
【０１５４】
本第２の実施形態の処理結果を図２１（ａ）乃至（ｅ）を用いて説明する。
【０１５５】
同図（ａ）は、図１９（ｂ）に示した像域フラグデータと同じ、２ビットの４状態の全てが存在するデータである。該４状態の定義は、次のようにする。
（１）有彩色の文字線画部（データ「３」に対応）
（２）無彩色の文字線画部（データ「２」に対応）
（３）有彩色の中間調（データ「１」に対応、有彩色の画像部とも言う）
（４）無彩色の中間調（データ「０」に対応、無彩色の画像部とも言う）
本第２の実施形態では、１回目の再符号化処理で、上記４状態の内、（３）有彩色の中間調と、（４）無彩色の中間調の２状態を合体して１つの状態（３'）中間調に縮退させる。これにより、以下の３つの状態となる。これは、前記処理Ｐ１に対応する。
（１）有彩色の文字部
（２）無彩色の文字部、
（３'）中間調
具体的には、データ「０」を「１」に置き換えることで、上記状態の縮退を行なう。状態縮退後のデータは図２１（ｂ）に示すデータに変わる。これをＰａｃｋｂｉｔｓ符号化すると図２１（ｃ）に示す符号化データになる。再符号化前の符号化データ図１９（ｃ）よりも多少符号量が少なくなっていることが解かる。
【０１５６】
２回目の再符号化処理では、（１）有彩色の文字部と（２）無彩色の文字部、の２状態を合体して１つの状態（１'）文字部に縮退させる。これにより、以下の２状態となる。
（１'）文字部
（３'）非文字部
今度は、データ「２」を「３」に置き換えることで、上記状態の縮退を行なう。状態縮退後のデータは図２１（ｄ）に示すデータに変わる。このデータは図１９（ｄ）のデータと同じである。これをＰａｃｋｂｉｔｓ符号化した符号化データ図２１（ｅ）は当然図１９（ｅ）と同じ符号化データになる。
【０１５７】
第１の実施形態では、再符号化前の１５バイトのデータが１回の再符号化で６バイトまで減少したが、本実施形態では、１回目の再符号化で１１バイトに減少し、２回目の再符号化でやっと６バイトに減少する。結局、第２の実施形態では、第１の実施形態では得られない細かく変化して減少する符号量を得ることが出来るので、目標符号量に近い像域フラグの圧縮データを得ることができる。
【０１５８】
＜適用例＞
上記第１の実施形態及びその変形例、更には第２の実施形態では、イメージスキャナから画像を読み取る装置を例にし、その装置の機能動作について説明した。そして、その機能のほとんど（符号化処理も含む）は、上述した様にコンピュータプログラムによって実現できる。
【０１５９】
従って、本発明はパーソナルコンピュータ等の汎用情報処理装置上で動作するアプリケーションプログラムに適用しても構わない。アプリケーションプログラムに適用する場合には、圧縮元となる画像ファイルをユーザに指定させると共に、目標サイズをユーザに選択させる等のＧＵＩを設ければ良いであろう。このときの目標値は、ユーザーが任意に設定できるものとするが、数値での設定はわかりずらいので、原稿サイズと画質（高中低等）を加味した直感的に分かりやすいメニューから選択させることで、決定するようにすれば良いであろう。
【０１６０】
また、符号化部の符号化パラメータとして量子化ステップを例にして説明したが、圧縮率の異なるデータが混在した際に、それらの間での画質が違和感が発生しないようにする限りは、他のパラメータを用いても良い。但し、例えば、図１の構成においては、再符号化部１０９からの再度符号化するデータが、パラメータ変更後の符号化部１０２からの符号化データと実質的に同じにするには、上記実施形態に示す如く、量子化ステップを増加する手法が好ましい。
【０１６１】
また、上記の通り、本発明は、汎用装置上で動作するアプリケーションプログラムによって実現できるものであるので、本発明はコンピュータプログラムをも含むものである。また、コンピュータプログラムは、通常、フロッピーディスクやＣＤＲＯＭ等の記憶媒体を装置にセットしてコピー或いはインストールことで行われるので、かかる記憶媒体も本発明の範疇に当然に含まれる。
【０１６２】
また、実施形態では、スキャナから画像データを入力するものとして説明したが、ホストコンピュータ上で動作するプリンタドライバに適用しても良い。プリンタドライバに適用する場合には、上位処理（アプリケーション等）から印刷対象のデータを受信したときに、その時点で、そのデータが中間調画像か、文字・線画かは勿論は判別できるので、像域情報生成処理にかかる構成を省くか、或いはより簡素なものとすることができる。
【０１６３】
また、本発明は、コンピュータプログラムと適当なハードウェア（符号化回路等）の組み合わせにも適用できる。
【０１６４】
以上説明したように本第１、第２の実施形態によれば、可逆符号化した像域情報を復号する復号化手段と、像域情報を該像域情報の情報エントロピーが少なくなるように該像域情報の一部を書き換え、或いは削除する像域情報変換手段と、前記復号化手段で復号した像域情報を前記像域情報変換手段で変換した該像域情報を再び可逆符号化する再符号化手段と、前記情報変換手段を備えた可逆符号化手段と、少なくとも１ページ分の画像データに付随する像域情報を符号化したデータを格納することが可能な格納手段とを有し、
前記符号化データの量に応じて、前記可逆変換手段が備えた像域情報変換手段と、再符号化手段の前段にある像域情報変換手段の双方を制御することにより、１ページ分の像域情報を所望の符号化データ量に収めることができる。
【０１６５】
＜第３の実施形態＞
本第３の実施形態を説明する。本第３の実施形態は、先に説明した第１の実施形態とほぼ同様の動作を行うが、その構造が異なる。図２２はそのブロック構成図である。図１と同符号の構成要素については、その動作（画像データの符号化処理）が同じであるので、その説明は省略し、以下、本第３の実施形態における像域情報の符号化部分について説明する。
【０１６６】
イメージスキャナやページ記述言語レンダリング等から入力部１０１を介して入力した画像データ（多値カラー画像データ）は、符号化部１０２に供給されると共に像域情報生成部２２０１にも供給される。尚、上記の如く、符号化部１０２以降は図１と同様であるので、その説明は省略する。
【０１６７】
像域情報生成部２２０１では、入力した画像データから像域情報を生成する。入力対象がスキャナの場合には、先に説明した第１の実施形態における像域情報生成部１７０１と同様の処理を行えば良いし、ＰＤＬレンダリングからの場合にはＰＤＬレンダリングでイメージ展開する際に各画素毎に像域情報が判明しているので、その情報を活用すればよいであろう。
【０１６８】
生成された像域情報はブロック化ユニット２２０２において、まとめて符号化するデータサイズ、例えばＭ×Ｎのサイズへブロック化する。
【０１６９】
画像データの圧縮に利用するＪＰＥＧのような多値の非可逆圧縮は、２値データの集まりである像域情報の圧縮に用いることに不都合であるので、可逆圧縮であるＪＢＩＧ或いはＰａｃｋＢｉｔｓ等のランレングス符号化を用いて、可逆符号化部２２０３にて可逆符号を行う。
【０１７０】
可逆符号した像域情報は、メモリ制御部２２０４を経由して、第１のメモリ１０４に格納される。
【０１７１】
図２７は、符号化の初期状態におけるメモリの状態を示している。図４と異なるのは、図示の如く、像域情報の記憶エリアが設けられている点である。符号化された像域情報は、メモリ制御部２２０４を経由して、この記憶エリアに順次、格納されていく。
【０１７２】
先に説明をした通り、符号化シーケンス制御部１０８では、第１のカウンタ１０７のカウント値がある設定値に達したかどうかを検出し、その設定値に達したことを検出すると所定の制御信号を出力し、符号化部１０２に対して今までより、高い圧縮率で画像データに対して、符号化を行なうよう制御する。
【０１７３】
そして、本第３の実施形態では、それと同時に符号化シーケンス制御部１０８は、上述の画像データの再符号化のタイミングに同期して、像域情報の再符号化の指示を符号化制御部２２０５に指示する。
【０１７４】
符号化制御部２２０５は、第１のメモリ１０４から符号化した像域データを読み出し、該データを可逆符号再符号化部２２０６に送るよう、メモリ制御部２２０４へ制御信号を出力する。
【０１７５】
可逆符号再符号化部２２０６は、符号化データを受け取るとそれを復号し、複数の属性フラグデータの一部を廃棄するか固定値に置き換えた後、再び可逆符号化を行なう。属性フラグの一部を固定値に置き換えた場合でも情報エントロピーが低下するため、ランレングス符号化後のデータ量は減少する。再符号化後の属性データは、第１のメモリ１０４に再び格納する。
【０１７６】
一方、符号化制御部２２０５は、可逆符号再符号部２２０６において情報量を減らした属性フラグデータと、同じ情報の属性フラグデータを符号化するよう、可逆符号化部２２０３が備えた像域情報変換処理部に対して属性フラグの一部を廃棄、或いは固定値に置き換えるよう制御信号を送り、符号化処理を継続させる。
【０１７７】
前記再符号化する像域フラグデータが無くなり再符号化処理が終了するまで続ける。
【０１７８】
符号化シーケンス制御部１０８が、カウンタ１０７のカウント値がある設定値に達したかどうかを検出し、目標値をオーバーするたびに、画像データの再符号化を行うたびに、それと同期して像域フラグの廃棄する属性フラグを増やすことで、像域データの符号量を段階的に減らすことができ、該像域データの符号量を目標値以内に収めることが可能となる。
【０１７９】
次に、本第３の実施形態の処理内容（像域情報の符号化処理）を図２３のフローチャートに従って説明する。本第３の実施形態の処理は、上述したように、大きく２つの処理に分かれる。１つは可逆符号化処理、もう１つは再符号化処理である。
【０１８０】
符号化処理は、ステップＳ２３０５の像域情報変換処理とステップＳ２３０７の可逆符号化処理で実現する。また、再符号化処理は、ステップＳ２３１５の復号化処理と、ステップＳ２３１７の像域情報変換処理、それにステップＳ２３１９の再符号化処理で実現する。
【０１８１】
その他のステップは、Ｓ２３１３の像域情報変更処理の変更を除くと、条件分岐と開始及び終了ステップである。
【０１８２】
まず、ステップＳ２３０１から、像域情報の符号化処理を開始する。次のステップＳ２３０３で、画像１ページに対する像域情報の入力が全て終了しているかどうかを検知し、終了していればステップＳ２３２１へ行き、終了していない場合、すなわち、像域情報の入力がある場合には、ステップＳ２３０５の像域情報変換処理を行なう。
【０１８３】
再符号化処理がまだ一度も起動していない初期状態では、像域変換処理では何も処理せず、入力された像域情報をそのまま次のステップＳ２３０７の可逆符号化処理で符号化する。
【０１８４】
次のステップＳ２３０９では、再符号化処理中であるかどうかを判定し、再符号化処理中であれば、ステップＳ２３１５〜Ｓ２３１９から成る再符号化処理を行なうが、再符号化処理中でなければ、ステップＳ２３１１へ進み、画像データの再符号化が行われるのかどうかを判定する。
【０１８５】
符号化シーケンス制御部１０８から所定の目標値に対して符号化データが、オーバーしたという制御信号を受けていなければ、ステップＳ２３０３に戻り、符号化処理を繰り返し、オーバーしたという制御信号を受ければ、像域情報変換処理における処理内容を変更する。該変更により、ステップＳ２３０５、Ｓ２３１７における像域変換処理の内容が変わる。具体的には、初期状態では、入力された像域情報を１ビットも無効にすることなく全て符号化してきた。すなわち、像域変換処理では何もしていなかったが、処理内容を変更後は、少なくとも像域情報中の１ビットを廃棄するか固定値に置き換えると言った処理を、前記像域変換処理で行なう。例えば、文字線画を示すビットを全て中間調であることを示すビットに変換する。この後、処理内容を変更するごとに、廃棄または固定値に置き換える像域フラグのビット数を増やしていく（ラン長が長くなり易い状態にする）。
【０１８６】
該像域情報変換処理内容の変更後は、再符号化処理を行なう。再符号化処理では、ステップＳ２３１５にて、符号化した像域情報を復号化処理して符号化前のデータに戻す。次のステップＳ２３１７にて、前記像域情報変換処理を行ない、像域情報の一部を廃棄または固定値に置き換える。そして、次のステップＳ２３１９にて、変換した像域情報を再び可逆符号化する。
【０１８７】
上記再符号化処理が終わったら、ステップＳ２３０３に戻り、像域情報の入力があれば、それを符号化処理する。画像データの符号量が一度でも設定値をオーバーし再符号化が開始されると、それと連動して、像域情報変換処理内容が変更され、ステップＳ２３０５の像域情報変換処理にて、一部の像域フラグデータが廃棄または固定値に置き換えられた後に、ステップＳ２３０７にて、可逆符号化される。
【０１８８】
像域情報の入力が全て終了しても、再符号化処理が継続中であれば、ステップＳ２３０３からステップＳ２３２１へ移り、そこで、再符号化処理中であることを判定して、前記ステップＳ２３１５〜Ｓ２３１９から成る再符号化処理を行なう。
【０１８９】
像域情報の入力が全て終了し、且つ、再符号化処理もしていなければ、ステップＳ２３２３へ移り、像域情報の符号化処理を終了する。
【０１９０】
また、再度、画像データの符号量が一度でも設定値をオーバーした場合には、今度は、像域情報中の有彩色／無彩色を示すビットを全て有彩色に変更する。
【０１９１】
次に、１画素あたり２ビットの像域情報に６ビットデータ“００００００”を付加して８ビット化した後、可逆符号としてＰａ ｃ ｋｂｉｔ ｓ符号化を行なった場合の、本第３の実施形態における具体的な処理内容を、図２４を用いてさらに詳しく説明する。
【０１９２】
Ｐ ａ ｃ ｋ ｂｉｔ ｓ符号化する前の８ビットデータは、図２４（ａ）に示すように上位６ビットは全て０で、下位２ビットの上位側に、対応する画素データが文字線画領域か、中間調かフラグビット、下位側には有彩色か無彩色を表わすフラグビットが割り当てられている。よって、該８ビットデータが取り得る値は、０以上３以下の値である。
【０１９３】
像域情報生成部２２０１からは、上記８ビットのデータが画素単位で出力されるものとする。具体的な出力データとして、図２４（ｂ）に示すデータを考える。
【０１９４】
これをｐａｃｋｂｉｔｓ符号化すると同図（ｃ）に示すデータに圧縮される。圧縮後のデータで負の値は連続するデータの個数を表わし、非連続データの個数は正の値で表わしている。これらは長さ情報と言うもので、該長さ情報のサインビットから連続データが続くのか、非連続データが続くのかを判別することが出来るようになっている。圧縮後の各データは同図（ｂ）と同じく８ビット（１バイト）である。１バイトの長さ情報で、表わすことができる最大値は２５５の半分の約１２８であり、長さ情報がそれ以下の場合は１組の長さ情報とそれに続く像域フラグデータ群で符号化でき、それを超える場合は複数の組の、長さ情報＋像域フラグデータ群、に分けて符号化される。
【０１９５】
図２４（ｃ）の圧縮データを詳しく見てみることにする。最初の長さ情報“−４”はマイナスの値なので、上述したように連続データの連続個数を表わし、長さ情報直後の像域フラグデータ“１”が４つ続くことを表わしている。
【０１９６】
次のデータ“４”はまた長さ情報であるが、今度はプラスの値なので非連続データが４つ続くことを示している。よって、前記“４”に続く４つのデータ“２，３，２，３”が非連続データを表わす。同図（ｃ）では、長さ情報と像域フラグデータとが区別し易いように、プラスの長さ情報のみ下線を引いている。
【０１９７】
上記非連続データの次の“−５”は又、連続データの長さ情報で、該長さ情報直後の像域フラグデータ“２”が５つ続くことを表わしている。次の下線付きのデータ“３”は非連続データの長さ情報で、後続する３つのデータ“１，０，１”が像域フラグデータであり、さらに次の“−６，０”は、データ“０”が６個連続することを示している。
【０１９８】
上記圧縮データを可逆符号再符号化部１７１５で再符号化処理するとどのようになるのかを、図２４（ｄ）（ｅ）を用いて説明する。ここでは、再符号化処理において、有彩色・無彩色フラグを“１”に固定してすべて有彩色にしてしまう例を説明する。
【０１９９】
符号化された像域データは一旦復号され、同図（ｂ）のデータに戻された後、上記フラグデータの置き換えが行なわれ、同図（ｄ）のデータに変換される。そして、変換されたデータを再びＰａｃｋｂｉｔｓ符号化することによって、同図（ｅ）の符号化データが得られる。再符号化前の１５バイトの符号化データが再符号化後には６バイトに減少することが解かる。
【０２００】
上記の再符号化処理を行なった後にも、画像データの符号化において、全符号量の計数値が設定された目標値を再びオーバーし、画像データの再符号化を行う場合には、符号化シーケンス制御部１０８から像域データも再符号化する旨の制御信号を受け、前記再符号化処理が終了していれば、直ちに次の新たな再符号化処理を開始する。前記再符号化処理が終了していなければ、該再符号化処理が終了後、直ちに次の新たな再符号化処理を開始する。
【０２０１】
新たな再符号化処理では、残りの１ビットの像域フラグも“１”に置き換える。これにより、すべての像域フラグデータ（８ビット）の値は“３”となり、データのバイト数をＮとすると、符号化後のデータ量はおよそ（２Ｎ／１２８）＋２バイトとなる。
【０２０２】
これは、連続データの個数が１２８個を超えるたびに、あらたな２バイト１組の符号化データ（長さ情報と連続データ）が増えるためである。
【０２０３】
Ｐａｃｋｂｉｔｓの符号化回路や復号回路それにデータ変換回路はそれぞれ公知の技術であるため、僻別の拘路構成についての説明は省略する。
【０２０４】
上記説明では簡単化のため、各画素の像域フラグを２ビットとして説明したが、前述したように像域フラグとして他の情報もいくつかある。上記再符号化処理では、２ビットの像域フラグデータでは最大２回の再符号化、４ビットの像域フラグデータでは最大４回の再符号化処理が可能であり、像域フラグのビット数が多い程、再符号化処理の回数を増やすことができ、符号量を多段階で制御することができる。
【０２０５】
上述したように像域フラグデータの可逆符号化処理は、画像データの圧縮符号化処理とは独立に制御され、それぞれに目標符号量以内のデータに収められる。
【０２０６】
符号化された２種類のデータは、外部に接続されるネットワーク機器、画像出力装置や大容量記憶装置等へ出力する際に多重化する。該多重化を考慮して、前記２種類のデータを符号化処理する単位を同じサイズに合わせておき、１単位を符号化して生成される符号化データを１つのパケットあるいはファイルとして管理・格納する。多重化する際に、画像位置が同じ２種類のパケットデータを、例えば画像データ・像域データの順に連結して、１パケット化し、外部へ出力する。
【０２０７】
前記２つの符号化処理は独立に制御されるので、画像データの圧縮符号化処理部が他の構成であっても構わない。よって、像域フラグデータを可逆符号化処理するユニット２２０１〜２２０６を前記図２の構成に対して付加しても、同じように処理することが可能である。その構成を図２５に示しておくが、ユニット２２０１〜２２０６の動作は図２２とまったく同じであり、画像データ圧縮部分の動作も図２の動作とまったく同じである。
【０２０８】
＜第４の実施形態＞
第４の実施形態では、像域情報のビット数が第３の実施形態と同じでも、再符号化処理の回数を増やせて、符号量を細かく制御することが出来る処理方法について説明する。本実施形態の構成も前記第１の実施形態と同じであり、違うのは、可逆符号化部１７０３と可逆符号再符号化部１７０６における像域フラグデータの縮退方法である。
【０２０９】
前記第１の実施形態では、像域フラグデータを１ビットずつ固定値に置き換える、すなわち、データを１ビットずつ縮退させるものであったが、本実施形態では、状態数を縮退させる。例えば、２ビットの像域フラグでは、４状態を表わすことができるが、これを１回目の再符号化処理で３状態に縮退させ、２回目の再符号化処理で２状態に縮退させることで、符号化前の情報エントロビーを減らし、符号化後のデータ量（符号量）を細かく減らしていくものである。
【０２１０】
状態数という言葉を用いて、先の第３の実施形態を表現すると、像域フラグデータを再符号化するごとに状態数を半分に減らす、と言うことが出来る。
【０２１１】
１回の再符号化処理で、第３の実施形態が状態数を半分に減らすのに対し、本実施形態は状態数を１つずつ減らすわけであるから、符号量を細かく減らせるのは当然である。
【０２１２】
本実施形態の処理結果を図２６（ｂ）（ｃ）（ｄ）（ｅ）に示し、それについて説明する。
【０２１３】
図２６（ａ）は、図２４（ｂ）に示した像域フラグデータと同じ、２ビットの４状態の全てが存在するデータである。該４状態をあらためて列挙すると、以下のようになる。
【０２１４】
（１）有彩色の文字部（データ“３”に対応）
（２）無彩色の文字部（データ“２”に対応）
（３）有彩色の非文字部（データ“１”に対応、有彩色の画像部とも言う）
（４）無彩色の非文字部（データ“０”に対応、無彩色の画像部とも言う）
本実施形態では、１回目の再符号化処理で、上記４状態の内、（３）有彩色の非文字部と（４）無彩色の非文字部、の２状態を合体して１つの状態（３’）非文字部に縮退させる。
これにより、以下の３つの状態となる。
【０２１５】
（１）有彩色の文字部
（２）無彩色の文字部、
（３’）非文字部
具体的には、データ“０”を“１”に置き換えることで、上記状態の縮退を行なう。状態縮退後のデータは図２６（ｂ）に示すデータに変わる。これをｐａｃｋｂｉｔｓ符号化すると図２６（ｃ）に示す符号化データになる。再符号化前の符号化データ図２４（ｃ）よりも多少符号量が少なくなっていることが解かる。
【０２１６】
２回目の再符号化処理では、（１）有彩色の文字部と（２）無彩色の文字部、の２状態を合体して１つの状態（１’）文字部に縮退させる。これにより、以下の２状態となる。
【０２１７】
（１’）文字部
（３’）非文字部
今度は、データ“２”を“３”に置き換えることで、上記状態の縮退を行なう。状態縮退後のデータは図２６（ｄ）に示すデータに変わる。このデータは図２４（ｄ）のデータと同じである。これをＰａ ｃ ｋｂｉｔ ｓ符号化した符号化データ図２６（ｅ）は当然図２４（ｅ）と同じ符号化データになる。
【０２１８】
第３の実施形態では、再符号化前の１５バイトのデータが１回の再符号化で６バイトまで減少したが、本第４の施形態では、１回目の再符号化で１１バイトに減少し、２回目の再符号化でやっと６バイトに減少する。結局、第４の実施形態では、第３の実施形態では得られない細かく変化して減少する符号量を得ることが出来るので、目標符号量に近い像域フラグの圧縮データを得ることができる。
【０２１９】
以上説明したように第３、第４の実施形態によれば、先に説明した第１、第２の実施形態と同様、１ページ分の像域情報を所望の符号化データ量に収めることができる。
【０２２０】
＜第５の実施形態＞
本第５の実施形態を説明する。本第５の実施形態は、先に説明した第１の実施形態とほぼ同様の動作を行うが、その構造が異なる。図２８はそのブロック構成図である。図１と同符号の構成要素については、その動作（画像データの符号化処理）が同じであるので、その説明は省略し、以下、本第５の実施形態における像域情報の符号化部分について説明する。
【０２２１】
イメージスキャナやページ記述言語レンダリング等から入力部１０１を介して入力した画像データ（多値カラー画像データ）は、符号化部１０２に供給されると共に像域情報生成部２８０１にも供給される。尚、上記の如く、符号化部１０２以降は図１と同様であるので、その説明は省略する。
【０２２２】
像域情報生成部２８０１では、入力した画像データから像域情報を生成する。入力対象がスキャナの場合には、先に説明した第１の実施形態における像域情報生成部１７０１と同様の処理を行えば良いし、ＰＤＬレンダリングからの場合にはＰＤＬレンダリングでイメージ展開する際に各画素毎に像域情報が判明しているので、その情報を活用すればよいであろう。
【０２２３】
生成された像域情報はブロック化ユニット２８０３において、まとめて符号化するデータサイズ、例えばＭ×Ｎのサイズへブロック化する。
【０２２４】
画像データの圧縮に利用するＪＰＥＧのような多値の非可逆圧縮は、２値データの集まりである像城情報の圧縮に使うのは不都合であり、可逆圧縮であるＪＢＩＧ、或いはＰａｃｋＢｉｔｓ等のランレングス符号化を用い、可逆符号化部２８０５にて像域情報を可逆符号化する。
【０２２５】
符号化した像域情報は、第３のメモリ制御部２８０７を経由して、第１のメモリ１０４に格納される。また、これと同時に、可逆符号化部から出力される符号データの量は第４のカウンタ２８１１にて累積カウントされ、該カウント値は符号化制御部２８１３に送られる。
【０２２６】
図３３は、符号化の初期状態でのメモリの状態を示している。図４と異なるのは、像域情報の記憶エリアが設けられている点である。基本的には、符号化後の像域情報は、この記憶エリアに順次保持されていくが、後述するように、符号化後の画像データをこの記憶エリアに記憶させることも可能である。また、符号化後の像域データは、この記憶エリアに収まらない場合でも、画像データの記憶エリアの方に余剰がある場合には、その余剰分の記憶エリアに保持することも、もちろん可能である。
【０２２７】
符号化制御部２８１３と、符号化シーケンス制御部１０８は、それぞれ第４のカウンタ２８１１と、第１のカウンタ１０７からのカウント値を、第６のカウンタ２８０９へ送る。
【０２２８】
第６のカウンタは、画像データの符号化、像城情報の符号化のカウントを合計し、そのカウント値を、画像・像域符号化制御部２８１９へ送る。
【０２２９】
画像・像域符号化制御部２８１９内のレジスタには、画像データおよび像域データの合計目標値が設定されており、前記画像データ、像域データの符号量の合計カウント値が、目標値をオーバーしたとき、符号化制御部２８１３、符号化シーケンス制御部１０８に対して、再符号化処理を行うよう制御信号を出力する。
【０２３０】
符号化制御部２８１３は、第１のメモリ１０４から符号化した像域データを読み出し、像域データを可逆符号再符号化部２８１５に送るよう、メモリ制御部２８０７へ制御信号を出力する。
【０２３１】
符号化シーケンス制御部１０８は、第１のメモリ１０４に格納済みのデータを廃棄するよう第１のメモリ制御部１０３に制御信号を出力する。上記第１のメモリ制御部１０３は、該制御信号に基づいて、メモリアドレスカウンタをクリアするか、あるいは符号化データ管理テーブルをクリアすることにより、前記格納データを廃棄する。そして符号化シーケンス制御部１０８は、符号化部１０２に対して今までより、高い圧縮率で符号化を行なうよう制御し、再符号化処理を行う。
【０２３２】
すなわち、第１のカウンタ１０７のカウント値が、符号化シーケンス制御部１０８内のレジスタ内に記憶されている画像データの符号量の目標値をオーバーしても、あるいは、第４のカウンタ２８１１のカウント値が、符号化制御部２８１３内のレジスタ内に記憶されている像域データの符号量の目標値をオーバーしても、画像データの符号量の目標値と像域データの符号量の日標値の合計に対して、画像データと像域データの符号量の合計がオーバーしていなければ、符号化処理を継続させる。
【０２３３】
これによって、例えば、画像データは若干、画像データの目標値をオーバーしてしまったが、それに対応する像域情報の符号量が小さいため、第１のメモリ１０４内の像域データに割り当てられている記憶エリアを画像データに割り当てることで、画像データと像城情報の符号量の合計が、画像データと像域データの符号量の目標値内に納まるのであれば、画像データを再符号化する必要がなくなる。さらな高圧縮を行う必要がなくなり、画質向上、パフォーマンス向上につながる。
【０２３４】
画像データの再符号化処理は、画像・像域符号化制御部２８１９から符号化シーケンス制御部１０８に対して再符号化処理の制御信号が出力されると、符号化シーケンス制御部１０８は、図１の説明で先に述べた通りの再符号化処理を行うための制御を行う。
【０２３５】
像城情報の再符号化処理は、画像・像域符号化制御部２８１９から符号化制御部２８１３に対して再符号化処理の制御信号が出力されると、符号化制御部２８１３は、第１のメモリ１０４から符号化した像域データを読み出し、該データを可逆符号再符号化部２８１５に送るよう、メモリ制御部２８０７へ制御信号を出力する。
【０２３６】
可逆符号再符号化部２８１５は、符号化データを受け取るとそれを復号化し、複数の属性情報の一部を廃棄するか固定値に置き換えた後、再び可逆符号化を行なう。属性フラグの一部を固定値に置き換えた場合でも情報エントロビーが低下するため、ランレングス符号化後のデータ量は減少する。再符号化後の属性データは、第１のメモリ１０４に再び格納すると共に、その符号量を第５のカウンタ２８１７にてカウントする。
【０２３７】
一方、符号化制御部２８１３は、可逆符号再符号部２８１５と同様、可逆符号化部２８０５に対して、それ以降に入力される属性情報の一部を廃棄、或いは固定値に置き換えるよう制御信号を送り、符号化処理を継続させる。それと同時に、第４のカウンタ２８１１にも制御信号を送り、それまでカウントして保持していた値をリセットさせ、属性情報の一部を廃棄、或いは固定値に置き換えた後に符号化処理して生成する符号量を新たにカウントさせる。
【０２３８】
前記再符号化する像域情報が無くなり再符号化処理が終了したら、第５のカウンタ２８１７の計数値を第４のカウンタ２８１１に転送して加算する。それによって、カウンタ２８１１には、属性情報を一部廃棄、或いは固定値に置き換えた後の可逆符号化データの全符号量が計数される。
【０２３９】
画像データ、像域情報の再符号化を行うたびに、各々の符号量のカウントを行い、画像データ、像域情報の符号量の合計値が、画像・像域符号化制御部２８１９内のレジスタに設定された画像データ、像域情報の目標値の合計をオーバーするたびに、画像データの再符号化処理、および、像域情報の再符号化処理を行う。像域情報の再符号化は、廃棄する属性フラグを増やすことで、像域データの符号量を投階的に減らすことができ、該像域情報の符号量を目標値以内に収めることが可能となる。
【０２４０】
次に、本実施形態の処理内容を図２９のフローチャートに従って説明する。本実施形態の処理は、上述したように、大きく２つの処理に分かれる。１つは可逆符号化処理、もう１つは再符号化処理である。
【０２４１】
符号化処理は、ステップＳ２９０５の像域情報変換処理とステップＳ２９０７の可逆符号化処理で構成される。また、再符号化処理は、ステップＳ２９１５の復号化処理と、ステップＳ２９１７の像域情報変換処理、それにステップＳ２９１９の再符号化処理で構成される。その他のステップは、Ｓ２９１３の像域情報変更処理の変更を除くと、条件分岐と開始及び終了ステップである。
【０２４２】
まず、ステップ２９０１から、像域情報の符号化処理を開始する。次のステップ２９０３で、画像１ページ（１つの画像）に対する像域情報の入力が全て終了しているかどうかを検知し、終了していればステップＳ２９２１へ行き、終了していない場合、すなわち、像域情報の入力がある場合には、ステップＳ２９０５の像域情報変換処理を行なう。
【０２４３】
再符号化処理がまだ一度も起動していない初期状態では、像域変換処理では何も処理せず、入力された像域情報をそのまま次のステップＳ２９０７の可逆符号化処理で符号化する。
【０２４４】
次のステップＳ２９０９では、再符号化処理中であるかどうかを判定し、再符号化処理中であれば、前記ステップＳ２９１５〜Ｓ２９１９から成る再符号化処理を行なうが、再符号化処理中でなければ、ステップＳ２９１１へ行き、画像・像域符号化制御部において符号化した画像データ、像域情報の合計データ量（合計符号量）が設定値をオーバーしたかどうかを判定する。
【０２４５】
オーバーしていなければ、ステップＳ２９０３に戻り、符号化処理を繰り返し、オーバーしていれば、像域情報変換処理における処理内容を変更する。該変更により、ステップＳ２９０５、Ｓ２９１７における像域変換処理の内容が変わる。具体的には、初期状態では、入力された像域フラグデータを１ビットも無効にすることなく全て符号化してきた。すなわち、像域変換処理では何もしていなかったが、処理内容を変更後は、少なくとも像域情報中の１ビットのフラグデータを廃棄するか固定値に置き換えるといった処理を、前記像域変換処理で行なう。この後、処理内容を変更するごとに、廃棄または固定値に置き換える像域フラグのビット数を増やしていく。
【０２４６】
該像域情報変換処理内容の変更後は、再符号化処理を行なう。再符号化処理では、ステップＳ２９１５にて、既に符号化した像域情報を復号化処理して符号化前のデータに戻す。そして、次のステップＳ２９１７にて、像域情報変換処理を行ない、像域情報の一部を廃棄または固定値に置き換える。そして、次のステップＳ２９１９にて、変換した像域情報を再び可逆符号化する。
【０２４７】
上記再符号化処理が終わったら、ステップＳ２９０３に戻り、像域情報の入力があれば、それを符号化処理する。画像・像域符号化制御部において、画像データ、像域データの符号量の合計が一度でも設定値をオーバーすると、像域情報変換処理内容が変更され、ステップＳ２９０５の像域情報変換処理にて、一部の像域フラグデータが廃薬または固定値に置き換えられた後に、ステップＳ２９０７にて、可逆符号化される。
【０２４８】
像域情報の入力が全て終了しても、再符号化処理が継続中であれば、ステップＳ２９０３からステップＳ２９２１へ移り、そこで、再符号化処理中であることを判定して、前記ステップＳ２９１５、Ｓ２９１９から成る再符号化処理を行なう。
【０２４９】
像域情報の入力が全て終了し、且つ、再符号化処理もしていなければ、ステップＳ２９２３へ移り、像域情報の符号化処理を終了する。
【０２５０】
次に、１画素あたり２ビットの像域フラグデータに６ビットデータ“００００００”を付加して８ビット化した後、可逆符号としてＰａｃｋｂｉｔｓ符号化を行なった場合の、本実施形態における具体的な処理内容を、図３０を用いてさらに詳しく説明する。
【０２５１】
Ｐａｃｋｂｉｔｓ符号化する前の８ビットデータは、図３０（ａ）に示すように上位６ビットは全て０で、下位２ビットの上位側に、対応する画素データが文字部かそうでないかを表わすフラグ、下位側には有彩色か無彩色を表わすフラグデータが入っている。よって、該８ビットデータが取り得る値は、０以上３以下の値である。
【０２５２】
像域情報生成部２８０１からは、上記８ビットのデータが画素単位で出力されるものとする。具体的な出力データとして、図３０（ｂ）に示すデータを考える。
【０２５３】
これをＰａｃｋｂｉｔｓ符号化すると同図（ｃ）に示すデータに圧縮される。圧縮後のデータで負の値は連続するデータの個数を表わし、非連続データの個数は正の値で表わしている。これらは長さ情報と言うもので、該長さ情報のサインビット（ＭＳＢ）から連続データが続くのか、非連続データが続くのかを判別することが出来るようになっている。圧縮後の各データは同図（ｂ）と同じく８ビット（１バイト）である。１バイトの長さ情報で、表わすことができる最大値は２５５の半分の約１２８であり、長さ情報がそれ以下の場合は１組の長さ情報とそれに続く像域情報のフラグデータ群で符号化でき、それを超える場合は複数の組の、長さ情報＋像域フラグデータ群、に分けて符号化される。
【０２５４】
図３０（ｃ）の圧縮データを詳しく見てみることにする。最初の長さ情報“−４”はマイナスの値なので、上述したように連続データの連続個数を表わし、長さ情報直後の像域フラグデータ“１”が４つ続くことを表わしている。
【０２５５】
次のデータ“４”はまた長さ情報であるが、今度はプラスの値なので非連続データが４つ続くことを示している。よって、前記“４”に続く４つのデータ“２，３，２，３”が非連続データを表わす。同図（ｃ）では、長さ情報と像域フラグデータとが区別し易いように、プラスの長さ情報のみ下線を引いている。
【０２５６】
上記非連続データの次の“−５”は又、連続データの長さ情報で、該長さ情報直後の像域フラグデータ“２”が５つ続くことを表わしている。次の下線付きのデータ“３”は非連続データの長さ情報で、後続する３つのデータ“１，０，１”が像域フラグデータであり、さらに次の“−６，０”は、データ“０”が６個連続することを示している。
【０２５７】
上記圧縮データを可逆符号再符号化部２８１５で再符号化処理するとどのようになるのかを、同図（ｄ）、（ｅ）を用いて説明する。ここでは、再符号化処理において、有彩色・無彩色フラグを“１”に固定してすべて有彩色にする例を示す。
【０２５８】
符号化された像域データは一旦復号され、図３０（ｂ）のデータに戻された後、上記フラグデータの置き換えが行なわれ、同図（ｄ）のデータに変換される。そして、変換されたデータを再びＰａｃｋｂｉｔｓ符号化することによって、同図（ｅ）の符号化データが得られる。再符号化前の１５バイトの符号化データが再符号化後には６バイトに減少することが解かる。
【０２５９】
上記の再符号化処理を行なったにもかかわらず、画像データ、像域データの符号量の合計である全符号量の計数値が画像・像域符号化制御部２８１９内のレジスタに設定された画像データと像域データの符号量の合計目標値を再びオーバーした場合には、前記再符号化処理が終了していれば、直ちに次の新たな再符号化処理を開始する。前記再符号化処理が終了していなければ、該再符号化処理が終了後、直ちに次の新たな再符号化処理を開始する。
【０２６０】
新たな再符号化処理では、残りの１ビットの像域フラグも“１”に置き換える。これにより、すべての像域フラグデータ（８ビット）の値は“３”となり、データのバイト数をＮとすると、符号化後のデータ量はおよそ（２Ｎ／１２８）＋２バイトとなる。
【０２６１】
これは、連続データの個数が１２８個を超えるたびに、あらたな２バイト１組の符号化データ（長さ情報と連続データ）が増えるためである。
【０２６２】
Ｐａｃｋｂｉｔｓの符号化回路や復号回路それにデータ変換回路はそれぞれ公知の技術であるため、個別の回路構成についての説明は省略する。
【０２６３】
上記説明では簡単化のため、各画素の像域情報の有意なビット数を２ビットとして説明したが、前述したように像域フラグとして他の情報もいくつかある。上記再符号化処理では、２ビットの像域フラグデータでは最大２回の再符号化、４ビットの像域フラグデータでは最大４回の再符号化処理が可能であり、像域フラグのビット数が多い程、再符号化処理の回数を増やすことができ、符号量を多段階で制御することができる。
【０２６４】
上述したように像域フラグデータの可逆符号化処理は、画像データの圧縮符号化処理とは独立に制御され、それぞれに目標符号量以内のデータに収められる。
【０２６５】
符号化された２種類のデータは、外部に接続されるネットワーク横器、画像出力装置や大容量記憶装置等へ出力する際に多重化する。該多重化を考慮して、前記２種類のデータを符号化処理する単位を同じサイズに合わせておき、１単位を符号化して生成される符号化データを１つのパケットあるいはファイルとして管理・格納する。多重化する際に、画像位置が同じ２種類のパケットデータを、例えば画像データ・像域データの順に連結して、１パケット化し、外部へ出力する。
【０２６６】
前記２つの符号化処理は独立に制御されるので、画像データの圧縮符号化処理部が他の構成であっても構わない。よって、像域フラグデータを可逆符号化処理するユニット２８０１、２８１９を前記図２の構成に対して付加しても、同じように処理することが可能である。その構成を図３１に示しておくが、ユニット２８０１〜２８１９の動作は図２８とまったく同じであり、画像データ圧縮部分の動作も図２の動作と同じである。
【０２６７】
＜第６の実施形態＞
第２の実施形態では、像域情報のビット数が前記第１の実施形態と同じでも、再符号化処理の回数を増やせて、符号量を細かく制御することが出来る処理方法について説明する。本実施形態の構成も前記第５の実施形態と同じであり、異なるのは、可逆符号化部２８０５と可逆符号再符号化部２８１５における像域フラグデータの縮退方法である。
【０２６８】
前記第１の実施形態では、像域情報を１ビットずつ固定値に置き換える、すなわち、データを１ビットずつ縮退させるものであったが、本実施形態では、状態数を縮退させる。例えば、２ビットの像域フラグでは、４状態を表わすことができるが、これを１回目の再符号化処理で３状態に縮退させ、２回目の再符号化処理で２状態に縮退させることで、符号化前の情報エントロビーを減らし、符号化後のデータ量（符号量）を細かく減らしていくものである。
【０２６９】
状態数という言葉を用いて、前記第５の実施形態を表現すると、像域情報を再符号化するごとに状態数を半分に減らす、と言うことが出来る。
【０２７０】
１回の再符号化処理で、第５の実施形態が状態数を半分に減らすのに対し、本第６の実施形態は状態数を１つずつ減らすわけであるから、符号量を細かく減らせるのは当然である。
【０２７１】
本実施形態の処理結果を図３２（ｂ）（ｃ）（ｄ）（ｅ）に示し、それについて説明する。
【０２７２】
同図（ａ）は、図３０（ｂ）に示した像域フラグデータと同じ、２ビットの４状態の全てが存在するデータである。該４状態をあらためて列挙すると、以下のようになる。
【０２７３】
（１）有彩色の文字線画部（データ“３”に対応）
（２）無彩色の文字線画部（データ“２”に対応）
（３）有彩色の非文字線画部（中間調部）（データ“１”に対応、有彩色の画像部とも言う）
（４）無彩色の非文字線画部（中間調部）（データ“０”に対応、無彩色の画像部とも言う）
本実施形態では、１回目の再符号化処理で、上記４状態の内、（３）有彩色の非文字部と（４）無彩色の非文字部、の２状態を合体して１つの状態（３’）非文字部に縮退させる。
【０２７４】
これにより、以下の３つの状態となる。
【０２７５】
（１）有彩色の文字部
（２）無彩色の文字部、
（３’）非文字部
具体的には、データ“０”を“１”に置き換えることで、上記状態の縮退を行なう。状態縮退後のデータは図３２（ｂ）に示すデータに変わる。これをＰａｃｋｂｉｔｓ符号化すると同図（ｃ）に示す符号化データになる。再符号化前の符号化データは図３０（ｃ）よりも多少符号量が少なくなっていることが解かる。
【０２７６】
２回目の再符号化処理では、（１）有彩色の文字部と（２）無彩色の文字部、の２状態を合体して１つの状態（１’）文字部に縮退させる。これにより、以下の２状態となる。
【０２７７】
（１’）文字部
（３’）非文字部
今度は、データ“２”を“３”に置き換えることで、上記状態の縮退を行なう。状態縮退後のデータは図３２（ｄ）に示すデータに変わる。このデータは図３０（ｄ）のデータと同じである。これをＰａ ｃ ｋｂｉｔ ｓ符号化した符号化データである図３２（ｅ）は当然図３０（ｅ）と同じ符号化データになる。
【０２７８】
第５の実施形態では、再符号化前の１５バイトのデータが１回の再符号化で６バイトまで減少したが、本第６の実施形態では、１回目の再符号化で１１バイトに減少し、２回目の再符号化でやっと６バイトに減少する。結局、第６の実施形整では、第５の実施形態では得られない細かく変化して減少する符号量を得ることが出来るので、目標符号量に近い像域フラグの圧縮データを得ることができる。
【０２７９】
＜第７の実施形態＞
第５の実施形態では、符号化制御部２８１３と、符号化シーケンス制御部１０８から、それぞれ第４のカウンタ２８１１と、第１のカウンタ１０７からのカウント値を、第６のカウンタ２８０９へ送り、第６のカウンタ２８０９では、画像データの符号化、像域データの符号化のカウントを合計し、そのカウント値を、画像・像域符号化制御部２８１９へ送った。そして、画像・像域符号化制御部２８１９内のレジスタに保持されている画像データおよび像域データの合計目標値に対して、前記画像データ、像域データの符号量の合計カウント値が、この目標値をオーバーしたかどうか判定し、オーバーした際には、符号化制御部１７１３、符号化シーケンス制御部１０８に対して、再符号化処理を行うよう制御信号を出力する構成を説明した。
【０２８０】
第７の実施形態では、第４のカウンタ２８１１と、第１のカウンタ１０７と、第６のカウンタ２８０９との、各々のカウント値を参照し、画像データ、像域データの再符号化処理を独立して行う場合の実施形態を説明する。
【０２８１】
画像・像域符号化制御部１７１９内のレジスタには、画像データおよび像域情報の合計目標値（目標符号量）が保持されており、第６のカウンタ２８０９から前記画像データ、像城情報の符号量の合計カウント値が送られてくる。この合計符号量がレジスタ内の目標値をオーバーした際には、画像・像域符号化制御部２８１９は、符号化制御部２８１３、符号化シーケンス制御部１０８に対して、再符号化処理を行うよう制御信号を出力する。
【０２８２】
画像・像域符号化制御部２８１９内の目標値をオーバーしたということは、符号化シーケンス制御部１０８、符号化制御部２８１３内の各々レジスタ内に保持されている画像データの目標符号量、像域情報の目標符号量に対し、画像データか像域情報のどちらか少なくとも一方がオーバーしたということ（両方の場合もある）である。
【０２８３】
画像・像域符号化制御部２８１９から再符号化の制御信号を受けた符号化制御部２８１３、符号化シーケンス制御部１０８は、第１のカウンタ１０７、第４のカウンタ２８１１のカウント値が、符号化制御部２８１３、符号化シーケンス制御部１０８内のレジスタに保持されている、画像データの符号量の目標値、像域データの符号量の目標値と参照し、オーバーしていないか判定し、オーバーしている場合には、先に説明した再符号化処理のための制御信号を出力し、再符号化処理を行う。
【０２８４】
例えば、符号化制御部２８１３内の目標値に対して、像域データの符号量はオーバーせず、符号化シーケンス制御部１０８内の目標値に対しては、画像データの符号量がオーバーし、その結果、画像・像域符号化制御部１７１９の目標値をオーバーしてしまった場合には、符号化制御部１７１３は像域データに対する再符号化制御信号は出力せず、符号化シーケンス制御部１０８は画像データに対して再符号化処理の制御信号を出力する。
【０２８５】
これによって、画像データ、像域データの合計目標値をオーバーして再符号化処理になった場合でも、その目標値をオーバーした要因として支配的なデータの方だけを再符号化処理を行うことで、各々の目標値をオーバーしていない、例えば、上述の例では像域データに関しては再符号化することが不要になるため、無駄な画質劣化を避けることが可能になる。
【０２８６】
＜第８の実施形態＞
第５の実施形態では、符号化制御部２８１３と、符号化シーケンス制御部１０８から、それぞれ第４のカウンタ２８１１と、第１のカウンタ１０７からのカウント値を、第６のカウンタ２８０９へ送る。第６のカウンタ２８０９では、画像データの符号化、像域情報の符号化の符号量（カウント値）を合計し、その合計値を、画像・像域符号化制御部１７１９へ送った。そして、画像・像域符号化制御部２８１９内のレジスタに保持されている画像データおよび像域情報の合計目標値に対して、画像データ及び像域情報の符号量の合計値が、この目標値をオーバしたかどうかを判定し、オーバーした際には、符号化部２８１３（結果として可逆符号再符号化部２８０７を含む）、符号化シーケンス制御部１０８に対して再符号化処理を行う制御信号を出力する構成を説明した。
【０２８７】
かかる構成において、画像・像域符号化制御部２８１９から符号化制御部２８１３、符号化シーケンス制御部１０８に対する再符号化処理の制御信号を交互に出力する構成にしても構わない。
【０２８８】
画像・像域符号化制御部２８１９内のレジスタに保持されている目標値をオーバーした場合には、先ず、符号化シーケンス制御部１０８に対して、再符号化処理の指示要求を出し、再符号化を行う。そして、この再符号化を行っても、なお像域符号化制御部１７１９内のレジスタに保持されている目標値をオーバーした場合には、次に、符号化制御部２８１３（可逆符号化部２８０５及び可逆符号再符号部２８０７）に対して再符号化処理を行うよう要求信号を出力する。
【０２８９】
以下、目標値をオーバーすると判断した毎に、交互に再符号化の圧縮率を高くするようにする。
【０２９０】
以上の結果、圧縮率を過剰に高くして符号化することを抑制することができるようになる。
【０２９１】
以上説明した第１乃至第８の実施形態の処理は、始めに説明した基本部分を含めて、マルチタスクＯＳを搭載した汎用の情報処理装置（例えばパーソナルコンピュータ等）によるコンピュータプログラムによっても実現できる。従って、本発明はかかるコンピュータプログラムにも適用できるものである。この場合、図１や、第１乃至第８の実施形態で示したブロック構成図における各ユニットは、コンピュータプログラムのモジュールもしくは関数プログラムで実現できるのは、当業者であれば容易に理解できよう。従って、本願発明は、コンピュータプログラムに適用しても構わない。
【０２９２】
また、通常、パーソナルコンピュータ等の汎用情報処理装置にコンピュータプログラムを導入する場合には、そのコンピュータプログラムを記憶する記憶媒体（フロッピーディスク、ＣＤＲＯＭ、ＭＯ等）をセットし、インストール或いはコピーすることで実現できるものであるから、本発明はかかる記憶媒体をもその範疇とするものである。
【０２９３】
【発明の効果】
以上説明したように本発明によれば、多値画像の像域情報を再入力し直すことなく、目的とするサイズに収まる符号化を行うことが可能になる。
【図面の簡単な説明】
【図１】本発明を適用する画像処理装置の第１の基本構成を示す図である。
【図２】本発明を適用する画像処理装置の第２の基本構成を示す図である。
【図３】図１の構成における処理を簡略化して示したフローチャートである。
【図４】初期状態の符号化フェーズにおけるデータフローとメモリ内容を表わす図である。
【図５】符号化・再符号化フェーズにおけるデータフローとメモリ内容を表わす図である。
【図６】転送フェーズにおけるデータフローとメモリ内容を表わす図である。
【図７】転送フェーズ後の符号化フェーズにおけるデータフローとメモリ内容を表わす図である。
【図８】図１の構成における処理の詳細を示すフローチャートである。
【図９】図１の構成の変形例における符号化・再符号化フェーズにおけるデータフローとメモリ内容を表わす図である。
【図１０】図９の変形例における転送フェーズにおけるデータフローとメモリ内容を表わす図である。
【図１１】図９の変形例における転送フェーズ後の符号化フェーズにおけるデータフローとメモリ内容を表わす図である。
【図１２】図２の構成における処理手順を示すフローチャートである。
【図１３】図２の構成における、初期状態の符号化フェーズにおけるデータフローとメモリ内容を表わす図である。
【図１４】図２に構成における、転送フェーズにおけるデータフローとメモリ内容を表わす図である。
【図１５】図２の構成における、符号化・再符号化フェーズにおけるデータフローとメモリ内容を表わす図である。
【図１６】図２の構成における、符号化・再符号化フェーズ後の符号化フェーズにおけるデータフローとメモリ内容を表わす図である。
【図１７】本発明の第１の実施形態における装置のブロック構成図である。
【図１８】第１の実施形態における処理手順を示すフローチャートである。
【図１９】第１の実施形態における可逆符号の符号化データと再符号化後の符号化データを示す図である。
【図２０】第１の実施形態における他の構成を示す図である。
【図２１】第２の実施形態における可逆符号の再符号化後の符号化データと再々符号化後の符号化データを表わす図である。
【図２２】第３の実施形態における装置のブロック構成図である。
【図２３】第３の実施形態における処理手順を示すフローチャートである。
【図２４】第３の実施形態における可逆符号の符号化データと再符号化後の符号化データを示す図である。
【図２５】第３の実施形態における他の構成を示す図である。
【図２６】第４の実施形態における可逆符号の再符号化後の符号化データと再々符号化後の符号化データを表わす図である。
【図２７】第３の実施形態における初期状態の符号化フェーズにおけるデータフローとメモリ内容を表わす図である。
【図２８】第５の実施形態における装置のブロック構成図である。
【図２９】第５の実施形態における処理手順を示すフローチャートである。
【図３０】第５の実施形態における可逆符号の符号化データと再符号化後の符号化データを示す図である。
【図３１】第５の実施形態における他の構成を示す図である。
【図３２】第６の実施形態における可逆符号の再符号化後の符号化データと再々符号化後の符号化データを表わす図である。
【図３３】第５の実施形態における初期状態の符号化フェーズにおけるデータフローとメモリ内容を表わす図である。
【図１】
0003840076.tif 000002
【図２】
0003840076.tif 000003
【図３】
0003840076.tif 000004
【図４】
0003840076.tif 000005
【図５】
0003840076.tif 000006
【図６】
0003840076.tif 000007
【図７】
0003840076.tif 000008
【図８】
0003840076.tif 000009
【図９】
0003840076.tif 000010
【図１０】
0003840076.tif 000011
【図１１】
0003840076.tif 000012
【図１２】
0003840076.tif 000013
【図１３】
0003840076.tif 000014
【図１４】
0003840076.tif 000015
【図１５】
0003840076.tif 000016
【図１６】
0003840076.tif 000017
【図１７】
0003840076.tif 000018
【図１８】
0003840076.tif 000019
【図１９】
0003840076.tif 000020
【図２０】
0003840076.tif 000021
【図２１】
0003840076.tif 000022
【図２２】
0003840076.tif 000023
【図２３】
0003840076.tif 000024
【図２４】
0003840076.tif 000025
【図２５】
0003840076.tif 000026
【図２６】
0003840076.tif 000027
【図２７】
0003840076.tif 000028
【図２８】
0003840076.tif 000029
【図２９】
0003840076.tif 000030
【図３０】
0003840076.tif 000031
【図３１】
0003840076.tif 000032
【図３２】
0003840076.tif 000033
【図３３】
0003840076.tif 000034