JPWO2005104564A1 - 動き補償装置 - Google Patents

動き補償装置 Download PDF

Info

Publication number
JPWO2005104564A1
JPWO2005104564A1 JP2006519440A JP2006519440A JPWO2005104564A1 JP WO2005104564 A1 JPWO2005104564 A1 JP WO2005104564A1 JP 2006519440 A JP2006519440 A JP 2006519440A JP 2006519440 A JP2006519440 A JP 2006519440A JP WO2005104564 A1 JPWO2005104564 A1 JP WO2005104564A1
Authority
JP
Japan
Prior art keywords
pixel
motion compensation
pixel data
data
tap filter
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.)
Granted
Application number
JP2006519440A
Other languages
English (en)
Other versions
JP4709143B2 (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.)
Panasonic Corp
Panasonic Holdings Corp
Original Assignee
Panasonic Corp
Matsushita Electric Industrial Co Ltd
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 Panasonic Corp, Matsushita Electric Industrial Co Ltd filed Critical Panasonic Corp
Priority to JP2006519440A priority Critical patent/JP4709143B2/ja
Publication of JPWO2005104564A1 publication Critical patent/JPWO2005104564A1/ja
Application granted granted Critical
Publication of JP4709143B2 publication Critical patent/JP4709143B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/523Motion estimation or motion compensation with sub-pixel accuracy
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/43Hardware specially adapted for motion estimation or compensation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/44Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/80Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation

Abstract

回路規模の増加を抑えつつ、参照画素データを格納したマルチフレームメモリとのデータ転送量を削減し、効率的に動き補償画素を生成する動き補償装置を提供する。動き補償装置(100)は、動きベクトルからどの位置の補償画素を生成するかを判定する動き補償位置判定部(101)、6タップフィルタを実行するために必要な画素を判定する必要画素判定部(102)、転送するデータの取り出し順序などを制御するデータ転送制御部(103)、1/2小数精度画素データを格納するための中間画素格納メモリ(105)、所定の方向に連続的なフィルタ演算を実行し、1/2小数精度画素データを生成する高次タップフィルタ部(106)、および動き補償画素位置に基づいて線形補間を行い、1/2小数精度画素未満の動き補償精度の画素データを生成し出力する線形補間演算部(107)を備える。

Description

