画像処理装置および画像処理方法
【課題】立体映像のフレームレート変換において、一方の眼用のフレームで動きベクトルが検出できない場合でも、立体感が損なわれることのない補間フレームを生成することのできる技術を提供する。
【解決手段】本発明の画像処理装置は、立体映像を構成する第1,第2映像のそれぞれから動きベクトルを検出する手段と、第1映像のフレームと対応する第2映像のフレームとの間の視差ベクトルを検出する手段と、第1,第2映像のうちの一方の映像のフレームに動きベクトルが検出されない非検出位置が存在する場合には、該非検出位置に対応する他方の映像のフレームに含まれる対応位置を視差ベクトルを用いて検出し、非検出位置に対して対応位置における他方の映像のフレームの動きベクトルを設定する補正を行う手段と、補正後の動きベクトルを用いて第1,第2映像のそれぞれに補間フレームを生成する手段と、を有する。
【解決手段】本発明の画像処理装置は、立体映像を構成する第1,第2映像のそれぞれから動きベクトルを検出する手段と、第1映像のフレームと対応する第2映像のフレームとの間の視差ベクトルを検出する手段と、第1,第2映像のうちの一方の映像のフレームに動きベクトルが検出されない非検出位置が存在する場合には、該非検出位置に対応する他方の映像のフレームに含まれる対応位置を視差ベクトルを用いて検出し、非検出位置に対して対応位置における他方の映像のフレームの動きベクトルを設定する補正を行う手段と、補正後の動きベクトルを用いて第1,第2映像のそれぞれに補間フレームを生成する手段と、を有する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は右眼用の映像と左眼用の映像を表示して立体映像を得る画像処理装置および画像処理方法に関するものである。
【背景技術】
【0002】
近年、立体映像の普及が進み、立体映像に対する画作りの必要性が高まってきている。その中でもフレーム数を増加させるフレームレート変換(以下FRC)は動画のなめらかさの向上やフリッカの抑制に有効であり、立体映像に対してもFRCを行うことが求められてきている。FRCでは、フレームの間に補間フレームを生成することでフレーム数が増加される。補間フレームを生成する方法としては、ベクトル補間がよく用いられる。ベクトル補間は、補間する2つのフレーム間の動きベクトルを求め、フレームの画素位置を動きベクトル量の1/2だけずらして補間フレームを生成する方法である(特許文献1)。立体映像のような多視点映像の補間フレームの生成方法は、例えば、特許文献2に開示されている。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開平3−263989号公報
【特許文献2】特開2009−3507号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、立体映像のFRCでは、或る被写体に対し、一方の眼用のフレームでは動きベクトルが検出され、他方の眼用のフレームでは動きベクトルが検出されないことがある。そのため、一方の眼用のフレームだけがベクトル補間されることにより、生成された補間フレームにおいて正しい立体画像を表示できず、立体感が損なわれてしまう課題があった。そして、特許文献2に開示の技術ではこの課題は解決されていない。
【0005】
本発明は、立体映像のフレームレート変換において、一方の眼用のフレームで動きベクトルが検出できない場合でも、立体感が損なわれることのない補間フレームを生成することのできる技術を提供することを目的とする。
【課題を解決するための手段】
【0006】
本発明の第1の態様は、立体映像を構成する第1映像と第2映像のそれぞれのフレーム間に補間フレームを生成する画像処理装置であって、前記第1映像を構成する時間的に連続する2つのフレーム及び前記第2映像を構成する時間的に連続する2つのフレームを用いて、各映像のフレーム間の動きベクトルを検出する動きベクトル検出手段と、前記第1映像を構成するフレームと当該フレームに対応する前記第2映像を構成するフレームとを用いて、当該2つのフレーム間の視差を表す視差ベクトルを検出する視差ベクトル検出手段と、前記第1映像と前記第2映像のうちの一方の映像のフレームに動きベクトルが検出されない非検出位置が存在する場合には、該非検出位置に対応する他方の映像のフレームに含まれる対応位置を前記視差ベクトルを用いて検出し、前記非検出位置に対して前記対応位置における前記他方の映像のフレームの動きベクトルを設定する補正を行う補正手段と、補正後の動きベクトルを用いて前記第1映像と前記第2映像のそれぞれに補間フレームを生成する補間フレーム生成手段と、を有することを特徴とする画像処理装置である。
【0007】
本発明の第2の態様は、立体映像を構成する第1映像と第2映像のそれぞれのフレーム
間に補間フレームを生成する画像処理装置であって、前記第1映像を構成する時間的に連続する2つのフレーム及び前記第2映像を構成する時間的に連続する2つのフレームを用いて、各映像のフレーム間の動きベクトルを検出する動きベクトル検出手段と、前記第1映像を構成するフレームと当該フレームに対応する前記第2映像を構成するフレームとを用いて、当該2つのフレーム間の視差を表す視差ベクトルを検出する視差ベクトル検出手段と、前記第1映像と前記第2映像のうちの一方の映像のフレームに動きベクトルが検出されない非検出位置が存在する場合には、当該非検出位置に対して大きさ0の動きベクトルを設定すると共に、当該非検出位置に対応する他方の映像のフレームに含まれる対応位置を前記視差ベクトルを用いて検出し、前記対応位置で検出された動きベクトルを大きさ0の動きベクトルに置き換える補正を行う補正手段と、補正後の動きベクトルを用いて前記第1映像と前記第2映像のそれぞれに補間フレームを生成する補間フレーム生成手段と、を有することを特徴とする画像処理装置である。
【0008】
本発明の第3の態様は、立体映像を構成する第1映像と第2映像のそれぞれのフレーム間に補間フレームを生成する画像処理装置により実行される画像処理方法であって、前記第1映像を構成する時間的に連続する2つのフレーム及び前記第2映像を構成する時間的に連続する2つのフレームを用いて、各映像のフレーム間の動きベクトルを検出するステップと、前記第1映像を構成するフレームと当該フレームに対応する前記第2映像を構成するフレームとを用いて、当該2つのフレーム間の視差を表す視差ベクトルを検出するステップと、前記第1映像と前記第2映像のうちの一方の映像のフレームに動きベクトルが検出されない非検出位置が存在する場合には、該非検出位置に対応する他方の映像のフレームに含まれる対応位置を前記視差ベクトルを用いて検出し、前記非検出位置に対して前記対応位置における前記他方の映像のフレームの動きベクトルを設定する補正を行うステップと、補正後の動きベクトルを用いて前記第1映像と前記第2映像のそれぞれに補間フレームを生成するステップと、を有することを特徴とする画像処理方法である。
【0009】
本発明の第4の態様は、立体映像を構成する第1映像と第2映像のそれぞれのフレーム間に補間フレームを生成する画像処理装置により実行される画像処理方法であって、前記第1映像を構成する時間的に連続する2つのフレーム及び前記第2映像を構成する時間的に連続する2つのフレームを用いて、各映像のフレーム間の動きベクトルを検出するステップと、前記第1映像を構成するフレームと当該フレームに対応する前記第2映像を構成するフレームとを用いて、当該2つのフレーム間の視差を表す視差ベクトルを検出するステップと、前記第1映像と前記第2映像のうちの一方の映像のフレームに動きベクトルが検出されない非検出位置が存在する場合には、当該非検出位置に対して大きさ0の動きベクトルを設定すると共に、当該非検出位置に対応する他方の映像のフレームに含まれる対応位置を前記視差ベクトルを用いて検出し、前記対応位置で検出された動きベクトルを大きさ0の動きベクトルに置き換える補正を行うステップと、補正後の動きベクトルを用いて前記第1映像と前記第2映像のそれぞれに補間フレームを生成するステップと、を有することを特徴とする画像処理方法である。
【発明の効果】
【0010】
本発明によれば、立体映像のフレームレート変換において、一方の眼用のフレームで動きベクトルが検出できない場合でも、立体感が損なわれることのない補間フレームを生成することができる。
【図面の簡単な説明】
【0011】
【図1】本実施例に係る画像処理装置の機能構成の一例を示すブロック図。
【図2】入力映像信号の一例を示す図。
【図3】出力映像信号の一例を示す図。
【図4】実施例1に係る補間フレーム生成部の機能構成の一例を示すブロック図。
【図5】ブロック分割の一例を示す図。
【図6】探索範囲の一例を示す図。
【図7】従来の補間フレームの生成方法の一例を示す図。
【図8】実施例1に係る補間フレームの生成方法の一例を示す図。
【図9】従来の補間フレームの生成方法の一例を示す図。
【図10】実施例1に係る補間フレームの生成方法の一例を示す図。
【図11】実施例2に係る補間フレーム生成部の機能構成の一例を示すブロック図。
【図12】実施例2に係る補間フレームの生成方法の一例を示す図。
【図13】実施例2に係る補間フレームの生成方法の一例を示す図。
【発明を実施するための形態】
【0012】
<実施例1>
本発明の実施例1に係る画像処理装置およびその画像処理装置により実行される画像処理方法について図面を参照して説明する。本実施例の画像処理装置は、立体映像を構成する第1映像と第2映像のそれぞれのフレーム間に補間フレームを生成する。
(全体構成)
まず、実施例1に係る画像処理装置の全体構成について説明する。図1は実施例1に係る画像処理装置の機能構成を示すブロック図である。図1に示すように、実施例1に係る画像処理装置は、フレームメモリ101と補間フレーム生成部102を有する。本実施例では、画像処理装置に入力される映像(入力映像信号)のフレームをF(n,p)、入力映像信号のフレーム間を補間する補間フレームをAF(n’,p)の形式で表記する。画像表示装置に入力される映像は、立体映像を構成する第1映像(例えば、右眼用の映像)と第2映像(例えば、左眼用の映像)である。ここでnはフレーム番号、pは左右どちらの眼用の映像に属しているかを表す。p=Lの場合、そのフレームが左眼用の映像のフレームであることを意味し、p=Rの場合、そのフレームが右眼用の映像のフレームであることを意味する。また、補間フレームAF(n’,p)は、n番目のフレームとn+1番目のフレームの間を補間する補間フレームを意味する。
【0013】
入力映像信号は、INからフレームメモリ101に入力される。入力映像信号では、図2に示すように、左眼用のフレームと右眼用のフレームが時間方向に交互に並んでいる(フレームシーケンシャル方式)。
フレームメモリ101は、入力映像信号を1フレームずつ記憶する。フレームメモリ101は、フレームF(n,L),F(n+1,L),F(n,R),F(n+1,R)を記憶すると、それらのフレームを補間フレーム生成部102に入力する。
【0014】
補間フレーム生成部102は、フレームF(n,L),F(n+1,L),F(n,R),F(n+1,R)から補間フレームAF(n’,L),AF(n’,R)を生成する。補間フレームの生成方法については後述する。生成された補間フレームAF(n’,L),AF(n’,R)は、フレームメモリ101に入力される。
フレームメモリ101は、入力された補間フレームAF(n’,L),AF(n’,R)を記憶する。そして、フレームメモリ101は、図3に示すように、入力映像信号のフレーム間に補間フレームが挿入された出力映像信号を出力する。
【0015】
(補間フレーム生成部の詳細)
次に、実施例1の補間フレーム生成部102の詳細について説明する。
図4は、補間フレーム生成部102の機能構成を示すブロック図である。図4に示すように、補間フレーム生成部102は、動きベクトル検出部401,402、視差ベクトル検出部403,404、動きベクトル補正部405,406,407,408、補間処理部409,410を有する。
【0016】
本実施例では、映像の動きを表す動きベクトルを{V(n,p)}及び{W(n,p)}、右目用の映像と左目用の映像の視差を表す視差ベクトルを{PV(n,p)}、補正後の動きベクトルを{AV(n,p)}及び{AW(n,p)}の形式で表記する。本実施例では、フレームを複数の分割領域に分割して、分割領域毎に動きベクトルや視差ベクトルを検出するものとするが、動きベクトルや視差ベクトルの検出方法はこれに限らない。例えば、画素位置毎に動きベクトルや視差ベクトルを検出してもよい。動きベクトル{V(n,p)},{W(n,p)},{PV(n,p)},{AV(n,p)},{AW(n,p)}は、p眼用のn番目のフレームを複数のブロックに分割して検出したブロック毎の動きベクトルを全て含むものとする。ブロック毎の動きベクトルの検出方法については後述する。各動きベクトルは、任意のブロックをblkとして、V(n,p,blk),W(n,p,blk),PV(n,p,blk),AV(n,p,blk),AW(n,p,blk)と記述する。視差ベクトルについても同様である。
【0017】
動きベクトル検出部401,402は、第1映像と第2映像のフレームから、それぞれ、動きベクトルを検出する(動きベクトル検出手段)。本実施例では、時間的に連続する2つのフレームA,Bを用いて、フレームA内の位置からフレームB内の対応する位置までのベクトルと、フレームB内の位置からフレームA内の対応する位置までのベクトルが、動きベクトルとして検出されるものとする。
動きベクトル検出部401は、フレームF(n,L)とフレームF(n+1,L)から、ブロックマッチング法により、動きベクトル{V(n,L)},{W(n+1,L)}を検出する。
具体的には、図5に示すようにn番目のフレームを複数のブロックに分割する。本実施例では、1つのブロックのサイズを16ピクセル×16ピクセル(垂直方向のピクセル数×水平方向のピクセル数)とする。次に、ブロック毎に、n+1番目のフレームから、ブロック内の画素値との差分絶対値和(Sum of Absolute Differences:SAD)が最小と
なる領域の位置を探索する。例えば、ブロック毎に、n+1番目のフレームにおける、ブロックの位置と同じ位置を基準とする所定の範囲(探索範囲)内で、選択する領域(ブロックと同じサイズの領域)を1ピクセルずつ移動させることにより、上記位置の探索を行う。本実施例では、探索範囲を160ピクセル×48ピクセルとする(図6)。そして、探索した位置でのSADが予め設けた閾値より小さい場合に、探索した位置とブロックの位置との差(ブロックの位置から探索した位置までのベクトル)を、そのブロックの動きベクトルとする。SADが閾値以上の場合には、そのブロックに対し“動きベクトル無し”と判定する。なお、ブロックの位置は、ブロックの中心位置など、ブロックの位置を特定することのできる位置であればどのような位置であってもよい。
この処理をn番目のフレームの全てのブロックに対して行い、ブロック毎の動きベクトルを検出する。これをV(n,L)と表記する。
同様に、動きベクトル検出部401は、n+1番目のフレームを複数のブロックに分割し、ブロック毎に、n番目のフレームからSADが最小となる領域の位置を探索して、ブロック毎の動きベクトルを検出する。これをW(n+1,L)と表記する。
【0018】
動きベクトル検出部402は、動きベクトル検出部401と同様の処理を行い、フレームF(n,R),F(n+1,R)から、動きベクトル{V(n,R)},{W(n+1,R)}を検出する。
【0019】
視差ベクトル検出部403は、フレームF(n,L),F(n,R)から、それらのフレーム間の視差を表す視差ベクトルを検出する(視差ベクトル検出手段)。視差ベクトルも動きベクトルと同様にブロックマッチング法を用いて検出する。
具体的には、フレームF(n,L)を複数のブロック(サイズが16ピクセル×16ピクセルのブロック)に分割し、ブロック毎に、フレームF(n,R)から、ブロック内の画素値とのSADが最小となる領域の位置を探索する。ただし、視差ベクトルは基本的に
垂直方向成分を持たないため、探索範囲は水平方向のみ広がりを有していればよい(例えば、160ピクセル×16ピクセル)。そして、動きベクトルと同様に閾値を設け、探索した位置でのSADが閾値より小さい場合には、探索した位置とブロックの位置との差を、そのブロックの視差ベクトルとし、SADが閾値よりも大きい場合には、そのブロックに対し“視差ベクトル無し”と判定する。
この処理を全てのブロックに対して行い、ブロック毎の視差ベクトルを検出する。これをPV(n,L)と表記する。
同様に、視差ベクトル検出部403は、フレームF(n,R)を複数のブロックに分割し、ブロック毎に、フレームF(n,L)からSADが最小となる領域の位置を探索して、ブロック毎の視差ベクトルを検出する。これをPV(n,R)と表記する。
【0020】
視差ベクトル検出部404は、視差ベクトル検出部403と同様に処理を行い、フレームF(n+1,L),F(n+1,R)から、n+1番目の右眼用と左眼用のフレーム間の視差ベクトル{PV(n+1,L)},{PV(n+1,R)}を検出する。
なお、本実施例では、動きベクトル検出部401,402でのブロックのサイズと、視差ベクトル検出部403,404でのブロックのサイズを等しいものとしたが、それらは互いに異なっていてもよい。例えば、動きベクトル検出部401,402でのブロックのサイズを8ピクセル×8ピクセルとし、視差ベクトル検出部403,404でのブロックのサイズを16ピクセル×16ピクセルとしてもよい。また、動きベクトルの有無、視差ベクトルの有無を判定するための閾値は、互いに等しくてもよいし、異なっていてもよい。
【0021】
動きベクトル補正部405〜408は、第1映像と第2映像のうちの一方の映像のフレームにおいて動きベクトルが検出されない非検出位置が存在する場合に、視差ベクトルを用いて、該非検出位置に対応する対応位置を他方の映像のフレームから検出する。そして、上記非検出位置に対し対応位置で検出された動きベクトルを設定する補正を行う。動きベクトル補正部405〜408が、本発明の補正手段に相当する。
【0022】
動きベクトル補正部405は、動きベクトル検出部401で検出した動きベクトル{V(n,L)}において、“動きベクトル無し”と判定されたブロックの動きベクトルの補正を行う。具体的には、フレームF(n,L)の“動きベクトル無し”と判定されたブロックblk1の動きベクトルを、そのブロックに対応する(同一のデータを持つ)フレームF(n,R)のブロックblk2の動きベクトルに置き換える。即ち、動きベクトルV(n,L,blk1)を動きベクトルV(n,R,blk2)に置き換える。
【0023】
さらに詳しく説明すると、フレームF(n,L)とフレームF(n,R)の間には視差があるため、同じ位置のブロックに同じ物体があるとは限らない。そこで、視差ベクトル検出部403で検出した視差ベクトル{PV(n,L)}を使用して、フレームF(n,L)のブロックがフレームF(n,R)のどのブロックに対応するかを求める。具体的には、フレームF(n,R)において、フレームF(n,L)のブロックblk1の位置から、視差ベクトルPV(n,L,blk1)分移動した位置に存在するブロックblk2が、ブロックblk1に対応するブロックとなる。
なお、移動先の位置がフレームF(n,R)のブロックの位置と完全に一致しない場合(移動先の位置を基準とするブロックと同じ大きさの領域が複数のブロックを跨いでいる場合)には、移動先の位置に応じて動きベクトルが算出される。具体的には、移動先の位置を基準とする領域が跨いでいる各ブロックの動きベクトルを該領域が重なっている面積の比で重み付け平均したものが対応するブロックの動きベクトルとされる。
また、動きベクトル補正部405は、動きベクトルも視差ベクトルも無いブロックに対して、0ベクトル(大きさが0のベクトル)を割り当てる。
【0024】
このようにして、“動きベクトル無し”と判定されたブロックの動きベクトルが補正され、動きベクトル{V(n,L)}が動きベクトル{AV(n,L)}とされる。また、動きベクトル{AV(n,L)}において、動きベクトル{V(n,R)}から取得した動きベクトルで置換された動きベクトルに対しては“補正有り”、そうでない動きベクトルに対しては“補正なし”の情報が付加される。
【0025】
動きベクトル補正部406は、動きベクトル補正部405と同様に、動きベクトル検出部401で検出した動きベクトル{W(n+1,L)}において、“動きベクトル無し”と判定されたブロックの動きベクトルの補正を行う。そして、動きベクトル{W(n+1,L)}を動きベクトル{AW(n+1,L)}とする。
動きベクトル補正部407は、動きベクトル補正部405と同様に、動きベクトル検出部402で検出した動きベクトル{V(n,R)}において、“動きベクトル無し”と判定されたブロックの動きベクトルの補正を行う。そして、動きベクトル{V(n,R)}を動きベクトル{AV(n,R)}とする。
動きベクトル補正部408は、動きベクトル補正部405と同様に、動きベクトル検出部402で検出した動きベクトル{W(n+1,R)}において、“動きベクトル無し”と判定されたブロックの動きベクトルの補正を行う。そして、動きベクトル{W(n+1,R)}を動きベクトル{AW(n+1,R)}とする。
【0026】
補間処理部409,410は、補正後の動きベクトルを用いて第1映像と第2映像のそれぞれに対しフレーム間を補間する補間フレームを生成する(補間フレーム生成手段)。本実施例では、フレーム内(フレームA,B内)の各画素を動きベクトルに基づいて補間フレーム内の位置に対応づけた後、補間フレーム内の位置毎に対応付けられた画素を用いて補間フレームの各画素が生成されるものとする。また、複数の画素が対応付けられた補間フレーム位置に対しては、複数の画素のうち、動きベクトルの検出結果が補正された位置の画素のみを用いて画素を生成するものとする。
【0027】
補間処理部409は、フレームF(n,L),F(n+1,L)と、補正後の動きベクトル{AV(n,L)},{AW(n+1,L)}を用いて補間フレームAF(n’,L)を生成する。
具体的には、補間フレームF(n’,L)に対し、フレームF(n,L)のブロックblk(画素群)を、そのブロックblkの位置から対応する動きベクトルAV(n,L,blk)の1/2だけ移動した位置に生成する。同様に、補間フレームF(n’,L)に対し、フレームF(n+1,L)のブロックblkを、そのブロックblkの位置から対応する動きベクトルAW(n+1,L,blk)の1/2だけ移動した位置に生成する。生成するブロック同士が重複する部分については、重複するブロックの画素値の平均値を1画素ずつ算出し、補間フレームF(n’,L)の画素値とする(平均化処理)。ただし、重複するブロックに、動きベクトル補正部405〜408で動きベクトルが補正された位置のブロックが含まれる場合には、上記平均化処理は行わず、該ブロックの画素値を優先して補間フレームF(n’,L)の画素値とする。動きベクトルが補正された位置のブロック同士が重複する場合には、重複するそれらのブロックの画素値の平均値を1画素ずつ算出し、補間フレームF(n’,L)の画素値とする。
補間フレームAF(n’,L)において、フレームF(n,L),F(n+1,L)のブロックが生成されなかった部分については、該部分と同じ位置のフレームF(n,L)とフレームF(n+1,L)の画素値の平均値を画素値とする。
【0028】
補間処理部410は、補間処理部409と同様に、フレームF(n,R),F(n+1,R)と、補正された動きベクトル{AV(n,R)},{AW(n+1,R)}とを用いて、補間フレームAF(n’,R)を生成する。
以上のようにして、実施例1では補間フレームが生成される。
【0029】
(補間フレーム生成部の動作)
次に、実施例1の補間フレーム生成部102の動作について例を挙げて説明する。
図7,8は、白い背景の上を黒い四角い物体(以後、単に“物体”と記載する)が右から左に動いてフレームアウトする場合の補間フレーム生成部102の動作を説明するための図である。図中(A)〜(D)は入力映像信号のフレーム、(E),(F)は補間フレームを表す。具体的には、(A)はフレームF(n,L)、(B)はフレームF(n,R)、(C)はフレームF(n+1,L)、(D)はフレームF(n+1,R)、(E)は補間フレームAF(n’,L)、(F)は補間フレームAF(n’,R)を表す。説明を簡略化するために、1つのフレームは10×6個のブロックに分割されるものとし、物体のサイズは丁度1つのブロックと同じサイズとする。また、動作の説明はこの黒い四角い物体に着目して行う。物体のあるブロックはB(n,p)の形式で表記する。
【0030】
図7,8においてフレームF(n,L)のブロックB(n,L)にある物体と、フレームF(n,R)のブロックB(n,R)にある物体は対応しており、立体映像としての視差を持っているので白い背景よりも浮き出て見える。物体は左に移動しており、フレームF(n,L)の次のフレームF(n+1,L)では、物体は、ブロックB(n+1,L)に位置する。また、フレームF(n+1,R)では、物体はフレームアウトしている。具体的には、物体は、フレーム外のブロックB(n+1,R)に位置し、映像信号(フレーム)には含まれなくなっている。
【0031】
本実施例に係る動作(補間フレームの生成方法)と従来の動作との差を明確にするために、まず、従来の動作について図7を用いて説明する。
従来の方法では、フレームF(n,L)とフレームF(n+1,L)の間では物体の動きベクトルが検出されるため、補間フレームAF(n’,L)のブロックB(n’,L)に物体が生成される。しかし、フレームF(n,R)とフレームF(n+1,R)の間では、フレームF(n+1,R)に物体がないため、物体の動きベクトルが検出されず、ベクトル補間が行えない。例えば、動きベクトルが検出されない場合に0ベクトルを用いるのであれば、補間フレームAF(n’,R)において、物体は、ブロックB(n,R)と同じ位置のブロックB(n’,R)に生成される。この場合、物体が本来生成されるべき位置に生成されないため、ブロックB(n’,L)とブロックB(n’,R)に生成された物体の視差は不正となり、立体感が損なわれてしまう。また、前後のフレームとの連続性も失われることになる。さらに、他の補間データ、例えば白の背景のデータの生成位置と、物体の生成位置とが重なると、重複位置の画素値は黒と白の画素値の平均値となるため、黒い四角い物体が灰色の四角い物体になってしまう。
【0032】
次に、本実施例に係る動作について図8を用いて説明する。本実施例によれば、上記問題を解決することができる。
フレームF(n,L)のブロックB(n,L)にある物体が、フレームF(n+1,L)から探索される。具体的には、ブロックB(n,L)内の画素値とのSADが最も小さく、且つ、閾値未満となる領域がフレームF(n+1,L)から探索される。その結果、ブロックB(n,L)内の画素値がブロックB(n+1,L)内の画素値と一致するため、動きベクトルV(n,L,B(n,L))が得られる。また、フレームF(n+1,L)のブロックB(n+1,L)にある物体がフレームF(n,L)から探索される。その結果、ブロックB(n+1,L)内の画素値がブロックB(n,L)内の画素値と一致するため、動きベクトルW(n+1,L,B(n+1,L))が得られる。
【0033】
動きベクトルV(n,L,B(n,L)),W(n+1,L,B(n+1,L))が取得されているので、AV(n,L,B(n,L))=V(n,L,B(n,L))、AW(n+1,L,B(n+1,L))=W(n+1,L,B(n+1,L))となる。そし
て、補間フレームAF(n’,L)に対し、ブロックB(n,L)が、そのブロックの位置から動きベクトルAV(n,L,B(n,L))の1/2だけ移動した位置に生成される。また、ブロックB(n+1,L)が、そのブロックの位置から動きベクトルAW(n+1,L,B(n+1,L))の1/2だけ移動した位置に生成される。補間フレームAF(n’,L)に生成されるブロックB(n,L),B(n+1,L)は重なり合っているため、ブロックB(n,L),B(n+1,L)内の画素値の平均値が1画素ずつ算出され、ブロックB(n’,L)内の画素値とされる。なお、ブロックB(n,L),B(n+1,L)はいずれも黒い四角い物体のブロックであるため、平均化しても画素値は変わらない(即ち、ブロックB(n’,L)も黒い四角い物体のブロックとなる)。
【0034】
フレームF(n,R)のブロックB(n,R)にある物体が、フレームF(n+1,R)から探索される。その結果、ブロックB(n,R)内の画素値と一致する領域(具体的には、SADが閾値より小さくなる領域)が見つからないため、ブロックB(n,R)は“動きベクトル無し”と判定される。また、フレームF(n+1,R)の各ブロックについて、SADが最小となる領域がフレームF(n,R)から探索され、動きベクトル{W(n+1,R)}が検出される。しかしながら、フレームF(n+1,R)には黒い四角い物体は存在しないため、動きベクトル{W(n+1,R)}には黒い四角い物体に関する動きベクトルは含まれない。
【0035】
フレームF(n,L),F(n,R)間の視差ベクトル{PV(n,L)},{PV(n,R)}が検出される。この視差ベクトル{PV(n,R)}を用いて、フレームF(n,L)から“動きベクトル無し”と判定されたブロックB(n,R)に対応するブロックB(n,L)(動きベクトルが検出されたブロック)が検出される。そして、動きベクトルAV(n,R,B(n,R))として、ブロックB(n,L)の動きベクトルV(n,L,B(n,L))が取得される。次に、補間フレームAF(n’,R)に対し、ブロックB(n,R)を、そのブロックの位置から動きベクトルAV(n,R,B(n,R))の1/2だけ移動した位置、つまり、ブロックB(n’,R)の位置に生成する。なお、補間フレームAF(n’,R)に対し、ブロックB(n,R)と他のブロック(白い背景のブロック)が重なるように生成される場合がある。しかしながら、動きベクトルAV(n,R,B(n,R))は“補正有り”の動きベクトルであるため、平均化処理は行われず、黒い四角い物体のデータ(画素値)が優先される。
【0036】
このように補間フレームを生成することにより、正しい視差を保ったブロックB(n’,L),B(n’,R)に黒い四角い物体を生成することができ、立体感が損なわれることのない補間フレームを生成することが可能となる。
【0037】
次に、白い背景の上を黒い四角い物体が右から左に動いてフレームインする場合の補間フレーム生成部102の動作を、図9,10を用いて説明する。図7,8と同様に、図中(A)〜(D)は入力映像信号のフレーム、(E),(F)は補間フレームを表す。
【0038】
まず、従来の動作について図9を用いて説明する。図9に示すように、フレームF(n,L)には物体は含まれていない。フレームF(n+1,L)では、物体はフレームインし、ブロックB(n+1,L)に位置している。また、フレームF(n,R)のブロックB(n,R)に位置する物体は、左へ移動しており、フレームF(n+1,R)ではブロックB(n+1,R)に位置する。
【0039】
従来の方法では、フレームF(n,R)とフレームF(n+1,R)の間では物体の動きベクトルが検出されるため、補間フレームAF(n’,R)のブロックB(n’,R)に物体が生成される。しかし、フレームF(n,L)とフレームF(n+1,L)の間では、物体の動きベクトルが検出されない。そのため、補間フレームAF(n’,L)にお
いて、物体はブロックB(n,L)と同じ位置のブロックB(n’,L)に生成される。この場合においても、物体が本来生成されるべき位置に生成されないため、ブロックB(n’,L)とブロックB(n’,R)に生成された物体の視差は不正となり、立体感が損なわれてしまう。また、前後のフレームとの連続性も失われることになる。さらに、他の補間データ、例えば白の背景のデータの生成位置と、物体の生成位置とが重なると、重複位置の画素値は黒と白の画素値の平均値となるため、黒い四角い物体が灰色の四角い物体になってしまう。
【0040】
次に、本実施例に係る動作について図10を用いて説明する。
フレームF(n,R)のブロックB(n,R)にある物体が、フレームF(n+1,R)から探索される。その結果、ブロックB(n,R)内の画素値がブロックB(n+1,R)内の画素値と一致するため、動きベクトルV(n,L,B(n,R))が得られる。また、フレームF(n+1,R)のブロックB(n+1,R)にある物体がフレームF(n,R)から探索される。その結果、ブロックB(n+1,R)内の画素値がブロックB(n,R)内の画素値と一致するため、動きベクトルW(n+1,R,B(n+1,R))が得られる。
【0041】
動きベクトルV(n,R,B(n,R)),W(n+1,R,B(n+1,R))が取得されているので、AV(n,R,B(n,R))=V(n,R,B(n,R))、AW(n+1,R,B(n+1,R))=W(n+1,R,B(n+1,R))となる。そして、補間フレームAF(n’,R)に対し、ブロックB(n,R)が、そのブロックの位置から動きベクトルAV(n,R,B(n,R))の1/2だけ移動した位置に生成される。また、ブロックB(n+1,R)が、そのブロックの位置から動きベクトルAW(n+1,R,B(n+1,R))の1/2だけ移動した位置に生成される。補間フレームAF(n’,R)に生成されるブロックB(n,R),B(n+1,R)は重なり合っているため、ブロックB(n,R),B(n+1,R)内の画素値の平均値が1画素ずつ算出され、ブロックB(n’,R)内の画素値とされる。なお、ブロックB(n,R),B(n+1,R)はいずれも黒い四角い物体のブロックであるため、平均化しても画素値は変わらない(即ち、ブロックB(n’,R)も黒い四角い物体のブロックとなる)。
【0042】
フレームF(n,L)の各ブロックについて、SADが最小となる領域がフレームF(n+1,L)から探索され、動きベクトル{V(n,L)}が検出される。しかしながら、フレームF(n,L)には黒い四角い物体は存在しないため、動きベクトル{V(n,L)}には黒い四角い物体に関する動きベクトルは含まれない。また、フレームF(n+1,L)のブロックB(n+1,L)にある物体が、フレームF(n,L)から探索される。その結果、ブロックB(n+1,L)内の画素値と一致する領域が見つからないため、ブロックB(n+1,L)は“動きベクトル無し”と判定される。
【0043】
フレームF(n+1,L),F(n+1,R)間の視差ベクトル{PV(n+1,L)},{PV(n+1,R)}が検出される。この視差ベクトル{PV(n+1,L)}を用いて、フレームF(n+1,R)から“動きベクトル無し”と判定されたブロックB(n+1,L)に対応するブロックB(n+1,R)(動きベクトルが検出されたブロック)が検出される。そして、動きベクトルAW(n+1,L,B(n+1,L))として、ブロックB(n+1,R)の動きベクトルW(n+1,R,B(n+1,R))が取得される。次に、補間フレームAF(n’,L)に対し、ブロックB(n+1,L)を、そのブロックの位置から動きベクトルAW(n+1,L,B(n+1,L))の1/2だけ移動した位置、つまり、ブロックB(n’,L)の位置に生成する。なお、補間フレームAF(n’,L)に対し、ブロックB(n,R)と他のブロック(白い背景のブロック)が重なるように生成される場合がある。しかしながら、動きベクトルAW(n+1,L,B(n+1,L))は“補正有り”の動きベクトルであるため、平均化処理は行われず、黒
い四角い物体のデータ(画素値)が優先される。
【0044】
このように補間フレームを生成することにより、正しい視差を保ったブロックB(n’,L),B(n’,R)に黒い四角い物体を生成することができ、立体感が損なわれることのない補間フレームを生成することが可能となる。
【0045】
以上述べたように、本実施例によれば、一方の眼用のフレームにおいて動きベクトルの非検出位置が存在する場合には、該非検出位置に対し、他方の眼用のフレームにおいて該非検出位置に対応する対応位置で検出された動きベクトルが設定される。そして、そのように設定された動きベクトルを用いて補間フレームを生成することで、正しい視差を保つことができる。即ち、本実施例によれば、立体映像のフレームレート変換において、一方の眼用のフレームで動きベクトルが検出できない場合でも、立体感が損なわれることのない補間フレームを生成することが可能となる。
また、本実施例では、複数の画素が対応付けられた補間フレームの位置に対しては、該複数の画素のうち、動きベクトルの検出結果が補正された位置の画素のみを用いて画素が生成される。それにより、被写体の色の変化を抑制し、より立体感を維持することが可能となる。
【0046】
<実施例2>
次に、本発明の実施例2に係る画像処理装置およびその画像処理装置により実行される画像処理方法について図面を参照して説明する。実施例1では、一方の眼用のフレームで動きベクトルが検出されない場合に、他方の眼用フレームで検出された動きベクトルを用いてベクトル補間を行った。実施例2では、一方の眼用のフレームで動きベクトルが検出されない場合には、ベクトル補間を行わないように、両方のフレームの動きベクトルを補正する。なお、以下では、実施例1と同様の機能や構成については説明を省略する。
【0047】
(全体構成)
実施例2に係る画像処理装置の全体構成は実施例1に係る画像処理装置と同じく図1のようになる。実施例2に係る画像処理装置と実施例1に係る画像処理装置とは、補間フレーム生成部102の構成が異なる。
【0048】
(補間フレーム生成部の詳細)
以下、実施例2の補間フレーム生成部102の詳細について説明する。
図11は、補間フレーム生成部102の機能構成を示すブロック図である。実施例1と同じ機能ブロックについては同じ記号を付し、説明を省略する。
【0049】
動きベクトル補正部1105〜1108は、第1映像と第2映像のうちの一方の映像のフレームにおいて動きベクトルが検出されない非検出位置が存在する場合に、視差ベクトルを用いて、該非検出位置に対応する対応位置を他方の映像のフレームから検出する。そして、上記非検出位置に対し大きさ0の動きベクトル(0ベクトル)を設定すると共に、上記対応位置で検出された動きベクトルを0ベクトルに置き換える補正を行う。本実施例では、動きベクトル補正部1105〜1108が、補正手段に相当する。
また、本実施例では、補間処理部409,410は、動きベクトルが0ベクトルに置き換えられたフレームA,Bのうちの一方のフレーム内の位置に対応する他方のフレーム内の位置の画素を、補間フレームの画素の生成に用いないものとする。フレームA,Bは、時間的に連続するフレームである。
【0050】
動きベクトル補正部1105は、動きベクトル検出部402で“動きベクトル無し”と判定されたブロックがあった場合に、動きベクトル検出部401で検出された動きベクトルを補正する。具体的には、フレームF(n,R)の“動きベクトル無し”と判定された
ブロックblk1に対応するフレームF(n,L)のブロックblk2の動きベクトルV(n,L,blk2)を0ベクトルに置き換える。フレームF(n,R)のブロックに対応するフレームF(n,L)のブロックは、実施例1と同様に視差ベクトルPV(n,R,blk1)を用いて検出される。具体的には、フレームF(n,L)において、フレームF(n,R)のブロックblk1の位置から、視差ベクトルPV(n,R,blk1)分移動した位置に存在するブロックblk2が、ブロックblk1に対応するブロックとなる。
なお、視差ベクトル分移動した位置を基準とするブロックと同じ大きさの領域が複数のブロックを跨いでいる場合には、跨がれている全てのブロックの動きベクトルを0ベクトルにする。
そして、動きベクトルを0ベクトルに置換したブロックの位置情報{al}と、置換前の動きベクトル{V(n,L)}を動きベクトル補正部1106に通知する。
【0051】
また、動きベクトル補正部1105には、動きベクトル補正部1106から、動きベクトル補正部1106によって動きベクトルが0ベクトルに置換されたブロックの位置情報{bl}と、置換前の動きベクトル{W(n+1,L)}が送られる。動きベクトル補正部1105は、この位置情報{bl}と動きベクトル{W(n+1,L)}から、フレームF(n,L)における、位置情報{bl}で示されるブロックに対応するブロックの動きベクトルを補正する。具体的には、位置情報{bl}で示されるブロックの1つをブロックblk1とすると、フレームF(n,L)において、ブロックblk1の位置から動きベクトルW(n+1,L,blk1)だけ移動した位置のブロックの動きベクトルが補正される。より具体的には、補正対象のブロックをブロックblk2とすると、動きベクトルV(n,L,blk2)がNI(補間しない)に変更される。動きベクトルがNIにされたブロックは、補間処理部409,410で補間フレームに対する画素(ブロック)の生成に使用されない。なお、動きベクトル分移動した位置を基準とするブロックと同じ大きさの領域が複数のブロックを跨いでいる場合には、跨がれている全てのブロックの動きベクトルをNIにする。
【0052】
また、動きベクトル検出部401で“動きベクトル無し”と判定されたブロック(フレームF(n,L)のブロック)に対しては0ベクトルが設定(割り当て)られる。
このようにして動きベクトル{V(n,L)}が補正され、動きベクトル{AV(n,L)}とされる。
また、動きベクトル{AV(n,L)}のうち、動きベクトル補正部1105で0ベクトルに設定、置換した動きベクトルに対しては“補正有り”、それ以外の動きベクトルに対しては“補正なし”の情報が付加される。
【0053】
動きベクトル補正部1106は、動きベクトル補正部1105と同様に、フレームF(n+1,L)の“動きベクトル無し”と判定されたブロックに対して、0ベクトルを設定する。また、フレームF(n+1,R)の“動きベクトル無し”と判定されたブロックに対応するフレームF(n+1,L)のブロックの動きベクトルを0ベクトルに置換する。位置情報{al}で示されるブロックに対応するフレームF(n+1,L)のブロックの動きベクトルをNIに変更する。それにより、動きベクトル{W(n+1,L)}が動きベクトル{AW(n+1,L)}とされる。また、動きベクトルを0ベクトルに置換したブロックの座標情報{bl}と、置換前の動きベクトル{W(n+1,L)}を動きベクトル補正部1105に通知する。
動きベクトル補正部1107は、動きベクトル補正部1105と同様に、フレームF(n,R)の“動きベクトル無し”と判定されたブロックに対して、0ベクトルを設定する。また、フレームF(n,L)の“動きベクトル無し”と判定されたブロックに対応するフレームF(n,R)のブロックの動きベクトルを0ベクトルに置換する。動きベクトル補正部1108から送信される位置情報{br}で示されるブロックに対応するフレーム
F(n,R)のブロックの動きベクトルをNIに変更する。それにより、動きベクトル{V(n,R)}が動きベクトル{AV(n,R)}とされる。また、動きベクトルを0ベクトルに置換したブロックの座標情報{ar}と、置換前の動きベクトル{V(n,R)}を動きベクトル補正部1108に通知する。
動きベクトル補正部1108は、動きベクトル補正部1105と同様に、フレームF(n+1,R)の“動きベクトル無し”と判定されたブロックに対して、0ベクトルを設定する。また、フレームF(n+1,L)の“動きベクトル無し”と判定されたブロックに対応するフレームF(n+1,R)のブロックの動きベクトルを0ベクトルに置換する。動きベクトル補正部1107から送信される位置情報{ar}で示されるブロックに対応するフレームF(n+1,R)のブロックの動きベクトルをNIに変更する。それにより、動きベクトル{W(n+1,R)}が動きベクトル{AW(n+1,R)}とされる。また、動きベクトルを0ベクトルに置換したブロックの座標情報{br}と、置換前の動きベクトル{W(n+1,R)}を動きベクトル補正部1108に通知する。
以上のようにして、実施例2では補間フレームが生成される。
【0054】
(補間フレーム生成部の動作)
次に、実施例2の補間フレーム生成部102の動作について例を挙げて説明する。
図12は、白い背景の上を黒い四角い物体が右から左に動いてフレームアウトする場合の補間フレーム生成部102の動作を説明するための図である。図7〜10と同様に、図中(A)〜(D)は入力映像信号のフレーム、(E),(F)は補間フレームを表す。
【0055】
フレームF(n,L)のブロックB(n,L)にある物体が、フレームF(n+1,L)から探索される。その結果、ブロックB(n,L)内の画素値がブロックB(n+1,L)内の画素値と一致するため、動きベクトルV(n,L,B(n,L))が得られる。また、フレームF(n+1,L)のブロックB(n+1,L)にある物体がフレームF(n,L)から探索される。その結果、ブロックB(n+1,L)内の画素値がブロックB(n,L)内の画素値と一致するため、動きベクトルW(n+1,L,B(n+1,L))が得られる。
【0056】
フレームF(n,R)のブロックB(n,R)にある物体が、フレームF(n+1,R)から探索される。その結果、ブロックB(n,R)内の画素値と一致する領域が見つからないため、ブロックB(n,R)は“動きベクトル無し”と判定される。また、フレームF(n+1,R)の各ブロックについて、SADが最小となる領域がフレームF(n,R)から探索され、動きベクトル{W(n+1,R)}が検出される。しかしながら、フレームF(n+1,R)には黒い四角い物体は存在しないため、動きベクトル{W(n+1,R)}には黒い四角い物体に関する動きベクトルは含まれない。
【0057】
フレームF(n,L),F(n,R)間の視差ベクトル{PV(n,L)},{PV(n,R)}が検出される。視差ベクトル{PV(n,R)}から、ブロックB(n,R)とブロックB(n,L)が対応していることがわかる。
【0058】
ブロックB(n,R)は“動きベクトル無し”と判定されたため、対応するブロックB(n,L)の動きベクトルV(n,L,B(n,L))は0ベクトルに置換される。この置換後の動きベクトル(0ベクトル)を、AV(n,L,B(n,L))と表記する。
また、フレームF(n+1,L)において、動きベクトルが0ベクトルとされたブロックB(n,L)の位置から、置換前の動きベクトルV(n,L,B(n,L))だけ移動することで、ブロックB(n+1,L)の位置が分かる。このブロックB(n+1,L)の動きベクトルW(n+1,L,B(n+1,L))はNI(補間しない)に変更される。この変更後の動きベクトル(NI)を、AW(n+1,L,B(n+1,L))と表記する。
また、動きベクトルV(n,R,B(n,R))は“動きベクトル無し”であるため、AV(n,R,B(n,R))=0ベクトルとされる。
【0059】
補間フレームAF(n’,L)を生成する際には、動きベクトルAV(n,L,B(n,L))が0ベクトルであるため、物体はブロックB(n,L)と同じ位置のブロックB(n’,L)に生成される。ブロックB(n+1,L)は、動きベクトルAW(n+1,L,B(n+1,L))がNI(補間しない)であるため、補間フレームAF(n’,L)の生成には利用されない。
補間フレームAF(n’,R)を生成する際には、動きベクトルAV(n,R,B(n,R))が0ベクトルであるため、物体はブロックB(n,R)と同じ位置のブロックB(n’,R)に生成される。
なお、補間フレームに対し、ブロックB(n,L),B(n,R)と他のブロック(白い背景のブロック)が重なるように生成される場合がある。しかしながら、それらのブロックの動きベクトルは“補正有り”の動きベクトルであるため、平均化処理は行われず、黒い四角い物体のデータ(画素値)が優先される。
【0060】
このように補間フレームを生成することにより、正しい視差を保ったブロックB(n’,L),B(n’,R)に黒い四角い物体を生成することができ、立体感が損なわれることのない補間フレームを生成することが可能となる。
【0061】
次に、白い背景の上を黒い四角い物体が右から左に動いてフレームインする場合の補間フレーム生成部102の動作を、図13を用いて説明する。図7〜10,12と同様に、図中(A)〜(D)は入力映像信号のフレーム、(E),(F)は補間フレームを表す。
【0062】
フレームF(n,R)のブロックB(n,R)にある物体が、フレームF(n+1,R)から探索される。その結果、ブロックB(n,R)内の画素値がブロックB(n+1,R)内の画素値と一致するため、動きベクトルV(n,R,B(n,R))が得られる。また、フレームF(n+1,R)のブロックB(n+1,R)にある物体がフレームF(n,R)から探索される。その結果、ブロックB(n+1,R)内の画素値がブロックB(n,R)内の画素値と一致するため、動きベクトルW(n+1,R,B(n+1,R))が得られる。
【0063】
フレームF(n,L)の各ブロックについて、SADが最小となる領域がフレームF(n+1,L)から探索され、動きベクトル{V(n,L)}が検出される。しかしながら、フレームF(n,L)には黒い四角い物体は存在しないため、動きベクトル{V(n,L)}には黒い四角い物体に関する動きベクトルは含まれない。また、フレームF(n+1,L)のブロックB(n+1,L)にある物体が、フレームF(n,L)から探索される。その結果、ブロックB(n+1,L)内の画素値と一致する領域が見つからないため、ブロックB(n+1,L)は“動きベクトル無し”と判定される。
【0064】
フレームF(n+1,L),F(n+1,R)間の視差ベクトル{PV(n+1,L)},{PV(n+1,R)}が検出される。視差ベクトル{PV(n+1,L)}から、ブロックB(n+1,L)とブロックB(n+1,R)が対応していることがわかる。
【0065】
ブロックB(n+1,L)は“動きベクトル無し”と判定されたため、対応するブロックB(n+1,R)の動きベクトルW(n+1,R,B(n+1,R))は0ベクトルに置換される。この置換後の動きベクトル(0ベクトル)を、AW(n+1,R,B(n+1,R))と表記する。
また、フレームF(n,R)において、動きベクトルが0ベクトルとされたブロックB(n+1,R)の位置から、置換前の動きベクトルW(n+1,R,B(n+1,R))
だけ移動することで、ブロックB(n,R)の位置が分かる。このブロックB(n,R)の動きベクトルV(n,R,B(n,R))はNI(補間しない)に変更される。この変更後の動きベクトル(NI)を、AV(n,R,B(n,R))と表記する。
また、動きベクトルW(n+1,L,B(n+1,L))は“動きベクトル無し”であるため、AW(n+1,L,B(n+1,L))=0ベクトルとされる。
【0066】
補間フレームAF(n’,L)を生成する際には、動きベクトルAW(n+1,L,B(n+1,L))が0ベクトルであるため、物体はブロックB(n+1,L)と同じ位置のブロックB(n’,L)に生成される。
補間フレームAF(n’,R)を生成する際には、動きベクトルAW(n+1,R,B(n+1,R))が0ベクトルであるため、物体はブロックB(n+1,R)と同じ位置のブロックB(n’,R)に生成される。ブロックB(n,R)は、動きベクトルAV(n,R,B(n,R))がNI(補間しない)であるため、補間フレームAF(n’,R)の生成には利用されない。
なお、補間フレームに対し、ブロックB(n+1,L),B(n+1,R)と他のブロック(白い背景のブロック)が重なるように生成される場合がある。しかしながら、それらのブロックの動きベクトルは“補正有り”の動きベクトルであるため、平均化処理は行われず、黒い四角い物体のデータ(画素値)が優先される。
【0067】
このように補間フレームを生成することにより、正しい視差を保ったブロックB(n’,L),B(n’,R)に黒い四角い物体を生成することができ、立体感が損なわれることのない補間フレームを生成することが可能となる。
【0068】
以上述べたように、本実施例によれは、一方の眼用のフレームにおいて動きベクトルの非検出位置が存在する場合には、該非検出位置に対し0ベクトルが設定される。また、他方のフレームにおいて上記非検出位置に対応する対応位置で検出された動きベクトルが0ベクトルに置き換えられる。そして、そのように設定された動きベクトルを用いて補間フレームを生成することで、正しい視差を保つことができる。即ち、本実施例によれば、立体映像のフレームレート変換において、一方の眼用のフレームで動きベクトルが検出できない場合でも、立体感が損なわれることのない補間フレームを生成することが可能となる。
また、本実施例では、動きベクトルが0ベクトルに置き換えられた一方の眼用のフレーム内の位置に対応する他方の眼用のフレーム内の位置の画素を、補間フレームの画素の生成に用いない構成とした。それにより、補間フレームにおいて、同じ被写体が異なる位置に生成されることを防ぐことができ、より立体感を維持することが可能となる。
なお、実施例1,2では、入力される映像信号がフレームシーケンシャル方式の立体映像の信号の場合について説明したが、本発明はフレームシーケンシャル方式に限定されるものではない。例えば右眼用の映像と左眼用の映像がそれぞれ独立して入力される場合でも、フレームメモリで両方の映像信号を記録してから補間フレームを生成すれば実施することができる。
【符号の説明】
【0069】
401,402 動きベクトル検出部
403,404 視差ベクトル検出部
405〜408,1105〜1108 動きベクトル補正部
409,410 補間処理部
【技術分野】
【0001】
本発明は右眼用の映像と左眼用の映像を表示して立体映像を得る画像処理装置および画像処理方法に関するものである。
【背景技術】
【0002】
近年、立体映像の普及が進み、立体映像に対する画作りの必要性が高まってきている。その中でもフレーム数を増加させるフレームレート変換(以下FRC)は動画のなめらかさの向上やフリッカの抑制に有効であり、立体映像に対してもFRCを行うことが求められてきている。FRCでは、フレームの間に補間フレームを生成することでフレーム数が増加される。補間フレームを生成する方法としては、ベクトル補間がよく用いられる。ベクトル補間は、補間する2つのフレーム間の動きベクトルを求め、フレームの画素位置を動きベクトル量の1/2だけずらして補間フレームを生成する方法である(特許文献1)。立体映像のような多視点映像の補間フレームの生成方法は、例えば、特許文献2に開示されている。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開平3−263989号公報
【特許文献2】特開2009−3507号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、立体映像のFRCでは、或る被写体に対し、一方の眼用のフレームでは動きベクトルが検出され、他方の眼用のフレームでは動きベクトルが検出されないことがある。そのため、一方の眼用のフレームだけがベクトル補間されることにより、生成された補間フレームにおいて正しい立体画像を表示できず、立体感が損なわれてしまう課題があった。そして、特許文献2に開示の技術ではこの課題は解決されていない。
【0005】
本発明は、立体映像のフレームレート変換において、一方の眼用のフレームで動きベクトルが検出できない場合でも、立体感が損なわれることのない補間フレームを生成することのできる技術を提供することを目的とする。
【課題を解決するための手段】
【0006】
本発明の第1の態様は、立体映像を構成する第1映像と第2映像のそれぞれのフレーム間に補間フレームを生成する画像処理装置であって、前記第1映像を構成する時間的に連続する2つのフレーム及び前記第2映像を構成する時間的に連続する2つのフレームを用いて、各映像のフレーム間の動きベクトルを検出する動きベクトル検出手段と、前記第1映像を構成するフレームと当該フレームに対応する前記第2映像を構成するフレームとを用いて、当該2つのフレーム間の視差を表す視差ベクトルを検出する視差ベクトル検出手段と、前記第1映像と前記第2映像のうちの一方の映像のフレームに動きベクトルが検出されない非検出位置が存在する場合には、該非検出位置に対応する他方の映像のフレームに含まれる対応位置を前記視差ベクトルを用いて検出し、前記非検出位置に対して前記対応位置における前記他方の映像のフレームの動きベクトルを設定する補正を行う補正手段と、補正後の動きベクトルを用いて前記第1映像と前記第2映像のそれぞれに補間フレームを生成する補間フレーム生成手段と、を有することを特徴とする画像処理装置である。
【0007】
本発明の第2の態様は、立体映像を構成する第1映像と第2映像のそれぞれのフレーム
間に補間フレームを生成する画像処理装置であって、前記第1映像を構成する時間的に連続する2つのフレーム及び前記第2映像を構成する時間的に連続する2つのフレームを用いて、各映像のフレーム間の動きベクトルを検出する動きベクトル検出手段と、前記第1映像を構成するフレームと当該フレームに対応する前記第2映像を構成するフレームとを用いて、当該2つのフレーム間の視差を表す視差ベクトルを検出する視差ベクトル検出手段と、前記第1映像と前記第2映像のうちの一方の映像のフレームに動きベクトルが検出されない非検出位置が存在する場合には、当該非検出位置に対して大きさ0の動きベクトルを設定すると共に、当該非検出位置に対応する他方の映像のフレームに含まれる対応位置を前記視差ベクトルを用いて検出し、前記対応位置で検出された動きベクトルを大きさ0の動きベクトルに置き換える補正を行う補正手段と、補正後の動きベクトルを用いて前記第1映像と前記第2映像のそれぞれに補間フレームを生成する補間フレーム生成手段と、を有することを特徴とする画像処理装置である。
【0008】
本発明の第3の態様は、立体映像を構成する第1映像と第2映像のそれぞれのフレーム間に補間フレームを生成する画像処理装置により実行される画像処理方法であって、前記第1映像を構成する時間的に連続する2つのフレーム及び前記第2映像を構成する時間的に連続する2つのフレームを用いて、各映像のフレーム間の動きベクトルを検出するステップと、前記第1映像を構成するフレームと当該フレームに対応する前記第2映像を構成するフレームとを用いて、当該2つのフレーム間の視差を表す視差ベクトルを検出するステップと、前記第1映像と前記第2映像のうちの一方の映像のフレームに動きベクトルが検出されない非検出位置が存在する場合には、該非検出位置に対応する他方の映像のフレームに含まれる対応位置を前記視差ベクトルを用いて検出し、前記非検出位置に対して前記対応位置における前記他方の映像のフレームの動きベクトルを設定する補正を行うステップと、補正後の動きベクトルを用いて前記第1映像と前記第2映像のそれぞれに補間フレームを生成するステップと、を有することを特徴とする画像処理方法である。
【0009】
本発明の第4の態様は、立体映像を構成する第1映像と第2映像のそれぞれのフレーム間に補間フレームを生成する画像処理装置により実行される画像処理方法であって、前記第1映像を構成する時間的に連続する2つのフレーム及び前記第2映像を構成する時間的に連続する2つのフレームを用いて、各映像のフレーム間の動きベクトルを検出するステップと、前記第1映像を構成するフレームと当該フレームに対応する前記第2映像を構成するフレームとを用いて、当該2つのフレーム間の視差を表す視差ベクトルを検出するステップと、前記第1映像と前記第2映像のうちの一方の映像のフレームに動きベクトルが検出されない非検出位置が存在する場合には、当該非検出位置に対して大きさ0の動きベクトルを設定すると共に、当該非検出位置に対応する他方の映像のフレームに含まれる対応位置を前記視差ベクトルを用いて検出し、前記対応位置で検出された動きベクトルを大きさ0の動きベクトルに置き換える補正を行うステップと、補正後の動きベクトルを用いて前記第1映像と前記第2映像のそれぞれに補間フレームを生成するステップと、を有することを特徴とする画像処理方法である。
【発明の効果】
【0010】
本発明によれば、立体映像のフレームレート変換において、一方の眼用のフレームで動きベクトルが検出できない場合でも、立体感が損なわれることのない補間フレームを生成することができる。
【図面の簡単な説明】
【0011】
【図1】本実施例に係る画像処理装置の機能構成の一例を示すブロック図。
【図2】入力映像信号の一例を示す図。
【図3】出力映像信号の一例を示す図。
【図4】実施例1に係る補間フレーム生成部の機能構成の一例を示すブロック図。
【図5】ブロック分割の一例を示す図。
【図6】探索範囲の一例を示す図。
【図7】従来の補間フレームの生成方法の一例を示す図。
【図8】実施例1に係る補間フレームの生成方法の一例を示す図。
【図9】従来の補間フレームの生成方法の一例を示す図。
【図10】実施例1に係る補間フレームの生成方法の一例を示す図。
【図11】実施例2に係る補間フレーム生成部の機能構成の一例を示すブロック図。
【図12】実施例2に係る補間フレームの生成方法の一例を示す図。
【図13】実施例2に係る補間フレームの生成方法の一例を示す図。
【発明を実施するための形態】
【0012】
<実施例1>
本発明の実施例1に係る画像処理装置およびその画像処理装置により実行される画像処理方法について図面を参照して説明する。本実施例の画像処理装置は、立体映像を構成する第1映像と第2映像のそれぞれのフレーム間に補間フレームを生成する。
(全体構成)
まず、実施例1に係る画像処理装置の全体構成について説明する。図1は実施例1に係る画像処理装置の機能構成を示すブロック図である。図1に示すように、実施例1に係る画像処理装置は、フレームメモリ101と補間フレーム生成部102を有する。本実施例では、画像処理装置に入力される映像(入力映像信号)のフレームをF(n,p)、入力映像信号のフレーム間を補間する補間フレームをAF(n’,p)の形式で表記する。画像表示装置に入力される映像は、立体映像を構成する第1映像(例えば、右眼用の映像)と第2映像(例えば、左眼用の映像)である。ここでnはフレーム番号、pは左右どちらの眼用の映像に属しているかを表す。p=Lの場合、そのフレームが左眼用の映像のフレームであることを意味し、p=Rの場合、そのフレームが右眼用の映像のフレームであることを意味する。また、補間フレームAF(n’,p)は、n番目のフレームとn+1番目のフレームの間を補間する補間フレームを意味する。
【0013】
入力映像信号は、INからフレームメモリ101に入力される。入力映像信号では、図2に示すように、左眼用のフレームと右眼用のフレームが時間方向に交互に並んでいる(フレームシーケンシャル方式)。
フレームメモリ101は、入力映像信号を1フレームずつ記憶する。フレームメモリ101は、フレームF(n,L),F(n+1,L),F(n,R),F(n+1,R)を記憶すると、それらのフレームを補間フレーム生成部102に入力する。
【0014】
補間フレーム生成部102は、フレームF(n,L),F(n+1,L),F(n,R),F(n+1,R)から補間フレームAF(n’,L),AF(n’,R)を生成する。補間フレームの生成方法については後述する。生成された補間フレームAF(n’,L),AF(n’,R)は、フレームメモリ101に入力される。
フレームメモリ101は、入力された補間フレームAF(n’,L),AF(n’,R)を記憶する。そして、フレームメモリ101は、図3に示すように、入力映像信号のフレーム間に補間フレームが挿入された出力映像信号を出力する。
【0015】
(補間フレーム生成部の詳細)
次に、実施例1の補間フレーム生成部102の詳細について説明する。
図4は、補間フレーム生成部102の機能構成を示すブロック図である。図4に示すように、補間フレーム生成部102は、動きベクトル検出部401,402、視差ベクトル検出部403,404、動きベクトル補正部405,406,407,408、補間処理部409,410を有する。
【0016】
本実施例では、映像の動きを表す動きベクトルを{V(n,p)}及び{W(n,p)}、右目用の映像と左目用の映像の視差を表す視差ベクトルを{PV(n,p)}、補正後の動きベクトルを{AV(n,p)}及び{AW(n,p)}の形式で表記する。本実施例では、フレームを複数の分割領域に分割して、分割領域毎に動きベクトルや視差ベクトルを検出するものとするが、動きベクトルや視差ベクトルの検出方法はこれに限らない。例えば、画素位置毎に動きベクトルや視差ベクトルを検出してもよい。動きベクトル{V(n,p)},{W(n,p)},{PV(n,p)},{AV(n,p)},{AW(n,p)}は、p眼用のn番目のフレームを複数のブロックに分割して検出したブロック毎の動きベクトルを全て含むものとする。ブロック毎の動きベクトルの検出方法については後述する。各動きベクトルは、任意のブロックをblkとして、V(n,p,blk),W(n,p,blk),PV(n,p,blk),AV(n,p,blk),AW(n,p,blk)と記述する。視差ベクトルについても同様である。
【0017】
動きベクトル検出部401,402は、第1映像と第2映像のフレームから、それぞれ、動きベクトルを検出する(動きベクトル検出手段)。本実施例では、時間的に連続する2つのフレームA,Bを用いて、フレームA内の位置からフレームB内の対応する位置までのベクトルと、フレームB内の位置からフレームA内の対応する位置までのベクトルが、動きベクトルとして検出されるものとする。
動きベクトル検出部401は、フレームF(n,L)とフレームF(n+1,L)から、ブロックマッチング法により、動きベクトル{V(n,L)},{W(n+1,L)}を検出する。
具体的には、図5に示すようにn番目のフレームを複数のブロックに分割する。本実施例では、1つのブロックのサイズを16ピクセル×16ピクセル(垂直方向のピクセル数×水平方向のピクセル数)とする。次に、ブロック毎に、n+1番目のフレームから、ブロック内の画素値との差分絶対値和(Sum of Absolute Differences:SAD)が最小と
なる領域の位置を探索する。例えば、ブロック毎に、n+1番目のフレームにおける、ブロックの位置と同じ位置を基準とする所定の範囲(探索範囲)内で、選択する領域(ブロックと同じサイズの領域)を1ピクセルずつ移動させることにより、上記位置の探索を行う。本実施例では、探索範囲を160ピクセル×48ピクセルとする(図6)。そして、探索した位置でのSADが予め設けた閾値より小さい場合に、探索した位置とブロックの位置との差(ブロックの位置から探索した位置までのベクトル)を、そのブロックの動きベクトルとする。SADが閾値以上の場合には、そのブロックに対し“動きベクトル無し”と判定する。なお、ブロックの位置は、ブロックの中心位置など、ブロックの位置を特定することのできる位置であればどのような位置であってもよい。
この処理をn番目のフレームの全てのブロックに対して行い、ブロック毎の動きベクトルを検出する。これをV(n,L)と表記する。
同様に、動きベクトル検出部401は、n+1番目のフレームを複数のブロックに分割し、ブロック毎に、n番目のフレームからSADが最小となる領域の位置を探索して、ブロック毎の動きベクトルを検出する。これをW(n+1,L)と表記する。
【0018】
動きベクトル検出部402は、動きベクトル検出部401と同様の処理を行い、フレームF(n,R),F(n+1,R)から、動きベクトル{V(n,R)},{W(n+1,R)}を検出する。
【0019】
視差ベクトル検出部403は、フレームF(n,L),F(n,R)から、それらのフレーム間の視差を表す視差ベクトルを検出する(視差ベクトル検出手段)。視差ベクトルも動きベクトルと同様にブロックマッチング法を用いて検出する。
具体的には、フレームF(n,L)を複数のブロック(サイズが16ピクセル×16ピクセルのブロック)に分割し、ブロック毎に、フレームF(n,R)から、ブロック内の画素値とのSADが最小となる領域の位置を探索する。ただし、視差ベクトルは基本的に
垂直方向成分を持たないため、探索範囲は水平方向のみ広がりを有していればよい(例えば、160ピクセル×16ピクセル)。そして、動きベクトルと同様に閾値を設け、探索した位置でのSADが閾値より小さい場合には、探索した位置とブロックの位置との差を、そのブロックの視差ベクトルとし、SADが閾値よりも大きい場合には、そのブロックに対し“視差ベクトル無し”と判定する。
この処理を全てのブロックに対して行い、ブロック毎の視差ベクトルを検出する。これをPV(n,L)と表記する。
同様に、視差ベクトル検出部403は、フレームF(n,R)を複数のブロックに分割し、ブロック毎に、フレームF(n,L)からSADが最小となる領域の位置を探索して、ブロック毎の視差ベクトルを検出する。これをPV(n,R)と表記する。
【0020】
視差ベクトル検出部404は、視差ベクトル検出部403と同様に処理を行い、フレームF(n+1,L),F(n+1,R)から、n+1番目の右眼用と左眼用のフレーム間の視差ベクトル{PV(n+1,L)},{PV(n+1,R)}を検出する。
なお、本実施例では、動きベクトル検出部401,402でのブロックのサイズと、視差ベクトル検出部403,404でのブロックのサイズを等しいものとしたが、それらは互いに異なっていてもよい。例えば、動きベクトル検出部401,402でのブロックのサイズを8ピクセル×8ピクセルとし、視差ベクトル検出部403,404でのブロックのサイズを16ピクセル×16ピクセルとしてもよい。また、動きベクトルの有無、視差ベクトルの有無を判定するための閾値は、互いに等しくてもよいし、異なっていてもよい。
【0021】
動きベクトル補正部405〜408は、第1映像と第2映像のうちの一方の映像のフレームにおいて動きベクトルが検出されない非検出位置が存在する場合に、視差ベクトルを用いて、該非検出位置に対応する対応位置を他方の映像のフレームから検出する。そして、上記非検出位置に対し対応位置で検出された動きベクトルを設定する補正を行う。動きベクトル補正部405〜408が、本発明の補正手段に相当する。
【0022】
動きベクトル補正部405は、動きベクトル検出部401で検出した動きベクトル{V(n,L)}において、“動きベクトル無し”と判定されたブロックの動きベクトルの補正を行う。具体的には、フレームF(n,L)の“動きベクトル無し”と判定されたブロックblk1の動きベクトルを、そのブロックに対応する(同一のデータを持つ)フレームF(n,R)のブロックblk2の動きベクトルに置き換える。即ち、動きベクトルV(n,L,blk1)を動きベクトルV(n,R,blk2)に置き換える。
【0023】
さらに詳しく説明すると、フレームF(n,L)とフレームF(n,R)の間には視差があるため、同じ位置のブロックに同じ物体があるとは限らない。そこで、視差ベクトル検出部403で検出した視差ベクトル{PV(n,L)}を使用して、フレームF(n,L)のブロックがフレームF(n,R)のどのブロックに対応するかを求める。具体的には、フレームF(n,R)において、フレームF(n,L)のブロックblk1の位置から、視差ベクトルPV(n,L,blk1)分移動した位置に存在するブロックblk2が、ブロックblk1に対応するブロックとなる。
なお、移動先の位置がフレームF(n,R)のブロックの位置と完全に一致しない場合(移動先の位置を基準とするブロックと同じ大きさの領域が複数のブロックを跨いでいる場合)には、移動先の位置に応じて動きベクトルが算出される。具体的には、移動先の位置を基準とする領域が跨いでいる各ブロックの動きベクトルを該領域が重なっている面積の比で重み付け平均したものが対応するブロックの動きベクトルとされる。
また、動きベクトル補正部405は、動きベクトルも視差ベクトルも無いブロックに対して、0ベクトル(大きさが0のベクトル)を割り当てる。
【0024】
このようにして、“動きベクトル無し”と判定されたブロックの動きベクトルが補正され、動きベクトル{V(n,L)}が動きベクトル{AV(n,L)}とされる。また、動きベクトル{AV(n,L)}において、動きベクトル{V(n,R)}から取得した動きベクトルで置換された動きベクトルに対しては“補正有り”、そうでない動きベクトルに対しては“補正なし”の情報が付加される。
【0025】
動きベクトル補正部406は、動きベクトル補正部405と同様に、動きベクトル検出部401で検出した動きベクトル{W(n+1,L)}において、“動きベクトル無し”と判定されたブロックの動きベクトルの補正を行う。そして、動きベクトル{W(n+1,L)}を動きベクトル{AW(n+1,L)}とする。
動きベクトル補正部407は、動きベクトル補正部405と同様に、動きベクトル検出部402で検出した動きベクトル{V(n,R)}において、“動きベクトル無し”と判定されたブロックの動きベクトルの補正を行う。そして、動きベクトル{V(n,R)}を動きベクトル{AV(n,R)}とする。
動きベクトル補正部408は、動きベクトル補正部405と同様に、動きベクトル検出部402で検出した動きベクトル{W(n+1,R)}において、“動きベクトル無し”と判定されたブロックの動きベクトルの補正を行う。そして、動きベクトル{W(n+1,R)}を動きベクトル{AW(n+1,R)}とする。
【0026】
補間処理部409,410は、補正後の動きベクトルを用いて第1映像と第2映像のそれぞれに対しフレーム間を補間する補間フレームを生成する(補間フレーム生成手段)。本実施例では、フレーム内(フレームA,B内)の各画素を動きベクトルに基づいて補間フレーム内の位置に対応づけた後、補間フレーム内の位置毎に対応付けられた画素を用いて補間フレームの各画素が生成されるものとする。また、複数の画素が対応付けられた補間フレーム位置に対しては、複数の画素のうち、動きベクトルの検出結果が補正された位置の画素のみを用いて画素を生成するものとする。
【0027】
補間処理部409は、フレームF(n,L),F(n+1,L)と、補正後の動きベクトル{AV(n,L)},{AW(n+1,L)}を用いて補間フレームAF(n’,L)を生成する。
具体的には、補間フレームF(n’,L)に対し、フレームF(n,L)のブロックblk(画素群)を、そのブロックblkの位置から対応する動きベクトルAV(n,L,blk)の1/2だけ移動した位置に生成する。同様に、補間フレームF(n’,L)に対し、フレームF(n+1,L)のブロックblkを、そのブロックblkの位置から対応する動きベクトルAW(n+1,L,blk)の1/2だけ移動した位置に生成する。生成するブロック同士が重複する部分については、重複するブロックの画素値の平均値を1画素ずつ算出し、補間フレームF(n’,L)の画素値とする(平均化処理)。ただし、重複するブロックに、動きベクトル補正部405〜408で動きベクトルが補正された位置のブロックが含まれる場合には、上記平均化処理は行わず、該ブロックの画素値を優先して補間フレームF(n’,L)の画素値とする。動きベクトルが補正された位置のブロック同士が重複する場合には、重複するそれらのブロックの画素値の平均値を1画素ずつ算出し、補間フレームF(n’,L)の画素値とする。
補間フレームAF(n’,L)において、フレームF(n,L),F(n+1,L)のブロックが生成されなかった部分については、該部分と同じ位置のフレームF(n,L)とフレームF(n+1,L)の画素値の平均値を画素値とする。
【0028】
補間処理部410は、補間処理部409と同様に、フレームF(n,R),F(n+1,R)と、補正された動きベクトル{AV(n,R)},{AW(n+1,R)}とを用いて、補間フレームAF(n’,R)を生成する。
以上のようにして、実施例1では補間フレームが生成される。
【0029】
(補間フレーム生成部の動作)
次に、実施例1の補間フレーム生成部102の動作について例を挙げて説明する。
図7,8は、白い背景の上を黒い四角い物体(以後、単に“物体”と記載する)が右から左に動いてフレームアウトする場合の補間フレーム生成部102の動作を説明するための図である。図中(A)〜(D)は入力映像信号のフレーム、(E),(F)は補間フレームを表す。具体的には、(A)はフレームF(n,L)、(B)はフレームF(n,R)、(C)はフレームF(n+1,L)、(D)はフレームF(n+1,R)、(E)は補間フレームAF(n’,L)、(F)は補間フレームAF(n’,R)を表す。説明を簡略化するために、1つのフレームは10×6個のブロックに分割されるものとし、物体のサイズは丁度1つのブロックと同じサイズとする。また、動作の説明はこの黒い四角い物体に着目して行う。物体のあるブロックはB(n,p)の形式で表記する。
【0030】
図7,8においてフレームF(n,L)のブロックB(n,L)にある物体と、フレームF(n,R)のブロックB(n,R)にある物体は対応しており、立体映像としての視差を持っているので白い背景よりも浮き出て見える。物体は左に移動しており、フレームF(n,L)の次のフレームF(n+1,L)では、物体は、ブロックB(n+1,L)に位置する。また、フレームF(n+1,R)では、物体はフレームアウトしている。具体的には、物体は、フレーム外のブロックB(n+1,R)に位置し、映像信号(フレーム)には含まれなくなっている。
【0031】
本実施例に係る動作(補間フレームの生成方法)と従来の動作との差を明確にするために、まず、従来の動作について図7を用いて説明する。
従来の方法では、フレームF(n,L)とフレームF(n+1,L)の間では物体の動きベクトルが検出されるため、補間フレームAF(n’,L)のブロックB(n’,L)に物体が生成される。しかし、フレームF(n,R)とフレームF(n+1,R)の間では、フレームF(n+1,R)に物体がないため、物体の動きベクトルが検出されず、ベクトル補間が行えない。例えば、動きベクトルが検出されない場合に0ベクトルを用いるのであれば、補間フレームAF(n’,R)において、物体は、ブロックB(n,R)と同じ位置のブロックB(n’,R)に生成される。この場合、物体が本来生成されるべき位置に生成されないため、ブロックB(n’,L)とブロックB(n’,R)に生成された物体の視差は不正となり、立体感が損なわれてしまう。また、前後のフレームとの連続性も失われることになる。さらに、他の補間データ、例えば白の背景のデータの生成位置と、物体の生成位置とが重なると、重複位置の画素値は黒と白の画素値の平均値となるため、黒い四角い物体が灰色の四角い物体になってしまう。
【0032】
次に、本実施例に係る動作について図8を用いて説明する。本実施例によれば、上記問題を解決することができる。
フレームF(n,L)のブロックB(n,L)にある物体が、フレームF(n+1,L)から探索される。具体的には、ブロックB(n,L)内の画素値とのSADが最も小さく、且つ、閾値未満となる領域がフレームF(n+1,L)から探索される。その結果、ブロックB(n,L)内の画素値がブロックB(n+1,L)内の画素値と一致するため、動きベクトルV(n,L,B(n,L))が得られる。また、フレームF(n+1,L)のブロックB(n+1,L)にある物体がフレームF(n,L)から探索される。その結果、ブロックB(n+1,L)内の画素値がブロックB(n,L)内の画素値と一致するため、動きベクトルW(n+1,L,B(n+1,L))が得られる。
【0033】
動きベクトルV(n,L,B(n,L)),W(n+1,L,B(n+1,L))が取得されているので、AV(n,L,B(n,L))=V(n,L,B(n,L))、AW(n+1,L,B(n+1,L))=W(n+1,L,B(n+1,L))となる。そし
て、補間フレームAF(n’,L)に対し、ブロックB(n,L)が、そのブロックの位置から動きベクトルAV(n,L,B(n,L))の1/2だけ移動した位置に生成される。また、ブロックB(n+1,L)が、そのブロックの位置から動きベクトルAW(n+1,L,B(n+1,L))の1/2だけ移動した位置に生成される。補間フレームAF(n’,L)に生成されるブロックB(n,L),B(n+1,L)は重なり合っているため、ブロックB(n,L),B(n+1,L)内の画素値の平均値が1画素ずつ算出され、ブロックB(n’,L)内の画素値とされる。なお、ブロックB(n,L),B(n+1,L)はいずれも黒い四角い物体のブロックであるため、平均化しても画素値は変わらない(即ち、ブロックB(n’,L)も黒い四角い物体のブロックとなる)。
【0034】
フレームF(n,R)のブロックB(n,R)にある物体が、フレームF(n+1,R)から探索される。その結果、ブロックB(n,R)内の画素値と一致する領域(具体的には、SADが閾値より小さくなる領域)が見つからないため、ブロックB(n,R)は“動きベクトル無し”と判定される。また、フレームF(n+1,R)の各ブロックについて、SADが最小となる領域がフレームF(n,R)から探索され、動きベクトル{W(n+1,R)}が検出される。しかしながら、フレームF(n+1,R)には黒い四角い物体は存在しないため、動きベクトル{W(n+1,R)}には黒い四角い物体に関する動きベクトルは含まれない。
【0035】
フレームF(n,L),F(n,R)間の視差ベクトル{PV(n,L)},{PV(n,R)}が検出される。この視差ベクトル{PV(n,R)}を用いて、フレームF(n,L)から“動きベクトル無し”と判定されたブロックB(n,R)に対応するブロックB(n,L)(動きベクトルが検出されたブロック)が検出される。そして、動きベクトルAV(n,R,B(n,R))として、ブロックB(n,L)の動きベクトルV(n,L,B(n,L))が取得される。次に、補間フレームAF(n’,R)に対し、ブロックB(n,R)を、そのブロックの位置から動きベクトルAV(n,R,B(n,R))の1/2だけ移動した位置、つまり、ブロックB(n’,R)の位置に生成する。なお、補間フレームAF(n’,R)に対し、ブロックB(n,R)と他のブロック(白い背景のブロック)が重なるように生成される場合がある。しかしながら、動きベクトルAV(n,R,B(n,R))は“補正有り”の動きベクトルであるため、平均化処理は行われず、黒い四角い物体のデータ(画素値)が優先される。
【0036】
このように補間フレームを生成することにより、正しい視差を保ったブロックB(n’,L),B(n’,R)に黒い四角い物体を生成することができ、立体感が損なわれることのない補間フレームを生成することが可能となる。
【0037】
次に、白い背景の上を黒い四角い物体が右から左に動いてフレームインする場合の補間フレーム生成部102の動作を、図9,10を用いて説明する。図7,8と同様に、図中(A)〜(D)は入力映像信号のフレーム、(E),(F)は補間フレームを表す。
【0038】
まず、従来の動作について図9を用いて説明する。図9に示すように、フレームF(n,L)には物体は含まれていない。フレームF(n+1,L)では、物体はフレームインし、ブロックB(n+1,L)に位置している。また、フレームF(n,R)のブロックB(n,R)に位置する物体は、左へ移動しており、フレームF(n+1,R)ではブロックB(n+1,R)に位置する。
【0039】
従来の方法では、フレームF(n,R)とフレームF(n+1,R)の間では物体の動きベクトルが検出されるため、補間フレームAF(n’,R)のブロックB(n’,R)に物体が生成される。しかし、フレームF(n,L)とフレームF(n+1,L)の間では、物体の動きベクトルが検出されない。そのため、補間フレームAF(n’,L)にお
いて、物体はブロックB(n,L)と同じ位置のブロックB(n’,L)に生成される。この場合においても、物体が本来生成されるべき位置に生成されないため、ブロックB(n’,L)とブロックB(n’,R)に生成された物体の視差は不正となり、立体感が損なわれてしまう。また、前後のフレームとの連続性も失われることになる。さらに、他の補間データ、例えば白の背景のデータの生成位置と、物体の生成位置とが重なると、重複位置の画素値は黒と白の画素値の平均値となるため、黒い四角い物体が灰色の四角い物体になってしまう。
【0040】
次に、本実施例に係る動作について図10を用いて説明する。
フレームF(n,R)のブロックB(n,R)にある物体が、フレームF(n+1,R)から探索される。その結果、ブロックB(n,R)内の画素値がブロックB(n+1,R)内の画素値と一致するため、動きベクトルV(n,L,B(n,R))が得られる。また、フレームF(n+1,R)のブロックB(n+1,R)にある物体がフレームF(n,R)から探索される。その結果、ブロックB(n+1,R)内の画素値がブロックB(n,R)内の画素値と一致するため、動きベクトルW(n+1,R,B(n+1,R))が得られる。
【0041】
動きベクトルV(n,R,B(n,R)),W(n+1,R,B(n+1,R))が取得されているので、AV(n,R,B(n,R))=V(n,R,B(n,R))、AW(n+1,R,B(n+1,R))=W(n+1,R,B(n+1,R))となる。そして、補間フレームAF(n’,R)に対し、ブロックB(n,R)が、そのブロックの位置から動きベクトルAV(n,R,B(n,R))の1/2だけ移動した位置に生成される。また、ブロックB(n+1,R)が、そのブロックの位置から動きベクトルAW(n+1,R,B(n+1,R))の1/2だけ移動した位置に生成される。補間フレームAF(n’,R)に生成されるブロックB(n,R),B(n+1,R)は重なり合っているため、ブロックB(n,R),B(n+1,R)内の画素値の平均値が1画素ずつ算出され、ブロックB(n’,R)内の画素値とされる。なお、ブロックB(n,R),B(n+1,R)はいずれも黒い四角い物体のブロックであるため、平均化しても画素値は変わらない(即ち、ブロックB(n’,R)も黒い四角い物体のブロックとなる)。
【0042】
フレームF(n,L)の各ブロックについて、SADが最小となる領域がフレームF(n+1,L)から探索され、動きベクトル{V(n,L)}が検出される。しかしながら、フレームF(n,L)には黒い四角い物体は存在しないため、動きベクトル{V(n,L)}には黒い四角い物体に関する動きベクトルは含まれない。また、フレームF(n+1,L)のブロックB(n+1,L)にある物体が、フレームF(n,L)から探索される。その結果、ブロックB(n+1,L)内の画素値と一致する領域が見つからないため、ブロックB(n+1,L)は“動きベクトル無し”と判定される。
【0043】
フレームF(n+1,L),F(n+1,R)間の視差ベクトル{PV(n+1,L)},{PV(n+1,R)}が検出される。この視差ベクトル{PV(n+1,L)}を用いて、フレームF(n+1,R)から“動きベクトル無し”と判定されたブロックB(n+1,L)に対応するブロックB(n+1,R)(動きベクトルが検出されたブロック)が検出される。そして、動きベクトルAW(n+1,L,B(n+1,L))として、ブロックB(n+1,R)の動きベクトルW(n+1,R,B(n+1,R))が取得される。次に、補間フレームAF(n’,L)に対し、ブロックB(n+1,L)を、そのブロックの位置から動きベクトルAW(n+1,L,B(n+1,L))の1/2だけ移動した位置、つまり、ブロックB(n’,L)の位置に生成する。なお、補間フレームAF(n’,L)に対し、ブロックB(n,R)と他のブロック(白い背景のブロック)が重なるように生成される場合がある。しかしながら、動きベクトルAW(n+1,L,B(n+1,L))は“補正有り”の動きベクトルであるため、平均化処理は行われず、黒
い四角い物体のデータ(画素値)が優先される。
【0044】
このように補間フレームを生成することにより、正しい視差を保ったブロックB(n’,L),B(n’,R)に黒い四角い物体を生成することができ、立体感が損なわれることのない補間フレームを生成することが可能となる。
【0045】
以上述べたように、本実施例によれば、一方の眼用のフレームにおいて動きベクトルの非検出位置が存在する場合には、該非検出位置に対し、他方の眼用のフレームにおいて該非検出位置に対応する対応位置で検出された動きベクトルが設定される。そして、そのように設定された動きベクトルを用いて補間フレームを生成することで、正しい視差を保つことができる。即ち、本実施例によれば、立体映像のフレームレート変換において、一方の眼用のフレームで動きベクトルが検出できない場合でも、立体感が損なわれることのない補間フレームを生成することが可能となる。
また、本実施例では、複数の画素が対応付けられた補間フレームの位置に対しては、該複数の画素のうち、動きベクトルの検出結果が補正された位置の画素のみを用いて画素が生成される。それにより、被写体の色の変化を抑制し、より立体感を維持することが可能となる。
【0046】
<実施例2>
次に、本発明の実施例2に係る画像処理装置およびその画像処理装置により実行される画像処理方法について図面を参照して説明する。実施例1では、一方の眼用のフレームで動きベクトルが検出されない場合に、他方の眼用フレームで検出された動きベクトルを用いてベクトル補間を行った。実施例2では、一方の眼用のフレームで動きベクトルが検出されない場合には、ベクトル補間を行わないように、両方のフレームの動きベクトルを補正する。なお、以下では、実施例1と同様の機能や構成については説明を省略する。
【0047】
(全体構成)
実施例2に係る画像処理装置の全体構成は実施例1に係る画像処理装置と同じく図1のようになる。実施例2に係る画像処理装置と実施例1に係る画像処理装置とは、補間フレーム生成部102の構成が異なる。
【0048】
(補間フレーム生成部の詳細)
以下、実施例2の補間フレーム生成部102の詳細について説明する。
図11は、補間フレーム生成部102の機能構成を示すブロック図である。実施例1と同じ機能ブロックについては同じ記号を付し、説明を省略する。
【0049】
動きベクトル補正部1105〜1108は、第1映像と第2映像のうちの一方の映像のフレームにおいて動きベクトルが検出されない非検出位置が存在する場合に、視差ベクトルを用いて、該非検出位置に対応する対応位置を他方の映像のフレームから検出する。そして、上記非検出位置に対し大きさ0の動きベクトル(0ベクトル)を設定すると共に、上記対応位置で検出された動きベクトルを0ベクトルに置き換える補正を行う。本実施例では、動きベクトル補正部1105〜1108が、補正手段に相当する。
また、本実施例では、補間処理部409,410は、動きベクトルが0ベクトルに置き換えられたフレームA,Bのうちの一方のフレーム内の位置に対応する他方のフレーム内の位置の画素を、補間フレームの画素の生成に用いないものとする。フレームA,Bは、時間的に連続するフレームである。
【0050】
動きベクトル補正部1105は、動きベクトル検出部402で“動きベクトル無し”と判定されたブロックがあった場合に、動きベクトル検出部401で検出された動きベクトルを補正する。具体的には、フレームF(n,R)の“動きベクトル無し”と判定された
ブロックblk1に対応するフレームF(n,L)のブロックblk2の動きベクトルV(n,L,blk2)を0ベクトルに置き換える。フレームF(n,R)のブロックに対応するフレームF(n,L)のブロックは、実施例1と同様に視差ベクトルPV(n,R,blk1)を用いて検出される。具体的には、フレームF(n,L)において、フレームF(n,R)のブロックblk1の位置から、視差ベクトルPV(n,R,blk1)分移動した位置に存在するブロックblk2が、ブロックblk1に対応するブロックとなる。
なお、視差ベクトル分移動した位置を基準とするブロックと同じ大きさの領域が複数のブロックを跨いでいる場合には、跨がれている全てのブロックの動きベクトルを0ベクトルにする。
そして、動きベクトルを0ベクトルに置換したブロックの位置情報{al}と、置換前の動きベクトル{V(n,L)}を動きベクトル補正部1106に通知する。
【0051】
また、動きベクトル補正部1105には、動きベクトル補正部1106から、動きベクトル補正部1106によって動きベクトルが0ベクトルに置換されたブロックの位置情報{bl}と、置換前の動きベクトル{W(n+1,L)}が送られる。動きベクトル補正部1105は、この位置情報{bl}と動きベクトル{W(n+1,L)}から、フレームF(n,L)における、位置情報{bl}で示されるブロックに対応するブロックの動きベクトルを補正する。具体的には、位置情報{bl}で示されるブロックの1つをブロックblk1とすると、フレームF(n,L)において、ブロックblk1の位置から動きベクトルW(n+1,L,blk1)だけ移動した位置のブロックの動きベクトルが補正される。より具体的には、補正対象のブロックをブロックblk2とすると、動きベクトルV(n,L,blk2)がNI(補間しない)に変更される。動きベクトルがNIにされたブロックは、補間処理部409,410で補間フレームに対する画素(ブロック)の生成に使用されない。なお、動きベクトル分移動した位置を基準とするブロックと同じ大きさの領域が複数のブロックを跨いでいる場合には、跨がれている全てのブロックの動きベクトルをNIにする。
【0052】
また、動きベクトル検出部401で“動きベクトル無し”と判定されたブロック(フレームF(n,L)のブロック)に対しては0ベクトルが設定(割り当て)られる。
このようにして動きベクトル{V(n,L)}が補正され、動きベクトル{AV(n,L)}とされる。
また、動きベクトル{AV(n,L)}のうち、動きベクトル補正部1105で0ベクトルに設定、置換した動きベクトルに対しては“補正有り”、それ以外の動きベクトルに対しては“補正なし”の情報が付加される。
【0053】
動きベクトル補正部1106は、動きベクトル補正部1105と同様に、フレームF(n+1,L)の“動きベクトル無し”と判定されたブロックに対して、0ベクトルを設定する。また、フレームF(n+1,R)の“動きベクトル無し”と判定されたブロックに対応するフレームF(n+1,L)のブロックの動きベクトルを0ベクトルに置換する。位置情報{al}で示されるブロックに対応するフレームF(n+1,L)のブロックの動きベクトルをNIに変更する。それにより、動きベクトル{W(n+1,L)}が動きベクトル{AW(n+1,L)}とされる。また、動きベクトルを0ベクトルに置換したブロックの座標情報{bl}と、置換前の動きベクトル{W(n+1,L)}を動きベクトル補正部1105に通知する。
動きベクトル補正部1107は、動きベクトル補正部1105と同様に、フレームF(n,R)の“動きベクトル無し”と判定されたブロックに対して、0ベクトルを設定する。また、フレームF(n,L)の“動きベクトル無し”と判定されたブロックに対応するフレームF(n,R)のブロックの動きベクトルを0ベクトルに置換する。動きベクトル補正部1108から送信される位置情報{br}で示されるブロックに対応するフレーム
F(n,R)のブロックの動きベクトルをNIに変更する。それにより、動きベクトル{V(n,R)}が動きベクトル{AV(n,R)}とされる。また、動きベクトルを0ベクトルに置換したブロックの座標情報{ar}と、置換前の動きベクトル{V(n,R)}を動きベクトル補正部1108に通知する。
動きベクトル補正部1108は、動きベクトル補正部1105と同様に、フレームF(n+1,R)の“動きベクトル無し”と判定されたブロックに対して、0ベクトルを設定する。また、フレームF(n+1,L)の“動きベクトル無し”と判定されたブロックに対応するフレームF(n+1,R)のブロックの動きベクトルを0ベクトルに置換する。動きベクトル補正部1107から送信される位置情報{ar}で示されるブロックに対応するフレームF(n+1,R)のブロックの動きベクトルをNIに変更する。それにより、動きベクトル{W(n+1,R)}が動きベクトル{AW(n+1,R)}とされる。また、動きベクトルを0ベクトルに置換したブロックの座標情報{br}と、置換前の動きベクトル{W(n+1,R)}を動きベクトル補正部1108に通知する。
以上のようにして、実施例2では補間フレームが生成される。
【0054】
(補間フレーム生成部の動作)
次に、実施例2の補間フレーム生成部102の動作について例を挙げて説明する。
図12は、白い背景の上を黒い四角い物体が右から左に動いてフレームアウトする場合の補間フレーム生成部102の動作を説明するための図である。図7〜10と同様に、図中(A)〜(D)は入力映像信号のフレーム、(E),(F)は補間フレームを表す。
【0055】
フレームF(n,L)のブロックB(n,L)にある物体が、フレームF(n+1,L)から探索される。その結果、ブロックB(n,L)内の画素値がブロックB(n+1,L)内の画素値と一致するため、動きベクトルV(n,L,B(n,L))が得られる。また、フレームF(n+1,L)のブロックB(n+1,L)にある物体がフレームF(n,L)から探索される。その結果、ブロックB(n+1,L)内の画素値がブロックB(n,L)内の画素値と一致するため、動きベクトルW(n+1,L,B(n+1,L))が得られる。
【0056】
フレームF(n,R)のブロックB(n,R)にある物体が、フレームF(n+1,R)から探索される。その結果、ブロックB(n,R)内の画素値と一致する領域が見つからないため、ブロックB(n,R)は“動きベクトル無し”と判定される。また、フレームF(n+1,R)の各ブロックについて、SADが最小となる領域がフレームF(n,R)から探索され、動きベクトル{W(n+1,R)}が検出される。しかしながら、フレームF(n+1,R)には黒い四角い物体は存在しないため、動きベクトル{W(n+1,R)}には黒い四角い物体に関する動きベクトルは含まれない。
【0057】
フレームF(n,L),F(n,R)間の視差ベクトル{PV(n,L)},{PV(n,R)}が検出される。視差ベクトル{PV(n,R)}から、ブロックB(n,R)とブロックB(n,L)が対応していることがわかる。
【0058】
ブロックB(n,R)は“動きベクトル無し”と判定されたため、対応するブロックB(n,L)の動きベクトルV(n,L,B(n,L))は0ベクトルに置換される。この置換後の動きベクトル(0ベクトル)を、AV(n,L,B(n,L))と表記する。
また、フレームF(n+1,L)において、動きベクトルが0ベクトルとされたブロックB(n,L)の位置から、置換前の動きベクトルV(n,L,B(n,L))だけ移動することで、ブロックB(n+1,L)の位置が分かる。このブロックB(n+1,L)の動きベクトルW(n+1,L,B(n+1,L))はNI(補間しない)に変更される。この変更後の動きベクトル(NI)を、AW(n+1,L,B(n+1,L))と表記する。
また、動きベクトルV(n,R,B(n,R))は“動きベクトル無し”であるため、AV(n,R,B(n,R))=0ベクトルとされる。
【0059】
補間フレームAF(n’,L)を生成する際には、動きベクトルAV(n,L,B(n,L))が0ベクトルであるため、物体はブロックB(n,L)と同じ位置のブロックB(n’,L)に生成される。ブロックB(n+1,L)は、動きベクトルAW(n+1,L,B(n+1,L))がNI(補間しない)であるため、補間フレームAF(n’,L)の生成には利用されない。
補間フレームAF(n’,R)を生成する際には、動きベクトルAV(n,R,B(n,R))が0ベクトルであるため、物体はブロックB(n,R)と同じ位置のブロックB(n’,R)に生成される。
なお、補間フレームに対し、ブロックB(n,L),B(n,R)と他のブロック(白い背景のブロック)が重なるように生成される場合がある。しかしながら、それらのブロックの動きベクトルは“補正有り”の動きベクトルであるため、平均化処理は行われず、黒い四角い物体のデータ(画素値)が優先される。
【0060】
このように補間フレームを生成することにより、正しい視差を保ったブロックB(n’,L),B(n’,R)に黒い四角い物体を生成することができ、立体感が損なわれることのない補間フレームを生成することが可能となる。
【0061】
次に、白い背景の上を黒い四角い物体が右から左に動いてフレームインする場合の補間フレーム生成部102の動作を、図13を用いて説明する。図7〜10,12と同様に、図中(A)〜(D)は入力映像信号のフレーム、(E),(F)は補間フレームを表す。
【0062】
フレームF(n,R)のブロックB(n,R)にある物体が、フレームF(n+1,R)から探索される。その結果、ブロックB(n,R)内の画素値がブロックB(n+1,R)内の画素値と一致するため、動きベクトルV(n,R,B(n,R))が得られる。また、フレームF(n+1,R)のブロックB(n+1,R)にある物体がフレームF(n,R)から探索される。その結果、ブロックB(n+1,R)内の画素値がブロックB(n,R)内の画素値と一致するため、動きベクトルW(n+1,R,B(n+1,R))が得られる。
【0063】
フレームF(n,L)の各ブロックについて、SADが最小となる領域がフレームF(n+1,L)から探索され、動きベクトル{V(n,L)}が検出される。しかしながら、フレームF(n,L)には黒い四角い物体は存在しないため、動きベクトル{V(n,L)}には黒い四角い物体に関する動きベクトルは含まれない。また、フレームF(n+1,L)のブロックB(n+1,L)にある物体が、フレームF(n,L)から探索される。その結果、ブロックB(n+1,L)内の画素値と一致する領域が見つからないため、ブロックB(n+1,L)は“動きベクトル無し”と判定される。
【0064】
フレームF(n+1,L),F(n+1,R)間の視差ベクトル{PV(n+1,L)},{PV(n+1,R)}が検出される。視差ベクトル{PV(n+1,L)}から、ブロックB(n+1,L)とブロックB(n+1,R)が対応していることがわかる。
【0065】
ブロックB(n+1,L)は“動きベクトル無し”と判定されたため、対応するブロックB(n+1,R)の動きベクトルW(n+1,R,B(n+1,R))は0ベクトルに置換される。この置換後の動きベクトル(0ベクトル)を、AW(n+1,R,B(n+1,R))と表記する。
また、フレームF(n,R)において、動きベクトルが0ベクトルとされたブロックB(n+1,R)の位置から、置換前の動きベクトルW(n+1,R,B(n+1,R))
だけ移動することで、ブロックB(n,R)の位置が分かる。このブロックB(n,R)の動きベクトルV(n,R,B(n,R))はNI(補間しない)に変更される。この変更後の動きベクトル(NI)を、AV(n,R,B(n,R))と表記する。
また、動きベクトルW(n+1,L,B(n+1,L))は“動きベクトル無し”であるため、AW(n+1,L,B(n+1,L))=0ベクトルとされる。
【0066】
補間フレームAF(n’,L)を生成する際には、動きベクトルAW(n+1,L,B(n+1,L))が0ベクトルであるため、物体はブロックB(n+1,L)と同じ位置のブロックB(n’,L)に生成される。
補間フレームAF(n’,R)を生成する際には、動きベクトルAW(n+1,R,B(n+1,R))が0ベクトルであるため、物体はブロックB(n+1,R)と同じ位置のブロックB(n’,R)に生成される。ブロックB(n,R)は、動きベクトルAV(n,R,B(n,R))がNI(補間しない)であるため、補間フレームAF(n’,R)の生成には利用されない。
なお、補間フレームに対し、ブロックB(n+1,L),B(n+1,R)と他のブロック(白い背景のブロック)が重なるように生成される場合がある。しかしながら、それらのブロックの動きベクトルは“補正有り”の動きベクトルであるため、平均化処理は行われず、黒い四角い物体のデータ(画素値)が優先される。
【0067】
このように補間フレームを生成することにより、正しい視差を保ったブロックB(n’,L),B(n’,R)に黒い四角い物体を生成することができ、立体感が損なわれることのない補間フレームを生成することが可能となる。
【0068】
以上述べたように、本実施例によれは、一方の眼用のフレームにおいて動きベクトルの非検出位置が存在する場合には、該非検出位置に対し0ベクトルが設定される。また、他方のフレームにおいて上記非検出位置に対応する対応位置で検出された動きベクトルが0ベクトルに置き換えられる。そして、そのように設定された動きベクトルを用いて補間フレームを生成することで、正しい視差を保つことができる。即ち、本実施例によれば、立体映像のフレームレート変換において、一方の眼用のフレームで動きベクトルが検出できない場合でも、立体感が損なわれることのない補間フレームを生成することが可能となる。
また、本実施例では、動きベクトルが0ベクトルに置き換えられた一方の眼用のフレーム内の位置に対応する他方の眼用のフレーム内の位置の画素を、補間フレームの画素の生成に用いない構成とした。それにより、補間フレームにおいて、同じ被写体が異なる位置に生成されることを防ぐことができ、より立体感を維持することが可能となる。
なお、実施例1,2では、入力される映像信号がフレームシーケンシャル方式の立体映像の信号の場合について説明したが、本発明はフレームシーケンシャル方式に限定されるものではない。例えば右眼用の映像と左眼用の映像がそれぞれ独立して入力される場合でも、フレームメモリで両方の映像信号を記録してから補間フレームを生成すれば実施することができる。
【符号の説明】
【0069】
401,402 動きベクトル検出部
403,404 視差ベクトル検出部
405〜408,1105〜1108 動きベクトル補正部
409,410 補間処理部
【特許請求の範囲】
【請求項1】
立体映像を構成する第1映像と第2映像のそれぞれのフレーム間に補間フレームを生成する画像処理装置であって、
前記第1映像を構成する時間的に連続する2つのフレーム及び前記第2映像を構成する時間的に連続する2つのフレームを用いて、各映像のフレーム間の動きベクトルを検出する動きベクトル検出手段と、
前記第1映像を構成するフレームと当該フレームに対応する前記第2映像を構成するフレームとを用いて、当該2つのフレーム間の視差を表す視差ベクトルを検出する視差ベクトル検出手段と、
前記第1映像と前記第2映像のうちの一方の映像のフレームに動きベクトルが検出されない非検出位置が存在する場合には、該非検出位置に対応する他方の映像のフレームに含まれる対応位置を前記視差ベクトルを用いて検出し、前記非検出位置に対して前記対応位置における前記他方の映像のフレームの動きベクトルを設定する補正を行う補正手段と、
補正後の動きベクトルを用いて前記第1映像と前記第2映像のそれぞれに補間フレームを生成する補間フレーム生成手段と、
を有することを特徴とする画像処理装置。
【請求項2】
立体映像を構成する第1映像と第2映像のそれぞれのフレーム間に補間フレームを生成する画像処理装置であって、
前記第1映像を構成する時間的に連続する2つのフレーム及び前記第2映像を構成する時間的に連続する2つのフレームを用いて、各映像のフレーム間の動きベクトルを検出する動きベクトル検出手段と、
前記第1映像を構成するフレームと当該フレームに対応する前記第2映像を構成するフレームとを用いて、当該2つのフレーム間の視差を表す視差ベクトルを検出する視差ベクトル検出手段と、
前記第1映像と前記第2映像のうちの一方の映像のフレームに動きベクトルが検出されない非検出位置が存在する場合には、当該非検出位置に対して大きさ0の動きベクトルを設定すると共に、当該非検出位置に対応する他方の映像のフレームに含まれる対応位置を前記視差ベクトルを用いて検出し、前記対応位置で検出された動きベクトルを大きさ0の動きベクトルに置き換える補正を行う補正手段と、
補正後の動きベクトルを用いて前記第1映像と前記第2映像のそれぞれに補間フレームを生成する補間フレーム生成手段と、
を有することを特徴とする画像処理装置。
【請求項3】
前記補間フレーム生成手段は、
フレーム内の各画素を動きベクトルに基づいて補間フレーム内の位置に対応付けた後、補間フレーム内の位置毎に対応付けられた画素を用いて補間フレームの各画素を生成するものであり、
複数の画素が対応付けられた補間フレームの位置に対しては、該複数の画素のうち、前記補正手段で動きベクトルの検出結果が補正された位置の画素のみを用いて画素を生成する
ことを特徴とする請求項1または2に記載の画像処理装置。
【請求項4】
立体映像を構成する第1映像と第2映像のそれぞれのフレーム間に補間フレームを生成する画像処理装置により実行される画像処理方法であって、
前記第1映像を構成する時間的に連続する2つのフレーム及び前記第2映像を構成する時間的に連続する2つのフレームを用いて、各映像のフレーム間の動きベクトルを検出するステップと、
前記第1映像を構成するフレームと当該フレームに対応する前記第2映像を構成するフ
レームとを用いて、当該2つのフレーム間の視差を表す視差ベクトルを検出するステップと、
前記第1映像と前記第2映像のうちの一方の映像のフレームに動きベクトルが検出されない非検出位置が存在する場合には、該非検出位置に対応する他方の映像のフレームに含まれる対応位置を前記視差ベクトルを用いて検出し、前記非検出位置に対して前記対応位置における前記他方の映像のフレームの動きベクトルを設定する補正を行うステップと、
補正後の動きベクトルを用いて前記第1映像と前記第2映像のそれぞれに補間フレームを生成するステップと、
を有することを特徴とする画像処理方法。
【請求項5】
立体映像を構成する第1映像と第2映像のそれぞれのフレーム間に補間フレームを生成する画像処理装置により実行される画像処理方法であって、
前記第1映像を構成する時間的に連続する2つのフレーム及び前記第2映像を構成する時間的に連続する2つのフレームを用いて、各映像のフレーム間の動きベクトルを検出するステップと、
前記第1映像を構成するフレームと当該フレームに対応する前記第2映像を構成するフレームとを用いて、当該2つのフレーム間の視差を表す視差ベクトルを検出するステップと、
前記第1映像と前記第2映像のうちの一方の映像のフレームに動きベクトルが検出されない非検出位置が存在する場合には、当該非検出位置に対して大きさ0の動きベクトルを設定すると共に、当該非検出位置に対応する他方の映像のフレームに含まれる対応位置を前記視差ベクトルを用いて検出し、前記対応位置で検出された動きベクトルを大きさ0の動きベクトルに置き換える補正を行うステップと、
補正後の動きベクトルを用いて前記第1映像と前記第2映像のそれぞれに補間フレームを生成するステップと、
を有することを特徴とする画像処理方法。
【請求項1】
立体映像を構成する第1映像と第2映像のそれぞれのフレーム間に補間フレームを生成する画像処理装置であって、
前記第1映像を構成する時間的に連続する2つのフレーム及び前記第2映像を構成する時間的に連続する2つのフレームを用いて、各映像のフレーム間の動きベクトルを検出する動きベクトル検出手段と、
前記第1映像を構成するフレームと当該フレームに対応する前記第2映像を構成するフレームとを用いて、当該2つのフレーム間の視差を表す視差ベクトルを検出する視差ベクトル検出手段と、
前記第1映像と前記第2映像のうちの一方の映像のフレームに動きベクトルが検出されない非検出位置が存在する場合には、該非検出位置に対応する他方の映像のフレームに含まれる対応位置を前記視差ベクトルを用いて検出し、前記非検出位置に対して前記対応位置における前記他方の映像のフレームの動きベクトルを設定する補正を行う補正手段と、
補正後の動きベクトルを用いて前記第1映像と前記第2映像のそれぞれに補間フレームを生成する補間フレーム生成手段と、
を有することを特徴とする画像処理装置。
【請求項2】
立体映像を構成する第1映像と第2映像のそれぞれのフレーム間に補間フレームを生成する画像処理装置であって、
前記第1映像を構成する時間的に連続する2つのフレーム及び前記第2映像を構成する時間的に連続する2つのフレームを用いて、各映像のフレーム間の動きベクトルを検出する動きベクトル検出手段と、
前記第1映像を構成するフレームと当該フレームに対応する前記第2映像を構成するフレームとを用いて、当該2つのフレーム間の視差を表す視差ベクトルを検出する視差ベクトル検出手段と、
前記第1映像と前記第2映像のうちの一方の映像のフレームに動きベクトルが検出されない非検出位置が存在する場合には、当該非検出位置に対して大きさ0の動きベクトルを設定すると共に、当該非検出位置に対応する他方の映像のフレームに含まれる対応位置を前記視差ベクトルを用いて検出し、前記対応位置で検出された動きベクトルを大きさ0の動きベクトルに置き換える補正を行う補正手段と、
補正後の動きベクトルを用いて前記第1映像と前記第2映像のそれぞれに補間フレームを生成する補間フレーム生成手段と、
を有することを特徴とする画像処理装置。
【請求項3】
前記補間フレーム生成手段は、
フレーム内の各画素を動きベクトルに基づいて補間フレーム内の位置に対応付けた後、補間フレーム内の位置毎に対応付けられた画素を用いて補間フレームの各画素を生成するものであり、
複数の画素が対応付けられた補間フレームの位置に対しては、該複数の画素のうち、前記補正手段で動きベクトルの検出結果が補正された位置の画素のみを用いて画素を生成する
ことを特徴とする請求項1または2に記載の画像処理装置。
【請求項4】
立体映像を構成する第1映像と第2映像のそれぞれのフレーム間に補間フレームを生成する画像処理装置により実行される画像処理方法であって、
前記第1映像を構成する時間的に連続する2つのフレーム及び前記第2映像を構成する時間的に連続する2つのフレームを用いて、各映像のフレーム間の動きベクトルを検出するステップと、
前記第1映像を構成するフレームと当該フレームに対応する前記第2映像を構成するフ
レームとを用いて、当該2つのフレーム間の視差を表す視差ベクトルを検出するステップと、
前記第1映像と前記第2映像のうちの一方の映像のフレームに動きベクトルが検出されない非検出位置が存在する場合には、該非検出位置に対応する他方の映像のフレームに含まれる対応位置を前記視差ベクトルを用いて検出し、前記非検出位置に対して前記対応位置における前記他方の映像のフレームの動きベクトルを設定する補正を行うステップと、
補正後の動きベクトルを用いて前記第1映像と前記第2映像のそれぞれに補間フレームを生成するステップと、
を有することを特徴とする画像処理方法。
【請求項5】
立体映像を構成する第1映像と第2映像のそれぞれのフレーム間に補間フレームを生成する画像処理装置により実行される画像処理方法であって、
前記第1映像を構成する時間的に連続する2つのフレーム及び前記第2映像を構成する時間的に連続する2つのフレームを用いて、各映像のフレーム間の動きベクトルを検出するステップと、
前記第1映像を構成するフレームと当該フレームに対応する前記第2映像を構成するフレームとを用いて、当該2つのフレーム間の視差を表す視差ベクトルを検出するステップと、
前記第1映像と前記第2映像のうちの一方の映像のフレームに動きベクトルが検出されない非検出位置が存在する場合には、当該非検出位置に対して大きさ0の動きベクトルを設定すると共に、当該非検出位置に対応する他方の映像のフレームに含まれる対応位置を前記視差ベクトルを用いて検出し、前記対応位置で検出された動きベクトルを大きさ0の動きベクトルに置き換える補正を行うステップと、
補正後の動きベクトルを用いて前記第1映像と前記第2映像のそれぞれに補間フレームを生成するステップと、
を有することを特徴とする画像処理方法。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【公開番号】特開2011−223493(P2011−223493A)
【公開日】平成23年11月4日(2011.11.4)
【国際特許分類】
【出願番号】特願2010−93012(P2010−93012)
【出願日】平成22年4月14日(2010.4.14)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】
【公開日】平成23年11月4日(2011.11.4)
【国際特許分類】
【出願日】平成22年4月14日(2010.4.14)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】
[ Back to top ]