説明

画像符号化処理方法、画像復号化処理方法、動画圧縮処理方法、動画伸張処理方法、画像符号化処理プログラム、画像符号化装置、画像復号化装置、画像符号化/復号化システム、拡張画像圧縮伸張処理システム

【課題】 JPEG等の画像圧縮方式を拡張する画像符号化処理方法等を提供する。
【解決手段】 JPEG等の処理における空間周波数変換を行う前の画素ブロックに対して、該画素ブロックを行列で表現して、該行列のi列における画素値の加算データsc(i)とj行における画素値の加算データsr(j)とを算出し(S22)、sc(i)およびsr(j)が各降べきの順となるnc(i)およびnr(j)を算出し(S23)、並べ換えが妥当であると考えられる所定の条件(S24,S28)が満たされるときに、行列の並べ換えを行い(S26,S30)、元の状態に並べ換えるために必要なnc(i)およびnr(j)を含むヘッダ情報Ph(n)を生成し(S32)、JPEG等の圧縮画像ファイルのヘッダに追加するようにした画像符号化処理方法等。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、静止画像や動画像を符号化して圧縮または/および復号化して伸張する画像符号化処理方法、画像復号化処理方法、動画圧縮処理方法、動画伸張処理方法、画像符号化処理プログラム、画像符号化装置、画像復号化装置、画像符号化/復号化システム、拡張画像圧縮伸張処理システムに関する。
【背景技術】
【0002】
情報処理分野においては、データを圧縮する技術が種々開発されている。データの中でも、特に、画像データに関しては、静止画像ではJPEGやJPEG2000など、動画ではMPEGやMPEG2やMPEG4など、がよく知られた圧縮技術の例として挙げられる。
【0003】
例えば、上記JPEGによる圧縮処理は、詳しくは、例えば、CCITT Recommendations T.81,"Information technology - digital compression and coding of continuous-tone still images - requirements and guidelines",ITU,1992 に記載されているが、その概略は、次のような手順で行われるものである。
【0004】
カラー画像を例に挙げると、まず、3色(例えば輝度信号Yと2つの色差信号Cb,Crと)で構成される画像を、各色毎に8×8画素ブロックにそれぞれ分割する。そして、輝度信号Yの画素ブロックと2つの色差信号Cb,Crの各画素ブロックとをそれぞれ個別に(つまり3回)DCT(Discrete Cosine Transform:離散コサイン変換)する。そして、輝度信号用の量子化テーブルと色差信号用の量子化テーブル(Cb用とCr用とで共通)とを用いてそれぞれ量子化し、さらに、輝度信号用のハフマンテーブルと色差信号用のハフマンテーブル(Cb用とCr用とで共通)とを用いてそれぞれエントロピー符号化する。
【0005】
静止画像データの圧縮に用いられるJPEG2000は、こうした従来のJPEGの問題点(例えば、可逆/非可逆圧縮/画質のスケーラビリティ、モスキートノイズ、など)を改善する優れた技術であるにも関わらず、未だに十分普及しているとはいえず、JPEGは今後も画像圧縮に用いられる技術の第1候補として存続すると考えられる。
【0006】
ところで、デジタルカメラや携帯電話に搭載されるカメラの画素数は、近年ますます増大する傾向にある。そして、携帯電話等に代表される身近な機器(常に携帯していることが多いような機器)の普及により、撮影を行う機会が増え、個人のデジタル画像の保有数についても増大する一方である。このような情報量の増加に対応するために、画像データのデータ量はより小さいことが望ましい。
【0007】
しかし、圧縮画像の符号量を減らすためには、従来のJPEGでは、量子化テーブルを粗く設定する、つまり量子化幅を大きくする、しか方法がなく、これを実行すると、上述したようなモスキートノイズなどが発生して、画質が低下することが知られている。
【0008】
圧縮率を高く設定したときにも、こうしたノイズの発生を抑制するようにする技術が、従来より提案されている。
【0009】
例えば、特開2000−308058号公報には、JPEG処理を施す前に、画像のエッジ部分の濃度差を小さくするように前処理することにより、エッジ部分に発生し易いモスキートノイズを低減するようにした技術が記載されている。
【0010】
また、特開平8-163375号公報には、画素値分布に応じて画素ブロックを複数の領域に分割し、分割した領域毎に不足する画素を補って各1つの画素ブロックのサイズにし、それぞれをJPEG変換する技術が記載されている。
【特許文献1】特開2000−308058号公報
【特許文献2】特開平8-163375号公報
【非特許文献1】CCITT Recommendations T.81,"Information technology - digital compression and coding of continuous-tone still images - requirements and guidelines",ITU,1992
【発明の開示】
【発明が解決しようとする課題】
【0011】
しかしながら、上記特開2000−308058号公報に記載された技術では、JPEG処理の前処理として行う画像のエッジ部分の処理に関する情報を、該前処理を行った装置側で記憶しておく必要があるために、圧縮画像ファイル単体では、元の画像を再現することができなかった。さらに、該前処理において画素ブロック全体の画像データを低ビット変換するために、量子化誤差が増大して、画質が劣化してしまう。
【0012】
また、上記特開平8-163375号公報に記載された技術は、単一の画素ブロックから複数の画素ブロックを生成するものであるために、従来のJPEGデコーダにより復号化処理をしようとしても、エラーとなって処理を行うことができなかった。
【0013】
このように、圧縮画像ファイル単体をJPEGデコーダにより概略復号化可能な圧縮形式であって、かつ、量子化テーブルを細かく設定しても少ない符号量で圧縮することができる圧縮形式、または、量子化テーブルを粗く設定してもモスキートノイズがほとんど発生することのない圧縮形式は、従来、存在していなかった。
【0014】
本発明は上記事情に鑑みてなされたものであり、空間周波数変換を施す符号化において符号量を小さくしおよび/またはノイズの発生を抑制することができる、および/または、該符号化が施されたデータを復号化することができる、画像符号化処理方法、画像復号化処理方法、動画圧縮処理方法、動画伸張処理方法、画像符号化処理プログラム、画像符号化装置、画像復号化装置、画像符号化/復号化システム、拡張画像圧縮伸張処理システムを提供することを目的としている。
【課題を解決するための手段】
【0015】
上記の目的を達成するために、第1の発明による画像符号化処理方法は、画素空間として記述される画像データまたは差分画像データに空間周波数変換を施す空間周波数変換ステップと、この空間周波数変換ステップにより得られた変換結果に基づいて得られるデータに該データに係る情報をヘッダ部分として付加するヘッダ情報生成ステップと、を含む基本符号化処理方法、に対して適用される画像符号化処理方法であって、上記空間周波数変換ステップを行う前の画像データまたは差分画像データに対して可逆な画素空間変換を施す空間変換ステップと、上記空間変換ステップによる画素空間変換の逆変換を実行するために必要な空間変換パラメータを上記ヘッダ部分に付加するヘッダ情報追加ステップと、を含むことを特徴とする。
【0016】
また、第2の発明による画像符号化処理方法は、上記第1の発明による画像符号化処理方法において、上記基本符号化処理方法が、上記空間周波数変換ステップにより得られた変換結果を高周波成分側の符号量よりも低周波成分側の符号量が概略小さくなるように符号化する符号化ステップをさらに含み、上記空間変換ステップにより行われる可逆な画素空間変換は、空間周波数変換後の高周波成分を抑圧する変換であることを特徴とする。
【0017】
さらに、第3の発明による画像符号化処理方法は、上記第1の発明による画像符号化処理方法において、上記基本符号化処理方法が、画像データまたは差分画像データを画素ブロックに分割する分割ステップをさらに含むとともに、上記空間周波数変換ステップは、この分割ステップにより分割された画素ブロックに空間周波数変換を施すステップであり、上記空間変換ステップは、上記空間周波数変換ステップを行う前の画素ブロックの少なくとも1つに対して可逆な画素空間変換を施すステップであることを特徴とする。
【0018】
第4の発明による画像符号化処理方法は、上記第3の発明による画像符号化処理方法において、上記空間変換ステップが、上記画素ブロックを行列Mとして表現して、この行列Mに対して、逆行列をもつ行列Aと、逆行列をもつ行列Bと、を用いて、
M→AMB
なる可逆な線形行列演算を行うことにより、可逆な空間変換を行うステップであることを特徴とする。
【0019】
第5の発明による画像符号化処理方法は、上記第4の発明による画像符号化処理方法において、上記行列Aと行列Bとの何れか一方が、行列演算を行うことにより上記行列Mの行の並べ換えを行う行列であり、他方は、行列演算を行うことにより上記行列Mの列の並べ換えを行う行列であることを特徴とする。
【0020】
第6の発明による画像符号化処理方法は、上記第5の発明による画像符号化処理方法において、上記行の並べ換えを行う行列が、行同士を交換する行列同士の行列演算として表現され、上記列の並べ換えを行う行列は、列同士を交換する行列同士の行列演算として表現されることを特徴とする。
【0021】
第7の発明による画像符号化処理方法は、上記第6の発明による画像符号化処理方法において、上記行同士を交換する行列が、ある行に他の行を加算する行列とある行に非ゼロ係数としての−1を乗算する行列とを組み合わせて行列演算を行う行列として表現され、上記列同士を交換する行列は、ある列に他の列を加算する行列とある列に非ゼロ係数としての−1を乗算する行列とを組み合わせて行列演算を行う行列として表現されることを特徴とする。
【0022】
第8の発明による画像符号化処理方法は、上記第5の発明による画像符号化処理方法において、上記行列Mの行の並べ換えが、列方向の画素値の和が行方向に降べきまたは昇べきとなるように並べ換えるものであり、上記行列Mの列の並べ換えは、行方向の画素値の和が列方向に降べきまたは昇べきとなるように並べ換えるものであることを特徴とする。
【0023】
第9の発明による画像符号化処理方法は、上記第1の発明による画像符号化処理方法において、上記空間変換ステップが、上記画像データまたは差分画像データに含まれる画素の配置を任意に変更することにより、可逆な空間変換を行うステップであることを特徴とする。
【0024】
第10の発明による画像符号化処理方法は、上記第1または第2の発明による画像符号化処理方法において、上記空間周波数変換ステップにより得られた変換結果が、上記画像データの平均値または差分画像データの平均値に比例するDC係数を含み、上記空間変換ステップにおいて行われる画素空間変換は該DC係数を不変とする変換であることを特徴とする。
【0025】
第11の発明による画像符号化処理方法は、上記第3の発明による画像符号化処理方法において、上記空間周波数変換ステップにより得られた変換結果が、上記画素ブロックの平均値に比例するDC係数を含み、上記空間変換ステップにおいて行われる画素空間変換は該DC係数を不変とする変換であることを特徴とする。
【0026】
第12の発明による画像符号化処理方法は、JPEG符号化処理に対して適用される画像符号化処理方法であって、少なくとも1つの画素ブロックに対して離散コサイン変換を実行する前に可逆な画素空間変換を施す空間変換ステップと、上記空間変換ステップによる画素空間変換の逆変換を実行するために必要な空間変換パラメータを抽出する空間変換パラメータ抽出ステップと、上記空間パラメータ抽出ステップにより抽出された空間変換パラメータをJPEGファイルのヘッダ部分に付加するヘッダ情報追加ステップと、を含むことを特徴とする。
【0027】
第13の発明による画像符号化処理方法は、上記第12の発明による画像符号化処理方法において、上記画素空間変換が、離散コサイン変換を実行することにより得られるDCT係数の内のDC係数を不変とし、かつ、該DCT係数の内の低周波側のAC係数の振幅を増大させる変換であることを特徴とする。
【0028】
第14の発明による画像符号化処理方法は、画素空間として記述される画像データまたは差分画像データを空間周波数変換し、空間周波数変換後のデータを高周波成分側の符号量よりも低周波成分側の符号量が概略小さくなるように符号化する基本符号化処理方法、に対して適用される画像符号化処理方法であって、空間周波数変換を行う前に空間周波数変換後の高周波成分を抑圧するような画素空間内の可逆な空間変換を行う空間変換ステップと、上記空間変換の逆変換を実行するために必要な情報を上記符号化後の画像データまたは符号化後の差分画像データにヘッダ情報として一体的に付加するヘッダ情報生成ステップと、を含むことを特徴とする。
【0029】
第15の発明による画像復号化処理方法は、符号化された画像データまたは差分画像データに空間周波数変換の逆変換である周波数空間変換を施す周波数空間変換ステップ、を含む基本復号化処理方法、に対して適用され、第1の発明に記載の画像符号化処理方法により符号化された画像データまたは差分画像データを復号化するための画像復号化処理方法であって、上記ヘッダ部分から少なくとも上記空間変換パラメータを読み出すヘッダ情報読出ステップと、上記ヘッダ情報読出ステップにより読み出した空間変換パラメータに基づいて上記周波数空間変換ステップを行った後の画像データまたは差分画像データに対し上記画素空間変換の逆変換を施す逆空間変換ステップと、を含むことを特徴とする。
【0030】
第16の発明による画像復号化処理方法は、上記第15の発明による画像復号化処理方法において、上記ヘッダ部分に上記空間変換パラメータが記載されているか否かを判断するヘッダ判別ステップをさらに含み、上記ヘッダ判別ステップにより上記空間変換パラメータが記載されていると判断された場合には、該空間変換パラメータに基づいて上記逆空間変換ステップを実行することにより得られる画像データまたは差分画像データを出力し、該ヘッダ判別ステップにより上記空間変換パラメータが記載されていないと判断された場合には、上記逆空間変換ステップを実行することなく得られる画像データまたは差分画像データを出力することを特徴とする。
【0031】
第17の発明による動画圧縮処理方法は、時系列的な因果関係を有する画像フレームの集合として構成される動画像データを、1つの画像フレームに係る画像データのみに基づき圧縮するフレーム内圧縮と、複数の画像フレームに係る画像データに基づき圧縮するフレーム間圧縮と、により符号化可能であり、上記フレーム内圧縮は、圧縮対象とする画像フレームを画素ブロックに分割する分割ステップと、この分割ステップにより分割された画素ブロックに空間周波数変換を施す空間周波数変換ステップと、この空間周波数変換ステップにより得られた変換結果に基づいて得られるデータに該データに係る情報をヘッダ部分として付加するヘッダ情報生成ステップと、を含む基本圧縮処理方法、に対して適用される動画圧縮処理方法であって、上記フレーム内圧縮は、さらに、上記空間周波数変換ステップを行う前の画素ブロックの少なくとも1つに対して可逆な画素空間変換を施す空間変換ステップと、上記空間変換ステップによる画素空間変換の逆変換を実行するために必要な空間変換パラメータを上記ヘッダ部分に付加するヘッダ情報追加ステップと、を含むものであることを特徴とする。
【0032】
第18の発明による動画圧縮処理方法は、上記第17の発明による動画圧縮処理方法において、上記空間変換ステップおよび上記ヘッダ情報追加ステップを実行するか否かを選択する空間変換モード選択ステップをさらに含むことを特徴とする。
【0033】
第19の発明による動画圧縮処理方法は、時系列的な因果関係を有する画像フレームの集合として構成される動画像データを、1つの画像フレームに係る画像データのみに基づき圧縮するフレーム内圧縮と、複数の画像フレームに係る画像データに基づき圧縮するフレーム間圧縮と、により符号化可能であり、上記フレーム間圧縮は、圧縮対象とする画像フレームを画素ブロックに分割する分割ステップと、この分割ステップにより分割された画素ブロックの内の少なくとも1つの画素ブロックと比較対象とする画像フレームにおいて対応する画素ブロックとの差分をとることにより差分画素ブロックを生成する差分演算ステップと、この差分演算ステップにより生成された差分画素ブロックに空間周波数変換を施す空間周波数変換ステップと、この空間周波数変換ステップにより得られた変換結果に基づいて得られるデータに該データに係る情報をヘッダ部分として付加するヘッダ情報生成ステップと、を含む基本圧縮処理方法、に対して適用される動画圧縮処理方法であって、上記フレーム間圧縮は、さらに、上記空間周波数変換ステップを行う前の差分画素ブロックの少なくとも1つに対して可逆な画素空間変換を施す空間変換ステップと、上記空間変換ステップによる画素空間変換の逆変換を実行するために必要な空間変換パラメータを上記ヘッダ部分に付加するヘッダ情報追加ステップと、を含むものであることを特徴とする。
【0034】
第20の発明による動画圧縮処理方法は、上記第19の発明による動画圧縮処理方法において、上記空間変換ステップおよび上記ヘッダ情報追加ステップを実行するか否かを選択する空間変換モード選択ステップをさらに含むことを特徴とする。
【0035】
第21の発明による動画伸張処理方法は、上記第19の発明による動画圧縮処理方法において、上記ヘッダ情報生成ステップが、符号化された複数のフレームを含むグループ毎にヘッダ部分を生成するステップであり、上記ヘッダ情報追加ステップは、上記空間変換パラメータを、対応するグループのヘッダ部分に追加するステップであることを特徴とする。
【0036】
第22の発明による動画伸張処理方法は、圧縮された動画像データに空間周波数変換の逆変換である周波数空間変換を施すことにより画素ブロックを生成する周波数空間変換ステップ、を含む基本伸張処理方法、に対して適用され、第17の発明に記載の動画圧縮処理方法により圧縮された動画像データを伸張するための動画伸張処理方法であって、上記ヘッダ部分から少なくとも上記空間変換パラメータを読み出すヘッダ情報読出ステップと、上記ヘッダ情報読出ステップにより読み出した空間変換パラメータに基づいて上記周波数空間変換ステップを行った後の画素ブロックに対し上記画素空間変換の逆変換を施す逆空間変換ステップと、を含むことを特徴とする。
【0037】
第23の発明による動画伸張処理方法は、圧縮された動画像データに空間周波数変換の逆変換である周波数空間変換を施すことにより差分画素ブロックを生成する周波数空間変換ステップ、を含む基本伸張処理方法、に対して適用され、第19の発明に記載の動画圧縮処理方法により圧縮された動画像データを伸張するための動画伸張処理方法であって、上記ヘッダ部分から少なくとも上記空間変換パラメータを読み出すヘッダ情報読出ステップと、上記ヘッダ情報読出ステップにより読み出した空間変換パラメータに基づいて上記周波数空間変換ステップを行った後の差分画素ブロックに対し上記画素空間変換の逆変換を施す逆空間変換ステップと、を含むことを特徴とする。
【0038】
第24の発明による画像復号化処理プログラムは、画素空間として記述される画像データまたは差分画像データに空間周波数変換を施す空間周波数変換ステップと、この空間周波数変換ステップにより得られた変換結果に基づいて得られるデータに該データに係る情報をヘッダ部分として付加するヘッダ情報生成ステップと、を含む処理をコンピュータに実行させるための基本符号化処理プログラム、に対して適用される画像符号化処理プログラムであって、コンピュータに、上記空間周波数変換ステップを行う前の画像データまたは差分画像データに対して可逆な画素空間変換を施す空間変換ステップと、上記空間変換ステップによる画素空間変換の逆変換を実行するために必要な空間変換パラメータを上記ヘッダ部分に付加するヘッダ情報追加ステップと、を実行させることを特徴とする。
【0039】
第25の発明による画像復号化装置は、画素空間として記述される画像データまたは差分画像データに空間周波数変換を施す空間周波数変換手段と、この空間周波数変換手段により得られた変換結果に基づいて得られるデータに該データに係る情報をヘッダ部分として付加するヘッダ情報生成手段と、を含む基本符号化装置、に対して適用される画像符号化装置であって、上記空間周波数変換を施す前の画像データまたは差分画像データに対して可逆な画素空間変換を施す空間変換手段と、上記空間変換手段による画素空間変換の逆変換を実行するために必要な空間変換パラメータを上記ヘッダ部分に付加するヘッダ情報追加手段と、を具備したことを特徴とする。
【0040】
第26の発明による画像復号化装置は、符号化された画像データまたは差分画像データに空間周波数変換の逆変換である周波数空間変換を施す周波数空間変換手段、を含む基本復号化装置、に対して適用され、第25の発明に記載の画像符号化装置により符号化された画像データまたは差分画像データを復号化するための画像復号化装置であって、上記ヘッダ部分から少なくとも上記空間変換パラメータを読み出すヘッダ情報読出手段と、上記ヘッダ情報読出手段により読み出した空間変換パラメータに基づいて上記周波数空間変換を施した後の画像データまたは差分画像データに対し上記画素空間変換の逆変換を施す逆空間変換手段と、を具備したことを特徴とする。
【0041】
第27の発明による画像符号化/復号化システムは、第25の発明に記載の画像符号化装置と、第26の発明に記載の画像復号化装置と、を具備したことを特徴とする。
【0042】
第28の発明による拡張画像圧縮伸張処理システムは、原画像データを画素ブロックに分割する分割手段と、この分割手段により分割された画素ブロックに空間周波数変換を施すことにより空間周波数係数を取得する空間周波数変換手段と、この空間周波数変換手段により取得された空間周波数係数を量子化する量子化手段と、この量子化手段により量子化された空間周波数係数をエントロピー符号化するエントロピー符号化手段と、このエントロピー符号化手段によりエントロピー符号化された結果に基づいて得られるデータに該データに係る情報をヘッダ部分として付加することにより第1の圧縮画像ファイルを生成する圧縮画像ファイル生成手段と、を有して構成される第1の画像符号化装置と、上記第1の圧縮画像ファイルからヘッダ部分を読み出すヘッダ情報読出手段と、上記第1の圧縮画像ファイルからの上記データに基づいてエントロピー復号化することにより量子化された空間周波数係数を取得するエントロピー復号化手段と、このエントロピー復号化手段により取得された量子化された空間周波数係数を逆量子化する逆量子化手段と、この逆量子化手段により逆量子化された空間周波数係数に上記空間周波数変換の逆変換である周波数空間変換を施すことにより画素ブロックを取得する周波数空間変換手段と、この画素ブロックを展開することにより原画像データを生成する展開手段と、を有して構成される第1の画像復号化装置と、を具備して構成される第1の画像圧縮伸張処理システムの、上記第1の画像符号化装置に、上記空間周波数変換手段により空間周波数変換を施す前に上記画素ブロックに対して空間変換パラメータにより特定可能な可逆な画素空間変換を施す空間変換手段と、上記空間変換パラメータを上記ヘッダ部分に付加するヘッダ情報追加手段と、を追加することにより得られる、第2の圧縮画像ファイルを生成するための第2の画像符号化装置と、上記第1の画像復号化装置に、上記空間変換パラメータを上記ヘッダ部分から追加して読み出す追加ヘッダ情報読出手段と、この追加ヘッダ情報読出手段により読み出した空間変換パラメータに基づき上記画素空間変換の逆変換を施す逆空間変換手段と、を追加することにより得られる、上記第2の圧縮画像ファイルから原画像データを取得するための第2の画像復号化装置と、を具備した拡張画像圧縮伸張処理システムであって、上記第1の画像復号化装置は、処理対象となる圧縮画像ファイルが上記第2の圧縮画像ファイルである場合には、該第2の圧縮画像ファイルのヘッダ部分に記載されている空間変換パラメータを無視することにより上記原画像データとは異なるデータを復元可能であり、上記第2の画像復号化装置は、上記追加ヘッダ情報読出手段により上記ヘッダ部分から上記空間変換パラメータを読み出すことができない場合には、上記逆空間変換手段による処理を行うことなく第1の画像復号化装置部分による処理のみを行うことにより原画像データを復元するものであることを特徴とする。
【0043】
第29の発明による拡張画像圧縮伸張処理システムは、上記第28の発明による拡張画像圧縮伸張処理システムにおいて、上記第2の画像符号化装置を有する撮像装置と、上記第1の画像復号化装置を有するコンピュータと、をさらに具備したことを特徴とする。
【0044】
第30の発明による画像符号化処理方法は、上記第1の発明による画像符号化処理方法において、上記空間変換ステップが少なくとも1つの調整パラメータにより調整され得る画素空間変換を施すステップであり、上記ヘッダ情報追加ステップは、さらに、上記調整パラメータを上記ヘッダ部分に付加するステップであることを特徴とする。
【0045】
第31の発明による画像符号化処理方法は、上記第30の発明による画像符号化処理方法において、上記基本符号化処理方法が、画像データまたは差分画像データを画素ブロックに分割する分割ステップをさらに含むとともに、上記空間周波数変換ステップは、この分割ステップにより分割された画素ブロックに空間周波数変換を施すステップであり、上記空間変換ステップは、上記空間周波数変換ステップを行う前の画素ブロックの少なくとも1つに対して、可逆な画素空間変換を施すステップであることを特徴とする。
【0046】
第32の発明による画像符号化処理方法は、上記第31の発明による画像符号化処理方法において、上記空間変換ステップが、上記画素ブロックを行列Mとして表現して、この行列Mに対して、逆行列をもつ行列Aを用いた
M→AM
なる可逆な線形行列演算と、逆行列をもつ行列Bを用いた
M→MB
なる可逆な線形行列演算と、の少なくとも一方を行うことにより、可逆な空間変換を行うステップであることを特徴とする。
【0047】
第33の発明による画像符号化処理方法は、上記第32の発明による画像符号化処理方法において、上記行列Aおよび行列Bが、上記行列Mで表現される画素ブロックに対して空間ローパスフィルタを施す行列であることを特徴とする。
【0048】
第34の発明による画像符号化処理方法は、上記第33の発明による画像符号化処理方法において、上記調整パラメータが、上記空間ローパスフィルタのフィルタ強度を調整するためのフィルタ調整パラメータを含むことを特徴とする。
【0049】
第35の発明による画像符号化処理方法は、上記第34の発明による画像符号化処理方法において、上記基本符号化処理方法が、上記空間周波数変換ステップにより得られた変換結果をある量子化幅で量子化する量子化ステップをさらに含み、上記ヘッダ情報生成ステップは、上記量子化ステップにより得られた量子化の結果に基づいて得られるデータに、該データに係る情報をヘッダ部分として付加するステップであって、上記量子化幅は、上記フィルタ調整パラメータに応じて調整されることを特徴とする。
【0050】
第36の発明による画像符号化処理方法は、上記第30の発明による画像符号化処理方法において、上記空間周波数変換ステップにより得られた変換結果が、上記画像データの平均値または差分画像データの平均値に比例するDC係数を含み、上記空間変換ステップにおいて行われる画素空間変換は該DC係数を不変とする変換であることを特徴とする。
【0051】
第37の発明による画像符号化処理方法は、上記第5の発明による画像符号化処理方法と、上記第33の発明による画像符号化処理方法と、を択一的に選択して行うことを特徴とする。
【発明の効果】
【0052】
本発明の画像符号化処理方法、画像復号化処理方法、動画圧縮処理方法、動画伸張処理方法、画像符号化処理プログラム、画像符号化装置、画像復号化装置、画像符号化/復号化システム、拡張画像圧縮伸張処理システムによれば、空間周波数変換を施す符号化において符号量を小さくしおよび/またはノイズの発生を抑制することができる、および/または、該符号化が施されたデータを復号化することができる。
【発明を実施するための最良の形態】
【0053】
本発明の実施例を具体的に説明する前に、以下の説明において用いられる用語について、その語義をより明確にしておく。
【0054】
まず、画素は、画像を構成する要素であって、画像内における空間的位置(画素位置)を示す情報と、該空間的位置における値(画素値)と、を含むものである。なお、画像は、2次元のユークリッド空間内に画素を離散的に配置して定義される画像に限るものではなく、2次元のリーマン空間内に画素を離散的に配置して定義される画像であっても構わず、より一般的には、2次元のコンパクトな多様体Kに画素を離散的に配置して定義される画像であれば良い。
【0055】
画素群は、画素の集合である。実用上は、空間的位置が隣接する画素の集合としての画素群を扱うことが多いが、これに限るものではない。この画素群は、後述するように、数学的には行列やベクトルとして表現することが可能であり、情報処理的には2次元配列や1次元配列として取り扱うことが可能である。
【0056】
画素信号、画素データ、またはピクセルデータは、上記画素値のことである。ここに、画素信号は、画素値を処理する際の実際の回路等において、電気信号として取り扱われることをニュアンスとして示している。また、画素データあるいはピクセルデータは、画素値が、コンピュータ等による情報処理において、情報として扱われることをニュアンスとして示している。
【0057】
画素空間は、2次元のコンパクトな多様体Kに画素を離散的に配置して構成される空間である。この画素空間の具体例は、画像全体が挙げられ、また、画像を分割して得られる画像の部分集合である8×8画素ブロック(これは、JPEGの符号化/復号化で処理される単位である。)も挙げられる。さらに他の例としては、MPEG、MPEG2、MPEG4、H.264などの符号化/復号化で処理される最小画素ブロック単位が挙げられる。
【0058】
画素空間変換は、画素空間Aから画素空間Bへの写像であって、離散関数fとして定義可能な変換である。実施例においては、この画素空間変換として、fの逆関数を定義可能な可逆変換を主として扱う。該画素空間変換の具体例としては、線形可逆マッピングが挙げられ、該線形可逆マッピングのさらに具体的な一例としては線形パーミュテーションが挙げられる。線形可逆マッピングや線形パーミュテーションの具体的な数学表現については、後で実施例において説明する。この画素空間変換は、実施例においては、符号化時には空間周波数変換を実行する前の処理(前処理)として、また、復号化時には周波数空間変換を実行した後の処理(後処理)として、それぞれ行われる。
【0059】
空間周波数変換は、画素空間から周波数空間への写像である。
【0060】
直交変換は、内積が定義された空間Aから、内積が定義された空間Bへの変換であって、内積値が変換の前後で保存されるものである。直交変換となっている空間周波数変換の一例としては、離散コサイン変換(DCT:Discrete Cosine Transform)が挙げられる。また、アダマール変換(Hadamard transformation)も、直交変換となっている空間周波数変換の一例であり、整数演算が可能となっている。
【0061】
パーミュテーションは、画素空間(具体例としては、画素ブロック)内における画素の置換えであり、画素空間内の関数となる。画素は、上述したように、画素値と画素位置との各情報が結合したものであり、パーミュテーションは、画素空間内における画素値と画素位置との結合関係を一旦解消して、組み合わせを換えた後に再結合したものであるといえる。例えば画素位置を主体に考えると、任意の画素位置にそれぞれ画素値が対応しているが、パーミュテーションは、ある画素位置の画素値を、他の画素位置の画素値に置き換えることである。なお、パーミュテーションの対象となる最小の画素集合単位をパーミュテーション単位(permutation unit)というが、これは一般には、画素単位そのものとなる。2つのパーミュテーション単位の交換は、基本パーミュテーション(primitive permutation)により行われる。
【0062】
その他の用語については、実施例中において説明するか、または一般的な言葉の定義を採用するものとする。
【0063】
以下、図面を参照して本発明の実施例を説明する。
【実施例1】
【0064】
図1から図27は本発明の実施例1を示したものであり、図1は拡張されたJPEG符号器の構成を示すブロック図、図28は従来のJPEG符号器の構成を示すブロック図である。
【0065】
なお、拡張されたJPEGを、以下では適宜、JPEGext、JPEGe、あるいはJEXなどと記載することがある。
【0066】
また、本実施例は、画像符号化処理方法、画像復号化処理方法、動画圧縮処理方法、動画伸張処理方法、画像符号化処理プログラム、画像符号化装置、画像復号化装置、画像符号化/復号化システム、拡張画像圧縮伸張処理システムの何れとしても適用し得るものとなっている。
【0067】
この拡張JPEG符号器は、分割手段たるブロック化部1と、符号化制御部2と、マーカ生成部3と、空間変換手段たる列操作判定部4と、空間変換手段たる行操作判定部5と、ヘッダ情報追加手段たるヘッダ生成部6と、空間周波数変換手段たる直交変換部7と、量子化手段たる量子化部8と、量子化手段たる量子化テーブル生成部9と、エントロピー符号化手段たるエントロピー符号化(entropy coding)部10と、圧縮画像ファイル生成手段でありヘッダ情報生成手段たる合成部13と、を有して構成されている。
【0068】
このように図1に示す拡張JPEG符号器は、図28に示す従来のJPEG符号器に対して、符号化制御部2と、列操作判定部4と、行操作判定部5と、ヘッダ生成部6と、を付加したものとなっている。また、図28に示す従来の合成部13は、符号化データとマーカとを合成するものであったが、この図1に示す合成部13は、後述するように、さらにJEX用のヘッダ情報も合成するものとなっている。
【0069】
上記エントロピー符号化部10は、さらに、ジグザグスキャン部11と、ハフマン符号化(Huffman coding)部12と、を含んで構成されている。
【0070】
上記ブロック化部1は、画像データを入力して、8×8画素でなるブロック単位に区分するものである。
【0071】
上記符号化制御部2は、符号化時の圧縮度に関する設定値を読み込んで、上記列操作判定部4および行操作判定部5に各必要な設定値を送信するものである。
【0072】
上記マーカ生成部3は、合成部13でファイルを合成する際に必要なマーカを生成するものである。
【0073】
上記列操作判定部4は、上記ブロック化部1から読み込んだ8×8画素ブロックの画像データに関して、列方向の画素データ並びについて、上記符号化制御部2から送信された設定値を用いながら所定の可逆な操作を行うか否かを判定し、行うと判定したときには該操作を実行するものである。
【0074】
上記行操作判定部5は、上記列操作判定部4から出力される8×8画素ブロックの画像データに関して、行方向の画素データ並びについて、上記符号化制御部2から送信された設定値を用いながら所定の可逆な操作を行うか否かを判定し、行うと判定したときには該操作を実行するものである。
【0075】
なお、ここでは列操作判定部4による操作を行ってから行操作判定部5による操作を行う順序としているが、後述するように、行に関する操作と列に関する操作は可換であるために、行操作判定部5による操作を行ってから列操作判定部4による操作を行う順序としても構わない。
【0076】
上記ヘッダ生成部6は、上記列操作判定部4の操作による画像の変化と、上記行操作判定部5の操作による画像の変化と、を後の復号化時に元の状態に復元するために必要なヘッダ情報を生成するものである。
【0077】
上記直交変換部7は、上記行操作判定部5から出力される8×8画素ブロックの画像データを、レベルシフトして0をダイナミックレンジの中心とする正負の画像データに変換した後に、DCT(離散コサイン変換)により、空間周波数変換を行うものである。なお、レベルシフトを行うことにより、画素ブロックのデータの平均値が0に近付くために、後述するDCTを行ったときに、いわゆるDC係数を小さくすることができる効果がある。そして、直交変換部7は、変換後の64個のデータを、再び8×8配列のブロックデータとして出力する。
【0078】
上記量子化部8は、直交変換部7から出力される8×8配列のブロックデータの各要素を、同様の8×8配列でなる量子化テーブルデータの各要素でそれぞれ除算し、端数を切り捨てることにより、画素毎に異なる量子化幅で量子化を行うものである。この量子化テーブル(quantization table)は、空間周波数変換された8×8ブロック内の要素をそれぞれ量子化するための8×8の量子化係数からなるテーブルである。
【0079】
上記量子化テーブル生成部9は、量子化部8で用いる量子化テーブルデータを生成するものであり、よく知られているように、DC係数や低周波のAC係数については比較的小さい値のデータを生成し、高周波のAC係数については比較的大きい値のデータを生成する。
【0080】
上記ジグザグスキャン部11は、量子化部8から出力される量子化後の8×8配列のブロックデータを、DC係数からAC係数の高周波側へ向けてジグザグにスキャンし、64個の1次元配列のデータとして読み出すものである。
【0081】
上記ハフマン符号化部12は、上記ジグザグスキャン部11によるスキャン結果に基づいて、所定のハフマン符号化テーブルを参照することにより、可変長符号化を行い、データ量の圧縮を図るものである。
【0082】
上記合成部13は、ハフマン符号化部12により符号化された画像データと、ヘッダ生成部6により生成されたヘッダ情報と、マーカ生成部3により生成されたマーカと、を1つの画像ファイル(JPEG拡張符号化された画像ファイル)として合成し出力するものである。
【0083】
次に、図2は拡張されたJPEG復号器の構成を示すブロック図、図29は従来のJPEG復号器の構成を示すブロック図である。
【0084】
この拡張JPEG復号器は、ヘッダ情報読出手段たるマーカ判定部21と、分割部22と、エントロピー復号化手段たるエントロピー復号化部23と、逆量子化手段たる逆量子化部26と、逆量子化手段たる量子化テーブル生成部27と、周波数空間変換手段たる直交逆変換部28と、追加ヘッダ情報読出手段たるヘッダ復号部29と、復号化制御部30と、逆空間変換手段たる行操作部31と、逆空間変換手段たる列操作部32と、展開手段たるブロック展開部33と、を有して構成されている。
【0085】
このように図2に示す拡張JPEG復号器は、図29に示す従来のJPEG復号器に対して、ヘッダ復号部29と、復号化制御部30と、行操作部31と、列操作部32と、を付加したものとなっている。また、図29に示す従来の分割部22は、符号化データを画素ブロックに対応する部分に分割するものであったが、この図2に示す分割部22は、後述するように、さらにJEX用のヘッダ情報をヘッダ復号部29へ出力するものとなっている。
【0086】
上記エントロピー復号化部23は、さらに、ハフマン復号化部24と、ジグザグ展開部25と、を含んで構成されている。
【0087】
上記マーカ判定部21は、JPEG拡張符号化された画像ファイルに含まれる全てのマーカの判定を行うものである。
【0088】
上記分割部22は、マーカ判定部21による判定結果に基づいて、上述した8×8画素ブロックに対応する符号化部分を抽出するものである。
【0089】
上記ハフマン復号化部24は、分割部22から出力される復号化部分を、ハフマン符号化テーブルを参照することにより、復号化するものである。
【0090】
上記ジグザグ展開部25は、ハフマン復号化部24により復号化されたデータをジグザグに展開して、8×8配列のブロックデータとするものである。
【0091】
上記逆量子化部26は、ジグザグ展開部25から出力される8×8配列のブロックデータの各要素に、同様の8×8配列でなる量子化テーブルデータの各要素をそれぞれ乗算することにより、逆量子化を行うものである。
【0092】
上記量子化テーブル生成部27は、逆量子化部26で用いる量子化テーブルデータを生成するものであり、ここで生成される量子化テーブルは、上記図1に示した量子化テーブル生成部9により生成される量子化テーブルと同一である。
【0093】
上記直交逆変換部28は、逆量子化部26により逆量子化された8×8配列のブロックデータに、周波数空間変換である逆DCTを施すことにより、8×8画素ブロックの画像データを生成するものである。
【0094】
上記ヘッダ復号部29は、ヘッダ内に、拡張されたJPEGに係るヘッダ情報が記録されているか否かを判定するものである。
【0095】
上記復号化制御部30は、ヘッダ復号部29により、拡張されたJPEGに係るヘッダ情報が記録されていると判定されたときに、画像を復元するために必要なヘッダ情報を読み出して、行操作部31や列操作部32へ該ヘッダ情報を出力して制御するものである。すなわち、復号化制御部30は、上記列操作判定部4の操作による画像の変化を復元するために必要なヘッダ情報が記録されている場合には、該ヘッダ情報を行操作部31へ出力し、上記行操作判定部5の操作による画像の変化を復元するために必要なヘッダ情報が記録されている場合には、該ヘッダ情報を列操作部32へ出力する。
【0096】
なお、ここでは、行操作部31による操作を行ってから列操作部32による操作を行う順序としているが、上述したように、行に関する操作と列に関する操作は可換であるために、列操作部32による操作を行ってから行操作部31による操作を行う順序としても構わない。
【0097】
上記ブロック展開部33は、ブロック単位で復号化された画像データを、元の1枚の画像データとして展開するものである。
【0098】
次に、図3は、符号化処理を示すフローチャートである。この図3に示す処理は、上記図1に示したような構成の符号器によるハードウェア的な処理であっても良いが、これに限らず、コンピュータ等において符号化プログラムを実行することによりソフトウェア的に処理するものであっても構わない。
【0099】
この処理を開始すると、まず、処理対象となる画像データをブロック化する(ステップS1)。図7は、VGA画像をブロック化する例を示す図である。この図7に示す例では、640×480画素でなるVGA画像を、8×8画素ブロックに分割しており、80×60=4800個の8×8画素ブロックが生成される。
【0100】
図8は、8×8画素ブロックの画素構成を示す図である。生成された8×8画素ブロックに関して、0行目から7行目の行番号と、0列目から7列目の列番号と、を付し、画素の座標を(列番号,行番号)として表すものとする。このときには、左上角に位置する画素の座標は(0,0)、右上角に位置する画素の座標は(7,0)、左下角に位置する画素の座標は(0,7)、右下角に位置する画素の座標は(7,7)となる。そして、座標(k,l)における画素データをf(k,l)で表すことにする。
【0101】
なお、ここでは、縦方向および横方向に配列された正方形状または長方形状の画素が配列された画像を例に挙げたが、本実施例で取り扱うことが可能な画像は、これに限るものではない。
【0102】
図9は、6角形の画素を敷き詰めることにより2次元状に展開される画像の例を示す図である。この図9に示すような画像であっても、該図9に示すように画素位置a〜pをとることにより、図10に示すような行方向および列方向に配列される画素データを取得して、後述するような各種の処理を行うことが可能となる。ここに、図10は、図9に示した配置の画素データを行方向および列方向に配列した例を示す図である。
【0103】
さらに、より一般には、曲がった面に配列された画素、例えば昆虫の複眼のように配列された画素であっても構わないし、各画素が同一形状である必要もない。すなわち、2次元のコンパクトな多様体に離散的に配置された画素群について、広く取り扱うことが可能である。
【0104】
再び図3の説明に戻って、次に、後で図5を参照して詳しく説明するような拡張JPEG符号(JEX符号)化の処理を行う(ステップS2)。ここでは、後段の直交変換を行った後に高周波成分が小さくなるように、画素データの並べ替え(パーミュテーション)を行う。この並べ替えの処理は、上述したように、可逆な処理となっているために、復号化の際にデータが失われることはない。
【0105】
続いて、DCTによる直交変換を行う(ステップS3)。まず、画素データf(k,l)を、次の数式1に示すようなfklとして表現する。ここに、画素データfklは、0から(2の8乗から1を引いた値)までの値を取り得る8ビットのデータとなっている。
[数1]

