(57)【要約】【課題】  可逆符号化、非可逆符号化の双方を併用しつつも、１度の画像入力により目標データ量の符号化データを生成する。【解決手段】  非可逆符号化データを生成する第１の符号化部１０２、可逆符号化データを生成する第２の符号化部、符号化対象となる画素ブロック中の色数を検出する属性判定部１３０は並列して同じ画素ブロックについて処理を行う。符号化シーケンス制御部１１０は、注目画素ブロックの色数が所定数以下の場合には可逆符号化データを第１のメモリ１０５に格納させる。また、色数が所定数を越える場合には、非可逆符号化データと可逆符号化データのうち、短い方を第１のメモリ１０５に格納させる。【選択図】  図１
2006166420.tif 000002
【特許請求の範囲】
【請求項１】
画像データを入力し、当該画像データを符号化する画像符号化装置であって、
第１のパラメータに従って、入力する画像データを所定画素ブロック単位に非可逆符号化し、非可逆符号化データを生成する第１の符号化手段と、
入力する画像データを前記所定画素ブロック単位に可逆符号化し、可逆の符号化データを生成する第２の符号化手段と、
前記第１、第２の符号化手段からのいずれか一方の符号化データを格納する第１のメモリと、
前記第２の符号化手段で生成された符号化データを格納する第２のメモリと、
該第１のメモリに格納された符号化データ量が所定の目標データ量を超えたか否かを判断する監視手段と、
入力する画像データ中の所定画素ブロックの属性を検出し、当該検出された属性情報が所定の条件を満たすか否かを判定する属性判定手段と、
該属性判定手段で前記所定の条件を満たすと判定した場合、前記第２の符号化手段からの可逆符号化データを前記第１のメモリに格納するために選択する第１の選択手段と、
前記属性判定手段で前記所定の条件を満たさないと判定した場合、前記第１、第２の符号化手段それぞれからの符号化データのうち、符号長の短い方の符号化データを前記第１のメモリに格納するために選択する第２の選択手段と、
前記第２のメモリ内の可逆符号化データを復号し、第２のパラメータに従って再符号化して非可逆符号化データを生成すると共に、該再符号化により得られた非可逆符号化データと該再符号化前の可逆符号化データのうち、符号長の短い符号化データを前記第１のメモリに格納する再符号化手段と、
前記監視手段で前記符号化データ量が前記所定データ量を超えたと判断した場合に、前記属性判定手段の判定条件を変更する判定条件変更手段と、
前記監視手段で前記符号化データ量が前記所定データ量を超えたと判断した場合、（ａ）前記第１のメモリ内の符号化データを破棄し、（ｂ）前記第１の符号化手段に設定されていた第１のパラメータを、圧縮率の高いパラメータに更新して画像データの符号化を継続させ、（ｃ）更新後の第１のパラメータと同じパラメータを第２のパラメータとして前記再符号化手段に設定して、前記符号化データ量が所定データ量を超える以前に得られた可逆符号化データを再符号化させるパラメータ更新手段と
を備えることを特徴とする画像符号化装置。
【請求項２】
前記第１の符号化手段による符号化にはＪＰＥＧを用い、前記第２の符号化手段による符号化にはＪＰＥＧ−ＬＳを用いることを特徴とする請求項１に記載の画像符号化装置。
【請求項３】
前記属性判定手段は、前記所定画素ブロック内の色数が所定数以下であるか否かを判定することを特徴とする請求項１又は２に記載の画像符号化装置。
【請求項４】
前記属性判定手段は、前記所定画素ブロック内の所定色の占める割合が所定以上であるか否かを判定することを特徴とする請求項１又は２に記載の画像符号化装置。
【請求項５】
前記属性判定手段は、前記所定画素ブロック内の所定色の占める割合が所定以上であるか否か、並びに、文字線画領域か否かを判定することを特徴とする請求項１又は２に記載の画像符号化装置。
【請求項６】
第１、第２のメモリを有し、画像データを入力し、当該画像データを符号化する画像符号化装置の制御方法であって、
第１のパラメータに従って、入力する画像データを所定画素ブロック単位に非可逆符号化し、非可逆符号化データを生成する第１の符号化工程と、
入力する画像データを前記所定画素ブロック単位に可逆符号化し、可逆の符号化データを生成する第２の符号化工程と、
前記第１のメモリに格納された符号化データ量が所定の目標データ量を超えたか否かを判断する監視工程と、
入力する画像データ中の所定画素ブロックの属性を検出し、当該検出された属性情報が所定の条件を満たすか否かを判定する属性判定工程と、
該属性判定工程で前記所定の条件を満たすと判定した場合、前記第２の符号化工程からの可逆符号化データを前記第１のメモリに格納するために選択する第１の選択工程と、
前記属性判定工程で前記所定の条件を満たさないと判定した場合、前記第１、第２の符号化工程それぞれからの符号化データのうち、符号長の短い方の符号化データを前記第１のメモリに格納するために選択する第２の選択工程と、
前記第２のメモリ内の可逆符号化データを復号し、第２のパラメータに従って再符号化して非可逆符号化データを生成すると共に、該再符号化により得られた非可逆符号化データと該再符号化前の可逆符号化データのうち、符号長の短い符号化データを前記第１のメモリに格納する再符号化工程と、
前記監視工程で前記符号化データ量が前記所定データ量を超えたと判断した場合に、前記属性判定工程の判定条件を変更する判定条件変更工程と、
前記監視工程で前記符号化データ量が前記所定データ量を超えたと判断した場合、（ａ）前記第１のメモリ内の符号化データを破棄し、（ｂ）前記第１の符号化工程に設定されていた第１のパラメータを、圧縮率の高いパラメータに更新して画像データの符号化を継続させ、（ｃ）更新後の第１のパラメータと同じパラメータを第２のパラメータとして前記再符号化工程に設定して、前記符号化データ量が所定データ量を超える以前に得られた可逆符号化データを再符号化させるパラメータ更新工程と
を備えることを特徴とする画像符号化装置の制御方法。
【請求項７】
画像データを入力し、当該画像データを符号化する画像符号化装置用のコンピュータプログラムであって、
符号化データを格納する第１、第２のメモリとなる領域を確保するメモリ確保手段と、
第１のパラメータに従って、入力する画像データを所定画素ブロック単位に非可逆符号化し、非可逆符号化データを生成する第１の符号化手段と、
入力する画像データを前記所定画素ブロック単位に可逆符号化し、可逆の符号化データを生成する第２の符号化手段と、
前記第１のメモリに格納された符号化データ量が所定の目標データ量を超えたか否かを判断する監視手段と、
入力する画像データ中の所定画素ブロックの属性を検出し、当該検出された属性情報が所定の条件を満たすか否かを判定する属性判定手段と、
該属性判定手段で前記所定の条件を満たすと判定した場合、前記第２の符号化手段からの可逆符号化データを前記第１のメモリに格納するために選択する第１の選択手段と、
前記属性判定手段で前記所定の条件を満たさないと判定した場合、前記第１、第２の符号化手段それぞれからの符号化データのうち、符号長の短い方の符号化データを前記第１のメモリに格納するために選択する第２の選択手段と、
前記第２のメモリ内の可逆符号化データを復号し、第２のパラメータに従って再符号化して非可逆符号化データを生成すると共に、該再符号化により得られた非可逆符号化データと該再符号化前の可逆符号化データのうち、符号長の短い符号化データを前記第１のメモリに格納する再符号化手段と、
前記監視手段で前記符号化データ量が前記所定データ量を超えたと判断した場合に、前記属性判定手段の判定条件を変更する判定条件変更手段と、
前記監視手段で前記符号化データ量が前記所定データ量を超えたと判断した場合、（ａ）前記第１のメモリ内の符号化データを破棄し、（ｂ）前記第１の符号化手段に設定されていた第１のパラメータを、圧縮率の高いパラメータに更新して画像データの符号化を継続させ、（ｃ）更新後の第１のパラメータと同じパラメータを第２のパラメータとして前記再符号化手段に設定して、前記符号化データ量が所定データ量を超える以前に得られた可逆符号化データを再符号化させるパラメータ更新手段
として機能することを特徴とするコンピュータプログラム。
【請求項８】
請求項７に記載のコンピュータプログラムを格納したことを特徴とするコンピュータ可読記憶媒体。
【請求項９】
画像データを入力し、当該画像データを符号化する画像符号化装置であって、
第１のパラメータに従って、入力する画像データを所定画素ブロック単位に非可逆符号化し、非可逆符号化データを生成する第１の符号化手段と、
入力する画像データ中の前記所定画素ブロック単位に可逆符号化し、可逆符号化データを生成する第２の符号化手段と、
前記第１の符号化手段で生成される符号化データの符号長である第１の符号長と、前記第２の符号化手段で生成される符号化データの符号長である第２の符号長とを検出する符号長検出手段と、
前記第１、第２の符号化手段からのいずれか一方の符号化データを格納する第１のメモリと、
前記第２の符号化手段で生成された可逆符号化データを格納する第２のメモリと、
前記第２の符号長が小さいほど、前記第２の符号化手段で生成される可逆符号化データが前記第１のメモリに格納される確率を高めるための重み付け係数を生成する生成手段と、
該第１のメモリに格納された符号化データ量が所定データ量を越えたか否かを判断する監視手段と、
前記生成手段で生成された重み付け係数を、前記第１、第２の符号長のいずれか一方に適用し、適用後の第１、第２の符号長を比較し、符号長の短いと判定された符号化データを前記第１のメモリに格納するために選択する選択手段と、
前記第２のメモリ内の符号化データを復号し、第２のパラメータに従って再符号化して非可逆符号化データを生成すると共に、該再符号化後の符号化データと際符号化前の符号化データのうち、符号長の短い符号化データを前記第１のメモリに格納する再符号化手段と、
前記監視手段で前記符号化データ量が前記所定データ量を越えたと判断した場合に、前記重み付け係数を変更する判定条件変更手段と、
前記監視手段で前記符号化データ量が前記所定データ量を越えたと判断した場合、（ａ）前記第１のメモリ内の符号化データを破棄し、（ｂ）前記第１の符号化手段に設定されていた第１のパラメータを、圧縮率の高いパラメータに更新して画像データの符号化を継続させ、（ｃ）更新後の第１のパラメータと同じパラメータを第２のパラメータとして前記再符号化手段に設定して、前記符号化データ量が所定データ量を超える以前に得られた可逆符号化データを再符号化生成させるパラメータ更新手段と
を備えることを特徴とする画像符号化装置。
【請求項１０】
前記第１の符号化手段による符号化にはＪＰＥＧを用い、前記第２の符号化手段による符号化にはＪＰＥＧ−ＬＳを用いることを特徴とする請求項９に記載の画像符号化装置。
【請求項１１】
符号化データを格納するための第１、第２のメモリを有し、画像データを入力し、当該画像データを符号化する画像符号化装置の制御方法であって、
第１のパラメータに従って、入力する画像データを所定画素ブロック単位に非可逆符号化し、非可逆符号化データを生成する第１の符号化工程と、
入力する画像データ中の前記所定画素ブロック単位に可逆符号化し、可逆符号化データを生成する第２の符号化工程と、
前記第１の符号化工程で生成される符号化データの符号長である第１の符号長と、前記第２の符号化工程で生成される符号化データの符号長である第２の符号長とを検出する符号長検出工程と、
前記第２の符号長が小さいほど、前記第２の符号化工程で生成される可逆符号化データが前記第１のメモリに格納される確率を高めるための重み付け係数を生成する生成工程と、
前記第１のメモリに格納された符号化データ量が所定データ量を越えたか否かを判断する監視工程と、
前記生成工程で生成された重み付け係数を、前記第１、第２の符号長のいずれか一方に適用し、適用後の第１、第２の符号長を比較し、符号長の短いと判定された符号化データを前記第１のメモリに格納するために選択する選択工程と、
前記第２のメモリ内の符号化データを復号し、第２のパラメータに従って再符号化して非可逆符号化データを生成すると共に、該再符号化後の符号化データと際符号化前の符号化データのうち、符号長の短い符号化データを前記第１のメモリに格納する再符号化工程と、
前記監視工程で前記符号化データ量が前記所定データ量を越えたと判断した場合に、前記重み付け係数を変更する判定条件変更工程と、
前記監視工程で前記符号化データ量が前記所定データ量を越えたと判断した場合、（ａ）前記第１のメモリ内の符号化データを破棄し、（ｂ）前記第１の符号化工程に設定されていた第１のパラメータを、圧縮率の高いパラメータに更新して画像データの符号化を継続させ、（ｃ）更新後の第１のパラメータと同じパラメータを第２のパラメータとして前記再符号化工程に設定して、前記符号化データ量が所定データ量を超える以前に得られた可逆符号化データを再符号化生成させるパラメータ更新工程と
を備えることを特徴とする画像符号化装置の制御方法。
【請求項１２】
画像データを入力し、当該画像データを符号化する画像符号化装置用のコンピュータプログラムであって、
符号化データを格納する第１、第２のメモリとなる領域を確保するメモリ確保手段と、
第１のパラメータに従って、入力する画像データを所定画素ブロック単位に非可逆符号化し、非可逆符号化データを生成する第１の符号化手段と、
入力する画像データ中の前記所定画素ブロック単位に可逆符号化し、可逆符号化データを生成する第２の符号化手段と、
前記第１の符号化手段で生成される符号化データの符号長である第１の符号長と、前記第２の符号化手段で生成される符号化データの符号長である第２の符号長とを検出する符号長検出手段と、
前記第２の符号長が小さいほど、前記第２の符号化手段で生成される可逆符号化データが前記第１のメモリに格納される確率を高めるための重み付け係数を生成する生成手段と、
前記第１のメモリに格納された符号化データ量が所定データ量を越えたか否かを判断する監視手段と、
前記生成手段で生成された重み付け係数を、前記第１、第２の符号長のいずれか一方に適用し、適用後の第１、第２の符号長を比較し、符号長の短いと判定された符号化データを前記第１のメモリに格納するために選択する選択手段と、
前記第２のメモリ内の符号化データを復号し、第２のパラメータに従って再符号化して非可逆符号化データを生成すると共に、該再符号化後の符号化データと際符号化前の符号化データのうち、符号長の短い符号化データを前記第１のメモリに格納する再符号化手段と、
前記監視手段で前記符号化データ量が前記所定データ量を越えたと判断した場合に、前記重み付け係数を変更する判定条件変更手段と、
前記監視手段で前記符号化データ量が前記所定データ量を越えたと判断した場合、（ａ）前記第１のメモリ内の符号化データを破棄し、（ｂ）前記第１の符号化手段に設定されていた第１のパラメータを、圧縮率の高いパラメータに更新して画像データの符号化を継続させ、（ｃ）更新後の第１のパラメータと同じパラメータを第２のパラメータとして前記再符号化手段に設定して、前記符号化データ量が所定データ量を超える以前に得られた可逆符号化データを再符号化生成させるパラメータ更新手段
として機能することを特徴とするコンピュータプログラム。
【請求項１３】
請求項１２に記載のコンピュータプログラムを格納したことを特徴とするコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像データを符号化する技術に関するものである。
【背景技術】
【０００２】
従来、静止画像データを圧縮するには、離散コサイン変換を利用した方法や、Wavelet変換を利用した方法が多く使われている。この種の符号化は、可変長符号化であるので、符号化対象の画像毎に符号量が変化する。
【０００３】
国際標準化方式であるＪＰＥＧ符号化では、１つの画像に対して１組の量子化マトリクスしか定義できないので、プリスキャン無しには、１つの画像（原稿）の符号化データを目標とする符号量に収めることは難しい。また、限られたメモリに記憶するシステムで使用する場合においては、メモリオーバーを起こす危険性がある。
【０００４】
これを防止するために、予定した符号量よりオーバーした場合は、圧縮率パラメータを変更して、同じ原稿の再読み込みを行なう方法や、予めプリスキャンによる符号量見積もりを行ない、符号量を調整するために、量子化パラメータの再設定を行なう方法などがとられていた。
【０００５】
上記のように、プリスキャン、本スキャンを行うのが一般的であるが、これでは少なくとも２回、同じ原稿を読取る必要があり、効率的とは言えない。特に複写機等において複数枚（ページ）の原稿をＡＤＦ（Auto Document Feeder）から１ページずつ連続的に読取りながら符号化する様な場合には、同じ原稿を２回読取ることは処理時間的にも不可能である。
【０００６】
本願出願人は、上記のようなプレスキャン、本スキャンの２回のスキャンを不要とし、かつ１つの画像全体に共通の符号化パラメータを用いた符号化を行った上で、目標となる符号化データ量に圧縮する技術を提案した（特許文献１）。この技術は、１度（１ページ分）の画像入力中に、符号化データを２つのメモリに順次格納していき、もしその途中で、所定メモリ内の符号化データ量が所定サイズを超えた場合には、その所定メモリ内のデータを破棄するとともに、それまでの符号化パラメータから更に圧縮率を高くする新しい符号化パラメータに更新して未だ符号化されていない部分の画像データの符号化処理を継続する（ここで得られる符号化データを第１符号化データとする）。このとき、もう一方のメモリには、圧縮率を上げる以前の符号化により得られた符号化データが格納されているので、更新後のパラメータに従って再符号化することにより、上記新しいパラメータで最初から符号化した場合と同等の符号化データを得ることができる（この再符号化で得られる符号化データを第２符号化データとする）。そしてこれら第１符号化データと第２符号化データを結合することにより、１つ（１ページ分）の画像の全体に渡って共通の符号化パラメータ（更新後の符号化パラメータ）で符号化された符号化データ（ＪＰＥＧ符号化にも準拠）を得ることができ、かつ目標となる符号化データ量にできるというものである。
【０００７】
一方で、上記特許文献１の様な符号化途中の符号化データ量に応じて再符号化を実行する技術ではないが、画像中の複数の領域において、可逆と非可逆の符号化の何れか一方を選択的に適用しつつ、画像全体を一定の符号量とする技術も知られている（特許文献２）。
【特許文献１】特開２００３−８９０３公報
【特許文献２】特開平１０−２２４６４０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
上記従来技術における特許文献１で用いられる圧縮符号化は、ＪＰＥＧ等の非可逆圧縮技術のみが用いられている。
【０００９】
さて、上記特許文献１の符号量制御技術において、１ページの画像の符号化中に、生成される符号化データ量が所定サイズを超えた場合、そのページ全体を一律圧縮率を上げるのと等価の処理を行うことになるため、部分的に予測以上の画質劣化を招くことがあった。特に、文字線画部分を含む画像を圧縮する場合に、この傾向が高かった。
【００１０】
ところで、ＪＰＥＧ−ＬＳという可逆圧縮技術が知られている。この技術は「ＪＰＥＧ」と冠しつつも、その符号化アルゴリズムは通常の非可逆のＪＰＥＧとは全く異なるものであり、自然画の圧縮率はＪＰＥＧに譲るものの、文字線画やコンピュータグラフィクスについては高い圧縮率で可逆符号化できるものとして知られている。
【００１１】
これを考慮すると、１ページに写真画像、文字画像が混在している原稿画像を圧縮する場合、出来るだけ文字線画部分には可逆圧縮を適用するべきである。
【００１２】
従って、このような原稿を圧縮する際に、先に示した特許文献１と同様に、一度の画像データの入力で、つまり、再入力を必要としないで、且つ、目標とするデータ量に収めるために、非可逆圧縮と可逆圧縮技術を併用する技術が望まれることになる。また、画像の一部または全部に対する非可逆符号化の適用において、その画像には共通の符号化パラメータを用いることも必要である。本発明はまさにこれらを解決することをその課題とする。
【課題を解決するための手段】
【００１３】
上記課題を解決するため、本発明の画像符号化装置は以下の構成を備える。すなわち、
画像データを入力し、当該画像データを符号化する画像符号化装置であって、
第１のパラメータに従って、入力する画像データを所定画素ブロック単位に非可逆符号化し、非可逆符号化データを生成する第１の符号化手段と、
入力する画像データを前記所定画素ブロック単位に可逆符号化し、可逆の符号化データを生成する第２の符号化手段と、
前記第１、第２の符号化手段からのいずれか一方の符号化データを格納する第１のメモリと、
前記第２の符号化手段で生成された符号化データを格納する第２のメモリと、
該第１のメモリに格納された符号化データ量が所定の目標データ量を超えたか否かを判断する監視手段と、
入力する画像データ中の所定画素ブロックの属性を検出し、当該検出された属性情報が所定の条件を満たすか否かを判定する属性判定手段と、
該属性判定手段で前記所定の条件を満たすと判定した場合、前記第２の符号化手段からの可逆符号化データを前記第１のメモリに格納するために選択する第１の選択手段と、
前記属性判定手段で前記所定の条件を満たさないと判定した場合、前記第１、第２の符号化手段それぞれからの符号化データのうち、符号長の短い方の符号化データを前記第１のメモリに格納するために選択する第２の選択手段と、
前記第２のメモリ内の可逆符号化データを復号し、第２のパラメータに従って再符号化して非可逆符号化データを生成すると共に、該再符号化により得られた非可逆符号化データと該再符号化前の可逆符号化データのうち、符号長の短い符号化データを前記第１のメモリに格納する再符号化手段と、
前記監視手段で前記符号化データ量が前記所定データ量を超えたと判断した場合に、前記属性判定手段の判定条件を変更する判定条件変更手段と、
前記監視手段で前記符号化データ量が前記所定データ量を超えたと判断した場合、（ａ）前記第１のメモリ内の符号化データを破棄し、（ｂ）前記第１の符号化手段に設定されていた第１のパラメータを、圧縮率の高いパラメータに更新して画像データの符号化を継続させ、（ｃ）更新後の第１のパラメータと同じパラメータを第２のパラメータとして前記再符号化手段に設定して、前記符号化データ量が所定データ量を超える以前に得られた可逆符号化データを再符号化させるパラメータ更新手段とを備える。
【発明の効果】
【００１４】
本発明によれば、可逆符号化、非可逆符号化の双方を併用しつつも、１度の画像入力により画像全体の符号化データを所定データ量に収めることが可能になり、かつ、画像の一部または全部に対する非可逆符号化の適用において、その画像に共通の符号化パラメータを用いることができる。また、文字線画領域の確率が高い属性を有する領域については、多少の符号化データ量の増加が有っても可逆符号化処理で生成される符号化データを優先的に利用することで、画質面にも優れた符号化データを生成することが可能になる。
【００１５】
または、可逆符号化、非可逆符号化の双方を併用しつつも、１度の画像入力により画像全体の符号化データを目標データ量に収めることが可能になり、かつ、画像の一部または全部に対する非可逆符号化の適用において、その画像に共通の符号化パラメータを用いることができる。また、最終的な符号化データに可逆符号化データが含まれる確率を積極的高くすることで、画質面にも優れた符号化データを生成することが可能になる。
【発明を実施するための最良の形態】
【００１６】
以下、添付図面に従って本発明に係る実施形態を詳細に説明する。
【００１７】
＜装置概要の説明＞
図２２は、実施形態が適用する複写機のブロック構成図である。
【００１８】
図中、１は装置全体の制御を司る制御部であり、ＣＰＵ、ＲＯＭ、ＲＡＭ等で構成される。２はＬＣＤ表示器や各種スイッチ、ボタン等で構成される操作部である。３は原稿読取部（イメージスキャナ部）であり、ＡＤＦ（Auto Document Feeder）を搭載している。読取った画像はＲＧＢ各色成分毎に８ビット（２５６階調）のデジタルデータを出力する。４は、不図示のインタフェース（ネットワークインタフェースを含む）を介して受信したＰＤＬ形式の印刷データに基づき、印刷画像を描画するレンダリング部である。５はセレクタであり、制御部１からの指示に従って、原稿読取部３、又は、レンダリング部４から出力されたビットマップイメージのいずれか一方を選択し、出力する。
【００１９】
６は本実施形態の特徴部分である符号化処理部である。この符号化処理部６の詳細な後述するが、画像データの符号化するものである。
【００２０】
７は２次記憶装置（実施形態ではハードディスク装置とする）であり、符号化処理部６より出力された符号化データを順に格納記憶する。
【００２１】
８は、復号処理部であって、２次記憶装置７に格納された圧縮符号化された画像データを、その格納順に読出し、復号する。９は画像処理部であって、復号処理部８からの復号画像を入力し、ＲＧＢ色空間を記録色空間であるＹＭＣへの変換、ＵＣＲ（Under Color Removal）処理を行うと共に、画像データの補正処理を行う。
【００２２】
１０はプリンタエンジン部である。プリンタエンジン部の印刷機構は、レーザビームプリンタエンジンとするが、インク液を吐出するタイプでも構わず、その種類は問わない。
【００２３】
上記構成において、例えば、利用者が操作部２を操作して、複写モードを選択し、原稿を原稿読取部３（のＡＤＦ）にセットし、複写開始キーを押下すると、原稿読取部３で読取られた原稿画像データは、ラスター順に、セレクタ５を介して符号化処理部６に転送され、ここで圧縮符号化されて２次記憶装置７に格納していく。
【００２４】
また、外部より印刷データを受信した場合には、セレクタ５をレンダリング部４を選択するようにし、レンダリング部４が生成した印刷データに基づく画像を圧縮符号化し、２次記憶装置７に格納することになる。
【００２５】
復号処理部８は、プリンタエンジン１０の印刷速度に応じて、２次記憶装置７から圧縮符号化データを読出し、復号処理する。そして、画像処理部９で復号した画像データからＹＭＣＫ成分の記録用画像データを生成する。そして、その結果をプリンタエンジン部１０に出力し、印刷を行う。
【００２６】
上記の通り、２次記憶装置７への圧縮符号化データの格納処理と、復号し印刷するための読出し処理は、非同期である。つまり、２次記憶装置７は画像圧縮処理と、復号処理との間に介在するバッファとして機能することになり、原稿読取り／符号化処理は、復号／記録処理に非依存なので、多数の原稿を高速に読取ることができ、次のジョブの原稿読取りにすばやく移行することが可能になる。
【００２７】
以上、実施形態における装置全体の構成について説明した。次に、本装置の特徴部分である符号化処理部６について、以下の各実施形態で説明する。
【００２８】
＜第１の実施形態＞
図１は、実施形態における符号化処理部６のブロック構成図である。以下、同図の各部を簡単に説明する。
【００２９】
入力部１０１には、複数ライン分のラインバッファーメモリを内蔵し、先に説明したように、セレクタ５を介して、原稿読取部３もしくはレンダリング部４からの画像データをラスター順に入力し、内部のラインバッファーに格納し、Ｎ×Ｍ画素ブロック（実施形態では８×８画素ブロックとした）単位に出力する。
【００３０】
第１の符号化部１０２は非可逆符号化部であって、圧縮率に影響を与えるパラメータに従って、入力部１０１より入力した画素ブロック単位に圧縮符号化処理を行い、その結果（符号化データ）を出力する。但し、符号化データの先頭には、第１の符号化部１０２で符号化されたことを示す識別ビットを付加する。
【００３１】
実施形態における、この画像符号化部１０２は、ＪＰＥＧ符号化（非可逆符号化）を適用した例を説明する。つまり、８×８画素単位に相当する画像データを直交変換し、後述する量子化ステップを用いた量子化をし、ハフマン符号化処理を行うものである。ここで生成される符号化データ量を左右するのが量子化ステップであり、これが圧縮率に影響を与える符号化パラメータとして符号化シーケンス制御部１１０により設定される。ＪＰＥＧ符号化は、自然画に適した技術として知られている。
【００３２】
図２１はＤＣＴ変換後の周波数係数を量子化する際に用いる量子化マトリクステーブルＱ０、Ｑ１、Ｑ２を示している（符号化シーケンス制御部１１０に記憶保持されている）。ここで、量子化マトリクステーブル内の値Ｑｉ（０，０）〜Ｑｉ（７，７）（ｉ＝０、１、２…）が量子化ステップ値を意味する。量子化ステップ値は、概ね、Ｑ０＜Ｑ１＜Ｑ２…の関係にある。量子化ステップ値が大きくなればなるほど、量子化後の周波数係数値の取り得る範囲が狭くなり、圧縮率が向上する。
【００３３】
第２の符号化部１０３は、第１の符号化部１０２と異なり、可逆符号化部である。可逆符号化であるため、その復号結果は符号化する前の画像と同じとなり、原理的に画質の劣化は発生しない。実施形態では、この第２の符号化部１０３にＪＰＥＧ−ＬＳを用いた。ＪＰＥＧ−ＬＳは「ＪＰＥＧ」を冠するものの、第１の符号化部で採用している非可逆符号化ＪＰＥＧとはそのアルゴリズムは全く異なる。ＪＰＥＧ−ＬＳ符号化の特徴は、文字線画、コンピュータグラフィックスに適した技術であり、これらの画像を符号化する場合には、非可逆符号化であるＪＰＥＧに与える量子化ステップが“１”（実質可逆）は勿論こと、“２”、“３”等の比較的小さい量子化ステップ値よりも少ない符号データを生成することができる。
【００３４】
また、第２の符号化部１０３は、第１の符号化部１０２と実質的に同じタイミングで、同じ画素ブロックに対して符号化を行い、符号化データを出力する。また、第２の符号化部１０３は、符号化データを出力する際に、その符号化データの先頭に第２の符号化部１０２で符号化されたことを示す識別ビットを付加する。
【００３５】
第１の符号長検出部１０８は、第１の符号化部１０２から出力される画素ブロックの符号化データ長（識別ビットである１ビットを含む）を検出し、符号化シーケンス制御部１０８に出力する。第２の符号長検出部１０９は第２の符号化部１０３から出力される画素ブロックの符号化データ長（識別ビットである１ビットを含む）を検出し、符号化シーケンス制御部１０８に出力する。
【００３６】
属性判定部１３０は、第１の符号化部１０２、第２の符号化部１０３とほぼ同じタイミングで８×８画素ブロックの属性を判定しその結果を符号化シーケンス制御部１１０に出力する。第１の実施形態における属性判定部１３０は、計算を単純なものとするため、８×８画素ブロック中に存在する色数を計数し、その色数情報を符号化シーケンス制御部１１０に出力するようにした。８×８画素であるので、色数の最大値は６４個、最低値は１となる。
【００３７】
符号化シーケンス制御部１１０は実施形態における符号化処理部６の制御を司るものである。その処理の１つに、第１の符号長検出部１０８、第２の符号長検出部１０９及び属性判定部１３０からの信号に基づき、第１の符号化部１０２、第２の符号化部１０３のいずれか一方の符号化データを第１のメモリ１０５に格納するよう第１のメモリ制御部１０４へ制御信号を発生する。
【００３８】
上記をより詳しく説明する。注目ブロックに対する属性判定部１３０から通知される色数が所定数（ｎ色）以下の場合には、該当するブロックの符号化データとして無条件に第２の符号化部１０３からの符号化データを採用するための信号を生成する。注目ブロックに含まれる色数が所定数を越える場合には、第１の符号長検出部１０８からの符号長と第２の符号長検出部１０９からの符号長とを比較し、短い符号長の符号化データを採用するための信号を生成する。
【００３９】
符号化シーケンス制御部１１０では、１ページの符号化を開始してから符号化データ量が目標データ量を超えた場合、その属性判定部内の色数閾値を現在の色数より低く（ｎ−１色）設定する。
【００４０】
こうすることで、目標データ量を越えた場合、無条件に第２の符号化部１０３からの符号化データを採用される率を減らし、その後の両符号化方式の符号長の比較により総符号量を減らすことが可能になる。
【００４１】
上記のように、符号化シーケンス制御部１１０は、ブロック単位に、第１の符号化部１０２、第２の符号化部１０３のいずれか一方からの符号化データを第１のメモリ１０５に格納するための制御信号を生成することになる。
【００４２】
上記を実現するための処理は、例えば図２３に示す処理を行えば良い。すなわち、ステップＳ２３０１では、１ページの符号化を開始してから、そのページの符号化中に過去に一度でもカウンタ１１１の値が目標データ量を越えたことがあるか否かを判定する。１ページの符号化開始時には、当然、この判定はＮｏとなるので、ステップＳ２３０２に進む。ステップＳ２３０２では、注目画素ブロック内の色数（属性判定部１３０からの出力）が所定数以下であるか否かを判定し、所定数以下の場合には第１のメモリ１０５に格納する符号化データとして、第２の符号化部１０３からの符号化データを選択する。このとき、第１のカウンタ１１１には、第２の符号長検出部１０９からの符号長情報を累積加算することになる。
【００４３】
また、ステップＳ２３０１でＹｅｓ、もしくは、ステップＳ２３０２でＮｏと判定された場合には、ステップＳ２３０４に進み、２つの符号化データのうち符号長の短い方を第１のメモリ１０５に格納する対象として選択する。このとき、選択した符号化データの符号長情報を第１のカウンタ１１１に累積加算する。なお、ステップＳ２３０１の判定は、１ページの符号化が開始されるときに０クリアされるフラグを用意し、第１のカウンタ１１１が一度でも目標データ量を越えたと判断した場合に所定のフラグを１にセットし、そのフラグを元に判定すればよいであろう。
【００４４】
このように、符号化シーケンス制御部１１０内の第１のカウンタ１１１は、１ページの符号化を開始する際にリセットされ、１画素ブロック単位に、第１のメモリ１０５に格納される符号化データの符号長を累積加算するものである。
【００４５】
第１のメモリ制御部１０４は符号化シーケンス制御部１１０の制御の元で、第１のメモリ１０５への符号化データの書き込み、消去処理を行う。この第１のメモリ１０５は、１ページの符号化が完了した際の最終的に確定した符号化データを格納することになり、２次記憶装置７に出力される符号データを格納するものでもある。
【００４６】
第２のメモリ制御部１０６は符号化シーケンス制御部１１０の制御の元で、第２符号化部１０３で生成された符号化データの第２のメモリ１０７への格納処理、及び、第２のメモリ１０７より符号化データの読出しを行う。この第２のメモリ１０７は、１ページの画像データを符号化する際の作業エリアとして使用されるものである。
【００４７】
再符号化部１１２は、第２のメモリ１０７に格納された符号化データ（可逆符号化データ）中の、符号化シーケンス部１１０より指定された範囲の符号化データを再符号化する。この再符号化部１１２は例えば図２０の構成になる。
【００４８】
第２のメモリ１０７には第２の符号化部（ＪＰＥＧ−ＬＳ符号化部）１０３で符号化された符号化データが格納されているので、先ず、ＪＰＥＧ−ＬＳ復号部１１２ａで原画像の画素ブロックに復号（復元）する。そして、ＪＰＥＧ符号化部１１２ｂは、復元された画素ブロックを、符号化シーケンス制御部１１０より設定された量子化マトリクステーブルに従ってＪＰＥＧ符号化（非可逆符号化）を行う。そして、セレクタ１１２ｃはＪＰＥＧ符号化部１１２ｂから出力された非可逆符号化データと、再符号化する以前の状態の可逆符号化データのデータ量の小さい方を選択し、出力する。この処理を符号化シーケンス制御部１０６より指定された範囲について繰り返し実行する。第２のカウンタ１１３は、再符号化部１１２の再符号化が開始される際にリセットされ、再符号化部１１２で生成される符号化データ量を累積カウントする。設定された範囲の再符号化が完了した場合、第２のカウンタに保持されている値（再符号化で生成された符号化データ量）は、符号化シーケンス制御部１１０に出力される。
【００４９】
以上、図１の構成について説明したが、全体の処理を更に詳しく説明すると次の通りである。
【００５０】
１ページの画像データの符号化を開始する際に、入力される画像サイズに応じた目標データ量が符号化制御部１１０に制御部１より設定される。符号化シーケンス制御部１１１は第１の符号化部１０２に対して初期の量子化マトリクステーブルＱ０（最高画質且つ最低圧縮率に相当する符号化パラメータ）を設定し、第１のカウンタ１１１をゼロクリアする。そして、第１の符号化部１０２、第２の符号化部１０３に対して符号化処理を開始させる。
【００５１】
以下は、１ページの画像データの入力を開始した直後の符号化処理の説明である。
【００５２】
第１の符号長検出部１０８及び第２の符号長検出部１０９より、同じ画素ブロックに対する符号化データが出力されると共に、第１、第２の符号長検出部１０８、１０９でそれぞれの符号長が得られる。また、属性判定部１３０は、該当する画素ブロックの色数情報を符号化シーケンス制御部１１０に出力する。
【００５３】
符号化シーケンス制御部１１０は、属性判定部１３０からの色数が所定数以下の場合、第２の符号化部１０３からの符号化データのデータ長を第１のカウンタ１１１に加算し、且つ、第１のメモリ制御部１０４には第２の符号化部１０３からの符号化データを格納するよう制御信号を発行する。
【００５４】
符号化シーケンス制御部１１０は、属性判定部１３０からの色数が所定数を超える場合には、第１の符号長検出部１０８、第２の符号化長検出部１０９の小さい符号長を選択し、第１のカウンタ１１１に加算させる。このとき、いずれを選択したのかを示す制御信号を第１のメモリ制御部１０４に出力することで、符号長の短い符号化データを第１のメモリ１０５に格納させる。なお、２つの符号化長が同じであった場合には、可逆符号化データを選択したことを示す制御信号を出力する。
【００５５】
第１のメモリ制御部１０４には、符号化シーケンス制御部１１０より上記の制御信号を受け取り、第１の符号化部１０２、第２の符号化部１０３から出力される符号化データの一方を選択し、第１のメモリ１０５に格納する。
【００５６】
以上の結果、第１のメモリ１０５には、画像データの各画素ブロックについて符号長の短い符号化データが格納されていく。つまり、第１のメモリ１０５には、可逆符号化データと非可逆符号化データが混在して格納されていく。一方、第２のメモリ１０７には可逆符号化データのみが格納されていくことになる。
【００５７】
ここで注意したい点は、第１のカウンタ１１１には第１のメモリ１０５に格納される符号化データの総符号量を示す情報が格納されることである。
【００５８】
符号化シーケンス制御部１１０は、１ページ分の画像の符号化処理が進行中、第１のカウンタ１１１の値、すなわち、第１のメモリ１０５に格納される符号化データの総量を監視し、目標データ量を超えた否かを判定する（或いは目標データ量に到達したか否かを判定すると考えても良い）。そして、第１のカウンタ１１１に格納された値（総符号量）が、目標データ量を越えたと判定した場合、符号化シーケンス制御部１１０は次の処理を行う。
１．第１のメモリ１０５内の格納済みのデータを廃棄するよう第１のメモリ制御部１０４に制御信号を出力する。第１のメモリ制御部１０４は、この制御信号に基づいて、メモリアドレスカウンタをクリアするか、あるいは、符号化データ管理テーブルをクリアすることにより、格納された符号化データを廃棄する。
２．第１のカウンタ１１１をゼロクリアする（入力部１０１からの画像の入力は継続している）。
３．第１の符号化部１０２に対して、今までより高い圧縮率で符号化を行うようにするため、量子化マトリクステーブルを更新する。すなわち、従前にセットされた量子化マトリクステーブルがＱiであった場合には、Ｑi+1をセットする。初期状態ではＱ０がセットされていたので、最初に目標量を越えたと判定した場合にはＱ１がセットされることになる。
４．第２のカウンタ１１３をゼロクリアし、再符号化部１１２に量子化マトリクステーブルＱi+1をセットし、第２のメモリ１０７に格納されている符号化データの再符号化を開始させる。再符号化して得られた符号化データ（可逆・非可逆符号化データが混在している）は、第２のメモリ１０７に再格納する。なお、第２のメモリ１０７には、第２の符号化部１０３からの符号化データも格納されているので、両者は区別して格納される。
５．再符号化が完了した場合、第２のメモリ１０７に「再」格納された符号化データを、第１のメモリ１０５に転送すると共に、第２のメモリより削除する（符号化部１０３からの符号化データは削除しない）。そして、第２のカウンタ１１３の値を読出し、第１のカウンタ１１１に足し込む。この結果、第１のカウンタ１１１は再び第１のメモリに格納された符号化データの総量を示すことになる。
６．属性判定部１３０からの色数判定の際に用いる色数閾値（所定数の色数）をより低いものに変更する。
【００５９】
なお、第１のメモリ１０５に符号化データを選別するための条件から、属性判定部１３０からの情報を除外しても良い。この場合、第１の符号長検出部１０８及び第２の符号長検出部１０９からの２つの符号長情報に基づき、短い方の符号化データを第１のメモリ１０５に格納することになる。
【００６０】
なお、再符号化処理が終了したかどうかは、第２のメモリ制御部１０６が検出する。すなわち、再符号化処理するために読み出すデータが無くなれば、再符号化処理の終了を符号化シーケンス制御部１１０に知らせる。実際には、第２のメモリ制御部１０７の読み出し処理だけでなく、再符号化部１１１の処理も終了した後に、符号化処理が完了したことになる。
【００６１】
そして１ページの画像の入力と符号化が完了する前に再び総符号化データ量が目標データ値を越えたと判断した場合、上記工程１乃至６を実行する。従って、最終的に、第１のメモリ１０５には目標データ量以下の符号化データが格納されることになる。
【００６２】
上記、図１の構成における符号化シーケンス制御部１１０の処理手順を図９のフローチャートに示すが、説明を簡単にするために、簡略化した図３のフローチャートに従ってまず、説明する。
【００６３】
図３のフローチャートは、大別すると、下記の３つの処理フェーズに分かれる。
（１）  符号化フェーズ
（２）  符号化・再符号化フェーズ
（３）  転送フェーズ
上記それぞれの処理フェーズにおいて、どのように画像データ、符号化データ等が流れて処理され、メモリにどのように格納されるのかを視覚的にわかりやすく示したのが図４乃至図８である。
【００６４】
図４は、図３のフローチャートにおけるステップＳ３０３とＳ３０５に対応する符号化フェーズの初期状態を表す。
【００６５】
図４におけるスイッチ４０は、１ページの符号化を開始してから第１のカウンタ１１１が目標データ量を越えないと判定されている間では、第１の符号長検出部１０８、第２の符号長検出部１０９、及び、属性判定部１３０からの情報に従って、第１の符号化部１０２からの符号化データと第２の符号化部１０３からの符号化データのいずれかを選択するものである。このスイッチ４０は、符号化シーケンス制御部１１０及び第１のメモリ制御部１０４の機能で実現することになる。第１のメモリ１０５には２つの符号化部の符号データのうち符号長の短い方が格納される。従って、第１のメモリ１０５に格納されるデータ量Ｉは、第２のメモリ１０７に格納されるデータ量Ｉ’よりも少ない関係が維持されることになる。
【００６６】
図５は、ステップＳ３０９で量子化マトリクステーブルを変更した際の状態を示している。図示のように、第１のメモリ１０５内の符号化データはない。
【００６７】
図６は、ステップＳ３１１〜Ｓ３１５に対応する符号化・再符号化フェーズの処理状態を示し、図７はステップＳ３１７に対応する転送フェーズの処理状態を、図８は転送フェーズ後の符号化フェーズの処理状態を表す。以下、各フェーズについて説明する。
【００６８】
＜＜符号化フェーズ＞＞
１ページ分の画像データの符号化処理は、符号化パラメータの初期設定処理（ステップＳ３０１）から始まる。ここでは、符号化処理する画像サイズ（ページ記述レンダリング等の入力部１０１から読み取る用紙サイズ）から一意的に定まる符号化データ量の目標データ量や第１の符号化部１０２に適用する量子化マトリクステーブルＱ０を設定する処理である。
【００６９】
この後、ステップＳ３０３にて、第１の符号化部１０２、第２の符号化部１０３及び属性判定部１３０の処理を開始させる。
【００７０】
この結果、第１のメモリ１０５には、画素ブロック単位に、その画素ブロック中の色数が所定以下の場合には無条件に第２の符号化部１０３からの符号化データが格納される。また、その画素ブロック中の色数が所定数を越える場合には、第１の符号化部１０２からの符号化データ及び第２の符号化部１０３からの符号化データのうち符号長の短い一方の符号化データが第１のメモリ１０５に格納されていく。第１のメモリ１０５に格納されている符号化データ量は、第１のカウンタで計数する点は既に述べた通りである。一方、第２のメモリ１０６には、第２の符号化部１０３からの符号化データが格納されていくことになる。図４は、この状況を示している。第１のメモリ１０５に格納されるデータ量を示す領域Ｉは、少なくとも第２のメモリ１０７に格納されるデータ量を示す領域Ｉ’以下のなる。
【００７１】
次にステップＳ３０５にて、該データ量のカウント値が上記目標値をオーバーしたかどうかを検知し、オーバーしていなければステップＳ３０３の第１の符号化と第２の符号化処理を継続する。これが、初期状態の符号化フェーズである。
【００７２】
＜＜符号化・再符号化フェーズ＞＞
符号化処理が進行し、第１のメモリに格納される総符号データ量が目標データ量をオーバーすると、ステップＳ３０７にて第１のメモリ１０５内の符号化データを廃棄すると共に、ステップＳ３０９にて、第１の符号化部１０２に設定されていた量子化マトリクステーブルＱ０を、次の段階のＱ１に更新する。総符号化データ量が目標データ量をオーバーするということは、圧縮後のデータ量が目標以内に収まらないことを意味する。よって同じ量子化ステップを用いて符号化処理を継続しても意味がないので、前よりも量子化ステップ幅の大きい量子化ステップＱ１に変更するわけである。
【００７３】
量子化ステップを変更した後、ステップＳ３１１では、第１の符号化部１０２と第２の符号化部１０３の符号化処理を再開する。また、これ以降、すなわち、最初に第１のカウンタ１１１が目標データ量を越えたと判断した以降では、属性判定部１３０からの色数情報に対する閾値を更に低くし、８×８画素ブロック中に存在する色数が所定の色数閾値以下であれば無条件に第２の符号化部１０３からの符号化データを採用し、色数がそれ以上である場合には２つの符号化データの短い方を第１のメモリ１０５に格納するように変更する。
【００７４】
また、再符号化部１１２に量子化マトリクステーブルＱ１（第１の符号化部にセットした更新後の量子化マトリクステーブルと同じ）をセットし、第２のメモリに格納されている符号化データ量の再符号化を開始しさせ、再符号化結果を再び第２のメモリに格納させる。この状態を示すのが図５である。
【００７５】
そして、ステップＳ３１５で再符号化の処理が完了するまで待つことになる。
【００７６】
＜転送フェーズ＞
ステップＳ３１５にて、再符号化が完了したと判断した場合、第１メモリ１０５及び第２のメモリ１０７の符号化データの格納状況を示すのが図６である。図示において、領域ＩＩ、ＩＩ’は、再符号化処理を行っている最中に、新に入力した画像データに対応する符号化データを示し、領域Ｉは、領域Ｉ’に格納されていた符号化データを再符号化した結果（非可逆符号化データと可逆符号化データが混在している）を示している。
【００７７】
ステップＳ３１７では、図７に示すように、第２のメモリ１０７に格納された再符号化データ（図示の領域Ｉ）を、第１のメモリ１０５に転送する。この転送が完了すると、第２のメモリ１０７内の領域Ｉのデータは破棄（もしくは上書きを許容）する。
【００７８】
上記転送フェーズが終了したら、ステップＳ３０３，Ｓ３０５の符号化フェーズに戻り、符号化フェーズに戻ることになる。この結果、図８に示すように、新たな入力画像データに対する符号化データＩＩＩ、ＩＩＩ’をそれぞれのメモリへの格納処理を行うことになる。この符号化フェーズは、初期状態の符号化フェーズ（図４）と少し異なり、第１の符号化部１０２で符号化する際の量子化ステップがＱ０からＱ１に変更されていると共に、第１のメモリ１０５に格納される符号化データの順序が、画像入力順にならない点である。それらの違いを無視すれば、転送フェーズ直後の符号化フェーズと初期状態の符号化フェーズは、同じと見なせる。なお、図８に示すように、符号化データの順番は必ずしも時系列になるとは限らないが、各フェーズにおける各脳アドレスを別途記憶しておき、１ページの符号化処理が完了し２次記憶装置７に出力する際には、第１のメモリ１０５より時系列に符号化データを読出し、出力するようにすれば良い。
【００７９】
よって、符号化フェーズ、符号化・再符号化フェーズと転送フェーズの３つを繰り返すことで、最終的に１ページの画像データをデータ量設定値以下に圧縮した符号を第１のメモリ１０５に格納することが出来る。しかも、入力部１０１は一連の処理が終わるまで、入力を継続するだけである。すなわち、画像を再度最初から入力し直すということが無くなる。
【００８０】
図３に示したフローチャートは、説明が理解しやすいように、図４乃至図８に示した各フェーズに対応する処理のみを記述した。しかしながら実際には、１ページの画像データの入力はどこかのフェーズで終了する。従って、どのフェーズで終了したかによって、それ以降の対応も多少異なる。それを考慮した流れを示したのが図９のフローチャートである。図９のフローチャートは、１ページ分の画像データの入力完了と図３で説明した各種処理との関係を考慮したものであり、ここでは図３のフローチャートに、ステップＳ８０１、Ｓ８０３、Ｓ８０５、Ｓ８０７を追加している。
【００８１】
ステップＳ８０１、Ｓ８０３、Ｓ８０５は、それぞれ、符号化フェーズ、符号化・再符号化フェーズ、転送フェーズにおいて、入力部１０１からの１ページ分の画像データの入力が終了したことを検知する。
【００８２】
符号化フェーズと転送フェーズで１ページ分の画像データの入力が終了したことを検知した場合（ステップＳ８０１、Ｓ８０５）、ステップＳ８０７へ移り、当該ページの圧縮符号化処理を終了し、次に処理すべき１ページ以上の画像データがあれば、次の１ページ分の画像データの圧縮符号化処理を開始し、無ければ停止状態に入る。なお、１ページの先頭から符号化を開始する場合には、第１のメモリ１０５に格納する条件に属性判定部１３０からの情報を加える。
【００８３】
一方、符号化・再符号化フェーズで１ページ分の画像データの入力終了を検知した場合（ステップＳ８０３）には、第１の符号化部１０２、第２の符号化部１０３では再符号化処理する画像データが無くなるまで一旦動作を止める必要があるので、ステップＳ３１１の符号化処理をパスし、ステップＳ３１３で、今までに第１の符号化部１０２、第２の符号化部１０３で符号化済みの画像データを所定の符号化データ量に抑える為の再符号化処理のみを継続して行なう。再符号化処理が全て終了して、その後の転送処理が終わらないと、１ページ分の画像データ全体の符号化データが第１のメモリ上に集まらないため、１ページ分の画像データの入力終了後も再符号化処理及びそれに続く転送処理は継続して行われる必要がある。この場合には、ステップＳ３１５にて、再符号化処理が全て終了したことを検知すると、符号化・再符号化フェーズ中に、第２のメモリ１０７のみに格納された符号化データを第１のメモリに転送し（ステップＳ３１７）た後、次のステップＳ８０５にて、１ページ分の画像データの入力終了が検知されてステップＳ８０７へ移ることになる。
【００８４】
以上が実施形態における動作であり、図９の動作説明でもある。
【００８５】
以上説明したように、本実施形態では、１ページの画像の先頭から画素ブロック単位に符号化処理を行っていく最中に、注目画素ブロック中の色数が所定数以下の場合にはそのブロックは文字線画である確率が非常に高いことを意味するから、可逆符号化を行う第２の符号化部１０３からの符号化データを優先して第１のメモリ１０５に格納する。そして、注目画素ブロックの色数が所定数を越える場合には、２つの符号化部からの符号化データのうち、短い符号長の符号化データを第１のメモリ１０５に格納する。
【００８６】
この結果、第１のメモリ１０５に格納される符号化データが目標符号データ量を越えないで１ページの符号化が完了する場合には、その復号画像は高い品質が維持されることになる。また、符号化処理中に、符号化データ量が目標データ量を超えると、画素ブロックの色数に関する条件は緩和され、短い符号長の符号化データが格納される易くなる。そして、少なくとも非可逆符号化データを生成する第１の符号化部１０２、可逆符号化データを生成する第２の符号化部１０３という異なる符号化技術を用いながらも、１ページの画像を入力を中断することなく、目標符号化データ量以下の符号化データを生成することが可能となる。
【００８７】
特に、注目したい点は、ＪＰＥＧとＪＰＥＧ−ＬＳという２つの技術を併用している点である。ＪＰＥＧ符号化は自然画に対して圧縮効率が高いことが知られている。一方、ＪＰＥＧ−ＬＳ符号化は、文字線画に対して高い圧縮率が得られることが知られている。
【００８８】
かかる点から、実施形態における画像符号化処理部６は次のような作用効果が期待できることになる。なお、以下では目標符号データ量は、１ページ全体が自然画である場合を想定したものとする。
１．原稿が文字のみで構成される通常原稿の場合、色数の条件、及び、符号長の条件に従って、第１のメモリ１０５に格納される画素ブロック単位の符号化データとしては、第２の符号化部１０３からのＪＰＥＧ−ＬＳ符号化データ（可逆符号化データ）が選択される可能性が高くなる。また、その際の圧縮率は非常に高いものであり、総符号化データ量が目標符号量をオーバーしないまま符号化が完了することが期待できる。また、可逆符号化データであるので、印刷結果も原画像に忠実なものとなり、印刷結果の画質は符号化が介在しないのと実質的に等価のものとなる。
２．原稿が自然画のみである場合、第１のメモリ１０５に格納される符号化データとして、第１の符号化部１０２からのＪＰＥＧ符号化データ（非可逆符号化データ）が選択される可能性が高くなる。また、目標データ量をオーバーする回数も、数回になる可能性がある。しかし、もともと自然画であるため階調性が画質を決めるファクタであるので、実害のない画質で印刷が可能となる。
３．原稿が自然画と文字が混在している場合、文字線画領域ではＪＰＥＧ−ＬＳ符号化データが選択される可能性が高く、自然画ではＪＰＥＧ符号化データが選択される可能性が高くなる。文字線画領域では、圧縮効率が高いＪＰＥＧ−ＬＳ符号化が選択される可能性が高いわけであるから、１ページを占める自然画領域と文字線画の比以上に、自然画領域に割り当てる符号化データ量を大きくすることができることを意味する。つまり、写真画像の量子化ステップの値は比較的小さなままで、符号化処理が完了することが期待できるので、文字線画は勿論のこと、写真画像領域の画質劣化を抑制することが可能になる。
【００８９】
ここで、第１カウンタ１１１（符号化データ量）の時間軸の推移の一例を図１３に示す。
【００９０】
図示の場合、タイミングＴ０で、原稿画像の入力を開始し、タイミングＴ５で原稿画像の入力が完了した場合を示している。入力される原稿のサイズが固定であれば、タイミングＴ５は固定となる。以下、各タイミングでの処理を説明する。
【００９１】
タイミングＴ０：
画像入力開始（符号化開始）タイミングである。このとき、第１の符号化部１０２には、初期値として量子化マトリクステーブルＱ０をセットし、第１カウンタ１１１は“０”に初期化される。この後、画像の入力及び符号化が継続すると、画像データの符号化データの符号化が行われ、第１カウンタ１１１のカウント値は徐々に増えていく。
【００９２】
タイミングＴ１：
画像データの符号化データ量が、目標符号量に到達した（或いは超えた）場合を示している。このとき、第１のメモリ１０５の画像データの符号化データは破棄し、第１カウンタ１１１をゼロクリアし、第１の符号化部１０２にセットされていた量子化マトリクステーブルをＱ１に更新する。また、再符号化部１１２にも量子化マトリクステーブルＱ１をセットし、再符号化処理を開始させる。
【００９３】
タイミングＴ２：
再符号化及び転送処理の完了を示している。再符号化が完了すると、再符号化して得られた符号データが第２のメモリ１０７から第１のメモリ１０５に転送されると共に、再符号化データ量を示す第２のカウンタ１１３の値が、第１のカウンタ１１１に足し込まれる。この結果、第１のメモリ１０５及び第２のメモリ１０７には、１ページの先頭からタイミングＴ２までの間に入力した画像データに対する量子化マトリクステーブルＱ１で符号化したのと等価の符号化データが格納される。
【００９４】
タイミングＴ３：
再び、画像データの符号化データ量が、目標符号量に到達した（或いは超えた）場合を示している。このとき、第１のメモリ１０５の画像データの符号化データは破棄し、第１カウンタ１１１をゼロクリアし、第１の符号化部１０２の量子化マトリクステーブルをＱ２をセットする。また、再符号化部１１２にも量子化マトリクステーブルＱ２をセットし、再符号化処理を開始させる。
【００９５】
タイミングＴ４：
再符号化及び転送処理の完了を示している。再符号化が完了すると、再符号化して得られた符号データが第２のメモリ１０７から第１のメモリ１０５に転送されると共に、再符号化データ量を示す第２のカウンタ１１３の値が、第１のカウンタ１１１に足し込まれる。この結果、第１のメモリ１０５及び第２のメモリ１０７には、１ページの先頭からタイミングＴ２までの間に入力した画像データに対する量子化マトリクステーブルＱ２で符号化したのと等価の符号化データが格納される。
【００９６】
タイミングＴ５：
１ページの原稿入力の完了を示している。この場合、第１のメモリ１０５には、１ページの画像の符号化データが格納されていることになるので、その結果を、２次記憶装置７に出力する。
【００９７】
ここで、２枚めの原稿画像を読取る場合には、上記タイミングＴ１からの処理を繰り返すことになる。
【００９８】
なお、画像によっては、原稿画像の入力が完了したタイミングＴ５の直前にて、第１カウンタ１１１の値が目標量をオーバーすることも有り得る。この場合、タイミングＴ５の後に、再符号化及び転送処理が行われることになる。従って、第１のメモリ１０５に格納された符号化データを２次記憶装置７に出力する条件は、原稿画像の入力が完了し、且つ、符号化（再符号化及び転送）が完了した場合となる。
【００９９】
また、再符号化１１２による再符号化しようとする符号化データ量は、第１カウンタ１１１の値が目標データ値をオーバーする回数を重ねるほど、多くなる傾向にある。換言すれば、目標値をオーバーする回数が少ないほど、符号化処理に要する時間が少ないことになる。
【０１００】
＜符号化処理部６の変形例１＞
図２は、図１に対する変形例である。図１と異なる点は、再符号化部１１２で再符号化して得られた符号化データの格納先を、第１のメモリ１０５にした点である。これ以外の構成は図１と同じである。
【０１０１】
図１０は、第１のメモリ１０５に格納された総符号化データ量が目標データをオーバーし、第１のメモリ１０５内のデータを破棄し、第２のメモリ１０７に格納されている符号化データ（図示の領域Ｉ’）の再符号化を開始する際の状態を示している。
【０１０２】
図示に示すように、再符号化部１１２の再符号化の格納先は第１のメモリ１０５に設定して、再符号化を開始させる。
【０１０３】
図１１は、再符号化が完了した際の２つのメモリの符号化データの格納状態を示している。再符号化が完了すると、図示のように、第１のメモリ１０５には、領域Ｉで示す符号化データが格納される。この領域Ｉの符号化データは、目標データ量をオーバーしたと判定する以前までに入力した画像データを、量子化マトリクステーブルＱ１で符号化した場合に相当するものとなる。
【０１０４】
再符号化が行われている最中にも、画像データの入力及び符号化が行われているので、図示に示すように領域ＩＩ及びＩＩ’が存在する。
【０１０５】
第１のメモリ１０５には、空き領域１０５ａが生成されることになるので、図示の領域ＩＩの符号化データを、領域Ｉの後端位置にまで移動させる。この後、符号化フェーズを再開することになり、この際のメモリへの格納状態は図１２に示すようになる。
【０１０６】
図１に対して図２の構成のメリットは、再符号化後のデータ転送が実質的に無くなる点である。
【０１０７】
なお、この変形例では、転送フェーズが無くなるだけであるので、先の説明と本変形例は、３つのフェーズを繰り返して処理することに変わりは無い。従って、処理の内容も図３や図９と殆ど同じであるので、説明は不要であろう。なお、図１１では空き領域１０５ａを無くすために、第１のメモリ１０５内での移動を行ったが、各領域の接続関係を管理するファイル管理テーブル、或いは、パケット管理テーブル等を設ければ良いので、必ずしも内部転送は必要ではない。
【０１０８】
＜符号化処理部６の変形例２＞
上記第１の実施形態及び変形例１では、第１のメモリ１０５内の符号化データ量が目標データ量をオーバーした際に、第２のメモリ１０７の符号化データを再符号化部１１２で再符号化した。換言すれば、再符号化部１１２は、第１のメモリ１０５内の符号化データ量が目標データ量未満である期間は実行しないことになる。
【０１０９】
そこで、期間を有効利用する例を変形例２として説明する。
【０１１０】
以下は、第１のメモリ１０５内の符号化データ量が目標データ量未満の場合であって、第２のメモリ１０７に第２の符号化部１０３からの可逆符号化データが格納されていく最中の処理の説明である点に注意されたい。また、条件として、第１の符号化部１０２に設定される量子化マトリクステーブルがＱiであるものとして説明する。
【０１１１】
第２のメモリ１０７に第２の符号化部１０３より可逆符号化データを格納していくのは、これまでの実施形態と同じである。但し、再符号化部１１２は、格納されている可逆符号化データから順に読出し、量子化マトリクスＱi+1で再符号化して非可逆符号化データを生成し、その結果を第２のメモリ１０７に格納していく処理を前倒し的に行う。
【０１１２】
この結果、第１のメモリ１０５内の符号化データが目標データ量をオーバーしたとき、第２のメモリ１０７には可逆符号化データは勿論のこと、ある程度の非可逆符号化データが存在することが約束されるので、同一画素ブロック位置であれば小さいほうを第１のメモリに転送し、比べる対象となる非可逆符号化データが存在しない画素ブロックについてだけ、図２０による処理を行えば良いことになる。
【０１１３】
また、第２のメモリ１０７から第１のメモリ１０５への転送が完了した場合、第２のメモリ内に格納されていた非可逆符号化データを破棄し、今度は、量子化マトリクスＱi+2を設定し、再符号化することを開始すればよい。以上の結果、再符号化に係る処理を更に短縮させることが可能になる。
【０１１４】
＜符号化処理部６の変形例３＞
先に説明した第１の実施形態では、１ページの画像入力中に符号化データ量（第１のカウンタ１１１の値）が目標値をオーバーした際に一旦ゼロクリアした。そして、第１のカウンタ１１０が再び正確な総符号量を保持するのは、再符号化部１１２による再符号化が完了した場合になる。つまり、図１３におけるタイミングＴ１−Ｔ２間、及び、Ｔ３−Ｔ４間では、一時的に、符号化データ量が不明な状態になる。また、タイミングＴ５で原稿画像の入力が終了したとしても、たまたまタイミングＴ５の直前で、総符号量が目標値をオーバーした場合には、再符号化部１１２による再符号化が完了しない限り、次の原稿画像の入力が行えない。
【０１１５】
本変形例３では、上記の問題を解決する。本変形例３における符号化処理部６の構成を図１４に示す。
【０１１６】
図１との違いは、ＪＰＥＧ（非可逆）符号化部としての第３の符号化部１１４、第３の符号化部１１４で生成される画素ブロックの符号長を検出する第３の符号長検出部１１５、第３のカウンタ１１６、第３のメモリ制御部１１７及び第３のメモリ１１８を設けた点にある。また、第３の符号化部１１４は、生成する符号化データの先頭にＪＰＥＧ符号化（非可逆符号化）であることを示すビットを付加する点は第１の実施形態と同じである。
【０１１７】
また、図１では非可逆（ＪＰＥＧ）符号化を行うＪＰＥＧ符号化部が１つであったのに対し、本第２の実施形態の図１４に示す如く、第１の符号化部１０２、第３の符号化部２０２の２つになり、これら２つの非可逆符号化部が並行して符号化処理を行う。また、第１の符号化部１０２と第３の符号化部１１４との違いは、設定するパラメータにある。つまり、第１の符号化部１０２に設定されていた量子化マトリクステーブルをＱiとしたとき、第３の符号化部１１４には常に１段階大きな量子化マトリクステーブルＱi+1を設定する。１ページの符号化開始の初期段階では、第１の符号化部１０２にセットする量子化マトリクステーブルはＱ０であり、第３の符号化部１１４にセットする量子化マトリクステーブルはＱ１となる。
【０１１８】
また、第１の符号化部１０２、第２の符号化部１０３、第３の符号化部１１４はそれぞれ同じタイミングで同じ画素ブロックについて符号化処理を行い、ほぼ同時に符号化データを生成し、出力するものとする。また、属性判定部１３０もほぼ同じタイミングで同じ画素ブロックの色数を検出する処理を行う。
【０１１９】
さらにまた、第２の符号化部１０３から出力される可逆符号化データは第３のメモリ制御部１１７を介して無条件に第３のメモリ１１８に格納する。また、１ページの符号化が完了した場合、第１のメモリ１０５に格納されている符号化データが最終的に求める符号化データとなるのは第１の実施形態と同様である。
【０１２０】
以下、図１４の構成における符号化シーケンス制御部１１０の処理概要を説明する。
【０１２１】
本第２の実施形態における符号化シーケンス制御部１１０における画素ブロック単位の基本処理は次の通りである。
１．第１の符号化部１０２にセットする量子化マトリクステーブルをＱｉとしたとき（初期段階ではＱ０）、第３の符号化部１１４には常に１段階大きな量子化マトリクステーブルＱi+1（初期段階ではＱ１）をセットする。
２．１ページの先頭から符号化を開始する際には、属性判定部１３０からの色数が所定数以下の場合には第２の符号化部１０３から出力される可逆符号化データを選択し、第１のメモリ１０５に格納するよう制御信号を出力する。また、色数が所定数を越える場合、第１の符号化部１０２から出力される非可逆の符号化データと第２の符号化部１０３から出力される可逆の符号化データの小さい方が第１のメモリ１０５に格納されるよう、第１のメモリ制御部に制御信号を出力する。また、第１のカウンタ１１１には、第１のメモリ１０５に格納することになった符号化データの符号長を累積加算する。つまり、第１のカウンタ１１１には、第１の実施形態と同様、第１のメモリ１０５に格納されている符号化データ量を示す情報が格納されることになる。
３．第３の符号化部１１４から出力される非可逆符号化データと第２の符号化部１０３から出力される可逆符号化データの小さい方を第２のメモリ１０７に格納するよう制御信号を出力する。また、第３のカウンタ１１６には、２つの符号化データの符号長のうち短い方を累積加算する。
【０１２２】
次に、１ページの符号化処理中の符号化シーケンス制御部１１０の処理の概要を説明する。
【０１２３】
符号化シーケンス制御部１１０は、第１のカウンタ１１１の値（第１のメモリ１０５に格納された符号化データ量）が目標データ量をオーバーしたか否かを判定する。目標データ量をオーバーしないと判定し、１ページの符号化処理が完了した場合には、第１のメモリ１０５内に格納された符号化データを、実施形態における符号化処理部６の符号化結果として２次記憶装置７に出力する。
【０１２４】
一方、第１のカウンタ１１１の値が、目標データ量をオーバーしたと判定した場合、符号化シーケンス制御部１１０は次の各工程を行う。
工程１：第１のメモリ１０５内の画像データの符号化データを破棄するよう第１のメモリ制御部１０４に要求する。属性判定部１３０からの色数情報に関する条件を緩くする（閾値を更に小さなものとする）。
工程２：第２のメモリ１０７に格納された符号化データ（量子化マトリクステーブルＱi+1による非可逆符号化データと可逆符号化データが混在したデータ）を第１のメモリ１０５に転送する。これに伴い、第１のカウンタ１１１の値を第３のカウンタ１１６の値で更新する（第１のカウンタ１１１に第３のカウンタ１１６の値を上書きする）。
工程３：第２のメモリ１０７から第１のメモリ１０５への転送が完了した場合、第２のメモリ１０７内のデータを破棄するよう第２のメモリ１０６に制御信号を出力する。
工程４：第１の符号化部１０２への量子化マトリクステーブルをＱi+1に更新し、第３の符号化部１１４への量子化マトリクステーブルをＱi+2に更新し、符号化を継続させる。工程５：再符号化部１１２に量子化マトリクステーブルＱi+2（更新後の第３の符号化部１１４の量子化マトリクステーブルと同じ）をセットし、第３のメモリ１１８に格納された可逆符号化データを再符号化させる。再符号化部１１２は、第１の実施形態と同じ構成であるので、その説明は省略する。再符号化処理で得られた符号化データは、第３のメモリに再格納する。このとき、再符号化処理で生成された符号化データ量は第２のカウンタ１１３に格納される。
工程６：工程５の再符号化が完了したら、その再符号化処理して得られた符号化データを第２のメモリに転送し、第２のカウンタ１１３の値を、第３のカウンタ１１６に加算する。
【０１２５】
上記工程１乃至６において、工程１乃至５は、入力部１０１による画像データの入力に対して十分に高速に処理可能である。従って、図９におけるタイミングＴ１−Ｔ２間、或いは、Ｔ３−Ｔ４間のように、符号化データ量が不明な期間は短いものとすることができる。特に、工程２での第１のカウンタ１１１の更新処理は、転送処理が完了する以前に行っても構わない。この場合には、符号化データ量が不明な期間は実質的に無いものとすることが可能になる。
【０１２６】
なお、図９のタイミングＴ５の直前において、第１のカウンタ１１１で示される符号化データ量が目標値をオーバーした場合、上記工程１から処理が開始されるものの、工程２まで完了すれば、求める符号化データを第１のメモリ１０５に格納したことになるので、２次記憶装置７に書き込みを行い、工程３以降の処理は行わず、次ページの読み込みと符号化処理を開始して構わない。
【０１２７】
以上、図１４の構成における動作概要を説明した。本変形例３のように、２つの非可逆符号化部と、１つの可逆符号部を並行して設ける場合は、図１５に示すフローチャートに基づいて１ページ分の画像データの符号化を行うことになる。
【０１２８】
なお、図１５の処理は、その大半の処理が図９と類似しているので、３つのフェーズで処理を説明する様にし、図９と異なる点を主に説明することとする。
【０１２９】
上述した図９のフローと本第２の実施形態のフローとの一番大きな違いは、ステップＳ３１７における第２のメモリ１０７から第１のメモリ１０５への転送処理が、ステップＳ３０７とステップＳ３０９の間に移動している点、この転送処理が終わった際に、第２のメモリ１０７内のデータを破棄する処理（ステップＳ３２０）が追加された点、並びに、再符号化処理が完了した場合に第３のメモリから第２のメモリへの転送処理（ステップＳ３２１）が追加された点である。
【０１３０】
ステップＳ３０１の符号化パラメータの初期設定では、第１の画像符号化部１０２に設定すべき初期量子化マトリクステーブルＱ０を決定し、第３の画像符号化部１１４はそれより１段階大きなＱ２を設定する。
【０１３１】
符号化フェーズでは、ステップＳ８０１、Ｓ３０３、Ｓ３０５を繰り返し実行する。図１６は、符号化フェーズにおける第１乃至３のメモリの符号化データの格納状態を示している。図示において、スイッチ４０は第１の実施形態と同じ意味である。スイッチ４１は第２のメモリ制御部１０６及び符号化シーケンス制御部１１０によって構成されるものである。すなわち、スイッチ４１は、画素ブロック単位に、第１の符号化部１０２及び第２の符号化部１０３それぞれより出力される符号長の短い符号化データを選択し、第１のメモリ１０５に格納する。スイッチ４１は、画素ブロック単位に、第３の符号化部１１４及び第２の符号化部１０３それぞれより出力される符号長の短い符号化データを選択し、第２のメモリ１０７に格納する。そして、第３のメモリ１１８には第２の符号化部１０３からの符号化データを無条件に格納する。
【０１３２】
今、図１６において、第１のメモリ１０５に格納された符号化データ量（図示の領域Ｉ）が、目標値をオーバーした場合を考察する。つまり、ステップＳ３０５にて、目標データ量をオーバーしたと判定された場合である。
【０１３３】
このとき、第１のメモリ１０５に保持していた符号化データを廃棄し（ステップＳ３０７）、第２のメモリ１０７で保持している圧縮率の高い符号化データ（領域Ｉ’）を、第１のメモリ２０４へ転送すると共に、第３のカウンタ１１６の値を第１のカウンタ１１１に書き込む（ステップＳ３１７）。この転送後、第２のメモリ１０７に格納されている符号化データを破棄し、第３カウンタの値をゼロクリアする（ステップＳ３２０）。そして、第１の符号化部１０２に対して新たなに量子化マトリクステーブルＱ１を設定し、第２の符号化部１０３に対しても新たなに量子化マトリクステーブルＱ２を設定する（ステップＳ３０９）。
【０１３４】
図１７は、このステップＳ３０９の直後の各メモリの格納状況を示している。処理はステップＳ３１１にて、第１の符号化部１０２、第３の符号化部１１４、第２の符号化部１０３の処理を継続させることになる。つまり、第１の符号化部１０２は、新に設定された量子化マトリクステーブルＱ１で符号化を続行しすることになる。また、第２のメモリ１０７には、目標データ量をオーバーしたと判定された以降に入力される画像データの符号化データが格納されるものの、それ以前の符号化データは存在しないことになる。
【０１３５】
そこで、第３のメモリ１１８に格納されている図１６の領域Ｉ”の符号化データ（可逆符号化データ）について再符号化部１１２で再符号化を開始させる。再符号化部１１２の構成は第１の実施形態で説明したものと同じであるが、設定する量子化マトリクステーブルは第３の符号化部１１４にセットした量子化マトリクステーブルと同じＱ２にする。再符号化処理で得られた符号化データは、再び第３のメモリ１１８に格納する。
【０１３６】
図１８は、再符号化処理が完了したと判定した直後の各メモリの格納状態を示している。図示のように、第３のメモリ１１８には、同図の領域Ｉ”に相当する再符号化データ（図示の領域Ｉ’）が格納されている。再符号化処理には、多少の時間が必要であるため、図示のように領域ＩＩ、ＩＩ’、ＩＩ”のように符号化データが新に格納されることになる。
【０１３７】
さて、再符号化が完了すると、第３のメモリ１１８に格納された領域Ｉ’の符号化データを、第２のメモリ１０７に転送すると共に、再符号化の符号データ量を示す第２のカウンタ１１３の値を、第３のカウンタ１１６に足し込む（ステップＳ３２１）、そして、ステップＳ８０１以降の符号化シーケンスに戻ることになる。図１９は、符号化シーケンスに戻り、ある程度の符号化が進んだ状態を示している（図示の領域ＩＩＩ、ＩＩＩ’、ＩＩＩ”が増えている）。図１９において、第２のメモリ１０７内の領域Ｉ’とＩＩ’との間に空き領域が存在するが、メモリ１０７内での転送を行うことで空き領域がないようにしても構わない。但し、第２のメモリ１０７は、補助的なものである点、及び、次回、再び目標データ量を越えた場合には、図示の領域Ｉ’、ＩＩ’、ＩＩＩ’の符号化データを第１のメモリ１０５にその順番に転送すればよいので、問題は発生しない。
【０１３８】
以上変形例３を説明した。本変形例３によれば、第１のメモリ１０５内の符号化データ量が目標データ量をオーバーした場合に、オーバーする以前については、第２のメモリ１０７に格納された１段階高い圧縮率の高い符号化データそのまま使うことにより、第１のカウンタ１１１が不明な期間は実質的に無い、或いは短くでき、且つ、再符号化処理は、再び目標データ量をオーバーする以前であれば良いので、再符号化部１１２の処理は第１の実施形態ほど高速である必要もない。更に、図９のタイミングＴ５の直前にて、第１のカウンタ１１１の値が目標データ量をオーバーし、タイミングＴ５になったとしても、第２のメモリ１０７から第１のメモリ１０５への転送が完了していれば、それ以降の処理、すなわち再符号化処理は不要であり、すぐさま次のページの符号化が行えるようになる（図１５のステップＳ１２０１がＹＥＳの場合に相当する）。
【０１３９】
なお、上記変形例３では、再符号化部１１２での再符号化結果を第３のメモリ１１８に格納したが、第１の実施形態における変形例と同様、再符号化結果を第２のメモリ１０７に格納するようにしてもよい。
【０１４０】
＜第２の実施形態＞
上記第１の実施形態並びに変形例１乃至４では、１ページの符号化を開始し、第１のカウンタ１１１が目標データ量を越えない間では、符号化単位である画素ブロックの色数が所定数以下である場合に可逆符号化データを優先するものであった。
【０１４１】
この理由は、可逆符号化であるＪＰＥＧ−ＬＳにとって都合が良いからであるが、必ずしも色数のみよって本発明が限定されるものではない。
【０１４２】
本第２の実施形態では、画素ブロック（実施形態では８×８画素サイズ領域）中に白画素の占める割合が所定値以上の場合に、可逆符号化データを選択するようにしても良い。なお、割合は一般に％で示されるが、全体の個数は６４で不変であるので、個数を計数することで演算を単純化させた。
【０１４３】
なお、白画素の判定は、Ｒ≒Ｇ≒Ｂ≒２５５（各成分が８ビットで表わされる場合）とする。
【０１４４】
本第２の実施形態における構成は、上記第１の実施形態並びに第１乃至第３の変形例に適用できるので、その説明については省略する。ただし、属性判定部１３０は、画素ブロック内の白画素数を検出するものとする。
【０１４５】
図２４は第２の実施形態における、符号化シーケンス制御部１１０の第１のメモリ１０５へ格納する符号化データの選択処理を示すフローチャートである。
【０１４６】
ステップＳ２４０１では、１ページの符号化を開始してから、そのページの符号化中に過去に一度でもカウンタ１１１の値が目標データ量を越えたことがあるか否かを判定する。１ページの符号化開始時には、当然、この判定はＮｏとなるので、ステップＳ２４０２に進む。ステップＳ２４０２では、注目画素ブロック内の白画素数（属性判定部１３０からの出力）が所定数（ｎ個）以上であるか否かを判定し、所定数以上の場合には第１のメモリ１０５に格納する符号化データとして、第２の符号化部１０３からの符号化データを選択する。このとき、第１のカウンタ１１１には、第２の符号長検出部１０９からの符号長情報を累積加算することになる。
【０１４７】
また、第１のカウンタ１１１が目標データ量を越えた場合にはその白画素の閾値（ｎ個）を（ｎ−１個）と減らしていく。
【０１４８】
また、ステップＳ２４０１でＹｅｓ、もしくは、ステップＳ２４０２でＮｏと判定された場合には、ステップＳ２４０４に進み、２つの符号化データのうち符号長の短い方を第１のメモリ１０５に格納する対象として選択する。このとき、選択した符号化データの符号長情報を第１のカウンタ１１１に累積加算する。
【０１４９】
以上説明した第２の実施形態によっても、先に説明した第１の実施形態と同様の作用効果を奏することに成功する。
【０１５０】
＜第３の実施形態＞
第３の実施形態では、属性判定部１３０が画素ブロック内の白画素数（白画素占有率）の検出と、その画素ブロックの文字線画属性を判定する例を説明する。他の構成は第１の実施形態並びにその変形例１乃至３をそのまま活用できるので、説明は省略する。
【０１５１】
一般に、文字線画はそのエッジの輝度（濃度）変化が急峻となる特徴がある。従って、文字線画の判定は、注目画素とその隣接する画素との輝度差が所定以上の場合、注目画素は文字線画（のエッジ）と判定すればよい。また、輝度差が所定以上と判定された画素数が、所定数以上存在する場合に、注目画素ブロックは文字線画ブロックと判定する。
【０１５２】
この文字線画ブロックの判定は、隣接する画素値の差分演算、閾値との比較処理、及び計数処理が付加される分だけ、多少は複雑にならざるを得ない。しかし、第３の実施形態における属性判定部１３０がハードウェアで実現している場合には、その処理は第１、第２の符号化部のそれよりも遥かに単純であり、他の処理に影響は生じない。一方、符号化処理部１がソフトウェアで実現している場合には、ＣＰＵの並列演算に影響があるかもしれない点を考慮する必要があろう。
【０１５３】
本第３の実施形態における処理を図２５のフローチャートに従って説明する。
【０１５４】
ステップＳ２５０１では、１ページの符号化を開始してから、そのページの符号化中にカウンタ１１１の値が目標データ量を越えたか否かを判定する。１ページの符号化開始時には、当然、この判定はＮｏとなるので、ステップＳ２５０２に進む。ステップＳ２５０２では、注目画素ブロック内の白画素数（属性判定部１３０からの出力）が所定数（ｎ個）以上であるか否かを判定する。所定数以上の場合にはステップＳ２５０３に進み、注目画素ブロックは文字線画領域か否かを判定する。文字線画領域であると判定した場合には、ステップＳ２５０４に進み、第１のメモリ１０５に格納する符号化データとして、第２の符号化部１０３からの符号化データを選択する。このとき、第１のカウンタ１１１には、第２の符号長検出部１０９からの符号長情報を累積加算することになる。
【０１５５】
また、ステップＳ２５０１でＹｅｓ、ステップＳ２５０２でＮｏ、ステップＳ２５０３でＮｏと判定された場合には、ステップＳ２５０５に進み、２つの符号化データのうち符号長の短い方を第１のメモリ１０５に格納する対象として選択する。このとき、選択した符号化データの符号長情報を第１のカウンタ１１１に累積加算する。
【０１５６】
以上説明した第３の実施形態によっても、先に説明した第１の実施形態と同様の作用効果を奏することに成功する。
【０１５７】
＜第４の実施形態＞
上記第１実施形態（その変形例を含む）乃至第３の実施形態では、ページ先頭から符号化を開始し、属性判定部１３０からの情報をも加味して、第１のメモリ１０５に格納する符号化データの選択を行った。
【０１５８】
画像を符号化する場合、可逆符号化を採用することが望ましいのは議論するまでもないことである。その一方で、目標データ量に収めるという条件、並びに、１ページの画像の入力を中断したり、再度入力することなく符号化を行うという条件を満たすためには、非可逆符号化との併用が必要になる。
【０１５９】
また、一般に、複写機で複写する原稿は、文字のみで構成される割合が多く、なるべくは可逆符号化データを選択するようにすることが望ましい。かかる点、上記第１乃至第３の実施形態では、非可逆符号化としてＪＰＥＧ、可逆符号化としてＪＰＥＧ−ＬＳを採用し、符号長の短い方を選択するものであるから、基本的には通常の文書原稿の場合には可逆符号化データが選択される割合が高くなるものの、それを保証するものではない。
【０１６０】
そこで、本第４の実施形態では、１ページの符号化処理を行っていく過程で、初期の段階では可逆符号化データが選択され易くする例を説明する。
【０１６１】
図２６は本第３の実施形態における符号化処理部６のブロック構成図である。図示の構成は図１をその基本としているが、図２、図１４を基本にしても良いのは以下の説明から明らかになるであろう。
【０１６２】
図２６と図１との違いは、図２６では属性判定部１３０が無くなり、符号化シーケンス制御部１１０内には第２の符号長検出部１０９で検出された符号長を元にした重み付け係数αを生成する重み付け係数生成部１３１が設けられた点であり、これ以外は第１の実施形態と同じであるので、同符号を付した。従って、各構成要素の処理については第１の実施形態を参照されたい。
【０１６３】
本第４の実施形態における重み付け係数生成部１３１が生成する重み付け係数α（α0、α1、α2…）は図２７に示すような曲線を描く。ここでα0が初期状態で選択される重み付け係数である。すなわち、注目画素ブロックの可逆符号長小さいほど大きな値となり、大きくなるに従って“１”に近づくものである。
【０１６４】
第１の符号長検出部１０８で検出された符号長をＬ１、第２の符号長検出部１０９で検出された符号長をＬ２とする。
【０１６５】
本実施形態では、以下の条件、すなわち、
Ｌ１×α≧Ｌ２      条件１；
条件１を満足する場合、符号化シーケンス制御部１１０は、第２の符号化部１０３からの可逆符号化データを第１のメモリ１０５に格納する。また、条件１を満足しない場合には第１の符号化部１０２からの非可逆符号化データを第１のメモリ１０５に格納する。
【０１６６】
また、第１のカウンタ１１１が目標符号量を越えた場合、重み係数α（初期状態ではα0）よりも小さいα1を新たな重み付け係数αとして利用する。
【０１６７】
なお、再符号化部１１２での再符号化する際に選択する際にも、上記のような重み付け係数αに従って処理する。
【０１６８】
例えば、重み付け係数α（＝α0）を用いて符号化している最中に、目標符号化データ量を超えた場合、再符号化部１１２は、再符号化して得られた非可逆符号化データの符号長にα１（第１の符号化部１０５の更新後のパラメータと同じ）を乗算した結果と、再符号化する以前の可逆符号化データの符号長とを比較し、いずれか小さい方を第２のメモリ１０７に格納する。
【０１６９】
以上のような条件１を設けると、可逆符号化データ量が小さいほど、その可逆符号化データが選択される確率を高くでき、且つ、発生する符号化データ量（第１のカウンタ１１１の値）が目標符号化データ量を越えないまま１ページの符号化処理が完了した場合、Ｌ１とＬ２との単純比較処理を行う場合と比べて、可逆符号化データの選択される割合を多くでき、画質的に優れた符号化データを生成することが可能になる。
【０１７０】
符号化シーケンス制御部１１０における符号化データの選択処理は、図２８に示す処理を行えば良いであろう。
【０１７１】
ステップＳ２８０２では、第２の符号長検出部１０９で検出された符号長に基づき、重み係数αを算出する。次いで、ステップＳ２８０３にて、条件：「Ｌ１×α≧Ｌ２」（１ページの符号化を開始する際にはα＝α0）を満たすか否かを判定する。この条件を満たすと判定した場合には、ステップＳ２８０４に進み、第１のメモリ１０５に格納する符号化データとして、第２の符号化部１０３からの符号化データを選択するよう制御信号を発生する。
【０１７２】
以上説明したように本第４の実施形態によれば、可逆符号化、非可逆符号化の双方を併用しつつも、１度の画像入力により目標データ量の符号化データを生成することが可能であり、尚且つ、可逆符号化データが選択される確率を高くすることで、復号画像を高い画質に維持することが可能になる。
【０１７３】
以上、本発明に係る実施形態（その変形例１乃至３）を説明したが、第１のメモリ１０５、第２のメモリ１０７、及び、第３のメモリ１１８は物理的に別のメモリであるとして説明をしてきた。本発明においてはこれらのメモリを独立して設けることは十分に１つの特徴となる。しかしながら、これらのメモリを物理的に別のメモリとしない場合も本発明の範疇に含まれる。特に、メモリの転送スピードが、十分に高速な場合には物理的に１つのメモリ上に、第１のメモリ、第２のメモリ（及び第３のメモリ）に相当する２つ（或いは３つ）の領域を確保して、第１のメモリを第１のメモリ領域、第２のメモリを第２のメモリ領域と言い直して、これまでの説明を読み直せば、１つのメモリでも実現できることが分かる。
【０１７４】
また、１つのメモリで上記各実施形態を実現する場合には、前記転送フェーズで説明したデータ転送処理のいくつかは不要となる。その詳細はその都度容易に想像できるので説明は省略するが、前記２つの領域を厳密に別けて使用する場合、物理的に２つのメモリを持つ時と同じようにデータ転送処理が必要であるが、２つの領域間で同じデータを共有することになれば、データ転送処理が不要になるだけでなく記憶容量の削減も図れる。
【０１７５】
例えば、第２のメモリ領域で保持していた符号化データを、第１のメモリ領域へ転送する際、該符号化データが格納されている先頭アドレスとデータサイズの２つの情報を第２のメモリ制御部から第１のメモリ制御部へ転送するだけで、前記符号化データを転送したのと同じ効果が得られる。
【０１７６】
前記符号化データを、ファイル形式やパケット形式で格納している場合は、メモリ制御部の間で転送する情報は少し増え、該符号化データに関連する管理テーブル情報を転送する必要がある。
【０１７７】
なお、実施形態では、符号化対象を８×８画素ブロックサイズとして説明したが、このサイズも本発明を限定するものではない。要するに、２つ（或いはそれ以上でも良い）の異なる符号化技術を使って、同一の画像領域に対して生成された２種類の符号化データ量を比較できるようにすれば良い。例えば、ＪＰＥＧ符号化ではＮ×Ｍ画素ブロック単位に符号化を行い、ＪＰＥＧ−ＬＳが２Ｎ×２Ｍの画素ブロックを符号化対象とし得るのであれば、４つのＪＰＥＧ符号化データと１つのＪＰＥＧ−ＬＳ符号化データを比較するようにしても構わない。
【０１７８】
また、実施形態では、２種類の符号化技術として、非可逆符号化であるＪＰＥＧ、可逆符号化であるＪＰＥＧ−ＬＳを用いる例を説明した。この２つの符号化技術は、可逆、非可逆の違いがあると同時に、ＪＰＥＧは自然画に適した符号化技術であり、ＪＰＥＧ−ＬＳは文字線画やコンピュータグラフィックスに適したものであり、符号化効率の面でも相異なるものである。このように、可逆符号化／非可逆符号化、及び、文字線画／自然画の両方に対して相異なる性質を持つ２つの符号化技術を用いると、本願発明は有利に作用することがわかるであろう。
【０１７９】
また、上記実施形態では、図２２に示す複写機に適用した例を説明したが、例えばパーソナルコンピュータ等の汎用情報処理装置にイメージスキャナ等の画像入力装置を接続して符号化する場合にも適用できるのは明らかである。この場合、第１、第２、或いは第３のメモリに相当する領域をＲＡＭ、もしくはＨＤＤ等に確保する機能と、図３（又は図９）或いは図１５に示す処理に係るプログラム、並びに、図２３乃至２５及び図２７を実行すれば良いので、本願発明はかかるコンピュータプログラムをもその範疇とするのは明らかである。また、通常、コンピュータプログラムはＣＤＲＯＭ等のコンピュータ可読記憶媒体をそのコンピュータにセットし、システムにコピーもしくはインストールすることで実行可能になるわけであるから、当然、そのようなコンピュータ可読記憶媒体も本発明の範疇に含まれる。
【図面の簡単な説明】
【０１８０】
【図１】第１の実施形態における符号化処理部のブロック構成図である。
【図２】第１の実施形態における符号化処理部の変形例を示すブロック構成図である。
【図３】第１の実施形態における処理を簡略化して示したフローチャートである。
【図４】第１の実施形態における初期状態の符号化フェーズにおけるデータフローとメモリ内容を表わす図である。
【図５】第１の実施形態における符号化・再符号化フェーズの開示時のデータフローとメモリ内容を表わす図である。
【図６】第１の実施形態における符号化・再符号化フェーズの終了時のデータフローとメモリ内容を表わす図である。
【図７】第１の実施形態における転送フェーズにおけるデータフローとメモリ内容を表わす図である。
【図８】第１の実施形態における転送フェーズ後の符号化フェーズにおけるデータフローとメモリ内容を表わす図である。
【図９】第１の実施形態における処理の詳細を示すフローチャートである。
【図１０】図２の構成における符号化・再符号化フェーズの開始時におけるデータフローとメモリ内容を表わす図である。
【図１１】図２の構成における転送フェーズにおけるデータフローとメモリ内容を表わす図である。
【図１２】図２の構成における転送フェーズ後の符号化フェーズにおけるデータフローとメモリ内容を表わす図である。
【図１３】第１の実施形態における第１カウンタの値の推移の一例を示す図である。
【図１４】第１の実施形態における符号化処理部の他の変形例のブロック構成図である。
【図１５】図１４の構成における処理手順を示すフローチャートである。
【図１６】図１４の構成における初期状態の符号化フェーズにおけるデータフローとメモリ内容を表わす図である。
【図１７】図１４の構成における目標データ量オーバー時におけるデータフローとメモリ内容を表わす図である。
【図１８】図１４の構成における符号化・再符号化フェーズの完了時におけるデータフローとメモリ内容を表わす図である。
【図１９】図１４の構成における符号化・再符号化フェーズ後の符号化フェーズにおけるデータフローとメモリ内容を表わす図である。
【図２０】実施形態における再符号化部のブロック構成図である。
【図２１】実施形態で用いる量子化マトリクステーブルを示す図である。
【図２２】実施形態が適用する複写機の構成図である。
【図２３】第１の実施形態における符号化データの選択処理手順を示すフローチャートである。
【図２４】第２の実施形態における符号化データの選択処理手順を示すフローチャートである。
【図２５】第３の実施形態における符号化データの選択処理手順を示すフローチャートである。
【図２６】第４の実施形態における符号化処理部のブロック構成図である。
【図２７】第４の実施形態における重み付け係数αの変化曲線を示す図である。
【図２８】第４の実施形態における符号化データの選択処理手順を示すフローチャートである。
【図１】
2006166420.tif 000003
【図２】
2006166420.tif 000004
【図３】
2006166420.tif 000005
【図４】
2006166420.tif 000006
【図５】
2006166420.tif 000007
【図６】
2006166420.tif 000008
【図７】
2006166420.tif 000009
【図８】
2006166420.tif 000010
【図９】
2006166420.tif 000011
【図１０】
2006166420.tif 000012
【図１１】
2006166420.tif 000013
【図１２】
2006166420.tif 000014
【図１３】
2006166420.tif 000015
【図１４】
2006166420.tif 000016
【図１５】
2006166420.tif 000017
【図１６】
2006166420.tif 000018
【図１７】
2006166420.tif 000019
【図１８】
2006166420.tif 000020
【図１９】
2006166420.tif 000021
【図２０】
2006166420.tif 000022
【図２１】
2006166420.tif 000023
【図２２】
2006166420.tif 000024
【図２３】
2006166420.tif 000025
【図２４】
2006166420.tif 000026
【図２５】
2006166420.tif 000027
【図２６】
2006166420.tif 000028
【図２７】
2006166420.tif 000029
【図２８】
2006166420.tif 000030