JP2013211724A - 撮像装置 - Google Patents

撮像装置 Download PDF

Info

Publication number
JP2013211724A
JP2013211724A JP2012081209A JP2012081209A JP2013211724A JP 2013211724 A JP2013211724 A JP 2013211724A JP 2012081209 A JP2012081209 A JP 2012081209A JP 2012081209 A JP2012081209 A JP 2012081209A JP 2013211724 A JP2013211724 A JP 2013211724A
Authority
JP
Japan
Prior art keywords
image
image processing
processing circuit
data
task
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2012081209A
Other languages
English (en)
Inventor
Toshihisa Kuroiwa
壽久 黒岩
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nikon Corp
Original Assignee
Nikon Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nikon Corp filed Critical Nikon Corp
Priority to JP2012081209A priority Critical patent/JP2013211724A/ja
Publication of JP2013211724A publication Critical patent/JP2013211724A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Television Signal Processing For Recording (AREA)
  • Studio Devices (AREA)

Abstract

【課題】 タスクの設計が比較的容易となるマルチプロセッサの撮像装置を提供する。
【解決手段】 それぞれプロセッサを内蔵する第1画像処理回路および第2画像処理回路は、非対称型マルチプロセッサに対応したリアルタイムOSがそれぞれ実装されるとともに、リアルタイムOS上で実行されるタスクにより画像のデータに画像処理を施す。また、第1画像処理回路および第2画像処理回路はそれぞれアドレス空間を有し、各々のアドレス空間にはいずれも第1画像処理回路および第2画像処理回路の資源がマップされている。
【選択図】 図1

Description

本発明は、撮像装置に関する。
近年、デジタルカメラ等の撮像装置では、イメージセンサの高画素化に伴い、画像処理回路の処理能力が不足する傾向にある。そのため、複数の画像処理回路を用いて並列処理により高速な画像処理を実現する撮像装置も提案されている(例えば特許文献1参照)。
また、撮像装置を含む電子機器では、各部の制御に必要となるプログラムを効率的に実行するためにリアルタイムオペレーティングシステム(以下、RTOSと表記する)が用いられており、そのRTOSの管理の下で複数のプログラム(タスク)を並列に実行するというマルチタスク処理が行われている。上述した複数の画像処理回路には、それぞれマイクロプロセッサ(以下、CPUと表記する)が内蔵されているため、マルチプロセッサの撮像装置ということになり、上述したマルチタスク処理をマルチプロセッサの場合に拡張する必要がある。
特開2008−219319号公報
一般に、マルチプロセッサの撮像装置でRTOSによる並列処理を行う場合、1プロセッサの撮像装置と比べて、プロセッサ間で通信やデータの受け渡しが生じる点や、プロセッサ間で資源へのアクセスが競合しないようにするなどの点で相違がある。そのため、従来のマルチプロセッサの撮像装置では、各タスクの設計が非常に煩雑であった。
一の態様の撮像装置は、被写体の像を撮像した画像のデータを出力する撮像部と、それぞれプロセッサを内蔵する第1画像処理回路および第2画像処理回路と、第1画像処理回路および第2画像処理回路を接続するバスと、を備える。第1画像処理回路および第2画像処理回路は、非対称型マルチプロセッサに対応したリアルタイムOSがそれぞれ実装されるとともに、リアルタイムOS上で実行されるタスクにより画像のデータに画像処理を施す。また、第1画像処理回路および第2画像処理回路はそれぞれアドレス空間を有し、各々のアドレス空間にはいずれも第1画像処理回路および第2画像処理回路の資源がマップされている。
上記の一の態様において、静止画像の連写撮影のときに、第1画像処理回路および第2画像処理回路は、それぞれ異なるフレームに対して画像処理のタスクを独立に実行してもよい。そして、第2画像処理回路で実行される画像処理のタスクは、第1画像処理回路で実行される画像処理のタスクを流用したものでもよい。
上記の一の態様において、動画像の撮影のときに、第1画像処理回路は、画像を表示装置に表示出力するタスクと、動画像のデータを圧縮して得た動画像ファイルを不揮発性の記録媒体に記録するタスクとを実行してもよい。また、第2画像処理回路は、動画像を圧縮するタスクを実行してもよい。
各々の画像処理回路は、非対称型マルチプロセッサに対応したリアルタイムOSによりそれぞれタスクを実行する。また、各々の画像処理回路は、別の画像処理回路の資源に直接アクセス可能である。よって、各々の画像処理回路が実行するタスクは1プロセッサのものを流用でき、タスクの設計は比較的容易となる。
一の実施形態での撮像装置の構成例を示す図 第1画像処理回路および第2画像処理回路の構成例を示すブロック図 メモリマップの一例を模式的に示す図 本実施形態における画像処理回路のソフトウェア構成例を示す図 静止画撮影モードの単写撮影を行うときのタスクの一例を示す図 静止画撮影モードで連写撮影を行うときのフレームの分配例を示す図 スレーブ側のJPEG画像ファイルを記録媒体に記録する場合の概要図 スレーブ側のフリーズ画像を表示部に表示させる場合の概略図 静止画撮影モードの連写撮影を行うときのタスクの一例を示す図 動画撮影モードにおける電子カメラの動作例1の概略図 動画撮影モードの動作例1でのタスクの一例を示す図 動画撮影モードの動作例2でのタスクの一例を示す図
<撮像装置の構成例の説明>
図1は、一の実施形態での撮像装置の構成例を示す図である。本実施形態では撮像装置の一例として、静止画撮影モードおよび動画撮影モードを選択可能な電子カメラの例を説明する。
電子カメラは、撮影光学系11と、撮像部12と、データ分配器13と、第1画像処理回路14および第2画像処理回路15と、シリアルバス16と、第1メモリ17および第2メモリ18と、第1フラッシュメモリ19および第2フラッシュメモリ20と、表示部21と、外部I/Fコネクタ22と、メディアコネクタ23と、レリーズ釦24および操作釦25と、音声信号処理部27とを有している。なお、撮像部12と音声信号処理部27は、データ分配器13に接続されている。
撮影光学系11は、例えばズームレンズやフォーカスレンズを含む複数のレンズで構成されている。簡単のため、図1では撮影光学系11を1枚のレンズで図示する。
撮像部12は、撮像素子31と、アナログフロントエンド(AFE)部32と、不図示のタイミングジェネレータ(TG)部とを有している。撮像素子31は、撮影光学系11を通過した光束による被写体の像を撮像するデバイスである。この撮像素子31の画像信号出力はAFE部32に接続されている。本実施形態の撮像素子31は、順次走査方式(またはインターレース方式)で画像信号を読み出す固体撮像素子(例えばCCD)であってもよく、XYアドレス方式で画像信号を読み出す固体撮像素子(例えばCMOS)であってもよい。
また、撮像素子31の受光面には、複数の受光素子がマトリクス状に配列されている。そして、撮像素子31の各受光素子にはカラーフィルタが配置されている。例えば、本実施形態では赤色(R)、緑色(G)、青色(B)のカラーフィルタが公知のBayer配列にしたがって各受光素子に配置される。そのため、撮像素子31の受光素子は、カラーフィルタでの色分解によって各色に対応する画像信号を出力する。これにより、撮像素子31は、撮影時にカラーの画像を取得できる。
ここで、撮像素子31の基本動作は、各画素に電荷を蓄積する電荷蓄積動作と、蓄積した電荷を画素から移動させる電荷読み出し動作の2つに大別される。また、各画素に蓄積される電荷には、意図せぬ受光や暗電流により生成された不要電荷(ノイズ)と、被写体像の光束から生成された信号電荷との2種類がある。信号電荷に不要電荷を混入させないためには、撮像素子31による撮像時において、不要電荷を排出した後に被写体像の光束を受光する状態で撮像素子31を電荷蓄積動作に移行させればよい。これにより、各画素に信号電荷のみを蓄積していくことができる。このため、撮像素子31の撮像は、「不要電荷の排出→信号電荷の蓄積(露光動作とも称する)→信号電荷の読み出し(画像信号の出力)」というシーケンスで行われる。このうち、信号電荷の蓄積期間がいわゆる露光時間(シャッター秒時)となる。また、上述した撮像素子31の撮像は、不図示のTG部からの制御によって行われる。
また、撮像部12全体としての撮像動作には、撮像素子31が露光動作と信号電荷の読み出し動作の2つを単発で行う第1モード(one-shotモードとも称する)と、撮像素子31が上述した2つの動作を所定の時間周期(フレーム周期)で自動的に繰り返し行う第2モード(連続モードとも称する)とがある。この第1モードと第2モードの切り替えは、一般に不図示のSIO(シリアルI/O)を介してTG部のレジスタを書き換えることにより行われる。
上述の第1モードは、電子カメラで静止画の撮影を行う場合に利用される。第1モードの場合、露光動作と信号電荷の読み出し動作が一般に外部からTG部をそれぞれ操作することによって行われるため、それらの操作を行うタイミングによって露光時間を含む撮像動作のタイミングが決定される。このことは、静止画の撮影がユーザの操作によって非同期に起こることに対応している。なお、TG部に対する操作としては、上述したシリアル通信の他、後述するGPIO部49を利用した外部信号による操作も含まれる。また、第1モードで出力される画像信号は、一般に撮像素子31のフル解像度のものである。電子カメラによる静止画の撮影では、この画像信号から生成した画像を記録している。
一方、上述の第2モードでは、予めTG部のレジスタに設定されたパラメータによって撮像素子31の撮像が行われる。第2モードでは、露光時間を含めた露光のタイミングや画像信号の出力タイミングもその設定に応じて固定され、また露光時間は上述したフレーム周期以下に限定されるという制約がある。その代わりに、第2モードでは、一定の周期で連続かつ自動的に画像信号が出力されるため、電子カメラの動画撮影や静止画撮影前のライブビュー(LiveView)に適している。第2モードの場合、出力される画像信号の解像度とフレーム周期の組み合わせが一般に複数あって、かかる組み合わせの変更はTG部のレジスタを書き換えることで行われる。
第2モードでの画像信号の解像度は、利用目的に応じて選択される。例えば、VGA(640×480画素)サイズのLCDパネルでライブビューを行う場合、VGAサイズよりも若干大きい解像度の画像信号が撮像部12から出力されるように設定する。この場合、必要以上に大きな画像信号を撮像部12から出力させないことで、電子カメラのライブビュー時の消費電力を抑制できる。一方、フルHD(1920×1080画素)サイズの動画を撮影する場合、フルHDサイズより若干大きい解像度の画像信号が撮像部12から出力されるように設定する。
また、第2モードでのフレーム周期も、利用目的に応じて選択される。例えば、60fpsの動画を撮影する場合、60fpsで撮像部12から画像信号が出力されるように設定する。30fpsの動画を撮影する場合、30fpsで撮像部12から画像信号が出力されるように設定する。例えば、AFによるピント合わせを高速に行おうとする場合、30fpsよりも60fpsで画像信号を出力する方が有利である。
電子カメラの静止画撮影モードでは、電子カメラの動作が「ライブビュー→静止画撮影→ライブビュー」と変化する。これに対応して、撮像部12の撮像動作を「第2モード→第1モード→第2モード」のように切り替える必要がある。単写撮影の場合、撮像部12の撮像動作は、第1モードの撮像動作が1フレーム分だけ行われた後に、第2モードの撮像動作に戻る。連写撮影の場合、撮像部12の撮像動作は、第1モードの撮像動作が連写のフレーム数だけ続けて行われた後に、第2モードの撮像動作に戻る。
一方、電子カメラの動画撮影モードでは、上述したような撮像部12の撮像動作の切り替えはなく、撮像部12はその動画の仕様に合った解像度とフレーム周期の組み合わせで第2モードの撮像動作を継続する。
図1に戻って、AFE部32は、撮像素子31から出力される画像信号にアナログ信号処理を施す回路である。このAFE部32は、相関二重サンプリングや、画像信号のゲインの調整や、画像信号のA/D変換を行う。AFE部32による信号処理後のデジタル画像データは、データ分配器13を介して第1画像処理回路14または第2画像処理回路15に送られる。なお、AFE部32から出力される画像データは、色補間前のBayer配列構造のRGB画像データ(以下、Bayerデータと称する)である。また、撮像素子31がCMOSであるときには、撮像素子31にAFE部32やTG部(不図示)が内蔵されていてもよい。
データ分配器13は、1入力2出力のセレクタであって、その2つの出力は第1画像処理回路14と第2画像処理回路15にそれぞれ接続されている。データ分配器13は、AFE部32から出力される画像データを第1画像処理回路14と第2画像処理回路15に出力する。また、データ分配器13は、音声信号処理部27から出力される音声データを第1画像処理回路14と第2画像処理回路15に出力する。
第1画像処理回路14および第2画像処理回路15は、画像データに所定の画像処理を施すための画像処理用プロセッサであり、それぞれ1つのLSIで構成されることが多い。図2に示すように、本実施形態の第1画像処理回路14と第2画像処理回路15は同じ回路構成であって、データ分配器13に対して並列に接続されている。
また、第1画像処理回路14と第2画像処理回路15は、外部のシリアルバス16によって相互に接続されている。第1画像処理回路14には、第1メモリ17、第1フラッシュメモリ19、表示部21、外部I/Fコネクタ22、メディアコネクタ23、レリーズ釦24および操作釦25がそれぞれ接続されている。第2画像処理回路15には、第2メモリ18、第2フラッシュメモリ20がそれぞれ接続されている。なお、本実施形態のシリアルバス16は、第1画像処理回路14から第2画像処理回路15へデータを送信するバスと、第2画像処理回路15から第1画像処理回路14へデータを送信するバスとの2つからなる双方向性のバスである。
第1画像処理回路14はマスタの画像処理回路として動作し、撮影モードにおいて常時動作状態にある。一方、第2画像処理回路15はスレーブの画像処理回路として動作する。電子カメラの画像処理の負荷が比較的低いとき(例えば、静止画撮影モードで単写撮影を行う場合や、再生モードの場合)には、第2画像処理回路15は電源オフの状態または低消費電力の状態となって動作を停止している。そして、電子カメラの画像処理の負荷が比較的高いとき(例えば、静止画撮影モードで連写を行う場合や動画撮影モードの場合)には、第2画像処理回路15が動作状態となって、第1画像処理回路14と第2画像処理回路15によって並列に撮影の処理が行われる。なお、第2画像処理回路15のオン/オフの制御は、第1画像処理回路14によって行われる。
第1メモリ17および第2メモリ18は、大容量の揮発性メモリであって、通常はDRAMが使用される。これらのメモリは画像データ(一般に複数フレーム)を一時的に記憶する他、プログラム中で使用される変数を記憶したり、プログラムを実行する際のスタックとして使用される。第1フラッシュメモリ19および第2フラッシュメモリ20は、不揮発性のメモリであって、後述するリアルタイムオペレーティングシステム(RTOS)のカーネル、デバイスドライバ、ミドルウェア、アプリケーションなどのプログラム類、更には、ユーザによるカメラの設定情報等を記憶するために使用される。
表示部21は、液晶パネルや有機ELパネル等の表示装置であって、例えば電子カメラの筐体背面に配置される。外部I/Fコネクタ22は、所定の通信規格のインターフェース(例えばUSB)を備えた外部機器(パーソナルコンピュータなど)を接続するために使用される。また、メディアコネクタ23は、不揮発性の記録媒体34を接続するために使用される。なお、メディアコネクタ23に接続される記録媒体34は、例えば、ハードディスクや、半導体メモリを内蔵したメモリカードである。
レリーズ釦24は、静止画撮影モードと動画撮影モードで使用される釦であり、自動焦点調節(Automatic Focusing:AF)などの撮影準備動作の開始を指示するための半押し信号と、撮影の開始を指示するための全押し信号の2つを発生する。また、操作釦25は、ユーザによって操作される様々な釦をまとめて表したもので、例えば、撮影モードの切り替えを行うための釦などが含まれる。
音声信号処理部27は、電子カメラの外部音声を集音するマイクと、マイクで収集した音声信号を増幅するアンプと、音声信号のレベルを一定に保つオートレベル制御部と、A/D変換器と、デジタル化された音声データを出力するシリアルデータ出力部とを有している。
続いて、図2を参照しつつ、第1画像処理回路14と第2画像処理回路15の構成例を詳述する。なお、以下の説明では、第1画像処理回路14の符号nの要素を指すときは「n_1」と表記し、第2画像処理回路15の符号nの要素を指すときは「n_2」と表記する。
まず、第1画像処理回路14の構成を説明する。第1画像処理回路14は、画像処理部41_1と、静止画圧縮部42_1と、動画圧縮部43_1と、DMAC(Direct Memory Access Controller)44_1と、CPU45_1と、割込コントローラ46_1と、内蔵メモリ47_1と、表示コントローラ48_1と、GPIO(General Purpose Input/Output)部49_1と、メモリコントローラ50_1と、フラッシュメモリコントローラ51_1と、外部I/Fコントローラ52_1と、メディアコントローラ53_1と、音声I/F54_1と、内部バス55_1と、バスブリッジ56_1とを有している。第1画像処理回路14の各部は、内部バス55_1に接続されている。なお、内部バス55_1は、通常パラレルバスであり、例えば公知のオンチップバス(AMBA AXIやOCP(Open Core Protocol)等)でよい。
画像処理部41_1は、独立した回路であるプリプロセス部とポストプロセス部(いずれも不図示)を内部に有しており、入力される画像データに画像処理(プリプロセス、ポストプロセス)を施す。ここで、プリプロセスとは、画像の補正を主体とする処理であって、入力される画像データに対して、欠陥画素補正、シェーディング補正、OBクランプ処理などの信号処理を施す。また、画像処理部41_1は、プリプロセスを実行する傍ら、その補正された画像データを用いて、オートホワイトバランス(AWB)評価値、AF評価値、自動露出(Auto Exposure:AE)評価値をそれぞれ生成する。
また、ポストプロセスでは、プリプロセス後の画像データに対して、カラー処理を主体とする現像処理(例えば、色補間処理、階調変換処理、ホワイトバランス調整処理、ノイズ除去処理、輪郭強調処理、色変換処理等)を施す。上述した画像処理部41_1での画像処理によって、RGBのBayerデータが、所望の色再現がなされたYCbCr形式の画像データ(以下、YCbCrデータと称する)に変換される。画像データに対して圧縮処理を施したり、また画像データを表示部21に表示したりする場合は、このYCbCrデータが用いられる。
ここで、静止画の撮影時において、画像処理部41_1は、撮影された静止画のデータから、主画像、フリーズ画およびサムネイルをそれぞれ生成する。これらはいずれもYCbCrデータの画像である。主画像は主たるデータとして記録される画像(通常は高解像度)のことである。フリーズ画は、撮影結果の確認のために撮影直後に表示部21に表示される画像である。サムネイルは、画像の検索性を高めるために主画像とともに画像ファイルに記録される縮小画像である。なお、スルー画およびフリーズ画は、例えば640×480画素のサイズであり、サムネイルは、例えば160×120画素のサイズである。画像処理部41_1は、内部にある不図示の解像度変換回路を利用してこれらの小解像度画像を生成する。
静止画圧縮部42_1は、静止画撮影モードにおいて、撮影された静止画のYCbCrデータに対して例えばJPEG形式の圧縮処理を施す。
動画圧縮部43_1は、動画撮影モードにおいて、記録用の動画像のYCbCrデータに対して、フレーム間予測を用いた圧縮処理を施す。例えば、動画圧縮部43_1は、H.264(MPEG−4 AVC(Part10))の動画圧縮規格を用いて動画像の圧縮処理を行う(なお、H.264での動画像の符号化については後述する)。
DMAC44_1は、ハードウェア的にデータ転送を行う回路であり、CPU45_1のプログラムによってデータを転送する場合と比べて高速なデータ転送を実現する。DMAC44_1は、単位転送データ量ごとに、ソースアドレスおよびデスティネーションアドレスをシフトさせながらデータの転送を行う。なお、DMAC44_1は、上述した画像処理部41_1や静止画圧縮部42_1や動画圧縮部43_1、あるいは後述するいくつかの回路ブロックに内蔵されていてもよい。
CPU45_1は、電子カメラの機能を実現するためのアプリケーションプログラムを実行し、また実行したアプリケーションプログラムに基づいて電子カメラ内各部の動作を制御する。例えば、CPU45_1は、AF評価値を用いて公知のコントラスト検出方式によるAFや、AE評価値を用いたAEを行う。また、CPU45_1は、表示部21への画像の表示処理や、記録媒体34への画像ファイルの記録処理などを実行する。AFやAEといったこれらの処理は、CPU45_1が実行する上述のアプリケーションプログラムとして実装される。アプリケーションプログラムは、それぞれの処理に対応したタスクと呼ばれる処理単位に分割可能であり、タスクは、RTOS(カーネル)の管理の下で複数並列に実行させることが可能である。複数のタスクの実行順序はその優先順位に依存しており、RTOSは実行可能状態にある複数のタスクの中で最も優先順位の高いタスクを実行させる。一例として、タスクAの実行中にそれよりも優先順位の高いタスクBが実行可能状態になった場合、実行中のタスクAが中断されてタスクBが実行される。その後、タスクBの処理が終了するか待ち状態になると、RTOSは一時中断していたタスクAの処理を再開させる。
割込コントローラ46_1は、各部からの割り込み処理要求を受信して、その優先度に応じてCPU45_1に割り込み信号を伝達するという交通整理の役割を果たす。割込コントローラ46_1の働きによって、CPU45_1は1つの割り込み入力端子で複数の割り込み要因に対応することができる。
内蔵メモリ47_1は、CPU45_1がプログラムを実行するときにデータを格納するための高速メモリであって、例えばSRAMが使用される。内蔵メモリ47_1は主記憶である第1メモリ17よりも高速にアクセスすることができる。なお、CPU45_1は、アプリケーションプログラムの一部を内蔵メモリ47_1に常駐させ、それらの処理を高速に行ってもよい。
表示コントローラ48_1には、表示部21が接続されている。表示コントローラ48_1は、上述したスルー画やフリーズ画のデータを取り込んで、それを表示部21に表示する。
GPIO部49_1は、例えば、操作釦25やレリーズ釦24からの信号を入力するとともに、電子カメラ内の周辺デバイスへそれら入力信号に対する制御信号などを出力する。ここで、上記の周辺デバイスとは、例えば、撮影光学系11内のレンズやメカシャッタ、絞りを駆動するためのモータドライバICや、フラッシュ装置に含まれる充電ICおよび発光制御用IGBTや、電子カメラの状態を表示するためのLEDなどである(なお、周辺デバイスの図示はいずれも省略する)。
メモリコントローラ50_1には、第1メモリ17が接続されている。メモリコントローラ50_1は、第1メモリ17に対してデータの読み出しや書き込みを行う。
フラッシュメモリコントローラ51_1には、第1フラッシュメモリ19が接続されている。フラッシュメモリコントローラ51_1は、第1フラッシュメモリ19に対してデータの読み出しや書き込みを行う。
外部I/Fコントローラ52_1には、外部I/Fコネクタ22が接続されている。外部I/Fコントローラ52_1は、外部I/Fコネクタ22に接続された外部機器(パーソナルコンピュータなど)とのデータ通信を、所定の通信規格のインターフェース(例えばUSB)を用いて行う。
メディアコントローラ53_1には、メディアコネクタ23が接続されている。メディアコントローラ53_1は、メディアコネクタ23に接続された記録媒体34に対してデータの読み出しや書き込みを行う。
音声I/F54_1は、データ分配器13から送られた音声データを受信する。なお、音声I/F54_1には、例えばISなどの標準インターフェースが用いられる。
バスブリッジ56_1は、内部バス55_1とシリアルバス16と接続されている。バスブリッジ56_1は、内部バス−外部シリアルバス間のプロトコル変換を行う。これにより、第1画像処理回路14の内部バス55_1からのアクセス(READ/WRITE)要求は、パケット(コマンド、アドレス、WRITEデータ)としてシリアルバス16に伝達される。逆に、シリアルバス16から送られたパケット(レスポンス、READデータ)が第1画像処理回路14の内部バス55_1に伝達される。したがって、第1画像処理回路14のCPU45_1は、バスブリッジ56_1の働きによって、第1画像処理回路14と第2画像処理回路15の各資源に対して全く同一のプロトコルでアクセスすることができる。第1画像処理回路14の資源に対するアクセスと第2画像処理回路15の資源に対するアクセスとではアクセスに必要な時間が異なり、第2画像処理回路15の資源に対するアクセスの方がより時間がかかる。また、第1画像処理回路14のDMAC44_1からのアクセスも上述した説明と同様である。なお、第2画像処理回路15のCPU45_2とDMAC44_2から上述した各資源に対するアクセスも同様であり、この場合には第1画像処理回路14の資源に対するアクセスの方がより時間がかかることになる。
次に、第2画像処理回路15の構成を説明する。第2画像処理回路15については第1画像処理回路14との相違点のみ説明し、重複する部分の説明はいずれも省略する。本実施形態の第2画像処理回路15では、メモリコントローラ50_2に第2メモリ18が接続され、フラッシュメモリコントローラ51_2に第2フラッシュメモリ20が接続される。また、表示コントローラ48_2、GIPO部49_2、外部I/Fコントローラ52_2、メディアコントローラ53_2は、接続される外部デバイスが無いために、いずれも低消費電力のまま動作しないように設定されている。
ここで、第1画像処理回路14のアドレス空間には、第1画像処理回路14の資源と第2画像処理回路15の資源とがそれぞれマップされている。同様に、第2画像処理回路15のアドレス空間には、第1画像処理回路14の資源と第2画像処理回路15の資源とがそれぞれマップされている。これらの資源には、それぞれの画像処理回路の内部資源の他に、外部に接続された第1メモリ17および第2メモリ18の資源や、第1フラッシュメモリ19および第2フラッシュメモリ20の資源も含まれる。
図3は、第1画像処理回路14と第2画像処理回路15のメモリマップの一例を模式的に示している。第1画像処理回路14の資源としては、第1メモリ17、第1フラッシュメモリ19、内蔵メモリ47_1、Peripheral_1などがある。また、第2画像処理回路15の資源としては、第2メモリ18、第2フラッシュメモリ20、内蔵メモリ47_2、Peripheral_2などがある。なお、上述した「Peripheral」とは、各画像処理回路において内蔵メモリ47を除く内部資源を総称したものである。例えば、「Peripheral」と記載されたアドレス領域には、画像処理部41、静止画圧縮部42等の各レジスタや、動画圧縮部43に内蔵されているバッファメモリや、表示コントローラ48、メディアコントローラ53の各FIFO等がマップされている。なお、図3の例では、第1画像処理回路14のアドレス空間の上位に第2画像処理回路15の資源がマップされており、第2画像処理回路15のアドレス空間の上位に第1画像処理回路14の資源がマップされている。
第1画像処理回路14と第2画像処理回路15はそれぞれ、バスブリッジ56とシリアルバス16の機能を利用して、コマンド、アドレス、データ、レスポンス等のパケットを接続先の画像処理回路に伝達することができる。そして、各々の画像処理回路は、各々のメモリマップに従って、自己の資源のみならず接続先の画像処理回路の資源に直接アクセスすることができる。例えば、第1画像処理回路14は、第1画像処理回路14のメモリマップに従って、第2画像処理回路15に接続された第2メモリ18上の画像のデータに直接アクセスすることができる。逆に、第2画像処理回路15は、第2画像処理回路15のメモリマップに従って、第1画像処理回路14に接続された第1メモリ17上の画像のデータに直接アクセスすることができる。
すなわち、本実施形態では、転送元の画像処理回路に接続されたメモリ上に記憶されている画像データを、転送先の画像処理回路が直接読み出して処理するという動作を行うことができる。例えば、第1画像処理回路14のDMAC44_1は第2画像処理回路15に接続された第2メモリ18上に記憶されているフリーズ画のデータを直接読み出し、それを第1画像処理回路14内の表示コントローラ48_1に転送して表示させることができるし、同じく第2メモリ18上に記憶されているJPEG画像ファイル(後述)のデータを直接読み出し、それを第1画像処理回路14内のメディアコントローラ53_1に転送して記録媒体34に記録させることができる。すなわち、それらのデータを転送先である第1画像処理回路14に接続された第1メモリ17に一旦移動(あるいはコピー)するという、従来の電子カメラで行われていた動作が不要になる。そのため、本実施形態では、第1画像処理回路14と第2画像処理回路15の間で画像データの転送が行われる場合でも、転送先の画像処理回路に接続されたメモリへの余計な書き込みが発生しないという利点がある。
したがって、転送先の画像処理回路に接続されたメモリの帯域が余分に消費されることがないし、画像データのメモリ間移動(あるいはコピー)にかかっていた時間も発生しないので処理時間(あるいはLatency)が短縮される。
また、第1画像処理回路14と第2画像処理回路15が並列に処理を実行するため、互いに通信を行う場合、良く知られたシリアルポートを利用してデータを送受信することもできるが、上述したシリアルバスを利用して通信を行ってもよい。通信元から送信するデータは、通信先の画像処理回路のCPU45が高速に読み出せるように、通信先の画像処理回路にある内蔵メモリ47に書き込むとよい。また、データが送信されたことを通信先の画像処理回路に伝えるには、画像処理回路の外部端子に割り当てられているパラレルポートと割り込み信号を用いて割り込みを行うこともできるが、上述したシリアルバスを利用してもよい。この場合は、通信元の画像処理回路(CPU45)が、シリアルバスを通じて通信先の画像処理回路の内部にある割り込みコントローラ46のレジスタに直接書き込みを行って、通信先のCPU45に割り込みを発行する。
また、接続先の画像処理回路の資源を別の画像処理回路が不用意にアクセスしたことによって誤動作が起こらないよう、画像処理回路は、一部の資源については別の画像処理回路からアクセスができないようにするとよい。例えば、外部からアクセス可能なアドレスの範囲に制限を設け、アクセスが制限されている範囲のアドレスが別の画像処理回路からアクセスされたときは、アクセス元の画像処理回路にエラーのレスポンスを返すようにする。なお、上述したアドレス範囲の制限機能は、例えばバスブリッジ56に実装される。
(画像処理回路のソフトウェア構成例)
続いて、図4を参照しつつ、本実施形態における画像処理回路のソフトウェア構成例について説明する。なお、図4に示すソフトウェアは、CPU45_1,45_2によって実行される。
第1画像処理回路14および第2画像処理回路15のハードウェア層(CPUコアや周辺デバイス)の上には、ソフトウェア・プラットフォームが構築される。そして、このソフトウェア・プラットフォームの上に、カメラの機能を実現する様々なアプリケーションプログラムを含むアプリケーション層が置かれている。
図4に示すソフトウェア・プラットフォームは、ミドルウェア、RTOS、デバイスドライバなどからなっている。ミドルウェアは、ファイルシステム(FAT)やネットワークのプロトコルスタック(TCP/IP等)など共通に利用されるソフトウェアをまとめたものである。その他に、これらのミドルウェアは、電子カメラで必要とされる基本的な処理をAPI(Application Program Interface)として提供する関数を含んでいてもよい。カメラで必要とされる基本的な処理をAPIとして用意することにより、アプリケーションプログラムの作成が容易になるとともに、ソフトウェアの再利用も促進される。
RTOSのカーネルは、アプリケーションプログラムをタスクと称する処理単位で複数並列に実行させる。RTOSのカーネルは、割り込みハンドラやタスクからのシステムコールによってタスクの状態を変更する。タスクの状態が変更されると、カーネル内のタスクスケジューラが働いて次に実行させるタスクが決定される(スケジューリング)。
タスクの実行順序は、タスクの優先順位によって決まり、RTOSは常に最も優先順位の高いタスクを実行させる。一例として、タスクAの実行中にそれよりも優先順位の高いタスクBが実行可能状態になった場合、実行中のタスクAが中断されてタスクBが実行される。その後、タスクBの処理が終了するか待ち状態になると、RTOSはその時タスクAよりも優先順位の高いタスクがなければ一時中断していたタスクAの処理を再開する。複数のタスクが実行可能状態にある場合、それらの優先順位が変わらなければ、最も優先順位の高いタスクから順に実行されていくことになる。しかし、上述したように新たなタスクが実行可能状態になるなど、タスクの状態が変化した場合にはタスクスケジューリングが行われるので、上述したようにタスクの実行順序が変化する。
また、本実施形態で使用しているRTOSは、非対称型マルチプロセッサに対応したAMP−RTOSである。AMP−RTOSでは、各々のCPUで実行されるタスクが固定的に割り付けられる。すなわち、AMP−RTOSのシステムにおいては、各タスクがその時々で異なるCPUによって実行されるということはない(各CPUへのタスクの割り付けの例は後述する)。
また、本実施形態の電子カメラにおいて、それぞれの画像処理回路のCPUで実行されているタスク間の通信や、それらのタスク間での同期といったことも、AMP−RTOSの提供するシステムコールを用いることで容易に実現される。すなわち、それぞれ異なるCPUで実行されているタスク間の通信や処理の同期といったことも、AMP−RTOSを利用すればそれが持っているシステムコールを呼び出すだけでそれらの必要事項が達成されるので、アプリケーションプログラム(アプリケーション層)の中には、それらの処理を記述する必要がない。したがって、画像処理回路が2つに増えてもアプリケーションプログラムをあまり変更することなく再利用することができるというメリットが生まれる。
図4に示すデバイスドライバは、CPU45周辺のハードウェアを動作させるためのソフトウェアである。例えば、デバイスドライバには、撮像部ドライバ、USBドライバ、メモリカードドライバ、ディスプレイドライバ等がある。これらのデバイスドライバは、RTOSが持つデバイスドライバ・インターフェース(I/F)に登録される。RTOS上で実行されるタスクは、このデバイスドライバI/Fを通して目的のデバイスドライバを呼び出し、それに対応するハードウェア(デバイス)を動作させる。ハードウェアの構成が変わっても該当するデバイスドライバを変更すれば、アプリケーションプログラムはそのまま動作させることができる。
上述したソフトウェア・プラットフォームにはハードウェア依存性があり、CPU45のアーキテクチャやCPU45周辺のハードウェアが異なる場合はそれらの中のハードウェアに依存する部分を書き替えるという移植の作業が必要になる。ハードウェア依存部を書き替えることによって、上述したソフトウェア・プラットフォームが異なるハードウェアに移植され、従前のアプリケーションプログラムがそのまま動作させられるようになる(再利用することができる)。アプリケーションやミドルウェアなどのハードウェアに依存しないプログラムは、再利用することによって何回も検証されることになるのでソフトウェアとしての信頼性が上がり、先々も安全に使い続けることができる。
一例として、本実施形態の電子カメラは、4つの動作モード(記録モード、再生モード、通信モード、セットアップモード)を持ち、それぞれのモードにおける処理を行うタスクから構成される。なお、記録モードは、静止画撮影モード、動画撮影モードという2つの撮影モードを総称したものである。静止画撮影モードと、動画撮影モードのタスクの例はそれぞれ後述する。
また、記録モードのタスクは第1画像処理回路14、第2画像処理回路15の両方に実装される。また、再生モード、通信モード、セットアップモードのタスクは、マスタ側の第1画像処理回路14にのみ実装される。
再生モードは、電子カメラで記録された画像や音声のデータを再生するための動作モードである。再生モードのタスクには、例えば、表示部21に画像を表示する処理を行うタスクや、不図示のスピーカーに音声データを出力する処理を行うタスクがある。
通信モードは、電子カメラと外部機器(パーソナルコンピュータやプリンタなど)とのデータ通信を行うための動作モードである。通信モードのタスクには、例えば、PTP(Picture Transfer Protocol)による画像データ転送を行うタスクや、プリンタが接続された時にダイレクトプリントの処理を行うタスクなどがある。
セットアップモードは、電子カメラのセットアップ(日時の設定、解像度や画質や色調などの画像処理に関する設定、AFモードやAEモードの設定、言語の選択、表示部21への表示の設定、操作音の設定、メニュー画面の設定等の各種設定)や、ユーティリティ(記録媒体34の初期化等)を実行する動作モードである。セットアップモードのタスクには、例えば、セットアップのメニュー表示を行うタスクや、選択されたメニューの処理を実行するタスクや、メニューの項目を選択するための釦操作を検出するタスクなどがある。なお、最近では、独立したセットアップモードを持つカメラがなくなってきており(モードダイヤルを持たないカメラが増えたことも1つの要因)、そのようなカメラでは、セットアップモードの処理を、その項目に関連のある動作モードの中からメニューを呼び出して実行するようになっている。
<撮像装置の動作の説明>
以下、本実施形態の電子カメラの動作を、静止画撮影モードにおける単写撮影と連写撮影、それに動画撮影モードにおける動画撮影という3つの場合を例に挙げ、タスクの実行というソフトウェアの視点からそれぞれ具体的に説明する。
(静止画撮影モードにおける単写撮影の動作)
静止画撮影モードで単写撮影を行う場合、第1画像処理回路14が動作状態となって単写撮影の処理を行う一方で、第2画像処理回路15は電源オフの状態または低消費電力の状態となって停止している。そして、第1画像処理回路14のCPU45_1が、単写撮影全般の動作を制御する。なお、以下に述べる処理は全てCPU45_1が実行するプログラムの制御の下に行われるものである。
図5は、静止画撮影モードの単写撮影を行うときのタスクの一例を示す。単写撮影時のタスクは、ライブビューの処理のタスク群と、静止画像撮影の処理のタスク群とに大別される。ライブビューの処理のタスク群は、例えば、撮像制御タスク、プリプロセスタスク、ポストプロセスタスク、AF・AE・AWBの各タスク、表示制御タスク(スルー画像表示)、ズーム駆動タスク、フラッシュ制御タスクを含む。また、静止画像撮影の処理のタスク群は、例えば、撮像制御タスク、プリプロセスタスク、ポストプロセスタスク、AE・AWBタスク、表示制御タスク(フリーズ画像表示)、フラッシュ制御タスク、JPEG圧縮タスク、画像記録タスクを含む。
単写撮影に限らず電子カメラの撮影モードはライブビューの動作から始まる。ライブビューでは撮像部12にスルー画の撮像動作を行わせる。撮像部12は所定の周期(フレーム周期)でスルー画の撮像を繰り返し行い、その画像データを撮像部12の外部へ出力する。この処理は撮像制御タスクが行う。撮像部12から周期的に出力されるスルー画のデータは、データ分配器13を介して第1画像処理回路14に順次入力される。
画像処理部41_1は、入力されたデータに画像処理(プリプロセスとポストプロセス)を施してスルー画のYCbCrデータを生成する。この処理はプリプロセスタスクと、ポストプロセスタスクが行う。生成されたスルー画のYCbCrデータは第1メモリ17上に設けられたYCbCrデータ記憶領域に一時的に記憶される。
そして、DMAC44_1は、YCbCrデータ記憶領域から表示コントローラ48_1にスルー画のYCbCrデータを転送する。これにより、スルー画のYCbCrデータが表示コントローラ48_1から表示部21に送られて、画面に表示される。これによって、表示部21の画面上で被写体の生映像を見ることができる(ライブビュー表示)。この処理は、表示制御タスクが行う。ユーザは、表示部21に表示されたスルー画を観察することによって、撮影の構図を決めたり、シャッターチャンス(レリーズ釦24の全押し操作による撮影指示のタイミング)の判断を行ったりする。
また、ライブビューの動作中は画像処理部41_1が、プリプロセスの施されたスルー画のデータから、AF評価値、AE評価値、AWB評価値をそれぞれ生成する。CPU45_1は、生成したAE評価値を用いて測光を行い、測光結果に基づいてスルー画の露出制御を行う。これによってスルー画の明るさが適正レベルに調整される。この処理は、AEタスクが行う。またCPU45_1は上述したAWB評価値を用いてAWBアルゴリズムを実行し、その結果に基づいてスルー画のホワイトバランス調整を行う。これによってスルー画の色も適正な状態に調整される。この処理はAWBタスクが行う。また、CPU45_1は、レリーズ釦24の半押し操作が行われると、上述したAF評価値を用いて公知のコントラスト検出方式によるAFを行い、撮影光学系11のピントを目的の被写体に合わせる。この処理はAFタスクとズーム駆動タスクが行う。なお、レリーズ釦24の半押し操作が行われた時は、AEタスクにより、静止画撮影時の露出制御パラメータ(ISO感度値、絞り値、シャッター秒時など)も併せて決定される。
そして、CPU45_1は、レリーズ釦24の全押し操作が行われると、撮像部12をスルー画の撮像動作から静止画の撮像動作に切り換えて、被写体の静止画を撮影させる。このとき、CPU45_1は、半押し操作に応じて決定した静止画撮影用の露出制御パラメータにしたがって露光を行わせる。露光が終了すると、CPU45_1は撮像部12を静止画の読み出し動作に移行させて、撮影された静止画の画像データを出力させる。この処理は撮像制御タスクが行う。撮像部12から出力された静止画のデータはデータ分配器13を介して第1画像処理回路14に入力される。
第1画像処理回路14に入力された静止画のデータ(Bayerデータ)は、画像処理部41_1でまずプリプロセスだけが施され、次いで画像処理部41_1から出力されて第1メモリ17上に設けられたBayerデータ記憶領域に一時的に記憶される。この処理はプリプロセスタスクが行う。
続いて、DMAC44_1により、上述したBayerデータ記憶領域からプリプロセスの施されたBayerデータが読み出されて画像処理部41_1に入り、画像処理部41_1でポストプロセスが施されて撮影された静止画の主画像(YCbCrデータ)が生成される。その際、画像処理部41_1は、内部の解像度変換回路(不図示)を利用して、上述したフリーズ画のYCbCrデータとサムネイルのYCbCrデータを併せて生成する。主画像、フリーズ画、サムネイルの各YCbCrデータは、第1メモリ17上に設けられたYCbCrデータ記憶領域(主画像用記憶領域、フリーズ画用記憶領域、サムネイル用記憶領域の3記憶領域を備える)に一時的に記憶される。この処理はポストプロセスタスクが行う。
続いて、DMAC44_1により、上述したYCbCrデータ記憶領域からフリーズ画のYCbCrデータが読み出されて表示コントローラ48_1に入り、次いで表示部21に送られて画面に表示される。これにより、ユーザは、撮影直後に撮影画像の状態を確認することができる。この処理は表示制御タスクが行う。
続いて、静止画圧縮部42_1を利用して、上述した主画像とフリーズ画とサムネイルの各YCbCrデータに順次JPEG圧縮処理を施す。DMAC44_1により、上述したYCbCrデータ記憶領域から3つのYCbCrデータが1つずつ読み出されて静止画圧縮部42_1に入り、静止画圧縮部42_1で個別にJPEG圧縮が施されて、それぞれのJPEG圧縮後の画像データ(以下、JPEGデータと称する)が、第1メモリ17上に設けられたJPEGデータ記憶領域に一時的に記憶される。CPU45_1は、所定のファイルフォーマットに従って主画像とフリーズ画とサムネイルの各JPEGデータを種々のメタデータと共にJPEGデータ記憶領域上で1つに結合し、1つのJPEG画像ファイル(そのファイルのメモリイメージ)を生成する。ファイルフォーマットとしてはExifフォーマットや、マルチピクチャフォーマット(MPF)などが利用される。この処理はJPEG圧縮タスクが行う。なお、フリーズ画のJPEGデータは画像の再生時において高速表示のために利用されており、一方、サムネイルのJPEGデータはJPEG画像ファイルの検索において利用されている。
最後に、CPU45_1は、JPEGデータ記憶領域に記憶されているJPEG画像ファイル(メモリイメージ)を記録媒体34に記録する。DMAC44_1により、上述したJPEGデータ記憶領域からJPEG画像ファイル(メモリイメージ)のデータが読み出されてメディアコントローラ53_1に入り、次いで記録媒体34に送られて記録媒体34内部の記録領域に記録される。この処理は画像記録タスクが行う。
JPEG画像ファイルの記録媒体34への記録動作が終了すると単写撮影(1フレームの静止画の撮影)の処理は全て終了し、CPU45_1は電子カメラを再びライブビューの動作に戻して、次の単写撮影に備える。以上が静止画撮影モードにおける単写撮影の基本的な動作である。
なお、単写撮影においてフラッシュの発光を行う場合、ライブビューの動作のときに静止画の撮影に先だって不図示の閃光装置による予備発光および測光が行われる。この予備発光は赤目軽減のために行うものであってもよい。そして、静止画の撮影のときには予備発光の測光結果に応じて、不図示の閃光装置による本発光が行われる。これらの処理はフラッシュ制御タスクが行う。
(静止画撮影モードにおける連写撮影の動作)
次に、静止画撮影モードにおいて連射撮影を行う場合について説明する。連写撮影の場合、第1画像処理回路14(マスタ側)と第2画像処理回路15(スレーブ側)との2つで並列に撮影の処理が行われる。第1画像処理回路14は、単写撮影の場合と同様にライブビューの動作を開始する一方、第2画像処理回路15は静止画撮影に必要となる各種の設定を済ませた上で、連写撮影が開始されるまで待機する。このとき、第2画像処理回路15は、必要となる回路ブロック以外の回路ブロックにはクロックの供給を停止して低消費電力の状態で待機することが好ましい。なお、第1画像処理回路14と第2画像処理回路15は、外部のシリアルバス16を通じて互いにデータの送受信が可能な状態にしておくことが必要となる。
連写撮影での第1画像処理回路14によるライブビューの動作は、レリーズ釦24の半押し操作が行われた時の処理も含めて単写撮影の場合とほぼ同様であるので、重複する部分の説明は省略する。半押し操作に続いてレリーズ釦24の全押し操作が行われると、静止画の連写撮影が開始されるが、これ以降の処理は単写撮影の場合と相違する。
レリーズ釦24の全押し操作が続いている間(連写撮影中)は静止画の撮影が繰り返し行われる。この連写撮影中には、半押し操作時に決定された静止画撮影用の露出パラメータを用いて、フォーカスの状態を固定したままで静止画の撮影が続けられる。また、連写撮影中にはスルー画の表示は行われず、ライブビューの動作には移行しない。
連写撮影の場合、レリーズ釦24の全押し操作が行われると、CPU45_1は、第2画像処理回路15を低消費電力の状態から動作状態(使用する回路ブロックの全てにクロックが供給されている状態)に移行させる。また、CPU45_1は、撮像部12をスルー画の撮像動作から静止画の撮像動作に切り替えて、被写体の静止画を撮影させる。CPU45_1は上述した露出制御パラメータに従って露光を行わせる。露光が終了すると、CPU45_1は撮像部12を静止画の読み出し動作に移行させて、撮影された静止画の画像データを出力させる。なお、CPU45_1は、後述するようにメモリ上に設けられたBayerデータ記憶領域に空きがないときには画像データを出力できないため、空いているBayerデータ記憶領域を予め1つ獲得してから撮像部12に露光を開始させる。
連写撮影の場合、最初に撮影されたフレームを含めた奇数フレーム(1,3,5,7,…)の静止画データは第1画像処理回路14で処理され、偶数フレーム(2,4,6,8,…)の静止画データは第2画像処理回路15で処理される。そのため、データ分配器13は、奇数フレームの静止画データを第1画像処理回路14に出力し、偶数フレームの静止画データを第2画像処理回路15に出力する(図6参照)。
上述した偶数フレームと奇数フレームの静止画は同じ撮像部12で撮影されたものであり、撮像部12の撮像動作はマスタ側(第1画像処理回路14)のCPU45_1で制御されている。そのため、CPU45_1は、連写によって撮影された各静止画の撮影順序を全て把握することができる。そこで、CPU45_1は、連写撮影中は各静止画に対して撮影順序を示すフレーム番号(通し番号)を付与する。そして、このフレーム番号によって静止画データの撮影順序が管理される。
ここで、連写撮影で行われる基本的な処理は、単写撮影の場合と同様に、撮像部12による「静止画の撮像動作」、画像処理部41による「プリプロセス」、画像処理部41による「ポストプロセス」、静止画圧縮部42による「JPEG圧縮処理」、メディアコントローラ53による「JPEG画像ファイルの記録」という5つの処理である。これらの5つの処理は単写撮影の場合と基本的に同様であるため重複する部分の説明は省略する。ただし、第2画像処理回路15での「JPEG画像ファイルの記録」については、単写撮影の場合と異なる部分があるため後述する。
上述した単写撮影の場合、上述する5つの処理をシーケンシャルに実行してから、次のフレームの撮影が行われる。一方、連写撮影の場合には、上述する5つの処理が並列に実行され、或るフレームの静止画データに対して或る処理が実行されている間に、そのフレームとは異なる複数フレームの静止画のデータにそれぞれ別々の処理が実行される点で相違する。つまり、連写撮影の場合、1フレームの撮影における5つの処理が未だ終わらないうちに次のフレームの撮影を開始することができる。なお、連写撮影時に並列処理されている個々のフレームに注目すると、上述の5つの処理はシーケンシャルに実行される。
上述するような並列処理が可能となる理由は、それぞれの処理で使用される画像処理回路(14、15)の内部資源(ハードウェア)が異なるからである。例えば、画像処理部41の内部にある不図示のプリプロセス部とホストプロセス部は独立した回路であるため、連続する2つのフレームの静止画データに対して、プリプロセスとポストプロセスとを並列に施すことができる。同様に、静止画圧縮部42とメディアコントローラ53もそれぞれ独立した回路であるため、これらの4つの回路を利用すると連続する4つのフレームの静止画データを並列に処理できる。なお、上述する5つの処理のうち、「静止画の撮像動作」に含まれる画像データの出力と「プリプロセス」とは、撮像部12とプリプロセス部とを連続的に動作させて、同一のフレームについて常に一体的に実行される。そのため、連写撮影での並列処理を考えるときには、上述した「静止画の撮像動作」と「プリプロセス」の処理はまとめて1つの処理として扱われる。
上述した並列処理での具体的な動作は以下のようになる。なお、以下の並列処理の説明では、同じ画像処理回路で処理される連続した4つのフレームを、第1フレーム〜第4フレームと称している。
まず、連写撮影の第1フレームに対して「静止画の撮像動作」と「プリプロセス」の処理が単独で実行される。続いて、第1フレームは「ポストプロセス」の処理に移行し、それと並行して第2フレームに対して「静止画の撮像動作」と「プリプロセス」の処理が実行される。続いて、第1フレームは「JPEG圧縮処理」の処理に移行し、第2フレームは「ポストプロセス」の処理に移行し、それと並行して第3フレームに対して「静止画の撮像動作」と「プリプロセス」の処理が実行される。続いて、第1フレームは「JPEG画像ファイルの記録」の処理に移行し、第2フレームは「JPEG圧縮処理」の処理に移行し、第3フレームは上述した「ポストプロセス」の処理に移行し、それと並行して第4フレームに対して「静止画の撮像動作」と「プリプロセス」の処理が実行される。これ以降は第1フレームから順に撮影の処理が終了し、新たなフレームに対して撮影の処理が開始されてゆく。
上述した連写撮影の動作が定常状態に達すると、撮影の間隔(フレーム間隔)は、連写撮影での並列処理のうち最も時間のかかる処理によって決定され、その処理時間に等しくなる。すなわち、上述する処理時間ごとに1フレームの静止画の撮影が完了することとなる(パイプライン処理)。
また、上述した並列処理を行うときには、単写撮影のときに説明した各データ記憶領域(Bayerデータ記憶領域、YCbCrデータ記憶領域、JPEGデータ記憶領域)をそれぞれメモリ上に複数確保する必要がある。以下の説明では、第1フレームと第2フレームの場合を具体的に説明するが、これ以降のフレームについても事情は同様である。
例えば、撮像部12から出力された第1フレームの静止画のデータ(Bayerデータ)は、画像処理部41でまずプリプロセスだけが施され、次いで画像処理部41から出力されてメモリ上のBayerデータ記憶領域に一時的に記憶される。そして、プリプロセス後の第1フレームのBayerデータには、画像処理部41でポストプロセスが施されて、第1フレームの主画像(YCbCrデータ)が生成される。その際、画像処理部41は、内部の解像度変換回路(不図示)を利用して、上述したフリーズ画のYCbCrデータとサムネイルのYCbCrデータを併せて生成する。そして、第1フレームのYCbCrデータは、メモリ上のYCbCrデータ記憶領域に一時的に記憶される。一方、第1フレームに対するポストプロセスの実行中に、第2フレームのBayerデータが撮像部12から出力され、画像処理部41でプリプロセスだけが施されてBayerデータ記憶領域に一時的に記憶されることとなる。このとき、Bayerデータ記憶領域が1つのみであると、第1フレームのBayerデータが第2フレームのBayerデータで上書きされてしまうため正常な処理が行えなくなってしまう。そのため、上述したデータの上書きを避けるために、少なくともBayerデータ記憶領域が2つ必要であることが分かる。
また、例えば、上述した第1フレームのYCbCrデータには、静止画圧縮部42でJPEG圧縮処理が施されて、第1フレームのJPEGデータが生成される。そして、第1フレームのJPEGデータは、メモリ上のJPEGデータ記憶領域に一時的に記憶される。一方、第1フレームに対するJPEG圧縮処理の実行中に、第2フレームのBayerデータに画像処理部41でポストプロセスが施されて、第2フレームのYCbCrデータが生成される。そして、第2フレームのYCbCrデータは、メモリ上のYCbCrデータ記憶領域に一時的に記憶される。このとき、YCbCrデータ記憶領域が1つのみであると、第1フレームのYCbCrデータが第2フレームのYCbCrデータで上書きされてしまうため正常な処理が行えなくなってしまう。そのため、上述したデータの上書きを避けるためには、少なくともYCbCrデータ記憶領域が2つ必要であることが分かる。
また、例えば、上述した第1フレームのJPEGデータは、CPU45により種々のメタデータが付加されるとともにJPEGデータ記憶領域上で1つに結合されて、1つのJPEG画像ファイルのメモリイメージが生成される。そして、第1フレームのJPEG画像ファイルのメモリイメージが読み出されてメディアコントローラ53_1に入り、次いで記録媒体34に送られて記録媒体34内部の記録領域に記録される。一方、第1フレームのJPEG画像ファイルの記録が行われている間に、第2フレームのYCbCrデータに静止画圧縮部42でJPEG圧縮処理が施されて、第2フレームのJPEGデータが生成される。そして、第2フレームのJPEGデータは、メモリ上のJPEGデータ記憶領域に一時的に記憶される。このとき、JPEGデータ記憶領域が1つのみであると、第1フレームのJPEGデータが第2フレームのJPEGデータで上書きされてしまうため正常な処理が行えなくなってしまう。そのため、上述したデータの上書きを避けるためには、少なくともJPEGデータ記憶領域が2つ必要であることが分かる。
上述する理由から、画像処理回路のメモリ(17、18)には、Bayerデータ記憶領域、YCbCrデータ記憶領域、JPEGデータ記憶領域がそれぞれ2以上ずつ確保されている(図6参照)。Bayerデータ記憶領域は、プリプロセスとポストプロセスとによって共有されている。YCbCrデータ記憶領域は、ポストプロセスとJPEG圧縮処理とによって共有されている。JPEGデータ記憶領域は、JPEG圧縮処理とJPEG画像ファイルの記録処理とによって共有されている。各データ記憶領域でデータの上書きを避けるため、前者の処理では共有する2つのデータ記憶領域の一方にデータが書き込まれ、後者の処理では共有する2つのデータ記憶領域の他方からデータが読み出される。
また、上述した並列処理を行うときには、「静止画の撮像動作」、「プリプロセス」、「ポストプロセス」、「JPEG圧縮処理」、「JPEG画像ファイルの記録」に対応するタスク(撮像制御タスク、プリプロセスタスク、ポストプロセスタスク、JPEG圧縮タスク、画像記録タスク)がRTOSの管理の下で複数並列に実行される。各タスクは、タスク間で通信を行うことによりタスク間の同期をとるとともに、各データ記憶領域でのデータの書き込み・読み出しの排他制御を行う。
例えば、レリーズ釦の全押し操作が行われると、撮像制御タスクはプリプロセスタスクにメッセージを送信し、フレーム番号の情報を伝えるとともにプリプロセスの処理の準備を要求する。上述のメッセージを受信すると、プリプロセスタスクは空いているBayerデータ記憶領域を獲得(セマフォの獲得)し、Bayerデータ記憶領域の獲得後に撮像処理タスクに準備完了のレスポンスを返信する。上述のレスポンスを受信すると、撮像処理タスクは、撮像部12に静止画の撮像動作を開始させる。露光が終了して撮像部12から静止画のデータが出力されると、そのデータは所定の画像処理回路(14、15)に入力され、プリプロセス部でプリプロセスが施される。プリプロセス後のBayerデータの書き込みを行うDMAC44は、プリプロセス部(内部のFIFO)をソースアドレスとし、予め獲得したBayerデータ記憶領域の先頭アドレスをデスティネーションアドレスとして、DMA転送によりBayerデータ記憶領域にBayerデータを書き込む。1フレーム分のBayerデータの書き込みが終了すると、プリプロセスタスクはそのBayerデータ記憶領域を返却する(セマフォの返却)。
続いて、プリプロセスタスクはポストプロセスタスクにメッセージを送信し、上述のBayerデータにポストプロセスを施す旨を依頼する。このとき、プリプロセスタスクは、ポストプロセスタスクへのメッセージに、フレーム番号の情報と、上述のBayerデータ記憶領域の先頭アドレスとを含める。上述のメッセージを受信したポストプロセスタスクは、受信したアドレス値のBayerデータ記憶領域と、空いているYCbCrデータ記憶領域とを獲得する(セマフォの獲得)。YCbCrデータ記憶領域の獲得後に、ポストプロセスタスクはポストプロセス部にポストプロセスを開始させる。Bayerデータ記憶領域からBayerデータを読み出すDMAC44は、予め獲得したBayerデータ記憶領域の先頭アドレスをソースアドレスとし、ポストプロセス部(内部のFIFO)をデスティネーションアドレスとして、DMA転送によりBayerデータをポストプロセス部に入力する。これにより、Bayerデータはポストプロセス部に入力されてポストプロセスが施される。また、ポストプロセス後のYCbCrデータの書き込みを行うDMAC44は、ポストプロセス部(内部のFIFO)をソースアドレスとし、予め獲得したYCbCrデータ記憶領域の先頭アドレスをデスティネーションアドレスとして、DMA転送によりYCbCrデータ記憶領域にYCbCrデータ(主画像、フリーズ画、サムネイル)を書き込む。なお、1フレーム分のBayerデータの読み出しが終了すると、ポストプロセスタスクはそのBayerデータ記憶領域を返却する(セマフォの返却)。また、1フレーム分のYCbCrデータの書き込みが終了すると、ポストプロセスタスクはそのYCbCrデータ記憶領域を返却する(セマフォの返却)。
続いて、ポストプロセスタスクはJPEG圧縮タスクにメッセージを送信し、上述のYCbCrデータにJPEG圧縮処理を施す旨を依頼する。このとき、ポストプロセスタスクは、JPEG圧縮タスクへのメッセージに、フレーム番号の情報と、上述のYCbCrデータ記憶領域の先頭アドレスとを含める。上述のメッセージを受信したJPEG圧縮タスクは、受信したアドレス値のYCbCrデータ記憶領域と、空いているJPEGデータ記憶領域とを獲得する(セマフォの獲得)。JPEGデータ記憶領域の獲得後に、JPEG圧縮タスクは静止画圧縮部42にJPEG圧縮処理を開始させる。YCbCrデータ記憶領域からYCbCrデータを読み出すDMAC44は、予め獲得したYCbCrデータ記憶領域の先頭アドレスをソースアドレスとし、静止画圧縮部42(内部のFIFO)をデスティネーションアドレスとして、DMA転送によりYCbCrデータを静止画圧縮部42に入力する。これにより、YCbCrデータは静止画圧縮部42に入力されてJPEG圧縮処理が施される。また、JPEG圧縮処理後のJPEGデータの書き込みを行うDMAC44は、静止画圧縮部42(内部のFIFO)をソースアドレスとし、予め獲得したJPEGデータ記憶領域の先頭アドレスをデスティネーションアドレスとして、DMA転送によりJPEGデータ記憶領域にJPEGデータを書き込む。また、JPEG圧縮タスクは、これと並行して撮影情報などのメタデータを収集し、JPEGデータ記憶領域内の別のアドレスにメタデータを書き込む。そして、JPEG圧縮タスクは、静止画圧縮部42から出力されたJPEGデータとメタデータとを1つに結合して、JPEGデータ記憶領域の先頭から始める1つのJPEG画像ファイル(メモリイメージ)を作成する。なお、1フレーム分のYCbCrデータの読み出しが終了すると、JPEG圧縮タスクはそのYCbCrデータ記憶領域を返却する(セマフォの返却)。また、上述するJPEG画像ファイルを作成すると、JPEG圧縮タスクはそのJPEGデータ記憶領域を返却する(セマフォの返却)。
続いて、JPEG圧縮タスクは画像記録タスクにメッセージを送信し、上述のJPEG画像ファイルを記録媒体34に記録するように依頼する。このとき、JPEG圧縮タスクは、画像記録タスクへのメッセージに、フレーム番号の情報と、上述のJPEGデータ記憶領域の先頭アドレスと、JPEG画像ファイルのサイズを含める。JPEG圧縮は可変長圧縮であるため、圧縮処理ごとにJPEGデータのサイズ(符号量)も変わるため、JPEG画像ファイルのサイズも変化する。そのため、上述の場合にはメッセージにJPEG画像ファイルのサイズを含めている。上述のメッセージを受信した画像記録タスクは、受信したアドレス値のJPEGデータ記憶領域を獲得する(セマフォの獲得)。そして、画像記録タスクは、メディアコントローラ53_1を動作状態(Active)にする。また、画像記録タスクは、メディアコントローラ53_1を介して記録媒体34にWRITEコマンドと書き込みアドレスとを発行して、JPEG画像ファイルの記録動作を開始する。JPEGデータ記憶領域からJPEG画像ファイルを読み出すDMAC44は、予め獲得したJPEGデータ記憶領域の先頭アドレスをソースアドレスとし、メディアコントローラ53_1(内部のFIFO)をデスティネーションアドレスとして、DMA転送によりJPEG画像ファイルのデータをメディアコントローラ53_1に入力する。メディアコントローラ53_1は、入力されたJPEG画像ファイルのデータを記録媒体34に送信し、上述する書き込みアドレスで指定された記録領域に記録する。なお、JPEG画像ファイルの記録が終了すると、画像記録タスクはそのJPEGデータ記憶領域を返却する(セマフォの返却)。
以上のように、RTOSの機能(セマフォ)を利用することで、CPU45は各データ記憶領域でのデータの書き込み・読み出しの排他制御を確実に行うことができる。また、タスク間通信でフレーム番号の情報が伝達されるため、CPU45が実行するRTOSは、フレーム番号の情報を参照することで静止画データを撮影順に従って処理することができる。
また、本実施形態の電子カメラでは、奇数フレームの静止画データに対して第1画像処理回路14で上述した並列処理が実行され、偶数フレームの静止画データに対して第2画像処理回路15で上述した並列処理が実行される。2つの画像処理回路を用いると、同じ処理時間の間に2つのフレームを処理できるので、処理時間は相対的に1/2になることが分かる。すなわち、電子カメラ全体ではフレーム間隔が1/2になるため、1つの画像処理回路で処理する場合と比べて2倍高速な連写撮影を行うことができる。
図9は、静止画撮影モードの連写撮影を行うときのタスクの一例を示す図である。連写撮影の場合、マスタ側のCPU45_1がライブビューの処理におけるタスク群(撮像制御タスク、プリプロセスタスク、ポストプロセスタスク、AF・AE・AWBタスク、表示制御タスク、ズーム駆動タスク)と、静止画像撮影の処理におけるタスク群(撮像制御タスク、プリプロセスタスク、ポストプロセスタスク、AWBタスク、JPEG圧縮タスク、表示制御タスク、画像記録タスク)を実行する。また、スレーブ側のCPU45_2が静止画像撮影の処理におけるタスク群のうち、プリプロセスタスク、ポストプロセスタスク、AWBタスク、JPEG圧縮タスクを実行する。なお、CPU45_1,45_2は同じ種類のタスクを実行するが、処理対象のフレームが相違するのでタスクが競合することはない。
また、本実施形態の電子カメラでは、一方の画像処理回路がシリアルバス16を介して他方の画像処理回路の資源に直接アクセスできる。そして、マスタ側のタスクと、スレーブ側のタスクとは、AMP−RTOSが提供するシステムコールを用いて通信を行うことができる。すなわち、静止画像の連写において、2つの画像処理回路を用いて並列処理を行う場合に、それぞれの画像処理回路のタスク間での通信や同期、排他制御(資源の共用)などの基本的で重要な機能が、アプリケーションプログラムではなく、AMP−RTOSのシステムコールを利用して実現されるというメリットがある。
ところで、本実施形態では、第1画像処理回路14にのみメディアコネクタ23が接続されている。そのため、第1画像処理回路14で生成されたJPEG画像ファイルと、第2画像処理回路15で生成されたJPEG画像ファイルとは、マスタ側のCPU45_1が実行する画像記録タスクにより、記録媒体34にフレーム番号順で交互に記録されることになる。
スレーブ側のJPEG画像ファイルの記録処理は、基本的にはマスタ側の場合と同様であるが、JPEG画像ファイルのデータが第2メモリ18のJPEGデータ記憶領域に記録される点と、そのデータがシリアルバス16を介して第1画像処理回路14のブロックに転送される点でマスタ側の場合と相違がある。しかし、第1画像処理回路14のCPU45_1やDMAC44_1は、バスブリッジ56の働きによって、第2メモリ18上のデータに対して第1メモリ17上のデータと同様にアクセスすることができる。そのため、第2画像処理回路15で生成されたJPEG画像ファイルを第1画像処理回路14のブロックに転送することは容易である。
例えば、電子カメラはスレーブ側のJPEG画像ファイルを以下の手順で記録媒体34に記録すればよい。図7は、スレーブ側のJPEG画像ファイルを記録媒体34に記録する場合の概要図である。図7において、JPEG画像ファイルのデータの流れは一点鎖線の矢印で示す。
まず、スレーブ側のCPU45_2は、JPEG画像ファイルのデータが生成されるたびに、マスタ側のCPU45_1に対して、対象となるJPEG画像ファイルが記憶されているJPEGデータ記憶領域のアドレスと、そのJPEG画像ファイルのフレーム番号を伝える。CPU45_1の実行する画像記録タスクは、第2メモリ18に記憶されているフレーム番号のJPEG画像ファイルを記録媒体34に記録するとき、上述の通信で取得したJPEGデータ記憶領域の先頭アドレスを用いて、対象のJPEG画像ファイルを記録媒体34へ転送すればよい。なお、JPEG画像ファイルの記録媒体34への記録に関する具体的な処理については、既に上述した説明と同様であるので重複する説明は省略する。
また、連写撮影のときにフリーズ画を表示する場合を考える。本実施形態では第1画像処理回路14にのみ表示部21が接続されている。奇数フレームのフリーズ画を表示部21に表示させる場合には、CPU45_1が実行する画像表示タスクは、単写撮影の場合と同様の制御を行えばよい。偶数フレームのフリーズ画を表示部21に表示させる場合、基本的にはマスタ側の場合と同様であるが、フリーズ画のYCbCrデータが第2メモリ18のYCbCrデータ記憶領域に記録される点と、そのデータがシリアルバス16を介して第1画像処理回路14のブロックに転送される点でマスタ側の場合と相違がある。しかし、第1画像処理回路14のCPU45_1やDMAC44_1は、バスブリッジ56の働きによって、第2メモリ18上のデータに対して第1メモリ17上のデータと同様にアクセスすることができる。そのため、第2画像処理回路15で生成されたフリーズ画のデータを第1画像処理回路14のブロックに転送することは容易である。
例えば、電子カメラは、以下の手順でフリーズ画の表示を行えばよい。図8は、スレーブ側のフリーズ画を表示部21に表示させる場合の概略図である。図8において、フリーズ画のデータの流れは一点鎖線の矢印で示す。
表示制御タスクは、フリーズ画を表示するフレーム番号を求める。上記のフレーム番号が偶数であれば、表示すべきフリーズ画のデータは、第2メモリ18のYCbCrデータ記憶領域に記憶されている。
フリーズ画の表示を行う場合、マスタ側の撮像制御タスクは、フレーム番号とともにフリーズ画像の表示を示す表示フラグを、そのフレームの撮影時に予めスレーブ側のプリプロセスタスクに送信しておく。
スレーブ側のプリプロセスタスクは、プリプロセスが終了する毎に、Bayerデータが記憶された第2メモリ18のアドレスと、フレーム番号と、表示フラグとをポストプロセスタスクに伝える。そして、スレーブ側のポストプロセスタスクは、上記のBayerデータにポストプロセスを施して、主画像、フリーズ画像、サムネイル画像の各YCbCrデータを生成する。
上述の表示フラグがセットされていた場合、画像処理部41_2は、フリーズ画のYCbCrデータが生成された時点で、表示すべきフリーズ画が記憶されている記憶領域の先頭アドレスと、そのフレーム番号とをマスタ側の表示制御タスクに伝える。
そして、マスタ側の表示制御タスクは、第2メモリ18から表示コントローラ48_1にフリーズ画のデータをDMA転送する。このとき、表示制御タスクは、表示すべきフリーズ画の記憶領域の先頭アドレスをDMAC44_1のソースアドレスとし、表示コントローラ48_1のFIFOのアドレスをDMAC44_1のデスティネーションアドレスとする。また、表示制御タスクは、表示すべきフリーズ画のバイト数をDMAC44_1の転送カウントとする。なお、DMAC44_1の動作は、上記のJPEG画像ファイルの転送の場合とほぼ同様であるので重複説明を省略する。
その後、表示制御タスクが表示ドライバを呼び出すと、フリーズ画のデータが表示コントローラ48_1に転送されて、フリーズ画が表示部21の画面に表示される。なお、フリーズ画を一定期間表示部21に表示し続ける場合、DMAC44_1が上述したフリーズ画のデータ転送を繰り返すように設定すればよい。このため、DMAC44_1には前回と同じアドレスでDMA転送を行うリロード機能を持たせてもよい。
以上が静止画撮影モードで連写撮影を行う場合の動作である。
(動画撮影モードでの動作例1)
次に、動画撮影モードでの電子カメラの動作例を説明する。まず、H.264規格での動画像の符号化について簡単に説明する。
H.264による動画像の符号化では、1フレームの動画データをマクロブロックと称する多数のブロックに分割し、マクロブロック単位で符号化の処理が行われる。符号化のモードには、Iモード、Pモード、Bモードと称する3つのモードがある。
Iモードは、フレーム内予測符号化モードである。Iモードでは、符号化の対象となるカレントフレーム内の画素のみを利用して各マクロブロックを符号化するフレーム内予測が行われる。
一方、Pモード、Bモードは、フレーム間予測符号化モードである。一般的にPモードは、時間的に過去の1フレームからカレントフレームを予測する。また、Bモードは、時間的に過去および未来のそれぞれ1フレームからカレントフレームを予測する。ここで、Pモード、Bモードのフレーム間予測でカレントフレームと対比されるフレームを参照フレームと称する。この参照フレームは、既に符号化されたフレームを再生(復号)したものが用いられる。なお、H.264の符号化器には、ローカル復号器が含まれている。符号化されたカレントフレームのマクロブロックはローカル復号器で直ちに復号化され、メモリ上の参照フレーム記憶領域に記憶される。
また、フレーム間予測では、被写体の動き検出による動き補償を行うことで予測誤差の値を小さくしている。すなわち、動き検出では、カレントフレームのマクロブロックの位置を基準として、マクロブロックよりも大きな探索領域を参照フレームから読み出す。そして、探索領域内で上述の予測誤差が最小となるブロックの位置とそのときの予測誤差(最小値)とを求める。上記の動き検出で求めたブロックの位置と基準位置との差(オフセット)を動きベクトルと称する。フレーム間予測では、予測誤差および動きベクトルを併せて符号化し、ヘッダ情報を含んだマクロブロックの圧縮データを生成する。フレーム間予測を行った場合、符号化の終了したカレントフレームのマクロブロックの圧縮データは直ちにローカル復号器で復号される、そして、復号された予測誤差および動きベクトルから新しい参照フレーム(カレントフレームを復号したもの)が生成される。
また、H.264規格では、スライス(Slice)と称するマクロブロックのグループで1フレームを分割し、スライス単位で符号化モードを変更できる。
また、H.264規格では、従来のMPEG規格よりも多数の参照フレームを利用できる。Pマクロブロックの場合、1つの参照フレームグループの中から1フレームを選択してPモードの符号化を行う。また、Bマクロブロックの場合、2つの参照フレームグループの中からそれぞれ1フレーム、若しくは一方の参照フレームグループの中から2フレームを選択してBモードの符号化を行う。
ところで、上記のフレームの選択を行うときには、複数の参照フレームを評価した上で、カレントフレームのマクロブロック(カレントマクロブロック)により近い値を持つフレームを選択する可能性が高い。また、スライスが変わる場合には参照フレームも変わるので、上述した参照フレームの評価がその都度行われることになる。そのため、H.264規格では、参照フレームのアクセス回数が従来のMPEGの場合より多くなり、メモリの帯域が大幅に使用されうる。
以上の説明をふまえて、本実施形態での動画撮影モードでの電子カメラの動作を説明する。
図10は、動画撮影モードにおける電子カメラの動作の概略図である。図10において、カレントフレーム(記録用の動画像データを指す)、参照フレーム、動画像ファイルのデータの流れは、それぞれ一点鎖線の矢印で示す。
図10に示す動作例では、スレーブ側の動画圧縮部43_2が動画像の符号化を行う。第1メモリ17には、カレントフレームのYCbCrデータと動画像ファイルとが記憶される。一方、第2メモリ18には、参照フレームのYCbCrデータが記憶される。また、動作例1では、スルー画および動画像のデータはデータ分配器13を介して第1画像処理回路14にのみ入力される。
また、図11は、動画撮影モードの動作例1でのタスクの一例を示す図である。動画撮影の処理におけるタスク群は、例えば、撮像制御タスク、プリプロセスタスク、ポストプロセスタスク、AF・AE・AWBタスク、表示制御タスク、ズーム駆動タスク、H.264圧縮タスク、画像記録タスクがある。この動作例1の場合、マスタ側のCPU45_1は、撮像制御タスク、プリプロセスタスク、ポストプロセスタスク、AE・AF・AWBタスク、表示制御タスク、ズーム駆動タスク、画像記録タスクを実行する。また、スレーブ側のCPU45_2は、H.264圧縮タスクを実行する(図11参照)。よって、CPU45_1,45_2には、それぞれ異なるタスクが割り当てられており、処理が競合することはない。
以下、動画撮影モードにおける電子カメラの動作をより具体的に説明する。
動画撮影モードの起動指示を受け付けた段階では、第1画像処理回路14は、単写撮影の場合と同様にライブビューの動作を開始する一方、第2画像処理回路15は動画撮影に必要となる各種の設定を済ませた上で、動画撮影が開始されるまで待機する。このとき、第2画像処理回路15は、必要となる回路ブロック以外の回路ブロックにはクロックの供給を停止して低消費電力の状態で待機することが好ましい。なお、第1画像処理回路14と第2画像処理回路15は、外部のシリアルバス16を通じて互いにデータの送受信が可能な状態にしておくことが必要となる。
動画撮影での第1画像処理回路14によるライブビューの動作は、静止画の単写撮影の場合とほぼ同様であるので、重複する部分の説明は省略する。
また、ライブビューの動作中は画像処理部41_1が、プリプロセスの施されたスルー画のデータから、AF評価値、AE評価値、AWB評価値をそれぞれ生成する。CPU45_1は、生成したAE評価値を用いて測光を行い、測光結果に基づいてスルー画の露出制御を行う。この処理はAEタスクが行う。またCPU45_1は上述したAWB評価値を用いてAWBアルゴリズムを実行し、その結果に基づいてスルー画のホワイトバランス調整を行う。この処理はAWBタスクが行う。また、CPU45_1は、所定のタイミングでAF評価値を用いて公知のコントラスト検出方式によるAFを行い、撮影光学系11のピントを目的の被写体に合わせる。この処理は、AFタスクとズーム駆動タスクが行う(図10ではライブビュー表示に関するデータの流れの図示は省略する)。
そして、CPU45_1は、動画記録指示を受け付けると、動画像の記録を開始する。上述する動画記録指示が行われると、CPU45_1は、第2画像処理回路15を低消費電力の状態から動作状態(使用する回路ブロックの全てにクロックが供給されている状態)に移行させる。また、CPU45_1は、撮像部12に対して、動画の仕様に合った解像度とフレーム周期の組み合わせで動画像のデータを出力するように指示する。なお、動画撮影時には、CPU45_1は、プリプロセスの施された動画像のデータに解像度変換を施すことでスルー画のYCbCrデータを生成し、上述したライブビュー表示等を行えばよい。
ここで、動画撮影で行われる基本的な処理は、撮像部12による「動画像の撮像動作」、画像処理部41_1による「プリプロセス」、画像処理部41_1による「ポストプロセス」、動画圧縮部43_2による「動画圧縮処理」、メディアコントローラ53_1による「動画像ファイルの記録」という5つの処理である。上述した並列処理を行うときには、「動画像の撮像動作」、「プリプロセス」、「ポストプロセス」、「動画圧縮処理」、「動画像ファイルの記録」に対応するタスク(撮像制御タスク、プリプロセスタスク、ポストプロセスタスク、H.264圧縮タスク、画像記録タスク)がRTOSの管理の下で複数並列に実行される。各タスクは、タスク間で通信を行うことによりタスク間の同期をとるとともに、各データ記憶領域でのデータの書き込み・読み出しの排他制御を行う。
なお、本実施形態の電子カメラでは、一方の画像処理回路がシリアルバス16を介して他方の画像処理回路の資源に直接アクセスできる。そして、マスタ側のタスクと、スレーブ側のタスクとは、AMP−RTOSが提供するシステムコールを用いて通信を行うことができる。すなわち、動画像の撮影においても、2つの画像処理回路を用いて並列処理を行う場合に、それぞれの画像処理回路のタスク間での通信や同期、排他制御(資源の共用)などの基本的で重要な機能が、アプリケーションプログラムではなく、AMP−RTOSのシステムコールを利用して実現されるというメリットがある。
また、動画像の撮像動作からポストプロセスの動作は、撮像制御タスク、プリプロセスタスク、ポストプロセスタスクによって実行されるが、これらの動作は連写撮影の場合における静止画の撮像動作からポストプロセスの動作とほぼ同様であるので、重複する説明を省略する。
動画撮影時には、CPU45_1の制御により、ポストプロセス後のカレントフレームのYCbCrデータが、第1メモリ17のYCbCrデータ記憶領域に記録される。カレントフレームのYCbCrデータが生成されると、CPU45_1は動画圧縮部43_2に対して動画圧縮処理を開始する指示を行う。
上述の指示に応じて、CPU45_2はH.264圧縮タスクを実行する。まず、動画圧縮部43_2はカレントマクロブロックのデータを要求する。DMAC44_2は、メモリコントローラ50_1を介して第1メモリ17のカレントフレーム(YCbCrデータ)からマクロブロックを部分的に読み出し、動画圧縮部43_2に転送する。このとき、CPU45_2は、DMAC44_2のソースアドレスとして第1メモリ17のYCbCrデータ記憶領域の先頭アドレス、デスティネーションアドレスとして動画圧縮部43_2(内部のFIFO)のアドレス、データ転送数をそれぞれ設定し、データ転送を行えばよい。
一方、DMAC44_2は、別のチャネルを使って第2メモリ18に記憶されている予測用のデータ(参照フレーム記憶領域の参照フレームのデータ)を動画圧縮部43_2に転送する。カレントマクロブロックがIマクロブロックであれば、動画圧縮部43_2は、同一スライス内で先に符号化されたデータからフレーム内予測を行えばよい。
ここで、カレントフレームが動画像の最初のフレームである場合、過去のフレームが無いので、動画圧縮部43_2は上述したIモードで符号化を行う。動画圧縮部43_2は、上述した符号化の過程でカレントマクロブロックの復号データを逐次生成する。CPU45_2は、カレントマクロブロックの復号データ(YCbCrデータ)を、DMAC44_2によって第2メモリ18に確保された参照フレーム記憶領域に直接書き込ませる。このとき、CPU45_2は、DMAC44_2のソースアドレスとして動画圧縮部43_2(内部のFIFO)のアドレス、デスティネーションアドレスとして第2メモリ18の参照フレーム記憶領域の先頭アドレス、データ転送数をそれぞれ設定し、データ転送を行えばよい。上述した参照フレーム記憶領域に記録された復号データは新たな参照フレームとなる。
カレントフレームが2フレーム目以降である場合、動画圧縮部43_2は、第2メモリ18の参照フレーム記憶領域に記憶されている参照フレームが使えるので、PスライスやBスライスを含めることができる。上述するPマクロブロックやBマクロブロックの場合、動画圧縮部43_2は、第2メモリ18に記憶された参照フレームから予測用のデータ(参照フレームの探索領域のYCbCrデータ)を取得する。このとき、CPU45_2は、DMAC44_2のソースアドレスとして、第2メモリ18の参照フレーム記憶領域のアドレス、デスティネーションアドレスとして動画圧縮部43_2(内部のFIFO)のアドレス、データ転送数をそれぞれ設定し、データ転送を行えばよい。なお、PマクロブロックやBマクロブロックの圧縮では、動画圧縮部43_2は、複数の参照フレームから予測用のデータを読み出して、カレントマクロブロックとの予測誤差の大きさを評価してもよい。そして、動画圧縮部43_2は、上記の予測誤差がより小さい参照フレームを選択して、カレントマクロブロックの符号化に用いてもよい。
ところで、動画像の圧縮時において、DMAC44のソースアドレスは参照フレームのデータを読み出すために頻繁に変更される。そのため、動画圧縮時のDMA転送を効率的に行う観点から、動画圧縮部43にDMACを内蔵してもよい。このとき、動画圧縮部43にマイコンを内蔵させることで、ソースアドレスおよびデスティネーションアドレスを変更する機能と、符号化を行うフレームを決定する機能とを動画圧縮部43に付与してもよい。かかる構成によれば、カレントフレームが生成される毎に、CPU45がカレントフレームのアドレスを動画圧縮部43に通信するだけで、動画圧縮部43が自律的に動画像の符号化を行うことが可能となる。
動画圧縮部43_2は、フレーム内予測符号化(Iモード)またはフレーム間予測符号化(Pモード、Bモード)によって生成した符号化データ(動画像ファイル)を、ヘッダを含んだ標準フォーマットのパケットに分割して出力する。上述のパケットは、DMAC44_2によって、第1メモリ17の動画ファイル記憶領域に書き込まれる。このとき、CPU45_2は、DMAC44_2のソースアドレスとして、動画圧縮部43_2(内部のFIFO)のアドレス、デスティネーションアドレスとして第1メモリ17の動画ファイル記憶領域のアドレス、データ転送数をそれぞれ設定し、データ転送を行えばよい。なお、CPU45_2によって実行されるH.264圧縮タスクは、動画ファイル記憶領域に上述のパケットのデータが一定量蓄積されるごとに、別の動画ファイル記憶領域に記録先を切り替える。
その後、画像記録タスクにより、動画像ファイルのデータの書き込みを終えた動画ファイル記憶領域から、動画像ファイルのデータが読み出されて記録媒体34へ書き込まれる。このとき、CPU45_1はDMAC44_1のソースアドレスとして動画ファイル記憶領域の先頭アドレス、デスティネーションアドレスとしてメディアコントローラ53_1(内部のFIFO)のアドレス、データ転送数として動画像ファイルのパケットのバイト数をそれぞれ設定し、データ転送を開始させる。データ転送が開始されると、上述した動画ファイル記憶領域から動画像ファイルのデータが読み出されてメディアコントローラ53_1に入り、次いで記録媒体34に送られて記録媒体34内部の記録領域に記録される。
上述するように、パケットのデータが一定量蓄積されるごとに記録先の動画ファイル記憶領域を切り替えることで、或る動画ファイル記憶領域にパケットのデータを書き込みつつ、別の動画ファイル記憶領域からデータを読み出して記録媒体34にデータを書き込むことができる。そのため、動画撮影の場合にも、連写撮影の場合と同様に上述した5つの処理を並列処理できることが分かる。以上で、動画撮影モードでの動作例1の説明を終了する。
なお、動画像ファイルの再生の場合、動き検出がないのでメモリの帯域が大幅に消費されることはない。そのため、動画像ファイルの再生の場合、第1画像処理回路14のみを動作状態とする。そして、第1画像処理回路14の動画圧縮部43_1が動画像ファイルの各フレームを復号すればよい。
以下、図10に示す動画撮影モードの動作例1での作用効果を述べる。
上述した動作例1では、第1メモリ17にカレントフレームを記憶し、第2メモリ18に参照フレームを記憶する。また、第2画像処理回路15側の動画圧縮部43_2が、第2メモリ18に記憶された参照フレームを用いて符号化処理を行う。上述した動作例1では、第1メモリ17の帯域は、カレントフレームのプリプロセス・ポストプロセスの処理と、スルー画の表示と、記録媒体34への動画像ファイルの記録とに使用される。そして、第2メモリ18の帯域は、比較的負荷の大きい参照フレームのデータの書き込み/読み込みで使用される。そのため、上述した動作例1では、第1メモリ17と第2メモリ18にアクセスが分散されるので、2つの画像処理回路により効率的な処理が可能となる。
また、上述した動作例1では、転送元の画像処理回路に接続されたメモリ上に記憶されている画像データを、転送先の画像処理回路が直接読み出して処理するという動作を行うことができる。そのため、転送先の画像処理回路に接続されたメモリにデータを一旦移動(あるいはコピー)するという動作は不要になる。また、転送先の画像処理回路に接続されたメモリの帯域が余分に消費されることがないし、画像データのメモリ間移動(あるいはコピー)にかかっていた時間も発生しないので処理時間(あるいはLatency)が短縮される。
また、上述した動作例2では、スレーブ側の動画圧縮部43_2が符号化処理を行うため、画像処理回路間で演算負荷の差が小さくなる。そのため、2つの画像処理回路における消費電力の偏りを小さくすることができる。
(動画撮影モードでの動作例2)
また、動画撮影モードにおいて、電子カメラは動画像に音声データを付加して動画像ファイルを生成してもよい。以下、動画撮影モードにおいて、音声の記録を行うケースを動作例2として説明する。なお、以下の動画撮影での動作例2の説明では、上記の動作例1と共通する部分の重複する説明はいずれも省略する。
図12は、動画撮影モードの動作例2でのタスクの一例を示す図である。
動作例2の動画像撮影モードでのタスク群は、動作例1のタスク群に加えて、音声制御タスク、音声圧縮タスク、画像・音声多重化タスクを含む。また、動作例2のタスク群は、画像記録タスクに代えて、AV記録タスクを含む。上記の音声制御タスクおよびAV記録タスクは、マスタ側のCPU45_1により実行される。一方、音声圧縮タスクおよび画像・音声多重化タスクは、H.264圧縮タスクとともに、スレーブ側のCPU45_2によって実行される。
ここで、動作例2において、動画記録指示を受け付けるまでの動作は上述する動作例1の場合と同様である。動作例2で動画記録指示を受け付けると、CPU45_1は、第2画像処理回路15を低消費電力の状態から動作状態(使用する回路ブロックの全てにクロックが供給されている状態)に移行させる。また、CPU45_1は、撮像部12に対して、動画の仕様に合った解像度とフレーム周期の組み合わせで動画像のデータを出力するように指示する。また、CPU45_1は、データ分配器13の動作を切り替えて、第1画像処理回路14および第2画像処理回路15の両方に動画像の各フレームのBayerデータを入力させる。そして、第1画像処理回路14は、上述の動作例1と同様の処理により、表示部21でライブビュー表示を行う。また、CPU45_1は、音声制御タスクにより、音声信号処理部27による録音処理を開始させる。
スレーブ側の画像処理部41_2は、データ分配器13から入力されたBayerデータにプリプロセス、ポストプロセスを順次施して、カレントフレームのYCbCrデータを生成する。CPU45_2は、カレントフレームのYCbCrデータを第2メモリ18のYcbCrデータ記憶領域に記録する。カレントフレームのYCbCrデータが生成されると、CPU45_2は動画圧縮部43_2に対して動画圧縮処理を開始する指示を行う。なお、動画圧縮部43_2による動画圧縮処理の動作は、上述の動作例1とほぼ同様であるので、重複する部分の説明は省略する。
一方、録音処理によって音声信号処理部27から出力される音声データは、データ分配器13を介して、第2画像処理回路15に入力される。上記の音声データは、非圧縮のデータ(リニアPCM)であってもよく、音声圧縮タスクの処理により不図示の音声圧縮部で圧縮されたデータであってもよい。CPU45_1の実行する音声制御タスクは、入力された音声データを第2メモリ18の音声データ記憶領域に一時的に記憶する。
そして、CPU45_2は、画像・音声多重化タスクの処理によって、圧縮された画像データと、上述する音声データとを多重化する。これにより、1つの圧縮AVデータ(AVコードストリーム)が生成される。このとき、CPU45_2は、上述する圧縮AVデータを第1メモリ17の動画ファイル記録領域に記憶する。上述の圧縮AVデータは、DMAC44_2によって、第1メモリ17の動画ファイル記憶領域に書き込まれる。このとき、CPU45_2は、DMAC44_2のソースアドレスとして、動画圧縮部43_2(内部のFIFO)のアドレス、デスティネーションアドレスとして第1メモリ17の動画ファイル記憶領域のアドレス、データ転送数をそれぞれ設定し、データ転送を行えばよい。なお、CPU45_2は、動画ファイル記憶領域に上述のパケットのデータが一定量蓄積されるごとに、別の動画ファイル記憶領域に記録先を切り替える。なお、動画像ファイルの記録処理は、CPU45_1の制御によって動作例1の場合と同様に実行される。
この動作例2によれば、音声データが付与された動画像を記録媒体34に記録することができる。
<実施形態の補足事項>
(1) 上記実施形態では、記録用の画像を撮像する撮像素子31でAFおよびAEを行ういわゆるコンパクト型電子カメラの例を説明したが、本発明の撮像装置は一眼レフレックス型の電子カメラにも当然に適用できる。
(2) 上記実施形態において、静止画像撮影モード、動画像撮影モードでの各タスクはあくまで一例にすぎない。例えば、一部のタスクは、API(関数コール)やデバイスドライバとして電子カメラに実装してもよい。
(3) 上記実施形態において、動画圧縮部43は、H.264以外の動画圧縮規格(MPEG2など)で動画像の符号化を行ってもよい。
以上の詳細な説明により、実施形態の特徴点および利点は明らかになるであろう。これは、特許請求の範囲が、その精神および権利範囲を逸脱しない範囲で前述のような実施形態の特徴点および利点にまで及ぶことを意図するものである。また、当該技術分野において通常の知識を有する者であれば、あらゆる改良および変更に容易に想到できるはずであり、発明性を有する実施形態の範囲を前述したものに限定する意図はなく、実施形態に開示された範囲に含まれる適当な改良物および均等物によることも可能である。
11…撮影光学系、12…撮像部、13…データ分配器、14…第1画像処理回路、15…第2画像処理回路、16…シリアルバス、17…第1メモリ、18…第2メモリ、19…第1フラッシュメモリ、20…第2フラッシュメモリ、21…表示部、22…外部I/Fコネクタ、23…メディアコネクタ、24…レリーズ釦、25…操作釦、27…音声信号処理部、31…撮像素子、32…AFE部、34…記録媒体、41…画像処理部、42…静止画圧縮部、43…動画圧縮部、44…DMAC、45…CPU、46…割込コントローラ、47…内蔵メモリ、48…表示コントローラ、49…GPIO部、50…メモリコントローラ、51…フラッシュメモリコントローラ、52…外部I/Fコントローラ、53…メディアコントローラ、54…音声I/F、55…内部バス、56…バスブリッジ