【0106】
DCTは、この画素データfklに対して、因子Kを用いて以下の数式2に示すような演算を行うことにより、周波数における値Dに変換することで、行われる。
[数2]

ここに、各変数に付された添え字の内の、上付の添え字は周波数を表し、下付の添え字は空間を表している。
【0107】
また、直交変換に用いられる因子Kは、次の数式3および数式4により表される。
[数3]

[数4]

【0108】
なお、上記数式2は、行列表現をとることにより、次のような行列演算として表される。
[数5]

ここに、右辺の最後のKの右肩に付けられた「T]は、Kの転置を意味している。
【0109】
具体的には、成分D00は、コサイン関数の角度の項が0になるために、次の数式6により算出される。
[数6]

このように成分D00は、8×8画素ブロック内の画像データの平均値を8倍したものとなっている。
【0110】
また、成分D00以外の成分は、コサイン関数の角度の項が存在して、これは周波数に対応するものであるために、8×8画素ブロック内の画像データの変化を、それぞれの周波数成分毎に取り出したものに対応している。具体的には、例えば成分D10は、次の数式7により算出される。
[数7]

ここに、各ベクトルV,Wは、数式7における次の部分を各表している。
[数8]

[数9]

これらの数式8および数式9を参照すれば分かるように、ベクトルWのk番目の要素は、k番目の列の画素データの和である。また、ベクトルVのk番目の要素は、kの不連続関数であって、厳密な単調減少関数となっている。このように、成分D10と、さらに特に数式は示さないが成分D01とは、ベクトルの内積として表現することも可能となっている。
【0111】
このような演算を順次行うことにより、D00からD77までの64個のDCT係数が算出される。
【0112】
再び図3の説明に戻って、直交変換を行った後は、次に、量子化を行う(ステップS4)。この量子化は、上述したように算出された64個のDCT係数を、それぞれ異なる係数(Q係数)により除算して、小数点以下の端数を捨てることにより行われる。この量子化に用いる係数は、所望の値を用いることが可能であり、使用する係数の組を量子化テーブルとして予め用意しておく。一般的に、上記成分D00などのDC係数や、上記成分D10,D01などの比較的低周波のAC係数は、画像に関する情報の概要を含んでいるために、比較的小さなQ係数を用いて量子化し、なるべく元の情報が正確に保存されるようにする。これに対して、例えば成分D77などの高周波のAC係数は、省略しても画像全体の視覚的効果に与える影響が少ないために、比較的大きなQ係数を用いて量子化される。
【0113】
こうして量子化されたDCT係数を、00成分から77成分へジグザグにスキャンすることにより、64個の1次元配列のデータに変換する(ステップS5)。
【0114】
そして、いわゆるハフマン符号化により、可変長符号化を行う(ステップS6)。このハフマン符号化は、出現頻度の高い値に短いビット長の符号を与え、出現頻度の低い値に長いビット長の符号を与えることにより、データの圧縮を行うものであるが、その方式はやや複雑であり、本実施例の発明とは直接関わるものではないために、詳細は省略する。ただし、DC係数とAC係数はそれぞれ区別して符号化され、AC係数については、連続する0のAC係数をラン長とし、このラン長で示される0の後のAC係数を10に分類されるカテゴリの何れかのカテゴリ値として、それぞれ符号化することについては述べておく。
【0115】
このような処理により符号化されたデータが、JPEG拡張符号データとなり、その後は上記合成部13によりマーカやヘッダ情報とともにファイル化されることになる。なお、ヘッダには、JEX符号に係るヘッダ情報の他に、上述した量子化テーブルやDCハフマン符号化テーブル、ACハフマン符号化テーブルなども記録される。
【0116】
続いて、図4は、復号化処理を示すフローチャートである。この図4に示す処理は、上記図2に示したような構成の復号器によるハードウェア的な処理であっても良いが、これに限らず、コンピュータ等において復号化プログラムを実行することによりソフトウェア的に処理するものであっても構わない。
【0117】
この処理を開始すると、処理対象のJPEG拡張符号をマーカを参照して8×8画素ブロックの画素データに対応する符号部分に分割した後に、各符号部分毎に、ヘッダに記録されているハフマン符号化テーブルを参照して、ハフマン復号化する(ステップS11)。
【0118】
その後、64個の1次元配列の係数を、ジグザグに展開して、8×8配列の2次元係数に変換する(ステップS12)。
【0119】
そして、ヘッダに記録されている量子化テーブルを参照することにより、逆量子化を行う(ステップS13)。
【0120】
続いて、逆DCT(IDCT)を行うことにより、周波数における係数から、空間における画素値に変換する(ステップS14)。このときには、0をダイナミックレンジの中心とする正負の画像データを、0〜(2の8乗−1)までの正の8ビットデータに変換する逆レベルシフトの処理も行われる。
【0121】
次に、JEX符号化が行われた画像ファイルであるか否かを、マーカにより判定する(ステップS15)。
【0122】
ここで、JEX符号化が行われた画像ファイルであると判定された場合には、後で詳しく説明するようなJEX復号化の処理を行う(ステップS16)。
【0123】
このステップS16の処理を終了するか、または上記ステップS15においてJEX符号化が行われておらず、通常のJPEG画像ファイルであると判定された場合には、8×8画素ブロックの画像データを元の画像ファイルにおける所定位置に展開する処理を行う(ステップS17)。このブロック展開が、全ての8×8画素ブロックについて行われると、1枚の画像が復元されることになる。
【0124】
次に、図5は、JEX符号化処理を示すフローチャートである。この図5は、上記図3のステップS2において行われる処理の詳細を示したものである。
【0125】
この処理を開始すると、上記ステップS1においてブロック化された8×8画素ブロックの画素データf(k,l)を入力する(ステップS21)。上記図3のステップS1で説明したように、1つの画像を複数のブロックに分割して処理を行うために、ここでは分割された内のn番目の画素ブロックについて処理を行うが、このnを順次変更して、全ての画素ブロックについての処理を行うことになる。
【0126】
次に、画素データf(k,l)を次の数式10により、列毎に、列内で(行番号を変化させる方向に)加算して、各i列における加算データsc(i)を算出するとともに、画素データf(k,l)を次の数式11により、行毎に、行内で(列番号を変化させる方向に)加算して、各j行における加算データsr(j)を算出する(ステップS22)。
[数10]

