以下、図面に従って本発明に係る実施形態を詳細に説明する。
<装置概要の説明>
図22は、実施形態が適用する複写機のブロック構成図である。
図中、1は装置全体の制御を司る制御部であり、CPU、ROM、RAM等で構成される。2はLCD表示器や各種スイッチ、ボタン等で構成される操作部である。3は原稿読取部(イメージスキャナ部)であり、ADF(Auto Document Feeder)を搭載している。読取った画像はRGB各色成分毎に8ビット(256階調)のデジタルデータを出力する。4は、不図示のインタフェース(ネットワークインタフェースを含む)を介して、クライアント端末から受信したPDL形式の印刷データに基づき、印刷画像を描画するレンダリング部である。5はセレクタであり、制御部1からの指示に従って、原稿読取部3、又は、レンダリング部4から出力されたビットマップイメージのいずれか一方を選択し、出力する。
6は本実施形態の特徴部分である符号化処理部である。この符号化処理部6の詳細な後述するが、画像データの符号化するものである。
7は2次記憶装置(実施形態ではハードディスク装置とする)であり、符号化処理部6より出力された1ページの符号化データを順に格納記憶する。
8は、復号処理部であって、2次記憶装置7に格納された圧縮符号化された画像データを、その格納順(ページ順)に読出し、復号する。9は画像処理部であって、復号処理部8からの復号画像を入力し、RGB色空間を記録色空間であるYMCへの変換、UCR(Under Color Removal)処理を行うと共に、画像データの補正処理を行う。
10はプリンタエンジン部である。プリンタエンジン部の印刷機構は、レーザビームプリンタエンジンとするが、インク液を吐出するタイプでも構わず、その種類は問わない。
上記構成において、例えば、利用者が操作部2を操作して、複写モードを選択し、原稿を原稿読取部3(のADF)にセットし、複写開始キーを押下したとする。この場合、原稿読取部3で読取られた原稿画像データは、ラスター順に、セレクタ5を介して符号化処理部6に転送され、ここで圧縮符号化されて2次記憶装置7に格納していく。
また、外部より印刷データを受信した場合には、セレクタ5をレンダリング部4を選択するようにし、レンダリング部4が生成した印刷データに基づく画像を圧縮符号化し、2次記憶装置7に格納することになる。
復号処理部8は、プリンタエンジン10の印刷速度に応じて、2次記憶装置7から圧縮符号化データを読出し、復号処理する。そして、画像処理部9で復号した画像データからYMCK成分の記録用画像データを生成する。そして、その結果をプリンタエンジン部10に出力し、印刷を行う。
上記の通り、2次記憶装置7への圧縮符号化データの格納処理と、復号し印刷するための読出し処理は、非同期である。つまり、2次記憶装置7は画像圧縮処理と、復号処理との間に介在するバッファとして機能する。従って、原稿読取り/符号化処理は、復号/記録処理に非依存なので、多数の原稿を高速に読取ることができ、次のジョブの原稿読取りにすばやく移行することが可能になる。
以上、実施形態における装置全体の構成について説明した。次に、本装置の特徴部分である符号化処理部6について説明する。
<符号化部の説明>
図1は実施形態における符号化処理部6のブロック構成図である。
入力部101は、複数ライン分のラインバッファーメモリを内蔵し、先に説明したように、セレクタ5を介して、原稿読取部3もしくはレンダリング部4からの画像データをラスター順に入力する。そして、入力部101は、内部のラインバッファーに格納し、N×M画素ブロック(実施形態では8×8画素ブロックとした)単位に出力する。
第1の符号化部102は非可逆符号化部であって、圧縮率に影響を与えるパラメータに従って、入力部101より入力した画素ブロック単位に圧縮符号化処理を行い、その結果(符号化データ)を出力する。但し、符号化データの先頭には、第1の符号化部102で符号化されたことを示す識別ビット(例えば“0”のビット)を付加する。
実施形態における、この第1の符号化部102は、JPEG符号化(非可逆符号化)を適用した例を説明する。つまり、8×8画素単位に相当する画像データを直行(DCT)変換し、後述する量子化ステップを用いた量子化し、ハフマン符号化処理を行うものである。ここで生成される符号量を左右するのが量子化ステップであり、これは符号化シーケンス制御部110により設定される。JPEG符号化は、自然画に適した技術として知られている。
図21はDCT変換後の周波数係数を量子化する際に用いる量子化マトリクステーブルQ0、Q1、Q2を示している(符号化シーケンス制御部110に記憶保持されている)。ここで、量子化マトリクステーブル内の値Qi(0、0)〜Qi(7、7)(i=0、1、2…)が量子化ステップ値を意味する。量子化ステップ値は、概ね、Q0<Q1<Q2…の関係にある。量子化ステップ値が大きくなればなるほど、量子化後の周波数係数値の取り得る範囲が狭くなり、圧縮率が向上する。
第2の符号化部103は、第1の符号化部102と異なり、可逆符号化部である。可逆符号化であるため、その復号結果は符号化する前の画像と同じとなり、原理的に画質の劣化は発生しない。但し、圧縮率を確実に高くするパラメータも無い。実施形態では、この第2の符号化部103にJPEG−LSを用いた。JPEG−LSは「JPEG」を冠するものの、第1の符号化部で採用している非可逆符号化JPEGとはそのアルゴリズムは全く異なる。JPEG−LS符号化の特徴は、文字/線画、コンピュータグラフィックスに適した技術である。これらの画像の場合、JPEG−LSは、JPEGに与える量子化ステップが“1”(実質可逆)は勿論こと、“2”、“3”等の比較的小さい量子化ステップ値よりも遥かに少ない符号データを生成することができる。
また、第2の符号化部103は、第1の符号化部102と実質的に同じタイミングで、同じ画素ブロックに対して符号化を行い、符号化データを出力する。また、第2の符号化部103は、符号化データを出力する際に、その符号化データの先頭に第2の符号化部102で符号化されたことを示す識別ビット(例えば“1”のビット)を付加する。
従って、復号処理部8が復号処理を行なう場合、この識別ビットが“0”の場合には該当する画素ブロックの符号化データが非可逆符号化データであるものとして復号処理を行なう。また、識別ビットが“1”の場合には該当する画素ブロックの符号化データが可逆符号化データであるものとして復号処理を行なえば良いことになる。
第1の符号長検出部108は、第1の符号化部102から出力される画素ブロックの符号化データ長(識別ビットである1ビットを含む)を検出し、符号化シーケンス制御部108に出力する。第2の符号長検出部109は第2の符号化部103から出力される画素ブロックの符号化データ長(識別ビットである1ビットを含む)を検出し、符号化シーケンス制御部108に出力する。
符号化シーケンス制御部110は実施形態における符号化処理部6の制御を司るものである。その処理の1つに、第1の符号長検出部108、第2の符号長検出部109からの信号と、内蔵したLUT(ルックアップテーブル)120を用いて、第1のメモリ105に格納すべき符号化データを決定する(この選択原理は後述する)。そして、その決定した符号化データを選択させるための選択信号を第1のメモリ制御部104に出力する。
また、符号化シーケンス制御部110は、各画素ブロック毎に、非可逆/可逆符号化データの何れを選択したのか、及び、非可逆符号化データ長、可逆符号化データ長を示す情報を符号化履歴記録部121に記録しておく(詳細は後述)。
更に、符号化シーケンス制御部110は、第1のメモリ105に格納することになった符号化データの符号長データを累積カウントする第1のカウンタ111を備える。第1のカウンタ111は、1ページの符号化を開始する際にゼロクリアされる。従って、このカウンタ111は、第1のメモリ105に格納された総符号化データ量を示す情報を保持することになる。
また、この符号化シーケンス制御部110は、カウンタ111の値(第1のメモリ105に格納された符号化データ量)と目標符号量Th(入力画像のサイズに依存して決定されるものとする)との比較を行う。そして、カウンタ111の値が目標符号量Thを越えた(目標符号量に達した場合としても良い)ことを検出した時に、符号化シーケンス制御部110はメモリ105内の格納済みのデータを廃棄するようメモリ制御部104に制御信号を出力する。また、このとき、符号化シーケンス制御部110は、カウンタ111をゼロクリアする。そして、画像の再入力を制御部1(図22参照)に対して要求し、原稿画像の再スキャンを実施させる。
再スキャンを行なう目的は、第1のメモリ105に格納される符号化データ量をより少なくするためである。それ故、符号化シーケンス制御部110は、第1の符号化部102、或いは、LUT120による選択基準を変更する。すなわち、符号化シーケンス制御部110は、少なくとも前回よりも発生する符号化データ量を抑制するための環境設定(符号化パラメータ)を更新する。この更新処理についての詳細は後述する。
こうして、カウンタ111の値が目標符号量Thを超えないまま、1ページの符号化が完了すると、それを2次記憶装置7にファイルとして出力する。この1ページの符号化データには、可逆、非可逆符号化データが混在した符号化データが生成されることになることに注意されたい。また、次のページの画像データが存在する(或いは次の原稿が存在する)場合には、その原稿の読み込みを行なうべく、その原稿を読取面(一般にはプラテンガラス)に搬送し、読取及び符号化を開始する。
以上実施形態における符号化処理部6の大まかな処理内容について説明した。
<環境設定の説明>
次に、実施形態における符号化シーケンス制御部110が、画素ブロック毎の非可逆/可逆符号化データのいずれを第1のメモリ105に格納するかを決定するための環境設定について説明する。
先に説明したように実施形態では、第1の符号化部102に非可逆符号化であるJPEG、第2の符号化部103に可逆符号化であるJPEG−LSを利用した場合である。JPEGは周知の通り自然画の圧縮に適した符号化技術であるが、文字/線画等については圧縮率は高くない。一方、JPEG−LSは、文字/線画(カラーを含む)、並びに、単調な棒グラフ等の画像に好適なものであり、尚且つ、可逆符号化であるが故に画像劣化は原理的に発生しない。ただし、JPEG−LSは自然画については圧縮率は高くない。つまり、これら2つの符号化技術は互いに補う関係にあると言える。
ここで、図20に示すような、文字/線画領域T1、T2、コンピュータグラフィクスによるグラデーション(濃度がなだらかに変化する画像)領域G、自然画領域Iを含む原稿を読取る場合について考察する。
文字/線画領域T1内には、画像のエッジが急峻な文字/線画のみが存在し、文字/線画T2ではエッジ部分が多少ボケた文字/線画のみが存在するものとする。文字/線画領域T2は文字や図形のふちを滑らかに見せるためのアンチエイリアス処理をかけたものや、デジタル的な解像度変換を行った場合に相当する。文字/線画領域T2は、何度も複写を繰り返した場合の画像を擬似的に生成したものと考えると分かりやすい。
さて、非可逆符号化を行なう第1の符号化部102に対しては初期パラメータとして量子化マトリクスQ0(最高画質、最低圧縮率)を設定し、図20の原稿を読取ったとする。このとき、8×8画素ブロック単位に可逆符号化して得られた符号化データの符号長をLx、同一画素ブロックを非可逆符号化で符号化して得られた符号化データの符号長をLyとする。このLx、Lyを座標とする点P(Lx、Ly)を、1ページに含まれる画素ブロックの数だけプロットした結果を示すのが図18である。
図18における楕円で囲んだ各分布領域2001乃至2005が、上記各領域T1、T2、G、Iのプロットした点の概ねの分布領域を示している。なお、楕円外をプロットする点が存在したが、そのようなプロット点は少なく、イレギュラーな点として無視した。また、図示の破線2006はLy=Lxの関係を示す直線である。
ここで符号化データの圧縮効率の観点からすれば、第1のメモリ105に格納する符号化データは次のような条件で決定することになろう。
1.Ly<Lxの関係あるとき、第1のメモリ105には第1の符号化部102からの非可逆符号化データを格納する。
2.Ly≧Lxの関係にあるとき、第1のメモリ105には第2の符号化部102からの可逆符号化データを格納する。
上記のようにすると、第1のメモリ105は1ページの総符号化データ量が、最小データ量とすることが可能になる。
しかしながら、境界条件Ly=Lxの場合には、コンピュータグラディエーション領域Gは、境界線2006で分断されることになり、非可逆符号化データと可逆符号化データが画素ブロック単位に混在した状態になる。すなわち、コンピュータグラディエーション領域Gには、可逆符号化データの画素ブロックと非可逆符号化データの画素ブロックが交互に発生する可能性が非常に高いことを意味する。これを復号すると、符号化方式の違いに起因して、隣接する画素ブロックの境界が不連続となるブロックノイズが発生し易くなり、画質の面で不利と考えられる。
そこで、実施形態では、図18の実線2007で示される非線形な境界条件を設定する。すなわち、コンピュータグラデーション領域Gの分布領域2003と自然画領域Iの分布領域2004との中間位置を通り、分布領域2003外を回り込むような下に凸(上に凹)の曲線を設定する。また、その曲線を文字/線画領域T2の分布領域2002と自然画領域Iの分布領域2004との間を通るようにした。
なお、図18では境界線2007の湾曲部分(非線形部分)は、コンピュータグラデーション領域G、アンチエイリアス処理を施した文字/線画領域T2の外部を通る部分とした。しかし、必ずしもコンピュータグラデーション領域Gやアンチエイリアス処理を施した文字/線画領域T2の外部を通るとは限らないし、更に多くのサンプルを用いて求めることが望まれる。いずれにしても、単純な線形境界条件2006と比べ、実施形態の境界線2007のように、比較的符号量の低い部分については、可逆符号化データが採用される確率が高くなり、上記のような問題が発生することを抑制できる。また、境界線が非線形になる箇所は両符号化の符号長の小さい領域であるので、画像全体に対する符号データ量に与える影響は少ないくすることもできる。
ここで実線2007で示される境界条件を、Ly=f(Lx)と表現すると、
1.Ly<f(Lx)の関係あるとき、第1のメモリ105には第1の符号化部102からの非可逆符号化データを格納する。
2.Ly≧f(Lx)の関係にあるとき、第1のメモリ105には第2の符号化部102からの可逆符号化データを格納する。
この結果、コンピュータグラデーション領域内は、異なる符号化種類の符号化データが混在する確率が低くなり、上記のような問題が発生することを抑制できるようになる。
なお、図18における実線2007は、原点、点A(≒コンピュータグラデーション領域の可逆符号化データ長の最大値+α)、点B(Lx<Lyを満たすアンチエイリアス処理を施した文字/線画領域T2の最大値+α)で示される区間を曲線で示した。そして、点Bより大きい領域では破線2006と実線2007とを重ねるようにした。この結果、可逆/非可逆符号化データのデータ長が共に大きい場合には、そのデータ長が短い符号化データが選択されることになり、第1のメモリ105に格納される符号化データ量の増大を抑制できる。
次に、第1のカウンタ111の値が目標符号量Thを超えた場合の対処法について以下に説明する。2回め以降のスキャンでは、当然、前回の符号化データ量よりも少ない符号化データ量にする必要がある。本願発明者等は、このためのアプローチとして2通りを考えた。以下に、それぞれのアプローチについて先ず説明する。
<第1のアプローチ>
第1のアプローチは、前回の符号化で使用されていた量子化マトリクスを仮にQi-1としたとき、今回のスキャン及び符号化ではそれより上の量子化マトリクスQiとし、且つ、境界条件を変更する。具体的には次の通りである。
図18は第1の符号化部102に設定する量子化マトリクスQ0であった。その量子化マトリクスQ0より1つレベルの高い量子化マトリクスQ1を用いた場合の、各像域のプロットした分布領域は図19のようになる。
可逆符号化データの符号長Lxは変動しないので、図18の各分布領域2001乃至2004は、図19の分布領域2001’乃至2004’のように、総じて垂直軸の下方向にシフトすることになる。また、これに伴い、図18の境界線2007の曲線部分も、図19の境界線2007’のように総じて下方向にシフトする。
ここで、第1の符号化部102で使用する量子化マトリクスをQiとし、その際の境界条件fi()と定義する。ここで、変数iは図21に示す如く、0、1、2、3…の値であり、境界条件fiで示される境界線の湾曲部分は、iが大きくなるほど、下方向にシフトする。
要するに、符号化シーケンス制御部110の処理は次のようになる。
1.Ly<fi(Lx)の関係あるとき、第1のメモリ105には第1の符号化部102からの非可逆符号化データを格納する。
2.Ly≧fi(Lx)の関係にあるとき、第1のメモリ105には第2の符号化部102からの可逆符号化データを格納する。
以上の結果、少なくとも前回の符号化で用いた量子化マトリクスがQi-1であった場合、今回の量子化マトリクスをQiとすることで、第1のメモリ105に格納される符号化データ量は前回の符号化時のそれとより少なくできるようになる。
<第2のアプローチ>
図19の境界線2006と境界線2007で挟まれる領域を明示すると図23の斜線で示した領域2010となる。
或る画素ブロックから得られた可逆符号化データ長をLx、非可逆符号化データ長をLyとしたとき、座標(Lx,Ly)が領域2010内にあれば、非可逆符号化データよりも多い可逆符号化データが第1のメモリ105に格納されることになる。
従って、量子化マトリクスQiを変更しなくても、この領域2010の面積を小さくするだけで第1のメモリ105に格納される符号化データ量を少なくなるできる。
その為には、2回めのスキャン時には、図24のように、境界線2007を左方向にシフトした境界線2007aに変更する。また、これでもって生成された符号化データ量が目標符号量Thを越えた場合には、更に左にシフトした境界線2007bを採用するようにする。
なお、図19では、境界線2007bが領域2002の内部を通過するようになっている。領域2007bはアンチエイリアス処理を施した不鮮明な文字/線画に対応するものであり、且つ、通常の文書中の文字/線画は領域2002ではなく領域2001に対応するので、符号化による画質劣化の影響は少ない。ただし、領域2003(コンピュータグラフィックスによる画像)内に境界線が入り込まないようにすることが望ましい。理由は先に説明した通りである。ただし、本発明は、境界線が必ずしも、領域2003外を通ることを必須とするものではない。なぜなら、多少は領域2003内に境界線が入り込んだとしても、線形な境界線2006と比較すれば、画質が劣化する可能性は低くなるからである。
また、上記では、境界線2007a、2007bについて、境界線2007を左シフトするという表現を用いたが、単純なシフトではなく、先の第1のアプローチと同様に、境界線2007の水平方向の倍率を変更することで実現しても構わない。
以上説明したように、量子化マトリクスを変更しなくても、境界線2007を総じて左側にシフトすることで、符号化データ量を減らすことが可能になることが理解できよう。
<符号化環境の設定原理の説明>
上記第2のアプローチでは、量子化マトリクスQ0の初期の境界線2007を、Ly≧Lxを満たしつつ、左シフトして境界線2007a,2007b…を定義していくものであった。この左シフトする対象は、量子化マトリクスQ1,Q2,…それぞれの初期の境界線についても同様である。
ここで、左シフトの回数を変数jで定義すると、結局のところ、可逆/非可逆符号化データの選択判定の境界条件は、上記変数jと使用する量子化マトリクスを特定する変数iによって特定できることになる。即ち、境界条件は、変数i,jをパラメータとする関数fi,j()と見ることができる。
従って、符号化シーケンス制御部110は、次の処理を行なえば良いことになる。
1.Ly<fi,j(Lx)の関係あるとき、第1のメモリ105には第1の符号化部102からの非可逆符号化データを格納する。
2.Ly≧fi,j(Lx)の関係にあるとき、第1のメモリ105には第2の符号化部102からの可逆符号化データを格納する。
符号化シーケンス制御部110は、画素ブロックの符号化データが生成される都度、この関数fi,j()を演算すれば良いが、それでは符号化シーケンス制御部110に係る負担は大きい。そこで、実施形態では、関数fi,j()(i,j=0,1,2,3,…)に相当する幾つもの境界条件データを、符号化シーケンス制御部110内のLUT(ルックアップテーブル)120として保持するようにした。
符号化シーケンス制御部110内における、LUT120を用いた符号化データの選択、及び、境界関数fi,j()の選択に係る構成は、例えば図2に示す構成で実現できよう。
LUT120にはアドレスとして、第1の符号長検出部108及び第2の符号長検出部109それぞれからの符号長データ、変数i、及び、変数jが供給される。
この変数i,jは、境界条件関数fi,j()を示す複数のテーブルの中の1つを選択するための信号とも見ることができる。
そして、LUT120内の、上記アドレス位置に1ビットの選択信号Sを予め格納しておく。例えば、Ly≧fi,j(Lx)という関係にあるアドレス位置には“1”、Ly<fi,j(Lx)という関係にあるアドレス位置には“0”を格納する。
そして、アドレスされた際にそのビットを符号化データ選択信号Sとして第1のメモリ制御部104に出力する。また、この符号化データ選択信号Sはセレクタ221の選択信号としても供給される。そして、セレクタ221は選択された符号長データは第1のカウンタ111に出力される。第1のカウンタ111はセレクタ221から出力されたデータ長を累積加算していけばよい。
さて、原稿のスキャン/符号化する場合には、符号化シーケンス制御部110は、第1の符号化部102に対して、変数iで示される量子化マトリクステーブルQiを設定する。また、符号化シーケンス制御部110は、境界条件fi,j()に従って、可逆/非可逆符号化データのいずれか一方を第1のメモリ105に格納する。なお、最初に原稿をスキャン/符号化する場合には、i=j=0である。
この符号化処理中に、第1のカウンタ111が保持した符号量情報(第1のメモリ105に格納された総符号化データ量)が目標符号量Thを越えたとする。この場合、符号化シーケンス制御部110は、現在の境界条件に隣接する境界条件fi+1,j()、fi,j+1()のいずれにするかを決定し、再スキャン/符号化を実行する。換言すれば、符号化シーケンス制御部110は、変数i,jの値を決定しなければなならい。そこで、以下では、この変数i,jの決定の原理について説明する。
実施形態における符号化シーケンス制御部110は、1つの画素ブロックの符号化が完了するごとに、符号化処理のログ情報を符号化履歴記憶部121(図1参照)に格納する。
符号化履歴記憶部121が記憶データ構造は、例えば図28に示す通りである。図示では、変数i=a、j=bの場合のログ情報を示している。
第1のフィールドは、画素ブロックの番号であり、最大画素ブロックの番号Nmaxは読取る原稿のサイズに依存する。第2フィールドは可逆符号化データ長Lx、第3フィールドは非可逆符号化データ長Ly、第4フィールドは何れの符号化データを第1のメモリ105に格納させたかを示す選択信号S(図2参照)を格納する。
また、可逆符号化データ長が選択された場合、すなわち、選択信号Sが“1”の場合の可逆符号化データ長Lxの累積加算値MLSをエリア121aに格納する。同様に、選択信号Sが“0”の場合の非可逆符号化データ長Lyの累積加算値MJPをエリア121bに格納する。つまり、エリア121aが保持する値MLSとエリア121bが保持する値MJPの合算結果は、第1のカウンタ111が保持する値に等しい。
また、図28では、ちょうどk番目の画素ブロックの符号化処理が完了した場合に、第1のカウンタ111が保持する値が目標符号量Thを越えた場合を示している。
この場合、実施形態における符号化シーケンス制御部110は、以下のような処理を実行する。
[MLS<MJPの場合]
これは、非可逆符号化データのデータ量が、可逆符号化データ量よりも多かった場合を示している。換言すれば、全符号化データ中、非可逆符号化データ量が支配的な場合である。符号化シーケンス制御部110は、次のように処理する。
1.第1のメモリ105内のデータを破棄する指令を第1のメモリ制御部104に出力し、第1のカウンタ111をゼロクリアする。
2.第1の符号化部102に対して、前回の量子化マトリクスQaより1段階大きな量子化マトリクスQa+1を設定する。
3.i=a+1、j=bをLUT120に設定し、使用する境界条件をfa+1,j()に変更する。
4.原稿の再スキャン/符号化を開始する。
[MLS≧MJPの場合]
これは、可逆符号化データのデータ量が、非可逆符号化データ量よりも多かった場合を示している。換言すれば、全符号化データ中、可逆符号化データ量が支配的な場合である。符号化シーケンス制御部110は、次のように処理する。
1.第1のメモリ105内のデータを破棄する指令を第1のメモリ制御部104に出力し、第1のカウンタ111をゼロクリアする。
2.第1の符号化部102に対しては、前回の量子化マトリクスQaのままに維持する。
3.i=a、j=b+1として、LUT120に設定し、使用する境界条件をfa,b+1()を設定する。
4.原稿の再スキャン/符号化を開始する。
以上の結果、本実施形態によると、1ページの画像を符号化処理中に得られた符号化データが目標符号量Thを越えた場合、その際の可逆/非可逆符号化データ量に応じて、変数i,jを決定する。従って、符号化対象の画像データに応じた最適な符号化環境を設定可能になる。
なお、上記実施形態では、可逆符号化データ量MLSと非可逆符号化データ量MJPとを比較することで、次のスキャン/符号化の際の変数i,jを決定した。しかし、信号Sの“1”となっている回数(もしくは“0”の回数でも良い)に応じて、変数i,jのいずれかを更新するかを決定しても構わない。すなわち、信号Sの合計値は可逆符号化データを選択した回数になるので、この回数が過半数未満の場合には上記の[MLS<MJPの場合]の処理を行ない、過半数以上の場合には[MLS≧MJPの場合]の処理を行なっても構わない。また、上記実施形態では、1画素ブロックの符号化が完了する毎に、各符号化データ長Lx,Ly及び選択信号Sを格納するものとして説明した。しかし、必要な情報はエリア121a、121bであるので、各符号長データLx,Ly及び選択信号は格納しなくても構わない。
上記の処理を実現するため、実施形態における符号化シーケンス制御部110は図3A,3Bに示すフローチャートに従って処理を行えば良い。
先ず、ステップS1で変数i、jに初期値として0をセットする。次いで、ステップS2では、第1のカウンタ111に相当する変数Cnをゼロクリアする。
この後、ステップS3で第1の符号化部102に量子化マトリクステーブルQiをセットする。また、このとき、符号化履歴記録部121をクリアする処理も行なう。
次いで、ステップS4で1画素ブロックのデータを入力する。そして、ステップS5にて第2の符号化部102で可逆符号化を行い、ステップS6にてその際に得られた符号化データ長Lxを求める。また、これと並行して、ステップS7、8では、非可逆符号化を行わせ、その際に得られる符号化データの符号化長Lyを求める。
なお、図示ではステップS5、6とステップS7、8は並行して行う例を示しているが、コンピュータプログラムで実現する場合であって、且つ、マルチタスクOSが稼働するのであれば同様に処理できる。また、シングルタスクOSで実現する場合には、ステップS5、6、7、8の順に処理すれば良いであろう。
ステップS9では、Ly≧fi,j(Lx)を満たすか否かを判定する。この関係を満たす場合には、ステップS10にて第1のメモリ105には可逆符号化データを格納させる。そして、ステップS11にて、カウンタCnに符号長Lxを加算する。
一方、ステップS9にてLy<fi,j(Lx)であると判定した場合には、ステップS12にて、第1のメモリ105には非可逆符号化データを格納させる。そして、ステップS13にて、カウンタCnに符号長Lyを加算する。
次のステップS14では、注目画素ブロックの符号化履歴情報(実施形態では、Lx、Ly、及び選択信号S)を符号化履歴記録部121に格納する。
そして、ステップS15にて、カウンタCnが目標符号量Thである閾値を越えたか否かを判断する。Cn>Thであると判断した場合には、ステップS16に進んで、符号化パラメータi,jの更新処理を行なう(詳細後述)。そして、ステップS2に戻って、1ページの先頭画素ブロックから再入力及び再符号化を開始する。
また、ステップS15にて、Cn≦Thであると判断した場合には、ステップS17に進み、1ページの最終画素ブロックについての処理が完了したか否かを判断する。否の場合には、次の画素ブロックの符号化を行なうため、ステップS4以降の処理を繰り返す。また、ステップS17にて、1ページ分の符号化処理が完了したと判定した場合には、ステップS18に進み、第1のメモリ105に格納された符号化データを2次記憶装置7にファイルとして書き込み、本処理を終了する。
ここで、上記のステップS16の処理を図3Bのフローチャートに従って説明する。
先ず、ステップS21にて、変数Cnの値が目標符号量Th以上になったと判断した場合の、それまでに累積加算された可逆符号化データMLSと非可逆符号化データ量MJPとを比較する。
MLS<MJPであると判断した場合、非可逆符号化データ量MJPが可逆符号化データ量MLSよりも多いので、量子化マトリクスQiをQi+1に更新すべく、変数iを“1”だけ増加させる(ステップS22)。
また、MLS≧MJPと判断した場合、可逆符号化データ量MLSが非可逆符号化データ量MJP以上になっていることになるので、境界線2007を左シフトすべく、変数jを“1”だけ増加させる(ステップS23)。
以上説明したように本実施形態によれば、格別な像域判定回路を設けることなく、可逆符号化、非可逆符号化を併用しつつ像域毎に適切な符号化処理を実行するのと等価の符号化データを生成することが可能になる。また、目標符号量Thを超えた場合には、量子化マトリクステーブル、或いは/及び、境界条件を変更するかの環境変更し、画像データの再入力・再符号化を行うことで、目標符号量量Th以下の符号化データを生成することも成功する。
<第2の実施形態>
上記実施形態は、第1のメモリ105に格納される符号化データ量(第1のカウンタ111の値)が、目標符号量Thを越えた場合、その符号化データに占める可逆符号化データ量MLSと非可逆符号化データ量MJPとの比較する。そして、この比較結果に従って、次回のスキャン時の変数i,jを決定した。本第2の実施形態では、更に精度良く変数i,jを決定する例を説明する。
先ず、説明に先立ち、fi,j()をfi+1,j()に変更した場合、画素ブロックに対する非可逆符号化データ長の統計的な減少率R((i,j),(i+1,j))が求められているものとする。ここで、fi,j()を用いた場合の、画素ブロックの平均的な非可逆符号化データ長をC(fi,j())と定義した場合、減少率R((i,j),(i+1,j))は次の通りである。
R((i,j),(i+1,j))=C(fi+1,j())/C(fi,j())
また、同様に、fi,j()をfi,j+1()に変更した場合の非可逆符号化データ長の統計的な減少率R((i,j),(i,j+1))も求められているものとする。そして、fi,j()をfi+1,j+1()に変更した場合の非可逆符号化データ長の統計的な減少率R((i,j),(i+1,j+1))も予め求められているものとする。
境界条件fi,j()で符号化している最中に、第1のメモリ105に格納されている符号化データ量が目標符号量Thを越えたとする。この場合、本第2の実施形態の符号化シーケンス制御部110は、fi+1,j()、fi,j+1()、fi+1,j+1()の中から1つを選択する。すなわち、再符号化のパラメータi,jを決定する。
装置構成は図22と同じであり、符号化処理部6も図1と同じとする。異なる点は、符号化シーケンス制御部110の処理内容と、符号化履歴記録部121が格納するデータ構造である。
本第2の実施形態における符号化履歴記録部121のデータ構造の例を図29に示す。図28との相異点は、図29では第5〜第10フィールドが追加された点である。
第1乃至第4フィールドは図28と同じである。
第2の実施形態の符号化シーケンス制御部110は、1つの画素ブロックの符号化データを第1のメモリ105に格納するた際に、以下の処理を行なう。
1.注目画素ブロックの非可逆符号化データLyに減少率R((i,j),(i+1,j))、R((i,j),(i,j+1))、及び、R((i,j),(i,j+1))を乗算して得られた値Ly',Ly'',Ly'''を、予測符号化データ長として第5、第7、第9フィールドに格納する。
2.予測される選択信号S',S'',S'''を第6、第7、第10フィールドに格納する。
これらの処理1、2は、図3AにおけるステップS14で行なえば良い。
ここで、選択信号S',S'',S'''がどのようになるのかは、図2の構成を利用して、擬似的に選択信号Sを発生させれば良い。なお、可逆符号化データ量Lxは、スキャン回数に依存せず、変化することはない。
本第2の実施形態における、符号化シーケンス制御部110が、符号化履歴記録部121に格納するデータは以下のようにして求める。
Ly' = Ly×R((i,j),(i+1,j))
Ly' < Lxの場合、S’=0
Ly' ≧ Lxの場合、S’=1
Ly'' = Ly×R((i,j),(i,j+1))
Ly'' <Lxの場合、S'' =0
Ly'' ≧Lxの場合、S'' =1
Ly''' = Ly×R((i,j),(i+1,j+1))
Ly'''<Lxの場合、S'''=0
Ly'''≧Lxの場合、S'''=1
さて、図28の場合、k番目の画素ブロックを符号化した際に、第1のカウンタ111の値が目標符号量を越えたことを示している。
この1乃至k番目の画素ブロックを符号化した際の可逆符号化データ量はMLS、非可逆符号化データ量はMJPで与えられるから、第1のカウンタ111の値は、次のようになる。
第1のカウンタ111の値=MLS+MJP (1)
1ページの符号化が途中で中断するが、k番目以前と同じ推移でk+1番目以降の画像が入力されると仮定すると、1ページの全画素ブロックの符号化が完了した場合の1ページの予測総符号化データ量Mtotalは、次のように求められるであろう。
Mtotal=(MLS+MJP)×Nmax/k
従って、境界条件fi+1,j()での1ページの予測符号化データ量をMtotal'とした場合、次のようにして求めることができる。
Mtotal'=(MLS'+MJP')×Nmax/k (2)
ここで、MLS'は予測選択信号S’=1の可逆符号化データ長Lx()の合計値であり、MJP’は予測選択信号S’=0の非可逆符号化データ長ータLy'()の合計値である。
同様に、境界条件fi,j+1()の場合の予測符号化データ量Mtotal''、fi+1,j+1()の場合の予測符号化データ量Mtotal'''も求めることができるのは明らかである。
本第2の実施形態では、このようにして求めたMtotal',Mtotal'',Mtotal'''の中で、目標符号量Thとの差分の絶対値が最も小さいものを選択し、その際の変数i,jを次のスキャン/符号化の符号化パラメータとして決定する。
なお、上記でMLS'、MJP'の算出は、既に図29のようなテーブルが構築されている場合には、実質的に瞬時に計算できるものである。ただし、計算速度を高めるには、予測値Ly’や予測選択信号S’を求めた際に、MLS'或いはMJP'も更新することである。
また、本第2の実施形態では、符号化パラメータi=a,j=bに設定して得られた実符号化データ量が目標符号量Thを越えた場合、「i=a+1、j=b」、「i=a,j=b+1」、「i=a+1,j=b+1」の3つの中から、再スキャン/符号化の際の符号化パラメータを決定した。しかし、第1の実施形態と同様に、「i=a+1、j=b」、「i=a,j=b+1」の2つの中から選択しても構わない。
ここで、本第2の実施形態における符号化シーケンス制御部110は、図3Bに代わって図30の示すフローチャートに従って符号化パラメータを決定すればよい。
ステップS31乃至33では、上記のようにしてMtotal',Mtotal'',Mtotal'''を算出する。次いで、ステップS34では、Mtotal',Mtotal'',Mtotal'''の中で目標符号量Thとの差の絶対値が最小になるのはどれかを判定する。
目標符号量Thとの差の絶対値が最小となるのが、Mtotal'であれば、変数iのみを“1”だけインクリメントし、変数jは変更しない(ステップS35)。また、目標符号量Thとの差の絶対値が最小となるのが、Mtotal''であれば、変数jのみを“1”だけインクリメントし、変数iは変更しない(ステップS36)。そして、目標符号量Thとの差の絶対値が最小となるのが、Mtotal'''であれば、変数i、jの両方を“1”だけインクリメントする(ステップS37)。
以上説明したように本第2の実施形態によれば、第1の実施形態と比較して、より精度良く符号化パラメータi,jを決定することが可能になり、結果的に、第1の実施形態と比較してスキャン回数を減らすことも可能になる。
なお、2回目の再スキャン/符号化が開始されると、符号化履歴記録部121には3回目の再スキャン/符号化のための情報が格納されることになる点を付言しておく。
<第3の実施形態>
上記第2の実施形態では、1ページの予測符号化データ量Mtotal',Mtotal'',Mtotal'''を求め、その中の目標符号量に最も近い符号化パラメータで再符号化を行なうものであった。本第3の実施形態では、符号化対象の画像に依存して符号化パラメータを決定する例を説明する。装置構成は、第1の実施形態と同じである。
また、符号化履歴記録部121が格納するデータ構造は第2の実施形態と同じであるが、符号化パラメータi,jの全てについて、非可逆符号化データ量Lyの予測符号量と予測選択信号を求めているものとする。
LUT120に格納されている変数i(量子化マトリクスQiを決定する変数でもある)、jで特定される各境界条件fi,j()の境界線を図25乃至27に示す。図示は2次元配列された9個の境界線の例であるが、勿論、この数に制限はない。基本的に、A点(図18参照)の垂直方向の座標位置は、変数iが増加するにつれて下方向にシフトし(図示の直線2501参照)、変数jが増加するにつれて左方向にシフトしていく(図示の直線2502参照)。図25乃至図27の違いは、P0乃至P8で示した順番であり、それ以外は同じである。なお、これら図25乃至27における優先順位情報は、符号化シーケンス制御部110内に格納されているものとする。
第2の実施形態で説明したように、i=a、j=bの符号化パラメータで符号化中に目標符号量Thを越えた際の可逆符号化データ量はMLS、非可逆符号化データ量はMJPで与えられる。
本第3の実施形態におけるMLS及びMJPと、図25乃至図27を説明すると、以下の通りである。なお、以下の説明で係数αは1未満の正の値であり、例えばα=0.6である。また、説明を簡単なものとするため、現在の符号化パラメータはi=0、j=0の場合として説明する。
[MLS<MJP×αの場合]
これは、非可逆符号化データ量MJPが可逆符号化データ量MLSよりも十分に多い場合を示している。すなわち、符号化対象の画像データ中の自然画が占める面積が大きく、文字/線画が占める面積は小さいことを意味する。従って、再スキャン/符号化処理する場合には、変数iを増加させることを優先することが望ましく、図25の優先順位P0、P1、P2…に従って再スキャン/符号化に用いる符号化パラメータi,jを決定する。
[MLS×α≧MJPの場合]
これは、可逆符号化データ量MLSが可逆符号化データ量MJPよりも十分に多い場合を示している。すなわち、符号化対象の画像データ中の文字/線画が占める面積が大きく、自然画が占める面積は小さいことを意味する。通常の文章を記述した原稿の場合と考えると分かりやすい。従って、再スキャン/符号化処理する場合には、変数jを増加させることを優先することが望ましく、図26の優先順位P0、P1、P2…に従って再スキャン/符号化に用いる符号化パラメータi,jを決定する。
[MLS×α<MJP≦MLS/αの場合]
これは、可逆符号化データ量MLSと可逆符号化データ量MJPとがほぼ同じ場合を示している。すなわち、符号化対象の画像データ中には、文字/線画と自然画が混在しており、それぞれの占める割合がほぼ同じであることを意味する。従って、再スキャン/符号化処理する場合には、変数i,jの両方をほぼ同じ重みづけで増加させることが望ましく、図27の優先順位P0、P1、P2…に従って再スキャン/符号化に用いる符号化パラメータi,jを決定する。
ここで、符号化パラメータi=0、j=0で符号化処理中に、得られた符号化データ量(第1のカウンタ111の値)が目標符号量Thを越え、その際のMLSとMJPとの関係が「MLS<MJP×α」となった場合の処理を説明する。
この場合、図25の優先順位に従って、1ページの予測符号量を求める。予測符号量の算出は、先の第2の実施形態で示した式(2)で求めることができる。
本第3の実施形態では、符号化パラメータi,jの代わりに優先順位Pz(z=0、1、2、…)で示される。そこで、目標符号量Thを越えた場合の、優先順位Pzで決定される可逆符号化データ量をMLSz、非可逆符号化データ量MJPzとする。このように定義すると、優先順位Pzで示される符号化パラメータで1ページを符号化したと仮定した場合の予測総符号化データ量Mpzは次の式(3)で与えられる。
Mpz=(MLSz+MJPz)×Nmax/k (3)
先に説明したように、上記予測符号化データ量Mpzはあくまで予測値であり、実際にその符号化パラメータでスキャンし符号化した場合の符号化データ量と一致するとは限らない。そこで、許容値β(正の値)を加え、上記式(3)を以下の式(4)に変更する。
Mpz≦(MLSz+MJPz)×Nmax/k+β (3)
本第3の実施形態では、図25の優先順位の順にzに1、2、…を順次与え、最初に式(3)を満たす変数zを求め、その変数zで示される符号化パラメータに従って再スキャン/符号化を実行するようにした。例えば、z=4として決定した場合には、符号化パラメータi=1、j=1として、再スキャン/再符号化を行なう。この結果、再度符号化データ量が目標符号量Thを越えてしまった場合には、優先順位P5以降について符号化パラメータを決定していく。ここで注意したい点は、最初に目標符号量Thを越え、図25乃至図27の中の優先順位を決定した以降では、優先順位を変更しない点である。すなわち、1つのページの画像を符号化している最中に、図25乃至図27の優先順位をその都度選択することは行なわない。
以上であるが、本第3の実施形態における符号化シーケンス制御部110の処理をまとめると次の通りである。
先ず、図3AのステップS14では、符号化パラメータi,jの取り得る全ての組み合わせに対して、非可逆符号化データの予測符号量と予測選択信号を格納するものとする。従って、本第3の実施形態では、図3AのステップS16の処理が変更されるのみである。
本第3の実施形態におけるステップS16の処理を、図31のフローチャートに従って説明する。
先ず、ステップS41では、初めて目標符号量Thを越えたのか否かを判断する。この判断は、符号化パラメータi,jが共に0であるか否かで判断すれば良いし、別途フラグを設けてそれでもって判断しても構わない。
ステップS41で、「初めて目標符号量Thを越え」と判断した場合には、ステップS42に進んで、現在の符号化データの可逆符号化データ量MLSと非可逆符号化データ量MJPが、次のいずれであるかを判断し、優先順位を決定する。
・MLS<MJP×αの場合、非可逆符号化の符号量を優先して減らす優先順位に決定する。実施形態では、図25の優先順位に決定する。
・MLS×α≧MJPの場合の場合、可逆符号化の符号量を優先して減らす優先順位に決定する。実施形態では、図26の優先順位に決定する。
・MLS×α<MJP≦MLS/αの場合、可逆及び非可逆符号化の双方の符号量を減らす優先順位に決定する。実施形態では、図27の優先順位に決定する。
そして、ステップS43では、優先順位の番号を示す変数zに初期値“0”を代入する。
次いで、ステップS44に進んで、変数zを“1”だけ増加させる。従って、ステップS42、43の処理を行なった場合、ステップS44ではz=1となる。また、2回め以降に目標符号量Thを越えた場合、ステップS42、43の処理は行われないので、前回のスキャン/符号化時のzの値が、更に“1”だけ増加することになる。
ステップS45では、符号化履歴記録部121のデータを参照して、変数zで示される1ページの予測符号化データ量MPzを算出する。そして、ステップS46で、条件「MPz≦Th+β」を満たすか否かを判断する。この条件を満たさないと判断した場合にはステップS44に進んで、変数zを更新し、同様の処理を繰り返す。
こうして、条件「MPz≦Th+β」が満たされると判断した場合、処理はステップS47に進み、その時点での変数zで示される変数i,jを、再スキャン/符号化時の符号化パラメータとして決定し、本処理を終える。
以上説明したように本第3の実施形態をまとめると次のようになる。
1.初期の符号化パラメータi=0,j=0で符号化している最中に、得られた符号化データ量(第1のカウンタ111の値)が目標符号量Thを越えた場合、その際の可逆符号化データ量MLSと非可逆符号化データ量MJPとを比較する。これにより、入力される画像の性質を判定できる。
2.判定した入力画像の性質に応じて、符号化パラメータi,jを求めるための優先順位を決定する。
3.決定した優先順位に従って、目標符号量Thに近似する予測符号化データ量を求め、その際の符号化パラメータi,jで実際に再スキャン/符号化を開始することにより、効率良く目標符号量Thに近い符号化データを得ることができる。
なお、本第3の実施形態では、符号化パラメータを決定するための優先順位のパターンとして、図25乃至図27の3つのパターンをしめしたが、「MLS<MJP」について判断することで、図25、図26の2つのパターンとしても良い。また、条件を更に細かく分け、4つ以上であっても構わない。
以上説明したように、本第3の実施形態によれば、第1、第2の実施形態での作用効果に加えて、目標符号量Th以下に納めるためのパラメータを、符号化対象の画像の性質に応じながら、効率良く決定できることになる。
なお、符号化パラメータi=a、j=bの次のスキャン/符号化を行なう符号化パラメータi,jを、「i≧a、j≧b」という条件を更に加えるようにしても構わない。
<第4の実施形態>
第4の実施形態を説明する。本第4の実施形態では、上記第3の実施形態を更に発展させるものである。以下にその詳細を説明する。
上記第3の実施形態では、式(3)、すなわち、
Mpz≦(MLSz+MJPz)×Nmax/k+β
の係数βは正の値であるものとした。
この式からも容易にわかるように、係数βの値が大きな値であればあるほど、この条件が満足する確率は高くなる。例えば、図25に示す優先順位に決定したとする。もしβの値が十分に大きければ、優先順位P1で直ちに上記条件が満足することになり、符号化パラメータi=1、j=0で再スキャン/符号化を開始することになろう。
ここで、実際の画像データの符号化処理では、優先順位P4の符号化パラメータを使用して目標符号量Th以下になるとすると、結局のところ、P0、P1、P2、P4、P4の計5回のスキャン/符号化を行なうことになる。すなわち、係数βを大きな値に設定すると、スキャン/符号化処理回数は増える可能性が高いものの、目標符号量Th以下という条件で、最高画質を生成するための符号化データを生成することが可能になる。
一方、係数βの値が小さく、例えば負の値をも取るように設定すると、優先順位P0に近いP1、P2では上記の条件は満足す可能性が低くなり、優先順位P0から幾つも離れた優先順位になって初めて上記条件を満たすように作用する。すなわち、係数βを小さな値に設定すると、復号画像の画質が必要以上に低下する可能性はあるものの、スキャン/符号化回数を減らすことが可能となる。
上記は境界線(境界条件)の数は9の例であるが、それより多い場合を示すより分かりやすい。図33はその例である。図示の符号2500で示される矢印は、係数βが大きい場合のスキャン/符号化の推移を示している。係数βが十分に大きい場合、スキャン/符号化は7回と多いものの、目標符号量Th以下で、その目標符号量Thに最も近い符号化パラメータi,jを決定できることを示している。一方、符号2501で示される矢印の場合、矢印2500と比較して、不必要に圧縮してしまっているものの、スキャン/符号化は3回と少ない回数で完了していることを示している。
上記考察からわかるように、係数βの値はスキャン/符号化回数、或いは、最終的な目標符号量となる符号化データの画質に影響を与えるパラメータとしての意味を持つことが理解できよう。
そこで、本第4の実施形態では、この係数βを正負の値を取り得るように変更し、その値を操作部2(図22参照)により、ユーザが適宜設定できるようにする。ユーザレベルで見れば、この設定は符号化速度(或いは画質)の設定パラメータとして、指定することとすれば良い。
本第4の実施形態では、説明を簡単なものとするため、ユーザは−1,0(デフォルト),+1の3段階で符号化速度係数vを設定できるものとする。そして、入力する画像データのサイズ(原稿サイズ)に依存して決定される係数γに、設定した符号化速度係数vをを乗算した値を係数βとして定義する。つまり、β=γ×vとして決定する。
勿論、設定できる段数は上記3段階に限らず、2つでも良いし、4以上であっても構わない。ユーザが操作する操作部2には、例えば、上記3段階のいずれかを選択するためのスライダバーをタッチパネル上に表示し、それでもって選択することとするが、選択する機構は如何なるものでも構わない。
本第4の実施形態は、基本的に第3の実施形態の図31のステップS46における係数βを決定するものである。実際の符号化処理はこれまでの説明から明らかであろうから、ここでは、操作部2による操作指示による制御部1の処理手順を図33のフローチャートに従って説明する。
先ず、ステップS51では、操作部2からの入力を検出する。ステップS52では入力が符号化速度に関する指示であるか否か、ステップS54では複写開始の指示であるかを判断する。符号化速度の指示であると判断した場合には、ステップS53に進み、指示に従って係数vを決定する(デフォルトはv=0としている)。また、符号化速度や複写開始指示以外の指示であると判断した場合には、ステップS55に進み、該当する処理を行なう。
さて、複写開始指示が入力されたと判断した場合、処理はステップS56に進んで、原稿読取部3のADFにセットされた原稿を1枚を原稿読み取り面(プラテンガラス上)に搬送する。このとき、公知技術に従って原稿のサイズを検出し、係数γを決定する(ステップS57)。
この後、ステップS59に進んで、係数γと係数vとを乗算することで係数βを算出し、符号化シーケンス制御部110に設定する。このとき、目標符号量Thも合わせて符号化シーケンス制御部110に設定する。
上記設定がなされると、処理はステップS59に進んで、原稿読取部3に対して原稿のスキャンを開始させると共に、符号化シーケンス制御部110に対して符号化処理を開始させる。そして、ステップS60にて、1ページ分の符号化データが格納されるまで待つ。
さて、1ページの符号化処理が完了すると、処理はステップS61に進み、2次記憶装置7に第1のメモリ105に格納された1ページ分の符号化データを格納させる。そして、ステップS62において、復号・印刷処理を開始させる。復号印刷処理は、図示の処理とは独立した処理である。この後、ステップS63に進み、稿読取部3に未複写の原稿が残っているか否かを、不図示のセンサからの信号に従って判断する。未複写の原稿が残っている場合には、ステップS56以降の処理を繰り返す。
以上説明したように本第4の実施形態によれば、第3の実施形態での作用効果に加えて、符号化速度、或いは、出力画像の画質についてユーザが設定できることになる。
なお、第4の実施形態のフローチャートは、複写処理を例にしたが、印刷データを外部から印刷データを受信し印刷する場合に適用させても構わない。
<第5の実施形態>
上記第1乃至第4の実施形態では、符号化処理中に得られた符号化データ量が目標符号量Thを越えると、画像データを再度入力(再スキャン)するものであった。
本第5の実施形態では、この再入力を行なわずとも、目標符号量Th以下の符号化データを得ることを可能にする例を説明する。説明を簡単なものとするため、本第5の実施形態での符号化パラメータの決定原理は、第1の実施形態と同じとする。ただし、以下の説明から明らかなるが、第2乃至第4の実施形態に従って符号化パラメータを決定しても構わない。
装置構成は図22と同様であるものとし、以下では符号化処理部6に着目して説明することとする。
図4は、第5の実施形態における符号化処理部6のブロック構成図である。図1と異なる点は、第2のメモリ制御部106、第2のメモリ107、再符号化部112、並びに第2のカウンタ113が追加された点である。それ以外は図1と同じであるので、同符号を付した。
また、第1のメモリ105には、先に説明した第1の実施形態と同様の判断基準に従って選択された符号化データが格納されるので、その説明についても省略する。従って以下では、本第5の実施形態の特徴的な点について説明することとする。
第2のメモリ制御部106は符号化シーケンス制御部110の制御の元で、第2符号化部103で生成された符号化データ(可逆符号化データ)の第2のメモリ107への格納処理、及び、第2のメモリ107より符号化データの読出しを行う。この第2のメモリ107は、1ページの画像データを符号化する際の作業エリアとして使用されるものである。
再符号化部112は、第2のメモリ107に格納された符号化データ(可逆符号化データ)中の、符号化シーケンス部110より指定された範囲の符号化データを再符号化する。この再符号化部112は例えば図13の構成になる。
第2のメモリ107には第2の符号化部(JPEG−LS符号化部)103で符号化された可逆符号化データが格納されているので、先ず、JPEG−LS復号部112aで原画像の画素ブロックに復号(復元)する。そして、JPEG符号化部112bは、復元された画素ブロックを、符号化シーケンス制御部110より設定された量子化マトリクステーブルQiに従ってJPEG符号化(非可逆符号化)を行う。このとき、符号化データの先頭に可逆符号化データであることを示す識別ビットを付加する。
符号長検出部112cはJPEG符号化された符号化データの符号長を検出し、符号長検出部112dは第2のメモリより読み出した可逆符号化データの符号長を検出する。LUT112eは、符号化シーケンス制御部110内のLUT120と同じ情報を格納しており、符号化シーケンス制御部110からの符号化パラメータi,jと、2つの符号長データをアドレスとして入力し、1ビットの信号を選択信号として出力する。
セレクタ112fはLUT112eからの選択信号に従って可逆符号化データ、非可逆符号化データのいずれか一方を選択し第2のメモリ制御部106に出力することで、選択した符号化データを第2のメモリ107に格納させる。もう1つのセレクタ112gは選択された符号化データの符号長を選択し、第3のカウンタ113に累積加算させる。
上記処理を、符号化シーケンス制御部106より指定された範囲について繰り返し実行する。第2のカウンタ113は、再符号化部112の再符号化が開始される際にリセットされ、再符号化部112で生成される符号化データ量を累積カウントする。設定された範囲の再符号化が完了した場合、第2のカウンタに保持されている値(再符号化で生成された符号化データ量)は、符号化シーケンス制御部110に出力される。
以上、図4の構成について説明したが、全体の処理を更に詳しく説明すると次の通りである。
1ページの画像データの符号化を開始する際に、入力される画像サイズに応じた目標符号量Thが符号化制御部110に制御部1より設定される。符号化シーケンス制御部110は第1の符号化部102に対して初期の量子化マトリクステーブルQ0(最高画質の符号化パラメータ)を設定し、第1のカウンタ111をゼロクリアする。また、これに伴い、符号化パラメータi,jを共に0に設定する。そして、第1の符号化部102、第2の符号化部103に対して符号化処理を開始させる。以下は、1ページの画像データの入力と符号化処理の説明である。
第1の符号長検出部108及び第2の符号長検出部109より、同じ画素ブロックに対する符号化データが出力されると共に、第1、第2の符号長検出部108、109でそれぞれの符号長が得られる。符号化シーケンス制御部110は、第1の実施形態と同様、すなわち、図2の構成に従って、いずれか一方の符号化データを選択し、その選択した符号化データの符号長情報を第1のカウンタ111に加算させる。このとき、いずれを選択したのかを示す制御信号を第1のメモリ制御部104に出力する。更に、符号化シーケンス制御部110は、第1の実施形態と同様に、可逆/非可逆データ符号長Lx、Ly及び選択信号を符号化履歴記憶部121に格納する(図28参照)。
第1のメモリ制御部104は、符号化シーケンス制御部110より上記の制御信号を受け取り、第1の符号化部102、第2の符号化部103からの符号化データのいずれか一方を第1のメモリ105に格納する。
具体的には、条件「Ly≧fi,j(Lx)」の関係にあるとき、第2の符号化部103からの符号化データ、この条件を満たさない場合には第1の符号化部102からの符号化データを選択し、第1のメモリ105に格納する。
以上の結果、第1のメモリ105には、境界条件fi,j(Lx)で定義された境界に対して、符号長の短い符号化データが格納されていく。つまり、第1のメモリ105には、可逆符号化データと非可逆符号化データが混在して格納されていく。一方、第2のメモリ107には可逆符号化データのみが格納されていくことになる。
ここで注意したい点は、第1のカウンタ111には第1のメモリ105に格納される符号化データの総符号量の情報が格納されることである。
ここまでは、第2のメモリ107に可逆符号化データが格納される点を除いて、第1の実施形態と同じである。
符号化シーケンス制御部110は、符号化処理が進行中、第1のカウンタ111の値、すなわち、第1のメモリ105に格納される符号化データの総量を監視し、目標符号量Thを越えた(或いは到達したかとしても良い)か否かを判定する。そして、第1のカウンタ111に格納された値(総符号量)が、目標符号量Thを越えたと判定した場合、符号化シーケンス制御部110は次の処理を行う。
1.第1のメモリ105内の格納済みのデータを廃棄するよう第1のメモリ制御部104に制御信号を出力する。第1のメモリ制御部104は、この制御信号に基づいて、メモリアドレスカウンタをクリアするか、あるいは、符号化データ管理テーブルをクリアすることにより、格納された符号化データを廃棄する。
2.第1のカウンタ111をゼロクリアする(入力部101からの画像の入力は継続している)。
3.第1の実施形態に従って符号化パラメータi,jを更新する。このとき、変数iが更新された場合には、第1の符号化部102に対しては、更新後の変数iで示される量子化マトリクステーブルQiを設定する。なお、符号化パラメータi,jの更新処理は、第1の実施形態で説明しているので、そちらを参照されたい。
4.第2のカウンタ113をゼロクリアし、再符号化部112に変更後の符号化パラメータi,jを設定すると共に、変更後の量子化マトリクステーブルQiをセットする。そして、第2のメモリ107に格納されている符号化データの再符号化を開始させる。再符号化して得られた符号化データ(可逆・非可逆符号化データが混在している)は、第2のメモリ107に一旦、再格納する。なお、第2のメモリ107には、第2の符号化部103からの符号化データも格納されているので、両者は区別して格納される。
5.再符号化が完了した場合、第2のメモリ107に「再」格納された符号化データを、第1のメモリ105に転送すると共に、第2のメモリ107より削除する(符号化部103からの可逆符号化データは削除しない)。そして、第2のカウンタ113の値を読出し、第1のカウンタ111に足し込む。この結果、第1のカウンタ111は再び第1のメモリに格納された符号化データの総量を示すことになる。
なお、再符号化処理が終了したかどうかは、第2のメモリ制御部106が検出する。すなわち、再符号化処理するために読み出すデータが無くなれば、再符号化処理の終了を符号化シーケンス制御部110に知らせる。実際には、第2のメモリ制御部107の読み出し処理だけでなく、再符号化部111の処理も終了した後に、符号化処理が完了したことになる。
そして1ページの画像の入力と符号化が完了する前に再び総符号化データ量が目標符号量Thを越えたと判断した場合、上記工程1乃至5を実行する。従って、最終的に、第1のメモリ105には目標符号量Th以下の符号化データが格納されることになる。
上記、図4の構成における符号化シーケンス制御部110の処理手順を図11のフローチャートに示すが、説明を簡単にするために、簡略化した図5のフローチャートに従ってまず、説明する。
図5のフローチャートは、大別すると、下記の3つの処理フェーズに分かれる。
(1)符号化フェーズ
(2)符号化・再符号化フェーズ
(3)転送フェーズ
上記それぞれの処理フェーズにおいて、どのように画像データ、符号化データ等が流れて処理され、メモリにどのように格納されるのかを視覚的にわかりやすく示したのが図6乃至図10である。
図6は、図5のフローチャートにおけるステップS303とS305に対応する符号化フェーズの初期状態を表す。なお、図6におけるスイッチ400は、符号化シーケンス制御部110及び第1のメモリ制御部104の機能で実現することになる。切り換えのための信号は、図2に示すLUT120からの信号を利用する。
第1のメモリ105には2つの符号化部による符号データのいずれか一方が格納される。従って、第1のメモリ105に格納されるデータ量Iは、第2のメモリ107に格納されるデータ量I'よりも少ない関係が維持されることになる。
図7は、ステップS309で、第1のカウンタ111が保持している値が目標符号量Thを越えた場合の遷移を示している。この場合、符号化パラメータi,jが更新され、場合によっては量子化マトリクスも更新される(変数iが更新された場合)。第1のメモリ105内のデータは破棄されるので、図示のように、第1のメモリ105内には有効な符号化データはない。
図8は、ステップS311〜S315に対応する符号化・再符号化フェーズの処理状態を示し、図9はステップS317に対応する転送フェーズの処理状態を、図10は転送フェーズ後の符号化フェーズの処理状態を表す。以下、各フェーズについて説明する。
<<符号化フェーズ>>
1ページ分の画像データの符号化処理は、符号化パラメータの初期設定処理(ステップS301)から始まる。この初期設定処理では、符号化処理する画像サイズ(ページ記述レンダリング等の入力部101から読み取る用紙サイズ)から一意的に目標符号量Thを決定する。また、符号化パラメータi,jをそれぞれ“0”に設定し、第1の符号化部102に適用する量子化マトリクステーブルQi(=Q0)を設定する。
この後、ステップS303にて、第1の符号化部102及び第2の符号化部103にて符号化処理を開始させる。この結果、第1のメモリ105には、画素ブロック単位に、第1の符号化部102からの符号化データと、第2の符号化部103からの符号化データのいずれか一方が格納されていく。第1のメモリ105に格納されている符号化データ量は、第1のカウンタで計数する点は既に述べた通りである。一方、第2のメモリ106には、第2の符号化部103からの可逆符号化データが格納されていくことになる。図6は、この状況を示している。第1のメモリ105に格納されるデータ量を示す領域Iは、少なくとも第2のメモリ107に格納されるデータ量を示す領域I'以下となる。
次にステップS305にて、該データ量のカウント値が上記目標符号量Thをオーバーしたかどうかを検知し、オーバーしてない場合にはステップS303の第1の符号化と第2の符号化処理を継続する。これが、初期状態の符号化フェーズである。
<<符号化・再符号化フェーズ>>
符号化処理が進行し、第1のメモリ105に格納される総符号データ量が目標符号量Thをオーバーすると、ステップS307にて第1のメモリ105内の符号化データを廃棄すると共に、第1のカウンタ111をゼロクリアする。そして、ステップS309にて、符号化パラメータi,jを、第1の実施形態で説明した原理に従って更新する。このとき、パラメータiが更新された場合には、更新後のパラメータiで特定される量子化マトリクステーブルQiを第1の符号化部102に設定する。
総符号化データ量が目標符号量Thをオーバーするということは、圧縮後のデータ量が目標符号量Th以内に収まらないことを意味する。よって、同じ条件で符号化処理を継続しても意味がないので、より高い圧縮率の得られる条件へ状態遷移する。
符号化パラメータi,jの更新、及び、場合によっては量子化マトリクスの更新を行なうと、ステップS311に進む。ここでは、第1の符号化部102と第2の符号化部103の符号化処理を再開する。また、再符号化部112には、更新後の符号化パラメータi,j、量子化マトリクステーブルQiをセットし、第2のメモリ107に格納されている符号化データ量の再符号化を開始させ、再符号化結果を再び第2のメモリに格納させる。この状態を示すのが図7である。
そして、ステップS315で再符号化の処理が完了するまで待つことになる。
<転送フェーズ>
ステップS315にて、再符号化が完了したと判断した場合、第1メモリ105及び第2のメモリ107の符号化データの格納状況を示すのが図8である。図示において、領域II、II'は、再符号化処理を行っている最中に、新に入力した画像データに対応する符号化データを示している。また、領域Iは、領域I'に格納されていた符号化データを再符号化した結果(非可逆符号化データと可逆符号化データが混在している)を示している。
ステップS317では、図9に示すように、第2のメモリ107に格納された再符号化データ(図示の領域I)を、第1のメモリ105に転送する。この転送が完了すると、第2のメモリ107内の領域Iのデータは破棄(もしくは上書きを許容)する。このとき、再符号して得られたデータ量(図9の領域Iのサイズ)は第2のカウンタ113に保持されているので、それを第1のカウンタ111に足し込む。
上記転送フェーズが終了したら、ステップS303、S305の符号化フェーズに戻り、符号化フェーズに戻ることになる。この結果、図10に示すように、新たな入力画像データに対する符号化データIII、III'をそれぞれのメモリへの格納処理を行うことになる。この符号化フェーズは、初期状態の符号化フェーズ(図6)と少し異なり、第1のメモリ105に格納される符号化データの順序が、画像入力順にならない点である。それらの違いを無視すれば、転送フェーズ直後の符号化フェーズと初期状態の符号化フェーズは、同じと見なせる。なお、図10に示すように、符号化データの順番は必ずしも時系列になるとは限らない。そこで、各フェーズにおける格納アドレスを別途記憶するものとした。この結果、1ページの符号化処理が完了し2次記憶装置7に出力する際には、第1のメモリ105より時系列に符号化データを読出し、出力すれば、時系列なデータにできる。
よって、符号化フェーズ、符号化・再符号化フェーズと転送フェーズの3つを繰り返すことで、最終的に1ページの画像データをデータ量設定値以下に圧縮した符号を第1のメモリ105に格納することが出来る。しかも、入力部101は一連の処理が終わるまで、入力を継続するだけである。すなわち、画像を再度最初から入力し直すということが無くなる。
図5に示したフローチャートは、説明が理解しやすいように、図6乃至図10に示した各フェーズに対応する処理のみを記述した。しかしながら実際には、1ページの画像データの入力はどこかのフェーズで終了する。従って、どのフェーズで終了したかによって、それ以降の対応も多少異なる。それを考慮した流れを示したのが図11のフローチャートである。図11のフローチャートは、1ページ分の画像データの入力完了と図5で説明した各種処理との関係を考慮したものであり、ここでは図5のフローチャートに、ステップS801、S803、S805、S807を追加している。
ステップS801、S803、S805は、それぞれ、符号化フェーズ、符号化・再符号化フェーズ、転送フェーズにおいて、入力部101からの1ページ分の画像データの入力が終了したことを検知する。
符号化フェーズと転送フェーズで1ページ分の画像データの入力が終了したことを検知した場合(ステップS801、S805)、処理はステップS807へ移る。ここでは、当該ページの圧縮符号化処理を終了する。次に処理すべき1ページ以上の画像データがあれば、次の1ページ分の画像データの圧縮符号化処理を開始し、無ければ停止状態に入る。
一方、符号化・再符号化フェーズで1ページ分の画像データの入力終了を検知した場合(ステップS803)には、第1の符号化部102、第2の符号化部103では再符号化処理する画像データが無くなるまで一旦動作を止める必要があ。そこで、ステップS311の符号化処理をパスし、ステップS313で、今までに第1の符号化部102、第2の符号化部103で符号化済みの画像データを所定の符号化データ量に抑える為の再符号化処理のみを継続して行なう。また、再符号化処理が全て終了して、その後の転送処理が終わらないと、1ページ分の画像データ全体の符号化データが第1のメモリ上に集まらない。このため、1ページ分の画像データの入力終了後も再符号化処理及びそれに続く転送処理は継続して行われる必要がある。このため、ステップS315にて、再符号化処理が全て終了したことを検知すると、符号化・再符号化フェーズ中に、第2のメモリ107のみに格納された符号化データを第1のメモリに転送(ステップS317)する。その後、次のステップS805にて、1ページ分の画像データの入力終了が検知されてステップS807へ移ることになる。
以上が本第5の実施形態における動作であり、図11の動作説明でもある。
以上説明したように、本第5の実施形態によれば、第1の実施形態と同様の作用効果を奏することが可能になる。そして、更に、1ページの画像を入力を中断することなく、且つ、再入力を行うことなく、目標符号量Th以下の符号化データを生成することも可能になる。
特に、注目したい点は、非可逆符号化にJPEG、可逆符号化にJPEG−LSという2つの技術を併用している点である。既に説明したように、JPEG符号化は自然画に対して圧縮効率が高く、JPEG−LS符号化は、文字/線画に対して高い圧縮率が得られるし、可逆符号化であるため原画像を忠実に再現することが可能である。
ここで、第1カウンタ111(符号量)の時間軸の推移の一例を図12に示す。
図示の場合、タイミングT0で、原稿画像の入力を開始し、タイミングT5で原稿画像の入力が完了した場合を示している。入力される原稿のサイズが固定であれば、タイミングT5は固定となる。以下、各タイミングでの処理を説明する。
タイミングT0:
画像入力開始(符号化開始)タイミングである。このとき、符号化パラメータi,jは共に“0”であるので、第1の符号化部102には、初期値として量子化マトリクステーブルQ0をセットする。また、第1カウンタ111は“0”に初期化される。この後、画像の入力及び符号化が継続すると、画像データの符号化データの符号化が行われ、第1カウンタ111のカウント値は徐々に増えていく。
タイミングT1:
画像データの符号化データ量が、目標符号量Thに到達した場合を示している。このとき、第1のメモリ105の画像データの符号化データは破棄し、第1カウンタ111をゼロクリアする。そして、符号化パラメータi,jを第1の実施形態と同様にして決定し、決定された符号化パラメータi,jを再符号化部112に設定し、再符号化処理を開始させる。
タイミングT2:
再符号化及び転送処理の完了を示している。再符号化が完了すると、再符号化して得られた符号データが第2のメモリ107から第1のメモリ105に転送されると共に、再符号化データ量を示す第2のカウンタ113の値が、第1のカウンタ111に足し込まれる。この結果、第1のメモリ105及び第2のメモリ107には、1ページの先頭からタイミングT2までの間に入力した画像データに対する符号化データが格納される。
タイミングT3:
再び、画像データの符号化データ量が、目標符号量に到達した場合を示している。このとき、第1のメモリ105の画像データの符号化データは破棄し、第1カウンタ111をゼロクリアし、符号化パラメータi,jを更新し、再符号化処理を開始させる。
タイミングT4:
再符号化及び転送処理の完了を示している。再符号化が完了すると、再符号化して得られた符号データが第2のメモリ107から第1のメモリ105に転送されると共に、再符号化データ量を示す第2のカウンタ113の値が、第1のカウンタ111に足し込まれる。この結果、第1のメモリ105及び第2のメモリ107には、1ページの先頭からタイミングT2までの間に入力した画像データに対する符号化データが格納される。
タイミングT5:
1ページの原稿入力の完了を示している。この場合、第1のメモリ105には、1ページの画像の符号化データが格納されていることになるので、その結果を、2次記憶装置7に出力する。
ここで、2枚めの原稿画像を読取る場合には、上記タイミングT1からの処理を繰り返すことになる。
なお、画像によっては、原稿画像の入力が完了したタイミングT5の直前にて、第1カウンタ111の値が目標符号量をオーバーすることも有り得る。この場合、タイミングT5の後に、再符号化及び転送処理が行われることになる。従って、第1のメモリ105に格納された符号化データを2次記憶装置7に出力する条件は、原稿画像の入力が完了し、且つ、符号化(再符号化及び転送)が完了した場合となる。
以上説明したように本第5の実施形態によれば、第1の実施形態の作用効果に加えて、1ページの画像データを1回の入力で目標符号量Th以下の符号化データを得ることが可能になる。
<第5の実施形態の変形例>
図14は、図4に対する変形例である。図4と異なる点は、再符号化部112で再符号化して得られた符号化データの格納先を、第1のメモリ105にした点である。これ以外の構成は図4と同じである。
図15は、第1のメモリ105に格納された総符号化データ量が目標符号量Thをオーバーし、第1のメモリ105内のデータを破棄し、第2のメモリ107に格納されている符号化データ(図示の領域I')の再符号化を開始する際の状態を示している。
図示に示すように、再符号化部112の再符号化の格納先は第1のメモリ105に設定して、再符号化を開始させる。
図16は、再符号化が完了した際の2つのメモリの符号化データの格納状態を示している。再符号化が完了すると、図示のように、第1のメモリ105には、領域Iで示す符号化データが格納される。この領域Iの符号化データは、目標符号量をオーバーしたと判定する以前までに入力した画像データを符号化した場合に相当するものとなる。
再符号化が行われている最中にも、画像データの入力及び符号化が行われているので、図示に示すように領域II及びII'が存在する。
第1のメモリ105には、空き領域105aが生成されることになるので、図示の領域IIの符号化データを、領域Iの後端位置にまで移動させる。この後、符号化フェーズを再開することになり、この際のメモリへの格納状態は図17に示すようになる。
図4に対して図14の構成のメリットは、再符号化後のデータ転送が実質的に無くなる点である。
なお、この変形例では、転送フェーズが無くなるだけであるので、先の第5の実施形態と本変形例は、3つのフェーズを繰り返して処理することに変わりは無い。従って、処理の内容も図5や図11と殆ど同じであるので、説明は不要であろう。なお、図16では空き領域105aを無くすために、第1のメモリ105内での移動を行ったが、各領域の接続関係を管理するファイル管理テーブル、或いは、パケット管理テーブル等を設ければ良いので、必ずしも内部転送は必要ではない。
<第5の実施形態のその他の変形例>
上記第5の実施形態及びその変形例では、或る符号化パラメータi=a,j=b、及び、量子化マトリクステーブルQaで符号化中に、それで得られる符号化データ量が目標符号量Thを越えた場合、符号化パラメータi,jを第1の実施形態に従って更新した。
しかし、第2乃至第4の実施形態で説明した原理に従って、符号化パラメータを決定しても構わない。なぜなら、第2乃至第4の実施形態の処理は、第1の実施形態の図3のステップS16についての実施形態であり、全く同様の処理が第5の実施形態の図5や図11のステップS309にも存在するからである。
また、第5の実施形態では、第1のメモリ105、第2のメモリ107は物理的に別のメモリであるとして説明をしてきた。本発明においてはこれらのメモリを独立して設けることは十分に1つの特徴となる。しかしながら、これらのメモリを物理的に別のメモリとしない場合にも適用できるのは明らかである。特に、メモリの転送スピードが、十分に高速な場合には物理的に1つのメモリ上に、第1のメモリ、第2のメモリに相当する2つの領域を確保できる。従って、第1のメモリを第1のメモリ領域、第2のメモリを第2のメモリ領域と言い直して、これまでの説明を読み直せば、1つのメモリでも実現できることが分かる。
また、1つのメモリで上記各実施形態を実現する場合には、前記転送フェーズで説明したデータ転送処理のいくつかは不要となる。その詳細はその都度容易に想像できるので説明は省略する。ただし、前記2つの領域を厳密に別けて使用する場合、物理的に2つのメモリを持つ時と同じようにデータ転送処理が必要である。また、2つの領域間で同じデータを共有することになれば、データ転送処理が不要になるだけでなく記憶容量の削減も図れる。
例えば、第2のメモリ領域で保持していた符号化データの先頭アドレスとデータサイズを、第1のメモリ領域へ転送すれば、上記の符号化データの転送と同じ効果が得られる。
前記符号化データを、ファイル形式やパケット形式で格納している場合は、メモリ制御部の間で転送する情報は少し増え、該符号化データに関連する管理テーブル情報を転送する必要がある。
なお、実施形態では、符号化対象を8×8画素ブロックサイズとして説明したが、このサイズも本発明を限定するものではない。要するに、2つ(或いはそれ以上でも良い)の異なる符号化技術を使って、同一の画像領域に対して生成された2種類の符号化データ量を比較できるようにすれば良い。例えば、JPEG符号化ではN×M画素ブロック単位に符号化を行い、JPEG−LSが2N×2Mの画素ブロックを符号化対象とし得るのであれば、4つのJPEG符号化データと1つのJPEG−LS符号化データを比較するようにしても構わない。
また、実施形態では、2種類の符号化技術として、非可逆符号化であるJPEG、可逆符号化であるJPEG−LSを用いる例を説明した。しかしながら、可逆、非可逆符号化技術としては、これによって限定されない。
ただし、JPEGは非可逆符号化であり自然画に適した符号化方式であり、一方、JPEG−LSは可逆符号化であり、自然画と対極にある文字/線画に適したものである。つまり、両符号化は、符号化方式、符号化対象の画像の性質が共に異なるものであるので、このようにお互いに補い合う方式を採用すると、本願発明は有利に作用することがわかるであろう。
また、実施形態では、符号化対象となる画像データは、スキャナやレンダリング処理より得られる例を説明したが、オリジナルの画像データを記憶した記憶媒体(例えばCDROM等)から読出し、それを圧縮符号化する場合に適用しても構わない。
更にまた、実施形態では、可逆符号化データと非可逆符号化データのそれぞれのデータ長のプロットした例として図18に示した。しかし、圧縮符号化対象の画像データ中の文字/線画が比較的鮮明であることを前提にするのであれば、図18アンチエイリアス処理を施した文字/線画領域T2については、符号化品位の対象外としても構わない。
また、上記各実施形態では、図22に示す複写機に適用した例を説明した。しかしながら、例えばパーソナルコンピュータ等の汎用情報処理装置にイメージスキャナ等の画像入力装置を接続して符号化する場合にも適用できるのは明らかである。この場合、各実施形態で示したフローチャートに係るプログラムを実行すれば良いので、本願発明はかかるコンピュータプログラムをもその範疇とするのは明らかである。また、通常、コンピュータプログラムはCDROM等のコンピュータ可読記憶媒体をそのコンピュータにセットし、システムにコピーもしくはインストールすることで実行可能になる。従って、当然、そのようなコンピュータ可読記憶媒体も本発明の範疇に含まれる。