以下、本発明の実施の形態を図面に基づき説明する。
図1は、本発明の一実施形態に係る記録再生装置100の構成を示した図である。
同図に示すように、記録再生装置100は、CPU(Central Processing Unit)1、RAM(Random Access Memory)2、操作入力部3、映像特徴検出部4、デジタルチューナ5、IEEE1394インタフェース6、Ethernet(登録商標)/無線LAN(Local Area Network)インタフェース7、USB(Universal Serial Bus)インタフェース8、メモリカードインタフェース9、HDD10、光ディスクドライブ11、バッファコントローラ13、セレクタ14、デマルチプレクサ15、AV(Audio/Video)デコーダ16、OSD(On Screen Display)17、映像D/A(Digital/Analog)コンバータ18及び音声D/Aコンバータ19を有している。
CPU1は、必要に応じてRAM2等に適宜アクセスし、記録再生装置100の各ブロック全体を制御する。RAM2は、CPU1の作業用領域等として用いられ、OS(Operating System)やプログラム、処理データ等を一時的に保持するメモリである。
操作入力部3は、ボタン、スイッチ、キー、タッチパネルや、リモートコントローラ(図示せず)から送信される赤外線信号の受光部等で構成され、ユーザの操作による各種設定値や指令を入力してCPU1へ出力する。
デジタルチューナ5は、CPU1の制御に従って、図示しないアンテナを介してデジタル放送の放送番組の放送信号を受信し、特定のチャンネルの放送信号を選局及び復調する。この放送信号は、セレクタ14を介してデマルチプレクサ15に出力され再生させたり、バッファコントローラ13を介して、HDD10に記録されたり、光ディスクドライブ11に挿入された光ディスク12へ記録されたりする。
IEEE1394インタフェース6は、例えばデジタルビデオカメラ等の外部機器に接続可能である。例えばデジタルビデオカメラによって撮影され記録された映像コンテンツは、上記デジタルチューナ5によって受信された放送番組の映像コンテンツと同様に、再生されたり、HDD10や光ディスク12へ記録されたりする。
Ethernet(登録商標)/無線LANインタフェース7は、例えばPCや他の記録再生装置に記録された映像コンテンツを、Ethernet(登録商標)または無線LAN経由で入力する。この映像コンテンツも、再生や、HDD10または光ディスク12への記録が可能である。
USBインタフェース8は、USBを介して例えばデジタルカメラ等の機器やいわゆるUSBメモリ等の外部記憶装置から映像コンテンツを入力する。この映像コンテンツも、再生や、HDD10または光ディスク12への記録が可能である。
メモリカードインタフェース9は、例えばフラッシュメモリを内蔵したメモリカードと接続して、当該メモリカードに記録された映像コンテンツを入力する。この映像コンテンツも、再生や、HDD10または光ディスク12への記録が可能である。
HDD10は、放送信号として受信したまたは外部機器から入力した各種映像コンテンツの他、各種プログラムやデータ等を内蔵のハードディスクに記録し、また再生時にはそれらを当該ハードディスクから読み出し、バッファコントローラ13へ出力する。
光ディスクドライブ11は、上記映像コンテンツ等を光ディスク12に記録し、また再生時にはそれらを読み出し、バッファコントローラ13へ出力する。光ディスク12は、例えばDVD、BD、CD等である。
バッファコントローラ13は、例えば上記デジタルチューナ5やその他の各種インタフェースから連続的に供給される映像コンテンツの、HDD10または光ディスク12への書き込みのタイミングやデータ量を制御し、当該映像コンテンツを断続的に書き込む。また、バッファコントローラ13は、HDD10や光ディスク12に記録された映像コンテンツの読み出しのタイミングやデータ量を制御し、断続的に読み出された映像コンテンツを、デマルチプレクサ15へ連続的に供給する。
セレクタ14は、上記デジタルチューナ5、各種インタフェース、HDD10及び光ディスクドライブ11のいずれかから入力される映像コンテンツを、CPU1からの制御信号に基づき選択する。
デマルチプレクサ15は、前記バッファコントローラ13から入力された、多重化された映像コンテンツを、映像信号と音声信号とに分離して、それらをAVデコーダ16へ出力する。
AVデコーダ16は、例えばMPEG(Moving Picture Expert Group)−2やMPEG−4等の形式でエンコードされた映像信号及び音声信号をそれぞれデコードして、映像信号をOSD17へ、また音声信号をD/Aコンバータ19へ出力する。
OSD17は、図示しないディスプレイに表示するためのグラフィックス等を生成して、上記映像信号との合成処理や切り替え処理を施し、処理後の映像信号を映像D/Aコンバータ18へ出力する。映像D/Aコンバータ18は、OSD17でグラフィック処理を施された映像信号をD/A変換によりNTSC(National Television Standards Committee)信号とし、図示しないディスプレイに出力して表示させる。
音声D/Aコンバータ19は、上記AVデコーダ16から入力された音声信号をD/A変換して、図示しないスピーカに出力して再生させる。
映像特徴検出部4は、AVデコーダ16によるデコード前の映像信号、または、デコード後の映像信号から、映像特徴を検出する。図2及び図3は、この映像特徴について説明した図である。
図2(a)では、シーンS1〜S6へ進むに従ってカメラを左方向または右方向へ移動(パン)させて撮影した映像が示されている。図2(b)では、シーンS1〜S6へ進むに従ってカメラをズーム(ズームイン)させて撮影した映像が示されている。本実施形態では、このようなパン、チルト(図示せず)、ズームといった、カメラワークにより生じる映像特徴をカメラ動作系特徴と称する。
図3(a)では、シーンS3とS4との間のカット点faにてシーンが切り替わる様子が示されている。図3(b)では、シーンS1〜シーンS3へ進むに従って1つのシーンが徐々にフェードアウトし、代わってシーンS4〜シーンS6へ進むに従って別のシーンが徐々にフェードインしている様子が示されている。本実施形態では、このようなカット、フェードといった映像効果、または、例えば複数の場所で撮影したシーンを結合すること等によって生じるシーン間の類似性(図示せず)といった、映像の編集作業により生じる映像特徴を映像編集系特徴と称する。
映像特徴検出部4は、このようなカメラ動作系特徴及び映像編集系特徴を、後述する共通の信号処理系により検出し、検出した各映像特徴を用いて、例えばハイライトシーン生成、チャプタ生成等の映像コンテンツ処理を行う。
図4は、上記カメラ動作系特徴について概念的に示した図である。
同図(a)は左パンを示しており、この場合、映像中の物体は右方向へ移動する。
同図(b)は右パンを示しており、この場合、映像中の物体は左方向へ移動する。
同図(c)は下チルトを示しており、この場合、映像中の物体は上方向へ移動する。
同図(d)は上チルトを示しており、この場合、映像中の物体は下方向へ移動する。
同図(e)はズームインを示しており、この場合、映像中の物体は拡大する。
同図(f)はズームアウトを示しており、この場合、映像中の物体は縮小する。
図5は、ズーム時の画像の変化量を概念的に示した図である。
映像コンテンツからカメラ動作系特徴を検出するには、映像コンテンツ中からブロックマッチングにより動きベクトルを検出する必要がある。しかし、上記図4に示すように、ズーム動作では、パン動作やチルト動作に比べて、動作中の画像の移動量が小さいため、その検出レベルも小さいと考えられる。したがって、従来のように1つのブロックによりブロックマッチングを行うと、ズームを検出できずに誤検出が発生する可能性がある。そこで、本実施形態においては、複数のブロックを組み合わせてブロックマッチングを行うことを考える。
ここで、図5の矢印dに示すように、ズームによる画像の変化は、放射状方向(斜め方向)における変化であるため、この変化量をXY方向に射影した場合、その変化量(矢印x及びy)はいずれも元の放射状方向の変化量に比べて小さくなる。したがって、1つのブロックと、そのXまたはY方向の他のブロックとを組み合わせてブロックマッチングを行うよりは、放射状方向の他のブロックと組み合わせてブロックマッチングを行う方が、マッチングの誤検出が改善されると考えられる。よって、本実施形態においては、映像特徴検出部4は、放射状方向のブロックを組み合わせてブロックマッチングを行う。この具体的処理については後述する。
ところで、最近の家庭用ビデオカメラには、いわゆる手振れ補正機能が搭載されたものも多いが、手振れ補正機能によって補正できる補正量には限界があるため、家庭用ビデオカメラで撮影した映像コンテンツには、少なからず手振れ映像が含まれる可能性が高い。また実際に、本発明者等は、家庭用ビデオカメラで撮影した映像と、放送番組のようにスタジオで撮影した映像とを実験により比較したところ、両者では映像の動きベクトルの振動量が大きく異なることを確認した。
図6は、上記実験結果を基に、手振れ映像を概念的に示した図である。同図に示すように、手振れ映像では、フレーム単位で見ると、パンやチルトがランダムに発生していることが分かる。したがって、映像コンテンツ中の所定区間におけるパンやチルトの時系列的変化の挙動、すなわち、動きベクトルの時系列的変化の挙動を検出することで、手振れを検出することができる。
そして、手振れ映像の有無または頻度を検出することで、放映コンテンツを記録した映像コンテンツと、家庭用ビデオカメラで撮影した映像コンテンツとを区別することが可能となる。記録再生装置100においては、多種多様なマルチメディアコンテンツを蓄積することが想定されるため、映像コンテンツを区別することは、その整理の際等において非常に有効であると考えられる。そこで、本実施形態において、映像特徴検出部4は、上記カメラ動作系特徴として、上記パン、チルト及びズームのほか、手振れを検出することとしている。この手振れ検出の具体的処理についても後述する。
図7は、上記映像特徴検出部4の具体的構成を示したブロック図である。
同図に示すように、映像特徴検出部4は、画像処理部21、1フレーム間メモリ部22、10フレーム間メモリ部23、20フレーム間メモリ部24、30フレーム間メモリ部25、これらメモリ部毎のマッチング処理部26、28、30及び32、フェード/カット処理部27、29、31及び33、動きベクトル処理部34、カメラ特徴判定部36、フェード/カット判定部35及びシーンID処理部37を有する。
画像処理部21は、上記AVデコーダ16によりデコードされた映像コンテンツの、各フレームのベースバンド帯域の画像データ(具体的には、輝度信号Y、色差信号Cb及びCr)をフレーム番号順に入力し、当該画像データを基に、動きベクトル検出の対象となる参照画像領域及び動きベクトル検出の基準となる位置(以下、基準位置と称する)の設定、動きベクトルの探索領域の設定、及びブロックマッチング処理の基準となるブロック(以下、基準ブロックと称する)の抽出等の処理を行う。これらの処理の詳細については後述する。
なお、ベースバンド帯域で処理を行うのは、記録再生装置100で再生される映像コンテンツは、MPEGデータのほか、デジタル記録したDV(Digital Video)方式のデータ、あるいはアナログ記録したVHS(Video Home System)方式や8mm方式のデータ等、様々な方式の映像コンテンツが混在している場合が想定でき、これらの映像コンテンツからの映像特徴の抽出処理を、極力共通の信号処理系で行うためである。
1フレーム間メモリ部22、10フレーム間メモリ部23、20フレーム間メモリ部24、30フレーム間メモリ部25は、上記基準ブロックを抽出したフレーム(以下、基準フレームと称する)からそれぞれ1フレーム間隔、10フレーム間隔、20フレーム間隔、30フレーム間隔を置いた各フレームまでの各画像データとを蓄積する。勿論、フレーム間隔はこれらに限られるものではない。
マッチング処理部26、28、30及び32は、それぞれ、上記画像処理部21から入力する基準フレームと、各フレーム間メモリ部22〜25から入力する各フレーム(以下、探索フレームと称する)の各探索領域間で、ブロックマッチング処理を行い、その結果を動きベクトル処理部34へ出力する。ブロックマッチング処理では、探索フレーム内で、上記基準フレームの基準ブロックと同一形状のブロック(以下、探索ブロックと称する)を移動させながら、基準ブロックと探索ブロックとの類似度が最大となる位置を探索する。そして、各マッチング処理部26、28、30及び32は、上記基準位置から上記探索された位置までの動きベクトル量(すなわち、x方向(水平方向)及びy方向(垂直方向)における各移動量及び移動方向)を動きベクトル処理部34へ出力する。また、各マッチング処理部26、28、30及び32は、基準ブロックと探索ブロックとの間のY、Cb及びCrの残差値をそれぞれ各フェード/カット処理部27、29、31及び33へ出力する。これら処理の詳細についても後述する。
フェード/カット処理部27、29、31及び33は、それぞれ、上記各マッチング処理部26、28、30及び32から入力したマッチング後の各差分値を基に、フェード/カット評価値を生成し、フェード/カット判定部35へ出力する。この処理の詳細についても後述する。
なお、フェード/カット処理部27、29、31及び33は、上記画像処理部21から入力される上記基準ブロックと、各フレーム間メモリ部22〜25から入力される、上記ブロックマッチング処理に用いた各探索ブロックとの差分値を独自に算出するようにしても構わない。
動きベクトル処理部34は、上記各マッチング処理部26、28、30及び32から入力されたブロックマッチング処理の結果としての上記動きベクトル量を基に、例えば40フレーム等、30フレーム以上フレーム間隔を置いた位置における動きベクトル量を推定し、その推定動きベクトル量をカメラ特徴判定部36へ出力する。この処理の詳細についても後述する。
カメラ特徴判定部36は、上記動きベクトル処理部34から入力された推定動きベクトル量を基に、後述するアフィン変換モデルを用いた重回帰分析により、映像コンテンツ中のパン、チルト、ズーム及び手振れの各カメラ動作系特徴を判定し、判定結果をCPU1へ出力する。この処理の詳細についても後述する。
フェード/カット判定部35は、上記各フェード/カット処理部27、29、31及び33から入力されたフェード/カット評価値を基に、映像コンテンツ中のフェードまたはカットの各映像編集系特徴を判定し、CPU1へ出力する。
シーンID処理部37は、上記各フレーム間メモリ部22〜25から入力された各探索フレームの画像データを基に、所定のベクトル間距離演算処理を行ってフレーム間の類似度を判定し、この判定結果に基づいて、各フレームに当該シーンIDを付与し、CPU1へ出力する。この処理の詳細についても後述する。
次に、以上のように構成された記録再生装置100の動作について説明する。
図8は、記録再生装置100が映像特徴を検出する際の処理の流れを示したフローチャートである。
同図に示すように、まず、映像特徴検出部4は、各映像特徴の検出フラグの初期設定を行う(ステップ41)。検出フラグとは、映像コンテンツ中から、上記パン、チルト、ズーム及び手振れの各カメラ動作系特徴と、フェード及びカットの各映像編集系特徴とがそれぞれ検出されたことを示すフラグである。各映像特徴の検出フラグは、それぞれDpan、Dtilt、Dzoom、Dbure、Dfade及びDcutで表され、それぞれのフラグ値を0にすることで各初期設定が行われる。
続いて、映像特徴検出部4は、上記画像処理部21、各フレーム間メモリ部22〜25及び各マッチング処理部26、28、30及び32、動きベクトル処理部34により、映像コンテンツ中の動きベクトルを検出する(ステップ42)。
ここで、この動きベクトル検出処理について詳述する。図9は、動きベクトル検出処理の流れを示したフローチャートである。
ところで、上述したように、動きベクトル検出処理は、上記基準フレームと所定フレーム間隔を置いた探索フレームとの間でそれぞれ探索領域を設定し、当該探索領域間でブロックマッチング処理を行うことで検出できる。しかし、例えば映像コンテンツを撮影したカメラの動きが早い場合には、上記フレーム間隔があまりに長いと、その間隔で映像の動きが頻繁に起きると想定できるため、検出分解能が低くなり、正確な動きベクトル検出ができなくなる。
また、カメラの動きが遅い場合に、上記フレーム間隔があまりに短いと、その間隔で検出される動きベクトルの検出値があまりに小さくなり、この場合も正確な動きベクトル検出ができなくなる。
上述したカメラの動きが早い場合には、上記基準ブロックが探索領域を超えて移動することも想定できる。しかし、検出過程で、探索範囲内であるか、探索範囲を超えたかを判断することはできない。
そこで、本実施形態においては、映像特徴検出部4は、各ブロックマッチングの検出点での移動量と、マッチングの残差値とから、探索の確からしさを推定し、確からしくないと判断できる場合には、その検出データは採用しないで、確からしい検出データのみを採用し、他のフレーム間隔のマッチングデータから、より長いフレーム間隔における推定動きベクトル量を推定する。そして、映像特徴検出部4は、この推定動きベクトル量を、映像特徴の検出に用いる動きベクトル量としている。
図9に示すように、まず、映像特徴検出部4は、上記確からしい検出データの数のカウンタ値mを0に設定する(ステップ91)。カウンタ値mの詳細については後述する。
続いて、映像特徴検出部4は、画像処理部21から入力された基準フレームと、上記各マッチング処理部26、28、30及び32により、上記各フレーム間メモリ部22〜25に記憶された探索フレームを用いて、1フレーム間隔、10フレーム間隔、20フレーム間隔及び30フレーム間隔の各フレーム間隔における動きベクトル検出処理を行う(ステップ92〜95)。この各処理の詳細については後述する。
続いて、映像特徴検出部4は、上記動きベクトル処理部34により、各フレーム間隔について検出した動きベクトルデータを基に、40フレーム間隔における動きベクトルを推定し(ステップ96)、この推定された動きベクトルデータを最終的な動きベクトルデータとしてカメラ特徴判定部36へ出力する(ステップ97)。この各処理の詳細についても後述する。
そして、映像特徴検出部4は、1つの映像コンテンツを構成する全てのフレームについて動きベクトルデータを出力したか否かを判断し、動きベクトルを検出すべきフレームがなくなるまで上記各ステップの処理を繰り返す(ステップ98)。
図10〜図13は、上記図9のステップ92〜95に示した各フレーム間隔における動きベクトル検出処理の詳細を示したフローチャートである。まず、上記ステップ92における1フレーム間隔での動きベクトル処理について説明する。
図10に示すように、まず、画像処理部21及びマッチング処理部26は、基準フレームと、当該基準フレームから1フレーム間隔を置いた探索フレームとの間でブロックマッチング処理を行う(ステップ921)。
ここで、このブロックマッチング処理の詳細について説明する。図14は、当該ブロックマッチング処理の流れを示したフローチャートである。
同図に示すように、まず、画像処理部21は、基準フレームに参照画像領域及び探索領域を設定する(ステップ101)。図15は、当該参照画像領域及び探索領域を設定する様子を示した図である。
同図に示すように、マッチング処理部26は、元画像(S)である基準フレーム71内に、動きベクトルの探索範囲を規定する探索領域72を設定し、当該探索領域72の内部に、動きベクトルの検出対象範囲として参照画像領域73を設定する。
そして、マッチング処理部26は、参照画像領域73を例えば8×8=64個の領域74に分割し、各領域の中心点を、動きベクトルの検出対象点Pn(n=0〜63)として設定する。
なお、基準フレーム71のサイズは例えば720×480(ピクセル)であるが、これに限られるものではない。また、元画像(S)を、上記基準フレーム71の縮小画像としても構わない。例えば、基準フレーム71が720×480(ピクセル)である場合、その1/4のサイズ(縦横各1/2)である360×240(ピクセル)の画像が元画像(s)とされ、この内部に上記探索領域72及び参照画像領域73が設定される。これにより、後のブロックマッチング処理において、その精度を低下させることなく、各マッチング処理部26、28、30及び32の負荷を低減することが可能となる。
図10に戻り、画像処理部21は、動きベクトルの検出対象点Pnをn=0に設定し、当該P0についてのブロックマッチング処理の基準となる基準ブロックの設定を行う(ステップ102)。図16は、この基準ブロックの設定方法を示した図である。
同図に示すように、画像処理部21は、まず、上記基準フレーム71の中心を原点O(0,0)とした場合の、検出対象点Pn(この場合P0)の座標(xn,yn)を取得する(ステップ103)。続いて、画像処理部21は、所定の値anを設定する(ステップ104)。このanは、例えば以下で設定される基準ブロックの1辺の長さの1/2とされる。anの値は例えば4とされるが、これに限られるものではない。
続いて、画像処理部21は、図16(a)に示すように、基準フレーム71上で関数:Fn(x)=knx (kn=yn/xn)を想定し、上記設定した値anを用いて、当該関数における以下の2つの座標を求める(ステップ105)。
Pn1(xn-an, Fn(xn-an))
Pn2(xn+an, Fn(xn+an))
続いて、画像処理部21は、上記座標点Pn1を中心とする基準ブロックBn1を設定し(ステップ106)、この基準ブロックBn1をs×sの小ブロックbn1に分割する(ステップ107)。
続いて、画像処理部21は、上記座標点Pn2を中心とする基準ブロックBn2を設定し(ステップ108)、この基準ブロックBn1をs×sの小ブロックbn2に分割する(ステップ109)。
図16(b)に示すように、s=4の場合、基準ブロックBn1及びBn2は、それぞれ小ブロックb0〜b15により構成され、また同図(c)に示すように、各小ブロックbn1及びbn2は、例えば4つの画素データの平均値となっている。
ここで、この4つの画素データをそれぞれdn1、dn2、dn3及びdn4とすると、各小ブロックbn1及びbn2は、Y、Cb及びCrの3次元のベクトルデータとして考えることができる。これらの各データ成分を_y、_cb及び_crの添え字を付けて表現すると、例えば小ブロックbn1の各データ成分は次式で表現できる。
bn1_y = (dn1_y + dn2_y + dn3_y + dn4_y) / 4
bn1_cb = (dn1_cb + dn2_cb + dn3_cb + dn4_cb) /4
bn1_cr = (dn1_cr + dn2_cr + dn3_cr + dn4_cr) / 4
以上のように基準ブロックBn1及びBn2の設定が完了すると、各マッチング処理部26、28、30及び32による10フレーム間隔、20フレーム間隔及び30フレーム間隔でのブロックマッチング処理が開始される。なお、これ以降は、マッチング処理部26による1フレーム間隔でのブロックマッチング処理を説明するが、他のマッチング処理部28、30及び32による各フレーム間隔でのブロックマッチング処理も同様である。
マッチング処理部26は、上記基準ブロックBn1及びBn2の各小ブロックbn1及びbn2に基づいて、ブロックマッチング処理を行う(ステップ110)。図17は、このブロックマッチング処理の様子を示した図である。同図(a)は基準フレーム71における基準ブロックBn1及びBn2(以下、2つの基準ブロックをまとめて基準ブロックBnとも称する)を示しており、同図(b)は探索フレーム75における探索ブロックBm1及びBm2(以下、2つの探索ブロックをまとめて探索ブロックBmとも称する)を示している。
これらの図に示すように、マッチング処理部26は、上記基準フレーム71から上記設定した2つの基準ブロックBnを抽出し、当該基準ブロックBnが、所定フレーム間隔(この場合1フレーム間隔)を置いた探索フレーム75内のどの位置に移動したかを、パターンマッチングにより検出する。すなわち、探索フレーム75の上記探索領域72内で上記基準ブロックBnと同一形状及び同一サイズの探索対象ブロックを抽出し、当該探索対象ブロックを1画素ずつ移動させていき、上記基準ブロックBnの各小ブロックbnの上記Y、Cb及びCrの各データ成分の各ベクトル距離が最小となるような探索ブロックBmの位置Pmを検出する。上記基準フレーム71の上記Pnから検出位置Pmまでの移動量Vn及び移動方向が動きベクトルMVとなる。また、マッチング処理部26は、上記移動量とともに基準ブロックBnと探索ブロックBmとのマッチング後の残差値も算出する。
マッチング処理部26は、検出対象点Pnについての動きベクトル検出が終了すると、nをインクリメントし(ステップ112)、nがnmax以上となるまで以上の処理を繰り返す(ステップ113)。本実施形態においては、nmaxはn=63である。
以上の処理により、基準ブロックBn1及びBn2は、基準フレーム71の中心から放射状方向に設定されることになる。すなわち、各ブロックBn1及びBn2は、基準フレーム71の中心を始点とする半直線上にそれぞれ中心を有するように設定される。このように、放射状方向にブロックを設定することで、上述したように、カメラ動作系特徴のうち、特にズームの動きベクトルの検出精度を格段に向上させることができる。また、2つのブロックを組み合わせてブロックマッチングを行うことで、従来のように1つのブロックによりブロックマッチングを行う場合に比べて、ズームのみならず、パンやチルトといったXY方向における動きベクトルの検出精度も向上させることができる。
マッチング処理部26と同様に、マッチング処理部28、30及び32も、それぞれ10フレーム間隔、20フレーム間隔及び30フレーム間隔の探索フレーム75を用いて上記動きベクトルの検出を行う。
ここで、上述したように、本実施形態においては、映像特徴検出部4は、動きベクトルの検出精度を向上させるため、検出された動きベクトルが確からしくないと判断された場合には、その検出データは採用しないこととしている。以下、この処理の詳細な説明として、上記図10に戻り、ステップ922からの処理を説明する。
上述したように、マッチング処理部26は、動きベクトルを探索するための探索領域72を設定するが、マッチング処理部26は、検出精度向上のために、この探索領域72とは別に、新たな探索範囲を設定する。この探索範囲は、検出対象点Pnから例えばx及びy方向にそれぞれ±8画素とする。すなわち、検出位置Pmが、検出対象点Pnから+方向または−方向に8未満で、かつ、上記マッチングの残差値が所定の閾値Eth未満であることを判定基準として、検出データが当該判定基準を超える場合には、その検出データは確からしくないデータとして、採用しないこととする。もちろん、探索範囲はこの数値に限られるものではない。
ここで、上記1フレーム間隔における動きベクトル検出でのx方向(水平方向)及びy方向(垂直方向)における移動量をそれぞれV1xn、V1ynとし、残差値をE1nとする。
図10に示すように、マッチング処理部26は、1フレーム間のブロックマッチング処理により検出した移動量V1xn、V1yn及び残差値E1nを検出する(ステップ922)。そして、マッチング処理部26は、上記判定基準により、
|V1xn|<8、かつ、|V1yn|<8、かつ、E1n<Eth
であるか否かを判断する(ステップ923、924)。上記各値が判定基準を満たす場合には、マッチング処理部26は、便宜的な重み係数k1をk1=1とし、上記確からしい検出データの数のカウンタ値mをm=m+1とする(ステップ925)。また、上記各値が判定基準を満たさない場合には、マッチング処理部26は、k1=0とする(ステップ926)。そして、マッチング処理部26は、上記検出した移動量V1xn、V1yn及び残差値E1nと共に、上記重み係数K1及びカウンタ値mを動きベクトル処理部34へ出力する。
次に、10フレーム間隔における動きベクトル検出処理のうち、ブロックマッチング処理後の処理を説明する。ここで、上記10フレーム間隔における動きベクトル検出でのx方向(水平方向)及びy方向(垂直方向)における移動量をそれぞれV10xn、V10ynとし、残差値をE10nとする。
図11に示すように、マッチング処理部28は、10フレーム間のブロックマッチング処理により検出した移動量V10xn、V10yn、及び残差値E10nを検出する(ステップ932)。そして、マッチング処理部28は、上記判定基準により、
|V10xn|<8、かつ、|V10yn|<8、かつ、E10n<Eth
であるか否かを判断する(ステップ933、934)。上記各値が判定基準を満たす場合には、マッチング処理部28は、便宜的な重み係数k10をk10=1とし、上記確からしい検出データの数のカウンタ値mをm=m+1とする(ステップ935)。また、上記各値が判定基準を満たさない場合には、マッチング処理部28は、k10=0とする(ステップ936)。そして、マッチング処理部28は、上記検出した移動量V10xn、V10yn及び残差値E10nと共に、上記重み係数K10及びカウンタ値mを動きベクトル処理部34へ出力する。
次に、20フレーム間隔における動きベクトル検出処理のうち、ブロックマッチング処理後の処理を説明する。ここで、上記20フレーム間隔における動きベクトル検出でのx方向(水平方向)及びy方向(垂直方向)における移動量をそれぞれV20xn、V20ynとし、残差値をE20nとする。
図12に示すように、マッチング処理部30は、20フレーム間のブロックマッチング処理により検出した移動量V20xn、V20yn、及び残差値E20nを検出する(ステップ942)。そして、マッチング処理部30は、上記判定基準により、
|V20xn|<8、かつ、|V20yn|<8、かつ、E20n<Eth
であるか否かを判断する(ステップ943、944)。上記各値が判定基準を満たす場合には、マッチング処理部30は、便宜的な重み係数k20をk20=1とし、上記確からしい検出データの数のカウンタ値mをm=m+1とする(ステップ945)。また、上記各値が判定基準を満たさない場合には、マッチング処理部30は、k20=0とする(ステップ946)。そして、マッチング処理部30は、上記検出した移動量V20xn、V20yn及び残差値E20nと共に、上記重み係数K20及びカウンタ値mを動きベクトル処理部34へ出力する。
次に、30フレーム間隔における動きベクトル検出処理のうち、ブロックマッチング処理後の処理を説明する。ここで、上記30フレーム間隔における動きベクトル検出でのx方向(水平方向)及びy方向(垂直方向)における移動量をそれぞれV30xn、V30ynとし、残差値をE30nとする。
図13に示すように、マッチング処理部32は、30フレーム間のブロックマッチング処理により検出した移動量V30xn、V30yn、及び残差値E30nを検出する(ステップ952)。そして、マッチング処理部32は、上記判定基準により、
|V30xn|<8、かつ、|V30yn|<8、かつ、E30n<Eth
であるか否かを判断する(ステップ953、954)。上記各値が判定基準を満たす場合には、マッチング処理部32は、便宜的な重み係数k30をk30=1とし、上記確からしい検出データの数のカウンタ値mをm=m+1とする(ステップ955)。また、上記各値が判定基準を満たさない場合には、マッチング処理部32は、k30=0とする(ステップ956)。そして、マッチング処理部32は、上記検出した移動量V30xn、V30yn及び残差値E30nと共に、上記重み係数K30及びカウンタ値mを動きベクトル処理部34へ出力する。
次に、上記図9のステップ96における、動きベクトル処理部34による動きベクトル推定処理の詳細について説明する。図18は、この動きベクトル推定処理の流れを示したフローチャートである。ここでは、40フレーム間における動きベクトルを推定するために、各検出フレーム間隔と移動量とから、便宜的な勾配を求めることを考える。図19は、この勾配について示した図である。
図18に示すように、動きベクトル処理部34は、まず、上記各マッチング処理部26、28、30及び32からそれぞれ入力されたカウンタ値mを合計し、その結果が1以上であるか否かを判断する(ステップ961)。カウンタ値の合計が1以上の場合(Yes)、動きベクトル処理部34は、上記各フレーム間での動きベクトルの勾配を算出する(ステップ962)。
ここで、まず、1フレーム間隔をL1tとし、このL1tと上記移動量V1xnとから、この1フレーム間隔における動きベクトルの勾配T1xnを求める場合について説明する。
この検出フレーム間隔L1tは、基準フレーム71間のpts(Presentation Time Stamp)時間間隔p0と、当該基準フレーム71から1フレーム後の探索フレーム75間のpts時間間隔p1tとの比として、次式で算出することができる。
L1t=p1t/p0
これは、映像コンテンツによって、フレームレートが異なる場合が想定できることから、上記勾配を算出する場合に、1フレーム間隔の時間をいわば正規化するためである。
よって、x方向における移動量についての勾配は、次式で求められる。
T1xn=V1xn/L1t
また、y方向における移動量についての勾配は、次式で求められる。
T1yn=V1yn/L1t
同様に、10フレーム間隔をL10tとし、このL10tと上記移動量V10xnとから、この10フレーム間隔における動きベクトルの勾配T10xnを求める場合について説明する。
この検出フレーム間隔L10tは、基準フレーム71間のpts時間間隔p0と、当該基準フレーム71から10フレーム後の探索フレーム75間のpts時間間隔p10tとの比として、次式で算出することができる。
L10t=p10t/p0
よって、x方向における移動量についての勾配は、次式で求められる。
T10xn=V10xn/L10t
また、y方向における移動量についての勾配は、次式で求められる。
T10yn=V10yn/L10t
同様に、20フレーム間隔をL20tとし、このL20tと上記移動量V20xnとから、この20フレーム間隔における動きベクトルの勾配T20xnを求める場合について説明する。
この検出フレーム間隔L20tは、基準フレーム71間のpts時間間隔p0と、当該基準フレーム71から20フレーム後の探索フレーム75間のpts時間間隔p20tとの比として、次式で算出することができる。
L20t=p20t/p0
よって、x方向における移動量についての勾配は、次式で求められる。
T20xn=V20xn/L20t
また、y方向における移動量についての勾配は、次式で求められる。
T20yn=V20yn/L20t
同様に、30フレーム間隔をL30tとし、このL30tと上記移動量V30xnとから、この30フレーム間隔における動きベクトルの勾配T30xnを求める場合について説明する。
この検出フレーム間隔L30tは、基準フレーム71間のpts時間間隔p0と、当該基準フレーム71から30フレーム後の探索フレーム75間のpts時間間隔p30tとの比として、次式で算出することができる。
L30t=p30t/p0
よって、x方向における移動量についての勾配は、次式で求められる。
T30xn=V30xn/L30t
また、y方向における移動量についての勾配は、次式で求められる。
T30yn=V30yn/L30t
以上から、x方向及びy方向について、勾配の平均Tavex(n)及びTavey(n)は、上記重み係数の合計(K1+K10+K20+K30)>0の場合、それぞれ次式で求めることができる。
Tavex(n)=(k1 T1xn + k10 T10xn + k20 T20xn + k30 T30xn) / ( k1 + k10 + k20 + k30)
Tavey(n)=(k1 T1yn + k10 T10yn + k20 T20yn + k30 T30yn) / ( k1 + k10 + k20 + k30)
また、(K1+K10+K20+K30)=0の場合、Tavex(n)及びTavey(n)は、それぞれ次式の通りとなる。
Tavex(n)=0
Tavey(n)=0
次に、動きベクトル処理部34は、上記算出した勾配平均を用いて、便宜的に40フレーム間隔における動きベクトルを推定する(ステップ963)。具体的には、動きベクトル処理部34は、上記算出した勾配平均に、フレーム間隔を乗算することで、上記図19で示した等価的な移動量を算出することができる。すなわち、40フレーム間隔における推定動きベクトル(推定移動量)は、x方向、y方向についてそれぞれ次式により求めることができる。
40×Tavex(n)
40×Tavey(n)
なお、この勾配の計算では、上記図19に示したように原点を通る直線(y=ax)を全てのフレーム間隔の場合で仮定しているため、勾配の算出値はあくまで近似的なものとなる。
動きベクトル処理部34は、この推定動きベクトルを上記検出対称点Pnにおける動きベクトルとしてカメラ特徴判定部36へ出力する(図9のステップ97)。また、上記ステップ961において、カウンタ値mの合計が0である場合には(No)、動きベクトル処理部34は、動きベクトルは0に設定し(ステップ964)、カメラ特徴判定部36へ出力する(図9のステップ97)。この出力された動きベクトルが、後述するアフィン係数処理に用いられる。
以上のように、動きベクトルの検出にあたり、上記判定基準を設定して、当該判定基準を満たさない検出データ、すなわち確からしくない検出データを採用しないこととしたため、動きベクトル検出の精度をより向上させることができる。また、上記各フレーム間隔における動きベクトル検出データに基づいて、検出フレーム間隔よりも大きいフレーム間隔の動きベクトルを推定することで、検出データの範囲(ダイナミックレンジ)を広げることができ、単に検出データをスケーリングする場合に比べて、データの分解能を改善することができる。
図8に戻り、映像特徴検出部4は、上記動きベクトル処理部34から出力された動きベクトルデータを基に、カメラ特徴判定部36により、重回帰分析処理を行い(ステップ43)、アフィン係数を算出する(ステップ44)。ここで、この重回帰分析処理によりアフィン係数を算出するためのアフィン変換モデルについて説明する。
図20は、アフィン変換モデルを示した図である。アフィン変換モデルは、3次元オブジェクトの平行移動、拡大/縮小、回転を、行列を用いた座標変換処理として記述するためのモデルである。上記パン、チルト、ズームといったカメラ動作系特徴は、上記基準フレーム71内の物体の平行移動、拡大/縮小であると考えられるため、アフィン変換モデルを用いることで、カメラ動作系特徴を記述することが可能となる。
ここで、映像コンテンツにおいて、フレーム間隔が大きくない場合には、回転の特徴については、回転角θが小さいものとして、以下の近似処理を行うことができる。
sinθ≒θ
cosθ≒1
したがって、アフィン変換モデルは、図20に示すように変形することができる。そして、上記検出した動きベクトルから、このアフィン変換モデルを用いて各係数を求めることで、カメラ動作系特徴を検出することができる。すなわち、パン、チルト、ズームに対して、所定の閾値Pth、Tth及びZthを設定しておき、上記検出された動きベクトルから処理した各アフィン係数と比較することで、各カメラ動作系特徴を検出することができる。
図21は、重回帰分析によりアフィン係数を求める処理を示した図である。同図に示すように、カメラ特徴判定部36は、説明変数を上記基準フレーム71における検出対象点Pnのx、y座標(xn,yn)とし、非説明変数(目的変数)を、上記探索フレーム75における動きベクトルの検出位置Pmのx、y座標(xm,ym)として、重回帰分析処理を行い、パン、チルト、ズームの各係数Px、Py、Zxを求める(ステップ44)。
図8に戻り、カメラ特徴判定部36は、上記算出したアフィン係数のうち、パン係数Pxを入力する(ステップ45)。そして、カメラ特徴判定部36は、当該Pxが、上記閾値Pthよりも大きいか否かを判定し(ステップ46)、Pthよりも大きい場合には(Yes)、パン検出フラグDpan=1とし(ステップ47)、Pth以下の場合には(No)、パン検出フラグDpan=0とする(ステップ48)。
続いて、カメラ特徴判定部36は、上記算出したアフィン係数のうち、チルト係数Pyを入力する(ステップ49)。そして、カメラ特徴判定部36は、当該Pyが、上記閾値Tthよりも大きいか否かを判定し(ステップ50)、Tthよりも大きい場合には(Yes)、チルト検出フラグDtilt=1とし(ステップ51)、Tth以下の場合には(No)、チルト検出フラグDtilt=0とする(ステップ52)。
続いて、カメラ特徴判定部36は、上記算出したアフィン係数のうち、ズーム係数Zx及びZyを入力する(ステップ53)。そして、カメラ特徴判定部36は、当該ZxまたはZyが、上記閾値Zthよりも大きいか否かを判定し(ステップ54)、少なくとも一方がZthよりも大きい場合には(Yes)、ズーム検出フラグDzoom=1とし(ステップ55)、いずれもZth以下の場合には(No)、ズーム検出フラグDzoom=0とする(ステップ56)。
なお、カメラ特徴判定部36は、パン、チルト、ズームの各カメラ動作系特徴については、それぞれ左パン/右パン、左チルト/右チルト、ズームイン/ズームアウトをそれぞれ区別して検出するようにしても構わない。この区別は、アフィン係数の正負の符号を参照することで容易に行うことができる。
続いて、カメラ特徴判定部36は、パン係数Px及びチルト係数Pyの時系列解析を行うことで、手振れを判定する(ステップ57)。図22は、手振れ判定処理について示した図である。
カメラ特徴判定部36は、図22に示すように、映像コンテンツ中の所定区間(t0〜t1、t1〜t2、t2〜t3、t3〜t4)毎のアフィン係数から算出した、パン係数Px、チルト係数Pyの分散と、所定区間の平均値レベルとの交差回数とで手振れを判定することができる。所定区間としては、例えば0.5秒〜5秒程度の時間長が設定される。
例えば、同図のt0〜t1の区間においては、PxまたはPyは、平均レベルの値と12回交差している。カメラ特徴判定部36は、この交差回数の閾値をThcrとし、交差回数がThcrより大きく、PxまたはPyの上記各所定区間での分散値が所定の閾値Thvより大きいか否かを判定する(ステップ58)。
ここで、所定区間毎のPx及びPyのデータ数をN、各データをPx(n)、Px(y)、それらの各平均値をPxave、Pyaveとすると、Px、Pyの分散値Pxvari、Pyvariは、それぞれ次式で求めることができる。
Pxvari = (1/N) Σ ((Pxave −Px(n))×(Pxave −Px(n)) )
Pyvari = (1/N) Σ ((Pyave −Py(n))×(Pyave −Py(n)) )
交差回数及び分散値がいずれも各閾値よりも大きい場合には(Yes)、カメラ特徴判定部36は、上記所定区間の映像は手振れ映像であると判定して手振れ検出フラグDbure=1とし(ステップ59)、交差回数及び分散値の少なくとも一方が閾値以下の場合には(No)、手振れ検出フラグDbure=0とする(ステップ60)。
次に、映像特徴検出部4は、フェード及びカットの検出処理を行う。
まず、フェード/カット処理部27、29、31及び33の処理について説明する。
フェード/カット処理部27、29、31及び33は、それぞれ、上記各マッチング処理部26、28、30及び32から、マッチング処理後の各残差値E1n、E10n、E20n及びE30nを入力し、これらの各残差値を基に、フェード/カット評価値を生成し、フェード/カット判定部35へ出力する(ステップ61)。
ここで、フェード/カット評価値Hは、上記残差値をEn(n=0〜63)とすると、次式で求めることができる。
63
H= ΣEn
n=0
したがって、各フェード/カット処理部27、29、31及び33は、上記各マッチング処理部26、28、30及び32からの各残差値E1n、E10n、E20n及びE30nを、それぞれn=63となるまで、すなわち、基準フレーム71の全ての検出対象点P0〜P63についての残差値が入力されるまで入力し、それぞれそれらの総和を算出する。
図23及び図24は、上記フェード/カット評価値の算出結果と、フレーム経過との関係を、上記フレーム間隔毎に示したグラフである。図23は、カット点が含まれる場合のグラフを示し、図24は、フェードが含まれる場合のグラフを示している。
フェード/カット判定部35は、上記図23及び図24に示されるフェード/カット評価値の値を基に、フェード及びカットの判定を行う(ステップ62)。すなわち、フェード/カット判定部35は、フレーム経過に伴うフェード/カット評価値の変化が急峻な場合(ステップ63のYes)には、カットであると判定してカット検出フラグDcut=1とする(ステップ65)。また、フェード/カット判定部35は、フレーム経過に伴うフェード/カット評価値の変化が緩やかである場合(ステップ64のYes)には、フェードであると判定してフェード検出フラグDfade=1とする(ステップ66)。そのどちらとも判定できない場合(ステップ64のNo)には、フェード/カット判定部35は、カット検出フラグDcut=0、フェード検出フラグDfade=0とする(ステップ67)。
具体的には、フェード/カット判定部35は、1フレーム間隔におけるフェード/カット評価値の変化を解析し、図23のグラフaに示すようなピーク特性が検出される場合には、そのピーク点をカット点と判定する。
また、フェード/カット判定部35は、上記ピーク特性が検出されない場合には、図24に示すように、所定の時刻tにおいて、1フレーム間隔についてのフェード評価値(グラフa)と10フレーム間隔についてのフェード評価値(グラフb)との差分Va、10フレーム間隔についてのフェード評価値と20フレーム間隔についてのフェード評価値(グラフc)との差分Vb、20フレーム間隔についてのフェード評価値と30フレーム間隔についてのフェード評価値(グラフd)との差分Vcをそれぞれ算出する。
図24に示すように、フェードの場合、映像は徐々に変化していくため、フェード/カット評価値はフレーム間隔によってその変化量に違いが生じ、それにより上記Va、Vb、Vcの各値は全て正の値かつ比較的近い数値として顕著に現れる。一方、カットの場合は、図23に示すように、Va、Vb、Vcの値に大きな差が生じ、また負の値となる場合もある。したがって、フェード/カット判定部35は、このVa、Vb及びVcを解析することで、フェードか否かを判定することができる。
なお、各フェード/カット処理部27、29、31及び33は、上述したように、上記マッチング処理部26、28、30及び32から、マッチング処理後の各残差値を入力するのではなく、画像処理部21から入力される基準ブロックBnと、各フレーム間メモリ部22〜25から入力される、上記ブロックマッチング処理に用いた探索ブロックBmとを用いて、独自にフェード/カット評価値を算出するようにしても構わない。具体的には、各フェード/カット処理部27、29、31及び33は、上記基準ブロックBn及び探索ブロックBmの各Y、Cb、Crのデータ毎の差分を上記検出対象点Pn毎に検出し、当該差分の、検出対象点P0〜P63についての総和を上記フェード/カット評価値として算出する。この場合の差分は、上記基準ブロックBn1とBn2とを合成したデータと、上記探索ブロックBm1とBm2とを合成したデータとを比較することで算出される。
また、各フェード/カット処理部27、29、31及び33は、ブロックマッチング処理による探索後(移動後)の探索ブロックBmではなく、探索フレームにおいて基準ブロックBnと同一の位置に存在する探索対象ブロックと上記基準ブロックBnとの差分を検出対象点Pn毎に検出するようにしても構わない。しかしながら、上述のようにブロックマッチング処理後の各残差値を利用する方が、当然ながらフェード/カット処理部27、29、31及び33の負荷は低くて済む。
次に、映像特徴検出部4は、シーンID処理を行う(ステップ68)。以下、シーンID処理の詳細について説明する。図25は、シーンID処理部37の構成を示した図である。
同図に示すように、シーンID処理部37は、データメモリ81、ベクトル距離演算部82、ID生成部83及びIDメモリ84を有する。
データメモリ81は、上記各フレーム間メモリ部22〜25から、ブロックマッチング処理に用いた各基準フレーム71の基準ブロックBnのデータ及び各探索フレーム75の探索ブロックBmのデータを、多次元ベクトルデータ(d0〜d63)として逐次入力する。ブロック番号kのブロックデータdkは、当該ブロック番号kにおけるY、Cb及びCrの各データ成分からなる。
このデータメモリ81は、例えばリングバッファとして構成される。データメモリ81は、入力したブロックデータdkを、V0〜Vnの各記憶領域へ、例えば1フレーム毎に記憶していく。ここでnは例えば16とされるが、これに限られるものではない。
ベクトル距離演算部82は、入力された1つのフレームのブロックデータと、上記V0〜Vnに既にそれぞれ記憶されている他のフレームのブロックデータとの間で、逐次ベクトル距離演算処理を行い、ベクトル距離が最小となるブロックデータを判定する。すなわち、ベクトル距離演算部82は、上記各ブロックデータに基づいてフレーム間の類似度の判定を行い、1つのフレームに類似する他のフレームを判定する。
ID生成部83は、当該ベクトル距離演算結果に基づいて、上記各記憶領域V0〜Vnの各ブロックデータについてそれぞれシーンIDを生成する。IDメモリ84は、当該生成されたシーンIDを、各記憶領域Id0〜Idnへ逐次記憶する。
データメモリ81の各記憶領域V0〜Vnと、IDメモリ84の各記憶領域Id0〜Idnとは対応関係にある。例えば、同図において、入力されてきたブロックデータが、上記ベクトル距離演算部82において、V5に記憶されたブロックデータと類似していると判定された場合には、Id5に記憶されたIDと同一のIDを生成して、当該IDを、入力されてきたブロックデータへ付与する。この入力されてきたブロックデータは、データメモリ81の記憶領域V0へ記憶され、上記生成されたIDはIDメモリ84の記憶領域Id1へ記憶される。このとき、当該IDの生成前にV0に記憶されていたブロックデータは記憶領域V1へ移動し、記憶領域V1に記憶されていたブロックデータは記憶領域V2へ移動する。また、IDの生成前にIDメモリ84の記憶領域Id0に記憶されていたIDは記憶領域Id1へ移動し、記憶領域Id1に記憶されていたIDは記憶領域Id2へ移動する。このように、IDの生成毎に、データメモリ81及びIDメモリ84の各記憶領域のデータがシフトしていく。ID生成部83は、生成したIDをCPU1へ順次出力する。
上記ベクトル距離演算により、どのデータメモリ81のどの記憶領域に記憶されたブロックデータとも類似しないと判定された場合には、新たなIDを付与する。また、データメモリ81及びIDメモリ84の各記憶領域がいっぱいになった場合には、古いデータから順に削除していく。
なお、データメモリ81とIDメモリ84とは、物理的に別々のメモリ素子としてもよいし、1つのメモリ素子を各メモリ用に分割するようにしても構わない。
また、上記ID処理は、1フレーム毎に処理を行うのではなく、上記10フレーム間メモリ部23、20フレーム間メモリ部24、30フレーム間メモリ部25の各ブロックデータを利用して、それぞれ10フレーム、20フレーム、30フレーム間で行うようにしても構わない。これにより、上記データメモリ81及びIDメモリ84の記憶容量や、ベクトル距離演算部82及びID生成部83の負荷を抑えることができる。
図26は、上記ID処理により出力されたシーンIDと、フレーム番号との関係を示したグラフである。
例えば同図(a)、(b)及び(c)に示すように、連続するフレームや、所定フレーム間離れたフレームに同一のシーンIDが付与されていることが分かる。この同一のシーンIDが付与されたフレームは類似シーンとして扱うことで、例えば後述するハイライトシーンの再生等を行うことが可能となる。
図27は、上記カメラ特徴判定部36及びフェード/カット判定部35により判定した各映像特徴の判定結果を示した表である。CPU1は、この表と同等のデータを例えばRAM2やHDD10へ記憶するよう制御する。
同図では、各映像特徴の検出フラグDpan、Dtilt、Dzoom、Dbure、Dfade及びDcutがそれぞれ「1」に設定されており、検出対象の映像コンテンツから、パン、チルト、ズーム、手振れ、フェード及びカットの各映像特徴が混在して検出されたことを示している。CPU1は、この判定結果表を映像コンテンツ毎に作成する。
以上のように、上記映像特徴検出部4は、パン、チルト、ズーム、手振れといったカメラ動作系特徴と、フェード、カット及び類似シーンといった映像編集系特徴を、共通の信号処理系で検出することができる。すなわち、映像特徴検出部4は、画像処理部21により抽出された基準ブロックBn及び各フレーム間メモリ部22〜25に蓄積された探索ブロックBmのデータを基に、各マッチング処理部26、28、30及び32のブロックマッチング処理により各フレーム間の動きベクトルを検出し、動きベクトル処理部34及びカメラ特徴判定部36によりカメラ動作系特徴を判定する。それと共に、映像特徴検出部4は、上記ブロックマッチング処理に用いた基準ブロックBn及び探索ブロックBmの各データを基に、フェード/カット処理部29によりフェード/カット評価値を生成し、このフェード/カット評価値をフェード/カット判定部35により解析することで、フェード及びカットの映像編集系特徴を検出する。更に、各フレーム間メモリ部22〜25に蓄積された基準ブロックBn及び探索ブロックBmに基づいて、シーンID処理部37により類似シーンを検出する。したがって、本実施形態により、各種の映像特徴を検出するためのシステムが簡易かつ廉価に構成でき、また検出効率を向上させることができる。
また、上記カメラ動作系特徴のうち、手振れを検出することで、上述したように、放送コンテンツを記録した映像コンテンツと、家庭用ビデオカメラで撮影された映像コンテンツとを区別することが可能となる。
次に、以上のように映像特徴を検出された映像コンテンツの、各映像特徴の組み合わせの態様について説明する。
図28は、映像コンテンツを構成する映像特徴毎のシーン区間の組み合わせを示した図である。
映像コンテンツは、いくつかのシーン区間により構成される。1つのシーン区間と他のシーン区間との境界は、シーンチェンジとなる。このシーンチェンジは、上記検出したフェードまたはカットによるものである。一般的には、映像コンテンツは、類似画像(フレーム)区間と、上記検出したカメラ動作系特徴を有する画像(フレーム)区間とで構成される。類似画像区間とは、上記検出したシーンIDが同一であるフレームで構成される区間である。また、稀に、類似画像区間がなく、カメラ動作系特徴区間のみで構成される映像コンテンツもある。
同図(a)は、映像コンテンツが、非類似画像区間のみで構成される場合を示している。
同図(b)は、映像コンテンツが、類似画像区間と、ズームイン区間とで構成される場合を示している。
同図(c)は、映像コンテンツが、類似画像区間と、ズームアウト区間とで構成される場合を示している。
同図(b)は、映像コンテンツが、類似画像区間と、左パン区間とで構成される場合を示している。
同図(b)は、映像コンテンツが、類似画像区間と、下チルト区間とで構成される場合を示している。
同図(b)は、映像コンテンツが、類似画像区間と、左パン、ズームイン及び下チルトが混在した区間とで構成される場合を示している。
図29は、上記図28(a)の場合を基に、類似画像区間と非類似画像区間とでコンテンツが構成される場合の各映像特徴のシーンIDと各カメラ動作系特徴の検出特性を示した図である。
同図に示すように、区間t0〜t1は類似画像区間であり、シーンIDは同一となっている。区間t1〜t2は非類似画像区間であり、シーンIDは全て異なり、ID値が増加している。区間t2〜t3は類似画像区間であるが、区間t0〜t1の画像は異なる画像であり、異なるIDが付与されている。t3以降の区間は類似画像区間であり、区間t0〜t1の画像と類似の画像であるため、当該区間t0〜t1とID値が同一となっている。
この場合、区間全体にわたってカメラ動作系特徴は検出されず、アフィン係数解析によるパン、チルト及びズームの各係数は0か、その絶対値が所定の閾値以下となる。
図30は、上記図28(b)の場合について各映像特徴のシーンIDと各カメラ動作系特徴の検出特性を示した図である。
同図に示すように、区間t0〜t1は類似画像区間であり、シーンIDは同一となっている。t1以降の区間はズームイン区間であり、シーンIDは同一ではないが、ズームインの係数が検出されている。
図31は、上記図28(c)の場合について各映像特徴のシーンIDと各カメラ動作系特徴の検出特性を示した図である。
同図に示すように、区間t0〜t1は類似画像区間であり、シーンIDは同一となっている。t1以降の区間はズームアウト区間であり、シーンIDは同一ではないが、ズームアウトの係数が検出されている。
図32は、上記図28(d)の場合について各映像特徴のシーンIDと各カメラ動作系特徴の検出特性を示した図である。
同図に示すように、区間t0〜t1は類似画像区間であり、シーンIDは同一となっている。t1以降の区間は左パン区間であり、シーンIDは同一ではないが、左パンの係数が検出されている。
図33は、上記図28(e)の場合について各映像特徴のシーンIDと各カメラ動作系特徴の検出特性を示した図である。
同図に示すように、区間t0〜t1は類似画像区間であり、シーンIDは同一となっている。t1以降の区間は下チルト区間であり、シーンIDは同一ではないが、下チルトの係数が検出されている。
図34は、上記図28(f)の場合について各映像特徴のシーンIDと各カメラ動作系特徴の検出特性を示した図である。
同図に示すように、区間t0〜t1は類似画像区間であり、シーンIDは同一となっている。t1以降の区間は、ズームイン、左パン及び下チルトの各カメラ動作系特徴が同時に検出された区間であり、シーンIDは同一ではないが、ズームイン、左パン及び下チルトの各係数が検出されている。
以上のように、上記共通の信号処理系により検出された映像編集系特徴と、カメラ動作系特徴とを組み合わせて捉えることで、映像コンテンツの各シーン区間を整理することが可能となる。
次に、上記検出された各映像特徴を用いたアプリケーションの例について説明する。
例えば、上記各カメラ動作系特徴が検出される区間は、撮影者がより注目して撮影したシーン区間であると推定できる。したがって、記録再生装置100は、各カメラ動作系特徴が検出された区間を、ハイライトシーンとして映像コンテンツから抽出して、再生させることができる。
図35は、このハイライトシーン再生処理の例を示した図である。同図においては、ズーム区間を例に説明するが、パン、チルトの各区間についても同様に考えることができる。
同図に示すように、CPU1は、例えば、上記カメラ特徴判定部36から、ズーム特徴の検出を入力した場合、検出された複数のズーム区間(フレームc〜d、フレームk〜l)と、それらの前後の所定区間(フレームb及びe、フレームj及びm)とを抽出し、この区間を「ハイライト再生モード」として再生可能な区間として合成する。ここで、ズーム区間の前後の区間を加えるのは、ズーム区間のみだと、なぜズームしたかといったシーンの詳細が分からない可能性があり、所定のマージンを設定する必要があるためである。
CPU1は、例えば、HDD10に記録された各映像コンテンツについて、新たなコンテンツとして上記ハイライトシーンを生成しておく。そして、CPU1は、例えばユーザの要求に応じてディスプレイに表示されるコンテンツリスト上の各映像コンテンツについて、例えば操作入力部3を介してユーザが全編再生モードとハイライトシーン再生モードとを選択して再生させることが可能なアプリケーションを実行する。
また、CPU1は、上記各パン、チルト、ズームの各カメラ動作系映像特徴を単体で利用するのではなく、複数の特徴を組み合わせてハイライト再生モードを設定することも可能である。図36は、この場合のハイライトシーン再生処理の例を示した図である。
同図に示すように、例えば、ズーム、パン、チルトの各カメラ動作系映像特徴に優先度を設けて、再生時間の異なる3つのハイライトシーンを生成する。
すなわち、CPU1は、ハイライト再生モード1では、ズーム区間のみをハイライトシーンとして抽出し、ユーザに最低限のハイライトシーンを極力短時間で提供できるようにする。
また、CPU1は、ハイライト再生モード2では、ズーム区間にパン区間を加えて、再生時間は若干増加するものの、ハイライトシーンをより詳細に提供できるようにする。
そして、CPU1は、ハイライト再生モード3では、ズーム区間及びパン区間に更にチルト区間を加えて、再生時間がより長くなっても更に詳細な詳細にハイライトシーンを提供できるようにする。
CPU1は、上記コンテンツリスト上でハイライト再生モードを選択させる際に、これらの各モードも併せて選択させるようにする。
以上の処理により、上記検出したパン、チルト、ズームの各カメラ動作系特徴を効果的に利用してハイライトシーンを再生させることができ、ユーザの利便性を向上させることができる。
また、上記カメラ動作系特徴のうち、手振れ特徴は、上述したように、映像コンテンツの区別に利用することができる。
例えばCPU1は、上記手振れ検出フラグがDbure=1となっているか否かに基づいて、HDD10等に記録された映像コンテンツにそれぞれ異なる属性を付与して、2つのカテゴリに分類する。これにより、CPU1は、例えば、ユーザから操作入力部3を介して上記コンテンツリストの表示要求があった場合に、当該コンテンツリストを上記カテゴリ毎に表示させることが可能となる。また、CPU1は、ユーザがコンテンツを検索する際に、検索クエリとして上記カテゴリを選択させるようにすることもできる。これにより、映像コンテンツの検索範囲が狭まるため、検索処理の負荷や速度を向上させることも可能となる。
また、上記映像編集系特徴のうち、フェード及びカット特徴は、映像コンテンツへのチャプタの挿入に利用することができる。すなわち、CPU1は、上記フェード及びカットが検出されると、HDD10等に記録された映像コンテンツ中のカット点や、例えばフェードの開始点と終了点との中間点にチャプタを挿入する。これにより、CPU1は、ユーザの所望するシーンへ素早くジャンプして当該シーンを再生させることが可能となる。
さらに、映像特徴検出部4は、上記検出したカメラ動作系特徴と映像編集系特徴とを組み合わせて、上記ハイライトシーンを作成することも可能である。例えば、映像特徴検出部4は、上記図30〜図34に示したような、シーンIDが同一の類似画像区間と、それに連続してパン、チルト、ズームといったカメラ動作系特徴が検出された区間とを1つのハイライトシーンとして抽出することができる。このようにハイライトシーンを抽出することで、注目すべきシーン(カメラ動作系特徴区間)を、そのシーンが注目された経緯(類似画像区間)も含めて容易に把握することができる。
本発明は上述の実施形態にのみ限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々変更を加え得ることは勿論である。
上記実施形態の図7においては、上記映像特徴検出部4を、各フレーム間メモリ部22〜25を直列接続することで構成していたが、各フレーム間メモリ部22〜25を並列接続して映像特徴検出部4を構成しても構わない。図37は、この場合の映像特徴検出部4の構成を示した図である。このように構成しても、上記並列接続した場合と同様の処理を実行し、同様の効果を得ることができる。
上述の実施形態において、記録再生装置100は、映像特徴検出部4によるカメラ動作系特徴及び映像編集系特徴の検出を、映像コンテンツのHDD10への記録処理と並行して行ってもよい。例えば記録再生装置100は、デジタルチューナ5から放送コンテンツを受信し、フレーム番号順にHDD10へ記録すると共に、映像特徴検出部4により、当該記録されたフレームから順に映像特徴を検出するようにすればよい。このように映像コンテンツの記録処理と並行して映像特徴の検出処理を行っても、上述のようにカメラ動作系特徴と映像編集系特徴とを共通の信号処理系で行い、映像特徴検出部4の負荷を極力抑えることができるため、記録される映像コンテンツにノイズが生じることを防ぐことができる。
上述の実施形態においては、画像処理部21は、上記関数Fn(x)=knx上、すなわち、基準フレーム71の中心を始点とする半直線上にそれぞれ中心を有する2つの基準ブロックBn1及びBn2を放射状に設定していた。しかしながら、この放射状に設定される基準ブロックBnの数は2つに限られるものではなく、3つ以上に設定しても勿論構わない。
上述の実施形態においては、上記放射状に設定される基準ブロックBnを用いて動きベクトルを検出し、映像特徴の検出を行っていた。しかしながら、例えばMPEGによる圧縮符号化処理を行う際に、上記放射状に設定される基準ブロックを用いて動きベクトルを検出するようにしても構わない。
また、上述の実施形態においては、映像特徴検出部4は、基準ブロックBnを放射状に複数設定していたが、例えば複数の基準ブロックBnを放射状に組み合わせずに1つのみ設定した場合であっても、カメラ動作系特徴と映像編集系特徴とを同一の信号処理系で検出できることに変わりは無い。
上述の実施形態においては、映像特徴検出部4は、上記ブロックマッチング処理後の残差値をフェード/カット評価値とすることでフェード及びカットの判定を行っていた。しかし、映像特徴検出部4は、このフェード/カット評価値による判定処理に加えて、周波数解析による判定処理を用いることもできる。
すなわち、上記各フェード/カット処理部27、29、31及び33は、画像処理部21及び各フレーム間メモリ部22〜25から入力される基準フレーム71及び探索フレーム75のそれぞれに対して、FFT(Fast Fourier Transform;高速フーリエ変換)処理やエッジ検出処理等による周波数解析処理を行い、その結果をフェード/カット判定部35へ出力する。フェード/カット判定部35は、上記フェード/カット評価値と、上記周波数解析処理結果の両方を用いてフェード及びカットの判定を行う。フェード区間では、画像がぼやけるため、周波数成分で考えると、高周波成分の特徴が小さくなる。したがって、この特徴をフェード及びカットの判定に利用することができる。
例えば、フェード/カット評価値に基づく判定値をf1、周波数解析に基づく判定値をf2とした場合、フェード/カット判定部35フェード及びカットの総合的な判定値fを、f=f1+f2としてフェード及びカットを判定する。例えば、フェード/カット判定部35は、上記判定値fに所定の閾値を設けておき、閾値よりも大きいと判定できる場合には、フェードと判定する。
これにより、フェード及びカットの検出の信頼性を向上させることができる。また、上記フェード/カット評価値により、フェードがあることが判定できても、フェード区間の開始点及び終了点はあいまいになりやすいため、上記周波数解析処理を併用することで、更に信頼性を高めることもできる。
上述の実施形態においては、映像特徴検出部4は、映像コンテンツの各フレームのデコード後の、ベースバンド帯域の信号を用いて映像特徴検出処理を行っていた。しかしながら、映像特徴検出部4は、デコード後のベースバンド帯域の信号ではなく、デコード前の符号化データを用いてもよい。例えば映像コンテンツがMPEG形式やDV方式で符号化されている場合には、映像特徴検出部4は、上記Y、Cb及びCrの各信号の代わりに、DCT(Discrete Cosine Transform;離散コサイン変換)係数のうちDC(Direct Current)係数を解析することで、同様に映像特徴を検出することができる。
上述の実施形態においては、記録再生装置100に本発明を適用した例を示したが、例えばテレビジョン装置、PC、携帯電話、ゲーム機器等、あらゆる電子機器に本発明を適用することが可能である。