[数11]

【0127】
続いて、8個の加算データsc(i)を降べきの順に並べるためのiの順列nc(i)を算出するとともに、8個の加算データsr(j)を降べきの順に並べるためのjの順列nr(j)を算出する(ステップS23)。具体的には、例えば、sc(0)〜sc(7)までのデータ配列と、0〜7までの値の配列と、を例えばコンピュータのメモリ上の領域に設けておき、sc(0)〜sc(7)までのデータ配列に、プログラミングで公知となっているソートアルゴリズムの何れかを適用することにより、降べきの順にデータを並べ替える。このときに、sc(0)〜sc(7)までのデータ配列に適用したデータの並べ替えを、全く同様に0〜7までの値の配列に適用することにより、降べきのソートが完了したときの配列の状態が、iの順列nc(i)となる。jの順列nr(j)についても、これと同様に処理することにより、求められる。
【0128】
なお、ここでは加算データsc(i)および加算データsr(j)を降べきの順に並べているが、昇べきの順に並べるようにしても構わない。さらに、降べき、昇べきの各順に限らず、画像の周波数を低くするような並べ換えであれば、広く採用することが可能である。
【0129】
その後、8×8画素ブロックにおける列のデータを並べ換える処理が必要であるか否かを判断する。具体的には、閾値Thcを用いた次の数式12、
[数12]
sc(nc(0))−sc(nc(7))≧Thc×8
が満たされ、かつ、閾値Nc(典型的な値の例としては、「4」が挙げられる。)を用いた次の数式13、
[数13]
Chc≧Nc
が満たされているか否かを判断する(ステップS24)。
【0130】
ここに、iの順列nc(i)は、加算データsc(i)を降べきの順に並べるための順列となっているために、sc(nc(0))は、必ずsc(nc(7))よりも大きいかまたは等しく、つまり数式12の左辺は必ず0または正である。そして、この数式12の左辺は、列内の画素信号の和が、列が異なると最大どの程度ばらつくかを示す指標となっている。従って、この数式12の左辺が小さい場合には、異なる列同士の(列内で加算した)信号のばらつきがほとんどないことになるために、列交換を行う必要がないと判断するようにしている。
【0131】
また、上記閾値Thcは、例えば次の数式14に示すように決定される。
[数14]

ここに、nは、画素データのダイナミックレンジを示すビット値であり、8ビットの画素データの場合にはn=8である。また、nから減算される数は、ここでは3となっているが、これは画素ブロックが8×8画素で構成されていて、列方向の画素並びが8画素、つまり(2の3乗)画素であることに起因する。従って、例えば16×16画素のブロックを用いる場合には、nから減算される数は4となる。ただし、これは閾値Thcを求める方法の一例を記載したものであり、これに限定されるものでない。
【0132】
なお、後述するステップS28において用いられる閾値Thrは、この数式14に示すように、通常は閾値Thcと同一の値を採用するが、これも一例であって、閾値Thcとは異なる値を用いるようにしても構わない。例えば、特定方向に相関性をもつような画像の場合には、閾値Thcと閾値Thrとを異ならせることが考えられる。
【0133】
さらに、ここでは全ての画素ブロックについて同一の閾値Thc、あるいは同一の閾値Thrを用いているが、これに限らず、画素ブロック毎に異なる閾値を用いるようにしても構わない。
【0134】
そして、上記判定値Chc(および後述する判定値Chr)は、次の数式15により算出される。
[数15]

【0135】
この判定値Chc(および判定値Chr)は、パーミュテーションの活性度に対する指標ともいうべきものである。つまり、判定値Chc=0の場合には、すでに、左から右へ行く(列番号が増加する)に従って、列内で(行番号が変化する方向に)加算した画素値が小さくなっていることになるために、列の交換が不要であることが分かる。また、判定値Chcが大きくなるに従って、交換するべき列の数、もしくは交換先と交換元との列番号の差、が大きくなっていると推定される。
【0136】
そして、上記閾値Ncは、活性度の下限値を表している。例えば、図11に示すような順列nc(i)が得られたとする。図11は、順列nc(i)に対して得られる判定値Chcを計算するために必要な各要素の例を示す図表である。図示のように、より遠い列への移動が行われると、より大きな値が得られる。このような結果を用いて、数式中のウェイトWを例えば1としたときに判定値Chcを算出すると、
Chc=4+1+1+0+4+1+1+2=14
となる。
【0137】
なお、このウェイトWの取り方に応じて、判定値Chcとして得られる値は異なる。具体的には、図12に示すように、ウェイトWを1としたときに、同一の判定値Chc=8が得られる2種類のnc(i)が、ウェイトWを4とすると、一方の判定値Chcは約4.8となり、他方の判定値Chcは約1.7となって、相違が現れる。ここに図12は、ウェイトWを変えたときの判定値の変化の様子を示す図表である。このように、ウェイトW=1の場合には、交換するべき列の総数と、交換先と交換元の列番号の差と、が同等に扱われている。これに対して、ウェイトWを大きくすると、交換するべき列の総数よりも、交換先と交換元との列番号の差を、より重く扱うことになる。こうして、ウェイトWを大きくすると、より遠くの列との並べ換えが行われたときに、近くの列同士の並べ換えのみが行われたときよりも、より大きな判定値Chcが得られる傾向があることが分かる。交換先と交換元との列番号の差が大きいほど、列交換により絵柄が大きく崩れることになるために、ウェイトWを大きくすることは、絵柄の崩れに対する判断をより重んじることに該当する。このウェイトWは、上記符号化制御部2への圧縮度設定により、必要に応じて設定することができるようになっている。そして、ウェイトを例えば「1」に設定すると、演算が簡単になって処理の負荷を軽減することができる効果がある。
【0138】
なお、上記ステップS24においては、2つの判定値に対して、下限だけを判定するようにしたが、上限についての判定をさらに行うようにすることも可能である。すなわち、上記2つの判定値があまり大きな値であると、パーミュテーションを実施したときに、画素ブロック内の絵柄が大きく崩れることになる。この場合には、JEXファイルを従来のJPEGデコーダで復元すると、ほとんどブロック単位でしか画像を再現することができない。従って、従来のJPEG復号化との略互換性を重要視する場合には、上限を設けるようにすると良い。このような上限を設けることにより、JEXファイルを従来のJPEGデコーダで復元したときにも、画素ブロック内の絵柄をある程度再現することが可能となる。
【0139】
上記ステップS24において、条件が満たされると判定された場合には、列に関するパーミュテーションが行われたことを示すデータPcに1を代入する(ステップS25)。このデータPcは、後でヘッダ情報として画像ファイルのヘッダに記録されるものである。
【0140】
そして、f(k,l)の列の並べ換えを実際に行う(ステップS26)。ここでは、f(k,l)のデータを一旦他のメモリ領域等に退避させた後に、該f(k,l)のデータ位置に、f(nc(k),l)のデータを書き込む処理を行う。このような処理を繰り返して、8×8画素ブロックのデータ配列が、
f(nc(0),l),f(nc(1),l),…,f(nc(7),l)
となるように並べ換えを行う。
【0141】
この並べ換えは、以下に説明するような線形パーミュテーション(linear permutation)の具体的な例となっている。
【0142】
まず、図8に示すような8×8画素ブロックの画素データf(0,0)〜f(7,7)を、次の数式16のような8×8の行列Mとして表現する。
[数16]

【0143】
なお、ここでは8×8画素ブロックを、そのまま自然に解釈して、8×8の正方行列として表現したが、行列表現としてはこれに限るものではない。例えば、次の数式17に示すように、4×16の非正方行列M’として表現しても構わない。
[数17]

【0144】
この数式17に示す行列表現は、画素データを偶数行と奇数行とに分割する表現となっており、1フレームが偶数フィールドと奇数フィールドとに分割されるインターレースの画像データを扱うときに、利点が得られる表現である。つまり、画像を高い効率で圧縮するためには、隣接する画素同士に高い相関性があることが望ましい。従って、相関性が高いと考えられるフィールド単位で画素データを扱うことにより、より効率的なデータの符号化を図ることが可能であると考えられるためである。この数式17に示したような4×16の非正方行列に対する行列演算は、4×4行列を左から掛けることにより行の演算を行い、16×16行列を右から掛けることにより列の演算を行うことになる。そして、このような行列表現を行えば、奇数行(奇数ライン)から構成される4画素からなる列と、偶数行(偶数ライン)から構成される4画素からなる列と、の間の列変換も可能となる。
【0145】
さらに、他の行列表現の例としては、次の数式18に示すM”のようなものが挙げられる。
[数18]

【0146】
この数式18に示した行列表現は、1行64列の行列、つまり64次元ベクトルとなっている。このような表現を用いたベクトルに対して、行列による演算を行うと、64行64列の巨大な行列演算を行うことになり、演算処理が重くなったり時間を要したりする不利益がある反面、画素に対する最も自由度の高い任意の演算を行うことが可能であるという利点がある。
【0147】
このような行列Mに対する任意の可逆な行列演算は、次の数式19に示すように表現される。
[数19]
M → A・M・B
ここに、A,Bは、それぞれ逆行列をもつ行列である。そして、逆方向の演算を行う場合には、左からAの逆行列を掛け、右からBの逆行列を掛ければ良い。なお、この行列演算は、行列Mが正方行列であるか非正方行列であるかを問わず、適用可能な演算となっている。
【0148】
この数式19に示す行列演算を、画像データとしての画素ブロックに適用するためには、特に、JPEGの前処理として確実に適用するためには、さらに、演算後の行列成分が、画素値のダイナミックレンジ[0〜(2の8乗−1)]を満たす必要がある。この条件と、必要条件である行列Aおよび行列Bが可逆であるという条件をまとめて、十分条件として言い換えると、次のようになる。
【0149】
まず、行列Aに関しては、
(A1) 行列Aは逆行列をもつ(可逆である)。
(A2) 行列Aの各要素aは、0≦a≦1を満たす。
(A3) 行列Aの各要素aの行方向の総和Sumaは、0≦Suma≦1を満たす。
【0150】
次に、行列Bに関しても同様に、
(B1) 行列Bは逆行列をもつ(可逆である)。
(B2) 行列Bの各要素bは、0≦b≦1を満たす。
(B3) 行列Bの各要素bの列方向の総和Sumbは、0≦Sumb≦1を満たす。
【0151】
上記条件A3と条件B3に関しては、総和が小さいほど、つまり1から離れて0に近付くほど、画素ブロック全体の信号値を抑圧していることになるために、信号間の差分が減少して、つまりローパスフィルタ(LPF)効果が強まることになる。しかし、画素ブロック全体の信号値を抑制すると、DCT係数も全周波数成分に渡って抑制されるために、量子化ステップによる誤差が増大する。
【0152】
JPEGの場合、量子化ステップは、より高周波成分になるにつれて大きくなるために、このような量子化誤差が増大する影響は高周波成分になるほど大きくなる(後述する、特開2000−308058号公報に関する量子化誤差の説明を参照。なお、この量子化誤差の説明は、説明を簡単にするために単純な画素ブロックの割り算を例に挙げているが、該量子化誤差に関する結論は、一般的な行列A,Bの要素値が減少することによる量子化誤差の増大にも適用することができるものである。)。従って、条件A3に示した総和Sumaおよび条件B3に示した総和Sumbは、各々なるべく1に近い値となるように設定することが望ましい。
【0153】
さらに、条件A2,B2における行列要素a,bの値が小さくなるほど、一連の符号化処理と一連の復号化処理とを経た結果の演算誤差が増加する。これは、行列Aおよび行列Bが可逆であるにも関わらず、実際の画素信号がデジタル化されているためである。すなわち、行列要素a,bが0に近付くにつれて、逆行列のある要素は、1/aまたは1/b相当の値(これらは何れも1よりも大きい)になって、つまり増加する。従って、行列要素aまたはbが小さくなるほど、行列演算結果の小数点を四捨五入することによる演算誤差は、逆行列演算を行う際に増加する。
【0154】
このような理由から、演算子となる行列における列内の総和または行内の総和をなるべく1に近い値にすることが望ましいとともに、行列要素a,b自体もなるべく1に近い値にする方が、デジタル演算の精度が良いということができる。
【0155】
上述したような条件A1〜A3または条件B1〜B3を満たすような行列の例を幾つか挙げることができる。第1の例はパーミュテーション行列、第2の例は、対角要素を含まない左下の三角配列部分の要素が全て0になる行列(より正確には、以下に説明する。)である。これらの2つの例について簡単に説明しておく。
【0156】
まず、第1の例におけるパーミュテーション行列は、各要素が、0または1の何れかの値をとり、各行の要素の総和が常に1、かつ各列の要素の総和が常に1、となっている。一般的なパーミュテーション行列の例を挙げると、例えば次の数式20に示すようになる。
[数20]

【0157】
従って、このようなパーミュテーション行列を用いた線形可逆変換においては、上述したLPF効果、およびこれに伴う量子化誤差の発生が最小であるといえる。このパーミュテーション行列は、各行および各列に単一の非ゼロ係数1が存在するような構造になっているために、実際に画素ブロックを表す行列にパーミュテーション行列を掛ける演算を行う場合には、行列演算を、画素ブロックを表す行列の行と列の入れ替えとして実行すればよい。なお、このパーミュテーション行列は、本実施例でDCTの前処理として用いられる行列であるために、後で改めてより詳しく説明する。
【0158】
次に、第2の例の行列は、次のようなものである。この行列は、対角要素よりも左下の三角配列部分の各要素が全て0であり、対角要素を含む右上の三角配列部分の要素が条件A2および条件A3を満たすように選択され、かつ、対角要素が全て非ゼロとなる行列である。このような行列は、具体的には、次の数式21に示すように表される。
[数21]

ここに、0<ai ≦1 (i=0,…,7)、0≦bij<1(i=1,…,7、j=0,…,6、j<i)であり、さらに、行列Bの場合は次の数式22を、行列Aの場合には次の数式23を、それぞれ満たすものとなっている。
[数22]

[数23]

【0159】
この行列のさらに具体的な一例を挙げると、次の数式24に示すようになる。
[数24]

【0160】
このような、対角要素が全て非ゼロで、かつ左下の三角配列部分の要素が全て0になる行列は、行列式が対角要素全ての積となるために、つまり行列式≠0で、可逆であることが知られている。
【0161】
こうした行列は、一般に、高周波成分を低減する機能を有し、かつ可逆であるために、可逆のLPF機能を有しているということができる。このような行列を用いて、画素ブロックを表す行列Mを空間変換する場合には、数式上だけでなく、実際に行列演算を実行する必要があるために、行列演算機能を集積回路(IC)として実装することにより、高速演算処理が可能となるように構成することが望ましい。さらに、このような行列を上記パーミュテーション行列と組み合わせて実行する場合にも、行列演算として実行するのが最も効率が良い。
【0162】
次に、上記数式19に示した行列Aまたは行列Bは、逆行列をもつために、次に示すような特徴がある。
【0163】
すなわち、逆行列をもつ任意の行列は、次の数式25に示すような基底行列Fklおよび数式26に示すような基底行列Fk (α)の組み合わせの積により、
A=…Fkl…Fj (α)…Fmn…Fi (β)…
などのように表現可能であることが、数学的に示されている(例えば、Max Koecher,"Lineare Algebra und analytische Geometrie",Springer Verlag(Berlin),1985 を参照)。
[数25]

[数26]

ただし、数式25に示したFklにおける非対角成分の1は、k行l列(ここでは、2つの添え字の内の左側の添え字が行番号を表し、右側の添え字が列番号を表していて、他の行列部分の添え字とは逆になっているので要注意。)の要素であり、数式26に示したFk (α)における対角成分のαは、k行k列の要素である。さらに、Fk (α)は逆行列をもつ必要があるために、αは非ゼロの実数となる。
【0164】
数式25に示す基底行列Fklは、行列Mに右から掛ける(つまり、M・Fkl)と、行列Mのk列に、該行列Mのl列の要素をそれぞれ加算して、その結果を新たなl列とする演算になる。
【0165】
また、行列Mに基底行列Fklを左から掛ける(つまり、Fkl・M)と、行列Mのl行に、該行列Mのk行の要素をそれぞれ加算して、その結果を新たなk行とする演算になる。
【0166】
一方、数式26に示す基底行列Fk (α)を行列Mに右から掛ける(つまり、M・Fk (α))と、該行列Mのk列の各要素にαを掛けて、その結果を新たなk列とする演算になる。
【0167】
さらに、数式26に示す基底行列Fk (α)を行列Mに左から掛ける(つまり、Fk (α)・M)と、該行列Mのk行の各要素にαを掛けて、その結果を新たなk行とする演算になる。
【0168】
そして、基底行列Fkl,Fk (α)の逆行列は、該基底行列Fkl,Fk (α)自体の組み合わせを用いて、次の数式27に示すように表現される。
[数27]

ここに、行列Eは、次の数式28に示すような単位行列である。
[数28]

【0169】
また、上記数式19に示した行列演算は、線形演算である。すなわち、行列Mが行列M1 と行列M2 の和として表されるとすると、次の数式29に示すように、
[数29]
A・M・B=A・(M1 +M2 )・B=A・M1 ・B+A・M2 ・B
となるために、線形性が満たされていることが分かる。従って、数式19に示した行列演算は、線形で可逆な演算であり、画素の空間的な分布を変更するために用いる場合には、線形可逆マッピングとも呼ぶことができる。すなわち、線形可逆マッピングは、画素群を行列として表現した場合に、この行列に可逆な線形行列演算を施すことによって得られる画素空間変換であるということができる。
【0170】
こうして、線形可逆マッピングは、行列Mに、
1.第1の行または列に、第2の行または列を足す演算
2.1つの行または列に、非ゼロ係数を掛ける演算
を逐次的に施すことにより得られるマッピングとなっている。
【0171】
なお、数式19に示したような線形可逆な画素空間変換を、上記数式5に示したようなDCTと組み合わせると、次の数式30に示すような行列表現となる。
[数30]

【0172】
これに対して、レベルシフトに対応する行列演算は、非線形演算である。すなわち、レベルシフトは、画素データを要素とする行列Mに、レベルシフト量を要素とする行列Aを加算する演算である。このときには、次の数式31に示すように、
[数31]
M+A=(M1 +M2 )+A=(M1 +A)+(M2 +A)−A
となって、線形性を満たしていないことが分かる。
【0173】
また、上記背景技術で述べた特開2000−308058号公報に記載の技術は、DCTを行う前に、次の数式32、
[数32]
M → (1/2)・M+128N
に示すような変換を行うものである。ここに、行列Nは、全ての要素が1となる行列である。この変換は、画素値を半分のダイナミックレンジに圧縮して、元のダイナミックレンジの中央値側へシフトさせるものである。従って、該変換は、上記レベルシフトと同様のレベルシフトを含むものであり、線形性を満たしていないことが容易に示される。この変換は、その後に行われるDCTと組み合わせると、次の数式33に示すように表現することができる。
[数33]

ここに、右辺第2項の行列D~00(このように代用表現する)は、DCTの(0,0)係数のみが1の値となる行列、つまり単に、(0,0)成分のみが1で、それ以外の成分が0となる行列である。
【0174】
なお、この特開2000−308058号公報に記載の技術は、本実施例で説明しているJEXと比べて量子化誤差が一般的に増大するといえるばかりでなく、従来のJPEGと比べても量子化誤差が増大する変換となっている。
【0175】
つまり、従来のJPEGにおけるDCT係数の絶対値を次の数式34に示すようにwとすると、
[数34]

これを量子化して、さらに逆量子化したときの量子化誤差△1 は、次の数式35に示すように表される。
[数35]

ここに、qは、q=Q(u,v)であり、量子化幅を表している。
【0176】
これに対して、特開2000−308058号公報に記載の技術を用いた処理をした後にDCTを行い、これを量子化して、さらに逆量子化したときの量子化誤差△2 は、次の数式36に示すように表される。
[数36]

