次に本発明の実施の形態について図面を参照して詳細に説明する。
図1は、本発明の実施の形態における画像処理装置100の構成例を示す図である。この画像処理装置100は、手振れ等の振動により画像に生じた影響を打ち消すための補正量を算出して各画像の使用可否を判定するために、手振れ検出部110と、手振れ補正量算出部120と、使用可否判定部130とを備えている。また、この画像処理装置100は、画像を撮像するために、タイミング生成部161と、撮像素子162と、前処理部163と、信号処理部164とを備えている。さらに、この画像処理装置100は、撮像された画像に対して補正を施すために、メモリ170と、メモリ制御部180と、画像補正部190とを備えている。
手振れ検出部110は、画像処理装置100に加えられた振動を検出して振動量を出力する。手振れ検出部110は、角速度センサなどのセンサにより実現してもよく、また、画像処理等により実現してもよい。例えば、手振れ検出部110が角速度センサにより構成される場合、その角速度センサは、ピッチング方向、ヨーイング方向、それぞれの方向に加えられた角速度のデータに基づく振動量を手振れ補正量算出部120に供給する。
手振れ補正量算出部120は、振動による画像処理装置100への影響を打ち消すための補正量を、手振れ検出部110から供給された振動量に基づいて算出する。すなわち、手振れ補正量算出部120は、手振れ検出部110から供給されたデータを用いて、加えられた手振れによる影響を低減するための補正量を1ライン毎もしくは数ラインおきに算出する。手振れ補正量算出部120は、算出した補正量を信号線129により使用可否判定部130、メモリ制御部180、画像補正部190およびタイミング生成部161に供給する。
使用可否判定部130は、手振れ補正量算出部120から供給された補正量に基づいて、その補正対象の画像データを使用するか否かを判定する。そして、画像データの各々について使用の可否をメモリ制御部180および画像補正部190に供給する。
撮像素子162は、画像を撮像するための素子であり、例えば、X−Yアドレス(二次元アドレス)型の固体撮像素子(CMOSイメージセンサなど)により構成される。タイミング生成部161は、撮像素子162における読出しタイミングを生成する。撮像素子162は、この撮像素子162によるタイミングに従って、撮像された画像データを前処理部163に供給する。
前処理部163は、撮像素子162から供給された画像データをデジタル信号の画像データに変換し、信号処理部164に供給する。信号処理部164は、前処理部163から供給された画像データから、例えば輝度信号と色差信号を算出してYUV信号を生成し、それぞれの信号を、画像補正部190に供給する。なお、ここで生成される信号はYUV信号に限られず、例えばRGB信号などであってもよい。
メモリ170は、補正対象となる画像を一時的に保持しておくための画像データ領域を有する。メモリ制御部180は、このメモリ170に対するアクセス制御を行う。画像補正部190に供給された画像データは、メモリ制御部180の制御によってメモリ170に一旦保持される。このメモリ170に記憶された画像データは、メモリ制御部180の制御により読み出され、画像補正部190に供給される。画像補正部190は、供給された画像データに対して手振れ補正を行って信号線199を介して出力する。この出力された画像データは、(図示しない)記録媒体に記録され、または、(図示しない)ディスプレイ上に表示される。
手振れ補正量算出部120から供給された補正量は、画像補正部190に供給されて画像の補正処理に利用される。この補正量はタイミング生成部161にも供給され、このタイミング生成部161による撮像素子162の読出しタイミングの調整によって画像の補正処理が行われるようにすることも可能である。
ところで、上述の補正量は1ライン毎に算出する必要があるが、手振れによる振動量が取得されるタイミングは、手振れ検出部110のサンプリング周波数に依存し、必ずしも1ライン毎に補正量を算出するだけの振動量が供給されるとは限らない。そこで、手振れ検出部110のサンプリング周波数が撮像素子162からの読出しの周波数と異なる場合、手振れ検出部110または手振れ補正量算出部120において補間を行い、1ライン毎の手振れ補正量を求める。同様に、手振れ検出部110のサンプリング周波数が、撮像素子162からの読出しの周波数と同じであって位相だけが異なる場合にも、手振れ検出部110または手振れ補正量算出部120において補間を行う必要がある。この補間処理について以下に説明する。
図2は、手振れによる振動量およびその手振れの影響を受けた画像の具体例を示す図である。図2(a)では、100本のラインに対して3点の振動量が取得されている場合を例に挙げて説明する。すなわち、ライン#1'、ライン#50'、およびライン#100'のときに、手振れ検出部110からの振動量が取得できたものとして説明する。このライン#1'は、説明上の基準となるラインであり、撮像された画像を構成するラインの内の1本である。
図2(a)において、ライン#1'を読み出す際の振動量はP1ピクセルであり、ライン#50'を読み出す際の振動量はP2ピクセルであり、ライン#100'を読み出す際の振動量はP3ピクセルであることを示している。この振動量は、小数点以下を含むピクセル単位であり、その後の処理において1ピクセル以下の量による補正が可能となっている。
振動量P1乃至P3は、画像の撮像が開始された直後のタイミングに取得された振動量を基準としたときの差分を表す。図2(a)に示した状態では、基準から、ライン#1'のときに右側の手振れが発生し、その後ライン#50'まで右側の手振れが発生し、そして、ライン#100'までは、左側の手振れが発生した状況である。
例えば、被写体として静止している四角形を撮像したときに、図2(a)に示したような手振れが画像処理装置100に加えられると、そのまま補正をしなければ、図2(b)に示したような歪んだ画像がユーザに提示されることになる。このような歪んだ画像を補正し、本来の画像に極力忠実な画像をユーザに最終的に提示するように、手振れに関する補正が行われる。
ライン毎の手振れを補正するためには、ライン毎の振動量を取得する必要がある。しかしながら、図2に示した例では、ライン#1'、ライン#50'、および、ライン#100'に関する手振れ量しか取得されない。このような離散的なデータしか取得できないのは、手振れ検出部110が手振れを検出するサンプリング周波数に依存しているからである。このような場合には、ライン#2'乃至#49'と、ライン#51'乃至#99'に関する手振れ量は取得されないため、それらのライン毎の手振れ量を補間して処理を実行する必要がある。
図3は、本発明の実施の形態における振動量の補間処理の例を示す図である。手振れ補正量算出部120は、上述したように、ライン#1'乃至#100'の間に、3つの振動量を取得する。この3つの振動量から、ライン#50'を除くライン#2'乃至#99'に関する振動量を補間により算出する。例えば、図3(a)のように、ライン#1'に関する振動量をライン#2'乃至#40'にも用い、ライン#50'に関する振動量をライン#41'乃至#60'にも用い、ライン#100'に関する振動量をライン#61'乃至#99'にも用いるというように、1つのラインに関する振動量を、前後のラインに適用するといった方法で補間を行うことができる。
また、図3(b)のように、1次関数を用いて算出するようにしても良い。この例では、ライン#1'とライン#50'に関するそれぞれの振動量を2点とする1次関数からライン#2'乃至#49'に関する振動量がそれぞれ算出され、ライン#50'とライン#100'に関するそれぞれの振動量を2点とする1次関数からライン#51'乃至#99'に関する振動量がそれぞれ算出される。
さらに、図3(c)のように、1次関数ではない他の関数を用いて算出されるようにしても良い。図3(c)に示した例は、基本的に図3(b)に示した例と同様であるが、1次関数ではない他の関数を用いる点が異なる。手振れは、必ずしも同一方向に同一の速度で同一の大きさで変化するものではないと考えられる。従って、直線的に変化する1次関数を用いて補間するよりも、図3(c)のような曲線的に変化する関数を用いた方がより適切な場合がある。
図3(a)乃至(c)の何れの方法を用いて補正量を算出するかは画像処理装置100の処理能力に依存する。画像処理装置100がマイクロコンピュータなどで構成される場合、そのマイクロコンピュータの処理能力に合わせて、何れの方法により補正量を補間することができる。具体的には、マイクロコンピュータの処理能力が低い場合、演算量が少ない図3(a)に示した方法で、補正量の補間が行なわれるようにし、マイクロコンピュータの処理能力が比較的高い場合、演算量が比較的多い図3(c)に示した方法で、補正量の補間が行なわれるようにすればよい。
このようにして離散的な振動量からライン毎の振動量が求められると、手振れ補正量算出部120はその振動量に基づいてその振動による画像処理装置100への影響を打ち消すための補正量を算出する。例えば、ライン#1'に関する振動量が、P1ピクセルであった場合、その振動量がP1ピクセルである状態から手振れのない状態にするためには、絶対値が異なり符号の異なる量、すなわち「−P1」ピクセルが補正量として算出されるようにすれば良い。
図4は、本発明の実施の形態における補正量の算出例を示す図である。図4(a)は、手振れ補正量算出部120が、図3(a)を参照して説明した方式により振動量を補間したときに算出される手振れ補正量を示している。図4(b)は、手振れ補正量算出部120が、図3(b)を参照して説明した方式により振動量を補間したときに算出される手振れ補正量を示している。同様に、図4(c)は、手振れ補正量算出部120が、図3(c)を参照して説明した方式により振動量を補間したときに算出される手振れ補正量を示している。
次に本発明の実施の形態における使用可否判定部130による処理内容について説明する。
図5は、本発明の実施の形態における使用可否判定部130の第1の具体例を示す図である。この第1の具体例による使用可否判定部130は、不足量算出部1311と、比較器1312、1313、1315と、ライン数カウンタ1314と、論理和回路1316と、領域範囲保持部1321と、範囲限界閾値保持部1322と、範囲予備閾値保持部1323と、ライン数閾値保持部1325とを備えている。
不足量算出部1311は、手振れ補正量算出部120から信号線129を介して供給された補正量に基づいて、図6に示す不足量を算出する。図6は、本発明の実施の形態におけるメモリ170の領域の範囲と不足量との関係を示す図である。図6(a)のようにメモリ170上に確保された画像データ領域11において、本来の画像21を被写体としたところ、手振れが生じたことにより画像31が保持された状態を考える。ここでは、説明を簡単にするため、画像31はライン#1乃至#10に存在するものと仮定する。
この図6(a)の例では、水平方向の手振れ量が大きいために画像31の片隅が画像データ領域11から溢れている。この画像データ領域11から溢れた量を不足量という。この不足量には、限界閾値および予備閾値が予め定められている。限界閾値とは、不足量の最大限の閾値であり、この限界閾値を超えるラインを一つでも含む画像データはもはや使用に適さないものと判断される。また、予備閾値とは、不足量の予備的閾値であり、画像データにおいてこの予備閾値を超えるラインが所定数を超えた場合、その画像データは使用に適さないものと判断される。
図6(a)は予備閾値を超えた例であり、上記所定数として「3」が設定されていたとすれば、この図6(a)の例では予備閾値を超えたラインがライン#7から#10の「4」であるので使用に適さないものと判断される。一方、上記所定数として「5」が設定されていたとすれば、この図6(a)の例では予備閾値を超えたラインが「4」であるので使用に適するものと判断される。また、図6(b)は限界閾値を超えた例であり、ライン#6が限界閾値を超えているので、他のラインの状態にかかわらず、使用に適さないものと判断される。
図5において、不足量算出部1311が上述の不足量を算出するために、領域範囲保持部1321は画像データ領域11(図6)の範囲を保持する。これにより、画像データ領域11から溢れた不足量が算出される。
比較器1312は、不足量算出部1311から供給される不足量について、ライン毎に上述の限界閾値を超えていないかをチェックする。ここで、この限界閾値は、範囲限界閾値保持部1322に予め設定される。比較器1312は、不足量算出部1311から供給される不足量と範囲限界閾値保持部1322に保持される限界閾値とを比較して、不足量が限界閾値を超える場合にその出力を有効にし、不足量が限界閾値を超えない場合にその出力を無効にする。
比較器1313は、不足量算出部1311から供給される不足量について、ライン毎に上述の予備閾値を超えていないかをチェックする。ここで、この予備閾値は、範囲予備閾値保持部1323に予め設定される。比較器1313は、不足量算出部1311から供給される不足量と範囲予備閾値保持部1323に保持される予備閾値とを比較して、不足量が予備閾値を超える場合にその出力を有効にし、不足量が予備閾値を超えない場合にその出力を無効にする。
ライン数カウンタ1314は、比較器1313がその出力を有効にした回数、すなわち不足量が予備閾値を超えたライン数を計数する。比較器1315は、ライン数カウンタ1314から供給されるライン数について、上述の所定数を超えていないかをチェックする。ここで、この所定数はライン数閾値としてライン数閾値保持部1325に予め設定される。比較器1315は、ライン数カウンタ1314から供給されるライン数とライン数閾値保持部1325に保持されるライン数閾値とを比較して、ライン数がライン数閾値を超える場合にその出力を有効にし、ライン数がライン数閾値を超えない場合にその出力を無効にする。
論理和回路1316は、比較器1312の出力と比較器1315の出力との論理和演算を行ってその結果を信号線139に出力する。これにより、不足量が予備閾値を超える場合または予備閾値を超えるライン数がライン数閾値を超える場合に、信号線139が有効になる。すなわち、この信号線139が有効であれば対応する画像データを「使用しない」ことを意味し、信号線139が無効であれば対応する画像データを「使用する」ことを意味する。
このように、使用可否判定部130の第1の具体例によれば、各ラインの不足量と所定の閾値とを比較することにより、対応する画像データの使用可否を判定することができる。
図7は、本発明の実施の形態における使用可否判定部130の第2の具体例を示す図である。この第2の具体例による使用可否判定部130は、代表値算出部1351と、絶対値算出部1352と、比較器1353と、減算器1354と、絶対値算出部1355と、比較器1356と、論理和回路1357と、切替器1358と、代表値閾値保持部1363と、遅延部1364と、変化量閾値保持部1366と、遅延部1368とを備えている。
代表値算出部1351は、手振れ補正量算出部120から信号線129を介して供給された補正量に基づいて、対応する画像データの代表値を算出する。この代表値とは、各フィールドまたは各フレームの手振れ補正量の代表値であり、例えば各フィールドまたは各フレーム内の任意のラインにおける補正量の平均値を利用することができる。この平均値を求める際には、必ずしも全ラインにおける平均値を求める必要はなく、そのフィールドまたはフレームの手振れ補正量の代表値を示すものであればよい。
絶対値算出部1352は、代表値算出部1351から供給される代表値の絶対値を算出する。比較器1353は、絶対値算出部1352から供給される絶対値が代表値の閾値を超えていないかをチェックする。ここで、この代表値の閾値は代表値閾値保持部1363に予め設定される。比較器1353は、絶対値算出部1352から供給される絶対値と代表値閾値保持部1363に保持される代表値閾値とを比較して、代表値の絶対値が代表値閾値を超える場合にその出力を有効にし、代表値の絶対値が代表値閾値を超えない場合にその出力を無効にする。
遅延部1364は、代表値算出部1351から供給された代表値を遅延させ、時間的に一つ前のフィールドまたはフレームについて供給された代表値を出力する。減算器1354は、代表値算出部1351から供給される代表値と遅延部1364から出力される代表値との差分を算出する。すなわち、現在の代表値から一つ前の代表値を減算して変化量として出力する。この減算器1354から出力された変化量は、絶対値算出部1355によってその絶対値が算出される。
比較器1356は、絶対値算出部1355から供給される絶対値が変化量の閾値を超えていないかをチェックする。ここで、この変化量の閾値は変化量閾値保持部1366に予め設定される。比較器1356は、絶対値算出部1355から供給される絶対値と変化量閾値保持部1366に保持される変化量閾値とを比較して、変化量の絶対値が変化量閾値を超える場合にその出力を有効にし、変化量の絶対値が変化量閾値を超えない場合にその出力を無効にする。
論理和回路1357は、比較器1353の出力と比較器1356の出力との論理和演算を行う。これにより、代表値の絶対値が代表値閾値を超える場合または変化量の絶対値が変化量閾値を超える場合に、論理和回路1357の出力が有効になる。
切替器1358は、比較器1353の出力と論理和回路1357の出力の何れかを選択して信号線139に出力する。この信号線139が有効であれば対応する画像データを「使用しない」ことを意味し、信号線139が無効であれば対応する画像データを「使用する」ことを意味する。切替器1358の選択信号には、遅延部1368の出力信号が使用される。この遅延部1368は、信号線139上の信号を遅延させ、時間的に一つ前のフィールドまたはフレームについて供給された信号を出力する。これにより、1つ前のタイミングで画像データを「使用しない」と判定された場合には次のタイミングで比較器1353の出力が選択され、1つ前のタイミングで画像データを「使用する」と判定された場合には次のタイミングで論理和回路1357の出力が選択される。
従って、代表値の絶対値が代表値閾値を超える場合には1つ前のタイミングの判定結果を問わず画像データを「使用しない」と判定される。一方、代表値の絶対値が代表値閾値を超えず、且つ、変化量の絶対値が変化量閾値を超える場合には1つ前のタイミングで画像データを「使用する」と判定されたときにだけ、次のタイミングで画像データを「使用しない」と判定される。すなわち、代表値の絶対値が代表値閾値を超えない状態においては、変化量の絶対値が連続して変化量閾値を超えたとしても、連続して画像データを「使用しない」とは判定せず、交互に画像データを「使用する」ように判定する。
このように複数の閾値により画像データの使用可否判定を行うことで、画質劣化が予想される画像データの除去を行うだけでなく、必要以上に画像データの使用不可判定をしてしまうことを防止し、最終的に構成される画像の画質への補正限界時の影響の除去を最適化することができる。なお、この具体例では2つの閾値を用いているが、より多くの閾値設定をすることで、より細かな判定を行うようにしてもよい。
図8は、本発明の実施の形態における使用可否判定部130の第2の具体例による各部の状態を示す図である。ここでは、一例として、代表値閾値として「4」、変化量閾値として「5」が設定されているものとする。そして、例えば、第1フレーム(またはフィールド、以下同様)の手振れ補正量の代表値X1が「0」であったとすると、その絶対値も「0」となる。従って、比較器1353の出力は「0」(無効)となる。また、第0フレームの手振れ補正量の代表値X0が「0」であったとすると、変化量(X1−X0)の絶対値も「0」となるため、論理和回路1357の出力も「0」となる。従って、第0フレームの画像データに関する使用の可否にかかわらず、信号線139上の信号は「0」となり、第1フレームの画像データを「使用する」との判定結果が示される。
第2フレームの手振れ補正量の代表値X2が「10」であったとすると、その絶対値も「10」となるため、比較器1353の出力は「1」となる。これにより、論理和回路1357の出力が「1」となり、第1フレームの信号線139上の信号が「0」であったことから、信号線139上の信号は「1」となる。すなわち、第2フレームの画像データを「使用しない」との判定結果が示される。
第3フレームの手振れ補正量の代表値X3が「−3」であったとすると、その絶対値は「3」となるため、比較器1353の出力は「0」となる。第2フレームの信号線139上の信号が「1」であったことから、信号線139上の信号は「0」となる。すなわち、第3フレームの画像データを「使用する」との判定結果が示される。
第4フレームの手振れ補正量の代表値X4が「3」であったとすると、その絶対値も「3」となるため、比較器1353の出力は「0」となる。また、第3フレームの手振れ補正量の代表値X3が「−3」であるため、変化量(X4−X3)の絶対値は「6」となる。これにより、論理和回路1357の出力が「1」となり、第3フレームの信号線139上の信号が「0」であったことから、信号線139上の信号は「1」となる。すなわち、第4フレームの画像データを「使用しない」との判定結果が示される。
このように、手振れ量の絶対値または変化量の絶対値を判定条件とすることで、極端に手振れを起こした画像そのものを排除するとともに、連続するフレーム間の手振れの著しい変動による画質劣化を引き起こす画像を排除でき、高精度な画像データ使用可否判定が可能となる。さらに、前フィールドまたはフレームの判定結果をフィードバックすることによって、必要以上に画像データの使用不可判定をしてしまうことを防止し、最終的に構成される画像の画質への補正限界時の影響の除去を最適化することができる。
次に本発明の実施の形態における画像データの差替処理の内容について説明する。
図9は、本発明の実施の形態におけるスローモーション再生のタイミング例を示す図である。ここでは、通常撮像時の1フレーム期間を1/N[秒]、高速撮像時の1フレーム期間を1/3N[秒]としている。この場合、通常撮像時の1フレーム期間の間に、高速撮像時には3フレーム分の画像データD1乃至D3が、メモリ制御部180の制御によってメモリ170に順次記憶される。そして、再生時には通常の1フレーム期間に対して一つずつの画像データが、メモリ制御部180の制御によってメモリ170から読み出される。メモリ制御部180では、必要に応じて後述のような画像データの差し替えが行われ、画像補正部190への画像データS1乃至S3の供給が行われる。このようにして、順次、高速撮像を利用したスローモーション再生が実現される。
ここで、高速撮像時の画像データの中に、使用可否判定部により「使用しない」と判定された画像データがあれば、差替対象となる画像データが生成されて、その画像データに差し替えられる。以下、この差替処理の内容について説明する。
図10は、本発明の実施の形態における画像データの差替処理の第1の具体例を示す図である。この例では、各フレーム(またはフィールド)の画像データD1乃至D6のうち、D2およびD3が「使用しない」との判定を受けている。画像データの差替えにあたり、この第1の具体例では、「使用しない」と判定された画像データと時間的に近い画像データを使用すべき画像データとして選択する。
例えば、画像データD2については画像データD1およびD3が最も時間的に近い画像データであるが、画像データD3は「使用しない」との判定を受けているため、もう一方の画像データD1が画像データD2の代わりに使用される。同様に、画像データD3については画像データD2およびD4が最も時間的に近い画像データであるが、画像データD2は「使用しない」との判定を受けているため、もう一方の画像データD4が画像データD3の代わりに使用される。
図11は、本発明の実施の形態におけるメモリ制御部180の第1の具体例を示す図である。この例では、メモリ制御部180は、使用可否保持部181と、差替対象生成部182と、データ差替部183とを備えている。
使用可否保持部181は、信号線139を介して使用可否判定部130による判定結果を受けて、各画像データに対応する使用可否を保持する。例えば、図10の上部に示したように、画像データ毎にその画像データを使用するか否かを保持しておき、差替対象生成部182からの要求に応じて対応する画像データの使用可否を供給する。
差替対象生成部182は、信号線198を介して画像補正部190から供給されるフレーム(またはフィールド)番号を基準として、信号線184を介して必要なフレームの画像データの使用可否を使用可否保持部181に問い合わせる。これに応答して、使用可否保持部181から信号線185を介してそのフレームの画像データの使用可否が供給される。その結果、差替対象生成部182は、使用すべき画像データを生成して信号線186を介してデータ差替部183に供給する。
データ差替部183は、差替対象生成部182から供給された画像データを、信号線187を介してメモリ170に出力する。これにより、使用すべき画像データがメモリ170に保持される。
図12は、本発明の実施の形態におけるメモリ制御部180の第1の具体例の処理手順を示す図である。ここで、変数iは基準となるフレームの番号を示し、変数jは第iフレームからの相対的な距離を示す。また、変数kは第iフレームの画像データとして用いられるフレーム番号を表す。
まず、変数iには、初期値として「1」が設定される(ステップS911)。これにより、第1フレームの画像データD1が基準となる。この基準値である変数iは信号線198を介して画像補正部190から差替対象生成部182に供給される。使用可否保持部181において画像データDiが「使用する」とされていれば(ステップS912)、変数kに変数iが設定される(ステップS919)。すなわち、第iフレームの画像データとして第kフレームの画像データDk(=Di)がそのまま採用される(ステップS921)。
一方、使用可否保持部181において画像データDiが「使用しない」とされている場合には(ステップS912)、第iフレームに最も距離的に近い使用可能なフレームの画像データを検索する。そのために、変数jに初期値として「1」が設定される(ステップS913)。そして、変数kに「i+j」が代入されて(ステップS914)、第kフレームの画像データDkの使用可否が調べられる(ステップS915)。その結果、使用可否保持部181において画像データDkが「使用する」とされていれば、その画像データDkが第iフレームの画像データとして採用される(ステップS921)。
ステップS915において、画像データDkが「使用しない」とされていれば、変数kに「i−j」が代入されて(ステップS916)、第kフレームの画像データDkの使用可否が調べられる(ステップS915)。その結果、使用可否保持部181において画像データDkが「使用する」とされていれば、その画像データDkが第iフレームの画像データとして採用される(ステップS921)。一方、ステップS917において、画像データDkが「使用しない」とされていれば、変数jを一つ加算して(ステップS918)、ステップS914からの処理を繰り返す。
このようにして、基準となるフレームが「使用しない」とされている場合に、その基準となるフレームを中心として距離的に近いフレームから順番に「使用する」とされている画像データを調べていくことにより、基準フレームに最も距離的に近い使用可能なフレームの画像データDkが検索される。ある基準フレームの処理が終わると、変数iを一つ加算して(ステップS922)、全ての画像データDiについての処理が終了するまでステップS912からの処理を繰り返す(ステップS923)。
このように、高速撮像された画像データのうち、高精度に手振れ補正の施された画像データのみを効率よく選択して使用することで、スローモーション再生画像の手振れの影響による画質劣化の抑制を実現することができる。
図13は、本発明の実施の形態におけるメモリ制御部180の第2の具体例を示す図である。この例では、メモリ制御部180は、使用可否保持部181と、差替候補生成部1821と、差替候補選択部1822と、データ差替部183とを備えている。ここで、使用可否保持部181およびデータ差替部183については図11の第1の具体例と同様である。また、差替候補生成部1821および差替候補選択部1822は、図11の差替対象生成部182に対応する。
差替候補生成部1821は、信号線198を介して画像補正部190から供給されるフレーム番号を基準として、信号線184を介して必要なフレームの画像データの使用可否を使用可否保持部181に問い合わせる。これに応答して、使用可否保持部181から信号線185を介してそのフレームの画像データの使用可否が供給される。その結果、差替候補生成部1821は、使用すべき画像データの差替候補を生成して信号線1823を介して差替候補選択部1822に供給する。
差替候補選択部1822は、差替候補生成部1821から供給された差替候補の中から基準となる画像データに対する相関が高い画像データを、使用すべき画像データとして選択する。そして、差替候補選択部1822は、その選択された使用すべき画像データを信号線186を介してデータ差替部183に供給する。データ差替部183は、差替候補選択部1822から供給された画像データを、信号線187を介してメモリ170に出力する。これにより、使用すべき画像データがメモリ170に保持される。
図14は、本発明の実施の形態におけるメモリ制御部180の第2の具体例による差替候補生成部1821の処理手順を示す図である。この例では、基準となるフレームの画像データが「使用しない」とされている場合、それに代える差替対象の画像データの候補を2つ生成する。ここで、変数iは基準となるフレームの番号を示し、変数jは第iフレームからの相対的な距離を示す。また、変数k(0)およびk(1)は第iフレームの画像データとして用いられる2つのフレーム番号を表す。また、変数mは、変数k(0)およびk(1)の何れを参照するべきかを切替えるために使用される。
まず、変数iには、初期値として「1」が設定される(ステップS931)。これにより、第1フレームの画像データD1が基準となる。この基準値である変数iは信号線198を介して画像補正部190から差替候補生成部1821に供給される。使用可否保持部181において画像データDiが「使用する」とされていれば(ステップS932)、変数k(0)およびk(1)に変数iが設定される(ステップS945)。すなわち、第iフレームの画像データの候補として第k(0)フレームおよび第k(1)フレームの画像データが何れも基準の画像データDiとなるように設定される(ステップS946)。
一方、使用可否保持部181において画像データDiが「使用しない」とされている場合には(ステップS932)、第iフレームに最も距離的に近い使用可能なフレームの画像データを2つ検索する。そのために、変数jに初期値として「1」が設定され、変数mに初期値として「0」が設定される(ステップS933)。そして、変数k(m)に「i+j」が代入されて(ステップS934)、第k(m)フレームの画像データDi+jの使用可否が調べられる(ステップS935)。その結果、使用可否保持部181において画像データDi+jが「使用する」とされていれば、その画像データDi+jが第iフレームの画像データの候補として採用される。このとき、m=1であれば(ステップS936)、既に2つの候補が採用されたことになるため、第iフレームの画像データの候補として第k(0)フレームおよび第k(1)フレームの画像データが設定される(ステップS946)。一方、ステップS936においてm=0であれば、もう一つの候補を検索するために、変数mに「1」が設定される(ステップS937)。
その後、変数k(m)に「i−j」が代入されて(ステップS938)、第k(m)フレームの画像データDi−jの使用可否が調べられる(ステップS941)。その結果、使用可否保持部181において画像データDi−jが「使用する」とされていれば、その画像データDi−jが第iフレームの画像データの候補として採用される。このとき、m=1であれば(ステップS942)、既に2つの候補が採用されたことになるため、第iフレームの画像データの候補として第k(0)フレームおよび第k(1)フレームの画像データが設定される(ステップS946)。一方、ステップS942においてm=0であれば、もう一つの候補を検索するために、変数mに「1」が設定される(ステップS943)。その後、変数jを一つ加算して(ステップS944)、ステップS934からの処理を繰り返す。
このようにして、基準となるフレームが「使用しない」とされている場合に、その基準となるフレームを中心として距離的に近いフレームから順番に「使用する」とされている画像データを調べていくことにより、基準フレームに距離的に近い使用可能なフレームの画像データDk(0)およびDk(1)が差替候補として検索される。ある基準フレームの処理が終わると、変数iを一つ加算して(ステップS947)、全ての画像データDiについての処理が終了するまでステップS932からの処理を繰り返す(ステップS948)。
図15は、本発明の実施の形態におけるメモリ制御部180の第2の具体例で使用されるデータ構造を示す図である。ここで、画像データDXは基準となるフレームの画像データであり、画像データDAおよびDBは差替候補生成部1821により生成された差替候補の画像データである。この場合、差替候補選択部1822は、画像データDAおよびDBの何れかを画像データDXの代わりに使用すべく選択を行う。
各画像データには、画像データ間の共通する位置に差分データ算出のための対象領域が設定される。すなわち、画像データDXには対象領域AX1乃至AX5が、画像データDAには対象領域AA1乃至AA5が、画像データDBには対象領域AB1乃至AB5が、それぞれ設けられる。この対象領域は、画像データ間で共通する位置であれば任意の領域を設定することができる。例えば、AA1、AX1、AB1のそれぞれは互いに共通する位置に設定されている。但し、画像の中心部は重要な画像が含まれる可能性が高いため必ず対象領域を設定することが望ましい。また、本例では手ぶれやレンズの光学的歪等の影響を受け易く差分データの誤差が大きくなりやすい周部の領域を多く設定している。
各対象領域内に含まれる画素は、それぞれPA1乃至PA5、PX1乃至PX5、PB1乃至PB5、のように表される。同一画像データ内の各対象領域の大きさは互いに異なっていてもよいため、それらに含まれる画素数は互いに異なっている可能性がある。例えば、周辺部のAA1よりも中心部のAA3を大きく設定することができ、その場合両者に含まれる画素数は互いに異なるものとなる。但し、画像データ間では対応する対象領域の大きさは等しくなければならない。例えば、AA1とAX1は互いに位置および大きさが等しくなければならない。なお、ここにいう画素の値としては、例えばYUVのY値(輝度信号)を想定することができるが、必ずしもこれに限られるものではない。
図16は、本発明の実施の形態におけるメモリ制御部180の第2の具体例による差替候補選択部1822の処理手順を示す図である。この例では、差替候補生成部1821により生成された差替候補の画像データDAおよびDBの何れか一方を差替対象として選択する。変数Sは、基準フレームの画像データDXを基準とした差分データを画素数分累積した相関値を保持するための変数である。変数Zは、変数Sによる相関値の平均の積分値を保持するための変数である。また、変数kは、各対象領域内の画素数を計数する変数である。また、変数jは、各対象領域を計数する変数である。
まず、変数Zには初期値として「0」が設定され、変数jには初期値として「1」が設定される(ステップS951)。また、変数Sには初期値として「0」が設定され、変数kには初期値として「1」が設定される(ステップS952)。
そして、基準フレームの画像データDXにおける画素PXkと差替候補の画像データDAにおける画素PAkとの差分データの絶対値から、基準フレームの画像データDXにおける画素PXkと差替候補の画像データDBにおける画素PBkとの差分データの絶対値を減じたものを変数Sに加算していく(ステップS953)。変数kに1を加算して(ステップS954)、この変数kが対象領域内の画素数Mを超えるまでステップS953からの処理を繰り返す(ステップS955)。なお、この例では、説明の簡単のために各対象領域内の画素数を同一の数Mで表現しているが、上述のように各対象領域毎に異なる画素数を設定するようにしてもよい。
このようにしてステップS953からS955の処理で画素間の相関が算出されると、その平均の積分値が変数Zに加算される(ステップS956)。すなわち、相関値を保持する変数Sの値を画素数Mで除算し、重みWjを乗算したものを変数Zに加算する。変数jに1を加算して(ステップS957)、この変数jが対象領域内の対象領域数Nを超えるまでステップS952からの処理を繰り返す(ステップS958)。
このようにしてステップS956からS958の処理で画素間の相関平均値の積分が算出されると、その積分値を保持する変数Zの値に応じて、差替候補の画像データDAおよびDBのうち相関が高い方を差替対象として選択する(ステップS961)。すなわち、変数Zが「0」より小さければ画像データDAを採用し(ステップS962)、変数Zが「0」以上であれば画像データDBを採用する(ステップS963)。
このように、高速撮像された画像データのうち、手振れによる画質劣化の影響が大きい画像データに代えて、高精度に手振れ補正が施され、かつ、本来使用すべきであった画像と相関の高い画像データから再生画像を生成でき、スローモーション再生画像の手振れの影響による画質劣化の抑制を実現することができる。
図17は、本発明の実施の形態におけるメモリ制御部180の第3の具体例を示す図である。この例では、メモリ制御部180は、使用可否保持部181と、差替候補生成部1821と、差替対象補間部1824と、データ差替部183とを備えている。ここで、使用可否保持部181、差替候補生成部1821およびデータ差替部183については図13の第2の具体例と同様である。また、差替候補生成部1821および差替対象補間部1824は、図11の差替対象生成部182に対応する。
差替対象補間部1824は、差替候補生成部1821から供給された差替候補に基づいて使用すべき画像データを補間する。そして、差替対象補間部1824は、その補間された使用すべき画像データを信号線186を介してデータ差替部183に供給する。データ差替部183は、差替候補選択部1822から供給された画像データを、信号線187を介してメモリ170に出力する。これにより、使用すべき画像データがメモリ170に保持される。
図18は、本発明の実施の形態におけるメモリ制御部180の第3の具体例による補間処理を示す図である。ここでは、例えば、画像データD2が「使用しない」と判定された際、差替候補として画像データD1およびD4が生成されたものとする。
まず、図18(a)のように画像データD1からD4に対する動きベクトル514が検出される。そして、これに続いて図18(b)のように動きベクトル514上の画像データD2に相当する位置が算出され、図18(c)のように画像データD1からD2に対する動きベクトル512が算出される。これにより、画像データD2に差し替えられるべき画像データが生成される。
図19は、本発明の実施の形態におけるメモリ制御部180の第3の具体例による差替対象補間部1824の処理手順を示す図である。ここでは、画像データDXに代えて、差替候補の画像データDAおよびDBから画像データDXに差し替えられるべき画像データを補間するものとしている。
まず、画像データDAとDBとの間の動きベクトルを検出する(ステップS971)。そして、この動きベクトル上で画像データDXに相当する位置を算出し、画像データDAから画像データDXに対する動きベクトルを補間ベクトルとして生成する(ステップS972)。その後、画像データDAと補間ベクトルとから画像データDXに差し替えられるべき画像データが生成される(ステップS973)。
このように、高速撮像された画像データのうち、手振れによる画質劣化の影響が大きい画像データに代えて、排除すべき画像データの前後の画像データから補間して生成した画像データを使用することで、より自然な再生画像を生成することができ、スローモーション再生画像の手振れの影響による画質劣化の抑制を実現することができる。
次に本発明の実施の形態における画像処理装置100の全体の動作について図面を参照して説明する。
図20は、本発明の実施の形態における画像処理装置100の画像データ差替処理の手順を示す図である。まず、検出された手振れによる振動量をライン毎に補間し、これに基づいて補正量を算出する(ステップS901)。そして、この補正量に基づいて算出された値が所定の閾値を超えた場合には対応する画像データを使用しないと判定する(ステップS902)。この使用可否判定については、図5の例のように画像データ領域に対する不足量から判定するようにしてもよく、また、図7の例のように補正量の代表値から判定するようにしてもよい。
使用可否の判定がされた結果、「使用しない」と判定されたフレームの画像データについて差替処理を行う。そのために、まず変数iに初期値として「1」を設定する(ステップS903)。そして、第iフレームの画像データが「使用する」と判定されていれば(ステップS904)、その第iフレームの画像データをそのまま使用する(ステップS905)。
一方、ステップS904において、第iフレームの画像データが「使用しない」と判定されていれば、その第iフレームの画像データに代えて差し替えるべき差替対象を生成する(ステップS906)。この差替対象の生成には、図12の例のように「使用しない」と判定された画像データと時間的に近い画像データを差替対象として選択してもよく、図16の例のように「使用しない」と判定された画像データと相関の高い画像データを差替対象として選択してもよく、また、図19の例のように「使用しない」と判定された画像データと時間的に前後する他の画像データから補間した画像データを差替対象として生成してもよい。そして、このようにして生成された差替対象を第iフレームの画像データとして使用する(ステップS907)。
そして、変数iを1つ加算した上で(ステップS908)、全てのフレームの画像データについて処理が終了するまでステップS904からの処理を繰り返す(ステップS909)。
上述の画像データ差替処理は、それぞれの機能を有するハードウェアにより実行させることもできるが、ソフトウェアにより実行させることもできる。一連の処理をソフトウェアにより実行させる場合には、そのソフトウェアを構成するプログラムが専用のハードウェアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどに、記録媒体からインストールされる。
記録媒体について説明するために、簡単に、記録媒体を扱うパーソナルコンピュータについて説明する。図21は、汎用のパーソナルコンピュータの内部構成例を示す図である。パーソナルコンピュータのCPU(Central Processing Unit)201は、ROM(Read Only Memory)202に記憶されているプログラムに従って各種の処理を実行する。RAM(Random Access Memory)203には、CPU201が各種の処理を実行する上において必要なデータやプログラムなどが適宜記憶される。入出力インターフェース205は、キーボードやマウスから構成される入力部206が接続され、入力部206に入力された信号をCPU201に出力する。また、入出力インターフェース205には、ディスプレイやスピーカなどから構成される出力部207も接続されている。
さらに、入出力インターフェース205には、ハードディスクなどから構成される記憶部208、および、インターネットなどのネットワークを介して他の装置とデータの授受を行う通信部209も接続されている。ドライブ210は、磁気ディスク、光ディスク、光磁気ディスクなどの各種ディスク221や、半導体メモリ224などの記録媒体からデータを読み出したり、データを書き込んだりするときに用いられる。
記録媒体は、図21に示すように、パーソナルコンピュータとは別に、ユーザにプログラムを提供するために配布される、プログラムが記録されている磁気ディスク(フレキシブルディスクを含む)、光ディスク(CD−ROM(Compact Disc-Read Only Memory)やDVD(Digital Versatile Disc)を含む)、光磁気ディスク(MD(Mini-Disc)(登録商標)を含む)、若しくは半導体メモリ224などよりなるパッケージメディアにより構成されるだけでなく、コンピュータに予め組み込まれた状態でユーザに提供される、プログラムが記憶されているROM202や記憶部208が含まれるハードディスクなどで構成される。
なお、本明細書において、媒体により提供されるプログラムを記述するステップは、記載された順序に従って、時系列的に行われる処理は勿論、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
このように、本発明の実施の形態によれば、使用可否判定部130において各フレームの画像データの使用可否を判定し、「使用しない」と判定されたフレームの画像データについてメモリ制御部180において差替処理を行うことにより、再生時の画像が不自然にならないようにすることができる。
なお、本発明の実施の形態は本発明を具現化するための一例を示したものであり、以下に示すように特許請求の範囲における発明特定事項とそれぞれ対応関係を有するが、これに限定されるものではなく本発明の要旨を逸脱しない範囲において種々の変形を施すことができる。
すなわち、請求項1において、撮像手段は例えば撮像素子162に対応する。また、画像保持手段は例えばメモリ170に対応する。また、振動検出手段は例えば手振れ検出部110に対応する。また、補正量算出手段は例えば手振れ補正量算出部120に対応する。また、使用可否判定手段は例えば使用可否判定部130に対応する。また、差替対象生成手段は例えば差替対象生成部182に対応する。また、画像データ差替手段は例えばデータ差替部183に対応する。
また、請求項5において、領域保持手段は例えば領域範囲保持部1321に対応する。また、不足量算出手段は例えば不足量算出部1311に対応する。また、範囲限界閾値保持手段は例えば範囲限界閾値保持部1322に対応する。また、範囲限界閾値検出手段は例えば比較器1312に対応する。また、判定手段は例えば信号線139に対応する。
また、請求項6において、領域保持手段は例えば領域範囲保持部1321に対応する。また、不足量算出手段は例えば不足量算出部1311に対応する。また、範囲予備閾値保持手段は例えば範囲予備閾値保持部1323に対応する。また、範囲予備閾値検出手段は例えば比較器1313に対応する。また、計数手段は例えばライン数カウンタ1314に対応する。また、ライン数閾値保持手段は例えばライン数閾値保持部1325に対応する。また、ライン数閾値検出手段は例えば比較器1315に対応する。また、判定手段は例えば信号線139に対応する。
また、請求項7において、領域保持手段は例えば領域範囲保持部1321に対応する。また、不足量算出手段は例えば不足量算出部1311に対応する。また、範囲限界閾値保持手段は例えば範囲限界閾値保持部1322に対応する。また、範囲限界閾値検出手段は例えば比較器1312に対応する。また、範囲予備閾値保持手段は例えば範囲予備閾値保持部1323に対応する。また、範囲予備閾値検出手段は例えば比較器1313に対応する。また、計数手段は例えばライン数カウンタ1314に対応する。また、ライン数閾値保持手段は例えばライン数閾値保持部1325に対応する。また、ライン数閾値検出手段は例えば比較器1315に対応する。また、判定手段は例えば論理和回路1316に対応する。
また、請求項8において、代表値算出手段は例えば代表値算出部1351に対応する。また、絶対値算出手段は例えば絶対値算出部1352に対応する。また、代表値閾値保持手段は例えば代表値閾値保持部1363に対応する。また、代表値閾値検出手段は例えば比較器1353に対応する。また、判定手段は例えば信号線139に対応する。
また、請求項9において、代表値算出手段は例えば代表値算出部1351に対応する。また、第1の絶対値算出手段は例えば絶対値算出部1352に対応する。また、代表値閾値保持手段は例えば代表値閾値保持部1363に対応する。また、代表値閾値検出手段は例えば比較器1353に対応する。また、変化量算出手段は例えば遅延部1364および減算器1354に対応する。また、第2の絶対値算出手段は例えば絶対値算出部1355に対応する。また、変化量閾値保持手段は例えば変化量閾値保持部1366に対応する。また、変化量閾値検出手段は例えば比較器1356に対応する。また、判定手段は例えば論理和回路1357、切替器1358および遅延部1368に対応する。
また、請求項13および14において、振動による撮像手段への影響を打ち消すための補正量を振動量に基づいて算出する手順は例えばステップS901に対応する。また、補正量に基づいて算出された値が所定の閾値を超えた場合には対応する画像データを使用しないと判定する手順は例えばステップS902に対応する。また、使用しないと判定された画像データの代わりに使用すべき画像データを画像保持手段に保持された画像データから生成する手順は例えばステップS906に対応する。また、使用しないと判定された画像データに代えて生成された画像データに差替えて画像データを出力する手順は例えばステップS907に対応する。
なお、本発明の実施の形態において説明した処理手順は、これら一連の手順を有する方法として捉えてもよく、また、これら一連の手順をコンピュータに実行させるためのプログラム乃至そのプログラムを記憶する記録媒体として捉えてもよい。