JP5938935B2 - 動画像符号化装置及び動画像符号化方法 - Google Patents

動画像符号化装置及び動画像符号化方法 Download PDF

Info

Publication number
JP5938935B2
JP5938935B2 JP2012035652A JP2012035652A JP5938935B2 JP 5938935 B2 JP5938935 B2 JP 5938935B2 JP 2012035652 A JP2012035652 A JP 2012035652A JP 2012035652 A JP2012035652 A JP 2012035652A JP 5938935 B2 JP5938935 B2 JP 5938935B2
Authority
JP
Japan
Prior art keywords
motion vector
search range
block
vector detection
unit
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
Application number
JP2012035652A
Other languages
English (en)
Other versions
JP2013172350A (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.)
Fujitsu Ltd
Original Assignee
Fujitsu 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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2012035652A priority Critical patent/JP5938935B2/ja
Publication of JP2013172350A publication Critical patent/JP2013172350A/ja
Application granted granted Critical
Publication of JP5938935B2 publication Critical patent/JP5938935B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

本発明は、動きベクトル検出を並列に行う動画像符号化装置、及び動画像符号化方法に関する。
H.264/AVC(Advanced Video Coding)(以下、H.264とも呼ぶ)などの動画像符号化は、動き補償と直交変換・量子化処理を用いたハイブリッド動画像符号化方式である。符号化対象の入力画像は、動きベクトル検出により、参照画像(以下、参照ピクチャとも呼ぶ)の中から類似している画像ブロック(以下、参照ブロックとも呼ぶ)が算出される。
H.264の符号化では、入力画像と参照ブロックの差分画像について直交変換・量子化処理を行い、得られた係数データをエントロピー符号化して出力する。参照ブロックを特定するためのどの参照ピクチャを使用したかの情報と、どのブロックサイズで動きベクトルを算出したかの情報と、動きベクトルの情報とは、別途エントロピー符号化して出力される。
H.264の符号化技術には、入力画像を符号化するモードしてP_Skipがある。このP_Skipモードでは、どの参照ピクチャを使用したかの情報、動きベクトルを算出したブロックサイズの情報、及び動きベクトルの情報を符号化する代わりに、マクロブロックをP_Skipで符号化したことを示す情報を符号化する。
P_Skipであることを示す符号は、どの参照ピクチャを選択したかの情報や動きベクトルの情報を符号化した場合と比較して少ない符号量となる。そのため、動画像の圧縮率が高まるため、このタイプのマクロブロックが多く出ることが望ましい。
マクロブロックのタイプがP_Skipであることを受信した復号装置は、このマクロブロックにおいて隣接する周りのマクロブロックの参照ピクチャや動きベクトルからこれらのマクロブロックの参照ピクチャ、動きベクトルを復元する。よって、問題なく画像を復元することができる。この復元方法は、H.264の中で規定されている。
動きベクトル検出は、動きベクトル検出対象の参照ピクチャからの処理対象マクロブロックを中心とした矩形領域の画像データに対して行なわれる。参照ピクチャは、例えばSDRAM(Synchronous Dynamic Random Access Memory)などの外部メモリに保存される。
動きベクトル検出部は、SDRAMから画像データを読み込んで動きベクトル検出を行う。このときに読み込む画像データ量を減らすために、プリフェッチメモリを用いる技術がある。また、解像度の大きな画像を実時間で符号化するために、この動きベクトル検出部を複数備えた技術がある。
動き探索部が探索した動きベクトルが有効であるか否かを判定し、有効と判定された動きベクトルの分布に基づいて動きベクトル探索範囲を判定する技術がある。
特開2008−141288号公報 特開2008−5545号公報 特開2009−296443号公報
まず、P_Skipについて説明する。図1は、処理対象ブロックと隣接ブロックとの関係を示す図である。図1に示す隣接ブロックAは、処理対象ブロックの左隣のブロック、隣接ブロックBは、処理対象ブロックの上隣のブロック、隣接ブロックCは右上隣のブロック、隣接ブロックDは、処理対象ブロックの左上隣のブロックである。
ピクチャ上端のMB(マクロブロック)の場合、隣接ブロックB、C、Dは存在しない。ピクチャ左端のMBの場合、隣接ブロックAは存在しない。ピクチャ右端のMBの場合、隣接ブロックCは存在しない。
図2は、P_Skipマクロブロックの動きベクトルの算出処理を示すフローチャートである。図2に示す算出方法では、以下のようにP_Skipベクトルが決定される。
(1)(2)隣接Aまたは隣接Bが存在しないMBの場合、P_Skipベクトルは0ベクトルとなる(S11〜13、S18)。
(3)隣接Aの参照ピクチャインデックスref_idxL0Aが0かつ隣接Aの動きベクトルが0ベクトルの場合、P_Skipベクトルは0となる(S14、S18)。
(4)隣接Bの参照ピクチャインデックスref_idxL0Bが0かつ隣接Bの動きベクトルが0ベクトルの場合、P_Skipベクトルは0となる(S15、S18)。
(1)〜(4)のいずれにも当てはまらない場合、図3のフローチャートでP_Skipベクトルが決定される(S16、S17)。
図3は、通常のP_Skipベクトル算出処理を示すフローチャートである。図3に示すように、隣接ブロックA、B、Cの各動きベクトルの各成分に対し、median値がP_Skipの動きベクトルとなる(S21〜S26)。なお、median(X、Y、Z)は3つの値X、Y、Zの内、中間の値を返す関数である。
ここで、プリフェッチメモリを用いて複数の動きベクトル検出部が並列に動きベクトル検出を行う従来技術について説明する。図4は、従来技術の動作を説明するための図である。図4に示す例では、2つの動きベクトル検出部が並列に動きベクトルを検出する例を示す。以降では、2つの動きベクトル検出部をコア部1とコア部2とも呼ぶ。
図4に示すコア1は、コア部1の処理対象マクロブロックを示し、コア2は、コア部2の処理対象マクロブロックを示す。
H.264ではP_Skipベクトルの計算など、隣接ブロックA、B、C、Dをどのように符号化したかの情報が必要となる。そのため、2つのマクロブロックを並列に処理する場合、図4に示すようにコア1とコア2とは、垂直位置が1MBだけずれており、水平方向には2MB以上ずれている。
図4に示すマクロブロックの関係であれば、各動きベクトル検出部で処理するマクロブロックの隣接ブロックA、B、C、Dについて、すでに符号化を完了していることが保証できる。
参照ピクチャの内、動きベクトル検出部(コア部1)は、破線の範囲rg11を探索範囲として、この探索範囲rg11内の領域の画像を動きベクトル検出で使用する。動きベクトル検出部(コア部2)は、一点鎖線の範囲rg12を探索範囲として、この探索範囲rg12内の領域の画像を動きベクトル検出で使用する。
コア部1及びコア部2が、次の右隣のマクロブロックを対象に動きベクトル検出する際、探索範囲rg11の領域、探索範囲rg12の領域は、ともに右に1MB分シフトした領域となる。現在動きベクトル検出中のMBと次に動きベクトル検出を行うMBの参照ピクチャのうち、重複する領域はプリフェッチメモリ内に保存が維持され、新たに必要な領域ar12がSDRAMからプリフェッチメモリ内に読み込まれる。
読み込まれた領域ar12は、プリフェッチメモリの中で不要になる領域ar13を保存している領域に上書き保存される。図4に示す領域ar11は、プリフェッチメモリに保存されている画像領域を表す。
動きベクトル検出では、より広い参照ピクチャ領域の中から最適な動きベクトルを検出した方が、処理対象マクロブロックにより似た参照ブロックを見つけ出せる可能性があるため望ましい。
しかし、従来技術では、プリフェッチメモリが蓄積保存している領域ar11に比べて、動きベクトルの検出対象としている範囲(探索範囲rg11や探索範囲rg12)は小さい。よって、従来技術では、プリフェッチメモリ内の領域を効率よく用いて動きベクトルを検出していない。
ここで、動きベクトル検出の探索範囲として、プリフェッチメモリ内の領域のうち垂直方向で最大の領域を利用する場合、次のような問題点がある。図5は、探索範囲を広げた場合の問題点を説明するための図である。
図5に示すように、例えば、コア部1では、探索範囲rg21で動きベクトル検出を行ったとし、マクロブロックB、マクロブロックCでの動きベクトルがmv_B,mv_Cになったとする。
このとき、コア部2で処理するMB(コア2)の上隣接ブロックBと右上隣接ブロックCの動きベクトルはmv_B、mv_Cとなることになる。ここで、コア2の左隣ブロックAの動きベクトルmv_Aが0ベクトルであれば、図2に示すフローチャートによりP_Skipベクトルmv_skipは0ベクトルとなる。
しかし、隣接ブロックAの動きベクトルmv_Aが0ベクトルでないときは、mv_A,mv_B,mv_Cのmedianによりmv_skipが計算される。このとき、図5に示すように、mv_B,mv_Cがともに下方向に大きなベクトルの場合、mv_skipはmedian値をとるため、mv_skipも下方向に大きなベクトルとなる。
この場合、コア2に対するmv_skipの位置の参照ブロックは、プリフェッチメモリの保持範囲外になる。よって、コア部2で処理するマクロブロックは、P_Skipの位置の参照ブロックが処理対象マクロブロックとの間で類似度(差分絶対値和)を計算することができない。つまり、MBをP_Skipで符号化してよいかどうかの判定ができなくなり、符号化効率の良いP_Skipが選択されなくなってしまう。
そこで、開示の技術は、適切に探索範囲を広げることで符号化効率を向上させることができる動画像符号化装置及び動画像符号化方法を提供することを目的とする。
開示の一態様における動画像符号化装置は、ブロックライン毎に並列に動きベクトル検出を行って動画像の符号化を行う動画像符号化装置であって、それぞれの動きベクトル検出で用いられる参照画像の探索範囲を含む領域を記憶する記憶部と、処理対象ブロックに対する左隣接ブロックの動きベクトルに基づいて、前記記憶部に記憶された領域内の探索範囲を可変にして、該処理対象ブロックの動きベクトル検出を行う複数の動きベクトル検出部と、を備え、前記記憶部は、各動きベクトル検出部で用いられ、処理対象ブロックから水平方向及び垂直方向それぞれに所定画素数を設定した基準の所定領域を示す基準探索範囲を含む領域を記憶し、前記複数の動きベクトル検出部は、前記左隣接ブロックの動きベクトルが、前記基準探索範囲以内の領域を指す場合には、前記記憶部に記憶された領域の垂直成分を最大にした探索範囲に対して動きベクトル検出を行い、前記左隣接ブロックの動きベクトルが、前記基準探索範囲の垂直成分を超える領域を指す場合には、前記処理対象ブロックに対して前記基準探索範囲を用いて動きベクトル検出を行う
開示の技術によれば、適切に探索範囲を広げることで符号化効率を向上させることができる。
処理対象ブロックと隣接ブロックとの関係を示す図。 P_Skipマクロブロックの動きベクトルの算出処理を示すフローチャート。 通常のP_Skipベクトル算出処理を示すフローチャート。 従来技術の動作を説明するための図。 探索範囲を広げた場合の問題点を説明するための図。 実施例における動画像符号化装置の構成の一例を示すブロック図。 各動きベクトル検出部で算出される符号化コストの一例を示す図。 保持される参照ピクチャの領域の遷移例を示す図。 左隣接ブロックの動きベクトルについて説明するための図。 P_Skipで候補ベクトルとなる動きベクトルを有する左隣接ブロックの一例を示す図。 探索範囲テーブル(その1)の一例を示す図。 探索範囲テーブル(その2)の一例を示す図。 処理対象ブロックが16×16の場合の初期探索範囲の一例を示す図。 処理対象ブロックが16×16の場合の制限された探索範囲の一例を示す図。 処理対象ブロックが上16×8の場合の初期探索範囲の一例を示す図。 処理対象ブロックが下16×8の場合の初期探索範囲の一例を示す図。 処理対象ブロックが下16×8の場合の初期探索範囲の一例を示す図。 処理対象ブロックが左8×16の場合の初期探索範囲の一例を示す図。 処理対象ブロックが左8×16の場合の制限された探索範囲の一例を示す図。 処理対象ブロックが右8×16の場合の初期探索範囲の一例を示す図。 処理対象ブロックが左上8×8の場合の初期探索範囲の一例を示す図。 処理対象ブロックが右上8×8の場合の初期探索範囲の一例を示す図 処理対象ブロックが左下8×8の場合の初期探索範囲の一例を示す図 処理対象ブロックが左下8×8の場合の制限された探索範囲の一例を示す図。 処理対象ブロックが右下8×8の場合の初期探索範囲の一例を示す図。 処理対象ブロックが16×16の場合の初期探索範囲の一例を示す図。 処理対象ブロックが16×16の場合の制限された探索範囲の一例を示す図。 処理対象ブロックが上16×8の場合の初期探索範囲の一例を示す図。 処理対象ブロックが下16×8の場合の初期探索範囲の一例を示す図。 処理対象ブロックが下16×8の場合の初期探索範囲の一例を示す図。 処理対象ブロックが左8×16の場合の初期探索範囲の一例を示す図。 処理対象ブロックが左8×16の場合の制限された探索範囲の一例を示す図。 処理対象ブロックが右8×16の場合の初期探索範囲の一例を示す図。 処理対象ブロックが左上8×8の場合の初期探索範囲の一例を示す図。 処理対象ブロックが右上8×8の場合の初期探索範囲の一例を示す図 処理対象ブロックが左下8×8の場合の初期探索範囲の一例を示す図 処理対象ブロックが左下8×8の場合の制限された探索範囲の一例を示す図。 処理対象ブロックが右下8×8の場合の初期探索範囲の一例を示す図。 全体制御部における動画像符号化の制御処理の一例を示すフローチャート。 動きベクトル検出処理の一例を示すフローチャート。 探索範囲の決定処理(その1)の一例を示すフローチャート。 探索範囲の決定処理(その2)の一例を示すフローチャート。 動画像符号化装置のハードウェアの一例を示すブロック図。
以下、添付図面を参照しながら実施例について詳細に説明する。
[実施例]
<構成>
図6は、実施例における動画像符号化装置1の構成の一例を示すブロック図である。実施例における動画像符号化装置1は、動画像符号化部10と、第1記憶部20とを有する。
動画像符号化装置1は、例えば、ハードワイヤードロジックにより構成された専用の回路やマッピング情報により回路構成が変更されるFPGA(Field Programmable Gate Array)などにより実現される。また、動画像符号化装置1は、例えば、プロセッサやDSPおよびメモリなどで構成されるコンピュータを、インストールしたプログラムで動作させることにより実現される。
動画像符号化部10は、例えばLSI(Large Scale Integration)により実現され、第1記憶部20は、外部メモリとしてのSDRAMとして実現されうる。
図6に示す動画像符号化部10は、符号化規格に準拠した符号化を行う。動画像符号化部10は、例えば、H.264エンコーダである。実施例に適用できる符号化規格は、H.264以外にも、P_Skipのモードと同様の処理を含む符号化規格であればよい。
第1記憶部20は、例えばカメラで撮像された符号化処理対象の画像、動きベクトル検出で使用する参照ピクチャ、符号化処理が完了して得られた符号化データなどを蓄積保存する。
次に、動画像符号化部10について詳細に説明する。動画像符号化部10は、全体制御部100と、第2記憶部200と、第1動きベクトル検出部300と、第2動きベクトル検出部400と、第1符号化部500と、第2符号化部600とを有する。
全体制御部100は、第2記憶部200と、第1動きベクトル検出部300と、第2動きベクトル検出部400とを制御する。例えば、全体制御部100は、第1動きベクトル検出部300と、第2動きベクトル検出部400とを同時に2つのマクロブロック(MB)の動きベクトルを並列に検出するよう制御する。
第2記憶部200は、第1動きベクトル検出部300と、第2動きベクトル検出部400とで用いられる参照ピクチャの探索範囲を含む領域を記憶する。例えば、第2記憶部200は、図4や図5に示す保持領域ar11を記憶し、MBの処理が進む度に、保持する領域の破棄と更新を繰り返す。
第2記憶部200は、例えばプリフェッチRAMなどである。第2記憶部200に記憶された参照ピクチャの領域は、第1動きベクトル検出部300や第2動きベクトル検出部400により読み出される。
第1動きベクトル検出部300及び第2動きベクトル検出部400は、処理対象ブロックに対する左隣接ブロックの動きベクトルに基づいて、第2記憶部200に記憶された領域内の探索範囲を可変にして、処理対象ブロックの動きベクトル検出を行う。処理対象ブロックは、例えば処理対象のマクロブロックやサブマクロブロックである。
以下では、第1動きベクトル検出部300の構成について説明するが、第2動きベクトル検出部400は、第1動きベクトル検出部300と同様の構成を有する。
第1動きベクトル検出部300は、制御部301と、隣接ブロックベクトル保存メモリ302と、差分絶対値和計算部303と、原画メモリ304と、比較部305と、結果保存メモリ306と、判定部307とを有する。
制御部301は、全体制御部100から信号を受け取り、第1動きベクトル検出部300全体の制御を行う。また、制御部301は、評価対象の動きベクトルのベクトルコストを計算し、比較部305に通知する。
制御部301は、処理対象ブロックに対する左隣接ブロックの動きベクトルに基づいて、処理対象ブロックの探索範囲を決定し、差分絶対値和計算部303に通知する。また、制御部301は、さらに処理対象ブロックのブロックサイズや位置に基づいて、探索範囲を決定してもよい。探索範囲の決定方法については後述する。
隣接ブロックベクトル保存メモリ302は、後述する判定部307が出力するmb_type及び動きベクトルに基づき、後に動きベクトル検出を行うMBの隣接ブロックとしての動きベクトルと参照フレーム番号とを保存する。
差分絶対値和計算部303は、原画メモリ304と、第2記憶部200とからそれぞれ処理対象MBのデータと、参照ブロックのデータとを取得し、差分絶対値和の計算を行う。差分絶対値和計算部303は、制御部301から通知された探索範囲の参照ブロックを第2記憶部200から取得する。
比較部305は、差分絶対値和計算部303から取得した差分絶対値和と、制御部301から取得したベクトルコストとを加算した値と、結果保存メモリ306に保存されている最小コストとを比較する。
比較部305は、加算された「差分絶対値和+ベクトルコスト(総コスト)」の方が小さいと判定した場合は、結果保存メモリ306に記憶された内容を、加算された「差分絶対値和+ベクトルコスト」で上書きする。これにより、1つの処理対象ブロックに対して、最小となる「差分絶対値和+ベクトルコスト」が結果保存メモリ306に記憶される。
結果保存メモリ306は、比較部305から出力される「差分絶対値和+ベクトルコスト」を処理対象ブロック毎に記憶する。
判定部307は、結果保存メモリ306に記憶された内容を読み出し、合計コストが小さいモードをmb_typeとして選択し、mb_typeとmb_typeに対応する動きベクトルとを第1符号化部500に出力する。
第1動きベクトル検出部300と第2動きベクトル検出部400とは、お互いに他方の動きベクトル検出部のmb_typeと動きベクトルを取得し、自身の隣接ブロックベクトル保存メモリに格納する。
第2動きベクトル検出部400は、上記と同様の処理を行い、mb_typeとmb_typeに対応する動きベクトルとを第2符号化部600に出力する。
第1符号化部500又は第2符号化部600は、対応する動きベクトル検出部から取得したmb_typeと動きベクトルとに基づいて、処理対象MBを符号化し、符号化データであるビットストリームを生成する。
また、第1符号化部500又は第2符号化部600は、生成したビットストリームを第1記憶部20に書き込む。このとき、第1符号化部500又は第2符号化部600は、動きベクトルで指定される参照ブロックを第2記憶部200から読み出して用いる。また、第1符号化部500又は第2符号化部600は、次以降に処理するピクチャの参照ピクチャとして使用するため、再構成画像を第1記憶部20に書き出す。再構成画像は、ローカルデコード画像などとも呼ばれる。
(符号化コスト)
図7は、各動きベクトル検出部で算出される符号化コストの一例を示す図である。図7に示す例では、処理対象ブロックは、16×16、16×8、8×16、8×8のマクロブロック、又はP_Skipがある。なお、処理対象ブロックは、4×4まで分割されたサブブロックを用いるようにしてもよい。以下では、8×8を最小のブロックサイズとして説明する。
差分絶対値和計算部303で、各ブロックサイズでの差分絶対値和が計算され、制御部301で、各ブロックサイズでの動きベクトルコストが計算される。判定部307では、各ブロックサイズで符号化コスト(総コスト)が最小となるブロックサイズを示すmb_typeやその動きベクトルが出力される。
(第2記憶部に保持される領域の遷移)
次に、第2記憶部200に記憶される参照ピクチャの領域が、1MB処理する毎にどのように遷移するかについて説明する。図8は、保持される参照ピクチャの領域の遷移例を示す図である。図8に示す例では、例えば動きベクトル検出を、水平方向±32、垂直方向±16画素の領域に対して行うとする。
この水平方向±32、垂直方向±16を、ここでは基準探索範囲と呼ぶ。また、基準探索範囲は、第2記憶部に記憶される領域内で、処理対象ブロックから水平方向、及び垂直方向に対称に範囲を広げていった場合の限界範囲をいう。
図8の(1)に示す領域ar101は、初期読込み領域を示す。領域ar101は、水平方向48(16+32)画素、垂直方向32(16+16)画素の矩形領域である。ブロックb101は、例えば第2動きベクトル検出部400(コア部2)により処理される16×16のマクロブロックを示す。ブロックb101の動きベクトル検出が終了すると、第2記憶部200に記憶される参照ピクチャの領域が更新される。
図8の(2)に示す領域ar102は、ブロックb101の処理が終わり、参照ピクチャの領域が更新されるときに、第1記憶部20から読み込まれる領域を示す。第2動きベクトル検出部400は、ブロックを1つ右に移動させ、ブロックb102に対し、動きベクトル検出を行う。
図8の(3)に示す領域ar103は、ブロックb102の処理が終わり、参照ピクチャの領域が更新されるときに、第1記憶部20から読み込まれる領域を示す。第2動きベクトル検出部400は、ブロックを1つ右に移動させ、ブロックb103に対し、動きベクトル検出を行う。
また、図8の(3)に示すブロックb151は、例えば第1動きベクトル検出部300(コア部1)により処理される16×16のマクロブロックを示す。
図8の(4)に示す領域ar104は、ブロックb103の処理が終わり、参照ピクチャの領域が更新されるときに、第1記憶部20から読み込まれる領域を示す。第2動きベクトル検出部400は、ブロックを1つ右に移動させ、ブロックb104に対し、動きベクトル検出を行う。第1動きベクトル検出部300は、ブロックを1つ右に移動させ、ブロックb152に対し、動きベクトル検出を行う。
図8の(5)に示す領域ar105は、ブロックb104の処理が終わり、参照ピクチャの領域が更新されるときに、第1記憶部20から読み込まれる領域を示す。第2動きベクトル検出部400は、ブロックを1つ右に移動させ、ブロックb105に対し、動きベクトル検出を行う。第1動きベクトル検出部300は、ブロックを1つ右に移動させ、ブロックb153に対し、動きベクトル検出を行う。
図8の(6)に示す領域ar106は、ブロックb105の処理が終わり、参照ピクチャの領域が更新されるときに、第1記憶部20から読み込まれる領域を示す。図8の(6)に示す領域ar151は、第2記憶部200に記憶された領域から領域ar106を更新する時に不要な領域として削除(破棄)される領域を示す。
第2動きベクトル検出部400は、ブロックを1つ右に移動させ、ブロックb106に対し、動きベクトル検出を行う。第1動きベクトル検出部300は、ブロックを1つ右に移動させ、ブロックb154に対し、動きベクトル検出を行う。
図8の(7)に示す領域ar107は、ブロックb107の1つ左のブロックの処理が終わり、参照ピクチャの領域が更新されるときに、第1記憶部20から読み込まれる領域を示す。図8の(7)に示す領域ar152は、第2記憶部200に記憶された領域から領域ar107を更新する時に不要な領域として削除(破棄)される領域を示す。
第2動きベクトル検出部400は、ブロックを1つ右に移動させ、ブロックb107に対し、動きベクトル検出を行う。第1動きベクトル検出部300は、ブロックを1つ右に移動させ、ブロックb155に対し、動きベクトル検出を行う。
図8の(8)に示す領域ar108は、ブロックb107の処理が終わり、参照ピクチャの領域が更新されるときに、第1記憶部20から読み込まれる領域を示す。図8の(8)に示す領域ar153は、第2記憶部200に記憶された領域から領域ar108を更新する時に不要な領域として削除(破棄)される領域を示す。
第2動きベクトル検出部400は、ブロックを1つ右に移動させ、ブロックb108に対し、動きベクトル検出を行う。第1動きベクトル検出部300は、ブロックを1つ右に移動させ、ブロックb156に対し、動きベクトル検出を行う。
図8の(9)に示す領域ar109は、ブロックb108の処理が終わり、参照ピクチャの領域が更新されるときに、第1記憶部20から読み込まれる領域を示す。図8の(9)に示す領域ar154は、第2記憶部200に記憶された領域から領域ar109を更新する時に不要な領域として削除(破棄)される領域を示す。
第2動きベクトル検出部400は、処理ブロックを、ブロックライン2つ下の左端に移動させ、ブロックb109に対し、動きベクトル検出を行う。第1動きベクトル検出部300は、ブロックを1つ右に移動させ、ブロックb157に対し、動きベクトル検出を行う。
以上の処理を繰り返すことで、第2記憶部200に記憶される参照ピクチャの領域が遷移する。実施例における各動きベクトル検出部は、第2記憶部200に記憶される参照ピクチャの領域からできるだけ広い探索範囲を決定し、動きベクトルの検出を行う。このとき、各動きベクトル検出部は、P_Skipの発生確率を下げることなく、探索範囲を決定する。
<探索範囲の決定>
次に、探索範囲の決定処理について説明する。まず、処理対象ブロックの探索範囲を決定するのに用いられる、左隣接ブロックの動きベクトルについて説明する。
図9は、左隣接ブロックの動きベクトルについて説明するための図である。図9に示すブロックb201は、最大サイズの処理対象ブロックであり、ブロックb202は、符号化済みの左隣接ブロックである。最大サイズの処理対象ブロックは、例えば16×16のマクロブロックである。
図9に示すように、処理対象ブロックに対する左隣接ブロックは、最大サイズの処理対象ブロックの左に隣接する最大サイズのブロックのうち、左下画素を含むブロックである。図9に示す例では、左隣接ブロックb202の左下画素を含むブロックの動きベクトルが、1つ下のブロックラインの処理時に、H.264のP_Skipで用いられる隣接ブロックの候補ベクトルとなる。候補ベクトルとは、P_Skipのmedian処理の対象となる動きベクトルをいう。
図10は、P_Skipで候補ベクトルとなる動きベクトルを有する左隣接ブロックの一例を示す図である。図10(A)に示す例では、左隣接ブロックのmb_typeが16×16の場合、16×16のブロックb301の動きベクトルが、1つ下のブロックラインの処理時のP_Skipで候補ベクトルとして用いられる。
図10(B)に示す例では、左隣接ブロックのmb_typeが16×8の場合、下16×8のブロックb302の動きベクトルが、1つ下のブロックラインの処理時のP_Skipで候補ベクトルとして用いられる。
図10(C)に示す例では、左隣接ブロックのmb_typeが8×16の場合、左8×16のブロックb303の動きベクトルが、1つ下のブロックラインの処理時のP_Skipで候補ベクトルとして用いられる。
図10(D)に示す例では、左隣接ブロックのmb_typeが8×8の場合、左下8×8のブロックb304の動きベクトルが、1つ下のブロックラインの処理時のP_Skipで候補ベクトルとして用いられる。図10に示すブロックサイズ、位置にあるブロックb301〜b304のブロックを、以降では候補ブロックとも呼ぶ。
図10に示すように、1つ下のブロックラインの処理時に、上の隣接ブロックとしてP_Skipの候補ブロックにならない上16×8、右8×16、左上8×8、右上8×8、右下8×8のブロックについては、探索範囲を基準探索範囲よりも広げてもよい。これらのブロックを、以降では、非候補ブロックとも呼ぶ。
つまり、処理対象ブロックが、非候補ブロックである場合は、各動きベクトル検出部は、基準探索範囲よりも広い範囲で動きベクトル検出を行う。基準探索範囲よりも広い範囲とは、例えば、第2記憶部200に記憶された領域の垂直成分を最大にした探索範囲である。
また、処理対象ブロックが、候補ブロックである場合であっても、左隣の処理済候補ブロックの動きベクトルが、基準探索範囲以内の領域を指す動きベクトルであれば、各動きベクトル検出部は、基準探索範囲よりも広い範囲で動きベクトル検出を行う。
また、処理対象ブロックが、候補ブロックである場合、左隣の処理済候補ブロックの動きベクトルが、基準探索範囲よりも広い範囲内の領域を指す動きベクトルであれば、各動きベクトル検出部は、基準探索範囲内で動きベクトル検出を行う。
なぜなら、図5に示すように、水平方向に隣接するブロック同士で基準探索範囲よりも広い範囲内の領域を指す動きベクトルとなった場合、1つ下のブロックラインの処理時に、P_Skipの動きベクトルが第2記憶部200に記憶された領域外を指すことになるからである。
そこで、水平方向で連続して大きい動きベクトルが求められないように、大きい動きベクトルが求められた場合には、次のブロックの探索範囲を基準探索範囲に制限する。これにより、P_Skipの動きベクトルが指す位置の参照ブロックが、第2記憶部200に記憶された領域内であることを保証することができる。なお、大きい動きベクトルとは、基準探索範囲よりも広い範囲内の参照ブロックを指す動きベクトルをいう。
また、各動きベクトル検出部は、処理対象ブロックのブロックサイズや位置によらず、水平方向のブロックで連続して大きい動きベクトルが求められないように処理してもよい。この処理だけでも、P_Skipの発生確率を低下させずに探索範囲を広げることで符号化効率を向上させることができる。
(探索範囲テーブル)
次に、各動きベクトル検出部で決定される初期の探索範囲について説明する。図11は、探索範囲テーブル(その1)の一例を示す図である。図11に示す探索範囲テーブルは、例えば偶数行のマクロブロックを処理する第1動きベクトル検出部300が用いる探索範囲テーブルである。
この探索範囲テーブルは、例えば制御部301により保持される。制御部301は、全体制御部100から処理対象ブロックのブロックサイズと位置とを通知されたときに、探索範囲テーブルを用いて初期の探索範囲を決定し、差分絶対値和計算部303に通知する。
初期の探索範囲と呼ぶ理由は、左隣接ブロックの動きベクトルが大きい動きベクトルであった場合、探索範囲が制限され、探索範囲が変わるからである。
図12は、探索範囲テーブル(その2)の一例を示す図である。図12に示す探索範囲テーブルは、例えば奇数行のマクロブロックを処理する第2動きベクトル検出部400が用いる探索範囲テーブルである。この探索範囲テーブルは、例えば第2動きベクトル検出部400の制御部により保持される。初期の探索範囲の決定については、第1動きベクトル検出部300の処理と同様である。
なお、図11、12に示す例は、基準探索範囲を、水平±32、垂直±16とした場合の例である。
(探索範囲の具体例)
次に、各動きベクトル検出部で決定される探索範囲の具体例について説明する。まず、第1動きベクトル検出部300により決定される探索範囲について説明する。なお、以降の図面において、水平、垂直ともピクチャ外にある矢印の矢印方向を+とする。
図13Aは、処理対象ブロックが16×16の場合の初期探索範囲の一例を示す図である。図13Aに示すように、図11に示す探索範囲テーブルを用いて、制御部301は、水平±32、垂直+32、−16を初期の探索範囲と決定する。
図13Bは、処理対象ブロックが16×16の場合の制限された探索範囲の一例を示す図である。図13Bに示すように、制御部301は、左隣の候補ブロック(図10参照)の動きベクトルが大きい動きベクトルである場合、探索範囲を基準探索範囲(水平±32、垂直±16)に制限する。これは、1つ下のブロックラインの処理時(コア部2による処理時)にP_Skipの動きベクトルが、第2記憶部200に記憶された領域内の位置を参照することを保証するためである。
図14Aは、処理対象ブロックが上16×8の場合の初期探索範囲の一例を示す図である。図14Aに示すように、図11に示す探索範囲テーブルを用いて、制御部301は、水平±32、垂直+40、−16を初期の探索範囲と決定する。なお、上16×8のブロックは、非候補ブロックであるので、この初期の探索範囲が動きベクトル検出で用いられる。
図14Bは、処理対象ブロックが下16×8の場合の初期探索範囲の一例を示す図である。図14Bに示すように、図11に示す探索範囲テーブルを用いて、制御部301は、水平±32、垂直+32、−24を初期の探索範囲と決定する。
図14Cは、処理対象ブロックが下16×8の場合の制限された探索範囲の一例を示す図である。図14Cに示すように、制御部301は、左隣の候補ブロックの動きベクトルが大きい動きベクトルである場合、探索範囲を基準探索範囲(水平±32、垂直±16)に制限する。
図15Aは、処理対象ブロックが左8×16の場合の初期探索範囲の一例を示す図である。図15Aに示すように、図11に示す探索範囲テーブルを用いて、制御部301は、水平+40、−32、垂直+32、−16を初期の探索範囲と決定する。
図15Bは、処理対象ブロックが左8×16の場合の制限された探索範囲の一例を示す図である。図15Bに示すように、制御部301は、左隣の候補ブロックの動きベクトルが大きい動きベクトルである場合、探索範囲を基準探索範囲(水平±32、垂直±16)に制限する。
図15Cは、処理対象ブロックが右8×16の場合の初期探索範囲の一例を示す図である。図15Cに示すように、図11に示す探索範囲テーブルを用いて、制御部301は、水平+32、−40、垂直+32、−16を初期の探索範囲と決定する。なお、右8×16のブロックは、非候補ブロックであるので、この初期の探索範囲が動きベクトル検出で用いられる。
図16Aは、処理対象ブロックが左上8×8の場合の初期探索範囲の一例を示す図である。図16Aに示すように、図11に示す探索範囲テーブルを用いて、制御部301は、水平+40、−32、垂直+40、−16を初期の探索範囲と決定する。なお、左上8×8のブロックは、非候補ブロックであるので、この初期の探索範囲が動きベクトル検出で用いられる。
図16Bは、処理対象ブロックが右上8×8の場合の初期探索範囲の一例を示す図である。図16Bに示すように、図11に示す探索範囲テーブルを用いて、制御部301は、水平+32、−40、垂直+40、−16を初期の探索範囲と決定する。なお、右上8×8のブロックは、非候補ブロックであるので、この初期の探索範囲が動きベクトル検出で用いられる。
図16Cは、処理対象ブロックが左下8×8の場合の初期探索範囲の一例を示す図である。図16Cに示すように、図11に示す探索範囲テーブルを用いて、制御部301は、水平+40、−32、垂直+32、−24を初期の探索範囲と決定する。
図16Dは、処理対象ブロックが左下8×8の場合の制限された探索範囲の一例を示す図である。図16Dに示すように、制御部301は、左隣の候補ブロックの動きベクトルが大きい動きベクトルである場合、探索範囲を基準探索範囲(水平±32、垂直±16)に制限する。
図16Eは、処理対象ブロックが右下8×8の場合の初期探索範囲の一例を示す図である。図16Eに示すように、図11に示す探索範囲テーブルを用いて、制御部301は、水平+32、−40、垂直+32、−24を初期の探索範囲と決定する。なお、右下8×8のブロックは、非候補ブロックであるので、この初期の探索範囲が動きベクトル検出で用いられる。
次に、第2動きベクトル検出部400により決定される探索範囲について説明する。図17Aは、処理対象ブロックが16×16の場合の初期探索範囲の一例を示す図である。図17Aに示すように、図12に示す探索範囲テーブルを用いて、第2動きベクトル検出部400の制御部は、水平±32、垂直+16、−32を初期の探索範囲と決定する。
図17Bは、処理対象ブロックが16×16の場合の制限された探索範囲の一例を示す図である。図17Bに示すように、第2動きベクトル検出部400の制御部は、左隣の候補ブロック(図10参照)の動きベクトルが大きい動きベクトルである場合、探索範囲を基準探索範囲(水平±32、垂直±16)に制限する。これは、1つ下のブロックラインの処理時(コア部1による処理時)にP_Skipの動きベクトルが、第2記憶部200に記憶された領域内の位置を参照することを保証するためである。
図18Aは、処理対象ブロックが上16×8の場合の初期探索範囲の一例を示す図である。図18Aに示すように、図12に示す探索範囲テーブルを用いて、第2動きベクトル検出部400の制御部は、水平±32、垂直+24、−32を初期の探索範囲と決定する。なお、上16×8のブロックは、非候補ブロックであるので、この初期の探索範囲が動きベクトル検出で用いられる。
図18Bは、処理対象ブロックが下16×8の場合の初期探索範囲の一例を示す図である。図18Bに示すように、図12に示す探索範囲テーブルを用いて、第2動きベクトル検出部400の制御部は、水平±32、垂直+16、−40を初期の探索範囲と決定する。
図18Cは、処理対象ブロックが下16×8の場合の制限された探索範囲の一例を示す図である。図18Cに示すように、第2動きベクトル検出部400の制御部は、左隣の候補ブロックの動きベクトルが大きい動きベクトルである場合、探索範囲を基準探索範囲(水平±32、垂直±16)に制限する。
図19Aは、処理対象ブロックが左8×16の場合の初期探索範囲の一例を示す図である。図19Aに示すように、図12に示す探索範囲テーブルを用いて、第2動きベクトル検出部400の制御部は、水平+40、−32、垂直+16、−32を初期の探索範囲と決定する。
図19Bは、処理対象ブロックが左8×16の場合の制限された探索範囲の一例を示す図である。図19Bに示すように、第2動きベクトル検出部400の制御部は、左隣の候補ブロックの動きベクトルが大きい動きベクトルである場合、探索範囲を基準探索範囲(水平±32、垂直±16)に制限する。
図19Cは、処理対象ブロックが右8×16の場合の初期探索範囲の一例を示す図である。図19Cに示すように、図12に示す探索範囲テーブルを用いて、第2動きベクトル検出部400の制御部は、水平+32、−40、垂直+16、−32を初期の探索範囲と決定する。なお、右8×16のブロックは、非候補ブロックであるので、この初期の探索範囲が動きベクトル検出で用いられる。
図20Aは、処理対象ブロックが左上8×8の場合の初期探索範囲の一例を示す図である。図20Aに示すように、図12に示す探索範囲テーブルを用いて、第2動きベクトル検出部400の制御部は、水平+40、−32、垂直+24、−32を初期の探索範囲と決定する。なお、左上8×8のブロックは、非候補ブロックであるので、この初期の探索範囲が動きベクトル検出で用いられる。
図20Bは、処理対象ブロックが右上8×8の場合の初期探索範囲の一例を示す図である。図20Bに示すように、図12に示す探索範囲テーブルを用いて、第2動きベクトル検出部400の制御部は、水平+32、−40、垂直+24、−32を初期の探索範囲と決定する。なお、右上8×8のブロックは、非候補ブロックであるので、この初期の探索範囲が動きベクトル検出で用いられる。
図20Cは、処理対象ブロックが左下8×8の場合の初期探索範囲の一例を示す図である。図20Cに示すように、図12に示す探索範囲テーブルを用いて、第2動きベクトル検出部400の制御部は、水平+40、−32、垂直+16、−40を初期の探索範囲と決定する。
図20Dは、処理対象ブロックが左下8×8の場合の制限された探索範囲の一例を示す図である。図20Dに示すように、第2動きベクトル検出部400の制御部は、左隣の候補ブロックの動きベクトルが大きい動きベクトルである場合、探索範囲を基準探索範囲(水平±32、垂直±16)に制限する。
図20Eは、処理対象ブロックが右下8×8の場合の初期探索範囲の一例を示す図である。図20Eに示すように、図12に示す探索範囲テーブルを用いて、第2動きベクトル検出部400の制御部は、水平+32、−40、垂直+16、−40を初期の探索範囲と決定する。なお、右下8×8のブロックは、非候補ブロックであるので、この初期の探索範囲が動きベクトル検出で用いられる。
以上より、各動きベクトル検出部は、処理対象ブロックのブロックサイズと位置、及び左隣接ブロックの動きベクトルに基づいて、探索範囲を可変にして動きベクトル検出を行う。なお、各動きベクトル検出部は、処理対象ブロックの左隣接ブロックの動きベクトルのみに基づいて、探索範囲を可変にしてもよい。
<動作>
次に、動画像符号化装置1の動作について説明する。図21は、全体制御部100における動画像符号化の制御処理の一例を示すフローチャートである。図21に示す処理は、1ピクチャに対する処理である。
図21に示すステップS101で、全体制御部100は、第2記憶部200に対して、初期領域の読み込み指示を行う。処理領域は、例えば図8の(1)に示す領域ar101である。
ステップS102で、全体制御部100は、各動きベクトル検出部に対して、1MBの動きベクトル検出処理の開始を指示する。動きベクトル検出処理については図22を用いて後述する。
ステップS103で、全体制御部100は、各動きベクトル検出部から動きベクトルの検出完了の通知を受けると、未処理のMBが残っていないかを判定する。全てのMBで処理が完了していれば(ステップS103−YES)この処理は終了し、未処理のMBがあれば(ステップS103−NO)ステップS104に進む。
ステップS104で、全体制御部100は、第2記憶部200に対し、次のMBの動きベクトル検出を行うために、保持されている参照ピクチャの領域の更新を指示する。この更新の例については、図8を参照されたい。ステップS104の処理が終わると、次のMBで動きベクトル検出処理を行うため、ステップS02に進む。
次に、処理対象ブロックに対する動きベクトル検出処理について説明する。図22は、動きベクトル検出処理の一例を示すフローチャートである。図22に示す例では、第1動きベクトル検出部300が1MBに対して行う処理を説明するが、第2動きベクトル検出部でも同様の処理を行う。
ステップS201で、制御部301は、処理対象MBにおける処理対象ブロックのブロックサイズ及び位置が異なる処理対象ブロックの選択を行う。例えば、制御部301は、16×16、上16×8、下16×8、左8×16、右8×16、左上8×8、右上8×8、左下8×8、右下8×8の順で選択する。
ステップS202で、制御部301は、処理対象ブロックに対する左隣接ブロックの動きベクトルに基づいて、又は左隣接ブロックの動きベクトル、処理対象ブロックのブロックサイズ及び位置に基づいて、探索範囲を決定する。この決定処理は、図23を用いて後述する。
ステップS203で、差分絶対値和計算部303は、決定された探索範囲の中で差分絶対値和が最小となる動きベクトルを検出する。比較部305は、より差分絶対値和が小さい動きベクトルが見つかると、結果保存メモリ306に保存し、暫定的な動きベクトルと最小差分絶対値和を上書きしていく。
ステップS204で、制御部301は、全ての処理対象ブロックで処理が完了したか否かを判定する。全ての処理対象ブロックで処理が終了すれば(ステップS204−YES)ステップS205に進み、全ての処理対象ブロックで処理が終了していなければ(ステップS204−NO)ステップS201に戻る。
ステップS205で、差分絶対値和計算部303は、16×16のブロックサイズでP_Skipベクトルの位置での差分絶対値和を計算する。比較部305は、P_Skipベクトルと差分絶対値和とを結果保存メモリ306に書き込む。ステップS205の終了時点で、図7に示すような内容が、結果保存メモリ306に保持される。
ステップS206で、判定部307は、結果保存メモリ306の内容を読み出し、ブロックサイズ16×16,16×8,8×16,8×8,P_Skipに対して総コストを計算し、総コストが最小となるブロックサイズmb_typeを決定する。
ステップS207で、判定部307は、決定したmb_typeとmb_typeに対応する動きベクトルとを、隣接ブロックベクトル保存メモリ302に書き込む。
ステップS208で、判定部307は、決定したmb_typeとmb_typeに対応する動きベクトルとを、第1符号化部500と、第2動きベクトル検出部400とに出力する。
次に、探索範囲の決定処理について説明する。図23は、探索範囲の決定処理(その1)の一例を示すフローチャートである。図23に示す処理は、第1動きベクトル検出部300において、処理対象ブロック毎に行われる探索範囲の決定処理である。
ステップS301で、制御部301は、処理対象ブロックのブロックサイズや位置に基づいて図11を参照し、初期の探索範囲を決定する。
ステップS302で、制御部301は、処理対象ブロックが候補ブロックであり、左隣接MBのMVの垂直成分が、基準探索範囲の垂直成分を超えているかを判定する。具体的には、候補ブロックは、例えば16×16、下16×8、左8×16、左下8×8であり、基準探索範囲の垂直成分は、例えば+16である。
ステップS302の条件を満たせば(ステップS302−YES)ステップS303に進み、この条件を満たさなければ(ステップS302−NO)決定処理が終了する。
ステップS303で、制御部301は、決定された初期の探索範囲を、基準探索範囲に変更する。基準探索範囲は、例えば水平±32、垂直±16である。
図24は、探索範囲の決定処理(その2)の一例を示すフローチャートである。図24に示す処理は、第2動きベクトル検出部400において、処理対象ブロック毎に行われる探索範囲の決定処理である。
ステップS401で、第2動きベクトル検出部400の制御部は、処理対象ブロックのブロックサイズや位置に基づいて図12を参照し、初期の探索範囲を決定する。
ステップS402で、第2動きベクトル検出部400の制御部は、処理対象ブロックが候補ブロックであり、左隣接MBのMVの垂直成分が、基準探索範囲の垂直成分を超えているかを判定する。具体的には、候補ブロックは、例えば16×16、下16×8、左8×16、左下8×8であり、基準探索範囲の垂直成分は、例えば+16である。
ステップS402の条件を満たせば(ステップS402−YES)ステップS403に進み、この条件を満たさなければ(ステップS402−NO)決定処理が終了する。
ステップS403で、第2動きベクトル検出部400の制御部は、決定された初期の探索範囲を、基準探索範囲に変更する。基準探索範囲は、例えば水平±32、垂直±16である。
上記のように、探索範囲を決定することで、全てのMBでP_Skipベクトルが第2記憶部200内の領域を指すことを保証できる。
以上、実施例によれば、適切に探索範囲を広げることで符号化効率を向上させることができる。また、実施例によれば、P_Skipの発生確率を低下させずに探索範囲を広げることができ、P_SkipのMVが指す領域は、第2記憶部200内にあることを保証することができる。
[変形例]
上記実施例では、説明を簡単にするため、2つの動きベクトル検出部を用いて説明したが、3つ以上の動きベクトル検出部であっても、実施例で説明した処理を拡張すれば、実施例同様に探索範囲を可変にすることができる。
また、動画像符号化装置は、動画像符号化部10を表し、第1記憶部20は、動画像符号化部10から外部に存在するということで、外部メモリと表してもよい。つまり、動画像符号化装置とは、動画像符号化部10のLSI部分を表してもよいし、動画像符号化部10と第1記憶部20とを含む装置を表してもよい。
図25は、動画像符号化装置2のハードウェアの一例を示すブロック図である。図25に示す例では、上記実施例の処理を動画像符号化プログラムとし、動画像符号化装置2の制御部501で動画像符号化プログラムを読み取らせ、上記実施例の処理を実行させる。
図25に示す動画像符号化装置2は、制御部701と、主記憶部702と、補助記憶部703と、ドライブ装置704と、ネットワークI/F部706と、入力部707と、表示部708を有する。これら各構成は、バスを介して相互にデータ送受信可能に接続されている。
制御部701は、コンピュータの中で、各装置の制御やデータの演算、加工を行うCPUである。また、制御部701は、主記憶部702や補助記憶部703に記憶された動画像符号化プログラムを実行する演算装置であり、入力部707や記憶装置からデータを受け取り、演算、加工した上で、表示部708や記憶装置などに出力する。
主記憶部702は、ROM(Read Only Memory)やRAM(Random Access Memory)などであり、制御部701が実行する基本ソフトウェアであるOSやアプリケーションソフトウェアなどのプログラムやデータを記憶又は一時保存する記憶装置である。
実施例における第2記憶部200は、例えばプリフェッチRAMであり、動きベクトル検出部の各メモリは、例えばRAMであり、第1記憶部20は、例えばSDRAMである。
補助記憶部703は、HDD(Hard Disk Drive)などであり、アプリケーションソフトウェアなどに関連するデータを記憶する記憶装置である。
ドライブ装置704は、記録媒体705、例えばフレキシブルディスクからプログラムを読み出し、記憶装置にインストールする。
また、記録媒体705に、所定のプログラムを格納し、この記録媒体705に格納されたプログラムはドライブ装置704を介して動画像符号化装置30にインストールされる。インストールされた所定のプログラムは、動画像符号化装置30により実行可能となる。
ネットワークI/F部706は、有線及び/又は無線回線などのデータ伝送路により構築されたLAN(Local Area Network)、WAN(Wide Area Network)などのネットワークを介して接続された通信機能を有する周辺機器と動画像符号化装置2とのインターフェースである。
入力部707は、カーソルキー、数字入力及び各種機能キー等を備えたキーボード、表示部708の表示画面上でキーの選択等を行うためのマウスやスライスパット等を有する。また、入力部707は、ユーザが制御部701に操作指示を与えたり、データを入力したりするためのユーザインターフェースである。
表示部708は、CRT(Cathode Ray Tube)やLCD(Liquid Crystal Display)等を含み、制御部701から入力される表示データに応じた表示が行われる。
例えば、全体制御部100や、各動きベクトル検出部、各符号化部は、制御部701やワークメモリとしての主記憶部702などにより実現されうる。
このように、上記実施例で説明した動画像符号化処理は、コンピュータに実行させるためのプログラムとして実現されてもよい。このプログラムをサーバ等からインストールしてコンピュータに実行させることで、前述した動画像符号化処理を実現することができる。例えば、前述した動きベクトル検出処理は、プログラムとして実現されてもよい。
また、この動画像符号化プログラムを記録媒体705に記録し、このプログラムが記録された記録媒体705をコンピュータや携帯端末に読み取らせて、前述した動画像符号化処理を実現させることも可能である。
なお、記録媒体705は、CD−ROM、フレキシブルディスク、光磁気ディスク等の様に情報を光学的,電気的或いは磁気的に記録する記録媒体、ROM、フラッシュメモリ等の様に情報を電気的に記録する半導体メモリ等、様々なタイプの記録媒体を用いることができる。また、前述した実施例で説明した各処理部は、1つ又は複数の処理部を1つ又は複数の集積回路に実装されてもよい。
以上、実施例について詳述したが、この実施例に限定されるものではなく、特許請求の範囲に記載された範囲内において、上記実施例や変形例以外にも種々の変形及び変更が可能である。
なお、以上の実施例に関し、さらに以下の付記を開示する。
(付記1)
ブロックライン毎に並列に動きベクトル検出を行って動画像の符号化を行う動画像符号化装置であって、
それぞれの動きベクトル検出で用いられる参照画像の探索範囲を含む領域を記憶する記憶部と、
処理対象ブロックに対する左隣接ブロックの動きベクトルに基づいて、前記記憶部に記憶された領域内の探索範囲を可変にして、該処理対象ブロックの動きベクトル検出を行う複数の動きベクトル検出部と、
を備える動画像符号化装置。
(付記2)
前記記憶部は、
各動きベクトル検出部で用いられる基準の所定領域を示す基準探索範囲を含む領域を記憶し、
前記複数の動きベクトル検出部は、
前記記憶部に記憶される領域の垂直成分を最大にした探索範囲に対して動きベクトル検出を行い、前記左隣接ブロックの動きベクトルが、前記基準探索範囲の垂直成分を超える領域を指す場合には、前記処理対象ブロックに対して前記基準探索範囲を用いて動きベクトル検出を行う付記1記載の動画像符号化装置。
(付記3)
前記複数の動きベクトル検出部は、
前記処理対象ブロックのサイズ及び位置にさらに基づいて、前記探索範囲を可変にする付記1又は2記載の動画像符号化装置。
(付記4)
前記複数の動きベクトル検出部は、
前記処理対象ブロックが、H.264のP_Skipで用いられる隣接ブロックとなるブロックであれば、前記基準探索範囲に対して動きベクトル検出を行う付記3記載の動画像符号化装置。
(付記5)
各ブロックサイズの処理対象ブロックの符号化処理が完了すると、前記参照画像を記憶する画像記憶部から次の処理対象ブロックで探索範囲となる領域の一部を読出し、前記記憶部に記憶される領域の更新を制御する全体制御部をさらに備える付記1乃至4いずれか一項に記載の動画像符号化装置。
(付記6)
複数の動きベクトル検出部でブロックライン毎に並列に動きベクトル検出を行って、動画像の符号化を行う動画像符号化装置が実行する動画像符号化方法であって、
それぞれの動きベクトル検出で用いられる参照画像の探索範囲を含む領域を記憶部に記憶し、
各動きベクトル検出部で、処理対象ブロックに対する左隣接ブロックの動きベクトルに基づいて、前記記憶部に記憶された領域内の探索範囲を可変にして、該処理対象ブロックの動きベクトル検出を行う処理を有する動画像符号化方法。
1、2 動画像符号化装置
10 動画像符号化部
20 第1記憶部
100 全体制御部
200 第2記憶部
300 第1動きベクトル検出部
301 制御部
302 隣接ブロックベクトル保存メモリ
303 差分絶対値和計算部
304 原画メモリ
305 比較部
306 結果保存メモリ
307 判定部
400 第2動きベクトル検出部
500 第1符号化部
600 第2符号化部
701 制御部
702 主記憶部