【0177】
DCT係数の絶対値wを、2qによる商ζ(ζは、ζ≧0を満たす整数)と第1の余りとに分け、さらにこの第1の余りをqによる商ξ(ξ=0または1)と第2の余りη(ηは、0≦η<qを満たす整数)とに分け、つまり、次の数式37に示すように分解する。
[数37]
w=ζ・2q+ξ・q+η
【0178】
そして、△1 と△2 との差を評価すると、次の数式38に示すように、
[数38]
△1 −△2 =[w/q]・q−[w/(2q)]・2q
=(2ζ+ξ)・q−ζ・2q=ξ・q≧0
となって、0またはq(量子化幅)の量子化誤差が等しいか、または増大することが分かる。
【0179】
次に、上述したような線形可逆マッピングの特別な例として、線形パーミュテーションを考える。この線形パーミュテーションは、画素ブロックにおける行同士の交換と、列同士の交換と、を組み合わせることにより実現することができる変換である。従って、任意の線形パーミュテーションは、行同士の交換、または列同士の交換、という基本パーミュテーションの積により表される。このような線形パーミュテーションによる変換では、画素ブロック内のある画素値が、変換後にも、画素ブロック内の何れかの位置に発見できることになる。従って、画素ブロック内の画素値の平均値も変換後に変化することはなく、画素値に対する画素の出現頻度などの統計値にも線形パーミュテーションは影響を与えることはない。
【0180】
このような線形パーミュテーションは、上記線形可逆マッピングの一種であるために、当然、上述した基底行列の積により表されるが、特に、基底行列Fk (α)においてα=−1とおいた基底行列Fk (−1)を用いることにより実現される。
【0181】
すなわち、図13に示すような、値aをもつk番目の列と、値bをもつl番目の列と、を交換する基本パーミュテーションを考える。ここに、図13は行列Mの例を示す図である。このような行列に、図14に示すような順に、基底行列を順次作用させていく。ここに、図14は、列同士の基本パーミュテーションを実現するための基底行列の作用手順を示す図表である。
【0182】
まず、最初の状態における上記所定の値部分のみをピックアップすると、(a,b)である。
【0183】
次に、第1のステップとして、右から、基底行列Fl (−1)を作用させると、(a,−b)となる。
【0184】
第2のステップとして、右から、基底行列Fklを作用させると、(a,a−b)となる。
【0185】
第3のステップとして、右から、基底行列Fl (−1)を作用させると、(a,b−a)となる。
【0186】
第4のステップとして、右から、基底行列Flkを作用させると、(b,b−a)となる。
【0187】
第5のステップとして、右から、基底行列Fl (−1)を作用させると、(b,a−b)となる。
【0188】
そして、第6のステップとして、右から、基底行列Fklを作用させると、(b,a)が得られ、列同士の基本パーミュテーションが行われたことが分かる。
【0189】
従って、列同士の交換に係る基本パーミュテーションPklは、基底行列の積により、次の数式39に示すように表される。
[数39]

なお、この基本パーミュテーションPklの右肩に付けた添え字「c」は、列に関するパーミュテーションであることを表すために付している。
【0190】
この基本パーミュテーションPklは、具体的な行列として表すと、次の数式40に示すようになる。
[数40]

ここに、対角成分の内、1以外の値をとるのが(k,k)成分および(l,l)成分であってそれぞれ0の値をとり、非対角成分の内、0以外の値をとるのが(k,l)成分および(l,k)成分であってそれぞれ1の値をとる。
【0191】
この基本パーミュテーションPklを、次の数式41に示すように、行列Mに右から掛けることにより、k列とl列との交換が行われる。
[数41]

【0192】
同様に、行同士の交換に係る基本パーミュテーションPklは、基底行列の積により、次の数式42に示すように表される。
[数42]

なお、この基本パーミュテーションPklの右肩に付けた添え字「r」は、行に関するパーミュテーションであることを表すために付している。
【0193】
そして、この基本パーミュテーションを、次の数式43に示すように、行列Mに左から掛けることにより、k行とl行との交換が行われる。
[数43]