Claims (3)

  1. 被写体の像を撮像した画像のデータを出力する撮像部と、
    それぞれプロセッサを内蔵し、非対称型マルチプロセッサに対応したリアルタイムOSがそれぞれ実装されるとともに、前記リアルタイムOS上で実行されるタスクにより前記画像のデータに画像処理を施す第1画像処理回路および第2画像処理回路と、
    前記第1画像処理回路および前記第2画像処理回路を接続するバスと、を備え、
    前記第1画像処理回路および前記第2画像処理回路はそれぞれアドレス空間を有し、各々の前記アドレス空間にはいずれも前記第1画像処理回路および前記第2画像処理回路の資源がマップされている撮像装置。
  2. 請求項1に記載の撮像装置において、
    静止画像の連写撮影のときに、
    前記第1画像処理回路および前記第2画像処理回路は、それぞれ異なるフレームに対して画像処理のタスクを独立に実行し、
    前記第2画像処理回路で実行される画像処理のタスクは、前記第1画像処理回路で実行される画像処理のタスクを流用したものである撮像装置。
  3. 請求項1に記載の撮像装置において、
    動画像の撮影のときに、
    前記第1画像処理回路は、前記画像を表示装置に表示出力するタスクと、動画像のデータを圧縮して得た動画像ファイルを不揮発性の記録媒体に記録するタスクとを実行し、
    前記第2画像処理回路は、前記動画像を圧縮するタスクを実行する撮像装置。