Claims (3)

  1. ブロックライン毎に並列に動きベクトル検出を行って動画像の符号化を行う動画像符号化装置であって、
    それぞれの動きベクトル検出で用いられる参照画像の探索範囲を含む領域を記憶する記憶部と、
    処理対象ブロックに対する左隣接ブロックの動きベクトルに基づいて、前記記憶部に記憶された領域内の探索範囲を可変にして、該処理対象ブロックの動きベクトル検出を行う複数の動きベクトル検出部と、
    を備え、
    前記記憶部は、
    各動きベクトル検出部で用いられ、処理対象ブロックから水平方向及び垂直方向それぞれに所定画素数を設定した基準の所定領域を示す基準探索範囲を含む領域を記憶し、
    前記複数の動きベクトル検出部は、
    前記左隣接ブロックの動きベクトルが、前記基準探索範囲以内の領域を指す場合には、前記記憶部に記憶された領域の垂直成分を最大にした探索範囲に対して動きベクトル検出を行い、前記左隣接ブロックの動きベクトルが、前記基準探索範囲の垂直成分を超える領域を指す場合には、前記処理対象ブロックに対して前記基準探索範囲を用いて動きベクトル検出を行う動画像符号化装置。
  2. 前記複数の動きベクトル検出部は、
    前記処理対象ブロックが、H.264のP_Skipで用いられる隣接ブロックとならないブロックであれば、前記記憶部に記憶された領域の垂直成分を最大にした探索範囲に対して動きベクトル検出を行う請求項記載の動画像符号化装置。
  3. 複数の動きベクトル検出部でブロックライン毎に並列に動きベクトル検出を行って、動画像の符号化を行う動画像符号化装置が実行する動画像符号化方法であって、
    それぞれの動きベクトル検出で用いられる参照画像の探索範囲を含む領域を記憶部に記憶し、
    各動きベクトル検出部で、処理対象ブロックに対する左隣接ブロックの動きベクトルに基づいて、前記記憶部に記憶された領域内の探索範囲を可変にして、該処理対象ブロックの動きベクトル検出を行う処理を有し、
    前記記憶部は、
    各動きベクトル検出部で用いられ、処理対象ブロックから水平方向及び垂直方向それぞれに所定画素数を設定した基準の所定領域を示す基準探索範囲を含む領域を記憶し、
    前記複数の動きベクトル検出部は、
    前記左隣接ブロックの動きベクトルが、前記基準探索範囲以内の領域を指す場合には、前記記憶部に記憶された領域の垂直成分を最大にした探索範囲に対して動きベクトル検出を行い、前記左隣接ブロックの動きベクトルが、前記基準探索範囲の垂直成分を超える領域を指す場合には、前記処理対象ブロックに対して前記基準探索範囲を用いて動きベクトル検出を行う動画像符号化方法。
