(57)【特許請求の範囲】
【請求項１】
バスを介したデータアクセスを制御する複数のバスマスタと、
前記データアクセスを要求するための複数のリクエスト信号を前記複数のバスマスタに出力する手段であって、
前記複数のリクエスト信号から１つの多重化されたリクエスト信号を生成する多重化を行い、前記多重化されたリクエスト信号を前記複数のバスマスタのうちの１つに出力する多重化モードと、前記複数のリクエスト信号に対し前記多重化を行わずに前記複数のリクエスト信号を前記複数のバスマスタに出力する非多重化モードとを有する多重化手段とを備えることを特徴とするバス制御装置。
【請求項２】
複数の所定の処理部と、前記所定の処理部以外の他の処理部とを含む、複数の処理部を備え、
前記多重化手段は、前記非多重化モードにおいて、前記複数の所定の処理部からの複数のリクエスト信号をそれぞれ異なる複数の所定のバスマスタに出力し、前記多重化モードにおいて、前記複数の所定の処理部からの複数のリクエスト信号を多重化して前記複数の所定のバスマスタの１つに出力すると共に、前記他の処理部からのリクエストを前記複数の所定のバスマスタのうちの前記１つのバスマスタ以外のバスマスタに出力することを特徴とする請求項１に記載のバス制御装置。
【請求項３】
前記非多重化モードでの動作が所定の時間だけ行われた後、前記多重化モードに切り替わるように、前記多重化手段を制御する制御手段を備えることを特徴とする請求項１に記載のバス制御装置。
【請求項４】
前記所定の時間は、前記データアクセスの使用帯域幅に応じて定められることを特徴とする請求項３に記載のバス制御装置。
【請求項５】
前記多重化手段は、前記多重化されたリクエスト信号に応じて前記バスから取得された多重化されたデータが入力されるデータ選択部を更に備え、
前記データ選択部は、前記多重化されたデータを分離して、分離されたデータを対応する前記複数のリクエスト信号の入力元に対して出力することを特徴とする請求項１に記載のバス制御装置。
【請求項６】
動画データを処理する複数の処理部と、
前記複数の処理部から出力された複数のリクエスト信号に基づき、バスを介したメモリへのデータアクセスを制御する請求項１から５のいずれか１項に記載のバス制御装置と、を備える画像処理装置。
【請求項７】
動画データを処理する複数の処理部と、
バスを介したデータアクセスを制御する複数のバスマスタと、
前記複数の処理部が前記データアクセスを要求するための複数のリクエスト信号を前記複数のバスマスタに出力する手段であって、前記複数のリクエスト信号から１つの多重化されたリクエスト信号を生成する多重化を行い、前記多重化されたリクエスト信号を前記複数のバスマスタのうちの１つに出力する多重化モードと、前記複数のリクエスト信号に対し前記多重化を行わずに前記複数のリクエスト信号を前記複数のバスマスタに出力する非多重化モードとを有する多重化手段と、
を備える画像処理装置における画像処理方法であって、
１フレーム期間内において、前記多重化モードと前記非多重化モードとを切り替えるステップを有することを特徴とする画像処理方法。
【請求項８】
前記切り替えるステップは、１フレーム期間内において、前記非多重化モードでの動作が所定の時間だけ行われた後、前記多重化モードに切り替えるステップであることを特徴とする請求項７に記載の画像処理方法。
【請求項９】
前のフレームでのデータアクセスに要した時間が所定の時間を超えている場合、前記切り替えるステップを実行しないことを特徴とする請求項７又は８に記載の画像処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、バス制御装置、画像処理装置及び画像処理方法に関する。
【背景技術】
【０００２】
近年のデジタルカメラは、高機能化が進んでおり、複雑な処理を短時間に処理している。これを実現するため、複数の画像処理機能がデジタルカメラ内で同時に動作する場合がある。処理の高速化のため、これらの画像処理機能を実現する部分は、システムバスを介してメモリにアクセスする構成を有することがある。
【０００３】
特許文献１には、複数のＤＭＡＣ（Direct Memory Access Controller）がＤＭＡバスを介して共通バッファメモリに接続される回路構成が開示されている。本回路では、ＤＭＡアービタが、複数のＤＭＡＣを制御することにより、各ＤＭＡＣが順次データ転送を行う。
【０００４】
特許文献２には、記憶領域とハードウェアリソースが同一のスイッチに接続された構成を有しており、このスイッチを介して画像データの送受信を行う画像処理装置が開示されている。この構成により、メモリバスの帯域が不足することを防止し、データ転送の負荷が分散される旨が記載されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平９−３３０２８８号公報
【特許文献２】特開２００５−３３２３７２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
特許文献１のようにＤＭＡＣ等のバスマスタを複数個有するシステムにおいては、処理機能の単位ごとに個別にバスマスタを割り当てる場合が多い。ここで、個数が限られているバスマスタを効率よく利用するため、処理単位ごとにバスマスタの割り当てを切り替えることがある。
【０００７】
しかしながら、割り当ての切り替えは、例えば、動画、静止画のような比較的大きい処理機能の単位に限られる場合が多い。小さな処理単位に対してバスマスタの割り当てを変更すると、処理の個数の増大、処理の煩雑化が生じ得る。また、切り替えに要するオーバヘッド時間が増加し、システム全体の処理性能が低下することもある。したがって、処理の種類によっては、バスマスタの割り当てを切り替えることが困難な場合があることから、複数のバスマスタを有していても、各処理機能に対する割り当てが効率的に行えない場合があった。
【０００８】
本発明の目的は、各処理機能に対するバスマスタの割り当てをより効率的に行い得るバス制御装置を提供することである。
【課題を解決するための手段】
【０００９】
本発明の一実施形態に係るバス制御装置は、バスを介したデータアクセスを制御する複数のバスマスタと、前記データアクセスを要求するための複数のリクエスト信号を前記複数のバスマスタに出力する手段であって、前記複数のリクエスト信号から１つの多重化されたリクエスト信号を生成する多重化を行い、前記多重化されたリクエスト信号を前記複数のバスマスタのうちの１つに出力する多重化モードと、前記複数のリクエスト信号に対し前記多重化を行わずに前記複数のリクエスト信号を前記複数のバスマスタに出力する非多重化モードとを有する多重化手段とを備えることを特徴とする。
【００１０】
本発明の一実施形態に係る画像処理装置は、動画データを処理する複数の処理部と、前記複数の処理部から出力された複数のリクエスト信号に基づき、バスを介したデータアクセスを制御する複数のバスマスタと、前記データアクセスを要求するための複数のリクエスト信号を前記複数のバスマスタに出力する手段であって、前記複数のリクエスト信号から１つの多重化されたリクエスト信号を生成する多重化を行い、前記多重化されたリクエスト信号を前記複数のバスマスタのうちの１つに出力する多重化モードと、前記複数のリクエスト信号に対し前記多重化を行わずに前記複数のリクエスト信号を前記複数のバスマスタに出力する非多重化モードとを有する多重化手段とを備えることを特徴とする。
【００１１】
本発明の一実施形態に係る画像処理方法は、動画データを処理する複数の処理部と、バスを介したデータアクセスを制御する複数のバスマスタと、前記複数の処理部が前記データアクセスを要求するための複数のリクエスト信号を前記複数のバスマスタに出力する手段であって、前記複数のリクエスト信号から１つの多重化されたリクエスト信号を生成する多重化を行い、前記多重化されたリクエスト信号を前記複数のバスマスタのうちの１つに出力する多重化モードと、前記複数のリクエスト信号に対し前記多重化を行わずに前記複数のリクエスト信号を前記複数のバスマスタに出力する非多重化モードとを有する多重化手段と、を備える画像処理装置における画像処理方法であって、１フレーム期間内において、前記多重化モードと前記非多重化モードとを切り替えるステップを有することを特徴とする。
【発明の効果】
【００１２】
本発明によれば、各処理機能に対するバスマスタの割り当てをより効率的に行い得るバス制御装置が提供される。
【図面の簡単な説明】
【００１３】
【図１】第１の実施形態に係る撮像装置のブロック図である。
【図２】第１の実施形態に係るバス制御部の構成をより詳細に示す図である。
【図３】比較例に係る使用帯域幅と時間の関係を示すグラフである。
【図４】第１の実施形態に係る使用帯域幅と時間の関係を示すグラフである。
【図５】第１の実施形態に係る動画処理のフローチャートである。
【図６】第２の実施形態に係る動画処理のフローチャートである。
【発明を実施するための形態】
【００１４】
以下、図面を参照しながら、本発明の実施形態を説明する。以下の実施形態では、本発明が適用され得る電子機器の一例である撮像装置の構成を説明する。撮像装置は、例えば、デジタルカメラ、デジタルビデオカメラ、カメラ付携帯電話、監視カメラ、車載カメラ等を含み得る。
【００１５】
（第１の実施形態）
図１は、第１の実施形態に係る撮像装置におけるシステムの構成を説明するためのブロック図である。撮像装置は、光学系１００、撮像部１０１、信号処理部１０２、複数の検出処理部１０３−１〜３、複数の画像生成部１０４−１、２、バス制御部１３０、システムバス１１６を有する。バス制御部１３０は、多重化部１２０、ＤＭＡＣセレクタ１０６、複数のＤＭＡＣ１０７−１〜６を有する。撮像装置は、更に、ＣＰＵ１０５、ＤＲＡＭコントローラ１０８、ＤＲＡＭ１０９、表示コントローラ１１０、表示デバイス１１１、ビデオ出力１１２及びカードコントローラ１１３を有する。また、撮像装置には、記録メディアカード１１４が脱着可能である。
【００１６】
光学系１００は、入射光を撮像部１０１に導いて撮像を行うための撮像光学系である。光学系１００は、撮像レンズ、シャッタ、絞り等を含み得る。なお、光学系１００は撮像装置との脱着が可能な交換レンズであってもよいため、光学系１００が撮像装置に含まれることは必須ではない。
【００１７】
撮像部１０１は、入射光から画像データを得るための部分である。撮像部１０１は、不図示の撮像素子と、相関二重サンプリング部と、利得可変増幅部と、Ａ／Ｄ（Analog-to-Digital）変換部とを含み得る。撮像素子は、光学系１００により導かれ、照射される光を光電変換することにより撮像信号を生成する。相関二重サンプリング部は、撮像信号に含まれるリセットノイズを除去する。利得可変増幅部は、撮像信号のレベルを可変の利得で増幅する。Ａ／Ｄ変換部は、アナログ信号である撮像信号をアナログデータからデジタルデータに変換するＡ／Ｄ変換を行う。信号処理部１０２は、撮像部１０１により得られたデジタルデータに対して所定の信号処理、圧縮処理等を行い、画像データを生成する。撮像部１０１及び信号処理部１０２はＤＭＡＣセレクタ１０６と接続される。
【００１８】
信号処理部１０２、複数の検出処理部１０３−１〜３及び複数の画像生成部１０４−１、２は、本実施形態に係る撮像装置の画像処理を行う処理部である。すなわち、撮像装置は撮影の機能だけでなく、画像処理装置としての機能をも有する。なお、本実施形態において、処理の対象となる画像データは、動画データであるものとして説明するがこれに限定されるものではない。また、信号処理部１０２、複数の検出処理部１０３−１〜３及び複数の画像生成部１０４−１、２の具体的な機能は本実施形態で述べるものに限定されるものではない。すなわち、所定の機能を有する処理部と、当該処理部以外の機能を有する他の処理部を含む構成であればよい。また、複数の画像生成部１０４−１、２は複数個に限定されず、１つであってもよい。
【００１９】
複数の検出処理部１０３−１〜３は、信号処理部１０２により生成された画像データに対し、人物の顔の認識、動体の検出、動体の追尾等を行うために画像中の特徴部を検出する処理（以下、検出処理と呼ぶ）を行う部分である。検出処理部１０３−１〜３は、検出対象等、処理内容が異なる検出処理を行うために複数（本実施形態では３つ）設けられている。
【００２０】
バス制御部１３０は、検出処理部１０３−１〜３等の処理部から出力されたリクエスト信号に基づき、システムバス１１６を介したＤＲＡＭ１０９等のメモリへのデータアクセスを制御するバス制御装置である。
【００２１】
多重化部１２０は、複数の検出処理部１０３−１〜３と接続される。多重化部１２０は、検出処理部１０３−１〜３から入力されたデータアクセスを要求するための複数のリクエスト信号をＤＭＡＣセレクタ１０６に出力する際のリクエスト多重化に関する制御を行う多重化手段である。
【００２２】
複数の画像生成部１０４−１、２は、ＯＳＤ（On-Screen Display）用の画像生成部である（以下、ＯＳＤ用の画像生成等の処理をＯＳＤ処理と呼ぶ）。画像生成部１０４−１、２が複数設けられている理由は、複数の表示系のために複数の画像データを生成する必要がある場合に対応するためである。例えば、ビデオ出力１１２からのＯＳＤ用画像データと、表示デバイス１１１への画像出力のためのＯＳＤ用画像データとを別々に生成する場合などに対応することができる。
【００２３】
ＤＭＡＣセレクタ１０６は、撮像部１０１、信号処理部１０２、多重化部１２０、画像生成部１０４−１、２の各ブロックと、複数のＤＭＡＣ１０７−１〜６との接続関係を制御するバスマスタ選択部である。システムバス１１６に接続された複数のＤＭＡＣ１０７−１〜６は、システムバス１１６を介したデータアクセスを制御するバスマスタとして機能する。複数のＤＭＡＣ１０７−１〜６は、ＤＭＡＣセレクタ１０６に接続された各ブロックからのリクエスト信号を受けて動作する。複数のＤＭＡＣ１０７−１〜６の個数は、例えば、画像処理のためのブロック１個に対して、１個割り当てられるように決定することができる。画像処理のブロックごとにＤＭＡＣを割り当てることにより、処理の切り替えが簡易になるためである。
【００２４】
ＣＰＵ１０５、ＤＲＡＭコントローラ１０８、表示コントローラ１１０及びカードコントローラ１１３は、これらの各部を接続するバスであるシステムバス１１６に接続される。ＣＰＵ１０５は、プログラムを実行することにより、撮像装置全体の制御を行う。ＤＲＡＭコントローラ１０８は、ＤＲＡＭ１０９へのデータアクセスを制御する。表示コントローラ１１０は、画像表示のための画像データを、表示デバイス１１１及びビデオ出力１１２に送信する。表示デバイス１１１は、例えば撮像装置に設けられた液晶表示部であり、ライブビューの表示等を行うことができる。ビデオ出力１１２は、画像データを、外部ディスプレイ等の外部機器に出力するインターフェイスである。カードコントローラ１１３は、フラッシュメモリ等の外付けの記憶媒体である記録メディアカード１１４へのデータアクセスをコントロールする。
【００２５】
なお、検出処理部１０３−１〜３、画像生成部１０４−１、２、ＤＭＡＣ１０７−１〜６の個数は上述のものに限定されない。これらの個数は複数個であればよく、適宜増減が可能である。
【００２６】
次に、図２を参照して、多重化部１２０、ＤＭＡＣセレクタ１０６についてより詳細に説明する。本実施形態においては、システムバス１１６を介してＤＲＡＭ１０９からデータを読み出す（リード）動作に関してのみ説明し、書き込み（ライト）動作についての説明は省略する。ライト動作については、データのアクセス方向が逆になる点を除き、同様の動作によりリクエストの制御が行われる。
【００２７】
まず、多重化部１２０の構成について説明する。多重化部１２０には、検出処理部１０３−１〜３から出力されたデータアクセスを要求するためのリクエスト信号Ｒ０１、Ｒ０２、Ｒ０３が入力される。多重化部１２０は、これらのリクエスト信号を多重化してＤＭＡＣセレクタ１０６に出力することができる。また、多重化部１２０には、ＣＰＵ１０５から多重化モード選択信号ＳＥＬ１が入力される。多重化モード選択信号ＳＥＬ１は、ＣＰＵ１０５から直接多重化部１２０に入力されてもよく、システムバス１１６を介して多重化部１２０に入力されてもよい。多重化部１２０は、リクエスト選択部１２１、リクエストマスク部１２２、リクエスト多重化実行部１２３、リクエストキュー１２４、多重化モード切り替え制御部１２５、データ選択部１２６を有する。
【００２８】
リクエスト選択部１２１は４つのＡＮＤ回路１２１−１〜４を有する。ＡＮＤ回路１２１−１の一方の入力端子には、リクエスト信号Ｒ０１が入力される。ＡＮＤ回路１２１−１の他方の入力端子には、多重化モード選択信号ＳＥＬ１の反転値が入力される。これにより、ＡＮＤ回路１２１−１は、リクエスト信号Ｒ０１と多重化モード選択信号ＳＥＬ１の反転値との論理積をリクエストマスク部１２２に出力する。
【００２９】
同様に、ＡＮＤ回路１２１−２は、リクエスト信号Ｒ０２と多重化モード選択信号ＳＥＬ１の反転値との論理積をリクエストマスク部１２２に出力する。ＡＮＤ回路１２１−３は、リクエスト信号Ｒ０１と多重化モード選択信号ＳＥＬ１との論理積をリクエスト多重化実行部１２３に出力する。ＡＮＤ回路１２１−４は、リクエスト信号Ｒ０２と多重化モード選択信号ＳＥＬ１との論理積をリクエスト多重化実行部１２３に出力する。
【００３０】
多重化モード選択信号ＳＥＬ１が、ローレベルの場合、ＡＮＤ回路１２１−１、２はそれぞれリクエスト信号Ｒ０１、Ｒ０２を出力し、ＡＮＤ回路１２１−３、４はローレベルの信号を出力する。すなわち、リクエスト選択部１２１は、入力されたリクエスト信号Ｒ０１、Ｒ０２をそのままリクエストマスク部１２２、ＤＭＡＣセレクタ１０６を介してＤＭＡＣ１０７−３、４に出力する動作を行う。この場合、リクエスト多重化が行われない非多重化モードとなる。
【００３１】
多重化モード選択信号ＳＥＬ１が、ハイレベルの場合、ＡＮＤ回路１２１−１、２はローレベルの信号を出力し、ＡＮＤ回路１２１−３、４はそれぞれリクエスト信号Ｒ０１、Ｒ０２を出力する。すなわち、リクエスト選択部１２１は、リクエスト信号Ｒ０１、Ｒ０２をリクエストマスク部１２２及びリクエストキュー１２４ではなく、リクエスト多重化実行部１２３に出力する動作を行う。この場合、リクエスト多重化が行われる。すなわち、多重化モード選択信号ＳＥＬ１は、多重化部１２０を多重化モードと非多重化モードのどちらにより動作させるかを選択する信号である。
【００３２】
リクエストマスク部１２２は、３つのＡＮＤ回路１２２−１〜３を有する。ＡＮＤ回路１２２−１、２の一方の入力端子にはＡＮＤ回路１２１−１、２の出力信号がそれぞれ入力される。ＡＮＤ回路１２２−３の一方の入力端子には、後述するリクエスト多重化実行部１２３からの出力信号の多重化リクエスト信号Ｒ０４が入力される。ＡＮＤ回路１２２−１〜３の他方の入力端子には、後述するリクエストマスク信号Ｍ０１の反転値が入力される。リクエストマスク部１２２は、リクエストマスク信号Ｍ０１がローレベルのときは入力信号をそのまま出力し、リクエストマスク信号Ｍ０１がハイレベルのときはローレベルの信号を出力する。
【００３３】
ＤＭＡＣセレクタ１０６は、セレクタ１０６−１、２を有する。セレクタ１０６−１の２つの入力端子には、ＡＮＤ回路１２２−１の出力信号と、画像生成部１０４−１から出力されるリクエスト信号Ｒ０５が入力される。また、セレクタ１０６−１の制御端子にはＣＰＵ１０５から出力された選択信号ＳＥＬ３が入力される。選択信号ＳＥＬ３により選択された信号がＤＭＡＣ１０７−３に出力される。また、セレクタ１０６−２の２つの入力端子には、ＡＮＤ回路１２２−２の出力信号と、画像生成部１０４−２から出力されるリクエスト信号Ｒ０６が入力される。また、セレクタ１０６−２の制御端子にはＣＰＵ１０５から出力された選択信号ＳＥＬ４が入力される。選択信号ＳＥＬ４により選択された信号がＤＭＡＣ１０７−４に出力される。
【００３４】
ＤＭＡＣ１０７−３、４に入力されたリクエスト信号は、システムバス１１６のアクセスについての調停（arbitration）がなされた後、システムバス１１６を介して、例えば、ＤＲＡＭコントローラ１０８に送信される。ＤＲＡＭコントローラ１０８において、リクエスト信号が受理されると、システムバスを介して、ＤＭＡＣ１０７−３、４へリクエスト受理信号（以下、アクノレッジ信号）が送信される。
【００３５】
以下、入力されたリクエスト信号Ｒ０１、Ｒ０２、Ｒ０３が多重化される場合（多重化モード）の動作について説明する。リクエスト多重化実行部１２３には、ＡＮＤ回路１２１−３、４からそれぞれリクエスト信号Ｒ０１、Ｒ０２が入力され、検出処理部１０３−３からリクエスト信号Ｒ０３が入力される。リクエスト多重化実行部１２３は、リクエスト信号Ｒ０１、Ｒ０２、Ｒ０３を所定の規則で順次選択する調停を行う。選択されたリクエスト信号は、多重化リクエスト信号Ｒ０４としてリクエストマスク部１２２を介してＤＭＡＣ１０７−５に入力される。ここで、リクエスト多重化実行部１２３は、多重化リクエスト信号Ｒ０４とともに、リクエストに対応するアドレス、転送長等のシステムバス１１６へのアクセスに必要な信号を送信する。多重化リクエスト信号Ｒ０４は、システムバス１１６を介して、例えば、ＤＲＡＭコントローラ１０８に送信される。ＤＲＡＭコントローラ１０８においてリクエスト信号が受理されると、ＤＲＡＭコントローラ１０８は、システムバス１１６を介してＤＭＡＣ１０７−５にアクノレッジ信号を返信する。アクノレッジ信号は、多重化部１２０に入力され、更に、検出処理部１０３−１〜３のうちのリクエスト多重化実行部１２３で選択されている検出回路部に送信される。
【００３６】
また、リクエスト多重化実行部１２３は、リクエスト選択信号ＳＥＬ２をリクエストキュー１２４に出力する。リクエスト選択信号ＳＥＬ２は、システムバス１１６を介したアクセスを要求する多重化リクエスト信号Ｒ０４に含まれるリクエストと、リクエスト信号Ｒ０１、Ｒ０２、Ｒ０３との対応関係を示す信号である。リクエストキュー１２４は、予約可能なリクエストの最大量を保持可能な容量のバッファにより構成されている。リクエスト選択信号ＳＥＬ２は、リクエストキュー１２４のバッファに順次記憶される。なお、非多重モードの場合においてもリクエスト選択信号ＳＥＬ２は、リクエストキュー１２４のバッファに同様にして格納される。
【００３７】
ＤＭＡＣ１０７−５に入力された多重化リクエスト信号Ｒ０４は、アクセス先アドレスがＤＲＡＭ１０９の場合は、システムバス１１６を介して、ＤＲＡＭコントローラ１０８に送信される。ＤＲＡＭコントローラ１０８において多重化リクエスト信号Ｒ０４が受理されると、ＤＲＡＭコントローラ１０８は、システムバス１１６を介してＤＭＡＣ１０７−５にアクノレッジ信号を返信する。アクノレッジ信号は、多重化部１２０に入力され、更に、検出処理部１０３−１〜３のうちのリクエスト多重化実行部１２３で選択されている検出処理部に送信される。また、ＤＲＡＭコントローラ１０８は、ＤＲＡＭアクセスコマンドをＤＲＡＭ１０９に送信する。送信されたＤＲＡＭアクセスコマンドに応じて、ＤＲＡＭ１０９からデータが読み出される。読み出されたデータは、システムバス１１６、ＤＭＡＣ１０７−５を介して、リードデータＤ０３として、多重化部１２０のデータ選択部１２６に入力される。なお、リードデータＤ０３は、リクエスト信号Ｒ０１、Ｒ０２、Ｒ０３に基づくデータが含まれており多重化されたデータである。
【００３８】
リクエストキュー１２４は、記憶しているリクエスト選択信号ＳＥＬ２に基づき、リクエストキュー読み出し値Ｖ０１、Ｖ０２、Ｖ０３をデータ選択部１２６に出力し、リクエストエンプティーフラグＦ０１を多重化モード切り替え制御部１２５に出力する。リクエストキュー読み出し値Ｖ０１、Ｖ０２、Ｖ０３は、ＤＭＡＣ１０７−５から出力されたリードデータＤ０３が、リクエスト信号Ｒ０１、Ｒ０２、Ｒ０３のどれに対応するデータであるかという対応関係を示す。例えば、リードデータＤ０３が、リクエスト信号Ｒ０１に対応するデータである場合、リクエストキュー読み出し値Ｖ０１はハイレベルであり、リクエストキュー読み出し値Ｖ０２、Ｖ０３はローレベルである。リクエストエンプティーフラグＦ０１は、リクエストキュー１２４内に保持されているリクエスト選択信号ＳＥＬ２がない場合（空の場合）に、アクティブとなる信号である。
【００３９】
多重化モード切り替え制御部１２５には、多重化モード選択信号ＳＥＬ１及びリクエストエンプティーフラグＦ０１が入力される。多重化モード切り替え制御部１２５は、これらの信号に基づいて、リクエストマスク信号Ｍ０１をリクエストマスク部１２２に出力し、入力リードデータ選択信号ＳＥＬ５、ＳＥＬ６、ＳＥＬ７をデータ選択部１２６に出力する。多重化モードの場合には、入力リードデータ選択信号ＳＥＬ５、ＳＥＬ６は、ハイレベルであり、入力リードデータ選択信号ＳＥＬ７はローレベルとなる。非多重化モードの場合には、入力リードデータ選択信号ＳＥＬ５、ＳＥＬ６、ＳＥＬ７はすべてローレベルとなる。
【００４０】
リクエストマスク信号Ｍ０１は、多重化モードと非多重化モードとが切り替わる際の処理の安定化のために、リクエスト信号をマスクする動作の制御に用いられる。ＣＰＵ１０５からの非多重化モードから多重化モードへの切り替え指示により、多重化モード選択信号ＳＥＬ１のレベルが変化すると、多重化モード切り替え制御部１２５は、リクエストマスク信号Ｍ０１のレベルをハイレベルにする。これにより、ＡＮＤ回路１２２−１〜３の出力信号がすべてローレベルになる。すなわち、多重化部１２０からＤＭＡＣ１０７−３〜５に送信されるすべてのリクエスト信号の出力がマスクされる。その後、リクエストキュー１２４が空になり、リクエストエンプティーフラグＦ０１がアクティブになると、多重化モード切り替え制御部１２５は、リクエストマスク信号Ｍ０１のレベルをローレベルにする。これにより、ＡＮＤ回路１２２−１〜３は、前段からの入力信号と同じレベルの信号を出力する状態となり、リクエスト信号のマスクが解除される。
【００４１】
リクエストマスク信号Ｍ０１のレベルをこのように設定する理由を説明する。リクエストエンプティーフラグＦ０１がアクティブでない場合には、リクエストキュー１２４にリクエスト選択信号ＳＥＬ２が残っている。すなわち、読み出すべきデータの少なくとも一部について、検出処理部１０３−１〜３への転送が完了していない状態である。このときに、検出処理部１０３−１〜３への送信状態を切り替えてしまうと、データ処理が正しく実行されなくなる可能性がある。そのため、リクエストエンプティーフラグＦ０１がアクティブとなり、リクエストキュー１２４に格納されたキューがすべて処理された（空となった）ことを確認してから、リクエスト信号のマスクを解除するように構成している。
【００４２】
次に、データ選択部１２６の動作を説明する。データ選択部１２６は、リクエストキュー読み出し値Ｖ０１、Ｖ０２、Ｖ０３及び入力リードデータ選択信号ＳＥＬ５、ＳＥＬ６、ＳＥＬ７に基づき、ＤＭＡＣ１０７−３〜５から出力されるリードデータＤ０１、Ｄ０２、Ｄ０３の出力先を選択する。データ選択部１２６は、ＡＮＤ回路１２６−１〜６とＯＲ回路１２６−７、８とを有する。ＡＮＤ回路１２６−１の一方の入力端子には、ＤＭＡＣ１０７−３からのリードデータＤ０１が入力され、他方の入力端子には、入力リードデータ選択信号ＳＥＬ５の反転値が入力される。同様に、ＡＮＤ回路１２６−２、３の一方の入力端子には、ＤＭＡＣ１０７−４、５からのリードデータＤ０２、Ｄ０３がそれぞれ入力され、他方の入力端子には、入力リードデータ選択信号ＳＥＬ６、ＳＥＬ７の反転値がそれぞれ入力される。多重化モードの場合には、入力リードデータ選択信号ＳＥＬ５、ＳＥＬ６は、ハイレベルであるため、ＡＮＤ回路１２６−１、２の一方の入力端子にはローレベルの信号が入力され、ＡＮＤ回路１２６−１、２の出力はローレベルとなる。すなわち、多重化モードの場合には、データ選択部１２６は、ＤＭＡＣ１０７−３、４からのリードデータＤ０１、Ｄ０２を読み取らないように動作する。入力リードデータ選択信号ＳＥＬ７はローレベルであるため、ＡＮＤ回路１２６−３の一方の入力端子にはハイレベルの信号が入力され、ＡＮＤ回路１２６−３の出力は他方の入力端子に入力されるリードデータＤ０３と同じレベルとなる。
【００４３】
ＡＮＤ回路１２６−３の出力信号はＡＮＤ回路１２６−４〜６の一方の入力端子に入力される。ＡＮＤ回路１２６−４〜６の他方の入力端子には、リクエストキュー読み出し値Ｖ０１、Ｖ０２、Ｖ０３がそれぞれ入力される。ＡＮＤ回路１２６−６の出力信号は検出処理部１０３−３に入力される。ＡＮＤ回路１２６−４、５の出力信号はＯＲ回路１２６−７、８の一方の入力端子に入力される。ＯＲ回路１２６−７、８の他方の入力端子には、ＡＮＤ回路１２６−１、２の出力信号がそれぞれ入力される。ＯＲ回路１２６−７、８の出力信号は、検出処理部１０３−１、２にそれぞれ入力される。
【００４４】
すなわち、多重化モードの場合には、データ選択部１２６に入力されたリードデータＤ０３の出力先は、リクエストキュー読み出し値Ｖ０１、Ｖ０２、Ｖ０３に基づいて、これらに対応する検出処理部１０３−１〜３のいずれかが選択される。また、この場合に、データ選択部１２６に入力されたリードデータＤ０１、Ｄ０２は出力に影響を与えない。非多重化モードの場合には、データ選択部１２６に入力されたリードデータＤ０１、Ｄ０２、Ｄ０３は、検出処理部１０３−１〜３にそれぞれ出力される。言い換えると、データ選択部１２６は多重化されたリードデータＤ３を分離して、分離されたデータを対応するリクエスト信号の入力元に出力するように動作する。
【００４５】
次に多重化モードの場合における画像生成部１０４−１、２の動作を説明する。画像生成部１０４−１、２は、ＯＳＤ用の画像生成のためのリクエスト信号Ｒ０５、Ｒ０６をセレクタ１０６−１、２にそれぞれ入力する。選択信号ＳＥＬ３、ＳＥＬ４に基づきリクエスト信号Ｒ０５、Ｒ０６が選択され、ＤＭＡＣ１０７−３、４に入力されると、ＤＲＡＭ１０９等から読み出されたリードデータＤ０１、Ｄ０２は、画像生成部１０４−１、２に入力される。すなわち、多重化リクエスト信号Ｒ０４が入力されていないＤＭＡＣ１０７−３、４に対しては、リクエスト信号Ｒ０１、Ｒ０２、Ｒ０３とは別のデータアクセスを要求するためのリクエスト信号Ｒ０５、Ｒ０６がそれぞれ入力される。このようにして、多重化モードの適用により、検出処理部１０３−１〜３に用いられなくなったＤＭＡＣ１０７−３、４が、画像生成部１０４−１、２により用いられるように動作可能である。言い換えると、画像生成部１０４−１、２からのリクエスト信号Ｒ０５、Ｒ０６は、検出処理部１０３−１〜３に用いられるバスマスタ以外のバスマスタである、ＤＭＡＣ１０７−３、４に出力される。
【００４６】
次に、撮像装置において行われる画像処理における使用帯域幅と処理時間の関係を比較例と対比しつつ説明し、本実施形態の効果を述べる。以下の説明では、動画の画像処理に並行して検出処理及びＯＳＤ処理が行われるものとする。また、動画の画像処理が１秒間に６０フレーム分行われ（フレームレートが６０ｆｐｓ）、検出処理及びＯＳＤ処理が１秒間に３０フレーム分行われる（フレームレートが３０ｆｐｓ）ものとする。検出処理及びＯＳＤ処理は、高頻度で行う必要が少なく、処理時間の制限に比較的余裕があるためである。本実施形態は上述のように、処理時間の制限が厳しい処理と比較的余裕がある処理が並行して行われる場合に特に有効である。
【００４７】
図３（ａ）、図３（ｂ）、図３（ｃ）は、検出処理、ＯＳＤ処理において、本発明の比較例に係るシステムバス１１６の使用帯域幅と時間の関係を示すグラフである。比較例に係る図３の説明では、撮像装置は常に非多重化モードで動作するものとする。縦軸は、検出処理、ＯＳＤ処理を行う際のシステムバス１１６の使用帯域幅である。ここで、使用帯域幅とは、システムバス１１６を伝送する信号のビットレートを意味する。ビットレートの単位は、［ＭＢ／ｓ］（メガバイト毎秒）である。横軸の時間の範囲、すなわち、処理の制限時間は、約３３．３［ｍｓ］（ミリ秒）とする。これは、検出処理、ＯＳＤ処理のフレームレートが３０ｆｐｓとした場合における１フレームの期間に相当する。
【００４８】
図３（ａ）は、検出処理部１０３−１〜３における検出処理が同時に動作した場合の使用帯域幅を示すグラフである。使用帯域幅は、５［ｍｓ］〜１０［ｍｓ］の期間がピークとなっており、この期間の使用帯域幅は、約８０［ＭＢ／ｓ］である。一方、１５［ｍｓ］以降の期間では、約４０［ＭＢ／ｓ］以下であり、比較的小さい使用帯域幅となっている。すなわち、３３．３［ｍｓ］までの期間において、使用帯域幅は、前半の方が大きい偏った分布となっている。
【００４９】
図３（ｂ）は、画像生成部１０４−１、２におけるＯＳＤ処理が同時に動作した場合の使用帯域幅を示すグラフである。ＯＳＤ処理では、制限時間である３３．３［ｍｓ］の半分以下の時間で処理が終了する。またＯＳＤ処理のための使用帯域幅は、ピークでも約３０［ＭＢ／ｓ］である。
【００５０】
図３（ｃ）は、検出処理とＯＳＤ処理の使用帯域幅を加算したグラフである。使用帯域幅のピークは、検出処理の約８０［ＭＢ／ｓ］にＯＳＤ処理の約３０［ＭＢ／ｓ］が重畳され、約１１０［ＭＢ／ｓ］となっている。使用帯域幅の分布は、更に前半に偏ったものとなっている。また、検出処理とＯＳＤ処理に加え、動画の画像処理が、検出処理及びＯＳＤ処理の倍のフレームレート、すなわち６０ｆｐｓで実行される場合がある。この動画の画像処理における処理の制限時間は、約１６．６７［ｍｓ］である。このとき、検出処理とＯＳＤ処理のピークと一致するフレーム（例えば偶数フレーム）において、アクセスが集中することになり、検出処理、ＯＳＤ処理が、動画の画像処理を妨害する場合がある。これにより、制限時間がより短い動画の画像処理が、制限時間である約１６．６７［ｍｓ］以内に完了しなくなる可能性もある。
【００５１】
図４（ａ）、図４（ｂ）、図４（ｃ）は、本実施形態に係る多重化モードを適用して、図３に示した使用帯域幅の分布の偏りを低減する処理を行った場合の使用帯域幅のグラフである。
【００５２】
図４（ａ）は、図３（ａ）と同様に検出処理部１０３−１〜３における検出処理が同時に動作した場合の使用帯域幅を示すグラフである。ただし、図４（ａ）の例では、０［ｍｓ］から１５［ｍｓ］までの期間において、非多重化モードで処理を行い、１５［ｍｓ］以降の期間において、多重化モードでの動作を行っている。すなわち、１５［ｍｓ］のタイミングでモードを切り替える処理が行われている。すなわち、０［ｍｓ］から１５［ｍｓ］までの期間では、ＤＭＡＣ１０７−３〜５の３個のＤＭＡＣを用いてシステムバス１１６へのアクセスが行われている。一方、１５［ｍｓ］以降の期間では、多重化モードで動作をさせることで、ＤＭＡＣ１０７−５のみを用いてシステムバス１１６へのアクセスが行われている。１５［ｍｓ］以降は、必要とされる使用帯域幅が約４０［ＭＢ／ｓ］以下であるため、リクエスト多重化の有無によらず、処理に要する時間に変化はない。しかしながら、０［ｍｓ］から１５［ｍｓ］までの期間における約８０［ＭＢ／ｓ］の使用帯域幅を要する処理にリクエスト多重化を適用するとＤＭＡＣ１０７−５が１つのみとなることにより処理時間が長くなる。そのため、本実施形態では、１５［ｍｓ］以降の期間にのみ、多重化モードを適用している。これにより、処理に要する時間を長くすることなく多重化モードを適用することができる。
【００５３】
図４（ｂ）は、図３（ｂ）と同様に画像生成部１０４−１、２におけるＯＳＤ処理が同時に動作した場合の使用帯域幅を示すグラフである。ただし、図４（ｂ）の例では、ＯＳＤ処理の開始を１５［ｍｓ］以降としている。前述のとおり、ＯＳＤ処理は、図３（ｂ）に示されるように、１５［ｍｓ］以内に終了するので、ＯＳＤ処理の開始を１５［ｍｓ］以降としても、制限時間である３３．３［ｍｓ］までに処理を完了することができる。１５［ｍｓ］以降の期間において、検出処理は多重化モードで行われているので、ＤＭＡＣ１０７−３、４については、解放されている。したがって、１５［ｍｓ］以降の処理では、選択信号ＳＥＬ３、ＳＥＬ４により、セレクタ１０６−１、２の接続がＯＳＤ処理の入出力側に切り替わる。具体的には、画像生成部１０４−１、２からそれぞれ出力されるリクエスト信号Ｒ０５、Ｒ０６が、ＤＭＡＣ１０７−３、４にそれぞれ入力されるように制御される。
【００５４】
図４（ｃ）は、図３（ｃ）と同様に検出処理とＯＳＤ処理の使用帯域幅を重畳させたものである。ＯＳＤ処理の開始を１５［ｍｓ］以降とすることにより、使用帯域幅の分布の偏りが、図３（ｃ）の例と比べて低減されている。これにより、検出処理、ＯＳＤ処理が、動画の画像処理と同時に動作する際にもたらし得る妨害を軽減することが可能となる。また使用帯域幅が少ない検出処理の後半において、多重化モードを適用することにより、ＤＭＡＣの使用個数を低減することができる。これにより解放されたＤＭＡＣをＯＳＤ処理に割り当てることにより、ＯＳＤ処理用のＤＭＡＣを別途用意する場合と比べて使用するＤＭＡＣの合計個数を削減することができる。
【００５５】
次に、図５を用いて、本実施形態に係る動画処理のための画像処理方法のフローについて説明する。本フローチャートは、上述の撮像装置の動作を時間経過の順序に従って説明するためのものであるため、装置構成の説明において上述したものと重複する説明は省略又は簡略化する。なお、図５におけるステップＳ５０１からステップＳ５０６のループが検出処理の１フレーム期間に対応する。まず、動画処理が開始すると、ＯＳＤ処理を除く、検出処理、動画の画像処理等の処理が開始する。ステップＳ５０１以前の時刻において、検出処理は、ＤＭＡＣ１０７−３〜５の３個を用いた非多重化モードにより行われる。
【００５６】
ステップＳ５０１において、ＣＰＵ１０５は、多重化モードの切り替えタイミングであるか否かを判断し、切り替えタイミングであると判断された場合（ステップＳ５０１でＹｅｓ）、処理はステップＳ５０２に遷移する。切り替えタイミングに至っていないと判断された場合（ステップＳ５０１でＮｏ）、ＣＰＵ１０５は所定時間経過後に再びステップＳ５０１の判断を行う。言い換えると、ステップＳ５０１は、多重化モードの切り換えタイミングを待つステップである。なお、切り替えタイミングを判断するための時刻情報は、ＣＰＵ１０５が有するソフトウェアタイマの機能、あるいは不図示のハードウェアタイマを用いて取得することができる。
【００５７】
ステップＳ５０２において、多重化部１２０を制御する制御手段として機能するＣＰＵ１０５は、多重化部１２０に出力される多重化モード選択信号ＳＥＬ１により、検出処理を非多重化モードから多重化モードに切り替える。これにより、検出処理部１０３−１〜３は１個のＤＭＡＣ１０７−５を共有して、データアクセスのためのリクエストを行い、データの取得を行う。また、ＣＰＵ１０５は、ＤＭＡＣセレクタ１０６に出力される選択信号ＳＥＬ３、ＳＥＬ４により、ＤＭＡＣ１０７−３、４の接続先の切り替えを行う。これにより、ＤＭＡＣ１０７−３、４は、ＯＳＤ処理に割り当てられたＤＭＡＣとして使用される。その後、処理はステップＳ５０３に遷移する。
【００５８】
ステップＳ５０３において、画像生成部１０４−１、２は、ＯＳＤ処理を開始させる。なお、ステップＳ５０３の実行はＣＰＵ１０５からの指示に基づくものであってもよい。
【００５９】
ステップＳ５０４において、ＣＰＵ１０５は、１フレーム期間内の処理が終了したか否かを判断し、終了したと判断された場合（ステップＳ５０４でＹｅｓ）、処理はステップＳ５０５に遷移する。終了していないと判断された場合（ステップＳ５０４でＮｏ）、ＣＰＵ１０５は所定時間経過後に再びステップＳ５０４の判断を行う。言い換えると、ステップＳ５０４は、１フレーム期間内の処理の終了を待つステップである。
【００６０】
ステップＳ５０５において、ステップＳ５０２、Ｓ５０３と逆の動作により、検出処理の非多重モードへの切り替えと、１フレーム期間のＯＳＤ処理の終了と、ＤＭＡＣ１０７−３、４の接続先の選択切り替えと、が行われる。その後、処理はステップＳ５０６に遷移する。
【００６１】
ステップＳ５０６において、ＣＰＵ１０５は、処理が規定のフレーム数まで完了したかどうかを判断する。動画処理を終了させる。規定のフレーム数まで完了したと判断された場合（ステップＳ５０６でＹｅｓ）、動画処理は終了する。規定のフレーム数まで完了していないと判断された場合（ステップＳ５０６でＮｏ）、処理はステップＳ５０１に遷移し、次フレームの処理が行われ、規定のフレーム数まで同じ処理が繰り返される。
【００６２】
本実施形態によれば、多重化部１２０が検出処理部１０３−１〜３からのリクエスト信号を多重化してバスマスタであるＤＭＡＣ１０７−５に入力させる多重化モードを設けた。また、検出処理部１０３−１〜３からのリクエスト信号をＤＭＡＣ１０７−３〜１０７−５にそれぞれ出力する非多重化モードを設けた。そして、多重化モードにおいて、ＤＭＡＣ１０７−３、４をＯＳＤ処理等の他の処理に割り当てる構成とした。これにより、バスマスタ（ＤＭＡＣ）の数を増加させることなく、効率的にデータ転送を行うことができる。また、使用帯域幅の分布の偏りが低減され、検出処理、ＯＳＤ処理が、動画の画像処理と同時に動作する際にもたらし得る妨害を軽減することも可能となる。
【００６３】
（第２の実施形態）
図６を用いて、第２の実施形態に係る動画処理のための画像処理方法のフローについて説明する。第１の実施形態では、１フレームの１５［ｍｓ］以降の期間における検出処理には多重化モードが用いられる。第１の実施形態の検出処理は、１５［ｍｓ］以前の前半部の使用帯域幅が大きい偏った分布となっている場合を前提としており、検出処理の対象画像によっては、適用できない場合がある。例えば、１５［ｍｓ］以降の後半部においても使用帯域幅が大きい分布の場合、多重化モードが適用できないことがある。本実施形態では、検出処理の後半に多重化モードが使用できない可能性がある場合にも用いられ得る動画処理のフローを説明する。なお、装置構成は、第１の実施形態の図１及び図２と同様であるため、装置構成の説明を省略し、動画処理のフローのみを説明する。
【００６４】
動画処理の開始以降、ステップＳ５０１までの動作は、第１の実施形態と同様であり、説明を省略する。ステップＳ６０１において、ＣＰＵ１０５は、リクエスト多重化が禁止されているか否かを判断する。リクエスト多重化が禁止されているか否かは、前フレームでの検出処理に要した時間に応じて決定されている。この処理については後述する。リクエスト多重化が禁止されていないと判断された場合（ステップＳ６０１でＮｏ）、処理はステップＳ５０２に遷移する。その後、第１の実施形態と同様にステップＳ５０２、Ｓ５０３が実行され、処理はステップＳ５０４に遷移する。リクエスト多重化が禁止されていると判断された場合（ステップＳ６０１でＹｅｓ）、処理は、ステップＳ５０４に遷移する。当該フレームの検出処理においては、リクエスト多重化が禁止されているため、多重化モードを使用せずに検出処理が行われる。また、多重化モードを使用しないことから、ＯＳＤ処理も開始されないため、当該フレームではＯＳＤ処理も行われない。ＯＳＤ画像の描画処理は、必ずしも毎フレーム実施する必要がない場合も多い。本実施形態のフローでは、検出処理に長時間を要する被写体の場合にリクエスト多重化が禁止され、ＯＳＤ処理が行われなくなる。このような被写体の場合は、ＯＳＤ処理を一部のフレームで省略することができ、検出処理を高速に実行することができる。
【００６５】
ステップＳ５０４において、第１の実施形態と同様に１フレーム期間内の処理の終了を待つ処理が行われる。本ステップでは、第１の実施形態の処理に加えて、検出処理に要した時間を更に取得する。例えば、本フレームの開始から検出処理完了の割り込みが発生するまでの時間をタイマ等で計測して、検出処理時間が取得される。その後、処理はステップＳ６０２に遷移する。
【００６６】
ステップＳ６０２において、ＣＰＵ１０５は、ステップＳ５０４で得られた検出処理の時間が所定の制限時間を超えているか否かを判断する。検出処理の時間が所定の制限時間を超えていると判断された場合（ステップＳ６０２でＹｅｓ）、処理はステップＳ６０３に遷移する。ステップＳ６０３において、ＣＰＵ１０５は、リクエストの多重化を禁止する設定を行う。これにより、次のフレームの処理では、リクエスト多重化が禁止される。その後、処理はステップＳ５０５に遷移する。検出処理の時間が所定の制限時間内であると判断された場合（ステップＳ６０２でＮｏ）、処理はステップＳ６０４に遷移する。ステップＳ６０４において、ＣＰＵ１０５は、リクエスト多重化を許可する設定を行う。これにより、次のフレームの処理では、リクエスト多重化が行われ、ＯＳＤ処理も行われる。その後、処理はステップＳ５０５に遷移する。その後のステップＳ５０５、Ｓ５０６は第１の実施形態と同様であるため説明を省略する。
【００６７】
なお、ステップＳ６０４において、リクエスト多重化を禁止する設定を行わないことにより、リクエスト多重化を許可したものとする構成であってもよい。逆に、ステップＳ６０３において、リクエスト多重化を許可する設定を行わないことにより、リクエスト多重化を禁止したものとする構成であってもよい。
【００６８】
本実施形態によれば、第１の実施形態の効果に加え、検出処理の後半にリクエスト多重モードが使用できない可能性がある場合にも対応可能な動画処理が提供される。
【００６９】
（その他の実施形態）
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【００７０】
なお、上述の実施形態は、いずれも本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。
【符号の説明】
【００７１】
１０７−１〜６  ＤＭＡＣ（バスマスタ）
１２０          多重化部（多重化手段）
１３０          バス制御部（バス制御装置）
【図１】
0006672026.tif 000002
【図２】
0006672026.tif 000003
【図３】
0006672026.tif 000004
【図４】
0006672026.tif 000005
【図５】
0006672026.tif 000006
【図６】
0006672026.tif 000007