(57)【特許請求の範囲】
【請求項１】
被写体の画像を取得する取得手段と、
前記取得手段により取得された前記画像に対して、フィルタ係数群が割り当てられたフィルタ範囲を用いてフィルタ処理を行うフィルタ手段と、
前記フィルタ処理を行う際の参照画素を決定する決定手段と、
前記フィルタ手段の出力に対してビットシフト演算または除算を行う演算手段と、
前記演算手段が異なる設定量でそれぞれ演算を行った複数の前記フィルタ処理の結果を、前記決定手段により決定された参照画素の数に対応する合成比率で合成する合成手段を備えることを特徴とする画像処理装置。
【請求項２】
前記フィルタ手段は、前記フィルタ範囲を複数に分割してフィルタ処理をそれぞれ実行することを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記決定手段は、前記画像の着目画素位置と周辺画素位置における画素情報を取得して比較することにより前記参照画素を決定することを特徴とする請求項１または２に記載の画像処理装置。
【請求項４】
被写体の距離分布に関連するデータの整形処理を行う整形手段を備え、
前記整形手段を構成する前記フィルタ手段は、前記データに対するフィルタ処理を行うことを特徴とする請求項１から３のいずれか１項に記載の画像処理装置。
【請求項５】
前記被写体の距離分布に関連するデータの信頼度を算出する算出手段を備え、
前記決定手段は、前記被写体の画像、および前記算出手段により算出された前記信頼度を用いて前記参照画素を決定することを特徴とする請求項４に記載の画像処理装置。
【請求項６】
前記演算手段は、第１の設定量、および前記第１の設定量よりも小さい第２の設定量をそれぞれ用いてビットシフト演算を行うことを特徴とする請求項１から５のいずれか１項に記載の画像処理装置。
【請求項７】
前記合成手段は、前記第２の設定量を用いて演算されたフィルタ処理の結果に対する前記合成比率を決定することを特徴とする請求項６に記載の画像処理装置。
【請求項８】
前記合成比率は、前記参照画素の数が少ない場合に相対的に大きく、前記参照画素の数が多い場合に相対的に小さいことを特徴とする請求項７に記載の画像処理装置。
【請求項９】
前記参照画素の数を表すマップデータを生成する生成手段をさらに備え、
前記合成手段は前記マップデータを取得して飽和参照画素数および前記合成比率を決定することを特徴とする請求項７または８に記載の画像処理装置。
【請求項１０】
前記合成比率は、前記第２の設定量でのフィルタ処理にて参照される前記参照画素の数が前記飽和参照画素数を超える場合よりも、当該参照画素の数が前記飽和参照画素数を超えない場合の方が大きいことを特徴とする請求項９に記載の画像処理装置。
【請求項１１】
請求項１から１０のいずれか１項に記載の画像処理装置と、
被写体を撮像する撮像手段を備えることを特徴とする撮像装置。
【請求項１２】
前記取得手段は、暈け方が異なる複数の画像を前記撮像手段から取得することを特徴とする請求項１１に記載の撮像装置。
【請求項１３】
被写体の画像を取得して画像処理する画像処理装置にて実行される画像処理方法であって、
フィルタ手段によりフィルタ処理を行う際の参照画素を決定するステップと、
前記画像に対して、フィルタ係数群が割り当てられたフィルタ範囲を用いて前記フィルタ手段がフィルタ処理を行うステップと、
前記フィルタ手段の出力に対して演算手段がビットシフト演算または除算を行うステップと、
前記演算手段が異なる設定量でそれぞれ演算を行った複数の前記フィルタ処理の結果を、決定された前記参照画素の数に対応する合成比率で合成するステップを有することを特徴とする画像処理方法。
【請求項１４】
請求項１３に記載の各ステップを画像処理装置のコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像データのフィルタ処理を行う画像処理装置に関し、特に被写体の距離分布に関連する情報をマップデータとして取得する技術に関するものである。
【背景技術】
【０００２】
撮像光学系の異なる瞳領域を通過した光束をそれぞれ受光して得られる瞳分割画像や、２眼での撮影により取得されたステレオペア画像の相関演算によって、距離マップを得る技術がある。特許文献１では、被写体の輪郭に対応する距離値を、撮影画像を用いて正しい輪郭に合わせる処理が開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１４−１５０５２１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
特許文献１に開示された従来技術では、距離マップの整形処理時に被写体の特徴が似ている領域のみを参照画素としてフィルタ処理が行われる。つまりフィルタ処理で参照する画素数は、被写体の特徴に依存して変わる。整形した距離マップ信号を所定のビット数に抑えるためには、ビットシフトや除算などを行う必要がある。被写体の特徴によって、加算される信号値の数が異なるため、ビット丸めが大きい領域と小さい領域が点在してしまい、フィルタ処理後の画質が低下する可能性がある。
本発明の目的は、被写体の特徴に依存したビット丸めの影響を改善するフィルタ処理を含む画像処理を実現することである。
【課題を解決するための手段】
【０００５】
本発明の一実施形態に係る画像処理装置は、被写体の画像を取得する取得手段と、前記取得手段により取得された前記画像に対して、フィルタ係数群が割り当てられたフィルタ範囲を用いてフィルタ処理を行うフィルタ手段と、前記フィルタ処理を行う際の参照画素を決定する決定手段と、前記フィルタ手段の出力に対してビットシフト演算または除算を行う演算手段と、前記演算手段が異なる設定量でそれぞれ演算を行った複数の前記フィルタ処理の結果を、前記決定手段により決定された参照画素の数に対応する合成比率で合成する合成手段を備える。
【発明の効果】
【０００６】
本発明によれば、被写体の特徴に依存したビット丸めの影響を改善するフィルタ処理を含む画像処理を実現できる。
【図面の簡単な説明】
【０００７】
【図１】本発明の実施形態に係るデジタルカメラの機能構成を示すブロック図である。
【図２】本発明の第１実施形態に係る画像処理部の機能構成を示すブロック図である。
【図３】第１実施形態に係る処理のフローチャートである。
【図４】本発明の実施形態に係る距離マップ整形部の動作を説明するための図である。
【図５】本発明の実施形態に係る距離マップ合成処理を説明するための図である。
【図６】本発明の第２実施形態に係る画像処理部の機能構成を示すブロック図である。
【図７】第２実施形態に係る処理を示すフローチャートである。
【図８】第２実施形態に係るフィルタ係数の分割について説明するための図である。
【図９】第２実施形態に係る分割フィルタを距離画像に適用する際の対応関係の説明図である。
【図１０】第２実施形態に係る分割フィルタ処理機能を示すブロック図である。
【発明を実施するための形態】
【０００８】
以下、本発明の好適な実施形態について図面を参照して詳細に説明する。各実施形態では、本発明の画像処理装置の適用例としてデジタルカメラを説明する。
【０００９】
[第１実施形態]
図１は本発明の実施形態に係るデジタルカメラ１００の機能構成を例示するブロック図である。図１の各構成部は、バス１１１を介して相互に信号を送受可能である。
システム制御部１０１はＣＰＵ（中央演算処理装置）を備える。システム制御部１０１は、デジタルカメラ１００の各構成部の動作や処理を制御するプログラムをＲＯＭ（リード・オンリ・メモリ）１０２から読み出し、ＲＡＭ（ランダム・アクセス・メモリ）１０３に展開して実行する。ＲＯＭ１０２は、データの書き換えが可能な不揮発性メモリであり、デジタルカメラ１００の動作や処理を制御するプログラムの他に、各構成部の動作に必要なパラメータ等を記憶する。例えば、焦点検出等に必要な射出瞳距離等の情報がＲＯＭ１０２に記憶されている。ＲＡＭ１０３は、データの書き換えが可能な揮発性メモリであり、デジタルカメラ１００の処理において出力されたデータの一時的な記憶領域として用いられる。
【００１０】
撮像光学系１０４は、被写体からの光を撮像部１０５に結像する。撮像光学系１０４はレンズや絞りを備え、絞りは撮像光学系１０４の開口径を調節する。撮像部１０５は、ＣＣＤ（電荷結合素子）センサやＣＭＯＳ（相補型金属酸化膜半導体）センサ等の撮像素子を備える。撮像素子は、撮像光学系１０４により結像された光学像を光電変換し、得られたアナログ画像信号をＡ（アナログ）／Ｄ（デジタル）変換部１０６に出力する。Ａ／Ｄ変換部１０６は、入力されたアナログ画像信号に対してＡ／Ｄ変換処理を行い、デジタル画像データをＲＡＭ１０３に出力して記憶させる。
【００１１】
画像処理部１０７は、ＲＡＭ１０３に記憶されている画像データに対して、ホワイトバランス調整、色補間、縮小／拡大、フィルタリング等の処理を行う。記録媒体１０８は着脱可能なメモリカード等であり、ＲＡＭ１０３に記憶されている画像処理部１０７で処理された画像やＡ／Ｄ変換部１０６によりＡ／Ｄ変換された画像等のデータが、記録画像データとして記録される。表示部１０９はＬＣＤ（液晶表示ディスプレイ）等の表示デバイスを備える。表示部１０９は撮像部１０５により取得された撮像データに基づいて被写体像をスルー表示する等、様々な情報を表示する。
【００１２】
距離マップ取得部１１０は所定の検出方法で被写体の距離情報を取得する距離センサモジュールである。例えば距離マップ取得部１１０は、「Ｔｉｍｅ  ｏｆ  Ｆｌｉｇｈｔ（ＴＯＦ）」法等で被写体の距離分布に関連する情報を取得する。ＴＯＦ法では、光源からの出射光が対象物で反射し、検出部が受光するまでの時間と光速度に基づいて被写体までの距離情報が取得される。距離マップ取得部１１０は、所定の解像度の距離マップデータをデジタルデータとしてＲＡＭ１０３に出力して記憶させる。
【００１３】
図２は、図１の画像処理部１０７の構成を説明するための図である。
図２（Ａ）に示す現像部２０１は、撮影画像入力２１０として入力されるＡ／Ｄ変換後のデジタル画像データに対して、ホワイトバランス調整や色補間等から成る現像処理を行い、現像画像２１２を生成する。この現像画像２１２は距離マップ整形部２００に入力され、距離マップの整形用画像として用いられる。
【００１４】
図２（Ｂ）に示すように距離マップ整形部２００は、画素値比較部２０２、参照画素判定部２０３、フィルタ処理部２０４、合成部２０５から構成される。
画素値比較部２０２は、距離マップ画像２１１の着目画素位置と周辺画素位置に対応する現像画像２１２（以下、整形用画像という）の画素値を比較し、比較結果２１３を出力する。参照画素判定部２０３は、比較結果２１３を所定の閾値で判定し、参照画素位置とするか否かを示す参照画素判定結果２１４を出力する。例えば参照画素判定結果２１４は２値のデータであり、比較結果２１３が閾値以下であるか否かに応じて「１」または「０」のいずれかの値をとる。画素位置に対応する判定値「１」は参照画素として決定されたことを意味し、判定値「０」は参照画素として決定されなかったことを意味する。
【００１５】
フィルタ処理部２０４は、参照画素判定結果２１４に基づき、距離マップ画像２１１に対するバイラテラルフィルタ処理を行う。フィルタ処理部２０４は、フィルタ処理時にビットシフト演算を行い、ビットシフト量が異なる複数のフィルタ処理結果２１５を出力する。合成部２０５は、ビットシフト量が異なるフィルタ処理結果２１５を合成し、合成後の出力を合成距離マップ画像２１６として出力する。
基本的な整形処理では、着目画素位置ｐのフィルタ処理結果（Ｊｐと記す）が、以下の式（１）で表される。
Ｊｐ＝（１／Ｋｐ）ΣＩ１ｑ・ｆ（｜ｐ−ｑ｜）・ｇ（｜Ｉ２ｐ−Ｉ２ｑ｜）  ・・・（１）
【００１６】
式（１）中の各記号の意味は以下のとおりである。
ｑ  ：周辺画素位置
Ω  ：着目画素位置ｐを中心とする積算対象領域
Σ  ：ｑ∈Ω範囲の積算
Ｉ１ｑ：周辺画素位置ｑにおける距離マップ信号値
ｆ（｜ｐ−ｑ｜）：着目画素位置ｐを中心とするガウシアン関数
Ｉ２ｐ  ：着目画素位置ｐでの整形用画像の画素値
Ｉ２ｑ  ：周辺画素位置ｑでの整形用画像の画素値
ｇ（｜Ｉ２ｐ−Ｉ２ｑ｜）：整形用画像の画素値Ｉ２ｐを中心とするガウシアン関数
Ｋｐ  ：正規化係数であり、ｆ・ｇ重みの積算値。
【００１７】
着目画素位置ｐのＩ２ｐと周辺画素位置ｑのＩ２ｑとの差が小さいとき、つまり整形用画像において着目画素と周辺画素の画素値が近いときに、その周辺画素のｆ・ｇ重みは大きくなる。本実施形態では回路規模を顧みて、関数ｆ、ｇはガウシアン関数ではなく、所定の画素範囲の重み付け係数を均一にする関数とする。したがって｜ｐ−ｑ｜、｜Ｉ２ｐ−Ｉ２ｑ｜が所定の範囲のときの画素値（画素情報）を単純に加算する関数に置き換えることができる。例えば、関数ｆおよびｇは下記式で表される。
ｆ＝α（｜ｐ−ｑ｜< ｔｈ１）、ｆ＝０（｜ｐ−ｑ｜>= ｔｈ１）・・・（２）
ｇ＝β（｜Ｉ２ｐ−Ｉ２ｑ｜< ｔｈ２）、ｇ＝０（｜Ｉ２ｐ−Ｉ２ｑ｜>= ｔｈ２）・・・（３）
式（２）のαと、式（３）のβはそれぞれ定数を表し、式（２）のｔｈ１と、式（３）のｔｈ２はそれぞれ閾値を表す。本実施形態では、α＝１、β＝１とする。
【００１８】
次に、図３のフローチャートを参照してデジタルカメラ１００の全体処理について説明する。図３の処理は、システム制御部１０１のＣＰＵが制御プログラムをメモリから読み出して実行することにより実現される。例えばデジタルカメラ１００にて撮影の指示がなされた際に処理が開始される。
【００１９】
図３のＳ３０１で撮像部１０５は撮像を行い、距離マップの整形用画像を取得する。次にＳ３０２で距離マップ取得部１１０は、整形用画像に対応する距離マップ画像を取得する。Ｓ３０３でフィルタ処理部２０４は、Ｓ３０２で取得された距離マップ画像に対し、整形用画像の画素情報を用いて式（１）のフィルタ処理を実行し、距離マップ画像の整形処理が行われる。フィルタ処理後の出力結果に関しては、フィルタのタップ数（参照画素範囲）が大きくなるほど、フィルタ処理後の出力値を格納するビット数が膨大になってしまう。そのため、出力信号が格納し得るビット数に収まるように、式（１）のフィルタ処理結果の分子に対して、所定の設定量でのビットシフト演算または除算が行われる。例えば、ビットシフト演算の場合に第１の設定量を「ビットシフト量Ａ」と記す。
【００２０】
Ｓ３０４では、Ｓ３０３と同様に距離マップ画像の整形処理が行われる。ただし、Ｓ３０４の整形処理では、ビットシフト量Ａよりも小さなビットシフト量Ｂを設定して整形処理が行われる。ビットシフト量Ｂはビットシフト演算における第２の設定量である。次のＳ３０５で合成部２０５は、Ｓ３０３およびＳ３０４の各出力である整形処理後の距離マップ画像の合成処理を行う。合成処理では、Ｓ３０４の整形処理時の参照画素数を記録するマップ（参照画素数マップ）を用いて、２つの整形処理後の距離マップ画像を合成する割合（合成比率）が決定される。
以上のように、複数のビットシフト量を設定して整形処理を施した距離マップを合成する処理が実行される。
【００２１】
次に、本実施形態で重要となる各処理を説明する。まず、整形処理について説明する。図４は、図２の距離マップ整形部２００の動作を説明するための図である。図４（Ａ−１）および（Ｂ−１）では、紙面内において左右方向をｘ方向とし、右方向を＋ｘ方向と定義する。また紙面内においてｘ方向に直交する上下方向をｙ方向とし、上方向を＋ｙ方向と定義する。
【００２２】
図４（Ａ−１）は整形用画像４０１を例示し、被写体は画面右の人物と背景である。図４（Ａ−２）は、図４（Ａ−１）にて一点鎖線４０２に示す位置での断面における画素値プロファイル４０３を表わしている。横軸はｘ座標を表し、縦軸は画素値を表す。画素値プロファイル４０３の形状は、ｘ座標の増加方向においてｘｓの位置で大きく変化（低下）するステップ形状である。画素値プロファイル４０３は人物の輪郭部でシャープなエッジを保っている。
【００２３】
図４（Ｂ−１）は距離マップ４０４を例示する。図４（Ｂ−１）において点線で示す部分は、図４（Ａ−１）に示した整形用画像４０１における人物の輪郭を表している。図４（Ｂ−２）は、図４（Ａ−２）にて一点鎖線４０５で示す位置（図４（Ａ−１）に一点鎖線４０２で示す位置に対応する）での断面における距離値プロファイル４０６を実線で表わしている。横軸はｘ座標を表し、縦軸は距離値を表す。距離値については、カメラの位置から遠くにある背景の距離値が小さく、近くに位置する人物の距離値が大きいものとする。図４（Ｂ−１）の場合、距離マップの人物の輪郭が、正解である整形用画像の人物の輪郭（点線参照）より外側にはみ出している。図４（Ｂ−２）に実線で示す距離値プロファイル４０６の形状は、ｘ座標の増加方向においてｘｓよりも小さいｘａの位置で大きく変化（増加）するステップ形状である。
【００２４】
式（１）における着目画素位置ｐを、黒点４０８、４１０、４１２、４１４でそれぞれ示す。線分４０９、４１１、４１３、４１５は式（１）のｇ値が大きい領域、つまり平滑化の範囲を示している。整形用画像の画素値プロファイル４０３は、人物の輪郭に対応する位置ｘｓで急峻に変化している。このため、人物の輪郭近傍の着目画素位置を示す黒点４１０および４１２の位置では、平滑化の範囲がそれぞれ線分４１１および４１３のようになり、正解である整形用画像の人物輪郭に沿うようになる。その結果、式（１）に示すフィルタ結果Ｊｐの値をプロットすると点線で示すグラフ線４０７となる。グラフ線４０７の形状は、ｘ座標の増加方向においてｘｓの位置で大きく変化（増加）するステップ形状である。つまり、距離マップの整形処理によって、距離マップの人物輪郭が正しい輪郭（整形用画像の人物輪郭）に合うことになる。
【００２５】
次に、図３のＳ３０３、Ｓ３０４に示す整形処理に用いるビットシフト量ＡおよびＢについて説明する。本実施形態では、式（１）に対して、式（２）、（３）を設定している。さらに、距離マップ画像の着目画素位置ｐと参照画素位置における距離重み、距離マップ画像の画素値による重みを一定値α、βとする（例えばα＝β＝１）。また、距離情報を画像データとして保持する距離マップ画像では、被写体のコントラスト、被写体の明るさ、被写体のオクルージョンや、カメラの撮影時の設定によって距離情報の分解能が低下する場合や、正しい距離情報を取得できない場合がある。そこで距離情報が正しく出力されているかどうかの信頼度（以下、ｈ（ｑ）と記す）を新たに設定し、式（１）に追加するパラメータとする。これにより、正しい距離情報を保持する参照画素位置の距離情報を用いた整形処理を行うことができる。
【００２６】
第１および第２の画像を用いて距離情報を取得するＤＦＤ（Ｄｅｐｔｈ Ｆｒｏｍ Ｄｅｆｏｃｕｓ）法における信頼度について説明する。第１の画像は、被写体に合焦しているフォーカス画像であり、第２の画像は、フォーカス画像とは被写体像の暈け方が異なるデフォーカス画像である。ＤＦＤ法では、フォーカス画像の暈け量とデフォーカス画像の暈け量を用いて距離情報が算出される。そのため、フォーカス画像とデフォーカス画像とで被写体像の暈けの違いが検出できない領域では正しい距離情報を算出できない。つまり、このような領域は、距離情報の信頼度が低い領域となる。信頼度は、暈けの違いの検出しやすさを表す指標であり、対象領域における画素の輝度値や彩度値、色相、対象領域の周波数特性などに基づいて判断することができる。具体的には、以下の領域が信頼度の低い領域であると判断される。
例１：領域内の画素が持つ輝度値の平均値が、所定の範囲から外れている場合。
例２：領域内の画素が持つ輝度値の変化量が所定の閾値より大きい場合。
例３：領域内の空間周波数が所定の閾値より低い場合。
【００２７】
信頼度ｈ（ｑ）を決定するための評価基準には複数の基準を採用することができる。例示した以外の評価基準を用いてもよい。いずれにしても評価値を所定値（閾値）と比較することで信頼度ｈ（ｑ）の値を算出することができる。本実施形態の信頼度ｈ（ｑ）は、回路規模を顧みて信頼度における評価基準に対して「１」または「０」の二値で表現されるものとする。「１」は信頼できる距離情報であることを意味し、「０」は信頼できない距離情報であることを意味する。
【００２８】
以上を考慮して、式（１）〜（３）は下記式（４）〜（６）に置換することができる。
Ｊ*ｐ＝  ΣＩ１ｑ・ｆ（｜ｐ−ｑ｜）・ｇ（｜Ｉ２ｐ−Ｉ２ｑ｜）・ｈ（ｑ）
/Σｆ（｜ｐ−ｑ｜）・ｇ（｜Ｉ２ｐ−Ｉ２ｑ｜）  ・・・（４）
ｆ＝１（｜ｐ−ｑ｜< ｔｈ１）、ｆ＝０（｜ｐ−ｑ｜>= ｔｈ１）・・・（５）
ｇ＝１（｜Ｉ２ｐ−Ｉ２ｑ｜< ｔｈ２）、ｇ＝０（｜Ｉ２ｐ−Ｉ２ｑ｜>= ｔｈ２）・・・（６）
【００２９】
従って、Ｊ*ｐの分子は、Ｊｐの分子にｈ（ｇ）を乗算した式で表され、Ｊ*ｐの分母は、参照画素数の合計値に相当する。Ｊ*ｐの分子のビット数としては、入力画素の最大値・参照最大画素数の積の信号値を格納するために充分なビット数が必要となる。しかしながら、小型の装置の場合には、Ｊ*ｐの分子のビット数は限られる。つまり、限られたビット数でＪ*ｐの演算処理を実現するためにビットシフト演算を行い、出力ビット数を制限する処理が行われる。ビットシフト演算を加味すると式（４）は下記式（７）のようになる。
Ｊ**ｐ＝Σ{Ｉ１ｑ・ｆ（｜ｐ−ｑ｜）・ｇ（｜Ｉ２ｐ−Ｉ２ｑ｜）>>ビットシフト量}
/｛Σｆ{（｜ｐ−ｑ｜）・ｇ（｜Ｉ２ｐ−Ｉ２ｑ｜）} >> ビットシフト量｝・・（７）
【００３０】
ビットシフト量の計算を具体的に説明すると、例えば、フィルタのタップ数を６３×６３とし、距離マップ画像の入力信号値を８ビットとする。Ｊ**ｐの分子については１４ビットを最大ビット数とする。つまり、６ビット分の右ビットシフトを行い、出力画素値を１４ビットに抑える処理が行われる。「ビットシフト量Ａ＝入力信号ビット数（８ビット）＋フィルタ最大参照画素数のビット数（６３×６３≒１２ビット）−  出力信号ビット数（１４ビット）＝６ビット」によって、ビットシフト量Ａが決まる。図３のＳ３０３のビットシフト量Ａが設定される。
【００３１】
逆に、ビットシフト量Ａを用いて式（７）の整形処理を行った場合、参照画素数によっては、ビット丸めの影響が大きくなる可能性がある。例えば、参照画素が２画素しかない場合には、Ｊ**ｐの分子は、９ビット（入力信号ビット数（８ビット）＋参照画素数のビット数（２画素＝１ビット））で収まる信号値になる。９ビット＝入力信号ビット数（８ビット）＋参照画素数のビット数（２画素＝１ビット）であるが、ビットシフト量Ａを６ビットとした場合、分子の信号値は３ビットに信号に丸められてしまい、演算精度に影響を及ぼす可能性がある。そのため、参照画素数が所定の閾値よりも少ない場合には、ビット丸めの影響を小さくするために、ビットシフト量Ａとは異なるビットシフト量Ｂが設定される。ビット丸めの影響を小さくするため、例えば、図３のＳ３０４のビットシフト量Ｂは２ビットに設定される。
【００３２】
次に、図５を参照して図３のＳ３０５の合成処理を説明する。図３のＳ３０３とＳ３０４においてそれぞれ異なるビットシフト量Ａ，Ｂを用いて整形処理された距離マップを合成する処理が実行される。図５は、このときのビットシフト量Ｂ（図３：Ｓ３０４参照）での整形処理結果の合成割合を表している。横軸は、ある着目画素に対して式（７）のフィルタ処理を行ったときの、ビットシフト量Ｂでの整形処理時の参照画素数を示す。また、縦軸は、図３のＳ３０４での整形処理後の距離マップの合成割合を示している。合成後の距離マップは以下の式で表される。
合成後距離マップ＝（１−ｃ）・整形後距離マップ（ビットシフト量Ａ）＋  ｃ・整形後距離マップ（ビットシフト量Ｂ）                                    ・・・（８）
【００３３】
式（８）中に示すｃは、ビットシフト量Ｂを用いた整形処理後の距離マップの合成比率を表す。ｃ値は、ビットシフト量Ｂでのフィルタ処理時における参照画素マップから算出される。
【００３４】
図５に示すように、参照画素数が少ない領域５０１では合成比率の値が相対的に大きく設定され、ビット丸めの影響が小さいビットシフト量Ａでの整形処理後の距離マップが出力される。他方、参照画素数が多い領域５０３では合成比率の値が相対的に小さく設定され、出力ビット数に抑えるためにビットシフト量Ｂでの整形処理後の距離マップが出力される。また、領域５０２は、２つの整形処理後の距離マップがブレンドされている領域であり、参照画素数の増加につれて合成比率の値が次第に小さくなる特性となっている。
【００３５】
領域５０２については、少なくともビットシフト量Ｂでの出力ビット数を超えない参照画素数（飽和画素数５１１）で設定する必要がある。すなわち領域５０２にて飽和画素数５１１を超えてしまった場合には、出力ビット数に達してしまうため、正しい距離マップを出力できなくなる可能性がある。飽和画素数５１１は、下記式（９）で計算できる。
飽和画素数＝２＾（ビットシフト量Ａ  −  ビットシフト量Ｂ） -１・・・（９）
「＾」は累乗を表す記号である。
本実施形態によれば、フィルタ処理時に参照画素数が少ない場合でも、ビット丸めの影響を改善し、良好な高解像度の距離マップを取得することができる。
【００３６】
[第２実施形態]
次に本発明の第２実施形態を説明する。本実施形態では、低解像度の距離マップ画像の整形処理に用いるフィルタ処理を分割して行う。整形処理のフィルタタップ数（１度にフィルタをかける範囲）が大きくなると、フィルタ処理を行う参照領域に対応する画素データをメモリに格納する必要が生じる。フィルタタップ数が大きくなるほど、画像処理装置の回路規模が大きくなる。そこで本実施形態では、フィルタタップ数を分割し、フィルタ処理結果を統合することによって、回路規模の増加を抑えた整形処理を行う。
第１実施形態の場合と同じ構成要素である、図１のシステム制御部１０１、ＲＯＭ１０２、ＲＡＭ１０３、撮像光学系１０４、撮像部１０５、Ａ／Ｄ変換部１０６、記録媒体１０８、表示部１０９については説明を省略する。
【００３７】
図１の画像処理部６０１は、ＲＡＭ１０３に記憶されている画像データに対して、ホワイトバランス調整、色補間、様々な画像処理を適用する。図６を参照して画像処理部６０１の構成を説明する。なお、現像部２０１、画素値比較部２０２、参照画素判定部２０３、合成部２０５と、撮影画像入力２１０、距離マップ画像２１１、現像画像２１２、比較結果２１３、参照画素判定結果２１４は第１実施形態にて図２で説明したとおりである。以下では相違点を中心に説明する。
【００３８】
距離マップ整形部７００は、分割フィルタ処理部７０１、フィルタ結果加算部７０２を備える。分割フィルタ処理部７０１は、整形処理で用いるフィルタタップ数を分割し、分割したフィルタタップで距離マップ画像２１１に畳み込み処理を行う。分割フィルタ処理部７０１は、複数の分割フィルタ処理結果７１１を出力する。このとき、異なるビットシフト量で分割フィルタ処理が実行される。フィルタ結果加算部７０２は、複数の分割フィルタ処理結果７１１を取得して合成し、分割フィルタ合成結果７１２を出力する。このとき、同じビットシフト量の分割フィルタ処理結果７１１同士を合成する処理が行われ、それぞれビットシフト量が異なる分割フィルタ合成結果が取得される。
【００３９】
図７のフローチャートを参照して、本実施形態のデジタルカメラの全体処理について説明する。図７に示す処理は、システム制御部１０１の制御によって実現される。なお、図７のＳ３０１、Ｓ３０２の処理は、図３の各ステップと同じであるため、それらの説明を省略する。
【００４０】
Ｓ８０１にて、Ｓ３０２で取得した距離マップ画像に対し、整形用画像の画像データを用いて式（４）のフィルタ処理が実行され、距離マップ画像の整形処理が行われる。整形処理で用いるフィルタ係数については所定のタップ数になるように分割される。分割後のそれぞれのフィルタ係数を用いて処理が実行される。フィルタ係数と距離マップ画像の畳み込み処理を行う際、ビットシフト演算も同時に行われる（ビットシフト量をビットシフト量Ａとする）。同時に各参照画素数マップが生成される。参照画素数マップとは、式（４）を分割フィルタで行ったときに参照した画素数をカウントしたデータからなるマップデータである。
【００４１】
Ｓ８０２で分割フィルタ処理部７０１は、式（４）のフィルタ処理に関し、フィルタタップ数を分割して実行する。このときのビットシフト量をビットシフト量Ｂとする。「ビットシフト量Ａ  ＞  ビットシフト量Ｂ」の関係を満たすものとする。Ｓ８０３でフィルタ結果加算部７０２は、Ｓ８０１、Ｓ８０２のそれぞれで距離マップ画像の分割フィルタ処理を行った結果を合成する。合成結果はビットシフト量の異なる整形後の距離マップ画像である。またフィルタ結果加算部７０２は、ビットシフト量Ｂの各参照画素数マップを同様に合成し、積算参照画素数マップとして算出する。
【００４２】
Ｓ８０４で合成部２０５は、Ｓ８０３で生成した積算参照画素数マップに応じて飽和参照画素数を決定し、飽和参照画素数以下となる範囲での合成比率を算出する閾値処理を行う。そして合成部２０５は積算参照画素数マップに応じてビットシフト量の異なる整形後の距離マップ画像を合成し、最終的な整形後の距離マップ画像を出力する。
【００４３】
以下、本実施形態で重要となる各処理について説明する。まず、図７のＳ８０１、Ｓ８０２で行うフィルタの分割処理について説明する。図８は、距離マップ画像に適用する２次元フィルタ処理に関するフィルタ係数の説明図である。フィルタの形状は正方形であり、フィルタタップ数は、（５４タップ）×（５４タップ）である。全体のフィルタ係数を分割したフィルタをｆ１、ｆ２、…、ｆ３６で示す。各フィルタは、（９タップ）×（９タップ）であり、縦方向に６ブロック、横方向に６ブロックで配列することにより、（５４タップ）×（５４タップ）の全体のフィルタ係数が実現される。
【００４４】
図９は、図８の２次元フィルタを距離マップ画像に適用する様子を説明するための図である。取得された距離マップ画像１００１において、領域１００２は（５４タップ）×（５４タップ）の２次元フィルタを適用した後の出力画像の領域である。
【００４５】
図１０は、画像処理部６０１の構成を説明するための図である。図１０（Ａ）の２次元フィルタ回路１１０１は、（９タップ）×（９タップ）の２次元フィルタ処理を施す回路である。２次元フィルタ回路１１０１への入力は、２次元フィルタ係数入力１１０３と、画像入力１１０４であり、出力は２次元フィルタ出力１１０５である。２次元フィルタ回路１１０１は位置ずらし部１１０１ａと２次元コンボリューション処理部１１０１ｂを有する。２次元フィルタ回路１１０１は、画像入力１１０４から取得される入力画像の所望の領域を読み出し、２次元コンボリューション処理を施す。つまり、位置ずらし部１１０１ａは画像入力１１０４からの画像データに対して位置ずらし処理を実行し、処理後の画像データを２次元コンボリューション処理部１１０１ｂに出力する。２次元コンボリューション処理部１１０１ｂは、２次元フィルタ係数入力１１０３からの係数値のデータを取得して、入力画像に係る特定領域内のデータに対して２次元コンボリューション処理を行う。
【００４６】
まず２次元フィルタ回路１１０１は、図８のフィルタ係数ｆ１を入力画像に適用する。その際、入力画像の領域１００３（図９）を部分的に読み出してフィルタ処理を適用することで、中間画像１が生成される。同様に図８のフィルタ係数ｆ２で領域１００４をフィルタ処理することで中間画像２が生成される。このときのフィルタ処理では式（７）がそれぞれの中間画像に対して適用される。同時に、正規化処理を行うための、それぞれの中間画像に対する参照画素数マップも出力される。以下、同様にして図９のフィルタ係数ｆ３〜ｆ３６についてもフィルタ処理が行われる。
【００４７】
フィルタ係数ｆ１〜ｆ３６のそれぞれの分割フィルタ処理時には、同じビットシフト量を適用する。ビットシフト量の決定方法については、例えば、それぞれの中間画像を後の処理で加算した時に出力の最大ビット数を超えないビットシフト量Ａが設定される。具体的には、「ビットシフト量Ａ＝入力信号ビット数（８ビット）＋フィルタ最大参照画素数のビット数（９×９≒７ビット）＋中間画像の数（６×６≒６ビット）−  出力信号ビット数（１４ビット） ＝７ビット」である。また、ビット丸めの影響を防ぐためにビットシフト量Ａよりも小さいビットシフト量Ｂが設定される。
【００４８】
図１０（Ｂ）を参照して、図７のＳ８０３の処理について説明する。画像加算回路１１０６には、画像入力１１０７、１１０８から中間画像１、中間画像２がそれぞれ入力される。画像加算回路１１０６は積算画像２を生成し、画像出力１１０９として出力する。同様にして画像加算回路１１０６は中間画像３〜３６までを積算し、全ての中間画像を積算する。このとき、図７のＳ８０２で出力された参照画素数マップのそれぞれの中間画像についても積算が行われ、積算参照画素数マップが算出される。
【００４９】
本実施形態によれば、所定のフィルタ係数群を割り当てられたフィルタ範囲を、より小さい範囲（サブフィルタ範囲）に分割し、分割フィルタ処理の結果を統合することにより、回路規模の増加を抑えた整形処理を実現できる。
【００５０】
以上、本発明の好ましい実施形態について説明したが、本発明はこれらの実施形態に限定されず、その要旨の範囲内で種々の変形及び変更が可能である。
［変形実施形態］
第１実施形態、第２実施形態ではフィルタの形状を正方形としたが、円柱の形状に適用してもよい。その際のビットシフト量Ａに関して、正方形の場合の参照画素数を最大のフィルタ参照画素数に設定する。フィルタ係数を一律に１とせずに距離ごとに重み付け係数を変更する場合でも、ビットシフト量Ａを求める場合には一律の係数として設定される。
【００５１】
また、第１実施形態、第２実施形態では、ビットシフト量Ａ，Ｂによる各整形後の距離マップ画像に対して、ビットシフト量Ｂで整形フィルタ処理を行った参照画素数に応じて合成処理が実行された。これに限らず、ビットシフト量Ａの参照画素数に応じて合成処理を実行してもよい。
【００５２】
第１実施形態、第２実施形態では、距離マップ画像の整形処理を例示して説明したが、一般的な画像に対するフィルタ処理として実施することが可能である。その場合には、距離情報の信頼度であるｈ（ｑ）を除いた式でフィルタ処理が実行される。つまり、下記式（１０）に示すように、被写体の画像における着目画素と周辺画素との信号値の差によって、フィルタ処理で参照する画素位置を決定する処理が行われる。
Ｊ*ｐ＝  ΣＩ１ｑ・ｆ（｜ｐ−ｑ｜）・ｇ（｜Ｉ２ｐ−Ｉ２ｑ｜）
/Σｆ（｜ｐ−ｑ｜）・ｇ（｜Ｉ２ｐ−Ｉ２ｑ｜）・・・（１０）
【００５３】
第１実施形態、第２実施形態では、整形処理に用いるビット深度変更の方法としてビットシフト量を設定し、ビットシフト演算を行うことで出力ビット数に抑える処理を行った。ビットシフトに代えて除算処理を行うことも可能である。除算処理を用いることで飽和画素数をより正確に算出することができ、整形後の距離マップの合成比率を算出する時に精度を高めることができる。ビットシフト量Ａとビットシフト量Ｂの代わりに除算量Ａと除算量Ｂを用いて、飽和画素数は、例えば下記式により計算可能である。
除算量Ａ＝入力信号最大値×フィルタ最大参照画素数×フィルタ分割数（中間画像の数）−  出力信号最大値  ・・・（１１）
飽和画素数＝除算量Ａ / 除算量Ｂ  ・・・（１２）
各フィルタ処理時には除算量Ａ，除算量Ｂによる除算処理が実行される。除算量Ｂについては参照画素数が少ない場合の影響が小さくなる値に設定される。
【００５４】
本発明は、被写体の距離分布に関する情報としてデフォーカスマップデータを算出して使用する実施形態や、デフォーカス量を被写体距離（被写体の奥行き方向の距離）に換算した距離マップデータを使用する実施形態での適用が可能である。つまり、被写体の距離分布に関連するデータが示す情報（距離情報）は、画像内における被写体の距離値を直接的に表し、または距離値に対応する情報を間接的に表している。
【００５５】
また視差測距方式への適用例では、異なる撮像条件で取得された視差画像に基づいて距離情報を算出する処理が実行される。具体的には、撮像部１０５の撮像素子は瞳分割型の撮像素子であり、二次元アレイ状に規則的な配列で配置された複数の画素部を有する。１つの画素部はマイクロレンズと、複数の光電変換部とから構成される。撮像光学系１０４の異なる瞳領域を通過する一対の光束を光学像としてそれぞれ結像させて、対をなす画像データを複数の光電変換部から出力することができる。対をなす画像間の相関演算によってデフォーカス量が算出され、デフォーカス量の分布（撮像画像の２次元平面上の分布）を表すデフォーカスマップが生成される。この場合、距離マップ取得部１１０はデフォーカスマップデータ、またはデフォーカス量から変換される被写体距離の距離マップデータを取得する。
【００５６】
［その他の実施形態］
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【符号の説明】
【００５７】
１００：デジタルカメラ
１０１：システム制御部
１０４：撮像光学系
１０５：撮像部
１０７，６０１：画像処理部
１０８：記録媒体
１１０：距離マップ取得部
２００，７００：距離マップ整形部
【図１】
0006570406.tif 000002
【図２】
0006570406.tif 000003
【図３】
0006570406.tif 000004
【図４】
0006570406.tif 000005
【図５】
0006570406.tif 000006
【図６】
0006570406.tif 000007
【図７】
0006570406.tif 000008
【図８】
0006570406.tif 000009
【図９】
0006570406.tif 000010
【図１０】
0006570406.tif 000011