JP2007028251A - 画像処理装置、画像処理方法、プログラムおよび記録媒体 - Google Patents

画像処理装置、画像処理方法、プログラムおよび記録媒体 Download PDF

Info

Publication number
JP2007028251A
JP2007028251A JP2005208145A JP2005208145A JP2007028251A JP 2007028251 A JP2007028251 A JP 2007028251A JP 2005208145 A JP2005208145 A JP 2005208145A JP 2005208145 A JP2005208145 A JP 2005208145A JP 2007028251 A JP2007028251 A JP 2007028251A
Authority
JP
Japan
Prior art keywords
image
frame image
frame
motion vector
motion
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Withdrawn
Application number
JP2005208145A
Other languages
English (en)
Inventor
Masafumi Kanai
政史 金井
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Seiko Epson Corp
Original Assignee
Seiko Epson Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Seiko Epson Corp filed Critical Seiko Epson Corp
Priority to JP2005208145A priority Critical patent/JP2007028251A/ja
Publication of JP2007028251A publication Critical patent/JP2007028251A/ja
Withdrawn legal-status Critical Current

Links

Images

Landscapes

  • Studio Devices (AREA)
  • Image Analysis (AREA)

Abstract

【課題】 手ぶれ補正をかけるには、1フレーム分以上保持するためのフレームメモリが必要である。
【解決手段】 フレーム画像受取手段によって、時系列順にフレーム画像が順次受け取られ、動きベクトル検出手段によって、n番目のフレーム画像の動きベクトルが検出される。そして、動きベクトル予測手段によって、(n+1)番目のフレーム画像の動きベクトルが予測され、切出位置算出手段によって、予測された(n+1)番目のフレーム画像の動きベクトルを用いて、(n+1)番目のフレーム画像について、所定の画像を切り出す位置を示す切出位置が算出される。n番目のフレーム画像の動きベクトルの検出と、(n+1)番目のフレーム画像の動きベクトルの予測と、(n+1)番目のフレーム画像の切出位置の算出とが、フレーム画像受取手段がn番目のフレーム画像を取得している間に行われる。
【選択図】 図2

Description

