(57)【要約】【課題】  画素単位の符号化と画素の連続性を符号化するランレングス符号化との両方を利用しつつも、効率良く符号化することができる。【解決手段】  色数判定部１０１は着目画素Ｘの近傍の符号化済み画素位置にある４画素ａ，ｂ，ｃ，ｄ内に含まれる色数を計数する。近傍一致情報符号化部１０２、成分値予測符号化部、及び、符号生成部１０５は、着目画素に対する画素単位の可逆符号化データを生成する。ランレングス符号化部１０４は、近傍４画素に含まれる色数が１である場合に、ランを計測を開始し、着目画素が直前の画素と異なる色である場合に、計測したランを符号化し、その符号化データを出力する。このとき、ランを終端させた着目画素Ｘは、直前の画素ａと異なるから、画素単位の符号化データを生成する際に参照する画素群から直前の画素ａを除外し、代わりに、符号化済みの特定の条件を満たす画素を含めて参照する。【選択図】  図１
2006325006.tif 000002
【特許請求の範囲】
【請求項１】
画像データを符号化する画像符号化装置であって、
着目画素データを、当該着目画素と所定の位置関係にある符号化済み位置の参照画素値を参照して、画素単位の符号化データを生成する第１の符号化手段と、
着目画素と直前の画素が同じ画素値となった数をランとして計数し、計数したランに基づく符号化データを生成する第２の符号化手段と、
前記第１の符号化手段と第２の符号化手段とを切り替える切り替え手段とを備え、
前記第１の符号化手段は、第２の符号化手段から切り替わった直後においては、前記所定の位置関係と少なくとも１画素が異なる位置関係の画素を参照して、着目画素を符号化することを特徴とする画像符号化装置。
【請求項２】
前記切り替え手段は、
着目画素の近傍にある既符号化済み位置の複数の画素が同一画素値となった場合に前記第２の符号化手段に切り替え、ランの計測を開始させ、
前記第２の符号化手段が、着目画素とその直前の画素の画素値が異なり、ランの符号化データを出力した場合に、前記第１の符号化手段に切り替える
ことを特徴とする請求項１に記載の画像符号化装置。
【請求項３】
前記第１の符号化手段は、前記第２の符号化手段から切り換わった直後においては、前記第２の符号化手段によって前回の符号化データを生成した際のラン終端となった画素値を、参照画素値として用いることを特徴とする請求項１又は２に記載の画像符号化装置。
【請求項４】
画像データを符号化する画像符号化方法であって、
着目画素データを、当該着目画素と所定の位置関係にある符号化済み位置の参照画素値を参照して、画素単位の符号化データを生成する第１の符号化工程と、
着目画素と直前の画素が同じ画素値となった数をランとして計数し、計数したランに基づく符号化データを生成する第２の符号化工程と、
前記第１の符号化工程と第２の符号化工程とを切り替える切り替え工程とを備え、
前記第１の符号化工程は、第２の符号化工程から切り替わった直後においては、前記所定の位置関係とは少なくとも１画素が異なる位置関係の画素を参照して、着目画素を符号化することを特徴とする画像符号化方法。
【請求項５】
コンピュータが読み込み実行することで、画像データを符号化する画像符号化装置として機能するコンピュータプログラムであって、
着目画素データを、当該着目画素と所定の位置関係にある符号化済み位置の参照画素値を参照して、画素単位の符号化データを生成する第１の符号化手段と、
着目画素と直前の画素が同じ画素値となった数をランとして計数し、計数したランに基づく符号化データを生成する第２の符号化手段と、
前記第１の符号化手段と第２の符号化手段とを切り替える切り替え手段として機能し、
前記第１の符号化手段は、第２の符号化手段から切り替わった直後においては、前記所定の位置関係と少なくとも１画素が異なる位置関係の画素を参照して、着目画素を符号化することを特徴とするコンピュータプログラム。
【請求項６】
請求項５に記載のコンピュータプログラムを格納したことを特徴とするコンピュータ可読記憶媒体。
【請求項７】
１画素が複数の色成分データで構成されている画像データを、可逆符号化する画像符号化装置であって、
着目画素の近傍にあって、符号化済み画素位置にある複数の画素データ間に含まれる色数を計数し、色数情報を生成する色数計数手段と、
着目画素データを、当該着目画素の近傍の符号化済み画素位置にある複数の参照画素群を参照して、画素単位の可逆符号化データを生成する画素符号化手段と、
前記色数計数手段で得られた色数情報で示される色数が所定閾値以下になった場合に着目画素と直前の画素が同じ色となった数をランとして計数を開始し、着目画素と直前の画素の色が異なる場合に計数を終了し、計数したランに基づく符号化データを生成するランレングス符号化手段と、
前記画素符号化手段で得られた符号化データと前記ランレングス符号化手段で得られた符号化データから、出力用の符号化データを生成する出力符号化データ生成手段とを備え、
当該出力符号化データ生成手段は、
（ａ）前記ランレングス符号化手段によるランの非計測中においては、前記画素符号化手段で得られた符号化データを出力用符号化データとして出力し、
（ｂ）前記ランレングス符号化手段によるランの計測中においては、ランレングス符号化データの生成を待ち、当該ランレングス符号化データが生成された場合にその符号化データを出力用符号化データとして出力し、
（ｃ）前記ランレングス符号化手段からの符号化データを出力した後、ラン終端となった着目画素に対する直前画素を前記参照画素群から除外し、代わりに所定の条件を満たす既符号化済み画素位置の画素データを含めた前記参照画素群を参照して前記画素符号化手段で符号化データを生成させ、当該符号化データを出力用符号化データとして出力する
ことを特徴とする画像符号化装置。
【請求項８】
前記画素符号化手段は、
入力した着目画素データを構成する複数の色成分データそれぞれについて、前記着目画素の近傍の、符号化済みの画素の色成分データを参照して予測値を求め、予測符号化データを生成する予測符号化手段と、
前記着目画素データと、前記着目画素の近傍にあって符号化済み画素位置にある複数の画素データどうしとを比較し、着目画素と同じ色の近傍画素が存在するか否か、及び、存在する場合には着目画素に対する該当近傍画素の相対位置を特定するベクトル情報を生成し、当該ベクトル情報を符号化するベクトル情報符号化手段と、
前記色数計数手段より得られた色数情報、及び、前記ベクトル情報生成手段で得られたベクトル情報に基づき、前記予測符号化手段、前記ベクトル情報符号化手段で得られた符号化データから画素符号化データを画素符号化データ生成手段とを備え、
当該画素符号化データ生成手段は、
（ａ）前記色数情報で示される色数が所定閾値以下で、且つ、前記ベクトル情報が着目画素と同じ色を持つ近傍画素の存在を示す場合、前記ベクトル情報符号化手段で生成された符号化データを、着目画素の符号化データとして出力し、
（ｂ）前記色数計数手段で計数された色数が所定閾値以下で、且つ、前記ベクトル情報が着目画素と同じ色を持つ近傍画素の非存在を示す場合、前記ベクトル情報符号化手段で生成された符号化データと着目画素データの非圧縮データを、着目画素の符号化データとして出力し、
（ｃ）前記色数計数手段で計数された色数が所定閾値を超える場合、前記予測符号化手段で生成された予測符号化データを、着目画素の符号化データとして出力する
ことを特徴とする請求項７に記載の画像符号化装置。
【請求項９】
前記該出力符号化データ生成手段における処理（ｃ）での前記所定の条件を満たす既符号化済み画素位置は、前記ランレングス符号化手段により前回のランレングス符号化データを生成する際のラン終端位置にある画素位置とすることを特徴とする請求項７又は８に記載の画像符号化装置。
【請求項１０】
前記該出力符号化データ生成手段における処理（ｃ）での前記所定の条件を満たす既符号化済み画素位置は、前記ランレングス符号化手段により過去のランレングス符号化データを生成する際のラン終端位置となった色を持つ画素位置とすることを特徴とする請求項７又は８に記載の画像符号化装置。
【請求項１１】
前記該出力符号化データ生成手段における処理（ｃ）での前記所定の条件を満たす既符号化済み画素位置は、前記ランレングス符号化手段により前回のランレングス符号化データを生成する際のラン終端位置となった画素の１つ前の画素位置とすることを特徴とする請求項７又は８に記載の画像符号化装置。
【請求項１２】
１画素が複数の色成分データで構成されている画像データを、可逆符号化する画像符号化方法であって、
着目画素の近傍にあって、符号化済み画素位置にある複数の画素データ間に含まれる色数を計数し、色数情報を生成する色数計数工程と、
着目画素データを、当該着目画素の近傍の符号化済み画素位置にある複数の参照画素群を参照して、画素単位の可逆符号化データを生成する画素符号化工程と、
前記色数計数工程で得られた色数情報で示される色数が所定閾値以下になった場合に着目画素と直前の画素が同じ色となった数をランとして計数を開始し、着目画素と直前の画素の色が異なる場合に計数を終了し、計数したランに基づく符号化データを生成するランレングス符号化工程と、
前記画素符号化工程で得られた符号化データと前記ランレングス符号化工程で得られた符号化データから、出力用の符号化データを生成する出力符号化データ生成工程とを備え、
当該出力符号化データ生成工程は、
（ａ）前記ランレングス符号化工程によるランの非計測中においては、前記画素符号化手段で得られた符号化データを出力用符号化データとして出力し、
（ｂ）前記ランレングス符号化工程によるランの計測中においては、ランレングス符号化データの生成を待ち、当該ランレングス符号化データが生成された場合にその符号化データを出力用符号化データとして出力し、
（ｃ）前記ランレングス符号化工程からの符号化データを出力した後、ラン終端となった着目画素に対する直前画素を前記参照画素群から除外し、代わりに所定の条件を満たす既符号化済み画素位置の画素データを含めた前記参照画素群を参照して前記画素符号化工程で符号化データを生成させ、当該符号化データを出力用符号化データとして出力する
ことを特徴とする画像符号化方法。
【請求項１３】
コンピュータが読込み実行することで、１画素が複数の色成分データで構成されている画像データを、可逆符号化する画像符号化装置として機能するコンピュータプログラムであって、
着目画素の近傍にあって、符号化済み画素位置にある複数の画素データ間に含まれる色数を計数し、色数情報を生成する色数計数手段と、
着目画素データを、当該着目画素の近傍の符号化済み画素位置にある複数の参照画素群を参照して、画素単位の可逆符号化データを生成する画素符号化手段と、
前記色数計数手段で得られた色数情報で示される色数が所定閾値以下になった場合に着目画素と直前の画素が同じ色となった数をランとして計数を開始し、着目画素と直前の画素の色が異なる場合に計数を終了し、計数したランに基づく符号化データを生成するランレングス符号化手段と、
前記画素符号化手段で得られた符号化データと前記ランレングス符号化手段で得られた符号化データから、出力用の符号化データを生成する出力符号化データ生成手段として機能し、
当該出力符号化データ生成手段は、
（ａ）前記ランレングス符号化手段によるランの非計測中においては、前記画素符号化手段で得られた符号化データを出力用符号化データとして出力し、
（ｂ）前記ランレングス符号化手段によるランの計測中においては、ランレングス符号化データの生成を待ち、当該ランレングス符号化データが生成された場合にその符号化データを出力用符号化データとして出力し、
（ｃ）前記ランレングス符号化手段からの符号化データを出力した後、ラン終端となった着目画素に対する直前画素を前記参照画素群から除外し、代わりに所定の条件を満たす既符号化済み画素位置の画素データを含めた前記参照画素群を参照して前記画素符号化手段で符号化データを生成させ、当該符号化データを出力用符号化データとして出力する
として機能することを特徴とするコンピュータプログラム。
【請求項１４】
請求項１３に記載のコンピュータプログラムを格納したことを特徴とするコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像データの符号化技術に関するものである。
【背景技術】
【０００２】
従来、画像の符号化手法として予測符号化をベースとするものがある。予測符号化方法では、画像データを予測変換によって予測誤差へと変換する系列変換部と、系列変換部から出力される予測誤差をより冗長性の少ない符号化データへと変換するエントロピー符号化部で構成される。
【０００３】
例えば、上記予測符号化を用いる方式としては、国際標準方式であるJPEG-LS（ITU−T T.87 ｜ ISO/IEC14495-1）などが知られている。
【０００４】
また、JPEG（ITU-T T.81 ｜ ISO/IEC10918-1）ではIndependent  Functionとして予測符号化をベースとした可逆符号化方式が規定されている。以下、これをＪＰＥＧ可逆符号化モードと呼ぶ。ＪＰＥＧ可逆符号化モードでは、近傍画素から着目画素の値を予測する方法として７つの予測式を規定しており、画像に応じて予測方法を選択できるようになっている。
【０００５】
図２に従来の画像処理装置のブロック図を示す。同図は上述のＪＰＥＧ可逆符号化モードにより画像を可逆圧縮する装置の一例である。同図に於いて、２０１はバッファ、２０２は成分値予測部、２０３は減算器、２０４はハフマンテーブル用メモリ、２０５は予測誤差符号化部、２０９は符号列形成部、２０６，２０７，２０８は信号線である。
【０００６】
ハフマンテーブル用メモリ２０４には予測誤差符号化部２０５において使用されるハフマンテーブルが格納される。ここでは、図６に示すハフマンテーブルが格納されているものとする。
【０００７】
同図を用いて従来の画像処理装置により、各成分が８ビットで表現されたＲＧＢカラー画像を符号化する処理の流れを説明する。
【０００８】
まず、信号線２０８から成分値予測部２０２において用いる予測方法を選択する予測選択信号ｍが入力される。予測選択信号ｍは０〜７までの整数値であり、それぞれに異なる予測式が対応付けられる。また、１つの画像を符号化する場合には、この予測選択信号ｍは変化せず、固定である。使用される予測式と予測選択信号ｍの対応は図４の通りである。なお、予測選択信号ｍが０の場合には予測式なしとなっているが、これは予測変換を行わず、各成分をそのまま符号化することを意味する。図中の係数ｐ，ａ，ｂ，ｃについては後述する。
【０００９】
次に、信号線２０６から画像データが順に入力される。画素データの入力順序はラスタースキャン順とし、各画素でＲ，Ｇ，Ｂの順番で成分データが入力されるものとする。Ｒ，Ｇ，Ｂをそれぞれ成分番号０，１，２と定義し、画像の左上隅を座標（０，０）として水平方向画素位置ｘ、垂直方向画素位置ｙにある画素の成分番号Ｃの値をＰ（ｘ，ｙ，Ｃ）と表すこととする。例えば、位置（ｘ、ｙ）＝（３，４）である画素が（Ｒ，Ｇ，Ｂ）＝（２５５，１２８，０）という値を持つ場合、Ｐ（３，４，０）＝２５５、Ｐ（３，４，１）＝１２８、Ｐ（３，４，２）＝０と表現する。
【００１０】
バッファ２０１は信号線２０６から入力される画像データを２ライン分格納する。
【００１１】
成分値予測部２０２はバッファ２０１から着目する画素の成分値ｘ＝Ｐ（ｘ，ｙ，Ｃ）について直前の画素の同一成分の値ａ＝Ｐ（ｘ−１，ｙ，Ｃ）、１ライン前の画素の同一成分の値ｂ＝Ｐ（ｘ，ｙ−１、Ｃ）、および斜め左上の画素の同一成分の値ｃ＝Ｐ（ｘ−１，ｙ−１，Ｃ）を取り出し、予測方式選択信号ｍに従って予測値ｐを生成する。着目する画素の成分値ｘとａ，ｂ，ｃの位置関係を図３に示す。なお、ａ，ｂ，ｃが画像の外側となる場合には０とする。
【００１２】
減算器２０３は符号化対象となる成分値ｘと予測値ｐとの差分値を求め、予測誤差ｅとして出力する。
【００１３】
予測誤差符号化部２０５は、まず、減算器２０３から入力される予測誤差ｅを複数のグループに分類して、グループ番号ＳＳＳＳと、グループごとに定められるビット長の付加ビットを生成する。図５に予測誤差ｅとグループ番号ＳＳＳＳの関係を示す。付加ビットはグループ内で予測誤差を特定するための情報であり、ビット長はグループ番号SSSSで与えられる。なお、ＳＳＳＳ＝１６である場合には例外的にビット長は０である（但し、各成分の精度が８ビットである場合にはＳＳＳＳ＝１６は発生しない）。予測誤差ｅが正であるならば予測誤差ｅの下位ＳＳＳＳビットが付加ビットとなり、負である場合にはｅ−１の下位ＳＳＳＳビットが付加ビットとなる。付加ビットの最上位ビットは予測誤差ｅが正であれば１、負であれば０でなる。符号化処理は、まず、メモリ２０４に格納されているハフマンテーブルを参照して、グループ番号ＳＳＳＳに対応する符号化データを出力し、ＳＳＳＳが０または１６でない場合には続いてグループ番号により定まるビット長で付加ビットを出力するという順序で行われる。
【００１４】
符号列形成部２０９は信号線２０８を介して入力される予測選択信号ｍや、画像の水平方向／垂直方向の画素数、画素を構成する成分の数、各成分の精度などの付加情報と、予測誤差符号化部２０５から出力される符号化データから、ＪＰＥＧの規格書に準拠したフォーマットの符号列を形成し、信号線２０７に出力する。
【００１５】
なお、上記予測符号化以外に、ランレングス符号化というものが知られており、これは前の符号化済み画素と一致している場合に、何画素分一致しているかという情報を符号化するものであり、画像中に同一画素が続く場合には符号化効率が良い。
【発明の開示】
【発明が解決しようとする課題】
【００１６】
ところで、符号化の目的は原画像のデータ量を削減するものことにあり、可逆符号化は更に完全にオリジナル画像に復元可能な符号を生成することにある。従って、１つの画像を可逆符号化する場合には、上記予測符号化技術とランレングス符号化技術の何れか一方のみを適用するよりも、これらを局所的に使い分ける方が得策であろう。
【００１７】
しかしながら、従来、上記複数の符号化を切り替えながら利用する際に、効率良く符号化する方法は確立していないのが現状である。
【００１８】
本発明は、上記点に鑑みてなされたものであり、画素単位の符号化技術とランレングス符号化を選択的に利用する符号化を実行する際に、効率良く符号化する為の技術を提供することを目的とする。
【課題を解決するための手段】
【００１９】
かかる課題を解決するため、本発明の画像符号化装置は以下の構成を備える。すなわち、
画像データを符号化する画像符号化装置であって、着目画素データを、当該着目画素と所定の位置関係にある符号化済み位置の参照画素値を参照して、画素単位の符号化データを生成する第１の符号化手段と、着目画素と直前の画素が同じ画素値となった数をランとして計数し、計数したランに基づく符号化データを生成する第２の符号化手段と、前記第１の符号化手段と第２の符号化手段とを切り替える切り換え手段とを備え、前記第１の符号化手段は、第２の符号化手段から切り替わった直後においては、前記所定の位置関係と少なくとも１画素が異なる位置関係の画素を参照して、着目画素を符号化することを特徴とする。
【発明の効果】
【００２０】
本発明によれば、画素単位の符号化と画素の連続性を符号化するランレングス符号化との両方を利用しつつも、効率良く符号化することができる。
【発明を実施するための最良の形態】
【００２１】
以下、添付図面に従って、本発明に係る実施形態を詳細に説明する。
【００２２】
［第１の実施形態］
図１は、本実施形態に係る画像符号化装置のブロック構成図である。図１に示すように、本実施形態に係る画像処理装置は、色数判定部１０１、近傍一致情報符号化部１０２、成分値予測符号化部１０３、ランレングス符号化部１０４、符号生成部１０５、スイッチ１０６、符号列形成部１０７、バッファ２０１とを備える。同図において１０８、１０９、１１０、２０６、２０７は信号線である。従来の画像処理装置の処理ブロックと同じ動作をするブロックについては同じ番号を付し、その説明を省略する。以下、図１の装置における画像符号化処理について説明する。 また、実施形態では、予測選択信号ｍ＝４であるものとして説明する。
【００２３】
本実施形態に係る画像処理装置の符号化対象とする画像データは、ＲＧＢカラー画像データであり、各コンポーネント（色成分）は８ビット（多値）で０〜２５５の範囲の輝度値を表現した画素データにより構成されるものとする。なお、本実施形態においてはＲＧＢカラー画像を対象としているが、ＣＭＹＫカラー画像のような１画素に複数のコンポーネントを持つ画像でも良いし、モノクロ多値の画像にも画像に対応する。符号化対象の画像データは水平方向Ｗ画素、垂直方向Ｈ画素のサイズとする。従って、入力される画像データはＷ×Ｈ×３バイトのデータ量である。また、水平右方向がＸ座標の正方向、垂直下方向がＹ座標の正方向と定義する。また、入力する画像データの入力順序はラスター順とし、各画素はＲ，Ｇ，Ｂの順番でデータを並べて構成されるものとする。
【００２４】
次に、本実施形態の画像処理装置での各部の動作について説明する。
【００２５】
まず、信号線２０６から符号化対象となる画像データが順に入力され、バッファ２０１（２ライン分の容量を有する）に格納される。画素データの入力順序はラスタースキャン順とし、各画素でＲ，Ｇ，Ｂの順番で成分データが入力されるものとする。Ｒ，Ｇ，Ｂをそれぞれ成分番号０，１，２と定義し、画像の左上隅を座標（０，０）として水平右方向画素位置ｘ、垂直下方向画素位置ｙにある画素の成分番号Ｃの値をＰ（ｘ，ｙ，Ｃ）と表すこととする。例えば、位置（ｘ、ｙ）＝（３，４）である画素が（Ｒ，Ｇ，Ｂ）＝（２５５，１２８，０）という値を持つ場合、Ｐ（３，４，０）＝２５５、Ｐ（３，４，１）＝１２８、Ｐ（３，４，２）＝０と表現する。
【００２６】
色数判定部１０１は図２４に示すように、色数演算部１０１ａ、セレクタ１０１ｂ、レジスタ１０１ｃ、ラッチ１０１ｄで構成される。レジスタ１０１ｃ、ラッチ１０１ｄ、セレクタ１０１ｂについての詳細は後述することとし、ここではセレクタ１０１ｂはデータ「ａ」を選択し、色数演算部１０１ａに出力するものとして説明することとする。
【００２７】
従って、色数演算部１０１ａには、着目する画素Ｘの各成分について、バッファ２０１から図３のａ，ｂ，ｃ、ｄに示す周囲４画素の同一成分値が供給され、画素Ｘａ，Ｘｂ，Ｘｃ，Ｘｄを得ることになる。着目する画素の位置を（ｘ、ｙ）とし、これを用いてＸａ，Ｘｂ，Ｘｃ，Ｘｄを表現すると以下の通りである。
Ｘａ＝(Ｐ(ｘ−１，ｙ，０)、Ｐ(ｘ−１，ｙ，１)、Ｐ(ｘ−１，ｙ，２))
Ｘｂ＝(Ｐ(ｘ，ｙ−１，０)、Ｐ(ｘ，ｙ−１，１)、Ｐ(ｘ，ｙ−１，２))
Ｘｃ＝(Ｐ(ｘ−１,ｙ−１, ０)、Ｐ(ｘ−１，ｙ−１，１)、Ｐ(ｘ−１，ｙ−１，２))
Ｘｄ＝(Ｐ(ｘ＋１，ｙ−１，０)、Ｐ(ｘ＋１，ｙ−１，１)、Ｐ(ｘ＋１，ｙ−１，２))
色数演算部１０１ａは、これら４画素Ｘａ，Ｘｂ，Ｘｃ，Ｘｄに何種類の色が含まれるかを検出して、その色数Ｎｃを信号線１０９上に出力する。具体的には４画素から２画素を取り出す６通りの組み合わせ（Ｘａ、Ｘｂ）、（Ｘａ、Ｘｃ）、（Ｘａ，Ｘｄ）、（Ｘｂ，Ｘｃ）、（Ｘｂ，Ｘｄ）、（Ｘｃ，Ｘｄ）について、取り出した同一色のペア数をカウントし、それが０であれば４色、１であれば３色、２か３であれば２色、６であれば１色と判断し、その色数Ｎｃを信号線１０９上に出力する。
【００２８】
近傍一致情報符号化部１０２は、信号線１０９を介して入力した色数Ｎｃ、着目画素Ｘ、およびその近傍画素群Ｘａ、Ｘｂ、Ｘｃ、Ｘｄに基づいて近傍画素状態情報、ベクトル情報を生成する。そして、この近傍一致情報符号化部１０２は、近傍画素状態情報を信号線１０８上に出力し、ベクトル情報については内部的に符号化し、その符号語を信号線１１０上に出力する。
【００２９】
図１１は実施形態における近傍一致情報符号化部１０２の内部の構成を更に詳細なブロック図である。同図に示すように、近傍一致情報符号化部１０２は近傍一致判定部１１０１、一致画素位置符号化部１１０２、および、セレクタ１１０４から構成される。また、１１０３は信号線である。なお、ここでも、セレクタ１１０４を設けた理由の詳細は後述するものとし、ここではセレクタ１１０４はデータ「ａ」を選択するものとして説明する。
【００３０】
以下、同図を参照して近傍一致情報符号化部１０２の内部で行われる処理について説明する。
【００３１】
先ず、近傍一致判定部１１０１が信号線１１０３に出力するベクトル情報について説明する。
【００３２】
近傍一致判定部１１０１は着目画素Ｘと同一色の画素がその周囲４画素（Ｘａ，Ｘｂ，Ｘｃ，Ｘｄ）内に存在するか否か、および、一致する画素が存在する場合にはその画素の相対位置を特定するベクトル情報を生成し、信号線１１０３へと出力する。このベクトル情報は、信号線１０９を介して入力される色数Ｎｃに依存して決定される。それぞれの色数Ｎｃの場合に分けて近傍一致判定部１１０１の処理を説明する。
【００３３】
先ず、色数Ｎｃが４である場合、即ち、Ｘａ，Ｘｂ，Ｘｃ，Ｘｄが全て異なる画素値である場合、近傍一致判定部１１０１は無条件に“４”の値のベクトル情報として出力する。
【００３４】
また、色数Ｎｃが１の場合、すなわちＸａ〜Ｘｄが全て同じ色である場合、着目画素Ｘと近傍Ｘａを比較してＸ＝Ｘａならば“０”、Ｘ≠Ｘａならば“１”をベクトル情報として出力する。
【００３５】
色数Ｎｃが２の場合、すなわち、Ｘａ〜Ｘｄ中に同じ色のペアが２つ存在する場合、Ｘａ、Ｘｂ，Ｘｃ，Ｘｄの順番で第１の画素値（色）Ｘ１と、それとは異なる第２の画素値Ｘ２を求め、Ｘ＝Ｘ１ならば“０”、Ｘ＝Ｘ２ならば“１”、Ｘ≠Ｘ１かつＸ≠Ｘ２ならば“２”をベクトル情報として出力する。Ｘａ、Ｘｂ，Ｘｃ，Ｘｄの順番で見た場合、第１の画素Ｘ１はＸａである。また、第２の画素値はＸａと異なる値を持つＸｂ，Ｘｃ，Ｘｄのいずれかである。
【００３６】
色数Ｎｃが３の場合、すなわち、Ｘａ〜Ｘｄに同じ色のペアが１つ存在する場合、Ｘａ、Ｘｂ，Ｘｃ，Ｘｄの順番で第１の画素値Ｘ１、第２の画素値Ｘ２、第３の画素値Ｘ３を求め、Ｘ＝Ｘ１ならば“０”、Ｘ＝Ｘ２ならば“１”、Ｘ＝Ｘ３ならば“２”、Ｘ≠Ｘ１かつＸ≠Ｘ２かつＸ≠Ｘ３ならば“３”をベクトル情報として出力する。ここで、Ｘａ、Ｘｂ，Ｘｃ，Ｘｄの順番で見た場合、画素Ｘ１はＸａである。また、画素値Ｘ２は、Ｘｂ，Ｘｃ，Ｘｄの順に見た時に最初にＸａと異なる画素である。画素値Ｘ３は、Ｘ２以降の、Ｘ２と異なる画素となる。
【００３７】
次に、近傍一致判定部１１０１が信号線１０８に出力する近傍画素状態情報について説明する。
【００３８】
この近傍画素状態情報は、着目画素Ｘと同じ色の画素が近傍４画素内に存在するか否かを示す情報である。具体的には、近傍一致判定部１１０１は、信号線１１０３上に出力するベクトル情報と、信号線１０９を介して入力される色数Ｎｃとを比較し、両者が一致している場合には“０”、不一致の場合には“１”を近傍画素状態情報として信号線１０８に出力する。従って、色数Ｎｃが４である場合には常に“１”となる。また、色数Ｎｃが４以外（３以下）の場合には、着目画素Ｘが周囲４画素Ｘａ，Ｘｂ，Ｘｃ，Ｘｄのいずれとも一致していないならば“１”、少なくとも何れか１つの一致する場合には“０”を出力する。
【００３９】
図１２は、上記のベクトル情報と近傍画素状態情報との関係を示すものである。図示からもわかるように、近傍画素状態情報が“０”となるのは、着目画素Ｘの近傍にある４画素に含まれる色数Ｎｃが３以下で、その近傍４画素中に着目画素Ｘと同じ色を持つ画素が少なくとも１つ含まれる場合である。換言すれば、着目画素Ｘの近傍にあるＮ個（実施形態ではＮ＝４）の近傍画素群の中に同じ色のペアが少なくとも１つ存在し、且つ、着目画素Ｘがその近傍画素群のいずれかと同じ色である場合に、近傍画素状態情報が“０”となる。
【００４０】
図１１の説明に戻る。一致画素位置符号化部１１０２は、信号線１１０３から入力されるベクトル情報を符号化し、その結果である符号語を信号線１１０へと出力する。本実施形態における一致画素位置符号化部１１０２は、色数Ｎｃに応じて図１５（ａ）乃至（ｃ）の符号表を切り替えて使用する。色数Ｎｃが４である場合には一致画素位置符号化部１１０２からの符号出力は行われない。但し、何らかの符号を出力しても、後述するように、それが最終的な画像データの符号語としては採用されることはない。
【００４１】
以上、説明した動作により、ベクトル情報の符号語が信号線１１０上に出力され、近傍画素状態情報が信号線１０８上に出力されることになる。
【００４２】
図１の説明に戻る。符号生成部１０５は、近傍一致情報符号化部１０２からの近傍画素状態情報（信号線１０８上の信号）、ベクトル情報の符号語（信号線１１０上の信号）、成分値予測符号化部１０３からの符号語に基づき、出力符号語を生成し、スイッチ１０６に出力する。近傍一致情報符号化部１０２については既に説明しているので、以下では、成分値予測符号化部１０３について説明する。
【００４３】
成分値の予測符号化にはＪＰＥＧ可逆符号化モードや、可逆と準可逆符号化の国際標準方式であるＪＰＥＧ−ＬＳ（ITU−T T.87 ｜ISO/IEC14495-1）にregular  modeとして説明される方式などを使用することができる。ここでは説明を簡略化するため、簡易な構成について説明する。
【００４４】
図１０は成分値予測符号化部１０３の内部の構成をさらに細かいブロックに分割して示した図である。同図に示すように、成分値予測符号化部１０３は成分値予測部２０２、減算器２０３、予測誤差符号化部１００１、セレクタ７０２で構成される。なお、１０８は信号線であり、既に説明した近傍画素状態情報を入力するためのものである。また、セレクタ７０２を設けた理由についての詳細は後述することと、ここではセレクタ７０２はデータ「ａ」を選択するものとして説明を続ける。また、従来技術の説明で用いた図２の処理ブロックと同じ機能を果たすブロックについては同じ番号を付し、説明を省略する。
【００４５】
従来方式の説明と同様の動作により、着目する画素Ｘの周囲画素の同一成分値ａ，ｂ，ｃから成分値予測部２０２により予測値ｐが生成され、減算器２０３において着目する画素の成分値ｘ（ｘはＲ、Ｇ、Ｂのいずれか）との差分（予測誤差）ｅ＝ｘ−ｐが生成され、予測誤差符号化部１００１へと入力される。本実施形態では成分値予測部２０２に入力される予測選択信号ｍを固定値４として、全ての成分値に対して「ａ＋ｂ−ｃ」の式により予測を行うこととする。予測誤差符号化部１００１では予測誤差ｅをGolomb符号を用いて符号化する。
【００４６】
Golomb符号は非負の整数値を符号化対象とし、パラメータ変数ｋによって異なる複数の確率モデルによる符号化が可能であるという特徴を持ち、また、符号化対象シンボルとパラメータ変数ｋから符号語を導出することができるため、符号表が不要という利点がある。Golomb符号の一形態がＩＳＯとＩＴＵＴ−Ｔから国際標準勧告されるＪＰＥＧ−ＬＳ（ISO/IEC 14495-1 ｜ ITU-T  Recommendation T.87）において予測誤差の符号化方式として採用されている。ここでは減算器２０３から出力される予測誤差ｅを次式により非負の整数値（Ｖとする）に変換した後に，これを選択したkパラメータでGolomb符号化する。
ｅ≧０の場合、Ｖ＝２×ｅ
ｅ＜０の場合、Ｖ＝−２×ｅ−１
【００４７】
符号化対象の非負の整数値Vを符号化パラメータｋでGolomb符号化する手順は次の通りである。
【００４８】
まず、Ｖをｋビット右シフトして整数値ｍを求める。Ｖに対する符号はｍ個の「０」に続く「１」（可変長部）とＶの下位ｋビット（固定長部）の組み合わせにて構成する。図１６にｋ＝０、１、２、３におけるGolomb符号の例を示しておく。ここに述べた符号の構成方法は一例であり、固定長部と可変長部の順序が逆にしても一意復号可能な符号を構成することができ、また、０と１を反対にして符号を構成することもできる。符号化パラメータｋの選択方法としては所定の単位で最適なｋパラメータの選択して符号列に含める方法など様々な手法が考えられるが、本実施形態ではＪＰＥＧ−ＬＳと同様の手法により符号化の過程で更新していく方法を用いる。以下、符号化パラメータｋの選択方法について述べる。
【００４９】
予測誤差符号化部１００１には符号化済みの画素の数を保持するカウンタＮと、各成分毎に符号化済みの予測誤差の絶対値の合計を保持するカウンタＡ［Ｃ］（Ｃは成分番号であり、０〜２）とを備える。符号化の開始時点でカウンタＮを１、カウンタＡ［０］〜Ａ［２］を２に設定する。符号化対象の成分値ごとにＮ×２＾ｋがＡ［Ｃ］を超えない最大のｋを求め、これを用いて先に説明した手順にて予測誤差ｅをGolomb符号化し、符号語を出力する（なお、ｘ＾ｙは、ｘのｙ乗を示す）。
【００５０】
各成分の符号化処理後にＡ［Ｃ］に予測誤差の絶対値｜ｅ｜を加算して更新する。またこの場合、全成分の符号化処理後にＮに１を加えて更新する。なお、Ａ［Ｃ］とＮを所定の範囲内に限定するためにはＮが一定値（例えば３２）に達したタイミングでＡ［Ｃ］とＮを１／２にするといった処理を適用すれば良い。また、予測誤差符号化部１００１は信号線１０８を介して入力される近傍画素状態情報が“１”である場合にのみ動作する。
【００５１】
以上、実施形態における成分値予測符号化部１０３の処理内容を説明した。次に、符号生成部１０５について説明する。
【００５２】
実施形態における符号生成部１０５に入力される情報は、図１に示すように、成分値予測符号化部１０３から出力されるＲ、Ｇ、Ｂ各成分の予測符号語と、近傍一致情報符号化部１０２から出力されるベクトル情報の符号語および近傍画素状態状態情報、そして、色数Ｎｃの４つである。これら４つの情報に基づき、符号生成部１０５は以下に示す処理Ａ乃至Ｃのいずれか１つの処理を行なう。
【００５３】
［処理Ａ］
近傍画素状態情報が“０”の場合、すなわち、図１２に示したように、着目画素Ｘの近傍４画素に含まれる色数が３以下であり、尚且つ、着目画素Ｘと同じ色の画素が近傍４画素内に存在する場合、符号生成部１０５は、入力したベクトル情報の符号語のみを出力する。
【００５４】
［処理Ｂ］
色数Ｎｃ＜４であり、且つ、近傍画素状態情報が“１”の場合、即ち、図１２に示したように、着目画素Ｘの近傍４画素に含まれる色数が３以下であって、着目画素Ｘと同じ色の画素が近傍４画素内に存在しない場合には、符号生成部１０５は、入力したベクトル情報の符号語に続けて、成分値予測符号化部１０３から出力されるＲ、Ｇ、Ｂ各成分の予測符号語を出力する。
【００５５】
［処理Ｃ］
色数Ｎｃ＝４の場合、符号生成部１０５は、成分値予測符号化部１０３から出力されるＲ、Ｇ、Ｂ各成分の予測符号語のみを出力する。ベクトル情報の符号語は出力しない。
【００５６】
図７は、符号生成部１０５から出力される符号データを示している。同図（ａ）が上記処理Ａ、同図（ｂ）が上記処理Ｂ、同図（ｃ）が上記処理Ｃの結果である。
【００５７】
次に、図１の説明に戻って、実施形態におけるランレングス符号化部１０４について説明する。
【００５８】
ランレングス符号化部１０４は、その内部に、同じ画素値の連続数を計数するカウンタＲＬを保持し、着目画素Ｘの直前の画素における色数Ｎｃが“１”以外であり、着目画素の色数Ｎｃが“１”となった場合に計数を開始する。一旦、計数を開始すると、それ以降は色数Ｎｃによらず、着目する画素Ｘが直前の画素値Ｘａと異なる色になるか、１ラインの最後の画素を処理し終えるまでの画素数をカウントする。ランが終端した時点（０ランの場合も有り得る）で、カウンタＲＬに保持されている値をランレングス符号化して、スイッチ１０６に向けて出力する。なお、ランレングス符号化部１０４は、ランを計測している最中であるか、非計測状態であるのかを示すステータス情報を信号線１１５を介してスイッチ１０６に出力する。ランが終端した場合に、その旨の情報を信号線１１６に出力するが、この信号１１６の意味についての詳細は後述する。
【００５９】
ここで、ランレングスの符号化には、様々な方法を適用することが可能であるが、ここでは国際標準方式ＪＰＥＧ−ＬＳにおけるrun modeによるランレングスの符号化と同じ手法を用いることとし、詳細については省略する。
【００６０】
次に、図１におけるスイッチ１０６について説明する。
【００６１】
説明に先立ち、着目画素をＸｉ、そして着目画素Ｘｉの近傍４画素の色数をＮｃi、着目画素Ｘｉの直前の画素をＸi-1、そして画素Ｘｉ-1の近傍４画素の色数をＮｃi-1として定義する。また、符号化生成部１０５から出力される符号化データ（図８（ａ）、（ｂ）のいずれかの符号化データ）を画素符号化データと呼び、ランレングス符号化部１０４から出力される符号化データをランレングス符号化データと呼び、両者を区別する。更に、ランレングス符号化部１０４から信号１１５上に出力されるステータス情報であるが、ランを計測中である場合には“１”、非計測中である場合には“０”であるものとする。
・ステータス情報が“０”の場合：
スイッチ１０６は端子ａを選択して着目画素Ｘiの画素符号化データを選択して符号列形成部１０７に出力する。このとき、Ｎｃi-1≠１、且つ、Ｎｃi＝１であった場合には、画素符号化データの符号列形成部１０７への出力後、端子ｂに切替える。端子ｂに切替える理由は、上記条件により、ランレングス符号化部１０４はランの計測が開始されるためであり、ランの計測中は画素符号化データを出力しないためである。なお、上記条件以外の場合には、端子ａの選択状態を維持する。
・ステータス情報が“１”である場合：
端子ｂを選択する。このとき、ランレングス符号化部１０４はランを計測中である場合には、ランレングス符号化部１０４からはランレングス符号化データは出力されないので、符号列形成部１０７には、何も出力されない。また、ランレングス符号化部１０４がラン終端を検出した場合には、ランレングス符号化部１０４はランレングス符号化データを出力する。従って、スイッチ１０６はそのランレングス符号化データを符号列形成部１０７に出力することになる。ランレングス符号化部１０４は、ランレングス符号化データの出力後、そのステータス情報を“０”にする。ステータスが“１”から“０”になるのは、ランの計測が終了した場合である。ランの計測が終了するのは、着目画素Ｘとその直前の画素Ｘａとの関係がＸ≠Ｘａである場合、或いは、Ｘ＝Ｘａであっても着目画素Ｘの位置がラインの終端である場合のいずれかである。従って、前者の場合には、着目画素の画素符号化データを出力すべく、ランレングス符号化データの出力直後に、端子ａを選択する。
【００６２】
以上説明したように、符号列形成部は画像の符号化に先立ち、予測選択信号ｍや、画像の水平方向／垂直方向の画素数、画素を構成する成分の数、各成分の精度などの付加情報をヘッダとして出力し、そのヘッダに後続してスイッチ１０６を介して出力される符号化データを順に出力する。出力先が記憶装置である場合、ファイルとして出力することになる。
【００６３】
図９は符号列形成部１０７から出力される符号化データの構造を示している。なお、同図においてランレングス符号化データと画素符号化データの並びは適当であり、特にマーカなどの区切りなく混在できることを示すために図示した。なお、本実施形態の画像処理装置では予測選択信号ｍを固定値としているのでヘッダから除くようにしても構わない。
【００６４】
また、図９において、ヘッダの直後の符号化データがランレングス符号化データであるのは理由がある。上記説明によると、着目画素が符号化対象の画像データの左上隅位置にあるとき、予測値を求める際のａ，ｂ，ｃは画像域外にあり、ａ＝ｂ＝ｃ＝０として扱われるためである。より詳しくは、ａ＝ｂ＝ｃであるから、着目画素Ｘに対する周辺画素の色数Ｎｃは“１”となり、少なくとも０以上のランレングス符号化データが出力されるからである。
【００６５】
以上であるが、上記実施形態では、近傍一致情報符号化部１０２内の一致画素位置符号化部１１０２は、色数Ｎｃに基づいて、図１５（ａ）乃至（ｃ）の符号化テーブルを１つを用いて符号化するものとして説明したが、色数Ｎｃに依存せず、図７に示す１つのテーブルを用いてベクトル情報の符号語を生成するようにしても構わない。但し、色数Ｎｃ＝１の場合、ベクトル情報が０、１のいずれであっても、その符号語は１ビットで済むのに対し、図７では２ビット以上の符号語が生成されるので、図１５（ａ）乃至（ｃ）に示すように色数Ｎｃに応じてベクトル情報の符号化テーブルを切替えることが望ましい。
【００６６】
次に、図１における信号１１６、図１０のセレクタ７０２、図１１のセレクタ１１０４、図２４のセレクタ１０１ｂ、レジスタ１０１ｃ、ラッチ１０１ｄを設けた理由と、その動作について説明する。
【００６７】
これまでの説明からも理解できるように、ランレングス符号化部１０４のランが終端する１つの理由は、着目画素Ｘとその直前の画素Ｘａが同一色でない場合である。このとき、カウンタＲＬに格納された値をランレングス符号化し、その符号語をスイッチ１０６に出力し、その後で、着目画素Ｘの画素符号化データを出力する。ここで着目画素Ｘについて考察すると、Ｘ≠Ｘａであったわけであるから、図１２を参照すれば容易にわかるように、ベクトル情報が“０”となることはあり得ない。
【００６８】
本来、符号化効率が最も高いのは、図８（ａ）に示すようにベクトル情報の符号語のみの場合であるのは明らかである。従って、ラン終端と判定された着目画素Ｘと比較される画素として、Ｘａ（Ｘ１でもある）とは異なる画素Ｘｆと比較した方が、Ｘ＝Ｘｆとなる可能性がある分だけ高い圧縮率が期待できのは理解できよう。この画素Ｘｆは、着目画素Ｘに近い画素位置であることが望まれる。実施形態では、この画素Ｘｆを、前回のランレングス符号化を行なった際のラン終端として判定された画素を用いるものとした。別な言い方で表現するのであれば、今回のランレングス符号化のラン終端として判定された着目画素Ｘが、次回のランレングス符号化のランの終端として判定された場合の近傍画素Ｘｆとして記憶保持すれば良いことになる。
【００６９】
図１８は、着目画素Ｘが、ランレングス符号化データの終端となった場合の入力画像の一例を示している。着目画素Ｘの直前のランレングス符号化データは、そのランの起源となる画素１８０１と同じ色の画素が連続していて、着目画素Ｘで異なった場合を示している。画素１８０２は、前回のランの終端検出となったのは画素である。かかる状況においては、着目画素の画素符号化データを生成する際には、画素データａに替えて画素１８０２の画素データｆと、着目画素の近傍画素ｂ，ｃ，ｄに基づき、色数判定部１０１が色数Ｎｃを再算出を行い、近傍一致情報符号化部１０２がベクトル情報の符号化、近傍画素状態情報の再生成を行なう。また、成分値予測符号化１０３は画素データｆ、ｂ、ｃに基づき予測値ｐを求め、着目画素Ｘの予測誤差符号化処理を行なうことになる。
【００７０】
上記を実現するため、ランレングス符号化部１０４は、ラン終端を検出したとき、その時点での着目画素Ｘのデータ（Ｒ，Ｇ，Ｂの各成分データ）を色数判定部１０１に保持させるべく、信号１１６上にラン終端検出情報を出力する。
【００７１】
図２４に示すように、色数判定部１０１内のラッチ１０１ｄは、信号１１６を介してラン終端検出情報を受信した場合、レジスタ１０１ｃのデータを保持し、セレクタ１０１ｂ、近傍一致情報符号化部１０２、および、成分値予測符号化部１０３に画素データｆとして出力する。また、ラッチ１０１ｄによる記憶保持後、レジスタ１０１ｃはその時点での着目画素Ｘのデータで、前回記憶保持していたデータを上書き（更新）する。つまり、ラッチ１０１ｄは、レジスタ１０１ｃには、着目画素Ｘのデータが保持され、ラッチ１０１ｄには前回のランレングス符号語のラン終端と判定された画素データｆが保持されることになる。なお、画像データの符号化処理を開始し、最初にランレングス符号化を行なった場合には、データｆは存在しないので、１枚の画像データを符号化する際に先立ち、レジスタ１０１ｃにはＲ、Ｇ、Ｂの各成分とも適当な値、例えば“０”をセットしておくものとする。但し、復号側と同じであれば良いので、この値は“０”に限定されるものではない。
【００７２】
また、セレクタ１０１ｂは、信号１１６を介してラン終端検出情報を受信すると、データ「ａ」に替えてデータ「ｆ」を色数演算部１０１ａに出力する。この結果、色数演算部は着目画素Ｘの近傍画素ｂ、ｃ、ｄと画素ｆに基づき、色数Ｎｃを再算出する。
【００７３】
近傍一致情報符号化部１０２が、信号１１６を介してラン終端検出情報を受信した場合、セレクタ１１０４に対して画素データｆを選択させる。この結果、近傍一致情報符号化部１０２は、ベクトル情報を再生成することになり、そのベクトル情報の再符号化して信号線１１０に出力すると共に、近傍画素状態情報１０８を信号線１０８に再出力する。
【００７４】
また、成分値予測符号化部１０３も、信号１１６を介してラン終端検出情報を受信した場合、セレクタ７０２に対して画素データｆを選択させる。この結果、予測選択信号ｍに基づき、データｆ、ｂ、ｃの各成分値に基づき、着目画素の予測符号語の再計算を行なう。
【００７５】
スイッチ１０６は、ランレングス符号化部１０４からの信号線１１５上に出力されるステータス信号が“１”から“０”になった場合、ランレングス符号化部１０４からのランレングス符号化データを出力することは既に説明した。そして、このスイッチ１０６は、ランレングス符号化データを符号列形成部１０７に出力した後、データａに替えてデータｆに基づく上記色数判定部１０１、近傍一致情報符号化部１０２、成分値予測符号化部１０３によって生成された着目画素Ｘに対応する画素符号化データを出力する。
【００７６】
以上説明したように本実施形態によれば、近傍一致情報符号化部１０２、成分値予測符号化部１０３、ランレングス符号化部１０４を備えて、符号化対象となる着目画素Ｘの周囲にある符号化済みの画素Ｘａ，Ｘｂ，Ｘｃ，Ｘｄ内に存在する色数に応じてこれらの符号化方法の種類を切り換えて符号化を行っている。特に、画素符号化データとランレングス符号化データの切り換えは、符号化済みの画素位置の情報に従って決めるため、符号化データに、符号化方法の種類を切り換わることを示す格別な識別情報を必要としない。
【００７７】
また、上記実施形態によると、ランレングス符号化部１０４により着目画素Ｘがラン終端画素と判定された場合通常の予測符号化時に参照するべき画素データＸａに替えて、一時的に別な位置の画素Ｘｆを参照して、色数判定数１０１、近傍一致情報符号化部１０２、成分値予測符号化部で再計算を行なうことになるので、画素符号化データの出力形式として図８（ａ）が採用される確率の低下を抑制でき、更なる圧縮効率が期待できる。
【００７８】
例えば図１３に示すような３画素おきにある画素値を配置した画像で構成された一定の周期性を持っている画像データの着目画素Ｘを符号化するとき、周辺４画素ａ，ｂ，ｃ，ｄが全て同じ画素なのでランレングス符号化モードに入るが、ランは長さ０で終わってしまい、ベクトル情報の符号化に処理が移る。そして、周囲４画素を参照すると、当然一致する画素はなく、予測符号化方式で符号化され、符号化効率が悪くなる。かかる点、直前のランの終端画素Ｘｆを参照してベクトル情報の符号化を行うことになり、着目画素Ｘと一致する可能性が高まり、符号化効率が向上する。
【００７９】
＜変形例の説明＞
上記実施形態では図１の構成に基づいて説明したが、上記実施形態と同等の処理をコンピュータプログラムでもって実現しても構わない。
【００８０】
図１４はソフトウェアで実現する場合の装置（ＰＣ等）の基本構成を示す図である。
【００８１】
図中、１４０１はＣＰＵで、ＲＡＭ１４０２やＲＯＭ１４０３に記憶されているプログラムやデータを用いて本装置全体の制御を行うと共に、後述する画像符号化処理、復号処理を実行する。
【００８２】
１４０２はＲＡＭで、外部記憶装置１４０７や記憶媒体ドライブ１４０８、若しくはＩ／Ｆ１４０９を介して外部装置からダウンロードされたプログラムやデータを記憶するため、及び、ＣＰＵ１４０１が各種の処理を実行する際のワークエリアとして使用される。図１に示されるバッファ１２０１、ハフマンテーブル２０４等も、このＲＡＭ１４０２に確保されるものである。
【００８３】
１４０３はＲＯＭで、ブートプログラムや本装置の設定プログラムやデータを格納する。
【００８４】
１４０４、１４０５は夫々キーボード、マウス（登録商標）等のポインティングデバイスで、ＣＰＵ１４０１に対して各種の指示を入力することができる。
【００８５】
１４０６は表示装置で、ＣＲＴや液晶画面などにより構成されており、画像や文字などの情報を表示することができる。
【００８６】
１４０７は外部記憶装置で、ハードディスクドライブ装置等の大容量情報記憶装置であって、ここにＯＳや後述する画像符号化、復号処理の為のプログラム、符号化対象の画像データ、復号対象画像の符号化データなどが保存されており、ＣＰＵ１４０１による制御によって、これらのプログラムやデータはＲＡＭ１４０２上の所定のエリアにロードされる。
【００８７】
１４０８は記憶媒体ドライブで、ＣＤ−ＲＯＭやＤＶＤ−ＲＯＭなどの記憶媒体に記録されたプログラムやデータを読み出してＲＡＭ１４０２や外部記憶装置１４０７に出力するものである。なお、この記憶媒体に後述する画像符号化、復号処理の為のプログラム、符号化対象の画像データ、復号対象の画像の符号化データなどを記録しておいても良く、その場合、記憶媒体ドライブ１４０８は、ＣＰＵ１４０１による制御によって、これらのプログラムやデータをＲＡＭ１４０２上の所定のエリアにロードする。
【００８８】
１４０９はＩ／Ｆで、このＩ／Ｆ１４０９によって外部装置を本装置に接続し、本装置と外部装置との間でデータ通信を可能にするものである。例えは符号化対象の画像データや、復号対象の画像の符号化データなどを本装置のＲＡＭ１４０２や外部記憶装置１４０７、あるいは記憶媒体ドライブ１４０８に入力することもできる。１４１０は上述の各部を繋ぐバスである。
【００８９】
上記構成において、ソフトウェアでもって第１の実施形態と同様の処理を実現する場合、図１に示した色数判定部１０１に代表される各種構成要素に相当する処理は、ソフトウェア上では関数、サブルーチン等で実現するが、本変形例でも、便宜的に、図１の各処理部の名前をそのまま使用するものとする。なお、バッファ２０１については、処理を開始するに先立って、ＣＰＵ１４０１がＲＡＭ１４０２に確保することになる。
【００９０】
図１７は本実施形態の画像処理装置による符号化処理の流れを示すフローチャートである。なお、同図に従ったプログラムはＲＡＭ１４０２にロードされており、ＣＰＵ１４０１がこれを実行することで、図１７に示したフローチャートに従った処理を行うことができる。以下、同図を参照して、本実施形態に係るアプリケーションプログラムの全体的な流れについて説明する。
【００９１】
まず、符号列形成部１０７において、符号化対象画像の付加情報を含めたヘッダが生成され、出力される（ステップＳ１９０１）。次いで、着目する画素の垂直方向位置を保持するカウンタｙを０に、ランレングス符号化部１０４の内部に保持されるカウンタＲＬを０に初期化し、ラン終端検出した際の参照画素Ｘｆの各成分値を“０”で初期化する（ステップＳ１９０２）。さらに着目する画素の水平方向位置を保持するカウンタｘを０に設定する（ステップＳ１９０３）。次いで、（ｘ、ｙ）座標に位置する着目画素Ｘについて、その周辺画素ａ，ｂ，ｃ，ｄにおける色数Ｎｃを色数判定部１０１により求める（ステップＳ１９０４）。なお、着目画素が符号化対象の画像の第１ラインの場合には、ｂ、ｃ、ｄ（図３参照）は存在しないので、それら周辺画素のＲＧＢ各成分値は０とする。ｘ＝０の場合には、周辺画素ａ，ｃも存在しないので、それらのＲＧＢは０とする。なお、復号処理と同じになれば良いので、この値に限らないのは言うまでもない。
【００９２】
ステップＳ１９０５では、色数Ｎｃが１、もしくはカウンタＲＬが０以外であるか否かを判定する。色数Ｎｃ＝１、或いは、カウンタＲＬが０以外である場合（ステップＳ１９０５でＹＥＳの場合）には、ステップＳ１９１４へと処理を移す。また、上記条件を満たさない場合（ステップＳ１９０５でＮＯの場合）には、ステップＳ１９０６へと処理を移す。
【００９３】
ステップＳ１９０６に処理が進んだ場合、近傍一致情報符号化部１０２にて着目画素に対するベクトル情報を符号化させ、符号生成部１０５を介してその符号語を出力する。次いで、ステップＳ１９０７に進み、着目画素位置における近傍画素状態情報が“１”であるか否かを判断し（ステップＳ１９０７）。“１”である場合（ＹＥＳ）には、ステップＳ１９２３に進み、成分値予測符号化部１０３にて各Ｒ、Ｇ、Ｂ成分について予測符号化を行なわせる。
【００９４】
そして、ステップＳ１９０９にて、符号生成部１０５、成分値予測符号化部１０３から出力される符号語を符号列形成部１０８で所定のフォーマットにして着目画素に対する符号列が形成される（ステップＳ１９０９）。次いで、着目する画素の水平方向位置を保持するカウンタｘに１を加え（ステップＳ１９１０）、画像の水平方向画素数Ｗと比較してｘ＜Ｗであれば（ＹＥＳ）処理をステップＳ１９０４へと戻し、次の画素の符号化処理を行い、そうでない場合（ＮＯ）にはステップＳ１９１２へと処理を移す（ステップＳ１９１１）。
【００９５】
一方、ステップＳ１９０５で、色数Ｎｃ＝１、或いは、カウンタＲＬが０以外であると判断した場合、処理はステップＳ１９１４に進み、着目画素値Ｘ（カウンタｘ、ｙで示されるｍされる画素値）と直前の画素値Ｘａを比較する。
【００９６】
Ｘ≠Ｘａである場合（ステップＳ１９１４でＮＯの場合）には処理をステップＳ１９２０へと移す。
【００９７】
また、Ｘ＝Ｘａである場合（ステップＳ１９１４でＹＥＳの場合）はランレングス符号化部１０４の内部に保持するカウンタＲＬに１を加え（ステップＳ１９１５）、続いて着目画素の水平方向位置を保持するカウンタｘに１を加える（ステップＳ１９１６）。そして、ステップＳ１９１７で画像の水平方向画素数Ｗと比較してｘ＜Ｗであれば処理をステップＳ１９１４へと戻し、次のランの計測を継続する。また、ｘ＝Ｗとなった場合には、ランが画像の右端まで至ったためこの時点でランレングスを確定させ、ランレングス符号化部１０４によりカウンタＲＬに保持されるランレングスを符号化して符号を出力する。ランレングス符号化部１０４から出力される符号はスイッチ１０６を介して符号列形成部１０７へと送られて所定のフォーマットの符号列が形成される（ステップＳ１９１８）。ランレングスの符号化を終了すると、カウンタＲＬが０に戻される（ステップＳ１９１９）。このとき、スイッチ１０７は端子ａ側に接続変更される。この後、ステップＳ１９１２へと処理を移し次のラインへと符号化処理の対象を移す。
【００９８】
また、ステップＳ１９１４からステップＳ１９２０に処理が進んだ場合、直前の画素値Ｘａと異なる画素値Ｘの出現によりランが終端されたことを意味する。従って、ランレングス符号化部１０４によりカウンタＲＬに保持されるランレングスを符号化して符号を出力する。ランレングス符号化部１０４から出力される符号語はスイッチ１０６を介して符号列形成部１０７へと送られて所定のフォーマットの符号列が形成される。ランレングスの符号化を終了すると、カウンタＲＬが０に戻される（ステップＳ１９２１）。このとき、直前の画素ＸａのデータをＸｆの値で置換え（ステップＳ１７０１）、ステップＳ１７０２でＸｆのデータを着目画素Ｘのデータで更新する。そして、ステップＳ１７０３にて、画素ｆ、ｂ、ｃ、ｄに基づき色数を再計算し、ステップＳ１９０６に処理を進める。注意したいのは、画素データＸａを画素データＸｆで置換えたので、ステップＳ１９０６以降では画素ｆ，ｂ，ｃ，ｄに基づく処理を行なうことになる点である。この結果、着目画素の画素符号化データを生成することになるので、スイッチ１０６は端子ａ側に接続変更される。
【００９９】
ステップＳ１９１２では着目する画素の垂直方向位置を保持するカウンタｙに１を加え、続いて、画像の垂直方向画素数Ｈと比較してｙ＜Ｈであれば（ＹＥＳ）処理をステップＳ１９０３へと戻し、次のラインの画素について同様に処理を行い、そうでない場合（ＮＯ）には対象とする画像データについての符号化処理を終了する（ステップＳ１９１３）。
【０１００】
以上の説明のように、本変形例によっても、第１の実施形態と同様の作用効果を奏することが可能になる。
【０１０１】
次に、復号処理について説明する。復号処理は、基本的に符号化処理と表裏の関係にある。そこで、ここでは、コンピュータプログラムでもって、上記処理で符号化された画像データを復号処理する際の処理手順を図２５のフローチャートに従って説明することとする。なお、以下の説明で復号対象となる着目画素Ｘが画像の境界位置にあるとき、参照する画素ａ，ｂ，ｃ，ｄは存在しないので、これらの画素の各成分値は０とする。
【０１０２】
先ず、ステップＳ２１０１において、復号対象となる符号化データが符号バッファ（ＲＡＭに確保される）に入力し、符号化データのヘッダを解析して復号に必要な付加情報を取り出す。そして、着目する画素の垂直方向位置を保持するカウンタｙを０に設定する（ステップＳ２１０２）。また、このとき、参照画素ＸｆのＲ、Ｇ、Ｂの各データを０に初期化すると共に、フラグＦＬＡＧを“０”で初期化する（ステップＳ２１０２）。このフラグＦＬＡＧはＲＡＭに確保されるものであり、ランレングス符号語を復号したか否かを判定するためのものである。
【０１０３】
次に、ステップＳ２１０３では、着目する画素の水平方向位置を保持するカウンタｘを０に設定する（ステップＳ２１０３）。
【０１０４】
次に、座標（ｘ、ｙ）に位置する画素に着目し、復号済みの周囲画素Ｘａ、Ｘｂ、Ｘｃ、Ｘｄを参照して色数Ｎｃを求める（ステップＳ２１０４）。ここで、着目画素位置が画像の左上隅位置にある場合、Ｘａ、Ｘｂ、Ｘｃ、Ｘｄは“０”として扱われる。
【０１０５】
次に、ステップＳ２１０５にて、色数Ｎｃが“１”であるか否かを判断する。色数Ｎｃが１である場合（ＹＥＳ）にはステップＳ２１１４へと処理を移し、それ以外の場合（ＮＯ）にはステップＳ２１１０へと処理を移す。
【０１０６】
ステップＳ２１１０では色数Ｎｃを４と比較して、Ｎｃ＝４である場合には、着目画素は成分値予測符号化データ（図８（ｃ）の符号化データ）であるものとし、着目画素の各成分を復号する（ステップＳ２１０８）。
【０１０７】
一方、ステップＳ２１１０にて、Ｎｃ≠４であると判断した場合には、ベクトル情報の符号語であるものとし、ステップＳ２１０６にてベクトル情報に復号する。このベクトル情報の符号語の復号は、図１５（ａ）乃至（ｃ）に示すように、色数に応じたテーブルを使用する。
【０１０８】
そして、得られたベクトル情報と色数Ｎｃとが一致する場合には“１”、不一致であれば“０”の近傍画素状態情報を生成し、近傍画素状態情報が“１”であるか否かをステップＳ２１０７で判断する（図１２参照）。ここで近傍画素状態情報が“１”の場合、着目画素の符号化データは図８（ｂ）のデータ構造であり、近傍画素状態情報が“０”の場合、着目画素の符号化データは図８（ａ）のデータ構造であることになる。
【０１０９】
従って、近傍画素状態情報が“１”の場合、ベクトル情報の符号語に後続して成分予測符号語が存在することになるので、ステップＳ２１２１にて、それらを復号する。
【０１１０】
ステップＳ２１０９では、ステップＳ２１０８、Ｓ２１２１から処理が進んだ場合には、成分予測符号化データを復号した結果を着目画素データとして出力し、ステップＳ２１０７でＮｏと判定された場合には、復号して得られたベクトル情報に従って、画素ａ，ｂ，ｃ，ｄの中から該当する画素データを着目画素データとして出力する。
【０１１１】
次に、ステップＳ２１３２にて、フラグＦＬＡＧが“１”であるか否かを判断する。ここではフラグＦＬＡＧ＝０であるものとして説明する。フラグＦＬＡＧ＝０である場合には、ステップＳ２１１０に進み、着目する画素の水平方向位置を保持するカウンタｘに１を加える。そして、ステップＳ２１１１にて、画像の水平方向画素数Ｗと比較してｘ＜Ｗであれば（ＹＥＳ）処理をステップＳ２１０４へと戻し、次の画素の復号処理を行う。また、ｘ＝Ｗである場合には、ステップＳ２１１２へと処理を移す。
【０１１２】
一方、ステップＳ２１０５にて、色数Ｎｃが１であると判断した場合、着目符号化データはランレングス符号化データであることになるので、処理はステップＳ２１１４に進み、ランレングス復号部１００５の内部にてランレングスＲＬが復号される。ここで復号した結果は０ランであることも有り得る点に注意されたい。
【０１１３】
復号したＲＬを０と比較して（ステップＳ２１１５）、ＲＬ＝０である場合（ＹＥＳ）にはステップＳ２１２０に処理を移す。
【０１１４】
また、ステップＳ２１１５にて、ＲＬ≠０であると判断した場合、復号画素値としてＸａを出力する（ステップＳ２１１６）。次いで、カウンタＲＬから１を減じ（ステップＳ２１１７）、着目する画素の水平方向位置を保持するカウンタｘに１を加える（ステップＳ２１１８）。そして、ステップＳ２１１９にて、水平方向画素数Ｗと比較してｘ＜Ｗであれば、ステップＳ２１１５へと戻る。また、ｘ＝Ｗであると判断した場合には、ステップＳ２１１２へと処理を移す（ステップＳ２１１９）。
【０１１５】
ここで、ステップＳ２１１５にて、ＲＬが０であると判断した場合、処理はステップＳ２１２０に進み、着目画素Ｘの直前の画素Ｘａを、Ｘｆのデータで一時的に置換える。そして、ステップＳ２１２９にて、ランレングス符号語の復号が行われたことを示すため、フラグＦＬＡＧを“１”にセットする。そして、ステップＳ２１３０に進んでＸｆ、Ｘｂ、Ｘｃ、Ｘｄに基づき色数Ｎｃを計数し、ステップＳ２１１０に戻る。
【０１１６】
ステップＳ２１３０からステップＳ２１１０に処理が戻った場合には、既に説明したステップＳ２１１０以降の処理を行ない、着目画素Ｘの復号が行われる。この後、ステップＳ２１３２にてフラグＦＬＡＧが“１”であると判定されることになるので、ステップＳ２１３３にて、画素データＸｆを、復号して得られた着目画素Ｘの各成分値で更新し、ステップＳ２１３４にてフラグＦＬＡＧを“０”にセットする。
【０１１７】
さて、ステップＳ２１１２では着目する画素の垂直方向位置を保持するカウンタｙに１を加え、続いて、画像の垂直方向画素数Ｈと比較してｙ＜Ｈであれば（ＹＥＳ）処理をステップＳ２１０３へと戻し、次のラインの画素について同様に処理を行い、そうでない場合（ＮＯ）には対象とする画像データについての符号化処理を終了する（ステップＳ２１１３）。
【０１１８】
以上説明した処理により、実施形態における符号化データから、可逆復号処理を行い、オリジナルの画像データに復元できるようになる。
［第２の実施形態］
上記実施形態では、着目画素Ｘがランを終端させた場合における予測符号化する際の予測値を求める際の参照画素ａ，ｂ，ｃの中の画素ａを、前回のランレングス符号化でランを終端させた画素を参照画素ｆで置換え、ｆ、ｂ、ｃを用いる例を説明した。本第２の実施形態では、この参照画素ｆとして、着目画素Ｘ以前にランの終端画素となった画素の色を複数記憶しておき、その発生回数の多い画素を参照する例について説明する。
【０１１９】
本実施形態では、コンピュータプログラムでもって実現する例を説明する。装置構成は、図１４と同じである。
【０１２０】
処理手順は、図１９に示すフローチャートの通りである。図１７と異なるのは、図１７におけるステップＳ１７０１、及び、Ｓ１７０２を、ステップＳ１９４１、Ｓ１９４２が置き換わった点と、符号化を開始するに先立ってＲＡＭ１４０２に、出現色の各成分値と出現頻度を保持するテーブルを確保する点、及び、符号化を開始する段階では、Ｒ＝Ｇ＝Ｂ＝０を、このテーブルに保存し、その頻度を“１”として設定する。このテーブルを確保し、初期化する処理は、例えばステップＳ１９０２にて行なえばよいであろう。
【０１２１】
図２０は、ある程度の符号化処理が進んだ、テーブルの状態を示しており、頻度順に出現色データを保持するものである。新規な色が発生した場合には、その色を表わす各色成分を追加登録し、その発生頻度を“１”にする。
【０１２２】
さて、図１９のフローチャートにおいては、ステップＳ１９４１、Ｓ１９４２以外は、図１７と同じである。そこで、このステップＳ１９４１、Ｓ１９４２について説明することとする。
【０１２３】
ステップＳ１９４１に処理が進むのは、着目画素Ｘがランを終端させた場合である。そこで、先ず、テーブルを参照し、過去にランを終端させた色のうちの最も頻度が高いＲ、Ｇ、ＢのデータをＸｆ画素であるものとし決定する。次に、ステップＳ１９４１に進み、画素Ｘｆを決定した色データについては、その頻度を“１”だけ増加し、テーブルを更新する。また、このとき、着目画素Ｘと同じ色が存在しなかった場合には、着目画素ＸのＲ、Ｇ、Ｂの各値をテーブルに追加し、その発生頻度を“１”に設定する。
【０１２４】
以上説明した第２の実施形態により、着目画素以前のランの終端画素を近傍一致情報により符号化した際に、一致した回数の一番多い画素を着目画素の参照画素にすることで、一致する可能性が高くなり、符号化効率の向上が期待できる。
【０１２５】
なお、復号処理する場合には、先に説明した第１の実施形態に、上記テーブルの概念を用いれば良いので、説明するまでもないであろう。
【０１２６】
［第３の実施形態］
本第３の実施形態では、参照画素ｆを着目画素Ｘ以前のランの終端画素からではなく、ランの起源となる画素の１つ前の画素を参照する場合を説明するものである。この結果、Ｘｆ≠Ｘａが約束され、尚且つ、Ｘｆの位置が着目画素Ｘに対しても十分に近い画素（少なくとも１ライン以内）になることも約束されるので、Ｘ＝Ｘｆとなる確率が高くなり、符号化効率が更に上がることが期待できる。
【０１２７】
先ず、実施形態におけるランレングス符号化データは、「ラン」そのものの符号語を生成するものであり、そのランの起源となる色を持つ画素符号化データ（図８（ａ）乃至（ｃ）のいずれか）が、必ずランレングス符号化データの直前に位置する点に注意されたい。唯一の例外は、着目画素位置が符号化対象画像の各ラインの先頭画素位置にある場合である。
【０１２８】
従って、ランレングス符号化を行なう場合のランの起源となる画素の１つ前の画素を記憶するためには、処理は、図２１に示す手順で実行していけば良いであろう。図１７と異なる点は、ＲＡＭ１４０２に２つの画素データＸｆ、Ｘｇを確保し、それぞれを０で初期化する点（ステップＳ１９０２）と、ステップＳ１７０１及びＳ１７０２をステップＳ１９５に置換える点である。ここで画素データＸｇは着目画素Ｘの画素データを記憶保持するためのものであり、Ｘｆはその１つ前の画素データを記憶保持するためのものである。以下、図１７と異なる点についてのみ説明する。
【０１２９】
着目画素Ｘでランの終端となった場合には、ステップＳ１９５２にて、画素データＸａをＸｇのＲＧＢ値で一時的に置換え、ＸａにＸｆのＲＧＢ値を代入する。そしてＸｆに一時的に保持していたＸｇの値を代入し、Ｘｇには着目画素ＸのＲＧＢ値を代入する。この結果、ランの終端画素を符号化する際にのみ着目画素Ｘとその１つ直前の画素データが更新され、これらの値は常に保持されることになる。この後、ステップＳ１７０３にて、更新後のＸａ（＝Ｘｆ）、Ｘｂ，Ｘｃ，Ｘｄに基づく色数Ｎｃを計数しなおし、ステップＳ１９０６に処理を進める。
【０１３０】
以上の結果、例えば図２２に示すような画像が存在した場合であって、着目画素Ｘが図示の位置にあったとする。第１の実施形態では、図示の符号２２０１が前回のランの終端位置の画素であったので、この画素２２０１を参照してしまい、符号化効率が下がってしまう。かかる点、本第３の実施形態では図示の画素Ｘｆが参照されることになり、着目画素ＸのＲＧＢの各値が２５５、２５５、２５５である場合に、参照画素Ｘｆは図２３に示すように、そのＲＧＢの値が２５５、２５５、２５５となり、符号化効率が高くなるのが理解できよう。
【０１３１】
［第４の実施形態］
以上、第１乃至第３の実施形態を説明したが、ベクトル情報の符号化無しに、上記実施形態を簡易に処理する例を第４の実施形態として説明することとする。
【０１３２】
本第４の実施形態の画像処理装置では、着目画素位置の近傍の、既符号化済みの画素位置の画素群（１つの場合も有り得る）に基づいて、その着目画素の予測値を求め、着目画素値と予測値との差分を算出し、その差分値を符号化する予測符号化部と、同じ画素値の連続数をカウントし、その連続性が途切れた、或いはライン終端になった場合に、カウント値を符号化するランレングス符号化部を有し、これらを適宜切り替えるものである。
【０１３３】
符号化対象とする画像データは、ＲＧＢカラー画像データであり、各コンポーネント（色）８ビットで０〜２５５の範囲の輝度値を表現した画素データにより構成されるものとする。画像データの並びは点順次、即ち、ラスタースキャン順に各画素を並べ、その各画素はＲ，Ｇ，Ｂの順番でデータを並べて構成されるものとする。画像は水平方向Ｗ画素、垂直方向Ｈ画素により構成されるものとする。なお、入力する画像データはＲＧＢカラーに限らず、ＣＭＹ（或いはＫを付加したＣＭＹＫ）、モノクロ画像でもよい。
【０１３４】
図２６は本第４の実施形態に係る画像処理装置のブロック構成図である。実施形態における画像処理装置は、符号化対象の画像データを一時的に格納するバッファメモリ２４０１、符号化方法判定部２４０２、予測符号化部２４０３、ランレングス符号化部２４０４、及び、符号化データを格納するメモリ２４０５を有する。なお、図２６に示す各構成要素中、符号化方法判定部２４０２、予測符号化部２４０３、ランレングス符号化部２４０４については、コンピュータで実行するプログラムでもって実現しても構わない。この場合の構成は、図１４に示す構成によるものとなる。
【０１３５】
画像データは信号線２４００から、ラスタースキャン順に入力される。バッファ２４０１は画像データを複数ライン格納する領域を持ち、信号線２４００から入力される画像データを一時的に格納する。
【０１３６】
符号化方法判定部２４０２は、図３に示す、着目画素Ｘの周辺の既符号化済みの周辺４画素ａ、ｂ、ｃ、ｄの画素値Ｘａ、Ｘｂ、Ｘｃ、Ｘｄを比較し、周辺４画素が同じ画素値であるか否かを判定する。周辺４画素が同一画素値である場合にはランレングス符号化部２４０４を選択し、符号化を開始させる。また、周辺４画素が同一画素値ではないと判定した場合には、予測符号化部２４０３を選択し、符号化を行わせる。
【０１３７】
予測符号化部２４０３は、着目する画素ＸについてＲ，Ｇ，Ｂ各成分ごとに符号化を行う。まず、周辺３画素ａ，ｂ，ｃから、予測式ｐ＝ａ＋ｂ−ｃにより予測値ｐを生成する。次に、着目画素Ｘの着目する成分値と予測値ｐとの差分値ｅを第１の実施形態と同様にハフマン符号化し、その結果をメモリ２４０５に出力する。
【０１３８】
一方、ランレングス符号化部２４０４は、着目画素Ｘの周辺４画素が同一画素値である場合に、着目画素Ｘとその直前の画素が同じである状態の連続数（ラン）を計測を開始する。一旦、ランの計測が開始すると、着目画素の周辺４画素の状態とは無関係に、着目画素Ｘと直前の画素が同一である限り、ランを計測し続ける。そして、着目画素Ｘが直前の画素と異なる、或いは、着目画素がライン終端の画素位置になった場合（ラン終端を判定した場合）には、計測したランをメモリ２４０５に符号化してメモリ２４０５に出力し、ランレングス符号化を終了する。また、ランレングス符号化部２４０４は、ランレングス符号化データのメモリ２４０５への出力を行った場合、符号化方法判定部２４０２にランレングス符号化の終了を通知する。この結果、着目画素については、予測符号化部２４０３による符号化に切り換わる。
【０１３９】
ここで、着目画素Ｘの値がその直前の画素の画素値と異なることで、ランレングス符号化部２４０４がランを終端させた場合について考察する。
【０１４０】
この状況は、図３からもわかるように、Ｘ≠ａである場合でもある。従って、着目画素Ｘの予測符号化を行う際の予測値ｐをｐ＝ａ＋ｂ−ｃで求めると、予測誤差が「０」とはなりにくくなり、符号化効率が低下する可能性が高い（特に、予測値ｐとして直前の画素ａのみを参照するモードの場合には、予測誤差は「０」とはならない）。そのため、ランレングス符号化から予測符号化に切り換わった直後においては、通常の予測符号化時に参照していた周囲３画素ａ，ｂ，ｃの一部であるａは参照せず、その代わりに前回のランレングス符号化の最終画素の画素値Ｘｆをａとして予測値ｐを算出する。つまり、ｐ＝Ｘｆ＋ｂ＋ｃとなる。この予測値ｐを用いて、着目画素Ｘとの差分値ｅを求め、予測符号化する。この為には、符号化方法判定部２４０２は、ランレングス符号化部２４０４でランレングス符号化データの出力を行ったことの通知を受けた場合、着目画素Ｘの画素値を記憶保持するようにする。そして、この通知を受けとった符号化方法判定部２４０２は、予測値を求めるａ，ｂ，ｃの画素値に替えて、前回の通知を受けて保持した画素値Ｘｆを予測符号化部２４０３に出力する。
【０１４１】
なお、上記説明で記憶保持しておく画素Ｘは、ランレングス符号化が終わった直後の画素としているが、本発明はこれに限らない。例えば、現在ランレングス符号化している画素列の先頭の直前の画素など、予測符号化の際に参照することで符号化効率の向上が見込めるような別の画素を参照しても良い。この場合は、上記近隣に位置する別の画素を記憶保持しておくことになる。また上記説明では周囲画素の１つであるａの代わりとなる別の１つの画素を一時的に参照するようにしたが、代替え画素の個数もこれに限らない。例えば２画素ａ及びｂの代わりとなる別の２つの画素を一時的に参照するようにしても構わない。若しくは周囲画素の１つであるａの代わりとして別の２つの画素の平均値を求める等を行っても構わない。また、着目画素Ｘがランを終端させた場合、すなわち、Ｘ≠Ｘａである場合、着目画素Ｘの直前の画素の画素値ＸａをＸｆとして記憶しても良い。
【０１４２】
以上の様に、本実施形態では、ランレングス符号化直後には、周囲３画素ａ，ｂ，ｃの少なくとも１つは参照せず、以前にランレングス符号化された箇所近隣、或いは現在ランレングス符号化している箇所の近隣に位置する別の画素値を用いて予測値ｐを求め、この予測値ｐと着目画素との差分値ｅを求め、予測符号化する。
【０１４３】
本第４の実施形態における符号化処理の流れを図２７のフローチャートに従って説明する。
【０１４４】
先ず、ステップＳ２７０１において、符号化データを生成する際に、ヘッダを生成し、出力する。次いで、ステップＳ２７０２にて、着目画素の垂直方向の位置を示す変数ｙを“０”で初期化する。また、ランを係数するカウンタ変数ＲＬを“０”、及び、ランレングス符号化から予測符号化に切り換わった直後に用いる予測値を格納する変数Ｘｆを“０”で初期化する。次いで、ステップＳ２７０３にて、着目画素の水平方向の位置を示す変数ｘを“０”で初期化する。
【０１４５】
ステップＳ２７０４では、座標（ｘ，ｙ）で示される着目画素Ｘの周囲４画素の画素値Ｘａ、Ｘｂ、Ｘｃ、Ｘｄが同一であるか否かを判定する。同一ではないと判断した場合には、ステップＳ２７０５に進んで、各成分毎に予測符号化を行ない、ステップＳ２７０６にてその符号化結果を出力する。なお、周辺画素は符号化しようとする画像外にある場合には、その画素の各成分値は“０”とする点は既に説明した。
【０１４６】
ステップＳ２７０７では、変数ｘを“１”だけインクリメントし、ステップＳ２７０８では変数ｘの値と入力画像の水平画素数Ｗとを比較することで、１ラインの終端を越えたか否かを判定する。ｘ＜Ｗであると判定した場合には、ステップＳ２７０４以降の処理を繰り返す。また、ｘ＝Ｗであると判定した場合には、次のラインの符号化を行うため、ステップＳ２７０９において、変数ｙを“１”だけインクリメントする。そして、ステップＳ２７１０にて変数ｙと、入力画像の垂直方向の画素数Ｈとを比較することで、最終ラインの符号化が完了したか否かを判断する。ｙ＜Ｈであると判断した場合には、ステップＳ２７０３以降の処理を行い、ｙ＝Ｈであると判断した場合には符号化処理を終了する。
【０１４７】
上記処理中、ステップＳ２７０４にて、着目画素Ｘの既符号化済みの周辺４画素が同一画素値であると判断した場合、上記の予測符号化処理からランレングス符号化に切り替えるため、処理はステップＳ２７１１に進む。
【０１４８】
ステップＳ２７１１では、着目画素Ｘと直前の画素Ｘａとが同じであるか否かを判定する。同じであると判定した場合には、ステップＳ２７１２にてカウンタ変数ＲＬを“１”だけインクリメントする。次いで、ステップＳ２７１３では、次の画素を着目画素とするため変数ｘも“１”だけインクリメントする。この後、ステップＳ２７１４にて「ｘ＜Ｗ」であるか否かを判定し、ｘ＜Ｗであると判定した場合には、ステップＳ２７１１以降の処理を繰り返す。
【０１４９】
さて、着目画素Ｘがその直前の画素Ｘａと異なった場合には、ラン終端となったわけであるから、処理はステップＳ２７１１からステップＳ２７１５に進んで、カウンタ変数ＲＬの値を符号化する。そして、ステップＳ２７１６において、符号化した結果を出力すると共に、ステップＳ２７１７で、カウンタＲＬを“０”に初期化する。次いで、Ｘ≠Ｘａと判定された着目画素Ｘの予測符号化に備えて、Ｘａの替わりにＸｆを予測値ｐを算出するように設定する。これにより、予測値ｐはＸｆ＋Ｘｂ−Ｘｃとなる。この後、ステップＳ２７１９にて、着目画素Ｘの値をｆに代入する。これは、次回のランレングス符号化から予測符号化に切り換わった直後の予測値を保持するためである。この後、処理はステップＳ２７０５に進むことになる。ここで注意したい点は、ステップＳ２７０５に進んだ場合の着目画素Ｘに対する予測値ｐはＸｆ＋Ｘｂ−Ｘｃを利用する点である。
【０１５０】
一方、ステップＳ２７１４にて、ｘ＝Ｗであると判断した場合、着目画素Ｘの位置は１ラインの終端を越えたことになる。従って、ステップＳ２７２０に進んで、カウンタ変数ＲＬの値を符号化し、ステップＳ２７２１にてその結果を出力し、ステップＳ２７２２でカウンタ変数ＲＬを“０”にリセットする。そして、ステップＳ２７０９に進むことになる。
【０１５１】
以上説明したように本第４の実施形態によれば、予測符号化処理とランレングス符号化処理とを適宜切り替えて符号化データを生成することに成功する。更に、ランレングス符号化処理から予測符号化処理に切り換わった直後においては、予測符号化で用いる予測値として、着目画素の直前の位置の画素値を用いるのではなく、前回のランレングス符号化のラン終端となった画素値を用いることになり、符号化効率の低下を抑制することも可能になる。
【０１５２】
[その他の実施形態]
上記実施形態では、符号化対象の画像データは、Ｒ、Ｇ、Ｂ形式のデータであって、それぞれ８ビットであるものとして説明した。しかし、色空間を表わすデータは、Ｒ、Ｇ、Ｂに限らず、Ｙ、Ｍ、Ｃ、Ｋ（ブラック）でも構わないし、Ｌ*ａ*ｂ*や、ＹＣｂＣｒでも構わない。また、各成分値が８ビットである必要もない。特に昨今のデジタルカメラ等では、内部的にＲ、Ｇ、Ｂが１２ビットで処理し、ＲＡＷモードとして可逆符号化するものも存在するので、このような装置に適用しても構わない。
【０１５３】
上記実施形態では周囲画素の色数Ｎｃに応じて、Ｎｃ種類の画素値との一致不一致を符号化した。従ってベクトル情報としてはＮｃ＋１値のシンボルの符号化を行った。例えば色数Ｎｃが３であった場合には第１の画素値Ｘ１と一致する場合には０、第２の画素値Ｘ２と一致する場合には１、第３の画素値Ｘ３と一致する場合には２、Ｘ１〜Ｘ３のいずれとも一致しない場合には３というように４値のシンボルを図１５（ｃ）の符号表を用いて符号化した。しかしながら、Ｎｃ種類の画素値の全てを一致／不一致の判定対象とする必要はない。例えば、Ｎｃ＝３の場合に、第１の画素値Ｘ１、第２の画素値Ｘ２と一致／不一致を判定し、Ｘ＝Ｘ１の場合には０、Ｘ＝Ｘ２の場合には１、Ｘ≠Ｘ１、Ｘ≠Ｘ２の場合には３というように０，１，３の３値を取るシンボル（近傍一致情報とＮｃを比較する処理を考慮し、あえて“２”を除いた）を符号化するようにしても良い。
【０１５４】
また、第１の画素値Ｘ１、第２の画素値Ｘ２、第３の画素値Ｘ３などの求め方についても上述の実施形態に限らず、例えば、Ｘｂ，Ｘａ，Ｘｃ，Ｘｄの順など、異なる順序で第１、第２、第３の画素値を取得しても良いし、Ｘａ，Ｘｂ，Ｘｃ，Ｘｄ間の一致状況によって変えても良い。例えば、Ｘａ，Ｘｂ，Ｘｃ，Ｘｄの順序で第１、第２、第３の画素値を取得するが、Ｘａ＝Ｘｂである場合には第２の画素値Ｘ２をＸｄとするといったやり方でも構わない。
【０１５５】
また、ベクトル情報の符号化として、あらかじめ確率分布を想定して定めた符号語を用いる方法を示したが、上述の例とは異なる符号語を用いても良いし、算術符号などことなる符号化方式を適用しても構わない。
【０１５６】
また、着目する成分値の予測方法としては、幾つかの予測方法を用意して、適応的に切り換えても構わないし、符号化済みの各成分値に発生した予測誤差の平均値を着目する成分の予測にフィードバックするなど、非線形な予測を用いても構わない。
【０１５７】
また、ここでは成分値の予測誤差のエントロピ符号化としてハフマン符号化やＧｏｌｏｍｂ符号化を用いる例について示したが、これ以外のエントロピ符号化を用いも良い。
【０１５８】
また、着目画素Ｘの周囲画素値としてＸａ，Ｘｂ，Ｘｃ，Ｘｄを参照する例について示したが、もっと多くの画素を参照しても良いし、ＸａとＸｂだけといったように参照画素数を減らしても構わない。
【０１５９】
また、上記実施形態の説明からも容易に理解できるように、コンピュータに実行させるコンピュータプログラムでもっても実現できるものである。通常、コンピュータプログラムは、ＣＤ−ＲＯＭ等のコンピュータ可読記憶媒体に格納されていて、その記憶媒体をアクセスするドライブ等の読み取り装置を用いて、システムにコピー或いはインストールすることで実行可能になるから、当然、そのようあコンピュータプログラムも本発明の範疇に入る。
【図面の簡単な説明】
【０１６０】
【図１】第１の実施形態に係る画像処理装置のブロック構成図である。
【図２】予測符号化装置のブロック構成図である。
【図３】予測符号化する際の着目画素Ｘと周辺画素ａ，ｂ，ｃ、ｄの位置関係を示す図である。
【図４】予測選択信号ｍに対応する予測式を示す図である。
【図５】予測誤差ｅとグループ番号SSSSとの対応を示す図である。
【図６】グループ番号SSSSと符号語との対応を示す図である。
【図７】ベクトル情報と符号語の対応の一例を示す図である。
【図８】実施形態における画素符号化データのデータ構成を示す図である。
【図９】実施形態における符号化データの出力符号列のデータ構造を示す図である。
【図１０】実施形態における成分値予測符号化部１０３のブロック構成図である。
【図１１】実施形態における近傍一致情報符号化部１０２のブロック構成図である。
【図１２】実施形態におけるベクトル情報と近傍画素状態情報との対応関係を示す図である。
【図１３】第１の実施形態での符号化により効果が発生する画像の例を示す図である。
【図１４】実施形態における処理をコンピュータプログラムで実現する場合のコンピュータのブロック構成図である。
【図１５】色数Ｎｃ毎のベクトル情報とその符号の関係を示す図である。
【図１６】Golomb符号の例を示す図である。
【図１７】第１の実施形態の処理をコンピュータプログラムで実現する場合の符号化処理手順を示すフローチャートである。
【図１８】第１の実施形態における着目画素Ｘがラン終端となった場合の参照画素ｆ、ｂ、ｃ、ｄの位置を示す図である。
【図１９】第２の実施形態の符号化処理手順を示すフローチャートである。
【図２０】第２の実施形態における符号化途中のテーブルの状態を示す図である。
【図２１】第３の実施形態に符号化処理手順を示すフローチャートである。
【図２２】第３の実施形態で効果のある画像の一例を示す図である。
【図２３】第３の実施形態の着目画素Ｘａと、これに置き換わる画素Ｘｆのデータ内容をしめす図である。
【図２４】第１の実施形態における色数判定部のブロック構成図である。
【図２５】第１の実施形態における復号処理手順を示すフローチャートである。
【図２６】第４の実施形態における画像処理装置のブロック構成図である。
【図２７】第４の実施形態における符号化処理手順を示すフローチャートである。
【図１】
2006325006.tif 000003
【図２】
2006325006.tif 000004
【図３】
2006325006.tif 000005
【図４】
2006325006.tif 000006
【図５】
2006325006.tif 000007
【図６】
2006325006.tif 000008
【図７】
2006325006.tif 000009
【図８】
2006325006.tif 000010
【図９】
2006325006.tif 000011
【図１０】
2006325006.tif 000012
【図１１】
2006325006.tif 000013
【図１２】
2006325006.tif 000014
【図１３】
2006325006.tif 000015
【図１４】
2006325006.tif 000016
【図１５】
2006325006.tif 000017
【図１６】
2006325006.tif 000018
【図１７】
2006325006.tif 000019
【図１８】
2006325006.tif 000020
【図１９】
2006325006.tif 000021
【図２０】
2006325006.tif 000022
【図２１】
2006325006.tif 000023
【図２２】
2006325006.tif 000024
【図２３】
2006325006.tif 000025
【図２４】
2006325006.tif 000026
【図２５】
2006325006.tif 000027
【図２６】
2006325006.tif 000028
【図２７】
2006325006.tif 000029