以下、本発明の画像処理装置及び方法の各実施形態について、添付図面を参照して説明する。各実施形態においては、画像処理装置をビデオカメラに適用し、ビデオカメラで行われる画像処理方法を例として説明する。
<第1実施形態>
図1を用いて、第1実施形態の画像処理装置であるビデオカメラ101の全体構成について説明する。ビデオカメラ101は、撮像部1,フラッシュ検出部2,画像信号処理部3,バッファメモリ4,圧縮伸張処理部5,出力信号処理部6,表示部7,フラッシュ補正部80,制御部9,メモリ10,記録再生部11,操作スイッチ12を備える。記録再生部11は、半導体メモリ,ハードディスク・ドライブ等の任意の記録媒体を有する。記録媒体はビデオカメラ101に対して着脱自在であってもよい。
撮像部1は、レンズや絞り等の光学系(図示せず)、CMOSセンサ1s、露出やピントの制御機構(図示せず)等を有する。一例として、撮像部1は3つのCMOSセンサ1sを有し、3つのCMOSセンサ1sから赤,緑,青それぞれの色信号であるR,G,B信号を示す電気信号を出力する。勿論、CMOSセンサ1sは1つであってもよい。撮像部1は、レンズを介してCMOSセンサ1sに入力された光情報を所定のタイミングで電気信号として取り出し、電気信号をフラッシュ検出部2及び画像信号処理部3に供給する。
フラッシュ検出部2は、ライン平均輝度算出部21,ライン平均輝度保持部22,全画面平均輝度算出部23,全画面平均輝度保持部24,差分算出部25,フラッシュ判定部26を有する。フラッシュ検出部2は、制御部9による制御に従って以下のようにフラッシュの発光を検出する。
ライン平均輝度算出部21は、撮像部1から供給された電気信号におけるラインごとの明るさの平均を算出する。第1実施形態においては、R,G,B信号の内、G信号に基づいてラインごとの明るさの平均を算出する。具体的には、ライン平均輝度算出部21は、G信号の値を1ラインの有効画素分に渡って加算し、有効画素数で除算することによって1ラインの明るさの平均(ライン平均輝度)を算出する。ライン平均輝度を算出する基にする信号はG信号に限定されるものではない。
ライン平均輝度算出部21によって算出されたライン平均輝度は、ライン平均輝度保持部22及び全画面平均輝度算出部23に入力される。ライン平均輝度保持部22は、ライン平均輝度算出部21によって算出されたライン平均輝度を一時的に保持する。全画面平均輝度算出部23は、1画面(1フレーム)全体の明るさの平均を算出する。具体的には、全画面平均輝度算出部23は、順次入力されるライン平均輝度を1画面の有効ラインに渡って加算し、有効ライン数で除算することによって1画面全体の明るさの平均(全画面平均輝度)を算出する。全画面平均輝度保持部24は、全画面平均輝度を一時的に保持する。
差分算出部25には、ライン平均輝度保持部22で保持されたライン平均輝度と、全画面平均輝度保持部24で保持された全画面平均輝度とが入力される。なお、全画面平均輝度を算出した画面とライン平均輝度を算出した画面とは1画面ずれており、全画面平均輝度を算出した画面は、ライン平均輝度を算出した画面の1画面前の画面である。1画面前の画面の全画面平均輝度を1画面の期間保持しておき、2画面前の画面の全画面平均輝度として用いてもよい。また、1画面前の画面の全画面平均輝度と2画面前の画面の全画面平均輝度との双方を保持し、1画面前の画面がフラッシュの発光の影響を受けている場合に、2画面前の画面の全画面平均輝度を用いるようにしてもよい。
第1実施形態では、ライン平均輝度を算出している画面を現在の画面、全画面平均輝度を算出した画面を1画面前の画面とする。即ち、現在の画面が、フラッシュの発光によって高輝度となっているラインを含むか否かの検出対象となっている対象画面である。差分算出部25は、現在の画面におけるそれぞれのライン平均輝度と1画面前の画面における全画面平均輝度との差分を順次算出する。差分算出部25は差分の絶対値をとり、差分値として出力する。
差分算出部25によって算出された差分値は、フラッシュ判定部26に入力される。フラッシュ判定部26は、ラインごとの差分値が設定された閾値以上であるか否かを判定するとともに、差分値が閾値以上である状態が予め設定したライン数以上継続するか否かを判定する。フラッシュ判定部26は、差分値が閾値以上である状態が予め設定したライン数以上継続したと判定した場合に、フラッシュの発光によって画像の明るさが不連続となったと検出する。
フラッシュ判定部26は、フラッシュが発光したことを示す検出信号と併せて、フラッシュの発光の開始時点である差分値が閾値以上となった最初のライン番号を示すデータと、差分値が閾値未満となった最初のライン番号を示すデータとを出力する。差分値が閾値未満となった最初のラインの1ライン前のラインがフラッシュの発光の最終ラインである。
なお、フラッシュ判定部26は、例えば、フラッシュが発光したと判定した場合にはフラッシュが発光したことを示す検出信号として“1”を、フラッシュが発光しなかったと判定した場合にはフラッシュが発光しなかったことを示す検出信号として“0”を生成すればよい。
以上の説明より分かるように、フラッシュ検出部2は、ライン平均輝度、全画面平均輝度、差分値を算出し、差分値を判定してフラッシュの発光を検出するだけであるので、フレームメモリのような大容量のメモリリソースを備える必要はない。なお、ここではフラッシュの発光を検出としたが、上記のように、フラッシュと同様の発光期間が短く強い光がCMOSセンサ1sに入射した場合にもフラッシュ検出部2は画像の明るさが不連続となったことを検出する。このような場合も含めてフラッシュの発光の検出とする。
フラッシュ検出部2は、現在の画面におけるそれぞれのラインのライン平均輝度と、例えば1画面前の画面である過去の画面の全画面平均輝度とを比較するので、画面の一部のラインがフラッシュの発光によって高輝度となっている場合には、高輝度となっている全てのラインで差分値が閾値以上となる。仮に現在の画面内で隣接するラインのライン平均輝度を比較した場合には、正常なラインと高輝度となったラインの境界のみしか差分値が閾値以上とならない。従って、本実施形態においては、画面内で画像の明るさが不連続となったことを誤検出少なく検出することが可能である。
画像信号処理部3は、撮像部1から供給された電気信号を所定の信号方式に変換する。上記のように第1実施形態におていは、電気信号はR,G,B信号であるため、ホワイトバランスやゲインを調整し、ガンマ処理等を行った後に、輝度信号Yと色差信号Cb,Crに変換する。フラッシュ検出部2は、輝度信号Yに基づいてライン平均輝度及び全画面平均輝度を算出してもよい。バッファメモリ(保持部)4は、画像信号処理部3より出力された輝度信号Yと色差信号Cb,Crの画像データを一時的に保持する。色差信号Cb,Crを帯域制限して輝度信号Yと時間軸多重すれば、画像処理に必要なメモリや演算リソースを少なくすることができる。
フラッシュの発光が検出された場合には、画像信号処理部3からバッファメモリ4へと入力されて保持された画像データが後述するフラッシュ補正部80による画像データの補正処理の際に用いられる。
圧縮伸張処理部5は、バッファメモリ4より読み出した画像データをMPEG-2,MPEG-4 AVC/H.264,JPEG等の圧縮方式によって圧縮処理して符号化データを生成するとともに、記録再生部11に記録された符号化データを再生して読み出した場合に符号化データを伸張処理する。
出力信号処理部6は、バッファメモリ4より読み出した画像データを外部機器(図示せず)に出力するとともに、後段の表示部7の入力フォーマットに合わせて例えばNTSC信号方式に変換し、表示部7の表示画面の大きさに合わせて画像データのサイズを変更する。これによって、画像データは表示部7に表示可能なデータとなり、表示部7に供給されて表示される。出力信号処理部6には制御部9から出力されたオンスクリーン信号も入力され、出力信号処理部6はオンスクリーン信号を画像データに重畳する。
フラッシュ補正部80には、フラッシュ判定部26より出力された検出信号が入力される。フラッシュ補正部80は、補正制御部81と補正処理部82と効果処理部83とを有する。
フラッシュ補正部80は、制御部9による制御に従って、フラッシュの発光によって明るさが不連続となった画像データを補正する。フラッシュ補正部80は、フラッシュの発光によって部分的に高輝度となっている画像データが記録再生部11に記録されている場合に、画像データの再生時に画像データを補正する。領域補正モードに設定されている場合と画面単位切換モードに設定されている場合の補正処理部82の動作については後述する。
効果処理部83は、補正処理部82によって補正された画像データに対して擬似的なフラッシュ効果を付加して、バッファメモリ4へと供給する。
制御部9には、後述する領域補正モードと画面単位切換モードとのいずれかが設定されている。フラッシュ検出部2及びフラッシュ補正部80は、制御部9に設定されているモードの情報を参照する。補正制御部81は、補正処理部82が制御部9に設定されているモードに応じた補正処理動作を実行するよう補正処理部82を制御する。なお、画面単位切換モードは必須ではなく、必要に応じて領域補正モードと画面単位切換モードとを選択するようにすればよい。
制御部9は、CPUを有するマイクロコンピュータによって構成することができる。制御部9はビデオカメラ101の全体を制御する制御プログラムを記憶した記憶部を有し、制御プログラムに基づいてビデオカメラ101の全体を制御する。第1実施形態による画像処理を画像処理プログラムによって実現する場合には、制御プログラムの一部として第1実施形態の画像処理を実行させる画像処理プログラムを含むようにすればよい。この場合、制御部9は画像処理プログラムを実行させてフラッシュの発光を検出し、フラッシュが発光した場合に画像データを補正する。
制御部9には、制御部9の作業用メモリとしてのメモリ10が接続されている。また、制御部9には、記録再生部11と操作スイッチ12とが接続されている。制御部9は操作スイッチ12によって撮像した動画像を記録する指示がなされたら、圧縮伸張処理部5より出力された符号化データを記録再生部11に記録するよう制御する。
また、制御部9は操作スイッチ12によって撮像した動画像を記録する指示がなされたら、記録再生部11に符号化データを再生させて読み出し、圧縮伸張処理部5へと供給するよう制御する。制御部9は、操作スイッチ12による操作に従ってオンスクリーン信号を発生して、出力信号処理部6へと供給する。
図1では、フラッシュ検出部2をハードウェアにて構成した例を示しているが、ソフトウェアによって構成してもよい。即ち、第1実施形態の画像処理プログラムの一部であるフラッシュ検出プログラムを実行させることによって、フラッシュ検出部2と同等の構成を実現してもよい。また、フラッシュ補正部80もソフトウェアによって構成してもよい。即ち、第1実施形態の画像処理プログラムの一部であるフラッシュ補正プログラムを実行させることによって、フラッシュ補正部80と同等の構成を実現してもよい。
ここで、図2を用いて、動画像の撮影時に撮影者以外の他者のフラッシュが発光した場合に発生する画像の明るさが不連続となる現象について説明する。ローリングシャッタ方式を採用するCMOSセンサ1sはラインLn単位で撮像した画素データを読み出していくので、撮像部1による被写体の撮像ST1,ST2,ST3,ST4…は、図2(b)に示すように、画面の最初のラインLnから最後のラインLnまでタイミングが時間方向に順次ずれていく。1つのラインLnの撮像は、図2の(a)に示すように、露光時間と画素データの読み出し時間とを含む。
撮像部1による撮像ST1,ST2,ST3,ST4…によって、撮像部1からは図2の(c)に示すように、有効データD1,D2,D3,D4…が出力される。時刻t1にて他者のフラッシュによる発光FLがあり、CMOSセンサ1sに入射したとする。この場合、撮像ST2の一点鎖線で示す位置から最後のラインLnまでの各ラインLnと、撮像ST3の最初のラインLnから一点鎖線で示す位置までの各ラインLnは発光FLによる影響を受けることになる。
第1実施形態による画像データの補正を行わないとすると、記録再生部11に記録されて再生され、表示部7に表示される画像Im1,Im2,Im3,Im4…は図2の(d)に示すようになる。画像Im1,Im4は発光FLによる影響を受けておらず、画面の明るさが連続して正常な画像である。画像Im2は、一点鎖線以降の下端部で白帯状に明るくなっており、画像の明るさが不連続となった正常でない画像である。ハッチングを付した部分が高輝度の部分を示す。画像Im3は、上端から一点鎖線までの上端部で同様に白帯状に明るくなっており、画像の明るさが不連続となった正常でない画像である。
なお、撮影者が所有するビデオカメラ101のフラッシュを発光させる場合には、フラッシュの発光のタイミングを図2の(b)に示す撮像のタイミングと合わせるので、図2の(d)に示すような画像の明るさが不連続となる現象は発生しない。
図3〜図5を用いて、第1実施形態によるビデオカメラ101の動作についてさらに詳細に説明する。図3は、ビデオカメラ101による撮影及び記録処理の全体的な流れを示している。図3において、制御部9は、ステップS1にて、操作スイッチ12による撮影開始の指示があったか否かを判定する。撮影開始の指示があったと判定されれば(YES)、制御部9は、ステップS2にて、絞り及びシャッタースピード等の条件に合わせて撮像部1を制御して撮影を開始させる。なお、操作スイッチ12によるビデオカメラ101の電源投入の指示を撮影開始の指示としてもよい。撮影開始の指示があったと判定されなければ(NO)、制御部9は処理をステップS1に戻してステップS1を繰り返す。
制御部9は、ステップS30にて、フラッシュ検出部2によるフラッシュ検出処理を実行させる。また、制御部9は、ステップS30と並行して、ステップS4にて、画像信号処理部3による画像信号処理を実行させる。ステップS30のフラッシュ検出処理の詳細については後述する。制御部9は、ステップS5にて、出力信号処理部6を制御して表示部7に撮影した画像を表示させる。
制御部9は、ステップS6にて、操作スイッチ12による記録開始の指示があったか否かを判定する。記録開始の指示があったと判定されれば(YES)、制御部9は、ステップS7にて、圧縮伸張処理部5より出力された符号化データを記録再生部11に記録させる。記録開始の指示があったと判定されなければ(NO)、制御部9は、処理をステップS11に移行させる。
制御部9は、ステップS8にて、記録終了の指示があったか否かを判定する。記録終了の指示があったと判定されれば(YES)、制御部9は、ステップS9にて、記録再生部11への記録を停止させる。記録終了の指示があったと判定されなければ(NO)、制御部9は処理をステップS7に戻してステップS7を繰り返す。
制御部9は、ステップS9に続き、ステップS11にて、操作スイッチ12によって、記録再生部11に記録された所定の画像データの再生を開始する指示があったか否かを判定する。再生開始の指示があったと判定されれば(YES)、制御部9は、ステップS12にて、記録再生部11に記録された画像データ(符号化データ)を再生させる。記録再生部11から読み出された符号化データは、圧縮伸張処理部5によって伸張処理され、バッファメモリ4に入力されて保持される。再生開始の指示があったと判定されなければ(NO)、制御部9は、処理をステップS10に移行させる。
制御部9は、ステップS13にて、フラッシュ検出領域があるか否かを判定する。フラッシュ検出領域とは、再生する画像データ内でフラッシュの発光によって高輝度となっていることが検出された領域である。画像データにおけるどの部分がフラッシュ検出領域であるかは、後述するように、符号化データに付加したメタデータ(付加情報)を参照することによって判別することができる。
フラッシュ検出領域があると判定されれば(YES)、制御部9は、ステップS140にて、フラッシュ補正部80によるフラッシュ補正処理を実行させる。ステップS140におけるフラッシュ補正処理は、フラッシュの発光によって画像の明るさが不連続となった部分を補正するとともに、擬似的にフラッシュ発光の効果を付加する補正処理である。
制御部9は、ステップS15にて、ステップS140にて補正された画像データを表示部7に表示させる。
この場合、バッファメモリ4に保持された伸張処理後の画像データがフラッシュ補正部80へと入力され、ステップS140によるフラッシュ補正処理が実行される。補正された画像データはバッファメモリ4に入力されて保持され、出力処理部6を介して表示部7へと供給される。
ステップS13にてフラッシュ検出領域があると判定されなければ(NO)、制御部9は、処理をステップS15に移行させる。制御部9は、ステップS15にて、ステップS12にて再生された画像データをそのまま表示部7に表示させる。この場合、バッファメモリ4に保持された伸張処理後の画像データは、バッファメモリ4から出力処理部6へとそのまま出力され、表示部7へと供給される。
制御部9は、ステップS16にて、再生停止の指示があったか否かを判定する。再生停止の指示があったと判定されれば(YES)、制御部9は、ステップS17にて、画像データの再生を停止させて、処理をステップS10に移行させる。再生停止の指示があったと判定されなければ(NO)、制御部9は処理をステップS12に戻してステップS12以降を繰り返す。
制御部9は、ステップS10にて、操作スイッチ12による撮影終了の指示があったか否かを判定する。撮影終了の指示があったと判定されれば(YES)、制御部9は処理を終了させる。撮影終了の指示があったと判定されなければ(NO)、制御部9は、処理をステップS2に戻してステップS2以降を繰り返す。操作スイッチ12によるビデオカメラ101の電源切断の指示を撮影終了の指示としてもよい。
図4を用いて、図3に示すステップS30のフラッシュ検出処理の詳細について説明する。第1実施形態におけるステップS30をステップS301とする。以下の各ステップは、制御部9による制御に基づいてフラッシュ検出部2によって実行される。
図4において、フラッシュ検出部2は、ステップS3101にて、有効ラインにおける有効画素の画素値を加算する処理を有効ラインごとに順次実行する。フラッシュ検出部2は、ステップS3102にて、ステップS3101にて得た画素値の加算値を有効画素数で除算してライン平均輝度を算出し、ライン平均輝度を保持する。
フラッシュ検出部2は、ステップS3103にて、ライン平均輝度を順次加算する処理を実行する。フラッシュ検出部2は、ステップS3104にて、ステップS3102で算出したライン平均輝度と1画面前の全画面平均輝度との差分演算処理を実行する。ステップS3104における差分演算処理は、ステップS3102でライン平均輝度を算出するたびに実行される。
フラッシュ検出部2は、ステップS3105にて、フラッシュの発光を検出していない通常状態であるか否かを判定する。通常状態であると判定されれば(YES)、フラッシュ検出部2は、ステップS3106にて、差分値が閾値以上のラインを検出したか否かを判定する。差分値が閾値以上のラインを検出したと判定されれば(YES)、フラッシュ検出部2は、処理をステップS3107に移行させる。この際、フラッシュ検出部2は、検出したラインがフレームの最初のラインから何ライン目かを示す検出ライン情報を記憶しておく。
一方、差分値が閾値以上のラインを検出したと判定されなければ(NO)、フラッシュ検出部2は、既に検出ライン情報を記憶している場合は、それを消去するとともに、処理をステップS3111に移行させる。
フラッシュ検出部2は、ステップS3107にて、差分値が閾値以上である状態が所定ライン数以上継続したか否かを判定する。所定ライン数以上継続したと判定されれば(YES)、フラッシュ検出部2は、処理をステップS3108に移行させ、所定ライン数以上継続したと判定されなければ(NO)、フラッシュ検出部2は、処理をステップS3111に移行させる。
ステップS3105にて通常状態であると判定され、ステップS3106にて差分値が閾値以上のラインが検出され、ステップS3107にて差分値が閾値以上である状態が所定ライン数以上継続したと判定された場合は、フラッシュの発光の影響を受けていない状態からフラッシュの発光の影響を受けて高輝度の状態へと変化したことを検出したということである。
そこで、フラッシュ検出部2は、ステップS3108にて、フラッシュの発光を検出していない状態からフラッシュの発光を検出した状態へとフラッシュ検出状態を変更する。第1実施形態においては、フラッシュ検出部2は、フラッシュ発光の開始ラインを示す検出ライン情報を制御部9に供給し、記憶した検出ライン情報を消去する。
一方、ステップS3105にて通常状態であると判定されなければ(NO)、フラッシュ検出部2は、ステップS3109にて、差分値が閾値未満のラインを検出したか否かを判定する。差分値が閾値未満のラインを検出したと判定されれば(YES)、フラッシュ検出部2は、処理をステップS3110に移行させる。この際、フラッシュ検出部2は、検出したラインがフレームの最初のラインから何ライン目かを示す検出ライン情報を記憶しておく。
フラッシュ検出部2は、ステップS3110にて、差分値が閾値未満である状態が所定ライン数以上継続したか否かを判定する。所定ライン数以上継続したと判定されれば(YES)、フラッシュ検出部2は、処理をステップS3108に移行させ、所定ライン数以上継続したと判定されなければ(NO)、フラッシュ検出部2は、処理をステップS3111に移行させる。
ステップS3105にて通常状態ではないと判定され、ステップS3109にて差分値が閾値未満のラインが検出され、ステップS3110にて差分値が閾値未満である状態が所定ライン数以上継続したと判定された場合は、フラッシュの発光の影響を受けて高輝度の状態からフラッシュの発光の影響を受けていない状態へと変化したことを検出したということである。
そこで、フラッシュ検出部2は、ステップS3108にて、フラッシュの発光を検出している状態からフラッシュの発光を検出していない状態へとフラッシュ検出状態を変更する。第1実施形態においては、フラッシュ検出部2は、フラッシュ発光の終了ラインを示す検出ライン情報を制御部9に供給し、記憶した検出ライン情報を消去する。
フラッシュ検出部2は、ステップS3111にて、全有効ラインに対する判定が終了したか否かを判定する。全有効ラインに対する判定が終了したと判定されなければ(NO)、フラッシュ検出部2は、処理をステップS3101に戻し、ステップS3101以降の処理を繰り返す。全有効ラインに対する判定が終了したと判定されれば(YES)、フラッシュ検出部2は、ステップS3112にて、ライン平均輝度の加算値を有効ライン数で除算して全画面平均輝度を算出し、全画面平均輝度を保持する。
制御部9は、図3のステップS7にて、圧縮伸張処理部5より出力された符号化データを記録再生部11に記録させる際に、フラッシュ検出部2で検出したフラッシュ発光の開始ライン及び終了ラインを示す検出ライン情報を符号化データに付加するメタデータとして記録させる。
図5を用いて、図3に示すステップS140のフラッシュ補正処理の詳細について説明する。以下の各ステップは、制御部9による制御に基づいてフラッシュ補正部80によって実行される。制御部9は、符号化データに付加されているメタデータに基づいてフラッシュ補正部80によるフラッシュ補正処理を実行させる。
図5において、フラッシュ補正部80は、ステップS1401にて、画面単位切換モードであるか否かを判定する。画面単位切換モードであると判定されれば(YES)、フラッシュ補正部80は、ステップS1402にて、2画面にわたるフラッシュであるか否かを判定する。
2画面にわたるフラッシュであると判定されれば(YES)、フラッシュ補正部80は、ステップS1403にて、2画面目であるか否かを判定する。2画面目であると判定されれば(YES)、フラッシュ補正部80は、ステップS1404にて、1画面後の画面に置換する。ステップS1402にて2画面にわたるフラッシュであると判定されなければ(NO)、また、ステップS1403にて2画面目であると判定されなければ(NO)、フラッシュ補正部80は、ステップS1405にて、1画面前の画面に置換する。
図6において、(a)は補正前の画像Im1,Im2,Im3,Im4…を示している。図6において、ハッチングを付した部分がフラッシュの発光によって高輝度となっている部分である。図6の(b)に示すように、高輝度の部分を有する1画面目の画像Im2は、ステップS1405にて、1画面前の画像Im1に置換され、高輝度の部分を有する2画面目の画像Im3は、ステップS1404にて、1画面後の画像Im4に置換される。
次に、フラッシュ補正部80(効果処理部83)は、ステップS1410にて、補正した画面の全体に所定値以上の輝度信号を加算することによって擬似的なフラッシュ発光の効果を付加する。輝度信号は固定値でよい。
画像データに輝度信号の固定値を加算する代わりに、輝度信号に対し、または、輝度信号及び色差信号の双方に対し、所定のゲインを乗算することによって、擬似的なフラッシュ発光の効果を付加してもよい。輝度信号及び色差信号の双方に対しゲインを乗算する場合には、輝度信号に乗算するゲインと色差信号に乗算するゲインとを個別で設定することが好ましい。
図6の(c)は、画像Im2を1画面前の画像Im1に置換した画面の全体と、画像Im3を1画面後の画像Im4に置換した画面の全体に、擬似的なフラッシュ発光の効果を付加した状態を示している。画像Im1,Im4はそれぞれ、画面の全体にハッチングを付して示すように、画面の全体でフラッシュが発光している状態と等価な画像Im1”,Im4”とされている。
なお、上記説明ではフラッシュ発光によって高輝度の部分を有すると判定された2つの画像(Im2,Im3)に対して、それぞれIm1,Im4に置換後に擬似的なフラッシュ発光の効果を付加したが、画像Im2,Im3のうちいずれか1つの画像のみに擬似的なフラッシュ発光の効果を付加し、残りの画像は置換のみ行なうようにしてもよい。
一方、ステップS1401にて画面単位切換モードであると判定されなければ(NO)、フラッシュ補正部80は、ステップS1406〜S1408の領域補正モードに設定されている場合の処理を実行する。フラッシュ補正部80は、ステップS1406にて、1画面を複数の領域に分割する。
具体的には、フラッシュ補正部80は、図7の(a)に示すように、ステップS30のフラッシュ検出処理において検出した検出ライン情報が示すフラッシュ開始ラインLnfsよりも上方に位置し、フラッシュ開始ラインLnfsに隣接する複数ラインの隣接領域Aadjsと、図7の(b)に示すように、検出ライン情報が示すフラッシュ終了ラインLnfeよりも下方に位置し、フラッシュ終了ラインLnfeに隣接する隣接領域Aadjeを設定する。隣接領域Aadjs,Aadjeは例えば5〜10ライン程度でよい。
このように、フラッシュ補正部80は、フラッシュの影響を受けていない正常な部分と、フラッシュの発光によって高輝度となっている部分と、高輝度となっている部分の上方側または下方側に隣接する隣接領域とに領域に分割する。
フラッシュ補正部80は、ステップS1407にて、合成比率を生成する。具体的には、図7の(a)において、隣接領域Aadjsの最初のラインをLS、隣接領域Aadjsの最後のラインをLEとし、隣接領域Aadjsの画素位置をLf(i,j)とすると、現在の画面の画像データの合成重み付け係数Wf(i,j)と、1画面前の画面の画像データの合成重み付け係数Wb(i,j)は式(1)となる。
式(1)では、画素位置Lf(i,j)としているが、1画面前の画面の画像データと現在の画面の画像データとはライン単位で混合するので、画像の水平方向の位置を示すiの情報はなくてもよい。
図7の(b)において、隣接領域Aadjeの最初のラインをLS、隣接領域Aadjeの最後のラインをLEとし、隣接領域Aadjeの画素位置をLf(i,j)とすると、現在の画面の画像データの合成重み付け係数Wf(i,j)と、1画面前の画面の画像データの合成重み付け係数Wb(i,j)は式(2)となる。
同様に、式(2)では、画素位置Lf(i,j)としているが、1画面前の画面の画像データと現在の画面の画像データとはライン単位で混合するので、画像の水平方向の位置を示すiの情報はなくてもよい。
式(1)による現在の画面のラインと1画面前の画面のラインとを混合特性は図8の(a)となる。図8の(a)において、実線は現在の画面のラインの混合率を示し、破線は1画面前の画面のラインの混合率を示している。図8の(a)に示すように、図7の(a)に示す画像Im2の場合には、画面の上端側から隣接領域Aadjsの手前までは現在の画面のラインのみである。
隣接領域Aadjsにおいては、式(1)に基づいて、現在の画面のラインと1画面前の画面のラインとを混合して新たなラインを生成する。隣接領域Aadjsの最初のラインLSから最後のラインLEまで現在の画面のラインの混合率が順次減少していく一方、1画面前の画面のラインの混合率が順次増加していく。最後のラインLE以降、1画面前の画面のラインのみとなる。なお、フラッシュ開始ラインLnfsと最後のラインLEとを同一のラインとしてもよい。
式(2)による現在の画面のラインと1画面前の画面のラインとを混合特性は図8の(b)となる。図8の(b)において、実線は現在の画面のラインの混合率を示し、破線は1画面前の画面のラインの混合率を示している。図8の(b)に示すように、図7の(b)に示す画像Im3の場合には、画面の上端側から隣接領域Aadjeの手前までは1画面前の画面のラインのみである。
隣接領域Aadjeにおいては、式(2)に基づいて、1画面前の画面のラインと現在の画面のラインとを混合して新たなラインを生成する。隣接領域Aadjeの最初のラインLSから最後のラインLEまで1画面前の画面のラインの混合率が順次減少していく一方、現在の画面のラインの混合率が順次増加していく。最後のラインLE以降、現在の画面のラインのみとなる。なお、フラッシュ終了ラインLnfeと最初のラインLSとを同一のラインとしてもよい。
第1実施形態によれば、図2に示す画像Im2のように画面の途中から高輝度となっている場合には、フラッシュ開始ラインLnfsに対して上方に位置するフラッシュの影響を受けていない隣接領域Aadjsにおいて、最初のラインLSから最後のラインLEに進行するに従って1画面前の画面のラインに徐々に切り替わっていく。従って、現在の画面の画像データと1画面前の画面の画像データとを混合する不自然さが低減される。
また、第1実施形態によれば、図2に示す画像Im3のように画面の途中まで高輝度で途中から正常な画像となっている場合には、フラッシュ終了ラインLnfeに対して下方に位置するフラッシュの影響を受けていない隣接領域Aadjeにおいて、最初のラインLSから最後のラインLEに進行するに従って現在の画面のラインに徐々に切り替わっていく。従って、現在の画面の画像データと1画面前の画面の画像データとを混合する不自然さが低減される。
上述した式(1),(2)の代わりに、式(3)を用いて画素単位で現在の画面の画像データと1画面前の画面の画像データとを混合してもよい。式(3)において、Mf(i,j)は画素の明るさであり、ThH,ThLはThH>ThLを満たす明るさの閾値である。この場合には、フラッシュ検出部2で検出したそれぞれの有効画素の明るさをフラッシュ補正部80に入力すればよい。
式(3)によれば、隣接領域Aadjs,Aadjeにおいて、それぞれの画素の明るさMf(i,j)が小さい方の値の閾値ThLよりも小さければ、現在の画面の画像データの合成重み付け係数Wf(i,j)が1となり、1画面前の画面の画像データの合成重み付け係数Wb(i,j)が0となる。即ち、画素の明るさMf(i,j)が閾値ThLよりも小さいということはフラッシュの発光による影響を受けていない可能性が高く、現在の画面の画素データのみとする。
また、それぞれの画素の明るさMf(i,j)が大きい方の閾値ThHよりも大きければ、現在の画面の画像データの合成重み付け係数Wf(i,j)が0となり、1画面前の画面の画像データの合成重み付け係数Wb(i,j)が1となる。即ち、画素の明るさMf(i,j)が閾値ThHよりも大きいということはフラッシュの発光による影響を受けている可能性が高く、1画面前の画面の画素データのみとする。
それぞれの画素の明るさMf(i,j)が閾値ThL以上閾値ThH以下であれば、式(3)の特性で現在の画面の画素データと1画面前の画面の画素データとが適応的に混合されることになる。
このように、ステップS1407では、式(1),(2)を用いて現在の画面のラインと1画面前の画面のラインとの合成比率(混合率)を生成するか、式(3)を用いて画素単位で現在の画面の画像データと1画面前の画面の画像データとの合成比率(混合率)を生成する。
フラッシュ補正部80は、ステップS1408にて、ステップS1407で生成した合成比率によって現在の画面のライン(画素)と1画面前の画面のライン(画素)とを合成して領域置換処理を実行する。
制御部9に領域補正モードが設定されている場合には、図9の(a)に示すように、画像Im2におけるハッチングを付した部分の高輝度となっている複数のラインが、画像Im1における対応する複数のラインに置換される。また、画像Im3におけるハッチングを付した部分の高輝度となっている複数のラインが、画像Im2における対応する複数のラインに置換される。図9の(a)では、隣接領域Aadjs,Aadjeを省略している。
結果として、フラッシュ補正部80は、図9の(b)に示すように、画像Im2を画像Im2’へと補正し、画像Im3を画像Im3’へと補正する。
領域補正モードに設定されている場合も画面単位切換モードに設定されている場合と同様に、フラッシュ補正部80(効果処理部83)は、ステップS1410にて、補正した画面の全体に所定値以上の輝度信号を加算することによって擬似的なフラッシュ発光の効果を付加する。
図9の(c)は、画像Im2’の画面の全体と、画像Im3’の画面の全体に、擬似的なフラッシュ発光の効果を付加した状態を示している。画像Im2’,Im3’それぞれ、画面の全体にハッチングを付して示すように、画面の全体でフラッシュが発光している状態と等価な画像Im2”,Im3”とされている。
なお、上記説明ではフラッシュ発光によって高輝度の部分を有すると判定され、判定領域が補正された2つの画像(Im2’,Im3’)に対して、擬似的なフラッシュ発光の効果を付加したが、画像Im2’,Im3’のうちいずれか1つの画像のみに擬似的なフラッシュ発光の効果を付加し、残りの画像は補正のみ行なうようにしてもよい。
図9では、画像Im3を、画像Im2を用いて補正して画像Im3’としたが、画像Im1を用いて補正してもよい。この場合には、バッファメモリ4は2画面前の画像データを保持しておくことが必要になる。
図5に示すステップS140においては、ステップS1401を画面単位切換モードであるか否かの判定としているが、領域補正モードであるか否かの判定としてもよい。
以上のようにして、第1実施形態においては、記録再生部11に記録された画像データの再生時に、フラッシュの発光によって高輝度となった部分が補正され、擬似的なフラッシュ発光の効果が付加されて、表示部7やビデオカメラに接続された外部機器としての表示装置に表示される。
第1実施形態によれば、フラッシュの発光によって画像の明るさが不連続となった部分が補正された上で、画面の全体に擬似的なフラッシュ発光の効果が付加されるので、明るさが不連続となっていることによる不自然さが解消され、フラッシュが発光している状況で撮影した臨場感を保つことができる。
第1実施形態によれば、画面単位切換モードにおいて同一の画像データ(画面)が連続することによる動きの不自然さを低減させることができる。また、第1実施形態によれば、領域補正モードにおいて画像データを部分的に補正したことによる不自然さを低減させることができる。
なお、第1実施形態によれば、画像データは補正されていない状態で記録再生部11に記録されており、画像データの再生時にフラッシュの発光を誤検出したとしても、記録されている画像データには影響を与えない。
<第2実施形態>
図10に示す第2実施形態において、図1と同一部分には同一符号を付し、その説明を適宜省略することとする。第2実施形態の画像処理装置であるビデオカメラ102は、フラッシュ検出部2の代わりにフラッシュ検出部20を備える。フラッシュ検出部20は、ブロック平均輝度算出部201,ブロック平均輝度保持部202,ライン平均輝度算出部203,ライン平均輝度保持部204,全画面平均輝度算出部205,全画面平均輝度保持部206,差分算出部207,フラッシュ判定部208を有する。
フラッシュ検出部20は、制御部9による制御に従って以下のようにフラッシュの発光を検出する。ブロック平均輝度算出部201は、撮像部1から供給された電気信号における1ラインの有効画素を複数のブロックに分割しブロックごとの明るさの平均を算出する。ブロックの数は2のべき乗であることが好ましい。具体的には、ブロック平均輝度算出部201は、G信号の値を各ブロックの有効画素分に渡って加算し、有効画素数で除算することによって1ブロックの明るさの平均(ブロック平均輝度)を算出する。
ブロック平均輝度算出部201によって算出されたブロック平均輝度は、ブロック平均輝度保持部202及びライン平均輝度算出部203に入力される。ライン平均輝度算出部203は、1ラインにおけるブロック平均輝度を加算し、1ラインのブロック数で除算することによって1ラインの明るさの平均(ライン平均輝度)を算出する。ライン平均輝度算出部203によって算出されたライン平均輝度は、ライン平均輝度保持部204及び全画面平均輝度算出部205に入力される。ライン平均輝度保持部204は、ライン平均輝度算出部203によって算出されたライン平均輝度を一時的に保持する。
全画面平均輝度算出部205は、順次入力されるライン平均輝度を1画面の有効ラインに渡って加算し、有効ライン数で除算することによって1画面全体の明るさの平均(全画面平均輝度)を算出する。全画面平均輝度保持部206は、全画面平均輝度を一時的に保持する。
差分算出部207には、ブロック平均輝度保持部202で保持されたブロック平均輝度と、ライン平均輝度保持部204で保持されたライン平均輝度と、全画面平均輝度保持部206で保持された全画面平均輝度とが入力される。差分算出部207は、ブロック平均輝度と全画面平均輝度との差分と、ライン平均輝度と全画面平均輝度との差分とをそれぞれ順次算出する。差分算出部207は差分の絶対値をとり、差分値として出力する。
差分算出部207によって算出されたそれぞれの差分値は、フラッシュ判定部208に入力される。フラッシュ判定部208は、ライン平均輝度と全画面平均輝度との差分値が設定された閾値(閾値1)以上であるか否かを判定する。フラッシュ判定部208は、ライン平均輝度と全画面平均輝度との差分値が閾値以上の場合には、それぞれのブロック平均輝度と全画面平均輝度との差分値が設定された閾値(閾値2)以上であるか否かを判定する。閾値1と閾値2とは異なる値であってよい。閾値1と閾値2とは異なる値とする場合には、閾値1よりも閾値2の値を大きくすることが好ましい。
フラッシュ判定部208は、ラインごとの差分値が閾値1以上であり、ブロックごとの差分値が閾値2以上である状態が予め設定したライン数以上継続するか否かを判定する。フラッシュ判定部208は、それぞれの差分値が閾値1,2以上である状態が予め設定したライン数以上継続したと判定した場合に、フラッシュの発光によって画像の明るさが不連続となったと検出する。
フラッシュ判定部208は、フラッシュが発光したと判定した場合には、フラッシュの発光の開始時点である、ライン平均輝度と全画面平均輝度との差分値が閾値1以上であり、かつそれぞれのブロック平均輝度と全画面平均輝度との差分値が閾値2以上となった最初のライン番号を示すデータと、ライン平均輝度と全画面平均輝度との差分値が閾値1以上と、それぞれのブロック平均輝度と全画面平均輝度との差分値が閾値2以上との少なくとも一方の条件を満たさなくなった最初のライン番号を示すデータとを出力する。フラッシュ判定部208は、フラッシュが発光したことを示す検出信号も出力する。
第2実施形態においては、図3に示すステップS30のフラッシュ検出処理を図11に示すステップS302とする。図11を用いて、ステップS302のフラッシュ検出処理の詳細について説明する。以下の各ステップは、制御部9による制御に基づいてフラッシュ検出部20によって実行される。
図11において、フラッシュ検出部20は、ステップS3201にて、有効ラインにおける各ブロックの有効画素の画素値を加算する処理を有効ラインごとに順次実行する。フラッシュ検出部20は、ステップS3202にて、ステップS3201にて得た各ブロックの画素値の加算値をブロック内の有効画素数で除算してブロック平均輝度を算出し、ブロック平均輝度を保持する。
フラッシュ検出部20は、ステップS3203にて、ステップS3202で算出したブロック平均輝度と1画面前の全画面平均輝度との差分演算の処理を実行する。ステップS3203における差分演算処理は、ステップS3202でブロック平均輝度を算出するたびに実行される。フラッシュ検出部20は、ステップS3204にて、1ライン内のブロック平均輝度を加算し、ステップS3205にて、ブロック平均輝度の加算値をブロック数で除算してライン平均輝度を算出し、ライン平均輝度を保持する。
フラッシュ検出部20は、ステップS3206にて、ライン平均輝度を順次加算する処理を実行する。フラッシュ検出部20は、ステップS3207にて、ステップS3205で算出したライン平均輝度と1画面前の全画面平均輝度との差分演算の処理を実行する。ステップS3207における差分演算処理は、ステップS3205でライン平均輝度を算出するたびに実行される。
フラッシュ検出部20は、ステップS3208にて、フラッシュの発光を検出していない通常状態であるか否かを判定する。通常状態であると判定されれば(YES)、フラッシュ検出部20は、ステップS3209にて、ライン平均輝度と全画面平均輝度との差分値が閾値(閾値1)以上のラインを検出したか否かを判定する。
ライン平均輝度と全画面平均輝度との差分値が閾値以上のラインを検出したと判定されれば(YES)、フラッシュ検出部20は、処理をステップS3210に移行させ、ライン平均輝度と全画面平均輝度との差分値が閾値以上のラインを検出したと判定されなければ(NO)、フラッシュ検出部20は、処理をステップS3215に移行させる。ライン平均輝度と全画面平均輝度との差分値が閾値以上のラインを検出しなければ、フラッシュは発光していないということである。
フラッシュ検出部20は、ライン平均輝度と全画面平均輝度との差分値が閾値以上のラインを検出した場合、さらに、ステップS3210にて、そのライン内のそれぞれのブロック平均輝度と全画面平均輝度との差分値が閾値(閾値2)以上であるか否かを判定する。フラッシュ検出部20は、それぞれのブロック平均輝度と全画面平均輝度との差分値が閾値以上であると判定されれば(YES)、フラッシュ検出部20は、処理をステップS3211に移行させる。なお、この際、フラッシュ検出部2は、検出したラインがフレームの最初のラインから何ライン目かを示す検出ライン情報を記憶しておく。
一方、それぞれのブロック平均輝度と全画面平均輝度との差分値が閾値以上であると判定されなければ(NO)、フラッシュ検出部20は、既に検出ライン情報を記憶している場合は、それを消去するとともに、処理をステップS3215に移行させる。
フラッシュ検出部20は、ステップS3211にて、ライン平均輝度と全画面平均輝度との差分値が閾値以上であり、それぞれのブロック平均輝度と全画面平均輝度との差分値が閾値以上であるという2つの条件を満たすラインが所定ライン数以上継続したか否かを判定する。所定ライン数以上継続したと判定されれば(YES)、フラッシュ検出部20は処理をステップS3214に移行させ、所定ライン数以上継続したと判定されなければ(NO)、フラッシュ検出部20は処理をステップS3215に移行させる。
フラッシュ検出部20は、ステップS3214にて、フラッシュの発光を検出していない状態からフラッシュの発光を検出した状態へとフラッシュ検出状態を変更する。また、フラッシュ検出部20は、記憶している検出ライン情報をフラッシュ補正部80に供給し、検出ライン情報を消去する。
一方、ステップS3208にて通常状態であると判定されなければ(NO)、フラッシュ検出部20は、ステップS3212にて、ライン平均輝度と全画面平均輝度との差分値が閾値未満であるか、または、それぞれのブロック平均輝度と全画面平均輝度との差分値が閾値未満であるラインを検出したか否かを判定する。少なくとも一方を満たさないラインが現れたと判定されれば(YES)、フラッシュ検出部20は処理をステップS3213に移行させる。この際、フラッシュ検出部20は、検出したラインがフレームの最初のラインから何ライン目かを示す検出ライン情報を記憶しておく。
少なくとも一方を満たさないラインが現れたと判定されなければ(NO)、フラッシュ検出部20は、処理をステップS3215に移行させる。
フラッシュ検出部20は、ステップS3213にて、上記の2つの条件の少なくとも一方を満たさない状態が所定ライン数以上継続したか否かを判定する。所定ライン数以上継続したと判定されれば(YES)、フラッシュ検出部20は処理をステップS3214に移行させ、所定ライン数以上継続したと判定されなければ(NO)、フラッシュ検出部20は処理をステップS3215に移行させる。
フラッシュ検出部20は、ステップS3214にて、フラッシュの発光を検出した状態からフラッシュの発光を検出していない状態へとフラッシュ検出状態を変更する。また、フラッシュ検出部20は、記憶している検出ライン情報をフラッシュ補正部80に供給し、検出ライン情報を消去する。
フラッシュ検出部20は、ステップS3215にて、全有効ラインに対する判定が終了したか否かを判定する。全有効ラインに対する判定が終了したと判定されれば(YES)、フラッシュ検出部20は、処理をステップS3216に移行させ、全有効ラインが終了したと判定されなければ(NO)、フラッシュ検出部20は、処理をステップS3201に戻してステップS3201以降を繰り返す。フラッシュ検出部20は、ステップS3216にて、ライン平均輝度の加算値を有効ライン数で除算して全画面平均輝度を算出し、全画面平均輝度を保持する。
第2実施形態によれば、第1実施形態よりもフラッシュが発光したか否かの検出精度を向上させることができる。図12を用いて、検出精度を向上させることができる理由について説明する。
図12は、画面内に部分的に矩形状の高輝度領域Arhが含まれる画像Imiの例を示している。ハッチングを付した高輝度領域Arhは例えば白レベルであるとする。高輝度領域Arhは矩形状でなくてもよい。有効ラインLneにおいては、ライン平均輝度は比較的高い値となる。有効ラインLne以外のラインでも高輝度領域Arhが存在している垂直方向の範囲では同様である。従って、第1実施形態においては、高輝度領域Arhが存在している垂直方向の範囲でフラッシュが発光したと誤判定する可能性がある。
図12では、1ラインを4つのブロックB1〜B4に分割した例を示している。ブロック平均値算出部201で算出されるブロック平均輝度は、ブロックB1ではさほど高い値とはならない。ブロック平均輝度はブロックB2,B3では高い値となり、ブロックB4ではブロックB2,B3よりも小さな値となる。有効ラインLneにおいて、図11のステップS3209にて、ライン平均輝度と全画面平均輝度との差分値が閾値以上であると判定されたとしても、ステップS3210にて、少なくともブロックB1で、ブロック平均輝度と全画面平均輝度との差分値が閾値以上であると判定されない。
従って、第2実施形態によれば、図12の例のように部分的な高輝度領域Arhを含む画像Imiであっても、フラッシュが発光したと誤判定する可能性を大幅に低減させることができる。
第2実施形態によれば、フラッシュ補正部80を有することによる第1実施形態と同じ効果を奏するとともに、フラッシュ検出部2の代わりにフラッシュ検出部20を設けたことによるフラッシュが発光したか否かの検出精度を向上させることができるという効果を奏する。
本発明は以上説明した各実施形態に限定されるものではなく、本発明の要旨を逸脱しない範囲において種々変更可能である。各実施形態ではビデオカメラを例としたが、画像データを扱う任意の電子機器において本発明の画像処理装置及び方法を用いることができる。例えば、画像表示装置やコンピュータ等の情報処理装置において各実施形態の画像処理装置を搭載し、画面の一部が高輝度となっている画像データを画像表示装置や情報処理装置の内部で補正するようにしてもよい。
また、各実施形態においては、画像信号処理部3での処理を終了した映像データを補正する構成を示したが、画像信号処理部3で処理する前の映像データを補正してもよい。各実施形態においては、画像信号処理部3や圧縮伸張処理部5とは独立して設けたバッファメモリ4を用いる構成を示したが、画像信号処理部3や圧縮伸張処理部5で使用するバッファメモリを用いてもよく、回路(ブロック)構成は適宜に変更が可能である。
各実施形態では、擬似的なフラッシュ発光の効果を画像データの再生時に付加しているが、画像データの記録時に擬似的なフラッシュ発光の効果を付加してもよい。この場合には、画面内の高輝度となっているラインを画像データの記録前に補正して、補正した画像データに擬似的なフラッシュ発光の効果を付加すればよい。
本発明の画像処理装置及び方法と同等の構成をコンピュータプログラム(画像処理プログラム)によって実現することも可能である。
画像処理プログラムを記録媒体に記録して提供してもよく、インターネット等の通信回線にて画像処理プログラムを配信してもよい。記録媒体に記録された画像処理プログラムや通信回線にて配信された画像処理プログラムを画像処理装置に記憶させて、上述した画像処理方法を実行させるようにしてもよい。