本発明は、手ぶれなどの画像揺れを含んでいる、動画像または時系列に連続する静止画像からフレーム画像を取得し、取得したフレーム画像から所定の画像を切り出したフレーム画像(補正フレーム画像)を生成することで、画像揺れを補正する画像処理装置、画像処理方法、プログラム、プログラムを記録した記録媒体に関する。
ビデオカメラやデジタルカメラ、画像撮影機能を有する携帯電話などの画像撮像装置を用いて、所望する画像を動画像として撮影する際、手ぶれによって撮影画像に生じる画像揺れ補正する画像処理技術が提案されている(例えば、特許文献1)。
特許文献1には、撮像管で撮影した数フレーム分の画像をフレームメモリに保存すると共に、動き検出回路でフレーム間の画像の動きを示す動きベクトルを求め、フレーム画像から補正フレーム画像を切り出す位置を動きベクトルに応じて変えることで、画像揺れを補正するテレビジョン信号処理装置が開示されている。
画像揺れの補正は、フレーム画像からフレーム画像より小さい部分画像(補正フレーム画像)を切り出し、補正フレーム画像を出力して行われる。補正フレーム画像を切り出すとき、画像揺れが解消するように補正フレームを切り出すことにより、出力した補正フレーム画像から画像揺れがなくなる。
図8は、フレーム画像の動きベクトルを説明するための説明図である。図8(上部)には、動画像におけるフレーム画像F(1),F(2),F(3)をそれぞれ示している(括弧内の数字は時系列順を示している)。また、フレーム画像F(1),F(2),F(3)の内部に破線で示されたフレーム画像FK(1),FK(2),FK(3)は、補正フレーム画像と同じ大きさの画像である。図8(下側)は、補正フレーム画像FK(1),FK(2),FK(3)に写っている物体が同じ位置になるように配置した図である。このとき、フレーム画像FK(1)を基準とするフレーム画像FK(2)の動きを示す動きベクトルはV0(2)となり、フレーム画像FK(2)を基準とするフレーム画像FK(3)の動きを示す動きベクトルはV0(3)となる。この動きベクトルV0(2),V0(3)が、手ぶれなどにより生じた前記撮像装置の動きを示していることになる。
したがって、図8(上部)において、フレーム画像FK(2),FK(3)の位置を、動きベクトルV0(2),V0(3)をキャンセルする方向に移動させれば、フレーム画像FK(1),FK(2),FK(3)に写っている物体が動かないことになる。すなわち画像ぶれが解消されたフレーム画像が得られることになる。このように、動きベクトルV0(2),V0(3)をキャンセルする方向に移動させたフレーム画像が、補正フレーム画像である。
次に、図19を用いて、画像ぶれの補正について説明する。最初に、動画像から時系列順に得られるフレーム画像F(2)をフレーム画像受取手段110が受け取る。次に、受け取ったフレーム画像F(2)を使って、動きベクトル検出手段120が、時系列順で一つ前のフレーム画像F(1)を基準とするフレーム画像の動きを示す動きベクトルV0(2)を検出する。そして、切出位置算出手段130が動きベクトルV0(2)をキャンセルして画像ぶれを解消する補正フレーム画像の切出位置を算出する。次に部分画像切出手段140が、フレーム画像F(2)から補正フレーム画像を切出して、画像表示手段150により補正フレーム画像を出力するのである。
特公平8−17454号公報
しかし、図19の処理において、フレーム画像F(2)は、動きベクトル検出手段120と部分画像切出手段140の2箇所で使用される。そのため、動きベクトル検出手段120でフレーム画像F(2)を使用した後に、部分画像切出手段140が再び使うまでフレーム画像F(2)を記憶しておくフレームメモリ113が必要である。
本発明は、このような課題を解決するためになされたもので、手ぶれ補正処理を行う際に必要な、フレーム画像を保持するためのメモリ量を抑えることのできる画像処理装置、画像表示装置、画像撮像装置、画像処理方法、プログラムおよび記録媒体を提供することを目的とする。
上記課題を解決するために、本発明に係る画像処理装置では、時系列に連続する、表示すべき(M+1)個(Mは2以上の整数)のフレーム画像F(1)〜F(M+1)(括弧内は時系列順を示す整数)であって、画像揺れを発生させる可能性のある前記フレーム画像F(1)〜F(M+1)を順次受け取るフレーム画像受取手段と、フレーム画像F(p−1)(1<p≦(M+1))を基準とするフレーム画像F(p)の動きを示す動きベクトルV0(p)を検出することにより、前記(M+1)個のフレーム画像F(1)〜F(M+1)のうち、M個のフレーム画像F(2)〜F(M+1)の動きを示すM個の動きベクトルV0(2)〜V0(M+1)を得る動きベクトル検出手段と、前記M個の動きベクトルV0(2)〜V0(M+1)のうちの(M−1)個の動きベクトルV0(2)〜V0(M)で示される、M個のフレーム画像F(1)〜F(M)の全体的な動きを前記画像揺れにより特定されるX個(Xは整数)の基底の周波数に分解し、当該周波数より規定されるX個の正弦波を、時間軸上で、(M+1)番目のフレーム画像F(M+1)を表示するべき時刻まで延長することにより、フレーム画像F(M)を基準とする前記フレーム画像F(M+1)の動きを示す、前記フレーム画像F(M+1)の動きベクトルである予測動きベクトルYV0(M+1)を予測する動きベクトル予測手段と、フレーム画像F(k)(kは時系列順を示す整数)からフレーム画像F(k)の一部である部分画像HFG(k)を切り出すときの切出位置S(k)を算出する切出位置算出手段であって、前記予測動きベクトルYV0(M+1)を用いて、前記画像揺れを減衰させる切出位置S(M+1)を算出する切出位置算出手段と、前記切出位置S(M+1)を用いて、前記フレーム画像F(M+1)から前記部分画像HFG(M+1)を切り出す部分画像切出手段とを有し、前記部分画像切出手段による前記部分画像HFG(M+1)の切り出しを行うことに先立ち、前記画像受取手段による時系列順でM番目のフレームの前記フレーム画像F(M)の受け取り、前記動きベクトル検出手段による動きベクトルV0(M)の検出、前記動きベクトル予測手段による前記予測動きベクトルYV0(M+1)の予測、及び前記切出位置算出手段による前記切出位置S(M+1)の算出を行い、前記部分画像切出手段による前記部分画像HFG(M+1)の切り出しの一部と前記動きベクトル検出手段による動きベクトルV0(M+1)の検出の一部とを並行して行うことを要旨とする。
これによれば、部分画像切出手段による、時系列順で(M+1)番目のフレーム画像F(M+1)から部分画像HFG(M+1)の切り出しが始まるときには、画像受取手段による時系列順でM番目のフレームのフレーム画像F(M)の受け取り、動きベクトル検出手段による動きベクトルV0(M)の検出、動きベクトル予測手段による予測動きベクトルYV0(M+1)の予測、及び切出位置算出手段による切出位置S(M+1)の算出が終了しているので、部分画像切出手段が必要とする切出位置S(M+1)は算出済みである。
そのため、部分画像切出手段は、フレーム画像受取手段が受け取ったフレーム画像F(M+1)のデータをすぐに使うことができる。また、動きベクトル検出手段による動きベクトルV0(M+1)の検出は、部分画像切出手段と並行して動作するので、フレーム画像受取手段が受け取ったフレーム画像F(M+1)のデータは、動きベクトル検出手段でもすぐに使うことが出来る。したがって、フレーム画像F(M+1)をフレームメモリなどに記憶しておく必要がなくなり、メモリ使用量を削減することが出来る。
また、動きベクトル予測部は、動きベクトル検出手段が検出した動きベクトルを用いて、M個のフレーム画像F(1)〜F(M)の動きを前記画像揺れにより特定されるX個の基底の周波数に分解する。X個の基底の周波数により規定されるX個の正弦波を時間軸上で(M+1)番目のフレームを表示するべき時間まで延長することから、フレーム画像F(M)を基準とするフレーム画像F(M+1)の動きを示す動きベクトルを精度良く予測する。
また、上記した本発明に係る画像処理装置では、前記(M−1)個の動きベクトルV0(2)〜V0(M)を用いて、任意のフレーム画像を基準位置とする前記M個のフレーム画像F(1)〜F(M)の全体的な動きを示す軌跡であるM個の動き軌跡X0(1)〜X0(M)を算出する動き軌跡算出手段をさらに有し、前記動きベクトル予測手段は、前記M個の動き軌跡X0(1)〜X0(M)を前記X個の基底の周波数に分解し、当該周波数より規定される前記X個の正弦波を、時間軸上で、前記フレーム画像F(M+1)を表示するべき時刻まで延長することにより、前記予測動きベクトルYV0(M+1)を予測する。
これによれば、(M−1)個の動きベクトルV0(2)〜V0(M)から時間軸上の動きを示す軌跡であるM個の動き軌跡X0(1)〜X0(M)が算出される。軌跡、すなわち座標列としてフレーム画像の動きを表すことで、周波数への分解と正弦波の合成のための計算が簡単になり、処理時間を短縮することができる。
また、上記した本発明に係る画像処理装置では、前記基底の周波数の数Xは、前記M個とは異なる数であることが好ましい。
基底の周波数の数Xと前記M個が同じ数である場合、予測動きベクトルYV0(M+1)の算出において、時系列順で(M+1)番目以降のフレーム画像の動きは、M個のフレーム画像F(1)〜F(M)の動きを周期的な繰り返しであるという周期性の性質が出てきてしまい、誤差が発生する。基底の周波数の数Xと前記M個が異なる数である場合、周期性の問題は発生しないので、フレーム画像F(M+1)の動きの予測精度がさらに向上する。
また、前記基底の周波数の数Xは、前記M個よりも少ない数であることが好ましい。
こうすれば、M個のフレーム画像F(1)〜F(M)を表示すべき時間は、基底の周波数の周期よりも長くなり、M個のフレーム画像F(1)〜F(M)の中に、基底の周波数と同じか高い周波数成分の情報が正確に含まれるようになる。そのため、フレーム画像F(M+1)の動きの予測精度がさらに向上する。
また、前記X個の基底の周波数のうち、直流成分を除く基底の周波数の周期は、フレーム画像F(1)を表示すべき時刻から前記フレーム画像F(M)を表示すべき時刻までの時間よりも短いことが好ましい。
これによれば、周期性の問題は発生しない上に、M個のフレーム画像F(1)〜F(M)の中に、基底の周波数と同じか高い周波数成分の情報が正確に含まれるようになる。そのため、フレーム画像F(M+1)の動きの予測精度がさらに向上する。
また、前記動き軌跡算出手段が算出した前記動き軌跡X0(1)〜X0(M)から、前記X個の基底の周波数のうちの直流成分を除く基底の周波数より低い周波数成分であるベースラインを取り除いた軌跡を前記動き軌跡X0(1)〜X0(M)として修正するベースライン算出手段をさらに有し、前記動きベクトル予測手段は、前記ベースライン算出手段により修正された前記M個の動き軌跡X0(1)〜X0(M)を前記X個の基底の周波数に分解し、当該周波数より規定される前記X個の正弦波を、時間軸上で、(M+1)番目の前記フレーム画像F(M+1)を表示するべき時刻まで延長して得られる座標位置と、前記ベースラインを、時間軸上で、(M+1)番目の前記フレーム画像F(M+1)を表示するべき時刻まで延長して得られる座標位置とを加算することにより、動き軌跡X0(M+1)を予測し、動き軌跡X0(M)及び前記動き軌跡X0(M+1)から前記フレーム画像F(M+1)の前記予測動きベクトルYV0(M+1)を予測する。
これによれば、予測動き軌跡算出手段での周波数への分解と正弦波を時間軸上で延長する処理の対象となる軌跡から、直流成分を除く基底の周波数より低周波成分を取り除く。そのため、修正された動き軌跡X0(1)〜X0(M)には、X個の基底の周波数より低い周波数が少なくなるので、予測精度が向上する。
また、前記ベースラインは、前記動き軌跡X0(1)〜X0(M)の各フレーム間の傾きを平均した傾きをもつ直線であることが好ましい。
これによれば、ベースラインは、動き軌跡X0(1)〜X0(M)の各フレーム間の傾き、すなわち、動きベクトルV0(2)〜V0(M)を平均した傾きを持つ直線となる。そのため、ベースラインの算出が簡略化できる。
また、前記動きベクトル予測手段が前記動き軌跡X0(1)〜X0(M)を使用する前に、時系列順で(M)番目のフレームに近いほど大きな重みを施すことにより、前記動き軌跡X0(1)〜X0(M)を修正する動き軌跡重み付け手段をさらに有することが好ましい。
これによれば、動き軌跡重み付け手段は、動き軌跡X0(1)〜X0(M)に、時系列順でM番目のフレームに近いほど大きな重みを施す。そして、予測フレーム画像動き算出手段により、動き軌跡X0(1)〜X0(M)をX個の基底の周波数に分解して得られるX個の正弦波は、時系列順でM番目のフレーム画像に近いフレーム画像の動きが強調される。そのため、動きベクトル予測手段手段により、予測動きベクトルYV0(M+1)は、時系列順で遠いフレーム画像の動きよりも、時系列順で近いフレーム画像の動きを反映させらるので、より正確な予測が可能になる。
また、前記動き軌跡重み付け手段は、時系列順で1番目のフレームに対応する値が0に最も近く、時系列順でM番目のフレームに対応する値が1に最も近くなる関数W(n)を用いて、フレームごとに動き軌跡X0(n)の座標とW(n)の値をかけて前記動き軌跡X0(1)〜X0(M)を修正することが好ましい。
これによれば、動き軌跡重み付け手段は、関数W(n)と動き軌跡X0(n)とをかけて動き軌跡X0(1)〜X0(M)を修正する。そのため、動き軌跡の修正を簡単にかつ早く行うことが出来る。
また、前記部分画像HFG(M+1)を時系列順に順次を表示する画像表示手段を有する。
この構成によれば、本発明の画像処理装置と同等の効果を持つ画像表示装置が得られる。
また、本発明に係る画像処理方法は、時系列に連続する、表示すべき(M+1)個(Mは2以上の整数)のフレーム画像F(1)〜F(M+1)(括弧内は時系列順を示す整数)であって、画像揺れを発生させる可能性のある前記フレーム画像F(1)〜F(M+1)を順次受け取るフレーム画像受取工程と、フレーム画像F(p−1)(1<p≦(M+1))を基準とするフレーム画像F(p)の動きを示す動きベクトルV0(p)を検出することにより、前記(M+1)個のフレーム画像F(1)〜F(M+1)のうち、M個のフレーム画像F(2)〜F(M+1)の動きを示すM個の動きベクトルV0(2)〜V0(M+1)を得る動きベクトル検出工程と、前記M個の動きベクトルV0(2)〜V0(M+1)のうちの(M−1)個の動きベクトルV0(2)〜V0(M)で示される、M個のフレーム画像F(1)〜F(M)の全体的な動きを前記画像揺れにより特定されるX個(Xは整数)の基底の周波数に分解し、当該周波数より規定されるX個の正弦波を、時間軸上で、(M+1)番目のフレーム画像F(M+1)を表示するべき時刻まで延長することにより、フレーム画像F(M)を基準とする前記フレーム画像F(M+1)の動きを示す、前記フレーム画像F(M+1)の動きベクトルである予測動きベクトルYV0(M+1)を予測する動きベクトル予測工程と、フレーム画像F(k)(kは時系列順を示す整数)からフレーム画像F(k)の一部である部分画像HFG(k)を切り出すときの切出位置S(k)を算出する切出位置算出工程であって、前記予測動きベクトルYV0(M+1)を用いて、前記画像揺れを減衰させる切出位置S(M+1)を算出する切出位置算出工程と、前記切出位置S(M+1)を用いて、前記フレーム画像F(M+1)から前記部分画像HFG(M+1)を切り出す部分画像切出工程とを有し、前記部分画像切出工程による前記部分画像HFG(M+1)の切り出しを行うことに先立ち、前記画像受取工程による時系列順でM番目のフレームの前記フレーム画像F(M)の受け取り、前記動きベクトル検出工程による動きベクトルV0(M)の検出、前記動きベクトル予測工程による前記予測動きベクトルYV0(M+1)の予測、及び前記切出位置算出工程による前記切出位置S(M+1)の算出を行い、前記部分画像切出工程による前記部分画像HFG(M+1)の切り出しの一部と前記動きベクトル検出工程による動きベクトルV0(M+1)の検出の一部とを並行して行うことを要旨とする。
この構成によれば、本発明の画像処理装置と同等の効果が得られる。
また、本発明に係る画像処理プログラムは、コンピュータを、時系列に連続する、表示すべき(M+1)個(Mは2以上の整数)のフレーム画像F(1)〜F(M+1)(括弧内は時系列順を示す整数)であって、画像揺れを発生させる可能性のある前記フレーム画像F(1)〜F(M+1)を順次受け取るフレーム画像受取手段と、フレーム画像F(p−1)(1<p≦(M+1))を基準とするフレーム画像F(p)の動きを示す動きベクトルV0(p)を検出することにより、前記(M+1)個のフレーム画像F(1)〜F(M+1)のうち、M個のフレーム画像F(2)〜F(M+1)の動きを示すM個の動きベクトルV0(2)〜V0(M+1)を得る動きベクトル検出手段と、前記M個の動きベクトルV0(2)〜V0(M+1)のうちの(M−1)個の動きベクトルV0(2)〜V0(M)で示される、M個のフレーム画像F(1)〜F(M)の全体的な動きを前記画像揺れにより特定されるX個(Xは整数)の基底の周波数に分解し、当該周波数より規定されるX個の正弦波を、時間軸上で、(M+1)番目のフレーム画像F(M+1)を表示するべき時刻まで延長することにより、フレーム画像F(M)を基準とする前記フレーム画像F(M+1)の動きを示す、前記フレーム画像F(M+1)の動きベクトルである予測動きベクトルYV0(M+1)を予測する動きベクトル予測手段と、フレーム画像F(k)(kは時系列順を示す整数)からフレーム画像F(k)の一部である部分画像HFG(k)を切り出すときの切出位置S(k)を算出する切出位置算出手段であって、前記予測動きベクトルYV0(M+1)を用いて、前記画像揺れを減衰させる切出位置S(M+1)を算出する切出位置算出手段と、前記切出位置S(M+1)を用いて、前記フレーム画像F(M+1)から前記部分画像HFG(M+1)を切り出す部分画像切出手段として機能させるためのプログラムであって、前記部分画像切出手段による前記部分画像HFG(M+1)の切り出しを行うことに先立ち、前記画像受取手段による時系列順でM番目のフレームの前記フレーム画像F(M)の受け取り、前記動きベクトル検出手段による動きベクトルV0(M)の検出、前記動きベクトル予測手段による前記予測動きベクトルYV0(M+1)の予測、及び前記切出位置算出手段による前記切出位置S(M+1)の算出を行い、前記部分画像切出手段による前記部分画像HFG(M+1)の切り出しの一部と前記動きベクトル検出手段による動きベクトルV0(M+1)の検出の一部とを並行して行うことを要旨とする。
この構成によれば、本発明の画像処理装置と同等の効果が得られる。
また、本発明を画像処理プログラムを記録したコンピュータ読み取り可能な記録媒体としても捉えることができる。この構成によれば、本発明の画像処理装置と同等の効果が得られる。
次に、本発明の実施の形態を説明する。図1は本発明の一実施形態としての画像処理装置の概略構成を示す説明図である。この画像処理装置は汎用のコンピュータ100であり、入力インターフェイス(I/F)101、CPU103、RAM102、ROM104、ハードディスク105および出力インターフェイス(I/F)106とを備え、これらはバス107を介して互いに接続されている。入力I/F101には、動画像を入力する装置としてのデジタルビデオカメラ200(画像撮像装置)およびDVDプレーヤ210が接続され、出力I/F106には動画像を出力する装置(画像表示装置)としてのビデオプロジェクタ300およびディスプレイ310が接続されている。その他、必要に応じて、動画像を記憶した記憶媒体からデータを読み出すことが可能な駆動装置や、動画像を出力することが可能な画像表示装置をそれぞれ接続することもできる。なお、動画像には時系列に連続する静止画像も含まれる。
また、上記画像撮像装置および画像表示装置が、それぞれ本発明による画像処理装置を備えるように構成することもできる。
入力I/F101は、所定の画素数とRGB形式など所定の画素値を有する動画像からフレーム画像を取得し、コンピュータ100で処理できるフレーム画像データに変換する。本実施形態では、フレーム画像を構成する所定枚数のフィールド画像から、フレーム画像データを取得するものとする。フレーム画像は、記録方式に応じて通常複数の所定枚数のフィールド画像によって構成されている。例えば、NTSC方式で記録された動画像の場合は、インターレース方式であり、毎秒60枚のフィールド画像によって毎秒30枚のフレーム画像が構成されている。従って、入力I/F101は、2つのフィールド画像の画素値を用いて1つのフレーム画像を取得する。もとより、1つのフィールド画像が1つのフレーム画像を構成しているプレグレッシブ方式(ノンインターレース方式)のような場合は、1つのフィールド画像を用いて1つのフレーム画像を取得することになる。
変換されたフレーム画像データは、RAM102又はハードディスク105に格納される。CPU103は格納されたフレーム画像データに対して所定の画像処理を実行し、補正フレーム画像データとして再びRAM102又はハードディスク105に格納する。補正フレーム画像データを生成するまでに行われる所定の画像処理に際し、必要に応じてRAM102やハードディスク105が画像処理データのワーキングメモリとして用いられる。そして、格納した補正フレーム画像データを、出力I/F106を介して所定の画像データに変換し、ビデオプロジェクタ300などに送出する。
所定の画像処理を記録したアプリケーションプログラムは、予めハードディスク105やROM104に格納されていることとしてもよい。例えばCD−ROMなどのコンピュータが読み取り可能な記録媒体によって外部から供給され、図示しないDVD−R/RWドライブを介してハードディスク105に記憶することによって格納されるものとしてもよい。もとより、インターネットなどのネットワーク手段を介して、アプリケーションプログラムを供給するサーバー等にアクセスし、データをダウンロードすることによってハードディスク105に格納されるものとしてもよい。
CPU103は、バス107を介してハードディスク105またはROM104に格納されたアプリケーションプログラムを読み出し、この読み出したアプリケーションプログラムを所定のオペレーティングシステムのもとで実行することによって、画像処理装置として機能する。図2に、本発明の一実施形態としての画像処理装置の機能ブロック図を示す。図2に示すように、このアプリケーションプログラムが実行されることにより、CPU103は、フレーム画像受取手段110、動きベクトル検出手段120、動き軌跡算出手段121、ベースライン算出手段122、動き軌跡重み付け手段123、動きベクトル予測手段124、メモリ126、切出位置算出手段130、部分画像切出手段140および画像表示手段150として機能する。
各部はそれぞれ以下の処理を司る。フレーム画像受取手段110は、コンピュータ100に入力した動画像から時系列順にフレーム画像を取得する。動きベクトル検出手段120は、取得されたフレーム画像の動きベクトルを算出して、メモリ126に格納するとともに、動き軌跡算出手段121に供給する。動き軌跡算出手段121は、現フレームから過去Mフレーム分の動き軌跡を用いて、現フレームから過去Mフレーム分のフレーム画像の動きを示す動き軌跡を算出する。そして、ベースライン算出手段122は、動き軌跡の低周波成分であるベースラインを算出して、動き軌跡算出手段121が算出した動き軌跡からベースラインの成分を取り除いたものを動き軌跡として修正する。次に動き軌跡重み付け手段123は、ベースライン算出手段122が修正した動き軌跡に対して、現フレームに近いフレームが1であり、現フレームから離れるに従って0に近づいていく窓関数W(n)を用いて、動き軌跡に重み付けを施して動き軌跡を修正する。この処理により、動き軌跡は、現フレームに近いほど、修正前の軌跡に近く、現フレームから離れるに従って、振幅がほとんどない軌跡になる。次に動きベクトル予測手段124は、動き軌跡をX個の基底の周波数に分解する。そして、基底の周波数により規定される正弦波の重ね合わせで動き軌跡を表せるようにする。次にこの正弦波を現フレームの次のフレームの時刻まで延長することで、次フレームのフレーム画像の動き軌跡を予測する。そして、この動き軌跡にベースライン成分を加算し、現フレームの動き軌跡と予測した次フレームの動き軌跡から次フレームの動きベクトルを予測するのである。
切出位置算出手段130は、動きベクトルなどを用いて、フレーム画像から所定の画像を切り出すための画像位置を補正位置ベクトルとして算出する。部分画像切出手段140は、算出された補正位置ベクトルなどに基づいて補正フレーム画像を生成する。画像表示手段150は、生成された補正フレーム画像を所定の画像データに変換して出力する。
次に、本実施形態の画像処理装置について各部が行う処理を、図3の処理フローチャートにより説明する。図3に示した処理が開始されると、まずステップS10にて、フレーム画像受取手段110は、入力される動画像から時系列順に、フレーム画像F(n)をコンピュータ100に取り込む処理を行う。なお、本実施形態における以下の画像処理装置の説明において、(n)は時系列順でn番目(nは1以上の整数)であることを意味する。また、図3において、mは整数であり、nおよびmの初期値はそれぞれn=1、m=0とする。
本実施形態では、動画像の入力をトリガーにして、自動的にフレーム画像を時系列順で順次取り込むこととする。もとより、取り込むフレーム画像を指定することとしてもよい。フレーム画像の指定方法は、動画像からフレーム画像を取得してコンピュータ100に取り込む際、通常付加されるフレーム画像の識別番号を指定するようにしてもよい。あるいは、ユーザーがビデオカメラに備えられたモニターなどのディスプレイ(図示せず)に表示されるフレーム画像を見ながら画像を直接指定することとしてもよい。
次に、ステップS20において、フレーム画像受取手段110は、コンピュータ100に取り込むことによって取得したフレーム画像F(n)が存在するか否かを判定する。動画像から取得したフレーム画像F(n)が存在すれば(YES)ステップS24に進む。一方、動画像から取得したフレーム画像F(n)が存在しなければ(NO)、ステップS22に進みmを更新して(m=m+1として)ステップS24に進む。
そして、ステップS24において、m=2か否かが判定され、m=2の場合(S24、YES)には画像処理装置における処理を終了する。
一方、m=2でない場合(S24、NO)、(A)S26、S30、S35およびS40における処理と、(B)S28およびS50における処理と、(C)S65およびS70における処理とが、S10において1フレーム分の情報を読み込む間に並行して行われる。
まず、S26、S30、S35、S40における処理について説明する。
(A)S26、S30、S35、S40における処理
ステップS26において、m=1か否かが判定され、m=1の場合(S26、YES)には、ステップS80に進む。
一方、m=1でない場合(S26、NO)、ステップS30において、動きベクトル検出手段120は、取得したフレーム画像F(n)の動きベクトルV0(n)の検出処理を行う。時系列順n−1番目のフレーム画像F(n−1)に対するフレーム画像F(n)の相対位置を検出し、その相対位置にフレーム画像F(n)を配置する。そして、フレーム画像F(n−1)の画面位置に対するフレーム画像F(n)の画面位置のずれ量を、X,Y方向のそれぞれの画素数として検出する。このX方向の画素数をX成分、Y方向の画素数をY成分とするベクトルによって表したものが、フレーム画像F(n)の動きベクトルV0(n)となる。算出した動きベクトルV0(n)のデータV0(n)は、メモリ126(RAM102など)に格納される。
次に、図4及び図5を参照して、動きベクトル検出手段120による、図3のS30におけるn番目のフレーム画像の動きベクトル検出処理を詳細に説明する。ここで、図4は、図3のS30におけるn番目のフレーム画像の動きベクトルの検出処理を詳細に説明するためのフローチャートである。また、図5は、図3のS30におけるn番目のフレーム画像の動きベクトルの検出処理を詳細に説明するための説明図である。
まず、動きベクトル検出手段120は、以下で図5を参照して説明する差分値行列をリセットする(ステップS300)。すなわち、差分値行列の成分の値をすべて0にする。
次に、動きベクトル検出手段120は、図5に示す差分算出領域の座標データを読み込む(ステップS302)。すなわち、動きベクトル検出手段120は、各サンプリングポイント毎に設定されている、フレーム画像内における差分算出領域の範囲を示す座標データをメモリ126から読み込む。なお、当該実施形態において、「差分算出領域」とは、図5において点線で示される正方形状の領域で、以下で説明するステップS310〜S316における処理を行う領域である。各処理については後述する。
次に、動きベクトル検出手段120は、(n−1)番目のフレーム画像のサンプリングポイントにおけるデータを読み込む(ステップS304)。すなわち、動きベクトル検出手段120は、メモリ126から、(n−1)番目のフレーム画像におけるサンプリングポイント(図5に示す)の座標データおよび画素データを読み込む。当該実施形態において、読み込まれる画素データは、RGBいずれかのチャンネルの値または輝度値とする。
次に、動きベクトル検出手段120は、n番目のフレーム画像における各画素データ(入力信号)およびその座標データを読み込む(ステップS306)。ここで、読み込まれる画素データは、RGBいずれかのチャンネルの値または輝度値であり、座標データは、フレーム画像内における各画素の位置を示す。読み込む順番は、図5に示すように、フレーム画像の左上から右横方向に読み込み、順次下方に1ライン毎読み込む。最終的にはフレーム画像の右下のポイントEP2まで到達し、当該読み込み処理を終了する。
次に、動きベクトル検出手段120は、ステップS306において読み込まれた各画素が差分算出領域内に存在するか否かを判定する(ステップS308)。具体的には、ステップS306で読み込んだ画素の座標データと、ステップS302で読み込んだ差分算出領域の座標データを比較し、ステップS306で読み込んだ画素が差分算出領域内に存在するか否かを判定する。
判定の結果、ステップS306で読み込んだ画素が差分算出領域外ならば(ステップS308、No)、ステップS306に戻り、次の画素を読み込む。
判定の結果、ステップS306で読み込んだ画素が差分算出領域内に存在する場合(ステップS308、Yes)、動きベクトル検出手段120は、ステップS306で読み込んだ画素の座標データと、ステップS304で読み込んだ(n−1)番目のフレーム画像におけるサンプリングポイントの座標データとが一致するか否かを判定する(ステップS310)。判定の結果、ステップS306で読み込んだ画素の座標データと、ステップS304で読み込んだ(n−1)番目のフレーム画像におけるサンプリングポイントの座標データとが一致すれば(ステップS310、Yes)、動きベクトル検出手段120は、ステップS306で読み込んだn番目のフレーム画像における画素の画素データをサンプリングデータとしてメモリ126に保存する(ステップS312)。
そして、ステップS312の処理の後、またはステップS310における判定の結果、ステップS306で読み込んだ画素の座標データと、ステップS304で読み込んだ(n−1)番目のフレーム画像におけるサンプリングポイントの座標データとが一致しない場合(ステップS310、No)、動きベクトル検出手段120は、(n−1)番目のフレーム画像におけるサンプリングポイントのデータと、n番目のフレーム画像における画素データとの差分の絶対値を算出して(ステップS314)、当該算出された絶対値を差分値行列の対応成分に加算する(ステップS316)。
当該実施形態において、図5に示すように、差分値行列は差分算出領域内の全画素数と同数のデータを格納できるように構成され、差分値行列の中央の座標がサンプリングポイントの座標に相当する。差分値の絶対値を加算する成分は、差分値行列内のサンプリングポイントに対する位置関係において、ステップS306で読み込んだ画素座標と同じ位置にある成分である。
動きベクトル検出手段120は、差分算出領域内の全画素の読み込みが終了したか否かの判定を行い(ステップS318)、ステップS306で読み込んだ画素の座標が図5の「差分値計算が終了するポイントEP1」か否かを判定する。差分算出領域内の全画素の読み込みが終了していない場合(ステップS318、No)、動きベクトル検出手段120は、ステップS306〜S316の処理を繰り返す。
差分算出領域内の全画素の読み込みが終了し、ステップS306で読み込んだ画素の座標が図5の「差分値計算が終了するポイントEP1」に到達した場合(ステップS318、Yes)、フレーム画像受取手段110がn番目のフレーム画像における残りの画素の読み込みを継続するとともに、動きベクトル検出手段120は、n番目のフレーム画像の動きベクトルを検出する(ステップS320)。すなわち、動きベクトル検出手段120は、差分値行列内における最小値の成分のサンプリングポイントからの位置(ベクトル)を求め、当該位置(ベクトル)をn番目のフレーム画像の動きベクトルとして検出して、メモリ126に保存する。
以上により図3のステップS30におけるn番目のフレーム画像の動きベクトル検出処理が終了して、図3のステップS35における(n+1)番目のフレーム画像の動きベクトルの予測処理が行われる。図6の(n+1)番目のフレーム画像の動きベクトルの予測処理を説明するためのフローチャートと、図7の動き軌跡による動きベクトルの予測処理を説明するための説明図を用いて、(n+1)番目のフレーム画像の動きベクトルの予測処理を説明する。
最初に、動き軌跡算出手段121は、(n−M+1)番目からn番目までのM個のフレーム画像の動きベクトルV0(n−M+1)〜V0(n)をメモリ126から読み取る(ステップS340)。また、フレーム画像は時系列順で1番目から始まるため、時系列順で2番目より前フレーム画像の動きベクトルは算出されていない。そのため、(n−M+1)≦1である場合は、V0(q)=0(q≦1)として、動き軌跡算出手段121がM個の動きベクトル(n−M+1)〜V0(n)を読み取れるようにする。Mは、手ぶれなどの画像揺れの周波数などにより予め決められる数であり、本実施形態では8とする。次に、動き軌跡算出手段121は、式(1)を用いて(n−M+1)番目からn番目までのM個のフレーム画像の座標を示す動き軌跡X(−M+1)〜X(0)を算出する(ステップS342)。動き軌跡X(i)と後で説明する修正された動き軌跡X1(i),X2(i),X3(i),X4(i)と、窓関数W(i)、及びベースラインB(i)における括弧内の整数iは、フレーム画像の時系列順を示す整数である。iは、フレーム画像F(n)で使用している時系列順とは原点が異なり、n番目のフレーム画像F(n)を原点0とする時系列順を示す整数である。すなわち、動き軌跡X(0)で示される座標は、フレーム画像F(n)の座標を指す。以下の説明では、n番目のフレーム画像F(n)を原点0とする時系列順を時系列順iと呼び、この時系列順を変数iを使って示して,nのような時系列順と区別する。
Figure 2007028251
式(1)は、M個の動きベクトルからM個のフレーム画像の座標を算出して動き軌跡を求めており、各フレーム画像の座標の原点は、フレーム画像F(n−M)となる。また、式(2)を使い、フレーム画像F(n−M+1)を原点として、(−M+2)≦i≦0の範囲のiについて動き軌跡X(i)を算出しても良い。
当該実施形態では、M個のフレーム画像の動きから、まだ取得していない次フレームのフレーム画像F(n+1)の動きを予測し、予測した動きを元にして手ぶれなどの画像揺れを補正する。そのため、手ぶれなどの画像揺れを十分に取り除くためには、フレーム画像F(n+1)の予測精度を高くする必要がある。フレーム画像F(n+1)の予測精度は、M個のフレーム画像の動きから手ぶれなどの画像揺れの情報を正確に抽出できるかどうかに依存する。一般に、手ぶれなど不快な画像の揺れの周波数は、2〜4Hzより高い周波数の動きであるといわれている。したがって、M個のフレーム画像を表示する時間(以下、参照時間と呼ぶ)は、取り除きたい画像の揺れの周期(1/2〜1/4)を元にして決めると良い。フレームレートが30フレーム/秒である動画の場合では、M=8〜16(参照時間=0.27秒〜0.53秒)ぐらいにするのがよく、この中でもM=8ぐらいが最適である。このように、Mの値は、取り除きたい画像の揺れの周波数と、フレームレートから決めると良い。
次に、ベースライン算出手段122は、動き軌跡X(−M+1)〜X(0)のベースラインB(i)を算出し、動き軌跡X(−M+1)〜X(0)からベースラインB(i)の成分を取り除いた動き軌跡X1(−M+1)〜X1(0)を算出する(ステップS344)。ベースラインは、式(4)に示すようにM個の動きベクトルV0(n−M+1)〜V0(n)の平均ベクトルVBを算出することで、式(3)のように示される。また、平均ベクトルVBは、(M−1)個の動きベクトルV0(n−M+2)〜V0(n)の平均から算出しても良い。
B(i)=X(0)+i×VB … (3)
Figure 2007028251
図7(A)は、動き軌跡X(−M+1)〜X(0)とベースラインB(i)をグラフに表したものである。図7(A)より、ベースラインB(i)は、動き軌跡X(i)の大きな動き、すなわち低周波の動き軌跡であることがわかる。また、ベースラインB(i)は、式(3)とは別の、動き軌跡X(i)の低周波成分を表すことが出来る式を用いても良い。次にベースライン算出手段122は、式(5)を用いて、動き軌跡X(−M+1)〜X(0)からベースラインB(i)の成分を取り除いて、修正された動き軌跡X1(i)を算出する。
X1(i)=X(i)−B(i) … (5)
修正された動き軌跡X1(i)は、ベースラインB(i)で表される大きな動きが取り除かれているため、手ぶれなどに由来する周波数の高い画像の揺れの成分が強調されていることになる。そのため、この修正された動き軌跡X1(i)を使うことで、手ぶれなどに由来する周波数の高い画像の揺れに関連する動きを精度良く計算をすることができる。
次に、動き軌跡重み付け手段123は、動き軌跡X1(i)に式(6)で示される窓関数を用いて、式(7)のように重み付けを施して、重み付けされた動き軌跡X2(i)を算出する(ステップS346)。
W(i)=exp{−(2i/M)2} … (6)
X2(i)=X1(i)×W(i) … (7)
図7(B)は窓関数の形状を示したグラフである。窓関数は、一番新しいフレーム画像F(n)に対応する窓関数W(0)の値が1であり、そこから時系列順で古いフレームに行くに従って0に近づく形状をしている。図7(C)は、式(7)を用いて、修正された動き軌跡X1(i)に窓関数をかけて重み付けを施した動き軌跡X2(i)である。図7(C)から明らかなように、重み付けされた動き軌跡X2(i)は、古いフレームほど振幅が小さく、新しいフレームになればなるほど、振幅が大きくなる。
次に、動きベクトル予測手段124は、式(8)、式(9)、式(10)を用いて、重み付けされた動き軌跡X2(i)をX個の基底の周波数に分解して、X個の正弦波の重ね合わせで表現する(ステップS348)。式(8)のX3(i)が、正弦波の重ね合わせで表現された動き軌跡である。
重み付けされた動き軌跡X2(i)は、時系列順でn番目のフレームに近いフレームほど振幅が大きくなるように重み付けを施されているので、X個の正弦波にも時系列順でn番目のフレームに近いフレームの大きな振幅の動きが強く反映されることになる。そのため、X個の正弦波には、時系列順で(n+1)に近いフレーム画像の動き、すなわち(n+1)に近い時間帯の手ぶれによる画像揺れが多く含まれていることになる。そのため、X個の正弦波から予測される次フレームの位置の予測精度が向上する。
Figure 2007028251
X個の基底の周波数は、フレームレートをf(フレーム/秒)とすると、0(Hz),f/X(Hz),2f/X(Hz),・・・,(X−1)f/X(Hz)である。u=1の時の基底の周期になるX/fが、参照時間M/fと等しくなると、式(8)では周期性が出てしまい、(n+1)番目のフレーム画像の位置の予測精度が悪くなる。そのため、XとMは違う値であるほうが良い。また、u=1の時の基底の周期になるX/fを、参照時間M/fよりも短くすれば、参照時間M/fの中に基底の周波数が1周期分以上入ることになり、予測精度が向上する。以上のことから、式(8)において、(n+1)番目のフレーム画像の位置の予測精度を向上させるためには,X≠Mであるほうが良く、参照時間よりもu=1の時の基底の周期が長い、すなわち X<Mであればさらに良い。当該実施形態では、M=8であるので、基底の周波数の数Xは7以下が良い。
次に、動きベクトル予測手段124は、式(11)を用いて、各正弦波を時間方向に次フレーム(時系列順で(n+1)番目のフレーム)まで延長し、各周波数の正弦波を加算する(ステップS350)。式(11)のX3(1)が、時系列順で(n+1)番目のフレームにまで延長された座標である。このとき、時系列順iの原点0をn番目のフレームにしているので、三角関数の計算を省略することができ、式(11)のように計算が簡単になる。図7(D)は、分解されたX個の正弦波と、各正弦波を次フレームまで延長した様子をグラフにしたものである。
Figure 2007028251
次に、動きベクトル予測手段124は、式(12)を用いて、延長された動き軌跡X3(1)とベースラインB(i)から、(n+1)番目のフレームの動き軌跡X4(1)を予測する(ステップS352)。図7(E)は、合成した正弦波とベースラインと(n+1)番目のフレームの動き軌跡X4(1)とを示した図である。
Figure 2007028251
最後に、式(13)を用いて、n番目のフレーム画像を基準とする(n+1)番目のフレーム画像の動きを示す動きベクトルV0(n+1)を算出する(ステップS354)。
Figure 2007028251
以上により図3のステップS35における(n+1)番目のフレーム画像の動きベクトルの予測処理が終了して、図3のステップS40における(n+1)番目のフレーム画像の補正位置ベクトルS(n+1)の算出処理が行われる。
ここで、次のステップS40における補正位置ベクトルS(n+1)の算出処理、及び以下のステップS420(図10)における補正動きベクトルV1(n)の算出処理について、処理内容の説明についての理解を容易にするため、フレーム画像F(n)の動きベクトルV0(n)と補正位置ベクトルS(n)、及び補正動きベクトルV1(n)の関係について、図8および図9を用いて前もって説明する。
図8は、最初に取得される時系列順1番目のフレーム画像F(1)と、2番目、3番目のフレーム画像F(2)、F(3)をそれぞれ示している。本発明は、補正量に基づいてフレーム画像から所定の画像を切り出す補正処理によって補正フレーム画像を生成する画像処理技術を提供するものであり、補正処理が行われない場合、または補正量が0の場合に切り出されるフレーム画像は、それぞれ図8破線で示したフレーム画像FK(1)、FK(2)、FK(3)となる。
ここで、フレーム画像FK(n)は、図8に示したように、フレーム画像F(n)に対して所定の補正限界値Smax分小さい画面サイズとなる。詳しくは、X方向では左右それぞれ所定の補正限界値Sxmaxだけ、Y方向では上下それぞれ所定の補正限界値Symaxだけ画面サイズが小さい画像である。つまり、切り出される画像は、X方向では2×Sxmax分、Y方向では2×Symax分小さい画面サイズとなる。
所定の補正限界値Smax(X成分はSxmax、Y成分はSymax)は、本実施形態では、予めアプリケーションプログラムにデフォルトで所定の値が設定され、ハードディスク105などに格納されているものとする。もとより、ユーザーが、コンピュータ100に接続された入力手段(図示せず)を用いてデータ入力することによって設定し、格納するものとしてもよい。
同じく図8(下側)に、求められた相対位置に従って配置されたフレーム画像FK(1)、FK(2)、FK(3)を示した。図8より明らかなように、例えばフレーム画像F(2)の動きベクトルV0(2)は、フレーム画像FK(2)の動きベクトルと等しくなる。つまり、フレーム画像F(2)の動きベクトルV0(2)は、フレーム画像FK(1)に対するフレーム画像FK(2)の画面位置として求められる。フレーム画像FK(3)の動きベクトルV0(3)も同様にフレーム画像FK(2)に対するフレーム画像FK(3)の画面位置として求められる。動きベクトルV0(2)、V0(3)のX成分はX方向の画素数、Y成分はY方向の画素数で表される。
図8において、フレーム画像F(1)は、時系列順で一つ前のフレーム画像が存在しないため、本実施形態ではフレーム画像F(1)は動いていないものとして扱い、フレーム画像FK(1)の動きベクトルV0(1)は0とする。
次に、図9を用いてフレーム画像F(n)の補正位置ベクトルS(n)と動きベクトルV0(n)、及びステップS420(図10)にて算出される補正動きベクトルV1(n)の関係を説明する。図9は、図8(下部)に示したフレーム画像FK(1)〜FK(3)の左上隅部分を拡大して示した説明図である。ここで、補正フレーム画像HFG(2)は、ステップS40(図3)で算出されるフレーム画像F(2)の補正位置ベクトルS(2)によってフレーム画像FK(2)が補正された状態を示している。
図9から明らかなように、フレーム画像FK(2)は、動きベクトルV0(2)のX成分とY成分の画素数に従ってフレーム画像FK(1)の画面位置を移動したものであり、補正フレーム画像HFG(2)は、補正位置ベクトルS(2)のX成分とY成分の画素数に従ってフレーム画像FK(2)の画面位置を移動したものである。また、同様に、フレーム画像FK(3)は、動きベクトルV0(3)のX成分とY成分の画素数に従ってフレーム画像FK(2)の画面位置を移動したものであり、補正フレーム画像HFG(3)は、補正位置ベクトルS(3)のX成分とY成分の画素数に従って、フレーム画像FK(3)の画面位置を移動したものである。
また、図9に示したように、補正動きベクトルV1(2)は、フレーム画像FK(1)に対する補正フレーム画像HFG(2)の相対的な画面位置を示すものであり、補正動きベクトルV1(3)は、補正フレーム画像HFG(2)に対する補正フレーム画像HFG(3)の相対的な画面位置を示すものである。なお、動きベクトルV0(1)は0であることより補正位置ベクトルS(1)も0となる(後述する)。従って、フレーム画像FK(1)は補正フレーム画像HFG(1)と同じものになる。
ここで、動きベクトルV0(n)および補正動きベクトルV1(n)は、X成分は図面右方向をプラス、Y成分は図面上方向をプラスとするが、補正位置ベクトルS(n)は、移動量を補正する意味から動きベクトルと反対に、X成分は図面左方向をプラス、Y成分は図面下方向をプラスとする。従って、フレーム画像FK(2)、FK(3)の補正位置ベクトルS(2)、S(3)は、図9に示したように動きベクトルV0(2)、V0(3)と反対方向がプラス方向になる。
なお、当該実施形態では、動きベクトルV0(n+1)の代わりに、S35で求められた(n+1)番目のフレーム画像の動き予測ベクトルを用いる。
次に、図3に戻り、切出位置算出手段130は、ステップS40において、補正位置ベクトルS(n+1)の算出処理を行う。ステップS40での処理については、図10のフローチャートを用いて詳しく説明する。
ステップS40の処理が開始されると、まずステップS410において、S35で求められた注目するフレーム画像F(n+1)の予測動きベクトルV(n+1)を入力する処理を行う。ここでは、ステップS35にて求められ、RAM102などのメモリ126に格納された予測動きベクトルV(n+1)を、CPU103が読み出すことによって入力処理を行う。
次に、ステップS420にて、注目するフレーム画像F(n+1)に対して時系列順で一つ前のフレーム画像(以下、単に「前フレーム画像」と称する)の補正動きベクトルV1(n)を算出する処理を行う。補正動きベクトルV1(n)は、X成分V1x(n)とY成分V1y(n)のベクトルとして以下の式を用いて算出する。
V1x(n)=V0x(n)−Sx(n)
V1y(n)=V0y(n)−Sy(n)
図8及び図9を参照して説明したように算出され、RAM102などのメモリ126に格納される。
また、ステップS430にて、フレーム画像F(n)の補正位置ベクトルS(n)を入力する処理を行う。具体的には、一つ前のフレーム画像F(n−1)が入力されている間のステップS40(図3)において算出され、RAM102などのメモリ126に格納された補正位置ベクトルS(n)を、CPU103が読み出すことによって入力処理を行う。
ステップS420及びステップS430において、「n=1」つまり時系列順1番目のフレーム画像の場合、前フレーム画像が存在しない。この場合は、前述したように本実施形態ではフレーム画像F(n)は動いていないものとし、その結果、補正動きベクトルV1(1)は0、また補正位置ベクトルS(1)も0となる。
次に、ステップS440にてX、Y各成分別に減衰係数K、Dの値の決定処理を行う。減衰係数K、Dは、次の処理ステップS490で用いる所定の演算式において使用する係数であり、補正位置ベクトルの大きさ、つまり補正量を決める係数となる。減衰係数K、Dとも、それぞれ1以下の小数である。
本実施形態では、次の3つの実施例のうち少なくとも一つの方法を用いて減衰係数K、Dの値を決定する。
「減衰係数決定方法の第1実施例」
前フレーム画像を補正した補正フレーム画像(以下、単に「前補正フレーム画像」と称する)について算出した画像の移動量と、注目するフレーム画像の移動量との大小によって、減衰係数K、Dの値を決定する。さらに、注目するフレーム画像の移動量が、前補正フレーム画像の移動量以上の場合、注目するフレーム画像の予測動きベクトルの方向と、前補正フレーム画像の補正動きベクトルの方向とに基づいて減衰係数K、Dの値を決定する方法。
「減衰係数決定方法の第2実施例」
補正可能範囲を示す補正限界値に対する前フレーム画像の補正量の比率と、前フレーム画像の補正量が「増加」か「減少」かの判断とによって、減衰係数K、Dの値を決定する方法。
「減衰係数決定方法の第3実施例」
補正可能範囲である補正限界値と、前フレーム画像の補正量との差分量に対して、注目するフレーム画像の予測動きベクトルと、前フレーム画像の補正動きベクトルとの差分量が、どれくらいの割合にあるかによって、減衰係数K、Dの値を決定する方法。
「第1の実施例」
まず、ステップS440(図10)にて行われる処理について、第1の実施例における減衰係数K、Dの決定処理の詳細を、図11に示した処理フローチャートを用いて説明する。第1の実施例での減衰係数K、Dの値の決定方法は、注目するフレーム画像の予測動きベクトルの大きさ及び向きと、時系列順一つ前の補正フレーム画像の大きさ及び向きとから補正量を算出し、予測動きベクトルの方向変化と大きさにあわせて注目するフレーム画像の補正量を算出しようとするものである。なお、ここでは、注目するフレーム画像のX成分についての処理を説明するが、処理ステップS440ではY成分についても図11に示したX成分の処理と同様の処理を行い、X成分、Y成分それぞれについて減衰係数K、Dの値を決定する。そして、後述する次の処理ステップS490(図10)において、補正位置ベクトルのX成分とY成分を所定の演算式にて算出する際、それぞれ決定した減衰係数K、Dの値を用いるのである。
ここでの処理が開始されると、まずステップS441において、S35で求められた注目するフレーム画像の予測動きベクトルV(n+1)のX成分Vx(n+1)の抽出処理を行う。X成分Vx(n+1)はX方向の画素数で示され、図9に示したようにベクトルの向きが図面右方向であればプラス、左方向であればマイナスとなる。なお注目するフレーム画像の予測動きベクトルV(n+1)のY成分Vy(n+1)については、図9に示したようにベクトルの向きが図面上方向であればプラス、下方向であればマイナスとなる。
次に、ステップS442にて、注目するフレーム画像に対して時系列順で一つ前のフレーム画像の補正動きベクトルV1(n)のX成分V1x(n)の抽出処理を行う。もとより、前述したように、V1x(0)=0である。
次に、ステップS443にて、Vx(n+1)の絶対値と、V1x(n)の絶対値とを算出する。そして、次の処理ステップS444にてVx(n+1)の絶対値がV1x(n)の絶対値以上か否かを判定する。ステップS444でNOの場合、つまり注目するフレーム画像の移動量が、前補正フレーム画像の移動量より小さい場合、ステップS445に進み、減衰係数K、Dの値をK1、D1に決定し、ステップS490(図10)に進む。
一方、ステップS444でYESの場合、つまり注目するフレーム画像の移動量が、前補正フレーム画像の移動量以上の場合、ステップS446に進み、Vx(n+1)とV1x(n)の積BSxを算出する。そして、次の処理ステップS447にて、BSxが0以上か否かを判定する。つまり、ここではベクトルVx(n+1)とベクトルV1x(n)とが同じ向き(0以上)なのか逆向き(0より小さい)なのかを調べるのである。
ステップS447にてNOの場合(つまり逆向きの場合)、ステップS448に進み、減衰係数K、Dの値をK2、D2に決定し、ステップS490(図10)に進む。ここで、K2の値はK1の値より大きく、D2の値はD1の値よりも大きい値である。
一方、ステップS447にてYESの場合(つまり同じ向きの場合)、ステップS449に進み、減衰係数K、Dの値をK3、D3に決定し、ステップS490(図10)に進む。ここで、K3の値はK2の値より大きく、D3の値はD2の値よりも大きい値である。
第1の実施例における減衰係数K、Dの値について、その一例を図12の減衰係数テーブルGKT1に示した。ここで、減衰係数Kの値は0.9≦K≦1の範囲で、K1<K2<K3を満たす値であることが望ましい。また、減衰係数Dの値は0.5≦D≦1の範囲で、D1<D2<D3を満たす値であることが望ましい。補正しようとするフレーム画像の移動量Vx(n+1)が、前補正フレーム画像の移動量V1x(n)より小さい場合、補正しようとするフレーム画像の移動量Vx(n+1)が前フレーム画像の移動量V1x(n)に対して減少しているということになる。従って、仮に、補正しようとするフレーム画像の補正フレーム画像の移動量V1x(n+1)が、前フレーム画像の移動量V1x(n)と同じであるように補正しようとするフレームの補正量Sx(n+1)を指定した(つまりK=D=1)とすると、補正量Sx(n+1)が補正限界値に達する確率は高くなる。そこで、小さい値の減衰係数を用いて補正量を少なくし、補正限界値に達しにくくするのである。
また、補正しようとするフレーム画像の移動量が、前補正フレーム画像の移動量以上である場合あっても、これら2つのフレーム画像の移動量が違う方向のときは、補正しようとするフレーム画像の補正フレーム画像の移動量V1x(n+1)が、前フレーム画像の移動量V1x(n)と同じであるように補正しようとするフレームの補正量Sx(n+1)を指定した(つまりK=D=1)とすると、補正量Sx(n+1)が補正限界値に達する確率は高くなる。そこで、同じ方向のときにくらべて減衰係数の値を小さくして、補正しようとするフレーム画像の補正量を少なくするのである。なお、減衰係数K1〜K3、D1〜D3の値は、本実施例に限らず、前述した条件を満たす値であれば何でもよい。
「第2の実施例」
次に、第2の実施例における減衰係数K、Dの決定処理の詳細を、図13に示した処理フローチャートを用いて説明する。第2の実施例での減衰係数K、Dの値の決定方法は、補正限界値に近いか否かを所定の比率RSによって補正量を算出し、さらに、所定の演算式によって補正量が増加か減少かを判断して注目するフレーム画像の補正量を算出しようとするものである。なお、ここでも、注目するフレーム画像のX成分についての処理を説明するが、処理ステップS440ではY成分についても図13に示したX成分の処理と同様の処理を行い、X成分、Y成分それぞれについて減衰係数K、Dの値を決定する。そして、後述する次の処理ステップS490(図10)にて、補正位置ベクトルのX成分とY成分を所定の演算式にて算出する際に、それぞれ決定した減衰係数K、Dの値を用いるのである。
ここでの処理が開始されると、まずステップS451にて補正限界値Sxmaxの入力処理を行う。具体的には、CPU103がハードディスク105などに格納されたSmaxのX成分についての値を読み出すことで行う。
次に、ステップS452にて、フレーム画像F(n)の補正位置ベクトルS(n)のX成分Sx(n)の抽出処理を行う。具体的には、S10において一つ前のフレーム画像F(n−1)が入力されている間のステップS40(図3)において算出され、RAM102などのメモリ126に格納された補正位置ベクトルS(n)を、CPU103が読み出すことによって入力処理を行う。ここで、前述したように、X成分Sx(n)は、画面左方向を正方向とする画素数で表される。もとよりY成分Sy(n)は、画面下方向を正とする画素数で表される。
次に、ステップS453にて、Sx(n)の絶対値をSxmaxで除した比率RSの値を算出する。RSの値が大きいほど、補正量が補正限界値に近い状態であることを示すことになる。
次にステップS454において、S35で求められた予測動きベクトルV(n+1)のX成分Vx(n+1)の抽出処理を行う。X成分Vx(n+1)はX方向の画素数で示され、図9に示したようにベクトルの向きが図面右方向であればプラス、左方向であればマイナスとなる。なお予測動きベクトルV(n+1)のY成分Vy(n+1)については、図9に示したようにベクトルの向きが図面上方向であればプラス、下方向であればマイナスとなる。
次に、ステップS455にて、フレーム画像F(n)の補正動きベクトルV1(n)のX成分V1x(n)の抽出処理を行う。なお、前述したように、n=1のときはV1x(1)=0である。
ステップS452、S454、S455にて抽出した各ベクトルを用いて、次のステップS456では、式(14)より傾向値KHxを算出する処理を行う。
KHx=Sx(n)×(Vx(n+1)−V1x(n))…(14)
次に、ステップS457にて、傾向値KHxが0以上か否かの判定処理を行う。そして、YESの場合は、ステップS459にて補正は「増加」と判断し、NOの場合はステップS458にて補正は「減少」と判断する処理を行う。Sx(n)つまり前フレーム画像の補正位置ベクトルに基づく補正方向と、Vx(n+1)−V1x(n)つまり注目するフレーム画像の予測動きベクトルと前フレーム画像の補正ベクトルとの差に基づく画像の移動方向とを比べて、それぞれの向きが逆方向の場合は増加、同じ方向の場合は減少と判断するのである。
次に、算出された比率RSと「増加」又は「減少」の判断情報から、ステップS460にて、減衰係数テーブルGKT2を用いて減衰係数K、Dの値を決定する処理を行う。減衰係数テーブルGKT2の一例を図14に示す。減衰係数テーブルはハードディスク105などに格納され、比率RSのデータと「増加」又は「減少」の情報とから、CPU103は、減衰係数テーブルGKT2より該当するアドレスの値を読み出し、減衰係数K、Dの値を決定する。
図14に示したように、第2の実施例では、減衰係数テーブルGKT2において、比率RSの値を、小数点第2位を四捨五入し0.1きざみの値とした。そして、減衰係数K、Dの値を、比率RSが大きい値になるに従って、前の値以下の小さい値になるよう設定した。さらに「増加」情報に対応する値を、「減少」情報に対応する値よりも小さい値に設定した。比率RSが同じ場合でも、増加と判断した場合は、補正方向と画像の移動方向とが逆方向であることから、減少と判断した場合よりも補正が補正限界値に達しやすいため、減衰係数K、Dを小さくして補正量を少なくするのである。もとより、比率RSの値はさらに細かいきざみ幅としたり、逆にもっと粗いきざみ幅としたりしてもよい。さらに、きざみ幅も同一でなく変化させたりしても差し支えない。
図14に示した減衰係数テーブルGKT2は、減衰係数K、Dの具体的な数値設定の一例を示したものであり、減衰係数Kの値は0.9≦K≦1の範囲で、減衰係数Dの値は0.5≦D≦1の範囲で、RSの値に合わせて変更してもよい。このとき、RSの値が大きい値になるに従って、減衰係数K、Dの値は前の値以下の小さい値になるよう設定することが好ましい。RSの値が大きい場合は、RSの値が小さい場合よりも補正量が補正限界値に近いことになるため、減衰係数を小さくして補正量を少なくするのである。
「第3の実施例」
次に、第3の実施例における減衰係数K、Dの決定処理の詳細を、図15に示した処理フローチャートを用いて説明する。第3の実施例での減衰係数K、Dの値の決定方法は、注目するフレーム画像の補正量を算出する際、時系列順で一つ前の補正フレーム画像の補正量で補正したとき、補正限界値まで何回補正可能かを調べて注目するフレーム画像の補正量を算出しようとするものである。なお、ここでも、注目するフレーム画像のX成分についての処理を説明するが、処理ステップS440ではY成分についても図15に示したX成分の処理と同様の処理を行い、X成分、Y成分それぞれについて減衰係数K、Dの値を決定する。そして、後述する次の処理ステップS490(図10)にて、補正位置ベクトルのX成分とY成分を所定の演算式にて算出する際に、それぞれ決定した減衰係数K、Dの値を用いるのである。
ここでの処理が開始されると、まずステップS461にて補正限界値Sxmaxの入力処理を行う。具体的には、CPU103がハードディスク105などに格納されたSmaxのX成分についての値を読み出すことで行う。
次にステップS462において、S35で求められた予測動きベクトルV(n+1)のX成分Vx(n+1)の抽出処理を行う。X成分Vx(n+1)はX方向の画素数で示され、図9に示したようにベクトルの向きが図面右方向であればプラス、左方向であればマイナスとなる。なお予測動きベクトルV(n+1)のY成分Vy(n+1)については、図9に示したようにベクトルの向きが図面上方向であればプラス、下方向であればマイナスとなる。
次に、ステップS463にて、補正動きベクトルV1(n)のX成分V1x(n)の抽出処理を行う。もとより、前述したように、n=1のときはV1x(1)=0である。
次に、ステップS464にて、補正位置ベクトルS(n)のX成分Sx(n)の抽出処理を行う。ここで、前述したように、X成分Sx(n)は、画面左方向を正方向とする画素数で表される。もとよりY成分Sy(n)は、画面下方向を正とする画素数で表される。
次に、ステップS465にて、式(15)よりベクトル差分値BSTの算出処理を行う。
BST=|Vx(n+1)−V1x(n)| …(15)
次に、ステップS466にて、式(16)より補正残量値SZTの算出処理を行う。
SZT=Sxmax−|Sx(n)| …(16)
次に、ステップS467にて、式(17)より補正限界フレーム数Tの算出処理を行う。
T=SZT÷BST …(17)
ステップS467にて算出された補正限界フレーム数Tの値から、ステップS468にて、減衰係数テーブルGKT3を用いて減衰係数K、Dの値を決定する。減衰係数テーブルGKT3の一例を図16に示す。減衰係数テーブルGKT3はハードディスク105などに格納され、補正限界フレーム数Tのデータから、CPU103は、減衰係数テーブルGKT3より該当するアドレスの値を読み出し、減衰係数K、Dの値を決定する。
図16に示した減衰係数テーブルGKT3において、補正限界フレーム数Tは、小数点第一位を四捨五入して整数値化した値とした。また減衰係数テーブルGKT3は、具体的な数値設定の一例を示したものであり、減衰係数Kの値は0.9≦K≦1の範囲で、減衰係数Dの値は0.5≦D≦1の範囲で、補正限界フレーム数Tの値に合わせて変更してもよい。このとき、Tの値が大きい値になるに従って、減衰係数K、Dの値は大きい値になるよう設定することが好ましい。Tの値が大きい場合は、Tの値が小さい場合よりも補正限界値に達するまでの補正量に余裕があることになるため、減衰係数を大きくしてフレーム画像の補正量を多くするのである。
以上、第1から第3の実施例にて説明したX成分についての処理を、Y成分についても同様に行い、X、Y各成分別に減衰係数K、Dの値を決定して処理ステップS490に進む。
第1ないし第3の実施例によって減衰係数K、Dの値がX成分、Y成分について決定されると、ステップS490(図10)に戻り、所定の演算式を用いて補正位置ベクトルS(n+1)を算出する処理を行う。本実施形態では、所定の演算式として次の式(18)を用いる。
S(n+1)=K×S(n)+D×(V(n+1)−V1(n)) …(18)
補正位置ベクトルS(n+1)は、具体的には式(18)を用いて、X成分およびY成分についての補正位置ベクトルSx(n+1)およびSy(n+1)をそれぞれ算出することによって求められる。
式(18)から明らかなように、予測動きベクトルV(n+1)と、フレーム画像F(n)を補正した補正フレーム画像HFG(n)の補正動きベクトルV1(n)との差分を求め、この差分に減衰係数Dを乗じた値を補正位置ベクトルS(n+1)の算出に用いるため、フレーム画像F(n+1)を補正した補正フレーム画像HFG(n+1)と前補正フレーム画像HFG(n)間について、画像の移動が滑らかになる確率が高くなる。
なお式(18)において、注目するフレーム画像が時系列順1番目(n=1)の場合、本実施形態では前述したようにフレーム画像F(1)は動いていないとしたことから、S(1)=0である。ちなみに、
n=2の場合は、S(2)=K×0+D×(V(2)−0)=D×V(2)
n=3の場合は、S(3)=K×S(2)+D×(V(3)−V1(2))
によって、補正位置ベクトルが算出される。
(B)S28およびS50における処理
次に、図3に戻り、前記(A)S26、S30、S35およびS40における処理および(C)S65およびS70における処理と並行して行われるS28およびS50における処理について説明する。
まず、ステップS28において、m=1か否かが判定され、m=1の場合(S28、YES)には、ステップS80に進む。
一方、m=1でない場合(S28、NO)、ステップS50において、部分画像切出手段140が、補正フレーム画像HFG(n)の生成処理を行う。
図17に、n=3のときフレーム画像F(3)から所定の画像を切り出して生成される補正フレーム画像HFG(3)の例を示した。図17の上側に、補正がされない場合つまり補正量が0である場合において所定の画像となるフレーム画像FK(3)を破線で示した。そして、図17の下側に、ステップS40にて算出された補正位置ベクトルS(3)に従って、X方向にSx(3)、Y方向にSy(3)だけ画面位置を補正して切り出した補正フレーム画像HFG(3)を示した。
同様に、一般的に、S10において(n−1)番目のフレーム画像F(n−1)が入力されている間にステップS40において算出される補正位置ベクトルS(n)に従って、フレーム画像F(n)の画面位置をX方向にSx(n)、Y方向にSy(n)だけを補正して切り出して補正フレーム画像HFG(n)を生成する。
このように、画面位置を補正することによって、フレーム画像について画像の移動量が抑えられることになる。
(C)S65およびS70における処理
次に、図3に戻り、前記(A)S26、S30、S35およびS40における処理および(B)S28およびS50における処理と並行して行われるS65およびS70における処理について説明する。
まず、S65では、画像表示手段150が、S10で(n−1)番目のフレーム画像F(n−1)が入力されている間にS50において生成された補正フレーム画像HFG(n−1)の拡大処理を、S10でn番目のフレーム画像F(n)が入力されている間に行う。
S50において生成される補正フレーム画像の画面サイズは、取得したフレーム画像の画面サイズに対して、横方向で2×Sxmax、縦方向で2×Symax分小さい画像であるが、当該実施形態においては、S50において生成される補正フレーム画像の画面サイズを、取得したフレーム画像と同じ画面サイズに拡大する。
画面の拡大は、補正フレーム画像の画素数をフレーム画像の画素数と同じにすることで行う。画像を構成する画素数の増加は、画素の補間処理によって実現することができる。補間処理は、バイ・リニア法のほか、バイ・キュービック法、ニアレストネイバ法など、周知の手法を用いる。
次に、ステップS70にて、画像表示手段150が、S65において拡大された補正フレーム画像HFG(n−1)の出力処理を行う。本実施形態では、拡大された補正フレーム画像HFG(n−1)を、出力I/F106(図1)によってビデオプロジェクタ300などの画像表示装置が必要とする画像信号に変換し、補正フレーム画像を生成する毎に直ちに出力するものとする。こうすれば、補正対象となるフレーム画像の取得後から補正フレーム画像の出力までの時間が短くなり、補正をリアルタイムでおこなえる。もとより、拡大された補正フレーム画像HFG(n−1)の出力先をRAM102やハードディスク105などに設けられた所定の画像ファイルとし、生成した一連の複数の補正フレーム画像を格納することとしてもよい。
以上でS26〜S70についての処理を終了し、ステップS80にてnを更新する(n=n+1とする)。そして、ステップS10に戻り、時系列順で一つ後のフレーム画像について同様の処理を繰り返し、取得される全てのフレーム画像について補正フレーム画像を出力する。
図18に、本発明の一実施形態による画像処理装置の動作タイミング図を示す。横軸は時間であり、「(1)入力画像信号」におけるn、n+1は、それぞれS10においてn番目および(n+1)番目のフレーム画像が入力されている間を示す。Δtは、図5に示すように、S306で読み込まれている画素が、EP1(差分値計算が終了するポイント)からEP2(当該フレームにおけるデータの読み込みが終了するポイント)に至るまでの時間であり、その間に次フレームの動きベクトルの予測処理および補正位置算出処理を行う。もし、現フレームの読み込みが終了してから(EP2)、次のフレームの読み込みが開始されるまでの間に、垂直ブランキング期間などの時間が存在する場合には、次フレームの動きベクトルの予測処理および補正位置算出処理は、次フレームの読み込みが開始されるまでの間に行えば良い。「(2)差分算出領域」における各矢印は、各差分算出領域において図4のS310〜S318の処理が行われている間を示す。「(3)動きベクトル検出」における矢印{n−(n−1)}および{(n+1)−n}は、それぞれn番目および(n+1)番目のフレーム画像の動きベクトル検出処理(S30)が行われている間を示す。「(4)次フレーム動きベクトル予測」における矢印{(n+1)−n}および{(n+2)−(n+1)}は、それぞれ(n+1)番目および(n+2)番目のフレーム画像の動きベクトル予測処理(S35)が行われている間を示す。「(5)補正位置算出処理」における矢印{(n+1)−n}および{(n+2)−(n+1)}は、それぞれ(n+1)番目および(n+2)番目のフレーム画像の補正位置算出処理(S40)が行われている間を示す。「(6)フレーム画像切り出し」におけるn、n+1は、それぞれS10においてn番目および(n+1)番目のフレーム画像の切り出し処理(S50の補正フレーム画像の生成処理)が行われている間を示す。「(7)フレーム画像拡大」におけるn−1、nは、それぞれS10において(n−1)番目およびn番目のフレーム画像の拡大および出力処理(S65およびS70)が行われている間を示す。
図18から明らかなように、S10においてn番目のフレーム画像を読み込んでいる間に、n番目のフレーム画像以前の複数のフレーム画像に基づき求めた動きベクトルから、(n+1)番目のフレーム画像の予想動きベクトルを求めることができる。求めた(n+1)番目のフレーム画像の予想動きベクトルを用いて補正位置算出処理を行う。これによって、入力映像に対し手ぶれによる画像ぶれの補正を行う。
また、S10においてn番目のフレーム画像を読み込んでいる間に、n番目のフレーム画像の動きベクトル算出、(n+1)番目のフレーム画像の予想動きベクトルの算出、(n+1)番目のフレーム画像の読み出し位置の計算を行う。もし、n番目のフレーム画像と(n+1)番目のフレーム画像の間に垂直ブランキング期間などの時間が存在する場合には、(n+1)番目のフレーム画像の予測動きベクトルの算出と(n+1)番目のフレームの読み出し位置の計算は、(n+1)番目のフレーム画像の読み込みが開始されるまでの間に行えば良い。S10においてn番目のフレーム画像を読み込んでいる間に求めた(n+1)番目のフレーム画像の読み出し位置を用いて、(n+1)番目のフレーム画像を読み込むのと平行して、(n+1)番目のフレーム画像の切り抜き画像を出力することができる。
このようにして、n番目のフレーム画像以前の複数のフレーム画像に基づいて求めた動きベクトルから、次のフレーム画像での動きベクトルを予測することができる。よって、動きベクトルの検出から次フレーム画像の動きベクトルの予測、次フレーム画像に対する補正量の計算までを、1フレーム画像分の情報を読み込む間に平行して行うことにより、手ぶれ補正処理などをリアルタイムで行う際に必要な、フレーム画像を保持するためのメモリの量を抑えつつリアルタイムの処理が可能になる。
以上、本発明の一実施形態を説明したが、本発明はこうした実施の形態に何ら限定されるものではなく、本発明の趣旨を逸脱しない範囲内において様々な形態で実施し得ることは勿論である。
(変形例1)例えば、前記実施形態では、動画像から取得したフレーム画像F(n)の動きベクトルを、フレーム画像F(n)とフレーム画像F(n−1)との相対的な位置関係から算出したが、動画像を撮影する際に、速度センサーや加速度センサーなど移動量を検出する手段によって、フレーム画像のメタデータとして画面位置データが存在する場合は、この画面位置データを用いて動きベクトルを算出してもよい。こうすれば、画像のパターンマッチングや特徴点追跡といった画像処理を行う必要がなく、動きベクトルを算出に関する処理の負荷を軽減することができる。
(変形例2)また、前記実施形態における画像処理装置は、汎用のコンピュータで構成するようにしたが、本発明はこれに限定されるものでなく、モバイルコンピュータやワークステーションなどで構成するようにしてもよい。あるいは、デジタルカメラやビデオカメラ、DVD録画再生機、またはビデオプロジェクタやTV、あるいは携帯電話など、動画像を記録又は再生できる機器や、時系列順で静止画像を記録又は再生できる種々の機器に、本発明の画像処理装置を組み込んで構成するようにしてもよい。
(変形例3)また、前記実施形態における画像処理装置は、フレーム画像を構成する所定枚数のフィールド画像全てからフレーム画像を取得し、この取得したフレーム画像について所定の画像を切り出す位置を補正するものとしたが、これに限定せず、フレーム画像がN枚(Nは2以上の整数)のフィールド画像によって構成されている場合、これらN枚のフィールド画像のうち、1枚からN−1枚までのうち任意の枚数のフィールド画像から得られる画像をフレーム画像として、所定の画像を切り出す位置を補正するものとしても差し支えない。
本発明の一実施形態としての画像処理装置の概略構成を示す説明図である。 本発明の一実施形態としての画像処理装置の機能ブロック図である。 本発明の一実施形態としての画像処理装置における処理を説明するフローチャートである。 図3のS30におけるn番目のフレーム画像の動きベクトルの検出処理を詳細に説明するためのフローチャートである。 図3のS30におけるn番目のフレーム画像の動きベクトルの検出処理を詳細に説明するための説明図である。 (n+1)番目のフレーム画像の動きベクトルの予測処理を説明するためのフローチャートである。 動き軌跡により動きベクトルの予測処理を説明するための説明図である。 フレーム画像の動きベクトルを説明するための説明図である。 フレーム画像の動きベクトルと補正動きベクトル、及び補正位置ベクトルの関係を説明するための説明図である。 補正位置ベクトルの算出処理を説明するフローチャートである。 第1の実施例における減衰係数の決定処理を説明するフローチャートである。 第1の実施例における減衰係数の値を説明するための減衰係数テーブルである。 第2の実施例における減衰係数の決定処理を説明するフローチャートである。 第2の実施例における減衰係数の値を説明するための減衰係数テーブルである。 第3の実施例における減衰係数の決定処理を説明するフローチャートである。 第3の実施例における減衰係数の値を説明するための減衰係数テーブルである。 フレーム画像から補正フレーム画像を生成する方法を説明する説明図である。 本発明の一実施形態による画像処理装置の動作タイミング図である。 従来の画像ぶれ補正処理時のデータの流れを説明する説明図である。
符号の説明
100…コンピュータ、101…入力I/F、102…RAM、103…CPU、104…ROM、105…ハードディスク、106…出力I/F、107…バスライン、110…フレーム画像受取手段、120…動きベクトル検出手段、121…動き軌跡算出手段、122…ベースライン算出手段、123…動き軌跡重み付け手段、124…動きベクトル予測手段、126…メモリ、130…切出位置算出手段、140…部分画像切出手段、150…画像表示手段、200…ビデオカメラ、210…DVDプレーヤ、300…プロジェクタ、310…ディスプレイ、F(n)…フレーム画像、FK(n)…フレーム画像、HFG(1)…補正フレーム画像、Smax…補正限界値、Sxmax…補正限界値のX成分、Symax…補正限界値のY成分、V0(n)…動きベクトル、V1(n)…補正動きベクトル、S(n)…補正位置ベクトル、Sx(n)…補正位置ベクトルのX成分、Sy(n)…補正位置ベクトルのY成分、K…減衰係数、D…減衰係数、GKT1〜3…減衰係数テーブル。

