以下、発明の実施の形態を通じて本発明を説明するが、以下の実施形態は特許請求の範囲にかかる発明を限定するものではない。また、実施形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。
図1は、一実施形態に係る撮像装置10の要部断面図である。撮像装置10は、レンズユニット20がカメラユニット30に装着されて、撮像装置として機能する。カメラユニット30には、焦点距離、開放F値等の異なる複数のレンズユニット20が、交換レンズとして交換可能に装着される。
レンズユニット20は、光軸11に沿って配列され鏡筒26に支持されたレンズ群21を備える。撮像レンズの一例としてのレンズ群21は、入射される被写体光束をカメラユニット30へ導く。図においては、レンズ群を構成するレンズとして前玉22および後玉23の他に、フォーカスレンズ24、ズームレンズ25等が含まれる。フォーカスレンズ24、ズームレンズ25は、それぞれ焦点調整、画角調整の指示に応じて光軸方向に移動できるように構成されている。
鏡筒26は、レンズ回路基板27を支持しており、レンズ回路基板27は、レンズユニット20を制御する各種回路の電子素子等を搭載している。レンズユニット20は、カメラユニット30との接続部にレンズマウント29を備え、カメラユニット30が備えるカメラマウント31と係合して、カメラユニット30と一体化する。レンズマウント29とカメラマウント31はそれぞれ通信端子を備えており、マウント同士が係合したときに互いの通信端子が接続される。これにより、レンズ回路基板27に搭載された各種回路、電子素子等は、カメラユニット30側と電気的に接続される。カメラユニット30は、カメラユニット30およびレンズユニット20の通信端子を介して、レンズユニット20の固有情報のデータを、レンズユニット20から取得する。
カメラユニット30は、レンズユニット20から入射される被写体光束を反射するメインミラー32と、メインミラー32で反射された被写体光束が結像するピント板33を備える。メインミラー32は、ミラーボックス35の内部でメインミラー回転軸34周りに揺動して、光軸11を中心とする被写体光束中に斜設される反射状態と、被写体光束から退避する退避状態を取り得る。サブミラー40は、メインミラー32が被写体光束から退避する場合は、メインミラー32に連動して被写体光束から退避する。メインミラー回転軸34は、ミラーボックス35の側壁に支持される。
ライブビューボタンが押し下げられた場合、または、レリーズボタンが最下部まで押し下げられた場合、図の破線で示した退避状態を取る。例えば、メインミラー32は、被写体光束中に斜設された状態で、ライブビューボタンが押し下げられた場合またはレリーズボタンが最下部まで押し下げられた場合、破線で示した退避位置に移動する。ライブビューボタンが押し下げられた場合、メインミラー32は、再度ライブビューボタンが押し下げられるまで退避位置に留まる。一方、レリーズボタンが押し下げられた場合は、所定の撮像動作を終えると、メインミラー32はダウンされ元の斜設状態の位置に戻される。
シャッタの一例としてのフォーカルプレーンシャッタ43と撮像素子36とは、光軸11に沿って配列されている。したがって被写体光束は、レンズ群21を透過してカメラユニットへ入射し、メインミラー32およびサブミラー40が退避状態となったミラーボックス35の内部と開放状態のフォーカルプレーンシャッタ43を通過して、撮像素子36の受光面で結像する。すなわち、この被写体光束の光路が撮影光路となる。フォーカルプレーンシャッタ43および撮像素子36は、撮像デバイスの一部を構成する。
撮像素子36は、例えばCMOSセンサ等の光電変換素子を有する。撮像素子36は、受光面で結像した被写体像を電気信号として出力する複数の光電変換素子を有する。撮像素子36は、メイン基板50と電気的に接続されている。メイン基板50には、撮像装置10全体を制御するSoC51、電源等を制御するMPU52等の電気素子が搭載されている。MPU52は、レリーズボタン等のユーザ操作によって生じる信号を処理してよい。MPU52は、SoC51よりも電力消費量が低いプロセッサであることが望ましい。
SoC51は、被写体像の電気信号から画像データを生成する。また、SoC51は、画像データから、1以上の画像領域、例えば予め定められた複数の焦点調整領域毎にコントラスト量を算出する。フォーカスレンズ24の位置は、SoC51等の制御によって、コントラスト量に基づき決定された目標位置に向けて制御される。また、SoC51は、位相差検出信号を相関演算することでフォーカスレンズ24の焦点状態を検出する。SoC51は、焦点状態に基づきフォーカスレンズ24の目標位置を決定し、決定した目標位置に向けてフォーカスレンズ24を制御する。
カメラユニット30の背面には液晶モニタ等による表示部53が配設されている。表示部53は、SoC51が被写体像の電気信号から生成した表示用画像データを用いて、被写体像を表示する。表示部53は、撮像後の静止画像に限らず、各種メニュー情報、撮像情報、告知情報等を表示する。ライブビュー時には、上述の焦点調節をしながら、撮像素子36の受光面に結像した被写体像の電気信号から表示用画像データが生成され、生成した表示用画像データに基づき、表示部53が被写体像を表示する。
ピント板33は、撮像素子36の受光面と共役の位置に配置されている。ピント板33で結像した被写体像は、ペンタプリズム37で正立像に変換され、接眼光学系38を介してユーザに観察される。また、ペンタプリズム37の射出面上方にはAEセンサ39が配置されており、被写体像の輝度分布を検出する。
斜設状態におけるメインミラー32の光軸11の近傍領域は、ハーフミラーとして形成されており、入射される被写体光束の一部が透過する。透過した被写体光束は、メインミラー32と連動して揺動するサブミラー40で反射されて、合焦光学系41へ導かれる。合焦光学系41を通過した被写体光束は、合焦センサ42へ入射される。合焦センサ42は、受光した被写体光束から位相差信号を出力する複数の光電変換素子列を有する。合焦センサ42は、被写体像の特定の領域に対応して設けられる複数の焦点調整領域のそれぞれにおいて、合焦状態、前ピン状態、後ピン状態を検出でき、前ピン状態、後ピン状態の場合には、合焦状態からのずれ量も検出することができるように構成されている。すなわち、メインミラー32がダウンし斜設状態にある場合、合焦センサ42からの出力を用いて、位相差検出方式で焦点状態を検出して焦点調節することができる。
また、カメラユニット30には電源部54が設けられる。電源部54は、カメラユニット30に限らず、レンズユニット20にも電力を供給する。電源部54は、着脱可能な二次電池を含むことができる。電源部54は、商用電源から電力を受け取って電力を供給してよい。
本実施形態において、SoC51は、マルチコアプロセッサである。SoC51は、複数のプロセッサコアを有する。本実施形態の説明において、プロセッサコアを単にコアと略称する。SoC51は、レンズユニット20、フォーカルプレーンシャッタ43、撮像素子36、AEセンサ39、合焦センサ42、メインミラー32等の制御等、比較的にリアルタイム性が要求される処理を主として実行する第1コアと、画像処理、画像データの記録、ユーザインタフェース等の処理を主として提供する第2コアとを有する。第1コアは、リアルタイムオペレーティングシステム(RTOS)を動作する。第1コアは、RTOSの制御に従って動作し、後でより詳細に説明する処理、主として撮像装置10における固定時間処理を担う。一方、第2コアは、第1コアとは異なるオペレーティングシステムを動作する。例えば、第2コアは、汎用オペレーティングシステムを動作させる。第2コアは、汎用オペレーティングシステムの制御に従って動作し、後でより詳細に説明する処理を実行する。
図2は、撮像装置10のシステム構成を概略的に示すブロック図である。撮像装置10のシステムは、レンズユニット20とカメラユニット30のそれぞれに対応して、駆動ドライバ73を含むレンズ制御系と、SoC51を中心とするカメラ制御系により構成される。そして、レンズ制御系とカメラ制御系は、レンズマウント29とカメラマウント31によって接続される通信端子を介して、相互に各種データ、制御信号の授受を行う。
SoC51は、1つのプロセッサコアとしての第1コア221、1つのプロセッサコアとしての第2コア222、メモリコントローラ224、割込コントローラ225、およびバス229を含む。第1コア221および第2コア222は、バス229を共有する。SoC51は、ホモジニアスマルチコアであってよい。すなわち、第1コア221および第2コア222は、同種のプロセッサコアであってよい。SoC51は、ヘテロジニアスマルチコアであってもよい。すなわち、第1コア221と第2コア222とは異種のプロセッサコアであってよい。
メモリコントローラ224は、SDRAM58等、SoC51外部のランダムアクセスメモリに対するアクセスを制御する。具体的には、第1コア221および第2コア222によるSDRAM58に対するアクセスは、メモリコントローラ224によって制御される。このように、第1コア221および第2コア222は、1つのメモリコントローラ224を共有する。割込コントローラ225は、SoC51外部からの割り込みを制御する。割込コントローラ225からの割り込みベクタは、第1コア221および第2コア222に供給される。このように、第1コア221および第2コア222は、1つの割込コントローラ225を共有する。また、第1コア221および第2コア222は、コア間の割り込みをかけることができる。例えば第1コア221と第2コア222とは、割込線228を介して互いの処理に割り込むことができる。
第1コア221は、RTOSである第1OSを動作させる。第2コア222は、汎用OSである第2OSを動作させる。汎用OSとしては、Windows(登録商標)、Unix(登録商標)等を例示することができる。システムメモリ57は、例えばフラッシュメモリ等の不揮発性メモリである。システムメモリ57は、撮像装置10を制御するプログラム、各種パラメータなどを記憶する役割を担う。例えば、システムメモリ57は、第1コア221上で稼働させる第1OSと、第2コア222上で稼働する第2OSとを記憶している。すなわち、システムメモリ57は、第1OSと、第1OSとは異なる第2OSとを記憶する。そして、第1コア221は、システムメモリ57から第1OSをロードして動作させる。また、第2コア222は、システムメモリ57から第2OSをロードして動作させる。このように、第1コア221は、システムメモリ57に記憶された第1OSを動作させる。また、第2コア222は、システムメモリ57に記憶された第2OSを動作させる。
第1OSは、要求された処理を予め定められた時間内に終えることを保証する。第1OSは、ハードウェア割込みが生じてから、対応する処理ルーチンが呼び出されるまでの最悪値が保証されているオペレーティングシステムである。一方、第2OSは、要求された処理を予め定められた時間内に終えることを必ずしも保証していない。第2OSは、ハードウェア割込みが生じてから、対応する処理ルーチンが呼び出されるまでの最悪値が必ずしも保証されていない。しかし、第2OSは、例えばTCP/IPスタック等の通信用のソフトウェアコンポーネント、GUI等のユーザインタフェース用のソフトウェアコンポーネント等を備えており、多機能のソフトウェアを実装するためのソフトウェア環境を提供する。
第1OSは、コア間通信に対する割り込みの優先度が比較的に高い。第2OSも、コア間通信に対する割り込みの優先度が比較的に高い。このため、第1OSおよび第2OSは、コア間通信の割り込みに対して、対応する処理ルーチンを速やかに呼び出すことができる。
SDRAM58は、画像処理用のワークメモリとして機能する。例えば、SDRAM58は、第2コア222が処理中の画像データを一時的に保管する役割等を担う。また、SDRAM58は、第1OSおよび第2OSが実行されている間、第1OSおよび第2OSを記憶する。具体的には、SDRAM58は、第1OSの実行中イメージおよび第2OSの実行中イメージを記憶する。
第1OSおよび第2OSはともに、SDRAM58内の予め定められた共有メモリ領域にアクセスすることができる。SDRAM58には、第1コア221および第2コア222の間で共有される共有メモリ領域が確保される。すなわち、SDRAM58には、第1コア221と第2コア222との間で共有されるメモリ部として機能する。また、SDRAM58には、第1OS専用のプライベートメモリ領域と、第2OS専用のプライベートメモリ領域とが確保される。このように、SDRAM58には、共有メモリ領域と、第1コア221が排他的にアクセスできる第1OS専用のプライベートメモリ領域と、第2コア222が排他的にアクセスできる第2OS専用のプライベートメモリ領域とが確保される。SDRAM58のメモリ領域を分割して使用するのではなく、第1OS専用の単独のプライベートメモリと、第2OS専用の単独のプライベートメモリと、第1OSおよび第2OSの間で全メモリ領域が共有される共有メモリとを別個に有するメモリ構成を適用してもよい。
第1コア221は、メインミラー32、サブミラー40、フォーカルプレーンシャッタ43等を駆動する。操作入力部60は、レリーズボタン、ライブビューボタン等の操作入力部60がユーザに操作されたことを検出して、MPU52へ出力する。SoC51は、MPU52を介してユーザ操作を取得する。具体的には、第1コア221が、レリーズボタン、ライブビューボタン等のユーザ操作を取得する。第1コア221は、ユーザからの指示に応じて、合焦制御や撮像制御を行う。
第1コア221は、レリーズボタンの押し下げを検出すると、メインミラー32を斜設状態として、フォーカルプレーンシャッタ43を制御して撮像素子36で露光する。また、第1コア221は、撮像素子36が有する光電変換素子の読み出しを制御する。撮像素子36が出力したアナログの撮像信号は、アナログ処理部70で前処理されて、AD変換部71でデジタルの撮像信号に変換される。アナログ処理部70は、アナログフロントエンドとして機能するアナログ処理回路で実装される。AD変換部71から出力されたデジタルの撮像信号は、デジタル処理部72で処理される。デジタル処理部72はデジタルフロントエンドとして機能するデジタル処理回路で実行される。デジタル処理部72は、画像評価値を算出する機能を有する。第1コア221は、画像データの取り込みおよび画像評価値の取り込みをデジタル処理部72に依頼して、デジタル処理部72から画像データおよび画像評価値を取り込む。このように、第1コア221は、フォーカルプレーンシャッタ43および撮像素子36の駆動を制御する。そして、第1コア221は、撮像デバイスに画像を撮像させ、画像を画像データとして取り込む処理を行う。
また、第1コア221は、合焦センサ42からの位相差検出信号に基づいて焦点状態を検出する。すなわち、第1コア221は、位相差検出方式による焦点調節を行う。また、第1コア221は、合焦制御用に取り込まれた画像データを処理して、コントラスト量を示すコントラスト評価値を生成する。第1コア221は、コントラスト検出方式による焦点調節を行う。第1コア221は、コントラスト評価値および位相差データの少なくとも一方に基づき焦点調節用の制御信号を生成して、駆動ドライバ73に供給する。駆動ドライバ73は、第1コア221からの制御信号を受けて各種動作を制御する。例えば、駆動ドライバ73は、制御信号に従って、フォーカスレンズ24、ズームレンズ25、絞り装置28等を駆動する。
第1コア221は、画像データおよび画像評価値を、SDRAM58内の共有メモリ領域に書き込む。また、第1コア221は、画像データに関連する情報を、コア間通信によって第2コア222に送信する。具体的には、第1コア221は、合焦位置やレンズ位置を含むフォーカス情報、AE情報等の露出情報、レンズ固有情報、フラッシュを閃光したか否かを示す情報、撮像時刻情報等を、コア間通信によって第2コア222に送信する。第2コア222は、共有メモリ領域から画像データを読み出して画像処理を行う。また、第2コア222は、コア間通信で第1コア221から取得した各種の情報を用いて、画像処理を行ってよい。
例えば、第2コア222は表示用の画像データを生成する。生成された表示用の画像データは、撮像後の一定時間の間、表示部53に表示される。これに並行して、第2コア222は、画像データを予め定められた画像フォーマットに加工して記録用の画像データを生成する。第2コア222は、SDRAM58をワークメモリとして用いて画像処理をしてよい。第2コア222が生成した記録用の画像データは、外部接続IF56から出力される。外部接続IF56としては、記録媒体としての外部メモリに画像データ等を記録するための記録媒体IF、USB等の外部バスに画像データ等を出力するためのUSBIFを含む。
操作入力部60は、レリーズボタンを含む。操作入力部60の一部は、表示部53の一部とともにタッチパネルとして実装されてよい。
MPU52は、電源部54から各部への給電を制御する。また、MPU52は、操作入力部60からのユーザ操作信号を取得して、SoC51に供給する。MPU52は、レリーズボタンの操作信号を、第1コア221に提供する。一方、MPU52は、タッチパネルの一部として実装された操作入力部60の一部からの操作信号を、第2コア222に提供する。
図3は、ユーザが撮像条件を設定した場合の処理フローを示す。本処理は、撮像条件を設定するユーザ操作が操作入力部60になされた場合に、開始される。撮像条件を設定するユーザ操作は、第2コア222によって取得される。
ステップS302において、第2コア222は、ユーザの操作入力に基づき、撮像条件を設定する。例えば、第2コア222は、画像データの解像度、露出条件、ズーム値、ブレ補正の有無等を設定する。
ステップS304において、第2コア222は、画像一枚あたりの所用データ量を決定する。第2コア222は、外部接続IFを介して接続された外部メモリに記録するために必要な容量としての所用データ量を決定してよい。また、第2コア222は、第2コア222が画像処理を実行するために必要なSDRAM58の容量としての所用データ量を決定してよい。例えば、第2コア222は、解像度に基づき、画像一枚あたりの所用データ量を決定する。具体的には、第2コア222は、解像度とデータ量とを対応づけるLUTを参照して、画像一枚あたりの所用データ量を決定する。画像一枚あたりの所用データ量は、SDRAM58に記憶される。
ステップS306において、第2コア222は、決定した撮像条件を示すデータを第1コア221へコア間通信で送信して、処理を終了する。第1コア221は、第2コア222からのコア間通信を受信すると、撮像条件を設定するための処理ルーチンを呼び出して、第1コア221から送信されたデータに従って撮像条件を設定する。例えば、第1コア221は、絞り装置28、ズームレンズ25を駆動する。また、第1コア221は、シャッタスピードを設定する。また、第1コア221は、撮像装置10のブレを補正すべく、駆動ドライバ73を制御して、レンズ群21を構成する少なくとも1つのレンズを光軸に対して変位させる。このように、第2コア222は、撮像条件を示すデータを、コア間通信により第1コア221に送信する。そして、第1コア221は、第2コア222からコア間通信で受信したデータが示す撮像条件に従って、撮像デバイスを制御する。
図4は、撮像指示を受け付けた場合の処理フローを示す。本処理は、撮像指示の一例としてのレリーズボタンの押し下げが検出した場合に、開始される。レリーズボタンの押し下げは、第1コア221によって取得される。撮像指示があると、第1コア221が共有メモリ領域に対する書き込み権を獲得し、第2コア222は共有メモリ領域に対して読み出しのみが可能な状態に遷移する。
ステップS402において、第1コア221は、コア間通信を用いて、外部接続IFを介して接続された外部メモリの容量と、SDRAM58の容量とを、第2コア222に確認させる。
ステップS404において、第2コア222は、外部メモリおよびSDRAM58の利用可能容量をチェックして、外部メモリおよびSDRAM58で利用可能データ量が、所用データ量以上であるか否かを決定する。具体的には、第2コア222は、外部メモリの残容量が、外部メモリに画像データを記録すために必要な容量以上であり、かつ、SDRAM58の残容量が、画像処理を実行するために必要な容量以上であるかを決定する。具体的には、第2コア222は、図3のステップS304で決定した所用データ量と比較する。
ステップS406において、第2コア222は、利用可能データ量が所用データ量以上であるか否かを示す管理情報を、コア間通信で第1コア221に送信する。
ステップS408において、第1コア221は画像データを記録可能であるか否かを判断する。具体的には、ステップS406で取得した利用可能データ量が所用データ量以上である場合、画像データを記録可能である旨を判断する。利用可能データ量が所用データ量未満である場合、画像データを記録可能でない旨を判断する。
画像データを記録可能である場合、第1コア221はステップS410において撮像動作を行い、処理を終了する。画像データを記録可能でない場合、第1コア221は撮像せずに処理を終了する。このように、第2コア222は、外部メモリに書き込むことができる容量を示す管理情報を、コア間通信により第1コア221に送信する。そして、第1コア221は、画像を新たに撮像すべき場合に、新たな画像の処理に必要な容量が外部メモリに残されているか否かを管理情報に基づいて判断し、必要な容量が残されていることを条件として、撮像デバイスに画像を撮像させる。このため、メモリの空き容量が確保できていない状態で撮像してしまうことを未然に防ぐことができる。
なお、SDRAM58の残容量が、画像処理を実行するために必要な容量以上でない場合であっても、第2コア222が現在進めている画像処理が終了することで、空き容量が確保される可能性がある。したがって、第1コア221は、空き容量が確保された場合にコア間通信で通知するよう第2コア222に依頼して、第2コア222からのコア間通信をウェイトするようにしてもよい。そして、第1コア221は、空き容量が確保された旨の通知を第2コア222からコア間通信で受信した場合に、撮像動作を行ってもよい。
図5は、第1コア221による処理フローの一例を示す。本フローは、図4のステップS410の詳細な処理フローである。
ステップS502において、第1コア221は、撮像素子36およびフォーカルプレーンシャッタ43を駆動して露光し、撮像素子36から撮像信号を出力させる。撮像素子36からのアナログの撮像信号は、アナログ処理部70およびAD変換部71を経てデジタルの撮像信号に変換される。デジタル処理部72は、RAWデータを生成するとともに、画像評価値を算出する。RAWデータは、撮像素子36が有する複数の光電変換素子にそれぞれ対応して1色の値を持つデータである。画像評価値としては、カラーバランスの評価値を例示することができる。
ステップS504において、第1コア221は、デジタル処理部72から、RAWデータおよび画像評価値を取り込む。ステップS506において、第1コア221は、RAWデータおよび画像評価値を共有メモリ領域に書き込む。すなわち、第1コア221は、画像をRAWデータとして取り込み、RAWデータを共有メモリ領域に書き込む。
ステップS508において、第1コア221は、合焦位置やレンズ位置を含むフォーカス情報、AE情報等の露出情報、レンズ固有情報、閃光したか否かを示す情報、時刻情報等を含む撮像関連情報を、RAWデータを記録した旨とともにコア間通信で第1コア221に送信し、処理を終了する。
図6は、第2コア222がRAWデータを取得する処理フローの一例を示す。本処理フローは、ステップS508のコア間通信の割り込みに対応する処理ルーチンが呼び出されることで、開始する。
ステップS602において、第2コア222は、コア間通信で受信した撮像関連情報をSDRAM58に記憶し、ステップS604に進む。
なお、本フローのステップS604以降の処理は、コア間通信の受信に同期して行われる必要はない。例えば、当該処理は、コア間通信の割り込みに対応する処理ルーチンで行われる必要はない。第2コア222においてRAWデータを画像処理する準備ができた時点で、ステップS604以降の処理を行ってよい。
ステップS604において、第2コア222は、共有メモリ領域から、RAWデータおよび画像評価値を読み出す。ステップS606において、第2コア222はRAWデータおよび画像評価値をSDRAM58内の他のメモリ領域、例えばワークメモリとして確保されたメモリ領域に記憶してよい。このとき、第2コア222は、RAWデータおよび画像評価値を共有メモリ領域から削除してよい。
ステップS608において、第2コア222は、読み出したRAWデータおよび画像評価値に基づいて画像処理を行い、処理を終了する。このように、第2コア222は、第1コア221が取り込んだカラーバランスに関する画像評価値を共有メモリ領域から読み出して、画像評価値に基づいてRAWデータに画像処理を施す。
図7は、第2コア222による画像処理の詳細な処理フローの一例を示す。すなわち、ステップS608の詳細な処理フローである。
ステップS702において、第2コア222は、第2OS上で動作する前処理コンポーネントを呼び出して、前処理を行う。前処理としては、RAWデータに対する補正処理を含む。例えば、前処理として、撮像素子に関する補正処理、RAWデータに含まれる画素ノイズを除去するノイズ除去処理およびレンズに関する補正処理を例示することができる。前処理としては、後に使用する画像処理パラメータを取得する処理を含んでよい。撮像素子に関する補正処理としては、欠陥画素補正等を例示することができる。レンズに関する補正処理としては、レンズ群21が有する収差を補正する処理を例示することができる。
ステップS704において、第2コア222は、第2OS上で動作する画処理コンポーネントを呼び出して、画処理を行う。具体的には、ステップS702で取得した画処理パラメータに従って、画処理を行う。
本画処理としては、γ補正等の階調変換処理、RAWデータをYCデータに変換する色変換処理、RAWデータを圧縮して圧縮RAWデータを生成するRAW圧縮処理、色ノイズ除去、解像度変換等を例示することができる。また、本画処理としては、赤目補正処理、輪郭強調処理等を含むことができる。YCデータは、撮像素子36が有する複数の光電変換素子のそれぞれに対応して、輝度信号および色差信号を有するデータである。すなわち、RAWデータをYCデータに変換する処理は、色補間処理の一例である。
ステップS706において、第2コア222は、第2OS上で動作する圧縮符号化コンポーネントを呼び出して、圧縮符号化処理を行う。例えば、JPEGファイルを記録するよう設定されている場合、第2コア222はYCデータをJPEG等の画像フォーマットに従って圧縮符号化する処理を行う。
ステップS708において、第2コア222は、第2OS上で動作する画像記録コンポーネントを呼び出して、画像データの記録処理を行う。例えば、JPEGファイルを記録するよう設定されている場合、第2コア222は、ステップS706で得られたJPEGフォーマットの画像データを、外部接続IF56を介して画像ファイルとして外部メモリに記録する。圧縮RAWデータを記録する。また、圧縮RAW画像を記録するよう指定されている場合、第2コア222は、ステップS704で生成した圧縮RAWデータを、外部接続IF56を介して外部メモリに画像ファイルとして記録する。画像の出力先が外部デバイスに指定されている場合、外部接続IF56を介して外部デバイスに出力する。
このように、第2コア222は、共有メモリ領域から読み出したRAWデータに画像処理を施して画像処理済みの画像データを生成し、マルチコアプロセッサの外部の外部メモリに格納する。また、第2コア222は、撮像制御等の固定時間処理をすることなく、RAWデータに画像処理を施すことができる。このため、画像処理された画像データを速やかにユーザに提供することができる。
図8は、画像データを表示する処理フローの一例を示す。本処理は、画像を表示する旨を指示するユーザ操作が操作入力部60になされた場合に、開始される。当該ユーザ操作は、第2コア222によって取得される。
ステップS802において、外部メモリに記録された画像ファイルを表示するよう指定されている場合、第2コア222は、画像ファイルを外部メモリから読み出す。外部デバイスから提供される画像ファイルを表示するよう指定されている場合、第2コア222は、外部接続IF56を介して外部デバイスから画像ファイルを受け取る。画像ファイルのデータは、画像データとしてSDRAM58に記憶される。本ステップでは、第2OS上で動作する画像読み出しコンポーネントを呼び出して、画像ファイル等からの読み出しを行う。
ステップS804において、第2コア222は、第2OS上で動作する画像伸張コンポーネントを呼び出して、SDRAM58に記憶された画像データを伸張する処理を行う。本処理は、例えば圧縮符号化された画像データに対して行われる。例えば、JPEGフォーマットの画像データは、YCデータに復号され、SDRAM58に記憶される。
ステップS806において、第2コア222は、第2OS上で動作する画処理コンポーネントを呼び出して、画処理を行う。画像データが圧縮RAWデータである場合、画処理としては、RAWデータに伸張するRAW伸張処理、γ補正等の階調変換処理、RAWデータをYCデータに変換する色変換処理、色ノイズ除去等を例示することができる。また、YCデータを表示用の解像度に変換する解像度変換を、本画処理の一部として含むことができる。
ステップS808において、第2コア222は、第2OS上で動作する画像表示用コンポーネントを呼び出して、ステップS806で生成したYCデータに基づいて、表示部53に画像を表示する。このように、第2コア222は、撮像制御等のリアルタイム処理をすることなく、画像を表示する処理を行うことができる。このため、ユーザから指定されたファイルを速やかに表示することができる。
なお、画像を表示する旨が指示されると、第2コア222が共有メモリ領域に対する書き込み権を獲得してよい。具体的には、第2コア222は、第2OS用のプライベートメモリ領域だけでなく、共有メモリ領域に対する書き込み権を有する状態に遷移し、第1コア221は、共有メモリ領域に対する書き込み権を有さない状態に遷移してよい。この場合、第1コア221は、第1OS専用のプライベートメモリ領域にのみ書き込み権を有する状態となる。そして、第2コア222は、共有メモリ領域の少なくとも一部のメモリ領域をワークメモリとして使用してよい。
なお、画像を表示する旨が指示された場合、SDRAM58内の共有メモリ領域のサイズを撮像時より小さくして、ワークメモリとして使用するメモリ領域を拡大してよい。例えば、共有メモリ領域の少なくとも一部を開放して、開放したメモリ領域の少なくとも一部をワークメモリとして使用してもよい。ワークメモリは、第2OS専用のプライベートメモリ領域とは別にSDRAM58内に確保されてよく、第2OS専用のプライベートメモリ領域として確保されてもよい。そして、撮像指示があるなどして再生が終了すると、撮像に必要となる予め定められたサイズの共有メモリ領域をSDRAM58内に確保してよい。
図9は、ソフトウェアコンポーネントを更新する処理フローの一例を示す。図7、8に関連して説明したように、第2OS上では、前処理コンポーネントント、画処理コンポーネント、圧縮符号化コンポーネント、画像記録コンポーネント、画像読み出しコンポーネント、画像伸張コンポーネント、画像表示用コンポーネント等のソフトウェアコンポーネントが動作する。すなわち、第2OSでは、処理単位でコンポーネント化されて管理されており、これらのソフトウェアコンポーネントを更新することで、コンポーネント毎に機能を更新することができる。
同様に、第1OS上では、レンズ群21、フォーカルプレーンシャッタ43、絞り装置28およびメインミラー32等のメカ制御、フラッシュ等の閃光装置の制御、撮像素子36の駆動制御、RAWデータ取り込み処理、画像処理用パラメータ情報を収集する処理等が処理単位で管理されていてよい。そして、これらのソフトウェアコンポーネントを更新することで、コンポーネント毎に機能を更新することができる。
本図では、第1OS上のソフトウェアコンポーネントを更新する動作を説明する。本処理フローは、ソフトウェアコンポーネントを更新する旨の指示を取得した場合に、開始される。
ステップS902において、第2コア222は、外部接続IFを介して、新規ソフトウェアコンポーネントを受信して、SDRAM58に記憶する。ステップS904において、第2コア222は、受信した新規ソフトウェアコンポーネントを共有メモリ領域に書き込む。ステップS906において、第2コア222は、新規ソフトウェアコンポーネントを共有メモリ領域に書き込んだ旨を、コア間通信で第1コア221に通知する。
ステップS908において、第1コア221は、共有メモリ領域から新規ソフトウェアコンポーネントを読み出す。ステップS910において、第1コア221は、新規ソフトウェアコンポーネントで、既存のソフトウェアコンポーネントを更新する。ステップS910の処理が完了すると、本処理フローは終了する。
このように、第2コア222は、第2OS用のソフトウェアコンポーネントを共有メモリ領域に書き込む。そして、第1コア221は、第1OS用のソフトウェアコンポーネントを共有メモリ領域から読み出して、第1OSに組み込む。共有メモリへのアクセス機能と、自身のソフトウェアコンポーネントの更新機能とを第1OSに実装することで、高機能の汎用OSから共有メモリとコア間通信を使って第1OSの機能の変更することが可能になる。
なお、以上の説明では第1OSの機能を更新する場合の処理フローについて説明した。しかし、第2OSについても同様に、ソフトウェアコンポーネントを更新することができる。第2OSは汎用OSであるから、第1OSと比較して、例えば赤目処理、被写体認識処理、ユーザインタフェース等の種々のソフトウェアコンポーネントを組み込むことが容易である。撮像装置10によれば、第1コア221で行われる固定時間処理が、第2コア222で行われる処理とは分離されているので、撮像制御等の固定時間処理が考慮されていない汎用のソフトウェアコンポーネントを第2OSに比較的に容易に実装できる場合がある。
図10は、第1コア221から第2コア222へ共有メモリ領域を介してデータを送信する処理フローの一例を示す。本処理フローは、例えば図5のステップS506のように、RAWデータおよび画像評価値を共有メモリ領域に書き込む処理に適用できる。例えば、撮像指示としてのレリーズスイッチが押し下げを検出した場合に、本フローが開始する。
まず、第1コア221の動作について説明する。ステップS1002において、第1コア221は、共有メモリ領域にデータを書き込みできるか否かを判断する。例えば、第1コア221は、第1コア221が共有メモリ情報を獲得している場合に、共有メモリ領域にデータを書き込みできる旨を判断する。
共有メモリ領域にデータを書き込みできない場合、ステップS1004において第2コア222からコア間通信で共有メモリ情報が送信されるのをウェイトする。なお、このウェイト処理は、例えば共有メモリ情報をウェイトするための専用のタスクが実行してよい。すなわち、共有メモリ情報が送信されるのをウェイトしている間、第1コア221は他の処理を実行することができる。第2コア222から共有メモリ情報が送信されると、ステップS1002に処理を移行させる。
共有メモリ領域にデータを書き込みできる場合、ステップS1006において、第1コア221は共有メモリ領域にデータを書き込む。例えば、共有メモリ情報には書き込み可能なメモリ領域の先頭アドレスが設定されており、第1コア221は、当該先頭アドレスからデータを書き出す。書き込みが完了すると、ステップS1008において、第1コア221は、共有メモリ情報を更新する。例えば、第1コア221は、データを書き出した共有メモリ領域の先頭アドレス、データ長等を、共有メモリ情報に書き込む。そして、ステップS1008において、コア間通信で共有メモリ情報を第2コア222に送信する。
ステップS1010において、第1コア221は、撮像装置10が撮像動作を終了するか否かを判断する。例えば、撮像を終了する旨のユーザ操作を検出した場合に、撮像動作を終了すると判断する。撮像装置10が撮像動作を終了する場合、本処理フローを終了する。撮像動作を終了しない場合、ステップS1002に処理を移行する。
次に、第2コア222の動作を説明する。本モードに遷移した場合、ステップS1012において、共有メモリ情報をコア間通信で第1コア221に送信する。続いて、ステップS1014において、第2コア222は、共有メモリ情報が通信されるのをウェイトする。ステップS1004と同様、本処理も、ウェイトするための専用のタスクが実行してよい。
第1コア221から共有メモリ情報が送信されると、ステップS1016において、第2コア222は共有メモリ領域からデータを読み出す。例えば、共有メモリ情報に含まれる書き出しアドレスを参照して、データを読み出してよい。第2コア222は、読み出したデータをSDRAM58内の他のメモリ領域に記憶して、読み出したデータを共有メモリ領域から削除してよい。なお、第2コア222は、読み出したデータを他のメモリ領域に記憶せずに、データが共有メモリ領域に記憶されたままにしてもよい。この場合、第2コア222は、書き込み可能な先頭アドレスとして、データ長で示されるデータの最終アドレスの次のアドレスを設定してよい。
ステップS1018において、第2コア222は、撮像装置10が撮像動作を終了するか否かを判断する。撮像装置10が撮像動作を終了する場合、本処理フローを終了する。撮像動作を終了しない場合、ステップS1102に処理を移行する。
本処理は、撮像装置10が撮像動作をしている間、継続する。この期間では、第1コア221が共有メモリ領域に対する書き込み権を獲得した状態にあり、第2コア222は共有メモリ領域に対する書き込み権を有しない。一方、撮像装置10が撮像動作を終了すると、第2コア222が共有メモリ領域に対する書き込み権を獲得した状態に遷移する。このように、第1コア221が共有メモリ領域に対して書き込み動作のみが可能な動作モードで動作している場合に、第2コア222は、共有メモリ領域に対して読み出し動作のみが可能な動作モードで動作する。
本処理フローで説明した場合とは異なり、共有メモリ領域に対して第2コア222が書き込み権を獲得し、第1コア221が読み出し権を有する状態としては、上述したソフトウェアコンポーネントの機能を更新するときの状態を例示することができる。この状態の動作は、本フローの第1コア221の動作として説明した処理を第2コア222が実行し、本フローの第2コア222の動作として説明した処理を第1コア221が実行することで実現できる。すなわち、第2コア222が共有メモリ領域に対して書き込み動作のみが可能な動作モードで動作している場合に、第1コア221は、共有メモリ領域に対して読み出し動作のみが可能な動作モードで動作する。一方、図8に関連して説明したように、画像の表示処理を実行する場合、第2コア222が共有メモリ領域に対するアクセス権を有し、第1コア221は共有メモリ領域に対するアクセス権を有さない状態に遷移してよい。
以上に説明したように、一方のコアが共有メモリ領域に対する書き込み権を有する場合、他方のコアは書き込み権を有さない。このため、共有メモリ領域に対するアクセスをシンプルな形で管理することができる。
以上の説明において、第2コア222が第2OSに従って、画像処理を実行するとした。しかし、撮像装置10は画像処理を主として担う画像処理エンジンを有してよい。この場合、第2コア222は、画像処理エンジンにRAWデータ等の画像データを渡して、画像処理エンジンに画像処理をさせるべく画像処理エンジンを制御してよい。
本実施形態の撮像装置10に関連して説明した処理は、撮像装置10の各部、例えばSoC51等が、プログラムに従って動作することにより、実現することができる。すなわち、当該処理を、いわゆるコンピュータ装置によって実現することができる。コンピュータ装置は、上述した処理の実行を制御するプログラムをロードして、読み込んだプログラムに従って動作して、当該処理を実行してよい。コンピュータ装置は、当該プログラムを記憶しているコンピュータ読取可能な記録媒体を読み込むことによって、当該プログラムをロードすることができる。
本実施形態において、撮像装置10を取り上げて電子装置の一例を説明した。撮像装置としては、レンズ交換式の一眼レフカメラ、コンパクトデジタルカメラ、ミラーレス一眼カメラ、ビデオカメラ、撮像機能付きの携帯電話機、撮像機能付きの携帯情報端末、撮像機能付きのゲーム機器等の娯楽装置、スキャナ、ファクシミリ等、撮像機能を有する機器を適用の対象とすることができる。また、電子装置は、テレビ、ビデオ、デジタルフォトフレーム、プロジェクタ装置、ゲーム機器等の娯楽装置等の電子画像装置として実現されてよい。また、電子装置は、録音装置等の電子音声装置として実現されてよい。
以上、本発明を実施の形態を用いて説明したが、本発明の技術的範囲は上記実施の形態に記載の範囲には限定されない。上記実施の形態に、多様な変更または改良を加えることが可能であることが当業者に明らかである。その様な変更または改良を加えた形態も本発明の技術的範囲に含まれ得ることが、特許請求の範囲の記載から明らかである。
特許請求の範囲、明細書、および図面中において示した装置、システム、プログラム、および方法における動作、手順、ステップ、および段階等の各処理の実行順序は、特段「より前に」、「先立って」等と明示しておらず、また、前の処理の出力を後の処理で用いるのでない限り、任意の順序で実現しうることに留意すべきである。特許請求の範囲、明細書、および図面中の動作フローに関して、便宜上「まず、」、「次に、」等を用いて説明したとしても、この順で実施することが必須であることを意味するものではない。