[go: up one dir, main page]

JP5546329B2 - データ変換装置 - Google Patents

データ変換装置 Download PDF

Info

Publication number
JP5546329B2
JP5546329B2 JP2010093308A JP2010093308A JP5546329B2 JP 5546329 B2 JP5546329 B2 JP 5546329B2 JP 2010093308 A JP2010093308 A JP 2010093308A JP 2010093308 A JP2010093308 A JP 2010093308A JP 5546329 B2 JP5546329 B2 JP 5546329B2
Authority
JP
Japan
Prior art keywords
data
block
coefficient
parity
sub
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2010093308A
Other languages
English (en)
Other versions
JP2011223518A (ja
Inventor
忠義 中山
玲子 藤野
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Canon Inc
Original Assignee
Canon Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Canon Inc filed Critical Canon Inc
Priority to JP2010093308A priority Critical patent/JP5546329B2/ja
Publication of JP2011223518A publication Critical patent/JP2011223518A/ja
Application granted granted Critical
Publication of JP5546329B2 publication Critical patent/JP5546329B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Compression Of Band Width Or Redundancy In Fax (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Description

本発明は、画像データの圧縮符号化技術に関するものであり、特に、実空間ブロック整数データから周波数空間ブロック整数データへの可逆な変換における直流成分係数への変換技術に関するものである。
静止画像の国際標準符号化方式として、ISOとITU−Tにより勧告されたJEPGがある。JEPGでは、画像データを8×8画素のブロック単位に分割し、該ブロックに8×8サイズの離散コサイン変換を適用して、周波数空間上の係数データに変換する。そして、該係数データを量子化し、該量子化したデータをエントロピー符号化して画像データの非可逆な圧縮を行なう。
ここで、上記の量子化における量子化ステップの大小の制御によって圧縮率を調整することができる。量子化によって失われた情報は復元することは出来ないが、視覚的に目立ちにくい部分から情報を削ることによって、それ以前の符号化よりも大幅に画像データを圧縮することができる。
JPEG符号化方式において、量子化ステップを“1”に設定して量子化を行なうとする。この場合、DCTという正規直交変換の性質から、ブロック内の実空間上のデータの二乗和と、周波数空間上の係数データの二乗和が等しくなり、変換によって信号パワーが失われることなく保存される。しかし、情報的には欠損を生じるため、係数データを逆変換しても元のデータを完全に復元することが出来ない。これは、量子化ステップを“1”に設定して量子化したとしても、可逆符号化を行なうことが出来ないことを意味する。よって、JPEGでは、DCTとは全く異なる隣接画素間の予測差分に対するエントロピー符号化という、別の符号化プロセスを定めることで、この可逆符号化を実現している。
JPEGの次に定められた静止画像の国際標準符号化方式であるJPEG2000では非可逆圧縮用のウェーブレット変換と可逆圧縮用のウェーブレット変換の2種類を用意して、非可逆圧縮と可逆圧縮に対応させた。変換より後の符号化プロセスは非可逆圧縮と可逆圧縮で共通化されたが、変換までは共通化されていない。
さらにその後、国際標準符号化方式として定められたJPEG‐XRでは、後に示す非特許文献1に記載されているラダー演算(リフティング演算)を用いることにより、非可逆圧縮と可逆圧縮に共通する整数データから整数係数への可逆な変換を定めている。これによって、符号化プロセス全てを非可逆圧縮と可逆圧縮で共通化することが可能になった。
JPEG‐XRでは、4×4画素サイズのブロック、16×16画素サイズのマクロブロック、それより大きなタイルを定義しており、タイル単位で符号化を行なう。また、実空間から周波数空間への変換は次のように階層的に行なっている。
図1(A)に示す4×4画素サイズのブロックを、それぞれが図1(B)乃至(E)に示す4画素で構成されるサブブロックに区分する。そしてそれぞれのサブブロックに対して整数係数への可逆なアダマール変換(以下、整数可逆アダマール変換と称す)を適用して、4つの係数に変換する。
更に、4つのサブブロックそれぞれの同一レベルの変換係数を集めて、4組の変換係数群を形成し、それに対し、さらに変換を適用する。すなわち、サブブロックの直流成分係数(DC係数)を4つ集めた組に対しては、再度、整数可逆アダマール変換が適用され、ブロック単位のDC係数(ブロックDC係数)と3つの非直流係数(AC係数)が生成される。その他の3つの組に対しては、各々4つのデータを2×2データと見なし、それを2軸方向から回転変換する変換を適用してAC係数に変換される。この段階で得られるAC係数はHP係数に分類される。結局、1つのブロックデータ(4×4画素データ)は、1個のブロックDC係数と、15個のHP係数に変換されることになる。
該ブロックDC係数は、マクロブロックを構成する16個のブロックから集められ4×4のブロックDC係数データに対して、上記と同様のブロック変換が再び適用される。該変換によって得られるAC係数はLP係数に分類され、この変換で得られる直流成分係数はマクロブロックのDC成分を表し、これが最終的なDC係数に分類される。本明細書では該DC係数を、前述のブロックDC係数と混同しないようにマクロブロックDC係数と呼んで区別する。
JPEG‐XRの符号化モードには、Spatial Modeと、Frequency Modeとがある。Frequency Modeでは、タイル内の全てのマクロブロックDC係数を符号化処理した後に、タイル内の全てのLP係数、続いてHP係数の順に符号化処理して符号化ストリームを形成する。
リフティング演算を用いて演算する整数可逆変換では、入力データを相互に逐次的に更新して変換してくため、ブロックDC係数を生成する際に、AC係数も同時に生成するのが一般的であり、その方が効率よく変換できる。しかし、ブロックDC係数のみを残し、AC係数または途中の演算結果を一切保存せずに消し去ったりすると、変換処理の効率が著しく低下する。JPEG‐XRで採用されている各種リフティング演算は、特許文献1に詳細に記載されているが、やはり、DC係数とAC係数を同時に生成することがその前提になっている。
よって、1つのマクロブロックDC係数を生成した時点で、通常は15個のLP係数と240個(=15係数×16ブロック)のHP係数が同時に生成される。これらLP係数やHP係数を、廃棄すると極端に変換処理の効率が悪くなるため、メモリやバッファ等に一時的に保存しておく必要がある。
ここで言う「バッファ」は圧縮符号化等の機能を実装したLSI(大規模集積回路)の内部に持つ小容量の記憶部、「メモリ」は比較的容量の大きな汎用メモリをさす。該汎用メモリは前記LSIに接続し大容量記憶部として使われる。
前記LP係数、HP係数の保存先は、機器によって異なる。どちらの係数もメモリに保存する場合もあれば、LP係数をバッファへHP係数をメモリへ保存する場合もある。いずれにしても、データ量の多い係数ほど容量の大きなメモリへ保存する可能性が高い。
前記Frequency Modeでは、タイル内の複数のマクロブロックDC係数を続けて符号化し、それに対応する大量のHP係数やLP係数が生成されるため、これらは、基本的に「メモリ」へ保存される。また、メモリへ保存した係数データは、実際に符号化処理するタイミングで読み出して、前記LSIへ供給する必要がある。このようなメモリへの保存や読み出しは、メモリアクセス帯域が増加することを意味する。そこでメモリアクセス回数の概算を以下に示す。
今、仮に、符号化処理すべき画像データがメモリに保存されていたとすると、周波数空間上の係数データへの変換処理で画像データを1回読み出す必要がある。
該変換処理で生成したLP係数とHP係数の両方をメモリに保存する場合、256個の画素データ当たり255個の係数を保存することになるため、平均して255/256回≒1回の書き込みを行なう必要がある。保存した係数データは後に符号化処理するために必ず読み出すわけであるから、該係数データの読み出し回数は前記書き込み回数と同等である。結局、元の画像データからカウントすると計3回の読み出し又は書き込みを行なう必要がある。
Frequency Modeでは無くSpatial Modeの場合、マクロブロック単位でDC係数、LP係数とHP係数の順に符号化する。この場合には、1マクロブロック分の係数を保持するだけでよいため、LSI内部のバッファで係数データを保持することが可能である。よって、前記メモリからの画像データの読み出しは1回だけで済む。比較するとFrequency Modeは、Spatial Modeの3倍のメモリアクセス量になる。
前述のように、LP係数・HP係数を廃棄すると、変換処理の効率が極端に悪くなるため、生成したLP係数・HP係数は一時保存しておく必要があるが、メモリに保存するとメモリアクセス量が増大してしまう。もし、ブロックDC係数のみの生成を簡易に実現できれば、同時にHP係数を生成する必要が無くなり、その結果、HP係数を廃棄したり、一時保存することも必要無くなる。マクロブロックDC係数を生成する際のLP係数の生成に関しても同様のことが言える。
特開2006−197572号公報
F.Bruekers and A.Enden,"New Networks for Perfect Inversion and Perfect Reconstruction"IEEE JSAC,vol.10,no.1.pp.130−137,Jan 1992
上記の通り、これまでの整数可逆ブロック変換を実現する従来の演算装置では、演算を効率よく行なうために、DC係数とAC係数を合せて生成する必要があった。そのAC係数を直ちに符号化しないモードでは、該AC係数をメモリ等に一時保存する必要があり、これがメモリアクセス回数を増大させるという新たな問題を引き起こしていた。
本発明は、2次元配列の係数ブロックから、簡単な構成で、その係数ブロックの可逆変換DC係数データを算出する技術を提供しようとするものである。
この課題を解決するため、例えば本発明のデータ変換装置は以下の構成を備える。すなわち、
n(nは2以上の整数)個の整数データで構成されるブロックから、当該ブロックに対する可逆変換可能な整数変換係数のうちDC係数を算出するデータ変換装置であって、
前記ブロックを予め設定された4個のデータで構成されるサブブロックに区分し、サブブロック毎に、それぞれのサブブロックを構成する4個のデータの総和値が偶数か奇数かを表わす0又は1のいずれかの値を持つパリティを生成するパリティ生成手段と、
前記ブロックを構成する全てのデータが示す値の総和値を算出する総和演算手段と、
該総和演算手段で算出した総和値と、前記パリティ生成部で算出された各サブブロックのパリティの値とを加算する加算手段と、
該加算手段で得られた値から、前記ブロックに対する可逆な整数のDC係数データを演算するDC係数演算手段とを備える。
本発明によれば、格段に小さな回路規模で、整数可逆変換のDC係数を生成することが可能になる。
該演算装置をDC係数の専用生成回路として、符号化装置内に設けることにより、LP係数・HP係数を生成すること無く、DC係数を簡易に生成でき、LP係数・HP係数をメモリへ保存する必要が無くなる。よって、LP係数・HP係数のメモリ書き込みが不要になった分だけ、メモリアクセス回数を削減することができる。
ブロックと4つのサブブロックの関係を示す図。 本発明の適用に好適な符号化装置の構成を表す図。 パリティ生成部の構成を表す図。 本発明の第1の実施形態であるDC係数演算装置の構成を表す図。 本発明の第2の実施形態であるDC係数演算装置の構成を表す図。 本発明の第3の実施形態であるDC係数演算装置の構成の例を表す図。 本発明の第4の実施形態であるDC係数演算装置の構成を表す図。
以下、添付図面に従って本発明に係る実施形態を詳細に説明する。なお、本実施形態において、本発明のデータ変換装置をJPEG XRに適用した例を説明する。
符号化対象のマクロブロックDC係数データを生成するには、それ以前にこのマクロブロックを構成する16個のブロックにおけるブロックDC係数データを生成する必要がある。Frequency Modeでは、該ブロックDC係数データを生成する時に、同時にHP係数を生成すると、その係数データは膨大な量になるため、メモリ等に一時保存するか、あるいは廃棄する必要がある。前述したように、これは大変効率の悪い処理である。
そこで、本発明を前提にした符号化処理手順を以下の1〜9に示し、該処理手順を実現可能な符号化装置の構成を図2に示す。図2に示すように、この符号化装置は、第1の変換部301、セレクタ302、第2の変換部304、第3の変換部303、メモリ制御部305、画像記憶部306、セレクタ307、階層制御部308、係数符号化部310を有する。この符号化装置において、各処理手順を以下に示す。また、各処理手順がどの構成要素で処理されるのかを右矢印(→)の右側に記す。
1.ブロックDC係数データを生成(→第1の変換部301)
2.生成したブロックDC係数データを一時保存(→バッファ309)
3.4×4個のブロックDC係数データからマクロブロックDC係数データを生成(→第3の変換部303)
4.マクロブロックDC係数データを符号化(→係数符号化部310)
(これら1〜4をタイル内の全データに対して行なう)
5.4×4個のブロックDC係数データをブロック変換してLP係数を生成(→第2の変換部304)
6.LP係数データを符号化(→係数符号化部310)
(5と6をタイル内の全ブロックDC係数に対して行なう)
7.画像データにブロック変換を行ない、HP係数データを生成(→第2の変換部304)
8.HP係数データを符号化(→係数符号化部310)
(7と8をタイル内の全画像データに対して行なう)
9.次に符号化すべきタイル画像データに上記手順1〜8を適用
通常、ブロックDC係数データとHP係数データは、画像データのブロック変換(周波数変換)によって同時に生成する。また、マクロブロックDC係数データとLP係数データも、前記ブロックDC係数データのブロック変換によって同時に生成する。それに対し、上記処理フローでは、ブロックDC係数データ、或いは、マクロブロックDC係数データのみを、本実施形態基づく独自の方法、すなわち、サブブロック単位で計算するパリティを利用した演算によって生成する。
以下では、第1の実施形態で、ブロックに対する可逆変換可能な整数変換係数のうちDC係数データのみの生成方法を示し、第2以降の実施形態で、マクロブロックDC係数データの生成方法を示す。
JPEG−XR勧告書に記載されたブロック変換のDC係数データは、既に説明したように、図1(A)に示す4×4個の整数データを、図1(B)乃至(E)に示す4つのサブブロックに区分して、以下のように変換処理することによって生成できる。
まず、4つのサブブロックそれぞれに対し1段目の整数可逆アダマール変換を行なうことで、4つのサブブロックDC係数データを得る。そして、その4つのサブブロックDC係数データに対して、2段目の整数可逆アダマール変換を行なう。この2段目の整数可逆アダマール変換のDC係数データが、前記ブロックDC係数である。
1つのサブブロック(図1(B)乃至(E)のいずれか)に着目したとき、そのサブブロック内のデータの総和値が偶数であるなら、その総和値を2で割った値と、そのサブブロックのサブブロックDC係数データが示す値は等しい。つまり、着目サブブロックに対する、1段目の整数可逆アダマール変換では丸め誤差が発生しない。
一方、着目サブブロックにおけるデータの総和値が奇数の場合、その総和値を2で割った値には、0.5の小数データが付く。この小数点を切り上げた値が、JPEG−XRと互換性のある整数のサブブロックDC係数データの値になる。この場合、+0.5の丸め誤差が発生する。総和値が奇数のサブブロック毎に+0.5の丸め誤差が発生し、それが2段目のアダマール変換へ入力される。
一方、JPEGやMPEGにおけるDCT(離散コサイン変換)のような線形直交変換であれば、ブロック(4×4サイズ)内の全データの総和値を求め、これを1/4倍するだけで線形変換DC係数を演算することができる。該全データの総和値はデータの入力順序を気にせず、入力されたデータを順に加算するだけで演算でき、単純な構成で線形変換DC係数を生成できる。
[第1の実施形態:行方向の4データの並列入力する場合]
そこで、本第1の実施形態では、ブロック内全データの総和値をベースに、整数可逆変換のブロックDC係数を演算可能な演算装置を開示する。該演算装置によれば、単純な構成で前記ブロックDC係数を生成可能になる。以下に説明するブロックDC係数演算装置は、図2における第1の変換部301、第3の変換部303に適用されるものでもある。
まず、本第1の実施形態の大きな特徴である、サブブロック単位のパリティの計算方法とパリティ生成部の構成を先に示し、その後に、該パリティ生成部を用いたブロックDC係数演算装置の構成を示す。
先に示した2段目のアダマール変換へ入力される4つのデータの和は、線形変換におけるブロック内データの総和値より、サブブロック毎に発生する丸め誤差の分だけ大きい。よって、ブロック内データの総和値へ、各サブブロックの整数可逆アダマール変換の丸め誤差を正確に加算できれば、2段目のアダマール変換へ入力される4つのデータの和を計算することができる。
ここで、前述したように、ブロック内データの総和値はデータの入力順序に依存せず、該データを入力された順に加算するだけでよく、単純な構成で演算できる。
それに対し、サブブロック単位で丸め誤差が発生するかどうかは、データの入力順序に依存した演算を行なう必要がある。但し、丸め誤差(+0.5または0)を表す信号は1ビットで、サブブロック内データの総和値の奇偶(性)に一致する。
そこで、本実施形態では、4つのサブブロック毎に、そのデータの総和値が奇数/偶数のどちらになるかをパリティ(ビット)Pi(i=0,1,2,3)として計算し生成する。以下、パリティPiの演算内容を説明するが、図1(A)の4×4個のブロックデータをラスタ走査順に、Data[i](i=0,1,2,3,,,13,14,15)と表わす。
図1(B)のサブブロックのパリティをP0、図1(C)のサブブロックのパリティをP1、図1(D)のサブブロックのパリティをP2、図1(E)のサブブロックのパリティをP3とすると、それらは次式(1)により演算できる。
P0 = (Data[0] & 1) ^ (Data[3] & 1) ^ (Data[12] & 1) ^ (Data[15] & 1)
P1 = (Data[1] & 1) ^ (Data[2] & 1) ^ (Data[13] & 1) ^ (Data[14] & 1)
P2 = (Data[4] & 1) ^ (Data[7] & 1) ^ (Data[8] & 1) ^ (Data[11] & 1)
P3 = (Data[5] & 1) ^ (Data[6] & 1) ^ (Data[9] & 1) ^ (Data[10] & 1) …(1)
ここで、上記(1)式における、“&”は同じ位のビット間の論理積演算子を示し、“^”はビット間の排他的論理和演算子を示す。従って、“Data[i] & 1”によって、Data[i]の最下位1ビットが抽出される。上記の演算の結果、図1(B)のサブブロック内の4つのデータの総和値が偶数ならP0=0となり、その総和値が奇数ならP0=1となる。他のサブブロックも同様である。
また、上記(1)式の替わりに下記(2)式のように演算することもできる。この演算はサブブロックの4つのデータが並列に入力され、該4つのデータの加算を容易に行える場合に有効である。
P0=(Data[0] + Data[3] + Data[12] + Data[15]) & 1
P1=(Data[1] + Data[2] + Data[13] + Data[14]) & 1
P2=(Data[4] + Data[7] + Data[8] + Data[11]) & 1
P3=(Data[5] + Data[6] + Data[9] + Data[10]) & 1 …(2)
ここで、演算子“+”は文字とおり数値の加算を表わす。
式(1)に示したパリティ計算式に基づいてパリティP0,P1,P2,P3を生成するパリティ生成部400の構成を図3に示す。ここでは、ブロックデータがラスタ走査順に4並列で入力されるものとしている。また、図3のパリティ生成部400には、並列入力される4つのデータそれぞれの最下位ビット(LSB)のみが入力されるものとする。
図3の構成において、端子群401からは、上記の並列に入力される4つのデータの最下位ビットが入力されるが、最初の4並列入力データ{Data[0], Data[1], Data[2], Data[3]}から、
(Data[0] & 1)^(Data[3] & 1)
(Data[1] & 1)^(Data[2] & 1)
が算出される。
2番目の4並列入力データ{Data[4], Data[5], Data[6], Data[7]}から、
(Data[4] & 1)^(Data[7] & 1)
(Data[5] & 1)^(Data[6] & 1)
が算出される。
これらの演算は、排他的論理和素子411、412にて計算され、排他的論理和素子413、414を通過して、参照符号420乃至423で示される1ビットのレジスタR0,R1,R2,R3に格納される。これらレジスタR0、R1、R2、R3に格納されたビットデータは、パリティP0,P1,P2,P3を生成するために利用される。
次に3番目の4並列入力データ{Data[8], Data[9], Data[10], Data[11]}から、
(Data[8] & 1)^(Data[11] & 1)
(Data[9] & 1)^(Data[10] & 1)
が算出される。そして、これらは各々、セレクタ431,432で選択されたレジスタR2とR3に保持されている1ビットデータと排他的論理和素子413、414にて排他的論理和演算され、パリティP2,P3として端子441,442から出力される。
最後の4番目の4並列入力データ{Data[12], Data[13], Data[14], Data[15]}から、
(Data[12] & 1)^(Data[15] & 1)
(Data[13] & 1)^(Data[14] & 1)
が算出される。そして、これらは各々、セレクタ431,432で選択されるレジスタR0とR1に保持されている1ビットデータと排他的論理和素子413、414にて排他的論理和演算され、パリティP0,P1として端子441,442から出力される。
1ブロックを4サイクルで処理すると仮定すると、排他的論理和素子413、414から端子441,442に出力するパリティが有効なのは、後半2サイクルのみとなり、前半2サイクルでは端子441,442からは意味の無いデータが出力される。そのため、不図示の制御信号とマスク回路により、前半2サイクルの間は該2つの信号を共に“0”にマスクしておく。
以上に説明したパリティ生成部400を用いて、整数可逆変換のブロックDC係数を演算する装置の構成、すなわち、本第1実施形態の構成を図4に示す。パリティ生成部400以外の主な構成要素は、入力データの総和値を計算する総和計算部510、パリティを値として加算するパリティ加算器520、前記総和計算部の出力を2ビット右へシフトする2ビットシフタ530である。
ブロックDC係数を得る従来の演算では、1段目と2段目のアダマール変換器に加え、ラスタ走査順に入力データされるデータをサブブロック単位で処理するための、データ順序変換バッファが必要であった。本実施形態のDC係数演算装置において、前記データ順序変換バッファは不要となり、端子501乃至504から並列に入力される4つのデータの総和値を演算する第1の加算器511と、該加算器511から得られる加算結果を累積加算する第2の加算器512、並びに、レジスタ513のみが必要となる。これら第1の加算器511、及び、第2の加算器512によって、ブロック内のデータの総和値を求めることができる。ここで、レジスタ513は、1つのブロックのブロックDC係数の演算を開始するごとに、ゼロクリアされるものとする。
第1の加算器511の入力データが、サブブロックを構成する4つのデータであれば、該4つのデータを加算して2で割った値が、該サブブロックのDC係数となる。これは、前記第1の加算器511から第2の加算器512へ出力するデータの最下位ビットが、小数点以下第1位のビットを意味する。一方、前記(1)または(2)式に基づいて計算したパリティP0は0.5の丸め誤差を表すため、値として見た時の重みは、前記固定小数点データの小数点以下1ビットと同じである。
よって、パリティPi(i=0,1,2,3)は、第2の加算器512への入力データの最下位ビットと同じ重みであり、パリティ生成部400から出力される2つのパリティを、パリティ加算器520で加算する場合、累積加算データの最下位ビットへ加算する。これによって、前記1段目の整数可逆アダマール変換で重畳する丸め誤差をすべて加算したサブブロックDC係数の総和値を、第2の加算器512の出力として得られる。
2段目の4次アダマール変換のDC係数も同様に、4つのデータの総和値を2で割った値であるため、入力の小数点位置に対し、第2の加算器512の出力における小数点位置を上位ビット方向へ1ビットずらす。元々、第2の加算器の入力は下位1ビットを小数とする固定小数点のデータであるため、最終的に、第2の加算器512の出力は下位2ビットが小数データになる。
2段目の整数可逆アダマール変換は、JPEG−XR勧告書の解釈によると、小数点以下を切り捨てる丸め処理に対応している。よって、2ビットシフタ530にて、レジスタ513が保持する値の下位2ビットを右シフトして、単純に切り捨て、その結果を、ブロックDC係数として出力する。
なお、図4に示す演算はソフトウェアとハードウェアのどちらでも実現できるが、ハードウェアで実現する場合、シフタ530は、レジスタ513の出力バスの2ビット分の信号線をずらして出力端子505と接続すれば良い。
また、ソフトウェア処理において、ブロックデータが配列で引き渡される場合、サブブロックデータの加算を容易に行なうことができるため、式(2)に示した演算でパリティを計算すると効率的である。
以下は、式(2)に示したパリティ計算方法を用いて、整数可逆変換のブロックDC係数を演算する処理手順を示している。
sum0 = Data[0] + Data[3] + Data[12] + Data[15];
sum1 = Data[1] + Data[2] + Data[13] + Data[14];
sum2 = Data[4] + Data[7] + Data[8] + Data[11];
sum3 = Data[5] + Data[6] + Data[9] + Data[10];
P0 = sum0 & 1;
P1 = sum1 & 1;
P2 = sum2 & 1;
P3 = sum3 & 1;
sum = sum0 + sum1 + sum2 + sum3 + P0 + P1 + P2 + P3;
DC = sum >> 2;
(ここで、“x >> y”は、xを下位方向にyビットシフトすることを表わす)
上記の1行目から4行目で、サブブロック毎にデータを加算し、5行目から8行目で、前記サブブロック毎のデータ加算結果から最下位の1ビットをパリティとして抽出し、9行目で、前記加算結果とパリティをすべて合算する。最後の10行目で、合算結果を2ビット右シフトして整数可逆変換のブロックDC係数を生成する。
[第2の実施形態:1つずつ入力されるデータを加算する場合]
上記第1の実施形態における図4の構成は、図2の第1の変換部301、第3の変換部303に適用可能であるが、ブロックを形成する4×4データの1行分4つのデータを並列入力して処理することを前提にするものであった。ところが、第3の変換部303(マクロブロックDC係数を生成する整数可逆変換部)について着目すると、第3の変換部303は、図4のブロックDC係数演算部から出力されるブロックDC係数を入力として変換するため、該入力DC係数を1つずつ入力することも可能である。より詳細には、図4の変換部は4×4データを4つ単位で並列処理し、4サイクル毎に1つのブロックDC係数が生成するため、該DC係数を断続的に1つずつ前記第3の変換部303に供給することができる。
このような入力形式だと、マクロブロックDC係数を生成するために必要な入力データの総和値を計算するための加算器は1つで済む。この場合も、各サブブロックのパリティは、入力データの最下位1ビットのみを抽出してサブブロック単位で排他的論理和を計算する式(1)に示した演算を行なって生成する。
そこで、第2の実施形態では、特に、図2における第3の変換部303として使用可能なマクロブロックDC係数演算装置の構成を図5に示す。同図の通り、マクロブロックDC係数演算装置は、入力データの最下位ビットからパリティを計算するパリティ生成部702、入力データにパリティを加算するパリティ加算器721、入力データの総和値を計算する総和計算部730、シフタ530で構成される。図3、図4と共通の機能を有するものは同一の部番を付してある。
上記パリティ生成部702、パリティ加算器721、総和計算部730のすべてが、前記第1実施形態(図3)に比べて簡易な構成になっていることが分かる。ここで、パリティ生成部702におけるパリティ演算は以下のように行なわれる。なお、入力端子701からは、4×4個のサブブロックDC係数が、ラスタースキャン順に入力されるものとする。
まず、各レジスタR0,R1,R2,R3を“0”に初期化する。また、このタイミングでレジスタ732もゼロクリアする。
その後、1つのサブブロックDC係数が入力端子701から入力されるたびに、セレクタ715は、R0,R1,R1,R0,R2,R3,R3,R2,R2,R3,R3,R2,R0,R1,R1,R0の順にレジスタ出力を選択し、入力したサブブロックDC係数の最下位ビットとの間で、排他的論理和を演算し、選択したレジスタへ格納し直す。
上記のセレクタ715の動作により、レジスタR0は、0,3,12,15番目のデータ入力時に選択されるため、式(1)式と同等の演算が行なわれて該演算結果が、パリティP0としてパリティ加算器721へ出力される。
同様に、レジスタR1は1,2,13,14番目のデータ入力時に選択され、レジスタR2は4,7,8,11番目のデータ入力時に選択され、レジスタR3は、5,6,9,10番目のデータ入力時に選択される。このため、式(1)に示したパリティ計算式と同等の演算が行なわれる。
パリティ生成部702の出力が有効なのは、10,11,14,15番目のデータ入力の時のみで、それ以外は不図示の制御信号とマスク回路により、パリティ加算器721への出力を“0”にマスクし、不要なデータを加算しないようにする。
生成された有効なパリティP0,P1,P2,P3はパリティ加算器721にて入力データに加算され、該加算結果は総和計算部730のレジスタ732に累積加算されていく。そして、最終的に、ブロック内の全データと前記パリティを加算した結果がレジスタ732に格納されると、その値がシフタ530に出力される。
後は、第1実施形態と同様、該総和計算部の出力をシフタ530にて2ビット右シフトし、該シフトした値をマクロブロックDC係数として出力することになる。第1の実施形態ではデータが4並列で入力され、第2の実施形態ではデータが断続的に1つずつ入力される場合の演算装置の構成を示した。入力の形態は、これ以外にも2並列、8並列、16並列入力等が考えられるが、それらに対応する演算装置は、当業者であれば、ここで説明した2つの実施形態から容易に構成することができるであろう。
また、パリティ加算器721と総和計算部における加算器731は、1ビットのパリティをキャリーとして加算することが可能な、キャリー入力付きの加算器1つにまとめることが出来る。この場合、パリティ加算手段は、キャリー入力付き加算器のキャリー入力として具現化される。これを使用した例は次に示す第3の実施形態にて示す。
[第3の実施形態:パリティ計算は3つのみ、2種類の演算処理を示す]
第1、第2の実施形態では、サブブロック毎にパリティを計算していたが、第3の実施形態では、パリティ計算の一部を省略し、回路規模を更に小さくする例を説明する。
具体的には、第1、第2の実施形態で計算していた4つのパリティの内、3つのパリティのみを計算し、マクロブロックDC係数を演算するものである。
第2実施形態をベースに、本第3の実施形態を具現化した演算装置の構成を図6(A)、及び、その変形例を図6(B)に示す。
本第3の実施形態では、パリティP0の演算を省略し、その替わりに総和演算部の出力の最下位ビットをパリティP0として加算するのが図6(A)に示す構成であり、パリティP0を恒常的に“1”として加算するのが図6(B)に示す構成である。このような演算が可能な理由を以下に説明する。
変換対象となる4×4個のデータの総和値が偶数の時、4つのパリティの和も偶数になり、データの総和値が奇数の時はパリティの和も奇数になる。よって、データの総和値にパリティを加算した結果は必ず偶数になる。
この関係を別の視点から見ると、データの総和値に3つのパリティを加算した結果が偶数なら、残りのパリティは“0”であることになる。また、データの総和値に3つのパリティを加算した結果が奇数であれば残りのパリティは“1”であることになる。ようするに、データの総和値に3つのパリティを加算した結果から、残りのパリティの値は一意に決まり、残りのパリティは前記加算結果の最下位ビットに等しい、ということが言える。
よって、データの総和値に3つのパリティを加算した結果の最下位ビットを残りのパリティとして加算することが可能である。この原理に基づく演算装置が図6(A)に示す構成である。同図における参照符号801は第2実施形態の最後で説明したキャリー入力付きの加算器であり、参照符号802は前記総和値の最下位ビットを残りのパリティとして加算する加算器、参照符号803は前記3つのパリティのみを計算するパリティ生成部である。その他の構成要素は、図5における同一部番の要素と同じである。
一方、データの総和値に3つのパリティを加算した結果の最下位ビットが“0”の時に“1”を加算した場合、最後に行なう小数点以下2ビットの切り捨てにより、該加算したばかりの“1”は切り捨てられる。また、最下位ビットが“1”の時は“1”を加算する必要がある。
よって、前記最下位ビットの値に拠らず常に“1”を加算しても何ら問題は無い。これに基づく演算装置が図6(B)に示す構成である。この構成では、総和演算部におけるレジスタ804の初期値を“1”に設定することにより、パリティとして“1”を加算する演算を省略している。また、パリティ生成部からP0を出力するタイミングで“1”を出力して、それを加算することも可能である。
[第4の実施形態:サブブロック単位で切り捨て、ブロック単位で切り上げ]
第1,第2,第3実施形態では、JPEG−XRにおける整数可逆変換と互換性を有するDC係数を演算することを念頭にしていたので、1段目のサブブロック単位での丸め処理は切り上げを行ない、2段目のブロックレベルでは切り棄てを行なっていた。
本発明はJPEG−XRにおける整数可逆変換に限定されるものでは無く、例えば、4×4ブロックの16点整数可逆アダアール変換などにも有効である。
本発明が適用可能な16点整数可逆アダアール変換は、例えば特登録03902990に記載されている。ここでは、列方向あるいは行方向の4つのデータをサブブロックとして1段目の4次整数可逆アダマール変換を適用し、2段目は列と行の方向を変えた4つのデータを単位として4次整数可逆アダマール変換を適用する。これによって、4×4ブロックデータに対する2次元の整数可逆アダマール変換、すなわち、16点整数可逆アダマール変換を実現している。該変換において、1段目と2段目の整数可逆アダマール変換の丸め処理の組み合せは、非常に多く存在する。
ここでは一例として、1段目の変換の丸め処理は切り捨て、2段目の変換の丸め処理を切り上げとした時に、本発明においてどのような演算装置の構成になるかを示す。
丸め処理によって発生する丸め誤差は、切り上げの場合が+0.5であったのに対し、切り捨ての場合は−0.5となる。この丸め誤差をブロックデータの総和値に反映するには、1段目の変換単位であるサブブロックに対するパリティを、前記データの総和値から減算する。また、2段目の変換の丸め処理を切り上げとするには、前記パリティを反映したデータの総和値に“10”なる2ビットのデータを加算し、該加算結果を2ビット右シフトする。ここで加算する2ビット “10”は、小数点以下2ビットのデータであるため、0.5という重みのデータである。
上記で説明した内容を第2の実施形態へ盛り込んだ、DC係数を求める演算装置の構成を図7に示す。
基本的には第2の実施形態と同じ処理であるが、以下のような違いがある。
パリティを加算する4つの処理が、パリティを減算(又は、正負の符号を反転して加算)する処理へ置き換えられると共に、2ビットシフトする直前の総和データに“10”(2進数)すなわち“2”(10進数)を加算している。
以上本発明に係る実施形態を説明した。上記実施形態では、係数ブロックのサイズを4×4としたが、サブブロックに含まれる係数の個数が4つであれば良いので、一般に4n(nは2以上の整数)に適用できるので、上記実施形態によって本発明が限定されるものではない。
(その他の実施例)
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。

Claims (4)

  1. n(nは2以上の整数)個の整数データで構成されるブロックから、当該ブロックに対する可逆変換可能な整数変換係数のうちDC係数を算出するデータ変換装置であって、
    前記ブロックを予め設定された4個のデータで構成されるサブブロックに区分し、サブブロック毎に、それぞれのサブブロックを構成する4個のデータの総和値が偶数か奇数かを表わす0又は1のいずれかの値を持つパリティを生成するパリティ生成手段と、
    前記ブロックを構成する全てのデータが示す値の総和値を算出する総和演算手段と、
    該総和演算手段で算出した総和値と、前記パリティ生成部で算出された各サブブロックのパリティの値とを加算する加算手段と、
    該加算手段で得られた値から、前記ブロックに対する可逆な整数のDC係数データを演算するDC係数演算手段と
    を備えることを特徴とするデータ変換装置。
  2. 同じ位のビット間の論理積演算子を「&」、排他的論理和の演算子を「^」、着目しているサブブロックを構成する4つのデータをData[0], Data[1], Data[2], Data[3]と表わしたとき、
    前記パリティ生成手段は、前記着目しているサブブロックのパリティPを、
    P = (Data[0] & 1) ^ (Data[1] & 1) ^ (Data[2] & 1) ^ (Data[3] & 1)
    として算出する回路を有することを特徴とする請求項1に記載のデータ変換装置。
  3. 前記DC係数演算手段は、前記加算手段による加算結果の値をビットシフトし、当該ビットシフトで得られたデータを前記係数ブロックの可逆変換のDC係数データとして出力することを特徴とする請求項1又は2に記載のデータ変換装置。
  4. n=2とする請求項1に記載のデータ変換装置を2つ有し、1つ目のデータ変換装置で算出されたDC係数を4×4個を集めてブロックを構成し、2つ目のデータ変換装置で前記ブロックのデータ変換を行うことで、マクロブロックDC係数を算出することを特徴とするデータ変換装置。
JP2010093308A 2010-04-14 2010-04-14 データ変換装置 Active JP5546329B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2010093308A JP5546329B2 (ja) 2010-04-14 2010-04-14 データ変換装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010093308A JP5546329B2 (ja) 2010-04-14 2010-04-14 データ変換装置

Publications (2)

Publication Number Publication Date
JP2011223518A JP2011223518A (ja) 2011-11-04
JP5546329B2 true JP5546329B2 (ja) 2014-07-09

Family

ID=45039841

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010093308A Active JP5546329B2 (ja) 2010-04-14 2010-04-14 データ変換装置

Country Status (1)

Country Link
JP (1) JP5546329B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6419275B1 (ja) * 2017-09-04 2018-11-07 三菱電機株式会社 データ変換システムおよびデータ変換プログラム

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TW224553B (en) * 1993-03-01 1994-06-01 Sony Co Ltd Method and apparatus for inverse discrete consine transform and coding/decoding of moving picture
JPH07200540A (ja) * 1993-12-28 1995-08-04 Victor Co Of Japan Ltd Idct回路
JP3129392B2 (ja) * 1996-02-02 2001-01-29 日本電気株式会社 2次元idct回路
JP4236266B2 (ja) * 2004-08-27 2009-03-11 キヤノン株式会社 データ変換装置およびその方法
US7471850B2 (en) * 2004-12-17 2008-12-30 Microsoft Corporation Reversible transform for lossy and lossless 2-D data compression
JP4311759B2 (ja) * 2007-10-29 2009-08-12 キヤノン株式会社 データ変換装置及びその制御方法
JP2010045589A (ja) * 2008-08-12 2010-02-25 Ricoh Co Ltd 画像処理装置、画像処理方法およびプログラム
JP5520122B2 (ja) * 2010-04-14 2014-06-11 キヤノン株式会社 データ変換装置

Also Published As

Publication number Publication date
JP2011223518A (ja) 2011-11-04

Similar Documents

Publication Publication Date Title
TWI455594B (zh) 影像記憶體壓縮方法與裝置
JP4311759B2 (ja) データ変換装置及びその制御方法
CN101335893A (zh) 数据帧序列的有效编码/解码
JP3902990B2 (ja) アダマール変換処理方法及びその装置
JP4801778B2 (ja) 映像圧縮符号化装置、映像復元装置、映像圧縮プログラム、及び、映像復元プログラム
JP3796432B2 (ja) フィルタ処理装置およびフィルタ処理方法
TWI412281B (zh) A Method of Calculating Reverse Conversion of Low Complexity
CN103237223B (zh) 基于熵的lcu快速划分
JP4378245B2 (ja) データ変換装置及び方法
JP5546329B2 (ja) データ変換装置
CN100452881C (zh) 一种基于合并处理的反量化方法及其装置
JP4644290B2 (ja) 高域係数用符号化ブロックパターン生成方法及び装置
JP2017525185A (ja) ウェーブレット変換行列に適応可能な高精度化及び量子化方法
JP2005168028A (ja) 絶対差演算装置とそれを用いた動き推定装置及び動映像符号化装置
CN107172425B (zh) 缩略图生成方法、装置及终端设备
JP4236266B2 (ja) データ変換装置およびその方法
JP4266512B2 (ja) データ処理装置
JP4806464B2 (ja) 画像圧縮装置、画像圧縮方法、画像復元装置、及びプログラム
CN113068033B (zh) 一种多媒体的反量化处理方法、装置、设备及存储介质
CN114125461B (zh) 通用视频编码变换电路和通用视频编码设备
JP6289971B2 (ja) データ記憶制御装置およびデータ記憶制御方法
JP2009200545A (ja) 画像符号化装置及び画像復号化装置
CN100396101C (zh) 产生并使用辅助图像的图像压缩设备及其方法
JP4444480B2 (ja) フィルタ処理装置
US20100014764A1 (en) Image encoding/decoding devices and image band decomposing/composing devices

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130322

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140219

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140224

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140328

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20140414

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140513

R151 Written notification of patent or utility model registration

Ref document number: 5546329

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151