JP2012081209A 2012-03-30 2012-03-30 撮像装置 Pending JP2013211724A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2012081209A JP2013211724A (ja) 2012-03-30 2012-03-30 撮像装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012081209A JP2013211724A (ja) 2012-03-30 2012-03-30 撮像装置

Publications (1)

Publication Number Publication Date
JP2013211724A true JP2013211724A (ja) 2013-10-10

Family

ID=49529201

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012081209A Pending JP2013211724A (ja) 2012-03-30 2012-03-30 撮像装置

Country Status (1)

Country Link
JP (1) JP2013211724A (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014033264A (ja) * 2012-08-01 2014-02-20 Olympus Imaging Corp 撮像装置、撮像方法およびプログラム
JP2015114385A (ja) * 2013-12-09 2015-06-22 ヤマハ株式会社 音響信号分析制御プログラムおよび音響信号分析制御装置
JP2016076760A (ja) * 2014-10-03 2016-05-12 株式会社ニコン 画像処理装置および撮像装置
JP2019057942A (ja) * 2018-12-13 2019-04-11 株式会社ニコン 画像処理装置および撮像装置

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2014033264A (ja) * 2012-08-01 2014-02-20 Olympus Imaging Corp 撮像装置、撮像方法およびプログラム
JP2015114385A (ja) * 2013-12-09 2015-06-22 ヤマハ株式会社 音響信号分析制御プログラムおよび音響信号分析制御装置
JP2016076760A (ja) * 2014-10-03 2016-05-12 株式会社ニコン 画像処理装置および撮像装置
JP2019057942A (ja) * 2018-12-13 2019-04-11 株式会社ニコン 画像処理装置および撮像装置

Similar Documents

Publication Publication Date Title
CN109963083B (zh) 图像处理器、图像处理方法、拍摄装置和电子设备
JP5056370B2 (ja) 撮像装置、撮像装置の制御方法および撮像装置の制御プログラム、ならびに、データ処理装置、データ処理方法およびデータ処理プログラム
JP4560422B2 (ja) 撮像装置及びその制御方法
JP2003244529A (ja) デジタルカメラ
JP2003008948A (ja) 電子カメラ及びその画像表示方法並びに画像記録方法
CN110062161B (zh) 图像处理器、图像处理方法、拍摄装置和电子设备
US7365777B2 (en) Digital camera
US9609167B2 (en) Imaging device capable of temporarily storing a plurality of image data, and control method for an imaging device
US8054341B2 (en) Photographing apparatus for supporting overriding mode and method of controlling same
JP6493454B2 (ja) 電子カメラ
JP2013211724A (ja) 撮像装置
JP2013211715A (ja) 撮像装置
US20110193988A1 (en) Semiconductor device and semiconductor integrated circuit
JP2013175824A (ja) 電子カメラ
JP4328906B2 (ja) バス制御方法及び装置並びにデジタルカメラ
US20100135644A1 (en) Photographing apparatus and method of controlling the same
JP2004274285A (ja) 電子カメラ
JP4284458B2 (ja) デジタルカメラ
JP5906846B2 (ja) 電子カメラ
JP2011211568A (ja) 動画記録装置及びその制御方法
JP2011040801A (ja) 電子カメラ
US8687075B2 (en) Imaging apparatus and information display method for imaging apparatus
JP2019092223A (ja) 電子カメラ
JP2000197003A (ja) 動画像記録装置
Kao et al. Reusable embedded software platform for versatile single-sensor digital cameras