発明の目的および利点は、請求の範囲に具体的に記載された構成要素および組み合わせによって実現され達成される。
前述の一般的な説明および以下の詳細な説明は、典型例および説明のためのものであって、本発明を限定するためのものではない、と理解される。
通常のディジタル・カメラには、シャッタ・ボタンの1回の操作で比較的高い画質の一連のフレーム画像を連続的に生成するのに充分な大きさの光学系およびイメージ・センサを含むものがある。この場合、各フレーム画像は、それぞれの露光時間が短くても、光学系およびイメージ・センサが充分大きいので、比較的画質が高い。そのようなディジタル・カメラの手振れ補正では、そのような複数のフレーム画像について、相互間での画像の動きまたは位置移動の方向および距離が決定され、その方向および距離に応じて複数のフレーム画像が位置合わせされて合成されて、補正された1つのフレーム画像が生成される。その方向および距離は、例えば、各フレーム画像間の分割領域の画素値の相関性に基づいて動きベクトルとして検出されてもよい。
一方、携帯電話機、スマートフォンまたはタブレット型の情報端末のような情報処理装置は、小型のカメラ・モジュールを含んでいることがある。そのような情報処理装置では、充分な画質が得られるように各フレーム画像の露光時間が比較的長くされ、その結果として、例えばシャッタ・ボタンを押した瞬間の所望のタイミングで撮影されたフレーム画像に、手振れによる画像のぼやけが生じることがある。そのような小型のカメラ・モジュールでは、例えばレンズを含む光学系およびイメージ・センサの寸法が小さく、各フレーム画像の間隔および露光時間を短くすると、複数のフレーム画像を位置合わせして合成する形態の手振れ補正を行うには不充分な画質のフレーム画像しか得られないことがある。そのような情報処理装置では、例えばシャッタ・ボタンを押した瞬間の手振れの影響を回避するために、シャッタ・ボタンを押したタイミングから僅かに時間遅延したタイミングで撮影されたフレーム画像を捕捉して保存することもできるであろう。しかし、所望のタイミングから時間遅延して撮影されたフレーム画像は、所望のタイミングでのフレーム画像と幾分か異なり、望ましい画像でないことがある。
発明者たちは、所望のタイミングのフレーム画像に手振れの影響があった場合、そのフレーム画像を手振れの影響の少ない別のタイミングのフレーム画像を用いて補正または補償すれば、手振れの影響の少ない所望のタイミングのフレーム画像を生成することができる、と認識した。
従って、実施形態の目的は、手振れの影響がより少なくなる形態で補正された所望のタイミングのフレーム画像を得ることができるようにすることである。
図1Aは、実施形態による、撮像機能を含む情報処理装置30の概略的な構成(configuration)の例を示している。
情報処理装置30は、例えば、携帯電話機、スマートフォン、タブレット型のパーソナル・コンピュータ、ノートブック型のパーソナル・コンピュータのようなモバイル型の情報処理装置または情報処理端末であってもよい。情報処理装置30は、内部バス35に結合された、プロセッサ322、記憶部324、外部記憶部334、カメラ部またはカメラ・モジュール338、およびジャイロ・センサ部または手振れ検出部340を含んでいる。カメラ部またはカメラ・モジュール338は、例えば、撮像用のCCD/CMOSセンサと、レンズ等の光学系とを含んでいてもよい。情報処理装置30は、さらに、入力部342、表示部344および音響部346を含んでいる。情報処理装置30は、さらに、移動体通信部326、無線LAN通信部328、ネットワーク・インタフェース(NW I/F)330、およびUSB通信部332を含んでいてもよい。
プロセッサ322は、コンピュータ用のCPU(Central Processing Unit)であってもよい。記憶部324には、例えば、主記憶装置および半導体メモリ等が含まれる。USB通信部332は、外付けドライブ336に接続可能である。ドライブ336は、プログラムが記録された例えば光ディスクまたは磁気ディスクのような記録媒体364を読み取るためのものであってもよい。入力部342は、例えばキーボード、マウスまたはタッチパッドのようなポインティング・デバイス、およびタッチパネルを含んでいてもよい。外部記憶部334には、例えば、ハードディスク・ドライブ(HDD)および/またはフラッシュメモリ・ドライブ(SSD:Solid State Drive)等が含まれる。
プロセッサ322は、画像処理機能を含む例えば集積回路として実装された専用のプロセッサであってもよい。また、プロセッサ322は、記憶部324に格納された画像処理機能を有するアプリケーション・プログラムに従って動作するものであってもよい。アプリケーション・プログラムは、記録媒体364に格納されていて、ドライブ336によって記録媒体364から読み出されて情報処理装置30にインストールされてもよい。
ジャイロ・センサ部または手振れ検出部340は、例えば、角速度を検出し、さらに角速度の積分によって角度を検出する振動型のジャイロ・センサであってもよい。
図1Bは、情報処理装置30におけるカメラ部338の配置の例を示している。
図1Bに示されているように、情報処理装置30において、カメラ部338は、例えばその筐体の外側の主要面の上部における任意の横方向の位置または左もしくは右の側部における任意の高さの位置に配置されていてもよい。
図2は、情報処理装置30のプロセッサ322の概略的な構成(configuration)の例を示している。
プロセッサ322は、例えば、制御部3220、アプリケーション部3222、データ保存部3224、画像選択部3226、画像補正部3228、およびその他の処理部3238を含んでいてもよい。画像補正部3228は、位置ずれ計算部3229、画素位置合せ部3230、および画素補正部3232を含んでいてもよい。制御部3220は、アプリケーション部3222、データ保存部3224、画像選択部3226、画像補正部3228および処理部3238に制御信号を供給して、これらの要素の動作を制御してもよい。
データ保存部3224は、カメラ部338で連続的に撮影または捕捉された時系列の一連のフレーム画像を捕捉して、その一連のフレーム画像を記憶部324中のバッファ・メモリ部に一時的に保存する。それと並行して、データ保存部3224は、一連のフレーム画像の撮影または捕捉のタイミングで、ジャイロ・センサ部340で検出された検出値を捕捉して、その検出値を各フレーム画像に対応づけて記憶部324中のバッファ・メモリ部に一時的に保存する。その検出値は、例えば、角度および/または角速度であってもよい。
画像選択部3226は、記憶部324中のバッファ・メモリ部に保存された一連のフレーム画像の中から、例えばユーザのシャッタ・ボタン操作のような撮影操作のタイミングに最も近い所望のタイミングのフレーム画像を選択する。但し、所望のタイミングのフレーム画像は、これに限定されることなく、撮影操作のタイミングより前または後の任意のタイミングのフレーム画像であってもよい。シャッタ・ボタンとして、入力部342の複数のキーまたはボタンの中の任意のキーまたはボタンが用いられてもよい。また、画像選択部3226は、記憶部324中のバッファ・メモリ部に保存された一連のフレーム画像の中から、最も小さい手振れを表すジャイロ・センサ部340の検出値に対応する補正用のフレーム画像を選択する。
画像補正部3228の位置ずれ計算部3229は、所望のタイミングのフレーム画像に対応するその検出値に基づいて、そのフレーム画像における、露光時間期間T中の手振れによる2次元移動量(Sx,Sy)または画像の移動方向(Sφ)および移動距離(SL)を求める。位置ずれ計算部3229は、さらに、所望のタイミングのフレーム画像において、或る画素からその2次元移動量だけ離れた位置にある別の画素までの画像領域を求める。そのような画像領域は、手振れの影響を受けている可能性がある画素または画素値を含んでいる。
位置ずれ計算部3229は、さらに、その画像領域の画素の画素値または諧調が、許容誤差の範囲で概して直線的な勾配Gを有するかどうかを判定する。そのような画像領域の画素の画素値または諧調が、許容誤差の範囲で直線的な概して勾配Gを有する場合、その画像領域は、手振れの影響を受けている傾向がある。
位置ずれ計算部3229は、さらに、所望のタイミングのフレーム画像とその補正用のフレーム画像との間の画像の移動量または位置ずれ量を求める。その移動量または位置ずれ量は、所望のタイミングのフレーム画像とその補正用のフレーム画像の間における、ジャイロ・センサ部340の検出値に基づいて求められた2次元の移動量(Sx,Sy)または移動方向(Sφ)および移動距離(SL)であってもよい。代替形態として、その移動量または位置ずれ量は、所望のタイミングのフレーム画像と補正用のフレーム画像の間での分割領域の画素値マッチングによる動きベクトルによって表されても、またはその動きベクトルとの組み合わせで決定されてもよい。但し、ジャイロ・センサ部340の検出値に基づいて2次元の移動量または移動方向および移動距離を求めるための処理負荷は、フレーム画像間の分割領域の画素値に基づいて動きベクトルを求める処理負荷よりも概して小さいであろう。
画像補正部3228の画素位置合せ部3230は、所望のタイミングのフレーム画像の上述の画像領域に対応する、補正用のフレーム画像における画像領域の画素位置を求める。補正用のフレーム画像におけるその画像領域は、補正用のフレーム画像において、所望のタイミングのフレーム画像における画像領域の画素位置を移動量(Sx,Sy)または移動方向(Sφ)および移動距離(SL)だけ移動させた画素位置にあるものとしてもよい。
画像補正部3228の画素補正部3232は、所望のタイミングのフレーム画像における画像領域の画素を、補正用のフレーム画像における対応する画像領域の画素の画素値で補正または補償する。そのために、画素補正部3232は、所望のタイミングのフレーム画像における画像領域の画素値Paを、補正用のフレーム画像における対応する画像領域の画素値Pbで置き換えてもよい。そのような置換を行うことによって、低い処理負荷でまたは短い時間で、補正されたフレーム画像を生成することができる。
代替形態として、画素補正部3232は、所望のタイミングのフレーム画像における画像領域の画素値Paと、補正用のフレーム画像における対応する画像領域の画素値Pbとを或る重み付けで加算して合成し、所望のタイミングのフレーム画像における画像領域の画素値Paをその合成された画素値Pcで置換してもよい。その重み付けは、所望のタイミングのフレーム画像の画素値(α)と補正用のフレーム画像の画素値(β)の重み付けが、例えばα:β=1:4であってもよい(Pc=(1Pa+4Pb)/5)。そのような重み付け加算を行うことによって、所望のタイミングのフレーム画像と補正用のフレーム画像の画像合成の不自然さを緩和することができる。
図3A〜3Cは、ジャイロ・センサ部340によって検出される、3次元軸(X,Y,Z)に対する情報処理装置30またはそのジャイロ・センサ部340のヨー、ロールおよびピッチの回転角度(θy,θr,θp)の3次元的な位置関係の例を示している。ここで、カメラ部338によって撮像される長方形状の画像の水平方向Xおよび垂直方向Yは、情報処理装置30の水平方向Xおよび垂直方向Yに対応するものとする。
ジャイロ・センサ部340は、画像の撮影または捕捉のタイミングにおいて、回転角速度(ωy,ωr,ωp)と、ヨー、ロールおよびピッチの回転角度(θy,θr,θp)とを検出値として検出して、その検出値をデータ保存部3224に供給する。
図3A〜3Cにおいて、情報処理装置30は、例えば、それぞれ垂直軸Yおよび水平軸Xの方向に、情報処理装置30の主要面の高さHおよび幅Wを有し、水平軸Xおよび垂直軸Yと直交する水平軸Zの方向に、情報処理装置30の厚さまたは奥行きTを有する。ここで、情報処理装置30は、図3A〜3Cの配置で、3軸Y、ZおよびXをそれぞれ回転軸とするヨー、ロールおよびピッチの回転の基準角度(θy,θr,θp)=(0°,0°,0°)を有するものとしてもよい。但し、情報処理装置30の3軸Y、Z、Xの方向および回転の基準角度は、これに限定されることなく、図3A〜3Cとは異なる方向および角度であってもよい。情報処理装置30のカメラ部338のイメージ・センサの受光面は、図3A〜3Cの情報処理装置30の主要面と同様のヨー、ロールおよびピッチの3次元的な位置関係を有するものとして近似することができる。
従って、ジャイロ・センサ部340で検出された回転角度(θy,θr,θp)およびその角速度ωy、ωr、ωpに基づいて、カメラ部338によって撮影された各フレーム画像における手振れによる画像のズレ量またはズレを表すベクトル(Vx,Vy)を求めることができる。そのズレ量またはベクトルは、回転の角度(θy,θr,θp)および角速度(ωy,ωr,ωp)に基づいて、様々な方法で求めることができ、そのいずれを用いても、または複数の方法を組み合わせて用いてもよい。その組合せ方として、例えば、複数の方法で求められたズレ量の平均値または加重平均を用いてもよい。
カメラ部338の撮像用のイメージ・センサにおいて露光時間期間Tに捕捉された1つのフレーム画像P_TAの各画素の値は、露光開始時点tasからその後の露光終了時点taeまでの露光時間期間Tにおけるそれぞれの画素位置での受光量分の電荷の累積値に対応する。複数のフレーム画像が連続的に生成される場合、露光終了時点taeは、フレーム画像P_TAに続く次のフレーム画像P_TA+1の露光開始時点tbsと実質的に同じと仮定してもよい。また、フレーム画像P_TAの露光開始時点tasのタイミングにおいて、ジャイロ・センサ部340によって、回転角度(θya,θra,θpa)および角速度(ωya,ωra,ωpa)が検出されたとする。この場合、バッファ・メモリに保存されるジャイロ・センサ部340の検出値は、各フレーム画像について1組とすることができる。同様に、次のフレーム画像P_TA+1の露光開始時点tbsにおいて、ジャイロ・センサ部340によって、回転角度(θyb,θrb,θpb)および角速度(ωyb,ωrb,ωpb)が検出されたとする。代替形態として、角速度(ωya,ωra,ωpa)は、回転角度(θya,θra,θpa)と次の回転角度(θyb,θrb,θpb)の間の単位時間当りの角度差として求められてもよい((θyb−θya)/T,(θrb−θra)/T,(θpb−θpa)/T)。ここで、フレーム画像は、水平方向に2L個の画素を有し、水平方向の画素数の2分の1がL個であるとする。
この場合、フレーム画像P_TAにおける露光開始時点tasから露光終了時点tae=tbsまでの期間における、手振れによるX軸およびY軸方向のズレ量または移動量(Sx,Sy)は、例えば、角度(θya,θra,θpa)と(θyb,θrb,θpb)に基づいて次の式で表される。
x方向のズレ量:Sx=L×cos(Δθy)+L×cos(Δθr)
y方向のズレ量:Sy=L×cos(Δθp)+L×cos(Δθr)
ここで、Δθy=θyb−θya、Δθr=θrb−θra、Δθp=θpb−θpaである。
一方、手振れによるズレの速度vは角速度(ωya,ωra,ωpa)と回転半径(L)の距離の積(ω×L)で表される。従って、変位またはズレ量は、速度vの積分値で表されてもよい。ここで、前のフレーム画像の露光開始時点から露光開始時点tasまでの区間で、速度va(ωya・L,ωra・L,ωpa・L)を積分して、露光開始時点tasでの積分値(Xa、Ya)が得られるもの仮定する。また、露光開始時点tasから露光終了時点tae=tbsまでの区間で、速度vb(ωyb・L,ωrb・L,ωpb・L)を積分してこれを積分値(Xa,Ya)に加算して、露光終了時点tae=tbsでの積分値(Xb,Yb)とが得られるものと仮定する。この場合、フレーム画像P_TAの露光開始時点tasから露光終了時点tae=tbsまでの手振れによるズレ量または移動量(Sx,Sy)は、例えば、次の式で表されてもよい。
x方向のズレ量:Sx=Xb−Xa
y方向のズレ量:Sy=Yb−Ya
フレーム画像P_TAにおけるXおよびY方向のズレ量(Sx,Sy)は、これらの方法に限定されることなく、その他の方法で求められてもよい。このようにして、いずれかの方法で、フレーム画像P_TAにおけるXおよびY方向の手振れによるズレ量が求められる。そのズレ量は、例えばベクトルVA(Vx,Vy)で表されてもよい。
上述したように、複数の画像が連続的に生成される場合、露光終了時点taeは、フレーム画像P_TAに続く次のフレーム画像P_TA+1の露光開始時点tbsと一致するものと仮定してもよい。従って、代替形態として、フレーム画像P_TAの露光終了時点taeのタイミングにおいて、ジャイロ・センサ部340によって、回転角度(θya,θra,θpa)および角速度(ωya,ωra,ωpa)が得られるものとしてもよい。
一方、露光時間期間Tの露光終了時点taeと次の露光開始時点tbsの間の時間差が無視できない場合もある。この場合、露光時間期間Tでの修正したズレ量(S’x,S’y)が、上述のズレ量(Sx,Sy)に、露光開始時点tasとtbsの間の時間Tsに対する露光時間期間Tの比を乗じることによって求められてもよい。この場合、修正したズレ量(S’x,S’y)は、例えば、上述のスレ量(Sx,Sy)を用いて、次の式で求められる。
(S’x,S’y)=(Sx・T/Ts,Sy・T/Ts)
図4Aは、手振れを伴う1つのフレーム画像P_TAにおける、露光開始時点tasでの、X−Y平面上の或る方向(横軸)の複数の画素の画素値PL_Hのレベルの例を示している。図4Bは、そのフレーム画像P_TAにおける、露光終了時点tae=tbsでの図4Aと同じ複数の画素の画素値PL_Hのレベルの例を示している。図4Cは、そのフレーム画像P_TAにおける、露光開始時点tasから露光終了時点tae=tbsまでの間の時間期間における、図4Aと同じ複数の画素の画素値PL_Hのレベルの例を示している。
図4Aおよび4Bの画素値のレベルは、露光開始時点tasと終了時点tae=tbsにおけるそれぞれの瞬間的なレベルを表している。一方、図4Cの画素値のレベルは、例えば、露光時間期間Tにおける映像を表す受光量分の電荷の累積値または積分値のレベルを表している。但し、図4A〜4Cの縦軸は、複数の画素の画素値のレベルの相対的な高低関係を説明するために示されているに過ぎず、具体的な値を示すものではない。ここで、画素値PL_Hは、例えば、輝度階調または白黒(モノクローム)濃度階調に対応するものであっても、または例えば緑(G)のような任意の色の階調に対応するものであってもよい。その階調数は、例えば、512または256であってもよい。
図4Aにおいて、露光開始時点tasでは、横軸の正方向に画像の画素値のレベルが位置aにおいて急峻な立上りを示している。図4Bにおいて、その後の露光終了時点tae=tbsでは、画像の位置が横軸の正方向にずれて、画像の画素値のレベルが位置bにおいて急峻な立上りを示している。この立上り位置の移動は、手振れによってフレーム画像P_TAにおいて位置aから位置bまでの移動方向と移動距離だけ画像が移動したことを表す。一方、図4Cにおいて、破線で示されたフレーム画像P_TAの位置aから位置bまでの範囲の画素の画素値は、実線で示されているように、横軸の正方向の位置aと位置bの間で概して直線的に上昇する正の勾配または傾斜を有する。フレーム画像P_TAにおいて、そのような画素値の勾配を有する部分は、特に手振れによって生じた画像のぼやけとして観察者に強く知覚される傾向がある。
フレーム画像P_TAにおける位置aから位置bまでの画像領域における画像のぼやけは、その画像領域の画素の画素値を、別のフレーム画像P_TBにおけるそれに対応する画像領域の画素の画素値で補正しまたは置換することによって、補正または補償することができる。
フレーム画像P_TAにおける位置aから位置bまでの画像領域と、それに対応するフレーム画像P_TBにおける画像領域との位置関係は、ジャイロ・センサ部340で検出されたフレーム画像P_TAからフレーム画像P_TBまでの検出値の累積的な変化量に基づいて求めることができる。そのために、その検出値に基づいて、フレーム画像P_TAからフレーム画像P_TBまでの間の画像の2次元移動量または移動方向および移動距離が求められ、その2次元移動量に基づいて、フレーム画像P_TAにおけるその画像領域と、フレーム画像P_TBにおける対応の画像領域との間の画素の位置関係が求められる。その検出値は、例えば、フレーム画像P_TAとP_TBの角度θAとθB、およびフレーム画像P_TAからフレーム画像P_TBまでの複数の角速度ωA、...ωBであってもよい。
代替形態として、フレーム画像P_TAの画像領域とP_TBの対応の画像領域との間の画素位置の対応関係は、分割領域のマッチングによる動きベクトルによって求められてもよい。あるいは、その対応関係は、さらに、角度θAとθBおよび角速度ωA、...ωBを組み合わせて用いて求められてもよい。
図4Dは、図4Cにおける概して直線的に上昇する正の勾配を有する画素値を含む画像領域を、別のフレーム画像P_TBにおける対応する画像領域の高いレベルの画素値で置換した場合の画素値PL_Hのレベルの例を示している。
図4Dのフレーム画像P_TCでは、横軸の正方向に画像の画素値のレベルが位置aにおいて急峻な立上りを示すように補正されている。
図4Eは、図4Cにおける概して直線的に上昇する正の勾配を有する画素値を含む画像領域を、別のフレーム画像P_TBにおける対応する画像領域の低いレベルの画素値で置換した場合の画素値PL_Hのレベルの例を示している。
図4Eのフレーム画像P_TCでは、横軸の正方向に画像の画素値のレベルが位置bにおいて急峻な立上りを示すように補正されている。
図5Aは、手振れを伴う1つのフレーム画像P_TAにおける、露光開始時点tasでの、X−Y平面上の或る方向(横軸)の複数の画素の画素値PL_Hのレベルの例を示している。図5Bは、そのフレーム画像P_TAにおける、露光終了時点tae=tbsでの図5Aと同じ複数の画素の画素値PL_Hのレベルの例を示している。図5Cは、そのフレーム画像P_TAにおける、露光開始時点tasから露光終了時点tae=tbsまでの間の時間期間における、図5Aと同じ複数の画素の画素値PL_Hのレベルの例を示している。
図5Aおよび5Bの画素値のレベルは、露光開始時点tasと終了時点tae=tbsにおけるそれぞれの瞬間的なレベルを表している。一方、図5Cの画素値のレベルは、例えば、露光時間期間Tにおける映像を表す受光量分の電荷の累積値または積分値のレベルを表している。但し、図5A〜5Cの縦軸は、複数の画素の画素値のレベルの相対的な高低関係を説明するために示されているに過ぎず、具体的な値を示すものではない。
図5Aにおいて、露光開始時点tasでは、横軸の正方向に画像の画素値のレベルが位置aにおいて急峻な立下りを示している。図5Bにおいて、その後の露光終了時点tae=tbsでは、画像の位置が横軸の正方向にずれて、画像の画素値のレベルが位置bにおいて急峻な立下りを示している。この立下り位置の移動は、手振れによってフレーム画像P_TAにおいて位置aから位置bまでの移動方向と移動距離だけ画像が移動したことを表す。一方、図5Cにおいて、破線で示されたフレーム画像P_TAの位置aから位置bまでの範囲の画素の画素値は、実線で示されているように、横軸の正方向の位置aと位置bの間で概して直線的に下降する負の勾配または傾斜を有する。フレーム画像P_TAにおいて、そのような画素値の勾配を有する部分は、特に手振れによって生じた画像のぼやけとして観察者に強く知覚される傾向がある。
フレーム画像P_TAにおける位置aから位置bまでの画像領域における画像のぼやけは、その画像領域の画素の画素値を、別のフレーム画像P_TBにおけるそれに対応する画像領域の画素の画素値で補正しまたは置換することによって、補正または補償することができる。その補正は、図5Dおよび5Eについて説明したのと同様の形態で行われてもよい。
図5Dは、図5Cにおける概して直線的に下降する負の勾配を有する画素値を含む画像領域を、別のフレーム画像P_TBにおける対応する画像領域の低いレベルの画素値で置換した場合の画素値PL_Hのレベルの例を示している。
図5Dのフレーム画像P_TCでは、横軸の正方向に画像の画素値のレベルが位置aにおいて急峻な立下りを示すように補正されている。
図5Eは、図5Cにおける概して直線的に下降する負の勾配を有する画素値を含む画像領域を、別のフレーム画像P_TBにおける対応する画像領域の高いレベルの画素値で置換した場合の画素値PL_Hのレベルの例を示している。
図5Eのフレーム画像P_TCでは、横軸の正方向に画像の画素値のレベルが位置bにおいて急峻な立下りを示すように補正されている。
図6は、ユーザがシャッタ・ボタンを押す前後の時間期間における時系列の一連の複数のフレーム画像P_−4〜P_+5の時間的な関係の例を示している。
図6において、フレーム画像P_0はシャッタ・ボタンを押した瞬間のタイミングのフレーム画像を表している。また、フレーム画像P_−4〜P_−1は、シャッタ・ボタンを押す前のそれぞれのタイミングのフレーム画像を表している。フレーム画像P_+1〜P_+5は、シャッタ・ボタンを押した後のそれぞれのタイミングのフレーム画像を表している。フレーム画像P_0は、ユーザの所望のタイミングで撮影されたものであるが、手振れによる画像のぼやけを含むフレーム画像P_TAであるとする。所望のタイミングは、例えば、シャッタ・ボタンを押下した瞬間のフレーム画像またはその直前または直後のフレーム画像の生成タイミングであってもよい。また、所望のタイミングは、例えば、シャッタ・ボタンを押下した瞬間またはその直前または直後のフレーム画像とは異なるフレーム画像の生成タイミングであってもよい。
一方、フレーム画像P_+3は、別のタイミングで撮影されたもので、最小の角速度の検出値に対応づけられたフレーム画像P_TBであるとする。ここで、最小の角速度に対応づけられたフレーム画像は、手振れによる画像のぼやけが無いかまたは最小である。この場合、フレーム画像P_TAのぼやけた画像領域の画素値が、フレーム画像P_TBにおけるぼやけが無いまたは最小の対応する画素領域の画素値を用いて、補正または補償するものとする。フレーム画像P_TBはフレーム画像P_TAの後のタイミングのフレーム画像でなくてもよく、例えば、その前のタイミングのフレーム画像P_−3の画像が最小の角速度の検出値に対応づけられている場合、フレーム画像P_−3がフレーム画像P_TBとして用いられてもよい。
図7Aは、フレーム画像P_TAにおける手振れによるぼやけを示す画像領域の画素の例を示している。この画像領域では、ジャイロ・センサ部340の検出値に基づいて求められた手振れによる移動方向および移動距離を示す矢印の始点の画素PL(Xa,Ya)からその矢印の終点の画素PL(Xas,Yas)までの範囲の一連の画素の階調が概して直連的に上昇しているものとする。
図7Bは、フレーム画像P_TAの画像領域の画素PL(Xa,Ya)〜PL(Xas,Yas)に対応する別のフレーム画像P_TBの画像領域の画素PL(Xb,Yb)〜PL(Xbs,Ybs)の位置の例を示している。この場合、フレーム画像P_TBは、一連のフレーム画像の中で、ジャイロ・センサ部340によって検出された角速度ωBが最小のものであるとする。
図7Cは、フレーム画像P_TAの画像領域の画素PL(Xa,Ya)〜PL(Xas,Yas)を、別のフレーム画像P_TBの画像領域の画素PL(Xb,Yb)〜PL(Xbs,Ybs)の画素値で補正または補償して得られた補正後のフレーム画像P_CAの例を示している。図7Cの画像P_CAにおいて、図7Aのフレーム画像P_TAにおける画素PL(Xa,Ya)〜PL(Xas,Yas)の画素値が、フレーム画像P_TBにおける画素PL(Xb,Yb)〜PL(Xbs,Ybs)の画素値で置き換えられている。代替形態として、フレーム画像P_TAにおける画素PL(Xa,Ya)〜PL(Xas,Yas)の画素値は、画素のPL(Xa,Ya)〜PL(Xas,Yas)の各画素値と、画素PL(Xb,Yb)〜PL(Xbs,Ybs)の対応する各画素値とを或る重みで加算して得た画素値で、置き換えられてもよい。
このようにして、所望のタイミングのフレーム画像P_TAにおける手振れによるぼやけた画像領域の画素が、最小の角速度に対応するフレーム画像P_TBでのより鮮明な対応する画像領域の画素値で補正または補償することができる。
図8A〜8Cは、情報処理装置30によって実行される、所望のタイミングのフレーム画像P_TAを、最小の角速度に対応するフレーム画像P_TBを用いて補正または補償するための処理のフローチャートの例を示している。
図8Aを参照すると、ステップ502において、ユーザによる情報処理装置30の撮像用のアプリケーションの起動に応答して、プロセッサ322(またはそのアプリケーション部3222)は、そのカメラ部またはカメラ・モジュール338を起動する。
ステップ504において、プロセッサ322(またはそのデータ保存部3224)は、或る間隔または露光時間期間Tの間隔で連続的に撮像された複数のフレーム画像(例えば、P_−4〜P_+5)を捕捉して記憶部324中のバッファ・メモリに順次保存する。それと並行して、プロセッサ322(データ保存部3224)は、各フレーム画像の撮影または捕捉タイミングで、ジャイロ・センサ部340によって検出された角度(θy,θr,θp)および角速度(ωy,ωr,ωp)を捕捉して、各フレーム画像に対応付けてそのバッファ・メモリに順次に保存する。
角度(θy,θr,θp)および角速度(ωy,ωr,ωp)は、各フレーム画像における露光時間期間Tの開始時点での検出値であっても、その開始時点と終了時点の間の概ね中央のタイミングでの検出値であっても、またはその露光時間期間Tにおける複数の時点での検出値の平均値であってもよい。そのバッファ・メモリには、撮影されたフレーム画像が順次追加的に格納され、バッファ・メモリに保存されたフレーム画像の数が閾値を超えると、閾値を超えた分の数のフレーム画像が古い順に削除または消去されてもよい。保存されるフレーム画像の数の閾値は、例えば8〜16の範囲内の或る値であってもよい。
ステップ504は、シャッタ・ボタンが押される前の期間においても連続的に実行され、さらに、シャッタ・ボタンが押された後で撮影された或る数のフレーム画像が保存されるまで継続的に実行される。その或る数は、例えば4〜8の範囲内の或る値であってもよい。
ステップ506において、プロセッサ322(データ保存部3224)は、ユーザによって情報処理装置30のシャッタ・ボタンが押されたかどうかを判定する。ステップ506におけるシャッタ・ボタンが押されたかどうか判定は、シャッタ・ボタンが押された後で、或る数のフレーム画像が撮影されて保存された後で行われてもよい。シャッタ・ボタンが押されたと判定された場合は、手順はステップ508に進む。シャッタ・ボタンが押されなかったと判定された場合は、手順はステップ504に戻って、シャッタ・ボタンが押されるまでステップ504が繰り返される。
シャッタ・ボタンが押された後のステップ508において、プロセッサ322(データ保存部3224)は、そのバッファ・メモリに格納された、シャッタ・ボタン押下の前後の一連のフレーム画像(例えば、P_−4〜P_+5)および対応する角度および角速度の検出値を削除せずに保持する。その際、プロセッサ322(アプリケーション部3222またはデータ保存部3224)は、カメラ部338によるその後の撮影動作を停止させてもよい。
ステップ510において、プロセッサ322(その画像選択部3226)は、予め設定された所望のタイミングのフレーム画像P_TA、およびその角度θAおよび角速度ωAの検出値を、そのバッファ・メモリから取得しまたは選択する。ここで、角度θAは、例えば、3つの成分値(θya,θra,θpa)を含んでおり、角速度ωAは、例えば、3つの成分値(ωya,ωra,ωpa)を含んでいる。
ステップ512において、プロセッサ322(画像選択部3226)は、バッファ・メモリに格納された複数のフレーム画像(例、P_−4〜P_+5)に対応する各角速度(ωy,ωr,ωp)を互いに比較し、最小の角速度(ωyb、ωrb、ωpb)のフレーム画像P_TBを決定しまたは選択する。その比較のために、各フレーム画像の角速度として、3つの角速度成分の2乗の和(ωy2+ωr2+ωp2)またはその平方根(ωy2+ωr2+ωp2)1/2が用いられてもよい。代替形態として、その比較のために、各フレーム画像の角速度として、3つの角速度の和(ωy+ωr+ωp)が用いられてもよい。代替形態として、その比較のために、各フレーム画像における、上述のx方向のズレ量Sx、y方向のズレ量Syの2乗の和(Sx2+Sy2)またはその平方根(Sx2+Sy2)1/2が用いられて、その最小のズレ量のフレーム画像が決定されまたは選択されてもよい。最小の角速度またはズレ量を有するフレーム画像は、手振れの影響が最小であり手振れによるぼやけが最も少なく、画質がより高いと期待される。従って、最小の角速度またはズレ量を有するフレーム画像は、フレーム画像P_TAにおける手振れによるぼやけた画像領域を補正または補償するのに用いることができる。
ステップ514において、プロセッサ322(画像選択部3226)は、そのバッファ・メモリから、フレーム画像P_TB、およびその角度θBおよび角速度ωBを取得する。
ステップ516において、プロセッサ322(画像選択部3226)は、所望のタイミングのフレーム画像P_TAの角速度ωAと、最小の角速度に対応するフレーム画像P_TBの角速度ωBとを比較して、角速度ωAが角速度ωBに等しいか(ωA=ωB)どうかを判定する。角速度ωAと角速度ωBが等しいと判定された場合は、手順は図8Cのステップ540に進む。この場合、フレーム画像P_TAは、複数のフレーム画像の中で手振れの影響が最も小さく、手振れ補正しなくてよいことを表している。角速度ωAと角速度ωBが等しくない、即ち角速度ωAが角速度ωBより大きいと判定された場合は、手順は図8Bのステップ518に進む。
図8Bを参照すると、ステップ518において、プロセッサ322(またはその位置ずれ計算部3229)は、フレーム画像P_TAの角度θAおよび/または角速度ωAに基づいて、フレーム画像P_TAにおけるズレ分の移動量(Sx,Sy)を算出する。その計算のために、フレーム画像P_TAの角度θAおよび/または角速度ωAと、その直後または次のフレーム画像P_TA+1の角度θ(A+1)および/または角速度ω(A+1)とが用いられてもよい。代替形態として、フレーム画像P_TAの角度θAおよび/または角速度ωAと、その直前のフレーム画像P_TA−1の角度θ(A−1)および/または角速度ω(A−1)とが用いられてもよい。この場合、バッファ・メモリに保存されるジャイロ・センサ部340の検出値は、各フレーム画像について1組の検出値だけでよい。少なくてよい。代替形態として、角度θAは、例えば、フレーム画像P_TAの露光開始時点tasと露光終了時点taeにおける2組の角度および角速度(θAs,ωAs)、(θAe,ωAe)を含んでいて、その2組の角速度が移動量(Sx,Sy)の計算に用いられてもよい。移動量(Sx,Sy)は、フレーム画像P_TAにおける水平X方向および垂直Y方向の画素数で表されてもよい。
ステップ520において、プロセッサ322(位置ずれ計算部3229)は、フレーム画像P_TA中の1つの画素を画素PL1として取り出す。ステップ520が繰り返し実行されることによって、フレーム画像P_TA中の複数の画素が順次取り出される。その際、後で説明するステップ536において先にフレーム画像P_TBの画素で置換されたフレーム画像P_TAの画素は、取り出されなくてもよい。
ステップ522において、プロセッサ322(位置ずれ計算部3229)は、フレーム画像P_TAにおいて、画素PL1の位置に移動量(Sx,Sy)を加算した位置にある画素PL2を取り出す。
ステップ524において、プロセッサ322(位置ずれ計算部3229)は、画素PL1から画素PL2までの直線上にある、フレーム画像P_TAの画素PL1から画素PL2までの画素の経路を、算出しまたは決定する。その経路は、例えば、図7Aの場合、矢印の始点の画素PL(Xa,Ya)の位置から、矢印の方向に、X方向に2画素移動し、次いで、Y方向に1画素移動し、X方向に2画素移動し、Y方向に1画素移動し、X方向に1画素移動して、画素PL(Xas,Yas)に到達するものである。
ステップ526において、プロセッサ322(位置ずれ計算部3229)は、画素PL1から画素PL2までの経路上の画素値の階調変化の勾配Gを算出する。そのために、画素PL1の画素値から画素PL2の画素値が減算されて階調の差が生成され、その差を移動方向の移動距離(SL)で除算して、画素値の階調の勾配または傾斜Gが求められてもよい(G=(画素PL1の画素値−画素PL2の画素値)/SL)。代替形態として、画素PL2の画素値から画素PL1の画素値が減算されて階調の差が生成され、その差を移動距離で除算して、画素値の階調の勾配Gが求められてもよい(G=(画素値2−画素値1)/SL)。ここで、移動量として、例えば画素数を単位とする距離(Sx+Sy)1/2が用いられてもよい。
ステップ528において、プロセッサ322(位置ずれ計算部3229)は、経路上の隣接の2つの画素jおよび(j+1)を取り出して、その2つの画素の間の画素値の階調の勾配gを求める。画素位置jの初期値は、例えば画素PL1の位置であってもよい。そのために、画素jの画素値から画素(j+1)の画素値が減算されて階調の差が生成され、その差を移動方向の移動距離(Sl)で除算して、画素値の階調の勾配または傾斜gが求められてもよい(g=(画素jの画素値−画素(j+1)の画素値)/Sl)。代替形態として、画素j+1の画素値から画素jの画素値が減算されて階調の差が生成され、その差を移動量で除算して、画素値の階調の勾配gが求められてもよい(g=(画素(j+1)の画素値−画素jの画素値)/Sl)。ここで、画素jと画素(j+1)間での移動方向の移動量(Sl)は、画素PL1と画素PL2を結ぶ直線上での画素jと画素(j+1)間の移動量の成分であり、画素PL1の中心から画素PL2の中心を結ぶ直線に投影された画素jと(j+1)の各中心位置の間の距離であってもよい。ステップ528が繰り返し実行されることによって、経路上の各1対の隣接の画素が順次取り出される。
ステップ530において、プロセッサ322(位置ずれ計算部3229)は、その隣接画素の画素値の階調の勾配gが、経路の画素PL1から画素PL2までの画像領域の画素値の階調の勾配Gに概ね相当するか(g≒G)、またはその勾配Gの許容誤差範囲内にあるか(g=G±ΔG)どうかを判定する。ここで、許容誤差ΔGは、例えば、勾配値Gの10%であってもよい。画素j、(j+1)の画素値の階調の勾配gが勾配Gに概ね相当すると判定された場合は、手順はステップ532に進む。隣接の画素値の階調の勾配gが勾配Gに相当しない(g>G+ΔG、g<G−ΔG)と判定された場合は、この時点での画素PL1から画素PL2までの経路の画像領域の画素は補正の対象でないので、手順はステップ520に戻る。この場合、ステップ520において、次の画素が画素PL1として取り出される。
ステップ532において、プロセッサ322(位置ずれ計算部3229)は、比較する隣接画素jおよび(j+1)の位置をそれぞれ+1だけ増分する(j=j+1、j+1=j+1+1)。
図8Cを参照すると、ステップ534において、プロセッサ322(位置ずれ計算部3229)は、1対の隣接の画素中の画素jの位置が、移動量(Sx,Sy)に達したかまたは終点の画素PL2に達したかどうかを判定する。画素jの位置が移動量に達したと判定された場合は、手順はステップ536に進む。これは、画素PL1から画素PL2まで経路上の全ての隣接の画素間の階調の勾配gが勾配Gに概ね相当すると判定されたことを表す。画素jの位置が移動量に達していないと判定された場合は、手順はステップ528に戻る。それによって、画素PL1から画素PL2まで経路上の全ての隣接の画素について、ステップ528〜530が繰り返し実行される。
ステップ536において、プロセッサ322(その画素位置合せ部3230)は、フレーム画像P_TAにおける経路上の画素PL1から画素PL2の画像領域の画素に対応する、フレーム画像P_TB中の画像領域の画素を決定する。そのために、プロセッサ322(位置ずれ計算部3229)は、フレーム画像P_TAの画像領域とフレーム画像P_TBにおける対応する画像領域の間の2次元的な移動量(Sx,Sy)を求めてもよい。その移動量(Sx,Sy)は、例えば、それぞれの角度θAとθBおよび/またはフレーム画像P_TAとP_TBの間の角速度ωA、・・・ωBに基づいて算出されてもよい。代替形態として、その移動量(Sx,Sy)は、例えば、角度θAとθBおよび/またはフレーム画像P_TAとP_TBの間の角速度ωA、・・・ωBと、2つのフレーム画像P_TA、P_TBの間での分割領域のマッチングにより求められる動きベクトルとの組合せで求められてもよい。プロセッサ322(画素位置合せ部3230)は、フレーム画像P_TBにおいて、フレーム画像P_TAでの画像領域の画素位置を、その移動量(Sx,Sy)または移動方向(Sφ)および移動距離(SL)だけ移動させた位置の画素を、対応する画像領域の画素として決定する。
ステップ538において、プロセッサ322(その画素補正部3232)は、フレーム画像P_TAにおける経路上の画素PL1から画素PL2までの画像領域の画素の画素値を、フレーム画像P_TB中の対応する画像領域の画素の画素値で補正する。そのために、前述のように、フレーム画像P_TAにおける画像領域の画素の画素値が、フレーム画像P_TB中の対応する画像領域の画素の画素値で置き換えられてもよい。代替形態として、フレーム画像P_TAにおける画像領域の画素の各画素値は、前述のように、フレーム画像P_TAにおける画像領域の各画素の画素値と、フレーム画像P_TBにおける対応する画像領域の各画素の画素値とを或る重みで加算して得られた画素値で、置き換えられてもよい。
ステップ540において、プロセッサ322(画素補正部3232)は、フレーム画像P_TAの全ての画素について、取り出しおよび/または置換の処理が完了したかどうかを判定する。フレーム画像P_TAについて全ての画素の処理が完了したと判定された場合は、手順はステップ542に進む。フレーム画像P_TAについて未だ全ての画素の処理は完了していないと判定された場合は、手順はステップ520に戻る。
ステップ542において、プロセッサ322(画素位置合せ部3230)は、補正済みのフレーム画像P_CAを、例えば外部記憶部334に保存する。このようにして、所望のタイミングのフレーム画像P_TAにおける手振れによるぼやけが補正されたフレーム画像P_CAが得られる。
図9A〜9Dは、所望のタイミングのフレーム画像P_TA中の手振れによるぼやけた画像部分が、最も小さい角速度ωBに対応するフレーム画像P_TBにおける対応する画像部分でどのように補正されるかを説明するためのフレーム画像の例を示している。
図9Aのフレーム画像P_TAにおいて、矢印の始点における画素位置から矢印の終点(頭部)までの線上の画像領域に手振れによるぼやけが生じているものとする。この場合、図9Bのフレーム画像P_TAにおいて、図9Aの矢印の線上にある白抜きの複数の四角形で表される画素を含む画像領域が、置換される画像領域として決定される。これに対して、図9Cのフレーム画像P_TBにおいて、複数の四角形で示される画素を含む画像領域が、図9Aの画素領域に対応するものとして決定される。
次いで、図9Bのフレーム画像P_TAの白抜きの四角形の画素の画像領域が、図9Cのフレーム画像P_TBの複数の四角形で表される画素の画像領域でそれぞれ置換されて、図9Dに示されているような補正済みのフレーム画像P_CAが得られる。
このようにして、例えば図9Dのフレーム画像P_CAのような補正済みのフレーム画像は、置換された画素の画像領域について手振れによるぼやけが補償されて、ぼやけがなくなりまたは少ないものとなり、その画像がより鮮明なものとなる。
また、上述の画像補正を用いることによって、情報処理装置30において、カメラ部338に小型のカメラ・モジュールが用いられても、各フレーム画像の撮影の露光時間を比較的長くすることができ、それによって手振れの影響を補正するのに充分な画質のフレーム画像が得られる。また、上述のようにして補正された画像が生成されることによって、ユーザは、撮影の失敗が減り、何度も撮影しなおさなくてよくなり、また、望ましいタイミングで撮影された画像を無駄にせずに済む。
以上説明した実施形態は典型例として挙げたに過ぎず、その各実施形態の構成要素を組み合わせること、その変形およびバリエーションは当業者にとって明らかであり、当業者であれば本発明の原理および請求の範囲に記載した発明の範囲を逸脱することなく上述の実施形態の種々の変形を行えることは明らかである。
以上の実施例を含む実施形態に関して、さらに以下の付記を開示する。
(付記1)連続的に捕捉された一連の画像と、前記一連の画像の各画像に対応するジャイロ・センサ部の検出値とを記憶部に保存する保存部と、
前記一連の画像の中から或る画像を第1の画像として選択し、前記検出値に基づいて前記一連の画像の中からブレが最小の画像を第2の画像として選択する選択部と、
前記検出値に基づいて前記第1の画像における移動量を求め、前記第1の画像における前記移動量だけ離れた2つの位置の間の第1の領域の複数の画素値が、許容誤差の範囲で直線的な勾配を有する場合に、前記第1の領域の複数の画素値を、前記第1の領域に対応する前記第2の画像における第2の領域の複数の画素値を用いて補正する補正部と、
を含む情報処理装置。
(付記2)前記補正部は、さらに、前記検出値に基づいて前記第1の画像から前記第2の画像までの別の移動量を求め、前記第2の画像における前記第1の領域の位置から前記別の移動量だけ移動させた位置にある領域を前記第2の領域として決定するものであることを特徴とする、付記1に記載の情報処理装置。
(付記3)前記補正部は、前記第1の画像に対応する前記検出値と前記第1の画像の直前または直後の画像に対応する前記検出値とに基づいて、前記第1の画像における2次元の移動量かまたは移動方向および移動距離を、前記移動量として求めるものであることを特徴とする、付記1または2に記載の情報処理装置。
(付記4)前記第1の画像は、撮影操作に関連するタイミングの画像であることを特徴とする、付記1乃至3のいずれかに記載の情報処理装置。
(付記5)前記前第1の領域の複数の画素値の補正は、前記第1の領域の複数の画素値を前記第2の領域の複数の画素値で置換するか、または、前記第1の領域の複数の画素値を、前記第1の領域の複数の画素値と前記第2の領域の複数の画素値を合成して得られた複数の画素値で置換することによって、行われるものであることを特徴とする、付記1乃至4のいずれかに記載の情報処理装置。
(付記6)連続的に捕捉された一連の画像と、前記一連の画像の各画像に対応するジャイロ・センサ部の検出値とを記憶部に保存し、
前記一連の画像の中から或る画像を第1の画像として選択し、前記検出値に基づいて前記一連の画像の中からブレが最小の画像を第2の画像として選択し、
前記検出値に基づいて前記第1の画像における移動量を求め、前記第1の画像における前記移動量だけ離れた2つの位置の間の第1の領域の複数の画素値が、許容誤差の範囲で直線的な勾配を有する場合に、前記第1の領域の複数の画素値を、前記第1の領域に対応する前記第2の画像における第2の領域の複数の画素値を用いて補正する
処理を情報処理装置に実行させるためのプログラム。
(付記7)情報処理装置が、
連続的に捕捉された一連の画像と、前記一連の画像の各画像に対応するジャイロ・センサ部の検出値とを記憶部に保存し、
前記一連の画像の中から或る画像を第1の画像として選択し、前記検出値に基づいて前記一連の画像の中からブレが最小の画像を第2の画像として選択し、
前記検出値に基づいて前記第1の画像における移動量を求め、前記第1の画像における前記移動量だけ離れた2つの位置の間の第1の領域の複数の画素値が、許容誤差の範囲で直線的な勾配を有する場合に、前記第1の領域の複数の画素値を、前記第1の領域に対応する前記第2の画像における第2の領域の複数の画素値を用いて補正する
処理を実行する方法。