(57)【要約】【課題】  可逆符号化と非可逆符号化を画素ブロック単位に適宜切り換えて、再現した際の画質の劣化を抑制しつつ、画像全体を高い圧縮率で符号化することが可能になる。【解決手段】  入力した画像データはブロック分割部１０２で所定サイズのタイルに分割される。有効レベル数カウント部１０４は、注目タイル中の各色成分の出現する輝度レベルの数（有効レベル数）を計数する。また、入力されたタイルは、タイルデータ可逆符号化部１０８、及びタイルデータ非可逆符号化部１１４でそれぞれ符号化される。セレクタ１１５は、注目タイルの全色成分の有効レベル数が所定条件を満たすか否かに応じた重み係数を生成し、その重み係数を用いて、可逆符号化データ量と非可逆符号化データ量とを比較し、少ない符号化データ量を選択し、出力する。【選択図】  図１
2006140967.tif 000002
【特許請求の範囲】
【請求項１】
画像データを符号化する画像符号化装置であって、
画像データを複数画素からなるブロックに分割するブロック分割手段と、
該ブロック分割手段で得られたブロックを単位に可逆符号化する可逆符号化手段と、
前記ブロック分割手段で得られたブロックを単位に非可逆符号化する非可逆符号化手段と、
前記ブロック分割手段で得られたブロック内の各色成分の取り得る成分値の範囲で、幾つの成分値が存在したか示す出現数を計数する計数手段と、
該計数手段で得られた各色成分の出現数と所定の閾値とを比較することで、重み付け係数を決定する重み付け係数決定手段と、
前記可逆符号化手段で得られた可逆符号化データ量と、前記非可逆符号化手段で得られた非可逆符号化データ量とを、前記重み付け係数決定手段で得られた重み付け係数を用いて比較する比較手段と、
該比較手段による重み付け比較結果に基づき、符号データ量の少ない符号化データを選択し出力する選択手段と
を備えることを特徴とする画像符号化装置。
【請求項２】
重み付け係数決定手段は、色成分Ｃ１、Ｃ２、Ｃ３それぞれの出現数をＮＬＶ（Ｃ１）、ＮＬＶ（Ｃ２）、ＮＬＶ（Ｃ３）としたとき、
条件１：ＮＬＶ（Ｃ１）＜ＭＬ  ＆  ＮＬＶ（Ｃ２）＜ＭＬ  ＆  ＮＬＶ（Ｃ３）＜ＭＬ
を満たす場合、前記非可逆符号化データ量を相対的に増やすための重み付け係数値を生成することを特徴とする請求項１に記載の画像符号化装置。
【請求項３】
更に、ブロック内の文字・線画の属性を有する画素を検出する検出手段と、
文字・線画属性を有する画素数を計数する第２の計数手段とを備え、
前記重み付け係数決定手段は、前記条件１を満たさない場合、
条件２：第２の計数手段で得られた画素数＞所定の閾値
を満足する場合、前記非可逆符号化データ量を相対的に増やすための重み付け係数値を生成することを特徴とする請求項１に記載の画像符号化装置。
【請求項４】
画像データを符号化する画像符号化方法であって、
画像データを複数画素からなるブロックに分割するブロック分割工程と、
該ブロック分割工程で得られたブロックを単位に可逆符号化する可逆符号化工程と、
前記ブロック分割工程で得られたブロックを単位に非可逆符号化する非可逆符号化工程と、
前記ブロック分割工程で得られたブロック内の各色成分の取り得る成分値の範囲で、幾つの成分値が存在したか示す出現数を計数する計数工程と、
該計数工程で得られた各色成分の出現数と所定の閾値とを比較することで、重み付け係数を決定する重み付け係数決定工程と、
前記可逆符号化工程で得られた可逆符号化データ量と、前記非可逆符号化工程で得られた非可逆符号化データ量とを、前記重み付け係数決定工程で得られた重み付け係数を用いて比較する比較工程と、
該比較工程による重み付け比較結果に基づき、符号データ量の少ない符号化データを選択し出力する選択工程と
を備えることを特徴とする画像符号化方法。
【請求項５】
コンピュータが読み込み実行することで、画像データを符号化する画像符号化装置として機能するコンピュータプログラムであって、
画像データを複数画素からなるブロックに分割するブロック分割手段と、
該ブロック分割手段で得られたブロックを単位に可逆符号化する可逆符号化手段と、
前記ブロック分割手段で得られたブロックを単位に非可逆符号化する非可逆符号化手段と、
前記ブロック分割手段で得られたブロック内の各色成分の取り得る成分値の範囲で、幾つの成分値が存在したか示す出現数を計数する計数手段と、
該計数手段で得られた各色成分の出現数と所定の閾値とを比較することで、重み付け係数を決定する重み付け係数決定手段と、
前記可逆符号化手段で得られた可逆符号化データ量と、前記非可逆符号化手段で得られた非可逆符号化データ量とを、前記重み付け係数決定手段で得られた重み付け係数を用いて比較する比較手段と、
該比較手段による重み付け比較結果に基づき、符号データ量の少ない符号化データを選択し出力する選択手段
として機能することを特徴とするコンピュータプログラム。
【請求項６】
請求項５に記載のコンピュータプログラムを格納したことを特徴とするコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像データを符号化する技術に関するものである。
【背景技術】
【０００２】
従来、画像処理装置を構成する一手法として、可逆符号化データの符号量を検出し、その可逆符号量が所定量以上の場合には、可逆符号化ではなく非可逆符号化に切り替えるという技術が知られている（特許文献１）。
【０００３】
また、ブロック内の色数がある閾値以内であれば可逆符号化方式を選択し、それ以外であれば非可逆符号化方式を選択する技術も知られている（特許文献２）。
【特許文献１】特開平６−５４２０８号公報
【特許文献２】特開平８−１６７０３０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
可逆符号化は一般的に非可逆符号化よりも符号量が大きくなるとされていた。よって符号量を所定以内に収めようとするいわゆる符号量制御技術においては、例えば可逆符号化データのデータ量が大きい場合に可逆符号化の代わりに非可逆符号化を用いるという一方通行の符号化切り替えが一般的である。
【０００５】
ところが、近年知られるＪＰＥＧ−ＬＳ等の可逆符号化は、符号化対象の画像の種類によっては非可逆符号化よりも圧縮率が良いことで注目されている。
【０００６】
よって、従来の様な上記一方通行の符号化切り替えをするのではなく、例えば、最初から可逆符号化データと非可逆符号化データのお互いの符号量を比較して、符号化データ量が少ない方を選択する方式も有効と考えられる。
【０００７】
本発明は上記状況に鑑みてなされたものであり、可逆符号化と非可逆符号化を画素ブロック単位に適宜切り換えて、再現した際の画質の劣化を抑制しつつ、画像全体を高い圧縮率で符号化する技術を提供しようとするものである。
【課題を解決するための手段】
【０００８】
この課題を解決するため、例えば本発明の画像符号化装置は以下の構成を備える。すなわち、
画像データを符号化する画像符号化装置であって、
画像データを複数画素からなるブロックに分割するブロック分割手段と、
該ブロック分割手段で得られたブロックを単位に可逆符号化する可逆符号化手段と、
前記ブロック分割手段で得られたブロックを単位に非可逆符号化する非可逆符号化手段と、
前記ブロック分割手段で得られたブロック内の各色成分の取り得る成分値の範囲で、幾つの成分値が存在したか示す出現数を計数する計数手段と、
該計数手段で得られた各色成分の出現数と所定の閾値とを比較することで、重み付け係数を決定する重み付け係数決定手段と、
前記可逆符号化手段で得られた可逆符号化データ量と、前記非可逆符号化手段で得られた非可逆符号化データ量とを、前記重み付け係数決定手段で得られた重み付け係数を用いて比較する比較手段と、
該比較手段による重み付け比較結果に基づき、符号データ量の少ない符号化データを選択し出力する選択手段とを備える。
【発明の効果】
【０００９】
本発明によれば、可逆符号化と非可逆符号化を画素ブロック単位に適宜切り換えて、再現した際の画質の劣化を抑制しつつ、画像全体を高い圧縮率で符号化することが可能になる。
【発明を実施するための最良の形態】
【００１０】
以下添付図面を参照して、本発明を好適な実施形態に従って詳細に説明する。
【００１１】
［第１の実施形態］
図１は本実施形態に係る画像処理装置のブロック構成図である。
【００１２】
図１に示すように、本実施形態に係る画像処理装置は、ストライプバッファ１０１、ブロック分割部１０２、タイルバッファ１０３、有効レベル数カウント部１０４、インデックステーブル用メモリ１０５、インデックス変換部１０６、セレクタ１０７、タイルデータ可逆符号化部１０８、可逆符号列形成部１０９、インデックステーブル生成部１１３、タイルデータ非可逆符号化部１１４、セレクタ１１５、符号列形成部１１６とを備える。また、符号１１０、１１１、１１２はバス信号線を示している。
【００１３】
本実施形態に係る画像処理装置の符号化対象とする画像データは、ＲＧＢカラー画像データであり、各コンポーネント（色）は８ビットで、それぞれ０〜２５５の範囲の輝度値を表現した画素データにより構成されるものとする。符号化対象の画像データの並びは点順次、即ち、ラスタースキャン順に各画素を並べ、その各画素はＲ，Ｇ，Ｂの順番でデータを並べて構成されるものとする。信号線１１０より入力される符号化対象の画像データは水平方向Ｗ画素、垂直方向Ｈ画素により構成されるものとする。
【００１４】
以下、図１を参照して、本実施形態に係る画像処理装置が行う画像符号化処理について説明する。
【００１５】
符号化対象画像データは信号線１１０から、ラスタースキャン順に入力される。
【００１６】
ストライプバッファ１０１は画像データを所定のライン数（Ｔｈ）分格納する領域を持ち、信号線１１０から入力される画像データを順次格納していく。
【００１７】
以降、符号化対象画像データをＴｈラインの幅で分割した部分的な画像データをストライプデータもしくは単にストライプと呼ぶ。ストライプバッファ１０１に必要とされる容量、即ち１ストライプのデータ量はＷ×Ｔｈ×３（ＲＧＢ分）バイトである。説明の便宜上、垂直方向画素数ＨはＴｈの整数倍であるとし、画像の末尾で不完全なストライプが発生しないものとする。
【００１８】
ストライプバッファ１０１に１ストライプの画像データ、即ち、Ｔｈライン分の画像データが格納されるとブロック分割部１０２はストライプバッファ１０１に格納されるＴｈライン分の画像データを水平方向Ｔｗ画素、垂直方向Ｔｈ画素で構成される矩形ブロックに分割して、ブロック単位に読み出してタイルバッファ１０３へと格納する。説明の便宜上、画像の水平方向に並ぶ画素数ＷはＴｗの整数倍であるとし、矩形ブロックに分割した場合に不完全なブロックが発生しないものとする。この水平方向Ｔｗ画素、垂直方向Ｔｈ画素で構成される矩形ブロックを以降ではタイルデータもしくは単にタイルと呼ぶ。
【００１９】
タイルバッファ１０３は、１タイル分の画素データを格納する領域を持ち、ブロック分割部１０２から出力されるタイルデータを順次格納していく。よってタイルバッファ１０３に必要とされる最低容量はＴｗ×Ｔｈ×３（ＲＧＢ分）バイトである。タイルバッファ１０３に格納される１タイル分の画素データの水平方向画素位置ｘ、垂直方向画素位置ｙにある画素のコンポーネントｃの輝度値をＰ（ｘ、ｙ、ｃ）と定義する。ｘは０からＴｗ−１まで、ｙは０からＴｈ−１まで、ｃはＲ，Ｇ，Ｂのいずれかである。
【００２０】
有効レベル数カウント部１０４は、タイルバッファ１０３に格納される１タイルの画素データについて、コンポーネント毎に、そこで使用されている輝度レベル数（言い換えると、何種類の輝度レベルが使われているか）をカウントする。
【００２１】
以降、タイル内にて使用されている輝度レベルを有効レベルと呼び、その個数を有効レベル数と呼び、Ｒ、Ｇ、Ｂの各コンポーネントの有効レベル数をそれぞれＮＬＶ（Ｒ）、ＮＬＶ（Ｇ）、ＮＬＶ（Ｂ）として表す。
【００２２】
有効レベル数カウント部１０４はその内部に図５に示すようなフラグの配列Ｆ（ｃ，ｉ）を保持する。ｃはコンポーネントを表し、Ｒ，Ｇ，Ｂのいずれかである。ｉは輝度値を表し、０〜２５５のいずれかの値である。フラグＦ（ｃ，ｉ）＝０は着目するタイルのコンポーネントｃにおいて輝度値ｉが出現しないことを意味し、フラグＦ（ｃ、ｉ）＝１はタイルのコンポーネントｃにおいて輝度値ｉが出現することを意味する。
【００２３】
図６は有効レベル数カウント部１０４の処理の流れを示すフローチャートである。以下、図６に示したフローチャートを参照して、有効レベル数カウント部１０４の行う処理について説明する。
【００２４】
まず、有効レベル数カウント部１０４の内部に保持するフラグ配列Ｆ（ｃ，ｉ）を全て０に初期化する（ステップＳ６０１）。
【００２５】
次に、タイル内垂直方向画素位置を示す変数ｙを０に設定する（ステップＳ６０２）。
【００２６】
同様にタイル内水平方向画素位置を示す変数ｘを０に設定する（ステップＳ６０３）。
【００２７】
タイルバッファ１０３に格納されるＰ（ｘ，ｙ，Ｒ）、Ｐ（ｘ，ｙ，Ｇ）、Ｐ（ｘ，ｙ，Ｂ）を参照し、フラグ配列Ｆ（Ｒ，Ｐ（ｘ，ｙ，Ｒ））、Ｆ（Ｇ，Ｐ（ｘ，ｙ，Ｇ））、Ｆ（Ｂ，Ｐ（ｘ，ｙ，Ｂ））に１を設定する（ステップＳ６０４）。
【００２８】
例えば、タイル内の位置ｘ、ｙのＲ、Ｇ、Ｂの値がそれぞれ１０、２０、３０である場合、
Ｆ（Ｒ、１０）←１
Ｆ（Ｇ、２０）←１
Ｆ（Ｂ、３０）←１
とし、Ｒ成分の有効レベル“１０”が存在したことを示す情報をセットする。Ｇ、Ｂ成分についても同様である。
【００２９】
次に、タイル内垂直方向画素位置を示す変数ｘに１を加算する（ステップＳ６０５）。そして、変数ｘとタイルの水平方向画素数Ｔｗを比較し、ｘ＜Ｔｗの場合（ＹＥＳ）にはステップＳ６０４に処理を移して右隣の画素について処理を行い、そうでない場合（ＮＯ）にはステップＳ６０７へと処理を移す。
【００３０】
ステップＳ６０７ではタイル内垂直方向画素位置を示す変数ｙに１を加算する（ステップＳ６０７）。
【００３１】
変数ｙとタイルの垂直方向画素数Ｔｈを比較し、ｙ＜Ｔｈの場合（ＹＥＳ）にはステップＳ６０３に処理を戻し、上記処理を繰り返す。
【００３２】
以上の処理を、タイルの全画素について処理すると、そのタイル内に出現した各色成分の有効レベルが判明する。したがって、ステップＳ６０９では、各色成分毎の有効レベル数ＮＬＶ（Ｒ）、ＮＬＶ（Ｇ）、ＮＬＶ（Ｂ）は次のようにして求めることができる。
ＮＬＶ（Ｒ）＝ΣＦ（Ｒ，ｉ）
ＮＬＶ（Ｇ）＝ΣＦ（Ｇ，ｉ）
ＮＬＶ（Ｂ）＝ΣＦ（Ｂ，ｉ）
ここで『Σ』はｉ＝０〜２５５までの累積加算を示すものである。
【００３３】
以上の処理により各コンポーネントの有効レベル数ＮＬＶ（ｃ）（ｃはＲ、Ｇ、Ｂのいずれか）を生成し、出力する。
【００３４】
インデックステーブル用メモリ１０５には図７に示すようなインデックス変換テーブルＩＤＸ（ｃ、ｉ）を保持する。
【００３５】
ここでも、ｃはコンポーネントを表し、Ｒ，Ｇ，Ｂのいずれかであり、ｉは輝度値を表し、０〜２５５のいずれかの値である。このインデックス変換テーブルＩＤＸ（ｃ、ｉ）は後述するインデックス変換部１０６において輝度値をインデックス値に変換する際に参照される。
【００３６】
インデックステーブル生成部１１３は有効レベル数カウント部１０４に保持されているフラグ配列Ｆ（ｃ，ｉ）を参照して、インデックステーブル用メモリ１０５にインデックス変換テーブルＩＤＸ（ｃ、ｉ）を生成する。同時に符号列に付加情報として含めて伝送するための変換テーブル情報を可逆符号列形成部１０９へと出力する。
【００３７】
図８はインデックステーブル生成部１１３の処理の流れを示すフローチャートである。この処理は、各コンポーネント毎の、出現した有効レベル（Ｆ（ｃ，ｉ）＝１となっている輝度）に０、１、２とインデックス番号を割り当てるものである。
【００３８】
以下、図８に示したフローチャートを参照して、インデックステーブル生成部１１３の行う処理について説明する。インデックステーブル生成部１１３によるインデックステーブル生成の処理はコンポーネント毎に行われるが、各コンポーネント毎の処理は同一であるので、ここではコンポーネントをｃとして処理を説明する。
【００３９】
まず、インデックステーブル用メモリ１０５の内部に保持するインデックス変換テーブルＩＤＸ（ｃ，ｉ）を全て−１等のインデックスとしてあり得ない値で初期化する（ステップＳ８０１）。
【００４０】
次に、輝度値を示す変数ｉに０を初期設定し（ステップＳ８０２）、インデックス値を表す変数ｉｄｘ（ｃ）を０に初期化する（ステップＳ８０３）。
【００４１】
次いで、有効レベル数カウント部１０４に保持されているフラグ配列Ｆ（ｃ，ｉ）を参照し、着目する輝度値ｉについてＦ（ｃ，ｉ）＝１かどうかを判断する（ステップＳ８０４）。
【００４２】
Ｆ（ｃ，ｉ）＝１である場合（ＹＥＳ）はステップＳ８０５へ、そうでない場合（ＮＯ）はステップＳ８０７へと処理を移す。
【００４３】
Ｆ（ｃ，ｉ）＝１である場合、コンポーネントｃの輝度値ｉが注目タイル内に存在したことを示すことを意味するので、ステップＳ８０５にて、ＩＤＸ（ｃ，ｉ）にｉｄｘ（ｃ）を設定するとともに、ｉｄｘ（ｃ）を可逆符号列形成部１０９へ出力する（ステップＳ８０５）。
【００４４】
続いてｉｄｘ（ｃ）に１を加えて値を更新する（ステップＳ８０６）。
【００４５】
ステップＳ８０７では輝度値を示す変数ｉに１を加えて更新し（ステップＳ８０７）、変数ｉと２５６と比較し、ｉ＜２５６である場合（ＹＥＳ）にはステップＳ８０４に処理を戻して次の輝度値について処理を継続し、それ以外の場合（ＮＯ）にはステップＳ８０９へと処理を移す。
【００４６】
ステップＳ８０９では１つのコンポーネントについての付加情報の終了コードとして値−１を可逆符号列形成部１０９へと出力する。
【００４７】
以上の処理をＲ，Ｇ，Ｂ各コンポーネントについて順番に行い、インデックステーブル用メモリ１０５内部にインデックステーブル用メモリを生成する。
【００４８】
着目するタイルについて、有効レベル数カウント部１０４による有効レベル数カウント処理と、インデックステーブル生成部１１３によるインデックステーブル生成処理が終了すると、インデックス変換部１０６、セレクタ１０７、タイルデータ予測符号化部１０８により、タイルバッファ１０３に格納されるタイルデータの符号化処理を開始する。
【００４９】
本実施形態の画像符号化装置では、タイルの符号化データをコンポーネント順に読み出して符号化する。即ち、まず、タイルのＲコンポーネントを先ず符号化し、続いてＧコンポーネント、Ｂコンポーネントの順に符号化していく。各コンポーネントについてはタイル内をラスタースキャン順にデータを読み出して符号化処理を行う。各コンポーネントの符号化処理は共通であるので、以下、コンポーネントをｃとして符号化処理を説明する。
【００５０】
インデックス変換部１０６はインデックステーブル用メモリ１０５に格納されるインデックス変換テーブルＩＤＸ（ｃ，ｉ）を参照して、タイルバッファ１０３からコンポーネント順、ラスタースキャン順に読み出される輝度値Ｐ（ｘ，ｙ，ｃ）をインデックス値ＩＤＸ（ｃ、Ｐ（ｘ、ｙ、ｃ））に置き換えて出力する。
【００５１】
セレクタ１０７はタイルバッファ１０３から順次読み出される画素値Ｐ（ｘ，ｙ，ｃ）とインデックス変換部１０６から出力されるインデックス値ＩＤＸ（ｃ、Ｐ（ｘ，ｙ，ｃ））を受け取り、選択して出力する。セレクタ内部には所定の閾値ＭＬ（タイルサイズに依存して決定されることが望ましい）を保持しておき、有効レベル数カウント部１０４から出力される有効レベルＮＬＶ（ｃ）と閾値ＭＬを比較し、ＮＬＶ（ｃ）＜ＭＬである場合にはインデックス変換された値、即ちインデックス変換部１０６からの入力値を選択して出力し、ＮＬＶ（ｃ）≧ＭＬである場合にはインデックス変換されていない値Ｐ（ｘ，ｙ，ｃ）を選択して出力する。
【００５２】
タイルデータ可逆符号化部１０８は、信号線１１１から入力される画素値、またはインデックス値を可逆符号化して符号列を信号線１１２を介して可逆符号列形成部１０９へと出力する。
【００５３】
タイルデータ可逆符号化部１０８の内部は可逆符号化方式であれば適用可能であり、例えば、連続階調静止画像の可逆及び準可逆圧縮の国際標準として勧告されるＪＰＥＧ−ＬＳ（ＩＳＯ／ＩＥＣ１４４９５−１および２）などを適用することができる。ここでは、図２に示すブロック構成図で示される構成になっているものとする。
【００５４】
同図に於いて２０１はバッファ、２０２は予測器、２０３は減算器、２０４はメモリ、２０５はハフマン符号化器である。図２は、画像データを予測誤差に変換する系列変換の処理に周辺画素を用いた予測変換を用い、符号化処理にはハフマン符号化を用いる画像圧縮方式の例である。
【００５５】
同図において、実際の符号化が行われる前に、予め幾つかの画像を示す画像データを系列変換して得られた予測誤差の頻度分布を調べ、これに応じてハフマンテーブルを作成し、メモリ２０４に格納される。
【００５６】
予測誤差の頻度分布の一般的性質として予測誤差０を中心として出現頻度が高く、予測誤差の絶対値が大きくなるにつれて出現頻度が下がっていく傾向にあるため、メモリ２０４に格納されるハフマン符号では予測誤差０近辺に短い符号語が割り当てられ、予測誤差の絶対値が大きい部分には長い符号語が割り当てられる。
【００５７】
最初に信号線１１１からタイルデータが順に入力される。バッファ２０１は信号線１１１から入力されるタイルデータを２ライン分格納する。予測器２０２はバッファ２０１から符号化対象画素の直前の画素ａと，１ライン前の同じ水平位置の画素ｂのタイルデータ（図３参照）を取り出し、ｐ＝（ａ＋ｂ）／２の演算を行う事により予測値ｐを生成する。
【００５８】
減算器２０３は符号化対象画素のタイルデータｘと予測値ｐとの差分値ｅとして出力する。ハフマン符号器２０５は、予めメモリ２０４に格納されるハフマンテーブルを参照して、差分値ｅに対応する符号化データを信号線１１２から出力する。
【００５９】
メモリ２０４には予め幾つかのサンプル画像を予測符号化した際の予測誤差の特性に基づいて作成されたハフマンテーブルを格納しておく。図４はメモリ２０４に格納されるハフマンテーブルの一例である。
【００６０】
可逆符号列形成部１０９は、インデックステーブル生成部１１３から出力される付加情報と、タイルデータ予測符号化部１０８から出力される符号化データを結合させて、予測符号化方式の出力となる符号列を形成して出力する。
【００６１】
図１０（ａ）、（ｂ）は１つのタイルの可逆符号列のデータフォーマットを示す図である。また、同図（ｃ）はタイルデータ非可逆符号化部１１４により出力される非可逆符号列のデータフォーマット示している。
【００６２】
各データの先頭の１バイトの最上位ビットＭＳＢ（＝ビット７）は、可逆、非可逆を区別するデータを格納する。実施形態の場合、ＭＳＢが“０”を可逆符号化を示す情報にアサインし、“１”の場合には非可逆符号化を示す情報にアサインした。また、下位３ビットのビット２、１、０は、コンポーネントＲ，Ｇ，Ｂに対応し、それぞれ閾値ＭＬ（セレクタ１０７の保持する閾値に同じ）以上か以下かを表す情報を割り当てた。
【００６３】
つまり、ビット２にはＮＬＶ（Ｒ）＜ＭＬであるかどうかを表し、ＮＬＶ（Ｒ）＜ＭＬである場合には“１”、それ以外の場合には“０”を設定する。ビット１にはＮＬＶ（Ｇ）＜ＭＬであるかどうかを表し、ＮＬＶ（Ｇ）＜ＭＬである場合には“１”、それ以外の場合には“０”を設定する。ビット０にはＮＬＶ（Ｂ）＜ＭＬであるかどうかを表し、ＮＬＶ（Ｂ）＜ＭＬである場合には“１”、それ以外の場合には“０”を設定する。また、ビット６からビット３については常に０を設定する。
【００６４】
ＮＬＶ（Ｒ）、ＮＬＶ（Ｇ）、ＮＬＶ（Ｂ）のいずれかが所定の閾値ＭＬ以下である場合、即ち、先頭バイトのＭＳＢが“０”で、下位７ビットの値が０でない場合にはタイルの符号列の先頭バイトに続き、変換テーブル情報が付随する。
【００６５】
インデックステーブル生成部１１３から変換テーブル情報が出力されるが、有効レベル数カウント部１０４から出力される有効レベル数ＮＬＶ（ｃ）を所定の閾値ＭＬと比較して、ＮＬＶ（ｃ）＜ＭＬであるコンポーネントについてのみ変換テーブル情報を符号列に付加する。
【００６６】
例えば、或るタイルについてインデックステーブル生成部から出力される変換テーブル情報が、
０、１，２，３，４，…，２５４、２５５，−１，０，１２８，２５５，−１，０，６４，１２８，１９２，２５５
であるとき、ＮＬＶ（Ｒ）＝２５５、ＮＬＶ（Ｇ）＝３、ＮＬＶ（Ｂ）＝５となる。
【００６７】
ここで、閾値ＭＬを“３２”と仮定する。この場合、コンポーネントＲの有効レベル数「２５５」は閾値“３２”より大きいので、注目タイルの符号化データ列の先頭１バイトのビット２は“０”となる。また、コンポーネントＧ、Ｂそれぞれの有効レベル数は閾値“３２”未満であるので、符号化データ列の先頭１バイトのビット１、０は共に“１”となる。
【００６８】
注目タイルは、可逆符号化であるのでＭＳＢは“０”、ビット３乃至６も“０”としているわけであるから、上記の場合、先頭の１バイトは“３”という値になる。
【００６９】
また、符号化データ列中の「変換テーブル情報」を生成する際、−１をコンポーネントの変換テーブル情報の区切りとして識別し、コンポーネントＧとコンポーネントＢについての変換テーブル情報を生成する。
【００７０】
上述の例では「変換テーブル情報」は、次のようになる。
０，１２８，２５５，０，０，６４，１２８，１９２，２５５
変換テーブル情報の区切りを表す−１は０に置き換えられ、最後の０は削除される。復号する際には、先頭の１バイトのＭＳＢが“０”であり、下位３ビットを調べれば、どの色成分についての変換テーブルが存在するかが判明するので、変換テーブル情報を左から右に順番に見て、隣の値よりも小さくなるか等しい部分は区切り情報であると判断してインデックス値から輝度値に変換する情報を取得すれば良いことになる。
【００７１】
タイル毎に独立に符号化を行い、必要な変換テーブル情報を各タイルの符号化データに含むことにより、復号時にはタイルデータを独立に復号することが可能となる。
【００７２】
図１０の出力符号列の構成には示していないが、符号化データ中に所定の値が発生しないように工夫を加えて特殊なマーカを設定し、各タイルデータの先頭、または末尾にマーカを置く、あるいは、各タイルの符号列の長さを別途管理することでタイル単位のランダムアクセスを可能とすることができる。
【００７３】
タイルデータ可逆符号化部１０８で可逆符号化を行うと同時に、タイルデータ非可逆符号化部１１４で、ブロックに分割されたデータの画素値を受け取り、非可逆符号化を行う。非可逆符号化には、多値自然画像を対象とした非可逆圧縮の国際標準として勧告されたＪＰＥＧ（ＩＴＵＴ−Ｔ．８１｜ＩＳＯ／ＩＥＣ  ＩＳ１０９１８）などを適用することができる。ＪＰＥＧについての詳細は規格書などあるためここでは説明は省略するが、図１０（ｃ）に示すように、先頭１バイトのＭＳＢを“１”にした符号化列を生成する。これは、該当するタイルが可逆、非可逆符号化のいずれで符号化されているかを識別するためである。
【００７４】
セレクタ１１５は、可逆符号列形成部１０９から出力される可逆符号化データと、非可逆符号化部１１４から出力される非可逆符号化データを入力し、そのいずれか一方を選択し出力する。この際の選択条件は次の通りである。
ＣＬＫ≦ＣＬＨ＋α  の関係を満たすとき、可逆符号化データを選択出力する。
ＣＬＫ＞ＣＬＨ＋α  の関係を満たすとき、非可逆符号化データを選択出力する。
ここで、ＣＬＨは非可逆符号化データの符号量（符号長）を示し、ＣＬＫは可逆符号化データの符号量（符号長）を示し、αは重み付け係数である。
【００７５】
ここで、全コンポーネントの有効レベル数が閾値ＭＬ未満である場合、すなわち、
ＮＬＶ（Ｒ）＜ＭＬ
ＮＬＶ（Ｇ）＜ＭＬ
ＮＬＶ（Ｂ）＜ＭＬ
である場合には、可逆符号化データの方が選択されやすいようにするため、α＝正の定数で、例えば“１００”とする。
【００７６】
一方、各コンポーネントの有効レベル数の１つでも閾値ＭＬ以上の場合には、α＝０とする。
【００７７】
例えば、あるタイルの符号化を行った際の非可逆符号化データ量ＣＬＨ＝７５０（バイト）、可逆符号化データ量ＣＬＫ＝８００（バイト）であるものとする。そして、そのタイルの全コンポーネントの有効レベル数ＮＬＶ（ｃ）＜閾値ＭＬ（ｃは、Ｒ、Ｇ、Ｂ）を満足する場合には、重み付け係数αは“１００”になるので、
８００＜｛７５０＋１００｝
となり、可逆符号化データが選択され出力されることになる。
【００７８】
なお、本発明は、タイル単位での有効レベル数に応じて符号量比較の重み付けをする方法に限らず、例えば、ＮＬＶ＜ＭＬであるコンポーネントの数に応じて、符号量比較の際の重み付けを行う様にしても良い。
【００７９】
次に、実施形態における符号列形成部１１６を説明する。符号列形成部１１６は、セレクタ１１５から出力されるタイルごとの符号化データを結合させて受け取り、入力画像全体に対応する符号列を形成して出力する。そのため、符号化データの先頭には、図９に示すように、画像を復号するために必要となる情報、例えば、画像の水平方向画素数、垂直方向画素数（タイルサイズは固定とするので、タイル数を示す情報でもある）、コンポーネント数、各コンポーネントのビット数などの付加情報がヘッダとして付けられる。
【００８０】
以上説明したように本実施形態によれば、画像データを符号化する際に、その画像データを所定サイズのブロック（実施形態ではタイル）に分割し、基本的には非可逆符号化データ量と可逆符号化データ量とを重み付け比較して、小さい方を選択して画像全体の符号化データを生成するので、高い圧縮率が期待できる。
【００８１】
しかも、２つの符号化データの一方を選択する際の重み付け比較の際には、全色成分の有効レベル数、すなわち、Ｒ、Ｇ、Ｂのそれぞれの色成分で実在する輝度値の種類数が所定閾値（実施形態では閾値ＭＬ）未満である場合、可逆符号化データが選択され易く作用する。このような状況は、一般には、文字・線画領域、或いは下地色や単調な色の画像領域に相当するものである。したがって、特に、可逆であるが故に、文字や線画についてはそのエッジが明瞭な状態で符号化されることになり、高い画質が期待できる。
【００８２】
特に、可逆符号化の場合、実施形態では、入力された各色成分値をそのまま利用した可逆符号化と、インデックス値による可逆符号化の２つが存在することにより、文字・線画領域では、そのほとんどがインデックス値に基づく符号化が採用されることになり、更に高い圧縮率が期待できる。
【００８３】
また、有効レベル数が閾値ＭＬを超える状況とは、そのブロックには多数の色が存在することを意味し、一般に自然画に多く見られる状況である。したがって、このような状況では、ＪＰＥＧ等の非可逆符号化データを選択しても、画質的に問題となることはないであろうし、高い圧縮率が期待できる。
【００８４】
＜変形例の説明＞
上記実施形態では図１の構成に基づく説明であったが、パーソナルコンピュータ等の汎用の情報処理装置（以下、ＰＣ）上で実行するコンピュータプログラムでもっても実現する例を以下に説明する。
【００８５】
図１１はＰＣのブロック構成図である。図示において、１４０１は装置全体を制御するＣＰＵであり、１４０２はメインメモリとなるＲＡＭである。１４０３はＢＩＯＳやブートプログラムを格納しているＲＯＭである。１４０４はキーボード、１４０５はマウス（登録商標）等のポインティングデバイス（ＰＤ）である。１４０６はＣＲＴや液晶等の表示装置である。１４０７はハードディスク装置等の外部記憶装置であり、ここにＯＳをはじめ、画像圧縮に関するプログラムが格納されている。また、各種データファイルもここに格納される。１４０８はフロッピー（登録商標）ディスクドライブ、ＣＤ−ＲＯＭドライブ等の記憶媒体ドライブであり、１４０９はスキャナ装置等の外部装置と接続するためのインタフェースである。そして、１４１０は上記構成を電気的に接続するためのバスである。
【００８６】
上記構成において、本装置の電源をＯＮにすると、ＣＰＵ１４０１はＲＯＭ１４０３に格納されたＯＳをＲＡＭ１４０２にロードし、起動することになる。ＯＳ起動後、本変形例における画像符号化アプリケーションプログラムをＯＳを介して外部記憶装置１４０７からＲＡＭ１４０２にロードし、実行する。
【００８７】
ここでは説明を簡単なものとするため、インタフェース１４０９にイメージスキャナが接続されていて、原稿を読取り、その画像を符号化し、外部記憶装置１４０７にファイルとして格納する例を説明する。説明を簡単なものとするため、入力画像は上記の実施形態と同じ、Ｒ、Ｇ、Ｂ各８ビットで表わされているものとする。
【００８８】
図１２、図１３は本変形例における符号化処理を示すフローチャートである。
【００８９】
ステップＳ１２０１では、原稿画像を読取り、ＲＡＭ１４０２に確保されたバッファーに１ストライプ分の画像データを格納する。
【００９０】
そして、ステップＳ１２０２にて、１タイル分の画像データをバッファより読み出し、ステップＳ１２０３にてＪＰＥＧ符号化等の非可逆符号化を行う。この結果、１タイル分の非可逆符号化データ量をＣＬＨとする。
【００９１】
次いで、可逆符号化を行うが、前段階で、ステップＳ１２０４にて、読出した１タイル中のＲ、Ｇ、Ｂの有効レベル数ＮＬＶ（Ｒ）、ＮＬＶ（Ｇ）、ＮＬＶ（Ｂ）を算出する。この処理は、図６に示すフローチャートにしたがえば良いであろう。
【００９２】
そして、ステップＳ１２０５にて、Ｒ成分の有効レベル数ＮＬＶ（Ｒ）と閾値ＭＬとを比較し、「ＮＬＶ（Ｒ）≧ＭＬ」の関係を満たす場合には、ステップＳ１２０６に進んで、入力したタイルのＲ成分値をそのまま利用して可逆符号化を行う。
【００９３】
また、「ＮＬＶ（Ｒ）＜ＭＬ」の関係にあると判断した場合には、ステップＳ１２０７にてインデックス化し、ステップＳ１２０８にてインデックス値を可逆符号化する。
【００９４】
上記はＲ成分についての可逆符号化処理であるが、上記と同様の処理を、Ｇ、Ｂ成分についても行う。これを示すのがステップＳ１２０９、Ｓ１２１０である。それぞれの処理内容は、ＮＬＶ（Ｇ）、ＮＬＶ（Ｂ）と置換えれば良いので説明するまでもないであろう。
【００９５】
１つのタイルに対するＲ、Ｇ、Ｂの全コンポーネントの可逆符号化処理が完了すると、ステップＳ１２１１にて、全有効レベル数ＮＬＶ（Ｒ）、ＮＬＶ（Ｇ）、ＮＬＶ（Ｂ）が閾値ＭＬ未満であるか否かを判断する。もしこの条件を満たすと判断した場合には、ステップＳ１２１２にて重み付け係数αに正の所定値（実施形態では仮に“１００”）を設定する。また、１つの色成分の有効レベル数が閾値ＭＬ以上になった場合には、重み付け係数αには“０”を設定する。
【００９６】
こうして、重み付け係数αの設定処理を終えると、処理はステップＳ１２１４に進み、「ＣＬＫ≦ＣＬＨ＋α」を満足するか否かを判定する。
【００９７】
「ＣＬＫ≦ＣＬＨ＋α」を満たすと判断した場合には、先のステップＳ１２０５乃至Ｓ１２１０で得られた可逆符号化データを、注目タイルの符号化データとしてＲＡＭ１４０２に確保された出力バッファに出力する（ステップＳ１２１５）。この際、データフォーマットは図１０（ａ）もしくは図１０（ｂ）の形式である。
【００９８】
また、「ＣＬＫ＞ＣＬＨ＋α」と判断した場合には、先のステップＳ１２０３の処理で得られた非可逆符号化データを、注目タイルの符号化データとして出力バッファに出力する（ステップＳ１２１６）。
【００９９】
ステップＳ１２１７は、注目タイルが注目ストライプの最後のタイルであるか否かを判断する。否の場合には、ステップＳ１２０２以降の処理を繰り返す。
【０１００】
また、注目タイルが注目ストライプの最後のタイルであると判断した場合には、ステップＳ１２１８に進み、注目ストライプが画像データの最終ストライプであるか否かを判断し、否の場合にはステップＳ１２０１以降の処理を繰り返す。
【０１０１】
最終ストライプの最終タイルであった場合、画像全体の符号化が完了したことを意味するので、ステップＳ１２１９に進み、ヘッダ情報を付加し、出力バッファに格納された符号化データをファイルとして外部記憶装置１４０７に書き込み保存し、本処理を終了することになる。
【０１０２】
以上説明したように、先に説明した第１の実施形態と同様の処理を、ＰＣ等の汎用の情報処理装置上で実行するアプリケーションプログラムとしても実現できることになり、同様の作用効果を奏することが可能になる。
【０１０３】
なお、復号処理であるが、復号処理は基本的に符号化処理とは逆の手順にしたがって行えばよいのは、自明のことであろうから、ここでの説明については省略する。
【０１０４】
また、実施形態では、符号化対象の画像データはＲ、Ｇ、Ｂ成分で表現され、各８ビットであるものとして説明したが、これに限られるものではなく、他の色空間、他のビット数でも構わない。これは以下に説明する例でも同様である。
【０１０５】
［第２の実施形態］
上記第１の実施形態、並びにその変形例では、着目するタイルの有効レベル数に応じて符号化処理（または符号化データ）の選択の際に加算する重み付け係数を求めるものであった。
【０１０６】
しかし、上記の処理によって本願発明が限定されるものではない。例えば、２つの符号化データの一方を選択され易いようにするためには、一方に重み付け係数を加算すること以外に、減算する手法を採用しても構わないし、乗算、除算を採用しても構わない。
【０１０７】
例えば、乗算を利用するのであれば、ステップＳ１２１２にてαに“１．１”を設定し、ステップＳ１２１３ではαに“１．０”を設定する。そして、ステップＳ１２１４では、「ＣＬＫ≦ＣＬＨ×α」を満たすか否かを判断すれば良い。
【０１０８】
［第３の実施形態］
第３の実施形態では、属性情報をも利用する例を説明する。
【０１０９】
図１４は第３の実施形態における画像符号化装置のブロック構成図である。図１に示した第１の実施形態の画像処理装置と同じ機能ブロックについては同じ番号を付し、その説明については省略する。
【０１１０】
図１と異なる点は、属性情報検出部１５０１、タイル属性判定部１５０２を設け、セレクタ１１５はタイル属性判定部１５０２の判定結果をも加味して、符号化データの選択出力する点にある。
【０１１１】
属性情報検出部１５０１は、タイルバッファ１０３に格納される１タイルの画像データから属性情報を取得する。取得する属性情報は画素ごとに、文字であるなら１、文字以外であるなら０のフラグを持つようなものであり、その情報を出力する。文字か文字以外かの判定は、タイルのＲＧＢデータをＬａｂ色空間に変換し、隣接する画素の輝度成分Ｌの差が所定の閾値以上あるか否かを判断することで対処すればよい。すなわち、一般に、文字線画は、そのエッジで濃度（或いは輝度）が急峻に変化することを利用する。
【０１１２】
タイル属性判定部１５０２では、属性情報検出部１５０１から出力された属性情報を受け取り、画素ごとの属性情報からタイル中に文字属性を持った画素がどれくらいの割合で存在しているかを判定し出力する。ここで出力される文字属性画素の割合をＭＺとする。
【０１１３】
セレクタ１１５は、タイルデータ可逆符号化部１０８とタイルデータ非可逆符号化部１１４から出力される符号化データと、タイル属性判定部１５０２から出力される文字属性画素の割合ＭＺを受け取り、それらから符号化方式の選択を行い、選択された符号化方式の符号化結果を出力する。
【０１１４】
このとき、文字であるかそうでないかを判定する閾値をＭＣ、重み付けにより付加する符号量をＮとし、ＮＬＶ（ｃ）＞ＭＬであり有効レベル数のみでは重み付けできないような場合においても、ＭＺ＞ＭＣであれば非可逆符号化した符号量ＣＬＨにＮだけ重み付けを行う。
【０１１５】
例えば、非可逆符号化の符号量ＣＬＨが５００バイト、可逆符号化の符号量ＣＬＫが５９０バイト、付加する符号量Ｎを１００バイトとし、有効レベル数ＮＬＶ（ｃ）が３３で、閾値ＭＬが３２、またＭＣであるとすると、第１の実施形態における重み付けでは重みは付加されず非可逆符号化が選択されてしまうが、本実施形態では画素の情報から、タイル中の文字属性の割合ＭＺが９０％以上であれば、ＣＬＨに１００バイト符号量を加えることになる。そのため、単純に符号量比較をした場合にはＣＬＨ＜ＣＬＫとなり非可逆符号化方式が選択されてしまうものが、インデックス化された値を符号化することによる効果と属性情報による重み付けを行うことで可逆符号化方式が選択され易くなり、文字線画領域については画質劣化を更に抑制することが可能になる。
【０１１６】
以上の動作により、アンチエリアスありの文字などの、非可逆符号化の符号量ＣＬＨは小さく、可逆符号化の符号量ＣＬＫが大きくなるという特徴をもつ画像などにおいて、符号量比較のみでは符号化方式の正確な切換えが困難であったものに対して、符号化方式選択精度が向上し、劣化の見えやすい文字部分で可逆符号化が選択されるため、視覚的に画質劣化の無い画像を実現可能となる。
【０１１７】
なお、重み付けの方法としては、ＮＬＶ≦ＭＬかつＭＺ＞ＭＣの場合には非可逆符号化した符号量ＣＬＨにＮだけ重み付けを行う方法や、ＮＬＶ＜ＭＬだが、ＭＺ＜ＭＣの場合可逆符号化した符号量ＣＬＫにＮだけ重み付けを行う方法など、有効レベル数ＮＬＶと属性情報ＭＺを用いて重み付けを調整していれば、どのような形式でもよい。
【０１１８】
また、上記第３の実施形態については、第１の実施形態と同様、コンピュータプログラムによっても実現できるのは、先の変形例で説明した如く、明らかである。
【０１１９】
また、通常、コンピュータプログラムは、それを格納したＣＤ−ＲＯＭ等のコンピュータ可読記憶媒体を、コンピュータにセットし、システムにコピーもしくはインストールすることで実行可能になるわけであるから、当然、このようなコンピュータ可読記憶媒体も本願発明の範疇にあることも明らかである。
【図面の簡単な説明】
【０１２０】
【図１】第１の実施形態に係る画像処理装置のブロック構成図である。
【図２】可逆符号化部の構成を示す図である。
【図３】可逆符号化部における予測値を求める際の注目画素と近傍画素との関係を示す図である。
【図４】メモリ２０４に格納されるハフマンテーブルの例を示す図である。
【図５】フラグ配列Ｆ（ｃ，ｉ）のデータフォーマットを示す図である。
【図６】有効レベル数カウント部１０４の処理の流れを示すフローチャートである。
【図７】インデックス変換テーブルＩＤＸ（ｃ、i ）の内容の一例を示す図である。
【図８】インデックステーブル生成部１１３の処理を示すフローチャートである。
【図９】本画像処理装置の出力符号列のデータフォーマットを示す図である。
【図１０】実施形態における１つのタイルの符号列のデータフォーマットを示す図である。
【図１１】第１の実施形態の変形例の装置のブロック構成図である。
【図１２】第１の実施形態の変形例における画像符号化処理手順を示すフローチャートである。
【図１３】第１の実施形態の変形例における画像符号化処理手順を示すフローチャートである。
【図１４】第３の実施形態における画像処理装置のブロック構成図である。
【図１】
2006140967.tif 000003
【図２】
2006140967.tif 000004
【図３】
2006140967.tif 000005
【図４】
2006140967.tif 000006
【図５】
2006140967.tif 000007
【図６】
2006140967.tif 000008
【図７】
2006140967.tif 000009
【図８】
2006140967.tif 000010
【図９】
2006140967.tif 000011
【図１０】
2006140967.tif 000012
【図１１】
2006140967.tif 000013
【図１２】
2006140967.tif 000014
【図１３】
2006140967.tif 000015
【図１４】
2006140967.tif 000016