JP2012035652A 2012-02-21 2012-02-21 動画像符号化装置及び動画像符号化方法 Expired - Fee Related JP5938935B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2012035652A JP5938935B2 (ja) 2012-02-21 2012-02-21 動画像符号化装置及び動画像符号化方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012035652A JP5938935B2 (ja) 2012-02-21 2012-02-21 動画像符号化装置及び動画像符号化方法

Publications (2)

Publication Number Publication Date
JP2013172350A JP2013172350A (ja) 2013-09-02
JP5938935B2 true JP5938935B2 (ja) 2016-06-22

Family

ID=49266018

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012035652A Expired - Fee Related JP5938935B2 (ja) 2012-02-21 2012-02-21 動画像符号化装置及び動画像符号化方法

Country Status (1)

Country Link
JP (1) JP5938935B2 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2015159635A1 (ja) 2014-04-17 2015-10-22 株式会社Adeka 層状物質含有液及びその製造方法
US10946360B2 (en) 2015-03-18 2021-03-16 Adeka Corporation Layered-substance-containing solution and method of manufacturing same
JP6728870B2 (ja) 2016-03-28 2020-07-22 富士通株式会社 画像圧縮装置、画像圧縮方法、及び画像圧縮プログラム
EP3556811A4 (en) 2016-12-19 2020-09-23 Adeka Corporation LAMINATE SOLUTION AND METHOD FOR MANUFACTURING ITEM
JP7201906B2 (ja) * 2019-01-15 2023-01-11 日本電信電話株式会社 参照領域決定装置及びプログラム

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63144626A (ja) * 1986-12-09 1988-06-16 Fujitsu Ltd 動ベクトル検出方式
EP1120976A4 (en) * 1999-07-29 2006-03-29 Mitsubishi Electric Corp METHOD FOR DETECTING MOTION VECTOR
WO2005036887A1 (ja) * 2003-10-14 2005-04-21 Nec Corporation 動きベクトル探索方法、動きベクトル探索装置および動きベクトル探索プログラム
JP2006333100A (ja) * 2005-05-26 2006-12-07 Matsushita Electric Ind Co Ltd 画像符号化装置
JPWO2007136088A1 (ja) * 2006-05-24 2009-10-01 パナソニック株式会社 画像符号化装置、画像符号化方法、及び画像符号化用集積回路
JP4910576B2 (ja) * 2006-09-04 2012-04-04 富士通株式会社 動画像処理装置
JP2008136177A (ja) * 2006-10-27 2008-06-12 Matsushita Electric Ind Co Ltd 動き検出装置、MOS(metal−oxidesemiconductor)集積回路および映像システム
JP4764807B2 (ja) * 2006-11-30 2011-09-07 富士通セミコンダクター株式会社 動きベクトル検出装置および動きベクトル検出方法

Also Published As

Publication number Publication date
JP2013172350A (ja) 2013-09-02

Similar Documents

Publication Publication Date Title
US11831891B2 (en) Image coding method, image decoding method, image coding apparatus, and image decoding apparatus
JP2019198092A (ja) 画像予測方法および関連装置
JP4166781B2 (ja) 動きベクトル検出装置および動きベクトル検出方法
US10455229B2 (en) Prediction mode selection method, apparatus and device
JP5115498B2 (ja) 画像符号化装置、画像符号化制御方法およびプログラム
JP5938935B2 (ja) 動画像符号化装置及び動画像符号化方法
JP2006246431A (ja) 画像符号化装置および画像符号化方法
JPWO2007136088A1 (ja) 画像符号化装置、画像符号化方法、及び画像符号化用集積回路
JPWO2014054267A1 (ja) 画像符号化装置及び画像符号化方法
US10034016B2 (en) Coding apparatus, computer system, coding method, and computer product
KR100580194B1 (ko) 비트 정밀도를 낮춘 부화소 움직임 추정방법 및 장치
JP2007129370A (ja) 動きベクトル検出装置及び方法
CN105763879A (zh) 包括用于图像处理的编码器的方法、***和设备
JP5906993B2 (ja) 符号化装置、符号化方法、及びプログラム
JP2015165644A (ja) 動画像符号化装置及び動画像符号化方法
JP2013207402A (ja) 画像符号化装置及びプログラム
JP2016025541A (ja) 動画像符号化装置、動画像符号化方法、及びプログラム
JP6728870B2 (ja) 画像圧縮装置、画像圧縮方法、及び画像圧縮プログラム
JP2007097063A (ja) 動画像符号化プログラム、動画像符号化方法および動画像符号化装置
JP6110724B2 (ja) 画像処理装置、符号化装置、及び符号化プログラム
JP2019057886A (ja) 符号化装置、符号化方法及びプログラム
JP2018186456A (ja) 画像符号化装置、画像符号化方法及びプログラム
JP2019016896A (ja) 画像処理装置、画像処理方法
JP6308409B2 (ja) 動画像符号化装置及び動画像符号化方法
JP5637010B2 (ja) 動きベクトル検出装置、動きベクトル検出方法及び動きベクトル検出プログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20141007

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20150825

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150915

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20151028

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160112

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160302

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160502

R150 Certificate of patent or registration of utility model

Ref document number: 5938935

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees