以下、本発明の実施の形態について図面を参照しながら詳細に説明する。尚、以下の実施の形態は、本発明を具体化した一例であって、本発明の技術的範囲を限定する性格のものではない。
(実施の形態1)
図1は、本発明の実施の形態1における逆量子化回路の構成を示すブロック図である。
図1に示すように、本発明の実施の形態1における逆量子化回路は、入力端子13に供給された量子化係数データ(以下、適宜、“係数データ”と呼ぶ)CDに対し、各種の演算処理を施し、元の係数値を復元し、復元した係数値である復元データRDを出力端子19に出力する。また、本逆量子化回路は、画像の符号化方式として知られる、静止画像を対象にしたJPEG方式、動画像を対象にしたMPEG−1方式、MPEG−2方式、MPEG−4方式、H.263方式、MPEG−4AVC方式とも呼ばれるH.264方式などにおける逆量子化回路を実現している。さらに、これらの符号化方式に加えて、将来提案される符号化方式に対しても対応可能な構成としている。
図1において、本逆量子化回路には、係数データCDが入力端子13に供給される。係数データCDは、画像の符号化方式に基づき画像データを例えば直交変換することで求めた周波数ごとの係数値を量子化したデータである。本逆量子化回路は、このような係数データCDに対し、各種の符号化方式やその符号化方式の符号化種別に応じて演算処理を選択的に施すことで、画像データのブロック単位での例えば離散コサイン変換(DCT:Discrete Cosine Transform、以下、適宜、“DCT”と呼ぶ)で求めた各周波数成分の係数値を復元する。
図1に示す逆量子化回路は、係数データCDに対し逆量子化のための各種演算処理を行うための演算処理部を備える。逆量子化回路は、演算処理部として、乗算処理部140、加算処理部150、シフト処理部170及び後段処理部190を備える。
乗算処理部140は、係数データCDに対し量子化スケールに基づく逆量子化を行うとともに、係数データCDに対し量子化マトリックスに基づく逆量子化を行う。加算処理部150は、係数データCDに対し所定の加算値を加算する。シフト処理部170は、係数データCDに対し所定のビット数(シフト量)だけシフトさせるビットシフト演算を行う。後段処理部190は、係数データCDに対し飽和処理及びDCTミスマッチ制御処理を行う。
また、逆量子化回路は、第1の乗算値生成部10、第2の乗算値生成部20、加算値生成部160及びシフト量生成部180を備える。第1の乗算値生成部10は、乗算処理部140において量子化スケールに基づく逆量子化を行うための第1の乗算値M1を生成する。第2の乗算値生成部20は、乗算処理部140において量子化マトリックスに基づく逆量子化を行うための第2の乗算値M2を生成する。加算値生成部160は、加算処理部150に供給するための所定の加算値OFを生成する。シフト量生成部180は、シフト処理部170に供給するためのシフト量データSFを生成する。
また、逆量子化回路は、制御部100を備える。制御部100は、乗算処理部140、加算処理部150、シフト処理部170及び後段処理部190に対し、それぞれの演算処理を実行するか否かを指示する制御情報を出力する。
本発明の実施の形態1における逆量子化回路において、それぞれの演算処理部は、指示に応じて、逆量子化のための演算処理の内容が選択可能であるとともに、逆量子化のための演算処理に含めるか否かを選択可能としている。すなわち、各演算処理部は、その演算処理部の演算処理を逆量子化処理に含めるよう指示されるとその演算処理部の演算処理を実行したデータ値を出力し、その演算処理部の演算処理を逆量子化処理に含めないよう指示されるとその演算処理部の演算処理を実行しないデータ値を出力する。このように、各演算処理部は、例えば、演算処理済データと非演算処理データとを選択的に切替えて出力する。さらに、演算処理部は、例えばビットシフトさせるシフト演算処理の場合のシフト量のような演算処理の内容についても選択可能としている。
さらに、本発明の実施の形態1における逆量子化回路は、乗算値生成部10、乗算値生成部20、加算値生成部160及びシフト量生成部180においても、生成する値又はデータの生成方法をそれぞれに選択可能としている。すなわち、制御部100は、乗算値生成部10、乗算値生成部20、加算値生成部160及びシフト量生成部180に対し、生成する値又はデータの生成方法を指示する制御情報を出力する。
ここで、逆量子化回路に入力される量子化係数データについて説明する。符号化データを含む符号化ストリームは、不図示の可変長復号化部に供給される。可変長復号化部は、供給された符号化ストリームに含まれる符号化データから量子化係数値、及び以下で説明する抽出情報などを復元する。すなわち、供給された符号化データのうち、例えば量子化係数値は一般的にランレベル符号化されたデータで構成されている。そのため、まず、可変長復号化部は、ゼロの量子化係数値の個数であるランデータと、非ゼロの量子化係数値であるレベルデータとを復元する。
次に、可変長復号化部は、復元したランデータとレベルデータとから、符号化処理におけるスキャンパターンの順序に従った1次元の量子化係数列を復元する。可変長復号化部は、このように復元した量子化係数値を量子化係数データとして、順次、不図示の符号化情報抽出部に供給する。同様に、量子化係数値以外の抽出情報についても復元を行い符号化情報抽出部に供給する。
次に、符号化情報抽出部は、可変長復号化部において復元したデータから、逆量子化処理を行うための符号化データに関する情報を抽出情報として抽出する。符号化情報抽出部は、このような抽出情報として、符号化データの種別に関した情報としての符号化種別情報及びマクロブロック種別情報などを抽出する。
符号化種別情報は、符号化データを生成するのに用いられた符号化方式を示す情報である。ピクチャ種別情報は、現在供給されている符号化データが、例えばMPEG−2方式において、Iピクチャと呼ばれる画面内符号化処理により生成されたデータ、Pピクチャと呼ばれる画面間前方予測符号化処理により生成されたデータ、及びBピクチャと呼ばれる画面間双方向予測符号化処理により生成されたデータのうちのどのデータであるかを示す情報である。なお、PピクチャやBピクチャにはピクチャ内にイントラのマクロブロックが含まれる場合があり、このような情報はマクロブロック種別情報として別途抽出される。本実施の形態では、ピクチャ種別情報及びマクロブロック種別情報を、現在処理中のブロックが画面内符号化であるイントラか、あるいは画面間符号化であるインターや非イントラかを識別するための情報として利用している。符号化情報抽出部は、量子化係数データを入力端子13に供給するとともに、抽出情報を制御部100に通知する。制御部100は、符号化種別情報及びマクロブロック種別情報に基づいて、入力される係数データの符号化方式の種類を識別し、符号化方式の種類に応じた制御情報を出力する。
本発明の実施の形態1における逆量子化回路は、このような基本構成であり、各種の符号化方式に応じて各演算処理部の演算処理の実行の有無や処理内容を選択的に切替えることにより、単一の回路で各種の画像符号化方式に対応できる汎用性の高い逆量子化回路を実現している。特に、本発明の実施の形態1における逆量子化回路は、汎用性を重視した構成であり、既存の各種符号化方式に対応するとともに、将来実施される符号化方式に対しても対応可能なような構成としている。以下、本発明の実施の形態1における逆量子化回路の詳細な構成について説明する。
図1に示すように、本逆量子化回路の入力端子13に供給された係数データCDは、まず、乗算処理部140に供給される。乗算処理部140は、第1の乗算器141(以下、適宜、単に“乗算器141”と呼ぶ)及び第2の乗算器142(以下、適宜、単に“乗算器142”と呼ぶ)を有する。乗算器141は、入力端子13に供給された係数データCDに対して第1の乗算値生成部10(以下、適宜、単に“乗算値生成部10”と呼ぶ)から供給された第1の乗算値M1(以下、適宜、単に“乗算値M1”と呼ぶ)を乗算する。乗算器142は、乗算器141から出力されたデータに対して第2の乗算値生成部20(以下、適宜、単に“乗算値生成部20”と呼ぶ)から供給された第2の乗算値M2(以下、適宜、単に“乗算値M2”と呼ぶ)を乗算する。
また、乗算処理部140において、乗算器141は、制御部100からの制御情報CNT_M1により乗算値M1を乗算する演算処理を行うか否かの切替制御が可能なように構成されている。また、乗算器142は、制御部100からの制御情報CNT_M2により乗算値M2を乗算する演算処理を行うか否かの切替制御が可能なように構成されている。このような乗算処理部140の構成により、例えば、制御情報CNT_M1及び制御情報CNT_M2を用いて、制御部100によってそれぞれ演算処理を行わないよう指示されると、乗算処理部140からは、入力端子13に供給された係数データCDが、乗算処理部140の出力データMDとして出力される。また、例えば逆に、制御情報CNT_M1及び制御情報CNT_M2を用いて、制御部100によってそれぞれ演算処理を行うよう指示されると、乗算処理部140からは、係数データCDに対して乗算値M1及び乗算値M2を乗算した値のデータが出力データMDとして出力される。
以上のように、乗算処理部140は、係数データCDに対して乗算値M1及び乗算値M2を乗算する演算処理の機能を有するとともに、これら演算処理を演算対象に含めるか否かをそれぞれに選択可能とし、このような乗算演算の処理において演算処理済データと非演算処理データとを選択的に切替えて出力するように構成されている。
なお、乗算処理部140において、図1に示すような係数データCDに対してまず乗算値M1を乗算し次に乗算値M2を乗算するような構成に代えて、係数データCDに対してまず乗算値M2を乗算し次に乗算値M1を乗算するような構成であってもよい。また、乗算処理部140は、乗算値M1と乗算値M2とを乗算した値を、係数データCDに対して乗算するような構成であってもよい。
このように、乗算処理部140は、係数データCDに乗算値M1を乗算した値、係数データCDに乗算値M2を乗算した値、及び係数データCDに乗算値M1と乗算値M2とを乗算した値のうちのいずれかの値を、制御情報CNT_M1及び制御情報CNT_M2を用いて選択する選択機能を有し、選択された値を出力データMDとして加算処理部150に供給する。また、乗算処理部140におけるこのような選択機能は、係数データCDの種類に応じて各値が選択される。
次に、乗算値生成部10は、上述した乗算処理部140に供給するための乗算値M1を生成する。乗算値生成部10は、主に、画像の符号化方式において量子化スケールと呼ばれているマクロブロックなどのブロックごとに定めた量子化幅を示す量子化スケール値(以下、適宜、“スケール値”と呼ぶ)を生成する。乗算値生成部10は、このようなスケール値を生成するため、図1に示すように、スケール値を生成するためのスケール値生成部110を有している。さらに、乗算値生成部10は、スケール値生成部110で生成したスケール値に対して各符号化方式や符号化方式における符号化種別に対応させた演算処理を選択的に施すことで乗算値M1を出力するスケール処理部210を有している。
本実施の形態における逆量子化回路は、このような乗算値生成部10に対し量子化スケールインデックス(以下、適宜、“スケールインデックス”と呼ぶ)SCIを供給する入力端子11を備えている。入力端子11に供給されたスケールインデックスSCIは、乗算値生成部10のスケール値生成部110に供給される。スケールインデックスSCIは、実際のスケール値に対応させた、例えば連続の整数値とするようなコードである。すなわち、例えば、MPEG−2方式のスケール値は、1、2、・・・、104、112のように増加する31個の非線形スケールとなるような特性値として規定されている。このようなスケール値を選択する場合、例えば、スケールインデックスSCIが0のときスケール値として1が選択され、スケールインデックスSCIが1のときスケール値として2が選択され、スケールインデックスSCIが30のときスケール値として104が選択され、スケールインデックスSCIが31のときスケール値として112が選択される。
スケール値生成部110は、このようなスケールインデックスSCIから実際のスケール値に変換するような変換機能を有している。変換機能は、例えば変換テーブルや変換演算器などによって構成されており、制御部100からの制御情報CNT_SCにより変換の種類が切替可能なように構成されている。さらに、乗算値生成部10において、スケール処理部210は、スケール値生成部110で生成したスケール値及びスケール処理部210による演算により得られた値のいずれかを、制御部100からの制御情報CNT_SPの指示に従って選択し、選択した値を乗算値M1として出力する。
このような構成により、乗算値生成部10は、制御情報CNT_SC及びCNT_SPに応じて、例えばMPEG−1方式、MPEG−2方式、MPEG−4方式及びH.263方式の場合には、上述したようなスケール値を乗算値M1として出力する。また、乗算値生成部10は、例えばJPEG方式の場合には、固定値を乗算値M1として出力する。さらに、乗算値生成部10は、H.264方式の場合には、H.264方式に基づき正規化されたスケール値である正規化係数の値を乗算値M1として出力する。以上のように、乗算値生成部10は、係数データCDに対する演算処理を施すための乗算値M1を生成する。
次に、乗算値生成部20は、上述した乗算処理部140に供給する乗算値M2を生成する。乗算値生成部20は、主に、画像の符号化方式において周波数ごとに量子化幅を設定した量子化マトリックスと呼ばれている量子化マトリックス値(以下、適宜、“マトリックス値”と呼ぶ)を生成する。このため、図1に示すように、乗算値生成部20は、このようなマトリックス値を生成するためのマトリックス値生成部120を有している。
本実施の形態における逆量子化回路は、量子化マトリックスデータ(以下、適宜、“マトリックスデータ”と呼ぶ)MXDが供給される入力端子12を備えている。入力端子12に供給されたマトリックスデータMXDは、マトリックス値生成部120に供給される。マトリックス値生成部120は、例えばこのようなマトリックスデータMXDに応じて書き換えが可能なメモリなどの記憶部で構成され、周波数ごとのマトリックス値を出力する。マトリックス値生成部120における記憶部は、例えばマトリックス値を順番に格納したテーブルなどで構成され、制御部100からの制御情報CNT_MXによりマトリックス値の種類が切替可能なように構成されている。
このような構成により、マトリックス値生成部120は、制御情報CNT_MXに応じて、例えばJPEG方式、MPEG−1方式、MPEG−2方式、MPEG−4方式及びH.264方式の場合には、上述したようなマトリックス値を乗算値M2として出力する。また、マトリックス値生成部120は、例えばH.263方式の場合には、固定値を乗算値M2として出力する。以上のように、乗算値生成部20は、係数データCDに対する演算処理を施すための乗算値M2を生成する。
次に、乗算処理部140から出力された出力データMDは、図1に示すように、加算処理部150に供給される。加算処理部150は、乗算処理部140からの出力データMDに対して加算値生成部160から供給された加算値OFを加算する加算器151を有している。
また、加算処理部150において、加算器151は、制御部100からの制御情報CNT_APにより加算値OFを加算する演算処理を行うか否かの切替制御が可能なように構成されている。このような加算処理部150の構成により、例えば、制御情報CNT_APを用いて、加算演算処理を行わないよう指示されると、加算処理部150からは、乗算処理部140からの出力データMDが加算処理部150の出力データADとして出力される。また、例えば逆に、制御情報CNT_APを用いて、加算演算処理を行うよう指示されると、加算処理部150からは、乗算処理部140からの出力データMDに対して加算値OFを加算した値のデータが出力データADとして出力される。出力データADは、以下で説明する丸め処理部155に供給される。
以上のように、加算処理部150は、係数データCDに対して加算値OFを加算する演算処理の機能を有するとともに、この加算演算処理を演算対象に含めるか否かを選択可能とし、このような加算演算処理において演算処理済データと非演算処理データとを選択的に切替えて出力するように構成されている。
このように、加算処理部150は、乗算処理部140から供給された出力データMDの値及び乗算処理部140から供給された出力データMDに対する加算値OFの加算により得られた値のうちのいずれかの値が制御情報CNT_APを用いて選択できる選択機能を有しており、選択された値を出力データADとして丸め処理部155に出力する。
次に、加算値生成部160は、上述した加算処理部150に供給する加算値OFを生成する。加算値生成部160は、制御部100からの制御情報CNT_OFによる指示に従って、各符号化方式に応じた加算値OFを選択的に出力し、加算処理部150に供給する。以上のように、加算値生成部160は、係数データCDに対する演算処理を施すための加算値OFを生成する。
なお、加算処理部150及び加算値生成部160は、MPEG−1方式、MPEG−2方式、MPEG−4方式及びH.263方式などで規定されているデッドゾーンのある量子化方式に対応するために設けている。例えば、MPEG−2方式の場合、符号化種別として画面内符号化のデータに対してはデッドゾーン処理を行わず、画面間符号化のデータに対してはデッドゾーン処理を行うよう規定されている。量子化方式におけるこのようなデッドゾーンとは、係数データCDの値を0に丸める範囲のことを示しており、上述の符号化方式においてこのデッドゾーンの範囲を所定の範囲として指定することで圧縮量を制御している。通常、量子化においてこのようなデッドゾーンを設ける場合、係数データCDの値が0になる範囲を他の値となる範囲よりも広くすることにより高圧縮化を図っている。
よって、例えば、MPEG−2の係数データCDに対して逆量子化処理を行う場合、入力端子13に画面内符号化の係数データCDが供給された場合にはデッドゾーンのある量子化に対応する逆量子化の処理を行わないように、また画面間符号化の係数データCDが供給された場合にはデッドゾーンのある量子化に対応する逆量子化の処理を行うように、加算処理部150及び加算値生成部160が制御される。これにより、MPEG−2方式に規定されたデッドゾーンのある量子化に対応する処理を行うことができる。
本実施の形態では、加算値生成部160においてデッドゾーンの範囲に応じた値を加算値OFとして生成し、加算処理部150において乗算処理部140からの出力データMDに加算値OFを加算することで、このようなデッドゾーンのある量子化に対応する逆量子化の処理を行っている。また、加算処理部150における制御情報CNT_AP、及び加算値生成部160における制御情報CNT_OFを利用して、それぞれの符号化方式で規定されたデッドゾーンに対する処理の有無を切替えている。
次に、加算処理部150から出力された出力データADは、図1に示すように、丸め処理部155に供給される。丸め処理部155は、加算処理部150からの出力データADに対して丸め処理を行う丸め演算器156を有している。また、丸め処理部155において、丸め演算器156は、制御部100からの制御情報CNT_RNの指示内容により丸め演算処理を行うか否かの切替制御が可能なように構成されている。
丸め演算器156は、制御部100からの制御情報CNT_RNの指示内容により丸め演算処理を行うよう指示されると、以下で説明するシフト処理部170でのシフト演算処理の内容及びそのシフト量に応じた丸め値を加算することで、シフト処理部170と組み合わせた丸め付きの除算処理を実現する。すなわち、例えば、後段のシフト処理部170において右シフトが行われる際には、そのシフト量に対応する丸め値が丸め演算器156で加算され、このようにして、丸め処理部155とシフト処理部170とによる除算処理が実行される。
このような丸め処理部155の構成により、例えば、制御情報CNT_RNを用いて、制御部100によって丸め演算処理を行わないよう指示されると、丸め処理部155からは、加算処理部150からの出力データADが丸め処理部155の出力データRNとして出力される。また、例えば逆に、制御情報CNT_RNを用いて、丸め演算処理を行うよう指示されると、丸め処理部155からは、加算処理部150からの出力データADに対して丸め処理を行った値のデータが出力データRNとして出力される。出力データRNは、シフト処理部170に供給される。
次に、丸め処理部155から出力された出力データRNは、図1に示すように、シフト処理部170に供給される。シフト処理部170は、丸め処理部155からの出力データRNに対してシフト量生成部180から供給されたシフト量データSFに応じて出力データRNのビットシフトを行うシフト演算器171を有している。
また、シフト処理部170において、シフト演算器171は、制御部100からの制御情報CNT_SPの指示内容によりシフト演算処理を行うか否かの切替制御が可能なように構成されている。このようなシフト処理部170の構成により、例えば、制御情報CNT_SPを用いて、制御部100によってシフト演算処理を行わないよう指示されると、シフト処理部170からは、丸め処理部155からの出力データRNがシフト処理部170の出力データSDとして出力される。また、例えば逆に、制御情報CNT_SPを用いて、制御部100によってシフト演算処理を行うよう指示されると、シフト処理部170からは、丸め処理部155からの出力データRNに対してシフト量データSFに応じてビットシフトした値のデータが出力データSDとして出力される。出力データSDは、後段処理部190に供給される。
さらに、シフト演算器171は、制御情報CNT_SPの指示内容により、シフト演算器171によるシフト演算処理内容の切替制御も可能なように構成されている。すなわち、シフト演算器171は、制御情報CNT_SPにより、シフト演算処理の内容としてシフト演算のシフト方向やシフト量の制御も可能である。
以上のように、シフト処理部170は、丸め処理部155から出力された出力データRNに対してシフト量データSFに応じてビットシフト演算を行うシフト演算処理の機能を有し、さらに、このシフト演算処理の内容及びこのシフト演算処理を演算対象に含めるか否かを選択可能とし、このようなシフト演算処理において演算処理済データと非演算処理データとを選択的に切替えて出力するように構成されている。
このように、シフト処理部170は、丸め処理部155から供給された出力データRNの値、及びビットシフト演算により得られた値のうちのいずれかの値が制御情報CNT_SPを用いて選択できる選択機能を有しており、選択した値を出力データSDとして出力する。
次に、シフト量生成部180は、上述したシフト処理部170に供給するシフト量を示すシフト量データSFを生成する。このようなシフト量データSFは、各符号化方式において規定されたスケール合わせのために用いられる。シフト量生成部180は、制御部100からの制御情報CNT_SFによる指示に従って、このような符号化方式に応じたシフト量データSFを選択的に出力し、シフト処理部170に供給する。以上のように、シフト量生成部180は、係数データに対するシフト演算処理を施すためのシフト量データSFを生成する。
なお、丸め処理部155は、シフト処理部170におけるビットシフト演算が右方向へのシフトの場合のみ、加算処理部150からの出力データADに対して、シフト量生成部180によって生成されたシフト量データSFに応じた値を加算することで丸め処理を行う。
次に、シフト処理部170から出力された出力データSDは、図1に示すように、後段処理部190に供給される。後段処理部190は、シフト処理部170からの出力データSDに対してDCTミスマッチ制御処理を行うDCTミスマッチ処理部191及び193と、所定の値以上や所定の値以下の値を所定の値にクリッピングするような飽和処理を行う飽和処理部192とを有している。
また、飽和処理部192は、制御部100からの制御情報CNT_CLにより飽和処理を行うか否かの切替制御が可能なように構成されている。DCTミスマッチ処理部191は、制御部100からの制御情報CNT_MS1により、DCTミスマッチ制御処理を行うか否かの切替制御が可能なように構成されている。また、DCTミスマッチ処理部193は、制御部100からの制御情報CNT_MS2により、DCTミスマッチ制御処理を行うか否かの切替制御が可能なように構成されている。
このような飽和処理及びDCTミスマッチ制御処理は、MPEG−1方式及びMPEG−2方式などで規定されている。すなわち、MPEG−1方式やMPEG−2方式などの符号化処理及び復号化処理では、それぞれにおいて逆DCT処理が必要となるが、符号化器と復号化器の逆DCT処理の演算方式によっては、それぞれで復号化した画像が異なり、その誤りが蓄積してしまう可能性があった。このため、符号化方式によっては、このような不具合を改善する目的で、DCTミスマッチ制御処理が規定されている。
また、このようなDCTミスマッチ制御処理の具体的な一例として、例えば、MPEG−1方式の場合には、全ての復元する係数値をゼロに近づける方向で奇数化するような処理が行われる。また、例えば、MPEG−2方式の場合には、全ての係数値を加算して、その和が偶数のときには、最も高周波である成分、すなわち係数[7][7]成分の値を変更するような処理が行われる。
また、飽和処理において、具体的には、飽和処理部192は、飽和処理部192に供給された係数値が“−2048”以下の場合には、“−2048”とする値にクリッピングし、飽和処理部192に供給された係数値が“2047”以上の場合には、“2047”とする値にクリッピングするような飽和処理を行う。
また、MPEG−1方式などでは、DCTミスマッチ制御処理の次に飽和処理を行うよう規定されており、MPEG−2方式では、飽和処理の次にDCTミスマッチ制御処理を行うよう規定されている。
このため、本逆量子化回路における制御部100は、MPEG−1方式の係数データCDに対して逆量子化処理を行う場合、制御情報CNT_MS1によりDCTミスマッチ処理部191のDCTミスマッチ制御処理を行うよう指示し、制御情報CNT_CLにより飽和処理部192の飽和処理を行うよう指示し、制御情報CNT_MS2によりDCTミスマッチ処理部193のDCTミスマッチ制御処理を行わないよう指示する。これにより、MPEG−1方式で規定されたDCTミスマッチ制御処理の次に飽和処理が実行される。
また、制御部100は、MPEG−2方式の係数データCDに対して逆量子化処理を行う場合、制御情報CNT_MS1によりDCTミスマッチ処理部191のDCTミスマッチ制御処理を行わないよう指示し、制御情報CNT_CLにより飽和処理部192の飽和処理を行うよう指示し、制御情報CNT_MS2によりDCTミスマッチ処理部193のDCTミスマッチ制御処理を行うよう指示する。これにより、MPEG−2方式で規定された飽和処理の次にDCTミスマッチ制御処理が実行される。
このように、DCTミスマッチ処理部191及びDCTミスマッチ処理部193を設けることで、飽和処理部192の前段あるいは後段でDCTミスマッチ制御処理を行うことが選択できる。なお、DCTミスマッチ処理部191及びDCTミスマッチ処理部193に対して、DCTミスマッチ制御処理を行う条件が設定できるような構成であってもよい。また、DCTミスマッチ処理部191及びDCTミスマッチ処理部193に対して、係数データCDの種類に応じて演算の有無や演算内容を制御できるような構成であってもよい。
以上説明したような演算処理が、それぞれの制御情報に従って各符号化方式に応じて実行される。後段処理部190からは、復元された係数値を有した復元データRDが出力端子19に出力される。
なお、以下、上述したように、各処理部における演算処理及び各生成部における値やデータの生成方法がそれぞれ選択可能であるとして説明するが、本発明は特にこれに限定されない。例えば、対応する符号化方式の種類に応じて、乗算処理部140、加算処理部150及びシフト処理部170のうちの少なくとも1つの演算処理部において演算処理を演算対象に含めるか否かを選択可能とするような構成であってもよく、第1の乗算値生成部10、第2の乗算値生成部20、加算値生成部160及びシフト量生成部180のうちの少なくとも1つの生成部において生成する値又はデータの生成方法を選択可能とするような構成であってもよい。
次に、各符号化方式において規定された逆量子化式について説明する。
図2から図4までは、各符号化方式において規定された逆量子化式を示した図である。図2は、静止画像を圧縮符号化する方式として広く利用されているJPEG方式、動画像を圧縮符号化する方式として広く利用されているMPEG−1方式及びMPEG−2方式における逆量子化式を示す図である。図3は、電気通信に関する国際標準機関であるITU−T(International Telecommunication Union−Telecommunication Standardization Sector)勧告により規定されているH.263方式、及び動画像を圧縮符号化する方式として広く利用されているMPEG−4方式における逆量子化式を示す図である。また、図4は、ITU−T勧告により規定されているH.264方式における逆量子化式を示す図である。また、図2から図4までにおいて、区分で示す項目は、係数データの符号化種別に応じて異なった逆量子化を行うように規定された場合の区分を示しており、Intraは画面内符号化、non−Intraは画面間符号化、DCは直流成分、ACは交流成分、lumaは輝度データ、chromaは色データである係数データをそれぞれ示している。
これら各符号化方式において、JPEG方式の場合、図2に示すように、Sqvuで示す係数データに対してQvuで示すマトリックス値を乗算することで逆量子化を行い、逆量子化により復元した係数データRvuを得る。
MPEG−1方式の場合、図2に示すように、画面内符号化における直流成分の係数データに対しては、係数データdct_zz[0]を単に8倍することで逆量子化を行い、逆量子化により復元した係数データdct_recon[0][0]を得る。また、画面内符号化における交流成分の係数データに対しては、係数データdct_zz[i]に対して、スケール値quantizer_scaleを2倍した値、マトリックス値intra_quant[m][n]、及びスケール合わせとしての1/16を乗算することで逆量子化を行う。このようにして、逆量子化により復元した係数データdct_recon[m][n]を得る。
また、画面間符号化における係数データに対しては、係数データdct_zz[i]を2倍するとともに、その係数データの符号Sign(dct_zz[i])を加算し、このようにして得たデータに対して、スケール値quantizer_scale、マトリックス値non_intra_quant[m][n]、及びスケール合わせとしての1/16を乗算することで逆量子化を行う。このようにして、逆量子化により復元した係数データdct_recon[m][n]を得る。
また、MPEG−1方式における飽和処理及びDCTミスマッチ制御処理においては、intraDC以外の係数データに対して、その復元係数値が偶数の場合に、その符号、すなわちSign(dct_zz[i])が引き算され、ゼロに近づける方向に奇数化される。また、DCTミスマッチ制御処理を行った後に飽和処理が実行される。
次に、MPEG−2方式における逆量子化について説明する。MPEG−2方式の場合、図2で示すように規定された逆量子化の演算式において、例えば、QF[v][u]は画面間符号化の係数データを示し、F”[v][u]は逆量子化により復元した係数データを示し、W[w][v][u]は画面間符号化におけるマトリックス値を示し、quantizer_scaleはスケール値を示している。また、Sign()は、引数の符号を示し、引数の符号が正であれば1、負であれば−1、0であれば0を返すような関数を示している。すなわち、MPEG−2方式での画面間符号化の係数データQF[v][u]に対しては、係数データQF[v][u]を2倍するとともに、Sign(QF[v][u])で示す上述の関数定義に従った係数データの符号kを加算し、このようにして得たデータに対して、マトリックス値W[w][v][u]、スケール値quantizer_scale、及びスケール合わせとしての1/32を乗算することで逆量子化を行う。このようにして、逆量子化により復元した復元データF”[v][u]を得る。
なお、MPEG−2方式の画面内符号化における交流成分の係数データQF[v][u]に対しては、係数データQF[v][u]を2倍した値に対して、マトリックス値W[w][v][u]、スケール値quantizer_scale、及びスケール合わせとしての1/32を乗算することで逆量子化を行う。このようにして、逆量子化により復元した復元データF”[v][u]を得る。
また、MPEG−2方式の画面内符号化における直流成分の係数データに対しては、係数データQF[0][0]にスケール値intra_dc_multを乗算することで逆量子化を行い、復元データF”[0][0]を得る。
また、MPEG−2方式における飽和処理及びDCTミスマッチ制御処理においては、復元係数値の全ての和が偶数の場合に、その復元係数値での最も高周波である成分、すなわち係数[7][7]成分の値の最下位ビットが反転される。また、飽和処理を行った後にDCTミスマッチ制御処理が実行される。
また、MPEG−1方式におけるSign(dct_zz[i])やMPEG−2方式におけるSign(QF[v][u])、あるいは次に説明するMPEG−4方式におけるSign(QF[v][u])は、それぞれの式において、上述したデッドゾーンとしての機能を表現している。すなわち、例えばMPEG−2方式における画面間符号化の係数データQF[v][u]に対して、係数データQF[v][u]を2倍した値に符号の値Sign(QF[v][u])を加算することで、逆量子化におけるデッドゾーン処理を行うことができる。
次に、図3に示すMPEG−4方式における逆量子化について説明する。MPEG−4方式の場合、例えば、方式1における画面間符号化及び画面内符号化における交流成分の係数データQF[v][u]に対しては、図3で示すように規定された逆量子化の演算式が用いられる。演算式において、F”[v][u]は逆量子化により復元した係数データを示し、W[w][v][u]は画面間符号化におけるマトリックス値を示し、quantizer_scaleはスケール値を示している。また、kは、画面内符号化のブロックであるか非画面内符号化(画面間符号化)のブロックであるかにより、デッドゾーン処理を行うか否かを示しており、非画面内符号化のブロックの係数データに対しては、MPEG−2方式での画面間符号化のようにSign(QF[v][u])で示すデッドゾーン処理を行う。
すなわち、例えば、MPEG−4方式の方式1における画面間符号化の係数データQF[v][u]に対しては、係数データQF[v][u]が0でない場合、係数データQF[v][u]を2倍するとともに、係数データの符号Sign(QF[v][u])を加算し、このようにして得たデータに対して、マトリックス値W[w][v][u]、スケール値quantizer_scale、及びスケール合わせとしての1/16を乗算することで逆量子化を行う。このようにして、逆量子化により復元した係数データF”[v][u]を得る。
また、MPEG−4方式における飽和処理及びDCTミスマッチ制御処理においては、方式1のときには、復元係数値の全ての和が偶数の場合に、その復元係数値での最も高周波である成分、すなわち係数[7][7]成分の値の最下位ビットが反転される。また、方式2のときには、intraDC以外の係数データに対して、その復元係数値が偶数の場合に、その絶対値、すなわち|F”[v][u]|から数値“1”が引き算され、このようにしてゼロに近づける方向に奇数化される。ただし、係数データがゼロの場合には、ゼロが出力される。また、DCTミスマッチ制御処理を行った後に飽和処理が実行される。
次に、図3に示すH.263方式における逆量子化について説明する。H.263方式の場合、例えば、画面間符号化及び画面内符号化における交流成分の係数データLEVELに対しては、図3で示すように規定された逆量子化の演算式が用いられる。演算式において、RECは逆量子化により復元した係数データ、QUANTはスケール値を示している。すなわち、例えば、H.263方式の画面間符号化の係数データLEVELに対しては、スケール値QUANTが偶数の場合、係数データLEVELの絶対値を2倍するとともに、1を加算し、このようにして得たデータに対して、スケール値QUANTを乗算し、さらに、このようにして得たデータに対して、係数データLEVELの符号Sign(LEVEL)が乗算されることで逆量子化が行われる。
また、H.263方式における飽和処理及びDCTミスマッチ制御処理においては、intraDC以外の係数データに対して、その復元係数値が偶数の場合に、その絶対値、すなわち|REC|から数値“1”が引き算され、ゼロに近づける方向に奇数化される。ただし、係数データがゼロの場合には、ゼロが出力される。また、DCTミスマッチ制御処理を行った後に飽和処理が実行される。
次に、図4に示すH.264方式における逆量子化について説明する。H.264方式は、上述のようなデッドゾーンを採用していないことを1つの特徴としている。さらに、H.264方式は、量子化スケール値を直接符号化せず、量子化パラメータqPを符号化し、量子化パラメータqPから量子化スケール値を導出するような手法が採用されている。
すなわち、H.264方式では、例えば量子化パラメータqPが6だけ増加すると量子化スケール値が2倍となるような、量子化パラメータqPと量子化スケールの対数とが比例するような仕組みが導入されている。このため、qPを6で除算した余りを(qP%6)とし、qPを6で除算した商を(qP/6)とするとき、量子化スケール値は、(qP%6)の量子化スケール値に、2の(qP/6)乗の値を乗算した値となる。
さらに、H.264方式では、このような量子化パラメータqPと量子化スケールとの変換に変換テーブルを利用するとともに、逆量子化と直交変換で必要な8/5倍などの正規化のための演算にも変換テーブルを利用し、(qP%6)の量子化スケールを(qP/6)ビット左シフトすることで、任意のqPに対応する量子化スケールを求めることができる。なお、図4において、記号“<<”は左シフトを表しており、また記号“>>”は右シフトを表している。
また、例えば、図4に示す画面内符号化Intraでの16×16のブロックに対する輝度lumaの直流成分DCにおいては、量子化パラメータQP’Yが数値“36”より小さい場合、図4の式に従って、右シフトが行われるとともに、そのシフト量に対応する丸め値(25−QP’Y/6)が丸め処理部155の丸め演算器156で加算される。このようにして、丸め処理部155とシフト処理部170とによる除算処理が実行される。
なお、本実施の形態の逆量子化回路は、例えば、図2で示した基本的な逆量子化のための演算式に対し、これらの式を展開し、その展開した式に基づいた回路構成としている。例えば、MPEG−2方式における画面間符号化の係数データQF[v][u]に対する逆量子化の場合、本実施の形態の逆量子化回路では、係数データQF[v][u]を(2×W[w][v][u]×quantizer_scale)倍した値に、(Sign(QF[v][u])×W[w][v][u]×quantizer_scale)となる値を加算することでデッドゾーン処理を行うような構成としている。
以上、それぞれの符号化方式における逆量子化式のさらに詳細な説明については省略するが、本実施の形態の逆量子化回路は、各符号化方式において図2から図4に示すような演算式に基づき、上述の各符号化方式の例のように、供給された係数データに対して、スケール値やマトリックス値などのような所定の乗算値を乗算したり加算値を加算したりするなどの演算を行うことで逆量子化が行われる。
図5は、本発明の実施の形態1の逆量子化回路において、各逆量子化式に対応した演算処理の一覧を示す図である。図5では、図2から図4までの各逆量子化式を共通の演算処理で実現可能なように一覧としてまとめている。特に、本実施の形態の逆量子化回路は、図2から図4までの各逆量子化式を展開した式を含めた演算式に基づき、各部を構成したことを特徴としている。
図5において、演算項CDに対応する“係数”は逆量子化するための係数データCDを示し、演算項M2に対応する“行列”はマトリックス値を示す。また、演算項M1に対応する、“2”は乗数2を示し、“スケール”はスケール値を示し、“正規化”はH.264方式で規定された正規化係数値を示している。また、演算項Signに対応する“符号”は係数データの正負を示す符号であり係数データの符号を利用したデッドゾーンのある量子化方式に対応する演算処理などを示している。
また、演算項OFに対応する“行列”はマトリックス値を示し、“スケール”はスケール値を示している。また、演算項RNに対応する“丸め”はH.264方式における丸め値を示している。また、演算項SFに対応する“シフト”はシフト処理部170のシフト演算処理を示し、“後段”は後段処理部190の処理を示している。また、各演算項における“0”、“1”及び“8”などの数字はその値が示す定数を示している。また、“シフト”で示した箇所はシフト演算処理を実行することを示し、矢印で示した箇所はシフト演算処理を実行しないことを示している。また、“後段”で示した箇所は後段処理部190の処理を実行することを示し、矢印で示した箇所は後段処理部190の処理を実行しないことを示している。
このように、図2から図4までの各符号化方式の各逆量子化式は、図5に示すような共通の演算処理で表現することができる。すなわち、図1で説明した本発明の実施の形態1における逆量子化回路の構成は、図5に示すような共通の演算処理を実現した回路であり、上述したような制御情報による各演算処理の実行の切替えを行うことでそれぞれの符号化方式に対応させている。本発明の実施の形態1における逆量子化回路は、演算処理の共通化を図ることで回路規模が増大することを抑制している。
図6は、図5に示すような共通の演算処理を実現するため、乗算値生成部10、乗算値生成部20、加算値生成部160及びシフト量生成部180のより詳細な構成の一例を示すブロック図である。
図6において、乗算値生成部10は、上述のようにスケール値生成部110とスケール処理部210とにより構成されている。
図6において、スケール値生成部110は、供給されたスケールインデックスSCIを変換する1種類あるいは複数種類のスケールテーブル(第1のスケール変換部)111と、スケールテーブル111から出力された値をさらに変換する正規化テーブル(第2のスケール変換部)112と、スケールテーブル111から出力された値と正規化テーブル112から出力された値とのいずれかを選択するセレクタ(選択部)119とを有している。セレクタ119は、制御部100からの制御情報CNT_SGの指示内容に応じて、スケールテーブル111から出力された値と正規化テーブル112から出力された値とのいずれかを選択し、選択した値をスケール処理部210へと出力する。また、スケールテーブル111から出力された値はシフト量生成部180へと出力される。
図6に示すスケール値生成部110において、正規化テーブル112は、特にH.264方式に対応させるために設けたテーブルである。すなわち、H.264方式に基づき逆量子化を行う場合、入力端子11には、スケールインデックスSCIとして量子化パラメータqPが供給される。さらに、量子化パラメータqPは、スケールテーブル111によりスケール値に変換され、変換されたスケール値が正規化テーブル112により正規化された係数の値へと変換される。さらに、H.264方式の場合、制御部100は、制御情報CNT_SGにより、セレクタ119が正規化テーブル112を選択するように指示することにより、スケール値生成部110からは、H.264方式に対応した正規化されたスケール値である正規化係数値が出力される。
このように、スケール値生成部110は、入力端子11に供給されたスケールインデックスSCIなどのデータをスケール値に変換する1種類あるいは複数種類のスケールテーブル111を有し、スケールテーブル111により変換された値をスケール値として出力する。さらに、スケール値生成部110は、スケールテーブル111から出力された値をさらに変換する正規化テーブル112と、スケールテーブル111から出力された値と正規化テーブル112から出力された値とのいずれかを選択するセレクタ119とを有し、選択された値をスケール値として出力する。
次に、図6において、スケール処理部210は、スケール値生成部110で生成されたスケール値に対して演算処理を施す演算部211、及びスケール値とスケール値に対する演算処理により得られた値と所定の定数値とのうちのいずれかの値を選択するセレクタ(選択部)219とを有している。なお、演算部211は、スケール値を所定の定数倍するなどとともに、将来提案される符号化方式などに対しても対応可能なように設けた演算部であり、例えば、スケール値に対する定数値の乗算やその乗算結果に対する定数値の加算などの演算処理を選択的に行う。セレクタ219は、制御情報CNT_SPの指示内容に応じて、スケール値と演算部211により得られた値と所定の定数値とのうちのいずれかの値を選択し、選択した値を乗算値M1として乗算処理部140へと出力する。
すなわち、スケール処理部210は、図5での演算項M1に対応した、主に各符号化方式やその符号化種別に応じたスケール値に関連する乗算値M1を選択的に出力する。
例えば、MPEG−1方式の画面内符号化の直流成分における係数データを逆量子化する場合、図5での演算項M1に従って、制御情報CNT_SPによりセレクタ219は定数である“8”を選択し、スケール処理部210からは、セレクタ219が選択した定数値“8”が乗算値M1として出力される。
また、MPEG−1方式の画面内符号化の交流成分における係数データを逆量子化する場合、図5での演算項M1に従って、スケール値生成部110においてスケールテーブル111から出力されるスケール値が選択され、この選択されたスケール値がスケール処理部210へと出力される。さらに、スケール処理部210において、制御情報CNT_SPによりセレクタ219は演算部211から2倍されて出力された値を選択し、スケール処理部210からは、セレクタ219が選択した値、すなわちスケール値を2倍した値が乗算値M1として出力される。
また、H.264方式における係数データを逆量子化する場合、図5での演算項M1に従って、スケール値生成部110において正規化テーブル112から出力される正規化係数値が選択され、この選択された正規化係数値がスケール処理部210へと出力される。さらに、スケール処理部210において、制御部100からの制御情報CNT_SPによりセレクタ219はスケール値生成部110から出力された正規化係数値を選択し、スケール処理部210からは、セレクタ219が選択した値、すなわち正規化係数値が乗算値M1として出力される。
このように、スケール処理部210は、スケール値、演算部211による演算により得られた値及び所定の定数値のいずれかを乗算値M1として出力する。また、スケール処理部210は、スケール値生成部110からのスケール値に対して、所定の整数倍するなどの演算処理を施す演算部211、及びスケール値と演算部211により得られた値と所定の定数値とのうちのいずれかの値を選択するセレクタ219を有し、選択した値を乗算値M1として出力する。また、選択機能としてのセレクタ219は、係数データCDの種類に応じて各値を選択する。
次に、図6において、乗算値生成部20のマトリックス値生成部120は、供給されたマトリックスデータMXDに応じたマトリックス値を出力するマトリックステーブル121と、このマトリックス値及び所定の定数値のいずれかの値を選択するセレクタ129とを有している。セレクタ129は、制御部100からの制御情報CNT_MXの指示内容に応じて、マトリックス値と定数値とのうちのいずれかの値を選択し、選択した値を乗算値M2として乗算処理部140へと出力する。
すなわち、マトリックス値生成部120は、図5での演算項M2に対応した、主に各符号化方式やその符号化種別に応じたマトリックス値に関連する乗算値M2を選択的に出力する。例えば、MPEG−1方式の画面内符号化の直流成分における係数データを逆量子化する場合、図5での演算項M2に従って、制御情報CNT_MXによりセレクタ129は定数である“1”を選択し、マトリックス値生成部120からは、セレクタ129が選択した定数値“1”が乗算値M2として出力される。
また、MPEG−1方式の画面内符号化の交流成分における係数データを逆量子化する場合、図5での演算項M2に従って、制御情報CNT_MXによりセレクタ129はマトリックステーブル121から出力されたマトリックス値を選択し、マトリックス値生成部120からは、セレクタ129が選択したマトリックス値が乗算値M2として出力される。
このように、マトリックス値生成部120は、周波数ごとのマトリックス値及び所定の定数値のいずれかを乗算値M2として出力する。
次に、図6において、加算値生成部160は、スケール値生成部110で生成されたスケール値とマトリックス値生成部120で生成されたマトリックス値とを乗算する乗算器161と、スケール値、マトリックス値、乗算器161によりスケール値とマトリックス値とを乗算することにより得られた値、及び所定の定数値のうちのいずれかの値を選択するセレクタ169とを有している。なお、セレクタ169は、スケール値、マトリックス値、乗算器161によりスケール値とマトリックス値とを乗算することにより得られた値、及び所定の定数値のうちのいくつかの値から、いずれかの値が選択できるような構成であってもよい。セレクタ219は、制御部100からの制御情報CNT_OFの指示内容に応じて、スケール値、マトリックス値、乗算器161によりスケール値とマトリックス値とを乗算することにより得られた値、及び所定の定数値のうちのいずれかの値を選択し、選択した値を加算値OFとして加算処理部150へ出力する。
すなわち、加算値生成部160は、図5での演算項OFに対応した、主に各符号化方式やその符号化種別に応じたデッドゾーンに関連する加算値OFを選択的に出力する。例えば、MPEG−1方式の画面内符号化の直流成分における係数データを逆量子化する場合、図5での演算項OFに従って、制御情報CNT_OFによりセレクタ169は定数である“0”を選択し、加算値生成部160からは、セレクタ169が選択した定数値“0”が加算値OFとして出力される。
また、MPEG−1方式の画面間符号化における係数データを逆量子化する場合、図5での演算項OFに従って、制御部100からの制御情報CNT_OFによりセレクタ169は乗算器161から出力された値を選択し、加算値生成部160からは、セレクタ169が選択した乗算器161からの値が加算値OFとして出力される。
また、H.263方式の画面内符号化の交流成分における係数データを逆量子化する場合、図5での演算項OFに従って、制御部100からの制御情報CNT_OFによりセレクタ169はスケール値生成部110から出力された値を選択し、加算値生成部160からは、セレクタ169が選択したスケール値生成部110から出力された値が加算値OFとして出力される。
このように、加算値生成部160は、スケール値生成部110のスケール値とマトリックス値生成部120のマトリックス値とを乗算する乗算器161と、スケール値、マトリックス値、スケール値とマトリックス値とを乗算することにより得られた値、及び所定の定数値のうちのいずれかの値を選択するセレクタ219とを有し、選択した値を加算値OFとして加算処理部150に供給する。
次に、図6において、シフト量生成部180は、スケール値生成部110のスケールテーブル111から出力された値をシフト量データに変換するシフト量テーブル(シフト量変換部)181を有している。さらに、シフト量生成部180は、シフト量テーブル181から出力された値に対して所定の値であるシフト量加算値SF_OFを加算する加算器182と、シフト量テーブル181から出力された値、加算器182から出力された値及び所定の定数値のうちのいずれかの値を、制御部100からの制御情報CNT_SFの指示に応じて選択するセレクタ189とを有している。シフト量生成部180は、制御部100からの制御情報CNT_SFの指示内容に応じて、シフト量テーブル181により変換された値、加算器182から出力された値及び所定の定数値のうちのいずれかをシフト量データSFとしてシフト処理部170へ出力する。
このように、シフト量生成部180は、スケール値生成部110のスケールテーブル111から出力された値をシフト量データに変換するシフト量テーブル181を有し、シフト量テーブル181により変換された値をシフト量データSFとしてシフト処理部170に供給する。さらに、シフト量生成部180は、シフト量テーブル181により変換された値及び所定の定数値のいずれかをシフト量データSFとしてセレクタ189により選択し、シフト処理部170に供給する。さらに、セレクタ189は、係数データCDの種類に応じて各値を選択する。さらに、シフト量生成部180は、選択したシフト量データSFに対しシフト量加算値SF_OFを加えた値をシフト量データSFとしてシフト処理部170に供給する。このシフト量加算値SF_OFは、係数データCDの種類に応じて選択される加算値であり、制御部100から出力される。
なお、スケールテーブル111、正規化テーブル112、シフト量テーブル181、マトリックステーブル121及び定数は、書き換え可能なメモリに記憶されている。これにより、新たな規格の符号化方式が出現した場合であっても、メモリ内のテーブルデータや数値を書き換えるのみで新たな規格の符号化方式に対応することが可能となる。なお、メモリ内のテーブルデータや数値は、ネットワークを介してダウンロードすることで書き換えられるが、本発明は特にこれに限定されず、コンピュータ読み取り可能な記録媒体から読み出すことにより書き換えてもよい。
以下、図1から図6までを参照しながら本発明の実施の形態1における逆量子化回路の具体的な動作についていくつかの符号化方式の例を挙げながら説明する。
まず、JPEG方式で量子化された係数データを逆量子化する処理について説明する。例えばJPEG方式の逆量子化を行う場合、図5で示す演算構成に従って、制御情報により各演算処理の切替えが行われる。すなわち、JPEG方式の場合、図5に示すように、係数データCDに対してマトリックス値生成部120からのマトリックス値を乗算するのみでよい。そのため、制御部100は、次のような制御情報をそれぞれの演算処理部及び生成部に通知する。
例えば、逆量子化回路を制御する制御部100は、乗算器141に対しては、制御情報CNT_M1により、乗算処理を行わないように指示する。また、制御部100は、乗算器142に対しては、制御情報CNT_M2により乗算処理を行うよう指示する。また、制御部100は、マトリックス値生成部120に対しては、制御情報CNT_MXによりマトリックス値を出力するよう指示する。また、制御部100は、加算器151に対しては、制御情報CNT_APにより加算処理を行わないよう指示する。
さらに、制御部100は、丸め演算器156に対しては、制御情報CNT_RNにより丸め処理を行わないよう指示する。また、制御部100は、シフト演算器171に対しては、制御情報CNT_SPによりシフト演算処理を行わないよう指示する。また、制御部100は、DCTミスマッチ処理部191及び193に対しては、DCTミスマッチ制御処理を行わないよう指示する。また、制御部100は、飽和処理部192に対しては、飽和処理を行わないよう指示する。
これにより、乗算処理部140からは、係数データCDの値に乗算値M2であるマトリックス値を乗算した値の出力データMDが出力される。さらに、加算処理部150、丸め処理部155、シフト処理部170及び後段処理部190からも出力データMDと同じ値のデータが出力される。その結果、出力端子19からは、係数データCDの値に乗算値M2であるマトリックス値を乗算した値の復元データRDが出力される。このように、図1の構成において上述したようなそれぞれの制御情報を各部に通知することで、図2のJPEGの項に示すような係数データSqvuにマトリックス値Qvuを乗算して復元データRvuを求めるような逆量子化式を実現できる。
また、例えばMPEG−2方式の逆量子化を行う場合、図5に示すように係数データの種別で区分して逆量子化を行う。
まず、MPEG−2方式で量子化された画面内符号化の直流成分の係数データを逆量子化する処理について説明する。入力端子13に供給された係数データがMPEG−2方式の画面内符号化の直流成分の係数データのとき、図5に示すように、係数データに対してスケール値を乗算するのみでよい。そのため、制御部100は、次のような制御情報をそれぞれの演算処理部及び生成部に通知する。
例えば、制御部100は、乗算器141に対しては、制御情報CNT_M1により、乗算処理を行うように指示する。また、制御部100は、乗算器142に対しては、制御情報CNT_M2により乗算処理を行わないよう指示する。また、制御部100は、スケール値生成部110に対しては、制御情報CNT_SGにより、制御情報CNT_SCで指定されるスケールインデックスSCIに対応したスケール値が格納されたスケールテーブル111からの出力値を選択するよう指示する。また、制御部100は、スケール処理部210に対しては、制御情報CNT_SPにより、スケール値を選択するよう指示する。これにより、乗算処理を行うように指示された乗算器141に、スケール値である乗算値M1が供給される。
さらに、制御部100は、加算器151に対しては、制御情報CNT_APにより、加算処理を行わないよう指示する。また、制御部100は、丸め演算器156に対しては、制御情報CNT_RNにより、丸め処理を行わないよう指示する。また、制御部100は、シフト演算器171に対しては、制御情報CNT_SPにより、シフト演算処理を行わないよう指示する。また、制御部100は、DCTミスマッチ処理部191に対しては、制御情報CNT_MS1により、DCTミスマッチ制御処理を行わないよう指示する。また、制御部100は、飽和処理部192に対しては、制御情報CNT_CLにより、飽和処理を行うよう指示する。また、制御部100は、DCTミスマッチ処理部193に対しては、制御情報CNT_MS2により、DCTミスマッチ制御処理を行うよう指示する。
これにより、乗算処理部140からは、係数データCDの値にスケール値である乗算値M1を乗算した値の出力データMDが出力される。さらに、加算処理部150、丸め処理部155及びシフト処理部170からも出力データMDと同じ値のデータが出力される。さらに、後段処理部190において、まず、飽和処理部192が、出力データMDと同じ値のデータである出力データSDに対して飽和処理を行う。すなわち、飽和処理部192は、出力データSDの値が例えば“−2048”以下の場合には、“−2048”とする値にクリッピングし、飽和処理部192に供給された係数値が例えば“2047”以上の場合には、“2047”とする値にクリッピングするような飽和処理を行う。
さらに、後段処理部190において、次に、DCTミスマッチ処理部193が、飽和処理部192から供給されたデータに対して、供給された全てのデータの値を加算して、その和が偶数のときには、最も高周波である成分、すなわち係数[7][7]成分の値を変更するような処理を行う。すなわち、DCTミスマッチ処理部193は、飽和処理部192から供給されたデータの全ての和が偶数の場合に、そのデータでの最も高周波である成分、すなわち係数[7][7]成分の値の最下位ビットを反転し、このようなデータを復元データRDとして後段処理部190から出力する。
このように、図1の構成において上述したようなそれぞれの制御情報が各部に通知されることで、図2のMPEG−2のIntraDCの項に示すような係数データQF[0][0]にスケール値intra_dc_multを乗算し復元データF”[0][0]を求めるような逆量子化式を実現できる。
次に、MPEG−2方式で量子化された画面内符号化の交流成分の係数データを逆量子化する処理について説明する。入力端子13に供給された係数データがMPEG−2方式の画面内符号化の交流成分の係数データのとき、図5に示すように、係数データCDに対して、“行列”で示すマトリックス値及び“スケール”で示すスケール値の2倍の値を乗算し、“シフト”で示すシフト演算を行い、さらに“後段”で示すDCTミスマッチ制御処理及び飽和処理を行えばよい。そのため、制御部100は、次のような制御情報をそれぞれの演算処理部及び生成部に通知する。
例えば、制御部100は、乗算器141に対しては、制御情報CNT_M1により、乗算処理を行うように指示する。また、制御部100は、乗算器142に対しては、制御情報CNT_M2により、乗算処理を行うよう指示する。また、制御部100は、スケール値生成部110に対しては、制御情報CNT_SGにより、制御情報CNT_SCで指定されるスケールインデックスSCIに対応したスケール値が格納されたスケールテーブル111からの出力値を選択するよう指示する。また、制御部100は、スケール処理部210に対しては、制御情報CNT_SPにより、演算部211から出力されたスケール値の2倍の値を選択するよう指示する。これにより、乗算処理を行うように指示された乗算器141に、スケール値の2倍である乗算値M1が供給される。
また、制御部100は、マトリックス値生成部120に対しては、制御情報CNT_MXにより、入力端子12に供給されたマトリックスデータMXDに応じて選択されたマトリックステーブル121からのマトリックス値を出力するよう指示する。これにより、乗算処理を行うように指示された乗算器142に、マトリックス値である乗算値M2が供給される。
さらに、制御部100は、加算器151に対しては、制御情報CNT_APにより、加算処理を行わないよう指示する。また、制御部100は、丸め演算器156に対しては、制御情報CNT_RNにより、丸め処理を行わないよう指示する。また、制御部100は、シフト演算器171に対しては、制御情報CNT_SPにより、シフト演算処理を行うよう指示する。また、制御部100は、シフト量生成部180に対しては、制御情報CNT_SFにより、1/32に対応した5ビットの右シフトに相当するシフト量データSFを出力するよう指示する。また、制御部100は、DCTミスマッチ処理部191に対しては、制御情報CNT_MS1により、DCTミスマッチ制御処理を行わないよう指示する。また、制御部100は、飽和処理部192に対しては、制御情報CNT_CLにより、飽和処理を行うよう指示する。また、制御部100は、DCTミスマッチ処理部193に対しては、制御情報CNT_MS2により、DCTミスマッチ制御処理を行うよう指示する。
これにより、乗算処理部140からは、係数データCDを2倍し、さらにスケール値及びマトリックス値を乗算した出力データMDが出力される。さらに、加算処理部150からは、出力データMDと同じ値の出力データADが出力され、丸め処理部155からも、出力データMDと同じ値の出力データRNが出力される。このようにして、シフト処理部170からは、係数データCDを2倍し、さらにスケール値及びマトリックス値を乗算した値を5ビットだけ右にシフトさせた、すなわち32で割った値が出力データSDとして出力される。その結果、シフト処理部170からは、係数データCDを2倍し、さらにスケール値及びマトリックス値を乗算し、32で割った値の出力データSDが出力される。
さらに、画面内符号化の直流成分の係数データのときと同様に、後段処理部190において、まず、飽和処理部192は、出力データSDに対して飽和処理を行う。次に、DCTミスマッチ処理部193は、飽和処理部192から供給されたデータに対して、供給された全てのデータの値を加算して、その和が偶数のときには、最も高周波である成分、すなわち係数[7][7]成分の値を変更するような処理を行う。このようにして、後段処理部190から復元データRDが出力される。
このように、図1の構成において上述したようなそれぞれの制御情報が各部に通知される。したがって、係数データQF[v][u]に、定数“2”、マトリックス値W[w][v][u]及びスケール値quantizer_scaleを乗算し、32で割ることで、図2のMPEG−2のIntraACの項に示すような復元データF”[v][u]を求める逆量子化式を実現できる。
次に、MPEG−2方式で量子化された画面間符号化の係数データを逆量子化する処理について説明する。入力端子13に供給された係数データがMPEG−2方式の画面間符号化の係数データのとき、図5に示すように、係数データCDに対して、“行列”で示すマトリックス値及び“スケール”で示すスケール値の2倍の値を乗算するとともに、マトリックス値とスケール値とを乗算した値に符号をつけた値を加算し、その値をさらに“シフト”で示すシフト演算を行い、さらに“後段”で示すDCTミスマッチ制御処理及び飽和処理を行えばよい。そのため、制御部100は、次のような制御情報をそれぞれの演算処理部及び生成部に通知する。
例えば、制御部100は、乗算器141に対しては、制御情報CNT_M1により、乗算処理を行うように指示する。また、制御部100は、乗算器142に対しては、制御情報CNT_M2により、乗算処理を行うよう指示する。また、制御部100は、スケール値生成部110に対しては、制御情報CNT_SGにより、制御情報CNT_SCで指定されるスケールインデックスSCIに対応したスケール値が格納されたスケールテーブル111からの出力値を選択するよう指示する。また、制御部100は、スケール処理部210に対しては、制御情報CNT_SPにより、演算部211から出力されたスケール値の2倍の値を選択するよう指示する。これにより、乗算処理を行うように指示された乗算器141に、スケール値の2倍である乗算値M1が供給される。
また、制御部100は、マトリックス値生成部120に対しては、制御情報CNT_MXにより、入力端子12に供給されたマトリックスデータMXDに応じて選択されたマトリックステーブル121からのマトリックス値を出力するよう指示する。これにより、乗算処理を行うように指示された乗算器142に、マトリックス値である乗算値M2が供給される。
さらに、制御部100は、加算値生成部160に対しては、制御情報CNT_OFにより、乗算器161でスケール値とマトリックス値とを乗算することにより得られた値を加算値OFとして出力するよう指示する。これとともに、制御部100は、加算器151に対しては、制御情報CNT_APにより、加算処理を行うよう指示する。さらに、制御部100は、加算器151に対して、係数データCDの符号が正の場合には、乗算処理部140からの出力データMDに加算値生成部160からの加算値OFを加算し、係数データCDの符号が負の場合には、出力データMDから加算値OFを減算するよう指示する。すなわち、このような加算処理を行うことで、例えば、デッドゾーンのある量子化方式に対応する逆量子化が実行される。
さらに、制御部100は、丸め演算器156に対しては、制御情報CNT_RNにより、丸め処理を行わないよう指示する。また、制御部100は、シフト演算器171に対しては、制御情報CNT_SPにより、シフト演算処理を行うよう指示する。また、制御部100は、シフト量生成部180に対しては、制御情報CNT_SGにより、1/32に対応した5ビットの右シフトに相当するシフト量を出力するよう指示する。また、制御部100は、DCTミスマッチ処理部191に対しては、制御情報CNT_MS1により、DCTミスマッチ制御処理を行わないよう指示する。また、制御部100は、飽和処理部192に対しては、制御情報CNT_CLにより、飽和処理を行うよう指示する。また、制御部100は、DCTミスマッチ処理部193に対しては、制御情報CNT_MS2により、DCTミスマッチ制御処理を行うよう指示する。
これにより、乗算処理部140からは、係数データCDを2倍し、さらにスケール値及びマトリックス値を乗算した出力データMDが出力される。さらに、加算処理部150からは、出力データMDに対しデッドゾーンのある量子化に対応する逆量子化を施した出力データADが出力され、シフト処理部170からは、加算処理部150からの出力データADを5ビットだけ右にシフトさせた、すなわち32で割った出力データSDが出力される。
さらに、画面内符号化の直流成分の係数データのときと同様に、後段処理部190において、まず、飽和処理部192が、出力データSDに対して飽和処理を行う。次に、DCTミスマッチ処理部193が、飽和処理部192から供給されたデータに対して、供給された全てのデータの値を加算して、その和が偶数のときには、最も高周波である成分、すなわち係数[7][7]成分の値を変更するような処理を行う。このようにして、後段処理部190から復元データRDが出力される。
このように、図1の構成において上述したようなそれぞれの制御情報が各部に通知される。したがって、係数データQF[v][u]に定数“2”を乗算し係数データの符号Sign(QF[v][u])を加算した値(2×QF[v][u]+Sign(QF[v][u]))に対し、スケール値quantizer_scale及びマトリックス値W[w][m][n]を乗算し、32で割ることで、図2のMPEG−2のnon−intraの項に示すような復元データF”[v][u]を求める逆量子化式を実現できる。
以上説明したように、本発明の実施の形態1における逆量子化回路は、量子化係数データCDに対する演算処理を施すための第1の乗算値M1を生成する第1の乗算値生成部10と、量子化係数データCDに対する演算処理を施すための第2の乗算値M2を生成する第2の乗算値生成部20と、量子化係数データCDに対する演算処理を施すための加算値OFを生成する加算値生成部160と、量子化係数データCDに対する演算処理を施すためのビットシフト量を示すシフト量データSFを生成するシフト量生成部180と、量子化係数データCDに対して第1の乗算値M1及び第2の乗算値M2を乗算する乗算処理部140と、乗算処理部140から出力された出力データMDに対して加算値OFを加算する加算処理部150と、加算処理部150から出力された出力データADに対してシフト量データSFに応じてビットシフト演算を行うシフト処理部170とを備える。
そして、乗算処理部140、加算処理部150及びシフト処理部170のうちの少なくとも1つの演算処理部において、演算処理を行うか否かを選択可能としている。また、第1の乗算値生成部10、第2の乗算値生成部20、加算値生成部160及びシフト量生成部180のうちの少なくとも1つの生成部において、生成する値又はデータ(値)の生成方法を選択可能としている。
このため、符号化方式に応じてそれぞれの逆量子化回路を備える必要はなく、各種の符号化方式に応じて各演算処理部の演算処理を選択でき、柔軟性のある逆量子化回路を構成できるため、単一の回路で各種の画像符号化方式に対応できる汎用性の高い逆量子化回路を提供することができる。
なお、以上の説明では、図1に示すような機能ブロックで構成される逆量子化回路により逆量子化を行うような実施の形態の一例を説明したが、本発明は特にこれに限定されない。例えば、量子化係数データCDに対する演算処理を施すための第1の乗算値M1を生成する第1の乗算値生成ステップと、量子化係数データCDに対する演算処理を施すための第2の乗算値M2を生成する第2の乗算値生成ステップと、量子化係数データCDに対する演算処理を施すための加算値OFを生成する加算値生成ステップと、量子化係数データCDに対する演算処理を施すためのビットシフト量を示すシフト量データSFを生成するシフト量生成ステップと、量子化係数データCDに対して第1の乗算値M1及び第2の乗算値M2を乗算する乗算処理ステップと、乗算処理ステップからの出力データMDに対して加算値を加算する加算処理ステップと、加算処理ステップからの出力データADに対してシフト量データSFに応じてビットシフト演算を行うシフト処理ステップとを含む逆量子化方法であってもよい。
そして、乗算処理ステップ、加算処理ステップ及びシフト処理ステップのうちの少なくとも1つの演算処理ステップにおいて、演算処理を行うか否かを選択可能としてもよい。また、第1の乗算値生成ステップ、第2の乗算値生成ステップ、加算値生成ステップ及びシフト量生成ステップのうちの少なくとも1つの生成ステップにおいて、生成する値又はデータの生成方法を選択可能としてもよい。
具体的には、このような逆量子化方法の各ステップを実行するようなプログラムをメモリなどに記憶させ、例えば、マイクロプロセッサのようなCPUが、メモリに記憶されたプログラムを順次読み取り、読み取ったプログラムに従って処理を実行するような構成であってもよい。
(実施の形態2)
図7は、本発明の実施の形態2における逆量子化回路の構成を示すブロック図である。
図7に示すように、本発明の実施の形態2における逆量子化回路は、実施の形態1と同様に、入力端子13に供給された係数データCDに対し、各種の演算処理を施し、元の係数値を復元し、復元した係数値である復元データRDを出力端子19に出力する逆量子化回路である。また、本実施の形態の逆量子化回路も、画像の符号化方式として知られる、静止画像を対象にしたJPEG方式、動画像を対象にしたMPEG−1方式、MPEG−2方式、MPEG−4方式、H.263方式及びMPEG−4AVC方式とも呼ばれるH.264方式における逆量子化回路を実現している。特に、本実施の形態の逆量子化回路は、実施の形態1との比較において、より回路規模の削減を図るとともに、上述のような各種の符号化方式への対応を図った構成としている。なお、図7において、図1と同じ符号を付した構成要素は同一の構成であり詳細な説明は省略する。
図7において、逆量子化回路には、係数データCDが入力端子13に供給される。本実施の形態2に係る逆量子化回路も、このような係数データCDに対し、各種の符号化方式やその符号化方式の符号化種別に応じて演算処理を選択的に施すことで、画像データのブロック単位での例えば離散コサイン変換で求めた各周波数成分の係数値を復元する。
図7に示す逆量子化回路は、係数データCDに対し逆量子化のための各種演算処理を行うための演算処理部を備える。逆量子化回路は、演算処理部として、前段処理部130、乗算処理部140、加算処理部150、シフト処理部170及び後段処理部199を備える。
前段処理部130は、係数データCDを2倍にするとともに、デッドゾーンのある量子化に対応する逆量子化を行う。乗算処理部140は、係数データCDに対し量子化スケールに基づく逆量子化を行うとともに係数データCDに対し量子化マトリックスに基づく逆量子化を行う。加算処理部150は、係数データCDに対し所定の加算値を加算する。シフト処理部170は、係数データCDに対し所定のビット数だけのシフト量としてビットシフトさせる。後段処理部199は、係数データCDに対し飽和処理及びDCTミスマッチ制御処理を行う。
また、逆量子化回路は、第1の乗算値生成部10、第2の乗算値生成部20、加算値生成部160及びシフト量生成部180を備える。第1の乗算値生成部10は、乗算処理部140における量子化スケールに基づく逆量子化を行うための第1の乗算値M1を生成する。第2の乗算値生成部20は、乗算処理部140における量子化マトリックスに基づく逆量子化を行うための第2の乗算値M2を生成する。加算値生成部160は、加算処理部150に供給するための所定の加算値OFを生成する。シフト量生成部180は、シフト処理部170に供給するためのシフト量データSFを生成する。
また、逆量子化回路は、制御部100を備える。制御部100は、前段処理部130、乗算処理部140、加算処理部150、シフト処理部170及び後段処理部199に対し、それぞれの演算処理を実行するか否かを指示する制御情報を出力する。
本発明の実施の形態2における逆量子化回路も、実施の形態1と同様に、それぞれの演算処理部が、指示に応じて、逆量子化のための演算処理に含めるか否かを選択可能としている。すなわち、各演算処理部において、例えば、演算処理済データと非演算処理データとを選択的に切替えて出力するような構成としている。また、例えばビットシフトさせるシフト演算処理の場合のシフト量のような演算処理の内容についても選択可能としている。
さらに、制御部100は、乗算値生成部10、乗算値生成部20、加算値生成部160及びシフト量生成部180に対し、生成する値又はデータの生成方法を指示する制御情報を出力する。
本発明の実施の形態2における逆量子化回路はこのような基本構成であり、各種の符号化方式に応じて各演算処理部の演算処理の実行の有無や処理内容を選択的に切替えることにより、単一の回路で各種の画像符号化方式に対応できる汎用性の高い逆量子化回路を実現している。特に、本発明の実施の形態2における逆量子化回路は、既存の各種符号化方式に対応するとともに、回路規模の削減を図った構成である。以下、本発明の実施の形態2における逆量子化回路の詳細な構成について説明する。
図7に示すように、逆量子化回路の入力端子13に供給された係数データCDは、まず、前段処理部130に供給される。前段処理部130は、係数データCDを2倍にするための2倍乗算器131と、MPEG−1方式、MPEG−2方式、MPEG−4方式及びH.263方式などで規定されているデッドゾーンのある量子化方式に対応する処理を行うための加算器132とを有している。加算器132は、デッドゾーンのある量子化方式に対応するために設けている。前段処理部130に供給された係数データCDは、2倍乗算器131に供給され、2倍乗算器131の出力データが加算器132の一方の入力端に供給される。また、加算器132の他方の入力端には、係数データCDの符号ビットが供給される。また、加算器132の出力データが前段処理部130の出力データFDとして乗算処理部140に供給される。
また、前段処理部130において、2倍乗算器131は、制御部100からの制御情報CNT_F1により2倍の演算処理を行うか否かの切替制御が可能なように構成されている。また、加算器132は、制御部100からの制御情報CNT_F2によりデッドゾーンのある量子化に対する処理を行うか否かの切替制御が可能なように構成されている。
このような前段処理部130の構成により、例えば、制御情報CNT_F1及び制御情報CNT_F2を用いて、制御部100によってそれぞれ演算処理を行わないよう指示されると、前段処理部130からは入力端子13に供給された係数データCDが前段処理部130の出力データFDとして出力される。
また、例えば逆に、制御情報CNT_F1及び制御情報CNT_F2を用いて、制御部100によってそれぞれ演算処理を行うよう指示されると、前段処理部130からは、入力端子13に供給された係数データCDを2倍しさらにデッドゾーンのある量子化に対する処理を行ったデータが出力データFDとして出力される。
以上のように、前段処理部130は、係数データCDに対して2倍する演算処理の機能、及び係数データCDに対するデッドゾーンの範囲に対応した値を加算する演算処理の機能を有するとともに、これら演算処理を演算対象に含めるか否かをそれぞれに選択可能としている。そして、前段処理部130は、これら演算処理において、演算処理済データと非演算処理データとを選択的に切替えて出力するように構成されている。
なお、前段処理部130において、2倍乗算器131は乗算器による2倍の乗算に代えて、例えば1ビット左シフト回路などでもよく、係数データCDを2倍する演算処理の機能を有していればよい。また、さらに、2倍乗算器131を、例えば、外部から倍数を設定可能な乗算器あるいはシフト回路とし、適宜、処理に応じた倍数を選択するような構成であってもよい。また、加算器132は、2倍乗算器131からのデータに符号ビットを加算するのに代えて、2倍乗算器131からのデータに所定の値を加算するような回路などでもよく、符号化方式に基づいたデッドゾーンのある量子化に対応した演算処理の機能を有していればよい。
次に、前段処理部130から出力された出力データFDは、図7に示すように、乗算処理部140に供給される。乗算処理部140は、実施の形態1と同様の構成であり、第1の乗算器141(以下、適宜、単に“乗算器141”と呼ぶ)及び第2の乗算器142(以下、適宜、単に“乗算器142”と呼ぶ)を有する。乗算器141は、前段処理部130からの出力データFDに対して第1の乗算値生成部10(以下、適宜、単に“乗算値生成部10”と呼ぶ)から供給された第1の乗算値M1(以下、適宜、単に“乗算値M1”と呼ぶ)を乗算する。乗算器142は、乗算器141から出力されたデータに対して第2の乗算値生成部20(以下、適宜、単に“乗算値生成部20”と呼ぶ)から供給された第2の乗算値M2(以下、適宜、単に“乗算値M2”と呼ぶ)を乗算する。
また、乗算処理部140において、乗算器141は、制御部100からの制御情報CNT_M1により乗算値M1を乗算する演算処理を行うか否かの切替制御が可能なように構成されている。また、乗算器142は、制御部100からの制御情報CNT_M2により乗算値M2を乗算する演算処理を行うか否かの切替制御が可能なように構成されている。このような乗算処理部140の構成により、例えば、制御情報CNT_M1及び制御情報CNT_M2を用いて、制御部100によってそれぞれ演算処理を行わないよう指示されると、乗算処理部140からは、前段処理部130からの出力データFDが乗算処理部140の出力データMDとして出力される。
また、例えば逆に、制御情報CNT_M1及び制御情報CNT_M2を用いて、制御部100によってそれぞれ演算処理を行うよう指示されると、乗算処理部140からは、前段処理部130からの出力データFDに対して乗算値M1及び乗算値M2を乗算した値のデータが出力データMDとして出力される。
以上のように、乗算処理部140は、係数データCDに対して乗算値M1及び乗算値M2を乗算する演算処理の機能を有するとともに、このような乗算演算の処理において演算処理済データと非演算処理データとを選択的に切替えて出力するように構成されている。
なお、乗算処理部140において、図7に示すような出力データFDに対してまず乗算値M1を乗算し次に乗算値M2を乗算するような構成に代えて、出力データFDに対してまず乗算値M2を乗算し次に乗算値M1を乗算するような構成であってもよい。また、乗算処理部140は、出力データFDに対して、乗算値M1と乗算値M2とを乗算した値を乗算するような構成であってもよい。
次に、乗算値生成部10は、実施の形態1と同様の構成であり、上述した乗算処理部140に供給するための乗算値M1を生成する。乗算値生成部10は、主に、画像の符号化方式において量子化スケールと呼ばれているマクロブロックなどのブロックごとに定めた量子化幅を示すスケール値を生成する。乗算値生成部10は、このようなスケール値を生成するため、図7に示すように、スケール値を生成するためのスケール値生成部110を有している。スケール値生成部110は、入力端子11に供給されたスケールインデックスSCIを、例えば所定の変換ルールに基づき変換する変換機能を有しており、所定のスケール値を出力する。さらに、乗算値生成部10は、スケール値生成部110で生成したスケール値に対して各符号化方式や符号化方式における符号化種別に対応させた演算処理を選択的に施すことで乗算値M1を出力するスケール処理部210を有している。
次に、乗算値生成部20も、実施の形態1と同様の構成であり、上述した乗算処理部140に供給する乗算値M2を生成する。乗算値生成部20は、主に、画像の符号化方式において周波数ごとに量子化幅を設定した量子化マトリックスと呼ばれているマトリックス値を生成する。このため、図7に示すように、乗算値生成部20は、このようなマトリックス値を生成するためのマトリックス値生成部120を有している。
次に、乗算処理部140から出力された出力データMDは、図7に示すように、加算処理部150に供給される。加算処理部150も、実施の形態1と同様の構成であり、乗算処理部140からの出力データMDに対して加算値生成部160から供給された加算値OFを加算する加算器151を有している。
次に、加算値生成部160は、上述した加算処理部150に供給する加算値OFを生成する。加算値生成部160は、このような加算値OFとして、H.263方式及びMPEG−4方式の逆量子化を行う場合には、DCTミスマッチ制御処理における加算処理のための加算値を出力し、H.264方式の逆量子化を行う場合には、右シフトに対する丸め処理のための加算値を出力する。また、加算値生成部160は、制御部100からの制御情報CNT_AGによる指示に従って、このような符号化方式に応じた加算値OFを選択的に出力し、加算処理部150に供給する。以上のように、加算値生成部160は、係数データに対する演算処理を施すための加算値OFを生成する。
次に、加算処理部150から出力された出力データADは、図7に示すように、シフト処理部170に供給される。シフト処理部170も、実施の形態1と同様の構成であり、加算処理部150からの出力データADに対してシフト量生成部180から供給されたシフト量データSFに応じて出力データADのビットシフトを行うシフト演算器171を有している。
次に、シフト量生成部180も、実施の形態1と同様の構成であり、各符号化方式において規定されたスケール合わせのため、上述したシフト処理部170に供給するシフト量を示すシフト量データSFを生成する。
次に、シフト処理部170から出力された出力データSDは、図7に示すように、後段処理部199に供給される。後段処理部199は、シフト処理部170からの出力データSDに対して飽和処理を行う飽和処理部192と、DCTミスマッチ制御処理を行うDCTミスマッチ処理部193とを有している。また、飽和処理部192は、制御部100からの制御情報CNT_CLにより飽和処理を行うか否かの切替制御が可能なように構成されており、DCTミスマッチ処理部193は、制御部100からの制御情報CNT_MSによりDCTミスマッチ制御処理を行うか否かの切替制御が可能なように構成されている。
上述したように、MPEG−1方式、MPEG−4方式及びH.263方式では、DCTミスマッチ制御処理の次に飽和処理を行うよう規定されており、MPEG−2方式では、飽和処理の次にDCTミスマッチ制御処理を行うよう規定されている。このため、本実施の形態における逆量子化回路では、例えば、MPEG−1方式の係数データCDに対して逆量子化処理を行う場合、制御部100は、制御情報CNT_CLにより飽和処理部192の飽和処理を行うよう指示するとともに、制御情報CNT_MSによりDCTミスマッチ処理部193のDCTミスマッチ制御処理を行わないよう指示する。さらに、制御部100は、加算値生成部160に対して制御情報CNT_AGによりDCTミスマッチ制御処理における加算処理のための加算値OFを出力するように指示し、加算処理部150に対して制御情報CNT_APにより加算値OFを加算するように指示する。
すなわち、MPEG−1方式において、intraDC以外の係数データに対して、その復元係数値が偶数の場合に、係数データの符号、すなわちSign(dct_zz[i])を引き算するため、加算値生成部160は係数データの符号を反転した値を加算値OFとして出力する。これにより、MPEG−1方式で規定されているように、DCTミスマッチ制御処理の次に飽和処理が実行される。
また、MPEG−2方式の係数データCDに対して逆量子化処理を行う場合、制御部100は、制御情報CNT_CLにより飽和処理部192の飽和処理を行うよう指示するとともに、制御情報CNT_MSによりDCTミスマッチ処理部193のDCTミスマッチ制御処理を行うよう指示する。さらに、制御部100は、加算処理部150に対して制御情報CNT_APにより加算値OFを加算しないように指示する。これにより、MPEG−2方式で規定されているように、飽和処理の次にDCTミスマッチ制御処理が実行される。
本実施の形態の逆量子化回路では、以上説明したような演算処理が、それぞれの制御情報に従って各符号化方式に応じて実行され、後段処理部199からは、復元された係数値を有した復元データRDが出力端子19に出力される。
なお、以下、上述したように、各演算処理部における演算処理及び各生成部における値やデータの生成方法がそれぞれに選択可能であるとして説明するが、本発明は特にこれに限定されない。例えば、対応する符号化方式の種類に応じて、乗算処理部140及びシフト処理部170のうちの少なくとも1つの演算処理部において演算処理を行うか否かを選択可能とするような構成であってもよく、第1の乗算値生成部10、第2の乗算値生成部20及びシフト量生成部180のうちの少なくとも1つの生成部において生成する値又はデータの生成方法を選択可能とするような構成であってもよい。
以下、以上のように構成された本発明の実施の形態2における逆量子化回路の動作について説明する。
図8は、本発明の実施の形態2の逆量子化回路において、各逆量子化式に対応した演算処理の一覧を示す図である。図8では、図2から図4までの各逆量子化式を共通の演算処理で実現可能なように一覧としてまとめている。図8において、“係数”は逆量子化するための係数データを示し、“2”は乗数2を示し、“符号”は係数データの正負を示す符号であり係数データの符号を利用したデッドゾーンのある量子化の処理などを示している。また、“行列”はマトリックス値を示し、“スケール”はスケール値を示し、“加算値”は逆量子化における加算値を示し、“シフト”はシフト演算を示し、“クリップ”は飽和処理を示し、“DCTミス”はDCTミスマッチ制御処理を示している。また、“正規化”は、H.264方式で規定された正規化係数値を示している。また、“0”、“1”及び“8”などの数字はその値が示す定数を示している。また、“シフト”、“クリップ”及び“DCTミス”で示した箇所はそれぞれの処理を実行することを示し、矢印で示した箇所はその処理を実行しないことを示している。
特に、図8における“符号”で示す演算においては、MPEG−1方式のSign(dct_zz[i])と、MPEG−2方式のSign(QF[v][u])と、H.263及びMPEG−4方式の1の加算とで表されるデッドゾーンのある量子化の加算値を加算する処理の共通化を図っている。さらに、図8における“加算値”で示す演算においては、H.263方式及びMPEG−4方式のDCTミスマッチ制御処理と、H.264方式のスケール合わせのための右シフトに対する丸め処理との共通化を図り、回路規模の削減を図っている。
このように、図2から図4までの各符号化方式の各逆量子化式は、図8に示すような共通の演算式でも表現することができる。すなわち、図7で説明した本発明の実施の形態2における逆量子化回路の構成は、図8に示すような共通の演算式を実現した回路であり、上述したような制御情報による各演算処理の実行の切替えを行うことでそれぞれの符号化方式に対応させている。本発明の実施の形態2における逆量子化回路は、演算処理の共通化を図ることで、さらに回路規模が増大することを抑制している。
以下、図2から図4、図7及び図8を参照しながら本発明の実施の形態2における逆量子化回路の具体的な動作についていくつかの符号化方式の例を挙げながら説明する。
まず、JPEG方式で量子化された係数データを逆量子化する処理について説明する。例えばJPEG方式の逆量子化を行う場合、図8で示す演算構成に従って、制御情報により各演算処理の切替えが行われる。すなわち、JPEG方式の場合、図8に示すように、係数データCDに対してマトリックス値生成部120からのマトリックス値を乗算するのみでよい。そのため、制御部100は、次のような制御情報をそれぞれの処理部及び生成部に通知する。
例えば、逆量子化回路を制御する制御部100は、2倍乗算器131に対し、制御情報CNT_F1により、2倍の演算処理を行わないように指示する。また、制御部100は、加算器132に対しては、制御情報CNT_F2により、デッドゾーンのある量子化に対する加算処理を行わないように指示する。また、制御部100は、乗算器141に対しては、制御情報CNT_M1により、乗算処理を行わないように指示する。また、制御部100は、乗算器142に対しては、制御情報CNT_M2により乗算処理を行うよう指示する。
また、制御部100は、マトリックス値生成部120に対しては、制御情報CNT_MXにより、マトリックス値を出力するよう指示する。また、制御部100は、加算器151に対しては、制御情報CNT_APにより、加算処理を行わないよう指示する。また、制御部100は、シフト演算器171に対しては、制御情報CNT_SPにより、シフト演算処理を行わないよう指示する。また、制御部100は、飽和処理部192に対しては、制御情報CNT_CLにより、飽和処理を行わないよう指示する。また、制御部100は、DCTミスマッチ処理部193に対しては、制御情報CNT_MSにより、DCTミスマッチ制御処理を行わないよう指示する。
これにより、前段処理部130からは、入力端子13に供給された係数データCDと同じ値の出力データFDが出力され、乗算処理部140からは、係数データCDの値に乗算値M2であるマトリックス値を乗算した値の出力データMDが出力される。さらに、加算処理部150、シフト処理部170及び後段処理部199からも出力データMDと同じ値のデータが出力される。その結果、出力端子19からは、係数データCDの値に乗算値M2であるマトリックス値を乗算した値の復元データRDが出力される。このように、図7の構成において上述したようなそれぞれの制御情報を各部に通知することで、図2のJPEGの項に示すような係数データSqvuにマトリックス値Qvuを乗算して復元データRvuを求めるような逆量子化式を実現できる。
また、例えばMPEG−2方式の逆量子化を行う場合、図8に示すように係数データの種別で区分して逆量子化を行う。
まず、MPEG−2方式で量子化された画面内符号化の直流成分の係数データを逆量子化する処理について説明する。入力端子13に供給された係数データがMPEG−2方式の画面内符号化の直流成分の係数データのとき、図8に示すように、係数データに対してスケール値を乗算するのみでよい。そのため、制御部100は、次のような制御情報をそれぞれの演算処理部及び生成部に通知する。
例えば、制御部100は、2倍乗算器131に対し、制御情報CNT_F1により、2倍の演算処理を行わないように指示する。また、制御部100は、加算器132に対しては、制御情報CNT_F2により、デッドゾーンのある量子化に対する加算処理を行わないように指示する。また、制御部100は、乗算器141に対しては、制御情報CNT_M1により、乗算処理を行うように指示する。また、制御部100は、乗算器142に対しては、制御情報CNT_M2により、乗算処理を行わないよう指示する。
また、制御部100は、スケール値生成部110に対しては、制御情報CNT_SGにより、制御情報CNT_SCで指定されるスケールインデックスSCIに対応したスケール値を出力するよう指示する。また、制御部100は、加算器151に対しては、制御情報CNT_APにより、加算処理を行わないよう指示する。また、制御部100は、シフト演算器171に対しては、制御情報CNT_SPにより、シフト演算処理を行わないよう指示する。また、制御部100は、飽和処理部192に対しては、制御情報CNT_CLにより、飽和処理を行うよう指示する。DCTミスマッチ処理部193に対しては、制御情報CNT_MSにより、DCTミスマッチ制御処理を行うよう指示する。
これにより、前段処理部130からは、入力端子13に供給された係数データCDと同じ値の出力データFDが出力され、乗算処理部140からは、係数データCDの値に乗算値M1であるスケール値を乗算した値の出力データMDが出力される。さらに、加算処理部150及びシフト処理部170からも出力データMDと同じ値のデータが出力される。その結果、シフト処理部170からは、係数データCDの値にスケール値を乗算した値の出力データSDが出力される。
さらに、実施の形態1のときと同様に、後段処理部199において、まず、飽和処理部192は、出力データSDに対して飽和処理を行う。次に、DCTミスマッチ処理部193は、飽和処理部192から供給されたデータに対して、供給された全てのデータの値を加算して、その和が偶数のときには、最も高周波である成分、すなわち係数[7][7]成分の値を変更するような処理を行う。このようにして、後段処理部199から復元データRDが出力される。
このように、図7の構成において上述したようなそれぞれの制御情報が各部に通知されることで、図2のMPEG−2のIntraDCの項に示すような係数データQF[0][0]にスケール値intra_dc_multを乗算し復元データF”[0][0]を求めるような逆量子化式を実現できる。
次に、MPEG−2方式で量子化された画面内符号化の交流成分の係数データを逆量子化する処理について説明する。入力端子13に供給された係数データがMPEG−2方式の画面内符号化の交流成分の係数データのとき、図8に示すように、係数データに対して、定数“2”、“スケール”で示すスケール値及び“行列”で示すマトリックス値を乗算し、さらに“シフト”で示すシフト演算を行えばよい。そのため、制御部100は、次のような制御情報をそれぞれの演算処理部及び生成部に通知する。
例えば、制御部100は、2倍乗算器131に対し、制御情報CNT_F1により、2倍の演算処理を行うように指示する。また、制御部100は、加算器132に対しては、制御情報CNT_F2により、デッドゾーンのある量子化に対する加算処理を行わないように指示する。また、制御部100は、乗算器141に対しては、制御情報CNT_M1により、乗算処理を行うように指示する。また、制御部100は、乗算器142に対しては、制御情報CNT_M2により、乗算処理を行うように指示する。
また、制御部100は、スケール値生成部110に対しては、制御情報CNT_SGにより、制御情報CNT_SCで指定されるスケールインデックスSCIに対応したスケール値が格納されたスケールテーブルからの出力値を選択するよう指示する。また、制御部100は、スケール処理部210に対しては、制御情報CNT_SPにより、スケール値生成部110から出力されたスケール値を選択するよう指示する。これにより、乗算処理を行うように指示された乗算器141に、スケール値が乗算値M1として供給される。
また、制御部100は、マトリックス値生成部120に対しては、制御情報CNT_MXにより、入力端子12に供給されたマトリックスデータMXDに応じたマトリックス値を出力するよう指示する。また、制御部100は、加算器151に対しては、制御情報CNT_APにより、加算処理を行わないよう指示する。また、制御部100は、シフト演算器171に対しては、制御情報CNT_SPにより、シフト演算処理を行うよう指示する。また、制御部100は、シフト量生成部180に対しては、制御情報CNT_SGにより、1/32に対応した5ビットの右シフトに相当するシフト量データSFを出力するよう指示する。また、制御部100は、飽和処理部192に対しては、制御情報CNT_CLにより、飽和処理を行うよう指示する。また、制御部100は、DCTミスマッチ処理部193に対しては、制御情報CNT_MSにより、DCTミスマッチ制御処理を行うよう指示する。
これにより、前段処理部130からは、入力端子13に供給された係数データCDを2倍した出力データFDが出力される。また、乗算処理部140からは、係数データCDを2倍し、さらにスケール値及びマトリックス値を乗算した出力データMDが出力される。さらに、加算処理部150からは、出力データMDと同じ値の出力データADが出力される。シフト処理部170からは、係数データCDを2倍し、さらにスケール値及びマトリックス値を乗算した値を5ビットだけ右にシフトさせた、すなわち32で割った値が出力データSDとして出力される。その結果、シフト処理部170からは、係数データCDを2倍し、さらにスケール値及びマトリックス値を乗算し、32で割った値の出力データSDが出力される。
さらに、実施の形態1のときと同様に、後段処理部199において、まず、飽和処理部192は、出力データSDに対して飽和処理を行う。次に、DCTミスマッチ処理部193は、飽和処理部192から供給されたデータに対して、供給された全てのデータの値を加算して、その和が偶数のときには、最も高周波である成分、すなわち係数[7][7]成分の値を変更するような処理を行う。このようにして、後段処理部199から復元データRDが出力される。
このように、図7の構成において上述したようなそれぞれの制御情報が各部に通知される。したがって、係数データQF[v][u]に、定数“2”、マトリックス値W[w][v][u]及びスケール値quantizer_scaleを乗算し、32で割ることで、図2のMPEG−2のIntraACの項に示すような復元データF”[v][u]を求める逆量子化式を実現できる。
次に、MPEG−2方式で量子化された画面間符号化の係数データを逆量子化する処理について説明する。入力端子13に供給された係数データがMPEG−2方式の画面間符号化の係数データのとき、図8に示すように、係数データに対して定数“2”を乗算するとともに“符号”で示すデッドゾーンのある量子化に対する加算処理を施し、このようなデータ値に対して“スケール”で示すスケール値及び“行列”で示すマトリックス値を乗算し、さらに“シフト”で示すシフト演算を行い、さらに“クリップ”で示す飽和処理及び“DCTミス”で示すDCTミスマッチ制御処理を行えばよい。そのため、制御部100は、次のような制御情報をそれぞれの演算処理部及び生成部に通知する。
例えば、制御部100は、2倍乗算器131に対し、制御情報CNT_F1により、2倍の演算処理を行うように指示する。また、制御部100は、加算器132に対しては、制御情報CNT_F2により、デッドゾーンのある量子化の加算値に対する加算処理を行うように指示する。また、制御部100は、乗算器141に対しては、制御情報CNT_M1により、乗算処理を行うように指示する。また、制御部100は、乗算器142に対しては、制御情報CNT_M2により、乗算処理を行うよう指示する。
また、制御部100は、スケール値生成部110に対しては、制御情報CNT_SGにより、制御情報CNT_SCで指定されるスケールインデックスSCIに対応したスケール値が格納されたスケールテーブルからの出力値を選択するよう指示する。また、制御部100は、スケール処理部210に対しては、制御情報CNT_SPにより、スケール値生成部110から出力されたスケール値を選択するよう指示する。これにより、乗算処理を行うように指示された乗算器141に、スケール値が乗算値M1として供給される。
また、制御部100は、マトリックス値生成部120に対しては、制御情報CNT_MXにより、入力端子12に供給されたマトリックスデータMXDに応じたマトリックス値を出力するよう指示する。また、制御部100は、加算器151に対しては、制御情報CNT_APにより、加算処理を行わないよう指示する。
また、制御部100は、シフト演算器171に対しては、制御情報CNT_SPにより、シフト演算処理を行うよう指示する。また、制御部100は、シフト量生成部180に対しては、制御情報CNT_SGにより、1/32に対応した5ビットの右シフトに相当するシフト量データSFを出力するよう指示する。また、制御部100は、飽和処理部192に対しては、制御情報CNT_CLにより、飽和処理を行うよう指示する。また、制御部100は、DCTミスマッチ処理部193に対しては、制御情報CNT_MSにより、DCTミスマッチ制御処理を行うよう指示する。
これにより、前段処理部130からは、入力端子13に供給された係数データCDを2倍し、さらにデッドゾーンのある量子化に対応する逆量子化を施した出力データFDが出力される。また、乗算処理部140からは、前段処理部130からの出力データFDに対しスケール値及びマトリックス値を乗算した出力データMDが出力される。さらに、加算処理部150からは、出力データMDに等しい出力データADが出力される。シフト処理部170からは、加算処理部150からの出力データADを5ビットだけ右にシフトさせた、すなわち32で割った出力データSDが出力される。さらに、後段処理部199からは、シフト処理部170からの出力データSDを飽和処理及びDCTミスマッチ制御処理したデータが出力される。
このように、図7の構成において上述したようなそれぞれの制御情報が各部に通知される。したがって、係数データQF[v][u]に定数“2”を乗算し係数データの符号Sign(QF[v][u])を加算した値(2×QF[v][u]+Sign(QF[v][u]))に対し、スケール値quantizer_scale及びマトリックス値W[w][m][n]を乗算し、32で割ることで、図2のMPEG−2のnon−intraの項に示すような復元データF”[v][u]を求める逆量子化式を実現できる。
以上説明したように、本発明の実施の形態2における逆量子化回路は、量子化係数データCDに対する演算処理を施すための第1の乗算値M1を生成する第1の乗算値生成部10と、量子化係数データCDに対する演算処理を施すための第2の乗算値M2を生成する第2の乗算値生成部20と、量子化係数データCDに対する演算処理を施すためのビットシフト量を示すシフト量データSFを生成するシフト量生成部180と、量子化係数データCDに対して第1の乗算値M1及び第2の乗算値M2を乗算する乗算処理部140と、乗算処理部140から出力された出力データMDに対してシフト量データSFに応じてビットシフト演算を行うシフト処理部170とを備える。
そして、乗算処理部140及びシフト処理部170のうちの少なくとも1つの演算処理部において、演算処理を行うか否かを選択可能としている。また、第1の乗算値生成部10、第2の乗算値生成部20及びシフト量生成部180のうちの少なくとも1つの生成部において、生成する値又はデータの生成方法を選択可能としている。
このため、符号化方式に応じてそれぞれの逆量子化回路を備える必要はなく、各種の符号化方式に応じて各演算処理部の演算処理を選択でき、柔軟性のある逆量子化回路を構成できるため、単一の回路で各種の画像符号化方式に対応できる汎用性の高い逆量子化回路を提供することができる。
なお、以上の説明では、図7に示すような機能ブロックで構成される逆量子化回路により逆量子化を行うような実施の形態の一例を説明したが、本発明は特にこれに限定されない。例えば、量子化係数データCDに対する演算処理を施すための第1の乗算値M1を生成する第1の乗算値生成ステップと、量子化係数データCDに対する演算処理を施すための第2の乗算値M2を生成する第2の乗算値生成ステップと、量子化係数データCDに対する演算処理を施すためのビットシフト量を示すシフト量データSFを生成するシフト量生成ステップと、量子化係数データCDに対して第1の乗算値M1及び第2の乗算値M2を乗算する乗算処理ステップと、乗算処理ステップからの出力データMDに対してシフト量データSFに応じてビットシフト演算を行うシフト処理ステップとを含む逆量子化方法であってもよい。
そして、乗算処理ステップ及びシフト処理ステップのうちの少なくとも1つの演算処理ステップにおいて、演算処理を行うか否かを選択可能としてもよい。また、第1の乗算値生成ステップ、第2の乗算値生成ステップ及びシフト量生成ステップのうちの少なくとも1つの生成ステップにおいて、生成する値又はデータの生成方法を選択可能としてもよい。
具体的には、このような逆量子化方法の各ステップを実行するようなプログラムをメモリなどに記憶させ、例えば、マイクロプロセッサのようなCPUが、メモリに記憶されたプログラムを順次読み取り、読み取ったプログラムに従って処理を実行するような構成であってもよい。
ここで、実施の形態1における逆量子化回路と実施の形態2における逆量子化回路との差について説明する。実施の形態1における逆量子化回路は、汎用性を重視した構成であり、実施の形態2における逆量子化回路は、回路規模の小型化を重視した構成である。
その一例として、図8において、画面間符号化のMPEG−1方式におけるDCTミスマッチ制御処理と、H.264方式における丸め処理とは、同一の演算項(図8に示す“加算値”)で表されている。このように、DCTミスマッチ制御処理と丸め処理とを同一の演算項で表現した場合、将来の新たな符号化方式において、DCTミスマッチ制御処理と丸め処理との両方の要素を含む規格が出現したときに対応が困難となる。そこで、図5に示す演算構成では、DCTミスマッチ制御処理と丸め処理とを別々の演算項として表している。このように、実施の形態1では、複数の異なる演算処理を1つの演算処理部に行わせることがないため、より汎用性の高い逆量子化回路を実現することができる。
また、別の例として、図8に示す演算構成では、デッドゾーン付き量子化のためのオフセット(“符号”で示す演算項)は、量子化スケール値と量子化行列とに結びついており、独立性が低くなっている。これに対し、図5に示す演算構成では、量子化スケール値(乗算値M1)と、デッドゾーン付き量子化のためのオフセット(加算値OF)とが分離して表現されている。デッドゾーン付きの量子化とは、ゼロ付近の値をゼロに丸める処理であり、どれだけの範囲の値をゼロに丸めるか、すなわちどのようなオフセットを加算するかは符号化方式に応じて異なる。このため、実施の形態1では、各演算項の依存関係を最小にすることによって、各演算処理が独立して制御されるので、より汎用性の高い逆量子化回路を実現することができる。
さらに別の例として、図7に示す実施の形態2における逆量子化回路は、係数データを2倍する2倍乗算器131を備えている。この2倍乗算器131は、量子化スケールの値の調整や、量子化スケールとデッドゾーン付き量子化のためのオフセットとの関係を調整するために設けられているが、将来的に2以外の数値を係数データに乗算する符号化方式が出現する虞がある。そこで、実施の形態1における逆量子化回路では、この係数データを2倍する演算を図6に示す演算部211により行っている。ここで、演算部211が乗算する値は固定ではなく、符号化方式に応じて変更が可能である。したがって、実施の形態1では、調整する余地のあるパラメータについては固定化されないので、より汎用性の高い逆量子化回路を実現することができる。
以上のように、実施の形態1における逆量子化回路は、汎用性をより高めた構成となっている。
(実施の形態3)
図9は、本発明の実施の形態3に係る画像再生装置の構成を示すブロック図である。なお、画像再生装置は、例えば、パーソナルコンピュータ、セットトップボックス、光ディスクレコーダ、光ディスクプレーヤ、テレビ、携帯情報端末装置及び携帯電話機を含む。
図9に示す画像再生装置300は、符号化ストリーム取得部301、量子化係数データ抽出部302、逆量子化回路303、画像データ変換部304及び出力部305を備える。
符号化ストリーム取得部301は、符号化ストリームを取得する。なお、符号化ストリーム取得部301は、ネットワークを介して符号化ストリームを取得したり、DVD、Blu−rayディスク等の光ディスクを読み取ることにより符号化ストリームを取得したり、アンテナを介して放送波から符号化ストリームを取得したりする。
量子化係数データ抽出部302は、符号化ストリーム取得部301によって取得された符号化ストリームの中から、画像データを符号化方式に基づいて変換することで求めた周波数ごとの係数値を量子化した量子化係数データを抽出する。
逆量子化回路303は、実施の形態1又は実施の形態2で述べたいずれかの逆量子化回路である。逆量子化回路303は、量子化係数データ抽出部302によって抽出された量子化係数データに対し、演算処理を施すことで逆量子化を行い、係数値を復元する。
画像データ変換部304は、逆量子化回路303によって復元された係数値を画像データに変換する。出力部305は、画像データ変換部304によって変換された画像データをモニタ310に出力する。モニタ310は、出力部305によって出力された画像データを表示する。
画像再生装置300は、実施の形態1又は実施の形態2で述べたいずれかの逆量子化回路を搭載しているので、本実施の形態における画像再生装置300は、単一回路で各種の符号化方式に対応した逆量子化を行うことができる。
なお、上述した具体的実施形態には以下の構成を有する発明が主に含まれている。
本発明の一局面に係る逆量子化回路は、画像データを符号化方式に基づいて変換することで求めた周波数ごとの係数値を量子化した量子化係数データに対し、演算処理を施すことで逆量子化を行い、前記係数値を復元する逆量子化回路であって、前記量子化係数データに対する前記演算処理を施すための第1の乗算値を生成する第1の乗算値生成部と、前記量子化係数データに対する前記演算処理を施すための第2の乗算値を生成する第2の乗算値生成部と、前記量子化係数データに対する前記演算処理を施すためのビットシフト量を示すシフト量データを生成するシフト量生成部と、前記第1の乗算値生成部によって生成された前記第1の乗算値及び前記第2の乗算値生成部によって生成された前記第2の乗算値を前記量子化係数データに乗算する乗算処理部と、前記シフト量生成部によって生成された前記シフト量データに応じて、前記乗算処理部から出力されたデータに対してビットシフト演算を行うシフト処理部とを備え、前記乗算処理部及び前記シフト処理部のうちの少なくとも1つは、前記演算処理を行うか否かを前記符号化方式に応じて決定し、及び/又は、前記第1の乗算値生成部、前記第2の乗算値生成部及び前記シフト量生成部のうちの少なくとも1つは、生成する値又は値の生成方法を前記符号化方式に応じて決定する。
この構成によれば、第1の乗算値生成部によって、量子化係数データに対する演算処理を施すための第1の乗算値が生成され、第2の乗算値生成部によって、量子化係数データに対する演算処理を施すための第2の乗算値が生成され、シフト量生成部によって、量子化係数データに対する演算処理を施すためのビットシフト量を示すシフト量データが生成される。そして、乗算処理部によって、第1の乗算値及び第2の乗算値が量子化係数データに乗算され、シフト処理部によって、シフト量データに応じて、乗算処理部から出力されたデータに対してビットシフト演算が行われる。乗算処理部及びシフト処理部のうちの少なくとも1つにおいて、演算処理を行うか否かが符号化方式に応じて決定される。また、第1の乗算値生成部、第2の乗算値生成部及びシフト量生成部のうちの少なくとも1つにおいて、生成する値又は値の生成方法が符号化方式に応じて決定される。
したがって、演算処理を行うか否か、及び生成する値又は値の生成方法が符号化方式に応じて決定されるので、単一の回路で各種の符号化方式に対応した逆量子化を行うことができ、回路規模の削減を図れるとともに、新たな符号化方式が提案された場合にも迅速に対応することができる。また、復号化処理を行うためのLSIなどの再設計が不要となるなど、汎用性の高い逆量子化回路を提供することができる。
また、上記の逆量子化回路において、前記量子化係数データに対する前記演算処理を施すための加算値を生成する加算値生成部と、前記加算値生成部によって生成された前記加算値を前記乗算処理部から出力されたデータに加算する加算処理部とをさらに備え、前記シフト処理部は、前記シフト量生成部によって生成された前記シフト量データに応じて、前記加算処理部から出力されたデータに対してビットシフト演算を行い、前記乗算処理部、前記加算処理部及び前記シフト処理部のうちの少なくとも1つは、前記演算処理を行うか否かを符号化方式に応じて決定し、及び/又は、前記第1の乗算値生成部、前記第2の乗算値生成部、前記加算値生成部及び前記シフト量生成部のうちの少なくとも1つは、生成する値又は値の生成方法を符号化方式に応じて決定することが好ましい。
この構成によれば、加算値生成部によって、量子化係数データに対する演算処理を施すための加算値が生成され、加算処理部によって、生成された加算値が乗算処理部から出力されたデータに加算される。また、シフト処理部によって、シフト量生成部により生成されたシフト量データに応じて、加算処理部から出力されたデータに対してビットシフト演算が行われる。乗算処理部、加算処理部及びシフト処理部のうちの少なくとも1つにおいて、演算処理を行うか否かが符号化方式に応じて決定される。また、第1の乗算値生成部、第2の乗算値生成部、加算値生成部及びシフト量生成部のうちの少なくとも1つにおいて、生成する値又は値の生成方法が符号化方式に応じて決定される。
したがって、乗算処理部から出力されたデータに加算値を加算する演算処理を施すことができ、単一の回路で各種の符号化方式に対応した逆量子化をさらに行うことができる。
また、上記の逆量子化回路において、前記第1の乗算値生成部は、量子化幅を示す量子化スケール値を含む前記第1の乗算値を生成し、前記第2の乗算値生成部は、周波数ごとの量子化幅を示す量子化マトリックス値を含む前記第2の乗算値を生成することが好ましい。
この構成によれば、第1の乗算値生成部によって、量子化幅を示す量子化スケール値を含む第1の乗算値が生成され、第2の乗算値生成部によって、周波数ごとの量子化幅を示す量子化マトリックス値を含む第2の乗算値が生成される。したがって、量子化幅を示す量子化スケール値を乗算する演算処理を行うことができるとともに、周波数ごとの量子化幅を示す量子化マトリックス値を乗算する演算処理を行うことができる。
また、上記の逆量子化回路において、前記第1の乗算値生成部は、前記量子化スケール値を生成するスケール値生成部と、前記量子化スケール値に対して演算処理を施すとともに、前記量子化スケール値及び前記演算処理により得られた値のいずれかを前記第1の乗算値として出力するスケール処理部とを含み、前記第2の乗算値生成部は、周波数ごとの前記量子化マトリックス値を生成し、生成した前記量子化マトリックス値を前記第2の乗算値として出力するマトリックス値生成部を含むことが好ましい。
この構成によれば、ケール値生成部によって、量子化スケール値が生成され、スケール処理部によって、量子化スケール値に対して演算処理が施されるとともに、量子化スケール値及び演算処理により得られた値のいずれかが第1の乗算値として出力される。また、マトリックス値生成部によって、周波数ごとの量子化マトリックス値が生成され、生成された量子化マトリックス値が第2の乗算値として出力される。
したがって、量子化スケール値を生成し、生成した量子化スケール値に対して演算処理を施すことができ、量子化スケール値及び演算処理により得られた値のいずれかを第1の乗算値として出力することができる。また、周波数ごとの量子化マトリックス値を生成し、生成した量子化マトリックス値を第2の乗算値として出力することができる。
また、上記の逆量子化回路において、前記スケール処理部は、前記量子化スケール値、前記量子化スケール値を演算処理することにより得られた値及び所定の定数値のいずれかを前記第1の乗算値として出力し、前記マトリックス値生成部は、周波数ごとの前記量子化マトリックス値及び所定の定数値のいずれかを前記第2の乗算値として出力することが好ましい。
この構成によれば、量子化スケール値、量子化スケール値を演算処理することにより得られた値及び所定の定数値のいずれかが第1の乗算値として出力され、周波数ごとの量子化マトリックス値及び所定の定数値のいずれかが第2の乗算値として出力される。
したがって、量子化スケール値、量子化スケール値を演算処理することにより得られた値及び所定の定数値のいずれかを乗算する演算処理を施すことができるとともに、量子化マトリックス値及び所定の定数値のいずれかを乗算する演算処理を施すことができ、単一の回路で各種の符号化方式に対応した逆量子化をさらに行うことができる。
また、上記の逆量子化回路において、前記加算値生成部は、前記スケール値生成部によって生成された前記量子化スケール値と、前記マトリックス値生成部によって生成された前記量子化マトリックス値とを乗算する乗算器と、前記量子化スケール値、前記量子化マトリックス値、及び前記量子化スケール値と前記量子化マトリックス値とを乗算することにより得られた値のうちのいずれかの値を選択し、選択した値を前記加算値として前記加算処理部に供給する選択部とを含むことが好ましい。
この構成によれば、乗算器によって、スケール値生成部により生成された量子化スケール値と、マトリックス値生成部により生成された量子化マトリックス値とが乗算される。そして、選択部によって、量子化スケール値、量子化マトリックス値、及び量子化スケール値と量子化マトリックス値とを乗算することにより得られた値のうちのいずれかの値が選択され、選択された値が加算値として加算処理部に供給される。
したがって、量子化スケール値、量子化マトリックス値、及び量子化スケール値と量子化マトリックス値とを乗算することにより得られた値のうちのいずれかの値を加算する演算処理を施すことができ、単一の回路で各種の符号化方式に対応した逆量子化をさらに行うことができる。
また、上記の逆量子化回路において、前記選択部は、前記量子化スケール値、前記量子化マトリックス値、前記量子化スケール値と前記量子化マトリックス値とを乗算することにより得られた値、及び所定の定数値のうちのいずれかの値を選択し、選択した値を前記加算値として前記加算処理部に供給することが好ましい。
この構成によれば、量子化スケール値、量子化マトリックス値、量子化スケール値と量子化マトリックス値とを乗算することにより得られた値、及び所定の定数値のうちのいずれかの値が選択され、選択された値が加算値として加算処理部に供給される。
したがって、量子化マトリックス値、量子化スケール値と量子化マトリックス値とを乗算することにより得られた値、及び所定の定数値のうちのいずれかの値を加算する演算処理を施すことができ、単一の回路で各種の符号化方式に対応した逆量子化をさらに行うことができる。
また、上記の逆量子化回路において、前記スケール値生成部は、供給されたデータを量子化スケール値に変換する1種類又は複数種類のスケール変換部を含むことが好ましい。
この構成によれば、1種類又は複数種類のスケール変換部によって、供給されたデータが量子化スケール値に変換されるので、符号化方式に応じてスケール変換部の変換内容を変えることができる。
また、上記の逆量子化回路において、前記スケール値生成部は、供給されたデータを量子化スケール値に変換する1種類又は複数種類の第1のスケール変換部と、前記スケール変換部によって変換された量子化スケール値をさらに変換する第2のスケール変換部と、前記第1のスケール変換部によって変換された量子化スケール値と前記第2のスケール変換部によってさらに変換された量子化スケール値とのいずれかを選択し、選択した量子化スケール値を前記スケール処理部へ出力する選択部とを含むことが好ましい。
この構成によれば、1種類又は複数種類の第1のスケール変換部によって、供給されたデータが量子化スケール値に変換され、第2のスケール変換部によって、第1のスケール変換部により変換された量子化スケール値がさらに変換される。そして、選択部によって、第1のスケール変換部により変換された量子化スケール値と、第2のスケール変換部によりさらに変換された量子化スケール値とのいずれかが選択され、選択された量子化スケール値がスケール処理部へ出力される。
したがって、第1のスケール変換部により変換された量子化スケール値と、第2のスケール変換部によりさらに変換された量子化スケール値とのいずれかを用いた演算処理を施すことができ、単一の回路で各種の符号化方式に対応した逆量子化をさらに行うことができる。
また、上記の逆量子化回路において、前記スケール処理部は、前記スケール値生成部によって生成された前記量子化スケール値に対して演算処理を施す演算部と、前記スケール値生成部によって生成された前記量子化スケール値と、前記演算部により演算処理が施された量子化スケール値と、所定の定数値とのうちのいずれかの値を選択し、選択した値を前記第1の乗算値として出力する選択部とを含むことが好ましい。
この構成によれば、演算部によって、スケール値生成部により生成された量子化スケール値に対して演算処理が施され、選択部によって、スケール値生成部により生成された量子化スケール値と、演算部により演算処理が施された量子化スケール値と、所定の定数値とのうちのいずれかの値が選択され、選択された値が第1の乗算値として出力される。
したがって、量子化スケール値と、演算処理が施された量子化スケール値と、所定の定数値とのうちのいずれかの値を用いた演算処理を施すことができ、単一の回路で各種の符号化方式に対応した逆量子化をさらに行うことができる。
また、上記の逆量子化回路において、前記スケール処理部の前記選択部は、前記量子化係数データの種類に応じて、前記スケール値生成部によって生成された前記量子化スケール値と、前記演算部により演算処理が施された量子化スケール値と、所定の定数値とのうちのいずれかの値を選択することが好ましい。
この構成によれば、量子化係数データの種類に応じて、スケール値生成部により生成された量子化スケール値と、演算部により演算処理が施された量子化スケール値と、所定の定数値とのうちのいずれかの値が選択される。量子化係数データの種類に応じて、選択する値を変えることができ、各種の符号化方式に対応した逆量子化を行うことができる。
また、上記の逆量子化回路において、前記シフト量生成部は、前記スケール値生成部の前記スケール変換部から出力された前記量子化スケール値を前記シフト量データに変換するシフト量変換部を含むことが好ましい。
この構成によれば、シフト量変換部によって、スケール値生成部のスケール変換部から出力された量子化スケール値がシフト量データに変換されるので、量子化スケール値からシフト量データを生成することができる。
また、上記の逆量子化回路において、前記シフト量生成部は、前記シフト量変換部によって変換された前記シフト量データと、所定の定数値とのいずれかを前記シフト量データとして選択し、選択した前記シフト量データを前記シフト処理部に供給する選択部をさらに含むことが好ましい。
この構成によれば、シフト量変換部により変換されたシフト量データと、所定の定数値とのいずれかがシフト量データとして選択され、選択されたシフト量データがシフト処理部に供給される。したがって、シフト量変換部により変換されたシフト量データと、所定の定数値とのいずれかを用いてビットシフト演算を行うことができ、単一の回路で各種の符号化方式に対応した逆量子化をさらに行うことができる。
また、上記の逆量子化回路において、前記シフト量生成部の選択部は、量子化係数データの種類に応じて、前記シフト量変換部によって変換された前記シフト量データと、所定の定数値とのいずれかを選択することが好ましい。
この構成によれば、量子化係数データの種類に応じて、シフト量変換部により変換されたシフト量データと、所定の定数値とのいずれかが選択されるので、量子化係数データの種類に応じて、ビットシフト演算に用いる値を変えることができ、各種の符号化方式に対応した逆量子化を行うことができる。
また、上記の逆量子化回路において、前記シフト量生成部は、前記シフト量変換部によって変換された前記シフト量データに対してシフト加算値を加算した値をシフト量データとして前記シフト処理部に供給する加算器をさらに含むことが好ましい。
この構成によれば、加算器によって、シフト量変換部により変換されたシフト量データに対してシフト加算値を加算した値がシフト量データとしてシフト処理部に供給される。したがって、シフト量データに対してシフト加算値を加算する演算処理を施すことができ、単一の回路で各種の符号化方式に対応した逆量子化をさらに行うことができる。
また、上記の逆量子化回路において、前記加算器は、量子化係数データの種類に応じて選択したシフト加算値を、前記シフト量変換部によって変換された前記シフト量データに加算することが好ましい。
この構成によれば、量子化係数データの種類に応じて選択したシフト加算値が、シフト量変換部により変換されたシフト量データに加算されるので、量子化係数データの種類に応じて、シフト量データに加算するシフト加算値を変えることができ、各種の符号化方式に対応した逆量子化を行うことができる。
また、上記の逆量子化回路において、前記シフト処理部は、前記加算処理部から出力されたデータに対して、前記シフト量生成部によって生成された前記シフト量データに応じたビット数だけビットシフトするビットシフト演算を行うことが好ましい。
この構成によれば、加算処理部から出力されたデータに対して、シフト量生成部により生成されたシフト量データに応じたビット数だけビットシフトするビットシフト演算が行われる。したがって、加算処理部から出力されたデータに対して、シフト量データに応じたビット数だけビットシフトするビットシフト演算を行うことができる。
また、上記の逆量子化回路において、前記乗算処理部は、前記量子化係数データに前記第1の乗算値を乗算した値、前記量子化係数データに前記第2の乗算値を乗算した値、及び前記量子化係数データに前記第1の乗算値と前記第2の乗算値とを乗算した値のうちのいずれかの値を選択し、選択した値を出力データとして前記加算処理部に供給することが好ましい。
この構成によれば、量子化係数データに第1の乗算値を乗算した値、量子化係数データに第2の乗算値を乗算した値、及び量子化係数データに第1の乗算値と第2の乗算値とを乗算した値のうちのいずれかの値が選択され、選択された値が出力データとして加算処理部に供給される。
したがって、量子化係数データに第1の乗算値を乗算した値、量子化係数データに第2の乗算値を乗算した値、及び量子化係数データに第1の乗算値と第2の乗算値とを乗算した値のうちのいずれかの値を加算処理部に供給することができ、単一の回路で各種の符号化方式に対応した逆量子化をさらに行うことができる。
また、上記の逆量子化回路において、前記乗算処理部における選択機能は、量子化係数データの種類に応じて、前記量子化係数データに前記第1の乗算値を乗算した値、前記量子化係数データに前記第2の乗算値を乗算した値、及び前記量子化係数データに前記第1の乗算値と前記第2の乗算値とを乗算した値のうちのいずれかの値を選択することが好ましい。
この構成によれば、量子化係数データの種類に応じて、量子化係数データに第1の乗算値を乗算した値、量子化係数データに記第2の乗算値を乗算した値、及び量子化係数データに第1の乗算値と第2の乗算値とを乗算した値のうちのいずれかの値が選択される。したがって、量子化係数データの種類に応じて、乗算処理部から出力される値を変えることができ、各種の符号化方式に対応した逆量子化を行うことができる。
また、上記の逆量子化回路において、前記加算処理部は、前記乗算処理部から供給されたデータの値、及び前記乗算処理部から供給されたデータに前記加算値生成部によって生成された前記加算値を加算することにより得られた値のうちのいずれかの値を選択し、選択した値を出力データとして前記シフト処理部に供給することが好ましい。
この構成によれば、乗算処理部から供給されたデータの値、及び乗算処理部から供給されたデータに加算値生成部により生成された加算値を加算することにより得られた値のうちのいずれかの値が選択され、選択された値が出力データとしてシフト処理部に供給される。
したがって、乗算処理部から供給されたデータの値、及び乗算処理部から供給されたデータに加算値生成部により生成された加算値を加算することにより得られた値のうちのいずれかの値をシフト処理部に供給することができ、単一の回路で各種の符号化方式に対応した逆量子化をさらに行うことができる。
また、上記の逆量子化回路において、前記シフト処理部は、前記加算処理部から供給されたデータの値、及び前記ビットシフト演算により得られた値のうちのいずれかの値を選択し、選択した値を出力データとして出力することが好ましい。
この構成によれば、シフト処理部によって、加算処理部から供給されたデータの値、及びビットシフト演算により得られた値のうちのいずれかの値が選択され、選択された値が出力データとして出力される。
したがって、加算処理部から供給されたデータの値、及びビットシフト演算により得られた値のうちのいずれかの値をシフト処理部から出力することができ、単一の回路で各種の符号化方式に対応した逆量子化をさらに行うことができる。
また、上記の逆量子化回路において、前記シフト量生成部によって生成された前記シフト量データに応じた値を前記加算処理部からの出力データに加算することで丸め処理を行い、前記丸め処理を行った処理済データと前記丸め処理を行わない非処理データとを選択的に切替えて前記シフト処理部に出力する丸め処理部をさらに備えることが好ましい。
この構成によれば、丸め処理部によって、シフト量生成部により生成されたシフト量データに応じた値を加算処理部からの出力データに加算することで丸め処理が行われ、丸め処理を行った処理済データと丸め処理を行わない非処理データとが選択的に切替えてシフト処理部に出力される。したがって、丸め処理を行う符号化方式に対応した逆量子化を行うことができ、単一の回路で各種の符号化方式に対応した逆量子化をさらに行うことができる。
また、上記の逆量子化回路において、前記丸め処理部は、前記シフト処理部におけるビットシフト演算が右方向へのシフトの場合のみ、前記加算処理部からの出力データに対して、前記シフト量生成部によって生成された前記シフト量データに応じた値を加算することで前記丸め処理を行うことが好ましい。
この構成によれば、シフト処理部におけるビットシフト演算が右方向へのシフトの場合のみ、シフト量生成部により生成されたシフト量データに応じた値を加算処理部からの出力データに加算することで丸め処理が行われる。したがって、ビットシフト演算が右方向へのシフトの場合のみ丸め処理が行われるので、ビットを右方向へシフトする符号化方式に対応した逆量子化を行うことができ、単一の回路で各種の符号化方式に対応した逆量子化をさらに行うことができる。
また、上記の逆量子化回路において、前記シフト処理部から出力されたデータに対して、離散コサイン変換ミスマッチ制御処理を行う演算処理機能と、前記シフト処理部から出力されたデータに対して、クリッピングする範囲が設定可能な飽和処理を行う演算処理機能とを含み、前記離散コサイン変換ミスマッチ制御処理及び前記飽和処理において、それぞれ処理済データと非処理データとを選択的に切替えて出力する後段処理部をさらに備えることが好ましい。
この構成によれば、シフト処理部から出力されたデータに対して、離散コサイン変換ミスマッチ制御処理を行う演算処理機能と、シフト処理部から出力されたデータに対して、クリッピングする範囲が設定可能な飽和処理を行う演算処理機能とにおいて、それぞれ処理済データと非処理データとが選択的に切替えて出力される。
したがって、離散コサイン変換ミスマッチ制御処理が行われた処理済データと、離散コサイン変換ミスマッチ制御処理が行われていない非処理データとが選択的に出力され、飽和処理が行われた処理済データと、飽和処理が行われていない非処理データとが選択的に出力されるので、離散コサイン変換ミスマッチ制御処理を行う符号化方式及び飽和処理を行う符号化方式に対応した逆量子化を行うことができ、単一の回路で各種の符号化方式に対応した逆量子化をさらに行うことができる。
また、上記の逆量子化回路において、前記後段処理部は、前記離散コサイン変換ミスマッチ制御処理を行う条件が設定できることが好ましい。この構成によれば、符号化方式に応じて、離散コサイン変換ミスマッチ制御処理を行う条件を設定することができる。
また、上記の逆量子化回路において、前記後段処理部は、前記量子化係数データの種類に応じて前記離散コサイン変換ミスマッチ制御処理を行うか否かを制御できることが好ましい。この構成によれば、量子化係数データの種類に応じて前記離散コサイン変換ミスマッチ制御処理を行うか否かを制御することができる。
また、上記の逆量子化回路において、前記後段処理部は、前記離散コサイン変換ミスマッチ制御処理の演算内容を制御できることが好ましい。この構成によれば、離散コサイン変換ミスマッチ制御処理の演算内容を制御することができる。
また、上記の逆量子化回路において、前記後段処理部は、前記飽和処理の前段及び後段のいずれかにおいて前記離散コサイン変換ミスマッチ制御処理を行うことが好ましい。この構成によれば、飽和処理の前段及び後段のいずれかにおいて離散コサイン変換ミスマッチ制御処理が行われるので、飽和処理の前に離散コサイン変換ミスマッチ制御処理を行う符号化方式、及び飽和処理の後に離散コサイン変換ミスマッチ制御処理を行う符号化方式に対応した逆量子化を行うことができる。
また、上記の逆量子化回路において、前記量子化係数データを整数倍する演算処理機能と、デッドゾーンに対応した加算値を前記量子化係数データに加算する演算処理機能とを含み、前記量子化係数データを整数倍する演算処理及び前記量子化係数データに前記加算値を加算する演算処理において、それぞれ演算処理済データと非演算処理データとを選択的に切替えて出力する前段処理部をさらに備えることが好ましい。
この構成によれば、量子化係数データを整数倍する演算処理機能と、デッドゾーンに対応した加算値を量子化係数データに加算する演算処理機能とにおいて、それぞれ演算処理済データと非演算処理データとが選択的に切替えて出力される。
したがって、量子化係数データを整数倍した演算処理済データと、量子化係数データを整数倍していない非演算処理データとが選択的に出力され、デッドゾーンに対応した加算値を量子化係数データに加算した演算処理済データと、デッドゾーンに対応した加算値を量子化係数データに加算していない非演算処理データとが選択的に出力されるので、量子化係数データを整数倍する符号化方式及びデッドゾーンに対応した加算値を量子化係数データに加算する符号化方式に対応した逆量子化を行うことができ、単一の回路で各種の符号化方式に対応した逆量子化をさらに行うことができる。
本発明の他の局面に係る逆量子化方法は、画像データを符号化方式に基づいて変換することで求めた周波数ごとの係数値を量子化した量子化係数データに対し、演算処理を施すことで逆量子化を行い、前記係数値を復元する逆量子化方法であって、前記量子化係数データに対する前記演算処理を施すための第1の乗算値を生成する第1の乗算値生成ステップと、前記量子化係数データに対する前記演算処理を施すための第2の乗算値を生成する第2の乗算値生成ステップと、前記量子化係数データに対する前記演算処理を施すためのビットシフト量を示すシフト量データを生成するシフト量生成ステップと、前記第1の乗算値生成ステップにおいて生成された前記第1の乗算値及び前記第2の乗算値生成ステップにおいて生成された前記第2の乗算値を前記量子化係数データに乗算する乗算処理ステップと、前記シフト量生成ステップにおいて生成された前記シフト量データに応じて、前記乗算処理ステップにおいて出力されたデータに対してビットシフト演算を行うシフト処理ステップとを含み、前記乗算処理ステップ及び前記シフト処理ステップのうちの少なくとも1つは、前記演算処理を行うか否かを前記符号化方式に応じて決定し、及び/又は、前記第1の乗算値生成ステップ、前記第2の乗算値生成ステップ及び前記シフト量生成ステップのうちの少なくとも1つは、前記生成する値又は値の生成方法を前記符号化方式に応じて決定する。
この構成によれば、第1の乗算値生成ステップにおいて、量子化係数データに対する演算処理を施すための第1の乗算値が生成され、第2の乗算値生成ステップにおいて、量子化係数データに対する演算処理を施すための第2の乗算値が生成され、シフト量生成ステップにおいて、量子化係数データに対する演算処理を施すためのビットシフト量を示すシフト量データが生成される。そして、乗算処理ステップにおいて、第1の乗算値及び第2の乗算値が量子化係数データに乗算され、シフト処理ステップにおいて、シフト量データに応じて、乗算処理部から出力されたデータに対してビットシフト演算が行われる。乗算処理ステップ及びシフト処理ステップのうちの少なくとも1つにおいて、演算処理を行うか否かが符号化方式に応じて決定される。また、第1の乗算値生成ステップ、第2の乗算値生成ステップ及びシフト量生成ステップのうちの少なくとも1つにおいて、生成する値又は値の生成方法が符号化方式に応じて決定される。
したがって、演算処理を行うか否か、及び生成する値又は値の生成方法が符号化方式に応じて決定されるので、単一の回路で各種の符号化方式に対応した逆量子化を行うことができ、回路規模の削減を図れるとともに、新たな符号化方式が提案された場合にも迅速に対応することができる。また、復号化処理を行うためのLSIなどの再設計が不要となるなど、汎用性の高い逆量子化方法を提供することができる。
本発明の他の局面に係る画像再生装置は、量子化係数データを取得する量子化係数データ取得部と、前記量子化係数データ取得部によって取得された量子化係数データを逆量子化することで係数値を復元する上記の逆量子化回路と、前記逆量子化回路によって復元された係数値を画像データに変換する変換部と、前記変換部によって変換された画像データを出力する出力部とを備える。
この構成によれば、量子化係数データ取得部によって、量子化係数データが取得され、逆量子化回路によって、量子化係数データ取得部により取得された量子化係数データを逆量子化することで係数値が復元される。そして、変換部によって、逆量子化回路により復元された係数値が画像データに変換され、出力部によって、変換部により変換された画像データが出力される。
したがって、例えば、パーソナルコンピュータ、セットトップボックス、携帯情報端末装置及び携帯電話機などの画像再生装置に上記の逆量子化回路を適用することができる。