(58)【調査した分野】(Int.Cl.,DB名)
前記ライン積分値は、各水平ラインに含まれる全ての画素値もしくは前記所定の条件を満たす画素値を積分した積分値、または前記積分値を前記水平ラインに含まれる画素数もしくは前記所定の条件を満たす画素値の画素数によって正規化した正規化値である、請求項2に記載のフリッカ低減装置。
前記サンプリング部は、前記所定の条件を満たす画素値の数をカウントするカウンタを含み、前記カウンタが示すカウント値としきい値との関係に応じて前記第1の標本対象の中から第2の標本対象をさらに抽出して、前記第2の標本対象に対応した水平ラインを前記複数の水平ラインの一部として決定し、
前記直線近似部は、前記第2の標本対象に対応した水平ラインに基づいて前記フリッカの情報を抽出する、請求項3に記載のフリッカ低減装置。
前記サンプリング部は、前記画像間での動きベクトルに基づいて、前記第1の標本対象の中から第2の標本対象をさらに抽出して、前記第2の標本対象に対応した水平ラインを前記複数の水平ラインの一部として決定し、
前記直線近似部は、前記第2の標本対象に対応した水平ラインに基づいて前記フリッカの情報を抽出する、請求項3に記載のフリッカ低減装置。
前記離散フーリエ変換部は、商用電源の周波数と前記画像のフレームレートとに基づいてフリッカが現れる周波数の候補を推定し、前記周波数の候補に基づいて前記ライン積分値列に前記離散フーリエ変換を実行する、請求項1または2に記載のフリッカ低減装置。
前記直線近似部は、前記近似直線の切片を前記フリッカの初期位相として検出し、前記近似直線の傾きから前記フリッカの周波数を検出する、請求項1から6のいずれかに記載のフリッカ低減装置。
【発明を実施するための形態】
【0016】
以下、本願発明者が考察した問題点を説明する。
【0017】
上述したとおり、例えば、フリッカの周波数が100Hzであり、フレームレートが60fpsである場合、最大公約数となる周波数は20Hzである。従って、ライン積分値の平均値の算出に必要なフレーム数は3である。
【0018】
高フレームレートでの撮影を考えた場合、例えばフレームレートが240fpsであると、フリッカ周期とフレーム周期との最大公約数は20Hzである。しかし、ライン積分値の平均値の算出に必要なフレーム数は、12フレームとなり、フレームレートが60fpsの場合と比べて大きくなる。このように、高フレームレートの撮影では、そのフレームレートに依存して、多数のフレームの情報をメモリに格納することが必要になり、メモリ容量が増大してしまう問題があった。
【0019】
また、近年の撮像素子の高画素化に伴い、1フレームを構成する水平ラインの数は増大するので、メモリに記憶しておくライン積分値の数が一層増大する。その結果、メモリ容量が一層増大してしまう問題があった。
【0020】
仮に、100fpsの整数倍になるようなフレームレートに限定することによって、上記の問題は回避され得るが、フレームレートの選択肢を狭めてしまうことになる。
【0021】
また、適当なフレーム数で打ち切って、得られたフレーム数だけでライン積分値の平均値を求めることは可能である。しかしながら、このような方法が有効になるのはライン積分値の平均値に比べてフリッカの振幅が十分に小さいときである。露光時間が短くなる高フレームレートでの撮影においては、フリッカの振幅が、ライン積分値の平均値に比べて増大するので、その方法は適切とは言えない。
【0022】
高フレームレートの撮影では、フリッカの1周期がフレーム期間よりも長くなる場合がある。その場合、上述したフレームレートが240fpsの例であると、フリッカの1周期は、2.4フレームの期間に相当する。このとき、フレーム間ではブランキング期間が存在するので、その期間では画像が得られず、ライン積分値を取得することができなくなる。その結果、ライン間DFT部54において、解析対象となるデータ列の一部が欠落することになる。欠落した部分は近隣のデータから補間して求めることは可能であるが、解析の精度が低下してしまう。
【0023】
ライン間DFT部54に与えるデータ列は等間隔であることが好ましい。このとき、サンプリング部12では等間隔の水平ラインに対応したライン積分値が抽出される。しかしながら、画像中に低輝度(画素信号のレベルが低い)部分が存在し、ライン積分値が小さくなる場合、ライン積分値はノイズの影響を大きく受けてしまう。その結果、正規化差分値の精度が低下する問題が生じる。同様に、高輝度(画素信号のレベルが高い)部分での画像信号の飽和によるフリッカ成分の歪みも避けることが困難になる。
【0024】
このような従来技術の課題に鑑み、本願発明者は、新規な構成を有するフリッカ低減装置に想到した。本発明の一態様の概要は以下のとおりである。
【0025】
本発明の一態様であるフリッカ低減装置は、撮像素子によって取得された画像信号中に含まれ、照明に起因するフリッカを前記画像信号から低減し、画像毎に、前記画像を構成する複数の水平ラインの一部の各水平ラインに含まれる画素値から前記各水平ラインのライン積分値を取得するライン積分値取得部と、最新の画像および最新よりも以前に取得した複数の画像の間において、各画像の前記ライン積分値から構成されるライン積分値列に離散フーリエ変換を実行する離散フーリエ変換部と、前記離散フーリエ変換の結果から得られる位相情報に基づいて近似直線を求め、前記近似直線から前記フリッカの情報を抽出する直線近似部と、前記フリッカの情報に基づいてフリッカ係数を算出するフリッカ係数算出部と、前記フリッカ係数を用いて前記画像信号にフリッカ低減処理を実行する補正演算部とを備える。
【0026】
ある態様において、前記ライン積分値取得部は、前記画像毎に、前記画像を構成する前記複数の水平ラインの各々に対して、前記ライン積分値を算出するライン積分部と、前記ライン積分部の出力の中から、所定の条件を満たす画素値を有する画素の数が多い順番で第1の標本対象を抽出し、前記第1の標本対象に対応した水平ラインを前記複数の水平ラインの一部として決定するサンプリング部とを含んでいてもよい。
【0027】
ある態様において、前記ライン積分値は、各水平ラインに含まれる全ての画素値もしくは前記所定の条件を満たす画素値を積分した積分値、または前記積分値を前記水平ラインに含まれる画素数もしくは前記所定の条件を満たす画素値の画素数によって正規化した正規化値であってもよい。
【0028】
ある態様において、前記サンプリング部は、前記所定の条件を満たす画素値の数をカウントするカウンタを含み、前記カウンタが示すカウント値としきい値との関係に応じて前記第1の標本対象の中から第2の標本対象をさらに抽出して、前記第2の標本対象に対応した水平ラインを前記複数の水平ラインの一部として決定し、前記直線近似部は、前記第2の標本対象に対応した水平ラインに基づいて前記フリッカの情報を抽出してもよい。
【0029】
ある態様において、前記サンプリング部は、前記画像間での動きベクトルに基づいて、前記第1の標本対象の中から第2の標本対象をさらに抽出して、前記第2の標本対象に対応した水平ラインを前記複数の水平ラインの一部として決定し、前記直線近似部は、前記第2の標本対象に対応した水平ラインに基づいて前記フリッカの情報を抽出してもよい。
【0030】
ある態様において、前記離散フーリエ変換部は、商用電源の周波数と前記画像のフレームレートとに基づいてフリッカが現れる周波数の候補を推定し、前記周波数の候補に基づいて前記ライン積分値列に前記離散フーリエ変換を実行してもよい。
【0031】
ある態様において、前記直線近似部は、前記近似直線の切片を前記フリッカの初期位相として検出し、前記近似直線の傾きから前記フリッカの周波数を検出してもよい。
【0032】
ある態様において、複数の画像分の前記ライン積分値を格納するメモリをさらに備えていてもよい。
【0033】
ある態様において、前記フリッカが前記画像信号中に存在するか否かを前記離散フーリエ変換の結果に基づいて判定するフリッカ検出部をさらに備え、前記フリッカ検出部は、前記離散フーリエ変換の結果から得られる振幅情報に基づいて前記周波数の候補での振幅の大きさを算出し、前記周波数の候補での振幅の大きさを画像の直流成分での振幅の大きさで除算して得られる正規化振幅を算出し、前記ライン積分値列に対応した各正規化振幅に基づいて代表値を決定し、前記代表値が所定値以上である場合、前記フリッカが存在すると判定し、前記代表値が所定値未満である場合、前記フリッカ低減処理を停止する命令を前記補正演算部に送信するように構成されていてもよい。
【0034】
本発明の他の一態様である撮像装置は、画像信号中に含まれ、照明に起因するフリッカを前記画像信号から低減し、被写体を撮像して前記画像信号を生成する撮像素子と、画像毎に、前記画像を構成する複数の水平ラインの一部の各水平ラインに含まれる画素値から前記各水平ラインのライン積分値を取得するライン積分値取得部と、複数の画像分の前記ライン積分値を格納するメモリと、最新の画像および最新よりも以前に取得した複数の画像の間において、各画像の前記ライン積分値から構成されるライン積分値列に離散フーリエ変換を実行する離散フーリエ変換部と、前記離散フーリエ変換の結果から得られる位相情報に基づいて近似直線を求め、前記近似直線から前記フリッカの情報を抽出する直線近似部と、前記フリッカの情報に基づいてフリッカ係数を算出するフリッカ係数算出部と、前記フリッカ係数を用いて前記画像信号にフリッカ低減処理を実行する補正演算部とを備える。
【0035】
本発明の他の一態様である方法は、撮像素子によって取得された画像信号中に含まれ、照明に起因するフリッカを前記画像信号から低減するフリッカ低減方法であって、画像毎に、前記画像を構成する複数の水平ラインの一部の各水平ラインに含まれる画素値から前記各水平ラインのライン積分値を取得するステップと、最新の画像および最新よりも以前に取得した複数の画像の間において、各画像の前記ライン積分値から構成されるライン積分値列に離散フーリエ変換を実行するステップと、前記離散フーリエ変換の結果から得られる位相情報に基づいて近似直線を求め、前記近似直線から前記フリッカの情報を抽出するステップと、前記フリッカの情報に基づいてフリッカ係数を算出するステップと、前記フリッカ係数を用いて前記画像信号にフリッカ低減処理を実行するステップとを包含する。
【0036】
本発明の一態様によれば、高フレームレートの撮影でも、所定のフレーム間において、ライン積分値を標本対象の数だけメモリに格納すればよい。その結果、比較的サイズが小さいメモリを用いることができ、メモリのコストを削減することができる。また、直線近似を用いて、フリッカの周波数および初期位相をより正確に検出することができる。その結果、フリッカの検出に際し、ブランキング期間、画像中の低輝度部分、および高輝度部分による影響を低減することができて、フリッカの検出精度を向上させることができる。
【0037】
以下、添付の図面を参照しながら、本発明による撮像装置およびフリッカ低減部(フリッカ低減装置)の実施の形態を説明する。「画像」としては、例えば、フレームとフィールドとを挙げることができる。本願明細書では、フリッカ低減部は、フレームを基準として処理を実行することにするが、フィールドを基準として処理を実行するようにしてもよい。
【0038】
(実施の形態1)
以下、本発明による実施の形態1を説明する。
【0039】
[撮像装置100の構成]
図1を参照しながら、撮像装置100を説明する。
【0040】
図1は、本実施の形態による撮像装置100のブロック構成図である。撮像装置100は被写体を撮影し、撮影した画像を処理して記録媒体等に記録する。例えば、撮像装置100は、デジタルビデオカメラやデジタルスチルカメラである。
【0041】
撮像装置100は、撮像光学系101と、イメージセンサ102と、システムコントローラ103と、AFE(アナログフロントエンド)部104と、光学系ドライバ105と、センサ制御部106と、デジタル信号処理部107と、記録媒体110とを備える。
【0042】
撮像光学系101は、絞り、手振れ補正レンズ、および、ズームレンズやフォーカスレンズを含む複数のレンズ群を有する。ズームレンズを光軸に沿って移動させることにより、被写体像の拡大、縮小をすることができる。また、フォーカスレンズを光軸に沿って移動させることにより、被写体像の合焦位置を調整することができる。なお、撮像光学系101を構成するレンズの数は要求される機能に応じて適宜決定される。
【0043】
イメージセンサ102は、例えばCMOS(Complementary Metal Oxide Semiconductor)センサである。イメージセンサ102は、撮像光学系101によって撮像面に結像された光を電気信号に変換してアナログ画像信号を生成する。イメージセンサ102は生成したアナログ画像信号をAFE部104に出力する。イメージセンサ102は、例えばライン露光、転送の各種動作を行う。ライン露光はローリングシャッタとも呼ばれる。
【0044】
システムコントローラ103は、半導体素子などにより構成される。システムコントローラ103は、ハードウェアのみで構成してもよいし、ハードウェアとソフトウェアとを組み合わせることにより実現してもよい。システムコントローラ103はマイクロコンピュータなどにより実現できる。システムコントローラ103は撮像装置100全体を制御する。
【0045】
AFE部104は、相関二重サンプリング回路(CDS回路)、自動利得制御増幅器(AGC)およびアナログ−デジタル変換器(ADC)などを含む。CDS回路は、イメージセンサ102から出力されたアナログ画像信号からノイズを除去する。AGCは、システムコントローラ103の制御を受けて、適切なレベルの画像信号を得るためにゲイン調整を行う。ADCは、AGCからのアナログ画像信号をデジタル画像信号に変換する。なお、AFE部104は、その機能が統合されたデジタル画像信号の出力に対応したイメージセンサの場合は省略される。
【0046】
光学系ドライバ105は、システムコントローラ103の指示を受けて、撮像光学系101に含まれる絞り、ズームレンズおよびフォーカスレンズを駆動する。
【0047】
センサ制御部106は、システムコントローラ103の指示を受けて、イメージセンサ102を制御する。
【0048】
デジタル信号処理部107は、例えばデジタルシグナルプロセッサ(DSP)により実現可能である。デジタル信号処理部107は、AFE部104から出力されたデジタル画像信号にデジタル信号処理を施し、撮像装置100の出力画像ファイルを生成する。デジタル信号処理部107は、フリッカ低減部200と、信号処理部108と、圧縮符号化部109とを含む。
【0049】
フリッカ低減部200は、蛍光灯により照らされた環境下において撮影を行ったときに、照明の明滅に起因して撮影画像に明暗となって生じるフリッカ成分を、AFE部104から出力されたデジタル画像信号から低減する。フリッカ低減部200の構成の詳細は後述する。
【0050】
信号処理部108は、フリッカ低減部200から出力されたデジタル画像信号に、例えば、ガンマ補正、ホワイトバランス補正、傷補正、出力画像形式に従った画像フォーマットの変換の各種処理を施す。
【0051】
圧縮符号部109は、信号処理部108から出力されたデジタル画像信号を、例えばH.264規格やMPEG2規格に準拠した圧縮形式により圧縮する。
【0052】
記録媒体110は、フラッシュメモリや強誘電体メモリなどにより構成される。記録媒体110は、デジタル信号処理部107により生成された画像ファイル等のデータを格納することが可能である。
【0053】
[フリッカ低減部200の構成]
図2を参照しながら、フリッカ低減部200のブロック構成を説明する。
【0054】
図2は、本実施の形態によるフリッカ低減部200のブロック構成図である。フリッカ低減部200は、ライン積分値取得部210と、ライン積分値メモリ220と、画像間DFT部230と、フリッカ検出部240と、直線近似部250と、フリッカ係数算出部260と、補正演算部270とを含む。ライン積分値取得部210は、ライン積分部211およびサンプリング部212を含む。サンプリング部212は、カウンタ213を含む。
【0055】
フリッカ低減部200の各構成要素はハードウェアとして実装してもよい。例えば、フリッカ低減部200が撮像装置100のために設計、製造された専用の集積回路チップ(ASIC)である場合には、各構成要素はフリッカ低減部200内の独立した集積回路として実装され得る。
【0056】
または、フリッカ低減部200は各構成要素の機能を発揮する汎用のプロセッサとして実現されてもよい。例えば、プロセッサ内部のメモリに、各構成要素の機能を発揮するコンピュータプログラムが実装されており、プロセッサが逐次コンピュータプログラムを実行することにより、各構成要素の機能が実現されてもよい。または、フリッカ低減部200はハードウェアとソフトフェアとの組み合わせにより実現してもよい。
【0057】
再び
図1を参照して、撮像装置100の動作を簡単に説明する。
【0058】
イメージセンサ102は、撮像光学系101によって撮像面に結像された光を電気信号に変換し、アナログ画像信号を生成する。AFE部104は、イメージセンサ102から出力されたアナログ画像信号に種々のアナログ信号処理を実行して、処理後のアナログ画像信号をデジタル画像信号に変換する。デジタル信号処理部107のフリッカ低減部200は、AFE部104から出力されるデジタル画像信号に含まれるフリッカ成分を低減する。信号処理部108は、フリッカ低減部200から出力されたデジタル画像信号に、ガンマ補正、ホワイトバランス補正、傷補正、出力画像形式に従った画像フォーマットの変換の各種処理を施す。圧縮符号部109は、信号処理部108から出力されたデジタル画像信号を、例えばH.264規格やMPEG2規格に準拠した圧縮形式により圧縮し圧縮画像ファイルする。最後に、コントローラ103は圧縮画像ファイルを記録媒体110に書き込む。
【0059】
[フリッカ低減部200の動作]
図2から5を参照しながら、フリッカ低減部200の動作の詳細を説明する。
【0060】
図3は、フリッカ低減部200の動作を示すフローチャートである。
【0061】
(ステップS11)
ライン積分値取得部210は、ライン積分部211およびサンプリング部212を含んでいる。ライン積分値取得部210は、フレーム毎に、フレームを構成する複数の水平ラインの一部の各水平ラインに含まれる画素値から各水平ラインのライン積分値を取得する。画素値とは、画素の輝度値を意味する。例えば、1280×720のフレームサイズでは、720本の水平ラインが、フレームを構成する複数の水平ラインに相当する。
【0062】
ライン積分部211は、複数の水平ラインの各々に対して、ライン積分値を算出する。例えば、1280×720のフレームサイズでは、1水平ラインには、1280の画素が含まれている。ライン積分部211は、各水平ラインに対して、1280の画素の各画素値を積算して、その積算値をライン積分値(以下、「第1の積分値」と称する場合がある。)として算出する。ライン積分部211は、第1の積分値を1水平ラインに含まれる画素数で除算(正規化)して得られるライン積分値の平均値を算出してもよい。または、ライン積分部211は、1水平ライン内の所定の条件を満たす画素の輝度値のみを積分してライン積分値(以下、「第2の積分値」と称する場合がある。)を算出してもよいし、第2の積分値を所定の条件を満たす画素数で除算して正規化してもよい。
【0063】
ここで、本願明細書において用いる用語の定義をしておく。「ライン積分値」とは、上述した第1のライン積分値に限らず、第2のライン積分値および第1、第2のライン積分値を画素数で正規化した値を含んでいる。
【0064】
輝度値を12ビットで表すと、所定の条件とは、例えば、画素の輝度値が下限値204から上限値3481の範囲にあることである。下限値以上とすることによって、SN比(signal to Noise)が良くない画素が除かれ、上限値以下とすることにより、飽和している恐れがある画素が除かれる。このように、フリッカ成分の抽出の精度を低下させる要因を除くことができるので、フリッカの周波数、位相、振幅に関する情報の検出精度が向上する。
【0065】
なお、所定の条件は、上述した条件に限定されず、フリッカ成分の抽出において、悪影響を与える水平ラインを除去できる条件であればよい。
【0066】
サンプリング部212は、ライン積分部211から得られるライン積分値から条件の良いライン積分値を選択する。具体的には、サンプリング部212は、ライン積分部211の出力の中から、所定の条件を満たす画素値を有する画素の数が多い順番で第1の標本対象を抽出する。サンプリング部212は、第1の標本対象に対応した水平ラインを複数の水平ラインの一部として決定する。なお、所定の条件とは、例えば、上述したような輝度値の範囲である。
【0067】
図4は、Nフレーム間における同一の垂直座標に位置する水平ラインから得られるライン積分値を模式的に示す図である。垂直座標とは、垂直方向におけるフレーム内の水平ラインの座標位置である。例えば、フレームサイズが1280×720の場合、フレーム内の最上位の水平ラインの垂直座標を「0」と表すことができ、最下位の水平ラインの垂直座標を「719」と表すことができる。
図4中のF(1)、F(2)、F(3)、・・・、F(N)は、1からNまでの各フレームを示す。Nは、フリッカ低減の処理に必要な所定のフレーム数である。例えば、フレーム数Nは、12とすることができる。本願明細書では、所定のフレーム数(フレーム期間)を「解析単位」と称する。なお、解析単位は、上述したとおり、フリッカ周波数とフレームレートとの最大公約数に基づいて決定される。
【0068】
F(n)のnはフレーム番号を表す。n=1、2、3、・・・、Nの場合、I(n,L
1)、I(n,L
2)、・・・、I(n,L
S)は、サンプリング部212がライン積分部211の出力から標本対象であるS本のライン積分値を採取することによって得られる、フレームF(n)の各ライン積分値を示す。I(n,L
s)のnは、フレーム番号を表している。s(1≦s≦S)は、標本対象の水平ラインの選択ライン番号を表している。L
sは、選択ライン番号sに属する水平ラインの垂直座標を表している。例えば、フレームサイズが1280×720のとき、標本対象の水平ラインの垂直座標が、それぞれ100、110、115である場合を考える。この場合、選択ライン番号1が、垂直座標100の水平ラインに割り当てられ、選択ライン番号2が、垂直座標110の水平ラインに割り当てられ、選択ライン番号3が、垂直座標115の水平ラインに割り当てられる。
【0069】
標本対象の水平ラインの数を示すSは、フレームを構成する水平ライン数の総数よりも小さい値である。同じ選択ライン番号に属するライン積分値、例えば、I(1,L
1)、I(2,L
1)、I(3,L
1)は、フレーム1〜3までの同一の垂直座標に位置した水平ラインのライン積分値を示している。例えば、1280×720のフレームサイズでは、標本対象の水平ラインの数Sは720よりも小さい値となる。第1の標本対象の数Sが50に予め設定されている場合、1≦s≦50の関係を満たす。なお、第1の標本対象の数Sは製品仕様等によって適宜決定され得る。第1の標本対象および後述する第2の標本対象の数Sは、3以上であることが好ましい。
【0070】
サンプリング部212は、カウンタ213を含んでいる。カウンタ213は、1水平ラインにおいて上述した所定の条件を満たす画素値の数をカウントする。
【0071】
サンプリング部212が、標本対象であるS本のライン積分値を2段階で採取する一例を示す。まず、サンプリング部212は、上述した所定の条件の下限値に基づいて第1の標本対象を採取する。具体的には、カウンタ213は、下限値以上である画素値の数をカウントする。サンプリング部212は、カウンタ213のカウント数がしきい値以上である水平ラインに対応したライン積分値を第1の標本対象の候補として抽出する。これにより、SN比が良くない画素を含む水平ラインに対応したライン積分値を除くことができる。
【0072】
サンプリング部212は、第1の標本対象の候補の中から、下限値以上である画素値の数が多い順番で第1の標本対象を決定する。例えば、第1の標本対象の数S1が50に予め設定されているときに、第1の標本対象の候補として80本の水平ラインに相当するライン積分値が抽出され得る。その場合、サンプリング部212は、下限値以上である画素値の数が多い順番で第1の標本対象の80の候補から50を抽出し、第1の標本対象に対応した水平ラインを複数の水平ラインの一部として決定する。このとき、選択ライン番号sは、1≦s≦50の関係を満たす。複数の水平ラインの一部は、後述する画像間DFT部230での離散フーリエ変換(以下、DFTと称する。)の対象となる。
【0073】
サンプリング部212は、カウンタ213が示すカウント値と、内部メモリ(不図示)に記憶されたしきい値との関係に応じて、第1の標本対象の中から第2の標本対象をさらに抽出して、第2の標本対象に対応した水平ラインを複数の水平ラインの一部として決定してもよい。
【0074】
サンプリング部212は、上述した所定の条件の上限値に基づいて第1の標本対象の中から第2の標本対象をさらに抽出する。具体的には、カウンタ213は、第1の標本対象である各水平ラインにおいて、上限値以下である画素値の数をカウントする。サンプリング部212は、カウンタ213のカウント数がしきい値以上である水平ラインに対応したライン積分値を第2の標本対象の候補として抽出する。これにより、SN比が良くない画素および飽和している恐れがある画素を含む水平ラインに対応したライン積分値を除くことができる。
【0075】
サンプリング部212は、第2の標本対象の候補の中から、上限値以下である画素値の数が多い順番で第2の標本対象を決定する。例えば、第2の標本対象の数S2が20に予め設定されているときに、第2の標本対象の候補として30本の水平ラインに相当するライン積分値が抽出される。その場合、サンプリング部212は、上限値以下である画素値の数が多い順番で第2の標本対象の30の候補から20を抽出し、第2の標本対象に対応した水平ラインを複数の水平ラインの一部として決定する。このとき、選択ライン番号sは、1≦s≦20の関係を満たす。複数の水平ラインの一部は、後述する画像間DFT部230でのDFTの対象となる。
【0076】
このように、サンプリング部212は、所定の条件に基づいて標本対象を抽出するので、フリッカの検出に悪影響を与える水平ラインを確実に排除することができ、より高い精度でフリッカ成分を検出することができる。
【0077】
また、サンプリング部212は、フレーム間での動きベクトルに基づいて、第1の標本対象の中から第2の標本対象をさらに抽出して、第2の標本対象に対応した水平ラインを複数の水平ラインの一部として決定してもよい。これにより、例えばマクロブロック単位でフレーム間での動きを考慮して、標本対象である水平ラインを決定できるので、より高い精度でフリッカを検出することができる。
【0078】
サンプリング部212は、最新のフレームをフレームF(N)とすると、最新よりも以前に取得したF(1)からF(N−1)までの選択ライン番号sに対応した各ライン積分値をライン積分値メモリ220に書き込む。または、サンプリング部212は、F(1)からF(N)の解析単位で選択ライン番号sに対応した各ライン積分値をライン積分値メモリ220に書き込んでもよい。
【0079】
このように、ライン積分値メモリ220は、フレームを構成する全ての水平ラインのライン積分値を格納しなくてもよい。画像を構成する全ての水平ラインから、標本対象となるものを密(例えば、等間隔)に選択しなくてもよい。そのため、ライン積分値メモリ220は、標本対象の数Sだけライン積分値を格納する容量を有していればよい。この結果、メモリサイズを低減することができる。
【0080】
(ステップS12)
フリッカ低減部200は、フリッカ低減部200全体を制御するためのコントローラ(不図示)を含んでいる。コントローラは、所定のフレーム数分のライン積分値がライン積分値メモリ220に書き込まれた否かを監視している。上述したとおり、所定のフレーム数は、N−1または解析単位である。コントローラは、所定のフレーム数分のライン積分値が書き込まれていないと判定した場合(ステップS12のNo)、ライン積分値取得部210は、所定のフレーム数分のライン積分値がライン積分値メモリ220に書き込まれるまで、次のフレームのライン積分値を算出することを繰り返す。
【0081】
一方、コントローラは、所定のフレーム数分のライン積分値が書き込まれたと判定した場合(ステップS12のYes)、次のステップであるDFTが実行される(ステップS13)。
【0082】
(ステップS13)
画像間DFT部230は、フレームF(1)からフレームF(N−1)までの選択ライン番号sに対応した各ライン積分値をライン積分値メモリ220から読み出す。画像間DFT部230は、選択ライン番号sに対応した、ライン積分値メモリ220から読み出したライン積分値およびフレームF(N)のライン積分値を用いてDFTを実行する。具体的には、画像間DFT部230は、選択ライン番号s(1≦s≦S)に対応するライン積分値I(1,L
s)、I(2,L
s)、・・・、I(N,L
s)から構成されるライン積分値列にDFTを実行する。
【0083】
なお、フレームF(1)からF(N)までの解析単位で各ライン積分値がライン積分値メモリ220に書き込まれているときは、画像間DFT部230は、ライン積分値列をライン積分値メモリ220から読み出してDFTを実行しても構わない。
【0084】
図5(a)は、各選択ライン番号に対応するライン積分値列にDFTを実行することを説明するための図である。
図5(a)に示す例では、標本対象の数Sは5である。画像間DFT部230は、最新のフレームF(N)および最新よりも以前に取得した複数のフレームF(1)からF(N−1)の間において、同一の選択ライン番号sに対応するライン積分値から構成されるライン積分値列にDFTを選択ライン番号毎に実行する。
【0085】
DFTは、フレーム数Nおよびフレーム内の水平ラインの垂直座標yを用いて数式1により表される。
【数1】
ここでI(y,j)は、フレームF(j)における垂直座標yの水平ラインに対応するライン積分値を示している。DFTにより、振幅A
k(y)、および位相φ
k(y)が求まる。
【0086】
画像間DFT部230は、商用電源の周波数とフレームレートとに基づいてフリッカが現れる周波数の候補を推定し、その周波数の候補に基づいてライン積分値列にDFTを実行するようにしてもよい。
【0087】
これにより、画像間DFT部230は、その推定した周波数を含む近傍の周波数に相当する位置でのフーリエ変換係数だけを求めればよくなり、画像間DFT部230での演算量が低減される。また、DFT演算の高速化に繋がる。
【0088】
(ステップS14)
フリッカ検出部240は、フリッカが画像信号中に存在するか否かを画像間DFT部230のDFTの結果に基づいて判定する。具体的には、フリッカ検出部240は、フリッカが出現するフーリエ変換係数(DFT係数)を参照する。フリッカ検出部240は、その複素数であるフーリエ変換係数の大きさから、フリッカ成分が出現する位置(フリッカ周波数の候補)でのフリッカの振幅の大きさを算出する。
【0089】
図5(b)は、フレームレートが120fps、フリッカ周波数が100Hzであるときの、DFTによって得られる周波数‐振幅特性の例を示している。
図5(b)の横軸は周波数を示し、縦軸は振幅を示している。フレームレートとフリッカ周波数との関係から、ナイキスト周波数(60Hz)において折り返しが発生し、フリッカ周波数は20Hzの位置に現れている。フリッカ検出部240は、サンプリング部212の標本対象の各水平ラインに対して、周波数20Hzの位置でのフリッカの振幅の大きさを算出する。
【0090】
フリッカの振幅は、対象の水平ラインの画像信号の成分に比例した値である。このため、フリッカ検出部240は、フリッカの振幅の大きさを画像の直流(DC)成分によって正規化して得られる正規化振幅(フリッカの振幅)を、標本対象の数Sだけ算出する。フリッカ検出部240は、これらの正規化振幅から代表値を求める。例えば、代表値は、正規化振幅の平均値としてもよいし、または正規化振幅の中央値もしくは最頻値としてもよい。
【0091】
フリッカ検出部240は、代表値が所定値以上である場合、フリッカが画像信号中に存在すると判定する。一方で、代表値が所定値未満である場合、フリッカ低減処理を停止する命令を後段の補正演算部270に送信する。
【0092】
(ステップS15)
直線近似部250は、DFTの結果から得られる位相(偏角)情報に基づいて近似直線を求め、近似直線からフリッカの情報を抽出する。具体的には、直線近似部250は、フリッカ成分が出現するフーリエ変換係数を参照し、その複素数であるフーリエ変換係数の偏角から、フリッカ成分が出現する位置でのフリッカの位相を算出する。
【0093】
図5(c)は、フリッカが出現する周波数(20Hz)でのDFT係数の偏角とフレーム内の水平ラインの垂直座標との関係を示す。
図5(c)の横軸は、フレーム内の水平ラインの垂直座標を示し、縦軸は偏角(位相)を示している。
【0094】
選択ライン番号sに属する水平ラインの垂直座標と位相とをプロットした場合、標本対象の数であるS個のプロット点は理想的には直線上に並ぶ。直線近似部250は、このS個の座標点から近似直線(回帰直線)の傾きaおよび切片bを求める。回帰直線を求めるためには、垂直座標と位相とのプロット数は、2つであればよいが、直線近似の精度を考慮すると、3つ以上であることが好ましい。
【0095】
直線近似部250は、傾きaおよび切片bを用いて数式2に従ってフリッカ初期位相θおよびフリッカ周波数f
kを算出する。
【数2】
ここで、f
sはフレームレートであり、L
Nは、フレーム中の、ブランキング期間を含めたライン数である。
【0096】
数式2に示すとおり、近似直線の縦軸の切片bは、垂直座標y=0におけるフリッカ成分の位相を示している。この位相を初期位相と定義する。また、近似直線の傾きaからフリッカ周波数f
kを算出することができる。
【0097】
このように、DFTの結果から得られる位相情報を用いて直線近似によりフリッカの周波数および初期位相をより正確に求めることができるので、フリッカの検出精度が向上する。
【0098】
(ステップS16)
フリッカ係数算出部260は、フリッカの初期位相および周波数(フリッカの情報)に基づいてフリッカ低減処理用のフリッカ係数を算出する。具体的には、フリッカ係数算出部260は、フリッカ検出部240から正規化振幅の代表値を取得し、直線近似部260からフリッカの初期位相および周波数を取得する。フリッカ検出部240は、フリッカが画像信号中に存在すると判定したとき、フリッカ係数算出部260は、正規化振幅の代表値、フリッカの初期位相およびフリッカの周波数から、フリッカ低減部200に入力する最新(現在)のフレーム内の各水平ラインに対応するフリッカ係数を生成する。
【0099】
補正演算部270は、フリッカ係数算出部260で得られたフリッカ係数を用いてフリッカ低減処理を画像信号に実行する。具体的には、補正演算部270は、水平ライン内の各画素値を、その水平ラインに対応したフリッカ係数に1を加えた値で除算することによって、各画素値からフリッカ成分を低減した画素の補正値を求める。また、補正演算部270は、フリッカ低減処理を停止する命令をフリッカ検出部240から受信したとき、フリッカ低減処理の実行を停止する。この結果、フリッカ低減部200の消費電力を低減することができる。
【0100】
フリッカ係数算出部260によるフリッカ係数の更新のタイミングの一例を説明する。
【0101】
フリッカ係数は、所定のタイミングで更新される。所定のタイミングとは、例えば、解析単位である12フレーム毎である。フリッカ係数算出部260は、動画ストリームを構成する連続するフレーム間の一部のフレームである、最初の1から12フレームに基づいてフリッカ係数Aを算出する。次の13フレームから24フレーム間は、補正演算部270は、フリッカ係数Aを用いてフリッカ低減部200に入力する画像信号からフリッカを低減する処理を行う。フリッカ係数算出部260は、この間に、13フレームから24フレームに基づいてフリッカ係数Bを算出する。次の25から36フレーム間は、補正部270は、フリッカ係数Bを用いてフリッカ低減部200に入力する画像信号からフリッカを低減する処理を行う。フリッカ係数算出部260は、この間に、25から36フレームに基づいてフリッカ係数Cを算出する。
【0102】
本実施の形態によるフリッカ低減部200によれば、例えば、高フレームレート撮影のようにより多くのフレーム数が必要になる撮影であっても、所定のフレーム間において、標本対象の数Sだけのライン積分値をメモリに格納すればよい。その結果、比較的サイズが小さいメモリを用いることができるので、メモリのコストを削減することができる。また、直線近似部250により、フリッカの周波数および初期位相をより正確に検出することが可能となるので、フリッカの検出精度をさらに向上させることができる。
【0103】
(他の変形例)
上述した実施の形態1では、フリッカ低減部200を有する機器が撮像装置である例を示した。しかしながら、本発明の一態様はこれに限定されず、例えば、フリッカ低減部200を有する機器はレコーダであってもよい。
【0104】
実施の形態1では、イメージセンサ102はCMOSセンサであったが、本発明の一態様はこれに限定されない。例えば、CCD(Charge Coupled Device)センサであってもよい。CCDセンサはグローバルシャッタ式のイメージセンサであり、グローバルシャッタに起因したフレーム間で生じるフリッカを低減することができる。
【0105】
実施の形態1では、フリッカ低減部200の入力画像は、AFE部104から出力されるデジタル画像信号である。このデジタル画像信号はRAWデータであり、例えば12ビット幅の信号である。本発明の一態様はこれに限定されず、フリッカ低減部200の入力画像は、例えばH.264規格に準拠して圧縮された圧縮画像データであってもよい。圧縮画像データは、例えば、8ビット幅の信号である。圧縮画像データのビット幅はRAWデータのビット幅と比べて小さいので、フリッカの検出精度は若干落ちるものの、圧縮画像データからフリッカを低減できる。ただし、圧縮画像データは、信号処理部108においてガンマ補正の処理を受けている。このため、フリッカ低減部200が圧縮画像データを処理するときは、入力データである圧縮画像データに逆ガンマ補正の処理を実行しておく。
【0106】
フリッカ低減部200が圧縮画像データを処理する場合には、本発明の一態様は、クラウドサーバ上のメモリ内に実装されるコンピュータプログラムにも適用され得る。
【0107】
クラウドサーバの利用者がクラウドサーバ上に圧縮画像データ(動画像データ)をアップロードする。クラウドサーバのコンピュータはメモリに実装されたコンピュータプログラムを実行して、フリッカ成分を含む動画像データからフリッカ成分を除去する。利用者は処理後の動画像データをダウンロードすることにより、フリッカ成分が除去され動画像データを得ることができる。
【0108】
本発明の一態様は、実施の形態1によるフリッカの低減処理を規定するソフトウェア(コンピュータプログラム)にも適用され得る。そのようなコンピュータプログラムに規定される動作は、例えば
図5に示すとおりである。このようなコンピュータプログラムは、可搬型の記録媒体に記録されて提供され得る他、電気通信回線を通じても提供され得る。コンピュータに内蔵されたプロセッサがこのようなコンピュータプログラムを実行することにより、実施の形態1で説明した各種動作を実現することができる。