特許文献1に開示されている方法によれば、手振れなどの振動による画像への影響を低減することができる。しかしながら、長時間露光のときに、以下のようなことが発生する可能性があった。
図1は、X−Yアドレス型の固体素子で撮影したときに、その撮影時に加えられた振動と、その振動を打ち消すための補正量について説明するための図である。まず、図1を参照し、異なる露光時間による画像への影響について説明する。図1内の曲線は、Sine波であり、Sine波の特徴を示す振動が加えられたことを意味する。
図1における説明では、Sine波の特徴を示す振動は、画像を撮像する装置に対して上下方向に加えられた振動であるとする。換言すると、上下方向に所定の大きさの振動が連続的に加えられ、その振動の変位を時間経過と共に表すと、図1に示すようなSine波になったときを例に挙げて説明を続ける。
図1の上図(Sine波が図示してある図)において、縦軸の数値は、1画像を構成するラインの番号を示し、横軸は時間を示す。ここでは、1画面を構成するライン数は、9であるとし、時間的に初めに読み出されるラインをライン8とし、最後に読み出されるラインをライン0とする。他のラインも、ライン1などと記述する。X−Yアドレス型の固体素子においては、ライン毎(または画素単位)で読み出しが行われるため、各ラインの読み出し開始のタイミングが異なる。よって、図1に示すように、1画面の読み出しをライン毎に、時間経過と共に図示すると、1画面分のデータが読み出される部分は、平行四辺形となる。
図1の下図は、ライン8またはライン0が読み出されるときに加えられていた振動と、補正の処理に用いられる値とを、図1の上図から抽出した図である。図1の左側の図は、1フィールド露光時の図であり、右側の図は、4フィールド露光時の図である。図1においては、1フィールド露光時は短時間露光と適宜記述し、4フィールド露光時は、長時間露光と適宜記述する。
図1を参照するに、1フィールド露光時に、ライン8は、時刻t1から時刻t2にかけて読み出され、ライン0は、時刻t3から時刻t4にかけて読み出される。ライン8が読み出される時刻t1から時刻t2までの間には、上向きの振動が加えられている。同様に、ライン0が読み出される時刻t3から時刻t4までの間には、上向きの振動が加えられている。
振動の影響を軽減するために行われる補正は、加えられた振動の方向と力を考慮し、ライン上のデータの読み出し開始位置を変えることにより行われる。その読み出し開始位置は、露光時間の中心時間(以下、適宜、補正量決定点と記述する)に取得された振動の方向とその大きさが用いられ、どれだけ補正すれば、振動が加えられていない画像と同等の画像が得られるかという補正量が算出されることにより決定される。
例えば、ライン8は、時刻t1から時刻t2までの期間で読み出される(時刻t1から時刻t2まで露光されている)わけだが、その期間内の(時刻t1+時刻t2)/2の時刻(補正量決定点のとき)に加えられた振動の方向(この場合、上向き)と大きさ(加速度センサなどにより得られる値)が元に、補正量が算出され、読み出し開始位置が決定される。
同様に、ライン0の読み出し開始位置も、(時刻t3+時刻t4)/2の時刻に加えられた振動の方向と大きさを元に決定される。このような処理がライン8乃至ライン0毎に行われることにより、振動によりずれてしまった画像が補正され、振動が加えられなかったときと同様の画像が生成される。
1フィールドの露光(短時間露光)の場合、補正量決定点が、露光期間内のぶれ幅に対して、ほぼ中央に位置し、露光期間内での誤差(ノイズや演算誤差)も少ないと考えられる。その結果、良好な補正が行えると考えられる。
4フィールドの露光のときにも1フィールド露光のときと同様な補正が行われる。しかしながら、4フィールド露光のような長時間露光の場合、補正量決定点が、露光期間内のぶれ幅に対して、中央から外れた位置に位置してしまうばかりでなく、露光期間内での誤差も大きいと考えられる。
図1の右側の図を参照するに、4フィールド露光時に、ライン8は、時刻t5から時刻t7までの期間で露光されるわけだが、その期間内に加えられた振動は、初めは上方向であるが、途中から下方向に変化している。また、ライン0も、時刻t6から時刻t8までの期間で読み出されるが、その期間内に加えられた振動は、初めは上方向であるが、途中から下方向に変化している。
ライン8が読み出されるときの補正量決定点は、上方向に振動が加えられているときであるため、上方向の振動が加えられたときに行われる補正が行われることになる。しかしながら、実際には、ライン8が読み出される期間内には、下方向の振動も加えられており、この下方向の振動に対しては本来、下方向の振動が加えられたときの補正が行われる必要がある。
同様に、ライン0が読み出される期間内の補正量決定点は、下方向の振動が加えられているときであるが、ライン0が読み出される期間内には、上方向の振動も加えられている。
このように、1ラインが読み出される期間内に加えられている振動の方向が変化すると、変化する前か後のどちらか一方の方向にしか対応できない補正しか行えず、結果として適切な補正が行えないと考えられる。
さらに、図2を参照し、加えられた振動と、その振動を打ち消すための補正において、露光時間による画像への影響について説明する。図2も図1と同様に、上図が、加えられた振動のSine波と、補正に用いられる値の取得時刻との関係を示し、下図が、上図からライン8とライン0に関する部分を抽出した図である。
図2の左側の図と右側の図は、ともに、4フィールド露光のときを示している。図2の左側の図は、図1の右側の図と同じである。
図2の右側の図を参照するに、ライン8は、時刻t9から時刻t11の期間で読み出され、ライン0は、時刻t10から時刻t12の期間で読み出される。ライン8が読み出される期間内では、上方向の振動が加えられている。ライン0が読み出される期間内も、後半部分で、下方向の振動も加えられているが、全体の割合から判断すれば、上方向の振動のみが加えられているという状態である。
ライン8とライン0の補正量決定点は、共に、上方向の振動が加えられているときに存在しているので、上方向の振動が加えられたときに行われる補正が行われる。
このように、長時間露光のときであっても、所定の1ラインが読み出されるときに加えられている振動が、同一方向であるときもある。このようなときには、上記した場合(図1の右側を参照して説明した場合)と異なり、読み出しの期間内で加えられている振動の方向と、補正量決定点が存在している部分の振動の方向とが同一であるので、上記した場合のように、期間内に本来補正すべき方向と異なる方向に補正を行ってしまうような区間が存在することがなく、補正の方向だけを考えれば、適切な補正が行えると考えられる。
動画像を撮影しているときには、図2の左側に示した状態と右側に示した状態が、交互に発生する可能性がある。そのような状態のとき撮影された映像について、図3を参照して説明する。図3において、画像Aは撮影する被写体であり、この場合、三角形である。また、画像Aを撮影するときに、横方向の振動が加えられているとして説明を続ける。なお、図3中、横方向の矢印や、画像2の所に図示した点線などは、説明のために付したものであり、撮影される画像の一部などではない。
画像1は、時刻T1において撮影された映像(映像中の1枚の画像)であり、図2の右側に示したような状態(すなわち、読み出し期間内に本来補正すべき方向と異なる方向に補正を行ってしまうような区間が存在するようなことがない状態、以下、状態1とする)のときに撮影された画像である。
画像2は、時刻T2において撮影された画像であり、図2の左側に示したような状態(すなわち、読み出し期間内に本来補正すべき方向と異なる方向に補正を行ってしまうような区間が存在するような状態、以下、状態2とする)のときに撮影された画像である。
画像3は、時刻T3において撮影された画像であり、状態1のときに撮影された画像である。画像4は、時刻T4において撮影された画像であり、状態2のときに撮影された画像である。
画像1や画像3は、状態1のときに撮影された画像であり、撮影対象となっている画像Aの三角形が、横方向の振動のために、ぶれてしまい、右下の頂点が複数存在してしまっている。すなわち、三角形が幾つか重なったような状態で撮影されたような画像となってしまい、画像が滲んでしまっている。三角形を構成する直角は直角を保った状態で撮影されている。
画像2や画像4は、状態2のときに撮影された画像であり、撮影対象となっている画像Aの三角形が、横方向の振動のために、ぶれてしまい、画像1や画像3と同じく画像が滲んでしまっている。さらに、画像2や画像4では、三角形を構成する直角が直角として保たれず、鈍角になってしまった状態で撮影されている。
このようなことをまとめると、状態1のときに撮影された画像は、長時間露光ために蓄積された振動が大きく、そのために滲み(ぶれ)が存在している。状態2のときに撮影された画像は、滲みの他に、さらに、歪みも存在している。すなわち、図3に示したように、画像2や画像4においては、本来画像Aには存在していない、点線で示したような傾きが発生している。
画像1、画像2、画像3、画像4といったような画像が、連続的に撮影される場合、“滲み”、“滲み+歪み”、“滲み”、“滲み+歪み”といったような、振動により悪影響を受けた画像が繰り返される映像となってしまう。このように、歪みが存在する画像と存在しない画像が存在すると、極端な表現ではあるが、この場合の被写体である三角形が大きくなったり小さくなったりするような映像が、ユーザに提供されることになる。このような映像は、ユーザにとって好ましい映像ではない。
画像2や画像4において、滲みだけでなく、歪みも発生するのは、ラインからデータが読み出される期間内に、本来補正すべき方向と異なる方向に補正を行ってしまうような区間が存在する状態(状態2)のときに撮影されたのが原因であると考えられる。すなわち、歪みの原因の1つには、振動の影響を補正するための処理に原因があると考えられる。
このようなことは、長時間露光のときに発生する問題として存在し、いかにして取り除くか、ユーザに対して歪みによる目障りな映像を提供しないようにするかが、課題としてあった。
本発明はこのような状況に鑑みてなされたものであり、長時間露光のときでも、手振れなどの振動により、撮影される映像に与えられる悪影響を低減させることを目的とする。また、長時間露光のときの、振動に対する補正をより適切に行えるようにすることを目的とする。
本発明の一側面の第1の撮像装置は、X−Yアドレス型の固体撮像素子により画像を撮像する撮像手段と、加えられた振動を検出する検出手段からの振動量に基づいて、前記加えられた振動に対するライン単位の補正量を算出する手段であって、前記撮像手段の露光時間が、前記露光時間を短時間露光と長時間露光を分けるために設けられた所定の閾値未満の時に、前記振動量に基づいてライン単位の補正量である第1の補正量を算出し、前記所定の閾値以上の時に、少なくとも一部のラインに対して、前記第1の補正量より値が小さく、且つ、ライン毎の補正量の差が、ライン毎の前記第1の補正量の差よりも小さい値である、ライン単位の補正量である第2の補正量を算出する算出手段と、前記算出手段で算出された前記ライン単位の補正量に基づいて、前記画像に対して加えられた振動に対する補正をライン単位に行なう補正手段とを備える。
前記算出手段は、少なくとも1つのラインの前記第1の補正量を代表量とした時に、前記少なくとも1つのラインに対しては、前記第1の補正量と同じ値となる前記第2の補正量を算出し、前記少なくとも1つのライン以外のラインに対しては、各ラインにおける前記第1の補正量に1未満の所定の係数を乗算した値に相当する前記第2の補正量を算出するようにすることができる。
本発明の一側面の第1の画像処理装置は、加えられた振動を検出する検出手段からの振動量に基づいて、前記加えられた振動に対するライン単位の補正量を算出する手段であって、露光時間が、前記露光時間を短時間露光と長時間露光を分けるために設けられた所定の閾値未満の時に、前記振動量に基づいてライン単位の補正量である第1の補正量を算出し、前記所定の閾値以上の時に、少なくとも一部のラインに対して、前記第1の補正量より値が小さく、且つ、ライン毎の補正量の差が、ライン毎の前記第1の補正量の差よりも小さい値である、ライン単位の補正量である第2の補正量を算出する算出手段と、前記算出手段で算出された前記ライン単位の補正量に基づいて、前記画像に対して加えられた振動に対する補正をライン単位に行なう補正手段とを備える。
本発明の一側面の第1の画像処理方法は、加えられた振動を検出する検出手段からの振動量に基づいて、前記加えられた振動に対するライン単位の補正量を算出するステップであって、露光時間が、前記露光時間を短時間露光と長時間露光を分けるために設けられた所定の閾値未満の時に、前記振動量に基づいてライン単位の補正量である第1の補正量を算出し、前記所定の閾値以上の時に、少なくとも一部のラインに対して、前記第1の補正量より値が小さく、且つ、ライン毎の補正量の差が、ライン毎の前記第1の補正量の差よりも小さい値である、ライン単位の補正量である第2の補正量を算出する算出ステップと、前記算出ステップの処理で算出された前記ライン単位の補正量に基づいて、前記画像に対して加えられた振動に対する補正をライン単位に行なう補正ステップとを備える。
本発明の一側面の第1の記録媒体は、加えられた振動を検出する検出手段からの振動量に基づいて、前記加えられた振動に対するライン単位の補正量を算出するステップであって、露光時間が、前記露光時間を短時間露光と長時間露光を分けるために設けられた所定の閾値未満の時に、前記振動量に基づいてライン単位の補正量である第1の補正量を算出し、前記所定の閾値以上の時に、少なくとも一部のラインに対して、前記第1の補正量より値が小さく、且つ、ライン毎の補正量の差が、ライン毎の前記第1の補正量の差よりも小さい値である、ライン単位の補正量である第2の補正量を算出する算出ステップと、前記算出ステップの処理で算出された前記ライン単位の補正量に基づいて、前記画像に対して加えられた振動に対する補正をライン単位に行なう補正ステップとを含むコンピュータが読み取り可能なプログラムが記録されている。
本発明の一側面の第1のプログラムは、加えられた振動を検出する検出手段からの振動量に基づいて、前記加えられた振動に対するライン単位の補正量を算出するステップであって、露光時間が、前記露光時間を短時間露光と長時間露光を分けるために設けられた所定の閾値未満の時に、前記振動量に基づいてライン単位の補正量である第1の補正量を算出し、前記所定の閾値以上の時に、少なくとも一部のラインに対して、前記第1の補正量より値が小さく、且つ、ライン毎の補正量の差が、ライン毎の前記第1の補正量の差よりも小さい値である、ライン単位の補正量である第2の補正量を算出する算出ステップと、前記算出ステップの処理で算出された前記ライン単位の補正量に基づいて、前記画像に対して加えられた振動に対する補正をライン単位に行なう補正ステップとを含むコンピュータが読み取り可能なプログラム。
本発明の一側面の第1の撮像装置、画像処理装置および方法、記録媒体、並びにプログラムにおいては、加えられた振動の振動量に基づいて、加えられた振動に対するライン単位の補正量が算出され、その算出は、露光時間が、露光時間を短時間露光と長時間露光を分けるために設けられた所定の閾値未満の時に、振動量に基づいてライン単位の補正量である第1の補正量が算出され、所定の閾値以上の時に、少なくとも一部のラインに対して、第1の補正量より値が小さく、且つ、ライン毎の補正量の差が、ライン毎の第1の補正量の差よりも小さい値である、ライン単位の補正量である第2の補正量が算出され、その算出されたライン単位の補正量に基づいて、画像に対して加えられた振動に対する補正がライン単位に行われる。
本発明の一側面の第2の撮像装置は、X−Yアドレス型の固体撮像素子により画像を撮像する撮像手段と、加えられた振動を検出する検出手段からの振動量に基づいて、前記加えられた振動に対するライン単位の補正量を算出する手段であって、前記撮像手段の露光時間が1フィールド期間未満の時に、前記振動量に基づいてライン単位の補正量である第1の補正量を算出し、前記露光時間が1フィールド期間以上の時に、少なくとも一部のラインに対して、前記第1の補正量より値が小さく、且つ、ライン毎の補正量の差が、ライン毎の前記第1の補正量の差よりも小さい値である、ライン単位の補正量である第2の補正量を算出する算出手段と、前記算出手段で算出された前記ライン単位の補正量に基づいて、前記画像に対して加えられた振動に対する補正をライン単位に行なう補正手段とを備える。
前記算出手段は、少なくとも1つのラインの前記第1の補正量を代表量とした時に、前記少なくとも1つのラインに対しては、前記第1の補正量と同じ値となる前記第2の補正量を算出し、前記少なくとも1つのライン以外のラインに対しては、各ラインにおける前記第1の補正量に1未満の所定の係数を乗算した値に相当する前記第2の補正量を算出するようにすることができる。
本発明の一側面の第2の画像処理装置は、加えられた振動を検出する検出手段からの振動量に基づいて、前記加えられた振動に対するライン単位の補正量を算出する手段であって、露光時間が1フィールド期間未満の時に、前記振動量に基づいてライン単位の補正量である第1の補正量を算出し、前記露光時間が1フィールド期間以上の時に、少なくとも一部のラインに対して、前記第1の補正量より値が小さく、且つ、ライン毎の補正量の差が、ライン毎の前記第1の補正量の差よりも小さい値である、ライン単位の補正量である第2の補正量を算出する算出手段と、前記算出手段で算出された前記ライン単位の補正量に基づいて、前記画像に対して加えられた振動に対する補正をライン単位に行なう補正手段とを備える。
本発明の一側面の第2の画像処理方法は、加えられた振動を検出する検出手段からの振動量に基づいて、前記加えられた振動に対するライン単位の補正量を算出するステップであって、露光時間が1フィールド期間未満の時に、前記振動量に基づいてライン単位の補正量である第1の補正量を算出し、前記露光時間が1フィールド期間以上の時に、少なくとも一部のラインに対して、前記第1の補正量より値が小さく、且つ、ライン毎の補正量の差が、ライン毎の前記第1の補正量の差よりも小さい値である、ライン単位の補正量である第2の補正量を算出する算出ステップと、前記算出ステップの処理で算出された前記ライン単位の補正量に基づいて、前記画像に対して加えられた振動に対する補正をライン単位に行なう補正ステップとを備える。
本発明の一側面の第2の記録媒体は、加えられた振動を検出する検出手段からの振動量に基づいて、前記加えられた振動に対するライン単位の補正量を算出するステップであって、露光時間が1フィールド期間未満の時に、前記振動量に基づいてライン単位の補正量である第1の補正量を算出し、前記露光時間が1フィールド期間以上の時に、少なくとも一部のラインに対して、前記第1の補正量より値が小さく、且つ、ライン毎の補正量の差が、ライン毎の前記第1の補正量の差よりも小さい値である、ライン単位の補正量である第2の補正量を算出する算出ステップと、前記算出ステップの処理で算出された前記ライン単位の補正量に基づいて、前記画像に対して加えられた振動に対する補正をライン単位に行なう補正ステップとを含むコンピュータが読み取り可能なプログラムが記録されている。
本発明の一側面の第2のプログラムは、加えられた振動を検出する検出手段からの振動量に基づいて、前記加えられた振動に対するライン単位の補正量を算出するステップであって、露光時間が1フィールド期間未満の時に、前記振動量に基づいてライン単位の補正量である第1の補正量を算出し、前記露光時間が1フィールド期間以上の時に、少なくとも一部のラインに対して、前記第1の補正量より値が小さく、且つ、ライン毎の補正量の差が、ライン毎の前記第1の補正量の差よりも小さい値である、ライン単位の補正量である第2の補正量を算出する算出ステップと、前記算出ステップの処理で算出された前記ライン単位の補正量に基づいて、前記画像に対して加えられた振動に対する補正をライン単位に行なう補正ステップとを含むコンピュータが読み取り可能なプログラム。
本発明の一側面の第2の撮像装置、画像処理装置および方法、記録媒体、並びにプログラムにおいては、加えられた振動に対するライン単位の補正量が算出され、その算出は、露光時間が、1フィールド未満の時に、振動量に基づいてライン単位の補正量である第1の補正量が算出され、1フィールド以上の時に、少なくとも一部のラインに対して、第1の補正量より値が小さく、且つ、ライン毎の補正量の差が、ライン毎の第1の補正量の差よりも小さい値である、ライン単位の補正量である第2の補正量が算出され、その算出されたライン単位の補正量に基づいて、画像に対して加えられた振動に対する補正がライン単位に行われる。
本発明によれば、撮影時に加えられた振動により、撮影された映像に与えられる悪影響を低減させることができる。
本発明によれば、長時間露光時に撮影された映像においても、撮影時に加えられた振動による悪影響で、目障りな映像となってしまうことを防ぐことが可能となる。
以下に、本発明の実施の形態について図面を参照して説明する。
[画像処理装置の構成例]
図4は、本発明を適用した画像処理装置の一実施の形態の構成を示す図である。画像処理装置10の撮像素子11は、例えば、X−Yアドレス型の固体撮像素子(CMOSなど)により構成される。撮像素子11により撮像された被写体の画像のデータは、AFE(Analog Front End)12に供給される。
AFE12は、供給された画像データをデジタル信号の画像データに変換し、信号処理部13に供給する。信号処理部13は、供給された画像データから、輝度信号と色差信号を算出し、その算出したそれぞれの信号を、画像補間部14に供給する。
画像補間部14に供給される画像データは、撮像素子11により撮像された被写体の画像のデータであるが、撮像素子11により撮像された画像の全てのデータが、画像補間部14に供給されるわけではなく、TG(Timing Generator)15からのタイミングに従って読み出されたデータのみが、画像補間部14に供給される。
画像補間部14に供給されたデータは、一旦、メモリコントローラ16の制御の基、メモリ17に供給される。逆にメモリ17に記憶されたデータは、メモリコントローラ16の指示により読み出され、画像補間部14に供給される。画像補間部14は、供給されたデータに対して、振動による悪影響を低減するための補間処理など(詳細は後述する)を施し、図示されていない記録媒体に出力し、記録させたり、図示されていないディスプレイなどに出力し、表示させたりする。なお、画像処理装置10に加えられる振動としては、ユーザの手ぶれなどがある。
画像補間部14、TG15、およびメモリコントローラ16は、振動検出部18により検出された振動量に応じ、補正量算出部19により算出された補正量に基づいた制御を行う。
振動検出部18は、例えば、角速度センサなどのセンサを用いた方法や、画像処理等によるセンサレスの振動検出の方法などが用いられ、撮影中に画像処理装置10に加えられた振動を検出する。例えば、振動検出部18が、角速度センサにより構成されていた場合、その角速度センサは、ピッチング方向、ヨーイング方向、それぞれの方向に加えられた角速度のデータを補正量算出部19に供給する。
その検出された振動量に基づき、補正量算出部19は、振動に伴う動きを補正するための補正量のデータを算出する。補正量算出部19は、補正量を算出する際、露光時間取得部20により取得される露光時間に関する情報を参照して行う。露光時間取得部20は、図示されていないシャッターを制御する部分から、露光時間に関する情報を取得する。
補正量算出部19は、供給されたデータを用いて、何ピクセル移動させれば加えられた振動による影響を低減できるかという補正量を、1ライン毎に算出する。ここで、1ライン毎にというのは、CMOSなどの個体撮像素子においては、1ライン単位で画像データが順次読み出される。そのため、1ライン毎に補正量が算出される。
[画像処理装置の動作について]
図5乃至図7のフローチャートを参照し、画像処理装置10の動作について説明する。画像処理装置10は、上記したように、加えられた振動による影響を軽減するための処理を実行する。
ステップS11において、補正量算出部19は、振動検出部18から検出された振動量のデータを取得する。例えば、図8に示すような情報が、振動検出部18により検出され、補正量算出部19に供給される。
図8に示した例では、振動検出部18により、1画面が8つのラインで構成され、その1画面において、それぞれのライン毎に8つの振動量(手振れ量)が取得される場合を示している。すなわち、ライン8のときに振動量P8が、ライン7のときに振動量P7が、ライン6のときに振動量P6が、ライン5のときに振動量P5が、ライン4のときに振動量P4が、ライン3のときに振動量P3が、ライン2のときに振動量P2が、ライン1のときに振動量P1が、ライン0のときに振動量P0が、それぞれ取得される。
なお、ここでは、説明の都合上、1画面が9ラインで構成されるとしているが、実際には9ライン以上のライン数で構成されている。また、ここでは9ライン毎に振動量が取得されるとするが、実際には、振動量を取得するサンプリング周波数と、ラインの読み出しのタイミングにはずれがあるため(露光時間などに読み出し時間は依存し、変化するために、サンプリング周波数などの一定の周期を有するタイミングとは一致しないときがあるため)、ライン毎に露光時間の中央で振動量が取得できるとは限らない。
そこで、所定のラインで取得された振動量は、そのラインを含む数ラインで共通して用いられる。または、取得された離散的な振動量を用いて補間を行い、ライン毎の振動量が生成される。
このように、ライン毎に振動量が取得されると、ステップS12において、補正量の算出が行われる。補正量とは、振動量を、振動のない状態(振動による影響が低減された状態)にするために、どれだけの補正を行えば良いのかを表すピクセル単位の値である。
例えば、図8に示したように、ライン8に関する振動量が、P8ピクセルであった場合、その振動量がP8ピクセルである状態を、振動のない状態にするためには、符号の異なる絶対値、すなわちこの場合、―P8ピクセルが補正量として算出されるようにすれば良い。ライン8以外のライン7乃至0に関しても同様に、それぞれのラインに関する振動量から補正量が算出される。
このように、補正量が算出されると、ステップS13(図5)において、露光時間が取得される。露光時間に関する情報は、露光時間取得部20により取得され、補正量算出部19に供給される。補正量算出部19は、ステップS14において、供給された露光時間が、第1の閾値以上であるか否か(露光時間>第1の閾値という条件が満たされるか否か)を判断する。
本実施の形態においては、露光時間を、短時間露光と長時間露光とに分ける。そして、短時間露光のときと長時間露光のときとでは、振動に対する影響を低減するための処理(補正)を異なる処理とする。そこで、ステップS14において、その時点(ステップS14の処理が実行される時点)では、短時間露光であるか長時間露光であるかを判断するための処理が実行される。
ステップS14の処理で用いられる第1の閾値とは、ここでは、短時間露光と長時間露光とを分けるために設けられた値である。ステップS14において、露光時間は、第1の閾値より小さいと判断された場合、換言すれば、短時間露光であると判断された場合、ステップS15に処理が進められ、短時間露光時の処理が実行される。一方、ステップS14において、露光時間は、第1の閾値より大きいと判断された場合、換言すれば、長時間露光であると判断された場合、ステップS16に処理が進められ、長時間露光時の処理が実行される。
ステップS15において実行される短時間露光時の処理と、ステップS16において実行される長時間露光時の処理について、それぞれ説明する。まず、図6のフローチャートを参照し、ステップS15において実行される短時間露光時の処理について説明する。
ステップS31において、読み出し開始位置の決定が行われる。読み出し開始位置の決定は、ステップS12において算出された補正量に基づいて決定される。補正量は、1ライン毎に算出されているが、その1ライン毎の補正量に基づき、すなわち、何ピクセル分、読み出す位置をずらすかのデータに基づき、それぞれのラインの読み出し開始位置が決定される。
読み出し開始位置が決定されると、ステップS32において、その決定された読み出し開始位置からデータの読み出しが行われる。このようにライン毎に、補正量を算出し、その算出された補正量を基に、データの読み出しを開始するライン上の位置を決定することにより、ライン毎に、振動による影響を補正することができる。よって、ユーザ側に提供される画像は、振動による悪影響が低減された画像とすることが可能となる。
なお、上記した補正に関する処理には、本出願人が先に出願した特開2004−266322号公報に記載されている発明を適用することが可能である。
次に、図7のフローチャートを参照し、ステップS16(図5)において実行される長時間露光時の処理について説明する。ステップS51において、代表量の選択が行われる。図8を参照するに、9ライン毎に振動量が取得され、9ライン毎に補正量が算出されるわけだが、そのうちの、少なくとも1ライン分の補正量が、代表量として選択される。
なお、以下に説明するように、長時間露光のときには、ライン毎に算出される補正量を、ライン毎に用いるのではなく、少なくとも1つのラインの補正量が代表量として用いられるようにする。すなわち、図8に示したような場合、9個の補正量が算出されるわけだが、その9個のうちの少なくとも1つの補正量が用いられ、後述する補正の処理が実行される。
代表量としては、例えば、1画面内において、一番初めに補正量が算出されるラインの補正量(図8においては、ライン8における振動量P8から算出される補正量(以下、単に、補正量P8と記載する。他の補正量も同様に記載する)を代表量とする(この場合、1つのラインの補正量が用いられることになる)。
または、1画面内において、一番初めに補正量が算出されるラインの補正量(図8においては、補正量P8)と、一番後に補正量が算出されるラインの補正量(図8においては、補正量P0)の平均値を算出し、その平均値を代表量としても良い(この場合、2つのラインの補正量が用いられることになる)。
または、画像の中央に位置するラインにおいて取得される補正量(全フレームの露光の中央に相当する位置で取得される補正量。例えば、図8においては、ライン4における振動量P4から算出される補正量P4)が、代表量と設定されるようにしても良い。
代表量の選択の仕方に関しては、上記したような方法が考えられ、どの方法を用いても良いし、上記した以外の方法を用いるようにしても良い。
ここでは、一番初めに算出される補正量を代表量とする場合を例に挙げて説明を続ける。一番初めに算出される補正量を代表量とすることにより、以下のような利点がある。仮に、代表量として、一番後の補正量を用いる(一番後の補正量も用いる)ようにした場合、代表量を決定するためには、最後のラインのデータが取得されなくてはならない。よって、代表量を決定するために、最初のラインのデータから最後のラインのデータまでを記憶できる容量を有するメモリ、すなわち、1画面分のデータを記憶できる容量を有するメモリが必要となる。
しかしながら、一番初めに算出される補正量を代表量として用いることにより、少なくとも、代表量を決定する処理においては、1画面分のデータを記憶できる容量を有するメモリは必要なく、1画面内の1ライン分のデータを記憶できる容量を有するメモリがあれば良い。すなわち、メモリの容量を削減することができる。
ステップS51において、代表量が決定されると、ステップS52において、係数の算出が行われる。ここで、この係数について説明を加える。代表量以外の補正量に関しては、各ラインから算出された補正量に、所定の係数を乗算した値を、新たな補正量とし、そのラインにおける補正量として用いるようにする。
換言すれば、短時間露光時の処理においては、ライン毎に取得される振動量から、ライン毎に補正量を算出し、その補正量が用いられて補正が行われたが、長時間露光時の処理においては、ライン毎に取得される振動量から、ライン毎に補正量を算出し、代表量以外の補正量に関しては、さらに、係数が乗算され、その係数が乗算された補正量が用いられて補正が行われる。
係数は、露光時間に依存して決定される。図9を参照して説明する。図9は、露光時間と、係数との関係を示す図である。第1の閾値は、上記したように、ステップS14(図5)において、短時間露光と長時間露光とを識別するために設けられた閾値である。露光時間が第1の閾値以上になると、長時間露光として処理され、補正量に乗算される係数が設定される。
露光時間が、第1の閾値以下の時間であるときには、すなわち、短時間露光のときには、係数として1が設定されている。係数が1なので、計算上は乗算しても値は変わらないため、短時間露光のときには、図6を参照して説明したように、係数を算出し、補正量に乗算するといったような処理は行われない。
露光時間が、第1の閾値から第2の閾値の間の時間であるときには、図9に示した例では、一次関数的に露光時間に比例して係数が決定(算出)される。
露光時間が第2の閾値以上になると、係数は0と設定される。係数が0ということは、結果的には、補正量は0ということで処理されることを意味する。このことは、代表量以外の補正量に関しての補正は行われないことを意味している。
図9に示した露光時間と係数との関係は一例であり、本発明が、このような係数の決定に限定されることを意味するのではない。係数の他の算出の仕方として、露光時間が、第1の閾値を超えた時点で、係数を0にしても良い。すなわち、このような場合、第1の閾値を境に、係数が1か0になるため、補正を行うか、行わないかになる。または、露光時間が、第1の閾値以上のときには、偶数のラインは係数を1(または1以下)とし、奇数のラインは係数を0とするなど、ライン毎に異なる係数を設定するようにしても良い。
また、露光時間が第2の閾値より大きくなった場合、係数は0とする例を挙げたが、0以外の値、例えば、0.5などに設定されるようにしても良い。換言すれば、露光時間が第2の閾値以上のときには、全く補正を行わないのではなく、通常(短時間露光時)のときよりも弱い補正が実行されるように設定しても良い。
このように、係数の算出の仕方は、どのような方法でも良いが、長時間露光のときには、ライン毎に算出される補正量を、そのまま用いて補正が行われるのではなく、係数が乗算されることにより行われる。ここでは、図9に示したように、係数が、露光時間に応じて設定(算出)されるとして説明を続ける。
ステップS52において、係数が算出されると、ステップS53において、補正量の算出が行われる。補正量は、ステップS12(図5)において既に算出されているが、このステップS52における処理で、既に算出されている補正量に、設定された係数を乗算することにより、新たな補正量が算出される。
図8に示したように、1画像において9個の補正量が算出される場合を例に挙げて、ステップS53の処理を説明する。ライン8から算出された補正量P8が代表量とされ、それ以外の、ライン7乃至ライン0から算出された補正量P7乃至補正量P0に対して、ステップS52において算出された係数が乗算される。その係数が乗算された補正量が、新たな補正量として設定される。
本実施の形態においては、代表量として設定された補正量は、そのまま補正に用いられ、代表量以外の補正量は、係数が乗算されて補正に用いられる。
係数を乗算する際、既に算出されている補正量自体に乗算するようにしても良いし、補正量を何らかの方式で加工した後に乗算するようにしても良い。例えば、各ラインの補正量と代表量との差分を算出し、その差分に対して係数を乗算するようにしても良い。このようにした場合、代表量はその値のままであるが、他のラインの補正量は、代表量との差に係数が乗算された値とされる。
また、代表量自体も、他の補正量と同様に係数が乗算されるようにしても良い。
ステップS54において、設定された補正量に基づいて読み出し開始位置の決定が行われる。そして、その決定された読み出し開始位置からのデータの読み出しが、ステップS55において実行される。
上記したように、係数としては、0乃至1の範囲の値が割り当てられる。よって、係数が乗算された補正量(ステップS53の処理で算出される補正量)は、係数が乗算される前の補正量(ステップS12で算出される補正量)と比べて小さい値となる。
すなわち、ステップS12で算出される補正量は、短時間露光のときには、そのまま補正に用いられるが、長時間露光のときには、係数が乗算されることにより、小さい補正量に変換されて補正に用いられる。よって、仮に同じ大きさの振動が加えられたとしても、短時間露光のときと比べ、長時間露光のときは、補正量が小さいものとされる。
しかしながら、一般的には、短時間露光のときと比べ、長時間露光のときの方が、振動量が蓄積されやすく、そのために、補正量が大きくなる傾向にある。また、1ラインの読み出しが行われている期間内において、短時間露光のときより、長時間露光のときの方が、振動の方向が変化してしまう可能性も高い。補正は、上記したように、加えられた振動に対して、振動のない状態にするためには、加えられた振動とは逆方向に、加えられた振動と同程度の大きさを補正量として用いることにより行われる。このように、補正は、加えられた振動が一方向であるときに、その方向に応じて行われる。
よって、補正の対象となる区間(1ライン)において異なる方向に振動が加えられると、そのうちの1方向が補正の対象となる方向とされ、他の方向は、補正の対象とすることができない。例えば、上方向と下方向の振動が1ラインの読み出し期間内に加えられた場合、上方向の振動が補正の対象とされると(上方向の振動のときに、振動量が取得されると)、そのラインにおいては下方向の振動に対する補正も合わせて行うといったようなことはできない。
このような状態のために、長時間露光時には、加えられた振動の一方向に対して、大きな補正量で補正が実行されてしまう可能性が高い。このような補正は、補正がされない方向に対しては振動による影響を助長させてしまう補正となってしまう可能性がある。例えば、図3を参照して説明したように、画像2などにおいて、歪みが発生してしまう可能性がある。
本実施の形態においては、長時間露光のときには補正量が短時間露光時よりも小さくなるように、補正量に係数が乗算され、その係数が乗算された補正量(小さい値とされた補正量)が用いられて補正が実行されるため、歪みを低減させることが可能となる。
長時間露光のときには補正量が短時間露光時よりも小さくなるように、補正量に係数が乗算されるということについて、さらに図を参照して説明を加える。図10は、図8に示したような手ぶれ量が取得されたときに算出される補正量を示している。
なお、補正量は、手ぶれ量の影響を打ち消す方向に加えられる量であるため、図10が、図8に対応しているとすると、手ぶれ量の方向と補正量の方向は、それぞれ逆方向になるため、図10の補正量は、逆向きに図示すべきである。また、ライン毎の補正量の方向も、手ぶれ量の方向に依存しているため、ライン毎に異なる方向になる可能性もある。しかしながら、ここでは、説明の都合上、同じ方向に図示してある。他の図面においても、同様であるとする。
図10において、ライン8の補正量は補正量C8である。この補正量C8を代表量とする。図10のような補正量が算出されたときの露光時間は、第1の閾値より小さいときである。すなわち短時間露光のときに算出された補正量を示している。この場合、代表量以外の補正量C7乃至C0に対しては、係数として“1”が乗算される(または、係数が乗算されるといった処理が省略され、算出された補正量がそのまま用いられる)。
図11Aと図11Bは、図10と同様な補正量が算出されたときであるが、露光時間が第1の閾値より大きいとき、すなわち、長時間露光のときに算出されたときの補正量を示している。長時間露光のため、一旦算出された補正量(第1の補正量とする)に、さらに係数が乗算されることにより、実際に補正に用いられる補正量(第2の補正量とする)が算出される。図11Aと図11Bにおいて、白丸(円内が塗りつぶされていない円)は第1の補正量を表し、黒丸(円内が塗りつぶされている円)は第2の補正量を表す。
図11Aに示した第2の補正量は、係数として0.5が乗算されたときを示し、図11Bに示した第2の補正量は、係数として0が乗算されたときを示す。図中、第1の補正量を表す白丸と、第2の補正量を表す黒丸とを比較することにより、長時間露光のときには、短時間露光時よりも補正量が小さくなっていることがわかる。すなわち、長時間露光のときの補正に用いられる第2の補正量(黒丸)は、短時間露光のときの補正に用いられる第1の補正量(白丸)と比較し、小さい値となっていることが、図11Aや図11Bを参照することによりわかる。
なお、図11Bのように、係数として“0”を乗算する場合、第1の補正量に0を乗算し、第2の補正量を算出することになるが、0を乗算することにより、その算出される値は、0となる。よって、係数として0が乗算される露光時間であると判断された時点で、第1の補正量や第2の補正量を算出するといった処理を省略するようにしても良い。
例えば、図5において、ステップS12、ステップS13、ステップS14の処理を入れ換え、先に、露光時間情報の取得し、係数として0が乗算される露光時間であると判断された場合(すなわち、露光時間が第2の露光時間以上であると判断された場合)、その後の処理(第1の補正量や第2の補正量を算出する処理)を省略するようにしても良い。ただし、この場合、代表量を算出する必要はあるため、代表量のみは算出する必要はある。
このようなことは、係数として“0”を乗算するときには適用することができるため、適宜、図5に示したフローチャートの処理の順番を入れ換え、効率良く補正を行えるようにすることは本発明の適用範囲内での変更である。
図12は、他の係数の乗算の仕方について説明するための図である。図12も、図10などと同様に、ライン毎の補正量C8乃至C0を示している。図12における係数の乗算の仕方は、代表量との差分に対して係数を乗算する仕方である。すなわち、例えば、ライン7の補正量C7は、代表量C8(補正量C8)(ライン8に関する第1の補正量)と補正量C7(ライン7に関する第1の補正量)との差分に対して係数が乗算され、その係数が乗算された補正量(第2の補正量)が、ライン7における実際の補正に用いられる補正量とされる。
図12に示したのは、短時間露光時の補正量のため、係数として“1”が乗算される。すなわち、算出されている補正量(第1の補正量)がそのまま用いられる。
これに対し、図13Aは、係数として“0.5”が乗算されたときの補正量を示し、図13Bは、係数として“0”が乗算されたときの補正量を示している。図13Aと図13Bにおいても、図11Aや図11Bと同様に、白丸が第1の補正量を表し、黒丸が第2の補正量を表している。
図13Bは、係数として0が乗算されたときの第2の補正量を表しているが、この0が乗算されるのは、代表量との差分に対してであり、その代表量との差分がいくら大きくても、結果として0が乗算されれば、その値は0となる。よって、係数として“0”が乗算されるときには、全てのラインにおける補正量(第2の補正量)は、代表量と同じ値(代表量との差分は0)となり、その補正量が用いられて補正が行われることになる。
よって、このようなとき(係数として0が乗算されるとき)には、代表量が算出された時点で、補正量の算出に係わる処理を省略するようにしても良い。
図14は、図12に示した補正量で補正したときの、補正前の画像と補正後の画像とをイメージ的に表した図である。点線で図示した部分が、補正前の画像を表し、実線で図示した部分が、補正後の画像を表している。なお、図14において、補正前の画像と補正後の画像は、縦方向にも、ずらして図示しているが、説明のためにずらしただけであり、図12の補正量で、縦方向まで補正されることを意味しているのではない。
図14を参照するに、それぞれのラインにおける補正量で、ライン毎に読み出し開始位置がずらされている。このような補正が行われることにより、実際の画像は、歪みや滲みが軽減されたものとされる。
同様に図15Aは、図13Aに、図15Bは、図15Bに、それぞれ対応した図である。図15Aに示した図は、係数として0.5が乗算されたときの補正前と補正後の画像を示している。図14に示した補正後の画像(係数が“1”のときの画像)と、図15Aに示した補正後の画像(係数が“0.5”のときの画像)とを比較するに、図15Aに示した補正後の画像の方が、読み出し開始位置のずれが小さいことがわかる。
また、図15Bを参照するに、係数が0のときには、実質的に、補正前の画像を、代表量の分だけずらした画像が、補正後の画像とされていることがわかる。
このようにすることで、長時間露光のときには、加えられた手ぶれ量(振動)による影響を、少なくとも、おおざっぱであるが補正できることがわかる。すなわち、上記したように、滲みは補正しきれなくても、少なくとも歪みは補正しきれることがわかる。よって、長時間露光のときでも、振動による悪影響を低減できることになる。
図16は、他の係数の乗算の仕方について説明するための図である。図16も、図10などと同様に、ライン毎の補正量C8乃至C0を示している。図16における係数の乗算の仕方は、代表量に対しても係数を乗算する仕方である。すなわち、算出された第1の補正量全てに対して、係数を乗算し、第2の補正量を算出する方法である。
図16に示した補正量は、第1の補正量に係数として“1”を乗算しているため、値は変わらず、第1の補正量=第2の補正量となっている。よって、このような場合(短時間露光の場合)には、上記したように、係数の設定や乗算といった処理を省略するようにしても良い。
図17Aと図17Bは、それぞれ、係数として“0.5”と“0”を乗算したときの補正量を示している。図17Aを参照するに、代表量に対しても“0.5”が乗算されている。また、図17Bを参照するに、代表例に対しても“0”が乗算されている。
図18は、図16に示した補正量で補正したときの、補正前の画像と補正後の画像とを示している。また、図19Aは、図17Aに示した補正量で補正したときの、図19Bは、図17Bに示した補正量で補正したときの、補正前の画像と補正後の画像とを示している。代表量を含めて係数を乗算した場合でも、上記した場合と同様に、長時間露光のときでも、振動による悪影響を低減できることになる。
本実施の形態のように処理が実行されることにより、図20に示すように、画像Aを長時間露光時に、横方向の振動が加えられているような状況下で撮影したようなときでも、時刻T1’、時刻T2’、時刻T3’、時刻T4’においてそれぞれ撮影される画像1’、画像2’、画像3’、画像4’に、歪みが発生してしまうようなことを防ぐことが可能となる。
なお、上記した実施の形態においては、長時間露光のときには、複数の補正量のうちから、代表量を選択し、その代表量以外の補正量に対して、係数を乗算するようにした。代表量を選択しないで、全ての補正量に対して係数を乗算するようにしても良い(図16などを参照して説明したように)。また、複数の補正量のうち、選択して、例えば、奇数のラインの補正量に対してのみ係数を乗算するなどしても良い。
また、上記した実施の形態においては、長時間露光のときには、係数を乗算した補正量で補正を行うとしたが、その補正量に乗算する係数の代わりに、露光期間内の振動量(補正量)の平均値を算出し、その平均値から補正量が求められ、その補正量が用いられて、補正が行われるようにしても良い。すなわち、長時間露光のときには、1ラインが読み出される間に加えられた振動量の平均値を算出し、その平均値から補正量を算出し、その補正量で補正を行うようにしても良い。
あるいは、さらに長い期間の、例えば、露光全期間(1フィールド)分の振動量の平均を用いるようにしても良い。露光全期間分の振動量の平均を用いるようした場合、それだけのデータを記憶できる容量を有するメモリを備えるようにすれば実現できる。
平均値を算出するようにした場合、その平均値を求めるために、画像処理装置10(図4)は、フィルターを備える構成としても良い。フィルターとしては、LPF(Low Pass Filter)、補間、フィッティング(fitting:近似)などの処理を実行するものを適用することができる。
[記録媒体について]
上述した一連の処理、例えば、補正に係わる処理は、それぞれの機能を有するハードウェアにより実行させることもできるが、ソフトウェアにより実行させることもできる。一連の処理をソフトウェアにより実行させる場合には、そのソフトウェアを構成するプログラムが専用のハードウェアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどに、記録媒体からインストールされる。
図21は、汎用のパーソナルコンピュータの内部構成例を示す図である。パーソナルコンピュータのCPU(Central Processing Unit)41は、ROM(Read Only Memory)42に記憶されているプログラムに従って各種の処理を実行する。RAM(Random Access Memory)43には、CPU41が各種の処理を実行する上において必要なデータやプログラムなどが適宜記憶される。入出力インタフェース45は、キーボードやマウスから構成される入力部46が接続され、入力部46に入力された信号をCPU41に出力する。また、入出力インタフェース45には、ディスプレイやスピーカなどから構成される出力部47も接続されている。
さらに、入出力インタフェース45には、ハードディスクなどから構成される記憶部48、および、インターネットなどのネットワークを介して他の装置とデータの授受を行う通信部49も接続されている。ドライブ50は、磁気ディスク61、光ディスク62、光磁気ディスク63、半導体メモリ64などの記録媒体からデータを読み出したり、データを書き込んだりするときに用いられる。
記録媒体は、図21に示すように、パーソナルコンピュータとは別に、ユーザにプログラムを提供するために配布される、プログラムが記録されている磁気ディスク61(フレキシブルディスクを含む)、光ディスク62(CD-ROM(Compact Disc-Read Only Memory),DVD(Digital Versatile Disc)を含む)、光磁気ディスク63(MD(Mini-Disc)(登録商標)を含む)、若しくは半導体メモリ64などよりなるパッケージメディアにより構成されるだけでなく、コンピュータに予め組み込まれた状態でユーザに提供される、プログラムが記憶されているROM42や記憶部48が含まれるハードディスクなどで構成される。
なお、本明細書において、媒体により提供されるプログラムを記述するステップは、記載された順序に従って、時系列的に行われる処理は勿論、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
また、本明細書において、システムとは、複数の装置により構成される装置全体を表すものである。