(57)【特許請求の範囲】
【請求項１】
振動に応じて撮像装置の光軸を補正する振動補正制御回路であって、前記撮像装置の振動を検出する振動検出素子の出力信号に応じて前記撮像装置の移動量を示す振動成分信号を生成する振動成分信号生成部と、駆動されるレンズの位置を検出する位置検出素子の出力信号および前記振動成分信号に基づいて、前記レンズの位置を補正すべく駆動素子を制御するための駆動信号を生成する駆動信号生成部と、を備える振動補正制御回路に搭載されるべき浮動小数点数のビット長変換回路であって、
浮動小数点数で表現された前記振動検出素子の出力信号のビット長を削減して前記振動成分信号生成部に出力するビット長削減部と、
前記振動成分信号生成部から入力される浮動小数点数で表現された振動成分信号のビット長を増加させて、元のビット長に戻すビット長増加部と、を備え、
前記ビット長削減部は、浮動小数点数の指数部の上位側ビットを設定された数、破棄しつつ前記振動成分信号生成部により実行される信号生成処理に応じて、前記上位側ビットが破棄される指数部に正または負のオフセット値を加算し、
前記ビット長増加部は、浮動小数点数の指数部から前記ビット長削減部により破棄されたビットを復元しつつ前記オフセット値を減算する、
ことを特徴とする浮動小数点数のビット長変換回路。
【請求項２】
前記ビット長削減部は、浮動小数点数の仮数部の下位側ビットに丸め処理を施して、下位側の設定されたビット数、破棄し、
前記ビット長増加部は、浮動小数点数の仮数部に前記ビット長削減部により破棄されたビット位置にゼロを配置し、前記仮数部を元のビット長に戻す、
ことを特徴とする請求項１に記載の浮動小数点数のビット長変換回路。
【請求項３】
振動に応じて撮像装置の光軸を補正する振動補正制御回路であって、
前記撮像装置の振動を検出する振動検出素子の出力信号に応じて前記撮像装置の移動量を示す振動成分信号を生成する振動成分信号生成部と、
駆動されるレンズの位置を検出する位置検出素子の出力信号および前記振動成分信号に基づいて、前記レンズの位置を補正すべく駆動素子を制御するための駆動信号を生成する駆動信号生成部と、
浮動小数点数で表現された前記振動検出素子の出力信号のビット長を変換する浮動小数点数のビット長変換回路と、を備え、
前記振動成分信号生成部は、
前記ビット長変換回路によりビット長が変換された前記振動検出素子の出力信号を、設定されたカットオフ周波数でフィルタリングするハイパスフィルタと、
前記ハイパスフィルタの出力信号を積分して前記振動成分信号を生成する積分回路と、を含み、
前記ハイパスフィルタおよび前記積分回路は、デジタルフィルタで構成され、
前記浮動小数点数のビット長変換回路は、
浮動小数点数で表現された前記振動検出素子の出力信号のビット長を削減して前記振動成分信号生成部に出力するビット長削減部と、
前記振動成分信号生成部から入力される浮動小数点数で表現された振動成分信号のビット長を増加させて、元のビット長に戻すビット長増加部と、を備え、
前記ビット長削減部は、浮動小数点数の指数部の上位側ビットを設定された数、破棄しつつ前記振動成分信号生成部により実行される信号生成処理に応じて、前記上位側ビットが破棄される指数部に正または負のオフセット値を加算し、
前記ビット長増加部は、浮動小数点数の指数部から前記ビット長削減部により破棄されたビットを復元しつつ前記オフセット値を減算する、
ことを特徴とする振動補正制御回路。
【請求項４】
振動に応じて撮像装置の光軸を補正する振動補正制御回路であって、
前記撮像装置の振動を検出する振動検出素子の出力信号に応じて前記撮像装置の移動量を示す振動成分信号を生成する振動成分信号生成部と、
駆動される撮像素子の位置を検出する位置検出素子の出力信号および前記振動成分信号に基づいて、前記撮像素子の位置を補正すべく駆動素子を制御するための駆動信号を生成する駆動信号生成部と、
浮動小数点数で表現された前記振動検出素子の出力信号のビット長を変換する浮動小数点数のビット長変換回路と、を備え、
前記振動成分信号生成部は、
前記ビット長変換回路によりビット長が変換された前記振動検出素子の出力信号を、設定されたカットオフ周波数でフィルタリングするハイパスフィルタと、
前記ハイパスフィルタの出力信号を積分して前記振動成分信号を生成する積分回路と、を含み、
前記ハイパスフィルタおよび前記積分回路は、デジタルフィルタで構成され、
前記浮動小数点数のビット長変換回路は、
浮動小数点数で表現された前記振動検出素子の出力信号のビット長を削減して前記振動成分信号生成部に出力するビット長削減部と、
前記振動成分信号生成部から入力される浮動小数点数で表現された振動成分信号のビット長を増加させて、元のビット長に戻すビット長増加部と、を備え、
前記ビット長削減部は、浮動小数点数の指数部の上位側ビットを設定された数、破棄しつつ前記振動成分信号生成部により実行される信号生成処理に応じて、前記上位側ビットが破棄される指数部に正または負のオフセット値を加算し、
前記ビット長増加部は、浮動小数点数の指数部から前記ビット長削減部により破棄されたビットを復元しつつ前記オフセット値を減算する、
ことを特徴とする振動補正制御回路。
【請求項５】
前記ビット長削減部は、浮動小数点数の指数部の上位側ビットを設定された数、破棄しつつ前記ハイパスフィルタおよび前記積分回路により実行される数値演算処理に応じて、前記上位側ビットが破棄される指数部に負のオフセット値を加算することを特徴とする請求項３または４に記載の振動補正制御回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、演算量および回路規模を削減するのに適した浮動小数点数のビット長変換回路およびそれを用いた振動補正制御回路に関する。
【背景技術】
【０００２】
デジタルスチルカメラやデジタルムービーカメラ（以下、総称して単にデジタルカメラと表記する）が一般のユーザにも広く普及している。カメラの取り扱いに不慣れなユーザは、撮影時に手振れをしやすい。また、デジタルカメラは、携帯電話機、スマートフォン、ＰＤＡ（Personal Digital Assistant）などの携帯機器に広く組み込まれている。このような携帯機器に組み込まれたカメラは片手で撮影されるタイプのものが多い。片手で撮影される場合、両手で撮影される場合より手振れが生じやすい。
【０００３】
手振れを補正するための手法に光学式手振れ補正がある。光学式手振れ補正はカメラの振動を検出する振動検出素子と、その振動によるブレを打ち消す方向にレンズの位置を動かす駆動素子によって、光軸を補正する手法である。一般的に、補正枠内にバネでレンズを取り付け、そのレンズの位置をＸ軸アクチュエータおよびＹ軸アクチュエータでブレを打ち消す方向に動かす機構が用いられる（たとえば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００７−１９２８４７号公報
【特許文献２】特開２０１０−１０２４３１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
上述した機構を用いた光学式手振れ補正において、振動検出素子（たとえば、ジャイロセンサ）の出力値を浮動小数点数で表現することが考えられる。浮動小数点数は小数の表現方法として広く普及している。浮動小数点数の表現の方法の代表的なものに、ＩＥＥＥ７５４形式がある。ＩＥＥＥ７５４方式には単精度表現と倍精度表現があり、単精度表現では、符号部が１ビット、指数部が８ビットおよび仮数部が２３ビットの合計３２ビットで表現される。
【０００６】
しかしながら、３２ビットの浮動小数点数は上述した手振れ補正にはスペックオーバーであり、回路規模が増大し、非効率である。そこで、スペックに見合うような浮動小数点数のビット長で演算することが考えられる。しかしながら、一般的なＣＰＵや外部のデジタル回路などからは、３２ビットや６４ビット以外のインターフェイスは規格外のため扱いづらく、既存資産を使用しづらい。
【０００７】
本発明はこうした状況に鑑みなされたものであり、その目的は、既存資産との互換性を保ちつつ、アプリケーションに見合う回路規模を実現する技術を提供することにある。
【課題を解決するための手段】
【０００８】
本発明のある態様の浮動小数点数のビット長変換回路は、浮動小数点数で表現された演算対象値のビット長を削減して演算部に出力するビット長削減部と、演算部から入力される浮動小数点数で表現された演算結果値のビット長を増加させて、元のビット長に戻すビット長増加部と、を備える。ビット長削減部は、浮動小数点数の指数部の上位側ビットを設定された数、破棄しつつ演算部により実行されるアプリケーションに応じて、上位側ビットが破棄される指数部に正または負のオフセット値を加算し、ビット長増加部は、浮動小数点数の指数部からビット長削減部により破棄されたビットを復元しつつオフセット値を減算する。
【０００９】
本発明の別の態様は、振動補正制御回路である。この振動補正制御回路は、振動に応じて撮像装置の光軸を補正する振動補正制御回路であって、撮像装置の振動を検出する振動検出素子の出力信号に応じて撮像装置の移動量を示す振動成分信号を生成する振動成分信号生成部と、駆動されるレンズの位置を検出する位置検出素子の出力信号および振動成分信号に基づいて、レンズの位置を補正すべく駆動素子を制御するための駆動信号を生成する駆動信号生成部と、浮動小数点数で表現された振動検出素子の出力信号のビット長を変換する上述した浮動小数点数のビット長変換回路と、を備える。振動成分信号生成部は、ビット長変換回路によりビット長が変換された振動検出素子の出力信号を、設定されたカットオフ周波数でフィルタリングするハイパスフィルタと、ハイパスフィルタの出力信号を積分して振動成分信号を生成する積分回路と、を含む。ハイパスフィルタおよび積分回路は、デジタルフィルタで構成される。
【００１０】
本発明のさらに別の態様もまた、振動補正制御回路である。この振動補正制御回路は、振動に応じて撮像装置の光軸を補正する振動補正制御回路であって、撮像装置の振動を検出する振動検出素子の出力信号に応じて撮像装置の移動量を示す振動成分信号を生成する振動成分信号生成部と、駆動される撮像素子の位置を検出する位置検出素子の出力信号および振動成分信号に基づいて、撮像素子の位置を補正すべく駆動素子を制御するための駆動信号を生成する駆動信号生成部と、振動成分信号生成部は、浮動小数点数で表現された振動検出素子の出力信号のビット長を変換する上述した浮動小数点数のビット長変換回路と、を備える。ビット長変換回路によりビット長が変換された振動検出素子の出力信号を、設定されたカットオフ周波数でフィルタリングするハイパスフィルタと、ハイパスフィルタの出力信号を積分して振動成分信号を生成する積分回路と、を含む。ハイパスフィルタおよび積分回路は、デジタルフィルタで構成される。
【発明の効果】
【００１１】
本発明によれば、既存資産との互換性を保ちつつ、アプリケーションに見合う回路規模を実現できる。
【図面の簡単な説明】
【００１２】
【図１】本発明の実施の形態に係る浮動小数点数のビット長変換回路を説明するための図である。
【図２】演算部の構成例を示す図である。
【図３】本発明の実施の形態に係る浮動小数点数のビット長変換回路の構成を示す図である。
【図４】指数部のビット長変換処理の一例を説明するための図である。
【図５】仮数部の丸め処理の一例を示す図である。
【図６】仮数部のビット追加処理の一例を示す図である。
【図７】本発明の実施の形態に係る振動補正制御回路を搭載した撮像装置の構成を示すブロック図である。
【図８】乗算器および加算器の、ビット長と回路規模の対応関係のシミュレーション結果を示す図である。
【図９】仮数部のビット長と演算誤差との対応関係を記述したテーブルを示す図である。
【発明を実施するための形態】
【００１３】
図１は、本発明の実施の形態に係る浮動小数点数のビット長変換回路１０を説明するための図である。ビット長変換回路１０は、外部デジタル回路１９から単精度の浮動小数点数で表現された演算対象値（本実施の形態では３２ビットデータ）を受ける。外部デジタル回路１９としてＣＰＵや各種の論理回路などが挙げられる。これらは外部機器に搭載されたものであってもよい。
【００１４】
ビット長変換回路１０は、浮動小数点数で表現された演算対象値のビット長を変換する。本実施の形態では３２ビットデータを２４ビットデータに変換する。ビット長変換回路１０は、ビット長変換後の演算対象値を演算部１５に出力する。上述したように当該３２ビットデータは、符号部が１ビット、指数部が８ビットおよび仮数部が２３ビットで構成される。本実施の形態に係る２４ビットデータは、符号部が１ビット、指数部が５ビットおよび仮数部が１８ビットで構成される。
【００１５】
演算部１５は、数値演算を行うためのデジタル回路であり、乗算係数１６、レジスタ１７および演算回路１８を含む。乗算係数１６およびレジスタ１７は、ＲＡＭ（Random Access Memory）で構成される。乗算係数１６は第１乗算係数１６ａ、第２乗算係数１６ｂおよび第３乗算係数１６ｃを含む。レジスタ１７は第１レジスタ１７ａおよび第２レジスタ１７ｂを含む。演算回路１８は複数の演算器で構成される。
【００１６】
図２は、演算部１５の構成例を示す図である。図２は演算部１５をデジタルフィルタで構成する例を示す。当該デジタルフィルタは、第１乗算器１８ａ、第１レジスタ１７ａ、第２乗算器１８ｂ、加算器１８ｃ、第２レジスタ１７ｂおよび第３乗算器１８ｄを有する。第１乗算器１８ａは、入力値Ｘ（ｎ）を第１乗算係数１６ａで乗算する。第１レジスタ１７ａは入力値Ｘ（ｎ）を一時保持する。第２乗算器１８ｂは、第１レジスタ１７ａに保持される１サンプリング周期前の入力値Ｘ（ｎ−１）を第２乗算係数１６ｂで乗算する。加算器１８ｃは、第１乗算器１８ａの出力値、第２乗算器１８ｂの出力値、および第３乗算器１８ｄの出力値を加算する。第２レジスタ１７ｂは、加算器１８ｃの出力値を一時保持する。第３乗算器１８ｄは、第２レジスタ１７ｂに保持される１サンプリング周期前の出力値Ｙ（ｎ−１）を第３乗算係数１６ｃで乗算する。
【００１７】
すなわち、このデジタルフィルタは、下記式１に示す演算を行う。
Ｙ（ｎ）＝Ｘ（ｎ）・ａ＋Ｘ（ｎ−１）・ｂ＋Ｙ（ｎ−１）・ｃ  ・・・（式１）
Ｘ（ｎ）（ｎ＝１、２、３・・・）は入力値、Ｙ（ｎ）は出力値、ａは第１乗算係数１６ａ、ｂは第２乗算係数１６ｂ、およびｃは第３乗算係数１６ｃを示す。
【００１８】
当該デジタルフィルタでローパスフィルタを構成する場合、第１乗算器１８ａの係数ａ、第２乗算器１８ｂの係数ｂ、および第３乗算器１８ｄの係数ｃを下記式２の関係を満たすように設定する。
（０＜）ａ≒ｂ≪ｃ  ・・・（式２）
【００１９】
この場合、第２レジスタ１７ｂおよび第３乗算器１８ｄの系の作用が大きくなり、累積加算の機能が主となる。よって、当該デジタルフィルタは積分機能を備え、第２レジスタ１７ｂには積分値が格納される。ここで、係数ａと係数ｂとを略同じ値に設定しているのは、１サンプリング周期前の入力値の遅延成分を加算することによって、ランダムノイズを低減させるためである。なお、係数ａおよび係数ｂを係数ｃより小さく設定するほど、積分値の上昇を抑制できる。
【００２０】
当該デジタルフィルタでハイパスフィルタを構成する場合、第１乗算器１８ａの係数ａ、第２乗算器１８ｂの係数ｂ、および第３乗算器１８ｄの係数ｃを下記式３、４の関係を満たすように設定する。
ａ≒−ｂ  ・・・（式３）
ｃ＞０  ・・・（式４）
【００２１】
この場合、第１乗算器１８ａの出力と第２乗算器１８ｂの出力を加算器１８ｃで加算した値は、１サンプリング期間における入力値の変動分を示す。その変動分を第２レジスタ１７ｂおよび第３乗算器１８ｄの系を用いて、累積加算することによって、高周波成分のみを出力するフィルタとなる。
【００２２】
すなわち、入力値の周波数が低い場合、当該変動分が小さくなり、当該変動分を１サンプリング周期前の出力値に加算しても、出力値の変動は小さくなる。結果として、低周波成分は通過していないようにみえる。一方、入力値の周波数が高い場合、当該変動分が大きくなり、当該変動分を１サンプリング周期前の出力値に加算すると、出力値の変動は大きくなる。結果として、高周波成分は通過しているようにみえる。
【００２３】
図３は、本発明の実施の形態に係る浮動小数点数のビット長変換回路１０の構成を示す図である。ビット長変換回路１０は、ビット長削減部１１およびビット長増加部１２を備える。ビット長削減部１１は、浮動小数点数で表現された演算対象値のビット長を削減して演算部１５に出力する。より具体的には、ビット長削減部１１は、浮動小数点数の指数部の上位側ビットを設定された数、破棄しつつ演算部１５により実行されるアプリケーションに応じて、上位側ビットが破棄される指数部に正または負のオフセット値を加算する。なお、指数部の最上位ビットが指数の符号を示す符号ビットの場合、符号ビットは除いて破棄する。また、ビット長削減部１１は、浮動小数点数の仮数部の下位側ビットに丸め処理を施して、下位側の設定されたビット数、破棄する。
【００２４】
ビット長削減部１１は、比較部１１ａ、加算部１１ｂおよび丸め処理部１１ｃを含む。比較部１１ａは浮動小数点数で表現された演算対象値の指数部と設定上限値とを比較する。前者が後者以上のとき、比較部１１ａは当該指数部の値をビット長削減後の最大値に置き換える。前者が後者未満のとき、比較部１１ａは当該演算対象値の指数部と設定下限値とを比較する。前者が後者以下のとき、比較部１１ａは当該指数部の値をビット長削減後の最小値に置き換える。前者が後者未満のとき、加算部１１ｂは当該指数部の値に正または負の固定値を加算する。なお、指数部のビット長削減処理の具体例は後述する。
【００２５】
丸め処理部１１ｃは浮動小数点数で表現された演算対象値の仮数部の下位側ビットを丸めて、当該仮数部のビット長を削減する。なお、丸め処理の具体例は後述する。
【００２６】
ビット長増加部１２は演算部１５から入力される浮動小数点数で表現された演算結果値のビット長を増加させて元のビット長に戻す。より具体的には、ビット長増加部１２は浮動小数点数の指数部にビット長削減部１１により破棄されたビットを復元しつつオフセット値を減算する。また、ビット長増加部１２は浮動小数点数の仮数部にビット長削減部１１により破棄されたビット位置にゼロを配置し、仮数部を元のビット長に戻す。
【００２７】
ビット長増加部１２は、比較部１２ａ、減算部１２ｂおよびビット追加部１２ｃを含む。比較部１２ａは浮動小数点数で表現された演算結果値の指数部と設定最大値とを比較する。前者と後者が等しいとき、比較部１２ａは当該指数部の値を、上述の設定上限値に置き換える。前者と後者が異なるとき、比較部１２ａは当該演算結果値の指数部と設定最小値とを比較する。前者と後者が等しいとき、比較部１２ａは当該指数部の値を、上述の設定下限値に置き換える。前者と後者が異なるとき、減算部１２ｂは当該指数部の値から、上述の固定値を減算する。なお、指数部のビット長増加処理の具体例は後述する。
【００２８】
ビット追加部１２ｃは、浮動小数点数で表現された演算結果値の仮数部の下位側に、丸め処理部１１ｃにより削減されたビット数、（０）２を追加する。なお、ビット追加処理の具体例は後述する。
【００２９】
図４は、指数部のビット長変換処理の一例を説明するための図である。本実施の形態では指数部を８ビット／５ビット変換する。指数部を８ビットで表現し、中心を２０＝１に設定する場合、指数部の範囲は＋１２８〜−１２７となる。ここで、最上位ビットは符号ビットである。図４に示す例では、最上位ビットが（１）２で正の数、（０）２で負の数を示している。なお、２０の０乗は、（０１１１１１１１）２で示される。
【００３０】
この表現方法の８ビットの指数部を５ビットの指数部に単純に変換する場合、指数部の範囲は−１５〜＋１６となる（Ｃ１参照）。すなわち、最上位ビットを除く上位３ビットを破棄する。図４では、この５ビットの指数の範囲を−２７〜＋４にシフトさせる例を示している（Ｃ２参照）。以下、このシフトを実行するための具体的な処理を説明する。前提として、演算対象値の指数部の値を（ｘｘｘｘｘｘｘｘ）２とし、演算結果値の指数部の値を（ｙｙｙｙｙ）２とする。
【００３１】
比較部１１ａは（ｘｘｘｘｘｘｘｘ）２と（１０００００１１）２とを比較する。（１０００００１１）２が上述の設定上限値に対応する。（ｘｘｘｘｘｘｘｘ）２が（１０００００１１）２以上のとき、比較部１１ａは（ｘｘｘｘｘｘｘｘ）２を（１１１１１）２に置き換える。（ｘｘｘｘｘｘｘｘ）２が（１０００００１１）２未満のとき、比較部１１ａは（ｘｘｘｘｘｘｘｘ）２と（０１１００１００）２とを比較する。（０１１００１００）２が上述の設定下限値に対応する。（ｘｘｘｘｘｘｘｘ）２が（０１１００１００）２以下のとき、比較部１１ａは（ｘｘｘｘｘｘｘｘ）２を（０００００）２に置き換える。（ｘｘｘｘｘｘｘｘ）２が（１０００００１１）２未満のとき、加算部１１ｂは（ｘｘｘｘｘｘｘｘ）２から（０１１００１００）２を減算する。
【００３２】
比較部１２ａは（ｙｙｙｙｙ）２と（１１１１１）２とを比較する。両者が等しいとき、比較部１２ａは（ｙｙｙｙｙ）２を、（１０００００１１）２に置き換える。両者が異なるとき、比較部１２ａは（ｙｙｙｙｙ）２と（０００００）２を比較する。両者が等しいとき、比較部１２ａは（ｙｙｙｙｙ）２を、（０１１００１００）２に置き換える。両者が異なるとき、減算部１２ｂは（ｙｙｙｙｙ）２に（０１１００１００）２を加算する。
【００３３】
図４に示した変換方法は後述する手振れ補正に適している。手振れ補正においては、低周波帯域を扱うため、小数点以下の値を細かく表現できることが重視される。そのため、指数の表現範囲を２０を中心にせず、より小さな値にシフトさせることにより、少ないビット長で有効な演算を実現する。指数部を８ビットから５ビットに単純に変換する場合、（０１１１１）２が２０となり、指数部の表現範囲は２−１５〜２１６となる。この表現範囲では手振れ補正の演算に必要なダイナミックレンジを十分に確保することができない。そこで、２０を（１１０１１）２にシフトすることにより、指数部の表現範囲を２−２７〜２４とする。この表現範囲によれば、手振れ補正の演算に必要なダイナミックレンジを確保できる。
【００３４】
図５は、仮数部の丸め処理の一例を示す図である。本実施の形態では下位６ビットを丸め処理して、２３ビットデータを１８ビットデータに変換する。図５に示す例は、最近接偶数への丸め処理を採用した例である。最近接偶数への丸め処理とは、端数が０．５より小さいとき切り捨て、０．５より大きいとき切り上げ、０．５のとき切り捨てと切り上げのうち丸め結果が偶数となるほうへ丸める処理である。この丸め処理は、丸め誤差が累積しにくいという長所がある。
【００３５】
図５において、丸め処理部１１ｃは２３ビットデータの下位４ビットの論理和を演算する。すなわち、下位４ビットの少なくともひとつが（１）２のとき下位から４ビット目を（１）２に設定し、すべてが（０）２のとき（０）２に設定する。つぎに、丸め処理部１１ｃは下位から４〜６ビット目の３ビットを丸め処理する。なお、桁の重みは下位から６ビット目（Ｌ）が１、５ビット目（Ｇ）が０．５、４ビット目（Ｒ）が０．２５である。
【００３６】
上述の３ビットが（０００）２、（００１）２、（１００）２および（１０１）２の場合、下位から５ビット目と４ビット目の合計は０．５より小さく、その２ビットは切り捨て処理となる。（０１１）２および（１１１）２の場合、下位から５ビット目と４ビット目の合計は０．５より大きく、その２ビットは切り上げ処理となる。すなわち、下位から６ビット目に＋（１）２される。（０１０）２の場合、通常の四捨五入法による丸め処理では切り上げ処理となるが、切り上げ結果が奇数となるため、上述の最近接偶数への丸め処理では切り捨て処理となる。（１１０）２の場合、切り上げ結果が偶数となるため、切り上げ処理となる。
【００３７】
図６は、仮数部のビット追加処理の一例を示す図である。図６に示すようにビット追加部１２ｃは、１８ビットデータの下位６ビットに（０００００）２を追加して２３ビットデータに変換する。
【００３８】
図７は、本発明の実施の形態に係る振動補正制御回路１００を搭載した撮像装置５００の構成を示すブロック図である。撮像装置５００は、レンズ７０、駆動素子９０、位置検出素子８０、振動検出素子６０、振動補正制御回路１００、撮像素子２００および画像処理部３００を備える。
【００３９】
振動補正制御回路１００は、ＡＤＣ (Analog to Digital Converter)２０、浮動小数点数変換回路２５、ビット長変換回路１０、振動成分信号生成部３０、駆動信号生成部４０およびＤＡＣ(Digital to Analog Converter)５０を有する。振動成分信号生成部３０は、ＨＰＦ(High Pass Filter)３２、積分回路３４、センタリング処理回路３６およびリミット回路３８を含む。駆動信号生成部４０は、加算回路４２およびサーボ回路４４を含む。
【００４０】
撮像素子２００は、光学部品であるレンズ７０を透過した光信号を電気信号に変換する。撮像素子２００にはＣＣＤ(Charge Coupled Device)センサまたはＣＭＯＳ(Complementary Metal Oxide Semiconductor）イメージセンサを採用することができる。画像処理部３００は、撮像素子２００により撮像された画像信号に対し、各種加工を施したり、圧縮符号化したりする。
【００４１】
駆動素子９０はレンズ７０を駆動する。位置検出素子８０はレンズ７０の位置を検出する。振動検出素子６０は撮像装置５００に加わる振動を検出する。ビット長変換回路１０は、浮動小数点数で表現された振動検出素子６０の出力信号のビット長を変換する。より具体的には、ビット長削減部１１は、浮動小数点数の指数部の上位側ビットを設定された数、破棄しつつＨＰＦ３２および積分回路３４により実行される数値演算処理に応じて、上位側ビットが破棄される指数部に負のオフセット値を加算する。これに対応して、ビット長増加部１２は、浮動小数点数の指数部からビット長削減部１１により破棄されたビットを復元しつつ当該負のオフセット値を減算する。なお、浮動小数点数の仮数部の処理は上述の通りである。
【００４２】
振動成分信号生成部３０は、振動検出素子６０の出力信号に応じて撮像装置５００の移動量を求め、その移動量を補正するための振動成分信号を生成する。撮像装置５００の移動量は、振動検出素子６０の出力信号を積分して求めることができる。
【００４３】
駆動信号生成部４０は、位置検出素子８０の出力信号および振動成分信号生成部３０により生成された信号に基づいて、レンズ７０の位置を補正すべく駆動素子９０を制御するための駆動信号を生成する。駆動素子９０は、この駆動信号に基づき、レンズ７０の光軸と撮像素子２００の中心とが一致するようレンズ７０の位置を制御する。
【００４４】
以下、振動補正制御回路１００の構成および動作をより具体的に説明する。以下、振動検出素子６０にジャイロセンサ６０ａ、位置検出素子８０にホール素子８０ａ、駆動素子９０にボイスコイルモータ９０ａを採用する例で説明する。ジャイロセンサ６０ａは撮像装置５００を持つユーザの手振れによる振動を角速度として検出するセンサである。
【００４５】
ジャイロセンサ６０ａは、撮像装置５００のＸＹの２軸方向の角速度を検出する。ジャイロセンサによって得られたアナログ形式の角速度信号は、図示しない増幅回路により増幅された後、ＡＤＣ２０に出力される。ＡＤＣ２０は、当該増幅回路により増幅されたアナログ形式の角速度信号をデジタル形式の角速度信号に変換する。ＡＤＣ２０から出力された角速度信号は、浮動小数点数変換回路２５に出力される。
【００４６】
浮動小数点数変換回路２５は、ＡＤＣ２０から出力される固定小数点形式の角速度信号を３２ビットの浮動小数点数形式の角速度信号に変換し、ビット長変換回路１０に出力する。ビット長変換回路１０は、３２ビットの浮動小数点数形式の角速度信号を２４ビットの浮動小数点数形式の角速度信号に変換する。ビット長変換回路１０は図１〜図６を参照しながら説明した上述のビット長変換を実行する。ビット長変換回路１０は、２４ビットの浮動小数点数形式の角速度信号を振動成分信号生成部３０に出力する。
【００４７】
振動成分信号生成部３０は、上述した演算部１５に相当する。すなわち、演算部１５は振動検出素子６０の出力信号に応じて撮像装置５００の移動量を求め、その移動量を補正するための振動成分信号を生成するというアプリケーションを実行する。
【００４８】
ビット長変換回路１０から出力された当該角速度信号はＨＰＦ３２に入力される。ＨＰＦ３２は、ジャイロセンサ６０ａから出力された角速度信号のうち、手振れによる周波数成分より低い周波数成分をフィルタリングして除去する。一般的に、手振れによる周波数成分は１〜２０Ｈｚであるが、本実施の形態では一眼レフカメラなど比較的重量のあるカメラも考慮し、カットオフ周波数を低く設定する例を考える。たとえば、カットオフ周波数を０．０１Ｈｚに設定し、当該角速度信号から０．０１Ｈｚ以下の周波数成分を除去する。
【００４９】
積分回路３４は、ＨＰＦ３２によりフィルタリングされた角速度信号を積分して、撮像装置５００の移動量を示す振動成分信号を生成する。センタリング処理回路３６は、積分回路３４により生成された振動成分信号を原点方向にセンタリングする。なお、センタリング処理回路３６は静止画の撮影時にはオフされる。リミット回路３８は、センタリング処理回路３６によりセンタリングされた振動成分信号に、レンズ７０の可動範囲に対応するリミットを設定する。
【００５０】
本実施の形態では、ＨＰＦ３２、積分回路３４およびセンタリング処理回路３６を図２に示したデジタルフィルタで構成する。積分回路３４はローパスフィルタ、センタリング処理回路３６はハイパスフィルタで構成することができる。当該デジタルフィルタで積分回路３４を構成する際、図２に示したデジタルフィルタの係数ａおよび係数ｂと、係数ｃとの比率を調整することにより、振動補正処理の感度を調整できる。
【００５１】
ビット長変換回路１０は、振動成分信号生成部３０から出力される２４ビットの浮動小数点数形式の振動成分信号を３２ビットの浮動小数点数形式の振動成分信号に変換し、浮動小数点数変換回路２５に出力する。浮動小数点数変換回路２５は、ビット長変換回路１０から出力される浮動小数点形式の振動成分信号を固定小数点形式の振動成分信号に変換し、駆動信号生成部４０（より厳密には加算回路４２）に出力する。
【００５２】
ホール素子８０ａは、ホール効果を利用した磁気センサであり、レンズ７０のＸ軸およびＹ軸方向の位置検出素子として機能する。ホール素子８０ａによって得られたレンズ７０の位置情報を含むアナログ形式の位置信号は、図示しない増幅回路により増幅された後、ＡＤＣ２０に出力される。ＡＤＣ２０は、当該増幅回路により増幅されたアナログ形式の位置信号をデジタル形式の位置信号に変換する。ＡＤＣ２０は上記アナログ形式の角速度信号および上記アナログ形式の位置信号を時分割でデジタルの信号に変換する。なお、ＡＤＣ２０は振動補正制御回路１００内に搭載されるのではなく、モジュール化されたジャイロセンサ６０ａおよびホール素子８０ａにそれぞれ搭載されていてもよい。
【００５３】
ＡＤＣ２０から出力された位置信号は駆動信号生成部４０に出力される。なお、当該位置信号は浮動小数点数に変換されず、固定小数点形式のままである。駆動信号生成部４０の加算回路４２には、当該位置信号および浮動小数点数変換回路２５から出力された振動成分信号が入力される。加算回路４２は、入力された位置信号と振動成分信号とを加算し、サーボ回路４４に出力する。サーボ回路４４は、加算回路４２からの出力信号に応じて、ボイスコイルモータ９０ａの駆動を制御するための駆動信号を生成する。なお、サーボ回路４４において、サーボ制御用のデジタルフィルタを用いたフィルタ処理が行われてもよい。
【００５４】
ＤＡＣ５０は、サーボ回路４４から出力されたデジタル形式の駆動信号をアナログ形式の駆動信号に変換する。当該駆動信号は、図示しない増幅回路により増幅された後、ボイスコイルモータ９０ａに出力される。ボイスコイルモータ９０ａは、当該駆動信号に基づいてレンズ７０のＸ軸およびＹ軸方向の位置を移動させる。
【００５５】
以下、本実施の形態に係る撮像装置５００の動作を手振れがない場合と手振れがある場合に分けて説明する。
【００５６】
（手振れがない場合の動作）
手振れがない場合、撮像装置５００に角速度が生じないため、振動成分信号生成部３０が出力する信号は“０”となる。ボイスコイルモータ９０ａによって駆動されるレンズ７０の位置は、その光軸と撮像装置５００に備えられる撮像素子２００の中心とが一致する。この状態では、ホール素子８０ａから出力される位置信号は“０”であり、サーボ回路４４は、現在のレンズ７０の位置を維持するための駆動信号をボイスコイルモータ９０ａに出力する。
【００５７】
また、レンズ７０の光軸と撮像素子２００の中心とが一致しない場合、ホール素子８０ａから出力される位置信号は“０”と異なる値となり、サーボ回路４４は、その値に応じて、位置信号の値を“０”にするための駆動信号をボイスコイルモータ９０ａに出力する。この動作を繰り返すことによって、レンズ７０の光軸と撮像素子２００の中心とが一致するように、レンズ７０の位置が制御される。
【００５８】
（手振れがある場合の動作）
上述したように、ボイスコイルモータ９０ａによって駆動されるレンズ７０の位置は、その光軸と撮像素子２００の中心とが一致するよう制御される。両者が一致している状態では、ホール素子８０ａから出力される位置信号は“０”である。
【００５９】
一方、手振れによって撮像装置５００が移動するため、振動成分信号生成部３０は、ジャイロセンサ６０ａにより検出された角速度信号に基づいて、撮像装置５００の移動量を示す振動成分信号を駆動信号生成部４０に出力する。
【００６０】
加算回路４２は、ホール素子８０ａが出力する“０”の位置信号と、振動成分信号生成部３０が出力する“０”以外の振動成分信号とを加算する。サーボ回路４４は、この信号に応じて、ボイスコイルモータ９０ａの駆動信号を生成する。この駆動信号はレンズ７０を移動させる補正信号となる。ボイスコイルモータ９０ａは、サーボ回路４４が出力する補正信号に基づいてレンズ７０を移動させる。これにより、撮像素子２００は手振れによる被写体のぶれを抑制した信号を得ることができる。この制御を繰り返すことによって、手振れ補正制御が実現される。
【００６１】
つぎに、ビット長変換回路１０により浮動小数点数の符号部の８ビットを５ビットに変換し、その表現範囲を２−２７〜２４にシフトさせる根拠について説明する。手振れ補正の帯域は、１Ｈｚ〜２０Ｈｚ程度必要であるため、手振れ帯域に影響しないように、ＨＰＦ３２のカットオフ周波数は０．０１Ｈｚ以下が望ましい。
【００６２】
図２に示したデジタルフィルタにおいて、サンプリング周波数が４０ｋＨｚ、カットオフ周波数が０．０１Ｈｚの場合、フィルタ係数ａ、ｂ、ｃは下記の通りである。
ａ＝（３５５２Ｄ４１Ｃ）１６
ｂ＝（Ｂ５５２Ｄ４１Ｃ）１６
ｃ＝（３Ｆ７ＦＦＦＥ６）１６
となる。
【００６３】
ここで、ａ，ｂの指数部＝（０１１０１０１０）２＝２−２１、ｃの指数部＝（０１１１１１１１）２＝２０となる（図４参照）。２０を中心とした単純なビット削除では２−２１〜２０を表現するには６ビット必要であるが、２０を中心とした表現範囲をシフトさせると５ビットで足りる。すなわち、２−２１〜２０が中央になるようにシフトさせると、５ビットで２−２６〜２５を表現可能である。
【００６４】
積分回路３４で２５以上の値になる場合と、ＨＰＦ３２で２−２６以下の値になる場合を考えたとき、積分回路３４でのオーバーフローは、通常の手振れ補正動作中では発生しない。ＨＰＦ３２で２−２６以下の演算を実行することによる誤差の影響をより小さくするため、さらに１ビット負側にシフトさせることが有効である。すなわち、上述したように５ビットで表現される指数部の範囲を２−２７〜２４に設定する。この表現範囲は積分回路３４でのオーバーフローを抑制しつつ、もっとも手振れ補正の精度を上げることができる範囲である。
【００６５】
なお、積分回路３４はパンニングまたはチルティングが発生するとオーバーフローするが、図示しないパンニング／チルティング検出回路によりパンニングまたはチルティングが検出されると、積分回路３４の前段に設けられた図示しないゲイン調整回路により積分回路３４に入力される信号を減衰させる。
【００６６】
つぎに、ビット長変換回路１０により浮動小数点数の仮数部の２４ビットを１８ビットに変換する根拠について説明する。図８は、乗算器および加算器の、ビット長と回路規模との対応関係のシミュレーション結果を示す図である。なお、回路規模は正規化された値である。フィルタ演算では、仮数部の乗算および加算が実行される。図８に示すように乗算器および加算器はビット長が増大するほど、２次関数的に回路規模が増加する傾向にある。
【００６７】
図９は、仮数部のビット長と演算誤差との対応関係を記述したテーブルを示す図である。なお、指数部は２４であることを前提とする。フィルタ演算において、その演算誤差の影響を無視として取り扱うにはフィルタ全体の最大誤差が１％以下が望ましい。図９を参照すると、仮数部のビット長が１８ビットから当該フィルタ全体の最大誤差が１％以下となる。そこで、本実施の形態では回路規模の増大を抑制しながら、演算精度を維持できる１８ビットを採用した。
【００６８】
以上説明したように本発明の実施の形態によれば、既存資産との互換性を保ちつつ、アプリケーションに見合う回路規模を実現できる。したがって、既存資産を有効活用しつつ、追加するアプリケーションを実行するための演算部の規模を最適化できる。とくに、手振れ補正に適用した場合、振動成分信号生成部３０以外の既存回路との互換性を保ちつつ、振動成分信号生成部３０の回路規模を演算内容に見合った規模に最適化できる。その際、指数部の表現範囲をシフトさせることにより、演算精度も維持される。
【００６９】
以上、本発明をいくつかの実施の形態をもとに説明した。この実施の形態は例示であり、それらの各構成要素や各処理プロセスの組合せにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解されるところである。
【００７０】
上述した実施の形態ではビット長変換回路１０を振動補正制御回路１００に適用する例を示したが、振動補正制御回路１００以外にも適用可能である。たとえば、巨大な整数を扱うアプリケーションにも適用可能である。この場合、指数部の表現範囲を正にシフトするとよい。
【００７１】
また、上述した実施の形態では丸め処理部１１ｃが最近接偶数への丸め処理を採用する例を説明した。この点、四捨五入、五捨六入、乱数丸めなどその他の丸め処理を採用してもよい。また、下位ビットの単純破棄を採用してもよい。
【００７２】
また、上述した実施の形態では、振動検出素子６０、位置検出素子８０および駆動素子９０をそれぞれジャイロセンサ６０ａ、ホール素子８０ａおよびボイスコイルモータ９０ａとする例を説明した。本発明はそれに限られるものではない。たとえば、振動検出素子６０は直線方向の加速度を検出するセンサを用いて、加速度信号に基づいて撮像装置５００の振動を検出する構成にすることができる。また、駆動素子９０はピエゾ素子やステッピングモータなどを用いることができる。位置検出素子８０はＭＲ素子またはフォトスクリーンダイオードなどを用いることができる。
【００７３】
また、以上の実施の形態では、レンズを駆動させて手振れ補正処理を行うレンズシフト式としたが、本発明はこれに限られるものではない。たとえば、本発明は撮像装置５００のブレに応じて撮像素子２００をシフトさせる撮像素子シフト方式にも適用できる。このとき、位置検出素子８０は撮像素子２００の位置を検出し、駆動素子９０は撮像素子２００を駆動する。
【符号の説明】
【００７４】
１０  ビット長変換回路、  １１  ビット長削減部、  １１ａ  比較部、  １１ｂ  加算部、  １１ｃ  丸め処理部、  １２  ビット長増加部、  １２ａ  比較部、  １２ｂ  減算部、  １２ｃ  ビット追加部、  １５  演算部、  １６  乗算係数、  １６ａ  第１乗算係数、  １６ｂ  第２乗算係数、  １６ｃ  第３乗算係数、  １７  レジスタ、  １７a  第１レジスタ、  １７ｂ  第２レジスタ、  １８  演算回路、  １８ａ  第１乗算器、  １８ｂ  第２乗算器、  １８ｃ  加算器、  １８ｄ  第３乗算器、  １９  外部デジタル回路、  １００  振動補正制御回路、  ２０  ＡＤＣ、  ２５  浮動小数点数変換回路、  ３０  振動成分信号生成部、  ３２  ＨＰＦ、  ３４  積分回路、  ３６  センタリング処理回路、  ３８  リミット回路、  ４０  駆動信号生成部、  ４２  加算回路、  ４４  サーボ回路、  ５０  ＤＡＣ、  ６０  振動検出素子、  ６０ａ  ジャイロセンサ、  ７０  レンズ、  ８０  位置検出素子、  ８０ａ  ホール素子、  ９０  駆動素子、  ９０ａ  ボイスコイルモータ、  ２００  撮像素子、  ３００  画像処理部、  ５００  撮像装置。
【図１】
0005734717.tif 000002
【図２】
0005734717.tif 000003
【図３】
0005734717.tif 000004
【図７】
0005734717.tif 000005
【図８】
0005734717.tif 000006
【図９】
0005734717.tif 000007
【図４】
0005734717.tif 000008
【図５】
0005734717.tif 000009
【図６】
0005734717.tif 000010