Claims (13)

  1. 時系列に連続する、表示すべき(M+1)個(Mは2以上の整数)のフレーム画像F(1)〜F(M+1)(括弧内は時系列順を示す整数)であって、画像揺れを発生させる可能性のある前記フレーム画像F(1)〜F(M+1)を順次受け取るフレーム画像受取手段と、
    フレーム画像F(p−1)(1<p≦(M+1))を基準とするフレーム画像F(p)の動きを示す動きベクトルV0(p)を検出することにより、前記(M+1)個のフレーム画像F(1)〜F(M+1)のうち、M個のフレーム画像F(2)〜F(M+1)の動きを示すM個の動きベクトルV0(2)〜V0(M+1)を得る動きベクトル検出手段と、
    前記M個の動きベクトルV0(2)〜V0(M+1)のうちの(M−1)個の動きベクトルV0(2)〜V0(M)で示される、M個のフレーム画像F(1)〜F(M)の全体的な動きを前記画像揺れにより特定されるX個(Xは整数)の基底の周波数に分解し、当該周波数より規定されるX個の正弦波を、時間軸上で、(M+1)番目のフレーム画像F(M+1)を表示するべき時刻まで延長することにより、フレーム画像F(M)を基準とする前記フレーム画像F(M+1)の動きを示す、前記フレーム画像F(M+1)の動きベクトルである予測動きベクトルYV0(M+1)を予測する動きベクトル予測手段と、
    フレーム画像F(k)(kは時系列順を示す整数)から当該フレーム画像F(k)の一部である部分画像HFG(k)を切り出すときの切出位置S(k)を算出する切出位置算出手段であって、前記予測動きベクトルYV0(M+1)を用いて、前記フレーム画像F(M+1)の画像揺れを減衰させる切出位置S(M+1)を算出する切出位置算出手段と、
    前記切出位置S(M+1)を用いて、前記フレーム画像F(M+1)から前記部分画像HFG(M+1)を切り出す部分画像切出手段とを有し、
    前記部分画像切出手段による前記部分画像HFG(M+1)の切り出しを行うことに先立ち、前記画像受取手段による時系列順でM番目のフレームの前記フレーム画像F(M)の受け取り、前記動きベクトル検出手段による動きベクトルV0(M)の検出、前記動きベクトル予測手段による前記予測動きベクトルYV0(M+1)の予測、及び前記切出位置算出手段による前記切出位置S(M+1)の算出を行い、
    前記部分画像切出手段による前記部分画像HFG(M+1)の切り出しの一部と前記動きベクトル検出手段による動きベクトルV0(M+1)の検出の一部とを並行して行うことを特徴とする画像処理装置。
  2. 請求項1に記載の画像処理装置であって、
    前記(M−1)個の動きベクトルV0(2)〜V0(M)を用いて、任意のフレーム画像を基準位置とする前記M個のフレーム画像F(1)〜F(M)の全体的な動きを示す軌跡であるM個の動き軌跡X0(1)〜X0(M)を算出する動き軌跡算出手段をさらに有し、
    前記動きベクトル予測手段は、前記M個の動き軌跡X0(1)〜X0(M)を前記X個の基底の周波数に分解し、当該周波数より規定される前記X個の正弦波を、時間軸上で、前記フレーム画像F(M+1)を表示するべき時刻まで延長することにより、前記予測動きベクトルYV0(M+1)を予測することを特徴とする画像処理装置。
  3. 請求項2に記載の画像処理装置であって、
    前記基底の周波数の数Xは、前記M個とは異なる数であることを特徴とする画像処理装置。
  4. 請求項3に記載の画像処理装置であって、
    前記基底の周波数の数Xは、前記M個よりも少ない数であることを特徴とする画像処理装置。
  5. 請求項2に記載の画像処理装置であって、
    前記X個の基底の周波数のうち、直流成分を除く基底の周波数の周期は、フレーム画像F(1)を表示すべき時刻から前記フレーム画像F(M)を表示すべき時刻までの時間よりも短いことを特徴とする画像処理装置。
  6. 請求項2〜5のいずれか一項に記載の画像処理装置であって、
    前記動き軌跡算出手段が算出した前記動き軌跡X0(1)〜X0(M)から、前記X個の基底の周波数のうちの直流成分を除く基底の周波数より低い周波数成分であるベースラインを取り除いた軌跡を前記動き軌跡X0(1)〜X0(M)として修正するベースライン算出手段をさらに有し、
    前記動きベクトル予測手段は、前記ベースライン算出手段により修正された前記M個の動き軌跡X0(1)〜X0(M)を前記X個の基底の周波数に分解し、当該周波数より規定される前記X個の正弦波を、時間軸上で、(M+1)番目の前記フレーム画像F(M+1)を表示するべき時刻まで延長して得られる座標位置と、前記ベースラインを、時間軸上で、(M+1)番目の前記フレーム画像F(M+1)を表示するべき時刻まで延長して得られる座標位置とを加算することにより、動き軌跡X0(M+1)を予測し、動き軌跡X0(M)及び前記動き軌跡X0(M+1)から前記フレーム画像F(M+1)の前記予測動きベクトルYV0(M+1)を予測することを特徴とする画像処理装置。
  7. 請求項6に記載の画像処理装置であって、
    前記ベースラインは、前記動き軌跡X0(1)〜X0(M)の各フレーム間の傾きを平均した傾きをもつ直線であることを特徴とする画像処理装置。
  8. 請求項2〜7のいずれか一項に記載の画像処理装置であって、
    前記動きベクトル予測手段が前記動き軌跡X0(1)〜X0(M)を使用する前に、時系列順で(M)番目のフレームに近いほど大きな重みを施すことにより、前記動き軌跡X0(1)〜X0(M)を修正する動き軌跡重み付け手段をさらに有することを特徴とする画像処理装置。
  9. 請求項2〜8のいずれか一項に記載の画像処理装置であって、
    前記動き軌跡重み付け手段は、時系列順で1番目のフレームに対応する値が0に最も近く、時系列順でM番目のフレームに対応する値が1に最も近くなる関数W(n)を用いて、フレームごとに動き軌跡X0(n)の座標とW(n)の値をかけて前記動き軌跡X0(1)〜X0(M)を修正することを特徴とする画像処理装置。
  10. 請求項1〜9のいずれか一項に記載の画像処理装置であって、
    前記部分画像HFG(M+1)を時系列順に順次を表示する画像表示手段を有することを特徴とする画像処理装置。
  11. 時系列に連続する、表示すべき(M+1)個(Mは2以上の整数)のフレーム画像F(1)〜F(M+1)(括弧内は時系列順を示す整数)であって、画像揺れを発生させる可能性のある前記フレーム画像F(1)〜F(M+1)を順次受け取るフレーム画像受取工程と、
    フレーム画像F(p−1)(1<p≦(M+1))を基準とするフレーム画像F(p)の動きを示す動きベクトルV0(p)を検出することにより、前記(M+1)個のフレーム画像F(1)〜F(M+1)のうち、M個のフレーム画像F(2)〜F(M+1)の動きを示すM個の動きベクトルV0(2)〜V0(M+1)を得る動きベクトル検出工程と、
    前記M個の動きベクトルV0(2)〜V0(M+1)のうちの(M−1)個の動きベクトルV0(2)〜V0(M)で示される、M個のフレーム画像F(1)〜F(M)の全体的な動きを前記画像揺れにより特定されるX個(Xは整数)の基底の周波数に分解し、当該周波数より規定されるX個の正弦波を、時間軸上で、(M+1)番目のフレーム画像F(M+1)を表示するべき時刻まで延長することにより、フレーム画像F(M)を基準とする前記フレーム画像F(M+1)の動きを示す、前記フレーム画像F(M+1)の動きベクトルである予測動きベクトルYV0(M+1)を予測する動きベクトル予測工程と、
    フレーム画像F(k)(kは時系列順を示す整数)からフレーム画像F(k)の一部である部分画像HFG(k)を切り出すときの切出位置S(k)を算出する切出位置算出工程であって、前記予測動きベクトルYV0(M+1)を用いて、前記画像揺れを減衰させる切出位置S(M+1)を算出する切出位置算出工程と、
    前記切出位置S(M+1)を用いて、前記フレーム画像F(M+1)から前記部分画像HFG(M+1)を切り出す部分画像切出工程とを有し、
    前記部分画像切出工程による前記部分画像HFG(M+1)の切り出しを行うことに先立ち、前記画像受取工程による時系列順でM番目のフレームの前記フレーム画像F(M)の受け取り、前記動きベクトル検出工程による動きベクトルV0(M)の検出、前記動きベクトル予測工程による前記予測動きベクトルYV0(M+1)の予測、及び前記切出位置算出工程による前記切出位置S(M+1)の算出を行い、
    前記部分画像切出工程による前記部分画像HFG(M+1)の切り出しの一部と前記動きベクトル検出工程による動きベクトルV0(M+1)の検出の一部とを並行して行うことを特徴とする画像処理方法。
  12. コンピュータを、
    時系列に連続する、表示すべき(M+1)個(Mは2以上の整数)のフレーム画像F(1)〜F(M+1)(括弧内は時系列順を示す整数)であって、画像揺れを発生させる可能性のある前記フレーム画像F(1)〜F(M+1)を順次受け取るフレーム画像受取手段と、
    フレーム画像F(p−1)(1<p≦(M+1))を基準とするフレーム画像F(p)の動きを示す動きベクトルV0(p)を検出することにより、前記(M+1)個のフレーム画像F(1)〜F(M+1)のうち、M個のフレーム画像F(2)〜F(M+1)の動きを示すM個の動きベクトルV0(2)〜V0(M+1)を得る動きベクトル検出手段と、
    前記M個の動きベクトルV0(2)〜V0(M+1)のうちの(M−1)個の動きベクトルV0(2)〜V0(M)で示される、M個のフレーム画像F(1)〜F(M)の全体的な動きを前記画像揺れにより特定されるX個(Xは整数)の基底の周波数に分解し、当該周波数より規定されるX個の正弦波を、時間軸上で、(M+1)番目のフレーム画像F(M+1)を表示するべき時刻まで延長することにより、フレーム画像F(M)を基準とする前記フレーム画像F(M+1)の動きを示す、前記フレーム画像F(M+1)の動きベクトルである予測動きベクトルYV0(M+1)を予測する動きベクトル予測手段と、
    フレーム画像F(k)(kは時系列順を示す整数)からフレーム画像F(k)の一部である部分画像HFG(k)を切り出すときの切出位置S(k)を算出する切出位置算出手段であって、前記予測動きベクトルYV0(M+1)を用いて、前記画像揺れを減衰させる切出位置S(M+1)を算出する切出位置算出手段と、
    前記切出位置S(M+1)を用いて、前記フレーム画像F(M+1)から前記部分画像HFG(M+1)を切り出す部分画像切出手段として機能させるためのプログラムであって、
    前記部分画像切出手段による前記部分画像HFG(M+1)の切り出しを行うことに先立ち、前記画像受取手段による時系列順でM番目のフレームの前記フレーム画像F(M)の受け取り、前記動きベクトル検出手段による動きベクトルV0(M)の検出、前記動きベクトル予測手段による前記予測動きベクトルYV0(M+1)の予測、及び前記切出位置算出手段による前記切出位置S(M+1)の算出を行い、
    前記部分画像切出手段による前記部分画像HFG(M+1)の切り出しの一部と前記動きベクトル検出手段による動きベクトルV0(M+1)の検出の一部とを並行して行うことを特徴とする画像処理プログラム。
  13. 請求項12に記載の画像処理プログラムを記録したコンピュータ読み取り可能な記録媒体。
