(57)【要約】【課題】打ち切り処理された付加ビットを有効利用して復号化を行うことにより、復号化後の画像において、打ち切りの影響によるノイズを軽減することを目的とする。【解決手段】符号化データから、中途で打ち切られている付加ビットの断片を取得し、付加ビットの断片から打ち切りにより欠落しているビット数を欠落ビット数として取得し、欠落ビットを再生して付加ビットを復元する。【選択図】図１
2010109492.tif 000002
【特許請求の範囲】
【請求項１】
画像を符号化する際に符号語と周波数成分を表す付加ビットとの組から構成されるデータの末端を打ち切って固定長化した符号化データから、画像を復号する装置であって、
前記符号化データから、中途で打ち切られている付加ビットの断片を取得する解読手段と、
前記付加ビットの断片から打ち切りにより欠落しているビット数を欠落ビット数として取得し、欠落ビットを再生して付加ビットを復元する補正手段と、
を備えることを特徴とする、画像処理装置。
【請求項２】
前記補正手段は、打ち切りにより欠落している付加ビットの断片の最上位ビットであるＭＳＢが”１”値の場合には当該付加ビットの断片の末尾に欠落ビット数分の”０”値を追加し、当該ＭＳＢが”０”値の場合には当該付加ビットの断片の末尾に欠落ビット数分の”１”値を追加することで、付加ビットを再生して出力することを特徴とする、請求項１に記載の画像処理装置。
【請求項３】
請求項１又は２に記載の画像処理装置は、係数生成手段を更に備え、
前記解読手段は、前記符号化データに含まれる、中途で打ち切られていない符号語と付加ビットとの組から、シンボルデータを解読して付加ビットと共に出力し、また前記符号化データに中途で打ち切られた符号語を検出した場合は当該符号語を無視し、
前記補正手段は、前記符号化データに組となる付加ビットが存在しない符号語を検出した場合は当該符号語を無視し、前記付加ビットの断片と組となる符号語を検出した場合は、当該符号語から解読したシンボルデータを、新たな付加ビットと共に出力し、
前記係数生成手段は、前記解読手段又は前記補正手段が順次出力したシンボルデータと付加ビットとの組から、順次周波数成分を表す係数を生成して出力することを特徴とする、請求項１又２に記載の画像処理装置。
【請求項４】
請求項３に記載の画像処理装置は、前記符号語の符号語長並びに当該符号語に対応する付加ビット長及びシンボルデータを示す符号表を取得する手段を更に備え、
前記解読手段は、
符号化データの先頭からのビット列を頭出しデータとして取得し、その後は指定ビットの入力を受けて前記符号化データの指定ビットから始まるビット列を頭出しデータとして取得し、当該頭出しデータの先頭に位置する符号語を前記符号表に従って解読して、当該符号語の符号語長並びに当該符号語に対応する付加ビット長及びシンボルデータを出力し、当該符号語が途中で打ち切られていて解読できない場合にはＥＯＢ符号を示すシンボルデータを出力することで当該符号語を無視するシフト手段と、
前記符号語長と前記付加ビット長とを順に積算して積算値を取得し、当該積算値が固定長以下の場合には当該符号語長と当該付加ビット長との組は打ち切りによって欠落していないと判断して、先頭から（積算値＋１）ビット目を前記指定ビットとして前記シフト手段に入力し、当該積算値が固定長を超える場合には当該符号語長と当該付加ビット長の組が打ち切りによって欠落していると判断して、補正手段に処理を開始させる制御手段と、
を備えることを特徴とする、請求項３に記載の画像処理装置。
【請求項５】
前記補正手段は、前記符号化データに組となる付加ビットが存在しない符号語を検出した場合、及び前記符号語長を積算した時点で積算値が固定長を超える場合にＥＯＢ符号を示すシンボルデータを出力して当該符号語を無視することを特徴とする、請求項４に記載の画像処理装置。
【請求項６】
前記補正手段は、前記積算値と前記固定長との差を欠落ビット数として取得することを特徴とする、請求項４又は５に記載の画像処理装置。
【請求項７】
画像を符号化する際に符号語と周波数成分を表す付加ビットとの組から構成されるデータの末端を打ち切って固定長化した符号化データから、画像を復号するための手段を備える装置が行う方法であって、
前記符号化データから、中途で打ち切られている付加ビットの断片を取得する解読工程と、
前記付加ビットの断片から打ち切りにより欠落しているビット数を欠落ビット数として取得し、欠落ビットを再生して付加ビットを復元する補正工程と、
を備えることを特徴とする、画像処理方法。
【請求項８】
前記補正工程は、打ち切りにより欠落している付加ビットの断片の最上位ビットであるＭＳＢが”１”値の場合には当該付加ビットの断片の末尾に欠落ビット数分の”０”値を追加し、当該ＭＳＢが”０”値の場合には当該付加ビットの断片の末尾に欠落ビット数分の”１”値を追加することで、付加ビットを再生して出力することを特徴とする、請求項７に記載の画像処理方法。
【請求項９】
コンピュータを、請求項１乃至６の何れか１項に記載の画像処理装置が有する各手段として機能させるためのコンピュータプログラム。
【請求項１０】
請求項９に記載のコンピュータプログラムを格納した、コンピュータが読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、固定長化された直交変換符号データの復号技術に関する。
【背景技術】
【０００２】
近年、画像処理では高画質化のために高解像度化や多ビット化が求められている。画像の持つ情報量が多くなることで画質は向上するが、画像の情報量が多いことにより、記憶容量やデータ転送時間等が増えてしまうことになる。このような場合には通常、記憶容量削減のために画像を符号化する方法が適用される。
【０００３】
その方法のひとつにＪＰＥＧ符号化方式に代表される直交変換を用いた圧縮があり、一般に自然画像の様に隣接画素間で相関が強く低周波領域に大きな変換係数の発生する画像に対しては、符号化効率が高く、歪みも少なくて済むことが知られている。
【０００４】
また、画像処理装置では、限られた容量のメモリ上で画像データを回転して印字する等の処理を高速に行うという必要がある。そこで、直交変換符号化によって圧縮された符号データの状態で、全体を復号化することなく、任意の部分の画像を得ることが容易である符号化が要求される。即ち、所定画素単位（ブロック）における符号量の固定長化、及び復号独立性（固定長化されたデータのみで復号可能な性質）である。以下では、上記所定画素単位（ブロック）における符号量を固定長化することを単に固定長化と呼び、上記所定画素単位（ブロック）における符号量を固定長と呼ぶ。
【０００５】
固定長化において、符号化データが固定長に収まらない場合は、上記符号化データを欠落させることで固定長に収まるように調整する（以下、打ち切り処理と呼ぶ）。例えば、図示しない画像データをＪＰＥＧ符号化方式で符号化したものである図２のデータを固定長化する時は、図３に示すように符号化データのＬＳＢ側のデータを欠落させ、固定長に収まるように調整する。ＬＳＢ側のデータを欠落させている理由は、ＬＳＢ側に行くに従ってより高周波な成分情報となり、ＤＣ係数データや低周波のＡＣ係数データに比べ、高周波のＡＣ係数データの方が欠落による画質への影響が少ないと考えられるからである。なお、ＪＰＥＧにおいては、０係数のラン長と係数のレンジ（付加ビットのビット数）を示すグループ番号を２次元ハフマン符号化した符号語と係数値を表す付加ビットに分けて符号化している。
【０００６】
打ち切り処理された符号化データを復号化する場合、従来技術においては、打ち切り処理によってビットが欠落した符号語と付加ビットとの組は、ＥＯＢを示す符号語として復号化する。例えば、図２に示す符号データを復号化する場合、ビットが欠落した付加ビットとそれに対応する符号語は、図１２に示すようにＥＯＢを示す符号語に置換して復号化する。このように上記従来技術では、画質劣化の影響が少ない高周波のＡＣ係数データを打ち切り処理しているが、それでも打ち切り処理の影響で画質劣化は生じてしまう。特にエッジ等の高周波成分を多く含む画像では画質劣化が顕著に表れてしまう。上記問題の対策として、例えば特許文献１には、復号画像に対してエッジ検出を行ない、エッジが検出された場合には所定の画像処理を施して画質の改善を図る方法が提案されている。また、特許文献２には、ブロック符号量が予め設定された符号量を越えると、ハフマン符号化処理を強制的に打ち切るとともに、ブロックの符号データの最後にＥＯＢｔを入れる提案がなされている。特許文献２の方法では、復号化時には符号化処理時に付加した打ち切りを示す符号語ＥＯＢｔを検知し、検知されたブロック画像に対してエッジの鈍りを回復するための補償処理を施す。
【特許文献１】特開平５−２２７４３１号公報
【特許文献２】特開２０００−１６５８７７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、特許文献１に開示されている画質の改善方法では、打ち切り処理により画質劣化した復号画像からエッジを抽出するため、エッジ検出の精度そのものがよくない。そのため、かえって打ち切り処理の影響によるエッジ付近でのモスキートノイズやブロック歪が目立ってしまう場合があった。
【０００８】
また、特許文献２に開示されている方法では、符号化が打ち切られたことを示すハフマン符号（ＥＯＢｔ）を符号化データに付加する必要がある。このため、打ち切りを行う符号量は打ち切り符号語ＥＯＢｔ分を差し引いて行わなければならない。さらに、エッジの鈍りを回復する処理に必要な情報を付加するためには、さらに打ち切りを行う符号量は少なくなってしまい、打ち切り処理の影響によるエッジ付近でのモスキートノイズやブロック歪を効果的に軽減することができないという欠点があった。また、打ち切り符号語やエッジ回復処理に必要な情報を付加するため、打ち切り処理が複雑になる（エッジ回復処理に必要な情報の符号量が確定しないと打ち切りを行う符号量が確定しない）という欠点があった。
【０００９】
本発明は、打ち切り処理された付加ビットを有効利用して復号化を行うことにより、復号化後の画像において、打ち切りの影響によるノイズを軽減することを目的とする。
【課題を解決するための手段】
【００１０】
本発明の目的を達成するために、例えば、本発明に係る画像処理装置は、以下の構成を備える。
【００１１】
すなわち、
画像を符号化する際に符号語と周波数成分を表す付加ビットとの組から構成されるデータの末端を打ち切って固定長化した符号化データから、画像を復号する装置であって、
前記符号化データから、中途で打ち切られている付加ビットの断片を取得する解読手段と、
前記付加ビットの断片から打ち切りにより欠落しているビット数を欠落ビット数として取得し、欠落ビットを再生して付加ビットを復元する補正手段と、
を備えることを特徴とする。
【００１２】
本発明の目的を達成するために、例えば、本発明の画像処理方法は以下の構成を備える。
【００１３】
すなわち、
画像を符号化する際に符号語と周波数成分を表す付加ビットとの組から構成されるデータの末端を打ち切って固定長化した符号化データから、画像を復号するための手段を備える装置が行う方法であって、
前記符号化データから、中途で打ち切られている付加ビットの断片を取得する解読工程と、
前記付加ビットの断片から打ち切りにより欠落しているビット数を欠落ビット数として取得し、欠落ビットを再生して付加ビットを復元する補正工程と、
を備えることを特徴とする。
【発明の効果】
【００１４】
本発明によれば、打ち切り処理された付加ビットを有効利用して復号化を行うことにより、復号化後の画像において、打ち切りの影響によるノイズを軽減することができる。
【発明を実施するための最良の形態】
【００１５】
以下、本発明に係る実施形態の例を、図面を参照して詳細に述べる。ただし、発明の範囲は本形態に限定されるものではない。
【００１６】
＜第１の実施形態＞
図１は、実施形態における復号化装置のブロック構成図である。なお、符号化装置においては、所定の符号量にて打ち切るだけであるので、説明は省略する。
【００１７】
１０１はシフト部であり、図示しないバイト動作回路より符号語と周波数成分を表す付加ビットとの組から構成されるデータの末端を打ち切って固定長化した符号化データを取得する。そして、取得した符号化データの先頭からのビット列を頭出しデータとして出力し、その後は制御部１０４より出力されるシフト量を用いて次の符号語の頭出しを行い、頭出しデータとして出力する。バイト動作回路は、バイト単位で符号化データの切り出しが可能な回路から構成されており、固定長の符号化データを、シフト部１０１へバイト単位で入力する。例えば、図４に示す符号化データ（”０１００１０００１０１１１０・・・”）を先頭から１バイト（８ビット）単位に随時切り出し、供給する（例えば、最初に切り出す１バイトは”０１００１０００”、すなわち”０ｘ４８”）。なお、本実施例においては、バイト動作回路がシフト部１０１に入力する符号化データには、ヘッダ部分とマーカコード部分は含まないものとする。すなわち、バイト動作回路又はバイト動作回路に符号化データを入力する非図示の入力部は、取得したデータに含まれるヘッダ部分とマーカコード部分を抜き取って符号化データを供給する。
【００１８】
シフト部１０１は、バイト動作回路からバイト単位で取得した符号化データが、係数を抽出できる量になった時に、頭出しデータを出力する。具体的には、符号表で示される最大の符号語長と最大の付加ビット長との和（以下、最大有効ビット長と呼ぶ）と、シフト部１０１が取得し保持している符号化データの指定ビット以降のビット数とを比較する。そして、指定ビット以降のビット数が最大有効ビット長よりも大きくなった時に、指定ビット以降の符号化データを頭出しデータとして出力する。本実施例では、図５及び図６の符号表に示されるように、最大符号語長は１６ビットで最大付加ビット長は９ビットであるので、最大有効ビット長は１６ビット＋９ビット＝２５ビットである。このため、シフト部１０１が取得した符号化データの指定ビット以降に２５ビット以上のビット列が貯まった時に、シフト部１０１は頭出しデータを出力する。この比較を行うのは、最大有効ビット長未満のビット列からは符号語と付加データとを完全に抽出できない可能性があるため、最大有効ビット長以上のビット列を出力して以降の抽出を行う必要があるためである。ただし、最終符号化データ指示が”ＯＮ”の場合は、指定ビット以降のビット列が最大有効ビット長未満である場合でも、頭出しデータを出力する。バイト動作回路は、シフト部１０１への固定長の符号化データの入力を完了すると、最終符号化データ指示を「ＯＮ」にする。すなわち、符号化データの末端近辺においては、最大有効ビット長未満の長さの頭出しデータを出力することがあり得る。これは、たとえすべての符号化データを取得したとしても指定ビット以降のビット列が最大有効ビット長に達しない場合があるため、シフト部１０１が取得した符号化データを出力できずに符号化データの末端が復号化されなくなることを防ぐためである。この時、デコード部１０２での誤動作を防止するため、シフト部１０１は、最大有効ビット長に達しない部分のビットに１を詰めて出力する。ここで、１を詰めて出力するのは、ＪＰＥＧにおいては１が１６個以上連続する符号は存在しないため、不足部分に１をパッキングしておけば、打ち切った符号語が正しい符号語として復号されることはないからである。但し、後述するように符号長を累積した結果が固定長を超える場合にＥＯＢを出力する場合、あるいは、固定長から１つ前の符号長の累積値を引いた値までのビット数で符号語を検出する場合、不足部分にパッキングする値は何でも良い。
【００１９】
１０２はデコード部で、シフト部１０１が出力する頭出しデータと、符号表（図５参照）における各符号語（ハフマン符号）とを比較することにより、頭出しデータの先頭に含まれる符号語を検出する。そして、その符号語長及び上記符号語に対応するアドレスを解読して求める。符号語を検出できるということは、その符号語は固定長化において中途で打ち切られていないということである。符号表は予め記憶しておいても良いし、外部から取得しても良い。頭出しデータの先頭に符号語を検出できない場合は、符号語は固定長化において中途で打ち切られていると判断し、ＥＯＢを示すアドレス”０”（図５参照）を出力することで、中途で打ち切られた符号語を無視する。また、符号語が検出された場合でも、ブロックの符号量が固定長を上まわってしまう場合は、中途で打ち切られていると判断し、ＥＯＢを示すアドレス”０”（図５参照）を出力する。
【００２０】
１０３はシンボルメモリ部で、デコード部１０２から取得したアドレスに対応するシンボルデータ及び付加ビット長を出力する（図６参照）。シンボルデータ及び付加ビット長は、シンボルメモリ部１０３が予めアドレスごとに格納していても良い。また、アドレスに対応するシンボルデータ及び付加ビット長を示す符号表を外部から取得しても良い。いずれにしろ、頭出しされた符号化データから符号語長、付加ビット長を生成し、２次元ハフマン符号（シンボルデータ）、付加ビットを分離して出力できれば良い。
【００２１】
１０４は制御部であり、カウンタ９０１及び制御信号生成部９０２を備える。以下、図９を用いて制御部１０４の詳細な動作を説明する。
【００２２】
９０１はカウンタであり、デコード部１０２及びシンボルメモリ部１０３から取得した符号語長と付加ビット長とを同一のカウンタにて積算し、積算値を出力する。なお、１ブロックの復号化が終了すると、リセット信号が入力され、積算値は”０”に初期化される。
【００２３】
９０２は制御信号生成部であり、固定長（例えば図４に示す符号データ列の場合、５１２ビット）と、カウンタ９０１が出力した積算値とを比較する。ここで、固定長は、予めＣＰＵ等により設定されているものとする。積算値が固定長以下の場合は、シフト部１０１で頭出しした符号語と付加ビットとの組は打ち切りにより欠落していないと判断し、次の符号語を頭出しするようにシフト部１０１に指示する。具体的には、シフト部１０１が蓄えている符号化データの先頭から（積算値＋１）ビット目を指定ビットとしてシフト部１０１に入力する。
【００２４】
逆に、積算値が固定長を超える場合は、シフト部１０１で頭出しした符号語と付加ビットとの組が打ち切りにより欠落していると判断し、次の処理を行う。まず、積算値と固定長の差を、欠落ビット数として求める。また、符号化データに含まれる、打ち切りにより欠落している符号語と付加ビットとの組の断片である末端データを補正する処理を開始させる信号を送る。具体的には、欠落ビット数が付加ビット長と等しい、又は欠落ビット数が付加ビット長より大きい場合、すなわち末端データに符号語と組になる付加ビットの断片が１ビットも存在しない場合には、選択部にＥＯＢ選択信号を送る。欠落ビット数が付加ビット長より大きい場合とは、符号語長を積算した時点で積算値が固定長を超える場合に相当する。選択部にＥＯＢ選択信号を送ることで、末端データをＥＯＢ符号に変換させる。また、欠落ビット数が付加ビット長よりも小さい場合、すなわち末端データに付加ビットの断片が１ビット以上存在する場合には、その末端データの付加ビットは中途で打ち切られている。すなわちこの末端データは復号対象データであり、復元部に復元信号を送り、末端データを補う処理を行わせる。
【００２５】
図１１に上記条件に対応する符号化データ例を示す。図１１（Ａ）は積算値が固定長以下である場合の符号化データ例を表し、復号対象となる符号語と付加ビットとの組が固定長内に位置している状態を表す。図１１（Ｂ）は復号対象となる符号語と付加ビットとの組のうち符号語が打ち切り処理されている状態を表す。図１１（Ｃ）は復号対象となる符号語と付加ビットとの組のうちすべての付加ビットが打ち切り処理されている状態を表す。図１１（Ｄ）は復号対象となる符号語と付加ビットとの組のうち、付加ビットが打ち切り対象で、少なくとも付加ビットのうち１ビットは打ち切りされずに存在している状態を表している。図１１（Ｂ）及び図１１（Ｃ）は付加ビットを再生することができないので、制御信号生成部９０２はＥＯＢ選択信号を”ＯＮ”として出力する。図１１（Ｄ）は、少なくとも付加ビットのうち１ビットは打ち切りされずに存在しているので、付加ビットを再生することができると判断し、制御信号生成部９０２は復元信号を”ＯＮ”として出力する。
【００２６】
１０５は選択部であり、上記制御信号生成部９０２が出力したＥＯＢ選択信号が”ＯＮ”の場合は、シンボルメモリ部１０３から取得したシンボルデータをＥＯＢを示すシンボルデータに変換して出力する。一方、上記ＥＯＢ選択信号が”ＯＮ”ではない場合は、シンボルメモリ部１０３から取得したシンボルデータをそのまま出力する。すなわち選択部１０５は、末端データに付加ビットの断片が１ビットも存在しない場合に、ＥＯＢ符号を示すシンボルデータを出力し、末端データの符号語を無視する。
【００２７】
１０６は復元部であり、シフト部１０１から取得した頭出しデータを、制御信号生成部９０２の指示に応じて補正し、頭出しデータに含まれる付加ビットを出力する。このために復元部１０６は、制御信号生成部９０２から取得した復元信号及び欠落ビット数と、デコード部１０２から取得した符号語長と、シンボルメモリ部１０３から取得した付加ビット長とを用いて処理を行う。
【００２８】
復元部１０６は制御信号生成部９０２から取得した復元信号を参照し、復元信号が”ＯＮ”ではない場合、シフト部１０１から取得した頭出しデータから、符号語長と付加ビット長とを参照して付加ビットを求め、出力する。頭出しデータの、（符号語長＋１）ビットから（符号語長＋付加ビット長）ビットまでのビットを、付加ビットとして出力すれば良い。
【００２９】
一方、復元信号が”ＯＮ”の場合、すなわち取得した頭出しデータが末端データであって、付加ビットの断片が１ビット以上存在する場合は、以下の処理を行う。この処理により、中途で打ち切られている付加ビットの断片を取得し、末端データの末尾に存在する付加ビットの断片にビットを追加して、新たな付加ビットを生成して出力する。
【００３０】
付加ビットを生成する方法としては、まず、末端データである頭出しデータと符号語長とから、末端データの付加ビットの断片の最上位ビットであるＭＳＢを取得する。具体的には、末端データの（符号語長＋１）ビット目をＭＳＢとすれば良い。続いて、ＭＳＢを参照して、ＭＳＢが”１”値ではない（ＭＳＢが”０”値）場合、つまり付加ビットが負の係数を示す場合、末端データの末尾に欠落ビット数分の”１”値を追加する。一方、ＭＳＢが”１”値の場合、つまり、付加データの示す係数が正である場合、末端データ末尾に欠落ビット数分の”０”値を追加する。最後に、末端データから、符号語長を参照して付加データを求め、係数生成部１０７へ出力する。ビットの追加を行った末端データの、（符号語長＋１）ビットから末尾までを、付加データとして出力すれば良い。
【００３１】
次に、図１０を参照して復元部１０６の動作例を示す。この動作例では、復元部１０６が図１０（Ａ）に示す末端データを取得したとする。この時、デコード部１０２から取得した符号語長が”３”であり、シンボルメモリ部１０３から取得した付加ビット長が”３”であるとする。この場合、制御信号生成部９０２は、欠落ビット数”２”、復元信号”ＯＮ”を復元部１０６に入力する。復元部１０６は、図１０（Ｂ）に示されるように、ＭＳＢが”１”値であると判断し、図１０（Ｃ）で示されるように末端データの末尾に２個の”０”値を追加する。付加ビットに欠落した２ビットを補う場合、”１００”、”１０１”、”１１０”、”１１１”の４種類が考えられる。このうち、最も画質に影響の少ない付加ビットは（０に近い）”１００”であり、復元部１０６はこれを補正後の末端データとして出力する。
【００３２】
１０７は係数生成部であり、選択部１０５が順次出力するシンボルデータと、復元部１０６が順次出力する付加ビットとの組を順次取得し、順次周波数成分を表す係数を生成する。具体的には、シンボルデータが示すラン長を参照して、ラン長の数のデータビット”０”を出力し、次に付加ビットを出力する。この処理を繰り返すことで、係数を生成し出力する。
【００３３】
係数生成部１０７が出力した係数から、図示しない出力部は画像を復号し、表示する。例えばＪＰＥＧ方式のデータを復号する場合、出力部は逆量子化部、逆ＤＣＴ部、表示部を備える。上記逆量子化前の係数は図示しない逆量子化部が取得し、図示しない量子化テーブルを基に逆量子化を行う。そして、上記逆量子化部が逆量子化したデータを、図示しない逆ＤＣＴ部が逆２次元離散コサイン変換し、図示しない表示部が復号した画像を表示する。
【００３４】
続いて、図７に示すフローチャートに従って、本実施形態に係る装置の処理を説明する。
【００３５】
ステップＳ７０１において、シフト部１０１は非図示のバイト動作回路から符号化データを１バイトずつ取得する。ステップＳ７０２でシフト部１０１は、シフト部１０１が蓄えた符号化データのうち、指定ビットから末尾ビットまでの長さが最大有効ビット以上であるかどうかを判断する。最大有効ビット以上である場合は、ステップＳ７０４に進む。最大有効ビット未満である場合は、ステップＳ７０３に進む。ステップＳ７０３でシフト部１０１は、最終符号化データ指示がＯＮであるかどうかを判断し、ＯＮである場合はステップＳ７０４に進む。ＯＮではない場合は、ステップＳ７０１に戻り、再び符号化データを取得する。
【００３６】
ステップＳ７０４でシフト部１０１は、蓄えている符号化データのうち、指定ビット以降を頭出しデータとして出力する。ステップＳ７０５でデコード部１０２は、ステップＳ７０４でシフト部１０１が出力した頭出しデータを取得し、符号表を用いて頭出しデータの先頭に存在する符号語を検索する。符号語を検出できた場合は、ステップＳ７０６でデコード部１０２はその符号語のアドレス及び符号語長を取得して出力する。符号語を検出できなかった場合は、ステップＳ７０７で、デコード部１０２はＥＯＢ符号を示すアドレスを出力し、更に符号語長として”０”を出力する。
【００３７】
ステップＳ７０８で、シンボルメモリ部１０３は、ステップＳ７０６又はステップＳ７０７でデコード部１０２が出力したアドレスから、符号表を用いてシンボルデータと付加データ長とを取得し、出力する。ステップＳ７０９では、カウンタ９０１が、ステップＳ７０６又はＳ７０７でデコード部１０２が出力した符号語長と、ステップＳ７０８でシンボルメモリ部１０３が出力した付加ビット長とを、積算する。ステップＳ７１０で、制御信号生成部９０２は、ステップＳ７０９でカウンタ９０１が得た積算値と、固定長とを比較する。積算値が固定長以下の場合にはステップＳ７１１へと進み、積算値が固定長を超える場合はステップＳ７１３へと進む。
【００３８】
ステップＳ７１１で制御信号生成部９０２は、先頭から（積算値＋１）ビット目を指定ビットとして、シフト部１０１に指示する。続けてステップＳ７１２で、復元部１０６は、シフト部１０１から頭出しデータを取得し、ステップＳ７１７に進む。
【００３９】
ステップＳ７１３で、制御信号生成部９０２は、積算値と固定長との差を、欠落ビット数として求める。また、ステップＳ７１４で制御信号生成部９０２は、（固定長＋１）ビット目を指定ビットとして、シフト部１０１に指示する。これは、データを末端まで読み終わった時には、頭出しデータの取得を停止させるための処理である。ステップＳ７１５で制御信号生成部９０２は、ステップＳ７１３で求めた欠落ビット数と、ステップＳ７０８でシンボルメモリ部１０３が出力した付加ビット長とを比較する。欠落ビット数が付加ビット長と等しい、又は欠落ビット数が付加ビット長より大きい場合は、頭出しデータ中に付加ビットは１ビットも存在しないと判断し、ステップＳ７１６に進む。欠落ビット数が付加ビット長より小さい場合は、頭出しデータ中に付加ビットの断片が存在すると判断し、復元信号を”ＯＮ”としてステップＳ７１７に進む。ステップＳ７１６では、制御信号生成部は、ＥＯＢ選択信号を”ＯＮ”として、選択部１０５に通知して、ステップＳ７１８に進む。ステップＳ７１７で復元部１０６は、復元信号が”ＯＮ”であることを認識し、頭出しデータ中の付加ビットの断片に打ち切られた付加ビットを補う処理を行う。そして付加ビットを補った頭出しデータを取得し、ステップＳ７１８に進む。付加ビットを補う処理の手順については、後に詳しく述べる。
【００４０】
ステップＳ７１８で復元部１０６は、ステップＳ７１２又はステップＳ７１７で取得した頭出しデータから、デコード部１０２から得た符号語長とシンボルメモリ部１０３から得た付加ビット長を用い、付加ビットを取得する。ステップＳ７１９で選択部１０５は、ステップＳ７１６で制御信号生成部９０２がＥＯＢ選択信号を通知しているかどうかを判断する。ＥＯＢ選択信号を通知していない場合は、選択部１０５はステップＳ７２０で、シンボルメモリ部１０３からシンボルデータを取得して、そのまま出力する。ＥＯＢ選択信号を通知している場合は、選択部１０５はステップＳ７２１で、ＥＯＢ符号を示すシンボルデータを出力する。ステップＳ７２２で係数生成部１０７は、選択部１０５が出力するシンボルデータがＥＯＢ符号を示すシンボルデータであるか否かを判断する。ＥＯＢ符号を示すシンボルデータではない場合は、ステップＳ７２３に進む。ＥＯＢ符号を示すシンボルデータである場合は、ステップＳ７２４に進む。
【００４１】
ステップＳ７２３で、係数生成部１０７は、選択部１０５が出力するシンボルデータと、復元部１０６が出力する付加ビットとから、係数を求め、蓄える。そしてステップＳ７０１に戻り、符号化データの読み込みを続ける。
【００４２】
ステップＳ７２４で、非図示の出力部は、係数生成部１０７が蓄えている係数から、画像を復号し、出力する。以上の処理により、本実施形態の目的が達成される。
【００４３】
続いて、ステップＳ７１７の付加ビットを補う処理について、図８のフローチャートを用いて復元部１０６の動作を説明する。
【００４４】
まず、末端データである頭出しデータと符号語長とから、末端データの付加ビットの断片の最上位ビットであるＭＳＢを取得する（ステップＳ８０１）。具体的には、末端データの（符号語長＋１）ビット目をＭＳＢとすれば良い。続いて、ステップＳ８０１で取得したＭＳＢを参照する（ステップＳ８０２）。ＭＳＢが”１”値ではない（ＭＳＢが”０”値）場合、つまり付加ビットが負の係数を示す場合、末端データの末尾に欠落ビット数分の”１”値を追加する（ステップＳ８０３）。一方、ステップＳ８０２で参照したＭＳＢが”１”値の場合、つまり、付加データの示す係数が正である場合、末端データ末尾に欠落ビット数分の”０”値を追加する（ステップＳ８０４）。最後に、ステップＳ８０３又はステップＳ８０４でビットの追加を行った末端データを出力する（ステップＳ８０５）。
【００４５】
以上説明したように、本発明によれば、固定長化における打ち切り処理によってビットが欠落した付加ビットを復元する。よって、固定長化において打ち切りが発生した符号化データを復号しても、打ち切りの影響によるエッジ部のモスキートノイズやブロック歪を軽減して画像を出力することができる。特に、ビットが欠落した付加ビットは最も“０”値に近い係数（想定される係数の中で負号が一致し、絶対値が最も小さい係数）に復元される。このため、画像の高周波成分が強調されてモスキートノイズを増加させたり、不自然なエッジを生成したりすることなく打ち切りの影響による画質劣化を最小化できる。
【００４６】
上述したように、本実施形態では、途中で打ち切られた付加データを補って、符号化データからシンボルデータと付加ビットとを取得し、係数を取得して画像を復号する。しかし、本実施形態に係る構成はこれに限らない。例えば、固定長を超えるビットに”０”値又は”１”値を最大有効ビット長まで連結した符号化データを用いて復号化処理を行い、付加ビットの断片のＭＳＢよりいずれか一方の付加ビットを選択する構成としても良い。あるいは、適当な複数のビット列を用いて打ち切られた付加ビットを再生し、復号化後の画像からモスキートノイズやブロック歪が最も少なくなるものを選択する構成としても良い。
【００４７】
＜第２の実施形態＞
第１の実施形態では、図１に示した各装置を構成する各部はハードウェアで実装しているものとしているが、ソフトウェアで実装しても良い。この場合、係るソフトウェアは、コンピュータが有する各種記憶装置内に保持されており、ＣＰＵがこのソフトウェアを実行することで、コンピュータは、図１に示した各部の機能を実現することになる。
【００４８】
図１３は、本実施形態適用可能なコンピュータのハードウェア構成を示すブロック図である。コンピュータ１３０１は、一般に普及しているパーソナルコンピュータ等の汎用の情報処理装置である。コンピュータ１３０１の内部では、バス１３０７により後述する各ブロックが接続され、種々のデータの受け渡しが可能である。
【００４９】
なお、本コンピュータ１３０１を適用する装置によっては、図１３に示した全ての構成要素は必須なものではないので、適宜省略しても良い。また、同種の機能を有するハードウェアで置換しても良いし、複数のコンピュータ機体によってコンピュータ１３０１が構成されていても良い。
【００５０】
図１３において１３０２はＣＰＵで、主記憶装置１３０３にロードされているプログラムやデータを用いて本コンピュータ１３０１全体の制御を行うと共に、本コンピュータ１３０１を適用した画像処理装置が行う上述の各処理を実行する。
【００５１】
１３０３はＲＡＭに代表される主記憶装置である。主記憶装置１３０３は、各種記憶装置から読み込んだプログラムやデータを一時的に記憶する為のエリアを有する。記憶装置には、ＨＤＤ（ハードディスクドライブ）１３０４、ＣＤドライブ１３０９、ＤＶＤドライブ１３１０、ＦＤＤ（フロッピー（登録商標）ディスクドライブ）１３１１等を含む。更に主記憶装置１３０３は、スキャナ１３１７から、Ｉ／Ｆ（インターフェース）１３１５を介して取得した画像のデータを一時的に記憶するためのエリアも有する。更に主記憶装置１３０３は、ＣＰＵ１３０２が各種の処理を実行する際に用いるワークエリアも有する。以上を含め、主記憶装置１３０３は、各種の情報記録場所を適宜提供することができる。
【００５２】
１３０４はＨＤＤで、ここにはＯＳ（オペレーティングシステム）や、各種の画像（文書画像を含む）を保持している。更にＨＤＤ１３０４には、図１３が示す各部の機能をＣＰＵ１３０２に制御させるための、あるいは本コンピュータ１３０１を適用した画像処理装置３０が行う上述の各処理をＣＰＵ１３０２に実行させるためのプログラムやデータも保存されている。ＨＤＤ１３０４が保持しているプログラムやデータは、ＣＰＵ１３０２による制御に従って主記憶装置１３０３に適宜ロードされ、ＣＰＵ１３０２による処理対象となる。なお、主記憶装置１３０３に記憶するものとして説明した情報の幾つかについてはＨＤＤ１３０４に保存するようにしても良い。
【００５３】
１３０５はビデオコントローラで、主記憶装置１３０３やＨＤＤ１３０４等から受けた画像データや文字データといった表示データを信号としてモニタ１３０６に送出するものである。モニタ１３０６はＣＲＴや液晶画面等により構成されており、ビデオコントローラ１３０５から受けた信号に基づいた画像や文字等を表示する。
【００５４】
１３０８は、本コンピュータ１３０１にプリンタ１３１６を接続するためのＩ／Ｆである。本コンピュータ１３０１はこのＩ／Ｆ１３０８を介してプリンタ１３１６に対して印刷データを送信し、プリンタ１３１６が送信するプリンタ１３１６の状態情報を受信できる。
【００５５】
１３０９はＣＤドライブで、記憶媒体としてのＣＤに記録されているプログラムやデータを読み出し、読み出したプログラムやデータをＨＤＤ１３０４や主記憶装置１３０３等に送出する。
【００５６】
１３１０はＤＶＤドライブで、記憶媒体としてのＤＶＤに記録されているプログラムやデータを読み出し、読み出したプログラムやデータをＨＤＤ１３０４や主記憶装置１３０３等に送出する。
【００５７】
１３１１はＦＤＤで、記憶媒体としてのフロッピー（登録商標）ディスクに記録されているプログラムやデータを読み出し、読み出したプログラムやデータをＨＤＤ１３０４や主記憶装置１３０３等に送出する。
【００５８】
１３１３、１３１４はそれぞれ、操作入力装置としてのマウス、キーボードである。本コンピュータ１３０１のユーザは、このマウス１３１３やキーボード１３１４を操作することで、各種の指示をＣＰＵ１３０２に対して入力することができる。
【００５９】
１３１２は、キーボード１３１４、マウス１３１３をバスに接続するためのＩ／Ｆである。マウス１３１３やキーボード１３１４からユーザが入力した操作指示は信号としてＩ／Ｆ１３１２を介してＣＰＵ１３０２に送出される。
【００６０】
１３１５は、原稿やフィルム等を読み取ることで画像データを生成するスキャナ１３１７を本コンピュータ１３０１に接続するためのものである。スキャナ１３１７が生成した画像データはこのＩ／Ｆ１３１５を介してＨＤＤ１３０４や主記憶装置１３０３等に送出される。
【００６１】
１３１８は、他のコンピュータ等の電子機器との情報をやりとりするためのＩ／Ｆである。ＣＰＵ１３０２の指示によりネットワーク１３１９から取得された画像データを含む情報は、このＩ／Ｆ１３１８を介してＨＤＤ１３０４や主記憶装置１３０３等に送出される。
【００６２】
＜その他の実施形態＞
また、本発明の目的は、以下のようにすることによっても達成されることは言うまでもない。即ち、前述した実施形態の機能を実現するコンピュータプログラムのコードを記録した記録媒体（又は記憶媒体）を、システムあるいは装置に供給する。そして、そのシステムあるいは装置のコンピュータ（又はＣＰＵやＭＰＵ）が記録媒体に格納されたプログラムコードを読み出し実行する。この場合、記録媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコード、及びそれを記録した記録媒体は本発明を構成することになる。
【００６３】
また、コンピュータが読み出したコンピュータプログラムのコードを実行することにより、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているオペレーティングシステム（ＯＳ）等が実際の処理の一部又は全部を行う場合がある。その処理によって前述した実施形態の機能が実現される場合も本発明に含まれることは言うまでもない。
【００６４】
更に、記録媒体から読み出されたコンピュータプログラムのコードが、コンピュータに挿入された機能拡張カードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれたとする。その後、そのプログラムコードの指示に基づき、その機能拡張カードや機能拡張ユニットに備わるＣＰＵ等が実際の処理の一部又は全部を行い、その処理によって前述した実施形態の機能が実現される場合も本発明に含まれることも言うまでもない。
【図面の簡単な説明】
【００６５】
【図１】第１の実施形態にかかる符号化装置を表すブロック図である。
【図２】固定長化を説明するための固定長化前の符号化データを示す図である。
【図３】固定長化を説明するための固定長化後の符号化データを示す図である。
【図４】図示しないバイト動作回路が出力する入力画像の一例を示す図である。
【図５】符号表の一例を表す図である。
【図６】シンボルデータと付加ビット数との対応を示す符号表を表す図である。
【図７】第１の実施形態に係る処理手順を説明するフローチャートである。
【図８】図７のステップＳ７１７の動作を詳細に説明するフローチャートである。
【図９】第１の実施形態に係る制御部１０４の構造を詳細に示す図である。
【図１０】第１の実施形態に係る復元部１０６の動作例を示す図である。
【図１１】制御信号生成部９０２の条件分岐に対応するそれぞれの符号化データを示す図である。
【図１２】従来技術に係る復号化を説明する図である。
【図１３】第２の実施形態に係るコンピュータの電気的構成を示すブロック図である。
【符号の説明】
【００６６】
１０１  シフト部
１０２  デコード部
１０３  シンボルメモリ部
１０４  制御部
１０５  選択部
１０６  復元部
１０７  係数生成部
９０１  カウンタ
９０２  制御信号生成部
【図１】
2010109492.tif 000003
【図２】
2010109492.tif 000004
【図３】
2010109492.tif 000005
【図４】
2010109492.tif 000006
【図５】
2010109492.tif 000007
【図６】
2010109492.tif 000008
【図７】
2010109492.tif 000009
【図８】
2010109492.tif 000010
【図９】
2010109492.tif 000011
【図１０】
2010109492.tif 000012
【図１１】
2010109492.tif 000013
【図１２】
2010109492.tif 000014
【図１３】
2010109492.tif 000015