【0194】
なお、列同士の交換に係る基本パーミュテーションは、行列Mに右から掛ける演算で表され、行同士の交換に係る基本パーミュテーションは、行列Mに左から掛ける演算で表されるために、これらの演算は可換である。従って、基本パーミュテーションを組み合わせて行われる列に関する一連の交換の組と、基本パーミュテーションを組み合わせて行われる行に関する一連の交換の組と、は何れを先に行っても構わない。
【0195】
こうして、図5に示すJEX符号化処理(および後述する図6に示すJEX復号化処理)においては、まず列の並べ換えを行い、その後に行の並べ換えを行っているが、これらは逆の順序でも良い。
【0196】
一方、上記ステップS24において、上述した条件が満たされないと判定された場合には、列に関するパーミュテーションが行われていないことを示すデータPcに0を代入する(ステップS27)。
【0197】
上記ステップS26またはステップS27の処理が終了したら、次に、8×8画素ブロックにおける行のデータを並べ換える処理が必要であるか否かを判断する。具体的には、閾値Thrを用いた次の数式44、
[数44]
sr(nr(0))−sr(nr(7))≧Thr×8
が満たされ、かつ、閾値Nr(この閾値Nrは、通常は、列に関する閾値Ncと同一になるようにとる。)を用いた次の数式45、
[数45]
Chr≧Nr
が満たされているか否かを判断する(ステップS28)。
【0198】
上記ステップS24およびこのステップS28で説明したように、列と行とに各対応して算出される4つのパラメータ、すなわち、sc(nc(0))−sc(nc(7))、Chc、sr(nr(0))−sr(nr(7))、Chrを、それぞれの閾値と比較して列のパーミュテーションと行のパーミュテーションとを実行するか否かを判断するようにしているために、画素ブロック毎の絵柄に応じて、適応的にパーミュテーションを制御しているということができる。
【0199】
なお、パーミュテーションを実行するか否かを、これら4つのパラメータと各対応する閾値とに基づき判断する代わりに、次の方法により行うことも可能である。すなわち、まず、画素ブロックに、パーミュテーション、DCT、量子化、ハフマン符号化を実際に施して、符号を得る。さらに、画素ブロックに、パーミュテーションを行うことなく、DCT、量子化、ハフマン符号化のみを実際に施して、符号を得る。そして、取得したそれぞれの符号の符号量を、ヘッダ情報分も含めて比較し、前者が後者よりも小さい場合にのみ、パーミュテーションを行った結果を採用する方法である。この場合には、各画素ブロックに対して2度の符号化処理を行うことになるために、処理時間が長くなるが、より確実なデータ圧縮効果を得ることができる。従って、符号化制御部2への圧縮度設定において、このような手段を選択することができるように構成することが考えられる。
【0200】
このステップS28において、条件が満たされると判定された場合には、行に関するパーミュテーションが行われたことを示すデータPrに1を代入する(ステップS29)。このデータPrも、上記データPcと同様に、後でヘッダ情報として画像ファイルのヘッダに記録されるものである。
【0201】
そして、f(k,l)の行の並べ換えを実際に行い、8×8画素ブロックのデータ配列が、
f(k,nr(0)),f(k,nr(1)),…,f(k,nr(7))
となるように並べ換えを行う(ステップS30)。
【0202】
一方、上記ステップS28において、上述した条件が満たされないと判定された場合には、列に関するパーミュテーションが行われていないことを示すデータPrに0を代入する(ステップS31)。
【0203】
上記ステップS30またはステップS31の処理が終了したら、次に、画像ファイルのヘッダに書き込むためのヘッダ情報Ph(n)を作成する(ステップS32)。
【0204】
ここで、図23は、JPEG圧縮データを格納するEXIFファイルの基本構造を示す図である。
【0205】
このEXIFファイルは、圧縮データスタート位置を示すマーカSOIと、1個または任意の複数個を記載可能なアプリケーションマーカセグメントAPP1〜APPnと、量子化テーブル定義マーカDQTから記述が開始される量子化テーブルデータと、ハフマンテーブル定義DHTから記述が開始されるハフマンテーブルデータと、リスタートインターバルDRIから記述が開始されるリスタートマーカ挿入間隔の定義と、フレームセグメントスタートマーカSOFから記述が開始されるフレームヘッダと、スキャンマーカSOSから記述が開始されるスキャンヘッダと、このスキャンヘッダ後に記述される圧縮データと、圧縮データ終了位置を示すマーカEOIと、を含んで基本的に構成されている。
【0206】
上記アプリケーションマーカセグメントAPP1〜APPnは、それぞれが64Kバイト(ここに、Kは1024を表す。)以下のサイズとなることが規定されており、個数は無制限である。そこで、例えば、アプリケーションマーカセグメントAPP1にExif用の情報を記述し、アプリケーションマーカセグメントAPP2にFlashpix用の情報を記述し、アプリケーションマーカセグメントAPP3からJEX用の情報を記述することが考えられる。
【0207】
図23の右側は、JEX用の情報を記述したアプリケーションマーカセグメントAPPiのデータ構造の例を示したものである。
【0208】
図示のように、セグメント内の先頭に、i番目のアプリケーションマーカセグメントであることを示すAPPiマーカが記述されており、その次に、バイト単位の可変長でなるこのアプリケーションマーカセグメントAPPiのバイト長が記述されている。その次に、拡張JPEG(JEX)用のデータヘッダとして例えば「4A 45 58」のバイナリ値を記述し、その後に上記ヘッダ情報Ph(n)を記述する。
【0209】
このとき、ヘッダ情報Ph(n)は、画像をブロック化して得られるブロック数だけ記述されるが、1つのセグメントサイズは、上述したように、マーカ等の記述部分も含めて64Kバイト以下であることが要求される。従って、全てのブロックに係るJEX用のヘッダ情報Ph(n)のサイズが64Kバイトを超える場合には、連続する複数のアプリケーションマーカセグメントに渡って記述することになる。すなわち、上記アプリケーションマーカセグメントAPP3に、1番目の画素ブロックに係るヘッダ情報Ph(1)から順次記録して行き、該アプリケーションマーカセグメントAPP3に記述可能な上限に達したところで、次のアプリケーションマーカセグメントAPP4内に、続くヘッダ情報Phの記録を行う。なお、各アプリケーションマーカセグメントは、バイト単位のサイズでなければならないが、ヘッダ情報Ph(n)はビット単位で詰めて記録するようになっているために、セグメント内の最後のデータがバイト単位では収まらないことがある。この場合には、フィラー(filler)としてのビット値0を埋めることにより、バイトサイズの単位でセグメントが終わるようにする。
【0210】
なお、上述では、EXIFファイルのアプリケーションマーカセグメントに、JEXヘッダ情報を記述するようにしたが、ヘッダ内においてJEXヘッダ情報を記述可能な箇所は、これに限るものではない。例えば、JPEG圧縮データファイルは、ヘッダにコメントを記載することができるようになっていて、そのデータ容量は64Kバイトである。従って、このコメント用のヘッダ部分を用いて、JEXヘッダ情報を記録するようにしても構わない。
【0211】
ここで、図24は、JPEG圧縮データファイルの基本構造をより詳しく示した図である。
【0212】
JPEG圧縮データファイルは、上記図23を参照して一部述べたように、圧縮データスタート位置を示すマーカSOI(16進数で示すバイナリ値は「FF D8」)と、量子化テーブル定義マーカDQT(同様に、「FF DB])から記述が開始される量子化テーブルデータと、ハフマンテーブル定義DHT(「FF C4」)から記述が開始されるハフマンテーブルデータと、リスタートインターバルDRI(「FF DD」)から記述が開始されるリスタートマーカ挿入間隔の定義と、フレームセグメントスタートマーカSOF(「FF C0」)から記述が開始されるフレームに関する各種パラメータを示す垂直ライン数、水平画素数、および量子化テーブル指定と、スキャンマーカSOS(「FF DA」)から記述が開始されるスキャンに関する各種パラメータを含むスキャンヘッダと、コメントマーカCOM(「FF FE」)から記述が開始されるコメント等のデータと、リスタートマーカRST(「FF D0」)から記述が開始される圧縮データと、圧縮データ終了位置を示すマーカEOI(「FF D9」)と、を含んで基本的に構成されている。
【0213】
これらの内のコメント部分は、コメントマーカCOM(「FF FE」)の次に、2〜65535バイトの範囲のコメントサイズが記述され(つまりバイト単位の可変長セグメントとなっている。)、その後にコメントを記載することができる。このコメント部分に、拡張JPEG(JEX)用のデータヘッダとして例えば「4A 45 58」のバイナリ値を記述し、その後に上記ヘッダ情報Ph(n)を記述する。
【0214】
図25は、ヘッダ情報Ph(n)の構造と具体的なデータ例を示す図表である。
【0215】
1つの画素フロックに係るJEX用のヘッダ情報Ph(n)は、データ開始位置を示すインディケータIndと、列に関するパーミュテーションが行われたか否かを示す上記データPcと、行に関するパーミュテーションが行われたか否かを示す上記データPrと、列に関する順列nc(0)〜nc(6)と、行に関する順列nr(0)〜nr(6)と、を基本的に含むように構成される。
【0216】
ここに、インディケータIndは、ブロック単位のデータ開始位置を上述したようなフィラーと区別して示すために、ビット値として1を記述するものである。すなわち、インディケータIndを設けておかないと、ある画素ブロックのヘッダ情報Phの次の2ビットが「00」であった場合に、フィラーであるのか、Pc=0かつPr=0の画素ブロックを表しているのかを区別することができない。そのために、各画素ブロックに係るヘッダ情報Ph(n)の先頭には、インディケータIndとして必ずビット値1を記述するようにしている。
【0217】
データPc,Prは、図5に示したように、パーミュテーションが行われた場合にはビット値として1が記述され、行われていない場合にはビット値として0が記述される。そして、Pcが0のときにはnc(0)〜nc(6)は記述されず、Prが0のときにはnr(0)〜nr(6)は記述されない。
【0218】
また、各nc(i),nr(j)は、8×8画素ブロックの場合にはそれぞれ3ビットのデータ量となるために、nc(0)〜nc(6)について21ビット、nr(0)〜nr(6)について21ビット、のデータ量がそれぞれ必要となる。ここに、nc(7)、nr(7)をヘッダ内に記述しない理由は、順列nc(0)〜nc(7)、および順列nr(0)〜nr(7)が、0から7までの数の並び換えであるために、nc(0)〜nc(6)までの情報があればnc(7)を知ることができ、同様に、nr(0)〜nr(6)までの情報があればnr(7)を知ることができるためである。従って、後述するような復号化処理においては、nc(7),nr(7)を算出する処理が行われる。
【0219】
図25に示す例は、Pcが1でPrが0となっているために、nc(0)〜nc(6)のみが記述され、nr(0)〜nr(6)は記述されていない。そして、図11に示した例における各データが記述されている。
【0220】
また、上述した理由により、1つの画素ブロックに対して必要なヘッダのデータ量は、3ビット、24ビット、45ビットの何れかである。従って、例えば640×480画素でなるVGA画像の場合には、(640/8)×(480/8)=80×60=4800個のブロック数となるために、最大(つまり、全てのブロックがPc=Pr=1となる場合)で27000バイト、つまり約26K(ここにKは1024として計算している。)バイトのデータ量が必要となる。この場合には、1つのセグメントサイズである64Kバイト内に収まるために、アプリケーションマーカセグメントにヘッダ情報を記述しても良いが、あるいはコメント用のセグメントに記述するようにしても構わない。ただし、これは白黒画像の場合である。
【0221】
カラー画像の場合には、ヘッダ情報として記述するのに、幾通りかの方法の何れかを採用することができる。
【0222】
まず、考えられるのは、Y,Cb,Crの各色毎、あるいはR,G,Bの各色毎、の画素ブロックをそれぞれ個別に分析(具体的には、例えば列毎あるいは行毎の画素値の合計を比較して並べ換え順序を求め、並べ換えを行うことが適当か否かを判断する処理ステップ)し、各分析結果に基づいてパーミュテーションを決定する。そして、各色毎のパーミュテーションに対応するヘッダ情報をそれぞれ生成して、ヘッダに記述する方法である。この場合には、各色毎に最適なJEXが行われるために、画像データ部分の符号量をより削減することができるが、一方で、ヘッダ情報については白黒画像の3倍のデータ量が必要になる。この場合には、VGA画像であっても、79Kバイトのデータ量が必要になるために、1つのセグメント内には収まらず、複数のアプリケーションマーカセグメントを用いる必要がある。なお、コメント用セグメントは複数を設けることを禁止されていないために、JEXのヘッダ情報を複数のコメント用セグメントに記述するようにしても構わない。
【0223】
また、他の方法としては、画質に主要な役割を果たす色成分、例えばY成分やG成分の8×8画素ブロックに関する分析結果に基づいてパーミュテーションを決定し、このパーミュテーションを、Y,Cb,Crの全ての画素ブロック、またはG,R,Bの全ての画素ブロック、に対して適用する方法である。この場合には、ヘッダ情報として必要な情報量が、白黒画像の場合と同じになり、VGA画像の場合には1つのセグメント内にヘッダ情報を記載することができる。一般に、輝度信号Yに対する人間の眼の感度は、色差信号Cb,Crに対する感度よりも高い。従って、輝度信号の再現を重視してJEXを行うことにより、ヘッダ情報の情報量を削減しながら、原画像を忠実に再現することが可能となる。この方法は、特に、さほどカラフルでない画像に対して、高い効果を得られると考えられる。
【0224】
画素数がさらに多い画像については、画素ブロックの増加分に応じたデータ量の増加が生じるために、必要に応じて複数のセグメントを用いて情報の記述を行うことになる。
【0225】
なお、上述の例では、例えばデータPcが1のときにnc(0)〜nc(6)の21ビットのデータを記述するようにしていたが、さらにデータ量を減らすことも可能である。nc(0)〜nc(7)は、0から7までの数の順列の何れかを表しているために、順列として取り得るのは8!通りである。ここに、
8!=(2の7乗)×315
<(2の7乗)×512=(2の7乗)×(2の9乗)=(2の16乗)
であるために、16ビットのデータ量があれば記述可能であることが分かる。この場合には、例えば、0〜40319までのシリアル番号と、各シリアル番号に対応して順列「01234567」〜「76543210」と、を記述した8!=40320個の要素をもつテーブルを用意しておく。そして、ヘッダにはテーブルのシリアル番号を記録し、復号化時には同一のテーブルを用いて元の順列のデータを取得するようにすればよい。
【0226】
この場合には、1つの画素ブロックに対して必要なヘッダのデータ量が、3ビット、19ビット、35ビットであるために、PcとPrとの何れか一方が1で他方が0となるブロックに対して5ビット分のヘッダ情報量を削減することができ、さらに、Pc=Pr=1となるブロックに対して、10ビット分のヘッダ情報量を削減することができることが分かる。この場合には、VGAの白黒画像で最大21000バイト、つまり約21Kバイトのヘッダ情報量となる。
【0227】
なお、さらにヘッダ情報量を削減する場合には、JEX拡張用データヘッダを除く部分のヘッダ情報Ph(n)を、適宜の圧縮方式によりデータ圧縮することも考えられる。これにより、画像ファイルのサイズをより小さくすることができるとともに、より高い解像度の画像データに係るヘッダ情報を、1つのセグメント(例えばコメント用のセグメント)内に格納することも可能となる。上述した並べ換えのアルゴリズムは、絵柄によって変動するために、算出されるパーミュテーションには統計的な癖がある。このような場合には、エントロピー符号化などの可変長符号化を圧縮方式として用いると、より効率的な圧縮を行うことが可能となる。
【0228】
こうして、並べ換えられた画素データf(k,l)と、ステップS32で作成されたヘッダ情報h(n)とを出力して(ステップS33)、このJEX符号の処理から図3に示した処理にリターンする。
【0229】
なお、この図5に示した処理は、全ての画素ブロックについて行われるために、実際には、nを変更しながらループ処理によって上述したような処理を行うことになる。
【0230】
次に、図6は、JEX復号化処理を示すフローチャートである。この図6は、上記図4のステップS16において行われる処理の詳細を示したものである。
【0231】
この処理を開始すると、n番目の逆DCT(IDCT)変換ブロックf’(k,l)と、該n番目のブロックに係るヘッダ情報Ph(n)とを入力する(ステップS41)。ここに、逆DCT変換後のブロックデータをfでなくf’とした理由は、図2に示した逆量子化部26により逆量子化を行う際に、量子化誤差が発生して、元のブロックデータfとは異なる値となっているためである。
【0232】
次に、ヘッダ情報Ph(n)の第2ビットをデータPcの値として代入するとともに、第3ビットをデータPrの値として代入する(ステップS42)。
【0233】
そして、データPcの値が1であるか否かを判断する(ステップS43)。
【0234】
ここで1である場合には、ヘッダ情報Ph(n)からnc(0),…,nc(6)の各データを取得して(ステップS44)、これらに基づいてnc(7)を算出する(ステップS45)。
【0235】
そして、これらnc(0)〜nc(7)を用いて、f’(k,l)の列を
f’(nc(k),l) ← f’(k,l)
として、逆に並べ換える(ステップS46)。
【0236】
このステップS46の処理が終了するか、または上記ステップS43においてPc=0である場合には、次に、データPrの値が1であるか否かを判断する(ステップS47)。
【0237】
ここで1である場合には、ヘッダ情報Ph(n)からnr(0),…,nr(6)の各データを取得して(ステップS48)、これらに基づいてnr(7)を算出する(ステップS49)。
【0238】
そして、これらnr(0)〜nr(7)を用いて、f’(k,l)の行を
f’(k,nr(l)) ← f’(k,l)
として、逆に並べ換える(ステップS50)。
【0239】
その後、並べ換えられた画素データf’(k,l)を出力して(ステップS51)、このJEX復号の処理から図4に示した処理にリターンする。
【0240】
なお、この図6に示した処理も、図5に示した処理と同様に、全ての画素ブロックについて行われるために、実際には、nを変更しながらループ処理によって上述したような処理を行うことになる。
【0241】
また、図3に示したようなJEX符号化処理により生成された拡張JPEGファイルは、通常のJPEG復号化処理によっても、その画像の概要を把握することができる程度に再生することが可能となっている。
【0242】
すなわち、通常のJPEG復号化処理は、図4に示すような復号化処理において、ステップS15の処理とステップS16の処理とを省略したものとなる。従って、JEX復号における並べ換えが行われないために、画像は8×8画素ブロック内の細部は必ずしも正確に再現がされないが、画素ブロックを単位とした画像全体としては、その画像の様子を把握することができる。特に、上述したような画素の並べ換えは、画素ブロック内の画像データの平均値を変更しないために、JEX処理を行うか行わないかにかかわらず、画像全体の概要に変化が及ぼされることはない。
【0243】
次に、図15から図22を参照して、上述したような処理により、具体的なデータが変換される様子について説明する。
【0244】
図15は、画像データから抽出されたオリジナルの8×8画素ブロックのデータ例を示す図表である。
【0245】
この画像データは、8ビット階調のモノクロ画像についてのものとなっており、0から255までの画素値をとるデータである。
【0246】
図16は、8×8画素ブロックのデータについて、行方向の和と列方向の和とをそれぞれ算出した様子を示す図表である。
【0247】
すなわち、上記図5のステップS22において、i列における画素値の加算データsc(i)と、j行における画素値の加算データsr(j)と、を算出している。
【0248】
ここで、sc(i)の最大値は1480、sc(i)の最小値は807であるために、ステップS24における第1番目の判定式の左辺は673となる。一方、該判定式の右辺はThcが2の5乗であるために、8を掛けて256となる。従って、第1番目の判定式が満たされていることが分かる。
【0249】
これに対して、sr(j)の最大値は1248、sr(j)の最小値は1107であるために、ステップS28における第1番目の判定式の左辺は141となる。これに対して、該判定式の右辺は、上記ステップS24の第1番目の判定式の右辺と同じ256である。従って、このステップS28の第1番目の判定式は満たされず、第2番目の判定式について判定を行う必要なく、ステップS31へ行ってPr=0を設定することになる。
【0250】
一方、ステップS24においては、第1番目の判定式が満たされているために、第2番目の判定式についても判定を行わなければならない。ここでは、数式15について、ウェイトを1とし、閾値Ncとして上記典型値4をとって判定を行う。この図15および図16に示すブロックデータの例では、ステップS23により算出されるnc(i)は上記図11に示すようになり、Chcは上述したように14となる。従って、第2の判定式も満たされることになり。ステップS25へ行ってPc=1を設定することになる。
【0251】
その後のステップS26の処理を行うことにより、画素ブロックのデータは、図17に示すようになる。すなわち、図17は、並べ換え後の画素ブロックのデータを示す図表である。ここに並べ換え後の画素データの下側には、列の並べ換えを示すnc(i)と、並べ換えを元に戻すための逆並べ換え順序とが示され、また、並べ換え後の画素データの右側には、行の並べ換えを示すnr(j)と、並べ換えを元に戻すための逆並べ換え順序とが示されている。ただし、上述したようにPr=0であって行の並べ換えは行わないために、nr(j)もその逆も同じである。
【0252】
なお、ステップS26の代入式を見れば分かるように、nc(i)の並びは、次のように解釈される。図17の画素ブロックの0列目には、nc(0)として「4」が入っている。従って、図15に示したオリジナルデータの4列目が、並べ換え後に0列目に入っている。同様に、図17の画素ブロックの1列目には、nc(1)として「2」が入っている。従って、図15のオリジナルデータの2列目が、並べ換え後に1列目に入っている。その他も同様である。
【0253】
その後、図3におけるステップS3の処理を行ったデータが図18に示すようになる。ここに、図18は、レベルシフトとDCTとを行ったデータを示す図表である。
【0254】
この図18に示すデータに、所定の量子化テーブルを用いて、図3におけるステップS4の処理により量子化した結果が、図19に示すようになる。ここに図19は、量子化後の8×8ブロックデータを示す図表である。
【0255】
このように、高周波成分の多くは0となっており、その後のエントロピー符号化において高い効率でデータを圧縮可能であると期待できる。
【0256】
一方、図20は、図19に示したような量子化後のデータに、図4に示すような復号化処理において逆量子化および逆DCT(IDCT)を施し、レベルシフトを行って0〜255の範囲のデータに丸めたときのデータを示す図表である。
【0257】
そして、図21は、図20に示すデータを逆パーミュテーションで並べ換えた画素ブロックを示す図表である。
【0258】
このときの、上記図17に示した逆nc(i)による並べ換えは、図20の4列目のデータが図21の0列目のデータとなり、図20の2列目のデータが図21の1列目のデータとなる、等の処理により行われる。
【0259】
次の図22は、図21に示した復号化後の画素ブロックデータから、図15に示したオリジナルの画素ブロックデータを減算した結果を示す図表である。
【0260】
すなわち、この図22は、図15に示したオリジナルの画素ブロックデータに対する、図21に示した復号化の画素ブロックデータの誤差を示すものとなっている。各画素における誤差の絶対値の合計を算出すると「756」となり、また、各誤差の2乗平均は「125」である。
【0261】
これに対して、JEX符号化を行わない通常のJPEGファイルの場合には、図30〜図33に示すような処理結果が得られる。図30は図15に示すオリジナルの8×8画素ブロックのデータにDCTを行った結果を示す図表、図31は図30に示すブロックデータを量子化した結果を示す図表、図32は図31に示すブロックデータを逆量子化し逆DCTを施しレベルシフトを行って0〜255の範囲のデータに丸めた結果を示す図表、図33は図32に示す復号化後の画素ブロックデータから図15に示したオリジナルの画素ブロックデータを減算した結果を示す図表である。
【0262】
上述したように、図15に示したようなオリジナルの画素データでは、列のみが再配列されて、行については再配列されていない。このようなケースにおいて、図18に示したようなパーミュテーションかつDCTがなされた結果を、図30に示すようなDCTのみがなされた従来の結果と比較すると、DCT係数について次のようなことが分かる。
(1) D00は、不変である。
(2) D10(の絶対値)は、増大している。
(3) D1vの絶対値が、ほぼ全てのvに対して増大する。
【0263】
D00は、いわゆる直流成分であって、画素ブロック内の画素値の平均に比例する量であるために、画素値の平均を変化させることがないパーミュテーションを行っても、当然にして不変である。
【0264】
次に、D10については、数式7に示したように、列番kの増加に従って単調減少するkの離散関数からなるベクトルV(数式8)と、各列における、列内の画素データの総和を成分とするベクトルW(数式9)と、の内積であることが分かる。従って、これらベクトルVとベクトルWの内積は、列内の画素データの総和が高い順に列を並べ替えることにより、増加することは明らかである。
【0265】
さらに、D1vに関しては、D10の場合のように単純な結論を導くことはできないが、一般に、列のそれぞれの画素値が増加すると増加するために、列内の画素データの総和が高い順に列を並べ替えることにより増加する可能性が高まるといえる。
【0266】
DCTは直交変換であって変換の前後で内積値が保存されるために、DCT係数の2乗の総和は、元の画素ブロックの画素値の2乗の総和と等しい。パーミュテーションは、画素ブロックの画素値の2乗の総和を変化させることがないために、パーミュテーションされた画素ブロックのDCT係数の2乗の総和も、元のDCT係数の2乗の総和に等しい。従って、DCT係数が低周波数領域である(0,0)、(0,1)、(0,v)に集中すれば、必然的に高周波成分が減少することになる。
【0267】
JPEGでは、DCT係数を量子化した後に、上述したように、ジグザグスキャンを行い、0(零)のDCT係数が連続する数であるラン長と、このラン長後のDCT係数の値と、に基づいてハフマン符号化する。一般的に、高周波の非ゼロ係数が数多く存在すると、ビット長が長い符号(最長の符号は、16(ラン長)+10(AC係数)=26ビット)がより多く付与されることになるために、符号量が増加する。従って、DCTの高周波成分を減らすことは、符号量を減らすのに効果的である。
【0268】
そして、図33において、各画素における誤差の絶対値の合計を算出すると「900」となり、また、各誤差の2乗平均は「152」である。
【0269】
従って、図22に示した拡張JPEGの方が、誤差が小さく、画質が改善されていることが分かる。
【0270】
また、上記図15に示したようなオリジナルの8×8画素ブロックのデータは、通常のJPEGにより符号化すると432ビットとなるのに対して、拡張JPEGにより符号化すると368ビットとなった。該図15のデータ例では、上述したように、ヘッダ部分に24ビットのヘッダ情報が付加されるが、それでも40ビット(つまり、この例では符号化後のデータ量の1割弱程度)のデータ量の削減を図ることができている。
【0271】
さらに、拡張JPEGにより符号化されたデータを、通常のJPEGにより復号化してもエラー等が発生することはなく、拡張JPEGによる復号化を行った場合ほど良好な画像を得ることはできないが、それでもブロック単位で画像の概要を把握することができる程度の画像を得ることができる。例えば、500万画素の撮像素子により撮像された画像は、2500×2000程度の解像度となるが、この画像をブロック化すると約313×250ブロックになるために、従来のJPEG復号によっても、十分に画像の概要を把握可能な画像を復号することができる。
【0272】
図26は、拡張JPEGによる処理が可能な機器と、従来のJPEGによる処理のみが可能な機器と、を組み合わせたときのシステム構成を示す図である。
【0273】
この図26に示す構成例においては、JPEGにより符号化したJPEG画像ファイル41aとJEXにより符号化したJEX画像ファイル41bとを生成可能なデジタルカメラ41と、JPEGによる復号化のみが可能なパーソナルコンピュータ(PC)42と、JEXによる復号化が可能なソフトウェア44をインストールすることにより、JPEGによる復号化とJEXによる復号化との両方を行い得るPC43と、を組み合わせたシステムを示している。
【0274】
デジタルカメラ41は、例えば、JPEG方式による画像圧縮と、JEX方式による画像圧縮と、の両方、または所望に選択した一方、を行うことができるように構成されたものであるとする。このデジタルカメラ41により、被写体を撮像してJPEG方式により圧縮して得られた画像がJPEG画像ファイル41a、同一被写体を撮像してJEX方式により圧縮して得られた画像がJEX画像ファイル41bである。JEX画像ファイル41bによる画像は、上述したように、デジタルカメラ41の撮像素子から出力されるRAW画像とのデータ誤差が、JPEG画像ファイル41aによる画像よりも小さく、より細部まで精密に再現される画質の高い画像となっている。
【0275】
デジタルカメラ41から、JPEG画像ファイル41aとJEX画像ファイル41bとを、例えば無線LANやUSBケーブルやメモリカード等を介して、PC42へ転送したとする。PC42は、JPEG復号を行うことができるために、JPEG画像ファイル41aについては復号化された表示画像42aを得ることができる。一方、JEX画像ファイル41bについては、JEX復号ではなくJPEG復号を行っても、エラーが発生することもなく復号処理を行うことができるが、画素ブロック内のパーミュテーションが元の順序に戻っていない表示画像42bとなるために、ブロック内の絵柄が崩れていわゆるブロックノイズが発生したような状態の画像となる。しかしながら、画像全体の絵柄は崩れることがないために、画像の概要を把握することが可能である。特に、画素数の多い高精細な画像は、生成されるブロック数も多くなるために、画像全体の様子を容易に把握することができる。
【0276】
次に、デジタルカメラ41から、JPEG画像ファイル41aとJEX画像ファイル41bとを、PC43へ転送したとする。このPC43は、上述したように、例えばCD−ROMやDVD、あるいは通信回線を介して供給されるソフトウェア44をインストールすることにより、JEXによる復号化を行うことが可能となっている。従って、JPEG画像ファイル41aを通常通りの表示画像43aとして復号することができるとともに、JEX画像ファイル41bはこのJPEG画像ファイル41aよりも画質の高い表示画像43bとして再現される。
【0277】
また、PC42において、ブロック状のノイズが発生したような状態で表示される表示画像42bも、PC43へ該表示画像42bに対応するJEX画像ファイル41bを転送することにより、画質の高い表示画像43bを復号することができる。
【0278】
こうして、画質を向上しながら、データ量の削減を図り、しかも拡張JPEGによって符号化した画像ファイルを、従来のJPEG復号化処理によってもある程度の画質で再現することが可能な優れた画像圧縮方式となる。
【0279】
なお、上述では、拡張JPEGファイルを生成する装置として、デジタルカメラを例に挙げたが、もちろんこれに限るものではない。拡張JPEGファイルを生成する装置としては、例えば撮像装置を一例に挙げることができる。該撮像装置は、光学的な被写体像を電子的な撮像素子等を用いて撮像することにより、画像データを取得する装置やシステムを広く含む。撮像装置としては、例えば、電子スチルカメラ、ビデオカメラ、カメラ付携帯電話、カメラ搭載型PC、内視鏡(例えば胃カメラ)などの撮影可能な医療機器、室内・外の監視カメラとこれらのカメラから得られた信号を別の場所で信号処理することにより画像データを得る監視システム、印刷された画像等を電子的に取り込むためのスキャナ、フィルム画像を電子的に取り込むためのフィルムスキャナ、などが例に挙げられる。また、拡張JPEGファイルを生成する撮像装置以外の装置としては、PCなどのコンピュータが挙げられる。すなわち、拡張JPEGの処理を行う対象となる画像は、撮影によって得られる自然画像に限るものではなく、コンピュータ等において生成されるコンピュータグラフィックスや、ビットマップ等に展開された文字データ、各種の画像データを合成したり加工したりして得られる画像データ、などを広く含んでいる。従って、こうした画像データを生成し得る装置は、広く、拡張JPEGファイルを生成する装置の対象となる。
【0280】
また、PCなどのコンピュータは、JEX符号化/復号化ソフトウェアをインストールして実行することにより、JEXの処理をソフトウェア的に行うことができるデバイスとなり得るが、一方、JEX符号化/復号化を行うための拡張ボード等を搭載することにより、JEXの処理をハードウェア的に行うことができるデバイスともなり得る。
【0281】
なお、JEXには、広義の定義と、狭義の定義とがある。広義の定義は、JPEGの処理と、JPEGには含まれない画素データの並べ換え等の処理と、の両方を含む処理全体をJEXと呼ぶものである。すなわち、広義のJEXは、JPEGを含むものとなっている。一方、狭義のJEXは、広義のJEXと、従来のJPEGと、の差分を指すものである。この場合には、画素データの並べ換え等の処理に該当する部分のみをJEXと呼ぶことになる。
【0282】
これらの定義は、JEX符号/復号処理を行うためのソフトウェアやハードウェアの提供方法に関係するものとなっている。
【0283】
すなわち、広義の定義に対応するJEX符号化ソフトウェア、またはJEX復号化ソフトウェアは、該ソフトウェア単体をPC等にインストールするだけで、JPEG画像の処理と、JEX画像の処理と、の両方を行うことができるものである。
【0284】
一方、狭義の定義に対応するJEX符号化ソフトウェアまたはJEX復号化ソフトウェアは、従来のJPEG符号化ソフトウェア(基本符号化処理プログラム)またはJPEG復号化ソフトウェア(基本復号化処理プログラム)が既にインストールされているPC等に、例えば周辺ソフトウェア、あるいはアドオンするタイプのモジュール等として追加インストールすることにより、JPEG画像の処理に加えて、JEX画像の処理も行うことができるようにするものである。
【0285】
これらは、ソフトウェアの提供方法として、適応的に使い分け、共存することが可能である。例えば、JPEG符号化/復号化ソフトウェアをもっていないユーザに対しては、広義の定義に対応するJEX符号化/復号化ソフトウェアを提供することで、ユーザは2度のインストール作業を要することなく、すぐにJPEG画像およびJEX画像を処理することができるようになる利点がある。一方、既にJPEG符号化/復号化ソフトウェアをもっているユーザに対しては、狭義の定義に対応するJEX符号化/復号化ソフトウェアを提供することで、既存のソフトウェアを拡張して、JEX画像の処理も行うことができるようになる利点がある。
【0286】
このような新しい規格は、普及を図るのが難しいという課題がある。これに対して、出願人が提案するJEXは、現在既に広範に普及しているJPEGを含む上位互換に該当するものであるために、汎用性があるという点で、普及を図るにも有利となっている。
【0287】
さらに、例えば、JEX符号化ソフトウェアは有料で提供するが、JEX復号化ソフトウェアについては無料で頒布するといったビジネス手法を取り入れることにより、短期間での広い普及を図ることも可能になると考えられる。
【0288】
また、ハードウェアについても、例えば、広義の定義に対応するJEX符号化/復号化拡張ボードを提供したり、あるいは、JPEG符号化/復号化拡張ボード(基本符号化/復号化装置)を既にもっているユーザに対して、狭義の定義に対応するJEX符号化/復号化拡張ボードを提供することが考えられる。
【0289】
次に、図27はJEXを動画像に適用し得る符号器の構成を示すブロック図、また、図34は、従来の動画像符号器の構成を示すブロック図である。
【0290】
この符号器は、減算器51と、JEX処理部52と、ヘッダ情報メモリ53と、DCT処理部54と、量子化部55と、逆量子部56と、IDCT処理部57と、逆JEX処理部58と、加算器59と、フレームメモリ60と、動き補償部61と、可変長符号化部62と、合成部63と、を有して構成されている。
【0291】
このように、JEXを適用し得る動画像符号器は、図34に示す従来の動画像符号器に対して、JEX処理部52と、ヘッダ情報メモリ53と、逆JEX処理部58と、を追加したものとなっている。また、図34に示す合成部63は、マーカなどの情報を付加するためのものであるが、この図27に示す合成部63は、さらに、JEX用のヘッダ情報を付加するものとなっている。
【0292】
上記減算器51は、入力信号から、後述する予測信号を減算して、予測誤差信号として出力するものである。
【0293】
上記JEX処理部52は、JPEGにおける処理と同様に、画素ブロック内の列に関するパーミュテーションと行に関するパーミュテーションとを必要に応じて行うものである。
【0294】
上記ヘッダ情報メモリ53は、JEX処理部53により生成されたJEX用のヘッダ情報を記憶するものである。
【0295】
上記DCT54は、JEX処理部52から出力される画素ブロックに、DCTによる空間周波数変換を行うものである。
【0296】
上記量子化部55は、DCT54から出力されるブロックデータを、量子化するものである。
【0297】
続く逆量子化部56から動き補償部61までは、量子化後のブロックデータに基づいて、予測信号を生成するための処理部となっている。
【0298】
すなわち、上記逆量子化部56は、量子化部55から出力されるブロックデータを、逆量子化するものである。
【0299】
上記IDCT57は、逆量子化部56から出力されるブロックデータを、逆DCT変換することにより、周波数空間変換を行うものである。
【0300】
上記逆JEX処理部58は、ヘッダ情報メモリ53に記憶されているJEX用のヘッダ情報を読み出して、IDCT57から出力される画素ブロック内の列に関する逆パーミュテーションと行に関する逆パーミュテーションとを行うものである。
【0301】
上記加算器59は、逆JEX処理部58から出力されるデータと、動き補償部61から出力される予測信号と、を加算して局部復号信号として出力するものである。
【0302】
上記フレームメモリ60は、加算器59から出力される局部復号信号を記憶するものである。
【0303】
上記動き補償部61は、フレームメモリ60に記憶されている局部復号信号に動き補償を行うものである。そして、この動き補償部61から出力される予測信号が、上記減算器51と加算器59とへそれぞれ出力されるようになっている。
【0304】
上記可変長符号化部62は、量子化部55から出力されるブロックデータに、ジグザグスキャンやハフマン符号化などの処理を行うものである。
【0305】
上記合成部63は、マーカなどの情報と、可変長符号化部62から出力される符号化データと、上記ヘッダ情報メモリ53から読み出したJEX用のヘッダ情報と、を合成して、符号化ビット列として出力するものである。
【0306】
なお、動画を復号化する際にも、ほぼ同様に、JEX用のヘッダ情報を用いて、逆JEX処理を行えば良いために、詳しい説明は省略する。
【0307】
ところで、例えばMPEGファイルは、フレーム内符号化画像(画像データ)であるIピクチャと、フレーム間順方向予測符号化画像(差分画像データ)であるPピクチャと、双方向予測符号化画像(差分画像データ)であるBピクチャと、で構成される。
【0308】
このような動画構造において、上述したようなパーミュテーションをどのピクチャに対してどのように適用するかについては、種々の方法が可能である。
【0309】
例えば、Iピクチャのみをパーミュテーションを用いた符号化により圧縮し、他のPピクチャおよびBピクチャは、パーミュテーションを用いない従来の符号化により圧縮する方法が考えられる。この場合には、Iピクチャのヘッダ部分へ、上記JPEGの場合に説明したような前処理のパラメータを記載する必要がある。この方法を用いれば、特にIピクチャの符号量を削減することができる。
【0310】
他の方法としては、Iピクチャを該Iピクチャを分析して得られるパーミュテーションを用いた符号化により圧縮し、他のPピクチャおよびBピクチャを、Iピクチャの対応する画素ブロックに対して適用したパーミュテーションと同一のパーミュテーションにより前処理することが考えられる。この方法を用いれば、より顕著に符号量を削減することが可能となる。
【0311】
さらに、Iピクチャに前処理を施すのではなく、Pピクチャ、Bピクチャの差分信号画素ブロックに施すことも可能であり、これは非常に効果的な方法である。つまり、差分信号画素ブロックにおいては、ほぼ全ての信号が0に近い小さな値となり、動きが存在する部分に限り、大きな信号値となっている。従って、例えば、信号値が大きなエントリーを含む列、または行のみを再配列することにより、信号値が大きなエントリーを容易に一箇所に集中させることができ、DCT係数の高周波成分を減らして、符号量を減らすことができるためである。また、PピクチャやBピクチャには、全ての差分信号が0に近い画素ブロックが存在するが、これらの差分信号ブロックに対しては、空間周波数変換であるDCTなどの符号化は一切行われないために、当然にして空間周波数変換の前処理となるパーミュテーションも行われない。また、MPEG4などの動画圧縮では、コメントやユーザデータなどのヘッダ情報は、ピクチャ毎に記述するのではなく、複数のIピクチャ、Pピクチャ、Bピクチャを含むグループ("Group of Video Object Plane")毎に記述される。従って、本実施例に係るパラメータに関しては、複数のピクチャ分の前処理のパラメータをまとめて、該グループのヘッダ部分に記述するようにする。
【0312】
なお、パーミュテーション処理が施された圧縮動画データを従来のMPEGによって再生すると、絵柄の崩れが無視し得ない程度になる。従って、動画圧縮に対してパーミュテーション前処理を施す場合は、従来のMPEGデコーダで復号されることを意図するのではなく、パーミュテーション処理を用いた拡張されたMPEGデコーダによる復号を前提とするべきである。例えば、動画圧縮時に圧縮モードを設定することができるようにし、圧縮モードを設定する際に高圧縮率を意図してパーミュテーション処理を行う(空間変換モードを設定する)か、あるいは従来のMPEGによる復号化を想定して行わない(空間変換モードを設定しない)か、を選択することができるようにすると良い。
【0313】
このような構成によれば、動画に関する符号化を行う際に、JEXによる処理を行うことにより、より画質が良く圧縮率の高い動画像データを得ることができる。
【0314】
なお、上述では、8×8画素ブロックのデータを行のパーミュテーションと、列のパーミュテーションとを組み合わせることにより、画素の置き換えを行った。この場合には、変換後に取り得る画素配置は8!×8!通りである。これに対して、64個の画素を64カ所の画素位置に格納する画素配置は64!通りある。従って、行のパーミュテーションと列のパーミュテーションとの組み合わせでは成し得ない画素配置が存在することになり、最も圧縮率が高い画素配置を取り得るとは限らないことが分かる。原理的には、8×8画素ブロックを64次元のベクトルとして表現して、このベクトルの成分同士をパーミュテーションにより例えば降べきの順(あるいは昇べきの順)に並べ換え、その後に、ジグザグスキャン部11において行われているのと同様の方法により、8×8画素ブロック内に左上角の画素位置からジグザグに格納していくことにより、より圧縮率の高い画素配置を達成し得ると考えられる。ただし、この場合には、ヘッダ部に記載するべきJEXヘッダ情報が大きなサイズのものとなって、トータルの画像ファイルサイズが大きくなってしまうことが考えられる。
【0315】
このような実施例1によれば、空間周波数変換を行う前の画素空間に対して、該画素空間内における画素空間変換を施すようにしたために、空間周波数変換後の高周波成分を抑制することができ、より高い圧縮率の符号化が可能になるとともに、画質の劣化が少ない高品質の符号化を行うことが可能となる。
【0316】
このとき、空間周波数変換として線形可逆マッピングを用いているために、復号化時に該空間周波数変換によるデータ落ちを発生させることなく、画像を復元することができる。
【0317】
そして、線形可逆マッピングの中でも、特に、線形可逆パーミュテーションを用いているために、演算処理を高速に行うことができ、かつ画素の平均値や統計値等を変化させることがない。
【0318】
さらに、この拡張JPEG(JEX)により符号化した画像ファイルは、従来のJPEG復号化処理を行うことも可能であり、このときにはブロック単位のノイズが発生するものの、画像の概要を把握するのにはさほど差し支えがない程度に画像を再現することができるという利点がある。
【実施例2】
【0319】
図35から図59は本発明の実施例2を示したものであり、図35は拡張されたJPEG符号器の構成を示すブロック図である。
【0320】
この実施例2において、上述の実施例1と同様である部分については同一の符号を付して説明を省略し、主として異なる点についてのみ説明する。
【0321】
上述した実施例1における拡張されたJPEG符号器は、通常のJPEG符号化処理の前処理としてパーミュテーションを行うものであったが、この実施例2における拡張されたJPEG符号器は、通常のJPEG符号化処理の前処理として可逆なローパスフィルタ(LPF)処理(これも、可逆な画素空間変換の1つである。)を行うものとなっている。
【0322】
すなわち、この実施例2における拡張されたJPEG符号器は、実施例1の図1に示した構成における列操作判定部4と行操作判定部5とを取り除いて、代わりに空間変換手段たるフィルタ部14を設けたものとなっている。このフィルタ部14へは、符号化制御部2から符号化を制御するために必要な制御パラメータ等が入力されるようになっている。
【0323】
また、該符号化制御部2から、量子化テーブル生成部9により生成される量子化テーブルを制御するための後述するスケールファクターSF等が入力されるようになっている。このスケールファクターSFは、該量子化テーブル生成部9を介して、合成部13へも入力され、ヘッダ情報へ付加されるようになっている。
【0324】
次に、図36は、拡張されたJPEG復号器の構成を示すブロック図である。
【0325】
この図36に示す拡張されたJPEG復号器は、上記図35に示した拡張されたJPEG符号器により符号化された画像データを復号化するためのものである。
【0326】
すなわち、この実施例2における拡張されたJPEG復号器は、実施例1の図2に示した構成における行操作部31と列操作部32と復号化制御部30とを取り除いて、代わりに逆空間変換手段たる逆フィルタ部34を設けたものとなっている。この逆フィルタ部34へは、ヘッダ復号部29から復号化を制御するために必要な制御パラメータ等が入力されるようになっている。
【0327】
この実施例2における広義の意味でのJEX処理全体の流れは、実施例1の図3に示したものと同様である。
【0328】
図37は、図3のステップS2におけるJEX符号の処理の概要を示すフローチャートである。
【0329】
この実施例2のJEX符号化処理は、ローパスフィルタ処理を行う際に必要な制御パラメータを決定するために行われるJEX(LPF)前処理(ステップS61)と、決定された制御パラメータに基づいて画像をローパスフィルタ処理するJEX(LPF)本処理(ステップS62)と、の2段階に渡って行われる。
【0330】
図38は、図37のステップS61におけるJEX(LPF)前処理の詳細を示すフローチャートである。
【0331】
この処理が開始されると、ユーザ入力(ステップS70)と、データ入力(ステップS71)と、が行われる。ユーザの設定により入力される項目としては、「Choice」と呼ばれる設定項目と、「Method」と呼ばれる設定項目と、がある。
【0332】
後者の設定項目Methodは、狭義のJEX符号化処理としてのローパスフィルタ処理を、圧縮率を高くすることを主眼として行うか、あるいは画質を高くすることを主眼として行うか、を選択するための項目となっている。ここで、高圧縮率が選択されたときにはMethod=1が設定され、高画質が選択されたときにはMethod=0が設定されるようになっている。
【0333】
また、前者の設定項目Choiceは、項目Methodで選択された高圧縮率または高画質に対して、その程度をどこまで追求するかを示す尺度となっていて、Choice=0が選択されたときには予め定められている標準の程度が設定され、Choice=1が選択されたときには上記標準の程度よりも強い程度が設定され、Choice=2が選択されたときには最強の程度が選択されるようになっている。
【0334】
一方、データ入力は、例えば符号化制御部2に予め記憶されている参照ブロック数NTestが入力されるようになっている。画像は上述したように8×8画素ブロック単位で処理されるようになっており、例えば640×480画素でなるVGA画像の場合には、80×60=4800がトータルブロック数NTotal となる。上記参照ブロック数NTestは、このようなトータルブロック数NTotal 以下の範囲内で、適宜の数が設定されるようになっている。
【0335】
この参照ブロック数NTestを決定する方法としては、例えば、次の数式46に示すようにして、トータルブロック数NTotal に応じて設定することが考えられる。
[数46]

ここに、数式46における大括弧は、括弧内の数値を超えない最大の整数を表し、max(A,B)は、AとBとの内の大きい方をとることを意味している。
【0336】
この数式46を用いた場合には、上記VGA画像の例では、参照ブロック数NTestは17となる。
【0337】
なお、この数式46に示したものは一例であって、その他の手段により参照ブロック数NTestを決定するようにしてももちろん構わない。
【0338】
次に、画像を構成する全ての8×8画素ブロックの中から、上記ステップS71で入力された参照ブロック数NTest個の8×8画素ブロックをランダムに選択する(ステップS72)。なお、ここでは全画素ブロックの中からランダムに選択するようにしているが、これに限らず、適宜の位置の画素ブロックを選択するようにしても構わない。例えば、画像の中央に主要被写体がある場合に、該主要被写体に対する処理を最適化したいときには、選択する画素ブロックを画像の中央付近により高い割合で配置することが考えられる。
【0339】
続いて、上記ステップS72で選択された各8×8画素ブロックの画像データに対して、図39に示すような(η,SF)テーブルに基づいて、ローパスフィルタ処理を含む広義のJEX符号化処理を行う(ステップS73)。
【0340】
ここに、図39は、設定項目Choiceに応じて選択される制御パラメータの組み合わせ(η,SF)を示す図表である。この図39に現れる制御パラメタの内のηは、ローパスフィルタの強さを設定するためのパラメータである。すなわち、この実施例2においては、8×8画素ブロックの画素データf(k,l)を8行8列の行列として表現したときに、次の数式47に示すようなLPF行列L(k,η)を掛けることにより、ローパスフィルタ処理を行うようになっている。
[数47]

【0341】
この数式47において、対角要素を左上から右下へ向けて順に見たときに最初に現れる1−ηは、k行k列(k=0,…,6)にあるものとする。ここに、ηは、0≦η<(1/2)の範囲の値を取り得るようになっている。なお、η=(1/2)は、後述する数式48を見れば分かるように、逆行列が存在しない(非可逆である)ために除外されている。また、η>(1/2)は、ある画素位置の画素データに、他の画素位置の画素データを、自分自身よりも大きい割合で加えることになってしまい、ローパスフィルタとしては過剰になるために除外されている。
【0342】
このηは、0のときには行列L(k,η)が単位行列となってローパスフィルタ効果が0となり、0に近いときにはローパスフィルタ効果が小さく、(1/2)に近付くにつれて大きなローパスフィルタ効果を奏するようになっている。
【0343】
なお、画素データf(k,l)に対して、LPF行列L(k,η)を左から掛けると縦フィルタ演算(隣接する行同士のギャップを減らす演算)が行われ、右から掛けると横フィルタ演算(隣接する列同士のギャップを減らす演算)が行われる。つまり、画素データf(k,l)のある行におけるk列の要素がa、(k+1)列の要素がbであるとし、これにLPF行列L(k,η)を例えば右から掛けたとする。すると、演算後の同行k列の要素は(1−η)a+ηbとなり、演算後の同行(k+1)列の要素はηa+(1−η)bとなる。従って、演算前の横方向のギャップ|a−b|に対して、演算後の横方向のギャップは(1−2η)|a−b|となり、上記ηの取り得る範囲から0<(1−2η)≦1であるために、横方向のギャップが抑制されていることが分かる。なお、LPF行列L(k,η)を左から掛けた場合も、ほぼ同様にして、縦方向のギャップが抑制されることが分かる。
【0344】
そして、DCTにおけるDC成分は、このローパスフィルタによって変化しないという特徴を有している。
【0345】
また、逆LPF演算を行うための行列を数式48に示す。
[数48]

【0346】
上記数式47の逆行列であるこの数式48において、対角要素を左上から右下へ向けて順に見たときに最初に現れる(1−η)/(1−2η)は、k行k列(k=0,…,6)にあるものとなっている。
【0347】
なお、これら数式47および数式48に示した行列は、LPFおよび逆LPFを行うための行列の一例を示したものであり、これらに限るものではない。
【0348】
そして、図39に示す例においては、ηとして取り得る値が、0,(1/8),(1/6),(1/5),(1/4)の5種類となっている。これらは実用性に鑑みて設定したものであるが、もちろん一例であって、他の値を取り得るようにしても構わない。
【0349】
一方、図39に示す制御パラメータの内のSFは、量子化テーブル(Qテーブル)に積算することにより、量子化ステップを制御するためのパラメータとなっている。該図39に示す例においては、SFとして取り得る値が、1,(7/8),(6/8),(5/8),(4/8),(3/8)の6種類となっている。ここに、SF=1の場合には、オリジナルの量子化テーブルをそのまま用いることを示している。このスケールファクターSFについても、他の値を設定することができるようにしても構わないのは同様である。
【0350】
このような図39に示すテーブルおいて、○で示される組み合わせ(η,SF)が、設定項目Choice=0のときに選択されるデフォルト値となっている。また、□で示される組み合わせ(η,SF)が、設定項目Choice=1のときに、上記○で示される組み合わせ(η,SF)に対して追加して選択されるオプション値となっている。さらに、△で示される組み合わせ(η,SF)が、設定項目Choice=2のときに、上記○および□で示される組み合わせ(η,SF)に対して追加して選択される値となっている。
【0351】
こうして、上記ステップS72で選択されたNTest個の8×8画素ブロックni (ここに、変数ni は、全ての参照8×8画素ブロックを指し示す変数である。)のそれぞれについて、設定項目Choiceの値に応じて選択された各組み合わせ(η,SF)を用いて、ローパスフィルタ処理を含む広義のJEX符号化処理が行われる。これにより、各参照8×8画素ブロックデータf(k,l)に、ローパスフィルタ処理、DCT、およびハフマン符号化が行われた画像データが得られる。
【0352】
その後、符号化された画像データに、広義のJEX復号化処理を行う。これにより、ハフマン復号化、逆DCT、および逆ローパスフィルタ処理が行われた8×8画素ブロックデータf’(k,l)が得られる。そして、符号化前の8×8画素ブロックデータf(k,l)から、符号化および復号化後の8×8画素ブロックデータf’(k,l)を減算して絶対値を取り、各画素に係る絶対値の総和を取ることにより、差分の絶対値の総和Abs(ni ,η,SF)を算出する。
【0353】
さらに、広義のJEX符号化処理により得られたハフマン符号の符号長と、該8×8画素ブロックに係るヘッダ情報のビット長と、を加算したものを、Bit(ni ,η,SF)として算出する(ステップS74)。
【0354】
こうして得られたAbs(ni ,η,SF)およびBit(ni ,η,SF)を用いて、全ての参照8×8画素ブロックni に関し、画質評価値Abs(η,SF)および符号長評価値Bit(η,SF)を、次の数式49および数式50に示すように算出する。
[数49]

[数50]

ここに、記号「:=」は代入を意味している。
【0355】
上記画質評価値Abs(η,SF)は、値が小さいほど高画質であることを示し、上記符号長評価値Bit(η,SF)は、値が小さいほど高圧縮率であることを示すものとなっている。
【0356】
そして、Choiceの値に応じて(η,SF)テーブルから選択される全ての組み合わせ(η,SF)について、処理を行ったか否かを判断し(ステップS75)、まだ未処理の組み合わせ(η,SF)がある場合には、上記ステップS73へ行って、次の組み合わせ(η,SF)について処理を行う。
【0357】
こうして、ステップS75において、全ての組み合わせ(η,SF)についての処理が行われたと判断された場合には、項目Methodが1であるか否かをさらに判断する(ステップS76)。
【0358】
ここで、Method=1である場合には、高圧縮率が選択されていることになるために、Abs(η,SF)≦Abs(0,1)を満たす組み合わせ(η,SF)の内の、Bit(η,SF)が最小になる組み合わせ(η1 ,SF1 )を抽出する。ここに、条件Abs(η,SF)≦Abs(0,1)は、通常のJPEG処理を行ったときよりも画質が劣化することがない、という条件を、必要条件として課しているためである。なお、Bit(η,SF)が最小になる組み合わせ(η1 ,SF1 )が複数ある場合には、Abs(η,SF)がより小さくなる方を選択すると、さらに画質も合わせて向上することが可能となる。一方、Abs(η,SF)≦Abs(0,1)を満たす組み合わせ(η,SF)が存在しない場合には、ローパスフィルタ処理を行わないことを示す(0,1)が自動的に設定される(ステップS77)。
【0359】
また、上記ステップS76において、Method=1でない(つまり、このときにはMethod=0となる)であると判断された場合には、高画質が選択されていることになるために、Bit(η,SF)≦Bit(0,1)を満たす組み合わせ(η,SF)の内の、Abs(η,SF)が最小になる組み合わせ(η0 ,SF0 )を抽出する。ここに、条件Bit(η,SF)≦Bit(0,1)は、通常のJPEG処理を行ったときよりもデータサイズが大きくなることがない、という条件を、必要条件として課しているためである。なお、Abs(η,SF)が最小になる組み合わせ(η0 ,SF0 )が複数ある場合には、Bit(η,SF)がより小さくなる方を選択すると、さらに圧縮率も合わせて向上することが可能となる。一方、Bit(η,SF)≦Bit(0,1)を満たす組み合わせ(η,SF)が存在しない場合には、ローパスフィルタ処理を行わないことを示す(0,1)が自動的に設定される(ステップS78)。
【0360】
上記ステップS77またはステップS78の処理が終了したら、選択された(η,SF)を出力してから(ステップS79)、このJEX(LPF)前処理を終了する。
【0361】
次に、図40は、図37のステップS62におけるJEX(LPF)本処理の詳細を示すフローチャートである。
【0362】
このJEX(LPF)本処理は、上記図38に示したようなJEX(LPF)前処理において設定された(η,SF)に基づいて、画像全体にローパスフィルタ処理を行うものとなっている。
【0363】
すなわち、この処理を開始すると、n(ここに、n=1,…,NTotal )番目の8×8画素ブロックf(k,l)を入力する(ステップS81)。
【0364】
そして、データセットDAを入力する(ステップS82)。このデータセットDAは、上記ηと、Thc2と、Thr2と、Modeベクトルと、Posベクトルと、を含んだデータの組みとなっている。ここに、Thc2は、後述する横方向差分の最大値Vscが、横フィルタ演算を行う必要があるほど大きいか否かを判断するための閾値である。また、Thr2は、後述する縦方向差分の最大値Vsrが、縦フィルタ演算を行う必要があるほど大きいか否かを判断するための閾値である。そして、Modeベクトルは、ここでは8次元のベクトルとして定義されていて、縦フィルタ演算と横フィルタ演算との何れが行われたかを示す値が設定されるようになっている。一例としては、縦フィルタ演算を示す値として「1」が、横フィルタ演算を示す値として「2」が、それぞれ設定されるようになっている。なお、ベクトルの次元数8は、縦フィルタ演算または横フィルタ演算でなるローパスフィルタ演算を、合計最大8回まで行うことを示している。ローパスフィルタ処理を何度も繰り返すと、画像は次第に平坦になっていくために、過度の平坦化を抑制するために、ここでは上限を8回と定めている。なお、この上限が8回に限るものではないことはもちろんである。さらに、Posベクトルは、縦フィルタ演算または横フィルタ演算が行われる対象となる8×8画素ブロックの行番号、または列番号が記録されるベクトルである。これらModeベクトルおよびPosベクトルの具体的な例については、後で図55を参照して説明する。
【0365】
次に、ループ回数を示す変数Loopに、1を代入する(ステップS83)。ここに、記号「:=」は、上述したように、代入を意味している。
【0366】
そして、Loopが8よりも大きいか否かを判断し(ステップS84)、大きくない場合には、横方向差分の最大値Vscと、この最大値Vscを与える列番号kの内の最小のものkcと、を算出する(ステップS85)。
【0367】
続いて、縦方向差分の最大値Vsrと、この最大値Vsrを与える列番号lの内の最小のものlrと、を算出する(ステップS86)。
【0368】
こうして算出した最大値Vscが、最大値Vsrよりも大きいか否かを判断し(ステップS87)、大きい場合にはさらに最大値Vscが閾値Thc2よりも大きいか否かを判断する(ステップS88)。ここで、最大値Vscが閾値Thc2よりも大きい場合には、横フィルタ演算を次の数式51に示すように行うとともに、Mode(Loop):=1およびPos(Loop):=kcを設定する(ステップS90)。
[数51]

【0369】
一方、上記ステップS87において、最大値Vscが最大値Vsr以下であると判断された場合には、さらに、最大値Vsrが閾値Thr2よりも大きいか否かを判断する(ステップS89)。ここで、最大値Vsrが閾値Thr2よりも大きい場合には、縦フィルタ演算を次の数式52に示すように行うとともに、Mode(Loop):=2およびPos(Loop):=lrを設定する(ステップS91)。
[数52]

【0370】
上記ステップS90またはステップS91が終了した場合、上記ステップS88において最大値Vscが閾値Thc2以下であると判断された場合、上記ステップS89において最大値Vsrが閾値Thr2以下であると判断された場合、には、変数Loopをインクリメントしてから(ステップS92)、上記ステップS84へ戻って上述したような処理を繰り返して行う。
【0371】
こうして、上記ステップS84において、変数Loopが8よりも大きくなったことが確認されたところで、ヘッダ情報Phl(n)を生成し(ステップS93)、LPFが施されたf(k,l)およびヘッダ情報Phl(n)を出力して(ステップS94)、このJEX(LPF)本処理を終了する。
【0372】
なお、この図40では、1つ(n番目)の8×8画素ブロックについての処理を示したが、実際の処理では、NTotal 個の8×8画素ブロックについてこのような処理を行うことはいうまでもない。
【0373】
図41は、図40のステップS85におけるVscおよびkcの算出処理の詳細を示すフローチャートである。
【0374】
この処理を開始すると、8×8画素ブロックf(k,l)を横シフトしたデータを算出する(ステップS101)。
【0375】
そして、元のデータf(k,l)から、横シフト(左シフト)したデータを減算し、絶対値をとることにより、差分絶対値を演算する(ステップS102)。ただし、元のデータはk=0,…,7までの8列分あるのに対して、横シフトしたデータはk=0,…,6までの7列分であるために、減算はk=0,…,6の7列分について行われ、算出される差分絶対値のデータは7×8=56個である。
【0376】
こうして算出された差分絶対値の内の、最大値Vscを探索する(ステップS103)。この最大値Vscを探索する処理を数式で表すと、次の数式53に示すようになる。
[数53]

【0377】
そして、最大値Vscを与える列番号kの内の最小のものkcを探索して(ステップS104)、この処理を終了する。なお、ステップS104の処理は、最大値Vscを与える列番号kが複数あるときにのみ機能し、1つしかないときには探索するまでもなくその列番号kが選択される。
【0378】
図42は、図40のステップS86におけるVsrおよびlrの算出処理の詳細を示すフローチャートである。
【0379】
この処理を開始すると、8×8画素ブロックf(k,l)を縦シフトしたデータを算出する(ステップS105)。
【0380】
そして、元のデータf(k,l)から、縦シフト(上シフト)したデータを減算し、絶対値をとることにより、差分絶対値を演算する(ステップS106)。ただし、元のデータはl=0,…,7までの8行分あるのに対して、横シフトしたデータはl=0,…,6までの7行分であるために、減算はl=0,…,6の行分について行われ、算出される差分絶対値のデータは7×8=56個である。
【0381】
こうして算出された差分絶対値の内の、最大値Vsrを探索する(ステップS107)。この最大値Vsrを探索する処理を数式で表すと、次の数式54に示すようになる。
[数54]

【0382】
そして、最大値Vsrを与える行番号lの内の最小のものlrを探索して(ステップS108)、この処理を終了する。なお、ステップS108の処理は、最大値Vsrを与える行番号lが複数あるときにのみ機能し、1つしかないときには探索するまでもなくその行番号lが選択される。
【0383】
次に、図43は、JEX(LPF)復号処理を示すフローチャートである。
【0384】
この処理を開始すると、n番目のIDCT変換ブロックf’(k,l)と、ヘッダ情報Phl(n)と、LPFの強さを示すパラメータηと、を入力する(ステップS111)。
【0385】
そして、Mode(1),…,Mode(8)の全てに0を代入することにより、8次元ベクトルModeを初期化する(ステップS112)。なお、図43において、iの前に付した「A」の上下を反転させた記号は、任意のiを示す記号である。
【0386】
続いて、ヘッダ情報Phl(n)の第2ビットからセパレータ「000」までのビット情報を、2ビットずつ、Mode(1),Mode(2),…の順に代入していくとともに、セパレータ「000」から最後のビットまでのビット情報を3ビットずつPos(1),Pos(2),…の順に代入していく(図44,図45等参照)(ステップS113)。
【0387】
そして、ループ回数を示す変数Loopに、1を代入する(ステップS114)。
【0388】
次に、ループ回数に応じたモードベクトルの成分Mode(Loop)が2であるか否かを判断し(ステップS115)、Mode(Loop)が2である場合には、次の数式55により、逆縦フィルタ演算を行う(ステップS116)。
[数55]

【0389】
一方、上記ステップS115において、Mode(Loop)が2でないと判断された場合には、次に、Mode(Loop)が1であるか否かを判断する(ステップS117)。
【0390】
ここで、Mode(Loop)が1である場合には、次の数式56により、逆横フィルタ演算を行う(ステップS118)。
[数56]

【0391】
上記ステップS116またはステップS118が終了した場合には、変数Loopをインクリメントしてから(ステップS119)、変数Loopが8よりも大きいか否かを判断する(ステップS120)。
【0392】
ここで、変数Loopが8以下である場合には、上記ステップS115へ戻って上述したような処理を繰り返して行う。
【0393】
一方、変数Loopが8よりも大きいと判断された場合、または上記ステップS117においてMode(Loop)が1でないと判断された場合には、変換されたf’(k,l)を出力して(ステップS121)、このJEX(LPF)復号処理を終了する。
【0394】
なお、この図43では、1つ(n番目)のIDCT変換ブロックについての処理を示したが、実際の処理では、NTotal 個のIDCT変換ブロックについてこのような処理を行うことはいうまでもない。
【0395】
図44は、ModeベクトルおよびPosベクトルの例を示す図表である。
【0396】
この図44に示す例は、1つの8×8画素ブロックについて、8回のLPF処理が行われた例となっている。この例では、i=4,8のときのみがMode(i)=2となっていて、縦フィルタ演算が行われたことを示しており、その他は全て横フィルタ演算が行われたことを示している。このMode(i)は、各2ビット値となっている。また、各iにおけるフィルタ演算が行われた行番号または列番号は、Pos(i)で示されており、そのビット表現も合わせて示されている。k,lは、ともに0〜7の範囲を取るために、ビット表現は、3ビット値となっている。
【0397】
なお、LPF処理は、最大で8回行われるが、8回未満で終了することもある。例えばj(j≦7)でLPF処理が終了したとすると、このときにはMode(j)の次にセパレータを記録し、Pos(1),…,Pos(j)をその後に記録することになる。
【0398】
図45は、ヘッダ情報Phl(n)の例を示す図表である。
【0399】
図示のように、n番目の8×8画素ブロックに係るヘッダ情報Phl(n)は、インディケータIndと、Mode(i)と、セパレータ(Separator)と、Pos(i)と、を含んで構成されている。
【0400】
インディケータIndは、フィラーと区別してデータ開始位置を示すための1ビットデータであり、全ての8×8画素ブロックに対して「1」が設定される。
【0401】
Mode(i)は、上記図44に示した「1」または「2」のデータが、2ビット値として順に記録された部分である。
【0402】
セパレータは、Mode(i)とPos(i)とを区分するためのものであり、3ビット値で表現された0(つまり、ビット表現で「000」)となっている。
【0403】
Pos(i)は、上記図44に示したビット表現のデータが順に記録された部分である。
【0404】
また、LPF処理が一切施されなかった場合には、Phl(n)=「100」となる。
【0405】
図46は、画像全体に係るグローバルヘッダの例を示す図表である。
【0406】
このグローバルヘッダは、上述した実施例1と同様に、例えば図24に示したコメントCOM部分や、EXIFファイルのアプリケーションマーカセグメント等に記録されるようになっている。
【0407】
該グローバルヘッダは、バイナリ(ASCIIデータ)として記録される「JEX」と、4ビット値として記録されるカテゴリと、8ビット値を3個分含む値(つまり、合計24ビット値)として記録されるグローバルパラメータと、全ブロックに対するヘッダPhl(n)と、を含んで構成されていて、さらに、必要に応じてフィラーが付加されるようになっている。
【0408】
図47は、グローバルヘッダのカテゴリに記録するビット値の例を示す図表である。
【0409】
この例においては、カテゴリを4ビットのビット値で示すようになっている。まず、カテゴリ「0000」は、狭義のJEX処理を行わないことを示し、この場合には、広義のJEX処理が、通常のJPEG処理と一致する。
【0410】
次に、カテゴリ「0001」は、狭義のJEX処理として、実施例1で説明したようなパーミュテーションを行うことを示している。
【0411】
カテゴリ「0010」は、狭義のJEX処理として、この実施例2で説明している可逆LPF処理を行うことを示している。
【0412】
カテゴリ「0011」は、狭義のJEX処理として、パーミュテーションと、可逆LPF処理と、を併用することを示している。このケースについては、後で実施例3として説明する。
【0413】
なお、カテゴリとして割り当て可能なその他のビット値は、その他のJEX処理のための予約領域となっている。
【0414】
続いて、図48は、図46に示したグローバルパラメータの最初の8ビット値の例を示す図表である。
【0415】
ここでは、グローバルパラメータの最初の8ビット値として、パラメータηに対応するビット値を記録するようになっている。例えば、図39に示したようなηの各値に対して、η=0のとき「00000000」が、η=(1/8)のとき「00000001」が、η=(1/6)のとき「00000010」が、η=(1/5)のとき「00000011」が、η=(1/4)のとき「00000100」が、それぞれビット値として記録されるようになっている。
【0416】
また、図49は、図46に示したグローバルパラメータの2番目の8ビット値の例を示す図表である。
【0417】
ここでは、グローバルパラメータの2番目の8ビット値として、スケールファクターSFに対応するビット値を記録するようになっている。例えば、図39に示したようなSFの各値に対して、SF=1のとき「00000000」が、SF=(7/8)のとき「00000001」が、SF=(6/8)のとき「00000010」が、SF=(5/8)のとき「00000011」が、SF=(4/8)のとき「00000100」が、SF=(3/8)のとき「00000101」が、それぞれビット値として記録されるようになっている。
【0418】
なお、図46に示したグローバルパラメータの3番目の8ビット値は、予約領域となっている。
【0419】
図50は、画像データから抽出されたオリジナルの8×8画素ブロックのデータ例を示す図である。
【0420】
この図50に示す画像データは、画素値「10」の領域と、画素値「222」の領域と、に分かれており、例えば文字データ等の比較的コントラストが強い画像データとなっている。
【0421】
まず、図51から図54を参照して、図50に示す画像データを、通常のJPEGにより処理したときについて説明する。
【0422】
図51は、上記図50に示すオリジナルの8×8画素ブロックのデータにレベルシフトおよびDCTを行った結果を示す図表である。
【0423】
また、図52は、上記図51に示すブロックデータを量子化した結果を示す図表である。
【0424】
さらに、図53は、上記図52に示すブロックデータを逆量子化し逆DCTを施しレベルシフトを行って0〜255の範囲のデータに丸めた結果を示す図表である。
【0425】
そして、図54は、上記図53に示す復号化後の画素ブロックデータから、図50に示したオリジナルの画素ブロックデータを減算した結果を示す図表である。
【0426】
この図54に示す誤差の絶対値を合計すると685となり、また、JPEG符号化後の符号長は193ビットとなっている。
【0427】
これに対して、図55から図59は、可逆LPFによるJEX処理を行ったときの例を示している。
【0428】
まず、図55は、ヘッダ情報から抽出されたモード情報およびフィルタ位置情報の例を示す図表である。この図55に示す例は、上記図44に示した例に対応するものとなっている。
【0429】
ヘッダ情報のModeベクトルから抽出されるモード(mode)情報に基づいて、演算が縦フィルタ演算であるか横フィルタ演算であるかを区別することができるとともに、Posベクトルから抽出されるフィルタ位置kc,lrの情報に基づいて、どの位置にフィルタ演算を行うかを判断することが可能となっている。
【0430】
次に、図56は、上記図50に示すオリジナルの8×8画素ブロックのデータに、上記図55に示したような8回のローパスフィルタ処理を行った結果を示す図表である。この図56に示す結果からは、「10」の画素値をとる画素が少なくなって、全体的に高周波成分が低減されたことが伺える。なお、該図56を見れば分かるように、ローパスフィルタ処理後の画素値は小数点を持つ値となっているが、これは、画素値同士を混交させるローパスフィルタ処理を高い精度で行うために、浮動小数点演算が実行されているからである。
【0431】
続いて、図57は、上記図56に示すローパスフィルタ処理後の8×8画素ブロックのデータにレベルシフトおよびDCTを行った結果を示す図表である。この図57を、上記図51と比べれば分かるように、可逆ローパスフィルタによって、DC成分が「116」のまま不変に保たれている。そして、高周波成分が明らかに低減していることが分かる。
【0432】
そして、図58は、上記図57に示すブロックデータを量子化した結果を示す図表である。
【0433】
この例においては、スケールファクタSFが「1」の条件で量子化が行われており、つまり、オリジナルの量子化テーブルをそのまま用いての量子化となっている。この図58に示す結果を、上記図52に示す結果と比べると、高周波成分が「0」になっている部分が増加していることが分かる。これにより、より高い圧縮率を達成し得ると期待することができる。
【0434】
さらに、図59は、上記図58に示すブロックデータを逆量子化し逆DCTを施しレベルシフトを行って逆LPF処理を行い、0〜255の範囲のデータに丸めた結果を示す図表である。
【0435】
この図59に示す復号化後の画素ブロックデータから、図50に示したオリジナルの画素ブロックデータを減算して、その絶対値を合計すると522となる。これにより、図53に示したJPEG復号化後の結果(誤差の絶対値の合計が685)よりも、画質が向上していることが分かる。
【0436】
また、JEX符号化後の符号長は125ビットであり、上記図45に示したヘッダ情報のビット長は44ビットであるために、合計169ビットとなる。従って、従来のJPEG符号化後の符号長である193ビットよりも小さく、ヘッダ情報部分を含めても、圧縮率が向上していることが分かる。
【0437】
このような実施例2によれば、可逆な画素空間変換として可逆ローパスフィルタ処理を行うことによっても、上述した実施例1とほぼ同様の効果を奏することが可能となる。
【実施例3】
【0438】
図60から図63は本発明の実施例3を示したものであり、図60はローパスフィルタとパーミュテーションとを組み合わせたJEX本処理の例を示すフローチャートである。この実施例3において、上述の実施例1,2と同様である部分については同一の符号を付して説明を省略し、主として異なる点についてのみ説明する。
【0439】
この実施例3は、実施例1で説明したようなパーミュテーションと、実施例2で説明したようなローパスフィルタ処理と、の何れかより効果的な方を、8×8画素ブロック毎に択一的に実行するようにしたものである。従って、1つの画像データの中で、ある8×8画素ブロックにはパーミュテーションが行われ、他のある8×8画素ブロックにはローパスフィルタ処理が行われる、ということになる。
【0440】
なお、この図60に示すJEX(LPF+パーミュテーション)本処理は、上述した実施例2の図37に示したステップS62のJEX(LPF)本処理に代えて行われるものとなっている。従って、このJEX(LPF+パーミュテーション)本処理を行うときには、既にJEX(LPF)前処理が終了していることが前提である。
【0441】
この処理を開始すると、まず、JEX(パーミュテーション)に基づいて並べ換えられたf(k,l)p とヘッダ情報Ph(n)とを計算し、さらに、絶対差分の和Abs(n)およびハフマン符号長Bit(n)を計算する(ステップS131)。
【0442】
次に、JEX(LPF)に基づいてLPF処理されたf(k,l)L とヘッダ情報Phl(n)とを計算し、さらに、絶対差分の和Abs(n,η,SF)およびハフマン符号長Bit(n,η,SF)を計算する(ステップS132)。
【0443】
その後、Methodが1であるか否かを判断し(ステップS133)、1である場合(つまり、高圧縮率が選択されている場合)にはパーミュテーションのハフマン符号長Bit(n)がLPFのハフマン符号長Bit(n,η,SF)よりも小さいか否かを判断する(ステップS134)。
【0444】
また、上記ステップS133において、Methodが1でない場合(つまり、高画質が選択されている場合)には、パーミュテーションの絶対差分の和Abs(n)がLPFの絶対差分の和Abs(n,η,SF)よりも小さいか否かを判断する(ステップS135)。
【0445】
上記ステップS134において、パーミュテーションのハフマン符号長Bit(n)がLPFのハフマン符号長Bit(n,η,SF)以上である場合、または、上記ステップS135において、パーミュテーションの絶対差分の和Abs(n)がLPFの絶対差分の和Abs(n,η,SF)以上である場合には、LPF処理されたf(k,l)およびヘッダ情報Phl(n)を出力する(ステップS136)。
【0446】
一方、上記ステップS134において、パーミュテーションのハフマン符号長Bit(n)がLPFのハフマン符号長Bit(n,η,SF)よりも小さい場合、または、上記ステップS135において、パーミュテーションの絶対差分の和Abs(n)がLPFの絶対差分の和Abs(n,η,SF)よりも小さい場合には、パーミュテーション処理されたf(k,l)およびヘッダ情報Ph(n)を出力する(ステップS137)。
【0447】
こうして、ステップS136またはステップS137が行われたら、このJEX(LPF+パーミュテーション)本処理を終了する。
【0448】
なお、この図60に示したような処理を、8×8画素ブロック毎に行うのは上述した通りである。
【0449】
次に、図61は上記図60のステップS137において生成されるヘッダ情報の例を示す図表、図62は上記図60のステップS136において生成されるヘッダ情報の例を示す図表、である。
【0450】
パーミュテーション処理が行われたときに生成されるヘッダ情報Ph(n)は、上述した実施例1の図25に示したヘッダ情報Ph(n)と、LPF処理が行われたときに生成されるヘッダ情報Phl(n)は、上述した実施例2の図45に示したヘッダ情報Phl(n)と、それぞれほぼ同様であるが、何れも、インディケータIndの直後に、カテゴリCatが記録されるようになっている点が異なっている。これら図61、図62に示す例においては、カテゴリCatは1ビットの情報として記録されるようになっていて、パーミュテーション処理が行われたときにはビット値として「0」が、LPF処理が行われたときにはビット値として「1」が、それぞれ記録される。
【0451】
なお、上述では、数式47に示したようなLPF行列L(k,η)を用いたが、この行列は、行列で表現される画素データf(k,l)に演算することにより、該f(k,l)の特定の行または特定の列にローパスフィルタ効果を及ぼすものとなっている。しかし、このような行列をLPFとして用いるに限らず、例えば次の数式57に示すようなLPF行列LT (χ)を用いることも可能である。
[数57]

ここに、χは、フィルタ強度を示すパラメータであり、ξ=1−2χとなっている。さらに、パラメータχに対しては、0≦χ<(1/3)の条件が課せられている。
【0452】
このLPF行列LT (χ)は、8×8画素ブロックの全体にローパスフィルタ効果を及ぼすものとなっていて、f(k,l)の左から行列演算することにより、行同士の間のLPF効果を生じ、f(k,l)の右から行列演算することにより、列同士の間のLPF効果を生じるようになっている。また、χの典型値としては、(1/8)、(1/6)、(1/4)などが例として挙げられる。そして、χに上述したような0以上(1/3)未満の制限を課すことにより、LT (χ)は可逆な行列となっている。なお、このLT (χ)を用いると、DC成分は不変とはならず若干変化する。
【0453】
図63は、上記ローパスフィルタを用いるときのヘッダ情報の例を示す図表である。
【0454】
上記LPF行列LT (χ)を用いて、トータルのLPFを掛けるときのヘッダ情報Phm(n)は、インディケータInd(=1)と、カテゴリCat(=1)と、の直後に、モードを示すデータModeの記録欄が設けられ、そのビット値として、例えば「11」を記録することが考えられる。
【0455】
また、上記パラメータχは、グローバルパラメータとして記録するために、ブロック毎のヘッダ情報Phm(n)には入っていない。従って、この例では、フィルタ強度を画像全体で一定となるようにしており、ブロック単位でフィルタ強度を変化させることはしていない。
【0456】
このような実施例3によれば、上述した実施例1,2とほぼ同様の効果を奏するとともに、パーミュテーションによるJEX処理と、LPFによるJEX処理と、の内の、より適切な方の処理を、ブロック単位で選択することができるために、画像全体の、より高画質化、高圧縮率化を図ることが可能となる。
【0457】
また、画像全体にLPF処理を行う行列を用いることにより、より少ない回数の行列演算を行うだけで、処理することが可能となる。これにより、処理の高速化や処理に要する演算負荷を軽減することができる。
【0458】
なお、本発明は上述した実施例に限定されるものではなく、発明の主旨を逸脱しない範囲内において種々の変形や応用が可能であることは勿論である。
【産業上の利用可能性】
【0459】
本発明は、静止画像や動画像を符号化して圧縮または/および復号化して伸張する画像符号化処理方法、画像復号化処理方法、動画圧縮処理方法、動画伸張処理方法、画像符号化処理プログラム、画像符号化装置、画像復号化装置、画像符号化/復号化システム、拡張画像圧縮伸張処理システムに好適に利用することができる。
【図面の簡単な説明】
【0460】
【図1】本発明の実施例1における拡張されたJPEG符号器の構成を示すブロック図。
【図2】上記実施例1における拡張されたJPEG復号器の構成を示すブロック図。
【図3】上記実施例1における符号化処理を示すフローチャート。
【図4】上記実施例1における復号化処理を示すフローチャート。
【図5】上記実施例1におけるJEX符号化処理を示すフローチャート。
【図6】上記実施例1におけるJEX復号化処理を示すフローチャート。
【図7】上記実施例1において、VGA画像をブロック化する例を示す図。
【図8】上記実施例1において、8×8画素ブロックの画素構成を示す図。
【図9】上記実施例1において、6角形の画素を敷き詰めることにより2次元状に展開される画像の例を示す図。
【図10】上記図9に示した配置の画素データを行方向および列方向に配列した例を示す図。
【図11】上記実施例1において、順列nc(i)に対して得られる判定値Chcを計算するために必要な各要素の例を示す図表。
【図12】上記実施例1において、ウェイトWを変えたときの判定値の変化の様子を示す図表。
【図13】上記実施例1における行列Mの例を示す図。
【図14】上記実施例1において、列同士の基本パーミュテーションを実現するための基底行列の作用手順を示す図表。
【図15】上記実施例1において、画像データから抽出されたオリジナルの8×8画素ブロックのデータ例を示す図表。
【図16】上記実施例1において、8×8画素ブロックのデータについて、行方向の和と列方向の和とをそれぞれ算出した様子を示す図表。
【図17】上記実施例1において、並べ換え後の画素ブロックのデータを示す図表。
【図18】上記実施例1において、レベルシフトとDCTとを行ったデータを示す図表。
【図19】上記実施例1において、量子化後の8×8ブロックデータを示す図表。
【図20】上記図19に示したような量子化後のデータに、図4に示すような復号化処理において逆量子化および逆DCT(IDCT)を施し、レベルシフトを行って0〜255の範囲のデータに丸めたときのデータを示す図表。
【図21】上記図20に示すデータを逆パーミュテーションで並べ換えた画素ブロックを示す図表。
【図22】上記図21に示した復号化後の画素ブロックデータから、図15に示したオリジナルの画素ブロックデータを減算した結果を示す図表。
【図23】上記実施例1において、JPEG圧縮データを格納するEXIFファイルの基本構造を示す図。
【図24】上記実施例1において、JPEG圧縮データファイルの基本構造をより詳しく示した図。
【図25】上記実施例1において、ヘッダ情報Ph(n)の構造と具体的なデータ例を示す図表。
【図26】上記実施例1において、拡張JPEGによる処理が可能な機器と、従来のJPEGによる処理のみが可能な機器と、を組み合わせたときのシステム構成を示す図。
【図27】上記実施例1において、JEXを動画像に適用し得る符号器の構成を示すブロック図。
【図28】従来のJPEG符号器の構成を示すブロック図。
【図29】従来のJPEG復号器の構成を示すブロック図。
【図30】上記図15に示すオリジナルの8×8画素ブロックのデータにDCTを行った結果を示す図表。
【図31】上記図30に示すブロックデータを量子化した結果を示す図表。
【図32】上記図31に示すブロックデータを逆量子化し逆DCTを施しレベルシフトを行って0〜255の範囲のデータに丸めた結果を示す図表。
【図33】上記図32に示す復号化後の画素ブロックデータから、図15に示したオリジナルの画素ブロックデータを減算した結果を示す図表。
【図34】従来の動画像符号器の構成を示すブロック図。
【図35】本発明の実施例2における拡張されたJPEG符号器の構成を示すブロック図。
【図36】上記実施例2における拡張されたJPEG復号器の構成を示すブロック図。
【図37】上記実施例2におけるJEX符号の処理の概要を示すフローチャート。
【図38】上記図37のステップS61におけるJEX(LPF)前処理の詳細を示すフローチャート。
【図39】上記実施例2において、設定項目Choiceに応じて選択される制御パラメータの組み合わせ(η,SF)を示す図表。
【図40】上記図37のステップS62におけるJEX(LPF)本処理の詳細を示すフローチャート。
【図41】上記図40のステップS85におけるVscおよびkcの算出処理の詳細を示すフローチャート。
【図42】上記図40のステップS86におけるVsrおよびlrの算出処理の詳細を示すフローチャート。
【図43】上記実施例2におけるJEX(LPF)復号処理を示すフローチャート。
【図44】上記実施例2におけるModeベクトルおよびPosベクトルの例を示す図表。
【図45】上記実施例2におけるヘッダ情報Phl(n)の例を示す図表。
【図46】上記実施例2において、画像全体に係るグローバルヘッダの例を示す図表。
【図47】上記実施例2において、グローバルヘッダのカテゴリに記録するビット値の例を示す図表。
【図48】上記図46に示したグローバルパラメータの最初の8ビット値の例を示す図表。
【図49】上記図46に示したグローバルパラメータの2番目の8ビット値の例を示す図表。
【図50】上記実施例2において、画像データから抽出されたオリジナルの8×8画素ブロックのデータ例を示す図。
【図51】上記図50に示すオリジナルの8×8画素ブロックのデータにレベルシフトおよびDCTを行った結果を示す図表。
【図52】上記図51に示すブロックデータを量子化した結果を示す図表。
【図53】上記図52に示すブロックデータを逆量子化し逆DCTを施しレベルシフトを行って0〜255の範囲のデータに丸めた結果を示す図表。
【図54】上記図53に示す復号化後の画素ブロックデータから、図50に示したオリジナルの画素ブロックデータを減算した結果を示す図表。
【図55】上記実施例2において、ヘッダ情報から抽出されたモード情報およびフィルタ位置情報の例を示す図表。
【図56】上記図50に示すオリジナルの8×8画素ブロックのデータに、上記図55に示したような8回のローパスフィルタ処理を行った結果を示す図表。
【図57】上記図56に示すローパスフィルタ処理後の8×8画素ブロックのデータにレベルシフトおよびDCTを行った結果を示す図表。
【図58】上記図57に示すブロックデータを量子化した結果を示す図表。
【図59】上記図58に示すブロックデータを逆量子化し逆DCTを施しレベルシフトを行って逆LPF処理を行い、0〜255の範囲のデータに丸めた結果を示す図表。
【図60】本発明の実施例3において、ローパスフィルタとパーミュテーションとを組み合わせたJEX本処理の例を示すフローチャート。
【図61】上記図60のステップS137において生成されるヘッダ情報の例を示す図表。
【図62】上記図60のステップS136において生成されるヘッダ情報の例を示す図表。
【図63】上記実施例3において、他のローパスフィルタを用いるときのヘッダ情報の例を示す図表。
【符号の説明】
【0461】
1…ブロック化部(分割手段)
2…符号化制御部
3…マーカ生成部
4…列操作判定部(空間変換手段)
5…行操作判定部(空間変換手段)
6…ヘッダ生成部(ヘッダ情報追加手段)
7…直交変換部(空間周波数変換手段)
8…量子化部(量子化手段)
9…量子化テーブル生成部(量子化手段)
10…エントロピー符号化部(エントロピー符号化手段)
11…ジグザグスキャン部
12…ハフマン符号化部
13…合成部(圧縮画像ファイル生成手段、ヘッダ情報生成手段)
14…フィルタ部(空間変換手段)
21…マーカ判定部(ヘッダ情報読出手段)
22…分割部
23…エントロピー復号化部(エントロピー復号化手段)
24…ハフマン復号化部
25…ジグザグ展開部
26…逆量子化部(逆量子化手段)
27…量子化テーブル生成部(逆量子化手段)
28…直交逆変換部(周波数空間変換手段)
29…ヘッダ復号部(追加ヘッダ情報読出手段)
30…復号化制御部
31…行操作部(逆空間変換手段)
32…列操作部(逆空間変換手段)
33…ブロック展開部(展開手段)
34…逆フィルタ部(逆空間変換手段)
41…デジタルカメラ
41a…JPEG画像ファイル
41b…JEX画像ファイル
42…PC
42a,42b…表示画像
43…PC
43a,43b…表示画像
51…減算器
52…JEX処理部
53…ヘッダ情報メモリ
54…DCT処理部
55…量子化部
56…逆量子部
57…IDCT処理部
58…逆JEX処理部
59…加算器
60…フレームメモリ
61…動き補償部
62…可変長符号化部
63…合成部
代理人 弁理士 伊 藤 進

【特許請求の範囲】
【請求項1】
画素空間として記述される画像データまたは差分画像データに、空間周波数変換を施す空間周波数変換ステップと、この空間周波数変換ステップにより得られた変換結果に基づいて得られるデータに、該データに係る情報をヘッダ部分として付加するヘッダ情報生成ステップと、を含む基本符号化処理方法、に対して適用される画像符号化処理方法であって、
上記空間周波数変換ステップを行う前の画像データまたは差分画像データに対して、可逆な画素空間変換を施す空間変換ステップと、
上記空間変換ステップによる画素空間変換の逆変換を実行するために必要な空間変換パラメータを、上記ヘッダ部分に付加するヘッダ情報追加ステップと、
を含むことを特徴とする画像符号化処理方法。
【請求項2】
上記基本符号化処理方法は、上記空間周波数変換ステップにより得られた変換結果を、高周波成分側の符号量よりも低周波成分側の符号量が概略小さくなるように符号化する符号化ステップをさらに含み、
上記空間変換ステップにより行われる可逆な画素空間変換は、空間周波数変換後の高周波成分を抑圧する変換であることを特徴とする請求項1に記載の画像符号化処理方法。
【請求項3】
上記基本符号化処理方法は、画像データまたは差分画像データを画素ブロックに分割する分割ステップをさらに含むとともに、上記空間周波数変換ステップは、この分割ステップにより分割された画素ブロックに空間周波数変換を施すステップであり、
上記空間変換ステップは、上記空間周波数変換ステップを行う前の画素ブロックの少なくとも1つに対して、可逆な画素空間変換を施すステップであることを特徴とする請求項1に記載の画像符号化処理方法。
【請求項4】
上記空間変換ステップは、上記画素ブロックを行列Mとして表現して、この行列Mに対して、逆行列をもつ行列Aと、逆行列をもつ行列Bと、を用いて、
M→AMB
なる可逆な線形行列演算を行うことにより、可逆な空間変換を行うステップであることを特徴とする請求項3に記載の画像符号化処理方法。
【請求項5】
上記行列Aと行列Bとの何れか一方は、行列演算を行うことにより上記行列Mの行の並べ換えを行う行列であり、他方は、行列演算を行うことにより上記行列Mの列の並べ換えを行う行列であることを特徴とする請求項4に記載の画像符号化処理方法。
【請求項6】
上記行の並べ換えを行う行列は、行同士を交換する行列同士の行列演算として表現され、上記列の並べ換えを行う行列は、列同士を交換する行列同士の行列演算として表現されることを特徴とする請求項5に記載の画像符号化処理方法。
【請求項7】
上記行同士を交換する行列は、ある行に他の行を加算する行列と、ある行に非ゼロ係数としての−1を乗算する行列と、を組み合わせて行列演算を行う行列として表現され、
上記列同士を交換する行列は、ある列に他の列を加算する行列と、ある列に非ゼロ係数としての−1を乗算する行列と、を組み合わせて行列演算を行う行列として表現されることを特徴とする請求項6に記載の画像符号化処理方法。
【請求項8】
上記行列Mの行の並べ換えは、列方向の画素値の和が行方向に降べきまたは昇べきとなるように並べ換えるものであり、
上記行列Mの列の並べ換えは、行方向の画素値の和が列方向に降べきまたは昇べきとなるように並べ換えるものであることを特徴とする請求項5に記載の画像符号化処理方法。
【請求項9】
上記空間変換ステップは、上記画像データまたは差分画像データに含まれる画素の配置を任意に変更することにより、可逆な空間変換を行うステップであることを特徴とする請求項1に記載の画像符号化処理方法。
【請求項10】
上記空間周波数変換ステップにより得られた変換結果は、上記画像データの平均値または差分画像データの平均値に比例するDC係数を含み、上記空間変換ステップにおいて行われる画素空間変換は該DC係数を不変とする変換であることを特徴とする請求項1または請求項2に記載の画像符号化処理方法。
【請求項11】
上記空間周波数変換ステップにより得られた変換結果は、上記画素ブロックの平均値に比例するDC係数を含み、上記空間変換ステップにおいて行われる画素空間変換は該DC係数を不変とする変換であることを特徴とする請求項3に記載の画像符号化処理方法。
【請求項12】
JPEG符号化処理に対して適用される画像符号化処理方法であって、
少なくとも1つの画素ブロックに対して、離散コサイン変換を実行する前に可逆な画素空間変換を施す空間変換ステップと、
上記空間変換ステップによる画素空間変換の逆変換を実行するために必要な空間変換パラメータを抽出する空間変換パラメータ抽出ステップと、
上記空間パラメータ抽出ステップにより抽出された空間変換パラメータを、JPEGファイルのヘッダ部分に付加するヘッダ情報追加ステップと、
を含むことを特徴とする画像符号化処理方法。
【請求項13】
上記画素空間変換は、離散コサイン変換を実行することにより得られるDCT係数の内のDC係数を不変とし、かつ、該DCT係数の内の低周波側のAC係数の振幅を増大させる変換であることを特徴とする請求項12に記載の画像符号化処理方法。
【請求項14】
画素空間として記述される画像データまたは差分画像データを、空間周波数変換し、空間周波数変換後のデータを、高周波成分側の符号量よりも低周波成分側の符号量が概略小さくなるように符号化する基本符号化処理方法、に対して適用される画像符号化処理方法であって、
空間周波数変換を行う前に、空間周波数変換後の高周波成分を抑圧するような、画素空間内の可逆な空間変換を行う空間変換ステップと、
上記空間変換の逆変換を実行するために必要な情報を、上記符号化後の画像データまたは符号化後の差分画像データに、ヘッダ情報として一体的に付加するヘッダ情報生成ステップと、
を含むことを特徴とする画像符号化処理方法。
【請求項15】
符号化された画像データまたは差分画像データに、空間周波数変換の逆変換である周波数空間変換を施す周波数空間変換ステップ、を含む基本復号化処理方法、に対して適用され、請求項1に記載の画像符号化処理方法により符号化された画像データまたは差分画像データを復号化するための画像復号化処理方法であって、
上記ヘッダ部分から少なくとも上記空間変換パラメータを読み出すヘッダ情報読出ステップと、
上記ヘッダ情報読出ステップにより読み出した空間変換パラメータに基づいて、上記周波数空間変換ステップを行った後の画像データまたは差分画像データに対し、上記画素空間変換の逆変換を施す逆空間変換ステップと、
を含むことを特徴とする画像復号化処理方法。
【請求項16】
上記ヘッダ部分に上記空間変換パラメータが記載されているか否かを判断するヘッダ判別ステップをさらに含み、
上記ヘッダ判別ステップにより上記空間変換パラメータが記載されていると判断された場合には、該空間変換パラメータに基づいて上記逆空間変換ステップを実行することにより得られる画像データまたは差分画像データを出力し、該ヘッダ判別ステップにより上記空間変換パラメータが記載されていないと判断された場合には、上記逆空間変換ステップを実行することなく得られる画像データまたは差分画像データを出力することを特徴とする請求項15に記載の画像復号化処理方法。
【請求項17】
時系列的な因果関係を有する画像フレームの集合として構成される動画像データを、1つの画像フレームに係る画像データのみに基づき圧縮するフレーム内圧縮と、複数の画像フレームに係る画像データに基づき圧縮するフレーム間圧縮と、により符号化可能であり、
上記フレーム内圧縮は、圧縮対象とする画像フレームを画素ブロックに分割する分割ステップと、この分割ステップにより分割された画素ブロックに空間周波数変換を施す空間周波数変換ステップと、この空間周波数変換ステップにより得られた変換結果に基づいて得られるデータに、該データに係る情報をヘッダ部分として付加するヘッダ情報生成ステップと、
を含む基本圧縮処理方法、に対して適用される動画圧縮処理方法であって、
上記フレーム内圧縮は、さらに、
上記空間周波数変換ステップを行う前の画素ブロックの少なくとも1つに対して、可逆な画素空間変換を施す空間変換ステップと、
上記空間変換ステップによる画素空間変換の逆変換を実行するために必要な空間変換パラメータを、上記ヘッダ部分に付加するヘッダ情報追加ステップと、
を含むものであることを特徴とする動画圧縮処理方法。
【請求項18】
上記空間変換ステップおよび上記ヘッダ情報追加ステップを実行するか否かを選択する空間変換モード選択ステップをさらに含むことを特徴とする請求項17に記載の動画圧縮処理方法。
【請求項19】
時系列的な因果関係を有する画像フレームの集合として構成される動画像データを、1つの画像フレームに係る画像データのみに基づき圧縮するフレーム内圧縮と、複数の画像フレームに係る画像データに基づき圧縮するフレーム間圧縮と、により符号化可能であり、
上記フレーム間圧縮は、圧縮対象とする画像フレームを画素ブロックに分割する分割ステップと、この分割ステップにより分割された画素ブロックの内の少なくとも1つの画素ブロックと、比較対象とする画像フレームにおいて対応する画素ブロックと、の差分をとることにより差分画素ブロックを生成する差分演算ステップと、この差分演算ステップにより生成された差分画素ブロックに空間周波数変換を施す空間周波数変換ステップと、この空間周波数変換ステップにより得られた変換結果に基づいて得られるデータに、該データに係る情報をヘッダ部分として付加するヘッダ情報生成ステップと、
を含む基本圧縮処理方法、に対して適用される動画圧縮処理方法であって、
上記フレーム間圧縮は、さらに、
上記空間周波数変換ステップを行う前の差分画素ブロックの少なくとも1つに対して、可逆な画素空間変換を施す空間変換ステップと、
上記空間変換ステップによる画素空間変換の逆変換を実行するために必要な空間変換パラメータを、上記ヘッダ部分に付加するヘッダ情報追加ステップと、
を含むものであることを特徴とする動画圧縮処理方法。
【請求項20】
上記空間変換ステップおよび上記ヘッダ情報追加ステップを実行するか否かを選択する空間変換モード選択ステップをさらに含むことを特徴とする請求項19に記載の動画圧縮処理方法。
【請求項21】
上記ヘッダ情報生成ステップは、符号化された複数のフレームを含むグループ毎にヘッダ部分を生成するステップであり、
上記ヘッダ情報追加ステップは、上記空間変換パラメータを、対応するグループのヘッダ部分に追加するステップであることを特徴とする請求項19に記載の動画圧縮処理方法。
【請求項22】
圧縮された動画像データに空間周波数変換の逆変換である周波数空間変換を施すことにより画素ブロックを生成する周波数空間変換ステップ、を含む基本伸張処理方法、に対して適用され、請求項17に記載の動画圧縮処理方法により圧縮された動画像データを伸張するための動画伸張処理方法であって、
上記ヘッダ部分から少なくとも上記空間変換パラメータを読み出すヘッダ情報読出ステップと、
上記ヘッダ情報読出ステップにより読み出した空間変換パラメータに基づいて、上記周波数空間変換ステップを行った後の画素ブロックに対し、上記画素空間変換の逆変換を施す逆空間変換ステップと、
を含むことを特徴とする動画伸張処理方法。
【請求項23】
圧縮された動画像データに空間周波数変換の逆変換である周波数空間変換を施すことにより差分画素ブロックを生成する周波数空間変換ステップ、を含む基本伸張処理方法、に対して適用され、請求項19に記載の動画圧縮処理方法により圧縮された動画像データを伸張するための動画伸張処理方法であって、
上記ヘッダ部分から少なくとも上記空間変換パラメータを読み出すヘッダ情報読出ステップと、
上記ヘッダ情報読出ステップにより読み出した空間変換パラメータに基づいて、上記周波数空間変換ステップを行った後の差分画素ブロックに対し、上記画素空間変換の逆変換を施す逆空間変換ステップと、
を含むことを特徴とする動画伸張処理方法。
【請求項24】
画素空間として記述される画像データまたは差分画像データに、空間周波数変換を施す空間周波数変換ステップと、この空間周波数変換ステップにより得られた変換結果に基づいて得られるデータに、該データに係る情報をヘッダ部分として付加するヘッダ情報生成ステップと、を含む処理をコンピュータに実行させるための基本符号化処理プログラム、に対して適用される画像符号化処理プログラムであって、
コンピュータに、
上記空間周波数変換ステップを行う前の画像データまたは差分画像データに対して、可逆な画素空間変換を施す空間変換ステップと、
上記空間変換ステップによる画素空間変換の逆変換を実行するために必要な空間変換パラメータを、上記ヘッダ部分に付加するヘッダ情報追加ステップと、
を実行させることを特徴とする画像符号化処理プログラム。
【請求項25】
画素空間として記述される画像データまたは差分画像データに、空間周波数変換を施す空間周波数変換手段と、この空間周波数変換手段により得られた変換結果に基づいて得られるデータに、該データに係る情報をヘッダ部分として付加するヘッダ情報生成手段と、を含む基本符号化装置、に対して適用される画像符号化装置であって、
上記空間周波数変換を施す前の画像データまたは差分画像データに対して、可逆な画素空間変換を施す空間変換手段と、
上記空間変換手段による画素空間変換の逆変換を実行するために必要な空間変換パラメータを、上記ヘッダ部分に付加するヘッダ情報追加手段と、
を具備したことを特徴とする画像符号化装置。
【請求項26】
符号化された画像データまたは差分画像データに、空間周波数変換の逆変換である周波数空間変換を施す周波数空間変換手段、を含む基本復号化装置、に対して適用され、請求項25に記載の画像符号化装置により符号化された画像データまたは差分画像データを復号化するための画像復号化装置であって、
上記ヘッダ部分から少なくとも上記空間変換パラメータを読み出すヘッダ情報読出手段と、
上記ヘッダ情報読出手段により読み出した空間変換パラメータに基づいて、上記周波数空間変換を施した後の画像データまたは差分画像データに対し、上記画素空間変換の逆変換を施す逆空間変換手段と、
を具備したことを特徴とする画像復号化装置。
【請求項27】
請求項25に記載の画像符号化装置と、
請求項26に記載の画像復号化装置と、
を具備したことを特徴とする画像符号化/復号化システム。
【請求項28】
原画像データを画素ブロックに分割する分割手段と、この分割手段により分割された画素ブロックに空間周波数変換を施すことにより空間周波数係数を取得する空間周波数変換手段と、この空間周波数変換手段により取得された空間周波数係数を量子化する量子化手段と、この量子化手段により量子化された空間周波数係数をエントロピー符号化するエントロピー符号化手段と、このエントロピー符号化手段によりエントロピー符号化された結果に基づいて得られるデータに、該データに係る情報をヘッダ部分として付加することにより、第1の圧縮画像ファイルを生成する圧縮画像ファイル生成手段と、を有して構成される第1の画像符号化装置と、
上記第1の圧縮画像ファイルからヘッダ部分を読み出すヘッダ情報読出手段と、上記第1の圧縮画像ファイルからの上記データに基づいてエントロピー復号化することにより量子化された空間周波数係数を取得するエントロピー復号化手段と、このエントロピー復号化手段により取得された量子化された空間周波数係数を逆量子化する逆量子化手段と、この逆量子化手段により逆量子化された空間周波数係数に上記空間周波数変換の逆変換である周波数空間変換を施すことにより画素ブロックを取得する周波数空間変換手段と、この画素ブロックを展開することにより原画像データを生成する展開手段と、を有して構成される第1の画像復号化装置と、
を具備して構成される第1の画像圧縮伸張処理システムの、
上記第1の画像符号化装置に、
上記空間周波数変換手段により空間周波数変換を施す前に、上記画素ブロックに対して、空間変換パラメータにより特定可能な可逆な画素空間変換を施す空間変換手段と、上記空間変換パラメータを上記ヘッダ部分に付加するヘッダ情報追加手段と、を追加することにより得られる、第2の圧縮画像ファイルを生成するための第2の画像符号化装置と、
上記第1の画像復号化装置に、
上記空間変換パラメータを上記ヘッダ部分から追加して読み出す追加ヘッダ情報読出手段と、この追加ヘッダ情報読出手段により読み出した空間変換パラメータに基づき、上記画素空間変換の逆変換を施す逆空間変換手段と、を追加することにより得られる、上記第2の圧縮画像ファイルから原画像データを取得するための第2の画像復号化装置と、
を具備した拡張画像圧縮伸張処理システムであって、
上記第1の画像復号化装置は、処理対象となる圧縮画像ファイルが上記第2の圧縮画像ファイルである場合には、該第2の圧縮画像ファイルのヘッダ部分に記載されている空間変換パラメータを無視することにより、上記原画像データとは異なるデータを復元可能であり、
上記第2の画像復号化装置は、上記追加ヘッダ情報読出手段により上記ヘッダ部分から上記空間変換パラメータを読み出すことができない場合には、上記逆空間変換手段による処理を行うことなく、第1の画像復号化装置部分による処理のみを行うことにより原画像データを復元するものであることを特徴とする拡張画像圧縮伸張処理システム。
【請求項29】
上記第2の画像符号化装置を有する撮像装置と、
上記第1の画像復号化装置を有するコンピュータと、
をさらに具備したことを特徴とする請求項28に記載の拡張画像圧縮伸張処理システム。
【請求項30】
上記空間変換ステップは、少なくとも1つの調整パラメータにより調整され得る画素空間変換を施すステップであり、
上記ヘッダ情報追加ステップは、さらに、上記調整パラメータを上記ヘッダ部分に付加するステップであることを特徴とする請求項1に記載の画像符号化処理方法。
【請求項31】
上記基本符号化処理方法は、画像データまたは差分画像データを画素ブロックに分割する分割ステップをさらに含むとともに、上記空間周波数変換ステップは、この分割ステップにより分割された画素ブロックに空間周波数変換を施すステップであり、
上記空間変換ステップは、上記空間周波数変換ステップを行う前の画素ブロックの少なくとも1つに対して、可逆な画素空間変換を施すステップであることを特徴とする請求項30に記載の画像符号化処理方法。
【請求項32】
上記空間変換ステップは、上記画素ブロックを行列Mとして表現して、この行列Mに対して、逆行列をもつ行列Aを用いた
M→AM
なる可逆な線形行列演算と、逆行列をもつ行列Bを用いた
M→MB
なる可逆な線形行列演算と、の少なくとも一方を行うことにより、可逆な空間変換を行うステップであることを特徴とする請求項31に記載の画像符号化処理方法。
【請求項33】
上記行列Aおよび行列Bは、上記行列Mで表現される画素ブロックに対して、空間ローパスフィルタを施す行列であることを特徴とする請求項32に記載の画像符号化処理方法。
【請求項34】
上記調整パラメータは、上記空間ローパスフィルタのフィルタ強度を調整するためのフィルタ調整パラメータを含むことを特徴とする請求項33に記載の画像符号化処理方法。
【請求項35】
上記基本符号化処理方法は、上記空間周波数変換ステップにより得られた変換結果をある量子化幅で量子化する量子化ステップをさらに含み、
上記ヘッダ情報生成ステップは、上記量子化ステップにより得られた量子化の結果に基づいて得られるデータに、該データに係る情報をヘッダ部分として付加するステップであって、
上記量子化幅は、上記フィルタ調整パラメータに応じて調整されることを特徴とする請求項34に記載の画像符号化処理方法。
【請求項36】
上記空間周波数変換ステップにより得られた変換結果は、上記画像データの平均値または差分画像データの平均値に比例するDC係数を含み、上記空間変換ステップにおいて行われる画素空間変換は該DC係数を不変とする変換であることを特徴とする請求項30に記載の画像符号化処理方法。
【請求項37】
請求項5に記載の画像符号化処理方法と、
請求項33に記載の画像符号化処理方法と、
を択一的に選択して行うことを特徴とする画像符号化処理方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate

【図23】
image rotate

【図24】
image rotate

【図25】
image rotate

【図26】
image rotate

【図27】
image rotate

【図28】
image rotate

【図29】
image rotate

【図30】
image rotate

【図31】
image rotate

【図32】
image rotate

【図33】
image rotate

【図34】
image rotate

【図35】
image rotate

【図36】
image rotate

【図37】
image rotate

【図38】
image rotate

【図39】
image rotate

【図40】
image rotate

【図41】
image rotate

【図42】
image rotate

【図43】
image rotate

【図44】
image rotate

【図45】
image rotate

【図46】
image rotate

【図47】
image rotate

【図48】
image rotate

【図49】
image rotate

【図50】
image rotate

【図51】
image rotate

【図52】
image rotate

【図53】
image rotate

【図54】
image rotate

【図55】
image rotate

【図56】
image rotate

【図57】
image rotate

【図58】
image rotate

【図59】
image rotate

【図60】
image rotate

【図61】
image rotate

【図62】
image rotate

【図63】
image rotate


【公開番号】特開2006−50516(P2006−50516A)
【公開日】平成18年2月16日(2006.2.16)
【国際特許分類】
【出願番号】特願2004−275753(P2004−275753)
【出願日】平成16年9月22日(2004.9.22)
【出願人】(000000376)オリンパス株式会社 (11,466)
【Fターム(参考)】