(57)【要約】【課題】望ましくない映像のぶれを抽出して補正する。【解決手段】カメラワーク、撮影方法、映像フォーマットといった撮影条件に応じて、映像のぶれの周波数情報を予め記憶しておく。そして、ユーザーによって指定された撮影条件に対応する周波数情報を選択し、選択した周波数情報に基づいて通過周波数帯域を決定し、決定した通過周波数帯域を有するフィルタを生成する。また、映像のぶれの時間変化を、相互に隣接するフレームの画像のシフト量と、画像の回転量とを算出することで求める。そして、映像のぶれの時間変化の情報を、生成したフィルタでフィルタリングし、映像のぶれ成分をフィルタリングする。【選択図】図１１
2011097512.tif 000002
【特許請求の範囲】
【請求項１】
撮影機器で撮影された映像のぶれを補正する画像処理装置であって、
前記撮影機器による撮影条件に対応して、映像のぶれの周波数情報を予め記憶する記憶手段と、
前記撮影条件のうち、ユーザーによって指定された撮影条件に対応する周波数情報を、前記記憶手段により記憶された周波数情報から取得する取得手段と、
前記映像のうち、相互に隣接するフレームの画像に基づいて、映像のぶれの時間変化の情報を算出する算出手段と、
前記取得手段により取得された周波数情報に基づいて、前記映像のぶれの時間変化の情報から抽出する周波数の範囲を決定する決定手段と、
前記映像のぶれの時間変化の情報から、前記決定手段により決定された範囲の周波数の情報を抽出する抽出手段と、
前記抽出手段により抽出された映像のぶれの時間変化の情報を用いて、前記映像のぶれを補正する補正手段と、を有することを特徴とする画像処理装置。
【請求項２】
前記周波数情報は、周波数の上限値と下限値に係る情報を含み、
前記決定手段は、前記撮影条件のうち、特定の撮影条件に対応する周波数情報に含まれる上限値と下限値とにより定まる周波数帯域のうち、その他の特定の撮影条件に対応する周波数情報に含まれる上限値と下限値とにより定まる周波数帯域を除く周波数帯域を、前記映像のぶれの時間変化の情報から抽出する周波数の範囲として決定することを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記決定手段により決定された周波数の範囲が所定値以下であるか否かを判定する判定手段と、
前記判定手段により、前記決定手段により決定された周波数の範囲が所定値以下であると判定されると、当該決定手段により決定された周波数の範囲を前記所定値に変更する変更手段と、を有することを特徴とする請求項２に記載の画像処理装置。
【請求項４】
前記撮影機器による撮影条件のうち、ユーザーによって指定された撮影条件に対応する周波数情報として記憶されている、周波数と振幅との関係を示す周波数振幅特性に基づいて、周波数の上限値と下限値とを算出する第２の算出手段を有し、
前記決定手段は、前記撮影条件のうち、特定の撮影条件について算出された上限値と下限値とにより定まる周波数帯域のうち、その他の特定の撮影条件について算出された上限値と下限値とにより定まる周波数帯域を除く周波数帯域を、前記映像のぶれの時間変化の情報から抽出する周波数の範囲として決定することを特徴とする請求項１に記載の画像処理装置。
【請求項５】
前記撮影条件のうち、ユーザーによって指定された撮影条件に対応する周波数情報として記憶されている周波数振幅特性を、前記撮影条件の詳細を示す情報に基づいて補正する第２の補正手段を有し、
前記第２の算出手段は、前記第２の補正手段により補正された周波数振幅特性に基づいて、周波数の下限値と上限値とを算出することを特徴とする請求項４に記載の画像処理装置。
【請求項６】
撮影機器で撮影された映像のぶれを補正する画像処理方法であって、
前記撮影機器による撮影条件に対応して、映像のぶれの周波数情報を予め記憶する記憶ステップと、
前記撮影条件のうち、ユーザーによって指定された撮影条件に対応する周波数情報を、前記記憶ステップにより記憶された周波数情報から取得する取得ステップと、
前記映像のうち、相互に隣接するフレームの画像に基づいて、映像のぶれの時間変化の情報を算出する算出ステップと、
前記取得ステップにより取得された周波数情報に基づいて、前記映像のぶれの時間変化の情報から抽出する周波数の範囲を決定する決定ステップと、
前記映像のぶれの時間変化の情報から、前記決定ステップにより決定された範囲の周波数の情報を抽出する抽出ステップと、
前記抽出ステップにより抽出された映像のぶれの時間変化の情報を用いて、前記映像のぶれを補正する補正ステップと、を有することを特徴とする画像処理方法。
【請求項７】
撮影機器で撮影された映像のぶれを補正することをコンピュータに実行させるためのコンピュータプログラムであって、
前記撮影機器による撮影条件に対応して、映像のぶれの周波数情報を予め記憶する記憶ステップと、
前記撮影条件のうち、ユーザーによって指定された撮影条件に対応する周波数情報を、前記記憶ステップにより記憶された周波数情報から取得する取得ステップと、
前記映像のうち、相互に隣接するフレームの画像に基づいて、映像のぶれの時間変化の情報を算出する算出ステップと、
前記取得ステップにより取得された周波数情報に基づいて、前記映像のぶれの時間変化の情報から抽出する周波数の範囲を決定する決定ステップと、
前記映像のぶれの時間変化の情報から、前記決定ステップにより決定された範囲の周波数の情報を抽出する抽出ステップと、
前記抽出ステップにより抽出された映像のぶれの時間変化の情報を用いて、前記映像のぶれを補正する補正ステップと、をコンピュータに実行させることを特徴とするコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理装置、画像処理方法、及びコンピュータプログラムに関し、特に、映像のぶれを補正するために用いて好適なものである。
【背景技術】
【０００２】
これまでに、撮像装置内の映像のぶれを補正する様々な方法が公開されている。最も代表的な手法は、フレーム間の全体の動きベクトルＶを算出し、算出した結果に基づいて積分により移動量Ｓを求めて映像のぶれの補正を行う手法である。図１９（ｂ）に、従来の代表的な映像のぶれを補正する場合のシグナルフローを示す。図１９（ｂ）に示すように、正帰還路に乗算器があり、この乗算器によって、映像のぶれの補正量Ｓに帰還係数（定数）αを乗じている。この帰還係数αは、一般にα＜１とする。これにより、入力が０である場合には積分値が０に収束し、結果としてぶれ補正画像は徐々に中心へとセンタリングされていく。
【０００３】
しかしながら、このような手法では、様々なカメラワークによる映像が入力された場合、手ぶれ等の望ましくないぶれのみを補正することが出来ない。そこで、特許文献１では、映像の動きがカメラワークと手ぶれとの何れであるかを判定し、判定の結果に応じてセンタリング補正用の入力Ｃを変更することが開示されている。図１９（ｃ）に、特許文献１に記載の手法で映像のぶれを補正する場合のシグナルフローを示す。特許文献１に記載の技術によれば、カメラワークの補正量Ｃを推定し、積分回路を経て補正量に加算するため、より良好に映像のぶれを補正できる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００６−１０１４８５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ここで、映像のぶれによる全体の動きベクトルＶを、手ぶれ等による望ましくない全体の動きベクトルＶｂ、カメラワークによる全体の動きベクトルＶｃ、量子化ノイズやセンサーノイズ等の擾乱による動きベクトル算出誤差Ｖｎの和であると考える。
理想的な映像のぶれの補正は、望ましくない映像のぶれであるΣＶｂのみを補正することである。しかしながら、特許文献１に記載の技術では、図１９（ｃ）における帰還係数α、β、並びにセンタリング補正用の入力Ｃのみで補正を行う為、様々なカメラワークや映像のぶれに対して望ましくない映像のぶれのみを補正することが難しい。
本発明は、このような問題点に鑑みてなされたものであり、望ましくない映像のぶれを抽出して補正することを目的とする。
【課題を解決するための手段】
【０００６】
本発明の画像処理装置は、撮影機器で撮影された映像のぶれを補正する画像処理装置であって、前記撮影機器による撮影条件に対応して、映像のぶれの周波数情報を予め記憶する記憶手段と、前記撮影条件のうち、ユーザーによって指定された撮影条件に対応する周波数情報を、前記記憶手段により記憶された周波数情報から取得する取得手段と、前記映像のうち、相互に隣接するフレームの画像に基づいて、映像のぶれの時間変化の情報を算出する算出手段と、前記取得手段により取得された周波数情報に基づいて、前記映像のぶれの時間変化の情報から抽出する周波数の範囲を決定する決定手段と、前記映像のぶれの時間変化の情報から、前記決定手段により決定された範囲の周波数の情報を抽出する抽出手段と、前記抽出手段により抽出された映像のぶれの時間変化の情報を用いて、前記映像のぶれを補正する補正手段と、を有することを特徴とする。
【発明の効果】
【０００７】
本発明によれば、撮影条件に対応して、映像のぶれの周波数情報を記憶しておき、ユーザーによって指定された撮影条件に対応する周波数情報に基づいて、映像のぶれの時間変化の情報から抽出する周波数の範囲を決定し、その範囲の情報を抽出する。したがって、手ぶれや移動時の振動等で発生する望ましくない映像のぶれをより正確に分離し、それを映像のぶれの補正に反映できる。よって、良好なぶれ補正を実現できる。
【図面の簡単な説明】
【０００８】
【図１】本発明の第１の実施形態を示し、画像処理装置の構成を示す図である。
【図２】メニュー表示を行うアプリケーションウィンドウを示す図である。
【図３】撮影条件を入力するダイアログ画面を示す図である。
【図４】周波数情報のデータ構造の概略を示す図である。
【図５】カメラワークに対する周波数情報を示す図である。
【図６】撮影方法に対する周波数情報を示す図である。
【図７】映像フォーマットに対する周波数情報を示す図である。
【図８】映像補正処理を説明するフローチャートである。
【図９】本来の周波数振幅特性と、データ構造に基づく周波数情報を示す図である。
【図１０】ステップＳ８０２の処理を説明するフローチャートである。
【図１１】フィルタ設計用の通過帯域と周波数情報との関係を示す図である。
【図１２】ステップＳ８０４の処理を説明するフローチャートである。
【図１３】ステップＳ８０６の処理を説明するフローチャートである。
【図１４】補正量補正関数を示す図である。
【図１５】本発明の第２の実施形態を示し、ダイアログ画面を示す図である。
【図１６】周波数情報のデータ構造の概略を示す図である。
【図１７】ステップＳ８０２の処理を説明するフローチャートである。
【図１８】周波数振幅特性を示す図である。
【図１９】シグナルフローを示す図である。
【発明を実施するための形態】
【０００９】
（第１の実施形態）
まず、第１の実施形態について説明する。
図１は、映像のぶれの補正を行う画像処理装置の構成の一例を示す図である。ＣＰＵ２０１は、メインメモリ２０２のＲＡＭをワークメモリとして、メインメモリ２０２のＲＯＭやハードディスクドライブ（ＨＤＤ）２０４に格納されたオペレーティングシステム（ＯＳ）や各種プログラムを実行する。そして、ＣＰＵ２０１は、ＰＣＩ（peripheral component interconnect）バス等のシステムバス２１２を介して各構成を制御する。
【００１０】
更に、ＣＰＵ２０１は、後述する映像補正アプリケーション、及びメディアリーダードライバを含む各種プログラムを実行する。ＣＰＵ２０１は、システムバス２１２及びSCSIインタフェイス（I/F）２０３を介してＨＤＤ２０４にアクセスする。以下では、映像補正アプリケーションがＨＤＤ２０４から読み出される場合を例に挙げて説明する。また、ＣＰＵ２０１は、後述する処理のユーザインタフェイスや処理結果を、グラフィックアクセラレータ２０５を介してカラーモニタ２０６に表示する。そして、ＣＰＵ２０１は、カラーモニタ２０６に表示されたグラフィックユーザインタフェイス等に対するユーザーからの指示をキーボード／マウスコントローラ２０９に接続されたキーボード２１０、マウス２１１を介して入力する。また、ＣＰＵ２０１は、映像データをＵＳＢ（Universal Serial Bus）コントローラ２０７を介してメディアリーダー２０８より入力する。
【００１１】
以上の構成において、映像補正アプリケーションは次の様に動作する。まず、ＨＤＤ２０４に格納されている映像補正装置プログラムが、ユーザーの指示によりＣＰＵ２０１にて実行され、図２に示すアプリケーションウィンドウ３０１がカラーモニタ２０６に表示される。ユーザーは、アプリケーションウィンドウ３０１のメニューリスト３０２から「映像ファイルの読み込み」を選択し、処理対象の映像ファイルを設定する。するとプログラム処理に従い、メディアに格納されている映像ファイルは、メディアリーダー２０８及びＵＳＢコントローラ２０７を介してメインメモリ２０２に映像データとして転送される。また、ＨＤＤ２０４に格納されている映像ファイルは、SCSIインタフェイス２０３を介してメインメモリ２０２に映像データとして転送される。映像ファイルの映像は、例えば撮影機器で撮像されたものである。
【００１２】
ユーザーが、メニューリスト３０２から「映像条件設定」を選択すると、図３に示すダイアログ画面４０１がカラーモニタ２０６に表示される。ユーザーは、このダイアログ画面４０１を用いて撮影条件の設定を行う。ダイアログ画面４０１において、プルダウンリスト４０２ではカメラワークが選択・指定され、プルダウンリスト４０３では撮影方法が選択・指定され、プルダウンリスト４０４では映像フォーマットが選択・指定される。また、映像フォーマットに関しては、メディアに記憶されている撮影機種と圧縮ビットレートとに関する情報に基づいてプリセットが行われる。ここで各プルダウンリストに表示される選択項目は、図４に示すデータ構造により周波数情報と併せて記述され、予めＨＤＤ２０４に格納されている。図４に示すデータ構造では、ＵＩ表示用の文字列と周波数特性とが一組として記述され、先頭に組の総数がデータ数として記述される。周波数特性の詳細に関しては後述する。以下、本実施形態では、カメラワークとして図５に示す情報が、撮影方法として図６に示す情報が、映像フォーマットとして図７に示す情報がそれぞれＨＤＤ２０４に格納されているものとして説明する。
【００１３】
図３において、ユーザーが設定終了ボタン４０５を押下すると、カメラワークと撮影方法と映像フォーマットの現状の選択結果がメインメモリ２０２のＲＡＭ等に記憶され、ダイアログ画面４０１が非表示となる。図２において、メニューリスト３０２からユーザーが「ぶれ補正実行」を選択すると、後述する図８のフローチャートに従った映像補正処理がなされる。更に、図３において、プルダウンリスト４０３からユーザーが「補正前映像プレビュー」を選択するとぶれ補正前の映像がウィンドウ３０３に表示され、「補正後映像プレビュー」を選択するとぶれ補正後の映像がウィンドウ３０３に表示される。また、ぶれ補正後の映像は、メニューリスト３０２からユーザーが「映像ファイル書き込み」を選択することでＨＤＤ２０４に格納される。
【００１４】
次に、図８のフローチャートを参照しながら、映像補正アプリケーションで実行される映像補正処理の一例を説明する。図８のフローチャートによる処理は、例えば、ＣＰＵ２０１が映像補正アプリケーションを実行することにより実現される。
ステップＳ８０１において、ＣＰＵ２０１は、プルダウンリスト４０２〜４０４で選択されたカメラワーク、撮影方法、映像フォーマットに対応する周波数情報を、図５〜図７に示すようなデータから取得する。例えば、カメラワークでパン（横）が選択された場合には、図５に示すデータのうち、0060〜0080までの周波数情報を取得する。尚、これらのデータは前述したようにＨＤＤ２０４に記憶されている。
【００１５】
次に、ステップＳ８０２において、ＣＰＵ２０１は、図１０のフローチャートに基づき、ステップＳ８０１で取得した周波数情報から、撮影方法毎に発生する映像のぶれを分離する為の周波数特性を定め、Remez法によりフィルタのインパルス応答を求める。図１０のフローチャートの詳細については後述する。ここで、カメラワーク、撮影方法、映像フォーマットに対して記述される周波数特性は、夫々次の意味を有する。カメラワークに対しては、カメラワークが有する主な周波数の帯域がＨｚで記述される（図５を参照）。撮影方法に対しては、撮影方法毎に発生する映像のぶれが有する主な周波数の帯域がＨｚで記述される（図６を参照）。また、映像フォーマットに対しては、映像のぶれの算出誤差の主な周波数の帯域がＨｚで記述される。
【００１６】
本実施形態では、周波数情報を図４に示すように、映像のぶれを横成分、縦成分並びに回転成分に分けて記述する。また、周波数情報を矩形に単純化し、通過域低域側エッジ（周波数の範囲の下限値）と通過域高域側エッジの周波数（周波数の範囲の上限値）という形で記述する。尚、高域側エッジの周波数が負の値であることは、高域側のエッジが存在しない（周波数が無限大）であることを示す。図９に、本来の周波数振幅特性（実線）と、データ構造に基づく周波数情報（点線）との関係の一例を模式的に示す。
【００１７】
次に、ステップＳ８０３において、ＣＰＵ２０１は、メインメモリ２０２に格納されている映像データを取得する。
次に、ステップＳ８０４において、ＣＰＵ２０１は、図１２に示すフローチャートに基づき、映像のぶれの時間変化を、相互に隣接するフレームの画像のシフト量と、画像の回転量とを算出することで求める。図１２のフローチャートの詳細については後述する。
次に、ステップＳ８０５において、ＣＰＵ２０１は、ステップＳ８０４で算出した映像のぶれの時間変化に対し、ステップＳ８０２で求めたインパルス応答を、畳み込み演算を用いて重畳してフィルタリングし、その結果を、メインメモリ２０２に記憶する。
次に、ステップＳ８０６において、ＣＰＵ２０１は、図１３に示すフローチャートに基づき、ステップＳ８０５でフィルタリングした結果を用いて、各フレームの映像の位置を補正し、補正後の映像をＨＤＤ２０４に記憶する。図１３のフローチャートの詳細については後述する。
【００１８】
次に、図１０のフローチャートを参照しながら、図８のステップＳ８０２のインパルス応答算出処理の一例を説明する。
まず、ステップＳ１００１において、ＣＰＵ２０１は、次の様にフィルタ設計用の通過帯域を求める。ここで、図８のステップＳ８０１で取得した周波数情報について、それぞれ、カメラワークの周波数帯域をBand1、撮影方法毎の映像のぶれの周波数帯域をBand2、映像のぶれの算出誤差の周波数帯域をBand3とする。ＣＰＵ２０１は、フィルタ設計用の通過帯域Bandを、集合演算を用いて、以下の（１）式により算出する。
Band＝NOT(Band1) ∪ Band2 ∪ NOT(Band3)  ・・・（１）
【００１９】
（１）式は次の意味を持つ。まず、撮影方法毎に発生する映像のぶれの周波数成分だけを通過させるため、撮影方法毎の映像のぶれの周波数帯域Band2の少なくとも一部を通過帯域とする。一方、カメラワークの周波数成分を通過させてしまうと、カメラワークも誤って補正してしまいカメラワークへの映像の追従が遅延してしまう。そこで、カメラワークの周波数成分を阻止域とするため、撮影方法毎の映像のぶれの周波数帯域Band2の集合と、カメラワークの周波数帯域Band1の補集合との積をとる。また、映像フォーマットによってはノイズによって映像のぶれの算出誤差が大きくなる場合がある。そこで、映像のぶれの算出誤差の周波数成分を阻止域とするため、さらに映像のぶれの算出誤差の周波数帯域Band3の補集合との積をとる。ここで、フィルタ設計用の通過帯域とステップＳ８０１で取得した周波数情報との関係の一例を図１１に示す。
【００２０】
図１０の説明に戻り、ステップＳ１００２において、ＣＰＵ２０１は、ステップＳ９０１で算出したフィルタ設計用の通過帯域が所定値以下であるか否かを判定する。この判定の結果、フィルタ設計用の通過帯域が所定値以下であればステップＳ１００３に、そうでなければステップＳ１００３を省略してステップＳ１００４に進む。
ステップＳ１００３に進むと、ＣＰＵ２０１は、通過帯域の中心を変えず、バンド幅が前記所定値となるようにフィルタ設計用の通過帯域を修正する。そして、ステップＳ１００４に進む。
ステップＳ１００４に進むと、ＣＰＵ２０１は、ステップＳ１００１で算出したフィルタ設計用の通過帯域、又はステップＳ１００３で修正されたフィルタ設計用の通過帯域を元に、Remez法によりインパルス応答を求める。尚、Remez法は公知であり様々な文献にそのアルゴリズムが記載されているため、ここではその詳細な説明を省略する。
【００２１】
次に、図１２のフローチャートを参照しながら、図８のステップＳ８０４の映像のぶれの時間変化算出処理の一例を説明する。本実施形態では、位相限定相関を用いてフレーム間の位置のシフト量を算出することで、映像のぶれの時間変化を求める場合を例に挙げて説明する。
ステップＳ１２０１において、ＣＰＵ２０１は、メインメモリ２０２に転送された処理対象の映像データから、開始フレームの画像を取得する。
次に、ステップＳ１２０２において、ＣＰＵ２０１は、開始フレームの画像をグレイ画像に変換し、グレイ画像に変換した開始フレームの画像を前フレーム画像としてメインメモリ２０２に記憶する。
【００２２】
次に、ステップＳ１２０３において、ＣＰＵ２０１は、処理対象の映像データから、次フレームの画像（前フレーム画像の次のフレームの画像）を取得してグレイ画像に変換する。そして、ＣＰＵ２０１は、グレイ画像に変換した次フレームの画像を後フレーム画像としてメインメモリ２０２に記憶する。
次に、ステップＳ１２０４において、ＣＰＵ２０１は、前フレーム画像と後フレーム画像との位相限定相関を求め、隣接するフレーム間での画像（位置）のシフト量を算出する。ここで前フレーム画像の二次元フーリエ変換をＩ１、後フレーム画像の二次元フーリエ変換をＩ２とすると、位相限定相関は、次の（２）式を逆フーリエ変換することで求められる。
【００２３】
【数１】
2011097512.tif 000003
【００２４】
この位相限定相関の相関ピークの座標が、隣接するフレーム間での画像のシフト量に対応する。
次に、ステップＳ１２０５において、ＣＰＵ２０１は、ステップＳ１２０４で算出したシフト量を用いて前フレームの画像をシフトする。
次に、ステップＳ１２０６において、ＣＰＵ２０１は、ステップＳ１２０５でシフトした前フレーム画像と、後フレーム画像とに対してLog-Polar変換を施し、メインメモリ２０２にLog-Polar変換を施した画像をメインメモリ２０２等に記憶する。
次に、ステップＳ１２０７において、ＣＰＵ２０１は、ステップＳ１２０６でLog-Polar変換を施した画像について、ステップＳ１２０４と同様に位相限定相関を算出し、隣接するフレーム間での画像の回転量を算出する。
【００２５】
次に、ステップＳ１２０８において、ＣＰＵ２０１は、ステップＳ１２０４で算出したシフト量とステップＳ１２０７で算出した回転量を、映像のぶれの時間変化として、メインメモリ２０２の所定位置（現在の処理フレーム番号から定まる所定位置）に記憶する。尚、以下の説明では、必要に応じて、「映像のぶれの時間変化」を「映像ぶれ時間変化」と略称する。
次に、ステップＳ１２０９において、ＣＰＵ２０１は、後フレーム画像を前フレーム画像にコピーする。
次に、ステップＳ１２１０において、ＣＰＵ２０１は、ステップＳ１２０９で前フレーム画像にコピーした後フレーム画像が、最終フレームに到達しているかどうかを判定する。この判定の結果、前フレーム画像にコピーした後フレーム画像が、最終フレームに到達していれば、図１２のフローチャートによる処理を終了し、そうでなければステップＳ１２０３に戻る。
【００２６】
次に、図１３のフローチャートを参照しながら、図８のステップＳ８０６の各フレームの画像位置補正処理の一例を説明する。
ステップＳ１３０１において、ＣＰＵ２０１は、処理フレーム番号を開始フレーム番号で初期化し、位置補正量と回転補正量を０で初期化する。
次に、ステップＳ１３０２において、ＣＰＵ２０１は、ステップＳ８０５においてフィルタリングされた「映像ぶれ時間変化のデータ」を、メインメモリ２０２から取得する。
次に、ステップＳ１３０３において、ＣＰＵ２０１は、処理フレーム番号に相当するシフト量と回転量とを、映像ぶれ時間変化のデータから取得する。
【００２７】
次に、ステップＳ１３０４において、ＣＰＵ２０１は、ステップＳ１３０３で取得したシフト量と回転量とを用いて、位置補正量と回転補正量とを次の様に更新する。位置補正量については、前フレームにおける位置補正量に所定の係数αを乗じ、それにシフト量を加算することで更新する。また、回転補正量については、前フレームにおける回転補正量に所定の係数βを乗じ、それに回転量を加算することで更新する。理想的に映像のぶれが算出されフィルタリングされている場合、シフト量と回転量の時間平均値は０となる。そこで、係数α並びにβを１未満に設定し補正量を減衰させる。これはシフト量と回転量に含まれる誤差の蓄積を避けることと等価でもある。尚、係数α並びにβは、ステップＳ１００１で求めたフィルタ設計用の通過帯域に応じて変化させても良い。
【００２８】
次に、ステップＳ１３０５において、ＣＰＵ２０１は、ステップＳ１３０３で更新した位置補正量と回転補正量とを所定の補正量補正関数に入力し、相互に隣接するフレーム間での画像のシフト量と回転量とを算出する。図１４は、補正量補正関数の一例を示す図である。補正量が大きいとフレーム表示領域が極端に少なくなる。補正量補正関数１４０１は、これを防ぐことを目的とする。ＣＰＵ２０１は、算出したフレーム間での画像のシフト量と回転量とに基づいて、処理対象のフレームの画像にシフトと回転とを施し、メインメモリ２０２に記憶する。
【００２９】
次に、ステップＳ１３０６において、ＣＰＵ２０１は、処理フレーム番号を次フレームに更新する。
次に、ステップＳ１３０７では、シフトと回転とを行った画像のフレームが最終フレームに到達しているか否かを判定する。この判定の結果、シフトと回転とを行った画像のフレームが最終フレームに到達していればステップＳ１３０８に進み、そうでなければステップＳ１３０３に戻る。
ステップＳ１３０８に進むと、ＣＰＵ２０１は、メインメモリ２０２に記憶された映像を所定のフォーマットで符号化し、ＨＤＤ２０４に格納する
【００３０】
図１９（ａ）に、本実施形態の手法でぶれを補正する場合の（簡略化した）シグナルフロー示す。図１９（ａ）において、Ｖは、本実施形態におけるフレーム間での画像のシフトや回転を示し、背景技術で述べたフレーム間での全体の動きベクトルＶに該当する。また、Ｓは、映像のぶれの補正量である。また、フィルタＦは、ステップＳ８０２のインパルス応答算出処理で定められるフィルタに該当する。ここで、本実施形態では、概念としてＦ(Ｖｃ＋Ｖｂ＋Ｖｎ)を積分しているが、以上の説明から明らかなように、Ｆ・ＶｃとＦ・Ｖｎが出来るだけ０に近似し、他方でＦ・Ｖｂが出来るだけＶｂに近似するようフィルタＦを設計している。すなわち、本実施形態では、望ましくない映像のぶれであるΣＶｂのみを補正するようにしている。
【００３１】
以上のように本実施形態では、カメラワーク、撮影方法、映像フォーマットといった撮影条件に応じて、映像のぶれの周波数情報を予め記憶しておく。そして、ユーザーによって指定された撮影条件に対応する周波数情報を選択し、選択した周波数情報に基づいて通過周波数帯域を決定し、決定した通過周波数帯域を有するフィルタを生成する。また、映像のぶれの時間変化を、相互に隣接するフレームの画像のシフト量と、画像の回転量とを算出することで求める。そして、映像のぶれの時間変化の情報を、生成したフィルタでフィルタリングし、映像のぶれ成分をフィルタリングする。すなわち、特定の撮影条件の一例である撮影方法に対する周波数帯域のうち、その他の特定の撮影条件の一例であるカメラワーク・映像フォーマットに対する周波数帯域を除く周波数帯域の「映像のぶれの時間変化の情報」を抽出する。これにより、手ぶれや撮影機器の移動時の振動等で発生する望ましくない映像のぶれをより正確に分離し、ぶれの補正に反映できる。したがって、本来のカメラワークを残しつつ望ましくない映像のぶれを補正する、良好なぶれ補正を実現できる。
【００３２】
尚、本実施形態では、例えば、ステップＳ８０１、Ｓ８０４、Ｓ８０５、Ｓ８０６の処理を実行することにより、それぞれ取得手段、算出手段、抽出手段、補正手段の一例が実現される。また、例えば、ステップＳ１００１、Ｓ１００２、Ｓ１００３の処理を実行することにより、それぞれ決定手段、判定手段、変更手段の一例が実現される。
【００３３】
（第２の実施形態）
次に、第２の実施形態について説明する。本実施形態では、ぶれの補正に使用する撮影条件として、カメラワークの詳細を示す、カメラワークの速度とカメラのズーム率とが加わり、且つ、周波数情報をより詳細に記述するようにしている。すなわち、本実施形態は、第１の実施形態に対して周波数特性をより詳細に記述するよう改め、精度向上を図ったものである。このように、本実施形態と第１の実施形態とは、撮影条件が追加されたことと周波数情報の記述が詳細になったことによる処理の一部が主として異なる。したがって、本実施形態の説明において、第１の実施形態と同一の部分については、図１〜図１４に付した符号と同一の符号を付す等して詳細な説明を省略する。
【００３４】
まず、本実施形態では、図２に示したアプリケーションウィンドウ３０１のメニューリスト３０２において、映像条件設定がユーザーによって選択された際、図４に示したダイアログ画面４０１に代えて、図１５に示すダイアログ画面１５０１が表示される。プルダウンリストの選択項目は図４に示したものと同じであるが、新たな設定項目としてカメラワーク速度エディットボックス１５０２とズーム率エディットボックス１５０３とが表示される。カメラワーク速度については、ユーザーによって適切な値が入力される。一方、ズーム率については、メディアに記憶されているズーム率に基づいてプリセットが行われる。
【００３５】
また、ＵＩ表示用文字列と周波数特性とを記述する周波数情報を表すため、図４に示したデータ構造に代えて図１６に示すデータ構造を用いる。図１６に示すデータ構造は、図４に示したデータ構造と同様に、ＵＩ表示用の文字列と周波数特性とが一組として記述され、先頭に組の総数がデータ数として記述される。第１の実施形態におけるデータ構造では、周波数情報を矩形に単純化して通過域低域側エッジと通過域高域側エッジのみを記述した。これに対し、本実施形態におけるデータ構造では、周波数振幅特性を周波数情報として記述する。具体的に本実施形態では、０Ｈｚから２５５．５Ｈｚまで０．５Ｈｚ刻みで５１２個の振幅データが、横成分、縦成分並びに回転成分の三成分に分けて記述される。このデータ構造に基づく周波数情報が、それぞれカメラワーク、撮影方法、映像フォーマットに対応してＨＤＤ２０４に記憶されている。
【００３６】
本実施形態においては、ステップＳ８０１において、ＣＰＵ２０１は、プルダウンリスト４０２〜４０４で選択されたカメラワーク、撮影方法、及び映像フォーマットに対応する周波数情報をＨＤＤ２０４から取得する。ここでは、当然ながら、ＣＰＵ２０１は、図１６に示すようなデータ構造に基づいて周波数情報を取得する。また、ステップＳ８０２のインパルス応答算出処理では、図１０に示したフローチャートに代えて図１７に示すフローチャートによる処理が実行される。
【００３７】
図１７のフローチャートを参照しながら、インパルス応答算出処理の一例を説明する。
ステップＳ１７０１において、ＣＰＵ２０１は、図８のステップＳ８０１で取得した周波数情報を撮影条件に基づいて補正する。具体的にＣＰＵ２０１は、カメラワークに対する周波数情報を、次のように補正する。まず、ＣＰＵ２０１は、ユーザーによって設定されたカメラワーク速度を、周波数情報を設定した際に基準とした基準カメラワーク速度で除算し、比を求める。次に、ＣＰＵ２０１は、この比をカメラワークに対する周波数情報として記述されている周波数振幅特性の振幅に乗じ、その値をカメラワークに対する周波数情報の補正値とする。
【００３８】
また、ＣＰＵ２０１は、撮影方法毎に発生する映像のぶれに対する周波数情報について、次のように補正する。まず、ＣＰＵ２０１は、メディアから取得したズーム率を、周波数情報を設定した際に基準とした基準ズーム率で除算し、比を求める。次に、ＣＰＵ２０１は、この比を、撮影方法毎に発生する映像のぶれに対する周波数情報として記述されている周波数振幅特性の振幅に乗じ、その値を、撮影方法毎に発生する映像のぶれに対する周波数情報の補正値とする。
【００３９】
次に、ステップＳ１７０２において、ＣＰＵ２０１は、図４に示したデータ構造で記述されている周波数情報と同様の通過域エッジを、ステップＳ１７０１で補正した周波数振幅特性に基づき次のように算出する。まず、ＣＰＵ２０１は、周波数振幅特性の（振幅の）ピークが基準振幅以下であるか否かを判定する。この判定の結果、周波数振幅特性のピークが基準振幅以下であれば、当該ピークが基準振幅となるように周波数振幅特性を再補正する。図１８（ａ）に、再補正をする前の周波数振幅特性（破線）と再補正をした後の周波数振幅特性（実線）の一例を示す。一方、周波数振幅特性のピークが基準振幅以下でなければ、当該周波数振幅特性を採用する。次に、ＣＰＵ２０１は、周波数振幅特性が所定のしきい値を超える周波数を判定し、この周波数を通過域低域側エッジ及び通過域高域側エッジと定める。図１８（ｂ）に、通過域低域側エッジ及び通過域高域側エッジの一例を示す。尚、この基準振幅としきい値は、カメラワーク、撮影方法、映像フォーマットで夫々個別に定められる。
【００４０】
次に、ステップＳ１７０３において、ＣＰＵ２０１は、ステップＳ１００１と同様にして、フィルタ設計用の通過帯域を求める。
次に、ステップＳ１７０４において、ＣＰＵ２０１は、ステップＳ１７０３で算出したフィルタ設計用の通過帯域が所定値以下であるか否かを判定する。この判定の結果、フィルタ設計用の通過帯域が所定値以下であればステップＳ１７０５に、そうでなければステップＳ１７０５を省略してステップＳ１７０６に進む。
ステップＳ１７０５に進むと、ＣＰＵ２０１は、通過帯域の中心を変えず、バンド幅が所定値となるようにフィルタ設計用の通過帯域を修正する。そして、ステップＳ１７０６に進む。
ステップＳ１７０６に進むと、ＣＰＵ２０１は、ステップＳ１７０３で算出したフィルタ設計用の通過帯域、又はステップＳ１７０５で修正されたフィルタ設計用の通過帯域を元に、Remez法によりインパルス応答を求める。
【００４１】
以上のように本実施形態では、映像のぶれの周波数情報として周波数振幅特性を予め記憶する。また、撮影条件（カメラワーク速度、ズーム率）に基づいて周波数振幅特性を補正し、補正した周波数振幅特性から通過周波数帯域を決定し、決定した通過周波数帯域を有するフィルタを生成する。このように本実施形態では、より詳細に記述した周波数特性を用い、実際の撮影条件に応じて望ましくない映像ぶれを抽出するフィルタ特性を設定する。したがって、本来のカメラワークを残しつつ望ましくない映像のぶれを、撮影条件に応じてより良好に補正できる。
【００４２】
尚、本実施形態では、例えば、ステップＳ１７０１、Ｓ１７０２、Ｓ１７０３、Ｓ１７０４、Ｓ１７０５の処理を実行することにより、それぞれ第２の補正手段、第２の算出手段、決定手段、判定手段、変更手段の一例が実現される。
【００４３】
（変形例）
以上の各実施形態では、カメラワーク、撮影方法、映像フォーマットの３要素に基づいて映像ぶれを分離するための周波数特性を定める場合を例に挙げて説明した。しかしながら、使用レンズによるボケ等、映像のぶれに影響する要因（撮影条件）は多々存在する。したがって、周波数特性を定めるための分類は、前記３要素に限定されるものではない。
【００４４】
また、以上の各実施形態において、カメラワークは、図５に示したものの他、回転等の他のカメラワークに対しても適用可能である。また、撮影方法は、クレーン等の機材を用いて撮影する撮影方法に対しても適用可能である。また、より精度を向上させるために、撮影方法とカメラワークの組み合わせに対して、カメラワークの周波数情報と、撮影方法毎に発生する映像のぶれの周波数情報とを準備してもよい。また、映像フォーマットに対する周波数情報は、符号化ビットレートのみならずフレームレート等に基づいて設定してもよい。また、映像のぶれを算出するアルゴリズムとしては、符号化情報に含まれる動きベクトルを活用してもよい。例えば、動きベクトルの最頻値を用いることで、映像のぶれを算出することができる。
また、以上の各実施形態において、映像のぶれを補正する画像処理装置は、撮影機器自身であってもよい。
【００４５】
尚、前述した実施形態は、何れも本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。
【００４６】
（その他の実施例）
本発明は、以下の処理を実行することによっても実現される。即ち、まず、以上の実施形態の機能を実現するソフトウェア（コンピュータプログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給する。そして、そのシステム或いは装置のコンピュータ（又はＣＰＵやＭＰＵ等）が当該コンピュータプログラムを読み出して実行する。
【図１】
2011097512.tif 000004
【図２】
2011097512.tif 000005
【図３】
2011097512.tif 000006
【図４】
2011097512.tif 000007
【図５】
2011097512.tif 000008
【図６】
2011097512.tif 000009
【図７】
2011097512.tif 000010
【図８】
2011097512.tif 000011
【図９】
2011097512.tif 000012
【図１０】
2011097512.tif 000013
【図１１】
2011097512.tif 000014
【図１２】
2011097512.tif 000015
【図１３】
2011097512.tif 000016
【図１４】
2011097512.tif 000017
【図１５】
2011097512.tif 000018
【図１６】
2011097512.tif 000019
【図１７】
2011097512.tif 000020
【図１８】
2011097512.tif 000021
【図１９】
2011097512.tif 000022