本発明は、ピクチャ間で小数画素精度の動き補償予測を行う動き補償装置に関し、特に高次タップのフィルタを用いて動き補償画像生成する動き補償装置に関する。
近年、マルチメディアアプリケーションの発展に伴い、画像・音声・テキストなど、あらゆるメディアの情報を統一的に扱うことが一般的になってきた。この時、全てのメディアをディジタル化することにより、統一的にメディアを扱うことが可能になる。しかしながら、ディジタル化された画像は膨大なデータ量を持つため、蓄積・伝送のためには、画像の情報圧縮技術が不可欠である。一方で、圧縮した画像データを相互運用するためには、圧縮技術の標準化も重要である。画像圧縮技術の標準規格としては、ITU−T(国際電気通信連合 電気通信標準化部門)のH.621、H.263、ISO/IEC(国際標準化機構 国際電気標準会議)のMPEG(Moving Picture Experts Group)−1、MPEG−2、MPEG−4など、またITU−TとMPEGの合同であるJVT(Joint Video Team)により現在標準化中のH.264(MPEG−4AVC)がある。
一般に動画像の符号化では、時間方向および空間方向の冗長性を削減することによって情報量の圧縮を行う。そこで時間的な冗長性の削減を目的とする画面間予測符号化では、前方または後方のピクチャを参照してブロック単位で動きの検出および予測画像の作成を行い、得られた予測画像と符号化対象ピクチャとの差分値に対して符号化を行う。ここで、ピクチャとは1枚の画面を表す用語であり、プログレッシブ画像ではフレームを意味し、インタレース画像ではフレームもしくはフィールドを意味する。ここで、インタレース画像とは、1つのフレームが時刻の異なる2つのフィールドから構成される画像である。インタレース画像の符号化や復号化処理においては、1つのフレームをフレームのまま処理したり、2つのフィールドとして処理したり、フレーム内のブロック毎にフレーム構造またはフィールド構造として処理したりすることができる。
参照画像を持たず画面内予測符号化を行うものをIピクチャと呼ぶ。また、1枚の参照画像のみを参照し画面間予測符号化を行うものをPピクチャと呼ぶ。また、同時に2枚の参照画像を参照して画面間予測符号化を行うことのできるものをBピクチャと呼ぶ。Bピクチャは表示時間が前方もしくは後方から任意の組み合わせとして2枚のピクチャを参照することが可能である。参照画像(参照ピクチャ)は符号化の基本単位であるマクロブロックごとに指定することができるが、符号化を行ったビットストリーム中に先に記述される方の参照ピクチャを第1参照ピクチャ、後に記述される方を第2参照ピクチャとして区別する。ただし、これらのピクチャを符号化する場合の条件として、参照するピクチャが既に符号化されている必要がある。
Pピクチャ又はBピクチャの符号化には、動き補償画面間予測符号化が用いられている。動き補償画面間予測符号化とは、画面間予測符号化に動き補償を適用した符号化方式である。動き補償とは、単純に参照ピクチャの画素値から予測するのではなく、ピクチャ内の各部の動き量(以下、これを動きベクトルと呼ぶ)を検出し、当該動き量を考慮した予測を行うことにより予測精度を向上すると共に、データ量を減らす方式である。例えば、符号化対象ピクチャの動きベクトルを検出し、その動きベクトルの分だけシフトした予測値と符号化対象ピクチャとの予測残差を符号化することによりデータ量を減している。この方式の場合には、復号化の際に動きベクトルの情報が必要になるため、動きベクトルも符号化されて記録又は伝送される。
動きベクトルはマクロブロック単位で検出されており、具体的には、符号化対象ピクチャ側のマクロブロックを固定しておき、参照ピクチャ側のマクロブロックを探索範囲内で移動させ、符号化対象ブロックと最も似通った参照ブロックの位置を見つけることにより、動きベクトルが検出される。
図1は従来の画面間予測符号化装置の構成を示すブロック図である。
この画面間予測符号化装置は、動き検出部401、マルチフレームメモリ402、減算部403、減算部404、動き補償部405、符号化部406、加算部407、動きベクトルメモリ408、および動きベクトル予測部409を備えている。
動き検出部401は、マルチフレームメモリ402から出力される動き検出参照画素MEpelと画面信号Vinとを比較し、動きベクトルMVと参照ピクチャ番号RefNoを出力する。参照ピクチャ番号RefNoは、複数の参照画像の中から選択された、対象画像で参照する参照画像を特定する識別信号である。動きベクトルMVは、動きベクトルメモリ408に一時的に記憶されたのち近傍動きベクトルPrevMVとして動きベクトル予測部409へ出力される。動きベクトル予測部409は、入力された近傍動きベクトルPrevMVを参照して予測動きベクトルPredMVを予測する。減算部404は動きベクトルMVから予測動きベクトルPredMVを減算し、その差を動きベクトル予測差分DifMVとして出力する。
一方、マルチフレームメモリ402は、参照ピクチャ番号RefNoおよび動きベクトルMVで示される画素を動き補償参照画素MCpel1として出力する。動き補償部405は、小数画素精度の参照画素を生成し、参照画面画素MCpel2として出力する。減算部403は、画面信号Vinから参照画面画素MCpel2を減算し、画面予測誤差DifPelを出力する。
符号化部406は、画面予測誤差DifPelと動きベクトル予測差分DifMVと参照ピクチャ番号RefNoを可変長符号化し、符号化信号Strを出力する。なお、符号化時に画面予測誤差の復号化結果である復号画面予測誤差RecDifPelも同時に出力する。復号画面予測誤差RecDifPelは、画面予測誤差DifPelに符号化誤差が重畳されたものであり、画面間予測復号化装置で符号化信号Strを復号化して得られる画面間予測誤差と一致する。
加算部407は、参照画面画素MCpel2に復号画面予測誤差RecDifPelを加算し、復号画面RecPelとしてマルチフレームメモリ402に記憶される。但し、マルチフレームメモリ402の容量を有効に利用するため、マルチフレームメモリ402に記憶されている画面の領域は不要な場合は開放され、またマルチフレームメモリ402に記憶する必要が無い画面の復号画面RecPelはマルチフレームメモリ402に記憶されない。なお、符号化の処理は16×16画素のマクロブロックと呼ばれる単位で行われ、動き補償のブロックのサイズとしては、H.264では、4×4、4×8、8×4、8×8、8×16、16×8、16×16の7通りの動き補償のブロックサイズの中からマクロブロック単位で適切なブロックサイズを選択して符号化に使用する。
図2は従来の画面間予測復号化装置の構成を示すブロック図である。なお、同図において、図1に示す画面間予測符号化装置と同様の部分については同じ符号を付し、その説明を省略する。
図2に示す従来の画面間予測復号化装置は、図1に示す従来の画面間予測符号化装置で符号化された符号化信号Strを復号化して復号画面信号Voutを出力する装置であり、マルチフレームメモリ402、動き補償部405、加算部407、加算部501、動きベクトルメモリ408、動きベクトル予測部409、および復号化部502を備えている。
復号化部502は、符号化信号Strを復号化し、復号画面予測誤差RecDifPel、動きベクトル予測差分DifMV、および参照ピクチャ番号RefNoを出力する。加算部501は、動きベクトル予測部409から出力される予測動きベクトルPredMVと動きベクトル予測差分DifMVを加算し、動きベクトルMVを復号する。
マルチフレームメモリ402は、参照ピクチャ番号RefNoおよび動きベクトルMVで示される画素を動き補償参照画素MCpel1として出力する。動き補償部405は、小数画素精度の参照画素を生成し、参照画面画素MCpel2として出力する。加算部407は、参照画面画素MCpel2に復号画面予測誤差RecDifPelを加算し、復号画面RecPelとしてマルチフレームメモリ402へ記憶する。但し、マルチフレームメモリ402の容量を有効に利用するため、マルチフレームメモリ402に記憶されている画面の領域は不要な場合は開放され、またマルチフレームメモリ402に記憶する必要が無い画面の復号画面RecPelはマルチフレームメモリ402に記憶されない。以上のようにして、復号画面信号Vout、すなわち復号画面RecPelを符号化信号Strから正しく復号化することができる。
ところで、H.264規格では1/4画素までの単位で動き補償を行うことが許可されている(MPEG−4 Simple Profileでは1/2画素まで)。この際、H.264規格ではその線形フィルタ画素補間の方法として6タップフィルタが採用されており、1/2精度画素を周辺の6画素から求めることが決められている。この6タップフィルタによる画素補間の方法について、図3を用いて説明する。
図3はH.264における輝度成分の画素補間方法を説明するための概略図である。画素F00、F01、F02、F03、F04、F05、F10、F11、F12、F13、F14、F15、F20、F21、F22、F23、F24、F25、F30、F31、F32、F33、F34、F35、F40、F41、F42、F43、F44、F45、F50、F51、F52、F53、F54、及びF55は整数画素位置の画素であり、斜線をつけた四角形で表している。ここで、A、B、C、D、E、F、G、H、I、J、K、L、M、N、P、Q、R、S、T、及びUは、それぞれの位置及びその画素値を表している。また、小数画素位置の画素に関しては、白抜きの四角で表している。画素aa、bb、cc、dd、ee、ff、gg、及びhhは6タップフィルタの係数を乗算したビットシフト前の中間計算画素値及びその位置を示している。a、b、c、d、e、f、g、h、i、j、k、m、n、p、q、r、及びsは各小数画素位置における6タップフィルタと線形補間を行った画素値及びその位置を表している。以下、a、b、c、d、e、f、g、h、i、j、k、n、p、q、及びrの各小数画素位置の画素値計算方法を説明する。ここで、b1、h1、s1、m1はそれぞれb、h、s、mの画素値を求めるための6タップフィルタ係数を乗算したビットシフト前の中間計算画素値を表す。
1/2精度画素bの画素値を計算する場合、水平方向の周辺の整数精度画素E、F、G、H、I、Jの6画素を用いて式1で表す6タップフィルタを実行することで中間計算画素値b1を求める。次に、式2で表すビットシフトにより整数精度の四捨五入付きの割り算処理と、画素レベルを有効範囲に収めるためのまるめ処理を行い、水平方向に1/2精度画素移動した位置bの画素値が求められる。
b1=(E−5×F+20×G+20×H−5×I+J) …(1)
b=Clip((b1+16)>>5) …(2)
ここで、Clip関数は丸め処理を表しており、0以下の値は0に補正し、255以上の値は255に補正することで出力結果が0から255の値に制限する関数である。以下、Clip関数の処理は簡単に丸め処理と記載する。
また、1/2精度画素hの画素値を計算する場合、垂直方向の周辺の整数精度画素A、C、G、M、R、Tの6画素を用いて式3で表す6タップフィルタを実行することで同様に中間計算画素値h1を求め、次に式4で表すビットシフトと丸め処理を行い垂直方向に移動した1/2精度の画素位置hの画素値が求められる。
h1=(A−5×C+20×G+20×M−5×R+T) …(3)
h=Clip((h1+16)>>5) …(4)
また、1/2精度画素jの画素値を計算する場合は、中間計算画素値b1と同様に計算した中間計算画素値s1、aa、bb、gg、hhの6画素を用いて式5で表すタップフィルタを実行する、または中間計算画素値h1と同様に計算したm1、cc、dd、ee、ffの6画素を用いて式6で表す6タップフィルタを実行することで中間計算画素値j1を求める。次に、式7で表すビットシフトと丸め処理を行い水平・垂直それぞれの方向に移動した1/2精度の画素位置の画素値jが求められる。ここで、画素値jの値を少しでもまるめ誤差をなくすよう、中間計算画素値j1の途中計算ではビットシフト前の中間計算画素値m1、s1、aa、bb、cc、dd、ee、ff、gg、hhを用いて算出する。
j1=cc−5×dd+20×h1+20×m1−5×ee+ff …(5)
j1=aa−5×bb+20×b1+20×s1−5×gg+hh …(6)
j=Clip((j1+512)>>10) …(7)
また、1/2精度画素s、mの画素値はそれぞれ1/2精度画素b、hと同様に式8、式9のビットシフトと丸め処理で求めることができる。
s=Clip((s1+16)>>5) …(8)
m=Clip((m1+16)>>5) …(9)
最後に、整数精度画素G、H、M、N、式2、式4、式7、式8、及び式9から小数点以下四捨五入を行った画素値を計算することで、1/4精度画素a、c、d、n、f、i、k、q、e、g、p、及びrの値を計算する(式10〜式21)。
a=(G+b+1)>>1 …(10)
c=(H+b+1)>>1 …(11)
d=(G+h+1)>>1 …(12)
n=(M+h+1)>>1 …(13)
f=(b+j+1)>>1 …(14)
i=(h+j+1)>>1 …(15)
k=(j+m+1)>>1 …(16)
q=(j+s+1)>>1 …(17)
e=(b+h+1)>>1 …(18)
g=(b+m+1)>>1 …(19)
p=(h+s+1)>>1 …(20)
r=(m+s+1)>>1 …(21)
図4は、以上の動き補償画素生成を行う動き補償部405を、従来技術で構成した場合の構成を示す回路図である。動き補償部405は、図1の画面間予測符号化装置及び図2の画面間予測復号化装置で説明したものと同一のものであり、動き補償部405には、マルチフレームメモリ402から動き補償参照画素MCpel1が入力される。また、マルチフレームメモリ402は、図1の画面間予測符号化装置及び図2の画面間予測復号化装置で説明したものと同じものであるので説明を省略する。
動き補償部405は、遅延回路501と、高次タップフィルタ部502、信号選択及び加算を行うセレクタ加算器517、およびビットシフト518を備えている。
遅延回路501は、マルチフレームメモリ402から得られる動き補償参照画素MCpelを取得し、タイミングを遅延させながら画素データの保持及び出力を行う。高次タップフィルタ部502は、遅延回路501からの出力画素データを受け取り6タップフィルタ、ビットシフト及び丸め処理を行い、その結果を出力する。セレクタ加算器517は、遅延回路501および高次タップフィルタ部502から入力された画素値を動き補償画素位置に従って選択し、必要であれば加算を行い出力する。ビットシフト518は、セレクタ加算器517からの出力結果を動き補償画素位置に従って必要であればビットシフトし、必要がなければそのままの値を参照画面画素MCpel2として出力する。
遅延回路501は、横6画素を同時に取得し6段の遅延を行う。遅延回路501の構成バッファにおいて、バッファBA、バッファBB、バッファBC、バッファBD、バッファBE、バッファBF、バッファBG、バッファBH、バッファBI、バッファBJ、バッファBK、バッファBL、バッファBM、バッファBN、バッファBP、バッファBQ、バッファBR、バッファBS、バッファBT、及びバッファBUは、それぞれ図3の画素補間方法の概略図に示す整数画素位置A、B、C、D、E、F、G、H、I、J、K、L、M、N、P、Q、R、S、T、及びUの画素データが蓄えられる。
高次タップフィルタ部502は、複数の6タップフィルタ503〜511と、小数点以下の四捨五入と丸め処理を併せて行うための複数のビットシフト512〜516を備えている。6タップフィルタ503、6タップフィルタ504、6タップフィルタ505、6タップフィルタ506、6タップフィルタ507、6タップフィルタ508、6タップフィルタ509、及び6タップフィルタ510は、遅延回路501からの出力信号を受け取り、係数の乗算と加算を行い、それぞれ中間計算画素値Saa、Sbb、Sb1、Ss1、Sgg、Shh、Sm1、Sh1を出力する。この時、中間計算画素値Sb1、Sh1はそれぞれ式1、式3の計算による値になっており、その他の中間計算画素値Saa、Sbb、Ss1、Sgg、Shh、及びSm1の値も式1、式3同様の6タップフィルタの出力値であり、図3の画素補間方法の概略図に示すaa、bb、s1、gg、hh、及びm1に相当する。
6タップフィルタ511は、水平方向の6タップフィルタ結果の出力値Saa、Sbb、Sb1、Ss1、Sgg、Shh、Sm1、Sh1を入力とし、Sj1を式6で示した垂直方向の6タップフィルタ結果として出力する。ビットシフト512、ビットシフト513、ビットシフト514、ビットシフト515、及びビットシフト516は、それぞれ、Ss1、Sj1、Sb1、Sm1、及びSh1を入力とし、それぞれ式8、式7、式2、式9、及び式4で示した小数点以下四捨五入を行うビットシフトと丸め処理を行い、それぞれSs、Sj、Sb、Sm、及びShとして出力する。
セレクタ加算器517とビットシフト518は、遅延回路501からのバッファ値であるSN、SM、SH、及びSGと、高次タップフィルタ部502からの出力値であるSb、Ss、Sm、Sh、及びSjとを入力とし、動き補償画素位置に従って、必要であれば式10から式21の四捨五入付き平均値計算を行い、小数精度の動き補償画素MCpel2を出力する。
以上のような構成及び一連の動作を行うことで、動き補償参照画素MCpel1から1/4画素精度の動き補償画像を生成し、小数精度の動き補償画像MCpel2として出力し、復号画面信号Vout、すなわち復号画面RecPelを符号化信号Strから正しく復号化して出力することができる(例えば、非特許文献1参照)。
"Draft ITU−T Recomendation and Final Standard of Joint Video Specification"8.4.2.2,Joint Video Team(JVT)of ISO/IEC MPEG & ITU−T VCEG,JVT−G050r1,27 May 2003
しかしながら、H.264規格の輝度信号について、上記のように従来技術で動き補償部を構成した場合、1画素あたりの動き補償画素生成のために、マルチフレームメモリ402から参照画素データを読み出すためのバスバンド幅が大きくなってしまうという課題がある。
つまり、例えば前述の図4で示したH.264規格の動き補償では、水平・垂直で半画素ずつずれた場所の画素を求めるには周辺の36画素が必要となっているため、6画素のデータ転送を5サイクル繰り返した後、1サイクルにつき1画素分の補償画素が出力されるようになる。1ブロック単位では、上記処理をブロックの列の回数だけ繰り返し6タップフィルタをかける。従って、H.264規格でとり得る最大のブロック形状である16×16ブロックを1つ処理する場合と、最小のブロック形状である4×4ブロックを16個処理する場合の各転送画素数は、それぞれ次の式22と式23のように計算することができる。
(16+5)×16×6画素幅× 1ブロック=2,016 …(22)
(4+5) ×4 ×6画素幅×16ブロック=3,456 …(23)
一方、高次タップのフィルタを用いない水平2画素・垂直2画素の線形補間程度で生成する動き補償画像の場合は、16×16のブロックサイズ及び4×4のブロックサイズの各転送画素数は、次の式24及び式25のように計算することができる。
(16+1)×16×2画素幅× 1ブロック= 544 …(24)
(4+1) × 4×2画素幅×16ブロック= 640 …(25)
従って、式22〜式25より、H.264規格では、マルチフレームメモリ402から1マクロブロック(MB)あたりに参照画像としての転送される画素転送数は、2画素間の線形補間で生成する場合と比べ、3.7倍から5.4倍となることがわかる。
そこで、本発明は上記のような問題を解決するためになされたものであり、回路規模の増加を抑えつつ、参照画素データを格納したマルチフレームメモリとのデータ転送量を削減し、効率的に動き補償画素を生成する動き補償装置を提供することを目的とする。
上記目的を達成するため、本発明に係る動き補償装置は、動画像を構成するピクチャ間で小数画素精度の動き補償予測を行う動き補償装置であって、転送されるブロック単位の参照画素データに対して、所定の方向に連続的なフィルタ演算を実行し、動き補償予測を行うための1/2小数精度画素データを生成する高次タップフィルタ手段と、前記高次タップフィルタ手段により生成された1/2小数精度画素データを格納するための中間出力画素記憶手段とを備え、前記高次タップフィルタ手段は、前記中間出力画素記憶手段から入力された1/2小数精度画素データに対して、前記所定の方向と直交する方向に連続的なフィルタ演算を実行し、1/2小数精度画素データを生成することを特徴とする。
これによって、高次タップのフィルタ処理において、水平方向もしくは垂直方向にまとめて1/2小数精度画素生成フィルタ演算をし、1回目のフィルタ結果を中間出力画素として専用の中間出力画素記憶手段に記憶しておき、1回目の方向と直交する方向の1/2小数精度画素生成のフィルタ演算で中間出力画素を利用することで、例えば参照画素データを格納したマルチフレームメモリから動き補償装置へ転送する参照画素データのデータ量を減少させることができ、効率的に動き補償予測を行うことが可能である。
また、前記動き補償装置は、さらに、前記参照画素データの転送を制御するデータ転送制御手段と、前記データ転送制御手段の制御に基づいて、前記参照画素データまたは前記中間出力画素記憶手段から入力された1/2小数精度画素データのいずれかを選択し、選択したデータを前記高次タップフィルタ手段へ出力する第1の画素選択手段とを備えてもよい。
ここで、前記データ転送制御手段は、処理対象ブロックの水平方向画素数と垂直方向画素数とを比較し、小さい値となる並びの方向に前記処理対象ブロックの参照画素データを前記高次タップフィルタ手段へ転送してもよい。
これによって、中間出力画素記憶手段で必要な画素容量を削減し、2回目の方向のフィルタ処理の転送画素数も減少させることができるので、さらに効率的に動き補償予測を行うことができると共に、実装する面積を削減することが可能である。
また、前記データ転送制御手段は、処理対象ブロックを所定数のサブブロックに分割し、前記サブブロック単位に前記処理対象ブロックの参照画素データを前記高次タップフィルタ手段へ転送してもよい。
これによって、中間出力画素記憶部で必要な容量を削減することができるので、さらに実装面積を削減することが可能である。
また、前記動き補償装置は、さらに、動き補償画素位置に基づいて、前記高次タップフィルタ手段の処理で必要とする画素領域を判定する必要画素判定手段を備え、前記データ転送制御手段は、前記必要画素判定手段で必要と判定された画素領域の参照画素データのみを前記高次タップフィルタ手段へ転送してもよい。
これによって、フィルタ演算で使用する領域かどうかを小数精度の動き補償位置から判断し、フィルタ演算実行時に、選択的にデータ転送を行うことで無駄な転送を削減することができるので、さらに効率的な動き補償予測を行うことが可能である。
また、前記高次タップフィルタ手段は、前記参照画素データに対して、所定の方向に連続的なフィルタ演算を処理対象ブロックの段数分実行し、1/2小数精度画素データを生成する第1の高次タップフィルタ部と、前記参照画素データまたは前記中間出力画素記憶手段から入力された1/2小数精度画素データに対して、前記第1の高次タップフィルタ部での演算処理方向と直交する方向に連続的なフィルタ演算を処理対象ブロックの段数分実行し、1/2小数精度画素データを生成する第2の高次タップフィルタ部とを備えてもよい。
ここで、前記第2の高次タップフィルタ部は、前記1/2小数精度画素データが有するビット精度に対応することが好ましい。
これによって、高次タップフィルタの資源を複数実装する場合に、選択的にビット精度の高いフィルタを割り当てることができるので、実装面積を削減することが可能である。例えば、第1の高次タップフィルタ部が、整数精度画素データが有するビット精度までに対応し、第2の高次タップフィルタ部が、1/2小数精度画素データが有するビット精度に対応する演算資源を実装するというように、第1の高次タップフィルタ部にビット精度の高いフィルタを割り当てる必要が無くなるので、実装面積を削減することが可能である。
また、前記中間出力画素記憶手段は、前記第1の高次タップフィルタ部により生成された1/2小数精度画素データと併せて、前記参照画素データも格納するとともに、データの読み出しと書き込みの処理を同時に実行し、前記第2の高次タップフィルタ部は、前記中間出力画素記憶手段から入力された前記参照画素データおよび前記1/2小数精度画素データに対して、フィルタ演算を実行し、前記第1の高次タップフィルタ部の動作と前記第2の高次タップフィルタ部の動作をパイプライン式に実行してもよい。
これによって、中間出力画素記憶手段の容量を増やすことで、参照画素データの転送を1回目のフィルタ方向の時だけとすることで画素転送量を削減し、また中間出力画素記憶手段をバンク動作させるようにすることで2回目のフィルタ方向の動作を1回目のフィルタを行っている処理対象ブロックのデータと世代の異なるブロックについて独立にフィルタ処理を実行することができるようになるため、さらに効率的な動き補償予測を行うことが可能となる。
なお、本発明は、このような動き補償装置として実現することができるだけでなく、このような動き補償装置が備える特徴的な手段をステップとする動き補償方法として実現したり、それらのステップをコンピュータに実行させるプログラムとして実現したりすることもできる。そして、そのようなプログラムは、CD−ROM等の記録媒体やインターネット等の伝送媒体を介して配信することができるのは言うまでもない。
以上の説明から明らかなように、本発明に係る動き補償装置によれば、回路規模の増加を抑えつつ、参照画素データを格納したマルチフレームメモリとのデータ転送量を削減し、効率的に動き補償画素を生成することができる。
[図1]従来の画面間予測符号化装置の構成を示すブロック図である。
[図2]従来の画面間予測復号化装置の構成を示すブロック図である。
[図3]H.264における輝度成分の画素補間方法を説明するための概略図である。
[図4]従来の動き補償部の構成を示す回路図である。
[図5]本発明の実施の形態1に係る動き補償装置(動き補償部)の概略構成を示すブロック図である。
[図6]本発明の実施の形態1に係る動き補償装置の構成を詳細に示すブロック図である。
[図7]6タップフィルタをかける整数精度画素の並びを示す図である。
[図8]データ転送制御部でデータ転送を制御する動作の流れを示すフローチャートである。
[図9](a)動き補償画像生成を行うブロックの一例を示す図、(b)中間画素格納メモリに格納される垂直方向に1/2ずらせた小数精度画素を示す図、(c)2回目のフィルタ処理(水平方向)で転送を必要とする画素を示す図、(d)中間画素格納メモリに格納された垂直方向に1/2ずらせた小数精度画素に対する2回目のフィルタ処理(水平方向)を示す図である。
[図10](a)中間画素格納メモリに格納される水平方向に1/2ずらせた小数精度画素を示す図、(b)2回目のフィルタ処理(垂直方向)で転送を必要とする画素を示す図、(c)中間画素格納メモリに格納された水平方向に1/2ずらせた小数精度画素に対する2回目のフィルタ処理(垂直方向)を示す図である。
[図11](a)動き補償画像生成を行うブロック単位を示した図、(b)ブロックの分割を示す図、(c)分割領域にフィルタ処理に必要な周辺画素をつけた状態の転送領域を示す図である。
[図12]動き補償画像生成を行うブロックの一例を示す図である。
[図13]分割領域毎にフィルタ処理に必要な周辺画素を示す図である。
[図14]データ転送制御部でデータ転送を制御する動作の流れを示すフローチャートである。
[図15]本発明の実施の形態4に係る動き補償装置(動き補償部)の構成を示すブロック図である。
[図16](a)動き補償画像生成を行う複数のブロックを示した図、(b)各ブロック毎の水平および垂直方向のフィルタ処理のタイミングを示す図である。
[図17]各実施の形態の動き補償装置、この動き補償装置を用いた画面間予測符号化装置、または画面間予測復号化装置をコンピュータシステムにより実現するためのプログラムを格納するための記録媒体についての説明図であり、(a)記録媒体本体であるフレキシブルディスクの物理フォーマットの例を示した説明図、(b)フレキシブルディスクの正面からみた外観、断面構造、及びフレキシブルディスクを示した説明図、(c)フレキシブルディスクFDに上記プログラムの記録再生を行うための構成を示した説明図である。
[図18]コンテンツ配信サービスを実現するコンテンツ供給システムの全体構成を示すブロック図である。
[図19]携帯電話の一例を示す図である。
[図20]携帯電話の内部構成を示すブロック図である。
[図21]ディジタル放送用システムの全体構成を示すブロック図である。
符号の説明
100 動き補償装置(動き補償部)
101 動き補償位置判定部
102 必要画素判定部
103 データ転送制御部
104 画素選択部
105 中間画素格納メモリ
106 高次タップフィルタ部
107 線形補間演算部
201、202 遅延回路
402 マルチフレームメモリ
503、511、6タップフィルタ
205、512、513、514、518 ビットシフト
517 セレクタ加算器
MCpel1 マルチフレームメモリ出力画素信号
MCpel2 小数精度動き補償画素信号
MCpel3 中間画素格納メモリ出力画素信号
SselAdd セレクタ加算器出力信号
SdatCtr データ転送制御信号
SpxlJdg 必要画素判定信号
SmcPos 動き補償位置判定信号
Sm1h1 ビットシフト前小数精度画素信号
Smh 小数精度画素信号
Sa1 ビットシフト前小数精度画素信号
Sb1 ビットシフト前小数精度画素信号
Sj1 ビットシフト前小数精度画素信号
Ss 小数精度画素信号
Sj 小数精度画素信号
Sb 小数精度画素信号
SMN 整数精度画素信号
SGH 整数精度画素信号
以下、本発明の各実施の形態について、それぞれ図面を参照しながら説明する。
(実施の形態1)
図5は本発明の実施の形態1に係る動き補償装置(動き補償部)の概略構成を示すブロック図であり、図6はこの動き補償装置の構成を詳細に示すブロック図である。なお、図4に示す従来の動き補償部と同様の部分については同じ符号を付し、その説明を省略する。また、動き補償装置は、図1に示す画面間予測符号化装置または図2に示す画面間予測復号化装置の動き補償部として用いられるものとする。
動き補償装置100は、小数画素精度の動き補償画素を生成するための装置であり、動き補償位置判定部101、必要画素判定部102、データ転送制御部103、画素選択部104、中間画素格納メモリ105、高次タップフィルタ部106、および線形補間演算部107を備えている。この動き補償装置100には、マルチフレームメモリ402から動き補償参照画素(参照画素データ)MCpel1が入力される。
高次タップフィルタ部106は、実装バッファを従来の6段×6画素から6段×1画素とした遅延回路201および遅延回路202、6タップフィルタ503、6タップフィルタ511、ビットシフト512、ビットシフト513、ビットシフト514、およびビットシフト205を備えている。また、第2の画素選択手段および線形補間演算手段である線形補間演算部107は、セレクタ加算器206およびビットシフト518を備えている。
動き補償位置判定部101は、動きベクトルから図3における画素G、a、b、c、d、e、f、g、h、i、j、k、n、p、q、及びrのどの位置の補償画素を生成するかを判定し、動き補償位置信号SmcPosを出力する。動き補償位置信号SmcPosは、セレクタ加算器206、ビットシフト518に入力され、1/4精度画素生成に必要な画素の選択とビットシフトの実行制御に用いられる。
必要画素判定部102は、入力された動き補償位置信号SmcPosに基づいて、マクロブロック(MB)パーティションの形状やその分割形状及び6タップフィルタのフィルタ方向順序から6タップフィルタを実行するために必要な画素を判定し、必要画素情報SpxlJdgを出力する。
データ転送制御部103は、入力された必要画素情報SpxlJdgにより、転送するデータの取り出し順序などを制御するためのデータ転送制御信号SdatCtrを出力する。データ転送制御信号SdatCtrは、マルチフレームメモリ402、中間画素格納メモリ105及び画素選択部104に入力され、フィルタ演算処理の制御に用いられる。
中間画素格納メモリ105は、例えば水平方向優先のフィルタ処理を行う場合、図3の画素aa、bb、b、s、gg、hhなどの水平方向の1/2精度画素位置のデータに関して処理ブロック単位分すべてを格納するためのメモリであり、一旦格納した中間画素データはビットシフト演算前の1/2精度画素データMCpel3として出力する。
画素選択部104は、マルチフレームメモリ402から出力された参照画素データMCpel1か中間画素格納メモリ105から出力された1/2精度画素データMCpel3かを選択する。
ビットシフト205は、6タップフィルタ503の出力信号Sm1h1を入力とし、ビットシフトした結果として画素mもしくは画素hの位置の信号Smhを出力する。ビットシフト512は、遅延回路202の3段目の遅延データSs1を入力とし、ビットシフトした結果として画素sの位置の信号Ssを出力する。ビットシフト513は、6タップフィルタ511の出力信号Sj1を入力とし、ビットシフトした結果として画素jの位置の信号Sjを出力する。ビットシフト514は、遅延回路202の4段目の遅延データSb1を入力とし、ビットシフトした結果として画素bの位置のSb信号を出力する。
セレクタ加算器206は、ビットシフト205からの出力信号Smhと、ビットシフト512からの出力信号Ssと、ビットシフト513からの出力信号Sjと、ビットシフト514からの出力信号Sbと、遅延回路201の3段目の遅延データである画素Mもしくは画素Nの位置の出力信号SMNと、遅延回路201の4段目の遅延データである画素Gもしくは画素Hの位置の出力信号SGHと、を入力とし、動き補償位置信号SmcPos信号に従って、信号選択を行い、必要であれば加算を行って信号SSelAddとして出力する。
ビットシフト518は、信号SSelAddを入力とし、動き補償位置信号SmcPos信号に従って、必要であればビットシフトを行って動き補償画素MCpel2として出力する。
次に図7を用いて、必要画素判定部102の詳細な動作説明を行う。
図7は6タップフィルタをかける整数精度画素の並びを示す図である。図7において、四角で示す整数精度画素IntSmpは、動きベクトルが示す動き補償位置の整数精度の画素である。また、丸印で示す6タップ付加画素IntSmp6Tは、整数精度画素IntSmpの周辺に位置する6タップフィルタをかけるために必要な画素である。
区間Tintwidthは、整数精度画素の水平方向の区間を表しており、動き補償を実行する対象ブロックのブロック形状によって異なり、16、8及び4の値をとり得る。区間T6twidthは、6タップフィルタに必要な周辺画素まで含めた水平方向の区間を表しており、対象ブロックのブロック形状によって、21、13及び9の値をとり得る。
区間Tintheightは、整数精度画素の垂直方向の区間を表しており、動き補償を実行する対象ブロックのブロック形状によって異なり、16、8及び4の値をとり得る。区間T6theightは、6タップフィルタに必要な周辺画素まで含めた画素の垂直方向の区間を表しており、対象ブロックのブロック形状によって、21、13及び9の値をとり得る。
領域Aabcは、水平方向の区間がT6twidthであり垂直方向の区間がTintheightである領域の整数精度画素の領域を表している。領域Adhnは、水平方向の区間がTintwidthであり垂直方向の区間がT6theightである領域の整数精度画素の領域を表している。領域AGは、水平方向の区間がTintwidthであり垂直方向の区間がTintheightである領域の整数精度画素の領域を表している。
例えば、図3で示したa、b及びcの小数精度画素位置の動き補償画像を生成する場合、垂直方向のフィルタ処理が不要であるので、垂直方向のフィルタのみで使用する領域は処理する必要がない。従ってこの場合、必要画素判定部102は、領域Aabcで示した領域が必要であると判断する。また、同様にd、h及びnの小数精度画素位置の動き補償画像を生成する場合、水平方向のフィルタ処理が不要であるので、水平方向のフィルタのみで使用する領域は処理する必要がない。従ってこの場合、必要画素判定部102は、領域Adhnで示した領域が必要であると判断する。さらに、Gの位置の場合は、小数精度画素の生成が不要であるので、必要画素判定部102は、領域AGが必要であると判断する。
次に図8を用いて、データ転送制御部103の詳細な動作説明を行う。
図8は、データ転送制御部103でデータ転送を制御する動作の流れを示すフローチャートである。
まず、データ転送制御部103は、動き補償画像生成位置が図3で示した画素G、a、b、c、d、e、f、g、h、i、j、k、n、p、q、及びrの中の画素Gの位置であるか否かを判定する(ステップS101)。この判定の結果、動き補償画像生成位置が画素Gの位置の場合(ステップS101でYES)には、小数精度画像フィルタを実行せずに終了する。
一方、動き補償画像生成位置が画素G以外(ステップS101でNO)であれば、画素d、h、またはnのいずれかの位置にあるか否かを判定する(ステップS102)。この判定の結果、動き補償画像生成位置が画素d、h、またはnのいずれの位置でもない場合(ステップS102でNO)には、水平方向に1/2画素をずらせた画像を生成するための6タップフィルタを実行する(ステップS103)。さらに、動き補償画像生成位置が画素a、b、またはcのいずれかの位置にあるか否かを判定する(ステップS104)。この判定の結果、動き補償画像生成位置が画素a、b、またはcのいずれの位置でもない場合(ステップS104でNO)、および上記判定処理(ステップS102)で動き補償画像生成位置が画素d、h、またはnのいずれかの位置の場合(ステップS102でYES)には、垂直方向に1/2画素をずらせた画像を生成するための6タップフィルタを実行する(ステップS105)。
動き補償画像生成位置が画素b、h、またはjのいずれかの位置にあるか否かを判定する(ステップS106)。この判定の結果、動き補償画像生成位置が画素b、h、またはjのいずれの位置でもない場合(ステップS106でNO)、すなわち画素G、b、h、またはjのいずれの位置でもない場合には、1/4精度画素の線形補間フィルタを実行する(ステップS107)。
一方、動き補償画像生成位置が画素b、h、またはjのいずれかの位置である場合(ステップS106でYES)には、1/4精度画素の線形補間フィルタを実行せずに終了する。
以上の手順をデータ転送制御部103で制御することによって、動き補償部100を制御し、動き補償画像MCpel2を出力する。なお、動き補償画像生成位置が画素d、h、またはnのいずれかの位置にあるか否かの判定処理(ステップS102)および水平方向のフィルタ処理(ステップS103)と、動き補償画像生成位置が画素a、b、またはcのいずれかの位置にあるか否かを判定処理(ステップS104)および垂直方向のフィルタ処理(ステップS105)との制御を入れ替えることで、垂直フィルタを先にかけ水平フィルタを後にかけることも可能である。
以下、画素信号の流れに沿って、水平方向にM画素、垂直方向にN画素のブロック形状の領域に対するフィルタ処理動作に関して詳細な説明を続ける。ここでは、水平方向と垂直方向の両方向のフィルタ演算が必要な図3に示す画素e、f、g、i、j、k、p、q、及びrの小数精度画素位置の動き補償画像生成動作について説明し、簡単のため水平方向のフィルタを最初に実施する場合を例として説明するが、垂直方向を最初に実施することも可能である。
まず、データ転送制御部103は、マルチフレームメモリ402から1画素ずつ水平方向に画素データを読み出し、遅延回路201に入力する。遅延回路201は6段のFIFOの構成をとっており、6タップフィルタに必要な周辺画素まで含めた図7に示す水平方向の区間T6twidthの1行分のデータが続いて入力される。遅延回路201の6画素分の遅延データは、6タップフィルタ503に入力され、6画素目の入力以降6タップフィルタ結果が1サイクル毎に出力される。
6タップフィルタ503から出力された6タップフィルタ結果は、中間画素格納メモリ105及びビットシフト205に入力される。遅延回路201および6タップフィルタ503が1セットの場合はM+5サイクルで1行分のフィルタ処理を行うことができ、フィルタに必要な周辺画素部分を含めN+5行分の処理を繰り返す。その結果、中間画素格納メモリ105に水平方向に1/2ずらせた小数画素精度のデータ(bの位置)として格納される。
次に、データ転送制御部103は、垂直方向に1/2ずらせた小数精度画素(hの位置)を生成するために、マルチフレームメモリ402から1画素ずつ垂直方向に画素データを読み出し、遅延回路201に入力する。水平方向と同様に、6画素目の入力以降、1サイクル毎に6タップフィルタ結果を出力する。遅延回路201および6タップフィルタ503が1セットの場合はN+5サイクルで1列分のフィルタ処理を行うことができ、フィルタに必要な周辺画素部分を含めM+5行分の処理を繰り返し、ビットシフト205に出力する。
このとき同時に、データ転送制御部103は、水平垂直共に1/2ずらせた小数精度画素(jの位置)を生成するために、中間画素格納メモリ105から1画素ずつ垂直方向に画素データを読み出し、画素選択部104を介して遅延回路202に入力する。遅延回路202の6画素分の遅延データは、6タップフィルタ511に入力され、6画素目の入力以降1サイクル毎に6タップフィルタ結果が出力される。
次に、セレクタ加算器206は、動き補償画素位置に応じて、式10から式21に示した計算で必要な処理を行い、データSSelAddとして出力する。データSSelAddが入力されたビットシフト518は、必要であればビットシフトを行い、動き補償画像MCPel2を出力する。ここで、セレクタ加算器206およびビットシフト518は、G、b、h、及びjの位置では、加算とビットシフトの処理が必要ないためその処理は行わない。
なお、遅延回路202と6タップフィルタ511は、水平方向のフィルタ処理でも利用することができ、その場合は、画素選択部104において中間画素格納メモリ105から入力されたデータではなく、マルチフレームメモリ402から入力されたデータを選択しフィルタ処理を行い、6タップフィルタ511の出力結果を中間画素格納メモリ105に入力することで実現する。この場合、水平方向のフィルタ処理サイクルは遅延回路201と6タップフィルタ503の1組を用いている場合と較べ、約1/2にまで削減可能である。
また、遅延回路201と6タップフィルタ503、または遅延回路202と6タップフィルタ511において、処理資源の並列化を行うことも可能であり、その場合、マルチフレームメモリ402と動き補償部100の間の転送能力を並列化した6タップフィルタの処理能力以上に設定する。ここで、転送能力と処理能力が等しくなるようにすれば最適な構成を得ることができる。
従って、上記手順で動き補償画像の生成を行った時、最大のブロック形状である16×16を1ブロック転送する場合と、最小のブロック形状である4×4を16ブロック転送する場合の各転送画素数は、次式で表される。
((16+5)×(16+5)×1画素幅+
16×(16+5)×1画素幅)× 1ブロック= 777…(26)
(( 4+5)×( 4+5)×1画素幅+
4×( 4+5)×1画素幅)×16ブロック=1,872…(27)
従って、式22、式23、式26、及び式27より、従来の転送量に較べて16×16ブロック形状では、1/2.6に、4×4ブロック形状では、1/1.8に抑えることを実現する。
以上のように、遅延回路201および遅延回路202を設け、6タップフィルタ503から出力された6タップフィルタ結果を中間画素格納メモリに格納した後、遅延回路202へ入力してフィルタを行っているので、マルチフレームメモリ402から動き補償装置100への画素転送量を削減することができる。
(実施の形態2)
本実施の形態では、実施の形態1で説明した方法に加えて、6タップフィルタの演算を水平方向または垂直方向のどちらを最初に実行するかを判定した上で、データ転送を行う場合について説明する。なお、本実施の形態の構成は、実施の形態1と同様であるので、図6に示したブロック図を用いて説明する。
実施の形態1で説明した方法と異なる点は、データ転送制御部103における制御方法に関するのみである。ここでは、そのデータ転送制御及び動作処理に関してのみ詳細に説明する。
6タップフィルタの演算は、水平垂直、垂直水平のどちらの順序でも同じ結果が得られる。この垂直・水平のフィルタ順序の制御方法について、図9〜図11を用いて説明する。
図9は、動き補償画像生成を行うブロックの一例を示す図である。ここでは、ブロック形状は、図9(a)に示すように水平方向Mが8画素、垂直方向Nが4画素となる大きさであり、6タップフィルタのフィルタ処理に必要な周辺画素が5(=T−1)画素分付加されている。また、図9において、対象ブロックの画素は白抜きの四角で、6タップフィルタに必要な周辺画素は斜線をつけた四角形で、小数精度画素は丸印で表している。
図9(a)に示すブロックに対して、最初に垂直方向のフィルタを実行すると、図9(b)に示すような垂直方向に1/2ずらせた小数精度画素が中間画素格納メモリ105に格納される。また、2回目のフィルタ処理(水平方向)を実行する時には、マルチフレームメモリ402から動き補償部100に転送を必要とする画素は、図9(c)に示すように上2行下3行の周辺画素を除いた画素となる。また、水平垂直共に1/2ずらせた小数精度画素を生成するために、図9(d)に示すように中間画素格納メモリ105に格納された垂直方向に1/2ずらせた小数精度画素を読み出し、2回目のフィルタ処理(水平方向)を実行する。
このように、最初に垂直方向のフィルタを実行する場合、中間画素格納メモリ105が必要とする画素容量または2回目の方向のフィルタ処理での画素転送量は、次式で表される。
(8+5)×4=52 …(28)
一方、図9(a)に示すブロックに対して、最初に水平方向のフィルタを実行すると、図10(a)に示すような水平方向に1/2ずらせた小数精度画素が中間画素格納メモリ105に格納される。また、2回目のフィルタ処理(垂直方向)を実行する時には、マルチフレームメモリ402から動き補償部100に転送を必要とする画素は、図10(b)に示すように右2列左3列の周辺画素を除いた画素となる。また、水平垂直共に1/2ずらせた小数精度画素を生成するために、図10(c)に示すように中間画素格納メモリ105に格納された水平方向に1/2ずらせた小数精度画素を読み出し、2回目のフィルタ処理(垂直方向)を実行する。
このように、最初に水平方向のフィルタを実行する場合、中間画素格納メモリ105が必要とする画素容量または2回目の方向のフィルタ処理での画素転送量は、次式で表される。
8×(4+5)=72 …(29)
以上、水平方向Mが8画素、垂直方向Nが4画素となる大きさのブロックを例に説明したが、次に、一般的に水平方向がM、垂直方向がNの画素数となる大きさのブロックの場合について説明する。
図11は、動き補償画像生成を行うブロック単位を示した図である。図11(a)は、動き補償画像生成を行うブロックを示しており、図7を簡略的に図示したものである。図11(a)において、水平方向がM、垂直方向がNの画素数となる大きさのブロック形状であり、フィルタのタップ数をTとした時のフィルタに用いる周辺画素がT−1分付加されていることを示している。
この場合、画素としては(M+T−1)×(N+T−1)の領域のメモリ転送が必要である。また、この時に図5に示す中間画素格納メモリ105が必要とする画素容量は、水平方向のフィルタを最初に実行する場合はM×(N+T−1)、垂直方向のフィルタを最初に実行する場合は(M+T−1)×Nの画素容量が必要となる。
また、続く別方向のフィルタ処理を実行する時にマルチフレームメモリ402から動き補償部100に転送を必要とする画素数に関しても同様に、水平方向のフィルタ処理を最初に実行する場合はM×(N+T−1)、垂直方向のフィルタ処理を最初に実行する場合は(M+T−1)×Nの画素転送量となる。
従って、水平方向のフィルタ処理を最初に実行する場合と垂直方向のフィルタ処理を最初に実行する場合とにおける、中間画素格納メモリ105が必要とする画素容量の差分値、または2回目の方向のフィルタ処理での画素転送量の差分値は、次式で表される。
|M×(N+T−1)−(M+T−1)×N|
=|(M−N)(T−1)| …(30)
従って、データ転送制御部103は、水平方向の画素数Mと垂直方向の画素数Nとを比較し、M<Nのブロック形状になっていれば、水平方向のフィルタ処理を先に行い次に垂直方向のフィルタ処理を行い、M>Nのブロック形状になっていれば垂直方向のフィルタ処理を先に行い次に水平方向のフィルタ処理を行うように制御する。これにより、|(M−N)(T−1)|の中間画素格納メモリ105の容量削減及び2回目の方向のフィルタ処理での画素転送量の削減が可能となる。
なお、H.264規格では、T=6と決められており、M及びNは16,8,4の値である。また、H.264規格において16×8のブロック形状に分割された1MB(マクロブロック)分の動き補償画像生成を行う場合、水平方向から6タップフィルタを実施した場合は式31、垂直方向から6タップフィルタを実施した場合は式32に示す処理サイクルが必要となり、水平方向からフィルタ処理を実行するときと較べて、(962−882)/962=8%の転送量削減が実現できる。
((16+5)×(8+5)×1画素幅+
16 ×(8+5)×1画素幅)×2ブロック=962 …(31)
((16+5)×(8+5)×1画素幅+
(16+5)×8 ×1画素幅)×2ブロック=882 …(32)
同様に8×4のブロック形状に分割された1MB(マクロブロック)分の動き補償画像生成を行う場合、上記のように水平方向から6タップフィルタを実施した場合は式33、垂直方向から6タップフィルタを実施した場合は式34に示す処理サイクルが必要となり、水平方向からフィルタ処理を実行するときと較べて、(1,512−1,352)/1,352=11%の転送量削減が実現できる。
((8+5)×(4+5)×1画素幅+
8 ×(4+5)×1画素幅)×8ブロック=1,512…(33)
((8+5)×(4+5)×1画素幅+
(8+5)× 4 ×1画素幅)×8ブロック=1,352…(34)
以上のように、データ転送制御部103は、対象ブロックの水平方向の画素数Mと垂直方向の画素数Nとを比較して、6タップフィルタの演算を水平方向または垂直方向のどちらを最初に実行するかを判定した上で、データ転送を行っているので、中間画素格納メモリ105の実装容量を削減しつつ、マルチフレームメモリ402から動き補償装置100へのデータ転送量を削減することができる。
(実施の形態3)
本実施の形態では、実施の形態1で説明した方法において、対象ブロックを分割してフィルタ処理を行う場合について説明する。なお、本実施の形態の構成は、実施の形態1と同様であるので、図6に示したブロック図を用いて説明する。
実施の形態1で説明した方法と異なる点は、データ転送制御部103における制御方法に関するのみである。ここでは、そのデータ転送制御及び動作処理に関してのみ詳細に説明する。
6タップフィルタの実行は必ずしも指定されているブロック形状で行う必要がなく、分割処理しても同じ結果が得られる。この分割したフィルタ制御方法について、図11〜図14を用いて説明する。
図12は、動き補償画像生成を行うブロックの一例を示す図である。ここでは、ブロック形状は、水平方向Mが16画素、垂直方向Nが16画素となる大きさであり、6タップフィルタのフィルタ処理に必要な周辺画素が5(=T−1)画素分付加されている。また、図12において、対象ブロックの画素は白抜きの四角で、6タップフィルタに必要な周辺画素は斜線をつけた四角形で、小数精度画素は丸印で表している。
図12に示すブロックを、水平方向に2分割、垂直方向に4分割して処理する場合、分割された水平方向M/mが8画素、垂直方向N/nが4画素のブロックは、図13に示すようにそれぞれについて、6タップフィルタのフィルタ処理に必要な周辺画素が付加されてマルチフレームメモリ402から動き補償装置100へ転送されることになる。
このように分割処理を行って、最初に垂直方向のフィルタを実行する場合、中間画素格納メモリ105が必要とする画素容量は、上記実施の形態2と同様に次式で表される。
(8+5)×4=52 …(35)
例えば、分割処理を行わずにフィルタを実行する場合、中間画素格納メモリ105が必要とする画素容量は、次式で表される。
(16+5)×16=336 …(36)
以上、水平方向Mが16画素、垂直方向Nが16画素となる大きさのブロックを水平方向に2分割、垂直方向に4分割して処理する場合を例に説明したが、次に、一般的に水平方向がM、垂直方向がNの画素数となる大きさのブロックを水平方向にm分割、垂直方向にn分割して処理する場合について説明する。
図11(b)は、図11(a)の動き補償画像生成処理を行うブロックに関して水平方向をm個に分割し(M/mは自然数)、垂直方向をn個に分割(N/nは自然数)することを示している。図11(c)は、分割領域にフィルタ処理に必要な周辺画素をつけた状態の転送領域を表している。
データ転送制御部103は、図11(b)に図示したm×n個に分割した分割処理ブロックに対して、動き補償画像生成処理をm×n回繰り返して処理を行うように制御する。上記処理方法により、中間画素格納メモリ105の最低限必要な容量は、
MIN(M×(N+T−1),(M+T−1)×N)
から、
MIN(M/m×(N/n+T−1),(M/m+T−1)×N/n)
に削減することが可能となる。ここで、MIN(A,B)は、AかBのどちらか小さい方の値を返す関数を表している。
図14は、データ転送制御部103でデータ転送を制御する動作の流れを示すフローチャートである。
まず、データ転送制御部103は、M/mとN/nとを比較し、M/mがN/nより大きいか否かを判定する(ステップS201)。ここで、M/mの方がN/nよりも大きな値となっている場合(ステップS201でYES)には、N方向に6タップフィルタ処理を実行し(ステップS202)、次にM方向に6タップフィルタ処理を実行する(ステップS203)。
一方、上記判定でM/mの方がN/nよりも大きな値となっていない場合(ステップS201でNO)には、M方向に6タップフィルタ処理を実行し(ステップS204)、次にN方向に6タップフィルタ処理を実行する(ステップS205)。
次に、それぞれM方向とN方向のフィルタ処理を実行した後に、1/4画素精度の線形補間フィルタ処理を実行する(ステップS206)。
以上の処理をm×n回のループで処理を行い、対象ブロックの動き補償画像全体の生成を行う。
なお、H.264規格では、T=6であり、M及びNは16,8,4の値となる。従ってm、nは2,4,8,16などの値をとり得る。
以上のように、データ転送制御部103は、対象ブロックを分割してフィルタ処理を行うように、データ転送を行っているので、中間画素格納メモリ105の実装容量を削減しつつ、マルチフレームメモリ402から動き補償装置100へのデータ転送量を削減することができる。
(実施の形態4)
本実施の形態では、中間画素データに加えて整数画素位置の画素データを中間画素格納メモリに格納する場合について説明する。
図15は本発明の実施の形態4に係る動き補償装置(動き補償部)の構成を示すブロック図である。なお、図6に示す実施の形態1と同様の部分については同じ符号を付し、その説明を省略する。
本実施の形態4の動き補償装置300は、実施の形態1に対して遅延回路302、6タップフィルタ303、ビットシフト304が追加されており、画素選択部104とビットシフト205が削除された構成となっている。また、中間画素格納メモリ301がバンク構成をとっている。
中間画素格納メモリ301の容量を大きくとることができれば、さらに画素転送量を削減できる。また、中間画素格納メモリ301を読み書きを独立で行う2ポートメモリなどでバンク構成をとることでさらに高速な動作を実現することが可能である。以下図15を用いて動作の説明を行う。
マルチフレームメモリ402から転送される画素データMCpel1は、遅延回路201にのみに入力される。遅延回路201の遅延データは、6タップフィルタ503に入力され、フィルタ結果は中間画素格納メモリ301に格納される。
また、遅延回路201の4段目の遅延画素は信号SGHMNとして出力され、6タップフィルタ503のフィルタ結果と併せて中間画素格納メモリ301に格納される。中間画素格納メモリ301に格納された画素データは、画素データMCpel3として出力され、6タップフィルタ後のデータは実施の形態1とは異なり画素選択部104を介さずに遅延回路202に入力される。一方、画素データMCpel3の内で整数画素を遅延させたデータSGHMNの読み出し値は、遅延回路302に入力される。遅延回路302は、3段目の遅延データを図3に示す画素Mもしくは画素Nの整数画素位置のデータとして信号SMNを出力し、4段目の遅延データを図3に示す画素Gもしくは画素Hの整数画素位置のデータとして信号SGHを出力する。
6タップフィルタ303は、遅延回路302からの遅延信号を入力とし、6タップフィルタを実行し、図3に示す画素hもしくは画素mの画素位置のフィルタ結果として信号Sh1m1を出力する。ビットシフト304は、フィルタ結果Sh1m1を入力とし、図3に示す画素hもしくは画素mの補間画素データとして信号Shmを出力する。
セレクタ加算器305は、Ss、Sj、Sb、SMN、Shm及びSGHを入力とし、動き補償位置判定信号SmcPosに従って、画素選択と必要であれば加算を行い信号SSelAddとして出力する。ビットシフト518は、信号SSelAddを入力とし、動き補償位置信号SmcPos信号に従って、必要であればビットシフトを行って動き補償画素MCpel2として出力する。
次に、図16(a)に示すような複数のブロックの動き補償画像生成を行う場合の動作について、説明する。図16(b)は各ブロック毎の水平および垂直方向のフィルタ処理のタイミングを示す図である。なお、丸数字1〜4で示すブロックを数字の順に処理するものとし、また水平方向のフィルタ処理を最初に実行するものとする。
まず、ブロック1について、遅延回路201および6タップフィルタ503で水平方向のフィルタ処理を最初に実行する(ブロック1のF1)。
次に、遅延回路302および6タップフィルタ303でブロック1の整数画素位置の画素データの垂直方向のフィルタ処理と、遅延回路202および6タップフィルタ511によりブロック1の6タップフィルタ503で処理された後のデータの垂直方向のフィルタ処理を実行する(ブロック1のF2)。このとき、同時に、ブロック2について、遅延回路201および6タップフィルタ503で水平方向のフィルタ処理を実行する(ブロック2のF1)。
次に、遅延回路302および6タップフィルタ303でブロック2の整数画素位置の画素データの垂直方向のフィルタ処理と、遅延回路202および6タップフィルタ511によりブロック2の6タップフィルタ503で処理された後のデータの垂直方向のフィルタ処理を実行する(ブロック2のF2)。このとき、同時に、ブロック3について、遅延回路201および6タップフィルタ503で水平方向のフィルタ処理を実行する(ブロック3のF1)。以下、同様に図16(b)に示すようにブロック3の垂直方向のフィルタ処理とブロック4の水平方向のフィルタ処理を同時に行う。
上記構成をとることによって、中間画素格納メモリ301の画素容量は実施の形態1と比べて多く必要とするが、マルチフレームメモリ402から動き補償装置300への画素転送量は、最大のブロック形状である16×16を1ブロック転送する場合と、最小のブロック形状である4×4を16ブロック転送する場合に次式で表されるようになる。
((16+5)×(16+5)×1画素幅× 1ブロック= 441…(37)
(( 4+5)×( 4+5)×1画素幅×16ブロック=1,296…(38)
従って、式22、式23、式37、及び式38に示すように、従来の転送量に較べて16×16ブロック形状では、1/4.6に、4×4ブロック形状では、1/2.7に抑えることを実現する。
また、中間画素データに加えて整数画素位置の画素データを中間画素格納メモリ301に格納しているので、垂直方向のフィルタ処理と他のブロックの水平方向のフィルタ処理とを並列に行うことができ、処理速度を向上させることができる。
(実施の形態5)
さらに、上記各実施の形態で示した動き補償装置、この動き補償装置を用いた画面間予測符号化装置、または画面間予測復号化装置をソフトウェアにより実現するためのプログラムを、フレキシブルディスク等の記憶媒体に記録するようにすることにより、上記各実施の形態で示した処理を、独立したコンピュータシステムにおいて簡単に実施することが可能となる。
図17は、上記実施の形態1から実施の形態4の動き補償装置、この動き補償装置を用いた画面間予測符号化装置、または画面間予測復号化装置を実現するプログラムを格納したフレキシブルディスクを用いて、コンピュータシステムにより実施する場合の説明図である。
図17(b)は、フレキシブルディスクの正面からみた外観、断面構造、及びフレキシブルディスクを示し、図17(a)は、記録媒体本体であるフレキシブルディスクの物理フォーマットの例を示している。フレキシブルディスクFDはケースF内に内蔵され、該ディスクの表面には、同心円状に外周からは内周に向かって複数のトラックTrが形成され、各トラックは角度方向に16のセクタSeに分割されている。従って、上記プログラムを格納したフレキシブルディスクでは、上記フレキシブルディスクFD上に割り当てられた領域に、上記プログラムとしての動き補償装置、この動き補償装置を用いた画面間予測符号化装置、または画面間予測復号化装置が記録されている。
また、図17(c)は、フレキシブルディスクFDに上記プログラムの記録再生を行うための構成を示す。上記プログラムをフレキシブルディスクFDに記録する場合は、コンピュータシステムCsから上記プログラムとしての動き補償装置、この動き補償装置を用いた画面間予測符号化装置、または画面間予測復号化装置をフレキシブルディスクドライブを介して書き込む。また、フレキシブルディスク内のプログラムにより上記動き補償装置、この動き補償装置を用いた画面間予測符号化装置、または画面間予測復号化装置をコンピュータシステム中に構築する場合は、フレキシブルディスクドライブによりプログラムをフレキシブルディスクから読み出し、コンピュータシステムに転送する。
なお、上記説明では、記録媒体としてフレキシブルディスクを用いて説明を行ったが、光ディスクを用いても同様に行うことができる。また、記録媒体はこれに限らず、ICカード、ROMカセット等、プログラムを記録できるものであれば同様に実施することができる。
さらにここで、上記各実施の形態で示した動き補償装置、この動き補償装置を用いた画面間予測符号化装置、または画面間予測復号化装置の応用例とそれを用いたシステムを説明する。
図18は、コンテンツ配信サービスを実現するコンテンツ供給システムex100の全体構成を示すブロック図である。通信サービスの提供エリアを所望の大きさに分割し、各セル内にそれぞれ固定無線局である基地局ex107〜ex110が設置されている。
このコンテンツ供給システムex100は、例えば、インターネットex101にインターネットサービスプロバイダex102および電話網ex104、および基地局ex107〜ex110を介して、コンピュータex111、PDA(personal digital assistant)ex112、カメラex113、携帯電話ex114、カメラ付きの携帯電話ex115などの各機器が接続される。
しかし、コンテンツ供給システムex100は図18のような組合せに限定されず、いずれかを組み合わせて接続するようにしてもよい。また、固定無線局である基地局ex107〜ex110を介さずに、各機器が電話網ex104に直接接続されてもよい。
カメラex113はデジタルビデオカメラ等の動画撮影が可能な機器である。また、携帯電話は、PDC(Personal Digital Communications)方式、CDMA(Code Division Multiple Access)方式、W−CDMA(Wideband−Code Division Multiple Access)方式、若しくはGSM(Global System for Mobile Communications)方式の携帯電話機、またはPHS(Personal Handyphone System)等であり、いずれでも構わない。
また、ストリーミングサーバex103は、カメラex113から基地局ex109、電話網ex104を通じて接続されており、カメラex113を用いてユーザが送信する符号化処理されたデータに基づいたライブ配信等が可能になる。撮影したデータの符号化処理はカメラex113で行っても、データの送信処理をするサーバ等で行ってもよい。また、カメラex116で撮影した動画データはコンピュータex111を介してストリーミングサーバex103に送信されてもよい。カメラex116はデジタルカメラ等の静止画、動画が撮影可能な機器である。この場合、動画データの符号化はカメラex116で行ってもコンピュータex111で行ってもどちらでもよい。また、符号化処理はコンピュータex111やカメラex116が有するLSIex117において処理することになる。なお、画面間予測符号化・復号化用のソフトウェアをコンピュータex111等で読み取り可能な記録媒体である何らかの蓄積メディア(CD−ROM、フレキシブルディスク、ハードディスクなど)に組み込んでもよい。さらに、カメラ付きの携帯電話ex115で動画データを送信してもよい。このときの動画データは携帯電話ex115が有するLSIで符号化処理されたデータである。
このコンテンツ供給システムex100では、ユーザがカメラex113、カメラex116等で撮影しているコンテンツ(例えば、音楽ライブを撮影した映像等)を上記実施の形態同様に符号化処理してストリーミングサーバex103に送信する一方で、ストリーミングサーバex103は要求のあったクライアントに対して上記コンテンツデータをストリーム配信する。クライアントとしては、上記符号化処理されたデータを復号化することが可能な、コンピュータex111、PDAex112、カメラex113、携帯電話ex114等がある。このようにすることでコンテンツ供給システムex100は、符号化されたデータをクライアントにおいて受信して再生することができ、さらにクライアントにおいてリアルタイムで受信して復号化し、再生することにより、個人放送をも実現可能になるシステムである。
このシステムを構成する各機器の符号化、復号化には上記各実施の形態で示した画面間予測符号化装置または画面間予測復号化装置を用いるようにすればよい。
その一例として携帯電話について説明する。
図19は、上記実施の形態で説明した画面間予測符号化装置と画面間予測復号化装置を用いた携帯電話ex115を示す図である。携帯電話ex115は、基地局ex110との間で電波を送受信するためのアンテナex201、CCDカメラ等の映像、静止画を撮ることが可能なカメラ部ex203、カメラ部ex203で撮影した映像、アンテナex201で受信した映像等が復号化されたデータを表示する液晶ディスプレイ等の表示部ex202、操作キーex204群から構成される本体部、音声出力をするためのスピーカ等の音声出力部ex208、音声入力をするためのマイク等の音声入力部ex205、撮影した動画もしくは静止画のデータ、受信したメールのデータ、動画のデータもしくは静止画のデータ等、符号化されたデータまたは復号化されたデータを保存するための記録メディアex207、携帯電話ex115に記録メディアex207を装着可能とするためのスロット部ex206を有している。記録メディアex207はSDカード等のプラスチックケース内に電気的に書換えや消去が可能な不揮発性メモリであるEEPROM(Electrically Erasable and Programmable Read Only Memory)の一種であるフラッシュメモリ素子を格納したものである。
さらに、携帯電話ex115について図20を用いて説明する。携帯電話ex115は表示部ex202及び操作キーex204を備えた本体部の各部を統括的に制御するようになされた主制御部ex311に対して、電源回路部ex310、操作入力制御部ex304、画像符号化部ex312、カメラインターフェース部ex303、LCD(Liquid Crystal Display)の制御部ex302、画像復号化部ex309、多重分離部ex308、記録再生部ex307、変復調回路部ex306及び音声処理部ex305が同期バスex313を介して互いに接続されている。
電源回路部ex310は、ユーザの操作により終話及び電源キーがオン状態にされると、バッテリパックから各部に対して電力を供給することによりカメラ付ディジタル携帯電話ex115を動作可能な状態に起動する。
携帯電話ex115は、CPU、ROM及びRAM等でなる主制御部ex311の制御に基づいて、音声通話モード時に音声入力部ex205で集音した音声信号を音声処理部ex305によってディジタル音声データに変換し、これを変復調回路部ex306でスペクトラム拡散処理し、送受信回路部ex301でディジタルアナログ変換処理及び周波数変換処理を施した後にアンテナex201を介して送信する。また携帯電話機ex115は、音声通話モード時にアンテナex201で受信した受信データを増幅して周波数変換処理及びアナログディジタル変換処理を施し、変復調回路部ex306でスペクトラム逆拡散処理し、音声処理部ex305によってアナログ音声データに変換した後、これを音声出力部ex208を介して出力する。
さらに、データ通信モード時に電子メールを送信する場合、本体部の操作キーex204の操作によって入力された電子メールのテキストデータは操作入力制御部ex304を介して主制御部ex311に送出される。主制御部ex311は、テキストデータを変復調回路部ex306でスペクトラム拡散処理し、送受信回路部ex301でディジタルアナログ変換処理及び周波数変換処理を施した後にアンテナex201を介して基地局ex110へ送信する。
データ通信モード時に画像データを送信する場合、カメラ部ex203で撮像された画像データをカメラインターフェース部ex303を介して画像符号化部ex312に供給する。また、画像データを送信しない場合には、カメラ部ex203で撮像した画像データをカメラインターフェース部ex303及びLCD制御部ex302を介して表示部ex202に直接表示することも可能である。
画像符号化部ex312は、本願発明で説明した画面間予測符号化装置を備えた構成であり、カメラ部ex203から供給された画像データを上記実施の形態で示した画面間予測符号化装置に用いた符号化方法によって圧縮符号化することにより符号化画像データに変換し、これを多重分離部ex308に送出する。また、このとき同時に携帯電話機ex115は、カメラ部ex203で撮像中に音声入力部ex205で集音した音声を音声処理部ex305を介してディジタルの音声データとして多重分離部ex308に送出する。
多重分離部ex308は、画像符号化部ex312から供給された符号化画像データと音声処理部ex305から供給された音声データとを所定の方式で多重化し、その結果得られる多重化データを変復調回路部ex306でスペクトラム拡散処理し、送受信回路部ex301でディジタルアナログ変換処理及び周波数変換処理を施した後にアンテナex201を介して送信する。
データ通信モード時にホームページ等にリンクされた動画像ファイルのデータを受信する場合、アンテナex201を介して基地局ex110から受信した受信データを変復調回路部ex306でスペクトラム逆拡散処理し、その結果得られる多重化データを多重分離部ex308に送出する。
また、アンテナex201を介して受信された多重化データを復号化するには、多重分離部ex308は、多重化データを分離することにより画像データのビットストリームと音声データのビットストリームとに分け、同期バスex313を介して当該符号化画像データを画像復号化部ex309に供給すると共に当該音声データを音声処理部ex305に供給する。
次に、画像復号化部ex309は、本願発明で説明した画面間予測復号化装置を備えた構成であり、画像データのビットストリームを上記実施の形態で示した符号化方法に対応した復号化方法で復号化することにより再生動画像データを生成し、これをLCD制御部ex302を介して表示部ex202に供給し、これにより、例えばホームページにリンクされた動画像ファイルに含まれる動画データが表示される。このとき同時に音声処理部ex305は、音声データをアナログ音声データに変換した後、これを音声出力部ex208に供給し、これにより、例えばホームページにリンクされた動画像ファイルに含まる音声データが再生される。
なお、上記システムの例に限られず、最近は衛星、地上波によるディジタル放送が話題となっており、図21に示すようにディジタル放送用システムにも上記実施の形態の少なくとも画面間予測符号化装置または画面間予測復号化装置のいずれかを組み込むことができる。具体的には、放送局ex409では映像情報のビットストリームが電波を介して通信または放送衛星ex410に伝送される。これを受けた放送衛星ex410は、放送用の電波を発信し、この電波を衛星放送受信設備をもつ家庭のアンテナex406で受信し、テレビ(受信機)ex401またはセットトップボックス(STB)ex407などの装置によりビットストリームを復号化してこれを再生する。また、記録媒体であるCDやDVD等の蓄積メディアex402に記録したビットストリームを読み取り、復号化する再生装置ex403にも上記実施の形態で示した画面間予測復号化装置を実装することが可能である。この場合、再生された映像信号はモニタex404に表示される。また、ケーブルテレビ用のケーブルex405または衛星/地上波放送のアンテナex406に接続されたセットトップボックスex407内に画面間予測復号化装置を実装し、これをテレビのモニタex408で再生する構成も考えられる。このときセットトップボックスではなく、テレビ内に画面間予測復号化装置を組み込んでも良い。また、アンテナex411を有する車ex412で衛星ex410からまたは基地局ex107等から信号を受信し、車ex412が有するカーナビゲーションex413等の表示装置に動画を再生することも可能である。
更に、画像信号を上記実施の形態で示した画面間予測符号化装置で符号化し、記録媒体に記録することもできる。具体例としては、DVDディスクex421に画像信号を記録するDVDレコーダや、ハードディスクに記録するディスクレコーダなどのレコーダex420がある。更にSDカードex422に記録することもできる。レコーダex420が上記実施の形態で示した画面間予測復号化装置を備えていれば、DVDディスクex421やSDカードex422に記録した画像信号を再生し、モニタex408で表示することができる。
なお、カーナビゲーションex413の構成は例えば図20に示す構成のうち、カメラ部ex203とカメラインターフェース部ex303、画像符号化部ex312を除いた構成が考えられ、同様なことがコンピュータex111やテレビ(受信機)ex401等でも考えられる。
また、上記携帯電話ex114等の端末は、符号化器・復号化器を両方持つ送受信型の端末の他に、符号化器のみの送信端末、復号化器のみの受信端末の3通りの実装形式が考えられる。
このように、上記実施の形態で示した画面間予測符号化装置あるいは画面間予測復号化装置を上述したいずれの機器・システムに用いることは可能であり、そうすることで、上記実施の形態で説明した効果を得ることができる。
また、本発明はかかる上記実施形態に限定されるものではなく、本発明の範囲を逸脱することなく種々の変形または修正が可能である。
また、図5、図6、および図15に示したブロック図の各機能ブロックは典型的には集積回路であるLSIとして実現される。このLSIは1チップ化されても良いし、複数チップ化されても良い。(例えばメモリ以外の機能ブロックが1チップ化されていても良い。)ここでは、LSIとしたが、集積度の違いにより、IC、システムLSI、スーパーLSI、ウルトラLSIと呼称されることもある。
また、集積回路化の手法はLSIに限るものではなく、専用回路又は汎用プロセッサで実現してもよい。LSI製造後に、プログラムすることが可能なFPGA(Field Programmable Gate Array)や、LSI内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサを利用しても良い。
さらには、半導体技術の進歩又は派生する別技術によりLSIに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックの集積化を行ってもよい。バイオ技術の適応等が可能性としてありえる。
また、各機能ブロックのうち、例えばマルチフレームメモリ402のような符号化時または復号化時の参照対象となるデータを格納する手段だけ1チップ化せずに別構成としても良い。この場合、フィルタ処理対象データをフィルタ処理前に一時的に蓄えるバッファメモリをマルチフレームメモリ402と遅延回路201の間に設けることもできる。
以上のように、本発明に係る動き補償装置、画面間予測符号化装置および画面間予測復号化装置は、例えばコンテンツ配信装置やディジタル放送装置、携帯電話、DVD装置、およびパーソナルコンピュータ等で、効率的に動き補償画素を生成したり、動画像を構成する各ピクチャを符号化して符号列を生成したり、生成された符号列を復号化したりする等に有用である。
本発明は、ピクチャ間で小数画素精度の動き補償予測を行う動き補償装置に関し、特に高次タップのフィルタを用いて動き補償画像生成する動き補償装置に関する。
近年、マルチメディアアプリケーションの発展に伴い、画像・音声・テキストなど、あらゆるメディアの情報を統一的に扱うことが一般的になってきた。この時、全てのメディアをディジタル化することにより、統一的にメディアを扱うことが可能になる。しかしながら、ディジタル化された画像は膨大なデータ量を持つため、蓄積・伝送のためには、画像の情報圧縮技術が不可欠である。一方で、圧縮した画像データを相互運用するためには、圧縮技術の標準化も重要である。画像圧縮技術の標準規格としては、ITU‐T(国際電気通信連合 電気通信標準化部門)のH.621、H.263、ISO/IEC(国際標準化機構 国際電気標準会議)のMPEG(Moving Picture Experts Group)−1、MPEG−2、MPEG−4など、またITU−TとMPEGの合同であるJVT(Joint Video Team)により現在標準化中のH.264(MPEG−4AVC)がある。
一般に動画像の符号化では、時間方向および空間方向の冗長性を削減することによって情報量の圧縮を行う。そこで時間的な冗長性の削減を目的とする画面間予測符号化では、前方または後方のピクチャを参照してブロック単位で動きの検出および予測画像の作成を行い、得られた予測画像と符号化対象ピクチャとの差分値に対して符号化を行う。ここで、ピクチャとは1枚の画面を表す用語であり、プログレッシブ画像ではフレームを意味し、インタレース画像ではフレームもしくはフィールドを意味する。ここで、インタレース画像とは、1つのフレームが時刻の異なる2つのフィールドから構成される画像である。インタレース画像の符号化や復号化処理においては、1つのフレームをフレームのまま処理したり、2つのフィールドとして処理したり、フレーム内のブロック毎にフレーム構造またはフィールド構造として処理したりすることができる。
参照画像を持たず画面内予測符号化を行うものをIピクチャと呼ぶ。また、1枚の参照画像のみを参照し画面間予測符号化を行うものをPピクチャと呼ぶ。また、同時に2枚の参照画像を参照して画面間予測符号化を行うことのできるものをBピクチャと呼ぶ。Bピクチャは表示時間が前方もしくは後方から任意の組み合わせとして2枚のピクチャを参照することが可能である。参照画像(参照ピクチャ)は符号化の基本単位であるマクロブロックごとに指定することができるが、符号化を行ったビットストリーム中に先に記述される方の参照ピクチャを第1参照ピクチャ、後に記述される方を第2参照ピクチャとして区別する。ただし、これらのピクチャを符号化する場合の条件として、参照するピクチャが既に符号化されている必要がある。
Pピクチャ又はBピクチャの符号化には、動き補償画面間予測符号化が用いられている。動き補償画面間予測符号化とは、画面間予測符号化に動き補償を適用した符号化方式である。動き補償とは、単純に参照ピクチャの画素値から予測するのではなく、ピクチャ内の各部の動き量(以下、これを動きベクトルと呼ぶ)を検出し、当該動き量を考慮した予測を行うことにより予測精度を向上すると共に、データ量を減らす方式である。例えば、符号化対象ピクチャの動きベクトルを検出し、その動きベクトルの分だけシフトした予測値と符号化対象ピクチャとの予測残差を符号化することによりデータ量を減している。この方式の場合には、復号化の際に動きベクトルの情報が必要になるため、動きベクトルも符号化されて記録又は伝送される。
動きベクトルはマクロブロック単位で検出されており、具体的には、符号化対象ピクチャ側のマクロブロックを固定しておき、参照ピクチャ側のマクロブロックを探索範囲内で移動させ、符号化対象ブロックと最も似通った参照ブロックの位置を見つけることにより、動きベクトルが検出される。
図1は従来の画面間予測符号化装置の構成を示すブロック図である。
この画面間予測符号化装置は、動き検出部401、マルチフレームメモリ402、減算部403、減算部404、動き補償部405、符号化部406、加算部407、動きベクトルメモリ408、および動きベクトル予測部409を備えている。
動き検出部401は、マルチフレームメモリ402から出力される動き検出参照画素MEpelと画面信号Vinとを比較し、動きベクトルMVと参照ピクチャ番号RefNoを出力する。参照ピクチャ番号RefNoは、複数の参照画像の中から選択された、対象画像で参照する参照画像を特定する識別信号である。動きベクトルMVは、動きベクトルメモリ408に一時的に記憶されたのち近傍動きベクトルPrevMVとして動きベクトル予測部409へ出力される。動きベクトル予測部409は、入力された近傍動きベクトルPrevMVを参照して予測動きベクトルPredMVを予測する。減算部404は動きベクトルMVから予測動きベクトルPredMVを減算し、その差を動きベクトル予測差分DifMVとして出力する。
一方、マルチフレームメモリ402は、参照ピクチャ番号RefNoおよび動きベクトルMVで示される画素を動き補償参照画素MCpe11として出力する。動き補償部405は、小数画素精度の参照画素を生成し、参照画面画素MCpe12として出力する。減算部403は、画面信号Vinから参照画面画素MCpe12を減算し、画面予測誤差DifPelを出力する。
符号化部406は、画面予測誤差DifPelと動きベクトル予測差分DifMVと参照ピクチャ番号RefNoを可変長符号化し、符号化信号Strを出力する。なお、符号化時に画面予測誤差の復号化結果である復号画面予測誤差RecDifPelも同時に出力する。復号画面予測誤差RecDifPelは、画面予測誤差DifPelに符号化誤差が重畳されたものであり、画面間予測復号化装置で符号化信号Strを復号化して得られる画面間予測誤差と一致する。
加算部407は、参照画面画素MCpe12に復号画面予測誤差RecDifPelを加算し、復号画面RecPelとしてマルチフレームメモリ402に記憶される。但し、マルチフレームメモリ402の容量を有効に利用するため、マルチフレームメモリ402に記憶されている画面の領域は不要な場合は開放され、またマルチフレームメモリ402に記憶する必要が無い画面の復号画面RecPelはマルチフレームメモリ402に記憶されない。なお、符号化の処理は16×16画素のマクロブロックと呼ばれる単位で行われ、動き補償のブロックのサイズとしては、H.264では、4×4、4×8、8×4、8×8、8×16、16×8、16×16の7通りの動き補償のブロックサイズの中からマクロブロック単位で適切なブロックサイズを選択して符号化に使用する。
図2は従来の画面間予測復号化装置の構成を示すブロック図である。なお、同図において、図1に示す画面間予測符号化装置と同様の部分については同じ符号を付し、その説明を省略する。
図2に示す従来の画面間予測復号化装置は、図1に示す従来の画面間予測符号化装置で符号化された符号化信号Strを復号化して復号画面信号Voutを出力する装置であり、マルチフレームメモリ402、動き補償部405、加算部407、加算部501、動きベクトルメモリ408、動きベクトル予測部409、および復号化部502を備えている。
復号化部502は、符号化信号Strを復号化し、復号画面予測誤差RecDifPel、動きベクトル予測差分DifMV、および参照ピクチャ番号RefNoを出力する。加算部501は、動きベクトル予測部409から出力される予測動きベクトルPredMVと動きベクトル予測差分DifMVを加算し、動きベクトルMVを復号する。
マルチフレームメモリ402は、参照ピクチャ番号RefNoおよび動きベクトルMVで示される画素を動き補償参照画素MCpel1として出力する。動き補償部405は、小数画素精度の参照画素を生成し、参照画面画素MCpel2として出力する。加算部407は、参照画面画素MCpel2に復号画面予測誤差RecDifPelを加算し、復号画面RecPelとしてマルチフレームメモリ402へ記憶する。但し、マルチフレームメモリ402の容量を有効に利用するため、マルチフレームメモリ402に記憶されている画面の領域は不要な場合は開放され、またマルチフレームメモリ402に記憶する必要が無い画面の復号画面RecPelはマルチフレームメモリ402に記憶されない。以上のようにして、復号画面信号Vout、すなわち復号画面RecPelを符号化信号Strから正しく復号化することができる。
ところで、H.264規格では1/4画素までの単位で動き補償を行うことが許可されている(MPEG-4 Simple Profileでは1/2画素まで)。この際、H.264規格ではその線形フィルタ画素補間の方法として6タップフィルタが採用されており、1/2精度画素を周辺の6画素から求めることが決められている。この6タップフィルタによる画素補間の方法について、図3を用いて説明する。
図3はH.264における輝度成分の画素補間方法を説明するための概略図である。画素F00、F01、F02、F03、F04、F05、F10、F11、F12、F13、F14、F15、F20、F21、F22、F23、F24、F25、F30、F31、F32、F33、F34、F35、F40、F41、F42、F43、F44、F45、F50、F51、F52、F53、F54、及びF55は整数画素位置の画素であり、斜線をつけた四角形で表している。ここで、A、B、C、D、E、F、G、H、I、J、K、L、M、N、P、Q、R、S、T、及びUは、それぞれの位置及びその画素値を表している。また、小数画素位置の画素に関しては、白抜きの四角で表している。画素aa、bb、cc、dd、ee、ff、gg、及びhhは6タップフィルタの係数を乗算したビットシフト前の中間計算画素値及びその位置を示している。a、b、c、d、e、f、g、h、i、j、k、m、n、p、q、r、及びsは各小数画素位置における6タップフィルタと線形補間を行った画素値及びその位置を表している。以下、a、b、c、d、e、f、g、h、i、j、k、n、p、q、及びrの各小数画素位置の画素値計算方法を説明する。ここで、b1、h1、s1、m1はそれぞれb、h、s、mの画素値を求めるための6タップフィルタ係数を乗算したビットシフト前の中間計算画素値を表す。
1/2精度画素bの画素値を計算する場合、水平方向の周辺の整数精度画素E、F、G、H、I、Jの6画素を用いて式1で表す6タップフィルタを実行することで中間計算画素値b1を求める。次に、式2で表すビットシフトにより整数精度の四捨五入付きの割り算処理と、画素レベルを有効範囲に収めるためのまるめ処理を行い、水平方向に1/2精度画素移動した位置bの画素値が求められる。
b1=(E−5×F+20×G+20×H−5×I+J) …(1)
b=Clip((b1+16)>>5) …(2)
ここで、Clip関数は丸め処理を表しており、0以下の値は0に補正し、255以上の値は255に補正することで出力結果が0から255の値に制限する関数である。以下、Clip関数の処理は簡単に丸め処理と記載する。
また、1/2精度画素hの画素値を計算する場合、垂直方向の周辺の整数精度画素A、C、G、M、R、Tの6画素を用いて式3で表す6タップフィルタを実行することで同様に中間計算画素値h1を求め、次に式4で表すビットシフトと丸め処理を行い垂直方向に移動した1/2精度の画素位置hの画素値が求められる。
h1=(A−5×C+20×G+20×M−5×R+T) …(3)
h=Clip((h1+16)>>5) …(4)
また、1/2精度画素jの画素値を計算する場合は、中間計算画素値b1と同様に計算した中間計算画素値s1、aa、bb、gg、hhの6画素を用いて式5で表すタップフィルタを実行する、または中間計算画素値h1と同様に計算したm1、cc、dd、ee、ffの6画素を用いて式6で表す6タップフィルタを実行することで中間計算画素値j1を求める。次に、式7で表すビットシフトと丸め処理を行い水平・垂直それぞれの方向に移動した1/2精度の画素位置の画素値jが求められる。ここで、画素値jの値を少しでもまるめ誤差をなくすよう、中間計算画素値j1の途中計算ではビットシフト前の中間計算画素値m1、s1、aa、bb、cc、dd、ee、ff、gg、hhを用いて算出する。
j1=cc−5×dd+20×h1+20×m1−5×ee+ff …(5)
j1=aa−5×bb+20×b1+20×s1−5×gg+hh …(6)
j=Clip((j1+512)>>10) …(7)
また、1/2精度画素s、mの画素値はそれぞれ1/2精度画素b、hと同様に式8、式9のビットシフトと丸め処理で求めることができる。
s=Clip((s1+16)>>5) …(8)
m=Clip((m1+16)>>5) …(9)
最後に、整数精度画素G、H、M、N、式2、式4、式7、式8、及び式9から小数点以下四捨五入を行った画素値を計算することで、1/4精度画素a、c、d、n、f、i、k、q、e、g、p、及びrの値を計算する(式10〜式21)。
a=(G+b+1)>>1 …(10)
c=(H+b+1)>>1 …(11)
d=(G+h+1)>>1 …(12)
n=(M+h+1)>>1 …(13)
f=(b+j+1)>>1 …(14)
i=(h+j+1)>>1 …(15)
k=(j+m+1)>>1 …(16)
q=(j+s+1)>>1 …(17)
e=(b+h+1)>>1 …(18)
g=(b+m+1)>>1 …(19)
p=(h+s+1)>>1 …(20)
r=(m+s+1)>>1 …(21)
図4は、以上の動き補償画素生成を行う動き補償部405を、従来技術で構成した場合の構成を示す回路図である。動き補償部405は、図1の画面間予測符号化装置及び図2の画面間予測復号化装置で説明したものと同一のものであり、動き補償部405には、マルチフレームメモリ402から動き補償参照画素MCpel1が入力される。また、マルチフレームメモリ402は、図1の画面間予測符号化装置及び図2の画面間予測復号化装置で説明したものと同じものであるので説明を省略する。
動き補償部405は、遅延回路501と、高次タップフィルタ部502、信号選択及び加算を行うセレクタ加算器517、およびビットシフト518を備えている。
遅延回路501は、マルチフレームメモリ402から得られる動き補償参照画素MCpelを取得し、タイミングを遅延させながら画素データの保持及び出力を行う。高次タップフィルタ部502は、遅延回路501からの出力画素データを受け取り6タップフィルタ、ビットシフト及び丸め処理を行い、その結果を出力する。セレクタ加算器517は、遅延回路501および高次タップフィルタ部502から入力された画素値を動き補償画素位置に従って選択し、必要であれば加算を行い出力する。ビットシフト518は、セレクタ加算器517からの出力結果を動き補償画素位置に従って必要であればビットシフトし、必要がなければそのままの値を参照画面画素MCpel2として出力する。
遅延回路501は、横6画素を同時に取得し6段の遅延を行う。遅延回路501の構成バッファにおいて、バッファBA、バッファBB、バッファBC、バッファBD、バッファBE、バッファBF、バッファBG、バッファBH、バッファBI、バッファBJ、バッファBK、バッファBL、バッファBM、バッファBN、バッファBP、バッファBQ、バッファBR、バッファBS、バッファBT、及びバッファBUは、それぞれ図3の画素補間方法の概略図に示す整数画素位置A、B、C、D、E、F、G、H、I、J、K、L、M、N、P、Q、R、S、T、及びUの画素データが蓄えられる。
高次タップフィルタ部502は、複数の6タップフィルタ503〜511と、小数点以下の四捨五入と丸め処理を併せて行うための複数のビットシフト512〜516を備えている。6タップフィルタ503、6タップフィルタ504、6タップフィルタ505、6タップフィルタ506、6タップフィルタ507、6タップフィルタ508、6タップフィルタ509、及び6タップフィルタ510は、遅延回路501からの出力信号を受け取り、係数の乗算と加算を行い、それぞれ中間計算画素値Saa、Sbb、Sb1、Ss1、Sgg、Shh、Sm1、Sh1を出力する。この時、中間計算画素値Sb1、Sh1はそれぞれ式1、式3の計算による値になっており、その他の中間計算画素値Saa、Sbb、Ss1、Sgg、Shh、及びSm1の値も式1、式3同様の6タップフィルタの出力値であり、図3の画素補間方法の概略図に示すaa、bb、s1、gg、hh、及びm1に相当する。
6タップフィルタ511は、水平方向の6タップフィルタ結果の出力値Saa、Sbb、Sb1、Ss1、Sgg、Shh、Sm1、Sh1を入力とし、Sj1を式6で示した垂直方向の6タップフィルタ結果として出力する。ビットシフト512、ビットシフト513、ビットシフト514、ビットシフト515、及びビットシフト516は、それぞれ、Ss1、Sj1、Sb1、Sm1、及びSh1を入力とし、それぞれ式8、式7、式2、式9、及び式4で示した小数点以下四捨五入を行うビットシフトと丸め処理を行い、それぞれSs、Sj、Sb、Sm、及びShとして出力する。
セレクタ加算器517とビットシフト518は、遅延回路501からのバッファ値であるSN、SM、SH、及びSGと、高次タップフィルタ部502からの出力値であるSb、Ss、Sm、Sh、及びSjとを入力とし、動き補償画素位置に従って、必要であれば式10から式21の四捨五入付き平均値計算を行い、小数精度の動き補償画素MCpel2を出力する。
以上のような構成及び一連の動作を行うことで、動き補償参照画素MCpel1から1/4画素精度の動き補償画像を生成し、小数精度の動き補償画像MCpel2として出力し、復号画面信号Vout、すなわち復号画面RecPelを符号化信号Strから正しく復号化して出力することができる(例えば、非特許文献1参照)。
"Draft ITU−T Recomendation and Final Standard of Joint Video Specification" 8.4.2.2,Joint Video Team(JVT) of ISO/IEC MPEG & ITU−T VCEG,JVT−G050r1,27 May 2003
しかしながら、H.264規格の輝度信号について、上記のように従来技術で動き補償部を構成した場合、1画素あたりの動き補償画素生成のために、マルチフレームメモリ402から参照画素データを読み出すためのバスバンド幅が大きくなってしまうという課題がある。
つまり、例えば前述の図4で示したH.264規格の動き補償では、水平・垂直で半画素ずつずれた場所の画素を求めるには周辺の36画素が必要となっているため、6画素のデータ転送を5サイクル繰り返した後、1サイクルにつき1画素分の補償画素が出力されるようになる。1ブロック単位では、上記処理をブロックの列の回数だけ繰り返し6タップフィルタをかける。従って、H.264規格でとり得る最大のブロック形状である16×16ブロックを1つ処理する場合と、最小のブロック形状である4×4ブロックを16個処理する場合の各転送画素数は、それぞれ次の式22と式23のように計算することができる。
(16+5)×16×6画素幅× 1ブロック=2,016 …(22)
(4+5) × 4×6画素幅×16ブロック=3,456 …(23)
一方、高次タップのフィルタを用いない水平2画素・垂直2画素の線形補間程度で生成する動き補償画像の場合は、16×16のブロックサイズ及び4×4のブロックサイズの各転送画素数は、次の式24及び式25のように計算することができる。
(16+1)×16×2画素幅× 1ブロック= 544 …(24)
(4+1) × 4×2画素幅×16ブロック= 640 …(25)
従って、式22〜式25より、H.264規格では、マルチフレームメモリ402から1マクロブロック(MB)あたりに参照画像としての転送される画素転送数は、2画素間の線形補間で生成する場合と比べ、3.7倍から5.4倍となることがわかる。
そこで、本発明は上記のような問題を解決するためになされたものであり、回路規模の増加を抑えつつ、参照画素データを格納したマルチフレームメモリとのデータ転送量を削減し、効率的に動き補償画素を生成する動き補償装置を提供することを目的とする。
上記目的を達成するため、本発明に係る動き補償装置は、動画像を構成するピクチャ間で小数画素精度の動き補償予測を行う動き補償装置であって、転送されるブロック単位の参照画素データに対して、所定の方向に連続的なフィルタ演算を実行し、動き補償予測を行うための1/2小数精度画素データを生成する高次タップフィルタ手段と、前記高次タップフィルタ手段により生成された1/2小数精度画素データを格納するための中間出力画素記憶手段とを備え、前記高次タップフィルタ手段は、前記中間出力画素記憶手段から入力された1/2小数精度画素データに対して、前記所定の方向と直交する方向に連続的なフィルタ演算を実行し、1/2小数精度画素データを生成することを特徴とする。
これによって、高次タップのフィルタ処理において、水平方向もしくは垂直方向にまとめて1/2小数精度画素生成フィルタ演算をし、1回目のフィルタ結果を中間出力画素として専用の中間出力画素記憶手段に記憶しておき、1回目の方向と直交する方向の1/2小数精度画素生成のフィルタ演算で中間出力画素を利用することで、例えば参照画素データを格納したマルチフレームメモリから動き補償装置へ転送する参照画素データのデータ量を減少させることができ、効率的に動き補償予測を行うことが可能である。
また、前記動き補償装置は、さらに、前記参照画素データの転送を制御するデータ転送制御手段と、前記データ転送制御手段の制御に基づいて、前記参照画素データまたは前記中間出力画素記憶手段から入力された1/2小数精度画素データのいずれかを選択し、選択したデータを前記高次タップフィルタ手段へ出力する第1の画素選択手段とを備えてもよい。
ここで、前記データ転送制御手段は、処理対象ブロックの水平方向画素数と垂直方向画素数とを比較し、小さい値となる並びの方向に前記処理対象ブロックの参照画素データを前記高次タップフィルタ手段へ転送してもよい。
これによって、中間出力画素記憶手段で必要な画素容量を削減し、2回目の方向のフィルタ処理の転送画素数も減少させることができるので、さらに効率的に動き補償予測を行うことができると共に、実装する面積を削減することが可能である。
また、前記データ転送制御手段は、処理対象ブロックを所定数のサブブロックに分割し、前記サブブロック単位に前記処理対象ブロックの参照画素データを前記高次タップフィルタ手段へ転送してもよい。
これによって、中間出力画素記憶部で必要な容量を削減することができるので、さらに実装面積を削減することが可能である。
また、前記動き補償装置は、さらに、動き補償画素位置に基づいて、前記高次タップフィルタ手段の処理で必要とする画素領域を判定する必要画素判定手段を備え、前記データ転送制御手段は、前記必要画素判定手段で必要と判定された画素領域の参照画素データのみを前記高次タップフィルタ手段へ転送してもよい。
これによって、フィルタ演算で使用する領域かどうかを小数精度の動き補償位置から判断し、フィルタ演算実行時に、選択的にデータ転送を行うことで無駄な転送を削減することができるので、さらに効率的な動き補償予測を行うことが可能である。
また、前記高次タップフィルタ手段は、前記参照画素データに対して、所定の方向に連続的なフィルタ演算を処理対象ブロックの段数分実行し、1/2小数精度画素データを生成する第1の高次タップフィルタ部と、前記参照画素データまたは前記中間出力画素記憶手段から入力された1/2小数精度画素データに対して、前記第1の高次タップフィルタ部での演算処理方向と直交する方向に連続的なフィルタ演算を処理対象ブロックの段数分実行し、1/2小数精度画素データを生成する第2の高次タップフィルタ部とを備えてもよい。
ここで、前記第2の高次タップフィルタ部は、前記1/2小数精度画素データが有するビット精度に対応することが好ましい。
これによって、高次タップフィルタの資源を複数実装する場合に、選択的にビット精度の高いフィルタを割り当てることができるので、実装面積を削減することが可能である。例えば、第1の高次タップフィルタ部が、整数精度画素データが有するビット精度までに対応し、第2の高次タップフィルタ部が、1/2小数精度画素データが有するビット精度に対応する演算資源を実装するというように、第1の高次タップフィルタ部にビット精度の高いフィルタを割り当てる必要が無くなるので、実装面積を削減することが可能である。
また、前記中間出力画素記憶手段は、前記第1の高次タップフィルタ部により生成された1/2小数精度画素データと併せて、前記参照画素データも格納するとともに、データの読み出しと書き込みの処理を同時に実行し、前記第2の高次タップフィルタ部は、前記中間出力画素記憶手段から入力された前記参照画素データおよび前記1/2小数精度画素データに対して、フィルタ演算を実行し、前記第1の高次タップフィルタ部の動作と前記第2の高次タップフィルタ部の動作をパイプライン式に実行してもよい。
これによって、中間出力画素記憶手段の容量を増やすことで、参照画素データの転送を1回目のフィルタ方向の時だけとすることで画素転送量を削減し、また中間出力画素記憶手段をバンク動作させるようにすることで2回目のフィルタ方向の動作を1回目のフィルタを行っている処理対象ブロックのデータと世代の異なるブロックについて独立にフィルタ処理を実行することができるようになるため、さらに効率的な動き補償予測を行うことが可能となる。
なお、本発明は、このような動き補償装置として実現することができるだけでなく、このような動き補償装置が備える特徴的な手段をステップとする動き補償方法として実現したり、それらのステップをコンピュータに実行させるプログラムとして実現したりすることもできる。そして、そのようなプログラムは、CD−ROM等の記録媒体やインターネット等の伝送媒体を介して配信することができるのは言うまでもない。
以上の説明から明らかなように、本発明に係る動き補償装置によれば、回路規模の増加を抑えつつ、参照画素データを格納したマルチフレームメモリとのデータ転送量を削減し、効率的に動き補償画素を生成することができる。
以下、本発明の各実施の形態について、それぞれ図面を参照しながら説明する。
(実施の形態1)
図5は本発明の実施の形態1に係る動き補償装置(動き補償部)の概略構成を示すブロック図であり、図6はこの動き補償装置の構成を詳細に示すブロック図である。なお、図4に示す従来の動き補償部と同様の部分については同じ符号を付し、その説明を省略する。また、動き補償装置は、図1に示す画面間予測符号化装置または図2に示す画面間予測復号化装置の動き補償部として用いられるものとする。
動き補償装置100は、小数画素精度の動き補償画素を生成するための装置であり、動き補償位置判定部101、必要画素判定部102、データ転送制御部103、画素選択部104、中間画素格納メモリ105、高次タップフィルタ部106、および線形補間演算部107を備えている。この動き補償装置100には、マルチフレームメモリ402から動き補償参照画素(参照画素データ)MCpel1が入力される。
高次タップフィルタ部106は、実装バッファを従来の6段×6画素から6段×1画素とした遅延回路201および遅延回路202、6タップフィルタ503、6タップフィルタ511、ビットシフト512、ビットシフト513、ビットシフト514、およびビットシフト205を備えている。また、第2の画素選択手段および線形補間演算手段である線形補間演算部107は、セレクタ加算器206およびビットシフト518を備えている。
動き補償位置判定部101は、動きベクトルから図3における画素G、a、b、c、d、e、f、g、h、i、j、k、n、p、q、及びrのどの位置の補償画素を生成するかを判定し、動き補償位置信号SmcPosを出力する。動き補償位置信号SmcPosは、セレクタ加算器206、ビットシフト518に入力され、1/4精度画素生成に必要な画素の選択とビットシフトの実行制御に用いられる。
必要画素判定部102は、入力された動き補償位置信号SmcPosに基づいて、マクロブロック(MB)パーティションの形状やその分割形状及び6タップフィルタのフィルタ方向順序から6タップフィルタを実行するために必要な画素を判定し、必要画素情報SpxlJdgを出力する。
データ転送制御部103は、入力された必要画素情報SpxlJdgにより、転送するデータの取り出し順序などを制御するためのデータ転送制御信号SdatCtrを出力する。データ転送制御信号SdatCtrは、マルチフレームメモリ402、中間画素格納メモリ105及び画素選択部104に入力され、フィルタ演算処理の制御に用いられる。
中間画素格納メモリ105は、例えば水平方向優先のフィルタ処理を行う場合、図3の画素aa、bb、b、s、gg、hhなどの水平方向の1/2精度画素位置のデータに関して処理ブロック単位分すべてを格納するためのメモリであり、一旦格納した中間画素データはビットシフト演算前の1/2精度画素データMCpel3として出力する。
画素選択部104は、マルチフレームメモリ402から出力された参照画素データMCpel1か中間画素格納メモリ105から出力された1/2精度画素データMCpel3かを選択する。
ビットシフト205は、6タップフィルタ503の出力信号Sm1h1を入力とし、ビットシフトした結果として画素mもしくは画素hの位置の信号Smhを出力する。ビットシフト512は、遅延回路202の3段目の遅延データSs1を入力とし、ビットシフトした結果として画素sの位置の信号Ssを出力する。ビットシフト513は、6タップフィルタ511の出力信号Sj1を入力とし、ビットシフトした結果として画素jの位置の信号Sjを出力する。ビットシフト514は、遅延回路202の4段目の遅延データSb1を入力とし、ビットシフトした結果として画素bの位置のSb信号を出力する。
セレクタ加算器206は、ビットシフト205からの出力信号Smhと、ビットシフト512からの出力信号Ssと、ビットシフト513からの出力信号Sjと、ビットシフト514からの出力信号Sbと、遅延回路201の3段目の遅延データである画素Mもしくは画素Nの位置の出力信号SMNと、遅延回路201の4段目の遅延データである画素Gもしくは画素Hの位置の出力信号SGHと、を入力とし、動き補償位置信号SmcPos信号に従って、信号選択を行い、必要であれば加算を行って信号SSelAddとして出力する。
ビットシフト518は、信号SSelAddを入力とし、動き補償位置信号SmcPos信号に従って、必要であればビットシフトを行って動き補償画素MCpel2として出力する。
次に図7を用いて、必要画素判定部102の詳細な動作説明を行う。
図7は6タップフィルタをかける整数精度画素の並びを示す図である。図7において、四角で示す整数精度画素IntSmpは、動きベクトルが示す動き補償位置の整数精度の画素である。また、丸印で示す6タップ付加画素IntSmp6Tは、整数精度画素IntSmpの周辺に位置する6タップフィルタをかけるために必要な画素である。
区間Tintwidthは、整数精度画素の水平方向の区間を表しており、動き補償を実行する対象ブロックのブロック形状によって異なり、16、8及び4の値をとり得る。区間T6twidthは、6タップフィルタに必要な周辺画素まで含めた水平方向の区間を表しており、対象ブロックのブロック形状によって、21、13及び9の値をとり得る。
区間Tintheightは、整数精度画素の垂直方向の区間を表しており、動き補償を実行する対象ブロックのブロック形状によって異なり、16、8及び4の値をとり得る。区間T6theightは、6タップフィルタに必要な周辺画素まで含めた画素の垂直方向の区間を表しており、対象ブロックのブロック形状によって、21、13及び9の値をとり得る。
領域Aabcは、水平方向の区間がT6twidthであり垂直方向の区間がTintheightである領域の整数精度画素の領域を表している。領域Adhnは、水平方向の区間がTintwidthであり垂直方向の区間がT6theightである領域の整数精度画素の領域を表している。領域AGは、水平方向の区間がTintwidthであり垂直方向の区間がTintheightである領域の整数精度画素の領域を表している。
例えば、図3で示したa、b及びcの小数精度画素位置の動き補償画像を生成する場合、垂直方向のフィルタ処理が不要であるので、垂直方向のフィルタのみで使用する領域は処理する必要がない。従ってこの場合、必要画素判定部102は、領域Aabcで示した領域が必要であると判断する。また、同様にd、h及びnの小数精度画素位置の動き補償画像を生成する場合、水平方向のフィルタ処理が不要であるので、水平方向のフィルタのみで使用する領域は処理する必要がない。従ってこの場合、必要画素判定部102は、領域Adhnで示した領域が必要であると判断する。さらに、Gの位置の場合は、小数精度画素の生成が不要であるので、必要画素判定部102は、領域AGが必要であると判断する。
次に図8を用いて、データ転送制御部103の詳細な動作説明を行う。
図8は、データ転送制御部103でデータ転送を制御する動作の流れを示すフローチャートである。
まず、データ転送制御部103は、動き補償画像生成位置が図3で示した画素G、a、b、c、d、e、f、g、h、i、j、k、n、p、q、及びrの中の画素Gの位置であるか否かを判定する(ステップS101)。この判定の結果、動き補償画像生成位置が画素Gの位置の場合(ステップS101でYES)には、小数精度画像フィルタを実行せずに終了する。
一方、動き補償画像生成位置が画素G以外(ステップS101でNO)であれば、画素d、h、またはnのいずれかの位置にあるか否かを判定する(ステップS102)。この判定の結果、動き補償画像生成位置が画素d、h、またはnのいずれの位置でもない場合(ステップS102でNO)には、水平方向に1/2画素をずらせた画像を生成するための6タップフィルタを実行する(ステップS103)。さらに、動き補償画像生成位置が画素a、b、またはcのいずれかの位置にあるか否かを判定する(ステップS104)。この判定の結果、動き補償画像生成位置が画素a、b、またはcのいずれの位置でもない場合(ステップS104でNO)、および上記判定処理(ステップS102)で動き補償画像生成位置が画素d、h、またはnのいずれかの位置の場合(ステップS102でYES)には、垂直方向に1/2画素をずらせた画像を生成するための6タップフィルタを実行する(ステップS105)。
動き補償画像生成位置が画素b、h、またはjのいずれかの位置にあるか否かを判定する(ステップS106)。この判定の結果、動き補償画像生成位置が画素b、h、またはjのいずれの位置でもない場合(ステップS106でNO)、すなわち画素G、b、h、またはjのいずれの位置でもない場合には、1/4精度画素の線形補間フィルタを実行する(ステップS107)。
一方、動き補償画像生成位置が画素b、h、またはjのいずれかの位置である場合(ステップS106でYES)には、1/4精度画素の線形補間フィルタを実行せずに終了する。
以上の手順をデータ転送制御部103で制御することによって、動き補償部100を制御し、動き補償画像MCpel2を出力する。なお、動き補償画像生成位置が画素d、h、またはnのいずれかの位置にあるか否かの判定処理(ステップS102)および水平方向のフィルタ処理(ステップS103)と、動き補償画像生成位置が画素a、b、またはcのいずれかの位置にあるか否かを判定処理(ステップS104)および垂直方向のフィルタ処理(ステップS105)との制御を入れ替えることで、垂直フィルタを先にかけ水平フィルタを後にかけることも可能である。
以下、画素信号の流れに沿って、水平方向にM画素、垂直方向にN画素のブロック形状の領域に対するフィルタ処理動作に関して詳細な説明を続ける。ここでは、水平方向と垂直方向の両方向のフィルタ演算が必要な図3に示す画素e、f、g、i、j、k、p、q、及びrの小数精度画素位置の動き補償画像生成動作について説明し、簡単のため水平方向のフィルタを最初に実施する場合を例として説明するが、垂直方向を最初に実施することも可能である。
まず、データ転送制御部103は、マルチフレームメモリ402から1画素ずつ水平方向に画素データを読み出し、遅延回路201に入力する。遅延回路201は6段のFIFOの構成をとっており、6タップフィルタに必要な周辺画素まで含めた図7に示す水平方向の区間T6twidthの1行分のデータが続いて入力される。遅延回路201の6画素分の遅延データは、6タップフィルタ503に入力され、6画素目の入力以降6タップフィルタ結果が1サイクル毎に出力される。
6タップフィルタ503から出力された6タップフィルタ結果は、中間画素格納メモリ105及びビットシフト205に入力される。遅延回路201および6タップフィルタ503が1セットの場合はM+5サイクルで1行分のフィルタ処理を行うことができ、フィルタに必要な周辺画素部分を含めN+5行分の処理を繰り返す。その結果、中間画素格納メモリ105に水平方向に1/2ずらせた小数画素精度のデータ(bの位置)として格納される。
次に、データ転送制御部103は、垂直方向に1/2ずらせた小数精度画素(hの位置)を生成するために、マルチフレームメモリ402から1画素ずつ垂直方向に画素データを読み出し、遅延回路201に入力する。水平方向と同様に、6画素目の入力以降、1サイクル毎に6タップフィルタ結果を出力する。遅延回路201および6タップフィルタ503が1セットの場合はN+5サイクルで1列分のフィルタ処理を行うことができ、フィルタに必要な周辺画素部分を含めM+5行分の処理を繰り返し、ビットシフト205に出力する。
このとき同時に、データ転送制御部103は、水平垂直共に1/2ずらせた小数精度画素(jの位置)を生成するために、中間画素格納メモリ105から1画素ずつ垂直方向に画素データを読み出し、画素選択部104を介して遅延回路202に入力する。遅延回路202の6画素分の遅延データは、6タップフィルタ511に入力され、6画素目の入力以降1サイクル毎に6タップフィルタ結果が出力される。
次に、セレクタ加算器206は、動き補償画素位置に応じて、式10から式21に示した計算で必要な処理を行い、データSSelAddとして出力する。データSSelAddが入力されたビットシフト518は、必要であればビットシフトを行い、動き補償画像MCPel2を出力する。ここで、セレクタ加算器206およびビットシフト518は、G、b、h、及びjの位置では、加算とビットシフトの処理が必要ないためその処理は行わない。
なお、遅延回路202と6タップフィルタ511は、水平方向のフィルタ処理でも利用することができ、その場合は、画素選択部104において中間画素格納メモリ105から入力されたデータではなく、マルチフレームメモリ402から入力されたデータを選択しフィルタ処理を行い、6タップフィルタ511の出力結果を中間画素格納メモリ105に入力することで実現する。この場合、水平方向のフィルタ処理サイクルは遅延回路201と6タップフィルタ503の1組を用いている場合と較べ、約1/2にまで削減可能である。
また、遅延回路201と6タップフィルタ503、または遅延回路202と6タップフィルタ511において、処理資源の並列化を行うことも可能であり、その場合、マルチフレームメモリ402と動き補償部100の間の転送能力を並列化した6タップフィルタの処理能力以上に設定する。ここで、転送能力と処理能力が等しくなるようにすれば最適な構成を得ることができる。
従って、上記手順で動き補償画像の生成を行った時、最大のブロック形状である16×16を1ブロック転送する場合と、最小のブロック形状である4×4を16ブロック転送する場合の各転送画素数は、次式で表される。
((16+5)×(16+5)×1画素幅+
16×(16+5)×1画素幅)× 1ブロック= 777 …(26)
(( 4+5)×( 4+5)×1画素幅+
4×( 4+5)×1画素幅)×16ブロック=1,872 …(27)
従って、式22、式23、式26、及び式27より、従来の転送量に較べて16×16ブロック形状では、1/2.6に、4×4ブロック形状では、1/1.8に抑えることを実現する。
以上のように、遅延回路201および遅延回路202を設け、6タップフィルタ503から出力された6タップフィルタ結果を中間画素格納メモリに格納した後、遅延回路202へ入力してフィルタを行っているので、マルチフレームメモリ402から動き補償装置100への画素転送量を削減することができる。
(実施の形態2)
本実施の形態では、実施の形態1で説明した方法に加えて、6タップフィルタの演算を水平方向または垂直方向のどちらを最初に実行するかを判定した上で、データ転送を行う場合について説明する。なお、本実施の形態の構成は、実施の形態1と同様であるので、図6に示したブロック図を用いて説明する。
実施の形態1で説明した方法と異なる点は、データ転送制御部103における制御方法に関するのみである。ここでは、そのデータ転送制御及び動作処理に関してのみ詳細に説明する。
6タップフィルタの演算は、水平垂直、垂直水平のどちらの順序でも同じ結果が得られる。この垂直・水平のフィルタ順序の制御方法について、図9〜図11を用いて説明する。
図9は、動き補償画像生成を行うブロックの一例を示す図である。ここでは、ブロック形状は、図9(a)に示すように水平方向Mが8画素、垂直方向Nが4画素となる大きさであり、6タップフィルタのフィルタ処理に必要な周辺画素が5(=T−1)画素分付加されている。また、図9において、対象ブロックの画素は白抜きの四角で、6タップフィルタに必要な周辺画素は斜線をつけた四角形で、小数精度画素は丸印で表している。
図9(a)に示すブロックに対して、最初に垂直方向のフィルタを実行すると、図9(b)に示すような垂直方向に1/2ずらせた小数精度画素が中間画素格納メモリ105に格納される。また、2回目のフィルタ処理(水平方向)を実行する時には、マルチフレームメモリ402から動き補償部100に転送を必要とする画素は、図9(c)に示すように上2行下3行の周辺画素を除いた画素となる。また、水平垂直共に1/2ずらせた小数精度画素を生成するために、図9(d)に示すように中間画素格納メモリ105に格納された垂直方向に1/2ずらせた小数精度画素を読み出し、2回目のフィルタ処理(水平方向)を実行する。
このように、最初に垂直方向のフィルタを実行する場合、中間画素格納メモリ105が必要とする画素容量または2回目の方向のフィルタ処理での画素転送量は、次式で表される。
(8+5)×4=52 …(28)
一方、図9(a)に示すブロックに対して、最初に水平方向のフィルタを実行すると、図10(a)に示すような水平方向に1/2ずらせた小数精度画素が中間画素格納メモリ105に格納される。また、2回目のフィルタ処理(垂直方向)を実行する時には、マルチフレームメモリ402から動き補償部100に転送を必要とする画素は、図10(b)に示すように右2列左3列の周辺画素を除いた画素となる。また、水平垂直共に1/2ずらせた小数精度画素を生成するために、図10(c)に示すように中間画素格納メモリ105に格納された水平方向に1/2ずらせた小数精度画素を読み出し、2回目のフィルタ処理(垂直方向)を実行する。
このように、最初に水平方向のフィルタを実行する場合、中間画素格納メモリ105が必要とする画素容量または2回目の方向のフィルタ処理での画素転送量は、次式で表される。
8×(4+5)=72 …(29)
以上、水平方向Mが8画素、垂直方向Nが4画素となる大きさのブロックを例に説明したが、次に、一般的に水平方向がM、垂直方向がNの画素数となる大きさのブロックの場合について説明する。
図11は、動き補償画像生成を行うブロック単位を示した図である。図11(a)は、動き補償画像生成を行うブロックを示しており、図7を簡略的に図示したものである。図11(a)において、水平方向がM、垂直方向がNの画素数となる大きさのブロック形状であり、フィルタのタップ数をTとした時のフィルタに用いる周辺画素がT−1分付加されていることを示している。
この場合、画素としては(M+T−1)×(N+T−1)の領域のメモリ転送が必要である。また、この時に図5に示す中間画素格納メモリ105が必要とする画素容量は、水平方向のフィルタを最初に実行する場合はM×(N+T−1)、垂直方向のフィルタを最初に実行する場合は(M+T−1)×Nの画素容量が必要となる。
また、続く別方向のフィルタ処理を実行する時にマルチフレームメモリ402から動き補償部100に転送を必要とする画素数に関しても同様に、水平方向のフィルタ処理を最初に実行する場合はM×(N+T−1)、垂直方向のフィルタ処理を最初に実行する場合は(M+T−1)×Nの画素転送量となる。
従って、水平方向のフィルタ処理を最初に実行する場合と垂直方向のフィルタ処理を最初に実行する場合とにおける、中間画素格納メモリ105が必要とする画素容量の差分値、または2回目の方向のフィルタ処理での画素転送量の差分値は、次式で表される。
|M×(N+T−1)−(M+T−1)×N|
=|(M−N)(T−1)| …(30)
従って、データ転送制御部103は、水平方向の画素数Mと垂直方向の画素数Nとを比較し、M<Nのブロック形状になっていれば、水平方向のフィルタ処理を先に行い次に垂直方向のフィルタ処理を行い、M>Nのブロック形状になっていれば垂直方向のフィルタ処理を先に行い次に水平方向のフィルタ処理を行うように制御する。これにより、|(M−N)(T−1)|の中間画素格納メモリ105の容量削減及び2回目の方向のフィルタ処理での画素転送量の削減が可能となる。
なお、H.264規格では、T=6と決められており、M及びNは16,8,4の値である。また、H.264規格において16×8のブロック形状に分割された1MB(マクロブロック)分の動き補償画像生成を行う場合、水平方向から6タップフィルタを実施した場合は式31、垂直方向から6タップフィルタを実施した場合は式32に示す処理サイクルが必要となり、水平方向からフィルタ処理を実行するときと較べて、(962−882)/962=8%の転送量削減が実現できる。
((16+5)×(8+5)×1画素幅 +
16 ×(8+5)×1画素幅)×2ブロック=962 …(31)
((16+5)×(8+5)×1画素幅 +
(16+5)× 8 ×1画素幅)×2ブロック=882 …(32)
同様に8×4のブロック形状に分割された1MB(マクロブロック)分の動き補償画像生成を行う場合、上記のように水平方向から6タップフィルタを実施した場合は式33、垂直方向から6タップフィルタを実施した場合は式34に示す処理サイクルが必要となり、水平方向からフィルタ処理を実行するときと較べて、(1,512−1,352)/1,352=11%の転送量削減が実現できる。
((8+5)×(4+5)×1画素幅 +
8 ×(4+5)×1画素幅)×8ブロック=1,512 …(33)
((8+5)×(4+5)×1画素幅+
(8+5)× 4 ×1画素幅)×8ブロック=1,352 …(34)
以上のように、データ転送制御部103は、対象ブロックの水平方向の画素数Mと垂直方向の画素数Nとを比較して、6タップフィルタの演算を水平方向または垂直方向のどちらを最初に実行するかを判定した上で、データ転送を行っているので、中間画素格納メモリ105の実装容量を削減しつつ、マルチフレームメモリ402から動き補償装置100へのデータ転送量を削減することができる。
(実施の形態3)
本実施の形態では、実施の形態1で説明した方法において、対象ブロックを分割してフィルタ処理を行う場合について説明する。なお、本実施の形態の構成は、実施の形態1と同様であるので、図6に示したブロック図を用いて説明する。
実施の形態1で説明した方法と異なる点は、データ転送制御部103における制御方法に関するのみである。ここでは、そのデータ転送制御及び動作処理に関してのみ詳細に説明する。
6タップフィルタの実行は必ずしも指定されているブロック形状で行う必要がなく、分割処理しても同じ結果が得られる。この分割したフィルタ制御方法について、図11〜図14を用いて説明する。
図12は、動き補償画像生成を行うブロックの一例を示す図である。ここでは、ブロック形状は、水平方向Mが16画素、垂直方向Nが16画素となる大きさであり、6タップフィルタのフィルタ処理に必要な周辺画素が5(=T−1)画素分付加されている。また、図12において、対象ブロックの画素は白抜きの四角で、6タップフィルタに必要な周辺画素は斜線をつけた四角形で、小数精度画素は丸印で表している。
図12に示すブロックを、水平方向に2分割、垂直方向に4分割して処理する場合、分割された水平方向M/mが8画素、垂直方向N/nが4画素のブロックは、図13に示すようにそれぞれについて、6タップフィルタのフィルタ処理に必要な周辺画素が付加されてマルチフレームメモリ402から動き補償装置100へ転送されることになる。
このように分割処理を行って、最初に垂直方向のフィルタを実行する場合、中間画素格納メモリ105が必要とする画素容量は、上記実施の形態2と同様に次式で表される。
(8+5)×4=52 …(35)
例えば、分割処理を行わずにフィルタを実行する場合、中間画素格納メモリ105が必要とする画素容量は、次式で表される。
(16+5)×16=336 …(36)
以上、水平方向Mが16画素、垂直方向Nが16画素となる大きさのブロックを水平方向に2分割、垂直方向に4分割して処理する場合を例に説明したが、次に、一般的に水平方向がM、垂直方向がNの画素数となる大きさのブロックを水平方向にm分割、垂直方向にn分割して処理する場合について説明する。
図11(b)は、図11(a)の動き補償画像生成処理を行うブロックに関して水平方向をm個に分割し(M/mは自然数)、垂直方向をn個に分割(N/nは自然数)することを示している。図11(c)は、分割領域にフィルタ処理に必要な周辺画素をつけた状態の転送領域を表している。
データ転送制御部103は、図11(b)に図示したm×n個に分割した分割処理ブロックに対して、動き補償画像生成処理をm×n回繰り返して処理を行うように制御する。上記処理方法により、中間画素格納メモリ105の最低限必要な容量は、
MIN(M×(N+T−1),(M+T−1)×N)
から、
MIN(M/m×(N/n+T−1),(M/m+T−1)×N/n)
に削減することが可能となる。ここで、MIN(A,B)は、AかBのどちらか小さい方の値を返す関数を表している。
図14は、データ転送制御部103でデータ転送を制御する動作の流れを示すフローチャートである。
まず、データ転送制御部103は、M/mとN/nとを比較し、M/mがN/nより大きいか否かを判定する(ステップS201)。ここで、M/mの方がN/nよりも大きな値となっている場合(ステップS201でYES)には、N方向に6タップフィルタ処理を実行し(ステップS202)、次にM方向に6タップフィルタ処理を実行する(ステップS203)。
一方、上記判定でM/mの方がN/nよりも大きな値となっていない場合(ステップS201でNO)には、M方向に6タップフィルタ処理を実行し(ステップS204)、次にN方向に6タップフィルタ処理を実行する(ステップS205)。
次に、それぞれM方向とN方向のフィルタ処理を実行した後に、1/4画素精度の線形補間フィルタ処理を実行する(ステップS206)。
以上の処理をm×n回のループで処理を行い、対象ブロックの動き補償画像全体の生成を行う。
なお、H.264規格では、T=6であり、M及びNは16,8,4の値となる。従ってm、nは2,4,8,16などの値をとり得る。
以上のように、データ転送制御部103は、対象ブロックを分割してフィルタ処理を行うように、データ転送を行っているので、中間画素格納メモリ105の実装容量を削減しつつ、マルチフレームメモリ402から動き補償装置100へのデータ転送量を削減することができる。
(実施の形態4)
本実施の形態では、中間画素データに加えて整数画素位置の画素データを中間画素格納メモリに格納する場合について説明する。
図15は本発明の実施の形態4に係る動き補償装置(動き補償部)の構成を示すブロック図である。なお、図6に示す実施の形態1と同様の部分については同じ符号を付し、その説明を省略する。
本実施の形態4の動き補償装置300は、実施の形態1に対して遅延回路302、6タップフィルタ303、ビットシフト304が追加されており、画素選択部104とビットシフト205が削除された構成となっている。また、中間画素格納メモリ301がバンク構成をとっている。
中間画素格納メモリ301の容量を大きくとることができれば、さらに画素転送量を削減できる。また、中間画素格納メモリ301を読み書きを独立で行う2ポートメモリなどでバンク構成をとることでさらに高速な動作を実現することが可能である。以下図15を用いて動作の説明を行う。
マルチフレームメモリ402から転送される画素データMCpel1は、遅延回路201にのみに入力される。遅延回路201の遅延データは、6タップフィルタ503に入力され、フィルタ結果は中間画素格納メモリ301に格納される。
また、遅延回路201の4段目の遅延画素は信号SGHMNとして出力され、6タップフィルタ503のフィルタ結果と併せて中間画素格納メモリ301に格納される。中間画素格納メモリ301に格納された画素データは、画素データMCpel3として出力され、6タップフィルタ後のデータは実施の形態1とは異なり画素選択部104を介さずに遅延回路202に入力される。一方、画素データMCpel3の内で整数画素を遅延させたデータSGHMNの読み出し値は、遅延回路302に入力される。遅延回路302は、3段目の遅延データを図3に示す画素Mもしくは画素Nの整数画素位置のデータとして信号SMNを出力し、4段目の遅延データを図3に示す画素Gもしくは画素Hの整数画素位置のデータとして信号SGHを出力する。
6タップフィルタ303は、遅延回路302からの遅延信号を入力とし、6タップフィルタを実行し、図3に示す画素hもしくは画素mの画素位置のフィルタ結果として信号Sh1m1を出力する。ビットシフト304は、フィルタ結果Sh1m1を入力とし、図3に示す画素hもしくは画素mの補間画素データとして信号Shmを出力する。
セレクタ加算器305は、Ss、Sj、Sb、SMN、Shm及びSGHを入力とし、動き補償位置判定信号SmcPosに従って、画素選択と必要であれば加算を行い信号SSelAddとして出力する。ビットシフト518は、信号SSelAddを入力とし、動き補償位置信号SmcPos信号に従って、必要であればビットシフトを行って動き補償画素MCpel2として出力する。
次に、図16(a)に示すような複数のブロックの動き補償画像生成を行う場合の動作について、説明する。図16(b)は各ブロック毎の水平および垂直方向のフィルタ処理のタイミングを示す図である。なお、丸数字1〜4で示すブロックを数字の順に処理するものとし、また水平方向のフィルタ処理を最初に実行するものとする。
まず、ブロック1について、遅延回路201および6タップフィルタ503で水平方向のフィルタ処理を最初に実行する(ブロック1のF1)。
次に、遅延回路302および6タップフィルタ303でブロック1の整数画素位置の画素データの垂直方向のフィルタ処理と、遅延回路202および6タップフィルタ511によりブロック1の6タップフィルタ503で処理された後のデータの垂直方向のフィルタ処理を実行する(ブロック1のF2)。このとき、同時に、ブロック2について、遅延回路201および6タップフィルタ503で水平方向のフィルタ処理を実行する(ブロック2のF1)。
次に、遅延回路302および6タップフィルタ303でブロック2の整数画素位置の画素データの垂直方向のフィルタ処理と、遅延回路202および6タップフィルタ511によりブロック2の6タップフィルタ503で処理された後のデータの垂直方向のフィルタ処理を実行する(ブロック2のF2)。このとき、同時に、ブロック3について、遅延回路201および6タップフィルタ503で水平方向のフィルタ処理を実行する(ブロック3のF1)。以下、同様に図16(b)に示すようにブロック3の垂直方向のフィルタ処理とブロック4の水平方向のフィルタ処理を同時に行う。
上記構成をとることによって、中間画素格納メモリ301の画素容量は実施の形態1と比べて多く必要とするが、マルチフレームメモリ402から動き補償装置300への画素転送量は、最大のブロック形状である16×16を1ブロック転送する場合と、最小のブロック形状である4×4を16ブロック転送する場合に次式で表されるようになる。
((16+5)×(16+5)×1画素幅× 1ブロック= 441…(37)
(( 4+5)×( 4+5)×1画素幅×16ブロック=1,296…(38)
従って、式22、式23、式37、及び式38に示すように、従来の転送量に較べて16×16ブロック形状では、1/4.6に、4×4ブロック形状では、1/2.7に抑えることを実現する。
また、中間画素データに加えて整数画素位置の画素データを中間画素格納メモリ301に格納しているので、垂直方向のフィルタ処理と他のブロックの水平方向のフィルタ処理とを並列に行うことができ、処理速度を向上させることができる。
(実施の形態5)
さらに、上記各実施の形態で示した動き補償装置、この動き補償装置を用いた画面間予測符号化装置、または画面間予測復号化装置をソフトウェアにより実現するためのプログラムを、フレキシブルディスク等の記憶媒体に記録するようにすることにより、上記各実施の形態で示した処理を、独立したコンピュータシステムにおいて簡単に実施することが可能となる。
図17は、上記実施の形態1から実施の形態4の動き補償装置、この動き補償装置を用いた画面間予測符号化装置、または画面間予測復号化装置を実現するプログラムを格納したフレキシブルディスクを用いて、コンピュータシステムにより実施する場合の説明図である。
図17(b)は、フレキシブルディスクの正面からみた外観、断面構造、及びフレキシブルディスクを示し、図17(a)は、記録媒体本体であるフレキシブルディスクの物理フォーマットの例を示している。フレキシブルディスクFDはケースF内に内蔵され、該ディスクの表面には、同心円状に外周からは内周に向かって複数のトラックTrが形成され、各トラックは角度方向に16のセクタSeに分割されている。従って、上記プログラムを格納したフレキシブルディスクでは、上記フレキシブルディスクFD上に割り当てられた領域に、上記プログラムとしての動き補償装置、この動き補償装置を用いた画面間予測符号化装置、または画面間予測復号化装置が記録されている。
また、図17(c)は、フレキシブルディスクFDに上記プログラムの記録再生を行うための構成を示す。上記プログラムをフレキシブルディスクFDに記録する場合は、コンピュータシステムCsから上記プログラムとしての動き補償装置、この動き補償装置を用いた画面間予測符号化装置、または画面間予測復号化装置をフレキシブルディスクドライブを介して書き込む。また、フレキシブルディスク内のプログラムにより上記動き補償装置、この動き補償装置を用いた画面間予測符号化装置、または画面間予測復号化装置をコンピュータシステム中に構築する場合は、フレキシブルディスクドライブによりプログラムをフレキシブルディスクから読み出し、コンピュータシステムに転送する。
なお、上記説明では、記録媒体としてフレキシブルディスクを用いて説明を行ったが、光ディスクを用いても同様に行うことができる。また、記録媒体はこれに限らず、ICカード、ROMカセット等、プログラムを記録できるものであれば同様に実施することができる。
さらにここで、上記各実施の形態で示した動き補償装置、この動き補償装置を用いた画面間予測符号化装置、または画面間予測復号化装置の応用例とそれを用いたシステムを説明する。
図18は、コンテンツ配信サービスを実現するコンテンツ供給システムex100の全体構成を示すブロック図である。通信サービスの提供エリアを所望の大きさに分割し、各セル内にそれぞれ固定無線局である基地局ex107〜ex110が設置されている。
このコンテンツ供給システムex100は、例えば、インターネットex101にインターネットサービスプロバイダex102および電話網ex104、および基地局ex107〜ex110を介して、コンピュータex111、PDA(personal digital assistant)ex112、カメラex113、携帯電話ex114、カメラ付きの携帯電話ex115などの各機器が接続される。
しかし、コンテンツ供給システムex100は図18のような組合せに限定されず、いずれかを組み合わせて接続するようにしてもよい。また、固定無線局である基地局ex107〜ex110を介さずに、各機器が電話網ex104に直接接続されてもよい。
カメラex113はデジタルビデオカメラ等の動画撮影が可能な機器である。また、携帯電話は、PDC(Personal Digital Communications)方式、CDMA(Code Division Multiple Access)方式、W−CDMA(Wideband-Code Division Multiple Access)方式、若しくはGSM(Global System for Mobile Communications)方式の携帯電話機、またはPHS(Personal Handyphone System)等であり、いずれでも構わない。
また、ストリーミングサーバex103は、カメラex113から基地局ex109、電話網ex104を通じて接続されており、カメラex113を用いてユーザが送信する符号化処理されたデータに基づいたライブ配信等が可能になる。撮影したデータの符号化処理はカメラex113で行っても、データの送信処理をするサーバ等で行ってもよい。また、カメラex116で撮影した動画データはコンピュータex111を介してストリーミングサーバex103に送信されてもよい。カメラex116はデジタルカメラ等の静止画、動画が撮影可能な機器である。この場合、動画データの符号化はカメラex116で行ってもコンピュータex111で行ってもどちらでもよい。また、符号化処理はコンピュータex111やカメラex116が有するLSIex117において処理することになる。なお、画面間予測符号化・復号化用のソフトウェアをコンピュータex111等で読み取り可能な記録媒体である何らかの蓄積メディア(CD−ROM、フレキシブルディスク、ハードディスクなど)に組み込んでもよい。さらに、カメラ付きの携帯電話ex115で動画データを送信してもよい。このときの動画データは携帯電話ex115が有するLSIで符号化処理されたデータである。
このコンテンツ供給システムex100では、ユーザがカメラex113、カメラex116等で撮影しているコンテンツ(例えば、音楽ライブを撮影した映像等)を上記実施の形態同様に符号化処理してストリーミングサーバex103に送信する一方で、ストリーミングサーバex103は要求のあったクライアントに対して上記コンテンツデータをストリーム配信する。クライアントとしては、上記符号化処理されたデータを復号化することが可能な、コンピュータex111、PDAex112、カメラex113、携帯電話ex114等がある。このようにすることでコンテンツ供給システムex100は、符号化されたデータをクライアントにおいて受信して再生することができ、さらにクライアントにおいてリアルタイムで受信して復号化し、再生することにより、個人放送をも実現可能になるシステムである。
このシステムを構成する各機器の符号化、復号化には上記各実施の形態で示した画面間予測符号化装置または画面間予測復号化装置を用いるようにすればよい。
その一例として携帯電話について説明する。
図19は、上記実施の形態で説明した画面間予測符号化装置と画面間予測復号化装置を用いた携帯電話ex115を示す図である。携帯電話ex115は、基地局ex110との間で電波を送受信するためのアンテナex201、CCDカメラ等の映像、静止画を撮ることが可能なカメラ部ex203、カメラ部ex203で撮影した映像、アンテナex201で受信した映像等が復号化されたデータを表示する液晶ディスプレイ等の表示部ex202、操作キーex204群から構成される本体部、音声出力をするためのスピーカ等の音声出力部ex208、音声入力をするためのマイク等の音声入力部ex205、撮影した動画もしくは静止画のデータ、受信したメールのデータ、動画のデータもしくは静止画のデータ等、符号化されたデータまたは復号化されたデータを保存するための記録メディアex207、携帯電話ex115に記録メディアex207を装着可能とするためのスロット部ex206を有している。記録メディアex207はSDカード等のプラスチックケース内に電気的に書換えや消去が可能な不揮発性メモリであるEEPROM(Electrically Erasable and Programmable Read Only Memory)の一種であるフラッシュメモリ素子を格納したものである。
さらに、携帯電話ex115について図20を用いて説明する。携帯電話ex115は表示部ex202及び操作キーex204を備えた本体部の各部を統括的に制御するようになされた主制御部ex311に対して、電源回路部ex310、操作入力制御部ex304、画像符号化部ex312、カメラインターフェース部ex303、LCD(Liquid Crystal Display)制御部ex302、画像復号化部ex309、多重分離部ex308、記録再生部ex307、変復調回路部ex306及び音声処理部ex305が同期バスex313を介して互いに接続されている。
電源回路部ex310は、ユーザの操作により終話及び電源キーがオン状態にされると、バッテリパックから各部に対して電力を供給することによりカメラ付ディジタル携帯電話ex115を動作可能な状態に起動する。
携帯電話ex115は、CPU、ROM及びRAM等でなる主制御部ex311の制御に基づいて、音声通話モード時に音声入力部ex205で集音した音声信号を音声処理部ex305によってディジタル音声データに変換し、これを変復調回路部ex306でスペクトラム拡散処理し、送受信回路部ex301でディジタルアナログ変換処理及び周波数変換処理を施した後にアンテナex201を介して送信する。また携帯電話機ex115は、音声通話モード時にアンテナex201で受信した受信データを増幅して周波数変換処理及びアナログディジタル変換処理を施し、変復調回路部ex306でスペクトラム逆拡散処理し、音声処理部ex305によってアナログ音声データに変換した後、これを音声出力部ex208を介して出力する。
さらに、データ通信モード時に電子メールを送信する場合、本体部の操作キーex204の操作によって入力された電子メールのテキストデータは操作入力制御部ex304を介して主制御部ex311に送出される。主制御部ex311は、テキストデータを変復調回路部ex306でスペクトラム拡散処理し、送受信回路部ex301でディジタルアナログ変換処理及び周波数変換処理を施した後にアンテナex201を介して基地局ex110へ送信する。
データ通信モード時に画像データを送信する場合、カメラ部ex203で撮像された画像データをカメラインターフェース部ex303を介して画像符号化部ex312に供給する。また、画像データを送信しない場合には、カメラ部ex203で撮像した画像データをカメラインターフェース部ex303及びLCD制御部ex302を介して表示部ex202に直接表示することも可能である。
画像符号化部ex312は、本願発明で説明した画面間予測符号化装置を備えた構成であり、カメラ部ex203から供給された画像データを上記実施の形態で示した画面間予測符号化装置に用いた符号化方法によって圧縮符号化することにより符号化画像データに変換し、これを多重分離部ex308に送出する。また、このとき同時に携帯電話機ex115は、カメラ部ex203で撮像中に音声入力部ex205で集音した音声を音声処理部ex305を介してディジタルの音声データとして多重分離部ex308に送出する。
多重分離部ex308は、画像符号化部ex312から供給された符号化画像データと音声処理部ex305から供給された音声データとを所定の方式で多重化し、その結果得られる多重化データを変復調回路部ex306でスペクトラム拡散処理し、送受信回路部ex301でディジタルアナログ変換処理及び周波数変換処理を施した後にアンテナex201を介して送信する。
データ通信モード時にホームページ等にリンクされた動画像ファイルのデータを受信する場合、アンテナex201を介して基地局ex110から受信した受信データを変復調回路部ex306でスペクトラム逆拡散処理し、その結果得られる多重化データを多重分離部ex308に送出する。
また、アンテナex201を介して受信された多重化データを復号化するには、多重分離部ex308は、多重化データを分離することにより画像データのビットストリームと音声データのビットストリームとに分け、同期バスex313を介して当該符号化画像データを画像復号化部ex309に供給すると共に当該音声データを音声処理部ex305に供給する。
次に、画像復号化部ex309は、本願発明で説明した画面間予測復号化装置を備えた構成であり、画像データのビットストリームを上記実施の形態で示した符号化方法に対応した復号化方法で復号化することにより再生動画像データを生成し、これをLCD制御部ex302を介して表示部ex202に供給し、これにより、例えばホームページにリンクされた動画像ファイルに含まれる動画データが表示される。このとき同時に音声処理部ex305は、音声データをアナログ音声データに変換した後、これを音声出力部ex208に供給し、これにより、例えばホームページにリンクされた動画像ファイルに含まる音声データが再生される。
なお、上記システムの例に限られず、最近は衛星、地上波によるディジタル放送が話題となっており、図21に示すようにディジタル放送用システムにも上記実施の形態の少なくとも画面間予測符号化装置または画面間予測復号化装置のいずれかを組み込むことができる。具体的には、放送局ex409では映像情報のビットストリームが電波を介して通信または放送衛星ex410に伝送される。これを受けた放送衛星ex410は、放送用の電波を発信し、この電波を衛星放送受信設備をもつ家庭のアンテナex406で受信し、テレビ(受信機)ex401またはセットトップボックス(STB)ex407などの装置によりビットストリームを復号化してこれを再生する。また、記録媒体であるCDやDVD等の蓄積メディアex402に記録したビットストリームを読み取り、復号化する再生装置ex403にも上記実施の形態で示した画面間予測復号化装置を実装することが可能である。この場合、再生された映像信号はモニタex404に表示される。また、ケーブルテレビ用のケーブルex405または衛星/地上波放送のアンテナex406に接続されたセットトップボックスex407内に画面間予測復号化装置を実装し、これをテレビのモニタex408で再生する構成も考えられる。このときセットトップボックスではなく、テレビ内に画面間予測復号化装置を組み込んでも良い。また、アンテナex411を有する車ex412で衛星ex410からまたは基地局ex107等から信号を受信し、車ex412が有するカーナビゲーションex413等の表示装置に動画を再生することも可能である。
更に、画像信号を上記実施の形態で示した画面間予測符号化装置で符号化し、記録媒体に記録することもできる。具体例としては、DVDディスクex421に画像信号を記録するDVDレコーダや、ハードディスクに記録するディスクレコーダなどのレコーダex420がある。更にSDカードex422に記録することもできる。レコーダex420が上記実施の形態で示した画面間予測復号化装置を備えていれば、DVDディスクex421やSDカードex422に記録した画像信号を再生し、モニタex408で表示することができる。
なお、カーナビゲーションex413の構成は例えば図20に示す構成のうち、カメラ部ex203とカメラインターフェース部ex303、画像符号化部ex312を除いた構成が考えられ、同様なことがコンピュータex111やテレビ(受信機)ex401等でも考えられる。
また、上記携帯電話ex114等の端末は、符号化器・復号化器を両方持つ送受信型の端末の他に、符号化器のみの送信端末、復号化器のみの受信端末の3通りの実装形式が考えられる。
このように、上記実施の形態で示した画面間予測符号化装置あるいは画面間予測復号化装置を上述したいずれの機器・システムに用いることは可能であり、そうすることで、上記実施の形態で説明した効果を得ることができる。
また、本発明はかかる上記実施形態に限定されるものではなく、本発明の範囲を逸脱することなく種々の変形または修正が可能である。
また、図5、図6、および図15に示したブロック図の各機能ブロックは典型的には集積回路であるLSIとして実現される。このLSIは1チップ化されても良いし、複数チップ化されても良い。(例えばメモリ以外の機能ブロックが1チップ化されていても良い。)ここでは、LSIとしたが、集積度の違いにより、IC、システムLSI、スーパーLSI、ウルトラLSIと呼称されることもある。
また、集積回路化の手法はLSIに限るものではなく、専用回路又は汎用プロセッサで実現してもよい。LSI製造後に、プログラムすることが可能なFPGA(Field Programmable Gate Array)や、LSI内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサを利用しても良い。
さらには、半導体技術の進歩又は派生する別技術によりLSIに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックの集積化を行ってもよい。バイオ技術の適応等が可能性としてありえる。
また、各機能ブロックのうち、例えばマルチフレームメモリ402のような符号化時または復号化時の参照対象となるデータを格納する手段だけ1チップ化せずに別構成としても良い。この場合、フィルタ処理対象データをフィルタ処理前に一時的に蓄えるバッファメモリをマルチフレームメモリ402と遅延回路201の間に設けることもできる。
以上のように、本発明に係る動き補償装置、画面間予測符号化装置および画面間予測復号化装置は、例えばコンテンツ配信装置やディジタル放送装置、携帯電話、DVD装置、およびパーソナルコンピュータ等で、効率的に動き補償画素を生成したり、動画像を構成する各ピクチャを符号化して符号列を生成したり、生成された符号列を復号化したりする等に有用である。
従来の画面間予測符号化装置の構成を示すブロック図である。 従来の画面間予測復号化装置の構成を示すブロック図である。 H.264における輝度成分の画素補間方法を説明するための概略図である。 従来の動き補償部の構成を示す回路図である。 本発明の実施の形態1に係る動き補償装置(動き補償部)の概略構成を示すブロック図である。 本発明の実施の形態1に係る動き補償装置の構成を詳細に示すブロック図である。 6タップフィルタをかける整数精度画素の並びを示す図である。 データ転送制御部でデータ転送を制御する動作の流れを示すフローチャートである。 (a)動き補償画像生成を行うブロックの一例を示す図、(b)中間画素格納メモリに格納される垂直方向に1/2ずらせた小数精度画素を示す図、(c)2回目のフィルタ処理(水平方向)で転送を必要とする画素を示す図、(d)中間画素格納メモリに格納された垂直方向に1/2ずらせた小数精度画素に対する2回目のフィルタ処理(水平方向)を示す図である。 (a)中間画素格納メモリに格納される水平方向に1/2ずらせた小数精度画素を示す図、(b)2回目のフィルタ処理(垂直方向)で転送を必要とする画素を示す図、(c)中間画素格納メモリに格納された水平方向に1/2ずらせた小数精度画素に対する2回目のフィルタ処理(垂直方向)を示す図である。 (a)動き補償画像生成を行うブロック単位を示した図、(b)ブロックの分割を示す図、(c)分割領域にフィルタ処理に必要な周辺画素をつけた状態の転送領域を示す図である。 動き補償画像生成を行うブロックの一例を示す図である。 分割領域毎にフィルタ処理に必要な周辺画素を示す図である。 データ転送制御部でデータ転送を制御する動作の流れを示すフローチャートである。 本発明の実施の形態4に係る動き補償装置(動き補償部)の構成を示すブロック図である。 (a)動き補償画像生成を行う複数のブロックを示した図、(b)各ブロック毎の水平および垂直方向のフィルタ処理のタイミングを示す図である。 各実施の形態の動き補償装置、この動き補償装置を用いた画面間予測符号化装置、または画面間予測復号化装置をコンピュータシステムにより実現するためのプログラムを格納するための記録媒体についての説明図であり、(a) 記録媒体本体であるフレキシブルディスクの物理フォーマットの例を示した説明図、(b) フレキシブルディスクの正面からみた外観、断面構造、及びフレキシブルディスクを示した説明図、(c) フレキシブルディスクFDに上記プログラムの記録再生を行うための構成を示した説明図である。 コンテンツ配信サービスを実現するコンテンツ供給システムの全体構成を示すブロック図である。 携帯電話の一例を示す図である。 携帯電話の内部構成を示すブロック図である。 ディジタル放送用システムの全体構成を示すブロック図である。
符号の説明
100 動き補償装置(動き補償部)
101 動き補償位置判定部
102 必要画素判定部
103 データ転送制御部
104 画素選択部
105 中間画素格納メモリ
106 高次タップフィルタ部
107 線形補間演算部
201、202 遅延回路
402 マルチフレームメモリ
503、511、6タップフィルタ
205、512、513、514、518 ビットシフト
517 セレクタ加算器
MCpel1 マルチフレームメモリ出力画素信号
MCpel2 小数精度動き補償画素信号
MCpel3 中間画素格納メモリ出力画素信号
SselAdd セレクタ加算器出力信号
SdatCtr データ転送制御信号
SpxlJdg 必要画素判定信号
SmcPos 動き補償位置判定信号
Sm1h1 ビットシフト前小数精度画素信号
Smh 小数精度画素信号
Sa1 ビットシフト前小数精度画素信号
Sb1 ビットシフト前小数精度画素信号
Sj1 ビットシフト前小数精度画素信号
Ss 小数精度画素信号
Sj 小数精度画素信号
Sb 小数精度画素信号
SMN 整数精度画素信号
SGH 整数精度画素信号

Claims (22)

  1. 動画像を構成するピクチャ間で小数画素精度の動き補償予測を行う動き補償装置であって、
    転送されるブロック単位の参照画素データに対して、所定の方向に連続的なフィルタ演算を実行し、動き補償予測を行うための1/2小数精度画素データを生成する高次タップフィルタ手段と、
    前記高次タップフィルタ手段により生成された1/2小数精度画素データを格納するための中間出力画素記憶手段とを備え、
    前記高次タップフィルタ手段は、前記中間出力画素記憶手段から入力された1/2小数精度画素データに対して、前記所定の方向と直交する方向に連続的なフィルタ演算を実行し、1/2小数精度画素データを生成する
    ことを特徴とする動き補償装置。
  2. 前記高次タップフィルタ手段は、
    前記参照画素データに対して、所定の方向に連続的なフィルタ演算を処理対象ブロックの段数分実行し、1/2小数精度画素データを生成する第1の高次タップフィルタ部と、
    前記参照画素データまたは前記中間出力画素記憶手段から入力された1/2小数精度画素データに対して、前記第1の高次タップフィルタ部での演算処理方向と直交する方向に連続的なフィルタ演算を処理対象ブロックの段数分実行し、1/2小数精度画素データを生成する第2の高次タップフィルタ部とを備える
    ことを特徴とする請求項1記載の動き補償装置。
  3. 前記動き補償装置は、さらに、
    動き補償画素位置に基づいて、前記参照画素データ、前記中間出力画素記憶手段から入力された1/2小数精度画素データ、前記第1の高次タップフィルタ部から入力された1/2小数精度画素データ、または前記第2の高次タップフィルタ部から入力された1/2小数精度画素データのいずれかを選択する第2の画素選択手段と、
    動き補償画素位置に基づいて、前記第2の画素選択手段で選択された画素データについて線形補間を行い、1/2小数精度画素未満の動き補償精度の画素データを生成し出力する線形補間演算手段とを備える
    ことを特徴とする請求項2記載の動き補償装置。
  4. 前記動き補償装置は、さらに、
    前記参照画素データの転送を制御するデータ転送制御手段と、
    前記データ転送制御手段の制御に基づいて、前記参照画素データまたは前記中間出力画素記憶手段から入力された1/2小数精度画素データのいずれかを選択し、選択したデータを前記高次タップフィルタ手段へ出力する第1の画素選択手段とを備える
    ことを特徴とする請求項2記載の動き補償装置。
  5. 前記データ転送制御手段は、処理対象ブロックの水平方向画素数と垂直方向画素数とを比較し、小さい値となる並びの方向に前記処理対象ブロックの参照画素データを前記高次タップフィルタ手段へ転送する
    ことを特徴とする請求項4記載の動き補償装置。
  6. 前記処理対象ブロックは、水平方向M×垂直方向N(M、Nは正の整数)画素からなり、
    前記データ転送制御手段は、水平方向M画素と垂直方向N画素とを比較し、
    NがMより小さい場合には、垂直方向に前記処理対象ブロックの参照画素データを前記第1の高次タップフィルタ部へ転送し、次に、水平方向に前記処理対象ブロックの参照画素データを前記第1の高次タップフィルタ部へ転送し、
    一方、MがNより小さい場合には、水平方向に前記処理対象ブロックの参照画素データを前記第1の高次タップフィルタ部へ転送し、次に、垂直方向に前記処理対象ブロックの参照画素データを前記第1の高次タップフィルタ部へ転送する
    ことを特徴とする請求項5記載の動き補償装置。
  7. 前記第1の高次タップフィルタ部は、Tタップ数のフィルタ演算を行なうとともに、
    NがMより小さい場合には、転送された前記参照画素データに対して、垂直方向にN画素分の連続的なフィルタ演算を(M+T−1)回行って、(M+T−1)×N画素分の1/2小数精度画素データを生成した後、転送された前記参照画素データに対して、水平方向に連続的なフィルタ演算を実行し、1/2小数精度画素データを生成し、
    一方、MがNより小さい場合には、転送された前記参照画素データに対して、水平方向にM画素分の連続的なフィルタ演算を(N+T−1)回行って、(N+T−1)×M画素分の1/2小数精度画素データを生成した後、転送された前記参照画素データに対して、垂直方向に連続的なフィルタ演算を実行し、1/2小数精度画素データを生成する
    ことを特徴とする請求項6記載の動き補償装置。
  8. 前記中間出力画素記憶手段は、少なくとも(M+T−1)×NとM×(N+T−1)とのどちらか少ない方の容量を有する
    ことを特徴とする請求項7記載の動き補償装置。
  9. 前記データ転送制御手段は、処理対象ブロックを所定数のサブブロックに分割し、前記サブブロック単位に前記処理対象ブロックの参照画素データを前記高次タップフィルタ手段へ転送する
    ことを特徴とする請求項4記載の動き補償装置。
  10. 前記処理対象ブロックは、水平方向M×垂直方向N(M、Nは正の整数)画素からなり、
    前記データ転送制御手段は、M画素をm個に均等分割し、N画素をn個に均等分割してm×n個(m、nは、M/m、N/nが整数となる正の整数)のサブブロック単位に分割するとともに、M/mとN/nとを比較し、
    N/nがM/mより小さい場合には、垂直方向に前記処理対象ブロックの参照画素データをサブブロック単位に前記第1の高次タップフィルタ部へ転送し、次に、水平方向に前記処理対象ブロックの参照画素データをサブブロック単位に前記第1の高次タップフィルタ部へ転送し、
    一方、M/mがN/nより小さい場合には、水平方向に前記処理対象ブロックの参照画素データをサブブロック単位に前記第1の高次タップフィルタ部へ転送し、次に、垂直方向に前記処理対象ブロックの参照画素データをサブブロック単位に前記第1の高次タップフィルタ部へ転送する
    ことを特徴とする請求項9記載の動き補償装置。
  11. 前記第1の高次タップフィルタ部は、Tタップ数のフィルタ演算を行なうとともに、
    N/nがM/mより小さい場合には、転送された前記参照画素データに対して、垂直方向にN/n画素分の連続的なフィルタ演算を(M/m+T−1)回行って、(M/m+T−1)×N/n画素分の1/2小数精度画素データを生成した後、転送された前記参照画素データに対して、水平方向に連続的なフィルタ演算を実行し、1/2小数精度画素データを生成し、
    一方、M/mがN/nより小さい場合には、転送された前記参照画素データに対して、水平方向にM/m画素分の連続的なフィルタ演算を(N/n+T−1)回行って、(N/n+T−1)×M/m画素分の1/2小数精度画素データを生成した後、転送された前記参照画素データに対して、垂直方向に連続的なフィルタ演算を実行し、1/2小数精度画素データを生成し、
    サブブロック単位に時分割でフィルタ処理を行う
    ことを特徴とする請求項10記載の動き補償装置。
  12. 前記中間出力画素記憶手段は、少なくとも(M/m+T−1)×N/nとM/m×(N/n+T−1)とのどちらか少ない方の容量を有する
    ことを特徴とする請求項11記載の動き補償装置。
  13. 前記動き補償装置は、さらに、
    動き補償画素位置に基づいて、前記高次タップフィルタ手段の処理で必要とする画素領域を判定する必要画素判定手段を備え、
    前記データ転送制御手段は、前記必要画素判定手段で必要と判定された画素領域の参照画素データのみを前記高次タップフィルタ手段へ転送する
    ことを特徴とする請求項4記載の動き補償装置。
  14. 前記必要画素判定手段は、
    動き補償画素位置が水平方向のみに補間する画素位置の場合には、水平方向のフィルタをかけるのに必要な水平動き補償位置必要データを判定し、
    動き補償画素位置が垂直方向のみに補間する画素位置の場合には、垂直方向のフィルタをかけるのに必要な垂直動き補償位置必要データを判定し、
    動き補償画素位置が整数画素精度の画素位置の場合には、処理対象ブロックの画素を必要データと判定する
    ことを特徴とする請求項13記載の動き補償装置。
  15. 前記第1の高次タップフィルタ部および前記第2の高次タップフィルタ部は、共通の演算資源を用いて構成され、前記1/2小数精度画素データが有するビット精度に対応する
    ことを特徴とする請求項2記載の動き補償装置。
  16. 前記第1の高次タップフィルタ部は、単数または複数の同時並列フィルタ処理を行い、
    前記第2の高次タップフィルタ部は、単数または複数の同時並列フィルタ処理を行い、
    当該動き補償装置に入力されるデータのバス幅が前記第1の高次タップフィルタ部での同時並列処理画素数と前記第2の高次タップフィルタ部での同時処理画素数との和以上となる
    ことを特徴とする請求項2記載の動き補償装置。
  17. 前記第2の高次タップフィルタ部は、前記1/2小数精度画素データが有するビット精度に対応する
    ことを特徴とする請求項2記載の動き補償装置。
  18. 前記中間出力画素記憶手段は、前記第1の高次タップフィルタ部により生成された1/2小数精度画素データと併せて、前記参照画素データも格納するとともに、データの読み出しと書き込みの処理を同時に実行し、
    前記第2の高次タップフィルタ部は、前記中間出力画素記憶手段から入力された前記参照画素データおよび前記1/2小数精度画素データに対して、フィルタ演算を実行し、
    前記第1の高次タップフィルタ部の動作と前記第2の高次タップフィルタ部の動作をパイプライン式に実行する
    ことを特徴とする請求項2記載の動き補償装置。
  19. 小数画素精度の動き補償予測を行って動画像を符号化する画面間予測符号化装置であって、
    請求項1〜18のいずれか1項に記載の動き補償装置と、
    前記動き補償装置により動き補償予測された画素データに基づいて、動画像の画素データを符号化する符号化手段と
    を備えることを特徴とする画面間予測符号化装置。
  20. 小数画素精度の動き補償予測を行って動画像を復号化する画面間予測復号化装置であって、
    請求項1〜18のいずれか1項に記載の動き補償装置と、
    前記動き補償装置により動き補償予測された画素データに基づいて、動画像の画素データを復号化する復号化手段と
    を備えることを特徴とする画面間予測復号化装置。
  21. 動画像を構成するピクチャ間で小数画素精度の動き補償予測を行う動き補償方法であって、
    転送されるブロック単位の参照画素データに対して、所定の方向に連続的なフィルタ演算を実行し、1/2小数精度画素データを生成する高次タップフィルタステップと、
    前記高次タップフィルタ手段により生成された1/2小数精度画素データを中間出力画素記憶手段へ格納する中間出力画素記憶ステップとを含み、
    前記高次タップフィルタステップでは、前記中間出力画素記憶手段から入力された1/2小数精度画素データに対して、前記所定の方向と直交する方向に連続的なフィルタ演算を実行し、1/2小数精度画素データを生成する
    ことを特徴とする動き補償方法。
  22. 動画像を構成するピクチャ間で小数画素精度の動き補償予測を行うための集積回路であって、
    転送されるブロック単位の参照画素データに対して、所定の方向に連続的なフィルタ演算を実行し、動き補償予測を行うための1/2小数精度画素データを生成する高次タップフィルタ手段と、
    前記高次タップフィルタ手段により生成された1/2小数精度画素データを格納するための中間出力画素記憶手段とを備え、
    前記高次タップフィルタ手段は、前記中間出力画素記憶手段から入力された1/2小数精度画素データに対して、前記所定の方向と直交する方向に連続的なフィルタ演算を実行し、1/2小数精度画素データを生成する
    ことを特徴とする集積回路。
JP2006519440A 2004-04-21 2005-03-23 動き補償装置、画面間予測符号化装置、画面間予測復号化装置、動き補償方法、および集積回路 Expired - Fee Related JP4709143B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2006519440A JP4709143B2 (ja) 2004-04-21 2005-03-23 動き補償装置、画面間予測符号化装置、画面間予測復号化装置、動き補償方法、および集積回路

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
JP2004125951 2004-04-21
JP2004125951 2004-04-21
PCT/JP2005/005264 WO2005104564A1 (ja) 2004-04-21 2005-03-23 動き補償装置
JP2006519440A JP4709143B2 (ja) 2004-04-21 2005-03-23 動き補償装置、画面間予測符号化装置、画面間予測復号化装置、動き補償方法、および集積回路

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2011015687A Division JP5248636B2 (ja) 2004-04-21 2011-01-27 動き補償装置、画面間予測復号化装置、動き補償方法、および集積回路

Publications (2)

Publication Number Publication Date
JPWO2005104564A1 true JPWO2005104564A1 (ja) 2008-03-13
JP4709143B2 JP4709143B2 (ja) 2011-06-22

Family

ID=35197371

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2006519440A Expired - Fee Related JP4709143B2 (ja) 2004-04-21 2005-03-23 動き補償装置、画面間予測符号化装置、画面間予測復号化装置、動き補償方法、および集積回路
JP2011015687A Expired - Fee Related JP5248636B2 (ja) 2004-04-21 2011-01-27 動き補償装置、画面間予測復号化装置、動き補償方法、および集積回路

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2011015687A Expired - Fee Related JP5248636B2 (ja) 2004-04-21 2011-01-27 動き補償装置、画面間予測復号化装置、動き補償方法、および集積回路

Country Status (4)

Country Link
US (2) US8284835B2 (ja)
JP (2) JP4709143B2 (ja)
CN (2) CN1926882B (ja)
WO (1) WO2005104564A1 (ja)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060285597A1 (en) * 2005-06-20 2006-12-21 Flextronics International Usa, Inc. Reusing interpolated values in advanced video encoders
EP1908295A2 (en) * 2005-07-28 2008-04-09 Thomson Licensing Method and apparatus for video motion process optimization using a hierarchical cache
US8265157B2 (en) * 2007-02-07 2012-09-11 Lsi Corporation Motion vector refinement for MPEG-2 to H.264 video transcoding
US9077971B2 (en) * 2008-04-10 2015-07-07 Qualcomm Incorporated Interpolation-like filtering of integer-pixel positions in video coding
US20090257499A1 (en) * 2008-04-10 2009-10-15 Qualcomm Incorporated Advanced interpolation techniques for motion compensation in video coding
US8971412B2 (en) * 2008-04-10 2015-03-03 Qualcomm Incorporated Advanced interpolation techniques for motion compensation in video coding
US9967590B2 (en) 2008-04-10 2018-05-08 Qualcomm Incorporated Rate-distortion defined interpolation for video coding based on fixed filter or adaptive filter
US8705622B2 (en) * 2008-04-10 2014-04-22 Qualcomm Incorporated Interpolation filter support for sub-pixel resolution in video coding
US8804831B2 (en) 2008-04-10 2014-08-12 Qualcomm Incorporated Offsets at sub-pixel resolution
CN101345872B (zh) * 2008-05-23 2010-06-09 清华大学 视频编解码中实现双线性插值的方法
US9419620B2 (en) 2008-07-22 2016-08-16 Nytell Software LLC Field programmable object array and video compression processor for video data compression
US9161057B2 (en) * 2009-07-09 2015-10-13 Qualcomm Incorporated Non-zero rounding and prediction mode selection techniques in video encoding
US8711930B2 (en) * 2009-07-09 2014-04-29 Qualcomm Incorporated Non-zero rounding and prediction mode selection techniques in video encoding
US8995526B2 (en) * 2009-07-09 2015-03-31 Qualcomm Incorporated Different weights for uni-directional prediction and bi-directional prediction in video coding
JP5353560B2 (ja) * 2009-08-25 2013-11-27 富士通株式会社 画像処理回路および画像符号化装置
US20110200108A1 (en) * 2010-02-18 2011-08-18 Qualcomm Incorporated Chrominance high precision motion filtering for motion interpolation
JP5485851B2 (ja) * 2010-09-30 2014-05-07 日本電信電話株式会社 映像符号化方法,映像復号方法,映像符号化装置,映像復号装置およびそれらのプログラム
PL2661892T3 (pl) 2011-01-07 2022-08-16 Nokia Technologies Oy Przewidywanie ruchu w kodowaniu wideo
MX2013014726A (es) * 2011-06-24 2014-02-27 Ntt Docomo Inc Metodo y aparato para prediccion de compensacion de movimiento.
US9083441B2 (en) 2011-10-26 2015-07-14 Qualcomm Incorporated Impedance balancing for transmitter to receiver rejection

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003153273A (ja) * 2001-11-09 2003-05-23 Nippon Telegr & Teleph Corp <Ntt> 画像符号化方法及び装置、画像復号方法及び装置、プログラム及び記録媒体
JP2004007337A (ja) * 2002-04-25 2004-01-08 Sony Corp 画像処理装置およびその方法
JP2004096757A (ja) * 2002-08-31 2004-03-25 Samsung Electronics Co Ltd 動き補償のための補間方法及びその装置

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2950682B2 (ja) * 1992-08-04 1999-09-20 シャープ株式会社 逆離散余弦変換演算装置
JPH06133297A (ja) 1992-10-14 1994-05-13 G C Technol Kk 解像度変換された画像の動き補償方法と装置
DE69422871T2 (de) * 1993-09-17 2000-08-17 Eastman Kodak Co Digitaler integrierter Abtastratenumwandlungsschaltkreis und Anwendung bei einer schnellen Grössenänderung eines Bildes
US5963675A (en) * 1996-04-17 1999-10-05 Sarnoff Corporation Pipelined pyramid processor for image processing systems
JP2000069406A (ja) * 1998-08-19 2000-03-03 Canon Inc 画像処理装置
US6950469B2 (en) 2001-09-17 2005-09-27 Nokia Corporation Method for sub-pixel value interpolation
KR100747958B1 (ko) * 2001-09-18 2007-08-08 마쯔시다덴기산교 가부시키가이샤 화상 부호화 방법 및 화상 복호화 방법
US7653132B2 (en) * 2004-12-21 2010-01-26 Stmicroelectronics, Inc. Method and system for fast implementation of subpixel interpolation

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003153273A (ja) * 2001-11-09 2003-05-23 Nippon Telegr & Teleph Corp <Ntt> 画像符号化方法及び装置、画像復号方法及び装置、プログラム及び記録媒体
JP2004007337A (ja) * 2002-04-25 2004-01-08 Sony Corp 画像処理装置およびその方法
JP2004096757A (ja) * 2002-08-31 2004-03-25 Samsung Electronics Co Ltd 動き補償のための補間方法及びその装置

Also Published As

Publication number Publication date
CN101848385B (zh) 2012-10-10
CN1926882B (zh) 2010-10-06
US20120281765A1 (en) 2012-11-08
JP5248636B2 (ja) 2013-07-31
JP2011101424A (ja) 2011-05-19
CN1926882A (zh) 2007-03-07
US8284835B2 (en) 2012-10-09
WO2005104564A1 (ja) 2005-11-03
JP4709143B2 (ja) 2011-06-22
CN101848385A (zh) 2010-09-29
US20070223581A1 (en) 2007-09-27
US8767833B2 (en) 2014-07-01

Similar Documents

Publication Publication Date Title
JP4709143B2 (ja) 動き補償装置、画面間予測符号化装置、画面間予測復号化装置、動き補償方法、および集積回路
JP4439890B2 (ja) 画像復号化方法、装置およびプログラム
JP5687787B2 (ja) 動画像復号化装置及びその方法
JP5208156B2 (ja) 画像符号化・復号化装置
JPWO2006013854A1 (ja) 画像復号化装置および画像符号化装置
KR20060044356A (ko) 동영상 코딩 장치
JP4313710B2 (ja) 画像符号化方法および画像復号化方法
JP4515886B2 (ja) 面内予測符号化方法
JP2004048711A (ja) 動画像の符号化方法および復号化方法およびデータ記録媒体
JP4495013B2 (ja) 動画符号化装置
JP2005159947A (ja) 予測画像生成方法、画像符号化方法および画像復号化方法
JP2005142986A (ja) 動画像符号化方法、動画像符号化装置および動画像符号化プログラム
JP2004040512A (ja) 画像符号化方法および画像復号方法
JP4406239B2 (ja) 動き補償方法および動き補償装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080204

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20101130

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110127

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: 20110222

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110317

R150 Certificate of patent or registration of utility model

Ref document number: 4709143

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees