(57)【要約】【課題】本発明は、映像符号化における動き検出をパイプラインで構成するときに、動きベクトル符号量の推定を用いることができるようにする技術の提供を目的とする。【解決手段】本発明は、異なる画素精度の動き検出を行う動き検出部のパイプラインで構成されて、後段の動き検出部が前段の動き検出部の検出した動きベクトルを利用してパイプラインを流れてくるブロックの動き検出を行うという構成を採るときに、その構成を採ることで、各段の動き検出部に対応付けられる予測動きベクトル算出部が左隣のブロックの動きベクトルを取得できないという状況にあるときに、各予測動きベクトル算出部は、対となる動き検出部が直前に処理したブロックの動きベクトルの検出結果（左隣のブロックについての計算途中の動きベクトル）を取得して、それを左隣のブロックの動きベクトルとして用いて予測動きベクトルを算出するようにする。【選択図】図１
2009055254.tif 000002
【特許請求の範囲】
【請求項１】
映像符号化で用いられ、異なる画素精度の動き検出を行う動き検出部のパイプラインで構成されて、後段の動き検出部が前段の動き検出部の検出した動きベクトルを利用してパイプラインを流れてくるブロックの動き検出を行う動き検出装置であって、
前記パイプラインの最終段に位置する動き検出部の後段に位置し、その最終段の動き検出部の検出した動きベクトルに基づいて、前記パイプラインを流れてくるブロックの動き補償を行い、そのブロックの最終的な動きベクトルを決定する動き補償部と、
前記動き補償部が最終的なものとして決定した動きベクトルを保存する動きベクトル保存部と、
各動き検出部に対応付けて設けられて、対となる動き検出部が処理するブロックに隣接するブロックの動きベクトルを前記動きベクトル保存部から取得するとともに、対となる動き検出部が直前に処理したブロックの動きベクトルの検出結果を取得して、それらの取得した動きベクトルに基づいて、対となる動き検出部が動き検出のコスト評価に必要とする予測動きベクトルを算出して、それを対となる動き検出部に与える予測動きベクトル算出部とを備えることを、
特徴とする動き検出装置。
【請求項２】
請求項１に記載の動き検出装置において、
前記予測動きベクトル算出部は、前記動きベクトル保存部から前記隣接ブロックの動きベクトルを取得できない場合には、前記動きベクトル保存部から、その隣接ブロックの代用として用いられるブロックの動きベクトルを取得することを、
特徴とする動き検出装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、パイプラインで構成されて画像の動き検出を行う動き検出装置に関し、特に、動きベクトルの符号量の削減および動き検出処理の並列化を実現する動き検出装置に関する。
【背景技術】
【０００２】
Ｈ.264における動き検出処理での動きベクトル評価では、通常、動きベクトル自身を符号化するための符号量を、正確な予測動きベクトルとの差分を用いて推定するようにしている（例えば、非特許文献１，２参照）。
【０００３】
しかしながら、正確な予測動きベクトルを用いる手法では、あるマクロブロックについて、そのマクロブロックの周囲に位置するマクロブロックの動きベクトルが最終的に決定してからでないと、そのマクロブロックの動き検出ができない。
【０００４】
すなわち、一般的には、図６に示すように、左隣のマクロブロックの動きベクトルと、上のマクロブロックの動きベクトルと、右上のマクロブロックの動きベクトルとを用いて、符号化対象のマクロブロックに対しての予測動きベクトルを生成することが行われているが、この場合、パイプライン構成のハードウェアで動き検出処理を実装しようとすると、符号化対象のマクロブロックに対しての動き検出処理と、左隣のマクロブロックに対しての動き検出処理とが並列実行されることになるので、符号化対象のマクロブロックの正確な予測動きベクトルを生成できず、これがために、符号化対象のマクロブロックの動き検出ができないことになる。
【０００５】
これから、正確な予測動きベクトルを用いる手法では、動き検出処理を並列化することが困難であり、そのため、通常、ハードウェアで動き検出処理を実装する場合には、動きベクトル符号量の推定を用いない方法が用いられている。ＭＰＥＧ２などで一般的に行われているように、ＳＡＤ（予測誤差の絶対値誤差和）のみによる動きベクトル評価を行い、動きベクトル符号量の推定を用いない方法が用いられているのである。
【０００６】
しかしながら、動きベクトル符号量の推定を用いない場合には、動きベクトル符号量が増加し圧縮率の低下を招くことになる。
【０００７】
そこで、左隣のマクロブロックの動きベクトルの代わりに、既に決定している左上のマクロブロックの動きベクトルを用いる手法も提案されている（例えば、非特許文献３参照）。
【非特許文献１】Ｈ.264リファレンス・ソフトウェア, ＪＭ12.4  ＜ＵＲＬ： http://iphome.hhi.de/suehring/tml/index.htm＞
【非特許文献２】"H.264/MPEG-4 AVC Reference Software Manual," Alexis Michael Tourapis, et al., Joint Video Team(JVT)ofISO/IEC MPEG&ITU-TVCEG(ISO/IEC JTC1/SC29/WG11 and ITU-T SG16 Q.6) 24th Meeting: Geneva, CH, 29 June - 5 July, 2007. (JVT-X072)
【非特許文献３】"Hardware architecture design for variable block size motion estimation in MPEG-4 AVC/JVT/ITU-T H.264," Yu-Wen Huang, et al., Proceedings of the 2003 International Symposium on Circuits and Systems,(ISCAS'03), Volume 2, 25-28 May 2003, ppII-786−II-799, 2003.
【発明の開示】
【発明が解決しようとする課題】
【０００８】
前述したように、従来技術では、ハードウェアで動き検出処理を実装する場合、動きベクトル符号量を推定する方法を用いるようにすると動き検出処理を並列化できないことから、動きベクトル符号量の推定を用いない方法が用いられている。
【０００９】
しかしながら、動きベクトル符号量の推定を用いないと、動きベクトル符号量が増加し圧縮率の低下を招くことになる。
【００１０】
これを解決するために、非特許文献３に記載される発明では、左隣のマクロブロックの動きベクトルの代わりに、既に決定している左上のマクロブロックの動きベクトルを用いる手法を提案している。
【００１１】
しかしながら、この手法では、正確な予測動きベクトルとは異なるマクロブロックの動きベクトルを用いていることから、圧縮率の低下を十分に抑えられないという問題がある。
【００１２】
しかも、この手法では、画面の上端のような符号化対象マクロブロックの上にマクロブロックのラインが存在しないところでは、左上のマクロブロックが存在しないことから、常に、仮の予測動きベクトルを（０，０）にしなければならないという問題がある。
【００１３】
この後者の問題は、画面をいくつかの領域に分割して並列に符号化することで、符号化対象マクロブロックの上にマクロブロックのラインが存在しないケースが増える場合に、大きな問題となってくる。
【００１４】
本発明はかかる事情に鑑みてなされたものであって、映像符号化における動き検出をパイプラインで構成するときに、動きベクトルの符号量の削減および動き検出処理の並列化を実現する新たな動き検出技術の提供を目的とする。
【課題を解決するための手段】
【００１５】
この目的を達成するために、本発明の動き検出装置は、映像符号化で用いられ、異なる画素精度の動き検出を行う動き検出部のパイプラインで構成されて、後段の動き検出部が前段の動き検出部の検出した動きベクトルを利用してパイプラインを流れてくるブロックの動き検出を行うという構成を採るときに、（１）パイプラインの最終段に位置する動き検出部の後段に位置し、その最終段の動き検出部の検出した動きベクトルに基づいて、パイプラインを流れてくるブロックの動き補償を行い、そのブロックの最終的な動きベクトルを決定する動き補償部と、（２）動き補償部が最終的なものとして決定した動きベクトルを保存する動きベクトル保存部と、（３）各動き検出部に対応付けて設けられて、対となる動き検出部が処理するブロックに隣接するブロックの動きベクトルを動きベクトル保存部から取得するとともに、対となる動き検出部が直前に処理したブロックの動きベクトルの検出結果を取得して、それらの取得した動きベクトルに基づいて、対となる動き検出部が動き検出のコスト評価に必要とする予測動きベクトルを算出して、それを対となる動き検出部に与える予測動きベクトル算出部とを備えるように構成する。
【００１６】
この構成を採るときに、予測動きベクトル算出部は、動きベクトル保存部から、対となる動き検出部が処理するブロックに隣接するブロックの動きベクトルを取得できない場合には、動きベクトル保存部から、その隣接ブロックの代用として用いられるブロックの動きベクトルを取得するようにする。
【００１７】
このように構成される本発明の動き検出装置では、異なる画素精度の動き検出を行う動き検出部のパイプラインで構成されて、後段の動き検出部が前段の動き検出部の検出した動きベクトルを利用してパイプラインを流れてくるブロックの動き検出を行うという構成を採るときに、その構成を採ることで、各段の動き検出部に対応付けられる予測動きベクトル算出部が左隣のブロックの動きベクトルを取得できないという状況にあるときに、各予測動きベクトル算出部は、対となる動き検出部が直前に処理したブロックの動きベクトルの検出結果（左隣のブロックについての計算途中の動きベクトル）を取得して、それを左隣のブロックの動きベクトルとして用いて予測動きベクトルを算出するようにする。
【００１８】
本発明の動き検出装置では、各動き検出部が直前に検出した動きベクトルは、左隣のブロックについての計算途中の動きベクトルであることで本来の動きベクトルではないものの、本来の動きベクトルに近い動きベクトルであるということに着目して、この動きベクトルを使って予測動きベクトルを算出するようにしており、この構成に従って、本発明の動き検出装置によれば、パイプライン構成のハードウェアで動き検出処理を実装するときにも、動きベクトル符号量の推定を用いた動き検出処理を実現できるようになる。
【００１９】
さらに、本発明の動き検出装置によれば、画面の上端のようなところでも、左隣のブロックについては、本来の動きベクトルではないものの、本来の動きベクトルに近い動きベクトルを取得することができることから、常に、仮の予測動きベクトルを（０，０）にしなければならないというような問題も起こらない。
【発明の効果】
【００２０】
本発明によれば、動きベクトル符号量の推定を用いたパイプライン構成のハードウェアによる動き検出処理を実現できるようになることから、動きベクトルの符号量を削減できるようになるとともに、動き検出処理の並列化を実現できるようになる。
【発明を実施するための最良の形態】
【００２１】
以下、実施の形態に従って本発明を詳細に説明する。
【００２２】
図１に、本発明を具備する動き検出装置１の一実施形態例を図示する。
【００２３】
この図に示すように、本発明の動き検出装置１は、画像メモリ１０から現画像および参照画像を読み出して動き検出を行うものであり、マクロブロックを処理するパイプライン構成のハードウェアで構成されて、２画素精度の動き検出を行う２画素精度動き検出部２０と、２画素精度動き検出部２０に対応付けて設けられて、２画素精度動き検出部２０の動き検出処理に必要となる予測動きベクトルを算出して２画素精度動き検出部２０に与える予測動きベクトル算出部２１と、２画素精度動き検出部２０の検出した動きベクトルの指す位置の近傍を検出領域として１画素精度の動き検出を行う１画素精度動き検出部３０と、１画素精度動き検出部３０に対応付けて設けられて、１画素精度動き検出部３０の動き検出処理に必要となる予測動きベクトルを算出して１画素精度動き検出部３０に与える予測動きベクトル算出部３１と、１画素精度動き検出部３０の検出した動きベクトルの指す位置の近傍を検出領域として小数画素精度の動き検出を行う小数画素精度動き検出部４０と、小数画素精度動き検出部４０に対応付けて設けられて、小数画素精度動き検出部４０の動き検出処理に必要となる予測動きベクトルを算出して小数画素精度動き検出部４０に与える予測動きベクトル算出部４１と、小数画素精度動き検出部４０の検出した動きベクトルに基づいて動き補償を行い最終的な動きベクトルを決定して、その最終的な動きベクトルを動きベクトル保存部６０に保存する動き補償部５０とを備える。
【００２４】
本発明の動き検出装置１はマクロブロックを処理するパイプラインで構成されることから、図中に示すように、２画素精度動き検出部２０がＭＢ（ｉ＋３）番目のマクロブロックの動き検出を行っているときには、１画素精度動き検出部３０は、ＭＢ（ｉ＋３）番目のマクロブロックの左隣に位置するＭＢ（ｉ＋２）番目のマクロブロックの動き検出を行っており、小数画素精度動き検出部４０は、ＭＢ（ｉ＋２）番目のマクロブロックの左隣に位置するＭＢ（ｉ＋１）番目のマクロブロックの動き検出を行っており、動き補償部５０は、ＭＢ（ｉ＋１）番目のマクロブロックの左隣に位置するＭＢ（ｉ）番目のマクロブロックの動き補償を行っている。
【００２５】
このとき、２画素精度動き検出部２０に対応付けて設けられる予測動きベクトル算出部２１は、本来であれば、ＭＢ（ｉ＋３）番目のマクロブロックの左隣に位置するＭＢ（ｉ＋２）番目のマクロブロックの動きベクトルと、ＭＢ（ｉ＋３）番目のマクロブロックの上に位置するマクロブロックの動きベクトルと、ＭＢ（ｉ＋３）番目のマクロブロックの右上に位置するマクロブロックの動きベクトルとに基づいて予測動きベクトルを生成することになるが、ＭＢ（ｉ＋２）番目のマクロブロックについては１画素精度動き検出部３０を流れており、動き補償部５０での処理を終えていないことから、その動きベクトルを動きベクトル保存部６０から取得することができない。
【００２６】
そこで、２画素精度動き検出部２０に対応付けて設けられる予測動きベクトル算出部２１は、ＭＢ（ｉ＋２）番目のマクロブロックの動きベクトルの代わりに、２画素精度動き検出部２０の直前の検出結果であるＭＢ（ｉ＋２）番目のマクロブロックの２画素精度の動きベクトルを用いて、仮の予想動きベクトルを算出するようにする。
【００２７】
そして、このとき、１画素精度動き検出部３０に対応付けて設けられる予測動きベクトル算出部３１は、本来であれば、ＭＢ（ｉ＋２）番目のマクロブロックの左隣に位置するＭＢ（ｉ＋１）番目のマクロブロックの動きベクトルと、ＭＢ（ｉ＋２）番目のマクロブロックの上に位置するマクロブロックの動きベクトルと、ＭＢ（ｉ＋２）番目のマクロブロックの右上に位置するマクロブロックの動きベクトルとに基づいて予測動きベクトルを生成することになるが、ＭＢ（ｉ＋１）番目のマクロブロックについては小数画素精度動き検出部４０を流れており、動き補償部５０での処理を終えていないことから、その動きベクトルを動きベクトル保存部６０から取得することができない。
【００２８】
そこで、１画素精度動き検出部３０に対応付けて設けられる予測動きベクトル算出部３１は、ＭＢ（ｉ＋１）番目のマクロブロックの動きベクトルの代わりに、１画素精度動き検出部３０の直前の検出結果であるＭＢ（ｉ＋１）番目のマクロブロックの１画素精度の動きベクトルを用いて、仮の予想動きベクトルを算出するようにする。
【００２９】
そして、このとき、小数画素精度動き検出部４０に対応付けて設けられる予測動きベクトル算出部４１は、本来であれば、ＭＢ（ｉ＋１）番目のマクロブロックの左隣に位置するＭＢ（ｉ）番目のマクロブロックの動きベクトルと、ＭＢ（ｉ＋１）番目のマクロブロックの上に位置するマクロブロックの動きベクトルと、ＭＢ（ｉ＋１）番目のマクロブロックの右上に位置するマクロブロックの動きベクトルとに基づいて予測動きベクトルを生成することになるが、ＭＢ（ｉ）番目のマクロブロックについては動き補償部５０を流れており、動き補償部５０での処理を終えていないことから、その動きベクトルを動きベクトル保存部６０から取得することができない。
【００３０】
そこで、小数画素精度動き検出部４０に対応付けて設けられる予測動きベクトル算出部４１は、ＭＢ（ｉ）番目のマクロブロックの動きベクトルの代わりに、小数画素精度動き検出部４０の直前の検出結果であるＭＢ（ｉ）番目のマクロブロックの小数画素精度の動きベクトルを用いて、仮の予想動きベクトルを算出するようにする。
【００３１】
すなわち、本発明の動き検出装置１では、各予測動きベクトル算出部２１，３１，４１は、図２のフローチャートに示すように、動きベクトル保存部６０から、対となる動き検出部２０，３０，４０の処理するマクロブロックの上のマクロブロックおよび右上のマクロブロックの動きベクトルを読み出すとともに、対となる動き検出部２０，３０，４０が直前に処理したマクロブロックの動きベクトルの検出結果を取得して、それらの３つの動きベクトルから、各成分の中央値を選んだり、代表の動きベクトルを１つ選んだり、平均をとるなどの演算を施すことにより、本来の予測動きベクトルの代わりとなる仮の予測動きベクトルを算出して、その仮の予測動きベクトルを対となる動き検出部２０，３０，４０に与えるように処理するのである。
【００３２】
これを受けて、各動き検出部２０，３０，４０は、パイプライン処理を行いつつ、動きベクトル符号量の推定を行い、それをコスト評価に反映しながら、動き検出を行うことができるようになる。
【００３３】
この点について、図３に示すタイミングチャートを用いて説明する。
【００３４】
図３に示すように、ある時点で、２画素精度動き検出部２０がＭＢ（ｉ＋３）番目のマクロブロックの動き検出を行っているときには、１画素精度動き検出部３０は、ＭＢ（ｉ＋３）番目のマクロブロックの左隣に位置するＭＢ（ｉ＋２）番目のマクロブロックの動き検出を行っており、小数画素精度動き検出部４０は、ＭＢ（ｉ＋２）番目のマクロブロックの左隣に位置するＭＢ（ｉ＋１）番目のマクロブロックの動き検出を行っており、動き補償部５０は、ＭＢ（ｉ＋１）番目のマクロブロックの左隣に位置するＭＢ（ｉ）番目のマクロブロックの動き補償を行っている。
【００３５】
このとき、２画素精度動き検出部２０は、図３中の破線で示すように、本来は、動き補償部５０により最終決定されるＭＢ（ｉ＋２）番目のマクロブロックの動きベクトルが必要があるが、パイプライン構成を採っていることで、その動きベクトルを取得することができない。そこで、図３中の実線で示すように、その動きベクトルに代えて、自分が直前に得た動きベクトルの検出結果を用いるようにする。
【００３６】
そして、このとき、１画素精度動き検出部３０は、図３中の破線で示すように、本来は、動き補償部５０により最終決定されるＭＢ（ｉ＋１）番目のマクロブロックの動きベクトルが必要があるが、パイプライン構成を採っていることで、その動きベクトルを取得することができない。そこで、図３中の実線で示すように、その動きベクトルに代えて、自分が直前に得た動きベクトルの検出結果を用いるようにする。
【００３７】
そして、このとき、小数画素精度動き検出部４０は、図３中の破線で示すように、本来は、動き補償部５０により最終決定されるＭＢ（ｉ）番目のマクロブロックの動きベクトルが必要があるが、パイプライン構成を採っていることで、その動きベクトルを取得することができない。そこで、図３中の実線で示すように、その動きベクトルに代えて、自分が直前に得た動きベクトルの検出結果を用いるようにする。
【００３８】
動き検出処理では、マクロブロックを単位にして動き検出を行うことに加えて、例えば、マクロブロックを８×８のブロックサイズに４分割して、それらの８×８ブロックを単位にして動き検出を行うこともある。
【００３９】
このような場合、図４（ａ）に示すブロックｂ０については、本来は、図４（ｂ）に示すように、上に位置するブロックｕ２の動きベクトルと、右上に位置するブロックｕ３の動きベクトルと、左隣に位置するブロックｌ１の動きベクトルとを使って予測動きベクトルを算出することになる。
【００４０】
また、図４（ａ）に示すブロックｂ１については、本来は、図４（ｂ）に示すように、上に位置するブロックｕ３の動きベクトルと、右上に位置するブロックｕｒ２の動きベクトルと、左隣に位置するブロックｂ０の動きベクトルとを使って予測動きベクトルを算出することになる。
【００４１】
また、図４（ａ）に示すブロックｂ２については、本来は、図４（ｂ）に示すように、上に位置するブロックｂ０の動きベクトルと、右上に位置するブロックｂ１の動きベクトルと、左隣に位置するブロックｌ３の動きベクトルとを使って予測動きベクトルを算出することになる。
【００４２】
また、図４（ａ）に示すブロックｂ３については、本来は、図４（ｂ）に示すように、上に位置するブロックｂ１の動きベクトルと、右上に位置するブロック（存在しないので使うことができない）の動きベクトルと、左隣に位置するブロックｂ２の動きベクトルとを使って予測動きベクトルを算出することになる。
【００４３】
これに対して、本発明の動き検出装置１では、図５（ａ）に示すブロックｂ０については、図５（ｂ）に示すように、上に位置するブロックｕ２の動きベクトルと、右上に位置するブロックｕ３の動きベクトルと、左隣に位置するブロックについての直前の動きベクトルの検出結果（ブロックl'１の動きベクトル）とを使って予測動きベクトルを算出するようにする。
【００４４】
また、図５（ａ）に示すブロックｂ１については、図５（ｂ）に示すように、上に位置するブロックｕ３の動きベクトルと、右上に位置するブロックｕｒ２の動きベクトルと、左隣のさらに左隣に位置するブロックについての直前の動きベクトルの検出結果（ブロックl'１の動きベクトル）とを使って予測動きベクトルを算出するようにする。
【００４５】
また、図５（ａ）に示すブロックｂ２については、図５（ｂ）に示すように、動きベクトルが取得可能な上の上に位置するブロックｕ２の動きベクトルと、動きベクトルが取得可能な右上の上に位置するブロックｕ３の動きベクトルと、左隣に位置するブロックについての直前の動きベクトルの検出結果（ブロックl'３の動きベクトル）とを使って予測動きベクトルを算出するようにする。
【００４６】
また、図５（ａ）に示すブロックｂ３については、図５（ｂ）に示すように、動きベクトルが取得可能な上の上に位置するブロックｕ３の動きベクトルと、動きベクトルが取得可能な右上の上に位置するブロックｕｒ２の動きベクトルと、左隣のさらに左隣に位置するブロックについての直前の動きベクトルの検出結果（ブロックl'３の動きベクトル）とを使って予測動きベクトルを算出するようにする。
【００４７】
下記に、本発明の有効性を検証するために行った実験結果を図示する。
【００４８】
【表１】
2009055254.tif 000003
【００４９】
この実験は、本発明を使って左隣に位置するマクロブロックの動きベクトルを近似することで予測動きベクトルを算出して、それに基づいて符号化を行う場合と、動きベクトル符号量の推定を行わずに、ＳＡＤのみによる動きベクトル評価を行って符号化を行う場合とを比較することで行った。
【００５０】
この実験結果から、本発明を用いることで画質を向上させ符号量を削減できることが確認できた。これにより本発明の有効性を検証することができた。
【産業上の利用可能性】
【００５１】
本発明は、映像符号化における動き検出をパイプラインで構成するときに適用できるものであり、動きベクトル符号量の推定を用いることができるようになることで、動きベクトルの符号量を削減することができるようになる。
【図面の簡単な説明】
【００５２】
【図１】本発明の動き検出装置の一実施形態例である。
【図２】本発明の動き検出装置が実行する処理を説明するフローチャートである。
【図３】本発明の動き検出装置が実行する処理を説明するタイミングチャートである。
【図４】予測動きベクトルの算出に用いる本来のブロックの説明図である。
【図５】本発明の動き検出装置が予測動きベクトルの算出に用いるブロックの説明図である。
【図６】マクロブロックの位置関係の説明図である。
【符号の説明】
【００５３】
１    動き検出装置
１０  画像メモリ
２０  ２画素精度動き検出部
２１  予測動きベクトル算出部
３０  １画素精度動き検出部
３１  予測動きベクトル算出部
４０  小数画素精度動き検出部
４１  予測動きベクトル算出部
５０  動き補償部
６０  動きベクトル保存部
【図１】
2009055254.tif 000004
【図２】
2009055254.tif 000005
【図３】
2009055254.tif 000006
【図４】
2009055254.tif 000007
【図５】
2009055254.tif 000008
【図６】
2009055254.tif 000009