(57)【特許請求の範囲】
【請求項１】
被写体を撮像し、有効画素範囲から出力画像範囲分の画像データを取り出して記憶メディアに記録するカメラにおいて、
画像データの中から特徴的な画素値を有する部分を特異点として抽出する特異点データ検出手段と、
前記抽出した特異点データを一時的に一定量保存する記憶領域と、レリーズ押圧時に生じた撮影画像の傾きを算出する傾き算出手段と、
前記傾き算出手段により算出された角度分、回転補正前の出力画像範囲を回転補正する傾き補正手段とを有し、
前記傾き算出手段は、所定の軸点を回転中心とした、レリーズ押圧直前の画像データ中の傾きを算出するための特異点位置から撮影画像中の傾きを算出するための特異点位置への回転移動量を算出し、
前記軸点は、レリーズを押圧するユーザの手のある側の画像データ上部の一定範囲内にとった点であることを特徴とするカメラ。
【請求項２】
前記傾きを算出するための特異点は、前記軸点を画面右上隅に取った場合には画像データ左上隅一定範囲内に、前記軸点を画面左上隅にとった場合には画像データ右上隅一定範囲内隅に、前記特異点データ検出手段において抽出されることを特徴とした請求項１に記載のカメラ。
【請求項３】
前記回転移動量は、前記軸点を頂点とする、前記レリーズ押圧直前の画像データ中の傾きを算出するための特異点と前記撮影画像中の傾きを算出するための特異点とから成る角度を前記傾き算出手段において算出することで求められることを特徴とする請求項１又は請求項２のいずれかに記載のカメラ。
【請求項４】
前記軸点は、レリーズを押圧する手のある側の画像データ上部の一定範囲内にあらかじめ設けた固定点とするか、又は、前記特異点データ検出手段が抽出した軸となる特異点とすることを特徴とする請求項１乃至請求項３のいずれかに記載のカメラ。
【請求項５】
前記軸点が、前記軸点となる特異点である場合、前記傾き算出手段は、さらに、前記レリーズ押圧直前の画像データ中の軸点となる特異点位置から前記撮影画像中の軸点となる特異点位置への垂直移動量を算出し、前記傾き補正手段において、算出された前記垂直移動量分補正を行うことを特徴とする請求項４に記載のカメラ。
【請求項６】
前記特異点データ検出手段は、抽出した前記特異点のｘ，ｙ座標を算出することを特徴とする請求項１乃至請求項５のいずれかに記載のカメラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、撮像時に生じる撮影画像の傾きを、画像処理を用いて検出・補正する画像処理機能を備えたカメラに関する。
【背景技術】
【０００２】
近年、映像機器の技術発展は目覚しく、カメラは小型化、軽量化が急激に進み、カメラそのものが年を追うごとに小さくなっている。また、背面に設けられたＬＣＤはより大きく、高画質になり、見やすくなるなど、カメラはますます改良が進み、ユーザの利便性に大きく貢献する形となっている。
【０００３】
ところで、撮影を行う際にカメラが傾き、ユーザが撮影しようと思った構図と比べて、実際に撮影された画像が不自然に傾いていることがある。このような傾きというトラブルについて対処すべく、様々な方法がとられている。例えばカメラ内に傾きを検知するセンサ等を設けることで、カメラ内で傾きを検知、補正をすることができる。
【０００４】
しかし、この傾きを検知するセンサをカメラ内に設けることは、カメラそのものの大型化、重量化、そしてコストアップにつながり、ユーザの利便性を害するものと言える。
【０００５】
そのため、たとえば、特許文献１ではカメラ内に傾きを検知するセンサを設けずに、撮像した画像の信号処理によってソフト的に傾きを検知、補正することで、傾きのない画像を得る方法が提案されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００７−１７３９６６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、従来技術としては、回転補正後の出力画像をあくまで天地水平にしようとする傾き補正技術が多い。
【０００８】
よって、ユーザが敢えて傾いた撮影画像を取得しようとしている場合に、従来技術に多くみられる傾き補正を行うと、撮影画像をただ単に天地水平に補正してしまうことになる。これでは敢えて傾いた画像を取得しようとしているユーザの意図を無視した傾き補正が施されることになり、結果としてユーザの意図と異なる撮影画像となってしまい、ユーザにとって不都合である。
【０００９】
特許文献１では傾きの検出及び補正の基準として画像内の一定の直線を採用している発明が記載されている。
【００１０】
これにより、傾きを検出、補正するため、画像内の一定の直線全体を抽出し続けるので、１フレーム毎に画像全体を走査しなければならず、処理が膨大なものとなっている。
【００１１】
さらに、傾きを検出、補正する基準となるのが直線であるため、これを画像から抽出する処理にも時間がかかる。画像から直線を検出する処理は、隣り合う画素間の画素値の差を算出し、変化が大きい画素群から直線部分を算出するものである。この処理によって、その画素群を直線と認識できるので、こちらも処理が膨大である。
【００１２】
そして、特許文献１では画像データを取得するフレーム毎にリアルタイムに回転補正を行っていることから、高速な処理が必要となるため、専用演算装置の追加または高速な演算装置が必要となり、さらにバッテリーの消費も早くなるという弊害があった。
【００１３】
本発明の目的は、以上の問題を解消し、追加のセンサを必要とせずに、ユーザが撮影しようとした構図と実際に得られた撮影画像との間の傾きを、より容易な処理で補正する手段を提供することである。
【課題を解決するための手段】
【００１４】
上記目的を達成するために、本発明実施のカメラは、被写体を撮像し、有効画素範囲から出力画像範囲分の画像データを取り出して記憶メディアに記録するカメラにおいて、画像データの中から特徴的な画素値を有する部分を特異点として抽出する点データ検出手段と、抽出した点データを一時的に一定量保存する記憶領域と、レリーズ完全押圧時に生じた撮影画像の傾きを算出する傾き算出手段と、傾き算出手段により算出された角度分、出力画像範囲を回転補正する傾き補正手段と、を有し、前記傾き算出手段を、所定の軸点を回転中心とした、レリーズ完全押圧直前の画像データ中の特異点位置から撮影画像中の特異点位置への回転移動量を算出する構成とし、ユーザのレリーズを押圧する手のある側の画像データ上部の一定範囲内に軸点をとる構成とする。
【００１７】
さらに、本発明実施のカメラは、上記発明において点データ検出手段を、軸点を画像データ右上に取った場合には特異点を画像データ左側一定範囲内に、軸点を画像データ左上にとった場合には特異点を画像データ右側一定範囲内に抽出する構成とする。
【００１８】
さらに、本発明実施のカメラは、上記発明において傾き算出手段を、軸点を頂点とし、レリーズ押圧直前の画像データ中の特異点と撮影画像中の特異点から成る角度を算出する構成とする。
【００１９】
さらに、本発明実施のカメラは、上記発明において点データ検出手段として、抽出した特異点のｘ，ｙ座標を算出する構成とする。
【発明の効果】
【００２０】
本発明によれば、まず、傾きを検出するためのセンサを新たに搭載する必要がないので、カメラ本体の大型化やコストの増加を避けることができる。
【００２１】
また、補正対象を、カメラを保持し、レリーズを押す方の手を軸とした傾きに限定し、傾きの算出の基準として線ではなく点を採用する。これにより画像データから点を検出する方が線を検出するよりも処理が少ないことから、傾きの算出が容易になる。
【００２２】
また、本発明によれば、敢えて傾いた撮影画像を取得しようとする場合に、単なる水平補正を施すのではなく、ユーザが撮影しようと構えた構図からの傾きを補正するので、ユーザが取得しようと思った撮影画像の傾きが強制的に天地水平に補正されてしまうという不都合も生じえない。
【００２３】
また、画像の回転補正を行うのは撮影画像取得後、出力画像に対しての一回のみであり、ライブビュー表示の全てのフレームに対して処理を行うものではないので、処理が重くならず、消費電力の削減になる。
【図面の簡単な説明】
【００２４】
【図１】本発明の一実施形態であるカメラの外観を示した全体図で、Ａはその正面斜視図であり、Ｂは右手で保持した状態の背面図である。
【図２】図１に示したカメラのブロック図である。
【図３】レリーズ完全押圧時のカメラの傾きの一例を示す図である。
【図４】図１に示したカメラの傾き補正処理の流れを示すフローチャートである。
【図５】特異点Ａ，Ｂをとる位置の一例を示す図である。
【図６】点データバッファの一例を示す図である。
【図７】特異点Ａ、Ｂの傾きの一例を示す図である
【図８】有効画素範囲と、傾き補正のために回転させる回転補正前の出力画像範囲と、回転補正後に得られる出力画像を示す図である。
【図９】ａは有効画素範囲と出力画像範囲にあまり差がない場合を示す図であり、ｂは出力画像範囲を回転させた場合に回転補正後の出力画像範囲が有効画素範囲からはみ出した場合を示す図である。
【図１０】出力画像範囲を有効画素範囲内で、はみ出さない限界まで回転させて傾き補正を終了する場合を示す図である。
【図１１】ａは出力画像をあらかじめ有効画素範囲内で十分回転補正可能な大きさまで、小さく設定した場合を示す図であり、ｂはかかる条件のもとで回転補正した場合を示す図である。
【発明を実施するための最良の形態】
【００２５】
以下、図面を参照して本発明の最も良好な実施形態を説明する。
【００２６】
本実施例のカメラは図１Ａに示すようにカメラ本体１前面に撮影のためのレンズ２があり、レンズ２の後方にはＣＭＯＳなどの撮像素子１２（図１不図示）がある。
【００２７】
図１Ａはカメラ正面斜視図である。カメラ本体１上面にはレリーズ３、電源スイッチ４、ホットシュー５、ポップアップ式ストロボ６、ポップアップ式ストロボ６を手動でポップアップさせるためのスライドノブ７、及びモードダイヤル８が配置されている。
【００２８】
ホットシュー５には、外部ストロボや外付けファインダー等のカメラ用アクセサリを取り付けることが可能である。またポップアップ式ストロボ６は、撮影時、ストロボ発光が必要な場合に、スライドノブ７をスライドさせることでポップアップされ、カメラボディ内に配された不図示のメインコンデンサに蓄えられた電荷が不図示の放電管に供給され、これを発光させることによって機能する。
【００２９】
モードダイヤル８はカメラの機能（撮影モード）を変更する手段であり、回動可能なダイヤル式のスイッチで構成されている。このモードダイヤル８には、撮影モードを認識可能な不図示のアイコンが複数印刷されており、ユーザはこのモードダイヤル８を回動操作することにより、意図した撮影モードのアイコンが不図示の位置合わせマークの位置に来るように合わせ、デジタルカメラを任意の撮影モードに設定することができる。
【００３０】
撮影モードの種類には、たとえば、被写体の明るさに応じてカメラが自動で最適なシャッター速度と絞りを決定するプログラムオートモード、ユーザが所望の絞りを設定し、被写体の明るさに応じてカメラが自動で最適なシャッター速度を決定する絞り優先オートモード、ユーザが所望のシャッター速度を設定し、被写体の明るさに応じてカメラが自動で最適な絞りを決定するシャッター速度優先オートモード、ユーザが所望のシャッター速度と絞りを決定するマニュアル露出モードがある。
【００３１】
図１Ｂはカメラ背面図である。カメラ背面には操作部材として、十字キー１０と、再生ボタン１１と、不図示のズーム操作キーとが設けられている。十字キーは、それぞれ対応する４方向の指示を入力するＵＰボタン、ＤＯＷＮボタン、ＲＩＧＨＴボタン、ＬＥＦＴボタン、そして中央に位置するＯＫボタンの５つのボタンで構成される。これらのボタンを使用することによって、カーソルの移動や操作の決定等が、カメラ背面に設けられたＬＣＤパネル９上で可能となる。また、再生ボタン１１を操作することでカメラが再生モードに切り替わり、図２に記載の記録メディア２２に記録された画像データの確認等が可能となる。また背面に配置された不図示のズーム操作キーを操作することで本体前面にあるレンズ２をワイド側、テレ側に変倍することが可能となる。
【００３２】
ＬＣＤパネル９は撮影時に画角確認用の電子ファインダーとして使用できると共に、撮影した画像のプレビュー画やカメラに装着された記録メディア２２から読み出された再生画像等を表示することができる。また、十字キーを使用したメニューの選択や各種設定もＬＣＤパネル９の表示画面において行われる。さらに、ＬＣＤパネル９には撮影可能コマ数や、再生コマ番号、記録画質、画素数などの情報も表示される。
【００３３】
図２は、デジタルカメラ１の主要な内部構成を示すブロック図である。
【００３４】
撮影レンズを通過した光は、不図示の絞りによって光量が調節された後、ＣＭＯＳやＣＣＤなどの撮像素子１２に入射する。
【００３５】
撮像素子１２の受光面に結像した被写体光は、撮像素子１２内で信号電荷に変換され、蓄積される。そして、撮像素子１２内で変換、蓄積された信号電荷は、不図示のドライバから与えられるパルスに基づいた画像信号として順次読み出されていく。
【００３６】
撮像素子１２から出力された画像信号は、次にアナログデータ制御部１３に送られる。このアナログデータ制御部１３はサンプリングホールド回路、色分離回路、ゲイン調整回路等を有しており、このアナログデータ制御部１３において、画像信号は、相関二重サンプリング処理及び、Ｒ，Ｇ，Ｂの各色信号に色分離処理され、各色信号の信号レベルの調整が行われる。
【００３７】
アナログデータ制御部１３から出力された画像信号は、ＡＤ変換回路１４によりデジタル信号に変換された後、イメージデータバッファ１５に格納される。
【００３８】
イメージデータバッファ１５に格納されたデジタル信号は、その後、画像処理エンジン１６に送られる。画像処理エンジン１６は、輝度・色差信号生成回路、ガンマ補正回路、シャープネス補正回路、コントラスト補正回路、ホワイトバランス補正回路等を含むデジタルシグナルプロセッサで構成された画像処理用回路であり、この画像処理エンジン１６は、制御部１８の指令に従ってデジタル信号の処理を行い、その後、処理を施されたデジタル信号は画像データバッファ１７に格納される。
【００３９】
画像データバッファ１７に記憶されたデジタル信号は、制御部１８の指令に従って各々読み出される。例えばＬＣＤパネル９に出力するためのデジタル信号はＬＣＤ制御ドライバ１９に送られ、ＬＣＤ出力の方式の信号に変換され、ＬＣＤパネル９に出力される。これらの処理を連続して繰り返すことによって、撮像素子１２を介して入力される画像がリアルタイムにＬＣＤパネル９に表示される。ユーザは、このＬＣＤパネル９に映し出される映像によって撮影画角などを確認することができる。また、記録メディアに保存するデジタル信号はまずＪＰＥＧエンコーダー２０に送られ、ＪＰＥＧ方式の信号に変換された後、再度制御部１８に送られ、カードコントローラ２１で処理を施され、記録メディア２２に記録される。
【００４０】
このとき記録メディア２２に記録されるのは有効画素範囲ではなく、いわゆる出力画像範囲の画像データである。
【００４１】
ところで、一般的なカメラを使って撮影を行った場合、レリーズ３を押し込んだ際に、図３のようにカメラが傾き、得られた撮影画像が、ユーザが撮影しようとした画像に対して不自然に傾くことがある。
【００４２】
これは、カメラは本体そのものが小さく軽くなったため、カメラを片手で支えるようになり、レリーズを押す方の手のみでカメラを支え、操作することが多くなったことに起因する。このような事情により、撮影しようと構えていた水平の状態から、撮影する瞬間にレリーズ３を押し込むことで、カメラを水平に保つことができずに、カメラを保持し、レリーズを押す手を軸として傾いてしまう。
【００４３】
このような傾きを補正する手段について、図４のフローチャートを参考にしながら以下に述べる。
【００４４】
まず、ライブビューを表示し、オートフォーカスで撮影する場合について説明する。
【００４５】
最初にユーザが電源ボタン４を押し、電源を入れる（＃１）ことにより、ライブビューがスタート（＃２）し、デジタルカメラ１前面のレンズ２を通った被写体光は各種処理を施され、ライブビュー画像データとしてＬＣＤパネル９上に表示される。
【００４６】
これはレンズから入射した被写体光が撮像素子１２で結像し、画像信号に変換されたものが、アナログデータ制御部１３、ＡＤ変換回路１４、イメージデータバッファ１５、画像処理エンジン１６、画像データバッファ１７、制御部１８、ＬＣＤ制御ドライバ１９を経て各種処理を施され、ライブビュー画像データとなり、ＬＣＤパネル９に出力されたものである。
【００４７】
このＬＣＤ制御ドライバ１９を経てライブビュー画像データがＬＣＤパネル９に出力されるより以前、撮像素子１２から送られた画像データが制御部１８まで送られた時点で、制御部１８は画像データの中からたとえば高輝度ポイントや特徴的な色データを持つ部分などの特徴的な画素値を有する一部分を特異点として認識し、図５のように画像データ右上と画像データ左上に各一点ずつ検知し、抽出する（＃３）。そうして抽出された特異点のｘ，ｙ座標をそれぞれ算出する。
【００４８】
画像データ右上に一点、特異点を検知、抽出するのはこの特異点を軸点とするからである。本実施例で傾きを算出し、補正するのはレリーズ３を押し込んだ際のカメラを保持する手を軸とした傾きなので、本実施例では画像データ右隅に画像回転の軸を設定する必要がある。
【００４９】
画像データ左上にもう一点、特異点を検知、抽出するのは画像データ右上で抽出された軸点からより離れた所に傾きを算出するための特異点をとるためである。傾きを算出するための特異点を軸点から遠くにとることにより、傾きの角度を算出する際、特異点の位置の変位量が大きいためわかりやすく、誤差の影響が少ないという利点がある。この場合、軸点から最も離れた特異点は、画像データ左下にあることになるが、本実施例では、左下ではなく左上において特異点をとるようにしている。これは、撮像素子の画像信号は横ラインで読み出し、処理されることが多いため、特異点Ｂを特異点Ａと近い横ライン上に設定することで処理が高速となる利点があるからである。
【００５０】
また、本実施例では、特異点を高輝度ポイントや特徴的な色データの絶対値で認識して抽出することにしているが、複数の隣り合う画素との間で輝度値や色データの差が大きい部分の中心点を特異点として相対的に認識、抽出する方法も考えられる。
【００５１】
算出された特異点のｘ,ｙ座標データは点データバッファ２３に送られ、一時的に記録される。（＃４）また、制御部１８は、ライブビュー表示のために状況に応じた可変レートで撮像素子１２から送られてくるライブビュー画像データにおいてこの特異点を常に追跡し、その都度ｘ,ｙ座標を算出し、点データバッファ２３へ記録するという作業を繰り返す。
【００５２】
この可変レートとは、通常時であれば一秒間に３０フレームという速度で画像データを取得しているが、被写体が暗くなった場合にフレームレートを下げ、たとえば一秒間に１５フレームとする制御のことを言う。
【００５３】
上述したようにライブビュー画像データ取得のレートは状況によって変化するので、ライブビュー中に取得された特異点のｘ,ｙ座標データは、それぞれの取得時間に対応する時間データと共に記録する。なぜなら、ライブビュー画像データ取得のレートが常に一定ならば、ライブビュー画像データから算出したｘ,ｙ座標データを時系列順に並べると、そのｘ,ｙ座標データがいつ取得した特異点であるかを判断できるが、ライブビュー画像データ取得のレートが可変の場合には、ｘ,ｙ座標データを算出した時系列順に並べたとしても、取得時間を示す時間データと対応させない限り、ｘ,ｙ座標データを取得した正しい時間が判断できなくなってしまうからである。
【００５４】
このように、常に追跡され、新しい画像データからｘ,ｙ座標データを算出され続ける特異点は、図６のように最新のものからいくつか（点データバッファ２３の容量に依存）を残し、上書き記録を繰り返される。
【００５５】
このとき、特異点の追跡方法として、たとえば、特異点として抽出した点の画素値の絶対値を記憶し、その画素値を持つ部分を、画像データのスキャンによって探し出す方法がある。また、特異点そのものの画素値の絶対値ではなく、隣り合う画素間の画素値の差の値を記憶し、同じ画素値の差の値を持つ部分を探し出すことによって行う方法も考えられる。
【００５６】
以上のような処理を経て、ライブビューがＬＣＤパネル９に表示（＃５）された後に、ユーザがレリーズ３を半押しする（＃６）ことで、半押しの信号が制御部１８に送られて、自動合焦動作が開始する。そして、自動合焦動作終了後、今度は、ユーザはその構図の撮影画像を取得するためレリーズ３を全押しする。（＃７）これにより、全押しの信号が制御部１８に送られ、撮影画像のデータが取得される。また、この全押しの信号によって、制御部１８は、得られた撮影画像データからライブビュー開始より追跡を続けていた特異点を抽出し、ｘ,ｙ座標データを算出した後、記録を行う。（＃８,＃９）これで、特異点の追跡、ｘ,ｙ座標データの算出、そして点データバッファ２３へのｘ,ｙ座標データ記録の繰り返しが終了する。
【００５７】
次に、今まで追跡してきた特異点のｘ,ｙ座標データから、ユーザが撮ろうと意図した画像と、得られた撮影画像との間で発生した画像の傾きを制御部１８で算出する（＃１０）。
【００５８】
今回補正するのはレリーズ３を押すことによって生じた傾きなので、撮影画像から抽出した特異点の座標データ（ここより以下では撮影画像内の特異点）と、レリーズ３を押すことによってカメラが傾く前、ユーザが構図を決定し、安定して構えたレリーズ３完全押圧直前時点での特異点の座標データ（ここより以下では基準となる特異点）とを比較し、傾きを算出する。
【００５９】
まず、基準となる特異点の座標データを点データバッファ２３の中から決定する。座標データを決定する方法としてはたとえば、全押しから特定の時間さかのぼった時点の座標データを選ぶようにすればよい。つまり、ここでは一例として、撮影画像内の特異点の座標データを取得した時間データから０．２秒分さかのぼった時の座標データを基準となる特異点として設定する。
【００６０】
次に、図７に示すように、撮影画像内の特異点Ａ´と基準となる特異点Ａとを比べ、撮影画像中の特異点Ｂ´と基準となる特異点のＢとを比べる。これにより両者の間に生じたずれが求められる。
【００６１】
撮影画像内の特異点Ａ´と基準となる特異点Ａとの間のずれはレリーズ３を押したことにより、カメラが下方向へ垂直に押し下げられたことで生じた微小なずれである。対して撮影画像内の特異点Ｂ´と基準となる特異点Ｂとの間のずれはレリーズ３を押したことにより、カメラを保持し、レリーズを押す手を軸としてカメラが回転したことで生じたずれである。
【００６２】
たとえば、レリーズ３を押したことにより、図３のようにカメラを保持し、レリーズを押す手を軸として特異点Ｂから特異点Ｂ´へ回転移動した時の角度を算出するため、特異点Ａ´を軸点として∠Ｂ´Ａ´Ｂの角度を算出する。
【００６３】
特異点Ａ´はカメラを支え、レリーズを押す方の手である程度固定されていることから、この特異点Ａ´を軸として、レリーズ３完全押圧時に生じる特異点Ｂから特異点Ｂ´へのずれを算出、補正しようとするものである。このとき、特異点Ａと特異点Ａ´間にも下方向への垂直移動によるずれが生じているが、これは微小なずれなので、この時点では特異点Ａと特異点Ａ´間のずれは考えず、特異点Ａ´を軸として、特異点Ｂと特異点Ｂ´間の回転移動によるずれを算出、補正することとする。
【００６４】
ただし、特異点Ａと特異点Ａ´のずれが微小であるため、このとき軸とするのは特異点Ａ´だけでなく、たとえば特異点Ａでも、両者の中間地点でも良い。
【００６５】
以下に傾き角度の算出方法を詳しく説明する。
【００６６】
まず、特異点Ａ´の座標（ＸＡ，ＹＡ）を軸とし、基準となる特異点Ｂの座標を（ＸＬ,ＹＬ）、撮影画像内の特異点Ｂ´の座標を（ＸＳ,ＹＳ）とする。
【００６７】
次に特異点Ａ´からＹ＝ＹＡの水平直線を設定する。そして、特異点Ａ´を中心とし、特異点Ａ´と特異点Ｂを結ぶ直線とＹ＝ＹＡの直線でなされる角、θ１を
（数式１）  ｔａｎθ１＝（ＹＡ−ＹＬ）/（ＸＡ−ＸＬ）
で算出する。同様に、特異点Ａ´を中心とし、特異点Ａ´と特異点Ｂ´を結ぶ直線とＹ＝ＹＡの直線でなされる角度θ２を
（数式２）  ｔａｎθ２＝（ＹＡ−ＹＳ）/（ＸＡ−ＸＳ）
で算出する。
【００６８】
数式１で特異点Ａ´を中心とした、特異点Ａ´と特異点Ｂを結ぶ直線とＹ＝ＹＡの直線でなされる角度、数式２で特異点Ａ´を中心とした、特異点Ａ´と特異点Ｂ´を結ぶ直線とＹ＝ＹＡの直線でなされる角度がそれぞれ算出されたことになる。
【００６９】
以上各々算出された角度より、特異点Ａ´を軸とする撮影画像内の特異点Ｂ´から基準となる特異点Ｂへの回転角度θを
（数式３）  θ＝|θ１|＋|θ２|
で算出する。
【００７０】
以上算出した角度θをもとに、制御部１８が傾きの補正を行う（＃１１）
【００７１】
レリーズ３を完全押圧した時に生じる特異点Ａ´を軸とした特異点Ｂから特異点Ｂ´への回転方向へのずれを、以上の手順で算出された角度分、特異点Ａ´を軸として回転補正する。
【００７２】
このとき、図８のように有効画素範囲２４中で回転補正前の出力画像範囲２５を算出角度θ分傾けることにより回転補正後の出力画像２６が得られるため、補正前後の画像で画角が変わることはない。
【００７３】
かかる回転補正はたとえば、公知の技術としてのアフィン変換を利用することで実現できる。
【００７４】
次に、レリーズ３を押圧した時に生じる特異点Ａから特異点Ａ´への下方向へ垂直な微小のずれを垂直補正する。これは単純に垂直方向へ押し下げられたものであるので、回転補正後の出力画像全体を単純に特異点Ａから特異点Ａ´へのｙ座標の移動量分、ｙ方向へ押し上げるのみの処理である。そしてこの垂直補正も同様に、有効画素範囲２４中で回転補正後の出力画像範囲２６を算出されたｙ方向への移動量分移動させての出力画像を得るため、垂直補正前後の画像で画角が変わることはない。
【００７５】
以上のとおり特異点Ａ´を軸とする特異点Ｂ´から特異点Ｂへの回転角度分の回転補正と特異点Ａ´から特異点Ａへの垂直補正が完了した撮影画像は制御部１８からＪＰＥＧエンコーダー２０へと送られ、ＪＰＥＧ形式に変換される。そして再度制御部１８に戻るとカードコントローラ２１から記録メディア２２へ送られ、最終的な撮影画像として保存される。（＃１２）
【００７６】
なお、本実施例では点Ａも特異点として検知、算出しているが、点Ａは固定点でも良い。なぜなら、点Ａはレリーズ３を押し込んだ際に生じる回転方向への傾きを算出するための軸としての役割が大きく、また、点Ａに生じる垂直方向のずれは極めて微小だからである。この点を重視し、点Ａを固定点とすることで、傾きの角度算出はより容易となる。さらに、点Ａを特異点として追跡する処理も省ける。
【００７７】
また、本実施例では画面左上で検知、算出する特異点Ｂを一点としたが、この特異点Ｂを複数とってもよい。特異点Ｂを一点のみとした場合には、追跡していた唯一の特異点Ｂが有効画素範囲２４からフレームアウトしてしまった場合、もう一度高輝度ポイントなどの特異点を新しく探す必要が生じる。しかしながら、特異点Ｂを複数とることで、特異点を一つ見失っても他の特異点を傾きの算出に使用することができる。
【００７８】
さらに、特異点Ｂを複数取ることで特異点の追跡ミスが減り、複数の特異点Ｂを使って傾きの平均値を算出することもできるため、傾きの角度算出の精度を上げることができる。
【００７９】
上述した実施例ではコントラストＡＦ中もライブビュー表示用に取得された画像データから特異点を検知、算出し続ける方法をとっている。しかし、コントラストＡＦを開始することでライブビューを中断し、フォーカスエリアのみを走査するようなカメラの構成も考えられる。この場合、上述した実施例ではＡＦ中も読みだせたフォーカスエリア外のライブビュー出力部分が読み出せないので、コントラストＡＦ開始と同時に、フォーカスエリア内で新たに特異点の検知、算出、追跡を行うこととする。
【００８０】
フォーカスエリア内に特異点を探す場合には軸とする特異点Ａはとらずに、フォーカスエリア内の左側に特異点Ｂだけ検知、算出し、追跡すれば良い。この場合には軸とする点Ａは画面右上隅をカメラ固定の定点として設定すればよい。
【００８１】
本実施例では、点データバッファ２３から基準となる特異点を選ぶ方法として、全押しから特定の時間さかのぼった座標データを選ぶ方法をとっている。
【００８２】
この他にはたとえば、ライブビューとして最後に表示した画像データから取得したｘ,ｙ座標データを基準点として選ぶ方法もある。
【００８３】
しかし、上述ように必ずしも点データバッファ２３内から選び出す基準点を撮影画像取得から０，２秒前に取得したｘ,ｙ座標データや、ライブビューとして最後に表示したライブビュー画像データから取得したｘ,ｙ座標データなどと固定とする必要はない。例えば、撮影画像で算出された特異点の座標データから一つずつさかのぼり、特異点の動きが停滞する時間のｘ,ｙ座標データを選び取る方法が考えられる。この方法を使うなら、たとえば、最新から２，３，４番目に新しいｘ,ｙ座標データがお互いに近似であった場合、特異点の動きが停滞しているといえるので、制御部１８が、ユーザはこの時点で構図を決定し、構えていたと判断する。そしてこの２，３，４番のｘ,ｙ座標データの中のどれか一つを基準点として選ぶか、もしくはこの２，３，４のｘ,ｙ座標データの平均値を算出して、基準点とする方法が考えられる。
【００８４】
また、本実施例では、有効画素範囲２４の中で回転補正前の出力画像範囲２５を算出角度θ分傾けることにより回転補正後の出力画像２６を得ているので、画角が変わることはない。
【００８５】
しかし、図９Ａのように有効画素範囲２４と回転補正前の出力画像２５の大きさの差があまりないような撮像素子では、出力部分である回転補正前の出力画像範囲２５を算出角度θ分傾け、撮影画像として出力した場合に、図９Ｂのように回転補正前の出力画像範囲２５が有効画素からはみ出し、回転補正後の出力画像２６のはじが切れてしまう可能性がある。このため、上述のような場合に傾き補正を行う手段として、以下の二つの方法が考えられる。
【００８６】
第一の方法は、図１０のように有効画素範囲２４の中で回転補正前の出力画像範囲２５を傾けていき、それが上辺か底辺にぶつかるいっぱいまで傾けた時点で、たとえ算出角度θ分に達していなくとも補正をそこで終了する方法である。この方法は、算出角度θと有効画素２４の中で回転補正前の出力画像範囲２５を傾けられる限界の角度との差が少ない時に有効である。
【００８７】
第二の方法は、図１１Ａのように撮影前にあらかじめ回転補正後の出力画像のサイズを小さく設定しておき、図１１Ｂのように有効画素範囲２４の中で出力画像範囲を十分傾けられるだけの余裕を持たせ、小さく設定した出力画像範囲２７部分を回転補正する方法である。この方法は算出角度θが大きく、第一の方法では十分な補正が得られない場合に有効である。
【００８８】
有効画素範囲２４と回転補正前の出力画像範囲２５の差があまりないような撮像素子を搭載したカメラでは、切り替え手段を実装することで、以上２つの傾き補正方法をユーザが任意で選べるようにしてもよい。
【符号の説明】
【００８９】
１    カメラ本体
２    レンズ
３    レリーズ
４    電源スイッチ
５    ホットシュー
６    ポップアップ式ストロボ
７    スライドノブ
８    モードダイヤル
９    ＬＣＤパネル
１０  十字キー
１１  再生ボタン
１２  撮像素子
１３  アナログデータ制御部
１４  ＡＤ変換回路
１５  イメージデータバッファ
１６  画像処理エンジン
１７  画像データバッファ
１８  制御部
１９  ＬＣＤ制御ドライバ
２０  ＪＰＥＧエンコーダー
２１  カードコントローラ
２２  記憶メディア
２３  点データバッファ
２４  有効画素範囲
２５  回転補正前の出力画像範囲
２６  回転補正後の出力画像範囲
２７  小さく設定した出力画像部分
【図１】
0005410870.tif 000002
【図２】
0005410870.tif 000003
【図３】
0005410870.tif 000004
【図４】
0005410870.tif 000005
【図５】
0005410870.tif 000006
【図６】
0005410870.tif 000007
【図７】
0005410870.tif 000008
【図８】
0005410870.tif 000009
【図９】
0005410870.tif 000010
【図１０】
0005410870.tif 000011
【図１１】
0005410870.tif 000012