(第1の実施形態)
図1(a)は、本発明の第1の実施形態に係わるカメラ(撮像装置)の構成を示した側断面図である。図1(a)は、レンズ交換可能ないわゆるデジタル一眼レフタイプのカメラの構成を示しており、10はカメラ本体、30は交換レンズである。カメラ本体10において11は交換レンズ30の光軸、12は撮像素子、13は半透過性の主ミラー、14は第1の反射ミラーで主ミラー13と第1の反射ミラー14はともに撮影時には上部に跳ね上がる。撮像素子12は例えばCMOSセンサやCCDといった2次元の蓄積型光電変換素子である。15は第1の反射ミラー14により撮像素子面と共役な関係にある近軸的結像面、16は第2の反射ミラー、17は赤外カットフィルター、18は2つの開口部を有する絞り、19は2次結像レンズ、20は焦点検出用センサーである。
焦点検出用センサー20は例えばCMOSセンサーやCCDといった2次元の蓄積型光電変換素子からなり、図1(b)に示すように絞り18の2つの開口部に対応して、一対の多数分割された受光センサー部20A,20Bを備えて構成されている。また、受光センサー部20A,20Bに加えて、信号蓄積部や信号処理用の周辺回路などが同一チップ上に集積回路として作り込まれる。第1の反射ミラー14から焦点検出用センサー20までの構成は、撮影画面内の任意の位置での像ずれ方式での焦点検出を可能とするものである。
21は拡散性を有するピント板、22はペンタプリズム、23は接眼レンズ、24は第3の反射ミラー、25は集光レンズ、26は被写体の輝度に関する情報を得るための測光用センサーである。測光用センサー26は例えばシリコンフォトダイオード等の光電変換素子からなり、図2(a)に例示するように格子状に複数の領域に分割された受光センサー部を備えて構成されており、撮影画面の略全体を視野としている。本実施形態では撮影画面内を9列×7行=63分割した例で説明する。63分割された各受光部は、それぞれPD11〜PD79と呼ぶこととする。受光センサー部以外に信号増幅部や信号処理用の周辺回路などが同一チップ上に集積回路として作り込まれることは周知である。
図2(b)は、上記の焦点検出用センサー20による撮影画面内の焦点検出位置と測光用センサー26の63分割された測光領域との対応位置関係を表した図である。本実施形態では、撮影画面内の焦点検出位置をS01からS23までの9点とし、焦点検出位置S01は測光用センサー26の受光部PD34に対応した位置に配置されている。さらに、図示のように焦点検出位置S02は測光用センサー26の受光部PD25に対応した位置に配置され、以下同様であって焦点検出位置S23は測光用センサー26の受光部PD56に対応した位置に配置されている。
27は交換レンズ30を取り付けるマウント部、28は交換レンズ30と情報通信を行うための接点部である。交換レンズ30において31は絞り、32はカメラ本体と情報通信を行うための接点部、33はカメラに取り付けられるためのマウント部、34,35,36はそれぞれ撮影レンズを構成する光学レンズである。
図3は、本実施形態におけるカメラ本体10とその交換レンズ30の電気回路の構成例を示すブロック図である。カメラ本体10において41は例えば内部に演算器、ROM、RAMやA/Dコンバータ或いはシリアル通信ポート等の入出力ポートを内蔵したワンチップマイクロコンピュータにより構成される制御部であり、カメラ機構等の全体制御を行う。制御部41の具体的な制御シーケンスについては後述する。
焦点検出用センサー20及び測光用センサー26は図2(a)等に記載したものと同一である。焦点検出用センサー20及び測光用センサー26の出力信号は、制御部41のA/Dコンバータ入力端子に接続される。42はシャッターであり制御部41の出力端子に接続されて制御される。43は第1のモータードライバであり制御部41の出力端子に接続されて制御され、主ミラー13の駆動等を行うための第1のモーター44を駆動する。
45はカメラの姿勢を検出する姿勢検出センサーであり、その出力信号は制御部41の入力端子に接続される。制御部41は、姿勢検出センサー45の情報から、横位置に構えての撮影なのか、縦位置に構えての撮影なのかといった情報を得ることができる。46は低照度下の条件で焦点検出用センサー20により焦点検出を行う場合に被写体に赤外光などを投光するAF光源であり、制御部41の出力信号に応じて発光される。
47は被写体の輝度が不足しているような場合に撮影時に発光するフラッシュ(発光部)であり、制御部41の出力信号に応じて発光される。48は液晶パネル等で構成され、撮影枚数、日付情報、撮影情報等を表示する第1の表示器であり、制御部41の出力信号に応じて各セグメントが点灯制御される。49は各種スイッチであり、レリーズボタン、各種設定ボタン等が含まれる。28は図1(a)に記載した接点部であり、制御部41のシリアル通信ポートの入出力信号が接続される。
交換レンズ30において51は例えば内部に演算器、ROM、RAMなどのメモリやシリアル通信ポート等を内蔵したワンチップマイクロコンピュータにより構成されるレンズ制御部である。52は第2のモータードライバでありレンズ制御部51の出力端子に接続されて制御され、焦点調節を行うための第2のモーター53を駆動する。54は第3のモータードライバでありレンズ制御部51の出力端子に接続されて制御され、図1(a)に示される絞り31の制御を行うための第3のモーター55を駆動する。56は焦点調節レンズの繰り出し量すなわち被写体距離に関する情報を得るための距離エンコーダーであり、レンズ制御部51の入力端子に接続される。57は交換レンズ30がズームレンズである場合に撮影時の焦点距離情報を得るためのズームエンコーダーであり、レンズ制御部51の入力端子に接続される。32は図1(a)に記載した接点部であり、レンズ制御部51のシリアル通信ポートの入出力信号が接続される。
交換レンズ30がカメラ本体10に装着されるとそれぞれの接点部28と32とが接続されてレンズ制御部51はカメラ本体の制御部41とのデータ通信が可能となる。カメラ本体の制御部41が焦点検出や露出演算を行うために必要なレンズ固有の光学的な情報や、距離エンコーダー56或いはズームエンコーダー57に基づいた被写体距離に関する情報または焦点距離情報は、レンズ制御部51から出力される。そして、カメラ本体の制御部41へとデータ通信によって送られる。また、カメラ本体の制御部41が焦点検出や露出演算を行った結果求められた焦点調節情報や絞り情報はカメラ本体の制御部41からレンズ制御部51へとデータ通信によって出力される。そして、レンズ制御部51は焦点調節情報に従って第2のモータードライバ52を制御し、絞り情報に従って第3のモータードライバ54を制御する。
レンズを通過した被写体の光学像(被写体像)は撮像素子12上に結像され、その光量に応じた電荷に変換される。撮像素子12は例えばR(赤)、G(緑)、B(青)のカラーフィルタにより覆われている。各カラーフィルタはそれぞれの色の波長帯域周辺の分光感度を持ち、各カラーフィルタに対応して設けられた光電変換素子は、各カラーフィルタを通過した帯域の光線をそれぞれ光電変換する。
各光電変換素子により変換された電荷は、電気信号として撮像素子12からデジタル信号処理器60のA/D変換部に出力され、A/D変換処理によりデジタル信号(画像データ)に変換される。取得した画像データを元に、デジタル信号処理器60は画像補正処理や、画像圧縮処理等の各種信号処理、RAM61への取得画像保存、外部I/F62への画像データ書き出し/読み込み等を行う。RAM61は信号処理時のワーク用メモリとしても使用される。ROM63は、デジタル信号処理器60で実行する信号処理プログラム等が格納される。64はTFTなどの液晶パネルで構成され、撮影画像や撮影枚数、日付情報、撮影情報等を表示する第2の表示器であり、デジタル信号処理器60の出力信号により制御される。
以下、図4に示すフローチャートに従って、カメラ本体の制御部41、デジタル信号処理器60の具体的な動作シーケンスについて説明する。不図示の電源スイッチがオンされて制御部41、デジタル信号処理器60が動作可能となり、不図示のレリーズボタンの第1ストロークスイッチがオンされると、図4のステップS101より実行される。
ステップS101では、焦点検出用センサー20に対して制御信号を出力して、信号蓄積を開始する。ステップS102では、焦点検出用センサー20の信号蓄積が終了するのを待つ。ステップS103では、焦点検出用センサー20に蓄積された信号を読み出しながらA/D変換を行う。さらに読み込まれた各デジタルデータに対してシェーディング等の必要な各種のデータ補正を行う。
ステップS104では、焦点検出を行うために必要なレンズ情報等をレンズ制御部51より取得し、これと焦点検出用センサー20から得られているデジタルデータより撮影画面各部の焦点状態を演算する。得られた撮影画面各部の焦点状態に基づいて撮影画面内の焦点を合わせるべき領域を決定する。決定された領域における焦点状態に従って合焦となるためのレンズ移動量を算出する。
ステップS105では、算出されたレンズ移動量をレンズ制御部51に出力する。これに従ってレンズ制御部51は焦点調節用レンズを駆動するように第2のモータードライバ52に信号出力して、第2のモーター53を駆動する。これにより交換レンズ30は被写体に対して合焦状態となる。合焦状態になった後に距離エンコーダー56に基づいた被写体距離に関する情報をレンズ制御部51より取得することで被写体までの距離情報を得ることができる。
ステップS106では、測光用センサー26に対して制御信号を出力して、信号蓄積を開始する。ステップS107では、測光用センサー26の信号蓄積が終了するのを待つ。ステップS108では、測光用センサー26の各受光部PD11〜PD79に蓄積された信号を読み出しながらA/D変換を行い輝度データ(測光値)を得る。ステップS109では、露出演算(露出量の演算)を行う。演算によって被写体の輝度を求め、これに対して適正露出となるシャッター速度や絞り値を決定する。また、演算内容の詳細は図5(a)のフローチャートを用いて後述する。
ステップS110では、画像信号に対する画像の覆い焼き処理やトーンカーブ補正等の階調処理機能が「入」「切」の設定に応じて処理を分岐する。階調処理機能が「入」の場合には、ステップS111に進む。ステップS111では、撮像露出値を決定する。露出値はステップS110の階調補正処理の実行有無に応じて変化させる。露出値の決定方法は図5(a)のフローチャートで詳しく後述する。また、階調補正処理機能「入」の場合に露出補正量を変化させる方法は、図5(b)のフローチャートで詳しく後述する。
ステップS112では、第1のモータードライバ43に制御信号を出力して、第1のモーター44を駆動して主ミラー13及び第1の反射ミラー14を跳ね上げる。また、ステップS109、S111で演算された絞り値情報をレンズ制御部51に対して出力する。この情報に従ってレンズ制御部51は絞り31を駆動するように第3のモータードライバ54に信号出力して、第3のモーター55を駆動する。これにより交換レンズ30は絞り込み状態となる。ステップS109、S111で演算されたシャッター速度にしたがってシャッター42を制御して撮像素子12に対する露光を行う。また、詳しくは後述する露出演算によってフラッシュ47を使用して撮影すべきシーンであると判別されている場合にはフラッシュ47を発光させる。
その後、レンズ制御部51に対して絞り31を開放するように情報出力する。この情報に従ってレンズ制御部51は絞り31を駆動するように第3のモータードライバ54に信号出力して、第3のモーター55を駆動する。これにより交換レンズ30は絞り開放状態となる。次に、第1のモータードライバ43に制御信号を出力して、第1のモーター44を駆動して主ミラー13及び第1の反射ミラー14をダウンさせる。レンズを通過した被写体の光学像はシャッターが開いている間に撮像素子12上に結像され、その光量に応じた電荷に変換される。
ステップS113では、各光電変換素子により変換された電荷が、撮像素子12から電気信号としてデジタル信号処理器60のA/D変換部に出力され、A/D変換処理によりデジタル信号(非圧縮画像データ)に変換される。ステップS114では、取得した非圧縮画像データの特徴を解析する。ステップS115では、ステップS114で解析した画像の特徴より画像を階調補正処理するパラメータを決定する。ステップS116では、画像の覆い焼き処理やトーンカーブ補正等といった階調補正により、取得した非圧縮画像データに対し、画像補正処理を実行する。ステップS117では、圧縮画像データ(JPEG画像)を生成する。上記のステップS114〜S116の各ステップで実行される画像補正方法は図8のフローチャートで詳しく後述する。
ステップS110で階調処理機能が「切」の場合はステップS118に進む。ステップS118では、撮像露出値を決定する。露出値の決定方法は図5(a)のフローチャートで詳しく後述する。ステップS119では、第1のモータードライバ43に制御信号を出力して、第1のモーター44を駆動し、主ミラー13及び第1の反射ミラー14を跳ね上げる。ステップS109、S118で演算された絞り値情報をレンズ制御部51に対して出力する。この情報に従ってレンズ制御部51は絞り31を駆動するように第3のモータードライバ54に信号出力して、第3のモーター55を駆動する。これにより交換レンズ30は絞り込み状態となる。ステップS109、S118で演算されたシャッター速度にしたがってシャッター42を制御して撮像素子12に対する露光を行う。また、ステップS109での露出演算によってフラッシュ47を使用して撮影すべきシーンであると判別されている場合にはフラッシュ47を発光させる。
その後、レンズ制御部51に対して絞り31を開放するように情報出力する。この情報に従ってレンズ制御部51は絞り31を駆動するように第3のモータードライバ54に信号出力して、第3のモーター55を駆動する。これにより交換レンズ30は絞り開放状態となる。次に、第1のモータードライバ43に制御信号を出力して、第1のモーター44を駆動して主ミラー13及び第1の反射ミラー14をダウンさせる。レンズを通過した被写体の光学像はシャッターが開いている間に撮像素子12上に結像され、その光量に応じた電荷に変換される。ステップS120では、各光電変換素子により変換された電荷が、撮像素子12から電気信号としてデジタル信号処理器60のA/D変換部に出力され、A/D変換処理によりデジタル信号(非圧縮画像データ)に変換される。これで一連のシーケンスが終了する。
続いて、ステップS109で制御部41によって実行される露出演算の詳細な内容について図5(a)のフローチャートに従って詳しく説明する。
ステップS151では、露出演算を行うために必要なレンズ情報等をレンズ制御部51より取得し、ステップS108で測光用センサー26の各受光部PD11〜PD79より得られている輝度データの補正を行う。補正を行った後の各受光部PD11〜PD79に対応した輝度データをそれぞれED11〜ED79と呼ぶこととする。更に、姿勢検出センサー45の情報を入力してカメラの姿勢情報を得る。
ステップS152では、補正を行った各受光部の輝度データED11〜ED79に基づいてY1〜Y7及びX1〜X9の射影データを算出する。Y1〜Y7の射影データを算出する場合はステップS104で焦点検出を行った領域の情報により射影データの算出範囲を変更する。
以下、図2(a)に従ってより具体的に算出方法を説明する。一般的にはm行×n列といった2次元配列のデータを、行方向や列方向に加算或いは加算平均した1次元配列のデータに変換する手法のことを2次元から1次元への投影又は射影という言い方をする。また、列方向や行方向に加算した結果得られた1次元配列のデータのことを射影像或いは射影データと呼ぶ。本実施形態においては測光用センサー26における受光部PD11〜PD79の配列に従った2次元の輝度情報ED11〜ED79より射影データY1〜Y7及びX1〜X9を算出する。このうち射影データX1〜X9については焦点検出位置の情報に関わらずに算出方法は一定である。
X1=(ED11+ED21+ED31+ED41+ED51+ED61+ED71)÷7
X2=(ED12+ED22+ED32+ED42+ED52+ED62+ED72)÷7
X3=(ED13+ED23+ED33+ED43+ED53+ED63+ED73)÷7
X4=(ED14+ED24+ED34+ED44+ED54+ED64+ED74)÷7
X5=(ED15+ED25+ED35+ED45+ED55+ED65+ED75)÷7
X6=(ED16+ED26+ED36+ED46+ED56+ED66+ED76)÷7
X7=(ED17+ED27+ED37+ED47+ED57+ED67+ED77)÷7
X8=(ED18+ED28+ED38+ED48+ED58+ED68+ED78)÷7
X9=(ED19+ED29+ED39+ED49+ED59+ED69+ED79)÷7
射影データY1〜Y7については焦点検出位置の情報に従ってその算出データ範囲を以下のように変更する。これは焦点検出位置が基本的には主被写体の位置であると考えられることより、主被写体の位置を含む7×7の領域を主要な測光領域としてその領域内の値や特徴について重み付けを高くして露出演算を行うためである。
焦点検出位置が図2(b)のS01又はS11又はS21の場合には、Y1〜Y7は次のようになる。
Y1=(ED11+ED12+ED13+ED14+ED15+ED16+ED17)÷7
Y2=(ED21+ED22+ED23+ED24+ED25+ED26+ED27)÷7
Y3=(ED31+ED32+ED33+ED34+ED35+ED36+ED37)÷7
Y4=(ED41+ED42+ED43+ED44+ED45+ED46+ED47)÷7
Y5=(ED51+ED52+ED53+ED54+ED55+ED56+ED57)÷7
Y6=(ED61+ED62+ED63+ED64+ED65+ED66+ED67)÷7
Y7=(ED71+ED72+ED73+ED74+ED75+ED76+ED77)÷7
焦点検出位置が図2(b)のS02又はS12又はS22の場合には、Y1〜Y7は次のようになる。
Y1=(ED12+ED13+ED14+ED15+ED16+ED17+ED18)÷7
Y2=(ED22+ED23+ED24+ED25+ED26+ED27+ED28)÷7
Y3=(ED32+ED33+ED34+ED35+ED36+ED37+ED38)÷7
Y4=(ED42+ED43+ED44+ED45+ED46+ED47+ED48)÷7
Y5=(ED52+ED53+ED54+ED55+ED56+ED57+ED58)÷7
Y6=(ED62+ED63+ED64+ED65+ED66+ED67+ED68)÷7
Y7=(ED72+ED73+ED74+ED75+ED76+ED77+ED78)÷7
焦点検出位置が図2(b)のS03又はS13又はS23の場合には、Y1〜Y7は次のようになる。
Y1=(ED13+ED14+ED15+ED16+ED17+ED18+ED19)÷7
Y2=(ED23+ED24+ED25+ED26+ED27+ED28+ED29)÷7
Y3=(ED33+ED34+ED35+ED36+ED37+ED38+ED39)÷7
Y4=(ED43+ED44+ED45+ED46+ED47+ED48+ED49)÷7
Y5=(ED53+ED54+ED55+ED56+ED57+ED58+ED59)÷7
Y6=(ED63+ED64+ED65+ED66+ED67+ED68+ED69)÷7
Y7=(ED73+ED74+ED75+ED76+ED77+ED78+ED79)÷7
ステップS153では、焦点検出位置の情報に応じて、焦点検出位置を重視して焦点検出位置より離れた領域の重み付けを低くした撮影画面全体の平均輝度値Eaを算出する。
焦点検出位置が図2(b)のS01の場合には、Eaは次のようになる。
Ea={(X1+X2+X3+X4+X5+X6+X7)×7+(X8+X9)×2+ED34×8}÷61
焦点検出位置が図2(b)のS02の場合には、Eaは次のようになる。
Ea={(X2+X3+X4+X5+X6+X7+X8)×7+(X1+X9)×2+ED25×8}÷61
焦点検出位置が図2(b)のS03の場合には、Eaは次のようになる。
Ea={(X3+X4+X5+X6+X7+X8+X9)×7+(X1+X2)×2+ED36×8}÷61
焦点検出位置が図2(b)のS11の場合には、Eaは次のようになる。
Ea={(X1+X2+X3+X4+X5+X6+X7)×7+(X8+X9)×2+ED42×8}÷61
焦点検出位置が図2(b)のS12の場合には、Eaは次のようになる。
Ea={(X2+X3+X4+X5+X6+X7+X8)×7+(X1+X9)×2+ED45×8}÷61
焦点検出位置が図2(b)のS13の場合には、Eaは次のようになる。
Ea={(X3+X4+X5+X6+X7+X8+X9)×7+(X1+X2)×2+ED48×8}÷61
焦点検出位置が図2(b)のS21の場合には、Eaは次のようになる。
Ea={(X1+X2+X3+X4+X5+X6+X7)×7+(X8+X9)×2+ED54×8}÷61
焦点検出位置が図2(b)のS22の場合には、Eaは次のようになる。
Ea={(X2+X3+X4+X5+X6+X7+X8)×7+(X1+X9)×2+ED65×8}÷61
焦点検出位置が図2(b)のS23の場合には、Eaは次のようになる。
Ea={(X3+X4+X5+X6+X7+X8+X9)×7+(X1+X2)×2+ED56×8}÷61
ステップS154では、射影データY1〜Y7及びX1〜X9のうちの最大値を示すものを検出する。その最大値をEhとする。Ehが所定値を超える場合には高輝度補正値γを算出する。最大値Ehと高輝度補正値γの関係の一例を図6の線81に示す。図6の線81の場合にはEhがBv値で9を超えた場合に高輝度補正値γを算出するグラフを示しており、例えばEh=12の場合にγ=1.5、Eh=14の場合にγ=2という値になる。Eh≦9の場合はγ=0である。高輝度補正値γが算出されると前ステップで算出された平均輝度値Eaに高輝度補正を行いEa(γ)を求める。
Ea(γ)=Ea−γ
なお、射影データY1〜Y7及びX1〜X9のうちの最大値を示すものが以下の条件であった場合には図6の線81にて示される値に0.5を乗算したものをγとする。条件は、次のようなものである。(1)焦点検出位置が図2(b)のS01又はS11又はS21の場合でかつ射影データのうちの最大値を示すものがX8かX9である場合。(2)焦点検出位置が図2(b)のS02又はS12又はS22の場合でかつ射影データのうちの最大値を示すものがX1かX9である場合。(3)焦点検出位置が図2(b)のS03又はS13又はS23の場合でかつ射影データのうちの最大値を示すものがX1かX2である場合。こうした条件下での最大値検出領域はステップS153において平均輝度値Eaを算出する場合に重み付けが低くなっているので高輝度補正値γとしても少なくする必要がある。
このようにして、高輝度補正を行うことで画面内のある領域に逆光の空などの高輝度領域が含まれている場合に、その高輝度部分の輝度値の影響を補正することができる。一例を図7に従って説明する。図7(a)のシーンに対応した輝度情報ED11〜ED79及び算出された射影データY1〜Y7及びX1〜X9の各数値例を図2(a)の配列に従って表したものが図7(b)である。このシーンでは主被写体である人物71の顔付近にて焦点検出を行うのが適当であるので、焦点検出位置としてはS21となり、これよりEa=7.0と算出される。射影データのうちの最高輝度はY1の10.8であるからEh=10.8であり、図6よりγ=0.9となる。従って、Ea(γ)=Ea−γ=6.1と算出されることになり、このEa(γ)に従ってカメラの露出を決定すれば撮影画面上部の空部の影響を排除して人物や木々や山部の撮影に適した露出値となる。
ステップS155では、所定の条件を満たす場合に露出補正値αを演算する。このとき、焦点検出位置の輝度値をEsとする。
条件としてEa(γ)>Esの場合は、次のようにする。
α={Es−Ea(γ)}×0.5
条件としてEa(γ)<EsかつEa(γ)<0の場合は、次のようにする。
α={Es−Ea(γ)}×0.25
その他の条件下ではα=0である。
ステップS156では、露出制御用の被写体輝度値Ee=Ea(γ)+αとして算出する。被写体輝度値Ee及びフラッシュ47の使用の有無に基づいて最適な露出制御因子すなわちシャッター速度や絞り値を決定する。
ここで、図4のステップS110にて、階調補正処理機能が「入」に設定されている場合、図8で後述する画像補正処理(階調補正処理)により、非圧縮画像データ取得後、その画像の特徴を解析・補正処理を加える。これにより、明るさ及びコントラストが良好である画像を得ることができる。
しかしながら、階調補正処理は画像の比較的暗部な個所をトーンカーブ等の調整などで明るくすることは可能であるが、上記の露出制御により焦点検出位置に合わせた露出補正を行った場合は、たとえば背景などの階調が失われてしまうことがある。その場合は階調補正が有効ではなくなってしまう。
そこで、階調補正処理機能の「入」/「切」に応じて、露出値を変化させる。階調補正機能「入」の場合には、後述する階調補正により暗部の明るさを持ち上げることを想定して、高輝度補正値γ、露出補正値αは弱めで補正する(弱める程度を設定する)ようにする。
階調補正機能「入」の場合に制御部41により決定される露出値の演算方法(図4のステップS111))を、図5(b)のフローチャートを用いて説明する。
まず、ステップS181で、撮像時のISO値(撮像感度)に応じて、リミッター値(最大補正弱め量)を算出する。リミッター値Limは、一例として図6(a)のようなテーブルとして設定し、ISO値に応じて値を切り替える。具体的には、ISO値が大きいほどリミッター値を小さくなるようにして、設定値間は線形補間として演算する。リミッター値のテーブルはROM等に予め記憶させておく。
ステップS182では、補正の弱め量の係数Gを決定する。係数Gは、高輝度補正値γおよび露出補正値αの差(γ−α)がリミッター値より大きい場合(Lim<γ−α)はG=Limとする。また、(γ−α)とリミッター値の関係が0<γ−α≦Limの場合はG=γ−αとし、(γ−α)がγ−α≦0の場合はG=0とする。
ステップS183では、露出演算値を決定する。ステップS156までで演算した被写体の輝度値Ee=Ea(γ)+αに、ステップS182で決定した弱め量の係数Gを加算して、露出制御用の被写体輝度値Ee=Ea−(γ−α−G)を決定する。すなわち、係数Gが加算されることで、ステップS155で演算された露出補正値αは小さくなるように補正されたことになる。また、ステップS182で決定した係数Gが大きいほど露出補正値αは小さくなるので、露出補正値αはISO値が小さいほど小さくなるように補正されると言える。
以上が露出演算の詳細な説明である。なお、本実施形態においては測光用センサー26の受光部を7×9の63分割とし、焦点検出位置の数を9点とした例にて説明したが本発明は、こうした数の場合に限定されるものではない。
続いて、ステップS114〜S116で実行する画像補正方法(階調補正方法)の詳細な内容について図8のフローチャートに従って詳しく説明する。図8(a)は、デジタル信号処理器60の輝度低周波成分検出部で行う処理を示したフローチャートである。
図8(a)において、ステップS201では、撮像して取得された入力画像データに対して輝度信号抽出処理を行う。輝度成分の抽出は、例えば、色調整対象の画像がIEC61966−2−1に記載されているsRGB色空間で表現されている場合、IEC61966−2−1に記載されている方法に従う。すなわち、ガンマ変換と3行3列のマトリクス演算により、CIE1931XYZに変換する。ここで、位置が(x,y)の画素値(R(x,y),G(x,y),B(x,y))を上記変換により変換した後のXYZのデータをそれぞれX(x,y)、Y(x,y)、Z(x,y)とする。この場合、Y(x,y)が抽出する輝度成分、X(x,y)、Z(x,y)が色成分である。本実施形態では、画像の画素値がsRGB色空間で規定されており、輝度についてはsYCC色空間で規定されているので、下記の変換式を用いて輝度成分を算出する。
Y=0.299×R+0.587×G+0.114×B
これに対し、次の近似式を用いても良い。
Y=(3×R+6×G+B)/10 …(1)
上記処理によって等倍の輝度成分画像を取得することができるが、元画像と輝度成分画像の大きさは一致する必要はない。例えば、このステップS201の輝度成分抽出において、入力画像データに対して縮小処理を施すように構成しても良い。縮小処理は公知の任意の方法で良いが、例えば間引き処理、最近傍法、平均値法などで容易に実現できる。
ステップS202では、ステップ201で作成した輝度成分画像より低周波成分抽出処理を行い、輝度低周波成分画像を生成する。本実施形態では、低周波成分抽出として、ローパスフィルタ処理を行う。本実施形態では、このステップでフィルタサイズの異なる3つのローパスフィルタを用いて3つの低周波成分画像を生成する。
図8(b)は、デジタル信号処理器60の補正量演算部で行う処理を示したフローチャートである。ステップS301では、ホワイトバランス(WB)検出処理を行う。ここでは、WB検出部が入力画像データから撮影シーンに適したホワイトバランスのゲイン値を算出する。
ステップS302では、ヒストグラム検出処理を行う。ここでは、ヒストグラム検出部が、まず撮影した画像データ全体に対して予め定められたWBのゲインを適用し、適用したデータに対してガンマ処理を行う。そして、ガンマ処理を行った画像データのヒストグラムを検出する。本実施形態では、ガンマ処理はルックアップテーブルを用いる方法を適用する。ここで、本実施形態では、ヒストグラムを検出する範囲は画像データの全体とするが、端の方をカットしたものから検出しても良い。
ステップS303では、顔検出前処理を行う。ここでは、顔検出部が入力画像データに対して縮小処理、ガンマ処理等を施して、画像に顔が含まれる顔を容易に検出しやすいようにする。ステップS304では、顔検出処理を行う。ここでは、顔検出部が入力画像データ内の顔領域を検出する。この検出処理には、入力画像データに対するテキスチャー検出処理やその結果に対するパターン認識処理(目、鼻、口、及び顔の輪郭等の領域の認識処理)が含まれている。そして、あらかじめ設定した評価閾値を用いて、これらの処理によって得られた領域に対して顔であることの信頼性の大きさを評価する。
ステップS305では、顔検出部がステップS304の顔検出処理の評価の結果に基づき顔の有無を判定する。顔であることの信頼性が評価閾値より大きい領域が一つ以上あった場合、顔検出部はその領域を顔と判定する。そして、その領域に含まれる目の座標を出力し、ステップS306以降の顔輝度算出処理のステップに進む。顔領域が無かったと判定した場合、ステップS309に進む。
ステップS306では、顔輝度取得領域の算出を行う。ここでは、補正量算出部が顔検出結果に基づいて顔の輝度を取得する領域を算出する。このとき、本実施形態では検出された各顔領域に対してそれぞれ3箇所の顔輝度取得領域を算出する。ステップS307では、補正量算出部は、各顔輝度取得領域について、入力画像データのR画素、G画素、B画素の各々の平均値を求め、式(1)により輝度値Yへの変換を行う。ステップS308では、顔の輝度の代表値の算出を行う。この算出方法の一例は、図9のフローチャートで詳細に後述する。
顔が検出されなかった場合、ステップS309で補正量算出部がヒストグラム検出部で得られたヒストグラムの特徴量の検出を行う。ここでは、図10(a)に示すように、ヒストグラムで暗部側から累積度数が1%である画素が属するレベル(SD)、ハイライト側から累積度数が1%である画素が属するレベル(HL)等を求める。
ステップS310では、補正の目標値の算出を行う。目標輝度レベルの算出には、種々の方法が考えられるが、本実施形態では、補正テーブルを用いて目標輝度レベルのルックアップテーブルを生成する方法を採用する。つまり、図10(b)のように、顔の輝度の代表値に対する目標輝度レベルを定めた補正テーブルをROM63等のメモリに予め保持しておく。そしてこのテーブルを参照することで顔の輝度の代表値から3つのLSBに対応する目標値を求め、これらの値及び画像の輝度の最小値と最大値からスプライン補間などにより入力輝度レベルに対する出力輝度レベルのルックアップテーブルを作成する。
図10(b)は顔がある場合の作成例を示すものであるが、顔がない場合においても同様に、ステップS309で得られたヒストグラムのSD及びHLの値に対応する補正テーブルを用いて、同様なルックアップテーブルを作成することができる。
ステップS311では、輝度低周波成分を用いた補正及びトーンカーブを用いた補正の補正量の算出を行い、その結果を現像処理部に渡すことで補正量演算部の処理が終了する。ステップS311での処理については後で詳細に説明する。
図9は、顔輝度の代表値の算出方法を示したフローチャートである。ステップS401では、各顔について3箇所の輝度値の中から最大値を求める。ステップS402では、顔が複数あるかどうかの判定を行い、顔が複数ある場合はステップS403に進む。顔が1つだけの場合は、この顔についてステップS401で求めた輝度値の最大値を、顔の輝度の代表値とする(ステップS409)。
ステップS403では、複数の顔の輝度値の最大値Yaを求める。ステップS404では、複数の顔の輝度値の平均値Ybを求める。ステップS405では、顔の輝度値の最大値Yaと顔の輝度値の平均値Ybに対して所定の重みをかけた重み平均値Ycとを求める。
ステップS406では、顔の輝度値の最大値Yaと重み平均値Ycとの差が所定の閾値Ythより小さいかどうかの判定を行う。この差が閾値より小さい場合には、重み平均値Ycを顔の輝度の代表値とし(ステップS407)、そうでない場合には、顔の輝度の最大値Yaから閾値Ythを引いた値を顔の輝度の代表値とする(ステップS408)。
このように代表値を決めることで、複数の顔について公平に明るさ補正できる一方で、1つだけ飛び抜けて明るい顔が含まれている場合が生じても、その顔を基準として補正することが可能となり、失敗撮影を減らすことができる。
現像処理部の階調補正処理(第1の階調補正処理、第2の階調補正処理)の詳細を図11のフローチャートを用いて説明する。図11(a)において、ステップS501では、輝度低周波成分を用いた輝度補正処理を行う。この補正処理では、スケール変換した輝度成分の分布を対数変換し、異なる尺度(異なる解像度)での平均値を求め、もとの輝度成分の対数変換との差分を出力する。そして、逆変換(exp演算)により元の輝度単位に戻す処理を行う。ここで、画像に応じて改善の度合いを調節するために、スケール変換した輝度成分の対数変換出力に係数を乗ずるようにする。この係数が改善の度合いを調節するパラメータである。以上説明した処理に基づく改善された輝度成分の出力は以下に示す式(2)のようになる。
Y’(x,y)=exp{γ0*logY(x,y)−γ1*Avg[log{Fn(x,y)*Y(x,y)}]} …(2)
但し、Y’(x,y)、Fn(x,y)、nはそれぞれ、座標値が(x,y)の改善された輝度成分の出力、座標(x,y)におけるガウシアン関数、尺度を表すパラメータである。また、γ0、γ1は改善の度合いを表すパラメータ0、改善の度合いを表すパラメータ1である。また、*は積和演算、Avgは平均値演算を表す。
この輝度変換をハードウェアで構成する場合には、例えば、平均値演算回路、ルックアップテーブルを作成する回路、テーブル記憶部、テーブル参照回路(ガンマ変換の部分)、除算回路によって構成できる。なお、平均値演算回路は低周波輝度信号抽出を実現する部分に設けてもよい。
後述するが、輝度低周波成分を用いた輝度補正処理の強さは図10(c)の曲線92を構成するルックアップテーブルで表される。そして、上記の式(2)の改善の度合いを表すパラメータγ0、改善の度合いを表すパラメータγ1は、このルックアップテーブルの値により決まるようになっている。
ステップS502では、輝度低周波成分を用いた輝度補正処理に伴う色調整処理を行う。色調整処理では、処理後の画像データの色ができるだけ変化しないように、色成分を輝度成分の変更にしたがって修正する。好ましくは例えば、色成分X(x,y)、Z(x,y)にそれぞれ輝度成分の変更前後の比Y’(x,y)/Y(x,y)を乗算する。あるいは、Y(x,y)のみY’(x,y)に変更し、色成分X(x,y)、Z(x,y)に対しては処理を行わないような、処理の簡略化は容易である。
ステップS503では、トーンカーブを用いた輝度補正処理を行う。これには、各入力輝度に対する出力輝度データのルックアップテーブルを用いる。ステップS504では、トーンカーブを用いた輝度補正処理に伴う色調整処理を行う。これは、ステップS502と同様の処理を行えば良い。また、ステップS502とステップS504を合わせて、輝度低周波成分を用いた輝度補正処理及びトーンカーブを用いた補正処理による輝度値の変更にしたがって、最後に色調整処理を行うようにしても良い。
続いて、図8(b)のステップS311における補正量の算出処理の詳細について説明する。この算出処理のフローチャートを図11(b)に示す。
ステップS601では、輝度低周波成分画像を用いた補正の補正量の算出を行う。本実施形態では、輝度低周波成分検出部で生成した、周波数帯域の異なる3つの輝度低周波成分画像を用いる。また、これらの複数の輝度低周波成分画像による補正後の画素値を算出し、それらを重み付け加算して最終的な補正画像を得る。
式(2)で説明した画像データのある輝度低周波成分画素Fn(x,y)*Y(x,y)を以後、Ln(x,y)として説明する。また、本実施形態では3つの輝度低周波成分画像のうち、最も高周波成分のものをLH(x,y)、最も低周波成分のものをLL(x,y)、残りの中間的な周波数成分のものをLM(x,y)とする。
後述の式(3)から明らかなように、本ステップでの補正処理は注目画素の輝度値Y(x,y)だけでなく、その輝度低周波成分LH(x,y)、LM(x,y)、LL(x,y)があって初めて補正後の画素値が決定する。しかしながら、ステップS310で求めた補正量の目標値は、注目画素の輝度値Y(x,y)のみに対する目標値であるので、注目画素の輝度値Y(x,y)のみを用いた補正、すなわちトーンカーブによる補正と近似して補正量の算出を行う。
本実施形態では、撮影に先立ち、ユーザが輝度低周波成分を用いた補正の有無を設定できるようになっている。図12(a)はそのユーザインタフェースの一例であり制御部41がその動作を制御する。カメラが備える第2の表示器64に表示される設定画面において、階調補正の選択項目として「する」、「しない」が表示される。ユーザは所定の操作部材を操作して項目を選択する。なお、「しない」を選択した場合は、輝度低周波成分を用いた補正の割合は“0”になる。
撮影開始後においては、読み出された補正テーブルと撮影画像より決定した補正の目標値のルックアップテーブルの関係から、輝度低周波成分を用いた補正の補正量のルックアップテーブル(図10(c)の曲線92に対応)が生成される。補正テーブルは補正の絶対量を決めるものであるため、このルックアップテーブルの値が目標値の補正量を超えてしまうことがある。そのような場合は、補正量算出部は目標値の補正量を輝度低周波成分を用いた補正の補正量になるようルックアップテーブルを調整する。
ステップS602では、補正量算出部はトーンカーブによる補正量の算出を行う。ここでは、先に求めた輝度低周波成分を用いた補正とトーンカーブによる補正とを合わせて、先に求めた補正量の目標値となるように、トーンカーブによる補正量を算出する。輝度低周波成分を用いた補正は輝度低周波成分LH(x,y)、LM(x,y)、LL(x,y)を用いているため、補正結果として同じ輝度レベルになる画素の補正前の輝度値は様々である。したがって、注目画素の輝度値Y(x,y)のみを用いた補正、すなわちトーンカーブによる補正と近似して、トーンカーブ補正の補正量を算出する。
トーンカーブ補正の補正量、すなわち、ある入力値に対する出力値を求めるには、輝度低周波成分を用いた補正の出力値がこの入力値となる輝度低周波成分を用いた補正の入力値を求め、この入力値に対する補正量の目標値を算出すれば良い。図10(c)にその算出例を示す。図10(c)の91は、補正の目標値を示す曲線、92は輝度低周波成分を用いた補正量を示す曲線であり、それぞれ入力輝度値に対する出力輝度値のデータを持つ離散的なルックアップテーブルで構成される。
トーンカーブ補正のルックアップテーブルは、“入力値(α)に対する輝度低周波成分を用いた補正の出力値(β)”を入力値(β)とした時に、“入力値(α)に対する補正量の目標値(γ)”が出力値(γ)となっていれば良い。図10(c)において、値α1及びβ1に対応するγ1と、値α2及びβ2に対応するγ2が、それぞれ、トーンカーブ補正のルックアップテーブルを構成する。ここで、輝度低周波成分を用いた補正及び補正量の目標値はとびとびの値を持つルックアップテーブルであるので、線形補間によりデータを補間して各値の算出を行う。
この処理のフローチャートを図13に示す。ステップS701では、トーンカーブ補正の入力輝度値と輝度低周波成分を用いた補正のルックアップテーブルの入力輝度値を、画像が取り得る最小輝度値(例えば0)に初期化する。
ステップS702では、トーンカーブ補正の入力輝度値と、輝度低周波成分を用いた補正の入力輝度値に対する出力輝度値を比較する。前者の方が大きい場合(ステップ702でNo)は、ステップS704で輝度低周波成分を用いた補正の入力輝度値を次の輝度値に置き換えて、ステップS702に進む。後者の方が大きいまたは前者と後者が同じである場合(ステップ702でYes)は、ステップS703で、下記の線形補間を用いた式(3)によりトーンカーブ補正の出力輝度値Y[i]を決定する。
Y[i]={Y1[j]×(i−Y2[j-1]+Y1[j-1]×(Y2[j]−i))}/(Y2[j]−Y2[j-1]) …(3)
但し、iはトーンカーブ補正の入力輝度値、jは輝度低周波成分を用いた補正の入力輝度値である。また、Y1[i]は入力輝度値iに対する補正の目標輝度値であり、Y2[i]は入力輝度値iに対する輝度低周波成分を用いた補正の出力輝度値である。
ステップS705では、トーンカーブ補正の入力輝度値が、画像が取り得る最大輝度値(たとえば255)まで終了したかどうかを判定する。最大輝度値でなければ、続くステップS706で、トーンカーブ補正の入力輝度値を次の輝度値に置き換えてステップS702に進み、最大輝度値であれば処理を終了する。以上の処理により、トーンカーブ補正のためのルックアップテーブルを作成することができる。
本実施形態では、まず輝度低周波成分を用いた補正の補正量を決定し、目標値の補正量に対する残りの補正量をトーンカーブ補正により補正するように、トーンカーブ補正の補正量を算出した。しかし、本発明はこれに限るものではなく、例えば、先にトーンカーブ補正の補正量を決定し、目標値の補正量に対する残りの補正量を輝度低周波成分を用いて補正するように、輝度低周波成分を用いた補正の補正量を算出しても良い。この場合も、輝度低周波成分を用いた補正を、注目画素の輝度値Y(x,y)のみを用いた補正と近似すれば、輝度低周波成分を用いた補正とトーンカーブ補正は同等の処理と見なせるので、本実施形態と同様の処理を行えば良い。
以上説明したように、本実施形態によれば、撮影画像の階調補正を行う際に、撮影画像から主被写体の情報及び撮影画像のヒストグラムの情報を取得し、これら情報に基づき撮影画像の階調補正の目標値を算出した。そして、輝度低周波成分を用いた補正とトーンカーブ補正による階調補正のそれぞれの補正量を算出し、輝度低周波成分を用いた補正とトーンカーブ補正により画像の階調補正を行うようにした。このような補正を行うことにより、明るさ及びコントラストが良好である画像補正結果を得ることができる。
(第2の実施形態)
第1の実施形態では、単に階調補正機能の「入」/「切」のみの切替えに応じて露出演算値の弱め量(弱める程度)を決定したが、階調補正の補正レベル(補正の強度)を設定(強度設定)できる場合、その補正レベルに応じて弱め量を変化させる方法でも良い。例えば、階調補正の補正レベルが強いほど弱め量を大きくする、すなわち、階調補正を行う強度が強いほど露出補正値αが小さくなるように補正すればよい。
本実施形態では、図12(b)のユーザインタフェースの一例のように、階調補正の補正レベルを、「強」/「標準」/「弱」の3段階で切り替えることができる。ユーザの操作により補正の強さを決めることができるようにすることで、コントラストの強さに係わるユーザの画質の好みに応じて輝度低周波成分を用いた補正の補正量とトーンカーブ補正の補正量を容易に決めることができる。
この場合、補正レベルに応じて撮像時の露出演算値の弱め量も変化させる必要があり、ステップS181で算出したリミッター値(最大補正弱め量)を、図14(a)のフローチャートによって調節する。
ステップS801、S802では、階調補正機能「入」時、階調補正の補正レベル設定に応じて分岐する。ステップS803、S804、S805では、図14(b)の一例のような、ROM等に予め設定された補正レベルに応じたリミッター弱め量のテーブルによって、リミッター値Limを変化させる。
ステップS806では、露出補正の弱め量の係数Gを決定する。係数Gは、高輝度補正値γおよび露出補正値αの差(γ−α)がリミッター値より大きい場合(Lim<γ−α)はG=Limとし、(γ−α)とリミッター値の関係が0<γ−α≦Limの場合はG=γ−αとし、(γ−α)がγ−α≦0の場合はG=0とする。
ステップS807では、露出演算値を決定する。ステップS156までで演算した被写体の輝度値Ee=Ea(γ)+αに、ステップS806で決定した弱め量の係数Gを加算して、露出制御用の被写体輝度値Ee=Ea−(γ−α−G)を決定する。
つまり、第1の実施形態に対して、図5(b)の部分が、図14(a)、(b)で示した処理に置き換わり、他の構成は同一となる。
以上、本発明の好ましい実施形態について説明したが、本発明はこれらの実施形態に限定されず、その要旨の範囲内で種々の変形及び変更が可能である。
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。