(57)【要約】      （修正有）【課題】ブロック単位に、文字線画・非文字線画のいずれに属すかの符号化識別データと符号化階調データを並列に復号処理可能な固定長符号化データを生成する。【解決手段】ブロック化部１０１は、複数の画素のブロックを入力、抽出部１０２は、文字線画の画素の代表画素値、非文字線画の画素の代表画素値を抽出し、且つ、それぞれの画素毎に、文字線画、非文字線画のいずれに属すかの識別データを生成し、又、着目ブロック内の文字線画の画素値を、非文字線画の代表画素値で置換し、着目ブロックから非文字線画の画素で構成される階調ブロックを生成する。第１の符号化部１０３は、生成した識別データを可逆符号化し、第２の符号化部１０４は、生成した階調ブロックを非可逆符号化し、パック部１０５は、予め設定されたビット数のブロックヘッダ、第１の符号化部１０３、第２の符号化部１０４で生成された符号化データから、固定長符号化データを生成する。【選択図】図１
2012074898.tif 000002
【特許請求の範囲】
【請求項１】
文字線画が混在した階調画像データを符号化する画像符号化装置であって、
符号化対象の階調画像データから、複数画素で構成されるブロックを入力する入力手段と、
該入力手段で入力した着目ブロックから、それぞれの画素毎に、文字線画、非文字線画のいずれに属するかを識別するため識別データを生成し、前記文字線画に属する画素の代表画素値、及び、非文字線画に属する画素の代表画素値を抽出する抽出手段と、
前記着目ブロック内の全画素に対して生成した前記識別データを可逆符号化して符号化データを生成する第１の符号化手段と、
前記着目ブロック内の前記文字線画に属する画素の画素値を、前記非文字線画に属する画素の代表画素値で置換して得られた階調ブロックを非可逆符号化し、符号化データを生成する第２の符号化手段と、
前記文字線画に属する画素の代表画素値を含む固定長のブロックヘッダ、前記第１の符号化手段で生成された符号化データ、及び、前記第２の符号化手段で生成された符号化データから、固定長符号化データを生成し、生成した固定長符号化データを前記着目ブロックの符号化データとして出力する固定長符号化データ生成手段と備え、
前記固定長符号化データ生成手段は、前記固定長符号化データとなるパックの前記ブロックヘッダに後続する位置から終端に向けて、前記第１，第２の符号化手段で生成された一方の符号化データを配置し、前記固定長符号化データとなるパックの終端から先頭に向けて、前記第１，第２の符号化手段で生成された他方の符号化データを配置することで前記固定長符号化データを生成する
ことを特徴とする画像符号化装置。
【請求項２】
前記第２の符号化手段はＪＰＥＧ符号化手段であって、
前記第２の符号化手段が生成した符号化データを構成する｛符号語＋付加データ｝のセットを先頭から順にＣ０、Ｃ１…とし、符号化データの終端を示す符号語ＥＯＢとし、それぞれのビット数をＬ（）として表わし、前記パック中の前記第１の符号化手段で得られた符号化データの配置で残るビット数をＮとしたとき、
前記第２の符号化手段は、生成しつつある符号化データの総ビット数と前記Ｎとの関係が、
Ｌ（Ｃ０）＋Ｌ（Ｃ１）＋…＋Ｌ（Ｃｎ）＋Ｌ（ＥＯＢ）≦Ｎ
を満たす最大となるｎを求め、
生成した符号化データ中の先頭から第ｎ番目のセットまでの符号化データを、前記着目ブロックに対する階調ブロックの符号化データとして出力する
ことを特徴とする請求項１に記載の画像符号化装置。
【請求項３】
前記第２の符号化手段はＪＰＥＧ符号化手段であって、
前記第２の符号化手段が生成した符号化データを構成する｛符号語＋付加データ｝のセットを先頭から順にＣ０、Ｃ１…とし、符号化データの終端を示す符号語ＥＯＢとし、それぞれのビット数をＬ（）として表わし、前記パック中の前記第１の符号化手段で生成された符号化データの配置で余ったビット数をＮとし、前記第２の符号化手段が生成した符号化データの総ビット数が前記Ｎを超えた場合、
前記固定長符号化データ生成手段は、
Ｌ（Ｃ０）＋Ｌ（Ｃ１）＋…＋Ｌ（Ｃｎ）＋Ｌ（ＥＯＢ）≦Ｎ
を満たす最大となるｎを求め、
前記第２の符号化手段で生成した符号化データ中の先頭から第ｎ番目のセットまでの符号化データを、前記パック中に配置することを特徴とする請求項１に記載の画像符号化装置。
【請求項４】
前記固定長符号化データ生成手段は、前記第１の符号化手段で生成された符号化データのビット数、前記第１の符号化手段で生成された符号化データの前記パックにおける終端位置、或いは、前記第２の符号化手段で生成された符号化データの前記パックにおける終端位置のいずれか１つを表わす固定ビット数の情報を、前記パックの前記ブロックヘッダに後続する位置に配置することを特徴とする請求項１に記載の画像符号化装置。
【請求項５】
コンピュータに読み込ませ実行させることで、前記コンピュータを、請求項１乃至４のいずれか１項に記載の画像符号化装置の各手段として機能させることを特徴とするプログラム。
【請求項６】
請求項５に記載のプログラムを格納したことを特徴とするコンピュータが読み取り可能な記憶媒体。
【請求項７】
符号化画像データを復号する画像復号装置であって、
複数画素で構成されるブロックの固定長の符号化データを入力する入力手段と、
ブロック内の各画素に対して生成した、文字線画、非文字線画のいずれに属するかを示す識別データの符号化データを復号する第１の復号手段と、
前記入力手段で入力した符号化データの終端から先頭に向けて符号化データを復号し、１ブロック分の階調画像を復号する第２の復号手段と、
前記入力手段で入力した符号化データのブロックヘッダを解析し、ブロックヘッダに含まれる文字線画の代表画素値を抽出すると共に、前記ブロックヘッダに後続する符号化データを前記第１の復号手段に供給するヘッダ解析手段と、
前記ブロックにおける着目画素が、前記第１の復号手段による復号して得られた識別データによって文字線画に属することが示されている場合、前記ヘッダ解析手段で抽出した前記文字線画の代表画素値を前記着目画素の復号後の画素値として出力し、
前記ブロックにおける前記着目画素が、前記第１の復号手段による復号して得られた識別データによって非文字線画に属することが示されている場合、前記第２の復号手段で得られた前記着目画素の位置の画素値を前記着目画素の復号後の画素値として出力する復元手段と
を備えることを特徴とする画像復号装置。
【請求項８】
前記第２の復号手段は、ＪＰＥＧ復号手段であって、
前記入力手段で１ブロック分の固定長の符号化データを入力したことに応じて１ブロック分のエントロピー復号処理を介して、逆量子化処理まで実行し、前記第１の復号手段による復号結果を受けて、逆量子化で得られた係数の中の無効な係数を破棄した後、逆ＤＣＴ変換を行うことを特徴とする請求項７に記載の画像復号装置。
【請求項９】
文字線画が混在した階調画像データを符号化する画像符号化装置の制御方法であって、
入力手段が、符号化対象の階調画像データから、複数画素で構成されるブロックを入力する入力工程と、
抽出手段が、前記入力工程で入力した着目ブロックから、それぞれの画素毎に、文字線画、非文字線画のいずれに属するかを識別するため識別データを生成し、前記文字線画に属する画素の代表画素値、及び、非文字線画に属する画素の代表画素値を抽出する抽出工程と、
第１の符号化手段が、前記着目ブロック内の全画素に対して生成した前記識別データを可逆符号化して符号化データを生成する第１の符号化工程と、
第２の符号化手段が、前記着目ブロック内の前記文字線画に属する画素の画素値を、前記非文字線画に属する画素の代表画素値で置換して得られた階調ブロックを非可逆符号化し、符号化データを生成する第２の符号化工程と、
固定長符号化データ生成手段が、前記文字線画に属する画素の代表画素値を含む固定長のブロックヘッダ、前記第１の符号化工程で生成された符号化データ、及び、前記第２の符号化工程で生成された符号化データから、固定長符号化データを生成し、生成した固定長符号化データを前記着目ブロックの符号化データとして出力する固定長符号化データ生成工程と有し、
前記固定長符号化データ生成工程では、前記固定長符号化データとなるパックの前記ブロックヘッダに後続する位置から終端に向けて、前記第１，第２の符号化工程で生成された一方の符号化データを配置し、前記固定長符号化データとなるパックの終端から先頭に向けて、前記第１，第２の符号化工程で生成された他方の符号化データを配置することで前記固定長符号化データを生成する
ことを特徴とする画像符号化装置の制御方法。
【請求項１０】
符号化画像データを復号する画像復号装置の制御方法であって、
入力手段が、複数画素で構成されるブロックの固定長の符号化データを入力する入力工程と、
第１の復号手段が、ブロック内の各画素に対して生成した、文字線画、非文字線画のいずれに属するかを示す識別データの符号化データを復号する第１の復号工程と、
第２の復号手段が、前記入力工程で入力した符号化データの終端から先頭に向けて符号化データを復号し、１ブロック分の階調画像を復号する第２の復号工程と、
ヘッダ解析手段が、前記入力工程で入力した符号化データのブロックヘッダを解析し、ブロックヘッダに含まれる文字線画の代表画素値を抽出すると共に、前記ブロックヘッダに後続する符号化データを前記第１の復号工程に供給するヘッダ解析工程と、
復元手段が、
前記ブロックにおける着目画素が、前記第１の復号工程による復号して得られた識別データによって文字線画に属することが示されている場合、前記ヘッダ解析工程で抽出した前記文字線画の代表画素値を前記着目画素の復号後の画素値として出力し、
前記ブロックにおける前記着目画素が、前記第１の復号工程による復号して得られた識別データによって非文字線画に属することが示されている場合、前記第２の復号工程で得られた前記着目画素の位置の画素値を前記着目画素の復号後の画素値として出力する復元工程と
を有することを特徴とする画像復号装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は画像の符号化、復号技術に関するものである。
【背景技術】
【０００２】
従来、画像を圧縮する手法の１つとして、ブロック符号化が知られている。ＪＰＥＧなどのブロック符号化では、ブロック毎の符号量が可変長であるので、或るブロックのみを編集のために復号したい、という要望に応えることはできず、先頭から順番に復号しなければならない。
【０００３】
これに対して、特許文献１には、ブロック単位に符号量を固定長にする符号化技術が開示されている。固定長であるため、目的とするブロックの位置が判明すれば、その符号化データの格納位置が演算で特定でき、目的とするブロックのみを復号することが可能である。
【０００４】
この特許文献１に記載された符号化技術は、ブロック内の画像を文字や線画等のエッジの鮮明さが重要な部分と、自然画などの階調性が重要な部分に分離し、それぞれ別の符号化方式で圧縮している。例えば、文字や線画の符号化においては、２値のブロックデータ（以下、識別データという）の符号化として、ランレングス符号化とハフマン符号化を組み合わせて適用している。また自然画の符号化においては、多値のブロックデータ（以下、階調データという）の符号化として、ＪＰＥＧの符号化を適用している。そして、これら得られた符号化データを定められたフォーマットに従って、１ブロック分の固定長符号化データを生成している。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００８−２７８０４２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
上記従来例で用いられるハフマン符号化やＪＰＥＧ符号化は、可変長符号化である。従って、１ブロック分の符号化データ量を固定長にしたとしても、その中に、複数種類の符号化データが混在し、その中の１つでも可変長符号化データである場合には、該当するブロックの先頭から順番に復号しなければならい。例えば、上記特許文献１の或るブロックの符号化データを復号する場合には、先ず、ハフマン符号化された識別データを復号し、その後でJPEG符号化された階調データを復号しなければならない。これは１ブロックを高速に復号したいような場合には不向きである。
【０００７】
本発明は上記従来例に鑑みてなされたものであり、１ブロックの符号化データ内に２種類の符号化データが混在したとしても、それら２種類の符号化データを並列に復号できる技術を提供しようとするものである。
【課題を解決するための手段】
【０００８】
この課題を解決するため、例えば本発明の画像符号化装置は以下の構成を備える。すなわち、
文字線画が混在した階調画像データを符号化する画像符号化装置であって、
符号化対象の階調画像データから、複数画素で構成されるブロックを入力する入力手段と、
該入力手段で入力した着目ブロックから、それぞれの画素毎に、文字線画、非文字線画のいずれに属するかを識別するため識別データを生成し、前記文字線画に属する画素の代表画素値、及び、非文字線画に属する画素の代表画素値を抽出する抽出手段と、
前記着目ブロック内の全画素に対して生成した前記識別データを可逆符号化して符号化データを生成する第１の符号化手段と、
前記着目ブロック内の前記文字線画に属する画素の画素値を、前記非文字線画に属する画素の代表画素値で置換して得られた階調ブロックを非可逆符号化し、符号化データを生成する第２の符号化手段と、
前記文字線画に属する画素の代表画素値を含む固定長のブロックヘッダ、前記第１の符号化手段で生成された符号化データ、及び、前記第２の符号化手段で生成された符号化データから、固定長符号化データを生成し、生成した固定長符号化データを前記着目ブロックの符号化データとして出力する固定長符号化データ生成手段と備え、
前記固定長符号化データ生成手段は、前記固定長符号化データとなるパックの前記ブロックヘッダに後続する位置から終端に向けて、前記第１，第２の符号化手段で生成された一方の符号化データを配置し、前記固定長符号化データとなるパックの終端から先頭に向けて、前記第１，第２の符号化手段で生成された他方の符号化データを配置することで前記固定長符号化データを生成することを特徴とする。
【発明の効果】
【０００９】
本発明によれば、ブロック単位に、文字線画・非文字線画のいずれに属するのかを示す符号化識別データと、符号化階調データを並列に復号処理可能な固定長符号化データを生成できる。
【図面の簡単な説明】
【００１０】
【図１】第１の実施形態に係る画像符号化装置のブロック図。
【図２】第２の実施形態に係る画像符号化装置のブロック図。
【図３】第１の実施形態に係る第２の符号化部のブロック図。
【図４】第１、第２の実施形態に係る固定長符号データを示す図。
【図５】ＪＰＥＧ符号化データのデータ構造を示す図。
【図６】第３の実施形態に係る画像符号化装置のブロック図。
【図７】第３の実施形態に係る固定長符号データを示す図。
【図８】第４の実施形態に係る画像復号装置のブロック図。
【図９】第４の実施形態に係る第２の復号部のブロック図。
【図１０】第４の実施形態に係る累積符号量データと係数位置データを示す図。
【発明を実施するための形態】
【００１１】
以下、添付図面に従って本発明に係る実施形態を詳細に説明する。
【００１２】
［第１の実施形態］
本実施形態では、説明を簡単なものとするため、符号化対象の画像データは濃度成分のみで、１画素当たり８ビット（０乃至２５５の範囲の階調）のモノクログレースケールの画像データを符号化し、符号化画像データを生成する装置を例にして説明する。画素値が示すのは濃度値であるので、値が大きいほど黒く、逆に値が小さいほど白くなることを示すことに注意されたい。カラー画像に適用する場合には、各色成分毎に以下の処理を行えば良いのは明らかである。
【００１３】
＜装置構成の説明＞
図１は第１の実施形態の画像符号化装置のブロック図である。ブロック化部１０１は、文字線画が混在した階調画像データから、複数画素（ｍ×ｎの個の画素）で構成されるブロックを切り出して読み込み、それをブロックデータとして抽出部１０２に出力する。
【００１４】
抽出部１０２は、入力したブロックデータ内から文字線画を構成する代表画素値（以下、抽出色という）の検出処理を行い、その抽出色（文字線画の画素値）をブロックヘッダデータとしてパック部１０５に供給する。なお、文字線画を構成する画素が検出できない場合、予め設定した値をパック部１０５に通知するものとするが、この場合の値はどのような値でも構わない。理由は、全画素が非文字線画の場合、この文字線画の代表画素値が使われることがないからである。また、抽出部１０２は、入力したブロックデータ中の各画素毎に、それが文字線画に属する画素であるか、非文字線画に属する画素であるかを示す識別データとして第１の符号化部１０３に出力する。１画素につき、２種類の画素のいずれに属するかを示せば良いので、識別データは１画素につき１ビットで良いことになる。実施形態の場合、１ブロックデータ内に含まれる全画素数はｍ×ｎ個であるから、抽出部１０２は結局のところｍ×ｎ個の識別データ（ｍ×ｎビット）を第１の符号化部１０３に出力する。なお、これ以降、「ｍ×ｎ個の識別データ」を総称して識別情報といい、１画素について言う場合に「識別データ」という。なお、着目ブロックデータ内に文字線画の画素が１つも発見できなかった場合、ブロック内の全ての画素の識別データは、非文字線画を示すこととなる。更に、抽出部１０２は、入力したブロックデータ中の非文字線画に属する画素はその画素値を維持し、且つ、文字線画に属する画素値を非文字線画に属する画素値の平均値で置き換えることで、実質的に文字線画のないｍ×ｎ画素の階調ブロックデータを生成し、第２の符号化部１０４に出力する。なお、抽出部１０２の詳細は後述する。
【００１５】
第１の符号化部１０３は、抽出部１０２から入力した識別情報（ｍ×ｎビット）を可逆符号化して符号化データを生成し、パック部１０５に出力すると共に、その符号化データの符号量（ビット数）を第２符号化部１０４に出力する。なお、第１の符号化部１０３の可逆符号化の種類は特に問わないが、ここではランレングス符号化とする。
【００１６】
第２の符号化部１０４は、抽出部１０２からの階調ブロックデータを非可逆符号化して符号化データを生成し、且つ、第１の符号化部１０３から通知された符号量に従って、生成した符号化データのデータ量を調節し、パック部１０５に出力する。
【００１７】
パック部１０５は、抽出部１０２から供給された抽出色、第１の符号化部１０３からの符号化データ、並びに、第２の符号化部１０４からの符号化データを後述するアルゴリズムに従ってパックし、固定長符号化データとして出力する。
【００１８】
以上が第１の実施形態の各処理部の大まかな処理である。第１の符号化部１０３については、先に説明したとおり、識別情報（ｍ×ｎ個の２値の識別データ）を可逆符号化し、その符号化データと符号量を出力するだけであるので、その説明は省略する。従って、以下では、抽出部１０２、第２の符号化部１０４、パック部１０４の詳細を説明する。なお、以下の説明では、１ブロックのサイズを規定するｍ、ｎは、ｍ＝ｎ＝８として説明するが、ｍ、ｎはこれに限らないのは明らかである。
【００１９】
＜抽出部＞
抽出部１０２は、ブロック化部１０１から８×８画素のブロックデータを入力すると、先ず、或る閾値ＴＨ以上の値を持つ画素と閾値ＴＨ未満の画素の２つのグループにわける。閾値ＴＨは文字線画を抽出するのに適した値であれば良く、ユーザが適宜設定できるものや、抽出部１０２が入力画像から算出するものとする。入力画像から閾値を算出する一例を挙げると、入力画像の平均値をＴＨとするという方法がある。閾値ＴＨ以上の濃度を持つ画素が１つも発見できない場合、入力したブロックには文字線画の画素が存在しないものとして判定する。また、抽出部１０２は、閾値ＴＨ以上の画素が少なくとも１つあると判定した場合、閾値ＴＨ以上の値を持つ画素値の平均値ＡＶＥ１（文字線画の代表画素値）を算出し、そのＡＶＥ１（８ビット）を、抽出色としてパック部１０５に出力する。なお、文字線画が存在しない場合、抽出色の値は復号処理時には無視されるので、どのような値を出力しても構わない。上記が抽出部１０２のパック部１０５への出力にかかる処理である。
【００２０】
抽出部１０２は、着目ブロック内のラスタースキャンし、このスキャン中の着目画素が前記閾値ＴＨ以上の画素値を持つ場合には文字線画に属することを示す１ビットの“１”の識別データを生成し、逆に、前記閾値ＴＨ未満の画素値を持つ場合には１ビットの“０”の識別データを生成し、抽出部１０２の内部バッファに格納するとともに第１の符号化部１０３に出力する。ここで、抽出部１０２の内部バッファには、８×８個の識別データが保持されている点に注意されたい。上記が抽出部１０２の第１の符号化部１０３への出力にかかる処理である。
【００２１】
抽出部１０２は、着目ブロック内の前記閾値ＴＨ未満の非文字線画に属すると判定した画素値の平均値ＡＶＥ２（非文字線画の代表画素値）を算出する。そして、文字線画に属すると判定された各画素の値を、算出した平均値ＡＶＥ２で置換して、階調ブロックデータを生成し、第２の符号化部１０４に出力する。かかる処理をより明確に示すと次の通りである。
【００２２】
抽出部１０２が入力した着目ブロックの座標ｉ，ｊの画素値をＰin（ｉ，ｊ）と表わし、内部バッファに格納されている座標ｉ，ｊの識別データをＢ（ｉ，ｊ）と表わす。また、生成しようとする階調ブロックデータにおける座標ｉ，ｊの画素値をＰout（ｉ，ｊ）とする。
・Ｂ(i,j)＝１のとき（位置ｉ，ｊの画素値が文字線画に属するとき）、
Ｐout(i,j)＝ＡＶＥ２
・Ｂ(i,j)＝０のとき（位置ｉ，ｊの画素値が非文字線画に属するとき）、
Ｐout(i,j)＝Ｐin(i,j)
【００２３】
上記の結果、第２の符号化部１０４には、文字線画が除外された１ブロック分の階調画像データが供給されることとなる。これを別な言い方をすれば、第２の符号化部１０４には、高周波成分が除外された階調ブロックデータが供給されることなり、高い圧縮率が期待できることとなる。なお、上記では、入力したブロックデータの置換処理を抽出部１９２にて行うものとして説明したが、その置換処理を第２の符号化部で行うようにしても構わない。
【００２４】
＜パック部及び第２の符号化部＞
パック部１０５は、抽出部１０２からの抽出色と、第１の符号化部１０３が生成した符号化識別情報、並びに、第２の符号化部１０４で生成される符号化階調データをパックし、１ブロックにつき、固定長の符号化データを生成する。このとき、パック部１０５は、復号装置が符号化識別情報、符号化階調データを並列に復号できるようなデータ構造の符号化データを生成する。
【００２５】
そのため、本実施形態におけるパック部１０５は、１ブロックの固定長のパックのヘッダに抽出色を格納し、そのブロックヘッダに後続して符号化識別情報を配置する。そして、パック部１０５は、符号化階調データについては、固定長のパックの終端から先頭に向かう順に配列させる。かかる構造にすると、画像復号装置では、１ブロックの符号化識別情報の復号処理と、符号化階調データの復号処理を並列に実行できる。ただし、以下の問題が発生する可能性に着目する必要がある。
【００２６】
図４（ａ）は固定長符号パックの内部に配置される符号化識別情報、図４（ｂ）は符号化階調データを示している。図４（ａ）と図４（ｂ）に示したように仮に識別データの下位４ビットを“００００”とし、符号化階調データの下位４ビットを“１０１０”とする。符号化識別情報は、ブロックヘッダを除くペイロード部の先頭（ＭＳＢ）から終端に向けて配置してく。そして、符号化階調データはペイロード部の終端（ＬＳＢ）から先頭に向けて配置していく。理想的には図４（ｃ）のように、これら２つの符号化データが互いに重ならないように配置されることである。しかし、符号化識別情報、符号化階調データの符号量（ビット数）は固定ではない。従って、符号化識別情報と符号化階調データの合計符号量が固定長パックのペイロードのサイズを超えると、固定長符号パックに格納しきれない。ここで、識別情報は文字線画の画素を再現するものであるので、個々の画素が正しく復号できることが望まれる。それ故、識別情報はその全てを固定長符号データのパック内に格納するものとする。すると、符号化階調データのほうの一部は捨てなければならないことになる。この捨て方を単純に「打ち切る」という方法で行うと、図４（ｄ）のようになる。図４（ｄ）は、符号化識別情報の全てが格納されているが、符号化階調データの終端３ビットが固定長符号データに格納しきれずに、最下位の“０１０”が無くなってしまった様子を表している。このようにすると、打ち切り対象となった符号化データは、不完全なものとなり、その不完全な符号化データの一部に後続して、あたかも符号化識別情報の末端を含む符号語が存在するものして扱われることとなり、符号化階調データの正常な復号処理は望めないし、逆に、意図しない復号結果を生成してしまうことにもなりかねない。
【００２７】
そこで、第１の実施形態では、この対策を第２の符号化部１０４で行うものとした。以降、この第２の符号化部１０４の処理を説明する。
【００２８】
図３は第２の符号化部１０４内のブロック図を示している。ＤＣＴ演算部３０１は、入力された階調データ（８×８画素）をＤＣＴ変換し、８×８個のＤＣＴ変換係数を得る。次に量子化部３０２は、そのＤＣＴ変換係数を量子化を行う。ジグザグスキャン部３０３は、量子化後の変換係数の並び替えを行う。上記のＤＣＴ演算部３０１からジグザグスキャン部３０３までは公知の技術と同じである。エントロピー符号化部３０４は、ジグザグスキャン後の変換係数を、第１の符号化部１０３より通知された符号化識別方法の符号量に従い、エントロピー符号化を行う。
【００２９】
エントロピー符号化部３０４は、このエントロピー符号化の際に、階調データの符号語が上述した打ち切りで、不完全になることがないように、生成される都合の良い位置に符号語ＥＯＢ（Ｅｎｄ  Ｏｆ  Ｂｌｏｃｋ）を付加する。そこでまず、階調データの符号化として使用しているＪＰＥＧ符号化によって生成されるデータ構造について説明する。ＪＰＥＧデータは、図５（ａ）に示すように符号語と付加データを１セットで構成されており、そのセットがいくつか続いて１つのブロックの符号データを形成する。従って、ＥＯＢを付加するのは或るセット付加データと次のセットの符号語の境界でなければならない。図５（ｂ）ではｎ番目の符号語と付加データをＥＯＢに変更した様子を示している。
【００３０】
エントロピー符号化部３０４は、量子化された係数データを入力として、テーブル等を参照して符号語を得、係数データより付加データを得る。ＤＣ成分を０番目として、ｉ番目に得られた符号語と付加データの合計符号量をＬｉとする。ヘッダデータの符号量をＨ、符号化識別情報の符号量をＰとし、下記条件（１）：
Ｈ＋Ｐ＋Ｌ０＋Ｌ１＋・・・＋Ｌｉ＋４≦固定長符号量  …（１）
を満たしている限りはエントロピー符号化処理を継続していく。そして、ｎ番目に得られた符号語と付加データの合計量Ｌｎによって初めて、
Ｈ＋Ｐ＋Ｌ０＋Ｌ１＋・・・＋Ｌｎ＋４＞固定長符号量  …（２）
となったとき、ｎ番目の符号語と付加データを「ＥＯＢ」に置き換え、符号化階調データとして格納し、エントロピー符号化処理をストップする。
【００３１】
なお、条件（１）、（２）で左辺に「４」を加算するのは「ＥＯＢ」が“１０１０”という４ビットの符号語だからである。
【００３２】
上記を別な表現で言えば、次の通りである。すなわち、第２の符号化部１０４は、生成した符号化データを構成する｛符号語＋付加データ｝のセットの先頭から順にＣ０、Ｃ１…とし、符号化データの終端を示す符号語ＥＯＢとし、それぞれのビット数をＬ（）として表わし、固定長パック中の第１の符号化部１０３による配置で余ったビット数をＮとし、第２の符号化部１０４が生成しつつある符号化データの総ビット数と前記Ｎと関係が、
Ｌ（Ｃ０）＋Ｌ（Ｃ１）＋…＋Ｌ（Ｃｎ）＋Ｌ（ＥＯＢ）≦Ｎ
を満たす最大となるｎを求め、生成した符号化データ中の先頭から第ｎ番目のセットまでの符号化データを、前記着目ブロックに対する階調ブロックの符号化データとして出力する。
【００３３】
パック部１０５（固定長符号化データ生成部）は、抽出部１０２からのヘッダ部に格納する情報（抽出色）、及び、第１，第２の符号化部より生成された符号化識別情報と、第２の符号化部１０４により生成された符号化階調データを用いて固定長符号データを生成する。即ち、パック部１０５は固定長パックの先頭から順番に、ヘッダ、符号化識別情報を配置する。次に、パック部１０５は、固定長パックの終端から先頭に向けて符号化階調データを配置していく。
【００３４】
復号装置は、以上のようにして生成された固定長符号データを受け取ったら、その固定長符号データのうちヘッダデータを除いた先頭からは、符号化識別情報が順に配列されているものとして符号化識別情報を読み出して、８×８個の識別データが得られるまで復号する。また、固定長符号データの終端からは、符号化階調データが順に配列されているものとして、その符号化階調データを復号し、８×８個の係数が得られるまで、或いは、ＥＯＢが検出されるまで復号を行う。なお、後者の場合、復号されなかった係数は０であるものとして、その後の復号処理（逆量子化、逆ＤＣＴ変換）を行っていく。こうして、文字線画を示す画素値、８×８個の識別データ、８×８画素で構成される階調データが揃ったら、抽出部１０２と逆の処理を行い、１ブロックの画像データを復元し、出力する。
【００３５】
この復元処理は簡単に説明すると次の通りである。ＪＰＥＧ復号後の階調データ中の座標ｉ，ｊの画素値をＰin（ｉ，ｊ）と表わし、復号後の識別情報中の座標ｉ，ｊの識別データをＢ（ｉ，ｊ）と表わす。また、再現しようとするブロック内の座標ｉ，ｊの画素値をＰout（ｉ，ｊ）とする。そして、文字線画の抽出色をＣとする。この場合、復号装置は、次のようにして１ブロックデータを復元すればよい。
・Ｂ(i,j)＝１のとき（位置ｉ，ｊの画素値が文字線画に属するとき）、
Ｐout(i,j)＝Ｃ
・Ｂ(i,j)＝０のとき（位置ｉ，ｊの画素値が非文字線画に属するとき）、
Ｐout(i,j)＝Ｐin(i,j)
【００３６】
以上で説明した方法に従って固定長符号化を行うことにより、復号装置側では、固定長符号データの受け取りが終了した時点で、符号化識別情報と符号化階調データの２種類の復号を同時に開始することが出来し、しかも、それぞれの符号化データが、終端が明確になっているので、正常に、その２つの復号処理を終えることもできる。
【００３７】
なお、上記第１の実施形態における符号化識別情報と符号化階調データの並びを逆にしても構わない。要は、固定長符号化データとなるパックのブロックヘッダに後続する位置から終端に向けて、第１，第２の符号化部で生成された一方の符号化データを配置し、固定長符号化データとなるパックの終端から先頭に向けて、第１，第２の符号化部で生成された他方の符号化データを配置すれば良い。
【００３８】
また、固定長パックのサイズ（ビット数）はユーザが適宜設定するものとするが、下限は、抽出色を示す８ビット＋識別情報の最悪時のビット数＋階調データのＤＣ成分の最悪時のビット数となる。また上限ビット数は、少なくとも圧縮していることが望まれるので、１ブロックに含まれる画素数×８（実施形態では１画素は８ビットとしているので）未満となるであろう。
【００３９】
［第２の実施形態］
第１の実施形態では、第１の符号化部１０３からの符号量を元に第２の符号化部１０４で符号量を調整しながら符号化を行った。この結果、復号装置は、２つの符号化データを並行処理が可能となる。しかし、符号化装置は、識別情報の符号量が確定してからでないと階調データの符号化を行えないので、その符号化処理の高速化が難しくなる。そこで、第２の実施形態では符号化でも識別情報と階調データの符号化を並行処理できるような構成について説明する。
【００４０】
図２に第２の実施形態に係る画像符号化装置のブロック図を示す。図２において、第１の実施形態と同じ動作をする構成要素については同じ符号を付した。以降では、第１の実施形態と異なる動作をする構成要素である第２の符号化部２０４とパック部２０５（固定長符号データ生成部）と符号量記憶部２０６についてのみ説明を行う。
【００４１】
第２の符号化部２０４は、入力される階調データに対して符号化処理を行う。第１の実施形態に記した第２の符号化部１０４と異なる点は、第１の符号化部１０３からの符号量の入力はなく、ＥＯＢの付加も行わない点である。符号化階調データだけで固定長符号量を超える場合は、固定長符号量で下位ビットに単なる打ち切り処理をするだけで良い。さらに、第２の符号化部２０４は符号語と付加データの合計の符号量を出力する。つまり、第１の実施形態でいうＬ０、Ｌ１、・・・、Ｌｎを符号量記憶部２０６に出力する。ここで出力するデータとしては符号量だけでよく、符号語が何ビットで付加データが何ビットであるかはパック部２０５（固定長符号データ生成部）での処理に無関係であるので、出力する必要は無い。
【００４２】
符号量記憶部２０６では、第２の符号化部２０４から入力されるＬ０から始まる符号量データを記憶する。符号量記憶部２０６の必要な記憶容量としては、符号語の符号量の最大ビット数は１６、付加データの符号量の最大ビット数は１０であるので、１セットの最大ビット数は合計２６ビットとなるので、データ幅は２６を表せるビット数の５ビットあれば良い。また、符号語と付加データの符号量の合計値が最小で３ビット（符号語が２ビット＋付加データが１ビット）なので、要素数は（固定長符号量／３）要素分用意すればよく、余りは切り捨てる。例えば固定長符号量を５１２ビットとすると、要素数は１７０となる。
【００４３】
パック部２０５（固定長符号データ生成部）では、ブロックヘッダデータ、符号化識別情報、符号化識別情報の符号量データ、符号化階調データをもとに、符号量記憶部２０６を参照して固定長符号データを生成して出力する。まず、固定長符号データの先頭からブロックヘッダデータ、符号化識別情報の順に配列させる。次に、ヘッダデータのデータ量、符号化識別情報の符号量、並びに、符号量記憶部２０６を参照して、第１の実施形態に示した判定式（２）を満たす最小のｎ（或いは、判定式（１）を満たす最大のｎ）を探し、符号化階調データの上位Ｌ０＋Ｌ１＋・・・＋Ｌ（ｎ−１）ビットを、固定長パックの終端から先頭に向けて配置していく。続けてＥＯＢを格納して（ｎ番目の符号語と付加データをＥＯＢに変更する処理と等価）、パック処理を終了する。ｎ＋１番目以降の符号語と付加データは使用しない。また、第１の実施形態で得られる固定長符号データと第２の実施形態で得られる固定長符号データは結果的に同じデータとなる。
【００４４】
以上のように、符号量記憶部２０６を設けて階調データの符号語と付加データ毎の符号量を記憶しておくことで、識別情報の復号と階調データの復号の並行動作が可能な固定長符号データを生成するような構成を実現できる。
【００４５】
［第３の実施形態］
復号装置において符号化識別情報と符号化階調データを並行して復号する構成としては、固定長符号データに符号量を示す情報を格納するという方法もある。本第３の実施形態ではその構成について説明する。図６に第３の実施形態に係るブロック図を示す。図６において、第１の実施形態や第２の実施形態と同じ動作をする構成要素については同じ符号を付した。以降では、第１の実施形態や第２の実施形態と異なる動作をする構成要素であるパック部６０５についてのみ説明を行う。
【００４６】
パック部６０５（固定長符号化データ生成部）では、入力されるブロックヘッダデータ、符号化識別情報とその符号量、及び、符号化階調データから、固定長符号データを生成して出力する。具体的には、パック部６０５は、まず固定長パックの終端位置（ＬＳＢ）から先頭位置（ＭＳＢ）に向けて符号化階調データを格納する。次いで、固定長パックの先頭位置から終端位置に向けて、ヘッダデータ、符号化識別情報の符号量を表わす固定ビット数の符号量データ、及び、符号化識別情報の順に上書きしていく。この結果、符号化階調データの符号量が、「パックの固定長−（ヘッダのビット数＋符号量データのビット数＋符号量データが示す符号量）」を超える場合は、上記上書き操作により符号化階調データは打ち切られることになる。
【００４７】
図７に固定長符号データに符号量データを格納する例を示した。図７（ａ）は符号化階調データに打ち切りが無かった場合を示し、図７（ｂ）は符号化階調データに打ち切りがあった場合を図示している。ここでは「符号量データ」を固定長符号データに格納する例を示したが、当然格納する値としては「符号量データ」に限らず、固定長符号データ内での符号化識別情報の終端のビット位置を格納しても良いし、符号化階調データの終端のビット位置でも構わない。
【００４８】
本第３の実施形態の場合、「符号量データ」が格納されているので、復号装置は、この「符号量データ」から以下の式で、符号化階調データの符号量（ビット数）を計算できる。
符号化階調データの符号量＝固定長符号量−（ヘッダデータのビット数＋符号データのビット数＋符号量データが示す符号量）
復号装置は、符号化階調データの復号処理の過程で、上記のようにして求めた符号量に達したら復号処理をストップさせることができ、正常な状態で符号化階調データの復号処理を終了することが可能である。もし復号処理の過程で求めた符号量に達しない時、つまり符号化階調データの打ち切りがない場合は、通常の階調データの復号処理を行えばよい。
【００４９】
第３の実施形態で得られる固定長符号データは、内部に符号化識別情報の符号量を示すデータも格納するため、第１の実施形態や第２の実施形態で得られる固定長符号データより階調データの打ち切り量が大きいデータとなる可能性がある。従って、画質的には第１の実施形態や第２の実施形態の方が良い可能性があるが、第１の実施形態でのエントロピー符号化部３０４でのＥＯＢ置き換え処理や、第２の実施形態での符号量記憶部２０６は必要無く、簡単な構成での実装が可能である。
【００５０】
以上のように、パック部６０５（固定長符号データ生成部）において固定長符号データに識別データの符号量を格納することで、識別データの復号と階調データの復号の並行動作が可能な固定長符号データを生成するような構成を実現出来る。
【００５１】
［第４の実施形態］
第４の実施形態では、第３の実施形態と同様に、符号化装置が容易な構成でありながら、階調データの実質的な打ち切り量は第１と第２の実施形態と同じとなる構成について説明する。
【００５２】
符号化装置の構成については図６と同じ構成である。ただし、パック部６０５（固定長符号化データ生成部）において、第３の実施形態と異なりヘッダデータの後に符号量データを格納しない点が異なる。即ち、まず固定長パックの終端から先頭に向けて符号化階調データを格納し、次いで、先頭から終端に向けてヘッダデータ、符号化識別情報を上書きする。符号化階調データの符号量は“固定長符号量−（ブロックヘッダデータのビット数＋符号化識別情報のビット数）”を超える場合は、上記上書き操作により符号化階調データは打ち切られることになる。
【００５３】
第１から第３の実施形態とは異なり、本第４の実施形態では符号化装置で符号化階調データの打ち切りに対して対策を行っていないため、復号装置では対策を行う必要がある。従って、以降ではその復号装置について説明する。
【００５４】
図８に第４の実施形態に係る復号装置のブロック図を示す。ヘッダ解析部８０１は、入力された固定長符号データからヘッダデータを取り出す。第１の復号部８０２は、固定長符号データのうちヘッダデータを除いた最上位ビットから識別データの復号を行う。第２の復号部８０３は固定長符号データの最下位ビットから階調データの復号を行う。係数位置記憶部８０４は第２の復号部８０３から入力された累積符号量データと係数位置データを記憶する。復元部８０５はヘッダデータと復号された識別情報、階調データから画像データを復元し出力する。
【００５５】
以下、各構成要素について詳細に説明する。ヘッダ解析部８０１は入力された固定長符号データからヘッダを読み、文字線画の画素の有無、及び、抽出色データを復元部８０５へ出力する。同時に固定長符号データからヘッダデータを除いた符号化識別情報を第１の復号部８０２へ出力する。
【００５６】
第１の復号部８０２は、ヘッダデータを除いた固定長符号データを受け取り、ペイロードの先頭から順に復号を行い、得られた識別情報（実施形態では８×８の識別データ）を復元部８０５に出力する。同時に、固定長符号データに格納されていた符号化識別データの符号量を符号量データとして出力する。
【００５７】
第２の符号部８０３は固定長符号データを受け取り、その終端位置から先頭に向けて順に復号処理を行う。第２の復号部８０３は図９のブロック図に示した構成になっている。まずエントロピー復号部９０１でエントロピー復号を行う。もし符号化器において階調データが打ち切られていなければ、通常の復号が可能であるが、固定長符号データ内の階調データは打ち切りされていた場合には正しいＥＯＢが無く、符号化識別情報までを階調データの一部であるとして処理することになる可能性がある。また、符号化階調データとしてのフォーマットを満たしていない符号となっている可能性もある。従って、エントロピー符号化部９０１は、少なくとも（ａ）フォーマットを満たしていない符号だった時、（ｂ）ＥＯＢが検出された時、（ｃ）固定長符号量に達した時、のいずれかの場合に復号処理を終了する。エントロピー復号の過程では同時に、累積符号量データ（Ｍ０、Ｍ１、・・・、Ｍｎ）と係数位置データ（Ｐ０、Ｐ１、・・・、Ｐｎ）をセットにして係数位置記憶部８０４へ出力する。階調データの構造と累積符号量データと係数位置データとの対応は図１０のようになっている。係数位置データＰｎは符号語ｎが示すゼロランレングスの累積値とも言える。次に、エントロピー復号部９０１は第１の復号部８０２からの符号量データの入力を待って係数位置記憶部８０４を参照し、下記の式（３）を満たす係数Ｐｘのみを有効な係数として次段のジグザグスキャン部９０２へ出力する。式（３）を満たさない係数は無効な係数として全て“０”を出力する。
Ｍｘ≦固定長符号量−（符号量データ＋ヘッダデータの符号量）  …（３）
【００５８】
ジグザグスキャン部９０２では、図３のジグザグスキャン部３０３の逆スキャンを行う。逆量子化部９０３では量子化部３０２の逆量子化を、ＤＣＴ演算部９０４ではＤＣＴ演算部３０１の逆演算となる周波数空間から実空間への変換を行う。
【００５９】
また、第１の符号化部８０２から出力される符号量データをエントロピー符号化部９０１への入力としたが、ジグザグスキャン部９０２や量子化部９０３などへの入力としても良い。ただし、この場合はジグザグスキャン部９０２を挟んでいるため、ジグザグスキャンに応じたアドレス変換が必要である。
【００６０】
復元部８０５では入力されたブロックヘッダデータ、識別情報（８×８個の識別データ）、階調データから画像データを生成して出力する。即ち、識別データを参照し、着目画素の識別データが“１”であれば抽出色データを、“０”であれば階調データの画素データを出力することを、１ブロック分の画素数だけ繰り返す。
【００６１】
以上のように、第４の実施形態では、第３の実施形態と同様に符号化装置が容易な構成であって、階調データの実質的な打ち切り量は第１と第２の実施形態と同じとなる構成について説明した。
【００６２】
上記第４の実施形態では、識別情報の復号が終了してからでないと、逆ＤＣＴ演算を開始することは出来ず、階調データを復号できない。しかし、エントロピー復号処理やジグザグスキャン処理、逆量子化処理までは識別データの復号処理の完了を待たずに並行して行うことができる。そして、識別情報の復号処理で、識別情報の終端位置、すなわち、階調データの終端位置が判明したところで、逆エントロピー復号処理で無効な係数は破棄し、足りなくなったＤＣＴ係数は全て０と見なして、逆ＤＣＴ変換を行うように制御すれば良い。
【００６３】
（その他の実施例）
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【図１】
2012074898.tif 000003
【図２】
2012074898.tif 000004
【図３】
2012074898.tif 000005
【図４】
2012074898.tif 000006
【図５】
2012074898.tif 000007
【図６】
2012074898.tif 000008
【図７】
2012074898.tif 000009
【図８】
2012074898.tif 000010
【図９】
2012074898.tif 000011
【図１０】
2012074898.tif 000012