画像処理装置、画像処理方法及びプログラム
【課題】任意の倍数のフレームレート変換処理を可能とするとともに、高精度な動きベクトルの探索を行う。
【解決手段】CPUは、補間画像データ302に定義された基準位置に対応する入力画像データ301内における基準位置を基準として、第1の時刻比(1−A)を空間のずらし量を示す変数に対して乗じた位置に存在する第1のブロック505を取得する。また、CPUは、補間画像データ302に定義された基準位置に対応する遅延画像データ300内における基準位置を基準として、第2の時刻比Aを上記変数に対して乗じた位置に存在する第2のブロック503を遅延画像データ300から取得する。CPUは、所定の条件を満たす相関性にある第1のブロックと第2のブロックとが取得された際の上記変数に基づいて、補間画像データ302における動きベクトルを算出する。
【解決手段】CPUは、補間画像データ302に定義された基準位置に対応する入力画像データ301内における基準位置を基準として、第1の時刻比(1−A)を空間のずらし量を示す変数に対して乗じた位置に存在する第1のブロック505を取得する。また、CPUは、補間画像データ302に定義された基準位置に対応する遅延画像データ300内における基準位置を基準として、第2の時刻比Aを上記変数に対して乗じた位置に存在する第2のブロック503を遅延画像データ300から取得する。CPUは、所定の条件を満たす相関性にある第1のブロックと第2のブロックとが取得された際の上記変数に基づいて、補間画像データ302における動きベクトルを算出する。
【発明の詳細な説明】
【技術分野】
【0001】
入力画像データと遅延画像データとに基づいて補間画像データを生成する技術に関するものである。
【背景技術】
【0002】
従来、入力される画像データのフレームレートを変換する処理を実行するものとして、動き検出技術及び動き補償技術が知られている(例えば、特許文献1参照)。動き検出技術は、連続する複数の画像データを用いて動きベクトルを検出する技術であり、動き補償技術は、動きベクトルを用いて補間画像データを生成する技術である。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特許第3577354号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、従来の技術は、2倍のフレームレート変換にのみ対応しており、任意の倍数のフレームレート変換に対応していない。このため、24Hzの映像コンテンツに対して従来の技術を適応すると48Hzになり、デジタルテレビ等の一般的な表示装置のリフレッシュレートである60Hzや120Hzと一致しない。このため、従来の技術は、映像コンテンツのフレームレートが表示装置のリフレッシュレートの1/2の場合にしか適応できないという問題があった。
【0005】
また、別の問題として、従来の技術は、動き検出処理において、動きベクトルの探索精度が低かった。このため、動き補償処理において生成される補間画像データの画質が損なわれ、ユーザの視聴において不快感を与えていた。
【0006】
そこで、本発明の目的は、任意の倍数のフレームレート変換処理を可能とするとともに、高精度な動きベクトルの探索を行うことにある。
【課題を解決するための手段】
【0007】
本発明の画像処理装置は、第1の時刻に入力される入力画像データと、前記第1の時刻よりも所定のフレーム時間だけ遡った第2の時刻に入力される遅延画像データとに基づいて、前記入力画像データと前記遅延画像データとの間に、前記第1の時刻から前記所定のフレーム時間よりも短い時間だけ遡った第3の時刻における補間画像データを生成するための動きベクトルを算出可能な画像処理装置であって、前記補間画像データに定義された基準位置に対応する前記入力画像データ内における基準位置を基準として、前記第1の時刻から前記第3の時刻を減じた値である第1の差分値を前記所定のフレーム時間で除した値である第1の時刻比を、空間のずらし量を示す第1の変数に対して乗じた位置に存在する第1のブロックを前記入力画像データから取得するとともに、前記補間画像データに定義された前記基準位置に対応する前記遅延画像データ内における基準位置を基準として、前記第3の時刻から前記第2の時刻を減じた値である第2の差分値を前記所定のフレーム時間で除した値である第2の時刻比を、前記第1の変数に対して乗じた位置に存在する第2のブロックを前記遅延画像データから取得する第1の取得手段と、前記第1の取得手段により取得された第1のブロックと第2のブロックとの相関性を算出する第1の算出手段と、前記第1の算出手段により算出された相関性のうち、所定の条件を満たす相関性にある第1のブロックと第2のブロックとが取得された際の前記第1の変数に基づいて、前記補間画像データにおける動きベクトルを算出する第2の算出手段とを有することを特徴とする。
【発明の効果】
【0008】
本発明によれば、任意の倍数のフレームレート変換処理が可能となるとともに、高精度な動きベクトルを行うことができる。
【図面の簡単な説明】
【0009】
【図1】本発明の実施形態に係る画像処理装置のハードウェア構成の例を示す図である。
【図2】動き検出・動き補償プログラムをCPUが実行することにより実現される処理の流れを示すフローチャートである。
【図3】入力画像データ、遅延画像データ及び補間画像データのフレーム時刻を模式的に示す図である。
【図4】動きベクトルについて説明するための図である。
【図5】ステップS204における動きベクトル検出処理を説明するための図である。
【図6】図2のステップS204における動きベクトル検出処理の詳細を示すフローチャートである。
【図7】図6のサブフローチャート(1)を用いて説明した動きベクトル検出処理の探索精度に関する課題とその改善方法を説明するための図である。
【図8】図2のステップS204における動きベクトル検出処理の詳細を示すフローチャートである。
【図9】図2のステップS204における動きベクトル検出処理の詳細を示すフローチャートである。
【図10】図2のステップS205における補間画像データ生成処理の詳細を示すフローチャートである。
【図11】本発明の実施形態に係る画像処理装置の構成を示す図である。
【図12】ビデオ処理部の構成を示す図である。
【図13】動きベクトル検出部の構成を示す図である。
【図14】補間画像生成部の構成を示す図である。
【発明を実施するための形態】
【0010】
以下、本発明を適用した好適な実施形態を、添付図面を参照しながら詳細に説明する。
【0011】
先ず、本発明の第1の実施形態について説明する。図1は、本発明の第1の実施形態に係る画像処理装置のハードウェア構成の例を示す図である。図1において、100は画像処理装置である。CPU101は、外部記憶装置(ハードディスク)107に格納されているOS、後述する動き検出・動き補償プログラム等のアプリケーションプログラムを実行して画像処理装置100の動作を制御する。また、CPU101は、RAM103にプログラムの実行に必要な情報、ファイル等を一時的に格納する制御を行う。ROM102は、基本I/Oプログラム等のプログラムが記憶されている。RAM103は、CPU101の主メモリ、ワークエリア等として機能する。
【0012】
ネットワークインタフェース(I/F)104は、LAN、WANに接続して外部装置と通信するためのインタフェースである。入力装置105は、ユーザからの入力を受け付けるマウス、キーボードの他、被写体を撮影して当該被写体の画像データを入力するための撮像装置を含むことができる。当該撮像装置を有することにより、画像処理装置100は、デジタルカメラ又はデジタルビデオカメラとして機能する。
【0013】
出力装置106は、液晶ディスプレイ等の表示装置である。外部記憶装置107は、アプリケーションプログラム、ドライバプログラム、OS、制御プログラム、以下に説明する実施形態の処理を実行するためのプログラム等を格納している。システムバス108は、画像処理装置100内のデータの流れを司る。
【0014】
図2は、動き検出・動き補償プログラムをCPU101が実行することにより実現される処理の流れを示すフローチャートである。動き検出・動き補償プログラムは、通常、外部記憶装置107に記録されている。CPU101は、処理を開始するにあたり、動き検出・動き補償プログラムを外部記憶装置107から読み込み、RAM103に展開する。以下、図2を参照しながら、動き検出・動き補償プログラムに基づき実行される処理の流れについて説明する。
【0015】
ステップS201において、CPU101は、画像データを入力する。後にフレーム単位の処理が実行されるので、通常はフレーム単位で画像データが入力される。なお、画像データはYUVの色空間で定義された画素データの集合とする。また、画像データの1画素当たりのビット精度はYUVそれぞれ8ビットであり、ビットレンジは正の値のみ取り、0〜255とする。また、1画像データの画素データサイズは、x方向に1920画素、y方向に1080画素とする。
【0016】
ステップS202において、CPU101は、ステップS201で入力した画像データを1フレーム時間だけ遅延させる。これは、2フレーム以上の画像データを用いて動きベクトル検出処理を行うためである。また、図1におけるRAM102に画像データの記憶領域を設けることにより、CPU101が画像データを遅延させることを可能としている。
【0017】
以降、特に断りがなければ、ステップS201において入力された画像データを入力画像データと称す。また、ステップS202にて1フレーム時間だけ遅延された画像データを遅延画像データと称す。
【0018】
ステップS203において、CPU101は、動きベクトルに基づいて作成する補間画像データのフレーム時刻を設定する。ここで、図3を用いてステップS203の詳細を説明する。図3は、入力画像データ、遅延画像データ及び補間画像データのフレーム時刻を模式的に示す図である。図3において、300は遅延画像データであり、そのフレーム時刻をt=t0(第3の時刻)とする。301は入力画像データであり、そのフレーム時刻をt=t1=t0+n(第1の時刻)とする。302は補間画像データであり、そのフレーム時刻をt=t2=t0+An(第2の時刻)とする。但し、遅延画像データ300と入力画像データ301との間に時間的に内挿するようにAを設定する。Aは補間時刻比率であり、取り得る値は0<A<1である。本実施形態ではA=1/3、2/3と設定して、遅延画像データ300と入力画像データ301との間に2フレームの補間画像データ302を生成する。但し、補間時刻比率Aによる処理手順の差はないため、以降のステップS204及びS205の処理説明では、A=1/3と設定した場合について説明する。また、ステップS206の処理説明では、A=1/3、2/3における2フレームの補間画像データ302が生成されたものとして説明する。
【0019】
また本実施形態では、1フレームの入力画像データ301につき、2フレームの補間画像データ302を生成するので、3倍の情報量となる。このことから、補間倍率B=3と定義する。本実施形態では、補間時刻比率A、補間倍率Bは、プログラムの一部として動き検出・動き補償プログラム内に記録されているものとする。
【0020】
ステップS204において、CPU101は、動きベクトルマップMV_MAP(p,q)を生成する。ここで、ステップS204の処理の説明に先立ち、動きベクトルマップMV_MAP(p,q)及び動きベクトルMV(x,y,Δx,Δy)の補足説明を行う。動きベクトルマップMV_MAP(p,q)は、動きベクトルMV(x,y,Δx,Δy)の集合である。本実施形態において、動きベクトルマップMV_MAP(p,q)の要素数を(p:x方向動きベクトルマップポインタ、q:y方向動きベクトルマップポインタ)、以下のように算出する。
【0021】
本実施形態では、ブロックマッチング法による動きベクトル検出を行う。動きベクトル検出処理の処理単位となるブロックサイズは、M=40、N=40とする(M:x方向ブロックサイズ、N:y方向ブロックサイズ)。また、隣接するブロック同士が重複しないようにブロック境界を定義して、ブロックサイズで画像データサイズを割った数だけ動きベクトル検出処理を行うものとする。このような前提条件を与えた場合、動きベクトルマップMV_MAP(p,q)の要素数は、1920/40・1080/40=48・27=1296個となる。また、x方向動きベクトルマップサイズP=48、y方向動きベクトルマップサイズQ=27となる。
【0022】
次に、動きベクトルMV(x,y,Δx,Δy)について説明する。図4(a)に示すように、座標値(x,y)と差分値(Δx,Δy)とが与えられたとき、座標値(x,y)が動きベクトルの始点であり、座標値(x+Δx、y+Δy)が動きベクトルの終点と定義するのが一般的である。しかしながら、本実施形態においては、図4(b)に示すように、座標値(x−AΔx,y−AΔy)が動きベクトルの始点であり、座標値{x+(1−A)Δx,y+(1−A)Δy}が動きベクトルの終点と定義する。なお、A−1は、第1の時刻から第3の時刻を減じた値である第1の差分値を1フレーム時間で除した値である第1の時刻比である。Aは、第3の時刻から第2の時刻を減じた値である第2の差分値を1フレーム時間で除した値である第2の時刻比である。
【0023】
個々の動きベクトルMV(x,y,Δx,Δy)の検出方法に違いはないため、以下では1つの動きベクトルMV(x,y,Δx,Δy)の検出方法について説明することにより、動きベクトルマップMV_MAP(p,q)の生成処理の説明の代わりとする。
【0024】
図5は、ステップS204における動きベクトル検出処理を説明するための図である。以下、図5を参照しながら、ステップS204における動きベクトル検出処理について説明する。
【0025】
図5(a)において、300はフレーム時刻t=t0の遅延画像データであり、301はフレーム時刻t=t1=t0+nの入力画像データであり、302はフレーム時刻t=t2=t0+Anの補間画像データである。
【0026】
補間画像データ302における探索基準位置500の座標値を(x2,y2)とする。ブロック501は探索基準位置500に基づいて定義される。本実施形態では、探索基準位置500を用いたブロック位置定義方法として、ブロック501の上左端の座標値が探索基準位置500に一致するように定義する。
【0027】
遅延画像データ300における遅延画像探索位置502の座標値を(x0,y0)とする。ブロック503(第2のブロック)は遅延画像探索位置502に基づいて定義される。即ち、本実施形態では、遅延画像探索位置502を用いたブロック位置定義方法として、ブロック503の上左端の座標値が遅延画像探索位置502に一致するように定義する。
【0028】
入力画像データ301における入力画像探索位置504の座標値を(x1,y1)とする。ブロック505(第1のブロック)は入力画像探索位置504に基づいて定義される。即ち、本実施形態では、入力画像探索位置504を用いたブロック位置定義方法として、ブロック505の上左端の座標値が入力画像探索位置504に一致するように定義する。
【0029】
このように、ブロック501に関する探索基準位置500を用いたブロック位置定義方法、ブロック503に関する遅延画像探索位置502を用いたブロック位置定義方法及びブロック505に関する入力画像探索位置504を用いたブロック位置定義方法は全て同様の手法である。なお、ブロック501、ブロック503及びブロック505のブロックサイズは、上述したようにM=40、N=40である。
【0030】
次に、図5(b)を用いて、本実施形態における動きベクトル検出方法について説明する。図5(b)は、補間画像データ302に、遅延画像探索位置502、ブロック503、入力画像探索位置504、ブロック505を配置した状態を示す図である。ここで1つ注意すべきことは、図5(b)において、ブロック503の画像情報は遅延画像データ300によるものであり、ブロック505の画像情報は入力画像データ301によるものである。2次元の紙面上において時空間の3次元情報を正確に表すことはできないため、図5(b)においては、このような表現方法を採っている。
【0031】
フレーム時刻t=t0におけるブロック503の画像情報が、フレーム時刻t=t1=t0+nにおいてブロック505で表されるとき、フレーム時間間隔nにおいてブロック503がx方向にΔx1、y方向にΔy1移動したとする。フレーム時刻t=t0からt=t2=t0+Anのフレーム時間間隔Anにおいては、ブロック503の画像情報はx方向にAΔx1、y方向にAΔy1だけ移動する。ブロック503の画像情報が移動後に丁度ブロック501の位置に到達するならば、探索基準位置500の座標値(x2,y2)と遅延画像探索位置502の座標値(x0,y0)とを用いて、(x2,y2)=(x0+AΔx1,y0+AΔy1)と表すことができる。式を変形すると、(x0,y0)=(x2−AΔx1,y2−AΔy1)となる。なお、上記Δx1、Δy1は、空間のずれ量を示す第2の変数である。
【0032】
また、フレーム時刻t=t2=t0+Anからt=t1=t0+nのフレーム時間間隔(1−A)nにおいては、ブロック501の画像情報はx方向にAΔx1、y方向にAΔy1だけ移動する。ブロック505の画像情報が移動前に丁度ブロック501の位置にあったならば、探索基準位置500の座標値(x2,y2)と入力画像探索位置504の座標値(x1,y1)とを用いて、(x1,y1)={x2+(1−A)Δx1,y2+(1−A)Δy1}と表すことができる。なお、上記Δx1、Δy1は、空間のずれ量を示す第1の変数である。
【0033】
このことから、ブロック503とブロック505とをブロックマッチングする。これにより、フレーム時刻t=t2=t0+Anの補間画像データ302の、座標値が(x2,y2)である探索基準位置500における動きベクトルMV(x2,y2,Δx1,Δy1)を検出することができる。
【0034】
このように、本実施形態においては、補間画像データ302上の座標値を動きベクトル検索における基準として、補間画像データ302上の座標値を通過する動きベクトルの候補から動きベクトルを検出する。
【0035】
次に、ステップS204における動きベクトル検出処理について詳細に説明する。図6は、図2のステップS204における動きベクトル検出処理の詳細を示すフローチャートである。なお、以下の説明では、図6に示す動きベクトル検出処理のフローチャートをサブフローチャート(1)と称す。
【0036】
ステップS601において、CPU101は、入力画像データ及び遅延画像データを入力する。ステップS602において、CPU101は、補間時刻比率A及び補間倍率Bを入力する。
【0037】
ステップS603において、CPU101は、探索条件として、探索基準位置500の座標値(x2,y2)、x方向ブロックサイズM、y方向ブロックサイズN、x方向探索範囲S_SIZE_X、y方向探索範囲S_SIZE_Yを入力する。上述したようにM=40、N=40である。また本実施形態では、S_SIZE_X=20、S_SIZE_Y=20とする。
【0038】
ステップS604において、CPU101は、サブフローチャート(1)で用いる内部パラメータを初期化する。本実施形態では、x方向動きベクトルΔx1、y方向動きベクトルΔy1、x方向探索動きベクトルΔx0、y方向探索動きベクトルΔy0、最大相関係数値R_MAXが内部パラメータである。それぞれΔx1=0、Δy1=0、Δx0=−S_SIZE_X、Δy0=−S_SIZE_Y、R_MAX=0と初期化する。
【0039】
ステップS605において、CPU101は、y方向探索動きベクトルΔy0がΔy0<S_SIZE_Yの条件(繰返し条件(1))を満たしているかどうかを判断する。満たしている場合、ステップS606へ処理を進める。一方、満たしていない場合、ステップS615へ処理を進める。
【0040】
ステップS606において、CPU101は、補間倍率Bを用いて、Δy0=Δy0+Bによりy方向探索動きベクトルΔy0を更新する。ステップS607において、CPU101は、x方向探索動きベクトルΔx0がΔx0<S_SIZE_Xの条件(繰返し条件(2))を満たしているかどうかを判断する。満たしている場合、ステップS608へ処理を進める。一方、満たしていない場合、ステップS605へ処理を進める。
【0041】
ステップS608において、CPU101は、補間倍率Bを用いて、Δx0=Δx0+Bによりx方向探索動きベクトルΔx0を更新する。ステップS609において、CPU101は、遅延画像データからブロック503を取得する。ブロック503の遅延画像探索位置502の座標値(x0,y0)は、次の式1により算出される。ステップS610において、CPU101は、入力画像データからブロック505を取得する。ブロック505の入力画像探索位置504の座標値(x1,y1)は、次の式2により算出される。なお、ステップS609、S610は、第1の取得手段の処理例である。
【0042】
【数1】
【0043】
【数2】
【0044】
ステップS611において、CPU101は、ブロック503とブロック505との相関性として相関係数Rを算出する。相関係数Rは次の式3より求められる。式3において、f(x,y)はブロック503の座標値(x,y)における画素値である。また、g(x,y)はブロック505の座標値(x,y)における画素値である。なお、相関係数Rの代わりに差分絶対値和SADを算出することも可能である。差分絶対値和SADは、ブロック503とブロック505とを用いて、次の式4より算出される。なお、ステップS611は、第1の算出手段の処理例である。
【0045】
【数3】
【0046】
【数4】
【0047】
ステップS612において、CPU101は、ステップS611で算出された相関係数Rと最大相関係数値R_MAXとの大小比較を行う。R>R_MAXであるならば、ステップS613へ処理を進める。一方、R≦R_MAXであるならば、ステップS607へ処理を進める。なお、ステップS611で差分絶対値和SADを算出した場合、CPU101は、差分絶対値和SADと最大相関係数値R_MAXとの大小比較を行う。SAD≦R_MAXであるならば、ステップS613へ処理を進める。一方、SAD>R_MAXであるならば、ステップS607へ処理を進める。
【0048】
ステップS613において、CPU101は、相関係数Rを用いて、R_MAX=Rにより最大相関係数値R_MAXを更新する。なお、ステップS611で差分絶対値和SADを算出した場合、CPU101は、差分絶対値和SADを用いて、R_MAX=SADにより最大相関係数値R_MAXを更新する。
【0049】
ステップS614において、CPU101は、Δx1=Δx0によりx方向動きベクトルΔx1を更新するとともに、Δy1=Δy0によりy方向動きベクトルΔy1を更新する。ステップS615において、CPU101は、探索基準位置500の座標値(x2,y2)、x方向動きベクトルΔx1及びy方向動きベクトルΔy1から、動きベクトルMV(x2,y2,Δx1,Δy1)を出力する。以上がサブフローチャート(1)の説明である。なお、ステップS614は、第2の算出手段の処理例である。
【0050】
次に、図6のサブフローチャート(1)を用いて説明した動きベクトル検出処理の探索精度を向上させるための方法について説明する。この方法は、図2のステップS204における動きベクトル検出処理にて実施される方法であり、図6のサブフローチャート(1)に示した動きベクトル検出処理に代えて実施されるものである。
【0051】
図7は、図6のサブフローチャート(1)を用いて説明した動きベクトル検出処理の探索精度に関する課題とその改善方法を説明するための図である。
【0052】
図7は、図5と同様に、フレーム時刻t=t0の遅延画像データとフレーム時刻t=t0+nの入力画像データとの2つの画像データを用いて、フレーム時刻t=t0+Anにおける補間画像データを生成するための動きベクトルの検出方法を説明するための図である。なお、図7は、図5よりも詳細に、画素単位で動きベクトルの検出パターンを表している。
【0053】
図7(a)、図7(b)及び図7(c)のそれぞれは、y−t平面を表している。このy−t平面における横軸はフレーム時刻であり、縦軸はy座標である。本来はx−y−tの3次元立体上で説明すべきであるが、空間軸についてはyのみの1次元で説明しても差し支えないため、x軸を省略している。
【0054】
また、図7(a)、図7(b)及び図7(c)のそれぞれにおいて、時刻t=t0では、遅延画像データ300を構成するI(y,t)=I(p−1,t0)、I(y,t)=I(p,t0)、I(y,t)=I(p+1,t0)、I(y,t)=I(p+2,t0)の画素が配置されている。時刻t=t0+nでは、I(y,t)=I(p−1,t0+n)、I(y,t)=I(p,t0+n)、I(y,t)=I(p+1,t0+n)、I(y,t)=I(p+2,t0+n)の画素が配置されている。
【0055】
まず、図7(a)の例では、図6のサブフローチャート(1)を用いて説明した動きベクトル検出処理は、整数画素精度の探索がなされておらず、探索精度が低いことを示している。図7(a)において、フレーム時刻t=t0+Anにおける画素I(y,t)=I(p,t0+An)を動きベクトル検出における探索基準位置として、動きベクトルの探索パターンを説明する。なお、この画素I(y,t)=I(p,t0+An)は、図5における補間画像データ302上の探索基準位置500と一致する。
【0056】
先ず、最初の探索パターンにより、I(y,t)=I(p,t0)を遅延画像探索位置とし、I(y,t)=I(p,t0+n)を入力画像探索位置とする第一のブロックマッチングが行われる。次に最初の探索パターンに続く2番目の探索パターンにより、I(y,t)=I(p−1,t0)を遅延画像探索位置とし、I(y,t)=I(p+2,t0+n)を入力画像探索位置とする第二のブロックマッチングが行なわれる。
【0057】
ここで、第一のブロックマッチングと第二のブロックマッチングとの間で起こる探索画素位置のシフト量を計算する。遅延画像データ側は(p−1)−p=−1であり、y軸の負の方向に1画素シフトしている。入力画像データ側は(p+2)−p=2であり、y軸の正の方向に2画素シフトしている。遅延画像データ側のシフト量と入力画像データ側のシフト量との差分は3画素であり、整数画素精度である1画素にならない。このことから、図6のサブフローチャート(1)を用いて説明した動きベクトルの検出処理は、整数画素精度の探索がなされておらず、探索精度が低いことがわかる。
【0058】
このように、動きベクトル探索におけるシフト量が1にならないのは、1以上の整数画素精度のシフト量でy軸に対して正負逆に遅延画像探索位置と入力画像探索位置とをシフトしているためである。また、探索基準位置を通過する動きベクトルのみを探索しているためでもある。
【0059】
次に、整数画素精度の動きベクトル検出、又は、サブピクセル精度の動きベクトル検出を可能とするために、画像拡大処理の後に動きベクトル検出を行う方法について、図7(b)を参照しながら説明する。またその後、図7(c)を参照しながら、本来の探索基準位置から離れた画素位置を新たな探索基準位置として、動きベクトル検出を行う方法について説明する。
【0060】
先ず、図7(b)を参照しながら、画像拡大処理の後に動きベクトル検出を行う方法について説明する。図7(b)では、動きベクトル検出を行うに先立ち、補間倍率Bと等しい倍率で画像データを拡大させる。本実施形態では補間倍率B=3であるため、3倍に拡大させる。
【0061】
時刻t=t0において、I(y,t)=I(p−1,t0)、I(y,t)=I(p,t0)、I(y,t)=I(p+1,t0)、I(y,t)=I(p+2,t0)の画素が配置されている。CPU101は、これらの画素を用いて補間画素I(y,t)=I(p−2/3,t0)、I(y,t)=I(p−1/3,t0)、I(y,t)=I(p+1/3,t0)、I(y,t)=I(p+2/3,t0)、I(y,t)=I(p+4/3,t0)及びI(y,t)=I(p+5/3,t0)を生成する。
【0062】
時刻t=t0+nにおいて、I(y,t)=I(p−1,t0+n)、I(y,t)=I(p,t0+n)、I(y,t)=I(p+1,t0+n)、I(y,t)=I(p+2,t0+n)の画素が配置されている。CPU101は、これらの画素を用いて補間画素I(y,t)=I(p−2/3,t0+n)、I(y,t)=I(p−1/3,t0+n)、I(y,t)=I(p+1/3,t0+n)、I(y,t)=I(p+2/3,t0+n)、I(y,t)=I(p+4/3,t0+n)及びI(y,t)=I(p+5/3,t0+n)を生成する。
【0063】
なお、画像拡大処理における拡大補間アルゴリズムは、最近傍補間法、バイリニア補間法、バイキュービック補間法及びその他の如何なる画像拡大処理を用いてもよい。
【0064】
次に、画像拡大処理を行った遅延画像データと入力画像データとを用いた動きベクトルの探索パターンについて説明する。ここでは、フレーム時刻t=t0+Anにおける画素I(y,t)=I(p,t0+An)を動きベクトル検出における探索基準位置とする。
【0065】
最初の探索パターンにより、I(y,t)=I(p,t0)を遅延画像探索位置とし、I(y,t)=I(p,t0+n)を入力画像探索位置とする第一のブロックマッチングが行われる。最初の探索パターンに続く2番目の探索パターンにより、I(y,t)=I(p−1/3,t0)を遅延画像探索位置とし、I(y,t)=I(p+2/3,t0+n)を入力画像探索位置とする第二のブロックマッチングが行われる。
【0066】
ここで、第一のブロックマッチングと第二のブロックマッチングとの間で起こる探索画素位置のシフト量を計算する。遅延画像データ側は(p−1/3)−p=−1/3であり、y軸の負の方向に1/3画素シフトしている。入力画像データ側は(p+2/3)−p=2/3であり、y軸の正の方向に2/3画素シフトしている。遅延画像データ側のシフト量と入力画像データ側のシフト量との差分は1画素となる。このように、画像拡大処理を行うことで、整数画素精度の動きベクトル検出が可能となる。
【0067】
なお、本実施形態では、補間倍率B=3であり、画像を3倍より大きく拡大させると、サブピクセル精度の動きベクトル検出が可能となる。
【0068】
次に、図7(c)を参照しながら、本来の探索基準位置から離れた画素位置を新たな探索基準位置として、動きベクトル検出を行う方法について説明する。図7(c)では、図6のサブフローチャート(1)を用いて説明した動きベクトルの検出処理の後に、検出された動きベクトルの近傍の動きベクトルを再探索する。
【0069】
図7(c)において、フレーム時刻t=t0+Anにおける動きベクトルを検出するため、画素I(y,t)=I(p,t0+An)を探索基準位置とする動きベクトルMV(p,0)が検出されたものとする。ここでは、説明の省略のため、x軸については考えないが、仮に考えて、x方向の探索基準位置x2=40、x方向の動きベクトルΔx1=10であるとすると、MV(40,p,10,0)と検出されているのと同じである。
【0070】
この検出された動きベクトルMV(p,0)の近傍の動きベクトルを探索するために、探索基準位置I(y,t)=I(p,t0+An)から、1/3画素ずれたI(y,t)=I(p+1/3,t0+An)を定義して新たな探索基準位置とする。この新たな探索基準位置I(y,t)=I(p+1/3,t0+An)を導入することで、I(y,t)=I(p,t0)を遅延画像探索位置とし、I(y,t)=I(p+1,t0+n)を入力画像探索位置とするブロックマッチングが行われる。また、動きベクトルは新たな探索基準位置I(y,t)=I(p+1/3,t0+An)を通過する。
【0071】
ここで、動きベクトルMV(p,0)を検出する際に行われた第一のブロックマッチングと、新たな探索基準位置I(y,t)=I(p+4/3,t0+An)を用いて行われた第二のブロックマッチングとの間で起こる探索画素位置のシフト量を計算する。遅延画像データ側はp−p=0であり、シフトしていない。入力画像データ側は(p+1)−p=1であり、y軸の正の方向に1画素シフトしている。遅延画像データ側のシフト量と入力画像データ側のシフト量との差分は1画素となる。このように、本来の探索基準位置から離れた画素位置を新たな探索基準位置として動きベクトルを検出することで、整数画素精度での動きベクトルを検出することが可能になる。
【0072】
図7(b)に示すように、画像拡大処理の後に動きベクトル検出を行うことにより、整数画素精度の動きベクトル検出、又は、サブピクセル精度の動きベクトル検出が可能となる。
【0073】
また、図7(c)に示すように、本来の探索基準位置から離れた画素位置を新たな探索基準位置として、動きベクトル検出を行うことにより、整数画素精度の動きベクトル検出、又は、サブピクセル精度の動きベクトル検出が可能となる。なお、上記両方の方法を実行するようにしても同様の効果を得ることができる。
【0074】
次に、図8のフローチャートを参照しながら、図7(b)を用いて説明した、画像拡大処理の後に動きベクトル検出を行う方法について詳細に説明する。その後、図7(c)を用いて説明した、本来の探索基準位置から離れた画素位置を新たな探索基準位置として動きベクトル検出を行う方法について詳細に説明する。
【0075】
図8は、図2のステップS204における動きベクトル検出処理の詳細を示すフローチャートである。なお、以下の説明では、図8に示す動きベクトル検出処理のフローチャートをサブフローチャート(2)と称す。
【0076】
図8のサブフローチャート(2)は、図6のサブフローチャート(1)の処理内容と多くの点で同様である。そのため、サブフローチャート(2)独自の処理についてのみ説明を行い、サブフローチャート(1)と同様の処理は、説明を省略する。即ち、サブフローチャート(2)におけるステップS600からステップS602の説明は省略するものとする。また、ステップS603の説明も省略する。また、ステップS604からステップS614の説明も省略する。さらに、ステップS615及びステップS616の説明も省略する。
【0077】
ステップS800において、CPU101は、補間倍率Bを用いて入力画像データ及び遅延画像データを拡大する。本実施形態では、補間倍率B=3であるので、入力画像データ及び遅延画像データを3倍に拡大する。画像拡大処理の方法は既に図7(b)を用いて説明したので省略する。
【0078】
ステップS801において、CPU101は、ステップ603で入力した探索条件を補間倍率Bを用いて再設定する。本実施形態では、補間倍率B=3であるので、CPU101は、x方向ブロックサイズM、y方向ブロックサイズN、x方向探索範囲S_SIZE_X、y方向探索範囲S_SIZE_Yに対して、M=BM=3M、N=BN=3N、S_SIZE_X=B*S_SIZE_X=3S_SIZE_X及びS_SIZE_Y=B*S_SIZE_Y=3S_SIZE_Yと再設定する。
【0079】
ステップS802において、CPU101は、補間倍率Bを用いて動きベクトルを縮小する。本実施形態では、補間倍率B=3であるので、CPU101は、MV(x2,y2,Δx1,Δy1)で算出されている動きベクトルに対して、x2=x2/B=x2/3、y2=y2/B=y2/3、Δx1=Δx1/B=Δx1/3、Δy1=Δy1/B=Δy1/3と縮小する。以上がサブフローチャート(2)の説明である。
【0080】
このように、画像拡大処理の後に動きベクトル検出を行うことで、整数画素精度の動きベクトル検出が可能になる。なお、本実施形態では、補間倍率B=3であり、画像を3倍より大きく拡大させると、サブピクセル精度の動きベクトル検出が可能となる。
【0081】
次に、図7(c)に示した、本来の探索基準位置から離れた画素位置を新たな探索基準位置として用いる動きベクトル検出方法の詳細を、図9のフローチャートを参照しながら説明する。図9は、図2のステップS204における動きベクトル検出処理の詳細を示すフローチャートである。なお、以下の説明では、動きベクトル検出処理のフローチャートをサブフローチャート(3)と称す。
【0082】
図9のサブフローチャート(3)は、図6のサブフローチャート(1)の処理内容と多くの点で同様である。そのため、サブフローチャート(3)独自の処理についてのみ説明を行い、サブフローチャート(1)と同様の処理は、説明を省略する。即ち、サブフローチャート(3)におけるステップS600からステップS615の説明を省略する。
【0083】
ステップS900において、CPU101は、x方向探索範囲S_SIZE_X、y方向探索範囲S_SIZE_Yに関して、S_SIZE_X=Δx1+B、S_SIZE_Y=Δy1+Bと、探索条件を再設定する。
【0084】
ステップS901において、CPU101は、サブフローチャート(3)で用いる再検索用内部パラメータを初期化する。本実施形態において、再検索用内部パラメータは、過去側x方向探索動きベクトルΔx00、過去側y方向探索動きベクトルΔy00、未来側x方向探索動きベクトルΔx01、未来側y方向探索動きベクトルΔy01である。CPU101は、それぞれΔx00=Δx1−B−1、Δy00=Δy1−B−1、Δx01=Δx1−B−1、Δy01=Δy1−B−1と初期化する。
【0085】
ステップS902において、CPU101は、過去側y方向探索動きベクトルΔy00がΔy00<S_SIZE_Yの条件(繰返し条件(3))を満たしているかどうかを判断する。満たしている場合、ステップS903へ処理を進める。一方、満たしていない場合、ステップS919へ処理を進める。
【0086】
ステップS903において、CPU101は、Δy00=Δy00+1として、過去側y方向探索動きベクトルΔy00を更新する。ステップS904において、CPU101は、過去側x方向探索動きベクトルΔx00がΔx00<S_SIZE_Xの条件(繰返し条件(4))を満たしているかどうかを判断する。満たしている場合、ステップS905へ処理を進める。一方、満たしていない場合、ステップS902へ処理を進める。
【0087】
ステップS905において、CPU101は、Δx00=Δx00+1により過去側x方向探索動きベクトルΔx00を更新する。ステップS906において、CPU101は、未来側y方向探索動きベクトルΔy01がΔy01<S_SIZE_Yの条件(繰返し条件(5))を満たしているかどうかを判断する。満たしている場合、ステップS907へ処理を進める。一方、満たしていない場合、ステップS904へ処理を進める。
【0088】
ステップS907において、CPU101は、Δy01=Δy01+1により未来側y方向探索動きベクトルΔy01を更新する。ステップS908において、CPU101は、未来側x方向探索動きベクトルΔx01がΔx01<S_SIZE_Xの条件(繰返し条件(6))を満たしているかどうかを判断する。満たしている場合、ステップS909へ処理を進める。一方、満たしていない場合、ステップS906へ処理を進める。
【0089】
ステップS909において、CPU101は、Δx01=Δx01+1により未来側x方向探索動きベクトルΔx01を更新する。ステップS910において、CPU101は、探索基準位置500の座標値(x2,y2)を始点として、新たな探索基準位置の座標値(x4,y4)を終点とする補正ベクトル(Δx4,Δy4)を算出する。算出には過去側x方向探索動きベクトルΔx00、過去側y方向探索動きベクトルΔy00、未来側x方向探索動きベクトルΔx01及び未来側y方向探索動きベクトルΔy01を用いる。x4とy4とはそれぞれ、x4=Δx00+A*(Δx01−Δx00)、y4=Δy00+A*(Δy01−Δy00)で算出される。また、Δx4とΔy4とはそれぞれ、Δx4=x4−x2、Δy4=y4−y2である。
【0090】
ステップS911において、CPU101は、所定閾値th2に対して補正ベクトル(Δx4,Δy4)の大きさがth2≦(Δx42+Δy42)1/2かどうかを判断する。所定閾値th2以下の場合、ステップS912へ処理を進める。一方、所定閾値th2よりも大きい場合、ステップS908へ処理を進める。なお、本実施形態では、所定閾値th2=21/2とする。
【0091】
ステップS912において、CPU101は、遅延画像データから過去側x方向探索動きベクトルΔx00及び過去側y方向探索動きベクトルΔy00を基準位置とするブロック(第4のブロック)を取得する。ステップS913において、CPU101は、入力画像データから未来側x方向探索動きベクトルΔx01及び未来側y方向探索動きベクトルΔy01を基準位置とするブロック(第3のブロック)を取得する。なお、ステップS912、S913は、第2の取得手段の処理例である。
【0092】
ステップS914において、CPU101は、ステップS912及びステップS913にて取得した2つのブロックの相関係数Rを算出する。なお、相関係数Rの代わりに差分絶対値和SADを算出してもよい。
【0093】
ステップS915において、CPU101は、ステップS914で算出した相関係数Rと最大相関係数値R_MAXとの大小比較を行う。R>R_MAXであるならば、ステップS916へ処理を進める。R≦R_MAXであるならば、ステップS908へ処理を進める。なお、CPU101は、ステップS914で差分絶対値和SADを算出した場合、差分絶対値和SADと最大相関係数値R_MAXとの大小比較を行う。SAD≦R_MAXであるならば、ステップS916へ処理を進める。SAD>R_MAXであるならば、ステップS908へ処理を進める。なお、ステップS916は、第3の算出手段の処理例である。
【0094】
ステップS916において、CPU101は、相関係数Rを用いて、R_MAX=Rにより最大相関係数値R_MAXを更新する。なお、ステップS914で差分絶対値和SADを算出した場合、CPU101は、差分絶対値和SADを用いて、R_MAX=SADにより最大相関係数値R_MAXを更新する。
【0095】
ステップS917において、CPU101は、過去側x方向探索動きベクトルΔx00、過去側y方向探索動きベクトルΔy00、未来側x方向探索動きベクトルΔx01及び未来側y方向探索動きベクトルΔy01を用いて、動きベクトルMV(x2,y2,Δx1,Δy1)を更新する。Δx1とΔy1とは、Δx1=Δx01−Δx00、Δy1=Δy01−Δy00である。
【0096】
ステップS918において、CPU101は、補正ベクトル(Δx4,Δy4)を用いて、動きベクトルMV(x2,y2,Δx1,Δy1)を補正する。Δx1とΔy1とは、Δx1=Δx1−Δx4、Δy1=Δy1−Δy4で算出される。ステップS919において、CPU101は、動きベクトルMV(x2,y2,Δx1,Δy1)を出力する。以上が、サブフローチャート(3)の説明である。
【0097】
このように、本来の探索基準位置から離れた画素位置を新たな探索基準位置として動きベクトル検出することで、整数画素精度での動きベクトルを検出することが可能になる。以上、ステップS204における動きベクトルの検出処理の詳細について説明した。
【0098】
サブフローチャート(1)、サブフローチャート(2)及びサブフローチャート(3)は、いずれも本実施形態の特徴を表したものである。特徴とは即ち、補間画像データ上の座標値を動きベクトル探索における基準とし、当該補間画像フレーム上の座標値を通過する動きベクトルの候補から動きベクトルを検出することである。
【0099】
ステップS205において、CPU101は、フレーム時刻t=t2=t0+Anにおける補間画像データ302を作成する。ここで、ステップS205における補間画像データ生成処理の詳細について説明する。図10は、図2のステップS205における補間画像データ生成処理の詳細を示すフローチャートである。なお、以下の説明では、補間画像データ生成処理を示す図10のフローチャートをサブフローチャート(4)と称す。
【0100】
ステップS1001において、CPU101は、補間時刻比率Aを入力する。ステップS1002において、CPU101は、入力画像データ及び遅延画像データを入力する。ステップS1003において、CPU101は、ステップS204にて検出された動きベクトルマップMV_MAP(p、q)及びx方向動きベクトルマップサイズP、y方向動きベクトルマップサイズQを入力する。
【0101】
ステップS1004において、CPU101は、サブフローチャート(4)で用いる内部パラメータを初期化する。本実施形態では、x方向動きベクトルマップポインタp、y方向動きベクトルマップポインタqが内部パラメータである。それぞれp=−1、q=−1と初期化する。
【0102】
ステップS1005において、CPU101は、q=q+1によりy方向動きベクトルマップポインタqを更新する。ステップS1006において、CPU101は、y方向動きベクトルマップポインタqがq<Qの条件(繰返し条件(1))を満たしているかどうかを判断する。満たしている場合、ステップS1007へ処理を進める。一方、満たしていない場合、ステップS1012へ処理を進める。
【0103】
ステップS1007において、CPU101は、p=p+1により、x方向動きベクトルマップポインタpを更新する。ステップS1008において、CPU101は、x方向動きベクトルマップポインタpがp<Pの条件(繰返し条件(2))を満たしているかどうかを判断する。満たしている場合、ステップS1009へ処理を進める。一方、満たしていない場合、ステップS1006へ処理を進める。
【0104】
ステップS1009において、CPU101は、動きベクトルマップMV_MAP(p,q)から動きベクトルMV(x2,y2,Δx1,Δy1)を取得する。ステップS1010において、CPU101は、遅延画像データからブロック503(第6のブロック)を取得する。ブロック503の遅延画像探索位置502の座標値(x0,y0)は式5により算出される。ステップS1011において、CPU101は、入力画像データからブロック505(第5のブロック)を取得する。ブロック505の入力画像探索位置504の座標値(x1,y1)は式6により算出される。
【0105】
【数5】
【0106】
【数6】
【0107】
ここで、ステップS1010、ステップS1011の処理で用いられる動きベクトルMV(x2,y2,Δx1,Δy1)に応じた適応処理について補足説明する。
【0108】
ステップS204にて、図8のフローチャートに示す画像拡大処理の後に動きベクトル検出を行った場合、動きベクトルは整数画素精度又はサブピクセル精度で検出される。同様に、図9のフローチャートに示す本来の探索基準位置から離れた画素位置を新たな探索基準位置として用いる動きベクトル検出を行った場合、動きベクトルは整数画素精度又はサブピクセル精度で検出される。
【0109】
このため、式5にて算出されるブロック503の遅延画像探索位置502の座標値(x0,y0)及び式6にて算出されるブロック505の入力画像探索位置504の座標値(x1,y1)は小数値を含む可能性がある。座標値(x0,y0)及び座標値(x1,y1)が小数値を含む場合、既存の画素を用いて、小数精度の画素位置の画素を補間する。
【0110】
動きベクトルMV(x2,y2,Δx1,Δy1)において、x方向動きベクトルΔx1の整数部Δx1_int、小数部をΔx1_decとすると、Δx1=Δx1_int+Δx1_decと表すことができる。同様に、y方向動きベクトルΔy1の整数部Δy1_int、小数部をΔy1_decとすると、Δy1=Δy1_int+Δy1_decと表すことができる。
【0111】
このとき、補間画素位置(x5,y5)は、
x5=(1−Δx1_dec)*Δx1_int+Δx1_dec*(Δx1_int+1)
y5=(1−Δy1_dec)*Δy1_int+Δy1_dec*(Δy1_int+1)
と算出される。
以上がステップS1010、ステップS1011の処理で用いられる動きベクトルMV(x2,y2,Δx1,Δy1)に応じた適応処理についての補足説明である。
【0112】
ステップS1012において、CPU101は、式7より、ブロック503及びブロック505を用いて、座標値(x2,y2)の探索基準位置500を基準とする補間画像データのブロック(第7のブロック)を生成する。式7において、h(x,y)はブロック501の座標値(x、y)における画素値である。また、f(x,y)はブロック503の座標値(x,y)における画素値である。また、g(x,y)はブロック505の座標値(x,y)における画素値である。m、nはオフセット値であり、0≦m<M、0≦n<Nの範囲をとる。以上がステップS205にて、フレーム時刻t=t2=t0+Anにおける補間画像データ302を生成する処理の詳細説明である。
【0113】
【数7】
【0114】
ステップS206において、CPU101は、遅延画像データ、補間時刻比率A=1/3にて生成された補間画像データ、補間時刻比率A=2/3にて生成された補間画像データをこの順番で出力する。以上がサブフローチャート(4)の説明である。
【0115】
以上のように、第1の実施形態によれば、動き検出技術及び動き補償技術を用いたフレームレート変換処理において、従来の技術では成しえなかった任意の倍数のフレームレート変換処理が可能となる。
【0116】
また、従来の技術よりも高精度な動きベクトルの探索を可能とすることにより、動き補償処理において生成される補間画像データの画質を向上させ、ユーザに好適な映像を提供することが可能になる。
【0117】
なお、第1の実施形態において、画像データの色空間はYUVであったが、本発明の本質は画像データの色空間を限定するものではなく、RGBでもLabでもHSLでもよい。また、1画素当たりのビット精度は8ビットに限らず何ビットでもよい。同様にビットレンジも負の値を取りうることも可能である。
【0118】
なお、第1の実施形態において、補間時刻比率Aは、プログラムの一部として動き検出・動き補償プログラム内に記録されているものとして扱ったが、本発明の本質はこれに限定することなく、入力装置105から入力することも可能である。
【0119】
また、第1の実施形態において、動きベクトルマップMV_MAP(p、q)の要素数は、動きベクトル検出処理の処理単位となるブロックサイズに依存して1296個であった。しかしながら、本発明の本質はこれに限定することなく、動きベクトルマップMV_MAP(p、q)の要素数は、動きベクトル検出処理の処理単位となるブロックサイズに依存させる必要はない。即ち、任意の要素数を持つ動きベクトルマップMV_MAP(p、q)を生成するように、画像データ中の任意の座標値を探索基準位置として、動きベクトル検出処理を行ってもよい。
【0120】
また、第1の実施形態において、ブロックサイズは、M=40、N=40としたが、本発明の本質はこれに限定することなく、画像データサイズ以下であれば、MとNを如何様にも設定してよい。
【0121】
また、第1の実施形態において、ブロック501の探索基準位置500を用いたブロック位置定義方法として、ブロック501の上左端の座標値が探索基準位置500に一致するように定義した。しかしながら、本発明の本質はこれに限定することなく、ブロック501の重心の座標値が探索基準位置500に一致するように定義してもよい。また、ブロック501の重心の座標値からある一定のベクトルだけ離れた点が探索基準位置500に一致するように定義してもよい。ブロック503の遅延画像探索位置502を用いたブロック位置の定義方法についても、ブロック505の入力画像探索位置504を用いたブロック位置の定義方法についても同様である。
【0122】
また、第1の実施形態において、x方向探索範囲S_SIZE_X=20、y方向探索範囲S_SIZE_Y=20としたが、本発明の本質はこれに限定することなく、S_SIZE_XとS_SIZE_Yとを如何様にも設定してよい。
【0123】
次に、本発明の第2の実施形態について説明する。図11は、本発明の第2の実施形態に係る画像処理装置の構成を示す図であり、本発明をテレビに適用した場合の実施形態を示している。
【0124】
1101は、画像処理装置である。放送波はアンテナ1102、1103、1104等を経て受信部1105の地上波デジタルチューナ部1106、衛星デジタルチューナ部1108、アナログチューナ部1110で受信される。受信された放送波は、デジタルデコード部1107、1109、アナログデコード部1111でオーディオ信号やビデオ信号に復号される。I/F部1123は、外部入出力装置1118、リモコン1119、SW(スイッチ)1120、環境光1121、SDカード等1122の夫々に対応して、オーディオ・ビデオ入出力I/F1124、リモートI/F1125、操作I/F1126、環境光I/F1127、外部メディア1128を備える。また、I/F部1123は、チャンネル選択、ボリューム調整、画質補正等の各種入出力制御信号のインタフェースを司る。
【0125】
信号処理部1112は、オーディオ処理部1113、ビデオ処理部1115、OSD処理部1114を備え、オーディオ、ビデオ、OSD(オン・スクリーン・ディスプレイ)等の処理を実行する。オーディオ駆動部1116は、オーディオ信号を音としてスピーカ1135から出力し、ビデオ駆動部1117は、ビデオ信号を動画像としてパネル1136にて表示する。
【0126】
CPU1130は、ROM1131に格納されているプログラムを実行して画像処理装置1101を制御する。RAM1132は、CPU1130の主メモリ、ワークエリア等として機能する。なお、CPU1130、ROM1131、RAM1132及び信号処理部1112は、データバス1129を介して接続されている。電源部1134は、電源プラグ1133を介して外部から電源を供給する。
【0127】
図12は、ビデオ処理部1115の構成を示す図である。以下、図12を参照しながら、ビデオ処理部1115の構成について説明する。なお、第1の実施形態と重複する内容については、第1の実施形態において説明した内容に準ずるものとして、その説明を省略する。
【0128】
1200はフレームメモリ部である。1201は補間フレーム時刻設定部である。1202は探索条件設定部である。1203は動きベクトル検出部である。1204は補間画像生成部である。1205は画像出力部である。
【0129】
フレームメモリ部1200は、1フレームずつ画像データを入力するとともに、入力した画像データを保持するメモリを有する。フレームメモリ部1200は、入力した画像データと、メモリにて1フレーム時間遅延させた画像データとの2つの時刻の画像データを出力する。以下では、入力して即座に出力する画像データを入力画像データ、遅延した後に出力する画像データを遅延画像データと称す。
【0130】
補間フレーム時刻設定部1201は、第1の実施形態で説明した補間時刻比率A及び補間倍率Bを出力する。本実施形態においても、A=1/3,2/3、B=3である。但し、補間時刻比率Aによる処理手順に差はないため、以降の動きベクトル検出部1203及び補間画像生成部1204の処理説明ではA=1/3と設定した場合について説明する。
【0131】
なお、補間フレーム時刻設定部1201の実装形態は、本発明において限定しない。本実施形態では、補間フレーム時刻設定部1201はROM1131に記録されており、画像処理装置1101が起動されると同時にビデオ処理部1115に読み込まれるものとする。
【0132】
探索条件設定部1202は、第1の実施形態で説明した図5における探索基準位置500の座標値(x2,y2)を取得する。また、探索条件設定部1202は、x方向ブロックサイズM、y方向ブロックサイズN、x方向探索範囲S_SIZE_X、y方向探索範囲S_SIZE_Yを入力する。第1の実施形態と同様に、M=40、N=40、S_SIZE_X=20、S_SIZE_Y=20である。
【0133】
なお、探索条件設定部1202の実装形態は、本発明において限定しない。本実施形態では、探索条件設定部1202は、ROM1131に記録されており、画像処理装置1101が起動されると同時にビデオ処理部1115に読み込まれるものとする。
【0134】
動きベクトル検出部1203は、フレームメモリ部1200から入力画像データ及び遅延画像データを入力するとともに、補間フレーム時刻設定部1201から補間時刻比率A及び補間倍率Bを入力する。また、動きベクトル検出部1203は、探索条件設定部1202から探索基準位置500の座標値(x2,y2)、x方向ブロックサイズM、y方向ブロックサイズN、x方向探索範囲S_SIZE_X及びy方向探索範囲S_SIZE_Yを入力する。動きベクトル検出部1203は、これらを用いて動きベクトルマップMV_MAP(p、q)を生成する。
【0135】
第1の実施形態と同様に、本実施形態における個々の動きベクトルMV(x,y,Δx,Δy)の検出方法は第1の実施形態と同様である。そのため、以下では1つの動きベクトルMV(x,y,Δx,Δy)の検出方法について説明することで、動きベクトルマップMV_MAP(p,q)の生成処理の説明の代わりとする。
【0136】
図13は、動きベクトル検出部1203の構成を示す図である。以下、図13を参照しながら、動きベクトル検出部1203の構成について説明する。
【0137】
1300は補間時刻比率入力部(1)である。1301は探索条件入力部である。1302は内部パラメータ初期化部(1)である。1303は探索用動きベクトル更新部である。1304は遅延画像データ参照部(1)である。1305は入力画像データ参照部(1)である。1306は相関演算部である。1307は動きベクトル更新部である。1308は動きベクトルマップ出力部である。
【0138】
補間時刻比率入力部(1)1300は、補間フレーム時刻設定部1201から補間時刻比率A及び補間倍率Bを入力する。探索条件入力部1301は、探索条件設定部1202から探索基準位置500の座標値(x2,y2)、x方向ブロックサイズM、y方向ブロックサイズN、x方向探索範囲S_SIZE_X及びy方向探索範囲S_SIZE_Yを入力する。
【0139】
内部パラメータ初期化部(1)1302は、動きベクトル検出部1203で用いる内部パラメータを初期化する。本実施形態では、x方向動きベクトルΔx1、y方向動きベクトルΔy1、x方向探索動きベクトルΔx0、y方向探索動きベクトルΔy0、最大相関係数値R_MAXが内部パラメータである。
【0140】
内部パラメータ初期化部(1)1302は、それぞれΔx1=0、Δy1=0、Δx0=−S_SIZE_X、Δy0=−S_SIZE_Y、R_MAX=0と初期化する。x方向探索範囲S_SIZE_X及びy方向探索範囲S_SIZE_Yは、探索条件入力部1301より入力される。探索用動きベクトル更新部1303は、以下の条件(1)及び条件(2)を判定することで、x方向探索動きベクトルΔx0、y方向探索動きベクトルΔy0を更新する。
【0141】
探索用動きベクトル更新部1303は、y方向探索動きベクトルΔy0がΔy0<S_SIZE_Yの条件(1)を満たしているかどうかを判断する。条件(1)を満たしている場合、探索用動きベクトル更新部1303は、補間倍率Bを用いて、Δy0=Δy0+Bによりy方向探索動きベクトルΔy0を更新する。一方、条件(1)を満たしていない場合、探索用動きベクトル更新部1303は、動きベクトルマップ出力部1308へ制御信号を送信する。
【0142】
条件(1)を満たしている場合、探索用動きベクトル更新部1303は、y方向探索動きベクトルΔy0を更新した後、x方向探索動きベクトルΔx0がΔx0<S_SIZE_Xの条件(2)を満たしているかどうかを判断する。条件(2)を満たしている場合、探索用動きベクトル更新部1303は、補間倍率Bを用いて、Δx0=Δx0+Bによりx方向探索動きベクトルΔx0を更新する。一方、条件(2)を満たしていない場合、探索用動きベクトル更新部1303は、条件(1)の判断を再度行う。
【0143】
遅延画像データ参照部(1)1304は、フレームメモリ部1200に記憶されている遅延画像データを参照してブロック503を取得する。具体的には、遅延画像データ参照部(1)1304は、x方向探索動きベクトルΔx0及びy方向探索動きベクトルΔy0を用いて、式1により、ブロック503の遅延画像探索位置502の座標値(x0,y0)を算出し、ブロック503を取得する。
【0144】
入力画像データ参照部(1)1305は、フレームメモリ部1200に記憶されている入力画像データを参照してブロック505を取得する。具体的には、入力画像データ参照部(1)1305は、x方向探索動きベクトルΔx0及びy方向探索動きベクトルΔy0を用いて、式2により、ブロック505の入力画像探索位置504の座標値(x1,y1)を算出し、ブロック505を取得する。
【0145】
相関演算部1306は、ブロック503とブロック505との相関係数Rを算出する。相関係数Rは式3より求められる。式3において、f(x,y)はブロック503の座標値(x,y)における画素値である。また、g(x,y)はブロック505の座標値(x,y)における画素値である。なお、相関係数Rの代わりに差分絶対値和SADを算出してもよい。差分絶対値和SADは、ブロック503とブロック505とを用いて式4により算出することができる。
【0146】
動きベクトル更新部1307は、相関演算部1306より入力される相関係数Rと、最大相関係数値R_MAXとの大小比較を行う。R>R_MAXであるならば、動きベクトル更新部1307は、相関係数Rを用いて、R_MAX=Rにより最大相関係数値R_MAXを更新する。
【0147】
なお、動きベクトル更新部1307は、相関演算部1306で差分絶対値和SADを算出した場合、差分絶対値和SADと最大相関係数値R_MAXとの大小比較を行う。SAD≦R_MAXであるならば、動きベクトル更新部1307は、差分絶対値和SADを用いて、R_MAX=SADにより最大相関係数値R_MAXを更新する。
【0148】
動きベクトルマップ出力部1308は、探索用動きベクトル更新部1303から制御信号が入力されると、探索基準位置500の座標値(x2,y2)、x方向動きベクトルΔx1及びy方向動きベクトルΔy1から、動きベクトルMV(x2,y2,Δx1,Δy1)を生成する。
【0149】
x方向動きベクトルΔx1及びy方向動きベクトルΔy1は、動きベクトル更新部1307より入力されるx方向探索動きベクトルΔx0及びy方向探索動きベクトルΔy0を用いて、Δx1=Δx0、Δy1=Δy0とすることで算出される。
【0150】
全てのブロックについて動きベクトルMV(x2,y2,Δx1,Δy1)を生成することで、動きベクトルマップMV_MAP(p,q)の生成が完了する。動きベクトルマップ出力部1308は、動きベクトルマップMV_MAP(p,q)を生成した段階で動きベクトルマップMV_MAP(p,q)を出力する。
【0151】
補間画像生成部1204は、フレームメモリ部1200から入力画像データ及び遅延画像データを入力する。また、補間画像生成部1204は、補間フレーム時刻設定部1201から補間時刻比率A、補間倍率Bを入力する。さらに、補間画像生成部1204は、動きベクトル検出部1203から動きベクトルマップMV_MAP(p,q)及びx方向動きベクトルマップサイズP、y方向動きベクトルマップサイズQを入力する。補間画像生成部1204は、これらを用いて補間画像データを生成する。
【0152】
図14は、補間画像生成部1204の構成を示す図である。以下、図14を参照しながら、補間画像生成部124について説明する。
【0153】
1400は補間時刻比率入力部(2)である。1401は動きベクトルマップ入力部である。1402は内部パラメータ初期化部(2)である。1403は動きベクトル更新部である。1404は遅延画像データ参照部(2)である。1405は入力画像データ参照部(2)である。1406は補間ブロック画像生成部である。1407は補間画像出力部である。
【0154】
補間時刻比率入力部(2)1400は、補間フレーム時刻設定部1201から補間時刻比率A及び補間倍率Bを入力する。動きベクトルマップ入力部1401は、動きベクトル検出部1203から動きベクトルマップMV_MAP(p,q)及びx方向動きベクトルマップサイズP、y方向動きベクトルマップサイズQを入力する。
【0155】
内部パラメータ初期化部(2)1402は、補間画像生成部1204で用いる内部パラメータを初期化する。本実施形態では、x方向動きベクトルマップポインタp、y方向動きベクトルマップポインタqが内部パラメータである。それぞれp=−1、q=−1と初期化する。動きベクトル更新部1403は、動きベクトルマップMV_MAP(p,q)から動きベクトルMV(x2,y2,Δx1,Δy1)を取得する。
【0156】
動きベクトルマップMV_MAP(p,q)には、PQ個の動きベクトルがマッピングされている。これを個々に参照するため、動きベクトル更新部1403は、x方向動きベクトルマップポインタp及びy方向動きベクトルマップポインタqを以下に説明するように順次更新して、動きベクトルMV(x2,y2,Δx1,Δy1)を取得する。
【0157】
動きベクトル更新部1403は、以下の条件(3)及び条件(4)を判定することで、x方向動きベクトルマップポインタp及びy方向動きベクトルマップポインタqを更新する。まず、動きベクトル更新部1403は、更新処理(1)として、q=q+1によりy方向動きベクトルマップポインタqを更新する。その後、動きベクトル更新部1403は、y方向動きベクトルマップポインタqがq<Qの条件(3)を満たしているかどうかを判断する。
【0158】
条件(3)を満たしている場合、動きベクトル更新部1403は、更新処理(2)として、p=p+1によりx方向動きベクトルマップポインタpを更新する。一方、条件(3)を満たしていない場合、動きベクトル更新部1403は、補間画像生成部1407へ制御信号を送信する。更新処理(2)の後、動きベクトル更新部1403は、x方向動きベクトルマップポインタpがp<Pの条件(4)を満たしているかどうかを判断する。条件(4)を満たしている場合、動きベクトル更新部1403は、動きベクトルMV(x2,y2,Δx1,Δy1)=MV_MAP(p,q)を取得する。一方、条件(4)を満たしていない場合、動きベクトル更新部1403は、更新処理(1)を再度行う。
【0159】
遅延画像データ参照部(2)1404は、フレームメモリ部1200に記憶されている遅延画像データを参照してブロック503を取得する。具体的には、遅延画像データ参照部(2)1404は、式5によりx方向探索動きベクトルΔx0及びy方向探索動きベクトルΔy0を用いてブロック503の遅延画像探索位置502の座標値(x0,y0)を算出し、ブロック503を取得する。
【0160】
入力画像データ参照部(2)1405は、フレームメモリ部1200に記憶されている入力画像データを参照してブロック505を取得する。具体的には、入力画像データ参照部(2)1405は、式6によりx方向探索動きベクトルΔx0及びy方向探索動きベクトルΔy0を用いてブロック505の遅延画像探索位置504の座標値(x1,y1)を算出し、ブロック505を取得する。
【0161】
補間ブロック画像生成部1406は、式7より、ブロック503及びブロック505を用いて、座標値(x2,y2)の探索基準位置500を基準とする補間画像データを生成する。式7において、h(x,y)はブロック501の座標値(x,y)における画素値である。また、f(x,y)はブロック503の座標値(x,y)における画素値である。また、g(x,y)はブロック505の座標値(x,y)における画素値である。m、nはオフセット値であり、0≦m<M、0≦n<Nの範囲をとる。補間画像出力部1407は、動きベクトル更新部1403から入力される制御信号を受けて、補間ブロック画像生成部1406が生成した補間画像データを出力する。
【0162】
画像出力部1205は、フレームメモリ部1200から遅延画像データを入力する。また、補間画像生成部1204からA=1/3における補間画像データ及びA=2/3における補間画像データを入力する。これらを遅延画像データ、A=1/3における補間画像データ、A=2/3における補間画像データ、の順番で出力する。
【0163】
以上のように、第2の実施形態によれば、動き検出技術及び動き補償技術を用いたフレームレート変換処理において、従来の技術では成しえなかった任意の倍数のフレームレート変換処理が可能となる。
【0164】
また、従来の技術よりも高精度な動きベクトルの探索を可能とすることにより、動き補償処理において生成される補間画像データの画質を向上させ、ユーザに好適な映像を提供することが可能になる。
【0165】
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。
【符号の説明】
【0166】
101:CPU、102:ROM、103:RAM、104:ネットワークI/F、105:入力装置、106:出力装置、107:外部記憶装置
【技術分野】
【0001】
入力画像データと遅延画像データとに基づいて補間画像データを生成する技術に関するものである。
【背景技術】
【0002】
従来、入力される画像データのフレームレートを変換する処理を実行するものとして、動き検出技術及び動き補償技術が知られている(例えば、特許文献1参照)。動き検出技術は、連続する複数の画像データを用いて動きベクトルを検出する技術であり、動き補償技術は、動きベクトルを用いて補間画像データを生成する技術である。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特許第3577354号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、従来の技術は、2倍のフレームレート変換にのみ対応しており、任意の倍数のフレームレート変換に対応していない。このため、24Hzの映像コンテンツに対して従来の技術を適応すると48Hzになり、デジタルテレビ等の一般的な表示装置のリフレッシュレートである60Hzや120Hzと一致しない。このため、従来の技術は、映像コンテンツのフレームレートが表示装置のリフレッシュレートの1/2の場合にしか適応できないという問題があった。
【0005】
また、別の問題として、従来の技術は、動き検出処理において、動きベクトルの探索精度が低かった。このため、動き補償処理において生成される補間画像データの画質が損なわれ、ユーザの視聴において不快感を与えていた。
【0006】
そこで、本発明の目的は、任意の倍数のフレームレート変換処理を可能とするとともに、高精度な動きベクトルの探索を行うことにある。
【課題を解決するための手段】
【0007】
本発明の画像処理装置は、第1の時刻に入力される入力画像データと、前記第1の時刻よりも所定のフレーム時間だけ遡った第2の時刻に入力される遅延画像データとに基づいて、前記入力画像データと前記遅延画像データとの間に、前記第1の時刻から前記所定のフレーム時間よりも短い時間だけ遡った第3の時刻における補間画像データを生成するための動きベクトルを算出可能な画像処理装置であって、前記補間画像データに定義された基準位置に対応する前記入力画像データ内における基準位置を基準として、前記第1の時刻から前記第3の時刻を減じた値である第1の差分値を前記所定のフレーム時間で除した値である第1の時刻比を、空間のずらし量を示す第1の変数に対して乗じた位置に存在する第1のブロックを前記入力画像データから取得するとともに、前記補間画像データに定義された前記基準位置に対応する前記遅延画像データ内における基準位置を基準として、前記第3の時刻から前記第2の時刻を減じた値である第2の差分値を前記所定のフレーム時間で除した値である第2の時刻比を、前記第1の変数に対して乗じた位置に存在する第2のブロックを前記遅延画像データから取得する第1の取得手段と、前記第1の取得手段により取得された第1のブロックと第2のブロックとの相関性を算出する第1の算出手段と、前記第1の算出手段により算出された相関性のうち、所定の条件を満たす相関性にある第1のブロックと第2のブロックとが取得された際の前記第1の変数に基づいて、前記補間画像データにおける動きベクトルを算出する第2の算出手段とを有することを特徴とする。
【発明の効果】
【0008】
本発明によれば、任意の倍数のフレームレート変換処理が可能となるとともに、高精度な動きベクトルを行うことができる。
【図面の簡単な説明】
【0009】
【図1】本発明の実施形態に係る画像処理装置のハードウェア構成の例を示す図である。
【図2】動き検出・動き補償プログラムをCPUが実行することにより実現される処理の流れを示すフローチャートである。
【図3】入力画像データ、遅延画像データ及び補間画像データのフレーム時刻を模式的に示す図である。
【図4】動きベクトルについて説明するための図である。
【図5】ステップS204における動きベクトル検出処理を説明するための図である。
【図6】図2のステップS204における動きベクトル検出処理の詳細を示すフローチャートである。
【図7】図6のサブフローチャート(1)を用いて説明した動きベクトル検出処理の探索精度に関する課題とその改善方法を説明するための図である。
【図8】図2のステップS204における動きベクトル検出処理の詳細を示すフローチャートである。
【図9】図2のステップS204における動きベクトル検出処理の詳細を示すフローチャートである。
【図10】図2のステップS205における補間画像データ生成処理の詳細を示すフローチャートである。
【図11】本発明の実施形態に係る画像処理装置の構成を示す図である。
【図12】ビデオ処理部の構成を示す図である。
【図13】動きベクトル検出部の構成を示す図である。
【図14】補間画像生成部の構成を示す図である。
【発明を実施するための形態】
【0010】
以下、本発明を適用した好適な実施形態を、添付図面を参照しながら詳細に説明する。
【0011】
先ず、本発明の第1の実施形態について説明する。図1は、本発明の第1の実施形態に係る画像処理装置のハードウェア構成の例を示す図である。図1において、100は画像処理装置である。CPU101は、外部記憶装置(ハードディスク)107に格納されているOS、後述する動き検出・動き補償プログラム等のアプリケーションプログラムを実行して画像処理装置100の動作を制御する。また、CPU101は、RAM103にプログラムの実行に必要な情報、ファイル等を一時的に格納する制御を行う。ROM102は、基本I/Oプログラム等のプログラムが記憶されている。RAM103は、CPU101の主メモリ、ワークエリア等として機能する。
【0012】
ネットワークインタフェース(I/F)104は、LAN、WANに接続して外部装置と通信するためのインタフェースである。入力装置105は、ユーザからの入力を受け付けるマウス、キーボードの他、被写体を撮影して当該被写体の画像データを入力するための撮像装置を含むことができる。当該撮像装置を有することにより、画像処理装置100は、デジタルカメラ又はデジタルビデオカメラとして機能する。
【0013】
出力装置106は、液晶ディスプレイ等の表示装置である。外部記憶装置107は、アプリケーションプログラム、ドライバプログラム、OS、制御プログラム、以下に説明する実施形態の処理を実行するためのプログラム等を格納している。システムバス108は、画像処理装置100内のデータの流れを司る。
【0014】
図2は、動き検出・動き補償プログラムをCPU101が実行することにより実現される処理の流れを示すフローチャートである。動き検出・動き補償プログラムは、通常、外部記憶装置107に記録されている。CPU101は、処理を開始するにあたり、動き検出・動き補償プログラムを外部記憶装置107から読み込み、RAM103に展開する。以下、図2を参照しながら、動き検出・動き補償プログラムに基づき実行される処理の流れについて説明する。
【0015】
ステップS201において、CPU101は、画像データを入力する。後にフレーム単位の処理が実行されるので、通常はフレーム単位で画像データが入力される。なお、画像データはYUVの色空間で定義された画素データの集合とする。また、画像データの1画素当たりのビット精度はYUVそれぞれ8ビットであり、ビットレンジは正の値のみ取り、0〜255とする。また、1画像データの画素データサイズは、x方向に1920画素、y方向に1080画素とする。
【0016】
ステップS202において、CPU101は、ステップS201で入力した画像データを1フレーム時間だけ遅延させる。これは、2フレーム以上の画像データを用いて動きベクトル検出処理を行うためである。また、図1におけるRAM102に画像データの記憶領域を設けることにより、CPU101が画像データを遅延させることを可能としている。
【0017】
以降、特に断りがなければ、ステップS201において入力された画像データを入力画像データと称す。また、ステップS202にて1フレーム時間だけ遅延された画像データを遅延画像データと称す。
【0018】
ステップS203において、CPU101は、動きベクトルに基づいて作成する補間画像データのフレーム時刻を設定する。ここで、図3を用いてステップS203の詳細を説明する。図3は、入力画像データ、遅延画像データ及び補間画像データのフレーム時刻を模式的に示す図である。図3において、300は遅延画像データであり、そのフレーム時刻をt=t0(第3の時刻)とする。301は入力画像データであり、そのフレーム時刻をt=t1=t0+n(第1の時刻)とする。302は補間画像データであり、そのフレーム時刻をt=t2=t0+An(第2の時刻)とする。但し、遅延画像データ300と入力画像データ301との間に時間的に内挿するようにAを設定する。Aは補間時刻比率であり、取り得る値は0<A<1である。本実施形態ではA=1/3、2/3と設定して、遅延画像データ300と入力画像データ301との間に2フレームの補間画像データ302を生成する。但し、補間時刻比率Aによる処理手順の差はないため、以降のステップS204及びS205の処理説明では、A=1/3と設定した場合について説明する。また、ステップS206の処理説明では、A=1/3、2/3における2フレームの補間画像データ302が生成されたものとして説明する。
【0019】
また本実施形態では、1フレームの入力画像データ301につき、2フレームの補間画像データ302を生成するので、3倍の情報量となる。このことから、補間倍率B=3と定義する。本実施形態では、補間時刻比率A、補間倍率Bは、プログラムの一部として動き検出・動き補償プログラム内に記録されているものとする。
【0020】
ステップS204において、CPU101は、動きベクトルマップMV_MAP(p,q)を生成する。ここで、ステップS204の処理の説明に先立ち、動きベクトルマップMV_MAP(p,q)及び動きベクトルMV(x,y,Δx,Δy)の補足説明を行う。動きベクトルマップMV_MAP(p,q)は、動きベクトルMV(x,y,Δx,Δy)の集合である。本実施形態において、動きベクトルマップMV_MAP(p,q)の要素数を(p:x方向動きベクトルマップポインタ、q:y方向動きベクトルマップポインタ)、以下のように算出する。
【0021】
本実施形態では、ブロックマッチング法による動きベクトル検出を行う。動きベクトル検出処理の処理単位となるブロックサイズは、M=40、N=40とする(M:x方向ブロックサイズ、N:y方向ブロックサイズ)。また、隣接するブロック同士が重複しないようにブロック境界を定義して、ブロックサイズで画像データサイズを割った数だけ動きベクトル検出処理を行うものとする。このような前提条件を与えた場合、動きベクトルマップMV_MAP(p,q)の要素数は、1920/40・1080/40=48・27=1296個となる。また、x方向動きベクトルマップサイズP=48、y方向動きベクトルマップサイズQ=27となる。
【0022】
次に、動きベクトルMV(x,y,Δx,Δy)について説明する。図4(a)に示すように、座標値(x,y)と差分値(Δx,Δy)とが与えられたとき、座標値(x,y)が動きベクトルの始点であり、座標値(x+Δx、y+Δy)が動きベクトルの終点と定義するのが一般的である。しかしながら、本実施形態においては、図4(b)に示すように、座標値(x−AΔx,y−AΔy)が動きベクトルの始点であり、座標値{x+(1−A)Δx,y+(1−A)Δy}が動きベクトルの終点と定義する。なお、A−1は、第1の時刻から第3の時刻を減じた値である第1の差分値を1フレーム時間で除した値である第1の時刻比である。Aは、第3の時刻から第2の時刻を減じた値である第2の差分値を1フレーム時間で除した値である第2の時刻比である。
【0023】
個々の動きベクトルMV(x,y,Δx,Δy)の検出方法に違いはないため、以下では1つの動きベクトルMV(x,y,Δx,Δy)の検出方法について説明することにより、動きベクトルマップMV_MAP(p,q)の生成処理の説明の代わりとする。
【0024】
図5は、ステップS204における動きベクトル検出処理を説明するための図である。以下、図5を参照しながら、ステップS204における動きベクトル検出処理について説明する。
【0025】
図5(a)において、300はフレーム時刻t=t0の遅延画像データであり、301はフレーム時刻t=t1=t0+nの入力画像データであり、302はフレーム時刻t=t2=t0+Anの補間画像データである。
【0026】
補間画像データ302における探索基準位置500の座標値を(x2,y2)とする。ブロック501は探索基準位置500に基づいて定義される。本実施形態では、探索基準位置500を用いたブロック位置定義方法として、ブロック501の上左端の座標値が探索基準位置500に一致するように定義する。
【0027】
遅延画像データ300における遅延画像探索位置502の座標値を(x0,y0)とする。ブロック503(第2のブロック)は遅延画像探索位置502に基づいて定義される。即ち、本実施形態では、遅延画像探索位置502を用いたブロック位置定義方法として、ブロック503の上左端の座標値が遅延画像探索位置502に一致するように定義する。
【0028】
入力画像データ301における入力画像探索位置504の座標値を(x1,y1)とする。ブロック505(第1のブロック)は入力画像探索位置504に基づいて定義される。即ち、本実施形態では、入力画像探索位置504を用いたブロック位置定義方法として、ブロック505の上左端の座標値が入力画像探索位置504に一致するように定義する。
【0029】
このように、ブロック501に関する探索基準位置500を用いたブロック位置定義方法、ブロック503に関する遅延画像探索位置502を用いたブロック位置定義方法及びブロック505に関する入力画像探索位置504を用いたブロック位置定義方法は全て同様の手法である。なお、ブロック501、ブロック503及びブロック505のブロックサイズは、上述したようにM=40、N=40である。
【0030】
次に、図5(b)を用いて、本実施形態における動きベクトル検出方法について説明する。図5(b)は、補間画像データ302に、遅延画像探索位置502、ブロック503、入力画像探索位置504、ブロック505を配置した状態を示す図である。ここで1つ注意すべきことは、図5(b)において、ブロック503の画像情報は遅延画像データ300によるものであり、ブロック505の画像情報は入力画像データ301によるものである。2次元の紙面上において時空間の3次元情報を正確に表すことはできないため、図5(b)においては、このような表現方法を採っている。
【0031】
フレーム時刻t=t0におけるブロック503の画像情報が、フレーム時刻t=t1=t0+nにおいてブロック505で表されるとき、フレーム時間間隔nにおいてブロック503がx方向にΔx1、y方向にΔy1移動したとする。フレーム時刻t=t0からt=t2=t0+Anのフレーム時間間隔Anにおいては、ブロック503の画像情報はx方向にAΔx1、y方向にAΔy1だけ移動する。ブロック503の画像情報が移動後に丁度ブロック501の位置に到達するならば、探索基準位置500の座標値(x2,y2)と遅延画像探索位置502の座標値(x0,y0)とを用いて、(x2,y2)=(x0+AΔx1,y0+AΔy1)と表すことができる。式を変形すると、(x0,y0)=(x2−AΔx1,y2−AΔy1)となる。なお、上記Δx1、Δy1は、空間のずれ量を示す第2の変数である。
【0032】
また、フレーム時刻t=t2=t0+Anからt=t1=t0+nのフレーム時間間隔(1−A)nにおいては、ブロック501の画像情報はx方向にAΔx1、y方向にAΔy1だけ移動する。ブロック505の画像情報が移動前に丁度ブロック501の位置にあったならば、探索基準位置500の座標値(x2,y2)と入力画像探索位置504の座標値(x1,y1)とを用いて、(x1,y1)={x2+(1−A)Δx1,y2+(1−A)Δy1}と表すことができる。なお、上記Δx1、Δy1は、空間のずれ量を示す第1の変数である。
【0033】
このことから、ブロック503とブロック505とをブロックマッチングする。これにより、フレーム時刻t=t2=t0+Anの補間画像データ302の、座標値が(x2,y2)である探索基準位置500における動きベクトルMV(x2,y2,Δx1,Δy1)を検出することができる。
【0034】
このように、本実施形態においては、補間画像データ302上の座標値を動きベクトル検索における基準として、補間画像データ302上の座標値を通過する動きベクトルの候補から動きベクトルを検出する。
【0035】
次に、ステップS204における動きベクトル検出処理について詳細に説明する。図6は、図2のステップS204における動きベクトル検出処理の詳細を示すフローチャートである。なお、以下の説明では、図6に示す動きベクトル検出処理のフローチャートをサブフローチャート(1)と称す。
【0036】
ステップS601において、CPU101は、入力画像データ及び遅延画像データを入力する。ステップS602において、CPU101は、補間時刻比率A及び補間倍率Bを入力する。
【0037】
ステップS603において、CPU101は、探索条件として、探索基準位置500の座標値(x2,y2)、x方向ブロックサイズM、y方向ブロックサイズN、x方向探索範囲S_SIZE_X、y方向探索範囲S_SIZE_Yを入力する。上述したようにM=40、N=40である。また本実施形態では、S_SIZE_X=20、S_SIZE_Y=20とする。
【0038】
ステップS604において、CPU101は、サブフローチャート(1)で用いる内部パラメータを初期化する。本実施形態では、x方向動きベクトルΔx1、y方向動きベクトルΔy1、x方向探索動きベクトルΔx0、y方向探索動きベクトルΔy0、最大相関係数値R_MAXが内部パラメータである。それぞれΔx1=0、Δy1=0、Δx0=−S_SIZE_X、Δy0=−S_SIZE_Y、R_MAX=0と初期化する。
【0039】
ステップS605において、CPU101は、y方向探索動きベクトルΔy0がΔy0<S_SIZE_Yの条件(繰返し条件(1))を満たしているかどうかを判断する。満たしている場合、ステップS606へ処理を進める。一方、満たしていない場合、ステップS615へ処理を進める。
【0040】
ステップS606において、CPU101は、補間倍率Bを用いて、Δy0=Δy0+Bによりy方向探索動きベクトルΔy0を更新する。ステップS607において、CPU101は、x方向探索動きベクトルΔx0がΔx0<S_SIZE_Xの条件(繰返し条件(2))を満たしているかどうかを判断する。満たしている場合、ステップS608へ処理を進める。一方、満たしていない場合、ステップS605へ処理を進める。
【0041】
ステップS608において、CPU101は、補間倍率Bを用いて、Δx0=Δx0+Bによりx方向探索動きベクトルΔx0を更新する。ステップS609において、CPU101は、遅延画像データからブロック503を取得する。ブロック503の遅延画像探索位置502の座標値(x0,y0)は、次の式1により算出される。ステップS610において、CPU101は、入力画像データからブロック505を取得する。ブロック505の入力画像探索位置504の座標値(x1,y1)は、次の式2により算出される。なお、ステップS609、S610は、第1の取得手段の処理例である。
【0042】
【数1】
【0043】
【数2】
【0044】
ステップS611において、CPU101は、ブロック503とブロック505との相関性として相関係数Rを算出する。相関係数Rは次の式3より求められる。式3において、f(x,y)はブロック503の座標値(x,y)における画素値である。また、g(x,y)はブロック505の座標値(x,y)における画素値である。なお、相関係数Rの代わりに差分絶対値和SADを算出することも可能である。差分絶対値和SADは、ブロック503とブロック505とを用いて、次の式4より算出される。なお、ステップS611は、第1の算出手段の処理例である。
【0045】
【数3】
【0046】
【数4】
【0047】
ステップS612において、CPU101は、ステップS611で算出された相関係数Rと最大相関係数値R_MAXとの大小比較を行う。R>R_MAXであるならば、ステップS613へ処理を進める。一方、R≦R_MAXであるならば、ステップS607へ処理を進める。なお、ステップS611で差分絶対値和SADを算出した場合、CPU101は、差分絶対値和SADと最大相関係数値R_MAXとの大小比較を行う。SAD≦R_MAXであるならば、ステップS613へ処理を進める。一方、SAD>R_MAXであるならば、ステップS607へ処理を進める。
【0048】
ステップS613において、CPU101は、相関係数Rを用いて、R_MAX=Rにより最大相関係数値R_MAXを更新する。なお、ステップS611で差分絶対値和SADを算出した場合、CPU101は、差分絶対値和SADを用いて、R_MAX=SADにより最大相関係数値R_MAXを更新する。
【0049】
ステップS614において、CPU101は、Δx1=Δx0によりx方向動きベクトルΔx1を更新するとともに、Δy1=Δy0によりy方向動きベクトルΔy1を更新する。ステップS615において、CPU101は、探索基準位置500の座標値(x2,y2)、x方向動きベクトルΔx1及びy方向動きベクトルΔy1から、動きベクトルMV(x2,y2,Δx1,Δy1)を出力する。以上がサブフローチャート(1)の説明である。なお、ステップS614は、第2の算出手段の処理例である。
【0050】
次に、図6のサブフローチャート(1)を用いて説明した動きベクトル検出処理の探索精度を向上させるための方法について説明する。この方法は、図2のステップS204における動きベクトル検出処理にて実施される方法であり、図6のサブフローチャート(1)に示した動きベクトル検出処理に代えて実施されるものである。
【0051】
図7は、図6のサブフローチャート(1)を用いて説明した動きベクトル検出処理の探索精度に関する課題とその改善方法を説明するための図である。
【0052】
図7は、図5と同様に、フレーム時刻t=t0の遅延画像データとフレーム時刻t=t0+nの入力画像データとの2つの画像データを用いて、フレーム時刻t=t0+Anにおける補間画像データを生成するための動きベクトルの検出方法を説明するための図である。なお、図7は、図5よりも詳細に、画素単位で動きベクトルの検出パターンを表している。
【0053】
図7(a)、図7(b)及び図7(c)のそれぞれは、y−t平面を表している。このy−t平面における横軸はフレーム時刻であり、縦軸はy座標である。本来はx−y−tの3次元立体上で説明すべきであるが、空間軸についてはyのみの1次元で説明しても差し支えないため、x軸を省略している。
【0054】
また、図7(a)、図7(b)及び図7(c)のそれぞれにおいて、時刻t=t0では、遅延画像データ300を構成するI(y,t)=I(p−1,t0)、I(y,t)=I(p,t0)、I(y,t)=I(p+1,t0)、I(y,t)=I(p+2,t0)の画素が配置されている。時刻t=t0+nでは、I(y,t)=I(p−1,t0+n)、I(y,t)=I(p,t0+n)、I(y,t)=I(p+1,t0+n)、I(y,t)=I(p+2,t0+n)の画素が配置されている。
【0055】
まず、図7(a)の例では、図6のサブフローチャート(1)を用いて説明した動きベクトル検出処理は、整数画素精度の探索がなされておらず、探索精度が低いことを示している。図7(a)において、フレーム時刻t=t0+Anにおける画素I(y,t)=I(p,t0+An)を動きベクトル検出における探索基準位置として、動きベクトルの探索パターンを説明する。なお、この画素I(y,t)=I(p,t0+An)は、図5における補間画像データ302上の探索基準位置500と一致する。
【0056】
先ず、最初の探索パターンにより、I(y,t)=I(p,t0)を遅延画像探索位置とし、I(y,t)=I(p,t0+n)を入力画像探索位置とする第一のブロックマッチングが行われる。次に最初の探索パターンに続く2番目の探索パターンにより、I(y,t)=I(p−1,t0)を遅延画像探索位置とし、I(y,t)=I(p+2,t0+n)を入力画像探索位置とする第二のブロックマッチングが行なわれる。
【0057】
ここで、第一のブロックマッチングと第二のブロックマッチングとの間で起こる探索画素位置のシフト量を計算する。遅延画像データ側は(p−1)−p=−1であり、y軸の負の方向に1画素シフトしている。入力画像データ側は(p+2)−p=2であり、y軸の正の方向に2画素シフトしている。遅延画像データ側のシフト量と入力画像データ側のシフト量との差分は3画素であり、整数画素精度である1画素にならない。このことから、図6のサブフローチャート(1)を用いて説明した動きベクトルの検出処理は、整数画素精度の探索がなされておらず、探索精度が低いことがわかる。
【0058】
このように、動きベクトル探索におけるシフト量が1にならないのは、1以上の整数画素精度のシフト量でy軸に対して正負逆に遅延画像探索位置と入力画像探索位置とをシフトしているためである。また、探索基準位置を通過する動きベクトルのみを探索しているためでもある。
【0059】
次に、整数画素精度の動きベクトル検出、又は、サブピクセル精度の動きベクトル検出を可能とするために、画像拡大処理の後に動きベクトル検出を行う方法について、図7(b)を参照しながら説明する。またその後、図7(c)を参照しながら、本来の探索基準位置から離れた画素位置を新たな探索基準位置として、動きベクトル検出を行う方法について説明する。
【0060】
先ず、図7(b)を参照しながら、画像拡大処理の後に動きベクトル検出を行う方法について説明する。図7(b)では、動きベクトル検出を行うに先立ち、補間倍率Bと等しい倍率で画像データを拡大させる。本実施形態では補間倍率B=3であるため、3倍に拡大させる。
【0061】
時刻t=t0において、I(y,t)=I(p−1,t0)、I(y,t)=I(p,t0)、I(y,t)=I(p+1,t0)、I(y,t)=I(p+2,t0)の画素が配置されている。CPU101は、これらの画素を用いて補間画素I(y,t)=I(p−2/3,t0)、I(y,t)=I(p−1/3,t0)、I(y,t)=I(p+1/3,t0)、I(y,t)=I(p+2/3,t0)、I(y,t)=I(p+4/3,t0)及びI(y,t)=I(p+5/3,t0)を生成する。
【0062】
時刻t=t0+nにおいて、I(y,t)=I(p−1,t0+n)、I(y,t)=I(p,t0+n)、I(y,t)=I(p+1,t0+n)、I(y,t)=I(p+2,t0+n)の画素が配置されている。CPU101は、これらの画素を用いて補間画素I(y,t)=I(p−2/3,t0+n)、I(y,t)=I(p−1/3,t0+n)、I(y,t)=I(p+1/3,t0+n)、I(y,t)=I(p+2/3,t0+n)、I(y,t)=I(p+4/3,t0+n)及びI(y,t)=I(p+5/3,t0+n)を生成する。
【0063】
なお、画像拡大処理における拡大補間アルゴリズムは、最近傍補間法、バイリニア補間法、バイキュービック補間法及びその他の如何なる画像拡大処理を用いてもよい。
【0064】
次に、画像拡大処理を行った遅延画像データと入力画像データとを用いた動きベクトルの探索パターンについて説明する。ここでは、フレーム時刻t=t0+Anにおける画素I(y,t)=I(p,t0+An)を動きベクトル検出における探索基準位置とする。
【0065】
最初の探索パターンにより、I(y,t)=I(p,t0)を遅延画像探索位置とし、I(y,t)=I(p,t0+n)を入力画像探索位置とする第一のブロックマッチングが行われる。最初の探索パターンに続く2番目の探索パターンにより、I(y,t)=I(p−1/3,t0)を遅延画像探索位置とし、I(y,t)=I(p+2/3,t0+n)を入力画像探索位置とする第二のブロックマッチングが行われる。
【0066】
ここで、第一のブロックマッチングと第二のブロックマッチングとの間で起こる探索画素位置のシフト量を計算する。遅延画像データ側は(p−1/3)−p=−1/3であり、y軸の負の方向に1/3画素シフトしている。入力画像データ側は(p+2/3)−p=2/3であり、y軸の正の方向に2/3画素シフトしている。遅延画像データ側のシフト量と入力画像データ側のシフト量との差分は1画素となる。このように、画像拡大処理を行うことで、整数画素精度の動きベクトル検出が可能となる。
【0067】
なお、本実施形態では、補間倍率B=3であり、画像を3倍より大きく拡大させると、サブピクセル精度の動きベクトル検出が可能となる。
【0068】
次に、図7(c)を参照しながら、本来の探索基準位置から離れた画素位置を新たな探索基準位置として、動きベクトル検出を行う方法について説明する。図7(c)では、図6のサブフローチャート(1)を用いて説明した動きベクトルの検出処理の後に、検出された動きベクトルの近傍の動きベクトルを再探索する。
【0069】
図7(c)において、フレーム時刻t=t0+Anにおける動きベクトルを検出するため、画素I(y,t)=I(p,t0+An)を探索基準位置とする動きベクトルMV(p,0)が検出されたものとする。ここでは、説明の省略のため、x軸については考えないが、仮に考えて、x方向の探索基準位置x2=40、x方向の動きベクトルΔx1=10であるとすると、MV(40,p,10,0)と検出されているのと同じである。
【0070】
この検出された動きベクトルMV(p,0)の近傍の動きベクトルを探索するために、探索基準位置I(y,t)=I(p,t0+An)から、1/3画素ずれたI(y,t)=I(p+1/3,t0+An)を定義して新たな探索基準位置とする。この新たな探索基準位置I(y,t)=I(p+1/3,t0+An)を導入することで、I(y,t)=I(p,t0)を遅延画像探索位置とし、I(y,t)=I(p+1,t0+n)を入力画像探索位置とするブロックマッチングが行われる。また、動きベクトルは新たな探索基準位置I(y,t)=I(p+1/3,t0+An)を通過する。
【0071】
ここで、動きベクトルMV(p,0)を検出する際に行われた第一のブロックマッチングと、新たな探索基準位置I(y,t)=I(p+4/3,t0+An)を用いて行われた第二のブロックマッチングとの間で起こる探索画素位置のシフト量を計算する。遅延画像データ側はp−p=0であり、シフトしていない。入力画像データ側は(p+1)−p=1であり、y軸の正の方向に1画素シフトしている。遅延画像データ側のシフト量と入力画像データ側のシフト量との差分は1画素となる。このように、本来の探索基準位置から離れた画素位置を新たな探索基準位置として動きベクトルを検出することで、整数画素精度での動きベクトルを検出することが可能になる。
【0072】
図7(b)に示すように、画像拡大処理の後に動きベクトル検出を行うことにより、整数画素精度の動きベクトル検出、又は、サブピクセル精度の動きベクトル検出が可能となる。
【0073】
また、図7(c)に示すように、本来の探索基準位置から離れた画素位置を新たな探索基準位置として、動きベクトル検出を行うことにより、整数画素精度の動きベクトル検出、又は、サブピクセル精度の動きベクトル検出が可能となる。なお、上記両方の方法を実行するようにしても同様の効果を得ることができる。
【0074】
次に、図8のフローチャートを参照しながら、図7(b)を用いて説明した、画像拡大処理の後に動きベクトル検出を行う方法について詳細に説明する。その後、図7(c)を用いて説明した、本来の探索基準位置から離れた画素位置を新たな探索基準位置として動きベクトル検出を行う方法について詳細に説明する。
【0075】
図8は、図2のステップS204における動きベクトル検出処理の詳細を示すフローチャートである。なお、以下の説明では、図8に示す動きベクトル検出処理のフローチャートをサブフローチャート(2)と称す。
【0076】
図8のサブフローチャート(2)は、図6のサブフローチャート(1)の処理内容と多くの点で同様である。そのため、サブフローチャート(2)独自の処理についてのみ説明を行い、サブフローチャート(1)と同様の処理は、説明を省略する。即ち、サブフローチャート(2)におけるステップS600からステップS602の説明は省略するものとする。また、ステップS603の説明も省略する。また、ステップS604からステップS614の説明も省略する。さらに、ステップS615及びステップS616の説明も省略する。
【0077】
ステップS800において、CPU101は、補間倍率Bを用いて入力画像データ及び遅延画像データを拡大する。本実施形態では、補間倍率B=3であるので、入力画像データ及び遅延画像データを3倍に拡大する。画像拡大処理の方法は既に図7(b)を用いて説明したので省略する。
【0078】
ステップS801において、CPU101は、ステップ603で入力した探索条件を補間倍率Bを用いて再設定する。本実施形態では、補間倍率B=3であるので、CPU101は、x方向ブロックサイズM、y方向ブロックサイズN、x方向探索範囲S_SIZE_X、y方向探索範囲S_SIZE_Yに対して、M=BM=3M、N=BN=3N、S_SIZE_X=B*S_SIZE_X=3S_SIZE_X及びS_SIZE_Y=B*S_SIZE_Y=3S_SIZE_Yと再設定する。
【0079】
ステップS802において、CPU101は、補間倍率Bを用いて動きベクトルを縮小する。本実施形態では、補間倍率B=3であるので、CPU101は、MV(x2,y2,Δx1,Δy1)で算出されている動きベクトルに対して、x2=x2/B=x2/3、y2=y2/B=y2/3、Δx1=Δx1/B=Δx1/3、Δy1=Δy1/B=Δy1/3と縮小する。以上がサブフローチャート(2)の説明である。
【0080】
このように、画像拡大処理の後に動きベクトル検出を行うことで、整数画素精度の動きベクトル検出が可能になる。なお、本実施形態では、補間倍率B=3であり、画像を3倍より大きく拡大させると、サブピクセル精度の動きベクトル検出が可能となる。
【0081】
次に、図7(c)に示した、本来の探索基準位置から離れた画素位置を新たな探索基準位置として用いる動きベクトル検出方法の詳細を、図9のフローチャートを参照しながら説明する。図9は、図2のステップS204における動きベクトル検出処理の詳細を示すフローチャートである。なお、以下の説明では、動きベクトル検出処理のフローチャートをサブフローチャート(3)と称す。
【0082】
図9のサブフローチャート(3)は、図6のサブフローチャート(1)の処理内容と多くの点で同様である。そのため、サブフローチャート(3)独自の処理についてのみ説明を行い、サブフローチャート(1)と同様の処理は、説明を省略する。即ち、サブフローチャート(3)におけるステップS600からステップS615の説明を省略する。
【0083】
ステップS900において、CPU101は、x方向探索範囲S_SIZE_X、y方向探索範囲S_SIZE_Yに関して、S_SIZE_X=Δx1+B、S_SIZE_Y=Δy1+Bと、探索条件を再設定する。
【0084】
ステップS901において、CPU101は、サブフローチャート(3)で用いる再検索用内部パラメータを初期化する。本実施形態において、再検索用内部パラメータは、過去側x方向探索動きベクトルΔx00、過去側y方向探索動きベクトルΔy00、未来側x方向探索動きベクトルΔx01、未来側y方向探索動きベクトルΔy01である。CPU101は、それぞれΔx00=Δx1−B−1、Δy00=Δy1−B−1、Δx01=Δx1−B−1、Δy01=Δy1−B−1と初期化する。
【0085】
ステップS902において、CPU101は、過去側y方向探索動きベクトルΔy00がΔy00<S_SIZE_Yの条件(繰返し条件(3))を満たしているかどうかを判断する。満たしている場合、ステップS903へ処理を進める。一方、満たしていない場合、ステップS919へ処理を進める。
【0086】
ステップS903において、CPU101は、Δy00=Δy00+1として、過去側y方向探索動きベクトルΔy00を更新する。ステップS904において、CPU101は、過去側x方向探索動きベクトルΔx00がΔx00<S_SIZE_Xの条件(繰返し条件(4))を満たしているかどうかを判断する。満たしている場合、ステップS905へ処理を進める。一方、満たしていない場合、ステップS902へ処理を進める。
【0087】
ステップS905において、CPU101は、Δx00=Δx00+1により過去側x方向探索動きベクトルΔx00を更新する。ステップS906において、CPU101は、未来側y方向探索動きベクトルΔy01がΔy01<S_SIZE_Yの条件(繰返し条件(5))を満たしているかどうかを判断する。満たしている場合、ステップS907へ処理を進める。一方、満たしていない場合、ステップS904へ処理を進める。
【0088】
ステップS907において、CPU101は、Δy01=Δy01+1により未来側y方向探索動きベクトルΔy01を更新する。ステップS908において、CPU101は、未来側x方向探索動きベクトルΔx01がΔx01<S_SIZE_Xの条件(繰返し条件(6))を満たしているかどうかを判断する。満たしている場合、ステップS909へ処理を進める。一方、満たしていない場合、ステップS906へ処理を進める。
【0089】
ステップS909において、CPU101は、Δx01=Δx01+1により未来側x方向探索動きベクトルΔx01を更新する。ステップS910において、CPU101は、探索基準位置500の座標値(x2,y2)を始点として、新たな探索基準位置の座標値(x4,y4)を終点とする補正ベクトル(Δx4,Δy4)を算出する。算出には過去側x方向探索動きベクトルΔx00、過去側y方向探索動きベクトルΔy00、未来側x方向探索動きベクトルΔx01及び未来側y方向探索動きベクトルΔy01を用いる。x4とy4とはそれぞれ、x4=Δx00+A*(Δx01−Δx00)、y4=Δy00+A*(Δy01−Δy00)で算出される。また、Δx4とΔy4とはそれぞれ、Δx4=x4−x2、Δy4=y4−y2である。
【0090】
ステップS911において、CPU101は、所定閾値th2に対して補正ベクトル(Δx4,Δy4)の大きさがth2≦(Δx42+Δy42)1/2かどうかを判断する。所定閾値th2以下の場合、ステップS912へ処理を進める。一方、所定閾値th2よりも大きい場合、ステップS908へ処理を進める。なお、本実施形態では、所定閾値th2=21/2とする。
【0091】
ステップS912において、CPU101は、遅延画像データから過去側x方向探索動きベクトルΔx00及び過去側y方向探索動きベクトルΔy00を基準位置とするブロック(第4のブロック)を取得する。ステップS913において、CPU101は、入力画像データから未来側x方向探索動きベクトルΔx01及び未来側y方向探索動きベクトルΔy01を基準位置とするブロック(第3のブロック)を取得する。なお、ステップS912、S913は、第2の取得手段の処理例である。
【0092】
ステップS914において、CPU101は、ステップS912及びステップS913にて取得した2つのブロックの相関係数Rを算出する。なお、相関係数Rの代わりに差分絶対値和SADを算出してもよい。
【0093】
ステップS915において、CPU101は、ステップS914で算出した相関係数Rと最大相関係数値R_MAXとの大小比較を行う。R>R_MAXであるならば、ステップS916へ処理を進める。R≦R_MAXであるならば、ステップS908へ処理を進める。なお、CPU101は、ステップS914で差分絶対値和SADを算出した場合、差分絶対値和SADと最大相関係数値R_MAXとの大小比較を行う。SAD≦R_MAXであるならば、ステップS916へ処理を進める。SAD>R_MAXであるならば、ステップS908へ処理を進める。なお、ステップS916は、第3の算出手段の処理例である。
【0094】
ステップS916において、CPU101は、相関係数Rを用いて、R_MAX=Rにより最大相関係数値R_MAXを更新する。なお、ステップS914で差分絶対値和SADを算出した場合、CPU101は、差分絶対値和SADを用いて、R_MAX=SADにより最大相関係数値R_MAXを更新する。
【0095】
ステップS917において、CPU101は、過去側x方向探索動きベクトルΔx00、過去側y方向探索動きベクトルΔy00、未来側x方向探索動きベクトルΔx01及び未来側y方向探索動きベクトルΔy01を用いて、動きベクトルMV(x2,y2,Δx1,Δy1)を更新する。Δx1とΔy1とは、Δx1=Δx01−Δx00、Δy1=Δy01−Δy00である。
【0096】
ステップS918において、CPU101は、補正ベクトル(Δx4,Δy4)を用いて、動きベクトルMV(x2,y2,Δx1,Δy1)を補正する。Δx1とΔy1とは、Δx1=Δx1−Δx4、Δy1=Δy1−Δy4で算出される。ステップS919において、CPU101は、動きベクトルMV(x2,y2,Δx1,Δy1)を出力する。以上が、サブフローチャート(3)の説明である。
【0097】
このように、本来の探索基準位置から離れた画素位置を新たな探索基準位置として動きベクトル検出することで、整数画素精度での動きベクトルを検出することが可能になる。以上、ステップS204における動きベクトルの検出処理の詳細について説明した。
【0098】
サブフローチャート(1)、サブフローチャート(2)及びサブフローチャート(3)は、いずれも本実施形態の特徴を表したものである。特徴とは即ち、補間画像データ上の座標値を動きベクトル探索における基準とし、当該補間画像フレーム上の座標値を通過する動きベクトルの候補から動きベクトルを検出することである。
【0099】
ステップS205において、CPU101は、フレーム時刻t=t2=t0+Anにおける補間画像データ302を作成する。ここで、ステップS205における補間画像データ生成処理の詳細について説明する。図10は、図2のステップS205における補間画像データ生成処理の詳細を示すフローチャートである。なお、以下の説明では、補間画像データ生成処理を示す図10のフローチャートをサブフローチャート(4)と称す。
【0100】
ステップS1001において、CPU101は、補間時刻比率Aを入力する。ステップS1002において、CPU101は、入力画像データ及び遅延画像データを入力する。ステップS1003において、CPU101は、ステップS204にて検出された動きベクトルマップMV_MAP(p、q)及びx方向動きベクトルマップサイズP、y方向動きベクトルマップサイズQを入力する。
【0101】
ステップS1004において、CPU101は、サブフローチャート(4)で用いる内部パラメータを初期化する。本実施形態では、x方向動きベクトルマップポインタp、y方向動きベクトルマップポインタqが内部パラメータである。それぞれp=−1、q=−1と初期化する。
【0102】
ステップS1005において、CPU101は、q=q+1によりy方向動きベクトルマップポインタqを更新する。ステップS1006において、CPU101は、y方向動きベクトルマップポインタqがq<Qの条件(繰返し条件(1))を満たしているかどうかを判断する。満たしている場合、ステップS1007へ処理を進める。一方、満たしていない場合、ステップS1012へ処理を進める。
【0103】
ステップS1007において、CPU101は、p=p+1により、x方向動きベクトルマップポインタpを更新する。ステップS1008において、CPU101は、x方向動きベクトルマップポインタpがp<Pの条件(繰返し条件(2))を満たしているかどうかを判断する。満たしている場合、ステップS1009へ処理を進める。一方、満たしていない場合、ステップS1006へ処理を進める。
【0104】
ステップS1009において、CPU101は、動きベクトルマップMV_MAP(p,q)から動きベクトルMV(x2,y2,Δx1,Δy1)を取得する。ステップS1010において、CPU101は、遅延画像データからブロック503(第6のブロック)を取得する。ブロック503の遅延画像探索位置502の座標値(x0,y0)は式5により算出される。ステップS1011において、CPU101は、入力画像データからブロック505(第5のブロック)を取得する。ブロック505の入力画像探索位置504の座標値(x1,y1)は式6により算出される。
【0105】
【数5】
【0106】
【数6】
【0107】
ここで、ステップS1010、ステップS1011の処理で用いられる動きベクトルMV(x2,y2,Δx1,Δy1)に応じた適応処理について補足説明する。
【0108】
ステップS204にて、図8のフローチャートに示す画像拡大処理の後に動きベクトル検出を行った場合、動きベクトルは整数画素精度又はサブピクセル精度で検出される。同様に、図9のフローチャートに示す本来の探索基準位置から離れた画素位置を新たな探索基準位置として用いる動きベクトル検出を行った場合、動きベクトルは整数画素精度又はサブピクセル精度で検出される。
【0109】
このため、式5にて算出されるブロック503の遅延画像探索位置502の座標値(x0,y0)及び式6にて算出されるブロック505の入力画像探索位置504の座標値(x1,y1)は小数値を含む可能性がある。座標値(x0,y0)及び座標値(x1,y1)が小数値を含む場合、既存の画素を用いて、小数精度の画素位置の画素を補間する。
【0110】
動きベクトルMV(x2,y2,Δx1,Δy1)において、x方向動きベクトルΔx1の整数部Δx1_int、小数部をΔx1_decとすると、Δx1=Δx1_int+Δx1_decと表すことができる。同様に、y方向動きベクトルΔy1の整数部Δy1_int、小数部をΔy1_decとすると、Δy1=Δy1_int+Δy1_decと表すことができる。
【0111】
このとき、補間画素位置(x5,y5)は、
x5=(1−Δx1_dec)*Δx1_int+Δx1_dec*(Δx1_int+1)
y5=(1−Δy1_dec)*Δy1_int+Δy1_dec*(Δy1_int+1)
と算出される。
以上がステップS1010、ステップS1011の処理で用いられる動きベクトルMV(x2,y2,Δx1,Δy1)に応じた適応処理についての補足説明である。
【0112】
ステップS1012において、CPU101は、式7より、ブロック503及びブロック505を用いて、座標値(x2,y2)の探索基準位置500を基準とする補間画像データのブロック(第7のブロック)を生成する。式7において、h(x,y)はブロック501の座標値(x、y)における画素値である。また、f(x,y)はブロック503の座標値(x,y)における画素値である。また、g(x,y)はブロック505の座標値(x,y)における画素値である。m、nはオフセット値であり、0≦m<M、0≦n<Nの範囲をとる。以上がステップS205にて、フレーム時刻t=t2=t0+Anにおける補間画像データ302を生成する処理の詳細説明である。
【0113】
【数7】
【0114】
ステップS206において、CPU101は、遅延画像データ、補間時刻比率A=1/3にて生成された補間画像データ、補間時刻比率A=2/3にて生成された補間画像データをこの順番で出力する。以上がサブフローチャート(4)の説明である。
【0115】
以上のように、第1の実施形態によれば、動き検出技術及び動き補償技術を用いたフレームレート変換処理において、従来の技術では成しえなかった任意の倍数のフレームレート変換処理が可能となる。
【0116】
また、従来の技術よりも高精度な動きベクトルの探索を可能とすることにより、動き補償処理において生成される補間画像データの画質を向上させ、ユーザに好適な映像を提供することが可能になる。
【0117】
なお、第1の実施形態において、画像データの色空間はYUVであったが、本発明の本質は画像データの色空間を限定するものではなく、RGBでもLabでもHSLでもよい。また、1画素当たりのビット精度は8ビットに限らず何ビットでもよい。同様にビットレンジも負の値を取りうることも可能である。
【0118】
なお、第1の実施形態において、補間時刻比率Aは、プログラムの一部として動き検出・動き補償プログラム内に記録されているものとして扱ったが、本発明の本質はこれに限定することなく、入力装置105から入力することも可能である。
【0119】
また、第1の実施形態において、動きベクトルマップMV_MAP(p、q)の要素数は、動きベクトル検出処理の処理単位となるブロックサイズに依存して1296個であった。しかしながら、本発明の本質はこれに限定することなく、動きベクトルマップMV_MAP(p、q)の要素数は、動きベクトル検出処理の処理単位となるブロックサイズに依存させる必要はない。即ち、任意の要素数を持つ動きベクトルマップMV_MAP(p、q)を生成するように、画像データ中の任意の座標値を探索基準位置として、動きベクトル検出処理を行ってもよい。
【0120】
また、第1の実施形態において、ブロックサイズは、M=40、N=40としたが、本発明の本質はこれに限定することなく、画像データサイズ以下であれば、MとNを如何様にも設定してよい。
【0121】
また、第1の実施形態において、ブロック501の探索基準位置500を用いたブロック位置定義方法として、ブロック501の上左端の座標値が探索基準位置500に一致するように定義した。しかしながら、本発明の本質はこれに限定することなく、ブロック501の重心の座標値が探索基準位置500に一致するように定義してもよい。また、ブロック501の重心の座標値からある一定のベクトルだけ離れた点が探索基準位置500に一致するように定義してもよい。ブロック503の遅延画像探索位置502を用いたブロック位置の定義方法についても、ブロック505の入力画像探索位置504を用いたブロック位置の定義方法についても同様である。
【0122】
また、第1の実施形態において、x方向探索範囲S_SIZE_X=20、y方向探索範囲S_SIZE_Y=20としたが、本発明の本質はこれに限定することなく、S_SIZE_XとS_SIZE_Yとを如何様にも設定してよい。
【0123】
次に、本発明の第2の実施形態について説明する。図11は、本発明の第2の実施形態に係る画像処理装置の構成を示す図であり、本発明をテレビに適用した場合の実施形態を示している。
【0124】
1101は、画像処理装置である。放送波はアンテナ1102、1103、1104等を経て受信部1105の地上波デジタルチューナ部1106、衛星デジタルチューナ部1108、アナログチューナ部1110で受信される。受信された放送波は、デジタルデコード部1107、1109、アナログデコード部1111でオーディオ信号やビデオ信号に復号される。I/F部1123は、外部入出力装置1118、リモコン1119、SW(スイッチ)1120、環境光1121、SDカード等1122の夫々に対応して、オーディオ・ビデオ入出力I/F1124、リモートI/F1125、操作I/F1126、環境光I/F1127、外部メディア1128を備える。また、I/F部1123は、チャンネル選択、ボリューム調整、画質補正等の各種入出力制御信号のインタフェースを司る。
【0125】
信号処理部1112は、オーディオ処理部1113、ビデオ処理部1115、OSD処理部1114を備え、オーディオ、ビデオ、OSD(オン・スクリーン・ディスプレイ)等の処理を実行する。オーディオ駆動部1116は、オーディオ信号を音としてスピーカ1135から出力し、ビデオ駆動部1117は、ビデオ信号を動画像としてパネル1136にて表示する。
【0126】
CPU1130は、ROM1131に格納されているプログラムを実行して画像処理装置1101を制御する。RAM1132は、CPU1130の主メモリ、ワークエリア等として機能する。なお、CPU1130、ROM1131、RAM1132及び信号処理部1112は、データバス1129を介して接続されている。電源部1134は、電源プラグ1133を介して外部から電源を供給する。
【0127】
図12は、ビデオ処理部1115の構成を示す図である。以下、図12を参照しながら、ビデオ処理部1115の構成について説明する。なお、第1の実施形態と重複する内容については、第1の実施形態において説明した内容に準ずるものとして、その説明を省略する。
【0128】
1200はフレームメモリ部である。1201は補間フレーム時刻設定部である。1202は探索条件設定部である。1203は動きベクトル検出部である。1204は補間画像生成部である。1205は画像出力部である。
【0129】
フレームメモリ部1200は、1フレームずつ画像データを入力するとともに、入力した画像データを保持するメモリを有する。フレームメモリ部1200は、入力した画像データと、メモリにて1フレーム時間遅延させた画像データとの2つの時刻の画像データを出力する。以下では、入力して即座に出力する画像データを入力画像データ、遅延した後に出力する画像データを遅延画像データと称す。
【0130】
補間フレーム時刻設定部1201は、第1の実施形態で説明した補間時刻比率A及び補間倍率Bを出力する。本実施形態においても、A=1/3,2/3、B=3である。但し、補間時刻比率Aによる処理手順に差はないため、以降の動きベクトル検出部1203及び補間画像生成部1204の処理説明ではA=1/3と設定した場合について説明する。
【0131】
なお、補間フレーム時刻設定部1201の実装形態は、本発明において限定しない。本実施形態では、補間フレーム時刻設定部1201はROM1131に記録されており、画像処理装置1101が起動されると同時にビデオ処理部1115に読み込まれるものとする。
【0132】
探索条件設定部1202は、第1の実施形態で説明した図5における探索基準位置500の座標値(x2,y2)を取得する。また、探索条件設定部1202は、x方向ブロックサイズM、y方向ブロックサイズN、x方向探索範囲S_SIZE_X、y方向探索範囲S_SIZE_Yを入力する。第1の実施形態と同様に、M=40、N=40、S_SIZE_X=20、S_SIZE_Y=20である。
【0133】
なお、探索条件設定部1202の実装形態は、本発明において限定しない。本実施形態では、探索条件設定部1202は、ROM1131に記録されており、画像処理装置1101が起動されると同時にビデオ処理部1115に読み込まれるものとする。
【0134】
動きベクトル検出部1203は、フレームメモリ部1200から入力画像データ及び遅延画像データを入力するとともに、補間フレーム時刻設定部1201から補間時刻比率A及び補間倍率Bを入力する。また、動きベクトル検出部1203は、探索条件設定部1202から探索基準位置500の座標値(x2,y2)、x方向ブロックサイズM、y方向ブロックサイズN、x方向探索範囲S_SIZE_X及びy方向探索範囲S_SIZE_Yを入力する。動きベクトル検出部1203は、これらを用いて動きベクトルマップMV_MAP(p、q)を生成する。
【0135】
第1の実施形態と同様に、本実施形態における個々の動きベクトルMV(x,y,Δx,Δy)の検出方法は第1の実施形態と同様である。そのため、以下では1つの動きベクトルMV(x,y,Δx,Δy)の検出方法について説明することで、動きベクトルマップMV_MAP(p,q)の生成処理の説明の代わりとする。
【0136】
図13は、動きベクトル検出部1203の構成を示す図である。以下、図13を参照しながら、動きベクトル検出部1203の構成について説明する。
【0137】
1300は補間時刻比率入力部(1)である。1301は探索条件入力部である。1302は内部パラメータ初期化部(1)である。1303は探索用動きベクトル更新部である。1304は遅延画像データ参照部(1)である。1305は入力画像データ参照部(1)である。1306は相関演算部である。1307は動きベクトル更新部である。1308は動きベクトルマップ出力部である。
【0138】
補間時刻比率入力部(1)1300は、補間フレーム時刻設定部1201から補間時刻比率A及び補間倍率Bを入力する。探索条件入力部1301は、探索条件設定部1202から探索基準位置500の座標値(x2,y2)、x方向ブロックサイズM、y方向ブロックサイズN、x方向探索範囲S_SIZE_X及びy方向探索範囲S_SIZE_Yを入力する。
【0139】
内部パラメータ初期化部(1)1302は、動きベクトル検出部1203で用いる内部パラメータを初期化する。本実施形態では、x方向動きベクトルΔx1、y方向動きベクトルΔy1、x方向探索動きベクトルΔx0、y方向探索動きベクトルΔy0、最大相関係数値R_MAXが内部パラメータである。
【0140】
内部パラメータ初期化部(1)1302は、それぞれΔx1=0、Δy1=0、Δx0=−S_SIZE_X、Δy0=−S_SIZE_Y、R_MAX=0と初期化する。x方向探索範囲S_SIZE_X及びy方向探索範囲S_SIZE_Yは、探索条件入力部1301より入力される。探索用動きベクトル更新部1303は、以下の条件(1)及び条件(2)を判定することで、x方向探索動きベクトルΔx0、y方向探索動きベクトルΔy0を更新する。
【0141】
探索用動きベクトル更新部1303は、y方向探索動きベクトルΔy0がΔy0<S_SIZE_Yの条件(1)を満たしているかどうかを判断する。条件(1)を満たしている場合、探索用動きベクトル更新部1303は、補間倍率Bを用いて、Δy0=Δy0+Bによりy方向探索動きベクトルΔy0を更新する。一方、条件(1)を満たしていない場合、探索用動きベクトル更新部1303は、動きベクトルマップ出力部1308へ制御信号を送信する。
【0142】
条件(1)を満たしている場合、探索用動きベクトル更新部1303は、y方向探索動きベクトルΔy0を更新した後、x方向探索動きベクトルΔx0がΔx0<S_SIZE_Xの条件(2)を満たしているかどうかを判断する。条件(2)を満たしている場合、探索用動きベクトル更新部1303は、補間倍率Bを用いて、Δx0=Δx0+Bによりx方向探索動きベクトルΔx0を更新する。一方、条件(2)を満たしていない場合、探索用動きベクトル更新部1303は、条件(1)の判断を再度行う。
【0143】
遅延画像データ参照部(1)1304は、フレームメモリ部1200に記憶されている遅延画像データを参照してブロック503を取得する。具体的には、遅延画像データ参照部(1)1304は、x方向探索動きベクトルΔx0及びy方向探索動きベクトルΔy0を用いて、式1により、ブロック503の遅延画像探索位置502の座標値(x0,y0)を算出し、ブロック503を取得する。
【0144】
入力画像データ参照部(1)1305は、フレームメモリ部1200に記憶されている入力画像データを参照してブロック505を取得する。具体的には、入力画像データ参照部(1)1305は、x方向探索動きベクトルΔx0及びy方向探索動きベクトルΔy0を用いて、式2により、ブロック505の入力画像探索位置504の座標値(x1,y1)を算出し、ブロック505を取得する。
【0145】
相関演算部1306は、ブロック503とブロック505との相関係数Rを算出する。相関係数Rは式3より求められる。式3において、f(x,y)はブロック503の座標値(x,y)における画素値である。また、g(x,y)はブロック505の座標値(x,y)における画素値である。なお、相関係数Rの代わりに差分絶対値和SADを算出してもよい。差分絶対値和SADは、ブロック503とブロック505とを用いて式4により算出することができる。
【0146】
動きベクトル更新部1307は、相関演算部1306より入力される相関係数Rと、最大相関係数値R_MAXとの大小比較を行う。R>R_MAXであるならば、動きベクトル更新部1307は、相関係数Rを用いて、R_MAX=Rにより最大相関係数値R_MAXを更新する。
【0147】
なお、動きベクトル更新部1307は、相関演算部1306で差分絶対値和SADを算出した場合、差分絶対値和SADと最大相関係数値R_MAXとの大小比較を行う。SAD≦R_MAXであるならば、動きベクトル更新部1307は、差分絶対値和SADを用いて、R_MAX=SADにより最大相関係数値R_MAXを更新する。
【0148】
動きベクトルマップ出力部1308は、探索用動きベクトル更新部1303から制御信号が入力されると、探索基準位置500の座標値(x2,y2)、x方向動きベクトルΔx1及びy方向動きベクトルΔy1から、動きベクトルMV(x2,y2,Δx1,Δy1)を生成する。
【0149】
x方向動きベクトルΔx1及びy方向動きベクトルΔy1は、動きベクトル更新部1307より入力されるx方向探索動きベクトルΔx0及びy方向探索動きベクトルΔy0を用いて、Δx1=Δx0、Δy1=Δy0とすることで算出される。
【0150】
全てのブロックについて動きベクトルMV(x2,y2,Δx1,Δy1)を生成することで、動きベクトルマップMV_MAP(p,q)の生成が完了する。動きベクトルマップ出力部1308は、動きベクトルマップMV_MAP(p,q)を生成した段階で動きベクトルマップMV_MAP(p,q)を出力する。
【0151】
補間画像生成部1204は、フレームメモリ部1200から入力画像データ及び遅延画像データを入力する。また、補間画像生成部1204は、補間フレーム時刻設定部1201から補間時刻比率A、補間倍率Bを入力する。さらに、補間画像生成部1204は、動きベクトル検出部1203から動きベクトルマップMV_MAP(p,q)及びx方向動きベクトルマップサイズP、y方向動きベクトルマップサイズQを入力する。補間画像生成部1204は、これらを用いて補間画像データを生成する。
【0152】
図14は、補間画像生成部1204の構成を示す図である。以下、図14を参照しながら、補間画像生成部124について説明する。
【0153】
1400は補間時刻比率入力部(2)である。1401は動きベクトルマップ入力部である。1402は内部パラメータ初期化部(2)である。1403は動きベクトル更新部である。1404は遅延画像データ参照部(2)である。1405は入力画像データ参照部(2)である。1406は補間ブロック画像生成部である。1407は補間画像出力部である。
【0154】
補間時刻比率入力部(2)1400は、補間フレーム時刻設定部1201から補間時刻比率A及び補間倍率Bを入力する。動きベクトルマップ入力部1401は、動きベクトル検出部1203から動きベクトルマップMV_MAP(p,q)及びx方向動きベクトルマップサイズP、y方向動きベクトルマップサイズQを入力する。
【0155】
内部パラメータ初期化部(2)1402は、補間画像生成部1204で用いる内部パラメータを初期化する。本実施形態では、x方向動きベクトルマップポインタp、y方向動きベクトルマップポインタqが内部パラメータである。それぞれp=−1、q=−1と初期化する。動きベクトル更新部1403は、動きベクトルマップMV_MAP(p,q)から動きベクトルMV(x2,y2,Δx1,Δy1)を取得する。
【0156】
動きベクトルマップMV_MAP(p,q)には、PQ個の動きベクトルがマッピングされている。これを個々に参照するため、動きベクトル更新部1403は、x方向動きベクトルマップポインタp及びy方向動きベクトルマップポインタqを以下に説明するように順次更新して、動きベクトルMV(x2,y2,Δx1,Δy1)を取得する。
【0157】
動きベクトル更新部1403は、以下の条件(3)及び条件(4)を判定することで、x方向動きベクトルマップポインタp及びy方向動きベクトルマップポインタqを更新する。まず、動きベクトル更新部1403は、更新処理(1)として、q=q+1によりy方向動きベクトルマップポインタqを更新する。その後、動きベクトル更新部1403は、y方向動きベクトルマップポインタqがq<Qの条件(3)を満たしているかどうかを判断する。
【0158】
条件(3)を満たしている場合、動きベクトル更新部1403は、更新処理(2)として、p=p+1によりx方向動きベクトルマップポインタpを更新する。一方、条件(3)を満たしていない場合、動きベクトル更新部1403は、補間画像生成部1407へ制御信号を送信する。更新処理(2)の後、動きベクトル更新部1403は、x方向動きベクトルマップポインタpがp<Pの条件(4)を満たしているかどうかを判断する。条件(4)を満たしている場合、動きベクトル更新部1403は、動きベクトルMV(x2,y2,Δx1,Δy1)=MV_MAP(p,q)を取得する。一方、条件(4)を満たしていない場合、動きベクトル更新部1403は、更新処理(1)を再度行う。
【0159】
遅延画像データ参照部(2)1404は、フレームメモリ部1200に記憶されている遅延画像データを参照してブロック503を取得する。具体的には、遅延画像データ参照部(2)1404は、式5によりx方向探索動きベクトルΔx0及びy方向探索動きベクトルΔy0を用いてブロック503の遅延画像探索位置502の座標値(x0,y0)を算出し、ブロック503を取得する。
【0160】
入力画像データ参照部(2)1405は、フレームメモリ部1200に記憶されている入力画像データを参照してブロック505を取得する。具体的には、入力画像データ参照部(2)1405は、式6によりx方向探索動きベクトルΔx0及びy方向探索動きベクトルΔy0を用いてブロック505の遅延画像探索位置504の座標値(x1,y1)を算出し、ブロック505を取得する。
【0161】
補間ブロック画像生成部1406は、式7より、ブロック503及びブロック505を用いて、座標値(x2,y2)の探索基準位置500を基準とする補間画像データを生成する。式7において、h(x,y)はブロック501の座標値(x,y)における画素値である。また、f(x,y)はブロック503の座標値(x,y)における画素値である。また、g(x,y)はブロック505の座標値(x,y)における画素値である。m、nはオフセット値であり、0≦m<M、0≦n<Nの範囲をとる。補間画像出力部1407は、動きベクトル更新部1403から入力される制御信号を受けて、補間ブロック画像生成部1406が生成した補間画像データを出力する。
【0162】
画像出力部1205は、フレームメモリ部1200から遅延画像データを入力する。また、補間画像生成部1204からA=1/3における補間画像データ及びA=2/3における補間画像データを入力する。これらを遅延画像データ、A=1/3における補間画像データ、A=2/3における補間画像データ、の順番で出力する。
【0163】
以上のように、第2の実施形態によれば、動き検出技術及び動き補償技術を用いたフレームレート変換処理において、従来の技術では成しえなかった任意の倍数のフレームレート変換処理が可能となる。
【0164】
また、従来の技術よりも高精度な動きベクトルの探索を可能とすることにより、動き補償処理において生成される補間画像データの画質を向上させ、ユーザに好適な映像を提供することが可能になる。
【0165】
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。
【符号の説明】
【0166】
101:CPU、102:ROM、103:RAM、104:ネットワークI/F、105:入力装置、106:出力装置、107:外部記憶装置
【特許請求の範囲】
【請求項1】
第1の時刻に入力される入力画像データと、前記第1の時刻よりも所定のフレーム時間だけ遡った第2の時刻に入力される遅延画像データとに基づいて、前記入力画像データと前記遅延画像データとの間に、前記第1の時刻から前記所定のフレーム時間よりも短い時間だけ遡った第3の時刻における補間画像データを生成するための動きベクトルを算出可能な画像処理装置であって、
前記補間画像データに定義された基準位置に対応する前記入力画像データ内における基準位置を基準として、前記第1の時刻から前記第3の時刻を減じた値である第1の差分値を前記所定のフレーム時間で除した値である第1の時刻比を、空間のずらし量を示す第1の変数に対して乗じた位置に存在する第1のブロックを前記入力画像データから取得するとともに、前記補間画像データに定義された前記基準位置に対応する前記遅延画像データ内における基準位置を基準として、前記第3の時刻から前記第2の時刻を減じた値である第2の差分値を前記所定のフレーム時間で除した値である第2の時刻比を、前記第1の変数に対して乗じた位置に存在する第2のブロックを前記遅延画像データから取得する第1の取得手段と、
前記第1の取得手段により取得された第1のブロックと第2のブロックとの相関性を算出する第1の算出手段と、
前記第1の算出手段により算出された相関性のうち、所定の条件を満たす相関性にある第1のブロックと第2のブロックとが取得された際の前記第1の変数に基づいて、前記補間画像データにおける動きベクトルを算出する第2の算出手段とを有することを特徴とする画像処理装置。
【請求項2】
前記入力画像データ及び前記遅延画像データを拡大する拡大手段を更に有し、
前記第1の取得手段は、前記拡大手段により拡大された前記入力画像データから第1のブロックを取得するとともに、前記拡大手段により拡大された前記遅延画像データから第2のブロックを取得することを特徴とする請求項1に記載の画像処理装置。
【請求項3】
前記拡大手段は、前記補間画像データが生成される数に応じた倍率で前記入力画像データ及び前記遅延画像データを拡大することを特徴とする請求項2に記載の画像処理装置。
【請求項4】
前記第2の算出手段により前記動きベクトルが算出された際の前記第1の変数に基づく空間のずらし量を示す第2の変数を基準位置として、前記入力画像データから第3のブロックを取得するとともに、前記遅延画像データから第4のブロックを取得する第2の取得手段と、
前記第2の取得手段により取得された第3のブロックと第4のブロックとの相関性を算出する第3の算出手段と、
前記第3の算出手段により算出された相関性のうち、所定の条件を満たす相関性にある第3のブロックと第4のブロックとが取得された際の前記第2の変数に基づいて、前記動きベクトルを更新する更新手段とを有することを特徴とする請求項1に記載の画像処理装置。
【請求項5】
前記所定の条件を満たす相関性とは、前記第1の算出手段により算出された相関性のうち、最も高い相関性であることを特徴とする請求項1又は4に記載の画像処理装置。
【請求項6】
前記入力画像データ内における前記基準位置を基準として、前記動きベクトルに対して前記第1の時刻比を乗じた位置にある第5のブロックと、前記遅延画像データ内における前記基準位置を基準として、前記動きベクトルに前記第2の時刻比を乗じた位置にある第6のブロックとに基づいて、前記補間画像データにおける第7のブロックを生成する生成手段を更に有することを特徴とする請求項1乃至5の何れか1項に記載の画像処理装置。
【請求項7】
第1の時刻に入力される入力画像データと、前記第1の時刻よりも所定のフレーム時間だけ遡った第2の時刻に入力される遅延画像データとに基づいて、前記入力画像データと前記遅延画像データとの間に、前記第1の時刻から前記所定のフレーム時間よりも短い時間だけ遡った第3の時刻における補間画像データを生成するための動きベクトルを算出可能な画像処理装置によって実行される画像処理方法であって、
前記補間画像データに定義された基準位置に対応する前記入力画像データ内における基準位置を基準として、前記第1の時刻から前記第3の時刻を減じた値である第1の差分値を前記所定のフレーム時間で除した値である第1の時刻比を、空間のずらし量を示す第1の変数に対して乗じた位置に存在する第1のブロックを前記入力画像データから取得するとともに、前記補間画像データに定義された前記基準位置に対応する前記遅延画像データ内における基準位置を基準として、前記第3の時刻から前記第2の時刻を減じた値である第2の差分値を前記所定のフレーム時間で除した値である第2の時刻比を、前記第1の変数に対して乗じた位置に存在する第2のブロックを前記遅延画像データから取得する取得ステップと、
前記取得ステップにより取得された第1のブロックと第2のブロックとの相関性を算出する第1の算出ステップと、
前記第1の算出ステップにより算出された相関性のうち、所定の条件を満たす相関性にある第1のブロックと第2のブロックとが取得された際の前記第1の変数に基づいて、前記補間画像データにおける動きベクトルを算出する第2の算出ステップとを有することを特徴とする画像処理方法。
【請求項8】
第1の時刻に入力される入力画像データと、前記第1の時刻よりも所定のフレーム時間だけ遡った第2の時刻に入力される遅延画像データとに基づいて、前記入力画像データと前記遅延画像データとの間に、前記第1の時刻から前記所定のフレーム時間よりも短い時間だけ遡った第3の時刻における補間画像データを生成するための動きベクトルを算出可能な画像処理装置によって実行される画像処理方法をコンピュータに実行させるためのプログラムであって、
前記補間画像データに定義された基準位置に対応する前記入力画像データ内における基準位置を基準として、前記第1の時刻から前記第3の時刻を減じた値である第1の差分値を前記所定のフレーム時間で除した値である第1の時刻比を、空間のずらし量を示す第1の変数に対して乗じた位置に存在する第1のブロックを前記入力画像データから取得するとともに、前記補間画像データに定義された前記基準位置に対応する前記遅延画像データ内における基準位置を基準として、前記第3の時刻から前記第2の時刻を減じた値である第2の差分値を前記所定のフレーム時間で除した値である第2の時刻比を、前記第1の変数に対して乗じた位置に存在する第2のブロックを前記遅延画像データから取得する取得ステップと、
前記取得ステップにより取得された第1のブロックと第2のブロックとの相関性を算出する第1の算出ステップと、
前記第1の算出ステップにより算出された相関性のうち、所定の条件を満たす相関性にある第1のブロックと第2のブロックとが取得された際の前記第1の変数に基づいて、前記補間画像データにおける動きベクトルを算出する第2の算出ステップとをコンピュータに実行させるためのプログラム。
【請求項1】
第1の時刻に入力される入力画像データと、前記第1の時刻よりも所定のフレーム時間だけ遡った第2の時刻に入力される遅延画像データとに基づいて、前記入力画像データと前記遅延画像データとの間に、前記第1の時刻から前記所定のフレーム時間よりも短い時間だけ遡った第3の時刻における補間画像データを生成するための動きベクトルを算出可能な画像処理装置であって、
前記補間画像データに定義された基準位置に対応する前記入力画像データ内における基準位置を基準として、前記第1の時刻から前記第3の時刻を減じた値である第1の差分値を前記所定のフレーム時間で除した値である第1の時刻比を、空間のずらし量を示す第1の変数に対して乗じた位置に存在する第1のブロックを前記入力画像データから取得するとともに、前記補間画像データに定義された前記基準位置に対応する前記遅延画像データ内における基準位置を基準として、前記第3の時刻から前記第2の時刻を減じた値である第2の差分値を前記所定のフレーム時間で除した値である第2の時刻比を、前記第1の変数に対して乗じた位置に存在する第2のブロックを前記遅延画像データから取得する第1の取得手段と、
前記第1の取得手段により取得された第1のブロックと第2のブロックとの相関性を算出する第1の算出手段と、
前記第1の算出手段により算出された相関性のうち、所定の条件を満たす相関性にある第1のブロックと第2のブロックとが取得された際の前記第1の変数に基づいて、前記補間画像データにおける動きベクトルを算出する第2の算出手段とを有することを特徴とする画像処理装置。
【請求項2】
前記入力画像データ及び前記遅延画像データを拡大する拡大手段を更に有し、
前記第1の取得手段は、前記拡大手段により拡大された前記入力画像データから第1のブロックを取得するとともに、前記拡大手段により拡大された前記遅延画像データから第2のブロックを取得することを特徴とする請求項1に記載の画像処理装置。
【請求項3】
前記拡大手段は、前記補間画像データが生成される数に応じた倍率で前記入力画像データ及び前記遅延画像データを拡大することを特徴とする請求項2に記載の画像処理装置。
【請求項4】
前記第2の算出手段により前記動きベクトルが算出された際の前記第1の変数に基づく空間のずらし量を示す第2の変数を基準位置として、前記入力画像データから第3のブロックを取得するとともに、前記遅延画像データから第4のブロックを取得する第2の取得手段と、
前記第2の取得手段により取得された第3のブロックと第4のブロックとの相関性を算出する第3の算出手段と、
前記第3の算出手段により算出された相関性のうち、所定の条件を満たす相関性にある第3のブロックと第4のブロックとが取得された際の前記第2の変数に基づいて、前記動きベクトルを更新する更新手段とを有することを特徴とする請求項1に記載の画像処理装置。
【請求項5】
前記所定の条件を満たす相関性とは、前記第1の算出手段により算出された相関性のうち、最も高い相関性であることを特徴とする請求項1又は4に記載の画像処理装置。
【請求項6】
前記入力画像データ内における前記基準位置を基準として、前記動きベクトルに対して前記第1の時刻比を乗じた位置にある第5のブロックと、前記遅延画像データ内における前記基準位置を基準として、前記動きベクトルに前記第2の時刻比を乗じた位置にある第6のブロックとに基づいて、前記補間画像データにおける第7のブロックを生成する生成手段を更に有することを特徴とする請求項1乃至5の何れか1項に記載の画像処理装置。
【請求項7】
第1の時刻に入力される入力画像データと、前記第1の時刻よりも所定のフレーム時間だけ遡った第2の時刻に入力される遅延画像データとに基づいて、前記入力画像データと前記遅延画像データとの間に、前記第1の時刻から前記所定のフレーム時間よりも短い時間だけ遡った第3の時刻における補間画像データを生成するための動きベクトルを算出可能な画像処理装置によって実行される画像処理方法であって、
前記補間画像データに定義された基準位置に対応する前記入力画像データ内における基準位置を基準として、前記第1の時刻から前記第3の時刻を減じた値である第1の差分値を前記所定のフレーム時間で除した値である第1の時刻比を、空間のずらし量を示す第1の変数に対して乗じた位置に存在する第1のブロックを前記入力画像データから取得するとともに、前記補間画像データに定義された前記基準位置に対応する前記遅延画像データ内における基準位置を基準として、前記第3の時刻から前記第2の時刻を減じた値である第2の差分値を前記所定のフレーム時間で除した値である第2の時刻比を、前記第1の変数に対して乗じた位置に存在する第2のブロックを前記遅延画像データから取得する取得ステップと、
前記取得ステップにより取得された第1のブロックと第2のブロックとの相関性を算出する第1の算出ステップと、
前記第1の算出ステップにより算出された相関性のうち、所定の条件を満たす相関性にある第1のブロックと第2のブロックとが取得された際の前記第1の変数に基づいて、前記補間画像データにおける動きベクトルを算出する第2の算出ステップとを有することを特徴とする画像処理方法。
【請求項8】
第1の時刻に入力される入力画像データと、前記第1の時刻よりも所定のフレーム時間だけ遡った第2の時刻に入力される遅延画像データとに基づいて、前記入力画像データと前記遅延画像データとの間に、前記第1の時刻から前記所定のフレーム時間よりも短い時間だけ遡った第3の時刻における補間画像データを生成するための動きベクトルを算出可能な画像処理装置によって実行される画像処理方法をコンピュータに実行させるためのプログラムであって、
前記補間画像データに定義された基準位置に対応する前記入力画像データ内における基準位置を基準として、前記第1の時刻から前記第3の時刻を減じた値である第1の差分値を前記所定のフレーム時間で除した値である第1の時刻比を、空間のずらし量を示す第1の変数に対して乗じた位置に存在する第1のブロックを前記入力画像データから取得するとともに、前記補間画像データに定義された前記基準位置に対応する前記遅延画像データ内における基準位置を基準として、前記第3の時刻から前記第2の時刻を減じた値である第2の差分値を前記所定のフレーム時間で除した値である第2の時刻比を、前記第1の変数に対して乗じた位置に存在する第2のブロックを前記遅延画像データから取得する取得ステップと、
前記取得ステップにより取得された第1のブロックと第2のブロックとの相関性を算出する第1の算出ステップと、
前記第1の算出ステップにより算出された相関性のうち、所定の条件を満たす相関性にある第1のブロックと第2のブロックとが取得された際の前記第1の変数に基づいて、前記補間画像データにおける動きベクトルを算出する第2の算出ステップとをコンピュータに実行させるためのプログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【公開番号】特開2012−235359(P2012−235359A)
【公開日】平成24年11月29日(2012.11.29)
【国際特許分類】
【出願番号】特願2011−103218(P2011−103218)
【出願日】平成23年5月2日(2011.5.2)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】
【公開日】平成24年11月29日(2012.11.29)
【国際特許分類】
【出願日】平成23年5月2日(2011.5.2)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】
[ Back to top ]