(57)【特許請求の範囲】
【請求項１】
画像に対しブロック単位で直交変換して生成された１ブロック分の変換係数のうち一部を逆変換して、該ブロックの一部の画素値を生成する部分逆変換手段と、
前記部分逆変換手段により生成された一部の画素値に対してフィルタ処理を施し、該フィルタ処理による一部の画素値の変化量を算出するフィルタ処理手段と、
前記フィルタ処理手段により算出された一部の画素値の変化量を直交変換して、前記１ブロック分の変換係数のうちの一部の変換係数に対する変化量を生成する部分変換手段と、
前記部分変換手段により生成された変化量を調整して、前記１ブロック分の変換係数に対し調整後の該変化量を加算した値が符号化の際の量子化範囲に収まるようにする範囲保障手段と、
前記範囲保障手段により調整された変化量を加算し、前記１ブロック分の変換係数を補正する係数補正手段と、
前記係数補正手段により補正された前記１ブロック分の変換係数の全部を逆変換して、画素値を生成する全体逆変換手段と
を有する復号化装置。
【請求項２】
前記部分逆変換手段は、１ブロック分の変換係数のうち、低周波側の変換係数を抽出し、抽出された変換係数のみを逆変換する
請求項１に記載の復号化装置。
【請求項３】
前記部分逆変換手段は、ブロックの周縁部の画素値に相当する変換係数を逆変換し、
前記フィルタ処理手段は、逆変換されたブロック周縁部の画素値に対して、フィルタ処理をし、
前記部分変換手段は、ブロック周縁部の画素値の変化量に直交変換を行う
請求項２に記載の復号化装置。
【請求項４】
既定の反復処理により画素値に対する補正量を決定する復号化装置であって、
画像に対しブロック単位で直交変換して生成された１ブロック分の変換係数の全部を逆変換して、画素値を生成する全体逆変換手段と、
前記反復処理の一部として、前記全体逆変換手段により生成された画素値の一部、又は、前記全体逆変換手段により生成された画素値に補正がなされた画素値の一部に対してフィルタ処理を施し、該フィルタ処理による一部の画素値の変化量を算出するフィルタ処理手段と、
前記反復処理の一部として、前記フィルタ処理手段により算出された一部の画素値の変化量を直交変換して、前記１ブロック分の変換係数のうちの一部の変換係数に対する変化量を生成する部分変換手段と、
前記反復処理の一部として、前記部分変換手段により生成された変化量を調整して、前記１ブロック分の変換係数に対し調整後の該変化量を加算した値が符号化の際の量子化範囲に収まるようにする範囲保障手段と、
前記反復処理の一部として、前記範囲保障手段により調整された前記１ブロック分の変換係数のうちの一部の変換係数に対する変化量を逆変換して、該ブロックの一部の画素値の変化量を生成する部分逆変換手段と、
前記全体逆変換手段により生成される画素値、又は、前記全体逆変換手段により生成される画素値と前記部分逆変換手段により生成される画素値の変化量との合算値に基づいて、前記反復処理を終了するか否かを判定する終了判定手段と
を有する復号化装置。
【請求項５】
前記フィルタ処理手段は、フィルタ処理としてローパスフィルタを掛ける
請求項４に記載の復号化装置。
【請求項６】
前記部分変換手段は、画素値を変換係数に変換する変換行列の部分行列を用いて、前記フィルタ処理手段により算出された一部の画素値の変化量を直交変換し、
前記部分逆変換手段は、変換係数を画素値に変換する逆変換行列の部分行列を用いて、前記範囲保障手段により調整された前記１ブロック分の変換係数のうちの一部の変換係数に対する変化量を直交変換する
請求項４又は５に記載の復号化装置。
【請求項７】
画像に対しブロック単位で直交変換して生成された１ブロック分の変換係数のうち一部を逆変換して、該ブロックの一部の画素値を生成し、
生成された一部の画素値に対してフィルタ処理を施し、該フィルタ処理による一部の画素値の変化量を算出し、
算出された一部の画素値の変化量を直交変換して、前記１ブロック分の変換係数のうちの一部の変換係数に対する変化量を生成し、
生成された変化量を調整して、前記１ブロック分の変換係数に対し調整後の該変化量を加算した値が符号化の際の量子化範囲に収まるようにし、
調整された変化量を加算し、前記１ブロック分の変換係数を補正し、
補正された前記１ブロック分の変換係数の全部を逆変換して、画素値を生成する
復号化方法。
【請求項８】
画像に対しブロック単位で直交変換して生成された１ブロック分の変換係数のうち一部を逆変換して、該ブロックの一部の画素値を生成するステップと、
生成された一部の画素値に対してフィルタ処理を施し、該フィルタ処理による一部の画素値の変化量を算出するステップと、
算出された一部の画素値の変化量を直交変換して、前記１ブロック分の変換係数のうちの一部の変換係数に対する変化量を生成するステップと、
生成された変化量を調整して、前記１ブロック分の変換係数に対し調整後の該変化量を加算した値が符号化の際の量子化範囲に収まるようにするステップと、
調整された変化量を加算し、前記１ブロック分の変換係数を補正するステップと、
補正された前記１ブロック分の変換係数の全部を逆変換して、画素値を生成するステップと
をコンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、符号化処理により生成された符号データを復号化する復号化装置に関する。特に、本発明は、データの量子化を伴う符号化処理により生成された符号データを、逆量子化を行うことにより復号化する復号化装置に関する。
【背景技術】
【０００２】
例えば、特許文献１には、復号画像のブロック境界をなめらかに接続するように、ブロック境界付近の一部の画素を予測し、予測された画素から変換係数の一部を予測し、得られた変換係数を逆直交変換することにより、ブロック内全体の画素の補償を行う方法が開示されている。
また、特許文献２には、ブロック内の各量子化変換係数から変換係数のブロックを生成し、これらの変換係数に逆変換演算を適用して画像を復元し、ブロック毎にフィルタ閾値を適応的に選択して、画像をスムージングフィルタで反復的にフィルタ処理し、新しい変換係数の各ブロックを元の変換係数のブロックと比較して原稿画像からフィルタ処理した復元画像が導出可能かを決定する方法が開示されている。
また、特許文献３には、復元画像中に複数のブロックを設け、離散的コサイン変換値から最初の量子化区間を決定し、低域フィルタ処理によってそれぞれのブロックを平滑化し、それぞれのブロック内の画素上で離散的コサイン変換を行い、離散的コサイン変換により生成された離散的コサイン変換係数が量子化区間内にあるよう、離散的コサイン変換によって生成された変換係数を射影し、逆離散的コサイン変換を行って復元画像を生成する技術が開示されている。
また、非特許文献１には、ＪＰＥＧ等のブロック単位変換符号化によって歪んだ画像の画質を改善する方法が開示されている。
また、非特許文献２には、復号された画像データにローパスフィルタを掛けてブロック歪みを抑制し、このローパスフィルタによる画質劣化を抑制するために、再度ＤＣＴを掛けて、ＤＣＴ係数値が元の量子化区間におさまっているかを確認する技術が開示されている。
【特許文献１】特開平３−２８３７８５号公報
【特許文献２】特開平７−１５４６０４号公報
【特許文献３】特開平７−１７０５１８号公報
【非特許文献１】柴田他、「量子化誤差を考慮したブロック歪除去方式」1990年画像符号化シンポジウム（PCSJ90）,pp.67-70
【非特許文献２】A.Zakhor, Iterative procedures for reduction of blocking effects in transform image coding, IEEE Trans Circuits & Syst Video Technol., vol2, no.1, pp.91-95, March1992
【発明の開示】
【発明が解決しようとする課題】
【０００３】
本発明は、上述した背景からなされたものであり、比較的軽い処理負荷で、画質劣化の少ない復号画像を生成する復号化装置を提供することを目的とする。
【課題を解決するための手段】
【０００４】
［復号化装置］
上記目的を達成するために、本発明にかかる復号化装置は、入力された変換係数の少なくとも一部を逆変換して、画像情報を生成する第１の逆変換手段と、前記第１の逆変換手段により生成された画像情報に基づいて、変換係数の補正量を決定する補正量決定手段と、前記補正量決定手段により決定された補正量に応じて、入力された前記変換係数を補正する係数補正手段と、前記係数補正手段により補正された変換係数を逆変換する第２の逆変換手段とを有する。
【０００５】
好適には、前記第１の逆変換手段は、入力された変換係数の一部のみを逆変換して、一部の画像情報を生成し、前記補正量決定手段は、生成された一部の画像情報に基づいて、前記補正量を決定する。
【０００６】
好適には、前記第１の逆変換手段は、入力された変換係数のうち、低周波側の変換係数を抽出し、抽出された変換係数のみを逆変換する。
【０００７】
好適には、前記第１の逆変換手段により生成された画像情報に対して、フィルタリングを行うフィルタ処理手段と、前記フィルタ処理手段によりフィルタリングされた画像情報に対して、直交変換を行って、一部の画像情報に関する変換係数を生成する部分変換手段とをさらに有し、前記補正量決定手段は、前記部分変換手段により生成された一部の画像情報に関する変換係数に基づいて、前記補正量を決定する。
【０００８】
好適には、入力される変換係数は、画像をブロック単位で直交変換したものであり、前記第１の逆変換手段は、ブロックの周縁部の画素値に相当する変換係数を逆変換し、前記フィルタ処理手段は、逆変換されたブロック周縁部の画素値に対して、直交変換を行う。
【０００９】
また、本発明にかかる復号化装置は、既定の反復処理により画像情報に対する補正量を決定する復号化装置であって、前記反復処理の一部として、第１の空間に属する画像情報に対して第１の補正処理を行う第１の補正手段と、前記第１の補正手段により補正された画像情報の一部に対して直交変換を行い、第２の空間に属する画像情報に生成する部分変換手段と、前記反復処理の一部として、前記部分変換手段により生成された第２の空間の画像情報に対して第２の補正処理を行う第２の補正手段と、前記第２の補正手段により補正された画像情報の少なくとも一部に対して直交変換を行い、第１の空間に属する画像情報を生成する部分逆変換手段と、前記部分逆変換手段により生成される画像情報に基づいて、前記反復処理を終了するか否かを判定する終了判定手段とを有する。
【００１０】
好適には、前記第１の空間は、画像が画素値で表現される空間であり、前記第２の空間は、画像が周波数成分で表現される空間であり、前記第１の補正手段は、前記画像情報に対してローパスフィルタを掛け、前記第２の補正手段は、各周波数成分の変換係数が既定の数値範囲におさまるように、前記画像情報を補正する。
【００１１】
好適には、前記部分変換手段は、画素値を変換係数に変換する変換行列の部分行列を用いて、前記画像情報の一部を直交変換し、前記部分逆変換手段は、変換係数を画素値に変換する逆変換行列の部分行列を用いて、前記画像情報を直交変換する。
【００１２】
［復号化方法］
また、本発明にかかる復号化方法は、入力された変換係数の少なくとも一部を逆変換して、画像情報を生成し、生成された前記画像情報に基づいて、変換係数の補正量を決定し、決定された前記補正量に応じて、入力された前記変換係数を補正し、補正された前記変換係数を逆変換する。
【００１３】
［プログラム］
また、本発明にかかるプログラムは、入力された変換係数の少なくとも一部を逆変換して、画像情報を生成するステップと、生成された前記画像情報に基づいて、変換係数の補正量を決定するステップと、決定された前記補正量に応じて、入力された前記変換係数を補正するステップと、補正された前記変換係数を逆変換するステップとをコンピュータに実行させる。
【発明の効果】
【００１４】
本発明の復号化装置によれば、比較的軽い処理負荷で、復号画像をより高画質化することができる。
【発明を実施するための最良の形態】
【００１５】
まず、本発明の理解を助けるために、その背景及び概略を説明する。
画像データなどは、データ量が膨大であるため、圧縮してデータ量を削減して保持、伝送等を行うことが一般的である。例えば、カラー原稿や写真を画像スキャナで電子化した場合に生成される多値画像データ、あるいは、ディジタルカメラで風景等の写真を撮った場合に生成される多値画像データは、ＪＰＥＧ、あるいは、ＪＰＥＧ２０００等の非可逆符号化方式で圧縮することにより、より小さなデータ量とすることができる。
【００１６】
これらの非可逆符号化を行った場合、符号化歪が発生することが問題となっている。特に、ＪＰＥＧ方式を適用する場合には、復号化された画像（復号画像）のＤＣＴ画像領域境界に発生するブロック歪（符号化歪）が問題となっている。
【００１７】
このような符号化歪を補正処理により抑制する技術としては、特許文献１〜３、及び、非特許文献１〜２に開示されたものが存在する。
しかしながら、これらの技術は演算負荷が大きい。例えば、特許文献１又は非特許文献１に記載の技術は、逆変換処理（ＩＤＣＴ処理）を２度実施する必要があるため、処理負荷が大きい。また、特許文献２〜３、又は、非特許文献２に記載の技術は、変換処理（ＤＣＴ処理）及び逆変換処理（ＩＤＣＴ処理）が含まれた反復処理を繰り返して、収束演算を行うため、処理負荷が大きい。
【００１８】
そこで、以下の実施形態における復号化装置２は、簡略化された変換処理、又は、簡略化された逆変換処理を適用することにより、補正処理に要する処理負荷を抑制する。
【００１９】
［ハードウェア構成］
まず、本実施形態における復号化装置２のハードウェア構成を説明する。
図１は、本発明にかかる復号化方法が適応される復号化装置２のハードウェア構成を、制御装置２０を中心に例示する図である。
図１に例示するように、復号化装置２は、ＣＰＵ２０２及びメモリ２０４などを含む制御装置２０、通信装置２２、ＨＤＤ・ＣＤ装置などの記録装置２４、並びに、ＬＣＤ表示装置あるいはＣＲＴ表示装置及びキーボード・タッチパネルなどを含むユーザインターフェース装置（ＵＩ装置）２６から構成される。
復号化装置２は、例えば、復号化プログラム５（後述）がインストールされた汎用コンピュータであり、通信装置２２又は記録装置２４などを介して符号データを取得し、取得された符号データを復号化してプリンタ装置１０に転送する。
【００２０】
［復号化プログラム］
図２は、制御装置２０（図１）により実行され、本発明にかかる復号化方法を実現する復号化プログラム５の機能構成を例示する図である。
図２に例示するように、復号化プログラム５は、エントロピ復号部５００、部分逆変換部５１０、フィルタ処理部５２０、部分変換部５３０、範囲保証部５４０、係数補正部５５０、及び全体逆変換部５６０を有する。
エントロピ復号部５００は、入力された符号データを、エントロピ復号化して、部分逆変換部５１０及び係数補正部５５０に出力する。
【００２１】
部分逆変換部５１０（第１の逆変換手段）は、エントロピ復号部５００から入力された変換係数（例えば、ＤＣＴ係数）の少なくとも一部を逆変換して、画像情報を生成し、生成された画像情報をフィルタ処理部５２０に出力する。
より具体的には、部分逆変換部５１０は、エントロピ復号部５００から入力されたＤＣＴ係数のうち、低周波側のＤＣＴ係数のみを逆変換する。
本例の部分逆変換部５１０は、以下の式（数１）を用いて、入力されたＤＣＴ係数を逆変換して、逆量子化値ｘ３を算出る。なお、式の詳細は後述する。
【００２２】
0004788465.tif 000002
【００２３】
フィルタ処理部５２０は、ローパスフィルタを用いて、部分逆変換部５１０から入力された画像情報に対して、フィルタ処理を施し、フィルタ処理が施された画像情報を部分変換部５３０に出力する。フィルタ処理は、空間領域でブロック歪を軽減するものであればよい。
より具体的には、フィルタ処理部５２０は、直交変換処理（本例では、ＤＣＴ処理）の処理単位であるブロックの周縁部の画素についてのみ、フィルタ処理を施す。
本例のフィルタ処理部５２０は、以下の式（数２）を用いて、ローパスフィルタをかけた場合の画素値変化量ｅ０'を算出する。ただし、ｘ０＝ｘｏ０＋ｅ０
【００２４】
0004788465.tif 000003
【００２５】
部分変換部５３０は、フィルタ処理部５２０によりフィルタ処理が施された画像情報を直交変換して、一部の画像情報に関する変換係数を生成し、生成された変換係数を範囲保証部５４０に出力する。
本例の部分変換部５３０は、以下の式（数３）を用いて、画素値変化量ｅ０'を（以下の式では、ｅ０）を、変換係数変化量ｄ０に変換する。
【００２６】
0004788465.tif 000004
【００２７】
範囲保証部５４０は、部分変換部５３０から入力された変換係数に基づいて、エントロピ復号部５００により復号化された変換係数に対する補正量を決定し、決定された補正量を係数補正部５５０に出力する。
より具体的には、範囲保証部５４０は、フィルタ処理部５２０によりフィルタ処理が施された画像情報の変換係数が元の量子化区間（復号化された量子化インデクスに対応する量子化区間）におさまるように、変換係数の補正量を調整する。
本例の範囲保証部５４０は、以下の式（数４）を用いて、変換係数変化量ｄ０に対して量子化範囲保証を行い、量子化範囲保証がなされた変換係数変化量ｄ０'を算出する。
【００２８】
0004788465.tif 000005
【００２９】
なお、量子化範囲保証を行う具体的な関数は以下である。
0004788465.tif 000006
【００３０】
係数補正部５５０は、エントロピ復号部５００から入力された変換係数を、範囲保証部５４０により決定された補正量に応じて補正し、補正された変換係数を全体逆変換部５６０に出力する。
本例の係数補正部５５０は、エントロピ復号部５００から入力されたＤＣＴ係数ＣＯに、範囲保証部５４０により算出された変換係数変化量ｄ０'を加算する。なお、変換係数変化量ｄ０'は、一部の変換係数についてのみ存する。
【００３１】
全体逆変換部５６０は、係数補正部５５０から入力された変換係数（補正後）に対して逆変換処理を施して、画像情報を生成する。
本例の全体逆変換部５６０は、逆変換行列Ｄ−１を用いて、補正後の変換係数（ＣＯ＋ｄ０'）を復号画像ｘに変換する。
【００３２】
［変換式の説明］
次に、上記各式を説明する。
まず、説明の便宜上、2次元画像に対するDCT変換を1次元で表現する。すなわち、８×８の画素ブロックを64次元の画素値ベクトルxとして考える。この場合、ＤＣＴ変換は、６４次元の画素値ベクトルxを、64×64のＤＣＴ行列Ｄを用いて64次元の変換係数ベクトルcを求める変換として考えることができる。換言すると、以下の式となる。
【００３３】
0004788465.tif 000007
【００３４】
例えば、8×8ブロックの画素位置を(i,j)、2次元周波数を(u,v)、変換係数をSvu、画素値をsji とする。ただし、(i,j)、および(u,v)は、(列番号、行番号)を示しているものとする。8×8DCT順変換は、以下の式となる。
【００３５】
0004788465.tif 000008
【００３６】
また、8×8DCT逆変換は、以下の式となる。
0004788465.tif 000009
【００３７】
ただし、u,vが０である場合に、Ｃｕ及びＣｖは１/√２であり、u,vが０以外である場合に、Ｃｕ及びＣｖは１である。さらに、ベクトルx内の要素が、(i0, j0), (i1, j1),..., (i63, j63)の順で並んでおり、ベクトルc内の要素が、(u0, v0), (u1, v1),..., (u63, v63)の順で並んでいるとすると、行列Dのt行s列の要素Dts、及び、行列D−1 のｔ行ｓ列の要素D-1 ts は、以下の式で表される。
【００３８】
0004788465.tif 000010
【００３９】
なお、以下の説明では、一般的に記述を行うため、ベクトルの次元数64をNとして表す場合がある。
【００４０】
次に、量子化範囲保証処理の式を説明する。
空間領域でフィルタリングを行って、ブロック歪を軽減することが可能であるが、その場合に、必要なエッジ成分も除去してしまう虞がある。これを解消するために、フィルタリング後に、一旦DCT変換領域に変換して、量子化範囲保証（すなわち、量子化範囲内にDCT変換係数を抑える処理）を行う必要がある。この量子化範囲保証は、例えば、特許文献１及び非特許文献１に開示されたものと同一である。
まず、変換係数ベクトルｃ=(c0, c1, ..., cN-1)Tが量子化範囲内に限定されるための拘束条件に関して定めておく。拘束条件は、ベクトルqmin  =(qmin 0, qmin1, ..., qminN-1)T、および、qmax =(qmax 0, qmax1, ..., qmaxN-1)T を用いて、以下のように表すことができる。
【００４１】
0004788465.tif 000011
【００４２】
以下、qmin=(qmin0, qmin1, ..., qminN-1)T、qmax=(qmaz0, qmax1, ..., qmaxN-1)Tとする。JPEGの場合、入力量子化インデクスに逆量子化処理を施して得ることのできる初期変換係数ベクトルをco=(co0, co1, ..., coN-1)T、量子化テーブルベクトルをq=(q0, q1, ..., qN-1)Tとすると、このときの変換係数ベクトルc=(c0, c1, ..., cN-1)Tの拘束条件を示すベクトルは、以下となる。
【００４３】
0004788465.tif 000012
【００４４】
次に、空間領域でブロック歪を低減するフィルタリングを行い、かつ、上記拘束条件を満たすような変換係数を求める処理の例を示す。
まず、N(64)次元の初期変換係数ベクトルcoから、N(64)次元の画素値ベクトルｘを、逆ＤＣＴの実施により求める。具体的には、以下の式による。
【００４５】
0004788465.tif 000013
【００４６】
次に、以下の式により、空間領域でローパスフィルタリングを行って、ブロック歪を軽減した画素値ベクトルx'を求める。なお、Ｆ（）はこのローパスフィルタリングを表す写像とする。
【００４７】
0004788465.tif 000014
【００４８】
次に、以下の式により、画素値ベクトルx'をＤＣＴ変換して、変換領域に戻す。
【００４９】
0004788465.tif 000015
【００５０】
次に、以下の式により、この変換係数を入力符号の量子化インデクスで決定される量子化範囲内に収める。なお、このような非線形写像をG()とする。
【００５１】
0004788465.tif 000016
【００５２】
G()は、例えば以下に示す変換を行うものである。ただし、c'=(c'0, c'1, ..., c'N-1)T、 c"=(c"0, c"1, ..., c"N-1)Tとする。この写像Gが量子化範囲保証処理に相当する。
【００５３】
0004788465.tif 000017
【００５４】
次に、行列の一部を抜き出した部分行列に対する処理を行う。以下の説明では、便宜上、次のように部分行列を表記する。すなわち、入力行列Aから、Aの上からm行、左からn行の行列を抜き出した場合に、この部分行列を、Amnと表記する。
【００５５】
次に、画素値変化ベクトルの近似を説明する。
本実施形態では、上記フィルタリング写像が、一部の画素値のみに影響を与えるという近似を行う。まず、初期変換係数ベクトルcoをIDCTして得られる初期画素値ベクトルをxoとすると、以下の関係式で表現される。
【００５６】
0004788465.tif 000018
【００５７】
また、フィルタリングによる画素値ベクトルの変化分を画素値変化ベクトルeとする。フィルタリング結果をx'とすると、x'は下記式で表すことができる。
【００５８】
0004788465.tif 000019
【００５９】
ここでは、上記画素値変化ベクトルeの一部の要素のみ、0以外の値を取り得、その他の要素は、全て0であるとする近似を行う。これは、一部の画素のフィルタ出力値のみが分かっているとき、その他の画素のフィルタ出力値の変化分の期待値が0であるとみなす近似であるとも言える。ここで、変化し得るベクトル要素をベクトルの上側に集めても、一般性は失わない。変化する要素数をm、変化しない要素数をN-mとする。さらに、m次元のベクトルe0と、N-m次元の零ベクトル0を用いて、eは下記のように表すことができる。
【００６０】
0004788465.tif 000020
【００６１】
ここで、ベクトルxも同様に、m次元ベクトルx0と、N-m次元ベクトルx１に分解して考える。さらに、フィルタFに下記近似が成り立つと仮定すると、以下の式がなりたつ。
【００６２】
0004788465.tif 000021
【００６３】
このとき、e０ は下式で求めることができる。また、以下の式で示されるフィルタF'()を定義することにより、ベクトルe0 は、ベクトルx0 をF'()でフィルタリングした結果F'(x0)として得ることができる。
【００６４】
0004788465.tif 000022
【００６５】
次に、変換係数変化ベクトルの近似を説明する。
本実施形態では、フィルタリングの結果が、一部のDCT係数にのみ影響を与えるという近似を行う。
まず、DCT係数を、下記のように、変換係数変化ベクトルdを用いて表す。
【００６６】
0004788465.tif 000023
【００６７】
ここで、係数変化ベクトルdの一部の要素のみ、0以外の値を取り得、その他の要素は、全て0であるとする。一部の周波数帯（例えば、低域の周波数帯）の変化が、画素値変化に関して支配的であると考えることによって、このような近似が可能である。ここで、これまでの説明と同様に、変化し得るベクトル要素をベクトルの上側に集める。変化する要素数をp、変化しない要素数をN-pとする。p次元のベクトルd0と、N-p次元の零ベクトル0を用いて、dは下記のように表すことができる。
【００６８】
0004788465.tif 000024
【００６９】
さらに、本実施形態では、入力DCT変換係数に対して、IDCTを行って、画素値を算出する際に近似を行う。最終的なIDCTに対する近似を行うことはできないが、演算途中のフィルタリングに用いる画素値算出の際の演算は、近似が可能である。
ここで、フィルタリングに用いる画素値は、ベクトルx0分のみあればよく、全ての画素値が必要なわけではない。そこで、まず、行列D-１の部分行列D-１mNを用いて、以下の式により、ベクトルx0を求める。
【００７０】
0004788465.tif 000025
【００７１】
次に、変換係数ベクトルco中の一部の要素が、ベクトルx0算出に支配的であるという近似を行う。これは、例えば、低域の変換係数のみを用いてベクトルx0を算出しようとするものである。
そこで、変換係数ベクトルcoを次式のように分割する。なお、変換係数ベクトルcoの要素は、画素値算出に重要な順（例えばJPEGのジグザグスキャン順）にソートされているものとする。
【００７２】
0004788465.tif 000026
【００７３】
ただし、co0の次元数(要素数)をr、co1の次元数(要素数)をN-rとする。ここで、co0のみがベクトルx0算出に必要であるという近似を行う。行列D-１の部分行列D-１mrを用い、以下の式でベクトルx0の近似値算出が可能である。
【００７４】
0004788465.tif 000027
【００７５】
ただし、実際にフィルタリングを行う場合には、フィルタの中心位置(ベクトルx0)以外の周囲画素値も必要になる場合がある。そのような場合には、最初に、算出する画素数（すなわちベクトルの次元数）を増加させておく必要がある。
このような周囲画素値からなるベクトルをx2とする。ベクトルx3を下記のように定義して、さらに、式（数２１）の出力をx3となるように変更すればよい。
【００７６】
0004788465.tif 000028
【００７７】
さらに、ベクトルx3の次元数(要素数)をm'とすれば、式（数２１）は、以下のように変更される。
【００７８】
0004788465.tif 000029
【００７９】
次に、簡略化されたDCT処理を説明する。
本実施形態では、以下のDCT近似を行う。
【００８０】
0004788465.tif 000030
【００８１】
ここで、行列D-1の部分行列D-1mp以外の行列要素は、零を乗算することになる、あるいは乗算結果が零に固定されているため、演算には不要となる。よって、部分行列D-1mpを用いて、e0とd0の関係は下式のように示すことができる。
【００８２】
0004788465.tif 000031
【００８３】
さらに、上式の関係を以下のように簡略化DCTの式に書き換えることができる。
【００８４】
0004788465.tif 000032
【００８５】
ここで、上式の逆行列が存在するための条件として、m=pでなければならない。以下、m=pとする。
【００８６】
次に、式（数２３）を用いて、初期変換係数ベクトルcoから、m'次元の画素値ベクトルｘ3を求める。ただし、式（数２２）に示されるように、画素値ベクトルｘ3には、m次元の画素値ベクトルｘ0も含まれる。このとき得られる初期画素値ベクトルをｘo0とする。
【００８７】
0004788465.tif 000033
【００８８】
次に、以下の式により、空間領域でフィルタリングF'()を行って、ブロック歪を軽減する画素値変化ベクトルe0' を求める。
【００８９】
0004788465.tif 000034
【００９０】
次に、以下の式により、画素値変化ベクトルe0' を、変換係数変化ベクトルd0に変換する。
【００９１】
0004788465.tif 000035
【００９２】
次に、以下の式により、変換係数変化ベクトルd0 を量子化範囲内に収める。この非線形写像をG'()とする。
【００９３】
0004788465.tif 000036
【００９４】
ただし、d0=(d0, d1, ..., dp-1)T、 d0'=(d'0, d'1, ..., d'p-1)Tとする。また、拘束条件ベクトルq'min、q'maxは、以下の式により表される。
【００９５】
0004788465.tif 000037
【００９６】
さらに、拘束条件ベクトルq'minを、p次元のq'min０とN-p次元のq'min１  に、また、q'maxを、p次元のq'max０とN-p次元のq'max１  に分解し、q'min 0=(q'min0, q'min1, ..., q'minp-1)T、q'max0=(q'max0, q'max1, ..., q'maxp-1)Tとしている。
【００９７】
最後に、以下の式を用いて、復号画像xを生成する。
【００９８】
0004788465.tif 000038
【００９９】
図３は、フィルタ処理部５２０（図２）によるフィルタ処理を説明する図である。
図３（Ａ）に例示するように、本例のフィルタ処理部５２０は、８×８ブロックの四隅の画素（頂点画素）をフィルタ処理の対象とする。
この場合に、頂点画素は、図３（Ｂ）に例示するように、隣接するブロックの頂点画素と隣接する。
そこで、本例のフィルタ処理部５２０は、互いに隣り合う４つの頂点画素の平均画素値を、フィルタ出力値Ｆ（Ｐ１）とする。すなわち、図３（Ｃ）に例示する式により、フィルタ出力値Ｆ（Ｐ１）が算出される。
【０１００】
［全体動作］
図４は、復号化プログラム５（図２）による復号化処理（Ｓ１０）を説明するフローチャートである。
図４に例示するように、ステップ１００（Ｓ１００）において、エントロピ復号部５００（図２）は、入力された符号データをハフマン符号化方式で復号化し、復号化されたＤＣＴ係数を部分逆変換部５１０及び係数補正部５５０に出力する。
【０１０１】
ステップ１１０（Ｓ１１０）において、部分逆変換部５１０は、上記式（数１）を用いて、エントロピ復号部５００から入力されたＤＣＴ係数の一部を、画素値Ｘ３に逆変換する。
【０１０２】
ステップ１２０（Ｓ１２０）において、フィルタ処理部５２０は、上記式（数２）を用いて、部分逆変換部５１０により逆変換された画素値Ｘ３から、図３に例示するローパスフィルタが掛けられた場合の画素値変化量ｅ０'を算出する。
【０１０３】
ステップ１３０（Ｓ１３０）において、部分変換部５３０は、上記式（数３）を用いて、フィルタ処理部５２０により算出された画素値変化量ｅ０'を、変換係数変化量ｄ０に変換する。
【０１０４】
ステップ１４０（Ｓ１４０）において、範囲保証部５４０は、上記式（数４）を用いて、部分変換部５３０により算出された変換係数変化量ｄ０に対して、量子化範囲保証を行い、量子化範囲保証がなされた変換係数変化量ｄ０'を算出する。
【０１０５】
ステップ１５０（Ｓ１５０）において、係数補正部５５０は、エントロピ復号部５００から入力されたＤＣＴ係数ＣＯに、範囲保証部５４０により算出された変換係数変化量ｄ０'を加算して、ＤＣＴ係数Ｃｏを補正する。
【０１０６】
ステップ１６０（Ｓ１６０）において、全体逆変換部５６０は、逆変換行列Ｄ−１を用いて、係数補正部５５０により補正された変換係数（Ｃｏ＋ｄ０'）を復号画像ｘに変換する。
なお、Ｓ１５０及びＳ１６０の処理は、上記式（数４３）を用いて実現される。
【０１０７】
以上説明したように、本実施形態における復号化装置２は、簡略化されたIDCT方式を用いることによって、一部の画素値のみをDCT係数から算出することを可能とした。
また、本復号化装置２は、入力DCT係数Ｃｏを保持しておき、それに、DCT補正値ｄ０'を加算してから、ＩＤＣＴ処理を行うことにより、ＩＤＣＴ処理の回数を1回としている。
【０１０８】
［変形例］
次に、上記実施形態の変形例を説明する。
上記実施形態では、図３に例示するフィルタ処理を適用したが、これに限定されるものではなく、例えば、図５〜図９に例示するフィルタ処理を適用してもよい。
例えば、図５（Ａ）に例示するように、ブロックの頂点画素と、境界画素の一部とを用いてフィルタリングを行ってもよい。ここで、境界画素とは、他のブロックと隣接する画素のうち、頂点画素以外のものをいう。
本例では、図５（Ａ）で斜線が付された8つの画素群（４つの頂点画素、及び、４つの境界画素）が抽出される。頂点画素に対しては、図３（Ｂ）及び（Ｃ）で説明したフィルタ演算が施され、境界画素に対しては、図５（Ｂ）に例示するように、隣接するブロックの隣接する画素（Ｐ２）が抽出され、フィルタの出力値Ｆ（Ｐ１）は、図５（Ｃ）に例示するように、抽出された画素値Ｐ２と、注目画素値Ｐ１との平均値となる。
【０１０９】
なお、境界画素の位置は、図５（Ａ）に例示したものに限定されるものではなく、例えば、図６（Ａ）に例示する位置でもよいが、この場合には、フィルタ周囲画素として、隣接するブロックのフィルタリングに必要な画素値を得ておく必要がある。
このような観点から図５と図６とを比較すると、図５のように、境界画素の位置は、ブロック内の位相（主走査方向の位置、副走査方向の位置）を合わせたほうがよい。
【０１１０】
また、図７（Ａ）に例示するように、ブロックの周縁部の全画素（頂点画素及び境界画素）を、フィルタ処理の対象としてもよい。この場合も、頂点画素については、図３で説明したフィルタ演算を行い、境界画素については、図７（Ｂ）及び（Ｃ）に例示するように、隣接するブロックの隣接する画素と平均化する。
【０１１１】
また、図８（Ａ）に例示する境界画素を、図８（Ｂ）に例示する４つの画素群でフィルタリングしてもよい。すなわち、境界画素値Ｐ１を処理対象とする場合に、図８（Ｂ）に例示するように、同一ブロックに属する画素値Ｐ３と、隣接するブロックの隣接画素の画素値Ｐ２と、この隣接画素（Ｐ２）にさらに隣接する画素の画素値Ｐ４とを抽出し、抽出された画素値Ｐ１〜Ｐ４に対して、図８（Ｃ）に例示する重み付け係数（ａ、ｂ、ｃ、及び、ｄ）を掛けて合算することにより、フィルタ出力値Ｆ（Ｐ１）を算出してもよい。この場合に、図８（Ｄ）に例示するように、境界画素のさらに内側にある画素を参照する必要がある。
【０１１２】
また、図９（Ａ）に例示するように、頂点画素及び境界画素に対して、３×３のＦＩＲフィルタを掛けてもよい。この場合には、図９（Ｂ）に例示するように、処理対象となる頂点画素又は境界画素を中心として３×３サイズの矩形領域を参照する必要がある。
【０１１３】
なお、フィルタF()は、ローパス特性であれば他のものであってもよく、様々なフィルタを利用することができる。
例えば、上記図３、図５〜図９によって、１次的なフィルタ出力値F(P1)を算出し、さらに、以下の式により、２次的なフィルタ出力値F'(P1)を算出してもよい。なお、下記係数αは、予め定められた定数である。典型的にはαは0から1の間の数値である。
【０１１４】
0004788465.tif 000039
【０１１５】
［実施形態２］
次に、第２の実施形態を説明する。
第２の実施形態では、反復処理において、簡略化された変換処理（簡略化ＤＣＴ）、及び、簡略化された逆変換処理（簡略化ＩＤＣＴ）を適用する形態を説明する。
【０１１６】
図１０は、制御装置２０（図１）により実行される第２の復号化プログラム６の機能構成を例示する図である。
図１０に例示するように、第２の復号化プログラム６は、エントロピ復号部６００、全体逆変換部６１０、終了判定部６２０、フィルタ処理部６３０、部分変換部６４０、範囲保証部６５０、及び部分逆変換部６６０を有する。
エントロピ復号部６００は、入力された符号データを、エントロピ復号化して、全体逆変換部６１０に出力する。
【０１１７】
全体逆変換部６１０は、エントロピ復号部６１０から入力された変換係数を逆変換して、画像情報を生成し、生成された画像情報を終了判定部６２０に出力する。
本例の全体逆変換部６１０は、エントロピ復号部６１０から入力されたＤＣＴ係数を逆変換して、逆変換により生成された画素値を終了判定部６２０に出力する。
【０１１８】
終了判定部６２０は、全体逆変換部６１０又は部分逆変換部６６０から入力された画像情報に基づいて、反復処理（すなわち、フィルタ処理及び量子化範囲保証処理）を行うか否かを判断し、反復処理を行うと判断した場合には、入力された画像情報をフィルタ処理部６３０に出力し、反復処理を行わないと判断した場合には、入力された画像情報を復号画像として出力する。
例えば、終了判定部６２０は、全体逆変換部６１０から入力された画像情報、又は、部分逆変換部６６０から入力された画像情報と全体逆変換部６１０から入力された画像情報との和について、ブロック歪量を測定し、ブロック歪量の基準値以上である場合に、反復処理を行う旨を決定する。
本例の終了判定部６２０は、全体逆変換部６１０から画素値が入力された場合には、入力された画素値に基づいて、反復処理を行うか否かを判断し、部分逆変換部６６０から画素値（具体的には、画素値変化量ｅ）が入力された場合には、部分逆変換部６６０から入力された画素値（画素値変化量、すなわち、補正量）と、全体逆変換部６１０から入力された画素値とを合算し、合算された画素値に基づいて、反復処理を行うか否かを判断する。
【０１１９】
フィルタ処理部６３０は、ローパスフィルタを用いて、終了判定部６２０から入力された画像情報に対して、フィルタ処理を施し、フィルタ処理が施された画像情報を部分変換部６４０に出力する。フィルタ処理は、空間領域でブロック歪を軽減するものであればよい。
より具体的には、フィルタ処理部６３０は、直交変換処理（本例では、ＤＣＴ処理）の処理単位であるブロックの周縁部の画素についてのみ、フィルタ処理を施す。
本例のフィルタ処理部６３０は、上記の式（数２）を用いて、ローパスフィルタをかけた場合の画素値変化量ｅ０'を算出する。ただし、ｘ０＝ｘｏ０＋ｅ０
【０１２０】
部分変換部６４０は、フィルタ処理部６３０によりフィルタ処理が施された画像情報を直交変換して、一部の画像情報に関する変換係数を生成し、生成された変換係数を範囲保証部６５０に出力する。
本例の部分変換部６４０は、上記式（数３）を用いて、画素値変化量ｅ０'を、変換係数変化量ｄ０に変換する。
【０１２１】
範囲保証部６５０は、フィルタ処理部６３０によりフィルタ処理が施された画像情報の変換係数が元の量子化区間におさまるように、部分変換部６４０から入力された変換係数の値を補正する。
本例の範囲保証部６５０は、上記式（数４）を用いて、変換係数変化量ｄ０に対して量子化範囲保証を行い、量子化範囲保証がなされた変換係数変化量ｄ０'を算出する。
【０１２２】
部分逆変換部６６０は、範囲保証部６５０から入力された変換係数（例えば、ＤＣＴ係数）の少なくとも一部を逆変換して、画像情報を生成し、生成された画像情報を終了判定部６２０に出力する。
本例の部分逆変換部６６０は、以下の式（数４５）を用いて、入力された変換係数変化量ｄ０'を逆変換して、画素値変化量ｅ０を算出する。
【０１２３】
0004788465.tif 000040
【０１２４】
なお、終了判定部６２０は、部分逆変換部６６０から画素値変化量ｅ０が入力されると、以下の式（数４６）を用いて、画素値変化量を適用した場合の画像情報ｘを算出し、算出された画像情報ｘに基づいて反復処理を終了するか否かを判断する。ここで、ｘ０は、全体逆変換部６１０から入力された画像情報である。
【０１２５】
0004788465.tif 000041
【０１２６】
［全体動作］
図１１は、第２の復号化プログラム６（図１０）による復号化処理（Ｓ２０）を説明するフローチャートである。
図１１に例示するように、ステップ２００（Ｓ２００）において、エントロピ復号部６００（図１０）は、入力された符号データをハフマン符号化方式で復号化し、復号化されたＤＣＴ係数を全体逆変換部６１０に出力する。
【０１２７】
ステップ２１０（Ｓ２１０）において、全体逆変換部６１０は、エントロピ復号部６１０から入力されたＤＣＴ係数全体を逆変換して、逆変換により生成された画素値を終了判定部６２０に出力する。
【０１２８】
ステップ２２０（Ｓ２２０）において、終了判定部６２０（図１０）は、全体逆変換部６１０から画素値が入力された場合には、入力された画素値（すなわち、最初の復号画像）に基づいて、反復処理（Ｓ２３０〜Ｓ２７０）を行うか否かを判断する。
また、終了判定部６２０は、反復処理が行われた場合（すなわち、Ｓ２７０の処理から戻ってきた場合）、部分逆変換部６６０から入力された画素値変化量ｅと元の画素値（すなわち、直近の反復処理が開始される時の画素値）との合算値（すなわち、補正後の復号画像）に基づいて、反復処理を行うか否かを判断する。
復号化プログラム６は、反復処理を行うと判断された場合に、Ｓ２３０の処理に移行し、反復処理を終了すると判断された場合に、Ｓ２８０の処理に移行する。
【０１２９】
ステップ２３０（Ｓ２３０）において、フィルタ処理部６３０は、上記の式（数２）を用いて、終了判定部６２０から入力された画素値ｘ０に対してローパスフィルタをかけた場合の画素値変化量ｅ０'を算出する。
【０１３０】
ステップ２４０（Ｓ２４０）において、部分変換部６４０は、上記式（数３）を用いて、フィルタ処理部６３０により算出された画素値変化量ｅ０'を、変換係数変化量ｄ０に変換する。
【０１３１】
ステップ２５０（Ｓ２５０）において、範囲保証部６５０は、上記式（数４）を用いて、部分変換部６４０により変換された変換係数変化量ｄ０に対して、量子化範囲保証を行い、量子化範囲保証がなされた変換係数変化量ｄ０'を算出する。
【０１３２】
ステップ２６０（Ｓ２６０）において、部分逆変換部６６０は、上記式（数４５）を用いて、範囲保証部６５０により算出された変換係数変化量ｄ０'を逆変換して、画素値変化量ｅ０を算出する。
【０１３３】
ステップ２７０（Ｓ２７０）において、終了判定部６２０は、元の画素値画素値ｘ０（本反復処理の入力画素値）と、部分逆変換部６６０により算出された画素値変化量ｅ０とを合算する。
復号化プログラム６は、この合算値をこの反復処理で補正された復号画像として、Ｓ２２０の処理に戻る。
【０１３４】
ステップ２８０（Ｓ２８０）において、終了判定部６２０は、反復処理を終了すると判断すると、復号画像（すなわち、Ｓ２１０において算出された画素値、又は、Ｓ２７０において算出された合算値）を復号画像として外部に出力する。
【０１３５】
以上説明したように、本実施形態における復号化装置２は、ＤＣＴ処理あるいはＩＤＣT処理を簡略化して演算負荷を軽減する。特に、本例では、反復処理におけるＤＣＴ処理及びＩＤＣＴ処理を簡略化するため、演算負荷の軽減効果が大きい。
【０１３６】
［変形例１］
次に、上記第２の実施形態の変形例を説明する。
上記実施形態では、画像情報を変換係数に変換する変換行列Dの部分行列Dpmを用いて、簡略化ＤＣＴ処理を行い、変換係数を画像情報に変換する逆変換行列D-1の部分行列D-1mpを用いて、簡略化ＩＤＣＴ処理を行っているが、これに限定されるものではない。
すなわち、画素値変化量e0と変換係数変化量d0との関係として、別の関係式を利用してもよい。
第１の変形例における部分逆変換部６６０は、部分行列Dpmの逆行列を用いて、簡略化ＩＤＣＴ処理を行う。
ただし、部分行列Dpmの逆行列が存在するためには、Dpmが正方行列(すなわち、m=p)である必要がある(DはDCT変換行列であるため、正方であれば正則、すなわち逆行列の存在は保証される)。以下、m=pのとき、m<pのとき、及び、m>pのときの逆行列を説明する。なお、逆変換行列D-1の左上m行p列を抜き出した部分行列をD-1mpと表記し、部分行列Dpmの逆行列を、[Dpm]-1と表記する。
【０１３７】
m=pのときは、逆行列の存在が保証されるため、以下の式（数）により簡略化ＩＤＣＴが実現される。
【０１３８】
0004788465.tif 000042
【０１３９】
m<pのときは、簡略化ＤＣＴの式における画像情報e0にとって、未知数よりも条件のほうが多い形の連立方程式となる。この場合、最小2乗法によって解を求めることが一般的である。いわゆる左側一般化逆行列を用いることによって、最小2乗解を求めることができる。具体的には、以下の式（数）となる。なお、行列ＤはDCT変換行列であるため、Dpmのランクがmとなり、下記一般化逆行列が存在する。
【０１４０】
0004788465.tif 000043
【０１４１】
m>pのときは、簡略化ＤＣＴの式における画像情報e0にとって、条件よりも未知数のほうが多い形の連立方程式となる。この場合、条件を付加して解く必要がある。
ここでは、変換係数値ができるだけ量子化範囲内に収まっていて、かつ、ブロック境界でなだらかな画像を求めることを目的としている。そこで、変換係数値をできるだけ量子化範囲内に収めるためには、画素値変化量e0はできるだけ小さいほうがよいとする条件を付加する。ここでは、e0のノルムが最小となる解を求めればよいと考える。
このような解(ノルム最小解)を求めることのできる一般化逆行列として、Moore-Penroseの一般化逆行列が知られている。以下、行列Aの一般化逆行列をA＊と表記することにする。
行列Aを下記のようにURV分解する。
【０１４２】
0004788465.tif 000044
【０１４３】
このとき、行列AのMoore-Penroseの一般化逆行列A* は、以下のように与えられる。
【０１４４】
0004788465.tif 000045
【０１４５】
URV分解としては、例えば、特異値分解を用いることができる。この一般化逆行列を用いて、e0のノルムが最小となる解を以下のように解く。
【０１４６】
0004788465.tif 000046
【０１４７】
ここで、m=pの場合や、m<pの場合もMoore-Penroseの一般化逆行列の特殊な例として含まれる。そのため、以下、アルゴリズム表記上は、m、pの大小に依存せず、上記式（数５１）を用いて一般化する。
【０１４８】
なお、Moore-Penroseの一般化逆行列は、Dpmのランクがp以下であっても求めることのできる形式である。ここで対象としているDpmはDCT変換行列Dの一部であるため、ランクがｐとなることを保証することができる。よって、この場合のMoore-Penroseの一般化逆行列は、以下のように、いわゆる右側一般化逆行列として算出が可能である。
【０１４９】
0004788465.tif 000047
【０１５０】
さらに、ｍ行m列の重み行列Weを定義して、重み付けノルムe0TWee0を最小化する一般化逆行列を定めることも可能である。例えば、Weが正則かつ対称な場合、以下のように求めることができる。
【０１５１】
0004788465.tif 000048
【０１５２】
また、We=I(単位行列)とすることによって、上記式（数５１）などを含むことになる。
以下、重み付けノルム最小解を得ることのできる一般化逆行列の算出方法を示す。
ここでは、以下が拘束条件である。
【０１５３】
0004788465.tif 000049
【０１５４】
この拘束条件に対して、以下の式を最小化する解ｘ＝Ａ＊ｙを求めようとするものである。
【０１５５】
0004788465.tif 000050
【０１５６】
これを解くため、以下のように、Lagrange乗数ベクトルλを導入して、Ｌａｇｒａｎｇｅ関数Lを定義する。
【０１５７】
0004788465.tif 000051
【０１５８】
そして、以下の２式を解けばよい。
【０１５９】
0004788465.tif 000052
【０１６０】
ここで、［Ｗ＋ＷＴ］が正則であれば、Ａ［Ｗ＋ＷＴ］−１×（数５５）−（数５６）より、以下の式となる。
【０１６１】
0004788465.tif 000053
【０１６２】
さらに、Ａ［Ｗ＋ＷＴ］−１ＡＴが正則であれば、式（数５５）と合わせて、以下の式が導かれる。
【０１６３】
0004788465.tif 000054
【０１６４】
すなわち、以下の式となる。
【０１６５】
0004788465.tif 000055
【０１６６】
特に、Wが対称な場合は、［Ｗ＋ＷＴ］＝２Ｗとできるため、以下の式が導かれる。
【０１６７】
0004788465.tif 000056
【０１６８】
この重み付け行列を用いることによって、画素位置毎に画素値の変動の容易さを変化させることが可能である。例えば、「8×8ブロックの内部の点の画素値は余り変動させず、境界の点の画素値を多く変動させる」、あるいは、「8×8ブロックの頂点の画素値を多く変動させ、その他の点の画素値は余り変動させない」などとすることが可能となる。
具体的には、Weが対角行列の例を以下に示す。
【０１６９】
0004788465.tif 000057
【０１７０】
このとき、wei の値を小さく設定することによって、他の要素に比べて大きなeiの値を得ることができる。ただし、e0=(e0, e1, ..., em-1)Tとしている。
【０１７１】
［変形例２］
次に、第２の実施形態の第２の変形例を説明する。
本変形例の部分変換部６４０は、画素値変化量e0から変換係数変化量d0を求めるときに、上記D-1mpの一般化逆行列を利用する。すなわち、以下の式（数６０）が用いられる。
【０１７２】
0004788465.tif 000058
【０１７３】
これによって、ノルムが最小(すなわち、できるだけ量子化範囲を逸脱しない) d0を求めることができる。
さらに、変形例１と同様に、重み行列を定義することができる。p行p列の重み行列Wdを定義して、重み付けノルムd0TWdd0を最小化する一般化逆行列を定める。
一例として、Wdが正則かつ対称な場合、以下のようになる。
【０１７４】
0004788465.tif 000059
【０１７５】
この重み付け行列を用いることによって、DCT係数毎に重要度を変化させることが可能である。例えば、「高域のDCT係数は余り変動させず、低域のDCT係数を多く変動させる」などとすることが可能となる。
変形例１と同様に、行列Wdが対角行列の例を以下に示す。
【０１７６】
0004788465.tif 000060
【０１７７】
このとき、wdi の値を小さく設定することによって、他の要素に比べて大きなdiの値を得ることができる。例えば、「量子化ステップサイズが大きなDCT係数に対しては、量子化範囲外になる可能性が低いため、wdi の値を小さく設定する」、あるいは、「値が0である他のN-p個のDCT係数変化量の要素との連続性を考慮して、大きなiに対しては、diの値を小さくするためwdi の値を大きく設定する」等の選択肢を考えることができる。ただし、d0=(d0, d1, ..., dp-1)Tとしている。
【０１７８】
変形例２における具体的な計算方法をまとめると、以下のようになる。
【０１７９】
0004788465.tif 000061
【０１８０】
［変形例３］
第３の変形例は、基本的には上記変形例１と同じ方式であるが、p<mのときの動作が異なる。すなわち、本変形例は、条件数よりも未知数の数が多いとき(p<m)に、できるだけ拘束条件を満たし、かつ、未知数の数が小さなe0を解とするものである。具体的な手順は以下である。
p?n?mである数nを考える。ここでは、ベクトルe0の次元数(要素数)をnに変更して演算を行う。nの値をpからmまで増加させていき、変形例１の手法でn次元の、ベクトルe0を求める。最初に拘束条件内(量子化範囲内)に収まったとき、そのe0を出力する。ただし、出力時のe0の要素数はmであり、かつ、最初のn個の要素以外の要素の値は0としたものである。
なお、最後まで、拘束条件内(量子化範囲内)に収まらない場合には、変形例１と同様の処理となる。
【０１８１】
［変形例４］
第４の変形例は、基本的には、変形例２と同じ方式であるが、p>mのときの動作が異なる。すなわち、本変形例は、条件数よりも未知数の数が多いとき(p>m)に、できるだけ拘束条件を満たし、かつ、未知数の数が小さなベクトルd0を解とするものである。p>mの場合の手順は以下である。
m?n?pである数nを考える。ここでは、ベクトルd0の次元数(要素数)をnに変更して演算を行う。nの値をmからpまで増加させていき、簡略化法その3の手法でn次元のベクトルd0を求める。最初に拘束条件内(量子化範囲内)に収まったとき、そのベクトルd0を出力する。ただし、出力時のベクトルd0の要素数は、pであり、かつ、最初のn個の要素以外の要素の値は0としたものである。最後まで、拘束条件内(量子化範囲内)に収まらない場合には、変形例２と同様の処理となる。
【０１８２】
なお、IDCT近似としては、上記第２の実施形態のような簡略化法を用いることができる。あるいは、IDCT近似として、変形例１のような簡略化法を用いることができる。あるいは、IDCT近似として、変形例３の方法を用いることができる。つまり、IDCT近似手法は3種類ある。
同様に、DCT近似として、上記第２の実施形態のような簡略化法を用いることができる。あるいは、DCT近似として、変形例２のような簡略化法を用いることができる。あるいは、DCT近似として、変形例４の方法を用いることができる。つまり、DCT近似手法は3種類ある。
よって、DCT近似手法、および、IDCT近似手法の組み合わせとしては、9通り存在している。
【０１８３】
［変形例５］
第５の変形例における終了判定部６２０は、以下の式（数６４）を用いて、補正された復号画像を生成する。
【０１８４】
0004788465.tif 000062
【０１８５】
あるいは、終了判定部６２０は、以下の式（数６５）及び式（数６６）を用いて、補正された復号画像を生成してもよい。
【０１８６】
0004788465.tif 000063
【０１８７】
あるいは、終了判定部６２０は、以下の式（数６７）により算出された画素値変化量ｅを、元の画素値ｘｏに加算して、復号画像を生成してもよい。
【０１８８】
0004788465.tif 000064
【０１８９】
［変形例６］
上記第２の実施形態では、初期画素値ベクトルｘo0を保持しておき、画素値変化量ｅと加算している。ここで、保持する画素値変化ベクトルとしては、初期画素値変化ベクトルeo0、あるいは、初期変換係数変化ベクトルdo0であっても構わない。あるいは、ベクトルco0を用いることも可能である。これらの変形例を変形例6-1、変形例6-2、変形例6-3として以下説明する。
【０１９０】
変形例6-1では、初期画素値変化ベクトルeo0を以下の式（数６９）のように定義して、以下の式（数６８〜７２）を用いる。これらの式は、第２の実施形態と同様の手順で導かれる。
【０１９１】
0004788465.tif 000065
【０１９２】
具体的には、図１１のＳ２１０において、画素値変化ベクトルe0に加えて、初期画素値変化ベクトルeo0を初期化しておく。
次に、Ｓ２３０において、フィルタ処理６３０は、上記式（数７２）を用いてフィルタリングを行い、さらに上記式（数６９）を用いて、ベクトルe0' を求める。
Ｓ２４０以降の処理は、このベクトルe0'に基づいて、上記第２の実施形態と同様の処理を行う。
【０１９３】
このように、変形例6-1では、フィルタリングの入力が画素値変化ベクトルeo0であるため、画素値ベクトルｘo0を入力するよりも、信号が0付近に集中し易い。そのため、同一の演算精度でも高い効果を上げられる、あるいは、同一の効果を得るための演算精度を下げられる可能性がある。
あるいは、適度にベクトルe0の量子化を行った場合、ベクトルe0は、ほとんどの要素が0の疎なベクトルとなる。式（数７２）において、このような疎なベクトル(行列)に関する高速演算算法を活用することができる。なお、一般に、差分情報に対してDCT、IDCT演算を行った場合、疎な行列に対する高速演算算法の利用が可能である。この性質はベクトル次元数を削減しない場合でも成り立つ。よって、実は、差分を利用したフィルタリングやDCT、IDCTだけでも効果があるといえる。
さらに、画素値ベクトルｘo0を保持するよりも、ベクトルeo0を保持するデータ量を削減できる可能性がある。
【０１９４】
変形例6-2では、初期変換係数変化ベクトルdo0を以下のように定義して、以下の式（数７３〜７７）を用いる。これらの式は、第２の実施形態と同様の手順で導かれる。
【０１９５】
0004788465.tif 000066
【０１９６】
具体的には、図１１のＳ２１０において、画素値変化ベクトルeo0及び式（数６８）に加えて、式（数７３）（あるいは、式（数７４）)の初期化を行っておく。
次に、Ｓ２３０において、フィルタ処理部６３０は、上記式（数７２）を用いてフィルタリングを行う。
次に、Ｓ２４０において、部分変換部６４０は、式（数７７）を用いて、DCT変換を行う。さらに、部分変換部６４０は、式（数７５）を用いて、ベクトルd0を求める。
Ｓ２５０以降の処理は、第２の実施形態と同様である。
【０１９７】
このように、本変形例6-2では、変形例6-1の利点に加えて、以下の利点がある。
すなわち、DCT変換(式（数７７）)の実質演算精度を高めることができる。あるいは、画素値変化ベクトルeo0を保持するよりも、変換係数変化ベクトルdo0を保持したほうが、効率が良い。なぜなら、空間領域を直接符号化するよりも、変換領域の符号化のほうが効率が良いからである。
さらに、適度にΔe0の量子化を行った場合、Δe0はほとんどの要素が0の疎なベクトルとなる。式（数７７）において、このような疎なベクトル(行列)に関する高速演算算法を活用することができる。
【０１９８】
変形例6-3では、保持する初期ベクトルをベクトルcoのみとする。
具体的には、図１１のＳ２１０において、画素値ベクトルｘ０を初期化しておく。
次に、Ｓ２３０において、フィルタ処理部６３０は、以下のＳ２６０において算出されるx0を用いてフィルタリングを行う。
Ｓ２４０及びＳ２５０の処理は、上記第２の実施形態と同様である。
Ｓ２６０において、部分逆変換部６６０は、以下の式（数７８）を用いて、画素値ベクトルx0を算出する。
【０１９９】
0004788465.tif 000067
【０２００】
ただし、ベクトルco2は、ベクトルcoからp個の要素を抜き出したp次元ベクトルである。
【０２０１】
このように、本変形例6-3では、ベクトルco以外の信号を保持する必要がないため、メモリ効率を高めることが可能である。
【０２０２】
［変形例７］
本変形例では、入力DCT変換係数に対して、図１１のＳ２１０において近似を行う。最終的なIDCTに対する近似を行うことはできないが、演算途中のフィルタリングに用いる画素値算出の際の演算は近似が可能である。
具体的には、第１の実施形態における式（数１）を用いて、変換係数変化量を画素値変化量に変換する。
この式（数１）は、フィルタリングに用いる画素値ベクトルx0のみを対象として、変換係数ベクトルco中の一部の要素がベクトルx0算出に支配的であるという近似を行うものである。
本変形例７は、入力された変換係数全体を逆変換する代わりに、上記式（数１）を用いて、最初のIDCTを行うものである。
ただし、本変形例では、図１１のＳ２１０（最初のIDCT）では、画素値ベクトルｘoを求めていないため、式（数６４）を用いて、最終的に画素値ベクトルxを求めてＳ２８０の処理に移行し終了する。
【０２０３】
［その他の変形例］
上記第１及び第２の実施形態では、DCTあるいはIDCTにおいて、mあるいはpの値を小さくする簡略化を行った。このとき、DCT時とIDCT時において、同じｍの値を用いていた。あるいは、DCT時とIDCT時において、同じpの値を用いていた。
しかしながら、DCT時とIDCT時で同じmの値を用いる必要はない。あるいは、DCT時とIDCT時で同じpの値を用いる必要はない。
例えば、DCTあるいはIDCTの何れかがハードウェア化されていて、簡略化の必要のない場合などには、一旦全ての画素値あるいはDCT係数を算出しておいてから、必要なものだけを抽出すれば良い。
【０２０４】
例えば、上記第２の実施形態において、式（数４）において量子化範囲を逸脱するかどうか判断した後に、再度式（数４５）を用いてIDCT演算を行っていた。
ここで、全てのp個のDCT係数が量子化範囲を逸脱していない場合には、再度IDCTを行う必要がなく、例えば、式（数２）によりで算出された画素値変化量ｅ０'をそのまま用いればよい。
【０２０５】
上記実施形態では、最後のIDCT演算（例えば、式（数４５））において、簡略化IDCT演算を行っていた。
ここで、簡略化IDCTでは演算誤差が発生する危険性がある。そこで、最終の画素値ベクトルxを求めて復号化処理を終了する場合には、式（数４５）などの簡略化ＩＤＣＴではなく、簡略化しないIDCTを用いてもよい。すなわち、最後のＩＤＣＴ処理では、以下の式（数７９）による。
【０２０６】
0004788465.tif 000068
【０２０７】
また、上記第２の実施形態では、複数回、反復処理を行う形態を説明したが、この反復処理を1回のみ(すなわち、簡略化DCTを一度だけ行う場合)行ってもよい。この場合にも、簡略化ＤＣＴなどを適用する効果が存在する。
また、上記第１の実施形態と上記第２の実施形態とを組み合わせてもよい。
【０２０８】
［演算量に関する考察］
上記では、64×64DCT変換行列を用いたアルゴリズムを説明した。実際のDCT変換では、8×8行列の乗算を2回行う変換でよい。さらに、DCTには高速算法が存在する。8×8行列乗算行うDCT変換、64×64変換行列を用いるDCT変換それぞれに、別の高速算法を設定することが可能である。ベクトル次元を削減した場合には、削減の方法によって、高速算法を適用できる場合とできない場合が存在する。そのため、ベクトル次元と演算量の関係は複雑であり、単純にベクトル次元を減らすことによって、DCT、IDCTの演算量を常に減少させられるとは限らない。
そこで、ここでは上記第１の実施形態又は第２の実施形態に関して厳しい方向で評価を行う。ベクトル次元を削減する場合(本実施形態)には高速算法を適用せず、ベクトル次元を削減しない従来手法の場合には高速算法を適用して、演算量の評価を行う。
演算量に関して、DCTとIDCTは対称な変換であるため、ここではDCTの演算量を見積もる。8×8のDCT変換行列をTとする。8×8の入力画素ブロックをB、8×8のDCT係数行列をCとする。通常、次式を用いてDCT演算が行われる。以下、各行列T、B、CをM×M行列とする。ちなみに、N=M2である。
【０２０９】
0004788465.tif 000069
【０２１０】
上式をそのまま計算する場合、積和演算の回数は、2×M×M2=2 M3  = 1024となるが、ここにChenの高速演算アルゴリズムを適用すると以下のように演算回数を削減させることができる。
【０２１１】
0004788465.tif 000070
【０２１２】
これに対して、本実施形態の方式を適用した場合の演算回数を見積もる。画素値ベクトルxの次元数がm、変換係数ベクトルcの次元数がpのとき、簡略化DCT変換行列はp行m列である。このとき、積和演算回数は、pmとなる(厳密には加算回数は積算回数よりも小さいが、ここでは加算と積算が同一回数として多めに見積もっている)。p, mを変化させたときの様子を図１２に示す。
図１２に示すように、ベクトル次元(m、および、p)を小さくした場合には、従来のDCT、IDCTよりも明らかに演算量を削減させることができることが分かる。
【図面の簡単な説明】
【０２１３】
【図１】本発明にかかる復号化方法が適応される復号化装置２のハードウェア構成を、制御装置２０を中心に例示する図である。
【図２】制御装置２０（図１）により実行され、本発明にかかる復号化方法を実現する復号化プログラム５の機能構成を例示する図である。
【図３】フィルタ処理部５２０（図２）によるフィルタ処理を説明する図である。
【図４】復号化プログラム５（図２）による復号化処理（Ｓ１０）を説明するフローチャートである。
【図５】第２のフィルタ処理を説明する図である。
【図６】第３のフィルタ処理を説明する図である。
【図７】第４のフィルタ処理を説明する図である。
【図８】第５のフィルタ処理を説明する図である。
【図９】第６のフィルタ処理を説明する図である。
【図１０】制御装置２０（図１）により実行される第２の復号化プログラム６の機能構成を例示する図である。
【図１１】第２の復号化プログラム６（図１０）による復号化処理（Ｓ２０）を説明するフローチャートである。
【図１２】演算量を評価するためのグラフである。
【符号の説明】
【０２１４】
２・・・復号化装置
５・・・復号化プログラム
５００・・・エントロピ復号部
５１０・・・部分逆変換部
５２０・・・フィルタ処理部
５３０・・・部分変換部
５４０・・・範囲保証部
５５０・・・係数補正部
５６０・・・全体逆変換部
６・・・復号化プログラム
６００・・・エントロピ復号部
６１０・・・全体逆変換部
６２０・・・終了判定部
６３０・・・フィルタ処理部
６４０・・・部分変換部
６５０・・・範囲保証部
６６０・・・部分逆変換部
【図１】
0004788465.tif 000071
【図２】
0004788465.tif 000072
【図３】
0004788465.tif 000073
【図４】
0004788465.tif 000074
【図５】
0004788465.tif 000075
【図６】
0004788465.tif 000076
【図７】
0004788465.tif 000077
【図８】
0004788465.tif 000078
【図９】
0004788465.tif 000079
【図１０】
0004788465.tif 000080
【図１１】
0004788465.tif 000081
【図１２】
0004788465.tif 000082