画像処理装置、画像処理方法、及びプログラム
【課題】動画像を構成する各単位画像に、適切な動きぼけを効果的に付加することによりジャーキネス劣化を低減させる処理を行う画像処理装置、画像処理方法及びプログラムを提供する。
【解決手段】入力された動画像データにおける処理対象画像(例えば1フレームの画像データ)から、1つ以上の解像度の異なる縮小画像を生成する。そして処理対象画像の注目画素に位置的に対応する画素を、上記縮小画像から抽出し、動き情報を基に、注目画素と抽出画素について重み付け加算処理を行う。即ち主に空間的なフィルタリング処理によって処理対象画像に動きぼけを付加する。
【解決手段】入力された動画像データにおける処理対象画像(例えば1フレームの画像データ)から、1つ以上の解像度の異なる縮小画像を生成する。そして処理対象画像の注目画素に位置的に対応する画素を、上記縮小画像から抽出し、動き情報を基に、注目画素と抽出画素について重み付け加算処理を行う。即ち主に空間的なフィルタリング処理によって処理対象画像に動きぼけを付加する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、動画像に対して動きぼけを付加する画像処理を行う画像処理装置、画像処理方法、及びその画像処理をコンピュータ等の演算処理装置に実行させるプログラムに関する。
【背景技術】
【0002】
【特許文献1】特開2007−274299号公報
【非特許文献1】"Modeling motion blur in computer-generated images" ACM SIGGRAPH Computer Graphics, Volume 17, Issue 3, July 1983.)
【0003】
シャッタ機能を有する撮像装置によりフレームレートで決定される期間に対して各フレームが短い有効露光時間で撮像された動画像を、表示デバイスを用いて表示すると、画像中に含まれる移動物体の動きが不連続に表示され、画像を観察する観察者が他重像を知覚してしまうという視覚上の画像劣化が発生する場合がある。
【0004】
また、ゲーム、映画、広告、テレビなどに幅広く使われているCG(Computer Graphics)技術により生成された動画像には、元より撮像時の有効露光時間に起因する撮像ぼけという現象は存在しない。そのため、モーションブラー(Motion Blur)効果を考慮せずに動画像を生成し、表示デバイスを用いて表示すると、画像中に含まれる移動物体の動きが不連続に表示され、画像を観察する観察者が他重像を知覚してしまうという視覚上の画像劣化が発生してしまう。
このような動きの不自然さによる動画像の劣化は、一般的にモーションジャーキネス(Motion Jerkiness)と呼ばれる(参考文献:ANSI T1.801.02-1996)。
【0005】
モーションジャーキネスが発生する具体例について、図27に示す動画像撮像装置500及び動画像再生装置600を用いて説明する。
動画像撮像装置500は、動画像を撮像してMPEG(Moving Picture Experts Group)などの規格で符号化し、この符号化された画像データをDVD(Digital Versatile Disc)などの記録媒体700に記録するものであり、具体的には次のような構成を有している。
【0006】
即ち動画像撮像装置500は、被写体像からの光を集光する撮像光学系510と、この撮像光学系510により集光された光を受光して画像信号に変換する撮像素子520と、この撮像素子520により変換された画像信号を符号化する符号化処理部530を有する。
また動画像撮像装置500は、符号化処理部530により符号化された画像データを所定の伝送路を介して外部へ送信する送信処理部540と、符号化処理部530により符号化された画像データをDVDなどの記録媒体700に記録する記録処理部550を備える。
【0007】
撮像光学系510は、外部から入射する被写体光の光量を調節する絞り機構511と、絞り機構511により光量を調節された被写体光を撮像素子520の受光面に集光させる光学レンズ系512とから構成される。
【0008】
一方、動画像再生装置600は、符号化された画像データを復号して、ディスプレイなどに表示出力するものであり、具体的には次のような構成を有している。
即ち動画像再生装置600は、所定の伝送路を介して伝送されてくる符号化された画像データを受信する受信処理部610と、記録媒体700から符号化された画像データを読み出す読出処理部620を有する。
また動画像再生装置600は、受信処理部610及び読出処理部620から出力される符号化された画像データを復号する復号処理部630と、復号処理部630によって復号された画像信号を表示するディスプレイなどの表示出力部640とを備える。
【0009】
例えば明るい野外などで動画像を撮像するとき、このような従来の動画像撮像装置500では、絞り機構511を絞ることによって撮像素子520に入射させる光量を制限して露光量を適切に制御している。
しかしながら、通常、絞り機構511を絞りすぎると回折現象により像がぼやけてしまう。このため、動画像撮像装置500では、絞り機構511によって光量を調節するのに加えて、シャッタ速度を短くすることで適切な露光制御を行っている。
また、絞り機構が設けられていない動画像撮像装置では、シャッタ速度を変更することで露光制御を行っている。
【0010】
このようにして、従来の動画像撮像装置500では、シャッタ速度を短くすることで、野外撮影などにおいて適切な露光制御を行うことができるが、これに伴って次のような現象が現れてくる。
すなわち、従来の動画像撮像装置500では、シャッタ速度を短くしすぎると、人間の視覚特性によって画像の動きに滑らかさを欠いた現象となって現れてしまう。
【0011】
このような動きの不自然さによる動画像の劣化は、一般的にモーションジャーキネス(Motion Jerkiness)と呼ばれる。すなわち、動画像再生装置600は、動画像撮像装置500によってジャーキネス劣化を含んで撮像されると、そのままジャーキネス劣化を含んだ画像データを復号して表示出力部640により表示することとなる。
【0012】
以上のように、動画像のフレームレートに対して、非常に高速のシャッタ速度で撮像された画像は、静止画像として表示したときには鮮鋭度が高いが、動画像として表示したときには画像中の動体の動きが滑らかではなく、人間の視覚特性上、不自然に見えてしまう。
【0013】
また、CG分野の技術では、表示動画像を生成するレンダリング処理の際、モーションブラー(Motion Blur)効果と言われる、計算機上において撮像ぼけの現象を模擬し、仮想的な動きぼけを付加する処理を行い、滑らかな動画像を生成する方法が広く知られている。レンダリング処理とは、仮想的な三次元空間上にあるCGデータを、表示するための仮想的なスクリーン上にマッピングする手法であり、代表的なものにZ-Buffer法やレイトレーシング法などがある。
上記非特許文献1には、CGにおけるモーションブラー効果について開示されている。
【発明の開示】
【発明が解決しようとする課題】
【0014】
モーションブラー効果の生成は、表示装置に出力される動画像のフレーム数よりも多くの単位画像を生成し、これらを用いてフレームの平均化を行う方法が一般的である。表示フレームに対し時間的に中間にあたるフレームまでを計算して記憶し、それらを加算処理した結果を出力するわけである。しかし、この方法は中間フレームを記憶するためのメモリのリソースが少ない場合には実現できない。
【0015】
そこで本発明はこのような実情に鑑みて、撮像装置などによって取り込まれた動画像を構成する各単位画像に、適切な動きぼけを効果的に付加することによりジャーキネス劣化を低減させる処理を行う画像処理装置、画像処理方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【0016】
本発明の画像処理装置は、動画像を構成する各単位画像を処理対象画像とし、上記処理対象画像から1つ以上の解像度の異なる縮小画像を生成する縮小画像生成手段と、上記処理対象画像の注目画素に位置的に対応する画素を上記縮小画像から抽出し、上記処理対象画像に関する動きを示す動き情報を基に、上記注目画素および上記縮小画像から抽出した1つ以上の抽出画素について、重み付け加算処理を行って、上記処理対象画像に動きぼけを付加する画素合成処理手段とを備える。
【0017】
また、上記縮小画像生成手段は、上記処理対象画像に対し、再帰的な縮小フィルタ処理を用いることで上記縮小画像を生成する。
また、上記画素合成処理手段は、上記注目画素および1つ以上の上記抽出画素に応じた重みの値を、上記画像に関する動きを示す動き情報を基に変更する。
また、上記画素合成処理手段は、上記注目画素に応じて各縮小画像から抽出する画素について、注目画素と各縮小画像中に存在する画素との位置関係に応じて、各縮小画像中に存在する複数画素の重み付け加算処理によって抽出する。
また、上記縮小画像生成手段は、上記処理対象画像に対し縮小フィルタ処理を行って、方向別の縮小画像をそれぞれ生成する。そして上記画素合成処理手段は、上記各方向別に生成された各縮小画像から、方向を選択することで縮小画像を選択し、上記処理対象画像の注目画素に位置的に対応する画素を上記選択した縮小画像から抽出し、上記動き情報を基に、上記注目画素および上記選択した縮小画像から抽出した1つ以上の抽出画素について重み付け加算処理を行う。
また、上記縮小画像生成手段は、上記処理対象画像に対し縮小フィルタ処理を行って、方向別の縮小画像をそれぞれ生成する。そして上記画素合成処理手段は、上記処理対象画像の注目画素に位置的に対応する画素を上記各方向別に生成された各縮小画像からそれぞれ抽出し、上記動き情報を基に、上記注目画素および上記各縮小画像からそれぞれ抽出した抽出画素について、それぞれに第1の重み付け加算処理を行い、上記第1の重み付け加算処理の結果の各画素について、上記動き情報に応じた第2の重み付け加算処理を行う。
【0018】
また、上記動き情報に対応する最適な撮像シャッタ速度として、出力画像の画像劣化が低減される最適シャッタ速度情報を、処理対象画像中の各画素または分割領域ごとに取得し、上記最適シャッタ速度情報を用いて動き情報を補正する動き情報補正手段をさらに有し、上記画素合成処理手段は、上記動き情報補正手段が補正した動き情報を用いて上記処理対象画像に動きぼけを付加する。
また上記動き情報補正手段は、撮像装置により撮像された際のシャッタ速度情報と上記最適シャッタ速度情報を用いて上記動き情報を補正する。
また、上記動き情報として動きベクトルを生成する動きベクトル生成手段を更に備え、上記動き情報補正手段は、上記動きベクトル生成手段により生成された動きベクトルを補正し、上記画素合成処理手段は、上記動き情報補正手段により補正された動きベクトルを用いて、上記処理対象画像の注目画素に位置的に対応する画素を上記縮小画像から抽出し、上記注目画素および上記縮小画像から抽出した1つ以上の抽出画素について、重み付け加算処理を行う。
また上記動きベクトル生成手段は、処理対象画像となる単位画像の動きベクトルを検出する動きベクトル検出手段と、上記動きベクトル検出手段が検出した処理対象画像の動きベクトルと、該処理対象画像以前の処理対象画像の動きベクトルを画素ブロック単位で比較して、相関が高い画素ブロックを特定する画素ブロック特定手段と、上記画素ブロック特定手段により特定された画素ブロックの動きベクトルから、該特定された画素ブロック以外の画素ブロックの動きベクトルを推定する動きベクトル推定手段とを有する。
また上記動きベクトル生成手段は、処理対象画像となる単位画像の動きベクトルを検出する動きベクトル検出手段と、上記動きベクトル検出手段が検出した処理対象画像の動きベクトルを平滑化する動きベクトル平滑化手段とを有する。
【0019】
本発明の画像処理方法は、動画像を構成する各単位画像を処理対象画像とし、上記処理対象画像から1つ以上の解像度の異なる縮小画像を生成する縮小画像生成ステップと、上記処理対象画像の注目画素に位置的に対応する画素を上記縮小画像から抽出し、上記処理対象画像に関する動きを示す動き情報を基に、上記注目画素および上記縮小画像から抽出した1つ以上の抽出画素について、重み付け加算処理を行って、上記処理対象画像に動きぼけを付加する画素合成処理ステップとを有する。
本発明のプログラムは、上記縮小画像生成ステップと、上記画素合成処理ステップとを演算処理装置に実行させるプログラムである。
【0020】
このような本発明では、動画像における処理対象画像(例えば1フレームの画像データ)から、1つ以上の解像度の異なる縮小画像を生成する。そして処理対象画像の注目画素に位置的に対応する画素を、上記縮小画像から抽出し、動き情報を基に、注目画素と抽出画素について重み付け加算処理を行う。これは主に空間的なフィルタリング処理によって処理対象画像に動きぼけを付加することとなる。
【発明の効果】
【0021】
本発明によれば、動きベクトルに応じて適切な動きぼけを処理対象画像毎に付加することができ、人間の視覚特性上、より自然にジャーキネス劣化が低減された動画像を出力することができる。
また、本発明で実現される動きぼけ付加処理は、主に空間的なフィルタリング処理によって実現され、中間フレームを生成することがないため、処理過程で画像データを記憶するためのメモリを少なくすることができる。
さらに、空間フィルタ処理は、階層的なフィルタリングを実行した結果得られる、各階層の画素値を重み付け加算して出力する。そのため、各階層において行うフィルタは、少ないタップ数で実現可能である。また、そのフィルタのタップ数は、付加する動きぼけの量に依存せず、固定タップ数で行うことが可能である。このような再帰的な処理による実現は、特にハードウェアによる処理実装に適している。
【発明を実施するための最良の形態】
【0022】
以下、本発明を実施するための最良の形態について、図面を参照しながら詳細に説明する。本発明の実施の形態としての画像処理装置は、人間の視覚特性上、不自然に見えてしまうジャーキネス劣化を含んだ動画像に対して動きぼけを付加して、このような劣化を低減するものである。
説明は次の順序で行う。
[1.第1の実施の形態]
[1−1:画像処理装置1の全体構成]
[1−2:縮小画像生成処理部2]
[1−3:動きぼけレンダリング処理部3]
[1−4:まとめ]
[2.第2の実施の形態]
[3.プログラム]
【0023】
[1.第1の実施の形態]
[1−1:画像処理装置1の全体構成]
図1は、第1の実施の形態の画像処理装置1の構成例を示している。
この画像処理装置1は、入力画像データDD、および入力画像データDDの各画素または各分割領域の動きの情報である動きベクトルVD、を入力とし、動きぼけの付加によりジャーキネス劣化が低減した出力画像ODを出力する。
入力画像データDDは、画像撮像や記録媒体からの再生等により供給される動画像データであり、画像処理装置1は、例えば動画像を構成する1フレーム毎の入力画像データDDを処置対象画像として動きぼけの付加処理を行う。
動きベクトルVDとは、入力画像データDDの各フレームにおける、各画素または各分割領域の動きの情報である。なお分割領域とは、例えば1フレーム内の水平・垂直方向にのN×M個の画素で構成されるような複数画素で形成する画素ブロック単位をいう。
動きベクトルVDは、入力されてくる入力画像データDDにおいてメタデータ等の形式で付加されている場合もあるし、入力画像データDDについて動きベクトル検出処理を行って検出する場合もある。
この第1の実施の形態の画像処理装置1は、入力画像データDDの取込方式や、動きベクトルVDの取込方式は限定せず、これらは画像処理装置1に入力されるものとして説明する。
【0024】
図1に示すように、画像処理装置1は、フィルタリング処理などにより処理対象フレーム中から選択された画素に動きぼけを付加し、その結果得られた画素から構成される1つ以上の縮小面を生成する縮小画像生成処理部2を備える。
また、動きベクトルを基に、処理対象フレーム中の対応画素および縮小画像生成処理部2において生成された縮小面中の対応画素から、出力画像を構成する各画素の画素値を算出し出力する動きぼけレンダリング処理部3を備える。
【0025】
各処理部についての具体的な処理内容を説明する前に、この画像処理装置1による動きぼけ付加処理の概要と位置づけについて述べておく。
画像処理装置1は、縮小画像生成処理部2と動きぼけレンダリング処理部3により各画素に適切な量の動きぼけを付加し、ジャーキネス劣化を低減した画像を出力する。
図2は、画像処理装置1における動きぼけ付加処理の概要を示すものである。特に、図1中の縮小画像生成処理部2と動きぼけレンダリング処理部3において行われる処理内容の概要を説明するためのものである。
【0026】
図2における元画像(基底面)とは、入力画像データDDとしての1つの処理対象フレームの画像データとなる。
縮小画像生成処理部2では、処理対象フレームである元画像に対し、詳しくは後述する空間フィルタリング処理を実行し、その結果として第1縮小面を作成する。
第1縮小面は、元画像よりも一定の比率だけ縮小され、画素数が減少した画像である。
さらに縮小画像生成処理部2は、得られた第1縮小面に対し、同様の空間フィルタリング処理を実行し、結果として得られる第2縮小面を作成する。
このような要領で縮小画像生成処理部2は、再帰的にフィルタ処理を用いることで、所定の階層数の縮小画像(第1縮小面〜第n縮小面)の生成を行う。
【0027】
動きぼけレンダリング処理部3では、上記の要領で生成された階層型の縮小画像(第1縮小面〜第n縮小面)を用いて、動きぼけを適応的に付加した、視覚特性上自然にジャーキネス劣化を低減した画像を生成し、出力する。
動きぼけレンダリング処理部3は、例えば図2中に示す元画像の各画素について、元画像である基底面、第1縮小面、および第2縮小面から、動きぼけ付加対象の画素に対応する位置の画素値を各面から抽出し、レンダリング方式に重み付け加算を実行する。
各面が有する画素数はそれぞれ異なるため、動きぼけ付加対象の画素に対応する位置の画素が各縮小面に存在しない場合、詳しくは後述する周辺の画素からの補間処理を行い、画素値を抽出する。
基底面及び各縮小面から抽出したそれぞれの画素値に対する重み係数(w0、w1、w2)は、図1に示した動きベクトルVD中の、動きぼけ付加対象の画素に対応する位置の動きベクトルの大きさに依存して決める。例えば、動きベクトルが大きい値の場合、つまり付加する動きぼけの量が大きい場合ほど、高階層の縮小面から抽出した画素の重み係数を大きくする。図2の例においては第2縮小面から抽出した画素の重み係数を大きくすることになる。
一方、動きベクトルが小さい値の場合、つまり付加する動きぼけの量が少ない場合ほど、低階層の縮小面から抽出した画素の重み係数を大きくする。例えば図2の例においては基底面から抽出した画素の重み係数を大きくする。
このような重み付け加算の結果として、ジャーキネス劣化を低減した画像が生成される。
【0028】
[1−2:縮小画像生成処理部2]
縮小画像生成処理部2の具体的な処理について説明する。
縮小画像生成処理部2で行われる処理は、入力画像データDDに対し空間フィルタリング処理を実行する。また、その結果として得られる縮小画像に対し(または画像として構成されなくても、前段のフィルタリング処理の結果として得られる複数の画素を用いて)、さらに同様の空間フィルタリング処理を繰り返す。これにより階層的な縮小画像データRSDを生成する。
上記空間フィルタリング処理は、フィルタリング処理前の画像中において複数画素を有する領域の画素情報を用いて行われ、処理の前後にて一定の比率だけ縮小され、画素数が減少した画像を生成する。そのためフィルタリング処理後の各画素は、フィルタリング処理前の画像中における当該領域をぼかした画素、として出力されるわけである。
【0029】
以下において、最も簡易なフィルタリング方法の例を用いて詳しく説明する。
図3は、縮小画像生成を行うフィルタ処理の具体例における、縮小前後の画素の対応関係について示すものである。
図3の例では、縮小前の画像において、分割領域R11として示した4×4画素を用いたフィルタリングを実行し、縮小後の画像における画素P11を出力することを表現している。分割領域R12,R21についても同様に画素P12,P21を示している。
結果として、縮小後の画像は、縮小前の画像と比べ、垂直・水平方向にそれぞれ1/4の画素数となっている。
なお4×4画素ブロックを用いるのは、あくまで一例であり、N×Nの画素ブロックを用いて同様の処理を行えば、垂直・水平方向にそれぞれ1/Nの画素数を有する縮小画像が生成できる。
【0030】
分割領域R11に対して行うのは、例えば、ボックスフィルタなどのローパスフィルタ処理であるとすれば、周辺画素の画素値を平均化することで、画素P1はぼけを含んだ画素として生成される。
【0031】
このようにして得られた縮小画像を図2に示した第1縮小面とした場合、この第1縮小面に対し、さらに図3と同様の空間フィルタリング処理を実行して第2縮小面を作成する。
この場合、第1縮小面に4×4画素の分割領域を用いたフィルタリングを実行することにより、第2縮小面の各画素は、元画像における16×16画素の領域の画素値を平均化したぼけ画素として生成されることになる。
必要に応じて、第2縮小面の生成後に第3縮小面以降を同じ要領で生成することも可能であり、階層数を増やしても処理の内容は変わらない。
【0032】
このように、縮小画像生成処理部2では、入力画像に空間ローパスフィルタ処理を実行することで、結果として得られる低解像度な画像を生成し、さらに生成した低解像度画像に同様の処理を実行することでより低解像度な画像を生成していく。このような多重解像度フィルタリング処理を実行して、階層型の縮小画像データRSDを生成する。
【0033】
図4〜図7に、他の例として、方向選択型縮小画像生成フィルタ方式を説明する。
図3では分割領域として4×4画素の方形領域の例を示したが、フィルタリングを実行する分割領域は、方形でなくても構わない。
むしろ図3に示した4×4画素を用いたフィルタのような等方型フィルタでは、後段の動きぼけレンダリング処理で動きぼけを付加した場合、画質上の問題が発生してしまう場合もあり得る。それは、付加したい所望の動きぼけのみでなく、動きと直交する方向に低解像度化した結果生じるぼけが支配的になってしまう現象である。
例えば、水平方向の動きに応じた動きぼけを付加したい場合、動きぼけの方向である水平のみでなく、垂直方向にもローパスフィルタリングされた縮小画像を用いるため、垂直方向の解像度が低下した画像になってしまう。
つまり画像内容としての動き方向に応じてぼけを付加することでジャーキネスを低減するときに、動き方向とは直交方向にもぼけが付加され、それが視覚上適切な画像とならない場合がある。
【0034】
そのような事象を回避するには、最終的に付加される動きぼけの方向を考慮した縮小面生成フィルタリングを行う必要がある。この方法は、動きぼけを付加する各方向に独立に縮小面を用意するものである。
【0035】
図4は、水平方向の動きぼけ付加用の、具体的な縮小画像生成フィルタ処理の一例における、縮小前後の画素の対応関係について示すものである。
図4においては、まず、入力画像データDD(基底面)に4×1タップの長方形フィルタ処理を実行し、水平方向の画素数が1/4、垂直方向の画素数は変化しない、水平方向1/4縮小画像を生成している。
例えば基底面における領域R011、R012、R021についてのそれぞれのフィルタ処理で得られた画素は、水平方向1/4縮小画像における画素P111、P112、P121となる。
なお4×1画素領域を用いたのは、あくまで一例であり、所望の縮小率に応じて変更できる。
フィルタの内容は、例えばボックスフィルタなどのローパスフィルタである。
【0036】
さらに、生成した水平方向1/4縮小画像に対し、同様のフィルタ処理を実行することで、水平方向の画素数が1/16、垂直方向の画素数は変化しない、水平方向1/16縮小画像を生成する。
例えば水平方向1/4縮小画像における領域R111についてのフィルタ処理で得られた画素は、水平方向1/16縮小画像における画素P211となる。
このように、水平方向の動きぼけ付加用として、垂直方向の解像度低下を防ぐため、水平方向のみ多階層の縮小画像を生成する。
【0037】
図5は、垂直方向の動きぼけ付加用の、具体的な縮小画像生成フィルタ処理の一例における、縮小前後の画素の対応関係について示すものである。
図5においても、図4の場合と同様に、まず、入力画像データDDに1×4タップの長方形フィルタ処理を実行し、水平方向の画素数が変化せず、垂直方向の画素数が1/4となった、垂直方向1/4縮小画像を生成している。フィルタの内容は、例えばボックスフィルタなどのローパスフィルタである。
例えば基底面における領域R011、R012、R021についてのそれぞれのフィルタ処理で得られた画素は、垂直方向1/4縮小画像における画素P111、P112、P121となる。
【0038】
さらに、生成した垂直方向1/4縮小画像に対し、同様のフィルタを実行することで、水平方向の画素数が変化せず、垂直方向の画素数が1/16となった、垂直方向1/16縮小画像を生成する。
例えば垂直方向1/4縮小画像における領域R111についてのフィルタ処理で得られた画素は、垂直方向1/16縮小画像における画素P211となる。
このように、垂直方向の動きぼけ付加用として、水平方向の解像度低下を防ぐため、垂直方向のみ多階層の縮小画像を生成する。
【0039】
図6は、斜め方向の動きぼけ付加用の、具体的な縮小画像生成フィルタ処理の一例における、縮小前後の画素の対応関係について示すものである。
図6においても、これまでと同様に4タップのローパスフィルタを実行するが、図中に示すとおり、左斜め下方向に向かって抽出していった画素を用いてフィルタリングを行っている。
例えば、領域R014は、画素P014、P023、P032、P041の4つの画素による処理領域を示すが、領域R014については、この4つの画素についてフィルタ処理を行う。図示する他の領域R015、R024等も同様である。
【0040】
フィルタ処理された画素によって形成される縮小画像は、垂直方向に画素データを詰めて格納することにすれば、第1の縮小面である、斜め45度方向1/4縮小画像は、水平方向の画素数が変化せず、垂直方向の画素数が1/4となって生成される。
例えば基底面における領域R014、R015、R024についてのそれぞれのフィルタ処理で得られた画素は、斜め45度方向1/4縮小画像における画素P114、P115、P124となる。
【0041】
さらに、生成した斜め45度方向1/4縮小画像に対し、同様のフィルタを実行することで、水平方向の画素数が変化せず、垂直方向の画素数が1/16となった、斜め45度方向1/16縮小画像を生成する。
このように、斜め方向の動きぼけ付加用として、適用した方向に直交する斜め方向の解像度低下を防ぐため、適用方向のみ多階層の縮小画像を生成する。
【0042】
図7は、図6とは直交する斜め方向の動きぼけ付加用の、具体的な縮小画像生成フィルタ処理の一例における、縮小前後の画素の対応関係について示すものである。
図7においても、これまでと同様に4タップのローパスフィルタを実行するが、図中に示すとおり、右斜め下方向に向かって抽出していった画素を用いてフィルタリングを行っている。例えば、領域R014は、画素P014、P025、P036、P047の4つの画素による処理領域を示すが、領域R014については、この4つの画素についてフィルタ処理を行う。図示する他の領域R015、R024等も同様である。
【0043】
フィルタ処理された画素によって形成される縮小画像は、垂直方向に画素データを詰めて格納することにすれば、第1の縮小面である、斜め135度方向1/4縮小画像は、水平方向の画素数が変化せず、垂直方向の画素数が1/4となって生成される。
例えば基底面における領域R014、R015、R024についてのそれぞれのフィルタ処理で得られた画素は、斜め135度方向1/4縮小画像における画素P114、P115、P124となる。
【0044】
さらに、生成した斜め135度方向1/4縮小画像に対し、同様のフィルタを実行することで、水平方向の画素数が変化せず、垂直方向の画素数が1/16となった、斜め135度方向1/16縮小画像を生成する。
このように、斜め方向の動きぼけ付加用として、適用した方向に直交する斜め方向の解像度低下を防ぐため、適用方向のみ多階層の縮小画像を生成する。
【0045】
以上、水平方向、垂直方向、斜め45°方向、斜め135°方向の例を示したが、これら以外に、あらゆる角度方向の縮小画像生成フィルタを採用しても構わない。
上記までに説明する方法は、各方向の動きぼけ付加用として独立に縮小画像を生成するため、後段の動きぼけレンダリング処理において、各画素に付加する動きぼけの方向に応じて、適応的に各方向の縮小画像から画素を選択または合成する必要が生じる。この方法については、動きぼけレンダリング処理部3の説明において詳しく後述する。
【0046】
さて、上記までに付加される動きぼけの方向を考慮した縮小面生成フィルタリングについて説明をしてきたが、その処理をより詳細に説明するために、1つの具体的な構成例を設定して、以降の説明に逐次用いる。
下記の<具体例:条件1>をその例として用いる。
【0047】
<具体例:条件1>
縮小画像生成方向:水平・垂直
縮小画像階層数:水平および垂直に各3層(第3縮小面まで)
動きぼけ生成方向:動きぼけレンダリング時に水平・垂直から移動速度の絶対値が大きい方を選択(詳細は後述)
フィルタ前後の縮小率
第1縮小面:1/4
第2縮小面:1/16
第3縮小面:1/64
【0048】
上記の仕様では、付加できる最大の動きぼけ量は、水平・垂直の各方向に、±64画素移動した相当の動きぼけまでを生成できる。
図8は、<具体例:条件1>の設定における、縮小画像生成処理部2の構成例を示すものである。
上記の水平・垂直の各方向に1次元フィルタを用いて縮小面生成処理を実行する場合の処理フローを示しており、生成された各縮小面は縮小画像データRSDとして出力される。
即ち入力画像データDDに対して、1次元フィルタ処理21−1で水平方向1/4縮小画像を生成する。さらに1次元フィルタ処理21−1の結果について1次元フィルタ処理21−2で水平方向1/16縮小画像を生成する。さらに1次元フィルタ処理21−2の結果について1次元フィルタ処理21−3で水平方向1/64縮小画像を生成する。
また、入力画像データDDに対して、1次元フィルタ処理22−1で垂直方向1/4縮小画像を生成する。さらに1次元フィルタ処理22−1の結果について1次元フィルタ処理22−2で垂直方向1/16縮小画像を生成する。さらに1次元フィルタ処理22−2の結果について1次元フィルタ処理22−3で垂直方向1/64縮小画像を生成する。
これらの結果として得られた6個の縮小画像データRSDが出力されることになる。
【0049】
なお、図示している1次元フィルタ(21−1〜22−3)の処理は、ソフトウエア演算で実現される再帰的なフィルタ処理をブロックで表現した処理フローとしているが、当該構成をハードウエア構成として捉えても良い。図9以降も同様である。
【0050】
図9は、図8に示した処理フローを、拡張して一般化したものである。
上記の<具体例:条件1>の設定においては、生成する水平・垂直方向の階層数は3と決めていたが、図9はこれを限定せず、水平方向の縮小面階層数をMx、垂直方向の縮小面階層数をMyと表現して一般化している処理フローである。
1次元フィルタ処理21−1・・・21−Mxにより、Mx階層の水平方向縮小画像が生成され、また1次元フィルタ処理22−1・・・22−Myにより、My階層の垂直方向縮小画像が生成される。これらが縮小画像データRSDとして出力される。
【0051】
図10は、図9に示した処理フローを、拡張したものである。
上記図8から図9は縮小画像の階層数を拡張した例であるが、図10は、さらに図9における縮小画像生成方向について、水平・垂直方向のみから斜め方向も含めた構成へと拡張している。
即ち1次元フィルタ処理21−1・・・21−Mxにより、Mx階層の水平方向縮小画像が生成され、また1次元フィルタ処理22−1・・・22−Myにより、My階層の垂直方向縮小画像が生成される。
さらに1次元フィルタ処理23−1・・・23−Mxyにより、Mxy階層の斜め45°方向縮小画像が生成され、また1次元フィルタ処理24−1・・・24−Myxにより、Myx階層の斜め135°方向縮小画像が生成される。
そしてこれらが縮小画像データRSDとして出力される。
【0052】
ここまで、各方向の動きぼけ付加用として独立に縮小画像を生成する方法について、その処理手順を述べたが、以下では、実際に各方向用に縮小画像を生成する際に用いるフィルタについて、その内容を説明する。
【0053】
上記までの説明においては、例として4タップのボックスフィルタを用いることを述べてきた。これは、縮小率1/4に対応して4画素ブロックのフィルタを用いていたわけであり、最も容易に実現できる方法であるため、である。動きぼけ発生原理を考慮しても、移動平均フィルタと同内容でボックスフィルタが、原理的に実際の動きぼけに最も類似するはずである。しかしながら、最終的に得られる画質の向上のために、変更することも可能である。
【0054】
図11は、縮小画像生成処理に用いるフィルタ形状の具体例を示すものである。
上記<具体例:条件1>の設定にて、水平・垂直のいずれかの方向に1/4縮小するフィルタを想定し、横軸は4画素ごとを1ブロックと考えた場合の座標を示しており、縦軸はフィルタとして各画素に乗ずる加重である。
4タップのボックスフィルタの他、7タップのテントフィルタ、10タップの階段フィルタ、13タップのガウシアンフィルタを例として図示しており、所謂FIRローパスフィルタであれば採用可能であることを示している。
【0055】
フィルタタップ数は、縮小フィルタによる縮小率が1/Nのとき、Nタップ以上であることが必要条件である(例えば、縮小率1/4、入力4画素に対し1画素を出力する場合には4タップ)が、さらにタップ数を増加することにより、画質の向上が期待できる。
これは、タップ数が小さいほど発生する恐れが高まる、折り返し現象に起因する画質劣化を低減できるためである。
また、フィルタタップ数の増加に伴い、隣接する分割領域に属する画素を重複してフィルタ処理を行うことになるが、それは問題とならない。
【0056】
図12は、フィルタリングを行う場合に用いる各縮小画像の画素の位置関係を説明するための図である。
いま、水平方向の縮小画像を生成しているものとして、各縮小画像からの画素をどのように重み付け加算することで、出力画素の画素値を算出するかを、この図を用いて説明する。フィルタタップ数は7の場合を例として用いている。なお、垂直方向もこれに準じて行えばよいため、図は省略する。
【0057】
図12中には、各縮小画像の画素について、番号が振られている。以下、何層目の縮小画像の何番目の画素か、についてこの番号を用いて表現する。例えば、1/16縮小画像の番号79の画素はL2(79)と表記する。基底面である入力画像データDD中の画素はL0(画素番号)で表現する。
【0058】
各縮小画像中の画素番号は、基底面上の対応する位置のものであり、各縮小面中で斜線を付した画素を位相の中心として、フィルタリングが実行されて作成されたものである。例えば、第1番目の縮小面である1/4縮小面中の画素L1(7)は、基底面中のL0(4)〜L0(10)までの画素を用いた7タップのフィルタによって、生成された画素である。
このように、各縮小画像においてフィルタを4画素シフトしつつ実行することにより、用いる画素が隣接するフィルタと重複しても問題なく、フィルタの前後で1/4だけ縮小された、次層の縮小面が作成される。当然、縮小率が異なる場合も同様の方法で実現可能である。
【0059】
[1−3:動きぼけレンダリング処理部3]
続いて動きぼけレンダリング処理部3の具体的な処理について説明する。
動きぼけレンダリング処理部3は、入力画像データDDと、縮小画像生成処理部2で生成された階層的な縮小画像を用いて、動きぼけを含んだ出力画像の各画素値を算出する。
【0060】
図13は、動きぼけレンダリング処理の流れを示す概略図である。
動きぼけレンダリング処理部3には、入力画像データDD、縮小画像データRSDおよび動きベクトルVDが入力し、各画素に適切な量の動きぼけが付加された出力画像データODを出力する。
【0061】
まず、動きベクトルVDから、当該画素に対し、どの方向に何画素移動した相当の動きぼけを付加するかの情報である、レンダリングパラメータの抽出が行われる(S1)。
レンダリングパラメータとは、言い換えれば、後段のレンダリング処理において、入力画像データDDおよび縮小画像データRSD中の当該画素の各々に、どれだけの重みを乗じて加算処理を実行するか、を示すデータである。後に具体的な例を用いてより明確に説明する。
縮小画像データRSDには、入力画像データDD中の各縮小画像において、当該画素に位置的に対応する画素の画素値を、補間処理によって生成する、合成画素算出処理が行われる(S2)。
この処理が必要な理由および具体的な処理内容の例については、詳しくは後述する。
最後に、入力画像データDDの当該画素、および、縮小画像データRSDから生成された各合成画素、のそれぞれに重みを付けて加算処理することにより、当該画素に対応する出力画素の画素値を算出する、レンダリング処理が行われる。重みの情報は、入力されるレンダリングパラメータ中にあるものとする。
【0062】
図14は、上記した<具体例:条件1>における、動きぼけレンダリング処理部3の処理ブロックを示すものである。
縮小画像データRSDが示す縮小画像は、縮小画像生成処理部2において、水平および垂直に各3層作成されている(図8参照)。
合成画素算出処理部31(31−1〜31−3)には、入力画像データDDから処理対象の当該画素が入力されるのとタイミングを合わせて、3層の水平縮小画像から各々に画素が入力され、後述する合成画素値の算出処理が行われる。
また合成画素算出処理部32(32−1〜32−3)には、入力画像データDDから処理対象の当該画素が入力されるのとタイミングを合わせて、3層の垂直縮小画像から各々に画素が入力され、後述する合成画素値の算出処理が行われる。
これら合成画素算出処理部31−1〜31−3、32−1〜32−3で算出された各縮小画像に対する合成画素は、セレクタ34へと入力される。
【0063】
ベクトル変換処理部35には、動きベクトルVDが入力されている。
上記<具体例:条件1>は、各画素に水平および垂直方向のいずれか一方の動きぼけを選択的に付加する条件である。そのため、ベクトル変換処理部35では、動きベクトルVDを基に、動きを付加する方向が水平と垂直のいずれであるかを示す選択情報と、付加する動きぼけの方向に対する各合成画素値に乗ずる重みを示す重み情報、を生成する。
そして選択情報は、セレクタ34へ供給され、重み情報は、重み付け画素加算処理部36へ供給される。
【0064】
セレクタ34は、ベクトル変換処理部35から入力された選択情報を基に、合成画素値のうち水平・垂直のどちら一方から入力された画素値のみを選択し、重み付け画素加算処理部36へ出力する。つまり、<具体例:条件1>の場合では、6つの画素値が入力し、3つの画素値として出力される。
重み付け画素加算処理部36には、既に入力画像データDDから処理対象の当該画素が入力されている。
さらに、上記の通り、合成画素値のうち方向選択された各画素値が入力される。
また、ベクトル変換処理部35から各画素値に対する重み情報が入力している。
この重み付け画素加算処理部36では、重み情報を基に、入力した各画素値に対し、詳しくは後述する重み付け画素加算処理を実行し、出力する画素値を算出する。
【0065】
合成画素算出処理部31,32における処理を図15で説明する。
図15は、合成画素算出処理および重み付け画素加算処理の内容について、具体例を示して説明するための図である。入力画像データDDと縮小画像データRSDについて、上記図12と同様に、各画素を示している。
【0066】
合成画素算出処理部31、32で行われる合成画素値の算出は、水平および垂直の各縮小画像から入力された画素について行うが、図15では、付加する動きぼけの方向が水平方向の場合(つまり合成画素算出処理部31のみ)について図示している。以下の説明は、垂直方向の場合(合成画素算出処理部32)についても同様に考えればよい。
【0067】
まず、合成画素値の算出処理が必要な理由について述べる。
後段の重み付け画素加算処理部36の処理では、前記の通り、入力画像データDDの当該画素、および、縮小画像データRSDから生成された各合成画素、のそれぞれに重みを付けて加算処理することにより、当該画素に対応する出力画素の画素値を算出するわけである。
しかし、各縮小画像には常に、入力画像データDD中の当該画素に対応する画素が存在するわけではないため、各縮小画像における対応画素を補間処理により算出しなくてはならない。
例えば、図15中の入力画像データDDで「20」の番号を振られている画素L0(20)に位置的に対応する、各縮小画像中における画素は存在しない。これは、入力画像データDDにフィルタリングを実行して、第1の縮小画像である1/4縮小画像を生成する際、L0(20)がフィルタの位相中心ではない画素であるためであり、1/4縮小面以降、位置的に対応する画素は存在しないわけである。
【0068】
そのため、何らかの補間処理によって、当該画素に対応する縮小画像中の画素値L1(20)’、L2(20)’、L3(20)’を推定するわけである。
ここでは、例として線形補間法を用いて、L1(20)’、L2(20)’、L3(20)’を算出する場合を考える。
【0069】
いま、各縮小画像生成時に位相中心となった画素の入力画像データDDにおける座標と、当該画素との距離を、図15中に示す通り、d1(20)、d2(20)、d3(20)のように表現する。これらは、当該画素よりも左に存在し、かつ、最寄りの位相中心となる画素、との距離である。このとき、入力画像データDDで「20」の番号を振られている画素L0(20)に対応する各縮小画像中における合成画素値L1(20)’、L2(20)’、L3(20)’は、
【数1】
と表現される。
【0070】
一般には、入力画像データDD中の第N番目画素L0(N)に対応する、第K縮小画像(1/R縮小面)において位置的に対応する合成画素の画素値LK(N)’を、以下のように表現する。
【数2】
ただし、<N>Kとは、入力画像データDD中の当該画素である第N番目の画素よりも左に存在し、かつ、第K縮小画像においてNに最寄りの位相中心となる画素、である。
【0071】
この(数2)に示す通り、各縮小面に存在する2画素(位置的に当該画素に対応する最寄りの2画素)を用いた、2タップのフィルタリング処理によって、線形補間された画素値を算出できる。
なお、ここでは線形補間による合成画素値算出の方法を示したが、補間の方式は、スプライン補間など、より高次な計算法を用いて算出することも可能である。
【0072】
次にベクトル変換処理部35における処理を説明する。
各画素に水平および垂直方向のいずれか一方の動きぼけを選択的に付加する、上記<具体例:条件1>に準じたベクトル変換処理部35では、既に入力されている動きベクトルVDを基に、動きを付加する方向が水平と垂直のいずれであるかを示す選択情報と、付加する動きぼけの方向に対する各合成画素値に乗ずる重みを示す重み情報、を生成する。
【0073】
ここで、動きベクトルVDにおける、当該画素の位置的に対応する動きベクトルについて、水平方向、垂直方向の動きの大きさを(Vx,Vy)と表す。動きを付加する方向は、水平および垂直方向の動きの絶対値を比較し、それが大の方向にぼけを付加する方法を採用する。
|Vx|≧|Vy|のとき:水平方向のぼけ付加
|Vx|<|Vy|のとき:垂直方向のぼけ付加
これを基に、動きぼけを付加する方向についての選択情報を、セレクタ34へと出力する。この例の場合、セレクタ34へ送る情報量は、1画素の動きぼけ付加に対して1ビットでよい。
【0074】
ベクトル変換処理部35のもうひとつの役割は、各合成画素値に乗ずる重みの情報を算出して、重み付け画素加算処理部36へと出力することであるが、この重み付けの決定方法は、以下の、重み付け画素加算処理部36の詳細な説明の中で例を示して明らかにする。
【0075】
次に重み付け画素加算処理部36における処理を説明する。
重み付け画素加算処理部36には、入力画像データDDの当該画素L0(N)、およびセレクタ34で選択された、水平・垂直方向のどちらか一方について、各縮小画像から生成された合成画素が各々入力される。
以下では、<具体例:条件1>の水平・垂直方向用に3層の縮小画像が生成されている場合であるとし、さらに付加する動きベクトル方向がセレクタ34において、水平方向に決定されているものとする。
このとき、各水平縮小画像中の画素から生成された合成画素をL1(N)’、L2(N)’、L3(N)’と表現する。
【0076】
ここで、同じくベクトル変換処理部35から入力した重み情報を基に、下記(数3)に示す、これらの画素値の線形重み付け加算処理が行われ、出力画素値Lout(N)が算出される。
【数3】
ここでw0〜w3は、各画素値に乗ずる重みである。一般には、下記の(数4)のように表せる。
【数4】
ただし、Mは当該方向に生成された縮小画像数であり、L0(N)=L0(N)’であるものとする。
【0077】
ベクトル変換処理部35は、入力された動きベクトルVDから、復号画像データDDの各画素に対して、各縮小画像に対する重みwkを算出し、重み付け画素加算処理部36へと提供しているわけである。
各画素値に与える重みを生成する手段であるが、<具体例:条件1>の場合を想定し、重みw0〜w3を決定する方法の例を示す。
当該画素の位置的に対応する動きベクトル(Vx,Vy)のうち、絶対値が大である成分の絶対値をVと記す。そして以下の重み決定ルールに基づいて、順に分け与えていく。
【0078】
手順1:w0=1。
V≦1であればw1=0,w2=0,w3=0とし、手順5へ。
手順2:V−w0>4−1であればw1=3。
そうでない場合、w1=V− w0,w2=0,w3=0とし、手順5へ。
手順3:V−(w0+w1)>16−4であればw2=12。
そうでない場合、w2=V−(w0+w1),w3=0とし、手順5へ。
手順4:w3=V−(w0+ w1+w2)。
手順5:w0〜w3の各値をVで除算して規格化。
【0079】
以上は一例であり、その限りではない。特に、手順5にて除算が生じるため、ハードウェアでの実現の場合に処理コストが増大する。そのため、Vに対する各重みwkをテーブル化することで、処理コストの低減が可能である。
【0080】
図16は、重み情報テーブルの例である。
図中のテーブルの1列目は、選択された方向のベクトル絶対値を示しており、2〜5列目は、各縮小面から抽出した各画素に乗ずる重みの値を示している。
数値はあくまで一例であり、限定するものではないが、ベクトル絶対値が小さいほど、各縮小面の重みの値は、小さい階層(基底面や第1縮小面)の重みの値を大とし、逆にベクトル絶対値が大きいほど、大きい階層(第3縮小面や第2縮小面)の重みの値を大とすべきである。
【0081】
以下では、動きぼけレンダリング処理部3の、より一般的な構成例や他の構成例を示していく。
図17は、上記<具体例:条件1>における動きぼけレンダリング処理部3の処理ブロックであった図17を一般化し、水平・垂直方向の各縮小画像を3層ずつに限定しない構成例である。
即ち合成画素算出処理部31は、合成画素算出処理部31−1〜31−MxによるMx階層に対応する構成とされる。
また合成画素算出処理部32は、合成画素算出処理部32−1〜32−MyによるMy階層に対応する構成とされる。
このように図17では、水平方向に縮小面をMx層、垂直方向に縮小面をMy層、各々生成している点のみが図14と異なる。
【0082】
以降、図17に示す処理ブロックを、想定される条件に沿って、変更した処理ブロック例を示していく。
図18は、図17の処理ブロックを変更した例である。
図17の処理ブロックでは、処理の順として、重み付け画素加算処理部36に用いる画素を水平・垂直のうちから選択してから、重み付け画素加算を実行する方法であったが、重み付け画素加算処理を水平・垂直の各々に実行してから方向の選択を行う方法も考えられる。図18はその場合の処理を実行するためのものである。
【0083】
即ち、重み付け画素加算処理部36Aで、水平方向についての合成画素算出処理部31(31−1〜31−My)からの画素値と、入力画像データDDの画素値について重み付け画素加算を実行する。
また、重み付け画素加算処理部36Bで、垂直方向についての合成画素算出処理部32(32−1〜32−My)からの画素値と、入力画像データDDの画素値について重み付け画素加算を実行する。
重み付け画素加算処理部36A、36Bにはベクトル変換処理部35から重み情報が供給される。
【0084】
そして重み付け画素加算処理部36A、36Bの処理結果がセレクタ34に供給される。セレクタ34はベクトル変換処理部35から供給される選択情報に基づいて、一方を選択し、出力する。
【0085】
次に図19は、図18の処理ブロックを変更した例である。
上記図17、図18に示す処理ブロック、および、これまでの説明で述べてきた処理においては、画素毎に水平または垂直のいずれか一方の方向を選択して動きぼけを付加する、方法であった。それに対し、図19に示す処理ブロックにおいては、水平と垂直の縮小画像の双方からの重み付け画素加算後の処理結果を、動きぼけを付加する方向に応じて、さらに合成した画素値を算出して出力する方式である。
即ち、重み付け画素加算処理部36C、36Dは、水平及び垂直の方向別に生成された各縮小画像について、それぞれ第1の重み付け加算を行う。また重み付け画素加算処理部36Eは、重み付け画素加算処理部36C、36Dの各第1の重み付け加算の結果の画素について、動きベクトルに基づき、第2の重み付け加算を行う。
【0086】
具体的には、重み付け画素加算処理部36Cは、水平方向についての合成画素算出処理部31(31−1〜31−My)からの画素値と、入力画像データDDの画素値についてMxタップの重み付け画素加算を実行する。ベクトル変換処理部35からは水平方向用の重み情報が供給されている。
また、重み付け画素加算処理部36Dは、垂直方向についての合成画素算出処理部32(32−1〜32−My)からの画素値と、入力画像データDDの画素値についてMyタップの重み付け画素加算を実行する。ベクトル変換処理部35からは垂直方向用の重み情報が供給されている。
さらに重み付け画素加算処理部36Eにおいては、重み付け画素加算処理部36C、36Dの出力について2タップの重み付け画素加算を実行し、これを出力とする。重み付け画素加算処理部36Eには、ベクトル変換処理部35からは、動きベクトルの方向に基づいた方向合成用の重み情報が供給されている。
【0087】
この例の場合、ベクトル変換処理部35における処理に変更が必要となるため、その方法について例を示す。
入力した動きベクトルVDにおける当該画素の対応ベクトル(Vx,Vy)とすると、水平方向ベクトルの絶対値|Vx|に対し、前記の重み決定ルールを適用することで、各水平方向縮小画像からの合成画素に乗ずる、水平方向用重み情報wxkを算出する。
垂直方向ベクトルの絶対値|Vy|からも同様に、垂直方向用重み情報wykを算出する。
さらに、ベクトル変換処理部35では、各重み付け画素加算後の画素を合成するために必要な、方向合成用重み情報wdを生成する必要がある。
このwdの算出方法の例としては、例えば、各方向のベクトル絶対値の大きさに準じた画素合成方法をとる場合、wd=|Vx|/(|Vx|+|Vy|)として算出する。
【0088】
この場合、水平・垂直方向重み付け画素加算後の画素に行う、2タップの重み付け画素加算処理による出力画素の合成は、以下の(数5)にて行えばよい。
【数5】
Lx(N)、Ly(N)は、水平・垂直方向重み付け画素加算後の各画素値である。
【0089】
次に図20は、図17の処理ブロックを変更した例である。
縮小画像の生成方向として、水平・垂直方向の他に、斜め方向も含めて拡張し、縮小画像を生成する場合を示している。
【0090】
合成画素算出処理部31(31−1〜31−Mx)には、入力画像データDDから処理対象の当該画素が入力されるのとタイミングを合わせて、Mx層の水平縮小画像から各々に画素が入力され、合成画素値の算出処理が行われる。
また合成画素算出処理部32(32−1〜32−My)には、入力画像データDDから処理対象の当該画素が入力されるのとタイミングを合わせて、My層の垂直縮小画像から各々に画素が入力され、合成画素値の算出処理が行われる。
合成画素算出処理部37(37−1〜37−Mxy)には、入力画像データDDから処理対象の当該画素が入力されるのとタイミングを合わせて、Mxy層の斜め45°方向縮小画像から各々に画素が入力され、合成画素値の算出処理が行われる。
合成画素算出処理部38(38−1〜38−Myx)には、入力画像データDDから処理対象の当該画素が入力されるのとタイミングを合わせて、Myx層の垂直縮小画像から各々に画素が入力され、合成画素値の算出処理が行われる。
【0091】
これら合成画素算出処理部31、32,33,34で算出された各縮小画像に対する合成画素は、セレクタ34へと入力される。そしてセレクタ34は、ベクトル変換処理部35からの選択情報に基づいて、4つの方向のうちの特定の方向の合成画素値を選択し、重み付け画素加算処理部36に出力する。
この例の場合、ベクトル変換処理部35がセレクタ34へ送る選択情報は、1フレームの動きぼけ付加に対して2ビットとする。
【0092】
この図20に示す処理ブロックをさらに、図18に示すような、各方向の重み付け画素加算後に処理結果を選択して出力する方式や、図19に示すような、各方向の重み付け画素加算後の処理結果をさらに合成して出力する方式に変形することも可能である。
【0093】
[1−4:まとめ]
以上、第1の実施の形態の画像処理装置1について説明してきたが、この実施の形態によれば、人間の視覚特性上、より自然にジャーキネス劣化が低減された動画像を出力することができる。
そして動きぼけ付加処理は、主に空間的なフィルタリング処理によって実現され、中間フレームを生成することがないため、処理過程で画像データを記憶するためのメモリを少なくすることができる。
さらに、空間フィルタ処理は、階層的なフィルタリングを実行した結果得られる、各階層の画素値を重み付け加算して出力する。そのため、各階層において行うフィルタは、少ないタップ数で実現可能である。また、そのフィルタのタップ数は、付加する動きぼけの量に依存せず、固定タップ数で行うことが可能である。
このような再帰的な処理による実現は、特にハードウェアによる処理実装に適している。当然に、ソフトウェア、また組合せによる実現も可能である。
【0094】
[2.第2の実施の形態]
第2の実施の形態としての画像処理装置100について説明する。
図21は、画像処理装置100の構成例を示している。
画像処理装置100は、動きベクトル生成処理部40と、動きベクトルマスク処理部50と、最適シャッタ速度算出/判別部60と、動きベクトル補正部70と、縮小画像生成処理部80と、動きぼけレンダリング処理部90とから構成されている。
【0095】
動きベクトル生成処理部40は、入力画像データDDの各処理対象フレームについて例えば画素ブロック単位での動きベクトルを生成する。
動きベクトルマスク処理部50は、動きぼけを付加する画像領域を特定する動きベクトルマスク情報を生成する。
最適シャッタ速度算出/判別部60は、実際に動画像が撮像されたときのシャッタ速度情報に応じて、当該領域の動きベクトルに応じて適したシャッタ速度(以下、最適シャッタ速度情報という)を算出する。
動きベクトル補正部70は、最適シャッタ速度情報に応じて、動きベクトルを補正する。
縮小画像生成処理部80は、フィルタリング処理などにより処理対象フレーム中から選択された画素に動きぼけを付加し、その結果得られた画素から構成される1つ以上の縮小面を生成する。
動きぼけレンダリング処理部90は、動きベクトル補正部70において補正された動きベクトルを基に、処理対象フレーム中の対応画素および縮小画像生成処理部80において生成された縮小面中の対応画素から、出力画像を構成する各画素の画素値を算出し出力する。
【0096】
まず動きベクトル生成処理部40の構成と動作について説明する。
動きベクトル生成処理部40は、上述したように画素ブロック単位で動きベクトルを精度良く生成する部位である。具体的には図22に示すように、動きベクトル検出部141、画素ブロック特定処理部142、動きベクトル推定処理部143、動きベクトル平滑化処理部144、及び遅延部141a,142aを有する。
【0097】
動きベクトル検出部141は、処理対象フレームと直前フレームとから動きベクトルを検出する。
画素ブロック特定処理部142は、処理対象フレームの動きベクトルと直前フレームの動きベクトルとを画素ブロック毎に比較して、相関の高い画素ブロックを特定する。
動きベクトル推定処理部143は、画素ブロック特定処理部142により特定された画素ブロックの動きベクトルから、それ以外の画素ブロックの動きベクトルを推定する。
動きベクトル平滑化処理部144は、動きベクトルに対して平滑化処理を施す。
【0098】
入力された入力画像データDDは、動きベクトル検出部141と、入力画像データDDを1フレーム分遅延させる遅延部141aに供給される。
動きベクトル検出部141は、入力された入力画像データDDを処理対象フレームとする。そして当該処理対象フレームと、遅延部141aにより1フレーム分遅延された直前フレームとから、処理対象フレームの動きベクトルを、画素ブロック単位で検出する。
なお、動きベクトル検出部141に係る処理をソフトウェアによって実装する場合には、一般的なブロックマッチング法を用いて画素ブロック単位で動きベクトルを検出すればよい。
【0099】
動きベクトル検出部141で検出された動きベクトルは、画素ブロック特定処理部142と遅延部142aに供給される。遅延部142aは入力された動きベクトルを1フレーム分遅延させる。
画素ブロック特定処理部142は、動きベクトル検出部141から供給される処理対象フレームの動きベクトルと、遅延部142aにより遅延された直前フレームの動きベクトルとを、次に示すように画素ブロック単位で比較して、この比較結果から相関の高い画素ブロックを特定する。
【0100】
具体的に、画素ブロック特定処理部142は、処理対象フレームの一の画素ブロックの動きベクトルを(x,y)とし、これに対応する直前フレームの画素ブロックの動きベクトルを(x’,y’)とし、任意に決定される相関判定係数をαとして、次の(数6)により、この画素ブロックのベクトル相関係数σを算出する。
【数6】
なお、相関判定係数αは、その定義域を0<α<1とし、αの値が大きいほど、ベクトル相関係数σの値が1として算出される係数である。
【0101】
画素ブロック特定処理部142は、上述した(数6)から各画素ブロックのベクトル相関係数σを算出して、ベクトル相関係数σが1である画素ブロックを相関の高い動きベクトルを有するものとして特定する。
【0102】
動きベクトル推定処理部143は、画素ブロック特定処理部142でベクトル相関係数σの値が1として特定された画素ブロックの動きベクトルから、このベクトル相関係数σの値が0である画素ブロックの動きベクトルを推定する。
すなわち、動きベクトル推定処理部143は、前段の画素ブロック特定処理部142で、ベクトル相関係数σの値が1とされた画素ブロックが有効な動きベクトルを有しているものとして、それ以外の画素ブロック、すなわち、ベクトル相関係数σの値が0とされ有効ではない動きベクトルを有している画素ブロックの動きベクトルを更新する。
【0103】
具体的な動きベクトル推定処理部143の処理工程を図23で説明する。
ステップS1において、動きベクトル推定処理部143は、処理対象フレームにおける現在の処理対象の画素ブロック(以下、注目画素ブロックという)のベクトル相関係数σが1か0であるかを判断する。すなわち、動きベクトル推定処理部143は、この画素ブロックの動きベクトルが有効であるか否かを判断する。そして、動きベクトル推定処理部143は、この画素ブロックの動きベクトルが有効であるとき動きベクトルの値を更新せずに本処理工程を終了し、この画素ブロックの動きベクトルが有効でないときステップS2に進む。
【0104】
ステップS2において、動きベクトル推定処理部143は、注目画素ブロックに対して、その注目画素ブロックの周辺に有効なベクトルを有する周辺画素ブロックが存在するか否かを判断する。具体的には、動きベクトル推定処理部143は、周辺画素ブロックとして、この注目画素ブロックに隣接する合計8つの画素ブロックに対して有効な動きベクトルが存在するか否かを判断し、有効な動きベクトルが存在するとき、ステップS3に進む。一方、有効な動きベクトルが存在しないとき、この注目画素ブロックの動きベクトルを更新せずに本処理工程を終了する。
【0105】
ここで、有効な動きベクトルが存在しない注目画素ブロックに対して、より広範囲に位置する周辺画素ブロックを用いて推定処理を行わない理由は、次の通りである。
第1の理由としては、より広範囲に位置する画素ブロックを用いて推定処理を行うことは可能であるが、仮に実現したとしても、固定時間処理で本処理工程を終了するためには、周辺画素ブロックとして扱われる画像データを一時的に記憶するための記憶領域が増大してしまうからである。
第2の理由としては、本処理工程の後段で、上述した隣接する合計8つの画素ブロックよりも広範囲の周辺画素ブロックを用いて注目画素ブロックの動きベクトルに対して平滑化処理を施すことにより、有効ではない動きベクトルを適切に補正することができるからである。
【0106】
ステップS3において、動きベクトル推定処理部143は、有効な動きベクトルを有する周辺画素ブロックの動きベクトルのみから、この注目画素ブロックの動きベクトルを推定して更新して、本処理を終了する。
動きベクトル推定処理部143では、推定処理の一例として、有効な動きベクトルを有する周辺画素ブロックの動きベクトルのみを入力としたメディアンフィルタにより注目画素ブロックの動きベクトルを出力して平滑化する。
動きベクトル推定処理部143は、以上のようにして、処理対象フレームの動きベクトルを画素ブロック単位で推定する。そして、動きベクトル推定処理部143は、画素ブロック特定処理部142で特定された動きベクトルを含めた動きベクトルを、動きベクトル平滑化処理部144に供給する。
【0107】
動きベクトル平滑化処理部144は、処理対象画像を構成する各画素ブロックの動きベクトルに対して平滑化処理を施す。具体的に、動きベクトル平滑化処理部144は、平滑化処理前の注目画素ブロックの動きベクトルと上述した隣接画素ブロックよりも広範囲の周辺画素ブロックの動きベクトルとを入力I(x+i,y+j)として、下記に示す(数7)に示すようなガウス型関数により、平滑化処理後の注目画素ブロックの動きベクトルJ(x,y)を出力する。
【数7】
ここで、rは注目画素ブロックと各周辺画素ブロックとの2次元空間上の距離を示し、σ2はこの距離rについての分散を示し、t2は動きベクトルについての分散を示している。すなわち、σ2及びt2は、平滑化の度合いを表す値として任意に設定されるパラメータとなっている。
【0108】
動きベクトル平滑化処理部144は、処理対象フレームを構成する各画素ブロックに対して上述した平滑化処理を施して、動きベクトルVDを動きベクトルマスク処理部50に供給する。
【0109】
このように、動きベクトル平滑化処理部144は、処理対象フレームを構成する各画素ブロックから、有効な動きベクトルを有する画素ブロックを特定し、この有効な動きベクトルからそれ以外の動きベクトルを推定する。このため精度良く実際の動体の動きに応じた動きベクトルを生成することができる。
なお、動きベクトル生成処理部40では、動きベクトル検出部141により検出した動きベクトルを、画素ブロック特定処理部142及び動きベクトル推定処理部143を介さずに、直接動きベクトル平滑化処理部144に供給して平滑化処理を施してもよい。このような処理を行った場合にも、上述した符号化情報として動きベクトルに比べて、実際の動体の動きに応じた精度の良い動きベクトルを生成することができる。
【0110】
次に動きベクトルマスク処理部50の動作について説明する。
動きベクトルマスク処理部50は、処理対象フレームのうち、動きぼけを付加する画像領域を特定するため、動きベクトル生成処理部40から供給される画素ブロック単位の動きベクトルVDに対して、図24に示すようなマスク処理を施す。そしてマスク処理後の画素ブロック単位の動きベクトルを最適シャッタ速度算出/判別部60及び動きベクトル補正部70に供給する。
【0111】
ここで、動きぼけを付加する必要がある、ジャーキネス劣化が発生しやすい画像領域は、特に画面内の動体画像領域(フレーム内において動体となる画像領域)及びエッジ周辺の画像領域に集中する。
よって、動きベクトルマスク処理部50では、図24に示す処理により、ジャーキネスが発生しやすい、空間コントラストの高いエッジ周辺の画素ブロックの動きベクトルだけ有効な値として出力する。
すなわち、ステップS11において、動きベクトルマスク処理部50は、入力画像データDDに対し、画素ブロック単位で、処理対象フレーム内の空間コントラストの高い領域を特定するための処理として画像のエッジを検出する。
また、ステップS11の処理と並列して、ステップS12において、動きベクトルマスク処理部50は、処理対象フレーム内の動体領域を特定するための処理として、フレーム間での差分を画素ブロック単位で算出することによって動体画像領域を検出する。
【0112】
ステップS13において、動きベクトルマスク処理部50は、上述したステップS11及びステップS12の何れか一方又は両方に係る処理で、ジャーキネス劣化が発生しやすい領域として検出されたか否かを、画素ブロック単位で判断する。
そして、ジャーキネス劣化が発生しやすい領域と判断した画素ブロックに対して、動きベクトルマスク処理部50は、マスク処理用のフラグを「1」に設定する。また、ジャーキネスが発生しやすい領域と判断されなかった画素ブロックに対して、マスク処理用のフラグを「0」に設定する。
【0113】
ステップS14において、動きベクトルマスク処理部50は、動きベクトル生成処理部40から供給される動きベクトルVDに対して、上述したフラグが「1」に設定されている画素ブロックの動きベクトルVDであるか否かを判断する。
動きベクトルマスク処理部50は、フラグが「1」に設定されている画素ブロックの動きベクトルに対しては、その値を変えずに、後段の最適シャッタ速度算出/判別部60及び動きベクトル補正部70に出力する(S16)。
また、動きベクトルマスク処理部50は、フラグが「0」に設定されている画素ブロックの動きベクトルに対しては、ステップS15において、動きベクトルの値を0又は無効にするマスク処理を施して、後段の最適シャッタ速度算出/判別部60及び動きベクトル補正部70に出力する。
【0114】
次に最適シャッタ速度算出/判別部60、及び動きベクトル補正部70に係る処理工程について図25を用いて説明する。
ステップS31として、最適シャッタ速度算出/判別部60は、例えば図26に示すような評価指標に基づいて処理対象フレームの各画素ブロックの動きベクトルに応じた最適シャッタ速度を算出する。
ここで、図26は、動きベクトルとして検出される動体の移動速度を示す被写体速度と、この被写体速度に応じた最適シャッタ速度曲線を表した図である。また、最適シャッタ速度とは、被写体の移動速度に応じた、視覚特性上、ジャーキネス劣化が知覚されにくく、且つ、動きぼけが過度に付加されることによって被写体のディテールが欠損したり不鮮明になるぼけ劣化も知覚されにくいシャッタ速度である。
すなわち、この最適シャッタ速度よりも速いシャッタ速度で被写体を撮像すると、撮像画像には、ジャーキネス劣化が生じていると判断できる。一方、この最適シャッタ速度よりも遅いシャッタ速度で被写体を撮像すると、撮像画像には、ぼけ劣化が生じていると判断することができる。
【0115】
そこで、最適シャッタ速度算出/判別部60は、各画素ブロックの動きベクトルを図26中の被写体速度に対応させることにより、各画素の動きベクトルに応じた最適シャッタ速度を算出する。
なお、図26の実線で示されている最適シャッタ速度曲線SS0は、任意の被写体速度と最適なシャッタ速度との対応関係を示した一例であって、具体的には心理実験に基づいて得られた実験結果値を結んだ曲線である。
ここで、図26に示す動きぼけ領域A1は、最適シャッタ速度曲線SS0に基づいて、被写体の動きによる動きぼけが過度に含まれると判別される領域である。同様にして、ジャーキネス領域A2は、最適シャッタ速度曲線SS0に基づいて、被写体の動きによる動きぼけが含まれず、視覚特性上ジャーキネス劣化が生じていると判別される領域である。
【0116】
この実線で示されている最適シャッタ速度曲線SS0を直接用いて、動きベクトルに応じた最適シャッタ速度を求める場合には、任意の刻み幅で動きベクトルに応じた最適シャッタ速度情報をテーブルとして記憶媒体に予め記憶して、この記録媒体を参照すればよい。
【0117】
また、本実施の形態では、この実線で示された最適シャッタ速度曲線に近似する関数を用いることにより、動きベクトルに応じた最適シャッタ速度を算出するようにしてもよい。この場合、最適シャッタ速度算出/判別部60は、ある画素ブロックでの動きベクトルをvとして、下記の(数8)に示す最適シャッタ速度曲線の近似関数により最適シャッタ速度SSD’を算出する。
【数8】
なお(数8)における各パラメータA、B、γは、図26中に示す最適シャッタ速度曲線の曲線形状に応じて適当な値を選択して用いるようにすればよい。シャッタ速度曲線の具体例として、図26では、(数8)中の各パラメータのうち、A、Bの値を固定にして、γを3段階に変化させたときの曲線形状SS1〜SS3を示している。
【0118】
動きベクトルに応じた最適シャッタ速度SSD’が算出されると、ステップS32において、最適シャッタ速度算出/判別部60は、この最適シャッタ速度SSD’と、入力画像データDDが実際に撮像された際のシャッタ速度SSDとを比較して、画素ブロック単位で図26に示すジャーキネス領域A2に該当しているか否かを判別する。
【0119】
この判別結果から、現在の処理対象の画素ブロックにおいて、シャッタ速度SSDが最適シャッタ速度SSD’よりも速く、ジャーキネス領域A2に該当しているとき、動きベクトル補正部70は、ステップS33の処理を行う。また、現在の処理対象の画素ブロックにおいて、シャッタ速度SSDが最適シャッタ速度SSD’よりも遅くジャーキネス領域A2に該当してないとき、動きベクトル補正部70は、ステップS34の処理を行う。
【0120】
ステップS33において、動きベクトル補正部70は、処理対象の画素ブロックにおいてジャーキネス劣化が生じているので、例えば、シャッタ速度SSDが速くなるのに伴って増加して値が1に収束する関数fs(SSD)を動きベクトルの値に乗じる処理を行う。
なお、動きベクトル補正部70は、関数fs(SSD)に代えて、動きベクトルVDを変数としたfs(VD)又は、シャッタ速度SSDと動きベクトルVDとを2変数としたfs(SSD,VD)を用いて乗算処理を行うようにしてもよい。
【0121】
ステップS34において、動きベクトル補正部70は、処理対象の画素ブロックにおいてジャーキネス劣化が生じていないので、例えばこの動きベクトルの値に0を乗じて無効にするマスク処理を施す。
【0122】
このようにして、最適シャッタ速度算出/判別部60は、処理対象となっている動画像が実際に撮像された時のシャッタ速度SSDを考慮して、ジャーキネス劣化が生じているか否かを判別する。そして、動きベクトル補正部70は、ジャーキネス劣化が生じていると判別された画素ブロックの動きベクトルに対して、適切な動きぼけを付加するための補正処理を施す。
そして動きベクトル補正部70は、補正結果としての動きベクトルVDを、動きぼけレンダリング処理部90に出力する。
【0123】
縮小画像生成処理部80、および動きぼけレンダリング処理部90の具体的な構成及び処理については、第1の実施の形態で説明した縮小画像生成処理部2、および動きぼけレンダリング処理部3と同様である。
つまり、縮小画像生成処理部80は、入力画像データDDの処理対象フレームから1つ以上の解像度の異なる縮小画像を生成する。動きぼけレンダリング処理部90は、入力画像データDDの処理対象フレームの注目画素に位置的に対応する画素を、縮小画像生成処理部80で形成された縮小画像から抽出する。そして動きベクトル補正部70から供給される、処理対象フレームに関する動き情報VDを基に、上記注目画素および上記縮小画像から抽出した1つ以上の抽出画素について、重み付け加算処理を行って、処理対象フレームに動きぼけを付加する処理を行う。
【0124】
このような第2の実施の形態も、第1の実施の形態と同様、視覚特性上、より自然な動画像となるように動きぼけ付加処理を行うことができる。
また動きベクトルVDも安定して生成され、より適切な動きぼけレンダリング処理を実現させることになる。
【0125】
なお本実施の形態では、画像データで示される画像の動きぼけの度合いを変化させる撮像条件を示す撮像情報の一例として、シャッタ速度情報を挙げて説明したが、次に示すような撮像条件を示す撮像情報を用いて動きベクトルを補正するようにしてもよい。
【0126】
すなわち、撮像素子に入射させる光量を制限して露光量を制御する絞り機構を有する撮像装置によって画像データが撮像されている場合、動きベクトル補正部70では、撮像情報として、画像データを撮像した時の絞り値Fを示す絞り値情報に基づいて、動きベクトルVDを補正するようにしてもよい。具体的に、絞り値Fが大きく被写界深度が深い撮像条件で撮像された画像データで示される画像は、空間コントラストが高い画像領域がより増えるので、ジャーキネス劣化が目立ちやすいという特徴がある。
したがって、動きベクトル補正部70では、絞り値Fが大きくなるのに伴って増加して値が1に収束する関数を動きベクトルVDの値に乗じる補正処理をすればよい。
【0127】
また、ジャイロスコープによって検出される角速度に応じて撮像画像のぶれを補正するぶれ補正機構を有する撮像装置によって画像データが撮像されている場合、動きベクトル補正部70では、撮像情報として、この画像データを撮像した時のジャイロスコープによって検出される角速度を示す角速度情報に基づいて、動きベクトルを補正するようにしてもよい。
ジャイロスコープによって検出される角速度が大きい撮像条件で撮像された画像データで示される画像は、画面内の動きが大きく、ジャーキネス劣化が目立ちやすいという特徴がある。したがって、動きベクトル補正部70では、ジャイロスコープによって検出される角速度が大きくなるのに伴って増加して値が1に収束する関数を動きベクトルの値に乗じる補正処理をすればよい。
【0128】
また、被写体を拡大するズーム機能を有する撮像装置によって画像データが撮像されている場合、動きベクトル補正部70では、撮像情報として、この画像データを撮像した時の撮像装置に設けられているズーム機能の拡大率を示すズーム情報に基づいて、動きベクトルを補正するようにしてもよい。
拡大率が大きい撮像条件で撮像された画像データで示される画像は、画面内の動きが大きく、ジャーキネス劣化が目立ちやすいという特徴がある。したがって、動きベクトル補正部70では、拡大率が大きくなるのに伴って増加して値が1に収束する関数を動きベクトルの値に乗じる補正処理をすればよい。
【0129】
なお、動きベクトル補正部70では、上述したシャッタ速度情報、絞り値情報、角速度情報、及びズーム情報を組み合わせて用いて動きベクトルを補正するようにしてもよい。
また、撮像情報は、上述したシャッタ速度情報、絞り値情報、角速度情報、及びズーム情報に限定されるものではなく、画像データで示される画像の動きぼけの度合いを変化させる撮像条件を示す情報であれば、他の情報を用いて動きベクトルの補正処理をしてもよい。
【0130】
以上、本発明の第1,第2の実施の形態を説明してきたが、本発明の画像処理装置、画像処理方法は、上記各例に限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々の変更が可能であることは勿論である。
また上記各例の画像処理装置1,100の構成は、複数の処理部の論理的集合構成であり、各構成として示した処理部が同一筐体内にあるものには限らない。
【0131】
[3.プログラム]
以上の実施の形態は、画像処理装置1,100として説明したが、これらの画像処理装置は画像処理を行う各種機器に適用できる。例えば画像再生装置、撮像装置、通信装置、画像記録装置、ゲーム機器、ビデオ編集機、などが想定される。
【0132】
さらに、汎用のパーソナルコンピュータその他の情報処理装置において、動画像再生や記録等を行う際に、画像処理装置1,100としての動作を実行することも当然想定される。
即ち、上述した画像処理装置1,100を構成する各処理部は、例えばFPGA等によって設計されるハードウェアによって実現されることもできるが、各処理部によって実現される画像処理をコンピュータ等の情報処理機器に実行させるようにしても良い。
例えば上述の縮小画像生成処理部2(80)、動きぼけレンダリング処理部3(90)の動作を演算処理装置に実行させるプログラムを画像処理アプリケーションソフトウエアとして提供することで、パーソナルコンピュータ等において、適切な画像処理を実現できる。
【0133】
即ち当該プログラムは以下の各ステップを演算処理装置(CPU等)に実行させる。
まず縮小画像生成処理部2(80)の処理に相当する、入力された動画像データに対し、動画像を構成する各単位画像を処理対象画像とし、その処理対象画像から1つ以上の解像度の異なる縮小画像を生成する縮小画像生成ステップを演算処理装置に実行させる。
また動きぼけレンダリング処理部3(90)の処理に相当する、処理対象画像の注目画素に位置的に対応する画素を上記縮小画像から抽出し、処理対象画像に関する動きを示す動き情報を基に、注目画素および縮小画像から抽出した1つ以上の抽出画素について、重み付け加算処理を行って、処理対象画像に動きぼけを付加する画素合成処理ステップを演算処理装置に実行させる。
【0134】
また当該プログラムはさらに、動きベクトル生成処理部40の処理に相当する、入力された動画像データについて、該動画像データを構成する各単位画像を処理対象画像とし、処理対象画像毎の動きベクトルを生成する処理を演算処理装置に実行させてもよい。
また、動きベクトルマスク処理部50の処理に相当する、動きぼけを付加する画像領域を特定する動きベクトルマスク情報を生成する処理を演算処理装置に実行させてもよい。
また、最適シャッタ速度算出/判定部60の処理に相当する、動き情報に対応する最適な撮像シャッタ速度として、出力画像の画像劣化が低減される最適シャッタ速度情報を、処理対象画像中の各画素または分割領域ごとに取得する処理を演算処理装置に実行させてもよい。
また、動きベクトル補正部70の処理に相当する、最適シャッタ速度情報等を用いて動き情報を補正する処理を演算処理装置に実行させてもよい。
【0135】
このようなプログラムにより、本発明をパーソナルコンピュータ、携帯電話機、PDA(Personal Digital Assistant)、その他画像データを用いる多様な情報処理装置においても同様の画像処理を実行できるようにすることができる。
【0136】
なお、このようなプログラムは、パーソナルコンピュータ等の機器に内蔵されている記録媒体としてのHDDや、CPUを有するマイクロコンピュータ内のROMやフラッシュメモリ等に予め記録しておくことができる。
あるいはまた、フレキシブルディスク、CD−ROM(Compact Disc Read Only Memory)、MO(Magnet optical)ディスク、DVD、ブルーレイディスク、磁気ディスク、半導体メモリ、メモリカードなどのリムーバブル記録媒体に、一時的あるいは永続的に格納(記録)しておくことができる。このようなリムーバブル記録媒体は、いわゆるパッケージソフトウェアとして提供することができる。
また、プログラムは、リムーバブル記録媒体からパーソナルコンピュータ等にインストールする他、ダウンロードサイトから、LAN(Local Area Network)、インターネットなどのネットワークを介してダウンロードすることもできる。
【図面の簡単な説明】
【0137】
【図1】本発明の実施の形態の第1の実施の形態の画像処理装置のブロック図である。
【図2】実施の形態の縮小画像を用いた重み付け加算処理の説明図である。
【図3】実施の形態の縮小画の生成処理の説明図である。
【図4】実施の形態の水平方向縮小画像の生成処理の説明図である。
【図5】実施の形態の垂直方向縮小画像の生成処理の説明図である。
【図6】実施の形態の斜め45°方向縮小画像の生成処理の説明図である。
【図7】実施の形態の斜め135°方向縮小画像の生成処理の説明図である。
【図8】実施の形態の縮小画像生成処理部の処理の説明図である。
【図9】実施の形態の縮小画像生成処理部の処理を一般化した説明図である。
【図10】実施の形態の縮小画像生成処理部の4方向の縮小画生成処理の説明図である。
【図11】実施の形態の縮小画像生成処理部のフィルタの説明図である。
【図12】実施の形態の縮小画像生成処理の説明図である。
【図13】実施の形態の動きぼけレンダリング処理部の処理の説明図である。
【図14】実施の形態の動きぼけレンダリング処理部の構成のブロック図である。
【図15】実施の形態の合成画素算出処理及び重み付け画素加算処理の説明図である。
【図16】実施の形態の重み情報テーブルの説明図である。
【図17】実施の形態の動きぼけレンダリング処理部の他の構成のブロック図である。
【図18】実施の形態の動きぼけレンダリング処理部のさらに他の構成のブロック図である。
【図19】実施の形態の動きぼけレンダリング処理部のさらに他の構成のブロック図である。
【図20】実施の形態の動きぼけレンダリング処理部のさらに他の構成のブロック図である。
【図21】第2の実施の形態の画像処理装置のブロック図である。
【図22】第2の実施の形態の動きベクトル生成処理部のブロック図である。
【図23】第2の実施の形態の動きベクトル生成処理部の処理の説明図である。
【図24】第2の実施の形態の動きベクトルマスク処理部の処理の説明図である。
【図25】第2の実施の形態の最適シャッタ速度算出/判定部及び動きベクトル補正部の処理の説明図である。
【図26】実施の形態の最適シャッタ速度に関する説明図である。
【図27】従来の動画像撮像装置と動画像再生装置のブロック図である。
【符号の説明】
【0138】
1 画像処理装置、2 縮小画像生成処理部、3 動きぼけレンダリング処理部、40 動きベクトル生成処理部、50 動きベクトルマスク処理部、60 最適シャッタ速度算出/判定部、70 動きベクトル補正部、80 縮小画像生成処理部、90 動きぼけレンダリング処理部、100 画像処理装置
【技術分野】
【0001】
本発明は、動画像に対して動きぼけを付加する画像処理を行う画像処理装置、画像処理方法、及びその画像処理をコンピュータ等の演算処理装置に実行させるプログラムに関する。
【背景技術】
【0002】
【特許文献1】特開2007−274299号公報
【非特許文献1】"Modeling motion blur in computer-generated images" ACM SIGGRAPH Computer Graphics, Volume 17, Issue 3, July 1983.)
【0003】
シャッタ機能を有する撮像装置によりフレームレートで決定される期間に対して各フレームが短い有効露光時間で撮像された動画像を、表示デバイスを用いて表示すると、画像中に含まれる移動物体の動きが不連続に表示され、画像を観察する観察者が他重像を知覚してしまうという視覚上の画像劣化が発生する場合がある。
【0004】
また、ゲーム、映画、広告、テレビなどに幅広く使われているCG(Computer Graphics)技術により生成された動画像には、元より撮像時の有効露光時間に起因する撮像ぼけという現象は存在しない。そのため、モーションブラー(Motion Blur)効果を考慮せずに動画像を生成し、表示デバイスを用いて表示すると、画像中に含まれる移動物体の動きが不連続に表示され、画像を観察する観察者が他重像を知覚してしまうという視覚上の画像劣化が発生してしまう。
このような動きの不自然さによる動画像の劣化は、一般的にモーションジャーキネス(Motion Jerkiness)と呼ばれる(参考文献:ANSI T1.801.02-1996)。
【0005】
モーションジャーキネスが発生する具体例について、図27に示す動画像撮像装置500及び動画像再生装置600を用いて説明する。
動画像撮像装置500は、動画像を撮像してMPEG(Moving Picture Experts Group)などの規格で符号化し、この符号化された画像データをDVD(Digital Versatile Disc)などの記録媒体700に記録するものであり、具体的には次のような構成を有している。
【0006】
即ち動画像撮像装置500は、被写体像からの光を集光する撮像光学系510と、この撮像光学系510により集光された光を受光して画像信号に変換する撮像素子520と、この撮像素子520により変換された画像信号を符号化する符号化処理部530を有する。
また動画像撮像装置500は、符号化処理部530により符号化された画像データを所定の伝送路を介して外部へ送信する送信処理部540と、符号化処理部530により符号化された画像データをDVDなどの記録媒体700に記録する記録処理部550を備える。
【0007】
撮像光学系510は、外部から入射する被写体光の光量を調節する絞り機構511と、絞り機構511により光量を調節された被写体光を撮像素子520の受光面に集光させる光学レンズ系512とから構成される。
【0008】
一方、動画像再生装置600は、符号化された画像データを復号して、ディスプレイなどに表示出力するものであり、具体的には次のような構成を有している。
即ち動画像再生装置600は、所定の伝送路を介して伝送されてくる符号化された画像データを受信する受信処理部610と、記録媒体700から符号化された画像データを読み出す読出処理部620を有する。
また動画像再生装置600は、受信処理部610及び読出処理部620から出力される符号化された画像データを復号する復号処理部630と、復号処理部630によって復号された画像信号を表示するディスプレイなどの表示出力部640とを備える。
【0009】
例えば明るい野外などで動画像を撮像するとき、このような従来の動画像撮像装置500では、絞り機構511を絞ることによって撮像素子520に入射させる光量を制限して露光量を適切に制御している。
しかしながら、通常、絞り機構511を絞りすぎると回折現象により像がぼやけてしまう。このため、動画像撮像装置500では、絞り機構511によって光量を調節するのに加えて、シャッタ速度を短くすることで適切な露光制御を行っている。
また、絞り機構が設けられていない動画像撮像装置では、シャッタ速度を変更することで露光制御を行っている。
【0010】
このようにして、従来の動画像撮像装置500では、シャッタ速度を短くすることで、野外撮影などにおいて適切な露光制御を行うことができるが、これに伴って次のような現象が現れてくる。
すなわち、従来の動画像撮像装置500では、シャッタ速度を短くしすぎると、人間の視覚特性によって画像の動きに滑らかさを欠いた現象となって現れてしまう。
【0011】
このような動きの不自然さによる動画像の劣化は、一般的にモーションジャーキネス(Motion Jerkiness)と呼ばれる。すなわち、動画像再生装置600は、動画像撮像装置500によってジャーキネス劣化を含んで撮像されると、そのままジャーキネス劣化を含んだ画像データを復号して表示出力部640により表示することとなる。
【0012】
以上のように、動画像のフレームレートに対して、非常に高速のシャッタ速度で撮像された画像は、静止画像として表示したときには鮮鋭度が高いが、動画像として表示したときには画像中の動体の動きが滑らかではなく、人間の視覚特性上、不自然に見えてしまう。
【0013】
また、CG分野の技術では、表示動画像を生成するレンダリング処理の際、モーションブラー(Motion Blur)効果と言われる、計算機上において撮像ぼけの現象を模擬し、仮想的な動きぼけを付加する処理を行い、滑らかな動画像を生成する方法が広く知られている。レンダリング処理とは、仮想的な三次元空間上にあるCGデータを、表示するための仮想的なスクリーン上にマッピングする手法であり、代表的なものにZ-Buffer法やレイトレーシング法などがある。
上記非特許文献1には、CGにおけるモーションブラー効果について開示されている。
【発明の開示】
【発明が解決しようとする課題】
【0014】
モーションブラー効果の生成は、表示装置に出力される動画像のフレーム数よりも多くの単位画像を生成し、これらを用いてフレームの平均化を行う方法が一般的である。表示フレームに対し時間的に中間にあたるフレームまでを計算して記憶し、それらを加算処理した結果を出力するわけである。しかし、この方法は中間フレームを記憶するためのメモリのリソースが少ない場合には実現できない。
【0015】
そこで本発明はこのような実情に鑑みて、撮像装置などによって取り込まれた動画像を構成する各単位画像に、適切な動きぼけを効果的に付加することによりジャーキネス劣化を低減させる処理を行う画像処理装置、画像処理方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【0016】
本発明の画像処理装置は、動画像を構成する各単位画像を処理対象画像とし、上記処理対象画像から1つ以上の解像度の異なる縮小画像を生成する縮小画像生成手段と、上記処理対象画像の注目画素に位置的に対応する画素を上記縮小画像から抽出し、上記処理対象画像に関する動きを示す動き情報を基に、上記注目画素および上記縮小画像から抽出した1つ以上の抽出画素について、重み付け加算処理を行って、上記処理対象画像に動きぼけを付加する画素合成処理手段とを備える。
【0017】
また、上記縮小画像生成手段は、上記処理対象画像に対し、再帰的な縮小フィルタ処理を用いることで上記縮小画像を生成する。
また、上記画素合成処理手段は、上記注目画素および1つ以上の上記抽出画素に応じた重みの値を、上記画像に関する動きを示す動き情報を基に変更する。
また、上記画素合成処理手段は、上記注目画素に応じて各縮小画像から抽出する画素について、注目画素と各縮小画像中に存在する画素との位置関係に応じて、各縮小画像中に存在する複数画素の重み付け加算処理によって抽出する。
また、上記縮小画像生成手段は、上記処理対象画像に対し縮小フィルタ処理を行って、方向別の縮小画像をそれぞれ生成する。そして上記画素合成処理手段は、上記各方向別に生成された各縮小画像から、方向を選択することで縮小画像を選択し、上記処理対象画像の注目画素に位置的に対応する画素を上記選択した縮小画像から抽出し、上記動き情報を基に、上記注目画素および上記選択した縮小画像から抽出した1つ以上の抽出画素について重み付け加算処理を行う。
また、上記縮小画像生成手段は、上記処理対象画像に対し縮小フィルタ処理を行って、方向別の縮小画像をそれぞれ生成する。そして上記画素合成処理手段は、上記処理対象画像の注目画素に位置的に対応する画素を上記各方向別に生成された各縮小画像からそれぞれ抽出し、上記動き情報を基に、上記注目画素および上記各縮小画像からそれぞれ抽出した抽出画素について、それぞれに第1の重み付け加算処理を行い、上記第1の重み付け加算処理の結果の各画素について、上記動き情報に応じた第2の重み付け加算処理を行う。
【0018】
また、上記動き情報に対応する最適な撮像シャッタ速度として、出力画像の画像劣化が低減される最適シャッタ速度情報を、処理対象画像中の各画素または分割領域ごとに取得し、上記最適シャッタ速度情報を用いて動き情報を補正する動き情報補正手段をさらに有し、上記画素合成処理手段は、上記動き情報補正手段が補正した動き情報を用いて上記処理対象画像に動きぼけを付加する。
また上記動き情報補正手段は、撮像装置により撮像された際のシャッタ速度情報と上記最適シャッタ速度情報を用いて上記動き情報を補正する。
また、上記動き情報として動きベクトルを生成する動きベクトル生成手段を更に備え、上記動き情報補正手段は、上記動きベクトル生成手段により生成された動きベクトルを補正し、上記画素合成処理手段は、上記動き情報補正手段により補正された動きベクトルを用いて、上記処理対象画像の注目画素に位置的に対応する画素を上記縮小画像から抽出し、上記注目画素および上記縮小画像から抽出した1つ以上の抽出画素について、重み付け加算処理を行う。
また上記動きベクトル生成手段は、処理対象画像となる単位画像の動きベクトルを検出する動きベクトル検出手段と、上記動きベクトル検出手段が検出した処理対象画像の動きベクトルと、該処理対象画像以前の処理対象画像の動きベクトルを画素ブロック単位で比較して、相関が高い画素ブロックを特定する画素ブロック特定手段と、上記画素ブロック特定手段により特定された画素ブロックの動きベクトルから、該特定された画素ブロック以外の画素ブロックの動きベクトルを推定する動きベクトル推定手段とを有する。
また上記動きベクトル生成手段は、処理対象画像となる単位画像の動きベクトルを検出する動きベクトル検出手段と、上記動きベクトル検出手段が検出した処理対象画像の動きベクトルを平滑化する動きベクトル平滑化手段とを有する。
【0019】
本発明の画像処理方法は、動画像を構成する各単位画像を処理対象画像とし、上記処理対象画像から1つ以上の解像度の異なる縮小画像を生成する縮小画像生成ステップと、上記処理対象画像の注目画素に位置的に対応する画素を上記縮小画像から抽出し、上記処理対象画像に関する動きを示す動き情報を基に、上記注目画素および上記縮小画像から抽出した1つ以上の抽出画素について、重み付け加算処理を行って、上記処理対象画像に動きぼけを付加する画素合成処理ステップとを有する。
本発明のプログラムは、上記縮小画像生成ステップと、上記画素合成処理ステップとを演算処理装置に実行させるプログラムである。
【0020】
このような本発明では、動画像における処理対象画像(例えば1フレームの画像データ)から、1つ以上の解像度の異なる縮小画像を生成する。そして処理対象画像の注目画素に位置的に対応する画素を、上記縮小画像から抽出し、動き情報を基に、注目画素と抽出画素について重み付け加算処理を行う。これは主に空間的なフィルタリング処理によって処理対象画像に動きぼけを付加することとなる。
【発明の効果】
【0021】
本発明によれば、動きベクトルに応じて適切な動きぼけを処理対象画像毎に付加することができ、人間の視覚特性上、より自然にジャーキネス劣化が低減された動画像を出力することができる。
また、本発明で実現される動きぼけ付加処理は、主に空間的なフィルタリング処理によって実現され、中間フレームを生成することがないため、処理過程で画像データを記憶するためのメモリを少なくすることができる。
さらに、空間フィルタ処理は、階層的なフィルタリングを実行した結果得られる、各階層の画素値を重み付け加算して出力する。そのため、各階層において行うフィルタは、少ないタップ数で実現可能である。また、そのフィルタのタップ数は、付加する動きぼけの量に依存せず、固定タップ数で行うことが可能である。このような再帰的な処理による実現は、特にハードウェアによる処理実装に適している。
【発明を実施するための最良の形態】
【0022】
以下、本発明を実施するための最良の形態について、図面を参照しながら詳細に説明する。本発明の実施の形態としての画像処理装置は、人間の視覚特性上、不自然に見えてしまうジャーキネス劣化を含んだ動画像に対して動きぼけを付加して、このような劣化を低減するものである。
説明は次の順序で行う。
[1.第1の実施の形態]
[1−1:画像処理装置1の全体構成]
[1−2:縮小画像生成処理部2]
[1−3:動きぼけレンダリング処理部3]
[1−4:まとめ]
[2.第2の実施の形態]
[3.プログラム]
【0023】
[1.第1の実施の形態]
[1−1:画像処理装置1の全体構成]
図1は、第1の実施の形態の画像処理装置1の構成例を示している。
この画像処理装置1は、入力画像データDD、および入力画像データDDの各画素または各分割領域の動きの情報である動きベクトルVD、を入力とし、動きぼけの付加によりジャーキネス劣化が低減した出力画像ODを出力する。
入力画像データDDは、画像撮像や記録媒体からの再生等により供給される動画像データであり、画像処理装置1は、例えば動画像を構成する1フレーム毎の入力画像データDDを処置対象画像として動きぼけの付加処理を行う。
動きベクトルVDとは、入力画像データDDの各フレームにおける、各画素または各分割領域の動きの情報である。なお分割領域とは、例えば1フレーム内の水平・垂直方向にのN×M個の画素で構成されるような複数画素で形成する画素ブロック単位をいう。
動きベクトルVDは、入力されてくる入力画像データDDにおいてメタデータ等の形式で付加されている場合もあるし、入力画像データDDについて動きベクトル検出処理を行って検出する場合もある。
この第1の実施の形態の画像処理装置1は、入力画像データDDの取込方式や、動きベクトルVDの取込方式は限定せず、これらは画像処理装置1に入力されるものとして説明する。
【0024】
図1に示すように、画像処理装置1は、フィルタリング処理などにより処理対象フレーム中から選択された画素に動きぼけを付加し、その結果得られた画素から構成される1つ以上の縮小面を生成する縮小画像生成処理部2を備える。
また、動きベクトルを基に、処理対象フレーム中の対応画素および縮小画像生成処理部2において生成された縮小面中の対応画素から、出力画像を構成する各画素の画素値を算出し出力する動きぼけレンダリング処理部3を備える。
【0025】
各処理部についての具体的な処理内容を説明する前に、この画像処理装置1による動きぼけ付加処理の概要と位置づけについて述べておく。
画像処理装置1は、縮小画像生成処理部2と動きぼけレンダリング処理部3により各画素に適切な量の動きぼけを付加し、ジャーキネス劣化を低減した画像を出力する。
図2は、画像処理装置1における動きぼけ付加処理の概要を示すものである。特に、図1中の縮小画像生成処理部2と動きぼけレンダリング処理部3において行われる処理内容の概要を説明するためのものである。
【0026】
図2における元画像(基底面)とは、入力画像データDDとしての1つの処理対象フレームの画像データとなる。
縮小画像生成処理部2では、処理対象フレームである元画像に対し、詳しくは後述する空間フィルタリング処理を実行し、その結果として第1縮小面を作成する。
第1縮小面は、元画像よりも一定の比率だけ縮小され、画素数が減少した画像である。
さらに縮小画像生成処理部2は、得られた第1縮小面に対し、同様の空間フィルタリング処理を実行し、結果として得られる第2縮小面を作成する。
このような要領で縮小画像生成処理部2は、再帰的にフィルタ処理を用いることで、所定の階層数の縮小画像(第1縮小面〜第n縮小面)の生成を行う。
【0027】
動きぼけレンダリング処理部3では、上記の要領で生成された階層型の縮小画像(第1縮小面〜第n縮小面)を用いて、動きぼけを適応的に付加した、視覚特性上自然にジャーキネス劣化を低減した画像を生成し、出力する。
動きぼけレンダリング処理部3は、例えば図2中に示す元画像の各画素について、元画像である基底面、第1縮小面、および第2縮小面から、動きぼけ付加対象の画素に対応する位置の画素値を各面から抽出し、レンダリング方式に重み付け加算を実行する。
各面が有する画素数はそれぞれ異なるため、動きぼけ付加対象の画素に対応する位置の画素が各縮小面に存在しない場合、詳しくは後述する周辺の画素からの補間処理を行い、画素値を抽出する。
基底面及び各縮小面から抽出したそれぞれの画素値に対する重み係数(w0、w1、w2)は、図1に示した動きベクトルVD中の、動きぼけ付加対象の画素に対応する位置の動きベクトルの大きさに依存して決める。例えば、動きベクトルが大きい値の場合、つまり付加する動きぼけの量が大きい場合ほど、高階層の縮小面から抽出した画素の重み係数を大きくする。図2の例においては第2縮小面から抽出した画素の重み係数を大きくすることになる。
一方、動きベクトルが小さい値の場合、つまり付加する動きぼけの量が少ない場合ほど、低階層の縮小面から抽出した画素の重み係数を大きくする。例えば図2の例においては基底面から抽出した画素の重み係数を大きくする。
このような重み付け加算の結果として、ジャーキネス劣化を低減した画像が生成される。
【0028】
[1−2:縮小画像生成処理部2]
縮小画像生成処理部2の具体的な処理について説明する。
縮小画像生成処理部2で行われる処理は、入力画像データDDに対し空間フィルタリング処理を実行する。また、その結果として得られる縮小画像に対し(または画像として構成されなくても、前段のフィルタリング処理の結果として得られる複数の画素を用いて)、さらに同様の空間フィルタリング処理を繰り返す。これにより階層的な縮小画像データRSDを生成する。
上記空間フィルタリング処理は、フィルタリング処理前の画像中において複数画素を有する領域の画素情報を用いて行われ、処理の前後にて一定の比率だけ縮小され、画素数が減少した画像を生成する。そのためフィルタリング処理後の各画素は、フィルタリング処理前の画像中における当該領域をぼかした画素、として出力されるわけである。
【0029】
以下において、最も簡易なフィルタリング方法の例を用いて詳しく説明する。
図3は、縮小画像生成を行うフィルタ処理の具体例における、縮小前後の画素の対応関係について示すものである。
図3の例では、縮小前の画像において、分割領域R11として示した4×4画素を用いたフィルタリングを実行し、縮小後の画像における画素P11を出力することを表現している。分割領域R12,R21についても同様に画素P12,P21を示している。
結果として、縮小後の画像は、縮小前の画像と比べ、垂直・水平方向にそれぞれ1/4の画素数となっている。
なお4×4画素ブロックを用いるのは、あくまで一例であり、N×Nの画素ブロックを用いて同様の処理を行えば、垂直・水平方向にそれぞれ1/Nの画素数を有する縮小画像が生成できる。
【0030】
分割領域R11に対して行うのは、例えば、ボックスフィルタなどのローパスフィルタ処理であるとすれば、周辺画素の画素値を平均化することで、画素P1はぼけを含んだ画素として生成される。
【0031】
このようにして得られた縮小画像を図2に示した第1縮小面とした場合、この第1縮小面に対し、さらに図3と同様の空間フィルタリング処理を実行して第2縮小面を作成する。
この場合、第1縮小面に4×4画素の分割領域を用いたフィルタリングを実行することにより、第2縮小面の各画素は、元画像における16×16画素の領域の画素値を平均化したぼけ画素として生成されることになる。
必要に応じて、第2縮小面の生成後に第3縮小面以降を同じ要領で生成することも可能であり、階層数を増やしても処理の内容は変わらない。
【0032】
このように、縮小画像生成処理部2では、入力画像に空間ローパスフィルタ処理を実行することで、結果として得られる低解像度な画像を生成し、さらに生成した低解像度画像に同様の処理を実行することでより低解像度な画像を生成していく。このような多重解像度フィルタリング処理を実行して、階層型の縮小画像データRSDを生成する。
【0033】
図4〜図7に、他の例として、方向選択型縮小画像生成フィルタ方式を説明する。
図3では分割領域として4×4画素の方形領域の例を示したが、フィルタリングを実行する分割領域は、方形でなくても構わない。
むしろ図3に示した4×4画素を用いたフィルタのような等方型フィルタでは、後段の動きぼけレンダリング処理で動きぼけを付加した場合、画質上の問題が発生してしまう場合もあり得る。それは、付加したい所望の動きぼけのみでなく、動きと直交する方向に低解像度化した結果生じるぼけが支配的になってしまう現象である。
例えば、水平方向の動きに応じた動きぼけを付加したい場合、動きぼけの方向である水平のみでなく、垂直方向にもローパスフィルタリングされた縮小画像を用いるため、垂直方向の解像度が低下した画像になってしまう。
つまり画像内容としての動き方向に応じてぼけを付加することでジャーキネスを低減するときに、動き方向とは直交方向にもぼけが付加され、それが視覚上適切な画像とならない場合がある。
【0034】
そのような事象を回避するには、最終的に付加される動きぼけの方向を考慮した縮小面生成フィルタリングを行う必要がある。この方法は、動きぼけを付加する各方向に独立に縮小面を用意するものである。
【0035】
図4は、水平方向の動きぼけ付加用の、具体的な縮小画像生成フィルタ処理の一例における、縮小前後の画素の対応関係について示すものである。
図4においては、まず、入力画像データDD(基底面)に4×1タップの長方形フィルタ処理を実行し、水平方向の画素数が1/4、垂直方向の画素数は変化しない、水平方向1/4縮小画像を生成している。
例えば基底面における領域R011、R012、R021についてのそれぞれのフィルタ処理で得られた画素は、水平方向1/4縮小画像における画素P111、P112、P121となる。
なお4×1画素領域を用いたのは、あくまで一例であり、所望の縮小率に応じて変更できる。
フィルタの内容は、例えばボックスフィルタなどのローパスフィルタである。
【0036】
さらに、生成した水平方向1/4縮小画像に対し、同様のフィルタ処理を実行することで、水平方向の画素数が1/16、垂直方向の画素数は変化しない、水平方向1/16縮小画像を生成する。
例えば水平方向1/4縮小画像における領域R111についてのフィルタ処理で得られた画素は、水平方向1/16縮小画像における画素P211となる。
このように、水平方向の動きぼけ付加用として、垂直方向の解像度低下を防ぐため、水平方向のみ多階層の縮小画像を生成する。
【0037】
図5は、垂直方向の動きぼけ付加用の、具体的な縮小画像生成フィルタ処理の一例における、縮小前後の画素の対応関係について示すものである。
図5においても、図4の場合と同様に、まず、入力画像データDDに1×4タップの長方形フィルタ処理を実行し、水平方向の画素数が変化せず、垂直方向の画素数が1/4となった、垂直方向1/4縮小画像を生成している。フィルタの内容は、例えばボックスフィルタなどのローパスフィルタである。
例えば基底面における領域R011、R012、R021についてのそれぞれのフィルタ処理で得られた画素は、垂直方向1/4縮小画像における画素P111、P112、P121となる。
【0038】
さらに、生成した垂直方向1/4縮小画像に対し、同様のフィルタを実行することで、水平方向の画素数が変化せず、垂直方向の画素数が1/16となった、垂直方向1/16縮小画像を生成する。
例えば垂直方向1/4縮小画像における領域R111についてのフィルタ処理で得られた画素は、垂直方向1/16縮小画像における画素P211となる。
このように、垂直方向の動きぼけ付加用として、水平方向の解像度低下を防ぐため、垂直方向のみ多階層の縮小画像を生成する。
【0039】
図6は、斜め方向の動きぼけ付加用の、具体的な縮小画像生成フィルタ処理の一例における、縮小前後の画素の対応関係について示すものである。
図6においても、これまでと同様に4タップのローパスフィルタを実行するが、図中に示すとおり、左斜め下方向に向かって抽出していった画素を用いてフィルタリングを行っている。
例えば、領域R014は、画素P014、P023、P032、P041の4つの画素による処理領域を示すが、領域R014については、この4つの画素についてフィルタ処理を行う。図示する他の領域R015、R024等も同様である。
【0040】
フィルタ処理された画素によって形成される縮小画像は、垂直方向に画素データを詰めて格納することにすれば、第1の縮小面である、斜め45度方向1/4縮小画像は、水平方向の画素数が変化せず、垂直方向の画素数が1/4となって生成される。
例えば基底面における領域R014、R015、R024についてのそれぞれのフィルタ処理で得られた画素は、斜め45度方向1/4縮小画像における画素P114、P115、P124となる。
【0041】
さらに、生成した斜め45度方向1/4縮小画像に対し、同様のフィルタを実行することで、水平方向の画素数が変化せず、垂直方向の画素数が1/16となった、斜め45度方向1/16縮小画像を生成する。
このように、斜め方向の動きぼけ付加用として、適用した方向に直交する斜め方向の解像度低下を防ぐため、適用方向のみ多階層の縮小画像を生成する。
【0042】
図7は、図6とは直交する斜め方向の動きぼけ付加用の、具体的な縮小画像生成フィルタ処理の一例における、縮小前後の画素の対応関係について示すものである。
図7においても、これまでと同様に4タップのローパスフィルタを実行するが、図中に示すとおり、右斜め下方向に向かって抽出していった画素を用いてフィルタリングを行っている。例えば、領域R014は、画素P014、P025、P036、P047の4つの画素による処理領域を示すが、領域R014については、この4つの画素についてフィルタ処理を行う。図示する他の領域R015、R024等も同様である。
【0043】
フィルタ処理された画素によって形成される縮小画像は、垂直方向に画素データを詰めて格納することにすれば、第1の縮小面である、斜め135度方向1/4縮小画像は、水平方向の画素数が変化せず、垂直方向の画素数が1/4となって生成される。
例えば基底面における領域R014、R015、R024についてのそれぞれのフィルタ処理で得られた画素は、斜め135度方向1/4縮小画像における画素P114、P115、P124となる。
【0044】
さらに、生成した斜め135度方向1/4縮小画像に対し、同様のフィルタを実行することで、水平方向の画素数が変化せず、垂直方向の画素数が1/16となった、斜め135度方向1/16縮小画像を生成する。
このように、斜め方向の動きぼけ付加用として、適用した方向に直交する斜め方向の解像度低下を防ぐため、適用方向のみ多階層の縮小画像を生成する。
【0045】
以上、水平方向、垂直方向、斜め45°方向、斜め135°方向の例を示したが、これら以外に、あらゆる角度方向の縮小画像生成フィルタを採用しても構わない。
上記までに説明する方法は、各方向の動きぼけ付加用として独立に縮小画像を生成するため、後段の動きぼけレンダリング処理において、各画素に付加する動きぼけの方向に応じて、適応的に各方向の縮小画像から画素を選択または合成する必要が生じる。この方法については、動きぼけレンダリング処理部3の説明において詳しく後述する。
【0046】
さて、上記までに付加される動きぼけの方向を考慮した縮小面生成フィルタリングについて説明をしてきたが、その処理をより詳細に説明するために、1つの具体的な構成例を設定して、以降の説明に逐次用いる。
下記の<具体例:条件1>をその例として用いる。
【0047】
<具体例:条件1>
縮小画像生成方向:水平・垂直
縮小画像階層数:水平および垂直に各3層(第3縮小面まで)
動きぼけ生成方向:動きぼけレンダリング時に水平・垂直から移動速度の絶対値が大きい方を選択(詳細は後述)
フィルタ前後の縮小率
第1縮小面:1/4
第2縮小面:1/16
第3縮小面:1/64
【0048】
上記の仕様では、付加できる最大の動きぼけ量は、水平・垂直の各方向に、±64画素移動した相当の動きぼけまでを生成できる。
図8は、<具体例:条件1>の設定における、縮小画像生成処理部2の構成例を示すものである。
上記の水平・垂直の各方向に1次元フィルタを用いて縮小面生成処理を実行する場合の処理フローを示しており、生成された各縮小面は縮小画像データRSDとして出力される。
即ち入力画像データDDに対して、1次元フィルタ処理21−1で水平方向1/4縮小画像を生成する。さらに1次元フィルタ処理21−1の結果について1次元フィルタ処理21−2で水平方向1/16縮小画像を生成する。さらに1次元フィルタ処理21−2の結果について1次元フィルタ処理21−3で水平方向1/64縮小画像を生成する。
また、入力画像データDDに対して、1次元フィルタ処理22−1で垂直方向1/4縮小画像を生成する。さらに1次元フィルタ処理22−1の結果について1次元フィルタ処理22−2で垂直方向1/16縮小画像を生成する。さらに1次元フィルタ処理22−2の結果について1次元フィルタ処理22−3で垂直方向1/64縮小画像を生成する。
これらの結果として得られた6個の縮小画像データRSDが出力されることになる。
【0049】
なお、図示している1次元フィルタ(21−1〜22−3)の処理は、ソフトウエア演算で実現される再帰的なフィルタ処理をブロックで表現した処理フローとしているが、当該構成をハードウエア構成として捉えても良い。図9以降も同様である。
【0050】
図9は、図8に示した処理フローを、拡張して一般化したものである。
上記の<具体例:条件1>の設定においては、生成する水平・垂直方向の階層数は3と決めていたが、図9はこれを限定せず、水平方向の縮小面階層数をMx、垂直方向の縮小面階層数をMyと表現して一般化している処理フローである。
1次元フィルタ処理21−1・・・21−Mxにより、Mx階層の水平方向縮小画像が生成され、また1次元フィルタ処理22−1・・・22−Myにより、My階層の垂直方向縮小画像が生成される。これらが縮小画像データRSDとして出力される。
【0051】
図10は、図9に示した処理フローを、拡張したものである。
上記図8から図9は縮小画像の階層数を拡張した例であるが、図10は、さらに図9における縮小画像生成方向について、水平・垂直方向のみから斜め方向も含めた構成へと拡張している。
即ち1次元フィルタ処理21−1・・・21−Mxにより、Mx階層の水平方向縮小画像が生成され、また1次元フィルタ処理22−1・・・22−Myにより、My階層の垂直方向縮小画像が生成される。
さらに1次元フィルタ処理23−1・・・23−Mxyにより、Mxy階層の斜め45°方向縮小画像が生成され、また1次元フィルタ処理24−1・・・24−Myxにより、Myx階層の斜め135°方向縮小画像が生成される。
そしてこれらが縮小画像データRSDとして出力される。
【0052】
ここまで、各方向の動きぼけ付加用として独立に縮小画像を生成する方法について、その処理手順を述べたが、以下では、実際に各方向用に縮小画像を生成する際に用いるフィルタについて、その内容を説明する。
【0053】
上記までの説明においては、例として4タップのボックスフィルタを用いることを述べてきた。これは、縮小率1/4に対応して4画素ブロックのフィルタを用いていたわけであり、最も容易に実現できる方法であるため、である。動きぼけ発生原理を考慮しても、移動平均フィルタと同内容でボックスフィルタが、原理的に実際の動きぼけに最も類似するはずである。しかしながら、最終的に得られる画質の向上のために、変更することも可能である。
【0054】
図11は、縮小画像生成処理に用いるフィルタ形状の具体例を示すものである。
上記<具体例:条件1>の設定にて、水平・垂直のいずれかの方向に1/4縮小するフィルタを想定し、横軸は4画素ごとを1ブロックと考えた場合の座標を示しており、縦軸はフィルタとして各画素に乗ずる加重である。
4タップのボックスフィルタの他、7タップのテントフィルタ、10タップの階段フィルタ、13タップのガウシアンフィルタを例として図示しており、所謂FIRローパスフィルタであれば採用可能であることを示している。
【0055】
フィルタタップ数は、縮小フィルタによる縮小率が1/Nのとき、Nタップ以上であることが必要条件である(例えば、縮小率1/4、入力4画素に対し1画素を出力する場合には4タップ)が、さらにタップ数を増加することにより、画質の向上が期待できる。
これは、タップ数が小さいほど発生する恐れが高まる、折り返し現象に起因する画質劣化を低減できるためである。
また、フィルタタップ数の増加に伴い、隣接する分割領域に属する画素を重複してフィルタ処理を行うことになるが、それは問題とならない。
【0056】
図12は、フィルタリングを行う場合に用いる各縮小画像の画素の位置関係を説明するための図である。
いま、水平方向の縮小画像を生成しているものとして、各縮小画像からの画素をどのように重み付け加算することで、出力画素の画素値を算出するかを、この図を用いて説明する。フィルタタップ数は7の場合を例として用いている。なお、垂直方向もこれに準じて行えばよいため、図は省略する。
【0057】
図12中には、各縮小画像の画素について、番号が振られている。以下、何層目の縮小画像の何番目の画素か、についてこの番号を用いて表現する。例えば、1/16縮小画像の番号79の画素はL2(79)と表記する。基底面である入力画像データDD中の画素はL0(画素番号)で表現する。
【0058】
各縮小画像中の画素番号は、基底面上の対応する位置のものであり、各縮小面中で斜線を付した画素を位相の中心として、フィルタリングが実行されて作成されたものである。例えば、第1番目の縮小面である1/4縮小面中の画素L1(7)は、基底面中のL0(4)〜L0(10)までの画素を用いた7タップのフィルタによって、生成された画素である。
このように、各縮小画像においてフィルタを4画素シフトしつつ実行することにより、用いる画素が隣接するフィルタと重複しても問題なく、フィルタの前後で1/4だけ縮小された、次層の縮小面が作成される。当然、縮小率が異なる場合も同様の方法で実現可能である。
【0059】
[1−3:動きぼけレンダリング処理部3]
続いて動きぼけレンダリング処理部3の具体的な処理について説明する。
動きぼけレンダリング処理部3は、入力画像データDDと、縮小画像生成処理部2で生成された階層的な縮小画像を用いて、動きぼけを含んだ出力画像の各画素値を算出する。
【0060】
図13は、動きぼけレンダリング処理の流れを示す概略図である。
動きぼけレンダリング処理部3には、入力画像データDD、縮小画像データRSDおよび動きベクトルVDが入力し、各画素に適切な量の動きぼけが付加された出力画像データODを出力する。
【0061】
まず、動きベクトルVDから、当該画素に対し、どの方向に何画素移動した相当の動きぼけを付加するかの情報である、レンダリングパラメータの抽出が行われる(S1)。
レンダリングパラメータとは、言い換えれば、後段のレンダリング処理において、入力画像データDDおよび縮小画像データRSD中の当該画素の各々に、どれだけの重みを乗じて加算処理を実行するか、を示すデータである。後に具体的な例を用いてより明確に説明する。
縮小画像データRSDには、入力画像データDD中の各縮小画像において、当該画素に位置的に対応する画素の画素値を、補間処理によって生成する、合成画素算出処理が行われる(S2)。
この処理が必要な理由および具体的な処理内容の例については、詳しくは後述する。
最後に、入力画像データDDの当該画素、および、縮小画像データRSDから生成された各合成画素、のそれぞれに重みを付けて加算処理することにより、当該画素に対応する出力画素の画素値を算出する、レンダリング処理が行われる。重みの情報は、入力されるレンダリングパラメータ中にあるものとする。
【0062】
図14は、上記した<具体例:条件1>における、動きぼけレンダリング処理部3の処理ブロックを示すものである。
縮小画像データRSDが示す縮小画像は、縮小画像生成処理部2において、水平および垂直に各3層作成されている(図8参照)。
合成画素算出処理部31(31−1〜31−3)には、入力画像データDDから処理対象の当該画素が入力されるのとタイミングを合わせて、3層の水平縮小画像から各々に画素が入力され、後述する合成画素値の算出処理が行われる。
また合成画素算出処理部32(32−1〜32−3)には、入力画像データDDから処理対象の当該画素が入力されるのとタイミングを合わせて、3層の垂直縮小画像から各々に画素が入力され、後述する合成画素値の算出処理が行われる。
これら合成画素算出処理部31−1〜31−3、32−1〜32−3で算出された各縮小画像に対する合成画素は、セレクタ34へと入力される。
【0063】
ベクトル変換処理部35には、動きベクトルVDが入力されている。
上記<具体例:条件1>は、各画素に水平および垂直方向のいずれか一方の動きぼけを選択的に付加する条件である。そのため、ベクトル変換処理部35では、動きベクトルVDを基に、動きを付加する方向が水平と垂直のいずれであるかを示す選択情報と、付加する動きぼけの方向に対する各合成画素値に乗ずる重みを示す重み情報、を生成する。
そして選択情報は、セレクタ34へ供給され、重み情報は、重み付け画素加算処理部36へ供給される。
【0064】
セレクタ34は、ベクトル変換処理部35から入力された選択情報を基に、合成画素値のうち水平・垂直のどちら一方から入力された画素値のみを選択し、重み付け画素加算処理部36へ出力する。つまり、<具体例:条件1>の場合では、6つの画素値が入力し、3つの画素値として出力される。
重み付け画素加算処理部36には、既に入力画像データDDから処理対象の当該画素が入力されている。
さらに、上記の通り、合成画素値のうち方向選択された各画素値が入力される。
また、ベクトル変換処理部35から各画素値に対する重み情報が入力している。
この重み付け画素加算処理部36では、重み情報を基に、入力した各画素値に対し、詳しくは後述する重み付け画素加算処理を実行し、出力する画素値を算出する。
【0065】
合成画素算出処理部31,32における処理を図15で説明する。
図15は、合成画素算出処理および重み付け画素加算処理の内容について、具体例を示して説明するための図である。入力画像データDDと縮小画像データRSDについて、上記図12と同様に、各画素を示している。
【0066】
合成画素算出処理部31、32で行われる合成画素値の算出は、水平および垂直の各縮小画像から入力された画素について行うが、図15では、付加する動きぼけの方向が水平方向の場合(つまり合成画素算出処理部31のみ)について図示している。以下の説明は、垂直方向の場合(合成画素算出処理部32)についても同様に考えればよい。
【0067】
まず、合成画素値の算出処理が必要な理由について述べる。
後段の重み付け画素加算処理部36の処理では、前記の通り、入力画像データDDの当該画素、および、縮小画像データRSDから生成された各合成画素、のそれぞれに重みを付けて加算処理することにより、当該画素に対応する出力画素の画素値を算出するわけである。
しかし、各縮小画像には常に、入力画像データDD中の当該画素に対応する画素が存在するわけではないため、各縮小画像における対応画素を補間処理により算出しなくてはならない。
例えば、図15中の入力画像データDDで「20」の番号を振られている画素L0(20)に位置的に対応する、各縮小画像中における画素は存在しない。これは、入力画像データDDにフィルタリングを実行して、第1の縮小画像である1/4縮小画像を生成する際、L0(20)がフィルタの位相中心ではない画素であるためであり、1/4縮小面以降、位置的に対応する画素は存在しないわけである。
【0068】
そのため、何らかの補間処理によって、当該画素に対応する縮小画像中の画素値L1(20)’、L2(20)’、L3(20)’を推定するわけである。
ここでは、例として線形補間法を用いて、L1(20)’、L2(20)’、L3(20)’を算出する場合を考える。
【0069】
いま、各縮小画像生成時に位相中心となった画素の入力画像データDDにおける座標と、当該画素との距離を、図15中に示す通り、d1(20)、d2(20)、d3(20)のように表現する。これらは、当該画素よりも左に存在し、かつ、最寄りの位相中心となる画素、との距離である。このとき、入力画像データDDで「20」の番号を振られている画素L0(20)に対応する各縮小画像中における合成画素値L1(20)’、L2(20)’、L3(20)’は、
【数1】
と表現される。
【0070】
一般には、入力画像データDD中の第N番目画素L0(N)に対応する、第K縮小画像(1/R縮小面)において位置的に対応する合成画素の画素値LK(N)’を、以下のように表現する。
【数2】
ただし、<N>Kとは、入力画像データDD中の当該画素である第N番目の画素よりも左に存在し、かつ、第K縮小画像においてNに最寄りの位相中心となる画素、である。
【0071】
この(数2)に示す通り、各縮小面に存在する2画素(位置的に当該画素に対応する最寄りの2画素)を用いた、2タップのフィルタリング処理によって、線形補間された画素値を算出できる。
なお、ここでは線形補間による合成画素値算出の方法を示したが、補間の方式は、スプライン補間など、より高次な計算法を用いて算出することも可能である。
【0072】
次にベクトル変換処理部35における処理を説明する。
各画素に水平および垂直方向のいずれか一方の動きぼけを選択的に付加する、上記<具体例:条件1>に準じたベクトル変換処理部35では、既に入力されている動きベクトルVDを基に、動きを付加する方向が水平と垂直のいずれであるかを示す選択情報と、付加する動きぼけの方向に対する各合成画素値に乗ずる重みを示す重み情報、を生成する。
【0073】
ここで、動きベクトルVDにおける、当該画素の位置的に対応する動きベクトルについて、水平方向、垂直方向の動きの大きさを(Vx,Vy)と表す。動きを付加する方向は、水平および垂直方向の動きの絶対値を比較し、それが大の方向にぼけを付加する方法を採用する。
|Vx|≧|Vy|のとき:水平方向のぼけ付加
|Vx|<|Vy|のとき:垂直方向のぼけ付加
これを基に、動きぼけを付加する方向についての選択情報を、セレクタ34へと出力する。この例の場合、セレクタ34へ送る情報量は、1画素の動きぼけ付加に対して1ビットでよい。
【0074】
ベクトル変換処理部35のもうひとつの役割は、各合成画素値に乗ずる重みの情報を算出して、重み付け画素加算処理部36へと出力することであるが、この重み付けの決定方法は、以下の、重み付け画素加算処理部36の詳細な説明の中で例を示して明らかにする。
【0075】
次に重み付け画素加算処理部36における処理を説明する。
重み付け画素加算処理部36には、入力画像データDDの当該画素L0(N)、およびセレクタ34で選択された、水平・垂直方向のどちらか一方について、各縮小画像から生成された合成画素が各々入力される。
以下では、<具体例:条件1>の水平・垂直方向用に3層の縮小画像が生成されている場合であるとし、さらに付加する動きベクトル方向がセレクタ34において、水平方向に決定されているものとする。
このとき、各水平縮小画像中の画素から生成された合成画素をL1(N)’、L2(N)’、L3(N)’と表現する。
【0076】
ここで、同じくベクトル変換処理部35から入力した重み情報を基に、下記(数3)に示す、これらの画素値の線形重み付け加算処理が行われ、出力画素値Lout(N)が算出される。
【数3】
ここでw0〜w3は、各画素値に乗ずる重みである。一般には、下記の(数4)のように表せる。
【数4】
ただし、Mは当該方向に生成された縮小画像数であり、L0(N)=L0(N)’であるものとする。
【0077】
ベクトル変換処理部35は、入力された動きベクトルVDから、復号画像データDDの各画素に対して、各縮小画像に対する重みwkを算出し、重み付け画素加算処理部36へと提供しているわけである。
各画素値に与える重みを生成する手段であるが、<具体例:条件1>の場合を想定し、重みw0〜w3を決定する方法の例を示す。
当該画素の位置的に対応する動きベクトル(Vx,Vy)のうち、絶対値が大である成分の絶対値をVと記す。そして以下の重み決定ルールに基づいて、順に分け与えていく。
【0078】
手順1:w0=1。
V≦1であればw1=0,w2=0,w3=0とし、手順5へ。
手順2:V−w0>4−1であればw1=3。
そうでない場合、w1=V− w0,w2=0,w3=0とし、手順5へ。
手順3:V−(w0+w1)>16−4であればw2=12。
そうでない場合、w2=V−(w0+w1),w3=0とし、手順5へ。
手順4:w3=V−(w0+ w1+w2)。
手順5:w0〜w3の各値をVで除算して規格化。
【0079】
以上は一例であり、その限りではない。特に、手順5にて除算が生じるため、ハードウェアでの実現の場合に処理コストが増大する。そのため、Vに対する各重みwkをテーブル化することで、処理コストの低減が可能である。
【0080】
図16は、重み情報テーブルの例である。
図中のテーブルの1列目は、選択された方向のベクトル絶対値を示しており、2〜5列目は、各縮小面から抽出した各画素に乗ずる重みの値を示している。
数値はあくまで一例であり、限定するものではないが、ベクトル絶対値が小さいほど、各縮小面の重みの値は、小さい階層(基底面や第1縮小面)の重みの値を大とし、逆にベクトル絶対値が大きいほど、大きい階層(第3縮小面や第2縮小面)の重みの値を大とすべきである。
【0081】
以下では、動きぼけレンダリング処理部3の、より一般的な構成例や他の構成例を示していく。
図17は、上記<具体例:条件1>における動きぼけレンダリング処理部3の処理ブロックであった図17を一般化し、水平・垂直方向の各縮小画像を3層ずつに限定しない構成例である。
即ち合成画素算出処理部31は、合成画素算出処理部31−1〜31−MxによるMx階層に対応する構成とされる。
また合成画素算出処理部32は、合成画素算出処理部32−1〜32−MyによるMy階層に対応する構成とされる。
このように図17では、水平方向に縮小面をMx層、垂直方向に縮小面をMy層、各々生成している点のみが図14と異なる。
【0082】
以降、図17に示す処理ブロックを、想定される条件に沿って、変更した処理ブロック例を示していく。
図18は、図17の処理ブロックを変更した例である。
図17の処理ブロックでは、処理の順として、重み付け画素加算処理部36に用いる画素を水平・垂直のうちから選択してから、重み付け画素加算を実行する方法であったが、重み付け画素加算処理を水平・垂直の各々に実行してから方向の選択を行う方法も考えられる。図18はその場合の処理を実行するためのものである。
【0083】
即ち、重み付け画素加算処理部36Aで、水平方向についての合成画素算出処理部31(31−1〜31−My)からの画素値と、入力画像データDDの画素値について重み付け画素加算を実行する。
また、重み付け画素加算処理部36Bで、垂直方向についての合成画素算出処理部32(32−1〜32−My)からの画素値と、入力画像データDDの画素値について重み付け画素加算を実行する。
重み付け画素加算処理部36A、36Bにはベクトル変換処理部35から重み情報が供給される。
【0084】
そして重み付け画素加算処理部36A、36Bの処理結果がセレクタ34に供給される。セレクタ34はベクトル変換処理部35から供給される選択情報に基づいて、一方を選択し、出力する。
【0085】
次に図19は、図18の処理ブロックを変更した例である。
上記図17、図18に示す処理ブロック、および、これまでの説明で述べてきた処理においては、画素毎に水平または垂直のいずれか一方の方向を選択して動きぼけを付加する、方法であった。それに対し、図19に示す処理ブロックにおいては、水平と垂直の縮小画像の双方からの重み付け画素加算後の処理結果を、動きぼけを付加する方向に応じて、さらに合成した画素値を算出して出力する方式である。
即ち、重み付け画素加算処理部36C、36Dは、水平及び垂直の方向別に生成された各縮小画像について、それぞれ第1の重み付け加算を行う。また重み付け画素加算処理部36Eは、重み付け画素加算処理部36C、36Dの各第1の重み付け加算の結果の画素について、動きベクトルに基づき、第2の重み付け加算を行う。
【0086】
具体的には、重み付け画素加算処理部36Cは、水平方向についての合成画素算出処理部31(31−1〜31−My)からの画素値と、入力画像データDDの画素値についてMxタップの重み付け画素加算を実行する。ベクトル変換処理部35からは水平方向用の重み情報が供給されている。
また、重み付け画素加算処理部36Dは、垂直方向についての合成画素算出処理部32(32−1〜32−My)からの画素値と、入力画像データDDの画素値についてMyタップの重み付け画素加算を実行する。ベクトル変換処理部35からは垂直方向用の重み情報が供給されている。
さらに重み付け画素加算処理部36Eにおいては、重み付け画素加算処理部36C、36Dの出力について2タップの重み付け画素加算を実行し、これを出力とする。重み付け画素加算処理部36Eには、ベクトル変換処理部35からは、動きベクトルの方向に基づいた方向合成用の重み情報が供給されている。
【0087】
この例の場合、ベクトル変換処理部35における処理に変更が必要となるため、その方法について例を示す。
入力した動きベクトルVDにおける当該画素の対応ベクトル(Vx,Vy)とすると、水平方向ベクトルの絶対値|Vx|に対し、前記の重み決定ルールを適用することで、各水平方向縮小画像からの合成画素に乗ずる、水平方向用重み情報wxkを算出する。
垂直方向ベクトルの絶対値|Vy|からも同様に、垂直方向用重み情報wykを算出する。
さらに、ベクトル変換処理部35では、各重み付け画素加算後の画素を合成するために必要な、方向合成用重み情報wdを生成する必要がある。
このwdの算出方法の例としては、例えば、各方向のベクトル絶対値の大きさに準じた画素合成方法をとる場合、wd=|Vx|/(|Vx|+|Vy|)として算出する。
【0088】
この場合、水平・垂直方向重み付け画素加算後の画素に行う、2タップの重み付け画素加算処理による出力画素の合成は、以下の(数5)にて行えばよい。
【数5】
Lx(N)、Ly(N)は、水平・垂直方向重み付け画素加算後の各画素値である。
【0089】
次に図20は、図17の処理ブロックを変更した例である。
縮小画像の生成方向として、水平・垂直方向の他に、斜め方向も含めて拡張し、縮小画像を生成する場合を示している。
【0090】
合成画素算出処理部31(31−1〜31−Mx)には、入力画像データDDから処理対象の当該画素が入力されるのとタイミングを合わせて、Mx層の水平縮小画像から各々に画素が入力され、合成画素値の算出処理が行われる。
また合成画素算出処理部32(32−1〜32−My)には、入力画像データDDから処理対象の当該画素が入力されるのとタイミングを合わせて、My層の垂直縮小画像から各々に画素が入力され、合成画素値の算出処理が行われる。
合成画素算出処理部37(37−1〜37−Mxy)には、入力画像データDDから処理対象の当該画素が入力されるのとタイミングを合わせて、Mxy層の斜め45°方向縮小画像から各々に画素が入力され、合成画素値の算出処理が行われる。
合成画素算出処理部38(38−1〜38−Myx)には、入力画像データDDから処理対象の当該画素が入力されるのとタイミングを合わせて、Myx層の垂直縮小画像から各々に画素が入力され、合成画素値の算出処理が行われる。
【0091】
これら合成画素算出処理部31、32,33,34で算出された各縮小画像に対する合成画素は、セレクタ34へと入力される。そしてセレクタ34は、ベクトル変換処理部35からの選択情報に基づいて、4つの方向のうちの特定の方向の合成画素値を選択し、重み付け画素加算処理部36に出力する。
この例の場合、ベクトル変換処理部35がセレクタ34へ送る選択情報は、1フレームの動きぼけ付加に対して2ビットとする。
【0092】
この図20に示す処理ブロックをさらに、図18に示すような、各方向の重み付け画素加算後に処理結果を選択して出力する方式や、図19に示すような、各方向の重み付け画素加算後の処理結果をさらに合成して出力する方式に変形することも可能である。
【0093】
[1−4:まとめ]
以上、第1の実施の形態の画像処理装置1について説明してきたが、この実施の形態によれば、人間の視覚特性上、より自然にジャーキネス劣化が低減された動画像を出力することができる。
そして動きぼけ付加処理は、主に空間的なフィルタリング処理によって実現され、中間フレームを生成することがないため、処理過程で画像データを記憶するためのメモリを少なくすることができる。
さらに、空間フィルタ処理は、階層的なフィルタリングを実行した結果得られる、各階層の画素値を重み付け加算して出力する。そのため、各階層において行うフィルタは、少ないタップ数で実現可能である。また、そのフィルタのタップ数は、付加する動きぼけの量に依存せず、固定タップ数で行うことが可能である。
このような再帰的な処理による実現は、特にハードウェアによる処理実装に適している。当然に、ソフトウェア、また組合せによる実現も可能である。
【0094】
[2.第2の実施の形態]
第2の実施の形態としての画像処理装置100について説明する。
図21は、画像処理装置100の構成例を示している。
画像処理装置100は、動きベクトル生成処理部40と、動きベクトルマスク処理部50と、最適シャッタ速度算出/判別部60と、動きベクトル補正部70と、縮小画像生成処理部80と、動きぼけレンダリング処理部90とから構成されている。
【0095】
動きベクトル生成処理部40は、入力画像データDDの各処理対象フレームについて例えば画素ブロック単位での動きベクトルを生成する。
動きベクトルマスク処理部50は、動きぼけを付加する画像領域を特定する動きベクトルマスク情報を生成する。
最適シャッタ速度算出/判別部60は、実際に動画像が撮像されたときのシャッタ速度情報に応じて、当該領域の動きベクトルに応じて適したシャッタ速度(以下、最適シャッタ速度情報という)を算出する。
動きベクトル補正部70は、最適シャッタ速度情報に応じて、動きベクトルを補正する。
縮小画像生成処理部80は、フィルタリング処理などにより処理対象フレーム中から選択された画素に動きぼけを付加し、その結果得られた画素から構成される1つ以上の縮小面を生成する。
動きぼけレンダリング処理部90は、動きベクトル補正部70において補正された動きベクトルを基に、処理対象フレーム中の対応画素および縮小画像生成処理部80において生成された縮小面中の対応画素から、出力画像を構成する各画素の画素値を算出し出力する。
【0096】
まず動きベクトル生成処理部40の構成と動作について説明する。
動きベクトル生成処理部40は、上述したように画素ブロック単位で動きベクトルを精度良く生成する部位である。具体的には図22に示すように、動きベクトル検出部141、画素ブロック特定処理部142、動きベクトル推定処理部143、動きベクトル平滑化処理部144、及び遅延部141a,142aを有する。
【0097】
動きベクトル検出部141は、処理対象フレームと直前フレームとから動きベクトルを検出する。
画素ブロック特定処理部142は、処理対象フレームの動きベクトルと直前フレームの動きベクトルとを画素ブロック毎に比較して、相関の高い画素ブロックを特定する。
動きベクトル推定処理部143は、画素ブロック特定処理部142により特定された画素ブロックの動きベクトルから、それ以外の画素ブロックの動きベクトルを推定する。
動きベクトル平滑化処理部144は、動きベクトルに対して平滑化処理を施す。
【0098】
入力された入力画像データDDは、動きベクトル検出部141と、入力画像データDDを1フレーム分遅延させる遅延部141aに供給される。
動きベクトル検出部141は、入力された入力画像データDDを処理対象フレームとする。そして当該処理対象フレームと、遅延部141aにより1フレーム分遅延された直前フレームとから、処理対象フレームの動きベクトルを、画素ブロック単位で検出する。
なお、動きベクトル検出部141に係る処理をソフトウェアによって実装する場合には、一般的なブロックマッチング法を用いて画素ブロック単位で動きベクトルを検出すればよい。
【0099】
動きベクトル検出部141で検出された動きベクトルは、画素ブロック特定処理部142と遅延部142aに供給される。遅延部142aは入力された動きベクトルを1フレーム分遅延させる。
画素ブロック特定処理部142は、動きベクトル検出部141から供給される処理対象フレームの動きベクトルと、遅延部142aにより遅延された直前フレームの動きベクトルとを、次に示すように画素ブロック単位で比較して、この比較結果から相関の高い画素ブロックを特定する。
【0100】
具体的に、画素ブロック特定処理部142は、処理対象フレームの一の画素ブロックの動きベクトルを(x,y)とし、これに対応する直前フレームの画素ブロックの動きベクトルを(x’,y’)とし、任意に決定される相関判定係数をαとして、次の(数6)により、この画素ブロックのベクトル相関係数σを算出する。
【数6】
なお、相関判定係数αは、その定義域を0<α<1とし、αの値が大きいほど、ベクトル相関係数σの値が1として算出される係数である。
【0101】
画素ブロック特定処理部142は、上述した(数6)から各画素ブロックのベクトル相関係数σを算出して、ベクトル相関係数σが1である画素ブロックを相関の高い動きベクトルを有するものとして特定する。
【0102】
動きベクトル推定処理部143は、画素ブロック特定処理部142でベクトル相関係数σの値が1として特定された画素ブロックの動きベクトルから、このベクトル相関係数σの値が0である画素ブロックの動きベクトルを推定する。
すなわち、動きベクトル推定処理部143は、前段の画素ブロック特定処理部142で、ベクトル相関係数σの値が1とされた画素ブロックが有効な動きベクトルを有しているものとして、それ以外の画素ブロック、すなわち、ベクトル相関係数σの値が0とされ有効ではない動きベクトルを有している画素ブロックの動きベクトルを更新する。
【0103】
具体的な動きベクトル推定処理部143の処理工程を図23で説明する。
ステップS1において、動きベクトル推定処理部143は、処理対象フレームにおける現在の処理対象の画素ブロック(以下、注目画素ブロックという)のベクトル相関係数σが1か0であるかを判断する。すなわち、動きベクトル推定処理部143は、この画素ブロックの動きベクトルが有効であるか否かを判断する。そして、動きベクトル推定処理部143は、この画素ブロックの動きベクトルが有効であるとき動きベクトルの値を更新せずに本処理工程を終了し、この画素ブロックの動きベクトルが有効でないときステップS2に進む。
【0104】
ステップS2において、動きベクトル推定処理部143は、注目画素ブロックに対して、その注目画素ブロックの周辺に有効なベクトルを有する周辺画素ブロックが存在するか否かを判断する。具体的には、動きベクトル推定処理部143は、周辺画素ブロックとして、この注目画素ブロックに隣接する合計8つの画素ブロックに対して有効な動きベクトルが存在するか否かを判断し、有効な動きベクトルが存在するとき、ステップS3に進む。一方、有効な動きベクトルが存在しないとき、この注目画素ブロックの動きベクトルを更新せずに本処理工程を終了する。
【0105】
ここで、有効な動きベクトルが存在しない注目画素ブロックに対して、より広範囲に位置する周辺画素ブロックを用いて推定処理を行わない理由は、次の通りである。
第1の理由としては、より広範囲に位置する画素ブロックを用いて推定処理を行うことは可能であるが、仮に実現したとしても、固定時間処理で本処理工程を終了するためには、周辺画素ブロックとして扱われる画像データを一時的に記憶するための記憶領域が増大してしまうからである。
第2の理由としては、本処理工程の後段で、上述した隣接する合計8つの画素ブロックよりも広範囲の周辺画素ブロックを用いて注目画素ブロックの動きベクトルに対して平滑化処理を施すことにより、有効ではない動きベクトルを適切に補正することができるからである。
【0106】
ステップS3において、動きベクトル推定処理部143は、有効な動きベクトルを有する周辺画素ブロックの動きベクトルのみから、この注目画素ブロックの動きベクトルを推定して更新して、本処理を終了する。
動きベクトル推定処理部143では、推定処理の一例として、有効な動きベクトルを有する周辺画素ブロックの動きベクトルのみを入力としたメディアンフィルタにより注目画素ブロックの動きベクトルを出力して平滑化する。
動きベクトル推定処理部143は、以上のようにして、処理対象フレームの動きベクトルを画素ブロック単位で推定する。そして、動きベクトル推定処理部143は、画素ブロック特定処理部142で特定された動きベクトルを含めた動きベクトルを、動きベクトル平滑化処理部144に供給する。
【0107】
動きベクトル平滑化処理部144は、処理対象画像を構成する各画素ブロックの動きベクトルに対して平滑化処理を施す。具体的に、動きベクトル平滑化処理部144は、平滑化処理前の注目画素ブロックの動きベクトルと上述した隣接画素ブロックよりも広範囲の周辺画素ブロックの動きベクトルとを入力I(x+i,y+j)として、下記に示す(数7)に示すようなガウス型関数により、平滑化処理後の注目画素ブロックの動きベクトルJ(x,y)を出力する。
【数7】
ここで、rは注目画素ブロックと各周辺画素ブロックとの2次元空間上の距離を示し、σ2はこの距離rについての分散を示し、t2は動きベクトルについての分散を示している。すなわち、σ2及びt2は、平滑化の度合いを表す値として任意に設定されるパラメータとなっている。
【0108】
動きベクトル平滑化処理部144は、処理対象フレームを構成する各画素ブロックに対して上述した平滑化処理を施して、動きベクトルVDを動きベクトルマスク処理部50に供給する。
【0109】
このように、動きベクトル平滑化処理部144は、処理対象フレームを構成する各画素ブロックから、有効な動きベクトルを有する画素ブロックを特定し、この有効な動きベクトルからそれ以外の動きベクトルを推定する。このため精度良く実際の動体の動きに応じた動きベクトルを生成することができる。
なお、動きベクトル生成処理部40では、動きベクトル検出部141により検出した動きベクトルを、画素ブロック特定処理部142及び動きベクトル推定処理部143を介さずに、直接動きベクトル平滑化処理部144に供給して平滑化処理を施してもよい。このような処理を行った場合にも、上述した符号化情報として動きベクトルに比べて、実際の動体の動きに応じた精度の良い動きベクトルを生成することができる。
【0110】
次に動きベクトルマスク処理部50の動作について説明する。
動きベクトルマスク処理部50は、処理対象フレームのうち、動きぼけを付加する画像領域を特定するため、動きベクトル生成処理部40から供給される画素ブロック単位の動きベクトルVDに対して、図24に示すようなマスク処理を施す。そしてマスク処理後の画素ブロック単位の動きベクトルを最適シャッタ速度算出/判別部60及び動きベクトル補正部70に供給する。
【0111】
ここで、動きぼけを付加する必要がある、ジャーキネス劣化が発生しやすい画像領域は、特に画面内の動体画像領域(フレーム内において動体となる画像領域)及びエッジ周辺の画像領域に集中する。
よって、動きベクトルマスク処理部50では、図24に示す処理により、ジャーキネスが発生しやすい、空間コントラストの高いエッジ周辺の画素ブロックの動きベクトルだけ有効な値として出力する。
すなわち、ステップS11において、動きベクトルマスク処理部50は、入力画像データDDに対し、画素ブロック単位で、処理対象フレーム内の空間コントラストの高い領域を特定するための処理として画像のエッジを検出する。
また、ステップS11の処理と並列して、ステップS12において、動きベクトルマスク処理部50は、処理対象フレーム内の動体領域を特定するための処理として、フレーム間での差分を画素ブロック単位で算出することによって動体画像領域を検出する。
【0112】
ステップS13において、動きベクトルマスク処理部50は、上述したステップS11及びステップS12の何れか一方又は両方に係る処理で、ジャーキネス劣化が発生しやすい領域として検出されたか否かを、画素ブロック単位で判断する。
そして、ジャーキネス劣化が発生しやすい領域と判断した画素ブロックに対して、動きベクトルマスク処理部50は、マスク処理用のフラグを「1」に設定する。また、ジャーキネスが発生しやすい領域と判断されなかった画素ブロックに対して、マスク処理用のフラグを「0」に設定する。
【0113】
ステップS14において、動きベクトルマスク処理部50は、動きベクトル生成処理部40から供給される動きベクトルVDに対して、上述したフラグが「1」に設定されている画素ブロックの動きベクトルVDであるか否かを判断する。
動きベクトルマスク処理部50は、フラグが「1」に設定されている画素ブロックの動きベクトルに対しては、その値を変えずに、後段の最適シャッタ速度算出/判別部60及び動きベクトル補正部70に出力する(S16)。
また、動きベクトルマスク処理部50は、フラグが「0」に設定されている画素ブロックの動きベクトルに対しては、ステップS15において、動きベクトルの値を0又は無効にするマスク処理を施して、後段の最適シャッタ速度算出/判別部60及び動きベクトル補正部70に出力する。
【0114】
次に最適シャッタ速度算出/判別部60、及び動きベクトル補正部70に係る処理工程について図25を用いて説明する。
ステップS31として、最適シャッタ速度算出/判別部60は、例えば図26に示すような評価指標に基づいて処理対象フレームの各画素ブロックの動きベクトルに応じた最適シャッタ速度を算出する。
ここで、図26は、動きベクトルとして検出される動体の移動速度を示す被写体速度と、この被写体速度に応じた最適シャッタ速度曲線を表した図である。また、最適シャッタ速度とは、被写体の移動速度に応じた、視覚特性上、ジャーキネス劣化が知覚されにくく、且つ、動きぼけが過度に付加されることによって被写体のディテールが欠損したり不鮮明になるぼけ劣化も知覚されにくいシャッタ速度である。
すなわち、この最適シャッタ速度よりも速いシャッタ速度で被写体を撮像すると、撮像画像には、ジャーキネス劣化が生じていると判断できる。一方、この最適シャッタ速度よりも遅いシャッタ速度で被写体を撮像すると、撮像画像には、ぼけ劣化が生じていると判断することができる。
【0115】
そこで、最適シャッタ速度算出/判別部60は、各画素ブロックの動きベクトルを図26中の被写体速度に対応させることにより、各画素の動きベクトルに応じた最適シャッタ速度を算出する。
なお、図26の実線で示されている最適シャッタ速度曲線SS0は、任意の被写体速度と最適なシャッタ速度との対応関係を示した一例であって、具体的には心理実験に基づいて得られた実験結果値を結んだ曲線である。
ここで、図26に示す動きぼけ領域A1は、最適シャッタ速度曲線SS0に基づいて、被写体の動きによる動きぼけが過度に含まれると判別される領域である。同様にして、ジャーキネス領域A2は、最適シャッタ速度曲線SS0に基づいて、被写体の動きによる動きぼけが含まれず、視覚特性上ジャーキネス劣化が生じていると判別される領域である。
【0116】
この実線で示されている最適シャッタ速度曲線SS0を直接用いて、動きベクトルに応じた最適シャッタ速度を求める場合には、任意の刻み幅で動きベクトルに応じた最適シャッタ速度情報をテーブルとして記憶媒体に予め記憶して、この記録媒体を参照すればよい。
【0117】
また、本実施の形態では、この実線で示された最適シャッタ速度曲線に近似する関数を用いることにより、動きベクトルに応じた最適シャッタ速度を算出するようにしてもよい。この場合、最適シャッタ速度算出/判別部60は、ある画素ブロックでの動きベクトルをvとして、下記の(数8)に示す最適シャッタ速度曲線の近似関数により最適シャッタ速度SSD’を算出する。
【数8】
なお(数8)における各パラメータA、B、γは、図26中に示す最適シャッタ速度曲線の曲線形状に応じて適当な値を選択して用いるようにすればよい。シャッタ速度曲線の具体例として、図26では、(数8)中の各パラメータのうち、A、Bの値を固定にして、γを3段階に変化させたときの曲線形状SS1〜SS3を示している。
【0118】
動きベクトルに応じた最適シャッタ速度SSD’が算出されると、ステップS32において、最適シャッタ速度算出/判別部60は、この最適シャッタ速度SSD’と、入力画像データDDが実際に撮像された際のシャッタ速度SSDとを比較して、画素ブロック単位で図26に示すジャーキネス領域A2に該当しているか否かを判別する。
【0119】
この判別結果から、現在の処理対象の画素ブロックにおいて、シャッタ速度SSDが最適シャッタ速度SSD’よりも速く、ジャーキネス領域A2に該当しているとき、動きベクトル補正部70は、ステップS33の処理を行う。また、現在の処理対象の画素ブロックにおいて、シャッタ速度SSDが最適シャッタ速度SSD’よりも遅くジャーキネス領域A2に該当してないとき、動きベクトル補正部70は、ステップS34の処理を行う。
【0120】
ステップS33において、動きベクトル補正部70は、処理対象の画素ブロックにおいてジャーキネス劣化が生じているので、例えば、シャッタ速度SSDが速くなるのに伴って増加して値が1に収束する関数fs(SSD)を動きベクトルの値に乗じる処理を行う。
なお、動きベクトル補正部70は、関数fs(SSD)に代えて、動きベクトルVDを変数としたfs(VD)又は、シャッタ速度SSDと動きベクトルVDとを2変数としたfs(SSD,VD)を用いて乗算処理を行うようにしてもよい。
【0121】
ステップS34において、動きベクトル補正部70は、処理対象の画素ブロックにおいてジャーキネス劣化が生じていないので、例えばこの動きベクトルの値に0を乗じて無効にするマスク処理を施す。
【0122】
このようにして、最適シャッタ速度算出/判別部60は、処理対象となっている動画像が実際に撮像された時のシャッタ速度SSDを考慮して、ジャーキネス劣化が生じているか否かを判別する。そして、動きベクトル補正部70は、ジャーキネス劣化が生じていると判別された画素ブロックの動きベクトルに対して、適切な動きぼけを付加するための補正処理を施す。
そして動きベクトル補正部70は、補正結果としての動きベクトルVDを、動きぼけレンダリング処理部90に出力する。
【0123】
縮小画像生成処理部80、および動きぼけレンダリング処理部90の具体的な構成及び処理については、第1の実施の形態で説明した縮小画像生成処理部2、および動きぼけレンダリング処理部3と同様である。
つまり、縮小画像生成処理部80は、入力画像データDDの処理対象フレームから1つ以上の解像度の異なる縮小画像を生成する。動きぼけレンダリング処理部90は、入力画像データDDの処理対象フレームの注目画素に位置的に対応する画素を、縮小画像生成処理部80で形成された縮小画像から抽出する。そして動きベクトル補正部70から供給される、処理対象フレームに関する動き情報VDを基に、上記注目画素および上記縮小画像から抽出した1つ以上の抽出画素について、重み付け加算処理を行って、処理対象フレームに動きぼけを付加する処理を行う。
【0124】
このような第2の実施の形態も、第1の実施の形態と同様、視覚特性上、より自然な動画像となるように動きぼけ付加処理を行うことができる。
また動きベクトルVDも安定して生成され、より適切な動きぼけレンダリング処理を実現させることになる。
【0125】
なお本実施の形態では、画像データで示される画像の動きぼけの度合いを変化させる撮像条件を示す撮像情報の一例として、シャッタ速度情報を挙げて説明したが、次に示すような撮像条件を示す撮像情報を用いて動きベクトルを補正するようにしてもよい。
【0126】
すなわち、撮像素子に入射させる光量を制限して露光量を制御する絞り機構を有する撮像装置によって画像データが撮像されている場合、動きベクトル補正部70では、撮像情報として、画像データを撮像した時の絞り値Fを示す絞り値情報に基づいて、動きベクトルVDを補正するようにしてもよい。具体的に、絞り値Fが大きく被写界深度が深い撮像条件で撮像された画像データで示される画像は、空間コントラストが高い画像領域がより増えるので、ジャーキネス劣化が目立ちやすいという特徴がある。
したがって、動きベクトル補正部70では、絞り値Fが大きくなるのに伴って増加して値が1に収束する関数を動きベクトルVDの値に乗じる補正処理をすればよい。
【0127】
また、ジャイロスコープによって検出される角速度に応じて撮像画像のぶれを補正するぶれ補正機構を有する撮像装置によって画像データが撮像されている場合、動きベクトル補正部70では、撮像情報として、この画像データを撮像した時のジャイロスコープによって検出される角速度を示す角速度情報に基づいて、動きベクトルを補正するようにしてもよい。
ジャイロスコープによって検出される角速度が大きい撮像条件で撮像された画像データで示される画像は、画面内の動きが大きく、ジャーキネス劣化が目立ちやすいという特徴がある。したがって、動きベクトル補正部70では、ジャイロスコープによって検出される角速度が大きくなるのに伴って増加して値が1に収束する関数を動きベクトルの値に乗じる補正処理をすればよい。
【0128】
また、被写体を拡大するズーム機能を有する撮像装置によって画像データが撮像されている場合、動きベクトル補正部70では、撮像情報として、この画像データを撮像した時の撮像装置に設けられているズーム機能の拡大率を示すズーム情報に基づいて、動きベクトルを補正するようにしてもよい。
拡大率が大きい撮像条件で撮像された画像データで示される画像は、画面内の動きが大きく、ジャーキネス劣化が目立ちやすいという特徴がある。したがって、動きベクトル補正部70では、拡大率が大きくなるのに伴って増加して値が1に収束する関数を動きベクトルの値に乗じる補正処理をすればよい。
【0129】
なお、動きベクトル補正部70では、上述したシャッタ速度情報、絞り値情報、角速度情報、及びズーム情報を組み合わせて用いて動きベクトルを補正するようにしてもよい。
また、撮像情報は、上述したシャッタ速度情報、絞り値情報、角速度情報、及びズーム情報に限定されるものではなく、画像データで示される画像の動きぼけの度合いを変化させる撮像条件を示す情報であれば、他の情報を用いて動きベクトルの補正処理をしてもよい。
【0130】
以上、本発明の第1,第2の実施の形態を説明してきたが、本発明の画像処理装置、画像処理方法は、上記各例に限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々の変更が可能であることは勿論である。
また上記各例の画像処理装置1,100の構成は、複数の処理部の論理的集合構成であり、各構成として示した処理部が同一筐体内にあるものには限らない。
【0131】
[3.プログラム]
以上の実施の形態は、画像処理装置1,100として説明したが、これらの画像処理装置は画像処理を行う各種機器に適用できる。例えば画像再生装置、撮像装置、通信装置、画像記録装置、ゲーム機器、ビデオ編集機、などが想定される。
【0132】
さらに、汎用のパーソナルコンピュータその他の情報処理装置において、動画像再生や記録等を行う際に、画像処理装置1,100としての動作を実行することも当然想定される。
即ち、上述した画像処理装置1,100を構成する各処理部は、例えばFPGA等によって設計されるハードウェアによって実現されることもできるが、各処理部によって実現される画像処理をコンピュータ等の情報処理機器に実行させるようにしても良い。
例えば上述の縮小画像生成処理部2(80)、動きぼけレンダリング処理部3(90)の動作を演算処理装置に実行させるプログラムを画像処理アプリケーションソフトウエアとして提供することで、パーソナルコンピュータ等において、適切な画像処理を実現できる。
【0133】
即ち当該プログラムは以下の各ステップを演算処理装置(CPU等)に実行させる。
まず縮小画像生成処理部2(80)の処理に相当する、入力された動画像データに対し、動画像を構成する各単位画像を処理対象画像とし、その処理対象画像から1つ以上の解像度の異なる縮小画像を生成する縮小画像生成ステップを演算処理装置に実行させる。
また動きぼけレンダリング処理部3(90)の処理に相当する、処理対象画像の注目画素に位置的に対応する画素を上記縮小画像から抽出し、処理対象画像に関する動きを示す動き情報を基に、注目画素および縮小画像から抽出した1つ以上の抽出画素について、重み付け加算処理を行って、処理対象画像に動きぼけを付加する画素合成処理ステップを演算処理装置に実行させる。
【0134】
また当該プログラムはさらに、動きベクトル生成処理部40の処理に相当する、入力された動画像データについて、該動画像データを構成する各単位画像を処理対象画像とし、処理対象画像毎の動きベクトルを生成する処理を演算処理装置に実行させてもよい。
また、動きベクトルマスク処理部50の処理に相当する、動きぼけを付加する画像領域を特定する動きベクトルマスク情報を生成する処理を演算処理装置に実行させてもよい。
また、最適シャッタ速度算出/判定部60の処理に相当する、動き情報に対応する最適な撮像シャッタ速度として、出力画像の画像劣化が低減される最適シャッタ速度情報を、処理対象画像中の各画素または分割領域ごとに取得する処理を演算処理装置に実行させてもよい。
また、動きベクトル補正部70の処理に相当する、最適シャッタ速度情報等を用いて動き情報を補正する処理を演算処理装置に実行させてもよい。
【0135】
このようなプログラムにより、本発明をパーソナルコンピュータ、携帯電話機、PDA(Personal Digital Assistant)、その他画像データを用いる多様な情報処理装置においても同様の画像処理を実行できるようにすることができる。
【0136】
なお、このようなプログラムは、パーソナルコンピュータ等の機器に内蔵されている記録媒体としてのHDDや、CPUを有するマイクロコンピュータ内のROMやフラッシュメモリ等に予め記録しておくことができる。
あるいはまた、フレキシブルディスク、CD−ROM(Compact Disc Read Only Memory)、MO(Magnet optical)ディスク、DVD、ブルーレイディスク、磁気ディスク、半導体メモリ、メモリカードなどのリムーバブル記録媒体に、一時的あるいは永続的に格納(記録)しておくことができる。このようなリムーバブル記録媒体は、いわゆるパッケージソフトウェアとして提供することができる。
また、プログラムは、リムーバブル記録媒体からパーソナルコンピュータ等にインストールする他、ダウンロードサイトから、LAN(Local Area Network)、インターネットなどのネットワークを介してダウンロードすることもできる。
【図面の簡単な説明】
【0137】
【図1】本発明の実施の形態の第1の実施の形態の画像処理装置のブロック図である。
【図2】実施の形態の縮小画像を用いた重み付け加算処理の説明図である。
【図3】実施の形態の縮小画の生成処理の説明図である。
【図4】実施の形態の水平方向縮小画像の生成処理の説明図である。
【図5】実施の形態の垂直方向縮小画像の生成処理の説明図である。
【図6】実施の形態の斜め45°方向縮小画像の生成処理の説明図である。
【図7】実施の形態の斜め135°方向縮小画像の生成処理の説明図である。
【図8】実施の形態の縮小画像生成処理部の処理の説明図である。
【図9】実施の形態の縮小画像生成処理部の処理を一般化した説明図である。
【図10】実施の形態の縮小画像生成処理部の4方向の縮小画生成処理の説明図である。
【図11】実施の形態の縮小画像生成処理部のフィルタの説明図である。
【図12】実施の形態の縮小画像生成処理の説明図である。
【図13】実施の形態の動きぼけレンダリング処理部の処理の説明図である。
【図14】実施の形態の動きぼけレンダリング処理部の構成のブロック図である。
【図15】実施の形態の合成画素算出処理及び重み付け画素加算処理の説明図である。
【図16】実施の形態の重み情報テーブルの説明図である。
【図17】実施の形態の動きぼけレンダリング処理部の他の構成のブロック図である。
【図18】実施の形態の動きぼけレンダリング処理部のさらに他の構成のブロック図である。
【図19】実施の形態の動きぼけレンダリング処理部のさらに他の構成のブロック図である。
【図20】実施の形態の動きぼけレンダリング処理部のさらに他の構成のブロック図である。
【図21】第2の実施の形態の画像処理装置のブロック図である。
【図22】第2の実施の形態の動きベクトル生成処理部のブロック図である。
【図23】第2の実施の形態の動きベクトル生成処理部の処理の説明図である。
【図24】第2の実施の形態の動きベクトルマスク処理部の処理の説明図である。
【図25】第2の実施の形態の最適シャッタ速度算出/判定部及び動きベクトル補正部の処理の説明図である。
【図26】実施の形態の最適シャッタ速度に関する説明図である。
【図27】従来の動画像撮像装置と動画像再生装置のブロック図である。
【符号の説明】
【0138】
1 画像処理装置、2 縮小画像生成処理部、3 動きぼけレンダリング処理部、40 動きベクトル生成処理部、50 動きベクトルマスク処理部、60 最適シャッタ速度算出/判定部、70 動きベクトル補正部、80 縮小画像生成処理部、90 動きぼけレンダリング処理部、100 画像処理装置
【特許請求の範囲】
【請求項1】
動画像を構成する各単位画像を処理対象画像とし、上記処理対象画像から1つ以上の解像度の異なる縮小画像を生成する縮小画像生成手段と、
上記処理対象画像の注目画素に位置的に対応する画素を上記縮小画像から抽出し、上記処理対象画像に関する動きを示す動き情報を基に、上記注目画素および上記縮小画像から抽出した1つ以上の抽出画素について、重み付け加算処理を行って、上記処理対象画像に動きぼけを付加する画素合成処理手段と、
を備える画像処理装置。
【請求項2】
上記縮小画像生成手段は、
上記処理対象画像に対し、再帰的な縮小フィルタ処理を用いることで上記縮小画像を生成する請求項1に記載の画像処理装置。
【請求項3】
上記画素合成処理手段は、
上記注目画素および1つ以上の上記抽出画素に応じた重みの値を、上記画像に関する動きを示す動き情報を基に変更する請求項1に記載の画像処理装置。
【請求項4】
上記画素合成処理手段は、
上記注目画素に応じて各縮小画像から抽出する画素について、
注目画素と各縮小画像中に存在する画素との位置関係に応じて、各縮小画像中に存在する複数画素の重み付け加算処理によって抽出する請求項1に記載の画像処理装置。
【請求項5】
上記縮小画像生成手段は、
上記処理対象画像に対し縮小フィルタ処理を行って、方向別の縮小画像をそれぞれ生成し、
上記画素合成処理手段は、
上記各方向別に生成された各縮小画像から、方向を選択することで縮小画像を選択し、
上記処理対象画像の注目画素に位置的に対応する画素を上記選択した縮小画像から抽出し、
上記動き情報を基に、上記注目画素および上記選択した縮小画像から抽出した1つ以上の抽出画素について、重み付け加算処理を行う請求項1に記載の画像処理装置。
【請求項6】
上記縮小画像生成手段は、上記処理対象画像に対し縮小フィルタ処理を行って、方向別の縮小画像をそれぞれ生成し、
上記画素合成処理手段は、
上記処理対象画像の注目画素に位置的に対応する画素を上記各方向別に生成された各縮小画像からそれぞれ抽出し、
上記動き情報を基に、上記注目画素および上記各縮小画像からそれぞれ抽出した抽出画素について、それぞれに第1の重み付け加算処理を行い、
上記第1の重み付け加算処理の結果の各画素について、上記動き情報に応じた第2の重み付け加算処理を行う請求項1に記載の画像処理装置。
【請求項7】
上記動き情報に対応する最適な撮像シャッタ速度として、出力画像の画像劣化が低減される最適シャッタ速度情報を、処理対象画像中の各画素または分割領域ごとに取得し、上記最適シャッタ速度情報を用いて動き情報を補正する動き情報補正手段をさらに有し、
上記画素合成処理手段は、上記動き情報補正手段が補正した動き情報を用いて上記処理対象画像に動きぼけを付加する請求項1に記載の画像処理装置。
【請求項8】
上記動き情報補正手段は、撮像装置により撮像された際のシャッタ速度情報及び上記最適シャッタ速度情報を用いて、上記動き情報を補正する請求項7に記載の画像処理装置。
【請求項9】
上記動き情報として動きベクトルを生成する動きベクトル生成手段を更に備え、
上記動き情報補正手段は、上記動きベクトル生成手段により生成された動きベクトルを補正し、
上記画素合成処理手段は、上記動き情報補正手段により補正された動きベクトルを用いて、上記処理対象画像の注目画素に位置的に対応する画素を上記縮小画像から抽出し、上記注目画素および上記縮小画像から抽出した1つ以上の抽出画素について、重み付け加算処理を行う請求項7に記載の画像処理装置。
【請求項10】
上記動きベクトル生成手段は、
処理対象画像となる単位画像の動きベクトルを検出する動きベクトル検出手段と、
上記動きベクトル検出手段が検出した処理対象画像の動きベクトルと、該処理対象画像以前の処理対象画像の動きベクトルを画素ブロック単位で比較して、相関が高い画素ブロックを特定する画素ブロック特定手段と、
上記画素ブロック特定手段により特定された画素ブロックの動きベクトルから、該特定された画素ブロック以外の画素ブロックの動きベクトルを推定する動きベクトル推定手段と、
を有する請求項9に記載の画像処理装置。
【請求項11】
上記動きベクトル生成手段は、
処理対象画像となる単位画像の動きベクトルを検出する動きベクトル検出手段と、
上記動きベクトル検出手段が検出した処理対象画像の動きベクトルを平滑化する動きベクトル平滑化手段と、
を有する請求項9に記載の画像処理装置。
【請求項12】
動画像を構成する各単位画像を処理対象画像とし、上記処理対象画像から1つ以上の解像度の異なる縮小画像を生成する縮小画像生成ステップと、
上記処理対象画像の注目画素に位置的に対応する画素を上記縮小画像から抽出し、上記処理対象画像に関する動きを示す動き情報を基に、上記注目画素および上記縮小画像から抽出した1つ以上の抽出画素について、重み付け加算処理を行って、上記処理対象画像に動きぼけを付加する画素合成処理ステップと、
を有する画像処理方法。
【請求項13】
動画像を構成する各単位画像を処理対象画像とし、上記処理対象画像から1つ以上の解像度の異なる縮小画像を生成する縮小画像生成ステップと、
上記処理対象画像の注目画素に位置的に対応する画素を上記縮小画像から抽出し、上記処理対象画像に関する動きを示す動き情報を基に、上記注目画素および上記縮小画像から抽出した1つ以上の抽出画素について、重み付け加算処理を行って、上記処理対象画像に動きぼけを付加する画素合成処理ステップと、
を演算処理装置に実行させるプログラム。
【請求項1】
動画像を構成する各単位画像を処理対象画像とし、上記処理対象画像から1つ以上の解像度の異なる縮小画像を生成する縮小画像生成手段と、
上記処理対象画像の注目画素に位置的に対応する画素を上記縮小画像から抽出し、上記処理対象画像に関する動きを示す動き情報を基に、上記注目画素および上記縮小画像から抽出した1つ以上の抽出画素について、重み付け加算処理を行って、上記処理対象画像に動きぼけを付加する画素合成処理手段と、
を備える画像処理装置。
【請求項2】
上記縮小画像生成手段は、
上記処理対象画像に対し、再帰的な縮小フィルタ処理を用いることで上記縮小画像を生成する請求項1に記載の画像処理装置。
【請求項3】
上記画素合成処理手段は、
上記注目画素および1つ以上の上記抽出画素に応じた重みの値を、上記画像に関する動きを示す動き情報を基に変更する請求項1に記載の画像処理装置。
【請求項4】
上記画素合成処理手段は、
上記注目画素に応じて各縮小画像から抽出する画素について、
注目画素と各縮小画像中に存在する画素との位置関係に応じて、各縮小画像中に存在する複数画素の重み付け加算処理によって抽出する請求項1に記載の画像処理装置。
【請求項5】
上記縮小画像生成手段は、
上記処理対象画像に対し縮小フィルタ処理を行って、方向別の縮小画像をそれぞれ生成し、
上記画素合成処理手段は、
上記各方向別に生成された各縮小画像から、方向を選択することで縮小画像を選択し、
上記処理対象画像の注目画素に位置的に対応する画素を上記選択した縮小画像から抽出し、
上記動き情報を基に、上記注目画素および上記選択した縮小画像から抽出した1つ以上の抽出画素について、重み付け加算処理を行う請求項1に記載の画像処理装置。
【請求項6】
上記縮小画像生成手段は、上記処理対象画像に対し縮小フィルタ処理を行って、方向別の縮小画像をそれぞれ生成し、
上記画素合成処理手段は、
上記処理対象画像の注目画素に位置的に対応する画素を上記各方向別に生成された各縮小画像からそれぞれ抽出し、
上記動き情報を基に、上記注目画素および上記各縮小画像からそれぞれ抽出した抽出画素について、それぞれに第1の重み付け加算処理を行い、
上記第1の重み付け加算処理の結果の各画素について、上記動き情報に応じた第2の重み付け加算処理を行う請求項1に記載の画像処理装置。
【請求項7】
上記動き情報に対応する最適な撮像シャッタ速度として、出力画像の画像劣化が低減される最適シャッタ速度情報を、処理対象画像中の各画素または分割領域ごとに取得し、上記最適シャッタ速度情報を用いて動き情報を補正する動き情報補正手段をさらに有し、
上記画素合成処理手段は、上記動き情報補正手段が補正した動き情報を用いて上記処理対象画像に動きぼけを付加する請求項1に記載の画像処理装置。
【請求項8】
上記動き情報補正手段は、撮像装置により撮像された際のシャッタ速度情報及び上記最適シャッタ速度情報を用いて、上記動き情報を補正する請求項7に記載の画像処理装置。
【請求項9】
上記動き情報として動きベクトルを生成する動きベクトル生成手段を更に備え、
上記動き情報補正手段は、上記動きベクトル生成手段により生成された動きベクトルを補正し、
上記画素合成処理手段は、上記動き情報補正手段により補正された動きベクトルを用いて、上記処理対象画像の注目画素に位置的に対応する画素を上記縮小画像から抽出し、上記注目画素および上記縮小画像から抽出した1つ以上の抽出画素について、重み付け加算処理を行う請求項7に記載の画像処理装置。
【請求項10】
上記動きベクトル生成手段は、
処理対象画像となる単位画像の動きベクトルを検出する動きベクトル検出手段と、
上記動きベクトル検出手段が検出した処理対象画像の動きベクトルと、該処理対象画像以前の処理対象画像の動きベクトルを画素ブロック単位で比較して、相関が高い画素ブロックを特定する画素ブロック特定手段と、
上記画素ブロック特定手段により特定された画素ブロックの動きベクトルから、該特定された画素ブロック以外の画素ブロックの動きベクトルを推定する動きベクトル推定手段と、
を有する請求項9に記載の画像処理装置。
【請求項11】
上記動きベクトル生成手段は、
処理対象画像となる単位画像の動きベクトルを検出する動きベクトル検出手段と、
上記動きベクトル検出手段が検出した処理対象画像の動きベクトルを平滑化する動きベクトル平滑化手段と、
を有する請求項9に記載の画像処理装置。
【請求項12】
動画像を構成する各単位画像を処理対象画像とし、上記処理対象画像から1つ以上の解像度の異なる縮小画像を生成する縮小画像生成ステップと、
上記処理対象画像の注目画素に位置的に対応する画素を上記縮小画像から抽出し、上記処理対象画像に関する動きを示す動き情報を基に、上記注目画素および上記縮小画像から抽出した1つ以上の抽出画素について、重み付け加算処理を行って、上記処理対象画像に動きぼけを付加する画素合成処理ステップと、
を有する画像処理方法。
【請求項13】
動画像を構成する各単位画像を処理対象画像とし、上記処理対象画像から1つ以上の解像度の異なる縮小画像を生成する縮小画像生成ステップと、
上記処理対象画像の注目画素に位置的に対応する画素を上記縮小画像から抽出し、上記処理対象画像に関する動きを示す動き情報を基に、上記注目画素および上記縮小画像から抽出した1つ以上の抽出画素について、重み付け加算処理を行って、上記処理対象画像に動きぼけを付加する画素合成処理ステップと、
を演算処理装置に実行させるプログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【図25】
【図26】
【図27】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【図25】
【図26】
【図27】
【公開番号】特開2010−28524(P2010−28524A)
【公開日】平成22年2月4日(2010.2.4)
【国際特許分類】
【出願番号】特願2008−188528(P2008−188528)
【出願日】平成20年7月22日(2008.7.22)
【出願人】(000002185)ソニー株式会社 (34,172)
【Fターム(参考)】
【公開日】平成22年2月4日(2010.2.4)
【国際特許分類】
【出願日】平成20年7月22日(2008.7.22)
【出願人】(000002185)ソニー株式会社 (34,172)
【Fターム(参考)】
[ Back to top ]