JP2005208145A 2005-07-19 2005-07-19 画像処理装置、画像処理方法、プログラムおよび記録媒体 Withdrawn JP2007028251A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2005208145A JP2007028251A (ja) 2005-07-19 2005-07-19 画像処理装置、画像処理方法、プログラムおよび記録媒体

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005208145A JP2007028251A (ja) 2005-07-19 2005-07-19 画像処理装置、画像処理方法、プログラムおよび記録媒体

Publications (1)

Publication Number Publication Date
JP2007028251A true JP2007028251A (ja) 2007-02-01

Family

ID=37788416

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005208145A Withdrawn JP2007028251A (ja) 2005-07-19 2005-07-19 画像処理装置、画像処理方法、プログラムおよび記録媒体

Country Status (1)

Country Link
JP (1) JP2007028251A (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010134046A (ja) * 2008-12-02 2010-06-17 Tohoku Univ 映像表示装置および映像表示方法
JP2010226314A (ja) * 2009-03-23 2010-10-07 Casio Computer Co Ltd 動画処理装置、動画処理方法及び動画処理プログラム
JP2011244183A (ja) * 2010-05-18 2011-12-01 Nikon Corp 撮像装置、画像表示装置、および画像表示プログラム
KR20160135748A (ko) * 2014-03-19 2016-11-28 소니 주식회사 픽셀 다중화 카메라에 대한 떨림 블러 및 모션 블러의 제어

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010134046A (ja) * 2008-12-02 2010-06-17 Tohoku Univ 映像表示装置および映像表示方法
JP2010226314A (ja) * 2009-03-23 2010-10-07 Casio Computer Co Ltd 動画処理装置、動画処理方法及び動画処理プログラム
JP2011244183A (ja) * 2010-05-18 2011-12-01 Nikon Corp 撮像装置、画像表示装置、および画像表示プログラム
KR20160135748A (ko) * 2014-03-19 2016-11-28 소니 주식회사 픽셀 다중화 카메라에 대한 떨림 블러 및 모션 블러의 제어
JP2017517909A (ja) * 2014-03-19 2017-06-29 ソニー株式会社 画素を多重化するカメラのシェイクブラーおよびモーションブラーの制御
KR102174808B1 (ko) 2014-03-19 2020-11-05 소니 주식회사 픽셀 다중화 카메라에 대한 떨림 블러 및 모션 블러의 제어

Similar Documents

Publication Publication Date Title
US10404917B2 (en) One-pass video stabilization
US20090175496A1 (en) Image processing device and method, recording medium, and program
KR102141290B1 (ko) 화상 처리 장치, 화상 처리 방법, 화상 처리 프로그램 및 기억 매체
JP6500535B2 (ja) 画像処理装置、画像処理方法及びプログラム
JP2507138B2 (ja) 動きベクトル検出装置及び画像揺れ補正装置
JP2007028251A (ja) 画像処理装置、画像処理方法、プログラムおよび記録媒体
JP4617883B2 (ja) 画像処理装置および方法、プログラム並びに記録媒体
US8385430B2 (en) Video signal processing apparatus and video signal processing method
JP6017279B2 (ja) 画像処理装置、画像処理方法及びプログラム
US20140176794A1 (en) Image processing apparatus, image processing method, and program
US20090323814A1 (en) Tracking point detection apparatus and method, program, and recording medium
JP4875564B2 (ja) フリッカ補正装置及びフリッカ補正方法
JP4482933B2 (ja) 動きベクトル検出装置、画像表示装置、画像撮像装置、動きベクトル検出方法、プログラムおよび記録媒体
JP2005150903A (ja) 画像処理装置、ノイズ除去方法及びノイズ除去プログラム
JP5300413B2 (ja) 動きベクトル検出装置及び動きベクトル検出方法及び撮像装置及びプログラム
JP2006285655A (ja) 画像処理装置、画像処理方法及び画像処理プログラム
JP6245968B2 (ja) 画像処理装置、撮像装置および制御方法
JP2015079329A (ja) 画像処理装置、画像処理方法およびプログラム
JP2003078808A (ja) 動きベクトル検出装置および方法、手振れ補正装置および方法、並びに撮像装置
JP2004140693A (ja) 画像処理装置
JP4886479B2 (ja) 動きベクトル補正装置、動きベクトル補正プログラム、補間フレーム生成装置及び映像補正装置
CN110692235B (zh) 图像处理装置、图像处理程序及图像处理方法
JP2006246270A (ja) 画像処理装置、画像表示装置、画像撮像装置、画像処理方法、プログラムおよび記録媒体
JP4763415B2 (ja) 画像処理装置
JP2007060104A (ja) 自己相関値算出方法及び補間画素生成方法、それらの装置並びにそれらのプログラム

Legal Events

Date Code Title Description
RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20070404

A300 Application deemed to be withdrawn because no request for examination was validly filed

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20081007