JP2897761B2 - ブロック・マッチング演算装置及びプログラムを記録した機械読み取り可能な記録媒体 - Google Patents
ブロック・マッチング演算装置及びプログラムを記録した機械読み取り可能な記録媒体Info
- Publication number
- JP2897761B2 JP2897761B2 JP21007797A JP21007797A JP2897761B2 JP 2897761 B2 JP2897761 B2 JP 2897761B2 JP 21007797 A JP21007797 A JP 21007797A JP 21007797 A JP21007797 A JP 21007797A JP 2897761 B2 JP2897761 B2 JP 2897761B2
- Authority
- JP
- Japan
- Prior art keywords
- block
- storage unit
- reference area
- matching calculation
- data
- 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.)
- Expired - Fee Related
Links
- 238000004364 calculation method Methods 0.000 claims description 115
- 239000013598 vector Substances 0.000 claims description 37
- 238000013500 data storage Methods 0.000 claims description 22
- 230000006835 compression Effects 0.000 claims description 8
- 238000007906 compression Methods 0.000 claims description 8
- 238000000034 method Methods 0.000 description 27
- 238000010586 diagram Methods 0.000 description 26
- 230000003044 adaptive effect Effects 0.000 description 6
- 238000006243 chemical reaction Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 238000009825 accumulation Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 230000001186 cumulative effect Effects 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
- 230000001131 transforming effect Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N5/00—Details of television systems
- H04N5/14—Picture signal circuitry for video frequency region
- H04N5/144—Movement detection
- H04N5/145—Movement estimation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/20—Analysis of motion
- G06T7/223—Analysis of motion using block-matching
- G06T7/231—Analysis of motion using block-matching using full search
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/50—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
- H04N19/503—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
- H04N19/51—Motion estimation or motion compensation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2207/00—Indexing scheme for image analysis or image enhancement
- G06T2207/10—Image acquisition modality
- G06T2207/10016—Video; Image sequence
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Description
【0001】
【発明の属する技術分野】本発明は、ディジタル動画像
の圧縮符号化に関し、特に動きベクトル探索に用いるブ
ロック・マッチング演算装置に関する。
の圧縮符号化に関し、特に動きベクトル探索に用いるブ
ロック・マッチング演算装置に関する。
【0002】
【従来の技術】動画像圧縮符号化技術は、動画像信号の
高い時間相関,空間相関および人間の視覚特性を利用し
て、膨大な情報量を大幅に圧縮する技術である。この動
画像圧縮符号化技術では、フレーム間予測符号化技術,
変換符号化技術,可変長符号化技術を組み合わせること
により、非常に高い圧縮率を実現している。ここで、フ
レームとは、動画像を構成する1枚の画面を表す。
高い時間相関,空間相関および人間の視覚特性を利用し
て、膨大な情報量を大幅に圧縮する技術である。この動
画像圧縮符号化技術では、フレーム間予測符号化技術,
変換符号化技術,可変長符号化技術を組み合わせること
により、非常に高い圧縮率を実現している。ここで、フ
レームとは、動画像を構成する1枚の画面を表す。
【0003】フレーム間予測符号化技術は、動画像信号
の時間方向の相関を利用する技術であり、参照フレーム
から現在フレームの予測を行い、予測誤差信号を伝送す
る方式である。このフレーム間予測符号化技術を改良し
た技術として、動画像の動きを考慮した動き補償フレー
ム間予測符号化方式や、フレーム間予測をフィールド間
予測に置き換えたフィールド間予測符号化方式や、過去
と未来の参照フレームから内挿を行う内挿予測符号化方
式がある。更に、これらの複数の予測符号化方式を適応
的に切り替える適応予測符号化方式がある。
の時間方向の相関を利用する技術であり、参照フレーム
から現在フレームの予測を行い、予測誤差信号を伝送す
る方式である。このフレーム間予測符号化技術を改良し
た技術として、動画像の動きを考慮した動き補償フレー
ム間予測符号化方式や、フレーム間予測をフィールド間
予測に置き換えたフィールド間予測符号化方式や、過去
と未来の参照フレームから内挿を行う内挿予測符号化方
式がある。更に、これらの複数の予測符号化方式を適応
的に切り替える適応予測符号化方式がある。
【0004】変換符号化技術は、複数の信号を線形変換
することで情報量を圧縮する技術であり、上記した適応
予測符号化方式に対しては、予測誤差信号に対して空間
方向(水平,垂直方向)に適用されるのが普通である。
この変換によって、画像信号に空間方向の冗長性が顕現
する。変換符号化技術にも、前述の適応予測符号化方式
と同様に、フレームでの変換符号化や、フィールドでの
変換符号化や、水平方向だけの変換符号化など複数の変
換方式を適応的に切り替える適応変換符号化方式があ
る。
することで情報量を圧縮する技術であり、上記した適応
予測符号化方式に対しては、予測誤差信号に対して空間
方向(水平,垂直方向)に適用されるのが普通である。
この変換によって、画像信号に空間方向の冗長性が顕現
する。変換符号化技術にも、前述の適応予測符号化方式
と同様に、フレームでの変換符号化や、フィールドでの
変換符号化や、水平方向だけの変換符号化など複数の変
換方式を適応的に切り替える適応変換符号化方式があ
る。
【0005】可変長符号化技術は、信号レベルの確率分
布の偏りを用いて情報量を圧縮する技術であり、上記し
た適応予測符号化方式の動きベクトルや、上記した適応
変換符号化方式の変換係数に適用されるのが普通であ
る。
布の偏りを用いて情報量を圧縮する技術であり、上記し
た適応予測符号化方式の動きベクトルや、上記した適応
変換符号化方式の変換係数に適用されるのが普通であ
る。
【0006】動画像圧縮符号化の国際標準方式であるI
TU−T H.261やISO IS11172(MP
EG−1)などでは、フレーム間予測符号化方式とし
て、動きベクトルを用いる動き補償フレーム間予測符号
化方式が採用されている。この方式では、先ず図15に
示すように、現在フレーム151を複数の、例えば、N
行M列(16行16列が一般的)の画素からなるブロッ
ク(現在ブロック)152に分割する。次に、参照フレ
ーム153上に、動きベクトルを探索する動きベクトル
探索範囲154を、例えば、現在ブロックの位置を中心
(0,0)として、水平方向に−HからH−1まで、垂
直方向に−VからV−1までの2V行2H列の画素の範
囲を設定し、その範囲内で、現在ブロックとの歪みが最
も小さくなる参照ブロック155を検索し、動きベクト
ルを算出する。
TU−T H.261やISO IS11172(MP
EG−1)などでは、フレーム間予測符号化方式とし
て、動きベクトルを用いる動き補償フレーム間予測符号
化方式が採用されている。この方式では、先ず図15に
示すように、現在フレーム151を複数の、例えば、N
行M列(16行16列が一般的)の画素からなるブロッ
ク(現在ブロック)152に分割する。次に、参照フレ
ーム153上に、動きベクトルを探索する動きベクトル
探索範囲154を、例えば、現在ブロックの位置を中心
(0,0)として、水平方向に−HからH−1まで、垂
直方向に−VからV−1までの2V行2H列の画素の範
囲を設定し、その範囲内で、現在ブロックとの歪みが最
も小さくなる参照ブロック155を検索し、動きベクト
ルを算出する。
【0007】例えば、画像が静止している場合は、現在
ブロックと同一位置、即ち、(0,0)の位置の参照ブ
ロックを予測ブロックとすれば歪みは0となる。また、
同一位置の候補ブロックよりも、右にh画素、下にv画
素ずらした参照ブロックが最も歪みが小さいという場
合、(v,h)の位置のブロックを予測ブロックとし、
動きベクトルMV(v,h)を伝送する。
ブロックと同一位置、即ち、(0,0)の位置の参照ブ
ロックを予測ブロックとすれば歪みは0となる。また、
同一位置の候補ブロックよりも、右にh画素、下にv画
素ずらした参照ブロックが最も歪みが小さいという場
合、(v,h)の位置のブロックを予測ブロックとし、
動きベクトルMV(v,h)を伝送する。
【0008】歪みの計算は、次のようにして行われる。
現在ブロック152上の左上の画素データをa(0,
0)で表し、現在ブロックのa(0,0)の位置に対応
する参照フレーム上の画素データをb(0,0)で表す
と、動きベクトルがMV(h,v)となる参照ブロック
155の左上の画素データはb(h,v)で表される。
このとき、現在ブロック152と参照ブロック155の
歪みD(h,v)は、次式(1)により表される。
現在ブロック152上の左上の画素データをa(0,
0)で表し、現在ブロックのa(0,0)の位置に対応
する参照フレーム上の画素データをb(0,0)で表す
と、動きベクトルがMV(h,v)となる参照ブロック
155の左上の画素データはb(h,v)で表される。
このとき、現在ブロック152と参照ブロック155の
歪みD(h,v)は、次式(1)により表される。
【0009】
【数1】
【0010】ここで、‖‖は、歪みを演算するノルムを
示し、一般に、絶対値演算または二乗演算が用いられる
が、計算の複雑さと効率の点で絶対値演算が頻繁に用い
られる。
示し、一般に、絶対値演算または二乗演算が用いられる
が、計算の複雑さと効率の点で絶対値演算が頻繁に用い
られる。
【0011】このように、現在フレームと参照フレーム
とをブロック単位で比較する方法は、ブロック・マッチ
ング法と呼ばれている。画素単位で動きベクトルを探索
するとすれば、1個の現在ブロックにつき動きベクトル
探索範囲154内には、(2V×2H)個の参照ブロッ
クが存在する。現在フレーム内の全ての現在ブロックに
ついて動きベクトルを探索すると、ブロック・マッチン
グ演算に要する演算量は膨大なものとなる。従来、動き
ベクトル探索を高速に行う装置として、例えば、特開平
8−340538号に記載された装置が知られている。
これは、動きベクトル探索に用いられる専用装置で、複
数にプロセッサエレメントを配置し、複数の候補ブロッ
クのブロック・マッチング演算を並列に行うことによ
り、高速に動きベクトル探索を実行している。しかし、
多数のプロセッサ・エレメントを配置しなければならな
いため、装置が大型で高価なものになってしまう。
とをブロック単位で比較する方法は、ブロック・マッチ
ング法と呼ばれている。画素単位で動きベクトルを探索
するとすれば、1個の現在ブロックにつき動きベクトル
探索範囲154内には、(2V×2H)個の参照ブロッ
クが存在する。現在フレーム内の全ての現在ブロックに
ついて動きベクトルを探索すると、ブロック・マッチン
グ演算に要する演算量は膨大なものとなる。従来、動き
ベクトル探索を高速に行う装置として、例えば、特開平
8−340538号に記載された装置が知られている。
これは、動きベクトル探索に用いられる専用装置で、複
数にプロセッサエレメントを配置し、複数の候補ブロッ
クのブロック・マッチング演算を並列に行うことによ
り、高速に動きベクトル探索を実行している。しかし、
多数のプロセッサ・エレメントを配置しなければならな
いため、装置が大型で高価なものになってしまう。
【0012】近年、半導体技術の進歩により、64ビッ
ト・アーキテクチャを持つ高速なマイクロプロセッサが
登場した。このような、マイクロプロセッサとしては、
例えば、Sun Microsystems社のUlt
raSparcIとII、DEC社のAlpha 211
64、MIPS社のR10000、Hewlett−P
ackard社のPA−80000、Motorola
社のPowerPC620などがある。そして、マイク
ロプロセッサが内蔵するALUなどの64ビットの演算
器を、例えば、8個の8ビット、4個の16ビット、2
個の32ビットに分割して利用し、1命令で複数のデー
タを並列に処理できるようにしたものもある。このSI
MD(Single Instruction,Mul
tiple Data)命令により、データサイズに応
じて8倍,4倍,2倍にデータ演算能力を上げることを
可能にしている。更に、グラフィック処理や画像符号化
処理などのマルチメディア処理を高速に行うために、そ
れらの処理アルゴリズムに特有なデータ演算を実行させ
る命令を追加したマイクロプロセッサもある。
ト・アーキテクチャを持つ高速なマイクロプロセッサが
登場した。このような、マイクロプロセッサとしては、
例えば、Sun Microsystems社のUlt
raSparcIとII、DEC社のAlpha 211
64、MIPS社のR10000、Hewlett−P
ackard社のPA−80000、Motorola
社のPowerPC620などがある。そして、マイク
ロプロセッサが内蔵するALUなどの64ビットの演算
器を、例えば、8個の8ビット、4個の16ビット、2
個の32ビットに分割して利用し、1命令で複数のデー
タを並列に処理できるようにしたものもある。このSI
MD(Single Instruction,Mul
tiple Data)命令により、データサイズに応
じて8倍,4倍,2倍にデータ演算能力を上げることを
可能にしている。更に、グラフィック処理や画像符号化
処理などのマルチメディア処理を高速に行うために、そ
れらの処理アルゴリズムに特有なデータ演算を実行させ
る命令を追加したマイクロプロセッサもある。
【0013】Sun Microsystems社のU
ltraSparcプロセッサには、VIS(Visu
al Instruction Set)と呼ぶマルチ
メディア処理に特化した命令セットを持つものがある
〔1996年8月、アイ・イー・イー・イー・マイク
ロ、第16巻、第4号、10頁〜20頁(IEEE M
icro,Vol.16,No.4,pp.10−p
p.20,August,1996)〕。命令セットの
中には、ブロック・マッチング法による動きベクトル探
索に使うpdistという命令がある。図16に示すよ
うに、pdist命令は、64ビットのレジスタr1,
r2のそれぞれに格納された8個の8ビットデータa0
〜a7 ,b0 〜b7 の対応する位置の8ビットデータの
差分の絶対値の総和をレジスタr3のデータと累積す
る。画素データは、8ビットなので、1回のpdist
命令で8画素分のブロック・マッチング演算を行うこと
ができる。ブロック・マッチング演算の際のブロックサ
イズが16×16の場合、pdist命令を32回実行
すれば、1個の動きベクトルの候補の誤差計算ができ
る。
ltraSparcプロセッサには、VIS(Visu
al Instruction Set)と呼ぶマルチ
メディア処理に特化した命令セットを持つものがある
〔1996年8月、アイ・イー・イー・イー・マイク
ロ、第16巻、第4号、10頁〜20頁(IEEE M
icro,Vol.16,No.4,pp.10−p
p.20,August,1996)〕。命令セットの
中には、ブロック・マッチング法による動きベクトル探
索に使うpdistという命令がある。図16に示すよ
うに、pdist命令は、64ビットのレジスタr1,
r2のそれぞれに格納された8個の8ビットデータa0
〜a7 ,b0 〜b7 の対応する位置の8ビットデータの
差分の絶対値の総和をレジスタr3のデータと累積す
る。画素データは、8ビットなので、1回のpdist
命令で8画素分のブロック・マッチング演算を行うこと
ができる。ブロック・マッチング演算の際のブロックサ
イズが16×16の場合、pdist命令を32回実行
すれば、1個の動きベクトルの候補の誤差計算ができ
る。
【0014】
【発明が解決しようとする課題】しかし、一般に、マイ
クロプロセッサは、データメモリからワードデータを読
み書きする場合、1ワードのバイト数でアライン(整
列)されたアドレスからしかデータを読み書きできな
い。例えば、1ワードが64ビットの場合、8バイト毎
の位置のアドレス、即ち、アドレス0000h,000
8h,0010h,0018h,…のようなアドレスの
下位3ビットが0となるアドレスからしかワードデータ
を読み書きできない。
クロプロセッサは、データメモリからワードデータを読
み書きする場合、1ワードのバイト数でアライン(整
列)されたアドレスからしかデータを読み書きできな
い。例えば、1ワードが64ビットの場合、8バイト毎
の位置のアドレス、即ち、アドレス0000h,000
8h,0010h,0018h,…のようなアドレスの
下位3ビットが0となるアドレスからしかワードデータ
を読み書きできない。
【0015】図17に、マイクロプロセッサを用いてブ
ロック・マッチング演算を実行する従来のブロック・マ
ッチング演算装置の構成例を示す。この装置は、マイク
ロプロセッサ171と、メモリ装置172とから構成さ
れる。
ロック・マッチング演算を実行する従来のブロック・マ
ッチング演算装置の構成例を示す。この装置は、マイク
ロプロセッサ171と、メモリ装置172とから構成さ
れる。
【0016】マイクロプロセッサ171は、レジスタフ
ァイル173と、データ演算を実行する演算ユニット1
74とから構成される。ここでは、ブロックサイズを1
6×16とする。
ァイル173と、データ演算を実行する演算ユニット1
74とから構成される。ここでは、ブロックサイズを1
6×16とする。
【0017】参照ブロックの左上の位置がb(0,0)
である場合は、ブロックの1行分の16個のデータb
(0,0)〜b(0,15)は、b(0,0)〜b
(0,7)と、b(0,8)〜b(0,15)の2個の
ワードデータに当てはまるので、それらを直ちに演算ユ
ニット174で実行するpdist命令のソースデータ
として使用することができる。
である場合は、ブロックの1行分の16個のデータb
(0,0)〜b(0,15)は、b(0,0)〜b
(0,7)と、b(0,8)〜b(0,15)の2個の
ワードデータに当てはまるので、それらを直ちに演算ユ
ニット174で実行するpdist命令のソースデータ
として使用することができる。
【0018】しかし、参照ブロックの左上の位置がb
(0,1)の場合は、ブロックの1行分の16個のデー
タb(0,1)〜b(0,16)は、b(0,0)〜b
(0,7)と、b(0,8)〜b(0,15)と、b
(0,16)〜b(0,23)の3個のワードデータに
当てはまるので、上記3個のワードデータをメモリ装置
172から読み出し、更に、演算ユニット174でデー
タの位置をシフトして2個のワードデータb(0,1)
〜b(0,8),b(0,9)〜b(0,16)を作成
してからでなければ、pdist命令のソースデータと
しては使えない。このデータのアラインメント操作が必
要となるため、ブロック・マッチング演算の効率が上が
らないという問題がある。
(0,1)の場合は、ブロックの1行分の16個のデー
タb(0,1)〜b(0,16)は、b(0,0)〜b
(0,7)と、b(0,8)〜b(0,15)と、b
(0,16)〜b(0,23)の3個のワードデータに
当てはまるので、上記3個のワードデータをメモリ装置
172から読み出し、更に、演算ユニット174でデー
タの位置をシフトして2個のワードデータb(0,1)
〜b(0,8),b(0,9)〜b(0,16)を作成
してからでなければ、pdist命令のソースデータと
しては使えない。このデータのアラインメント操作が必
要となるため、ブロック・マッチング演算の効率が上が
らないという問題がある。
【0019】UltraSparcのVIS命令には、
データのアラインメントのために、アドレスをアライメ
ントする命令alignaddrと、データをアライメ
ントする命令faligndataとが用意されてい
る。そして、参照ブロックの位置で決まるデータアドレ
スをアラインし、次に連続する2個のワードデータをロ
ードし、この2個のワードを使ってアラインされたワー
ドデータを作る。この操作を参照ブロックと現在ブロッ
クに対して行ってから、pdist命令を実行する。
データのアラインメントのために、アドレスをアライメ
ントする命令alignaddrと、データをアライメ
ントする命令faligndataとが用意されてい
る。そして、参照ブロックの位置で決まるデータアドレ
スをアラインし、次に連続する2個のワードデータをロ
ードし、この2個のワードを使ってアラインされたワー
ドデータを作る。この操作を参照ブロックと現在ブロッ
クに対して行ってから、pdist命令を実行する。
【0020】図18にサイズが16×16のブロックの
ブロック・マッチング演算のための、C言語形式で書か
れたプログラムの例を示す。pdist命令用の2個の
入力データを作るために、2回のalignaddr命
令と、2回のfaligndata命令と、4回のロー
ド命令(プログラム中では、代入で表記)の合計8命令
を実行している。このように、1回のpdist命令を
実行するために、9命令も必要となり、ブロック・マッ
チング演算の効率が上がらないという問題がある。
ブロック・マッチング演算のための、C言語形式で書か
れたプログラムの例を示す。pdist命令用の2個の
入力データを作るために、2回のalignaddr命
令と、2回のfaligndata命令と、4回のロー
ド命令(プログラム中では、代入で表記)の合計8命令
を実行している。このように、1回のpdist命令を
実行するために、9命令も必要となり、ブロック・マッ
チング演算の効率が上がらないという問題がある。
【0021】そこで、本発明の目的は、データをワード
単位でしか入出力できない装置であっても、ブロック・
マッチング演算を高速に行えるようにすることにある。
単位でしか入出力できない装置であっても、ブロック・
マッチング演算を高速に行えるようにすることにある。
【0022】
【課題を解決するための手段】本発明のブロック・マッ
チング演算装置は、上記目的を達成するため、動画像圧
縮符号化に用いられる動きベクトルを探索するために現
在ブロックと参照ブロックとのブロック・マッチング演
算を行うブロック・マッチング演算装置に於いて、現在
ブロック記憶部(図1の10)と、参照領域記憶部(図
1の11)と、部分ブロック・マッチング演算データ記
憶部(図1の12)と、処理対象としている現在ブロッ
クの画素を右方向に2画素ずつ回転させた複数の右回転
シフト現在ブロックを作成し、該作成した複数の右回転
シフト現在ブロックと前記現在ブロックとを前記現在ブ
ロック記憶部(図1の10)に格納する右回転シフト現
在ブロック作成手段(図1の4)と、前記処理対象とし
ている現在ブロックに対する参照領域の画素を左方向に
1画素だけ移動させた左シフト参照領域を作成し、該作
成した左シフト参照領域と前記参照領域とを前記参照領
域記憶部(図1の11)に格納する左シフト参照領域作
成手段(図1の6)と、前記現在ブロック記憶部(図1
の10)から取り出した現在ブロック,右回転シフト現
在ブロックと、前記参照領域記憶部(図1の11)に格
納されている参照領域,左シフト参照領域から取り出し
た参照ブロックとの組み合わせに対して、組み合わせる
ブロックをそれぞれ2列ずつの部分ブロックに分割し、
各部分ブロックの組に対してブロック・マッチング演算
を並行に行うことにより部分ブロック・マッチング演算
データを求めて、前記部分ブロック・マッチング演算デ
ータ記憶部(図1の12)に格納する部分ブロック・マ
ッチング演算手段(図1の7)と、前記部分ブロック・
マッチング演算データ記憶部(図1の12)に格納され
ている、或る参照ブロックについての部分ブロック・マ
ッチング演算データと前記或る参照ブロックから水平方
向に参照ブロックの列数だけ離れた位置の参照ブロック
についての部分ブロック・マッチング演算データとの中
から、或る動きベクトルについてのブロック・マッチン
グ演算結果を算出するために必要となる部分ブロック・
マッチング演算データを選択し、それらの総和を計算す
る総和演算手段(図1の9)とを備えている。
チング演算装置は、上記目的を達成するため、動画像圧
縮符号化に用いられる動きベクトルを探索するために現
在ブロックと参照ブロックとのブロック・マッチング演
算を行うブロック・マッチング演算装置に於いて、現在
ブロック記憶部(図1の10)と、参照領域記憶部(図
1の11)と、部分ブロック・マッチング演算データ記
憶部(図1の12)と、処理対象としている現在ブロッ
クの画素を右方向に2画素ずつ回転させた複数の右回転
シフト現在ブロックを作成し、該作成した複数の右回転
シフト現在ブロックと前記現在ブロックとを前記現在ブ
ロック記憶部(図1の10)に格納する右回転シフト現
在ブロック作成手段(図1の4)と、前記処理対象とし
ている現在ブロックに対する参照領域の画素を左方向に
1画素だけ移動させた左シフト参照領域を作成し、該作
成した左シフト参照領域と前記参照領域とを前記参照領
域記憶部(図1の11)に格納する左シフト参照領域作
成手段(図1の6)と、前記現在ブロック記憶部(図1
の10)から取り出した現在ブロック,右回転シフト現
在ブロックと、前記参照領域記憶部(図1の11)に格
納されている参照領域,左シフト参照領域から取り出し
た参照ブロックとの組み合わせに対して、組み合わせる
ブロックをそれぞれ2列ずつの部分ブロックに分割し、
各部分ブロックの組に対してブロック・マッチング演算
を並行に行うことにより部分ブロック・マッチング演算
データを求めて、前記部分ブロック・マッチング演算デ
ータ記憶部(図1の12)に格納する部分ブロック・マ
ッチング演算手段(図1の7)と、前記部分ブロック・
マッチング演算データ記憶部(図1の12)に格納され
ている、或る参照ブロックについての部分ブロック・マ
ッチング演算データと前記或る参照ブロックから水平方
向に参照ブロックの列数だけ離れた位置の参照ブロック
についての部分ブロック・マッチング演算データとの中
から、或る動きベクトルについてのブロック・マッチン
グ演算結果を算出するために必要となる部分ブロック・
マッチング演算データを選択し、それらの総和を計算す
る総和演算手段(図1の9)とを備えている。
【0023】この構成に於いては、右回転シフト現在ブ
ロック作成手段(図1の4)が、現在ブロックの画素を
2画素ずつ右回転した複数の右回転シフト現在ブロック
を作成して現在ブロックと共に現在ブロック記憶部(図
1の10)に格納し、、左シフト参照領域作成手段(図
1の6)が、参照領域を1画素だけ左にシフトした左シ
フト参照領域を作成して参照領域と共に参照領域記憶部
(図1の11)に格納し、部分ブロック・マッチング演
算手段(図1の7)が、現在ブロック,右回転シフト現
在ブロックと、参照領域,左シフト参照領域から取り出
した参照ブロックとを組み合わせ、ブロックを2画素列
ずつ区切った範囲のそれぞれについて並列にブロック・
マッチング演算を実行して部分ブロック・マッチング演
算データを求め、総和演算手段(図1の9)が、所望の
動きベクトルに関するブロック・マッチング演算に必要
な部分ブロック・マッチング演算結果を選択し、その総
和を求める。
ロック作成手段(図1の4)が、現在ブロックの画素を
2画素ずつ右回転した複数の右回転シフト現在ブロック
を作成して現在ブロックと共に現在ブロック記憶部(図
1の10)に格納し、、左シフト参照領域作成手段(図
1の6)が、参照領域を1画素だけ左にシフトした左シ
フト参照領域を作成して参照領域と共に参照領域記憶部
(図1の11)に格納し、部分ブロック・マッチング演
算手段(図1の7)が、現在ブロック,右回転シフト現
在ブロックと、参照領域,左シフト参照領域から取り出
した参照ブロックとを組み合わせ、ブロックを2画素列
ずつ区切った範囲のそれぞれについて並列にブロック・
マッチング演算を実行して部分ブロック・マッチング演
算データを求め、総和演算手段(図1の9)が、所望の
動きベクトルに関するブロック・マッチング演算に必要
な部分ブロック・マッチング演算結果を選択し、その総
和を求める。
【0024】つまり、現在ブロックの画素を移動させた
右回転シフト現在ブロックと参照領域の画素を移動させ
た左シフト参照領域とを予め作っておき、現在ブロッ
ク,右回転シフト現在ブロックと、参照領域,左シフト
参照領域から取り出した参照ブロックとを組み合わせる
ことにより、ブロック・マッチング演算を行うようにし
たので、ワード単位でしかデータを入出力できない装置
であっても、ブロック・マッチング演算の度に画素をシ
フトする必要がなくなる。また、ブロックを区切ること
により得られた部分ブロック・マッチング演算結果を組
み合わせてブロック全体のブロック・マッチング演算結
果を得るようにしているので、1個の参照ブロックから
異なる動きベクトルのための部分ブロック・マッチング
演算を並行して実行できる。
右回転シフト現在ブロックと参照領域の画素を移動させ
た左シフト参照領域とを予め作っておき、現在ブロッ
ク,右回転シフト現在ブロックと、参照領域,左シフト
参照領域から取り出した参照ブロックとを組み合わせる
ことにより、ブロック・マッチング演算を行うようにし
たので、ワード単位でしかデータを入出力できない装置
であっても、ブロック・マッチング演算の度に画素をシ
フトする必要がなくなる。また、ブロックを区切ること
により得られた部分ブロック・マッチング演算結果を組
み合わせてブロック全体のブロック・マッチング演算結
果を得るようにしているので、1個の参照ブロックから
異なる動きベクトルのための部分ブロック・マッチング
演算を並行して実行できる。
【0025】
【発明の実施の形態】次に本発明の実施の形態について
図面を参照して詳細に説明する。
図面を参照して詳細に説明する。
【0026】図1は本発明の実施の形態を示すブロック
図であり、ブロック・マッチング演算を行うデータ処理
装置1と、データ記憶装置2と、現在フレームが格納さ
れる現在フレームメモリ13と、参照フレームが格納さ
れる参照フレームメモリ14とから構成されている。
図であり、ブロック・マッチング演算を行うデータ処理
装置1と、データ記憶装置2と、現在フレームが格納さ
れる現在フレームメモリ13と、参照フレームが格納さ
れる参照フレームメモリ14とから構成されている。
【0027】データ処理装置1は、右回転シフト現在ブ
ロック作成手段4と、左シフト参照領域作成手段6と、
部分ブロック・マッチング演算手段7と、総和演算手段
9とを備えている。また、データ記憶装置2内には、現
在ブロック記憶部10と、参照領域記憶部11と、部分
ブロック・マッチング演算データ記憶部12とが設けら
れている。
ロック作成手段4と、左シフト参照領域作成手段6と、
部分ブロック・マッチング演算手段7と、総和演算手段
9とを備えている。また、データ記憶装置2内には、現
在ブロック記憶部10と、参照領域記憶部11と、部分
ブロック・マッチング演算データ記憶部12とが設けら
れている。
【0028】右回転シフト現在ブロック作成手段4は、
現在フレームメモリ13から入力した現在ブロックの画
素を右方向に0画素,2画素,4画素,…,(P−2)
画素ずつ回転させたP/2個の右回転シフト現在ブロッ
クを作り、現在ブロック記憶部10に格納する機能を有
する。ここで、Pは、部分ブロック・マッチング演算手
段7が並列処理できる画素の数である。
現在フレームメモリ13から入力した現在ブロックの画
素を右方向に0画素,2画素,4画素,…,(P−2)
画素ずつ回転させたP/2個の右回転シフト現在ブロッ
クを作り、現在ブロック記憶部10に格納する機能を有
する。ここで、Pは、部分ブロック・マッチング演算手
段7が並列処理できる画素の数である。
【0029】左シフト参照領域作成手段6は、参照フレ
ームメモリ14から入力した参照領域の画素を左方向に
1画素だけ移動させた左シフト参照領域を作り、入力し
た参照領域と共に参照領域記憶部11に格納する機能を
有する。
ームメモリ14から入力した参照領域の画素を左方向に
1画素だけ移動させた左シフト参照領域を作り、入力し
た参照領域と共に参照領域記憶部11に格納する機能を
有する。
【0030】部分ブロック・マッチング演算手段7は、
現在ブロック記憶部10に格納されている現在ブロッ
ク,右回転シフト現在ブロックと、参照領域記憶部11
に格納されている参照領域,左シフト参照領域から取り
出した参照ブロックとに対して部分ブロック・マッチン
グ演算を実行し、部分ブロック・マッチング演算データ
を部分ブロック・マッチング演算データ記憶部12に格
納する機能を有する。
現在ブロック記憶部10に格納されている現在ブロッ
ク,右回転シフト現在ブロックと、参照領域記憶部11
に格納されている参照領域,左シフト参照領域から取り
出した参照ブロックとに対して部分ブロック・マッチン
グ演算を実行し、部分ブロック・マッチング演算データ
を部分ブロック・マッチング演算データ記憶部12に格
納する機能を有する。
【0031】総和演算手段9は、或る参照ブロックと、
この参照ブロックから水平方向に参照ブロックの列数だ
け離れた参照ブロックとに関する部分ブロック・マッチ
ング演算データに基づいて、或る動きベクトルについて
のブロック・マッチング演算に必要になる部分ブロック
・マッチング演算データを部分ブロック・マッチング演
算データ記憶部12から取り出し、それらの総和を計算
する機能を有する。
この参照ブロックから水平方向に参照ブロックの列数だ
け離れた参照ブロックとに関する部分ブロック・マッチ
ング演算データに基づいて、或る動きベクトルについて
のブロック・マッチング演算に必要になる部分ブロック
・マッチング演算データを部分ブロック・マッチング演
算データ記憶部12から取り出し、それらの総和を計算
する機能を有する。
【0032】次に、図1に示した装置の動作について説
明する。尚、以下の説明に於いて、ブロック.マッチン
グ演算に用いるブロックは、図15に示すように、N行
M列の画素から構成されるものとし、動きベクトル探索
範囲154を現在ブロック152の左上の位置に相当す
る点を(0,0)として、水平方向に−Hから(H−
1)までの2H点,垂直方向に−Vから(V−1)まで
の2V点の矩形の範囲とするものとする。従って、参照
領域156は、(2V+N−1)行(2H+M−1)行
の画素から構成されることになる。また、部分ブロック
・マッチング演算手段7は、図4に示すようにP個の画
素を並列処理でき、ブロックの1行をQ(=M/P)個
に分割して処理するとする。更に、現在ブロックと参照
領域のデータは、数画素のデータを含みワード単位で読
み込めるように配置され、現在ブロックと参照領域の列
はワードの整数倍のサイズで、第1列の画素の位置がワ
ード境界にあるとする。
明する。尚、以下の説明に於いて、ブロック.マッチン
グ演算に用いるブロックは、図15に示すように、N行
M列の画素から構成されるものとし、動きベクトル探索
範囲154を現在ブロック152の左上の位置に相当す
る点を(0,0)として、水平方向に−Hから(H−
1)までの2H点,垂直方向に−Vから(V−1)まで
の2V点の矩形の範囲とするものとする。従って、参照
領域156は、(2V+N−1)行(2H+M−1)行
の画素から構成されることになる。また、部分ブロック
・マッチング演算手段7は、図4に示すようにP個の画
素を並列処理でき、ブロックの1行をQ(=M/P)個
に分割して処理するとする。更に、現在ブロックと参照
領域のデータは、数画素のデータを含みワード単位で読
み込めるように配置され、現在ブロックと参照領域の列
はワードの整数倍のサイズで、第1列の画素の位置がワ
ード境界にあるとする。
【0033】データ処理装置1は、動きベクトルを探索
するために、N×M画素からなる現在ブロックを現在フ
レームメモリ13から読み込むと共に、(2V+N−
1)×(2H+M−1)画素からなる参照領域を参照フ
レームメモリ14から読み込む。
するために、N×M画素からなる現在ブロックを現在フ
レームメモリ13から読み込むと共に、(2V+N−
1)×(2H+M−1)画素からなる参照領域を参照フ
レームメモリ14から読み込む。
【0034】右回転シフト現在ブロック作成手段4は、
現在ブロックの各画素を0画素,2画素,…,(P−
2)画素ずつ右方向に回転させたP/2個の右回転シフ
ト現在ブロックを作り、現在ブロック記憶部10に格納
する。
現在ブロックの各画素を0画素,2画素,…,(P−
2)画素ずつ右方向に回転させたP/2個の右回転シフ
ト現在ブロックを作り、現在ブロック記憶部10に格納
する。
【0035】図2は右回転シフト現在ブロック作成手段
4の処理内容を説明するための図である。
4の処理内容を説明するための図である。
【0036】図2(a)に示すCBは、現在フレームメ
モリ13から入力した現在ブロックを表す。画素データ
をa(i,j)で表し、左上の位置の画素データをa
(0,0)とする。
モリ13から入力した現在ブロックを表す。画素データ
をa(i,j)で表し、左上の位置の画素データをa
(0,0)とする。
【0037】図2(b)に示すCB(r)は、r(r=
0,2,4,…,P−2)画素分右回転した場合の画素
データの位置を示している。CB(r)のi行j列の位
置にある画素は、CB(r,i,j)=a(i,(M−
r+j)%M)となる(%はモジュロ演算を表す)。
0,2,4,…,P−2)画素分右回転した場合の画素
データの位置を示している。CB(r)のi行j列の位
置にある画素は、CB(r,i,j)=a(i,(M−
r+j)%M)となる(%はモジュロ演算を表す)。
【0038】第2図(c)は、r=0,2,4,…,
(P−2)の場合の右回転シフト現在ブロックの画素デ
ータの位置を示している。画素CB(0)は、0画素分
右回転シフトしたブロックで、入力した現在ブロックC
Bと同じになる。CB(2)は、現在ブロックCBを2
画素分右回転シフトしたブロックで、列単位で2画素分
右方向に移動され、例えば、第1列にあった画素a
(i,0)(i=0,1,2,…,N−1)は第3列に
移動し、また、第(M−1)列,第M列にあった画素a
(i,M−2),a(i,M−1)は、それぞれ、第1
列,第2列に移動している。
(P−2)の場合の右回転シフト現在ブロックの画素デ
ータの位置を示している。画素CB(0)は、0画素分
右回転シフトしたブロックで、入力した現在ブロックC
Bと同じになる。CB(2)は、現在ブロックCBを2
画素分右回転シフトしたブロックで、列単位で2画素分
右方向に移動され、例えば、第1列にあった画素a
(i,0)(i=0,1,2,…,N−1)は第3列に
移動し、また、第(M−1)列,第M列にあった画素a
(i,M−2),a(i,M−1)は、それぞれ、第1
列,第2列に移動している。
【0039】このように、右回転シフト現在ブロック作
成手段4は、入力した現在ブロックCBに対して0画
素,2画素,4画素,…,(P−2)画素右回転シフト
した全部で(P/2)個の右回転シフト現在ブロックC
B(0),CB(2),CB(4),…,CB(P−
2)を作り、現在ブロック記憶部10に記録する。その
際、各右回転シフト現在ブロックCB(0),CB
(2),CB(4),…,CB(P−2)の第1列の画
素の位置がワードの境界となるようにする。
成手段4は、入力した現在ブロックCBに対して0画
素,2画素,4画素,…,(P−2)画素右回転シフト
した全部で(P/2)個の右回転シフト現在ブロックC
B(0),CB(2),CB(4),…,CB(P−
2)を作り、現在ブロック記憶部10に記録する。その
際、各右回転シフト現在ブロックCB(0),CB
(2),CB(4),…,CB(P−2)の第1列の画
素の位置がワードの境界となるようにする。
【0040】左シフト参照領域作成手段6は、参照フレ
ームメモリ14から入力した参照領域の各画素を1画素
分左方向に移動させた左シフト参照領域を作り、入力し
た参照領域と左シフト参照領域の2個の参照領域データ
を参照領域記憶部11に格納する。
ームメモリ14から入力した参照領域の各画素を1画素
分左方向に移動させた左シフト参照領域を作り、入力し
た参照領域と左シフト参照領域の2個の参照領域データ
を参照領域記憶部11に格納する。
【0041】図3は左シフト参照領域作成手段6の処理
内容を説明するための図である。
内容を説明するための図である。
【0042】図3(a)は、入力した参照領域RAの画
素データb(i,j)を示している。b(0,0)は、
現在ブロックの左上の位置、即ち、a(0,0)に対応
する位置を指し、動きベクトルがMV(0,0)となる
位置である。
素データb(i,j)を示している。b(0,0)は、
現在ブロックの左上の位置、即ち、a(0,0)に対応
する位置を指し、動きベクトルがMV(0,0)となる
位置である。
【0043】図3(b)は、参照領域RAをl(l=
0,1)画素だけ左シフトした場合の画素位置を示して
いる。参照領域RA(l)のi行j列(i,j)の位置
にある画素は、RA(l,i,j)=b(i−V,l+
j−H)となる。
0,1)画素だけ左シフトした場合の画素位置を示して
いる。参照領域RA(l)のi行j列(i,j)の位置
にある画素は、RA(l,i,j)=b(i−V,l+
j−H)となる。
【0044】図3(c)は、l=0,1の場合の参照領
域RA(0),RA(1)を示している。参照領域RA
(0)は、入力した参照領域RAと同じである。左シフ
ト参照領域RA(1)は、入力した参照領域RAを1画
素分左シフトしたものであり、列単位で1画素分左方向
に移動され、例えば、(i,j)の位置にあった画素
は、(i,j−1)の位置に移動する。また、最も左側
の列の画素b(i,−H)(i=−V,1,2,…,V
+N−1)は、シフトにより無くなり、第2番目の列の
画素b(i,1−H)が最も左側の列に移動する。ま
た、左シフトにより最も右側の列は、データが無い状態
になる。左シフト参照領域作成手段6は、この図3
(c)に示した参照領域RA(0)と左シフト参照領域
RA(1)の2個のデータを参照領域記憶部11に格納
する。その際、参照領域RA(0)と左シフト参照領域
RA(1)の第1列の画素の位置がワード境界となるよ
うにする。
域RA(0),RA(1)を示している。参照領域RA
(0)は、入力した参照領域RAと同じである。左シフ
ト参照領域RA(1)は、入力した参照領域RAを1画
素分左シフトしたものであり、列単位で1画素分左方向
に移動され、例えば、(i,j)の位置にあった画素
は、(i,j−1)の位置に移動する。また、最も左側
の列の画素b(i,−H)(i=−V,1,2,…,V
+N−1)は、シフトにより無くなり、第2番目の列の
画素b(i,1−H)が最も左側の列に移動する。ま
た、左シフトにより最も右側の列は、データが無い状態
になる。左シフト参照領域作成手段6は、この図3
(c)に示した参照領域RA(0)と左シフト参照領域
RA(1)の2個のデータを参照領域記憶部11に格納
する。その際、参照領域RA(0)と左シフト参照領域
RA(1)の第1列の画素の位置がワード境界となるよ
うにする。
【0045】部分ブロック・マッチング演算手段7は、
現在ブロック記憶部10から取り出した現在ブロック,
右回転シフト現在ブロックと、参照領域記憶部11に格
納されている参照領域,左シフト参照領域から取り出し
た参照ブロックとに対して部分ブロック・マッチング演
算を並列に実行する。
現在ブロック記憶部10から取り出した現在ブロック,
右回転シフト現在ブロックと、参照領域記憶部11に格
納されている参照領域,左シフト参照領域から取り出し
た参照ブロックとに対して部分ブロック・マッチング演
算を並列に実行する。
【0046】図4は、部分ブロック・マッチング演算手
段7の構成例を示したブロック図である。入力A,Bか
らは、それぞれ現在ブロック,参照ブロックをP列ずつ
に区切ることにより構成される部分ブロックに存在する
画素データ列{a0,a1,…,ap-1 }, {b0,b1,…,
bP-1 }が、N行分ずつ入力される。入力された画素デ
ータ列{a0,a1,…, ap-1 }, {b0,b1,…
, bP-1 }は、それぞれレジスタ41,42に格納され
る。
段7の構成例を示したブロック図である。入力A,Bか
らは、それぞれ現在ブロック,参照ブロックをP列ずつ
に区切ることにより構成される部分ブロックに存在する
画素データ列{a0,a1,…,ap-1 }, {b0,b1,…,
bP-1 }が、N行分ずつ入力される。入力された画素デ
ータ列{a0,a1,…, ap-1 }, {b0,b1,…
, bP-1 }は、それぞれレジスタ41,42に格納され
る。
【0047】画素差分演算手段43は、レジスタ41,
42に格納された画素データ列{a0,a1,…, ap-1 }
, {b0,b1,…, bP-1 }に対して、先ず、同一位置に
存在する画素データの差分の絶対値|a0 −b0 |, |
a1 −b1 |, …, |aP-1−bP-1 |を求める。次い
で、|a0 −b0 |と|a1 −b1 |との和c0 , |a
2 −b2 |と|a3 −b3 |との和c1 , … ,|aP-2
−bP-2 |と|aP-1−bP-1 |との和cP/2 -1という
ように、隣接する差分の絶対値の和を求め、更に、レジ
スタ44に格納されている和c0,c1,…, cP/2-1 の累
積値と今回求めた和c0,c1,…, cP/2-1 とを加算して
レジスタ44に格納する。つまり、画素差分演算手段4
3は、次式(2)で示される演算処理を行うことにな
る。但し、式(2)に於いて、u=0,1,2,…,P
/2−1である。
42に格納された画素データ列{a0,a1,…, ap-1 }
, {b0,b1,…, bP-1 }に対して、先ず、同一位置に
存在する画素データの差分の絶対値|a0 −b0 |, |
a1 −b1 |, …, |aP-1−bP-1 |を求める。次い
で、|a0 −b0 |と|a1 −b1 |との和c0 , |a
2 −b2 |と|a3 −b3 |との和c1 , … ,|aP-2
−bP-2 |と|aP-1−bP-1 |との和cP/2 -1という
ように、隣接する差分の絶対値の和を求め、更に、レジ
スタ44に格納されている和c0,c1,…, cP/2-1 の累
積値と今回求めた和c0,c1,…, cP/2-1 とを加算して
レジスタ44に格納する。つまり、画素差分演算手段4
3は、次式(2)で示される演算処理を行うことにな
る。但し、式(2)に於いて、u=0,1,2,…,P
/2−1である。
【0048】 cu ←cu +|a2u−b2u|+|a2u+1−b2u+1| …(2)
【0049】このような演算処理をN行の入力に対して
繰り返し実行すれば、次式(3)のような結果が得られ
る。但し、式(3)に於いて、u=0,1,2,…,P
/2−1である。
繰り返し実行すれば、次式(3)のような結果が得られ
る。但し、式(3)に於いて、u=0,1,2,…,P
/2−1である。
【0050】
【数2】
【0051】cu は、ブロックを2列ずつに区切ってブ
ロック・マッチング演算をした結果となる。部分ブロッ
ク・マッチング演算手段7は、C={c0,c1,…, c
P/2-1}を出力する。
ロック・マッチング演算をした結果となる。部分ブロッ
ク・マッチング演算手段7は、C={c0,c1,…, c
P/2-1}を出力する。
【0052】ここで、cu を2画素列分の部分ブロック
・マッチング演算データとする理由について説明する。
部分ブロック・マッチング演算の途中でオーバーフロー
が発生するのを防ぐためには、cu のビット長を十分に
長くする必要がある。一般的に画素データは8ビットで
表現される。そこで、cu のビット長を画素のビット長
の2倍の16ビットとすれば、十分にオーバーフローを
防ぐことができると考えられる。但し、画素差分演算手
段43の入出力のビット長は同じにした方が都合が良
く、隣接する2画素列の差分データを加算してしまうこ
とで、出力のビット長が長くなるのを避けている。
・マッチング演算データとする理由について説明する。
部分ブロック・マッチング演算の途中でオーバーフロー
が発生するのを防ぐためには、cu のビット長を十分に
長くする必要がある。一般的に画素データは8ビットで
表現される。そこで、cu のビット長を画素のビット長
の2倍の16ビットとすれば、十分にオーバーフローを
防ぐことができると考えられる。但し、画素差分演算手
段43の入出力のビット長は同じにした方が都合が良
く、隣接する2画素列の差分データを加算してしまうこ
とで、出力のビット長が長くなるのを避けている。
【0053】次に、部分ブロック・マッチング演算手段
7へのデータの入力順序について説明する。
7へのデータの入力順序について説明する。
【0054】先ず、N行M列の参照ブロックと画素の位
置関係を図5を参照して説明する。参照領域RA(l)
から取り出した、動きベクトルMV(v,h)の位置の
参照ブロックをRB(l,v,h)で表す。この時、参
照ブロックRB(l,v,h)の左上の画素が、b
(v,h+1)となり、i行j列の位置の画素は、RB
(l,v,h,i,j)=b(v+i,h+l+j)と
なる。
置関係を図5を参照して説明する。参照領域RA(l)
から取り出した、動きベクトルMV(v,h)の位置の
参照ブロックをRB(l,v,h)で表す。この時、参
照ブロックRB(l,v,h)の左上の画素が、b
(v,h+1)となり、i行j列の位置の画素は、RB
(l,v,h,i,j)=b(v+i,h+l+j)と
なる。
【0055】部分ブロック・マッチング演算手段7は、
図6に示す現在ブロックCB(r)と参照ブロックRB
(l,v,h)を組み合わせた、全部でP個の組み合わ
せについて部分ブロック・マッチング演算を行う。部分
ブロック・マッチング演算は、組み合わせたブロック毎
に順次行っても良いし、また、複数の異なった組み合わ
せのブロックの演算をインターリーブして実行しても良
い。
図6に示す現在ブロックCB(r)と参照ブロックRB
(l,v,h)を組み合わせた、全部でP個の組み合わ
せについて部分ブロック・マッチング演算を行う。部分
ブロック・マッチング演算は、組み合わせたブロック毎
に順次行っても良いし、また、複数の異なった組み合わ
せのブロックの演算をインターリーブして実行しても良
い。
【0056】次に、図6に示すような組み合わせで、部
分ブロック・マッチング演算DF=‖CB(r)−RB
(l,v,h)‖を実行したときに得られる演算結果に
ついて説明する。
分ブロック・マッチング演算DF=‖CB(r)−RB
(l,v,h)‖を実行したときに得られる演算結果に
ついて説明する。
【0057】図7は、現在ブロックCB(r)と参照ブ
ロックRB(l,v,h)と部分ブロック・マッチング
演算結果DFとの関係を示す図である。部分ブロック・
マッチング演算手段7は、P画素のデータの差分絶対値
の隣接する2画素同士を累積した結果を出力する。ブロ
ックのサイズがN行M列であるので、P列ずつ(M/
P)回に分けて部分ブロック・マッチング演算を実行す
る。そして、N行分のデータを累積する。ブロックの左
側からk(k=0,2,4,…,M−2)番目の部分ブ
ロック・マッチング演算結果は、次式(4),(5)に
示すものとなる。
ロックRB(l,v,h)と部分ブロック・マッチング
演算結果DFとの関係を示す図である。部分ブロック・
マッチング演算手段7は、P画素のデータの差分絶対値
の隣接する2画素同士を累積した結果を出力する。ブロ
ックのサイズがN行M列であるので、P列ずつ(M/
P)回に分けて部分ブロック・マッチング演算を実行す
る。そして、N行分のデータを累積する。ブロックの左
側からk(k=0,2,4,…,M−2)番目の部分ブ
ロック・マッチング演算結果は、次式(4),(5)に
示すものとなる。
【0058】r≦kの場合
【数3】
【0059】r>kの場合
【数4】
【0060】ここで、DF(v’,h’,k’)は、動
きベクトルMV(v’,h’)のk’番目の部分ブロッ
ク・マッチング演算を示す。
きベクトルMV(v’,h’)のk’番目の部分ブロッ
ク・マッチング演算を示す。
【0061】図6に示すように、CB(r)(r=0,
2,4,…,P−2)とRB(l,v,h)(l=0,
1)とを組み合わせることにより、動きベクトルMV
(v,h+2−M)からMV(v,h+P−1−M)ま
でと、動きベクトルMV(v,h)からMV(v,h+
P−1)までの部分ブロック・マッチング演算が実行さ
れる。
2,4,…,P−2)とRB(l,v,h)(l=0,
1)とを組み合わせることにより、動きベクトルMV
(v,h+2−M)からMV(v,h+P−1−M)ま
でと、動きベクトルMV(v,h)からMV(v,h+
P−1)までの部分ブロック・マッチング演算が実行さ
れる。
【0062】このようにして、RB(l,v,h+
P),RB(l,v,h+2P),RB(l,v,h+
3P),…と水平方向にP画素ずれた位置の参照ブロッ
クの部分ブロック・マッチング演算を順次実行する。部
分ブロック・マッチング演算結果は、部分ブロック・マ
ッチング演算データ記憶部12に格納される。
P),RB(l,v,h+2P),RB(l,v,h+
3P),…と水平方向にP画素ずれた位置の参照ブロッ
クの部分ブロック・マッチング演算を順次実行する。部
分ブロック・マッチング演算結果は、部分ブロック・マ
ッチング演算データ記憶部12に格納される。
【0063】総和演算手段9は、部分ブロック・マッチ
ング演算データ記憶部12から同一動きベクトルに関す
る部分ブロック・マッチング演算結果データを取り出し
てそれらの総和を求め、ブロック・マッチング演算結果
として出力する。参照ブロックRB(l,v,h)と参
照ブロックRB(l,v,h+M)というように水平方
向にM画素ずれた位置の2個の参照ブロックの演算が終
わったところで、MV(v,h)からMV(v,h+
P)までの動きベクトルに関する全ての部分ブロック・
マッチング演算結果が揃う。
ング演算データ記憶部12から同一動きベクトルに関す
る部分ブロック・マッチング演算結果データを取り出し
てそれらの総和を求め、ブロック・マッチング演算結果
として出力する。参照ブロックRB(l,v,h)と参
照ブロックRB(l,v,h+M)というように水平方
向にM画素ずれた位置の2個の参照ブロックの演算が終
わったところで、MV(v,h)からMV(v,h+
P)までの動きベクトルに関する全ての部分ブロック・
マッチング演算結果が揃う。
【0064】図7に示した部分ブロック・マッチング演
算データの網かけ部分が、動きベクトルMV(v,h+
r+l)の場合の部分ブロック・マッチング演算データ
を示している。部分ブロック・マッチング演算データ
は、参照ブロックRB(l,v,h)と、それから水平
方向にM画素だけずれた参照ブロックRB(l,v,h
+M)との2個に分かれて得られるので、網かけ部分の
総和を求めて完全なブロック・マッチング演算結果DF
(v,h+r+l)を得る。
算データの網かけ部分が、動きベクトルMV(v,h+
r+l)の場合の部分ブロック・マッチング演算データ
を示している。部分ブロック・マッチング演算データ
は、参照ブロックRB(l,v,h)と、それから水平
方向にM画素だけずれた参照ブロックRB(l,v,h
+M)との2個に分かれて得られるので、網かけ部分の
総和を求めて完全なブロック・マッチング演算結果DF
(v,h+r+l)を得る。
【0065】
【実施例】図8は実施の形態の一実施例のブロック図で
あり、ブロック・マッチング演算を実行するマイクロプ
ロセッサ81と、マイクロプロセッサ81のプログラム
を格納しているプログラムメモリ82と、データを一時
的に格納する主記憶メモリ(以下、主記憶装置)83
と、現在フレームデータを格納している現在フレームメ
モリ84と、参照フレームデータを格納している参照フ
レームメモリ85と、ブロック・マッチング演算結果を
格納するブロック・マッチング演算結果メモリ86とか
ら構成されている。
あり、ブロック・マッチング演算を実行するマイクロプ
ロセッサ81と、マイクロプロセッサ81のプログラム
を格納しているプログラムメモリ82と、データを一時
的に格納する主記憶メモリ(以下、主記憶装置)83
と、現在フレームデータを格納している現在フレームメ
モリ84と、参照フレームデータを格納している参照フ
レームメモリ85と、ブロック・マッチング演算結果を
格納するブロック・マッチング演算結果メモリ86とか
ら構成されている。
【0066】マイクロプロセッサ81は、一時的にデー
タを置くレジスタファイル87と、部分ブロック・マッ
チング演算,シフト,回転シフト,データ・スワップな
どのデータ処理を実行する部分ブロック・マッチング演
算命令付きプログラム制御演算器88を備えている。ま
た、主記憶装置83は、現在ブロック記憶部10と、参
照領域記憶部11と、部分ブロック・マッチング演算デ
ータ記憶部12とを備えている。
タを置くレジスタファイル87と、部分ブロック・マッ
チング演算,シフト,回転シフト,データ・スワップな
どのデータ処理を実行する部分ブロック・マッチング演
算命令付きプログラム制御演算器88を備えている。ま
た、主記憶装置83は、現在ブロック記憶部10と、参
照領域記憶部11と、部分ブロック・マッチング演算デ
ータ記憶部12とを備えている。
【0067】次に、本実施例の動作を説明する。ここで
は、説明を簡単にするために、現在ブロック,参照ブロ
ックのサイズを16×16画素(M=N=16)とし、
1画素のデータは、8ビットで表されるとする。更に、
マイクロプロセッサ81の1ワードは64ビットで、1
ワードに8画素のデータが格納されているとし、部分ブ
ロック・マッチング演算命令付きプログラム制御演算器
88は、8画素分のデータを並列処理できるとする(P
=8)。
は、説明を簡単にするために、現在ブロック,参照ブロ
ックのサイズを16×16画素(M=N=16)とし、
1画素のデータは、8ビットで表されるとする。更に、
マイクロプロセッサ81の1ワードは64ビットで、1
ワードに8画素のデータが格納されているとし、部分ブ
ロック・マッチング演算命令付きプログラム制御演算器
88は、8画素分のデータを並列処理できるとする(P
=8)。
【0068】先ず、マイクロプロセッサ81は、現在フ
レームメモリ84から現在ブロックCBを取り出し、C
B(0),CB(2),CB(4),CB(6)の4個
(P/2個)の右回転シフト現在ブロックを作る。これ
は、部分ブロック・マッチング演算命令付きプログラム
制御演算器88で実行される連結右シフト命令を使って
実現できる。
レームメモリ84から現在ブロックCBを取り出し、C
B(0),CB(2),CB(4),CB(6)の4個
(P/2個)の右回転シフト現在ブロックを作る。これ
は、部分ブロック・マッチング演算命令付きプログラム
制御演算器88で実行される連結右シフト命令を使って
実現できる。
【0069】図9に連結右シフト命令shr3 r1,
r2,r3の動作を示す。連結右シフト命令shr3
は、2個のレジスタr2,r3の内容を連結したデータ
を、レジスタr1で指定されるビット数だけ右シフト
し、その結果をレジスタr3に格納することを指示す
る。例えば、右回転シフト現在ブロックCB(2)を作
る場合は、 r1=16 r2={a(i,0),a(i,1),a(i,2),
a(i,3),a(i,4),a(i,5),a(i,
6),a(i,7)} r3={a(i,8),a(i,9),a(i,1
0),a(i,11),a(i,12),a(i,1
3),a(i,14),a(i,15)} として、連結右シフト命令 shr3 r1,r3,r2 を実行すると、 r3={a(i,14),a(i,15),a(i,
0),a(i,1),a(i,2),a(i,3),a
(i,4),a(i,5)} が得られ、次に、 r4={a(i,8),a(i,9),a(i,1
0),a(i,11),a(i,12),a(i,1
3),a(i,14),a(i,15)} として連結右シフト命令 shr3 r1,r2,r4 を実行すると、 r4={a(i,6),a(i,7),a(i,8),
a(i,9),a(i,10),a(i,11),a
(i,12),a(i,13)} が得られ、r3とr4の内容から容易に右回転シフト現
在ブロックを作ることができる。右回転シフト現在ブロ
ックのデータは、ワードデータの形式で現在ブロック記
憶部10に格納される。
r2,r3の動作を示す。連結右シフト命令shr3
は、2個のレジスタr2,r3の内容を連結したデータ
を、レジスタr1で指定されるビット数だけ右シフト
し、その結果をレジスタr3に格納することを指示す
る。例えば、右回転シフト現在ブロックCB(2)を作
る場合は、 r1=16 r2={a(i,0),a(i,1),a(i,2),
a(i,3),a(i,4),a(i,5),a(i,
6),a(i,7)} r3={a(i,8),a(i,9),a(i,1
0),a(i,11),a(i,12),a(i,1
3),a(i,14),a(i,15)} として、連結右シフト命令 shr3 r1,r3,r2 を実行すると、 r3={a(i,14),a(i,15),a(i,
0),a(i,1),a(i,2),a(i,3),a
(i,4),a(i,5)} が得られ、次に、 r4={a(i,8),a(i,9),a(i,1
0),a(i,11),a(i,12),a(i,1
3),a(i,14),a(i,15)} として連結右シフト命令 shr3 r1,r2,r4 を実行すると、 r4={a(i,6),a(i,7),a(i,8),
a(i,9),a(i,10),a(i,11),a
(i,12),a(i,13)} が得られ、r3とr4の内容から容易に右回転シフト現
在ブロックを作ることができる。右回転シフト現在ブロ
ックのデータは、ワードデータの形式で現在ブロック記
憶部10に格納される。
【0070】次に、参照領域RAから左シフト参照領域
RA(0),RA(1)を作る。これは、部分ブロック
・マッチング演算命令付きプログラム制御演算器88で
実行される連結左シフト命令を使って実現できる。図1
0に連結左シフト命令shl3 r1,r2,r3の動
作を示す。連結左シフト命令shl3は、2個のレジス
タr2,r3の内容を連結したデータを、レジスタr1
で指定されるビット数だけ左シフトし、その結果をレジ
スタr3に格納することを指示する。例えば、左シフト
参照領域RA(1)を作る場合は、 r1=8 r2={b(i,0),b(i,1),b(i,2),
b(i,3),b(i,4),b(i,5),b(i,
6),b(i,7)} r3={b(i,8),b(i,9),b(i,1
0),b(i,11),b(i,12),b(i,1
3),b(i,14),b(i,15)} として、連結左シフト命令 shl3 r1,r3,r2 を実行すると、 r3={b(i,1),b(i,2),b(i,3),
b(i,4),b(i,5),b(i,6),b(i,
7),b(i,8)} が得られるので、容易に左シフト参照領域RA(1)を
作ることができる。左シフト参照領域のデータは、ワー
ドデータの形式で参照領域記憶部11に格納される。
RA(0),RA(1)を作る。これは、部分ブロック
・マッチング演算命令付きプログラム制御演算器88で
実行される連結左シフト命令を使って実現できる。図1
0に連結左シフト命令shl3 r1,r2,r3の動
作を示す。連結左シフト命令shl3は、2個のレジス
タr2,r3の内容を連結したデータを、レジスタr1
で指定されるビット数だけ左シフトし、その結果をレジ
スタr3に格納することを指示する。例えば、左シフト
参照領域RA(1)を作る場合は、 r1=8 r2={b(i,0),b(i,1),b(i,2),
b(i,3),b(i,4),b(i,5),b(i,
6),b(i,7)} r3={b(i,8),b(i,9),b(i,1
0),b(i,11),b(i,12),b(i,1
3),b(i,14),b(i,15)} として、連結左シフト命令 shl3 r1,r3,r2 を実行すると、 r3={b(i,1),b(i,2),b(i,3),
b(i,4),b(i,5),b(i,6),b(i,
7),b(i,8)} が得られるので、容易に左シフト参照領域RA(1)を
作ることができる。左シフト参照領域のデータは、ワー
ドデータの形式で参照領域記憶部11に格納される。
【0071】次に、現在ブロックCB(r)と参照ブロ
ックRB(l,v,h)から、部分ブロック・マッチン
グ演算データを求める。部分ブロック・マッチング演算
命令付きプログラム制御演算器88で実行する部分ブロ
ック・マッチング演算について、図11を参照して説明
する。
ックRB(l,v,h)から、部分ブロック・マッチン
グ演算データを求める。部分ブロック・マッチング演算
命令付きプログラム制御演算器88で実行する部分ブロ
ック・マッチング演算について、図11を参照して説明
する。
【0072】部分ブロック・マッチング演算命令 pbm r1,r2,r3 は、レジスタr1,r2に格納されている8個の画素同
士の差分の絶対値|ai−bi |(i=0,1,2,
…,7)を求め、次に隣接する2個の絶対値を加算し、
更に、累積レジスタr3の内容を加算する。例えば、 r1={a(i,0),a(i,1),a(i,2),
a(i,3),a(i,4),a(i,5),a(i,
6),a(i,7)} r2={b(i,0),b(i,1),b(i,2),
b(i,3),b(i,4),b(i,5),b(i,
6),b(i,7)} r3={0,0,0,0} とし、i=0から15までpbm命令を実行すると、 r3={c0,c1,c2,c3 }が得られる。尚、c0 〜c
3 は、次式(6)〜(9)によって示されるものであ
る。
士の差分の絶対値|ai−bi |(i=0,1,2,
…,7)を求め、次に隣接する2個の絶対値を加算し、
更に、累積レジスタr3の内容を加算する。例えば、 r1={a(i,0),a(i,1),a(i,2),
a(i,3),a(i,4),a(i,5),a(i,
6),a(i,7)} r2={b(i,0),b(i,1),b(i,2),
b(i,3),b(i,4),b(i,5),b(i,
6),b(i,7)} r3={0,0,0,0} とし、i=0から15までpbm命令を実行すると、 r3={c0,c1,c2,c3 }が得られる。尚、c0 〜c
3 は、次式(6)〜(9)によって示されるものであ
る。
【0073】
【数5】
【0074】このようにして、部分ブロック・マッチン
グ演算データを求めることができる。部分ブロック・マ
ッチング演算データは、主記憶メモリ(主記憶装置)8
3内の部分ブロック・マッチング演算データ記憶部12
にワードデータの形式で格納される。
グ演算データを求めることができる。部分ブロック・マ
ッチング演算データは、主記憶メモリ(主記憶装置)8
3内の部分ブロック・マッチング演算データ記憶部12
にワードデータの形式で格納される。
【0075】次に、部分ブロック・マッチング演算デー
タから、完全なブロック・マッチング演算結果を求める
方法について説明する。
タから、完全なブロック・マッチング演算結果を求める
方法について説明する。
【0076】図12は、現在ブロックCB(4)と参照
ブロックRB(l,v,h)とを組み合わせて動きベク
トルMV(v,h+4)のブロック・マッチング演算結
果を得る場合の説明図である。図中の網かけ部分が必要
な部分ブロック・マッチング演算データである。これ
は、参照ブロックRB(l,v,h)とRB(l,v,
h+M)との部分ブロック・マッチング演算の結果から
得られる。
ブロックRB(l,v,h)とを組み合わせて動きベク
トルMV(v,h+4)のブロック・マッチング演算結
果を得る場合の説明図である。図中の網かけ部分が必要
な部分ブロック・マッチング演算データである。これ
は、参照ブロックRB(l,v,h)とRB(l,v,
h+M)との部分ブロック・マッチング演算の結果から
得られる。
【0077】|CB(4)−RB(l,v,h)|と|
CB(4)−RB(l,v,h+M)|の前半の8画素
分のデータは、ワードデータの半分の分割レジスタの内
容だけが必要となるので、この2個の内容を連結左シフ
ト命令を使って、1ワードにまとめる。そして、図13
に示すように、4個の分割レジスタのデータの総和を求
め命令を実行する。また、|CB(4)−RB(l,
v,h)|の後半の8画素のデータは、全て必要となる
ので、4個の分割レジスタのデータの総和を計算する。
そして、最後に、2個の総和データを加算して完全なブ
ロック・マッチング演算結果を得る。ブロック・マッチ
ング演算結果は、主記憶装置83中の部分ブロック・マ
ッチング演算データ記憶部12に格納される。
CB(4)−RB(l,v,h+M)|の前半の8画素
分のデータは、ワードデータの半分の分割レジスタの内
容だけが必要となるので、この2個の内容を連結左シフ
ト命令を使って、1ワードにまとめる。そして、図13
に示すように、4個の分割レジスタのデータの総和を求
め命令を実行する。また、|CB(4)−RB(l,
v,h)|の後半の8画素のデータは、全て必要となる
ので、4個の分割レジスタのデータの総和を計算する。
そして、最後に、2個の総和データを加算して完全なブ
ロック・マッチング演算結果を得る。ブロック・マッチ
ング演算結果は、主記憶装置83中の部分ブロック・マ
ッチング演算データ記憶部12に格納される。
【0078】図14は実施の形態の他の実施例ブロック
図であり、コンピュータ141と、記録媒体142と、
記憶装置143とから構成されている。記録媒体142
は、磁気ディスク,半導体メモリ,その他の記録媒体で
ある。
図であり、コンピュータ141と、記録媒体142と、
記憶装置143とから構成されている。記録媒体142
は、磁気ディスク,半導体メモリ,その他の記録媒体で
ある。
【0079】記録媒体142に記録されたプログラム
は、コンピュータ141によって読み込まれ、コンピュ
ータ141の動作を制御することで、コンピュータ14
1上に図1に示した右回転シフト現在ブロック作成手段
4,左シフト参照領域作成手段6,部分ブロック・マッ
チング演算手段7,総和演算手段9を実現する。尚、図
1に示した現在ブロック記憶部10,参照領域記憶部1
1,部分ブロック・マッチング演算データ記憶部12
は、記憶装置143上に構成される。
は、コンピュータ141によって読み込まれ、コンピュ
ータ141の動作を制御することで、コンピュータ14
1上に図1に示した右回転シフト現在ブロック作成手段
4,左シフト参照領域作成手段6,部分ブロック・マッ
チング演算手段7,総和演算手段9を実現する。尚、図
1に示した現在ブロック記憶部10,参照領域記憶部1
1,部分ブロック・マッチング演算データ記憶部12
は、記憶装置143上に構成される。
【0080】
【発明の効果】本発明の第1の効果は、ブロック・マッ
チング演算を高速に実行できるということである。その
理由は、現在ブロックを回転させた右回転シフト現在ブ
ロックと参照領域をシフトした左シフト参照領域とを予
め作成しておくので、ブロック・マッチング演算の際に
画素を操作する必要がないためである。
チング演算を高速に実行できるということである。その
理由は、現在ブロックを回転させた右回転シフト現在ブ
ロックと参照領域をシフトした左シフト参照領域とを予
め作成しておくので、ブロック・マッチング演算の際に
画素を操作する必要がないためである。
【0081】第2の効果は、入出力動作が低速の記憶装
置を使用できるので、メモリコストを低減できるという
ことである。その理由は、複数の画素を1ワードにまと
めて格納するので、記憶装置との間のデータの入出力回
数を減らすことができ、低速動作のメモリ装置を利用で
きるからである。
置を使用できるので、メモリコストを低減できるという
ことである。その理由は、複数の画素を1ワードにまと
めて格納するので、記憶装置との間のデータの入出力回
数を減らすことができ、低速動作のメモリ装置を利用で
きるからである。
【図1】本発明の実施の形態を示すブロック図である。
【図2】現在ブロックと右回転シフト現在ブロックとの
画素の位置関係を示す図である。
画素の位置関係を示す図である。
【図3】参照領域と左シフト参照領域との画素の位置関
係を示す図である。
係を示す図である。
【図4】部分ブロック・マッチング演算手段7の動作を
説明するための図である。
説明するための図である。
【図5】参照ブロックと画素の位置関係を示す図であ
る。
る。
【図6】現在ブロックと参照ブロックの組み合わせと部
分ブロック・マッチング演算データとの関係を示す図で
ある。
分ブロック・マッチング演算データとの関係を示す図で
ある。
【図7】部分ブロック・マッチング演算データからブロ
ック・マッチング演算結果を算出する方法を説明するた
めの図である。
ック・マッチング演算結果を算出する方法を説明するた
めの図である。
【図8】本発明の実施の形態の一実施例のブロック図で
ある。
ある。
【図9】連結右シフト命令の動作を説明するための図で
ある。
ある。
【図10】連結左シフト命令の動作を説明するための図
である。
である。
【図11】部分ブロック・マッチング演算命令の動作を
説明するための図である。
説明するための図である。
【図12】部分ブロック・マッチング演算データからブ
ロック・マッチング演算結果を得る操作を説明するため
の図である。
ロック・マッチング演算結果を得る操作を説明するため
の図である。
【図13】4個の分割レジスタのデータの総和を求める
命令の動作を説明するための図である。
命令の動作を説明するための図である。
【図14】本発明の実施の形態の他の実施例のブロック
図である。
図である。
【図15】現在ブロックと参照ブロックとの関係を示す
図である。
図である。
【図16】従来例のブロック・マッチング演算命令の動
作を説明するための図である。
作を説明するための図である。
【図17】従来のマイクロプロセッサを用いたブロック
・マッチング演算装置の問題点を説明するための図であ
る。
・マッチング演算装置の問題点を説明するための図であ
る。
【図18】マイクロプロセッサを用いた従来のブロック
・マッチング演算装置に於いて使用されているブロック
・マッチング演算プログラムの一例を示す図である。
・マッチング演算装置に於いて使用されているブロック
・マッチング演算プログラムの一例を示す図である。
1…データ処理装置 2…データ記憶装置 4…右回転シフト現在ブロック作成手段 6…左シフト参照領域作成手段 7…部分ブロック・マッチング演算手段 9…総和演算手段 10…現在ブロック記憶部 11…参照領域記憶部 12…部分ブロック・マッチング演算データ記憶部 13…現在フレームメモリ 14…参照フレームメモリ 41,42,44…レジスタ 43…画素差分演算手段 81…マイクロプロセッサ 82…プログラムメモリ 83…主記憶装置(主記憶メモリ) 84…現在フレームメモリ 85…参照フレームメモリ 86…ブロック・マッチング演算結果メモリ 87…レジスタファイル 88…部分ブロック・マッチング演算命令付きプログラ
ム制御演算器 141…コンピュータ 142…記録媒体 143…記憶装置 151…現在フレーム 152…現在ブロック 153…参照フレーム 154…動きベクトル探索範囲 155…参照ブロック 156…参照領域
ム制御演算器 141…コンピュータ 142…記録媒体 143…記憶装置 151…現在フレーム 152…現在ブロック 153…参照フレーム 154…動きベクトル探索範囲 155…参照ブロック 156…参照領域
Claims (4)
- 【請求項1】 動画像圧縮符号化に用いられる動きベク
トルを探索するために現在ブロックと参照ブロックとの
ブロック・マッチング演算を行うブロック・マッチング
演算装置に於いて、 現在ブロック記憶部と、 参照領域記憶部と、 部分ブロック・マッチング演算データ記憶部と、 処理対象としている現在ブロックの画素を右方向に2画
素ずつ回転させた複数の右回転シフト現在ブロックを作
成し、該作成した複数の右回転シフト現在ブロックと前
記現在ブロックとを前記現在ブロック記憶部に格納する
右回転シフト現在ブロック作成手段と、 前記処理対象としている現在ブロックに対する参照領域
の画素を左方向に1画素だけ移動させた左シフト参照領
域を作成し、該作成した左シフト参照領域と前記参照領
域とを前記参照領域記憶部に格納する左シフト参照領域
作成手段と、 前記現在ブロック記憶部から取り出した現在ブロック,
右回転シフト現在ブロックと、前記参照領域記憶部に格
納されている参照領域,左シフト参照領域から取り出し
た参照ブロックとの組み合わせに対して、組み合わせる
ブロックをそれぞれ2列ずつの部分ブロックに分割し、
各部分ブロックの組に対してブロック・マッチング演算
を並行に行うことにより部分ブロック・マッチング演算
データを求めて、前記部分ブロック・マッチング演算デ
ータ記憶部に格納する部分ブロック・マッチング演算手
段と、 前記部分ブロック・マッチング演算データ記憶部に格納
されている、或る参照ブロックについての部分ブロック
・マッチング演算データと前記或る参照ブロックから水
平方向に参照ブロックの列数だけ離れた位置の参照ブロ
ックについての部分ブロック・マッチング演算データと
の中から、或る動きベクトルについてのブロック・マッ
チング演算結果を算出するために必要となる部分ブロッ
ク・マッチング演算データを選択し、それらの総和を計
算する総和演算手段とを備えたことを特徴とするブロッ
ク・マッチング演算装置。 - 【請求項2】 前記右回転シフト現在ブロック作成手段
は、現在ブロック,右回転シフト現在ブロックを前記現
在ブロック記憶部に格納する際、第1列の画素の位置が
ワード境界となるようにする構成を備え、 前記左シフト参照領域作成手段は、参照領域,左シフト
参照領域を前記参照領域記憶部に格納する際、第1列の
画素の位置がワード境界となるようにする構成を備えた
ことを特徴とする請求項1記載のブロック・マッチング
演算装置。 - 【請求項3】 前記部分ブロック・マッチング演算手段
を、 マイクロプロセッサに内蔵されるプログラム制御の演算
器であって、入力される、複数の画素データからなる2
個のワードデータに対して、同じ位置の画素データ同士
の差分の絶対値を求め、隣接する2個の絶対値を加算し
て前回の演算で求めた加算結果と累積する命令を持つ演
算器で構成することを特徴とする請求項2記載のブロッ
ク・マッチング演算装置。 - 【請求項4】 現在ブロック記憶部,参照領域記憶部お
よび部分ブロック・マッチング演算データ記憶部を備え
たコンピュータを、動画像圧縮符号化に用いられる動き
ベクトルを探索するために現在ブロックと参照ブロック
とのブロック・マッチング演算を行うブロック・マッチ
ング演算装置として機能させるためのプログラムであっ
て、 前記コンピュータを、 処理対象としている現在ブロックの画素を右方向に2画
素ずつ回転させた複数の右回転シフト現在ブロックを作
成し、該作成した複数の右回転シフト現在ブロックと前
記現在ブロックとを前記現在ブロック記憶部に格納する
右回転シフト現在ブロック作成手段、 前記処理対象としている現在ブロックに対する参照領域
の画素を左方向に1画素だけ移動させた左シフト参照領
域を作成し、該作成した左シフト参照領域と前記参照領
域とを前記参照領域記憶部に格納する左シフト参照領域
作成手段、 前記現在ブロック記憶部から取り出した現在ブロック,
右回転シフト現在ブロックと、前記参照領域記憶部に格
納されている参照領域,左シフト参照領域から取り出し
た参照ブロックとの組み合わせに対して、組み合わせる
ブロックをそれぞれ2列ずつの部分ブロックに分割し、
各部分ブロックの組に対してブロック・マッチング演算
を並行に行うことにより部分ブロック・マッチング演算
データを得て、前記部分ブロック・マッチング演算デー
タ記憶部に格納する部分ブロック・マッチング演算手
段、 前記部分ブロック・マッチング演算データ記憶部に格納
されている、或る参照ブロックについての部分ブロック
・マッチング演算データと前記或る参照ブロックから水
平方向に参照ブロックの列数だけ離れた位置の参照ブロ
ックについての部分ブロック・マッチング演算データと
の中から、或る動きベクトルについてのブロック・マッ
チング演算結果を算出するために必要となる部分ブロッ
ク・マッチング演算データを抽出し、それらの総和を計
算する総和演算手段として機能させるためのプログラム
を記録した機械読み取り可能な記録媒体。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP21007797A JP2897761B2 (ja) | 1997-07-18 | 1997-07-18 | ブロック・マッチング演算装置及びプログラムを記録した機械読み取り可能な記録媒体 |
US09/116,481 US6330282B1 (en) | 1997-07-18 | 1998-07-16 | Block matching arithmetic device and recording medium readable program-recorded machine |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP21007797A JP2897761B2 (ja) | 1997-07-18 | 1997-07-18 | ブロック・マッチング演算装置及びプログラムを記録した機械読み取り可能な記録媒体 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH1141604A JPH1141604A (ja) | 1999-02-12 |
JP2897761B2 true JP2897761B2 (ja) | 1999-05-31 |
Family
ID=16583444
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP21007797A Expired - Fee Related JP2897761B2 (ja) | 1997-07-18 | 1997-07-18 | ブロック・マッチング演算装置及びプログラムを記録した機械読み取り可能な記録媒体 |
Country Status (2)
Country | Link |
---|---|
US (1) | US6330282B1 (ja) |
JP (1) | JP2897761B2 (ja) |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4004653B2 (ja) * | 1998-08-03 | 2007-11-07 | カスタム・テクノロジー株式会社 | 動きベクトル検出方法および装置、記録媒体 |
US20020136302A1 (en) * | 2001-03-21 | 2002-09-26 | Naiqian Lu | Cascade window searching method and apparatus |
JP4015934B2 (ja) | 2002-04-18 | 2007-11-28 | 株式会社東芝 | 動画像符号化方法及び装置 |
TWI260509B (en) * | 2002-08-15 | 2006-08-21 | Sony Corp | Method and apparatus for processing image data and semiconductor storage device |
US20040042551A1 (en) * | 2002-09-04 | 2004-03-04 | Tinku Acharya | Motion estimation |
US7266151B2 (en) * | 2002-09-04 | 2007-09-04 | Intel Corporation | Method and system for performing motion estimation using logarithmic search |
US20040057626A1 (en) * | 2002-09-23 | 2004-03-25 | Tinku Acharya | Motion estimation using a context adaptive search |
US7986733B2 (en) * | 2004-07-30 | 2011-07-26 | Broadcom Corporation | Tertiary content addressable memory based motion estimator |
US7742199B2 (en) * | 2004-10-06 | 2010-06-22 | Kabushiki Kaisha Toshiba | System and method for compressing and rotating image data |
US8526680B2 (en) * | 2005-11-30 | 2013-09-03 | Nikon Corporation | Image processing method, image processing program, image processing device, and imaging device |
JP2007189441A (ja) * | 2006-01-12 | 2007-07-26 | Fujifilm Corp | 動き検出方法及びその装置 |
JP4793070B2 (ja) | 2006-04-12 | 2011-10-12 | ソニー株式会社 | 動きベクトル探索方法及び装置 |
TWI384886B (zh) * | 2009-04-02 | 2013-02-01 | Mstar Semiconductor Inc | 移動估測方法 |
EP2493196A4 (en) * | 2009-10-20 | 2013-06-05 | Sharp Kk | IMAGE ENCODING APPARATUS, IMAGE DECODING APPARATUS, AND CODED DATA STRUCTURE |
US8654852B2 (en) * | 2010-06-07 | 2014-02-18 | Himax Technologies Ltd. | Circuit for performing motion estimation and motion compensation |
CN102340617B (zh) * | 2010-07-14 | 2014-06-11 | 奇景光电股份有限公司 | 运动估算及运动补偿电路 |
WO2018147329A1 (ja) * | 2017-02-10 | 2018-08-16 | パナソニック インテレクチュアル プロパティ コーポレーション オブ アメリカ | 自由視点映像生成方法及び自由視点映像生成システム |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5825680A (en) * | 1996-06-21 | 1998-10-20 | Digital Equipment Corporation | Method and apparatus for performing fast division |
US6167090A (en) * | 1996-12-26 | 2000-12-26 | Nippon Steel Corporation | Motion vector detecting apparatus |
-
1997
- 1997-07-18 JP JP21007797A patent/JP2897761B2/ja not_active Expired - Fee Related
-
1998
- 1998-07-16 US US09/116,481 patent/US6330282B1/en not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
US6330282B1 (en) | 2001-12-11 |
JPH1141604A (ja) | 1999-02-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2897761B2 (ja) | ブロック・マッチング演算装置及びプログラムを記録した機械読み取り可能な記録媒体 | |
JP3037383B2 (ja) | 画像処理システム及びその方法 | |
JPH06334980A (ja) | 動画像の動きベクトル検出装置 | |
JPH03256485A (ja) | 動きベクトル検出回路 | |
JPH02268370A (ja) | 画像編集方法及び装置 | |
JP2001218215A (ja) | 動き推定器 | |
JPH04354287A (ja) | 画像補間回路 | |
JP4410172B2 (ja) | 動きベクトル推定方法,動きベクトル推定装置,動きベクトル推定プログラムおよび動きベクトル推定プログラム記録媒体 | |
JPH0723397A (ja) | 画像信号復号化装置及び画像信号復号化方法 | |
JP4228705B2 (ja) | 動きベクトル探索方法および装置 | |
JP2868457B2 (ja) | 動きベクトル探索装置 | |
JP3001754B2 (ja) | 階層的動ベクトル検出装置 | |
JPS6360952B2 (ja) | ||
JP3189655B2 (ja) | 動きベクトル検出装置およびその方法 | |
JP3698501B2 (ja) | 動きベクトル検出装置 | |
JP2872105B2 (ja) | ディストーション算出装置 | |
JP2866321B2 (ja) | 動きベクトル探索方法および装置 | |
JP3374014B2 (ja) | 画像相関器 | |
JP4185579B2 (ja) | パイプライン構造計算回路 | |
JP2866324B2 (ja) | 動きベクトル探索装置 | |
JPH07336689A (ja) | 動き補償回路 | |
JPH0993581A (ja) | 動画像符号化装置の動き検出装置 | |
JP2868441B2 (ja) | 動きベクトル探索方法および探索装置 | |
JP3371481B2 (ja) | ディジタル演算装置 | |
JP2934134B2 (ja) | 動画像圧縮におけるブロック・マッチング方法と装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20080312 Year of fee payment: 9 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090312 Year of fee payment: 10 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20090312 Year of fee payment: 10 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100312 Year of fee payment: 11 |
|
LAPS | Cancellation because of no payment of annual fees |