(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-04-18
(45)【発行日】2024-04-26
(54)【発明の名称】撮像装置、撮像装置の制御方法及びプログラム
(51)【国際特許分類】
H04N 23/66 20230101AFI20240419BHJP
H04N 23/60 20230101ALI20240419BHJP
G06F 1/04 20060101ALI20240419BHJP
【FI】
H04N23/66
H04N23/60 500
G06F1/04 550
(21)【出願番号】P 2022013586
(22)【出願日】2022-01-31
【審査請求日】2022-12-15
(73)【特許権者】
【識別番号】000001007
【氏名又は名称】キヤノン株式会社
(74)【代理人】
【識別番号】110003281
【氏名又は名称】弁理士法人大塚国際特許事務所
(72)【発明者】
【氏名】福永 健太朗
【審査官】藏田 敦之
(56)【参考文献】
【文献】特開2013-228848(JP,A)
【文献】特開2004-133881(JP,A)
【文献】特開2012-104046(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
H04N 23/66
H04N 23/60
G06F 1/04
(57)【特許請求の範囲】
【請求項1】
デバイスを着脱可能な装着機構を有する撮像装置であって、
前記デバイスが解析処理を実行するために用いる処理用クロックを再設定するクロック再設定の要求を含むコマンドを生成する生成手段と、
前記装着機構に、前記解析処理を実行する機能を有するデバイスが装着されている場合に、前記デバイスに対して画像を送信し、前記画像に対する前記解析処理の実行指示を送信し、前記実行指示に従って得られた前記解析処理の処理結果を受信する通信手段
と、
前記デバイスから受信した前記処理結果に基づいて、前記デバイスが前記解析処理を実行するために用いる処理用クロックを再設定させるか否かを判定する判定手段と
を備え、
前記通信手段は、
前記判定手段が前記デバイスに前記処理用クロックを再設定させると判定した場合に、前記デバイスに対して、前記コマンドを更に送信する、撮像装置。
【請求項2】
前記通信手段が送信する画像は、前記撮像装置が撮像した画像であり、
前記判定手段は、前記デバイスから受信した前記処理結果に所定の値が含まれる場合に、前記デバイスに前記処理用クロックを再設定させると判定する、請求項
1に記載の撮像装置。
【請求項3】
前記通信手段が送信する画像は、前記解析処理の結果が予め判明している第1の画像であり、
前記判定手段は、前記デバイスから受信した前記解析処理の結果が、前記予め判明している前記解析処理の結果と一致しない場合に前記デバイスに前記処理用クロックを再設定させると判定する、請求項2
に記載の撮像装置。
【請求項4】
前記通信手段は、前記第1の画像の解析処理の結果に基づき前記処理用クロックの再設定が行われた後に、前記画像として、前記撮像装置が撮像した画像を更に送信し、前記画像に対する前記解析処理の実行指示を送信する、請求項
3に記載の撮像装置。
【請求項5】
前記通信手段は、前記デバイスで前記撮像装置が撮像した画像の前記解析処理が行われていない期間に前記第1の画像を送信する、請求項
4に記載の撮像装置。
【請求項6】
前記通信手段は、前記第1の画像を所定の頻度で送信する、請求項
3から
5のいずれか1項に記載の撮像装置。
【請求項7】
前記撮像装置は、前記撮像装置の動作に関する処理を実行する処理手段を更に備え、
前記判定手段が前記デバイスに前記処理用クロックを再設定させると判定した場合、及び、前記通信手段が前記コマンドを送信した場合のうち少なくともいずれかの場合に、前記処理手段は前記撮像装置の動作に関する前記処理の頻度を低減する、請求項
1から
6のいずれか1項に記載の撮像装置。
【請求項8】
前記判定手段が前記デバイスに前記処理用クロックを再設定させると判定した場合、及び、前記通信手段が前記コマンドを送信した場合のうち少なくともいずれかが、所定の回数だけ繰り返された場合に、前記処理手段は前記撮像装置の動作に関する前記処理の頻度を低減する、請求項
7に記載の撮像装置。
【請求項9】
前記処理手段は、実行している前記処理の一部を前記デバイスに割り当てることにより、前記処理の頻度を低減する、請求項
7又は
8に記載の撮像装置。
【請求項10】
前記処理手段における前記処理の負荷に関するユーザ通知を行う通知手段を更に備え、
前記処理手段が前記撮像装置の動作に関する前記処理の頻度を低減する場合に、前記通知手段は前記ユーザ通知を行う、請求項
7から
9のいずれか1項に記載の撮像装置。
【請求項11】
前記通信手段は、前記装着機構に前記解析処理を実行する機能を有するデバイスが装着されている場合に、前記画像に対する前記解析処理の実行指示を送信するのに先立って、前記デバイスに対して前記コマンドを送信して、前記処理用クロックの再設定を行う、請求項1から
10のいずれか1項に記載の撮像装置。
【請求項12】
前記デバイスは、前記撮像装置から供給されるクロックから前記処理用クロックを生成するクロック生成部を有し、
前記クロック生成部は、前記クロック再設定の要求に応じてリセットされ、前記処理用クロックを再生成する、請求項1から
11のいずれか1項に記載の撮像装置。
【請求項13】
前記装着機構はSDカードスロットを含み、
前記デバイスはSDカードの態様のデバイスである、請求項
12に記載の撮像装置。
【請求項14】
デバイスを着脱可能な装着機構を有する撮像装置の制御方法であって、
生成手段が、前記デバイスが解析処理を実行するために用いる処理用クロックを再設定するクロック再設定の要求を含むコマンドを生成する生成工程と、 前記装着機構に、解析処理を実行する機能を有するデバイスが装着されている場合に、
前記撮像装置の通信手段が、
前記デバイスに対して、画像を送信する工程と、
前記デバイスに対して、前記画像に対する前記解析処理の実行指示を送信する工程と、
前記デバイスから、前記実行指示に従って得られた処理結果を受信する工程と、
前記デバイスに対して、前記コマンドを送信する工程と、
判定手段が、前記デバイスから受信した前記処理結果に基づいて、前記デバイスが前記解析処理を実行するために用いる処理用クロックを再設定させるか否かを判定する判定工程と
を含
み、
前記判定工程において前記デバイスに前記処理用クロックを再設定させると判定された場合に、前記コマンドを送信する工程において前記コマンドが送信される、撮像装置の制御方法。
【請求項15】
コンピュータを請求項1から
13のいずれか1項に記載の撮像装置の各手段として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、撮像装置、撮像装置の制御方法及びプログラムに関する。
【背景技術】
【0002】
近年、様々なシーンにおいて、監視カメラにより撮像された画像を用いて、物体の検出や追尾、属性の推定等を行う画像解析、そのような画像解析の結果に基づく物体数の推定等の画像処理が行われている。従来、このような画像処理は、実際の画像処理を実行するPCやサーバ等の高性能な演算装置に監視カメラの映像が転送されることによって行われてきた。これに対し、近年のモバイル用演算装置の処理能力の向上に伴い、監視カメラ側で画像処理を行うことが可能となってきている。監視カメラ(撮像装置)側での処理は、例えば、監視カメラ本体に配置された演算装置によって実行されうる。また、演算装置が配置されたUSB等の着脱可能デバイスを監視カメラに装着することによって、その着脱可能デバイスが監視カメラ側で行う処理の少なくとも一部を実行することもできる。
【0003】
着脱可能デバイスによっては、着脱可能デバイスが装着された装置から供給される電源、クロックを用いて画像処理動作を行うものがある。しかしながら、着脱可能デバイスが装着されるPCやカメラなどの装置の中には、CPU負荷が大きくなってくると着脱可能デバイスへのクロック供給を停止してしまう装置がある。クロック供給を停止されてしまうと、着脱可能デバイス上での画像処理を正常に実行することができない。これに対し特許文献1には、供給クロックが停止した際に自走用クロックでの動作に切り替えて復帰する技術が開示されている。
【先行技術文献】
【特許文献】
【0004】
【非特許文献】
【0005】
【文献】J.Redmon、A.Farhadi、「YOLO9000:Better Faster Stronger」、Computer Vision and Pattern Recognition(CVPR) 2016
【発明の概要】
【発明が解決しようとする課題】
【0006】
特許文献1に開示の技術では、着脱可能デバイス側にクロックが止められたことを検知するための回路の追加や自走用クロックで動作に切るかえるための構成が必要となり、回路規模が大きくなってしまう。
【0007】
そこで本発明は、着脱可能デバイスの回路規模の増大を招くことなく、クロック供給が停止される場合でも着脱可能デバイス上での画像処理を継続可能な状態に復帰可能とする、着脱可能デバイスが装着可能な撮像装置等を提供する。
【課題を解決するための手段】
【0008】
上記課題を解決するための発明は、デバイスを着脱可能な装着機構を有する撮像装置であって、
前記デバイスが解析処理を実行するために用いる処理用クロックを再設定するクロック再設定の要求を含むコマンドを生成する生成手段と、
前記装着機構に、前記解析処理を実行する機能を有するデバイスが装着されている場合に、前記デバイスに対して画像を送信し、前記画像に対する前記解析処理の実行指示を送信し、前記実行指示に従って得られた前記解析処理の処理結果を受信する通信手段と、
前記デバイスから受信した前記処理結果に基づいて、前記デバイスが前記解析処理を実行するために用いる処理用クロックを再設定させるか否かを判定する判定手段とを備え、
前記通信手段は、前記判定手段が前記デバイスに前記処理用クロックを再設定させると判定した場合に、前記デバイスに対して、前記コマンドを更に送信する。
【発明の効果】
【0009】
本発明によれば、着脱可能デバイスの回路規模の増大を招くことなく、クロック供給が停止される場合でも着脱可能デバイス上での画像処理を継続可能な状態に復帰可能とする、着脱可能デバイスが装着可能な撮像装置等を提供することができる。
【図面の簡単な説明】
【0010】
【
図1】実施形態に対応するシステム構成の一例を示す図。
【
図2】実施形態に対応する撮像装置のハードウェア構成の一例を示す図。
【
図3】実施形態に対応する撮像装置の機能構成の一例を示す図。
【
図4】実施形態に対応する着脱可能デバイスのハードウェア構成の一例を示す図。
【
図5】実施形態に対応する着脱可能デバイスの機能構成の一例を示す図。
【
図6】実施形態に対応する画像処理用クロックの再設定処理の一例を示すフローチャート。
【
図7】実施形態に対応する画像処理用クロックの再設定コマンドのデータ構成の一例を示す図。
【
図8】実施形態2に対応する画像処理結果に基づき画像処理用クロックを再設定する処理の一例を示すフローチャート。
【
図9】実施形態3に対応するテスト画像での画像処理結果に基づき画像処理用クロックを再設定する処理の一例を示すフローチャート。
【
図10】実施形態4に対応する着脱可能デバイス側での演算結果に基づき、撮像装置側の画像処理の負荷を調整する処理の一例を示すフローチャート。
【発明を実施するための形態】
【0011】
以下、添付図面を参照して実施形態を詳しく説明する。なお、以下の実施形態は特許請求の範囲に係る発明を限定するものでない。実施形態には複数の特徴が記載されているが、これらの複数の特徴の全てが発明に必須のものとは限らず、また、複数の特徴は任意に組み合わせられてもよい。さらに、添付図面においては、同一若しくは同様の構成に同一の参照番号を付し、重複した説明は省略する。
【0012】
(実施形態1)
<システム構成>
図1に、本実施形態の画像処理システムの構成例を示す。画像処理システムは、例えば、複数の撮像装置110から入力されたそれぞれの撮像画像を解析して特定人物を追跡するシステムとして構築することができる。ただし、実施形態はこれに限られず、画像を解析して所定の情報出力を行う任意のシステムとして構築できる。本システムは、撮像装置110a~110dと、ネットワーク120と、入出力装置130とを含んで構成される。撮像装置110a~110dは、それぞれ、例えば撮像した画像を記録可能なデバイスを着脱可能なスロットを有する。各スロットには着脱可能デバイス100a~100dが挿入され、これにより着脱可能デバイス100a~100dと接続される。これ以降、着脱可能デバイス100a~100dを総称して「着脱可能デバイス100」と表記し、撮像装置110a~110dを総称して「撮像装置110」と表記することがある。以下、システムを構成する各装置について説明する。
【0013】
着脱可能デバイス100は、撮像装置110に対して着脱可能に構成された演算デバイスである。着脱可能デバイス100は、一例として、撮像装置110で撮像された画像を記憶可能に構成された不揮発性の半導体記憶装置(例えば、SDカード)に所定の処理回路を搭載したデバイスとして構成することができる。多くの既存のネットワークカメラなどの撮像装置110には、SDカードスロットが用意されているため、着脱可能デバイス100を接続することで、既存の撮像装置110に対して拡張機能を提供することができる。着脱可能デバイス100は、例えば、SDカードの態様によって、撮像装置110にその全体が挿入可能に構成され、これにより、撮像装置110から突出する部分がない状態で撮像装置110と接続可能に構成することができる。
【0014】
また、着脱可能デバイス100は、例えば、撮像装置110にその半分以上の部分が挿入可能に構成され、これにより、撮像装置110から突出する部分が少ない状態で撮像装置110と接続可能に構成されてもよい。これにより、着脱可能デバイス100が配線等の障害物と干渉することを防ぐことができ、デバイスの利用時の利便性を高めることができる。
【0015】
また、着脱可能デバイス100は、SDカードの態様以外に、少なくともその撮像装置110で撮像された画像を記憶可能な記憶装置が装着される際に使用される任意のインタフェースで、撮像装置110に装着されるように構成されてもよい。例えば、着脱可能デバイス100は、USB(ユニバーサリシリアルバス)インタフェースを有し、撮像装置110のUSBソケットに装着されるように構成されてもよい。更に、着脱可能デバイス100に搭載される所定の処理回路は、例えば、所定の処理を実行するようにプログラムされたFPGA(フィールドプログラマブルゲートアレイ)によって実装できるが、それ以外の形式で実装されてもよい。
【0016】
撮像装置110は、ネットワークカメラ等の撮像装置であり、ネットワーク120を介して入出力装置130に撮像した画像を提供することができる。本実施形態では、撮像装置110は、撮像画像を処理することのできる演算装置を内蔵するものとするが、これに限られない。例えば、撮像装置110に接続されたPC(パーソナルコンピュータ)等の外部コンピュータが存在してもよく、これらの組み合わせを、撮像装置110として扱ってもよい。また、本実施形態では、全ての撮像装置110に、着脱可能デバイス100が装着されているものとする。
図1では、4つの撮像装置110と、それぞれに装着された着脱可能デバイスとが示されているが、これらの装置の組み合わせの数は3つ以下であってもよいし、5つ以上であってもよい。
【0017】
撮像装置110に画像解析等の画像解析処理機能を有する着脱可能デバイス100が装着されることにより、撮像装置110が画像解析等の画像解析処理機能を有しなくても、撮像装置110側で画像解析等を実行することが可能となる。解析処理の具体例は後述する。また、本実施形態のように撮像装置110に画像処理用の演算装置が配置された形態では、演算装置が配置された着脱可能デバイス100を撮像装置110に装着することにより、撮像装置110自体の演算装置と共に着脱可能デバイス100の演算装置を利用することが可能となり、撮像装置110側で実行可能な画像処理を多様化・高度化することができる。
【0018】
入出力装置130は、本システムのユーザからの入力の受け付けや、ユーザへの情報の出力(例えば情報の表示)を行う装置である。本実施形態では、例えば入出力装置130は、PC等のコンピュータとすることができ、そのコンピュータにインストールされたブラウザやネイティブアプリケーションが内蔵されたプロセッサによって実行されることで、情報の入出力が行われる。撮像装置110と入出力装置130は、ネットワーク120を介して通信可能に接続される。ネットワーク120は、例えばEthernet(登録商標)等の通信規格を満たす複数のルータ、スイッチ、ケーブル等を含んで構成される。本実施形態では、ネットワーク120は、撮像装置110と入出力装置130との間の通信を可能とする任意のネットワークであってよく、任意の規模や構成、準拠する通信規格によって構築されうる。例えば、ネットワーク120は、インターネットや有線LAN(Local Area Network)、無線LAN、WAN(Wide Area Network)等でありうる。また、ネットワーク120は、例えば、ONVIF(Open Network Video Interface Forum)規格に準拠した通信プロトコルでの通信が可能なように構成されうる。ただし、これに限られず、ネットワーク120は、例えば、独自の通信プロトコル等の他の通信プロトコルでの通信が可能なように構成されてもよい。
【0019】
<装置構成>
(撮像装置の構成)
続いて、
図2を参照して撮像装置110の構成例について説明する。
図2は、撮像装置110のハードウェア構成例を示す図である。撮像装置110は、そのハードウェア構成として、例えば、撮像部201、画像処理部202、演算処理部203、配信部204、SD I/F部205を含む。I/Fは、インタフェースの略語である。
【0020】
撮像部201は、例えば、光を結像するためのレンズ部と、結像された光に応じたアナログ信号変換する撮像素子とを含んで構成される。レンズ部は、画角を調整するズーム機能や、光量の調整を行う絞り機能などを有する。撮像素子は、光をアナログ信号に変換する際の感度調整を行うゲイン機能を有する。これらの機能は、画像処理部202から通知された設定値に基づいて調整される。撮像部201によって取得されたアナログ信号は、アナログ-デジタル変換回路によってデジタル信号に変換され、画像信号として画像処理部202へ転送される。
【0021】
画像処理部202は、画像処理エンジンと、その周辺デバイス等を含んで構成される。周辺デバイスは、例えば、RAM(Random Access Memory)や、各I/Fのドライバ等を含む。画像処理部202では、撮像部201から取得した画像信号に対して、例えば、現像処理、フィルタ処理、センサ補正、ノイズ除去等の、画像処理を施して画像データを生成する。また、画像処理部202は、レンズ部や撮像素子へ設定値を送信し、適切露出画像を取得できるように、露出調整を実行しうる。画像処理部202において生成された画像データは、演算処理部203へ転送される。
【0022】
演算処理部203は、CPUやMPU等の1つ以上のプロセッサ、RAMやROM等のメモリ、各I/Fのドライバなどから構成される。なお、CPUはCentral Processing Unitの、MPUはMicro Processing Unitの、ROMはリード Only Memoryの、頭字語である。演算処理部203では、撮像装置110の動作に必要な制御・演算等の各種処理を実行する。また、一例において、上述のシステムにおいて実行されるべき処理の各部分を撮像装置110と着脱可能デバイス100とのいずれが実行するかの分担を決定し、その決定した分担に対応する処理を実行しうる。この処理内容や処理の分担の詳細に関しては後述する。画像処理部202から受け取った画像は、配信部204、又は、SD I/F部205へ転送される。また、処理結果のデータも配信部204へ転送される。
【0023】
配信部204は、ネットワーク配信エンジンと、例えば、RAMやETH PHYモジュールなどの周辺デバイス等を含んで構成される。ETH PHYモジュールは、Ethernetの物理(PHY)レイヤの処理を実行するモジュールである。配信部204は、演算処理部203から取得した画像データや処理結果のデータを、ネットワーク120へ配信可能な形式に変換して、変換後のデータをネットワーク120へ出力する。
【0024】
SD I/F部205は、着脱可能デバイス100と接続するためのインタフェース部分で、例えば、電源と、着脱可能デバイス100を着脱するための、着脱ソケット等の装着機構を含んで構成される。ここでは、SD I/F部205が、SD Associationにより策定されたSD規格に従って構成されるものとする。演算処理部203から取得された画像の着脱可能デバイス100への転送や、着脱可能デバイス100からのデータの取得等の、着脱可能デバイス100と撮像装置110との間での通信は、SD I/F部205を通じて行われる。
【0025】
次に
図3を参照して、撮像装置110の機能構成例を説明する。撮像装置110は、その機能として、例えば、撮像制御部301、信号処理部302、記憶部303、制御部304、解析部305、デバイス通信部306、及び、ネットワーク通信部307を含む。
【0026】
撮像制御部301は演算処理部203におけるCPUやMPU等の1つ以上のプロセッサに対応し、撮像部201を介して周囲の環境を撮像するようにする制御を実行する。信号処理部302は画像処理部202に対応し、撮像制御部301によって撮像された画像に対して所定の処理を施して、撮像画像のデータを生成する。以下では、この撮像画像のデータを単に「撮像画像」と呼ぶ。信号処理部302は、例えば、撮像制御部301によって撮像された画像を符号化する。信号処理部302は、静止画像に対して、例えば、JPEG(Joint Photographic Experts Group)等の符号化方式を用いて符号化を行う。また、信号処理部302は、動画像に対して、H.264/MPEG-4 AVC(以下では「H.264」と呼ぶ。)、HEVC(High Efficiency Video Coding)等の符号化方式を用いて符号化を行う。また、信号処理部302は、予め設定された複数の符号化方式の中から、例えば撮像装置110の不図示の操作部を介して、ユーザにより選択された符号化方式を用いて、画像を符号化してもよい。
【0027】
記憶部303は画像処理部202や演算処理部203等に含まれる各種記憶装置に対応し、解析部305において実行可能な解析処理のリストと、解析処理の結果に対する後処理のリストとを記憶する。また、記憶部303は、解析処理の結果が既知であるテスト画像を記憶すると共に、その解析処理の結果を記憶しておくことができる。なお、本実施形態では、実行される画像処理が解析処理であるが、任意の処理が実行されてもよく、記憶部303は、その実行される処理に関連する処理について、解析処理のリストと後処理のリストとを記憶する。
【0028】
制御部304は演算処理部203におけるCPUやMPU等の1つ以上のプロセッサに対応し、信号処理部302、記憶部303、解析部305、デバイス通信部306、ネットワーク通信部307を、それぞれが所定の処理を実行するように制御する。また、制御部304は、撮像装置110において実行されている処理の負荷状態を判定し、負荷が高いと判定される場合にはデバイス通信部306から着脱可能デバイス100へのクロック供給を停止する等の制御も行う。
【0029】
解析部305は演算処理部203におけるCPUやMPU等の1つ以上のプロセッサに対応し、撮像画像に対して実行する画像処理を、後述する解析前処理、解析処理、解析後処理の少なくともいずれかから選択して実行する。解析前処理は、後述の解析処理を実行する前に、撮像画像に対して実行する画像処理である。本実施形態の解析前処理では、一例として、撮像画像を分割して分割画像を作成する処理が実行されるものとする。解析処理は、入力された画像を解析して得られる情報を出力する画像処理である。
【0030】
本実施形態の解析処理では、一例として、解析前処理によって得られた分割画像を入力として、人体検出処理、顔検出処理、車両検出処理の少なくともいずれかを実行し、解析処理結果を出力する処理が実行されるものとする。解析処理は、例えば非特許文献1の技術によって、画像に含まれるオブジェクトを検出できるように学習が行われた機械学習モデルを用いて、分割画像中のオブジェクトの位置を出力するように構成された画像処理でありうる。すなわち、画像処理には、所定の物体を検出するための特徴抽出が可能な学習済みニューラルネットワークを用いた解析処理を含む。解析後処理は、解析処理が実行された後に実行される画像処理である。本実施形態の解析後処理では、一例として、各分割画像に対する解析処理結果に基づいて、各分割画像において検出されたオブジェクトの数を合計した値を処理結果として出力する画像処理が実行されるものとする。なお、解析処理は、パターンマッチングを行って画像中のオブジェクトを検出し、その位置を出力する処理であってもよい。
【0031】
デバイス通信部306はSD I/F部205と対応し、着脱可能デバイス100との通信を行うと共に、着脱可能デバイス100に対して、後述する処理用クロックを生成するためのクロック供給を行う。デバイス通信部306は、入力されたデータを着脱可能デバイス100が処理可能な形式に変換し、その変換によって得られたデータを着脱可能デバイス100に送信する。また、デバイス通信部306は、着脱可能デバイス100からデータを受信し、受信したデータを撮像装置110が処理可能な形式に変換する。本実施形態では、デバイス通信部306は、変換処理として、小数を浮動小数点形式と固定小数点形式との間で変換する処理を実行するものとするが、これに限られず、他の処理がデバイス通信部306によって実行されてもよい。また、本実施形態では、デバイス通信部306は、着脱可能デバイス100に対してSD規格の範囲内で事前に定められた要求(或いは、命令、コマンドシーケンス)を送信し、着脱可能デバイス100からの応答を受信することで、着脱可能デバイス100との通信を行うものとする。ネットワーク通信部307は配信部204に対応し、ネットワーク120を介して、入出力装置130との通信を行う。
【0032】
(着脱可能デバイスの構成)
次に
図4を参照して、着脱可能デバイス100のハードウェア構成例を説明する。着脱可能デバイス100は、一例として、I/F部401、FPGA402、SDコントローラ403、及び、を含んで構成される。着脱可能デバイス100は、撮像装置110が有するSD I/F部205の着脱ソケットに挿抜できる形状で、すなわちSD規格に則った形状で成形されるものとする。
【0033】
I/F部401は、撮像装置110等の装置と着脱可能デバイス100とを接続するためのインタフェース部分である。I/F部401は、例えば、撮像装置110から電源の供給を受け、着脱可能デバイス100内で使用する電源を生成し分配する、電気的な接点端子等を含んで構成される。I/F部401は、撮像装置110のSD I/F部205と同様に、SD規格内で定義(準拠)されている項目に関しては、それに従うものとする。撮像装置110からの画像や設定データの受け取り、FPGA402から撮像装置110へのデータの送信は、I/F部401を介して実行される。
【0034】
FPGA402は、入出力制御部410、処理切替部411、演算処理部412、及び処理クロック生成部413を含んで構成される。FPGA402は、内部の論理回路構造を繰り返し再構成できる半導体デバイスの一種である。FPGA402が実現する処理により、着脱可能デバイス100が装着された装置に、処理機能を追加(提供)することができる。また、FPGA402の再構成機能により、後から論理回路構造を変更することができるため、例えば技術の進歩の早い分野の装置に着脱可能デバイス100を装着することにより、その装置において適時に適切な処理を実行することが可能となる。
【0035】
本実施形態では、FPGAが用いられる例について説明するが、後述する処理を実現可能な限りにおいて、例えば、汎用のASICや専用のLSIが用いられてもよい。FPGA402は、生成される論理回路構造の情報を含んだ設定データが専用のI/Fから書き込まれることにより、又は、その設定データがその専用のI/Fから読み出されることによって、起動される。本実施形態では、この設定データが記憶部404に保持されているものとする。FPGA402は、電源が投入されると、記憶部404から設定データを読み出し、論理回路を生成して起動する。ただし、これに限られず、例えば、着脱可能デバイス内に専用の回路を実装することにより、I/F部401を介して、撮像装置110がFPGA402に設定データを書き込んでもよい。
【0036】
入出力制御部410は、撮像装置110との間で画像を送受信するための回路、撮像装置110から受信したコマンドを解析する回路、解析した結果に基づいて制御を行う回路、等を含んで構成される。ここでのコマンドは、SD規格に定義されているものであり、入出力制御部410は、それらのうちのいくつかを検出することができる。機能の詳細に関しては後述する。入出力制御部410は、記憶処理の場合はSDコントローラ403へ画像を送信し、画像解析処理の場合は演算処理部412へ画像を送信するように制御を行う。また、入出力制御部410は、処理の切り替えの設定データを受け取った場合は、処理切替部411へ設定データを送信する。
【0037】
処理切替部411は、撮像装置110から受け取った設定データに基づいて、記憶部404から画像解析処理機能の情報を取得し、演算処理部412に書き込むための回路を含んで構成される。画像解析処理機能の情報は、例えば、演算処理部412内で処理される演算の順序や種類、演算の係数などを示す設定パラメータである。演算処理部412は、画像解析処理機能を実行するために必要な複数の演算回路を含んで構成される。演算処理部412は、処理切替部411から受け取った画像解析処理機能の情報に基づいて、各演算処理を実行して、その処理結果を撮像装置110へ送信し、及び/又は、その処理結果を記憶部404に記録する。
【0038】
処理クロック生成部413は演算処理の高速化のためPLL(Phase Locked Loop)等で構成され、入出力制御部410を介して撮像装置110から供給されるクロックをクロックアップし処理用の高速クロック(以下、処理用クロック)を生成する。演算処理部412は、処理クロック生成部413で生成された処理用クロックを使用して処理を実行する。そのため撮像装置110からのクロック供給が長期間停止すると処理クロック生成部413で生成される処理用クロックが発振して不定となってしまい、演算処理部412での処理が正常に行えなくなってしまう。また、高速なクロックを生成している場合にクロック供給が長期間停止すると、クロック供給を単に再開しただけではPLLで生成した高速クロックは復帰せずに正常な処理に復帰できない可能性がある。なお、入出力制御部410は撮像装置110から供給されるクロックをそのまま通信に使用しているため、処理用クロックが不定となってしまった状態でもI/F部401を介して撮像装置110とコマンド・データのやりとりは可能である。
【0039】
FPGA402は、事前に保持された複数の処理機能に対応する設定データに含まれる、実行対象の処理機能の設定データを抽出して、その抽出した設定データに基づいて演算処理部412によって実行される処理内容を書き換える。これにより、着脱可能デバイス100が、その複数の処理機能のうちの少なくともいずれかを選択的に実行することができる。また、新規に追加する処理の設定データを随時追加することにより、撮像装置110側で最新の処理を実行させることができる。なお、以下では、複数の処理機能のそれぞれに対応する複数の設定データを有していることを、複数の処理機能を有すると表現する。すなわち、着脱可能デバイス100のFPGA402が1つの処理機能を実行するように構成されている状態であっても、他の処理機能のための設定データにより演算処理部412の処理内容を変更することができる場合、複数の処理機能を有する、と表現する。
【0040】
SDコントローラ403は、SD規格に定義されているような公知のコントロールIC(集積回路)であり、SDプロトコルのスレーブ動作の制御と、記憶部404に対するデータの読み書きの制御とを実行する。記憶部404は、例えばNAND型フラッシュメモリによって構成され、例えば、撮像装置110から書き込まれた記憶データ、演算処理部412に書き込まれる画像解析処理機能の情報、FPGA402の設定データ、解析用の回路データ等の各種情報を記憶する。
【0041】
次に、
図5を参照して着脱可能デバイス100の機能構成例を説明する。着脱可能デバイス100は、その機能構成として、例えば、解析部501、通信部502、及び記憶部503を含む。解析部501は、画像に対する解析処理を含む種々の画像処理(演算処理)を実行する。解析部501はFPGA402に対応し、例えば、撮像装置110から解析処理の設定要求が入力された場合に、解析処理を実行可能な状態にするための設定を行う。解析処理の設定要求は、実行可能とする解析処理の種別を指定する情報を含むことができ、解析部501は設定要求で指定された種類の解析処理を実行可能にするための設定を行う。また、解析部501は、画像が入力された場合、入力画像に対して、実行可能な状態に設定された解析処理を実行する。通信部502は、I/F部401に対応し、撮像装置110との通信を行う。記憶部503は、SDコントローラ403及び記憶部404に対応し、撮像装置110から受信した画像データを記憶すると共に、解析部501における画像処理のワークエリアとして利用される。本実施形態において、記憶部503には、解析部501における解析処理の結果が、処理の途中であっても随時保存されるように構成されている。
【0042】
本実施形態では、実行可能な解析処理の種別として、人体検出処理と顔検出処理とがあるが、実行可能な解析処理の例はこれらに限られない。例えば、事前に記憶部503に記憶された被写体(人物、車両、物等)が入力画像に含まれるか否かを判定する処理であってもよい。具体的には、事前に記憶された人物の画像特徴量と、入力画像から検出された人物の画像特徴量との一致度合いが算出され、一致度合いが閾値以上の場合に事前に記憶された人物であると判定することができる。また、プライバシー保護を目的として入力画像から検出された人物、物体、領域等に対して、所定のマスク画像を重畳したり、モザイク処理を施したりする処理であってもよい。また、人物の特定の行動を機械学習によって学習した学習モデルを用いて、画像中の人物が特定の行動を行っているかを検出する処理であってもよい。さらには、画像中の領域がどのような領域なのかを判定する処理であってもよい。例えば、建物や道路、人物、空等を機械学習によって学習した学習モデルを用いて、画像中の領域がどのような領域なのかを判定する処理であってもよい。
【0043】
以上のように、実行可能な解析処理は、機械学習を用いた画像解析処理にも、機械学習を用いない画像解析処理にも応用可能である。また、上記の各解析処理は、着脱可能デバイス100が単独で行うのではなく、撮像装置110と協働して実行してもよい。
【0044】
<コマンドによる処理用クロック再設定>
次に、
図6のフローチャートを参照して、処理クロック生成部413で生成された処理用クロックの再設定を行う処理の流れを説明する。該フローチャートに対応する処理は、例えば、撮像装置110側においては、制御部304として機能する1以上のプロセッサ(CPUやMPU等)が対応するプログラム(記憶部303として機能するメモリ等に格納)を実行することにより実現できる。また、着脱可能デバイス100側においては、対応する設定データを記憶部404から読み出し論理回路を生成して起動することによりFPGA402により実現できる。
【0045】
まず、S601で撮像装置110の制御部304はデバイス通信部306を介し、着脱可能デバイス100に対して処理用クロックの再設定を要求するクロック再設定コマンドを発行する。I/F部401を介して高速クロックのクロック再設定コマンドを受け取った入出力制御部410は、S611において処理クロック生成部413を構成するPLLをリセットする信号出力し、処理用クロックを再生成する。
【0046】
図7で示されるようにSDコマンド701は、STARTbit702、Directionbit703、コマンドナンバー部704、コマンド引数部705と誤り訂正用データ部706、ENDbit707等から構成される。クロック再設定コマンドは、例えばコマンドナンバー部704を既存のSDコマンドとは異なる番号にしてもよいし、既存のコマンドを用いてコマンド引数部705でリザーブに設定されている部分にリセット要求のフラグを埋め込むようにして発行してもよい。
【0047】
次にS602で撮像装置110の制御部304はデバイス通信部306を介し、着脱可能デバイス100に対して画像処理用の撮像画像を送信する。S612において撮像画像を受け取った通信部502は、撮像画像を解析部501に出力する。続くS603で撮像装置110の制御部304はデバイス通信部306を介し、演算処理の実行指示を命令する実行指示コマンドを発行する。実行指示コマンドを受け取った通信部502は、実行指示コマンドを解析部501に出力する。S613において演算処理部412は、実行指示コマンドを受け取ると既に受信していた撮像画像に対して演算処理を実行し、S614において処理を終了する。当該演算処理は、上述のように予め受信した解析処理設定要求に応じて動作可能に設定されていた解析処理等の画像処理が該当する。
【0048】
続くS604において、撮像装置110は解析部501(演算処理部412)における演算処理に必要な時間分Waitする。Wait時間はあらかじめ撮像装置110側に情報として持たせておいても良いし、着脱可能デバイス100側から処理開始前に読み出すようにしてもよい。続くS605において、撮像装置110の制御部304はデバイス通信部306を介して、演算結果の出力を要求する出力要求コマンドを発行する。S615において出力要求コマンドを受け取った通信部502は、当該コマンドを解析部501に出力する。続くS616において、解析部501は出力要求コマンドに応じて通信部502に対して演算結果を出力し、通信部502は受信した演算結果を撮像装置110に出力する。続くS606において、撮像装置110のデバイス通信部306は着脱可能デバイス100から出力された演算結果を受信する。
【0049】
このように、
図6で説明した処理では、S601においてクロック再設定コマンドを着脱可能デバイス100に対して発行し、演算開始に先立って処理用クロックのリセット及び再生成を行っている。これにより、撮像装置110からのクロック供給が停止され、処理用クロックが不定となってしまっている場合でも、処理クロックを正常に復帰させた状態で演算処理を開始できるため、演算処理を正常に実行することができる。
【0050】
(実施形態2)
<処理用クロックの不定の検出>
上述の実施形態では、着脱可能デバイス100側での演算開始前に処理用クロックの再設定を行う処理について述べた。これに対し、着脱可能デバイス100側での演算処理中に処理用クロックが不定になったことを検出した場合に処理用クロックを再設定することもできる。以下、
図8を参照して本実施形態の処理について説明する。
【0051】
図8を参照して、処理用クロックが不定になったことを演算結果に基づいて検出した際の処理の一例を説明する。該フローチャートに対応する処理は、例えば、撮像装置110側においては、制御部304として機能する1以上のプロセッサ(CPUやMPU等)が対応するプログラム(記憶部303として機能するメモリ等に格納)を実行することにより実現できる。また、
図8においては記載していないものの、着脱可能デバイス100側の処理は、対応する設定データを記憶部404から読み出し論理回路を生成して起動することによりFPGA402により実現できる。
【0052】
まず、S801で撮像装置110の制御部304はデバイス通信部306を介し、着脱可能デバイス100に対して画像処理用の撮像画像を送信する。次にS802で撮像装置110の制御部304はデバイス通信部306を介し、着脱可能デバイス100に演算処理の実行指示コマンドを発行し、撮像画像に対する演算処理を開始させる。S803で撮像装置110の制御部304はデバイス通信部306を介して、着脱可能デバイス100に出力要求コマンドを発行して、演算結果を要求する。
【0053】
S804で撮像装置110は着脱可能デバイス100から出力された演算結果が正常(或いは、異常)であるかどうかの判定を行う。演算結果が正常であるかは、例えば、演算結果が不正値であるかどうかにより判定することができる。ここでの「不正な値」とは例えば、出力結果が全て0x00や0xFFといった、演算結果として出力されるはずのない値や、演算処理を行う撮像画像を変更しているのにも関わらず、前回の演算結果と同じ値が出力された場合等を指す。本実施形態では、演算処理が行われた場合には、随時演算結果が記憶部404に保存されていくので、前回の演算結果と同じ値が出力される場合は演算処理自体が実行されていないことになるので、前回の演算結果は不正な値とみなされる。演算結果が不正値である場合には、当該演算結果は正常でない(即ち、異常)とみなされる。S804で演算結果が不正値であると判定された場合、処理はS805に進む。この場合、撮像装置110は処理用クロックが不定となったものとみなし、S805において撮像装置110の制御部304はデバイス通信部306を介してクロック再設定コマンドを発行し、S801から再度演算処理を実行する。
【0054】
S804で演算結果が不正値でないと判定された場合、処理はS806に進み、撮像装置110は後処理を実行する。当該後処理として、例えば、着脱可能デバイス100から取得した演算結果を画像に重畳して表示する等の処理を行うことができる。
【0055】
このように本実施形態では、着脱可能デバイス100における演算結果の異常を検出し、処理用クロックの再設定を行って異常状態を解消することができる。従って、着脱可能デバイス100における演算の途中において、処理用クロックが不定になった場合であっても、クロックの再設定を行って正常状態に復帰できる。一方、演算結果の異常が検出されない場合には、処理用クロックが不定になっていないので処理用クロックの再設定処理を行う必要がないため、全体としての処理時間を短縮することができる。
【0056】
(実施形態3)
<テスト画像を用いた処理用クロックの不定の検出>
上述の実施形態2では、演算中に検出された演算結果の異常に基づき処理用クロックの再設定を行う処理について述べた。実施形態2では、演算結果の異常を出力結果の特定値(0x00や0xFF)に基づいて判定したが、処理用クロックの不定が特定値として表れない場合も想定される。そこで、本実施形態では、テスト画像に対する演算結果に基づいて、処理用クロックが不定になったこと検出する場合を説明する。ここで、テスト画像とは、着脱可能デバイス100における演算結果が予め判明している(既知である)画像データのことを指す。本実施形態では、当該既知の演算結果を「期待値」と呼ぶ。着脱可能デバイス100が実行する画像の演算処理の内容が同じである場合、同一画像に対して行われる演算処理の結果は一致する。従って、期待値通りの演算結果が返ってこない場合には、例えば処理用クロックの不定に基づくエラーが発生していると推測することができる。本実施形態では、撮像装置110の記憶部303に演算結果が既知の画像をあらかじめテスト画像として持たせておく。また、予めテスト画像を演算して得られた演算結果の値も保持しておくことができる。
【0057】
図9は、本実施形態に対応する処理の一例を示すフローチャートである。まず、S901において撮像装置110の制御部304はデバイス通信部306を介し、記憶部303に記憶されたテスト画像を着脱可能デバイス100に送信する。続くS902において撮像装置110の制御部304はデバイス通信部306を介し、着脱可能デバイス100に対して演算処理の実行指示コマンドを発行し、S903で演算結果の出力要求コマンドを更に発行する。出力要求コマンドに応じて着脱可能デバイス100から送信された演算結果を受信すると、S904で撮像装置110の制御部304は着脱可能デバイス100から取得した演算結果が予め求めておいた期待値と一致しているか否かの判定を行う。S904で演算結果が期待値と一致していないと判定された場合、処理はS905に移行する。この場合、処理用クロックが不定になっていると推定されるため、撮像装置110のデバイス通信部306は着脱可能デバイス100に対してクロック再設定コマンドを発行する。一方、S904で演算結果が期待値と一致していると判定された場合、処理はS906に進む。
【0058】
S906において撮像装置110のデバイス通信部306は、着脱可能デバイス100に対して処理用の画像を送信し、続くS907で演算処理の実行指示要求コマンドを発行し、更にS908で演算結果の要求コマンドを発行する。
【0059】
以上のように、本実施形態では実際の演算処理対象の撮像画像の演算処理を行う以前に、予めテスト画像での演算処理を実行しておく場合を説明したが、当該テスト画像による演算処理は、所定の頻度で実行することができる。例えば、演算処理を実行した画像の枚数が所定枚数と一致する度に実行してもよい。また、テスト画像による演算処理は、着脱可能デバイス100が演算処理を行っていない期間(例えば空き時間)において行わせるようにしてもよい。
【0060】
本実施形態によれば、着脱可能デバイス100における演算処理が正常に行われていないことを、テスト画像を用いた演算結果に基づいて検出することができる。これにより、演算結果が0x00や0xFFといった固定値となる場合や、前回の演算結果から更新されていない場合以外の、演算結果の一部が異常になるような場合にも、演算処理の異常を検出することができる。本実施形態では、予め演算結果の期待値が判明しているテスト画像を用いて演算を行わせるため、実施形態2のような通常の撮像画像を用いた演算処理に比べて、演算処理の異常を高い精度で検出することができる。
【0061】
(実施形態4)
<撮像装置内の負荷低減処理>
上述の実施形態では、着脱可能デバイス100に対してクロック再設定コマンドを発行することで、着脱可能デバイス100側の演算処理を正常に行わせる形態を説明してきた。これに対し本実施形態では、クロック供給の停止状況を回避するための撮像装置110側の処理について説明する。
【0062】
まず、撮像装置110から着脱可能デバイス100へのクロック供給が停止される要因として、撮像装置110における制御部304の高負荷によるものがある。そのため、着脱可能デバイス100側の演算用クロックを再設定しただけで撮像装置110側の高負荷状況を改善せずにそれまでと同様の処理を継続すると、クロック供給の停止を繰り返してしまうおそれがある。そこで、本実施形態では、撮像装置110側の処理負荷を軽減することで、クロック供給の停止を繰り返してしまうような状況を回避する。以下では説明のため、処理用のクロック停止の検出は、
図8のフローと同様に撮像画像に対する演算結果を用いて行うものとする。
【0063】
図10を参照して、本実施形態に対応する撮像装置110における処理の流れを説明する。まず、S1001で撮像装置110の制御部304はデバイス通信部306を介し、画像処理用の撮像画像を着脱可能デバイス100に送信する。続くS1002において、撮像装置110の制御部304はデバイス通信部306を介し、着脱可能デバイス100に対して演算処理の実行指示コマンドを発行し、S1003で演算結果の要求コマンドを発行し、演算結果を取得する。続くS1004において、撮像装置110の制御部304は、着脱可能デバイス100から出力された演算結果が不正値か否かの判定を行う。演算結果が不正値であると判定された場合、処理はS1005に進む。S1005において撮像装置110の制御部304はデバイス通信部306を介し、クロック再設定コマンドを着脱可能デバイスに対して発行すると共に、S1006において、撮像装置110の制御部304は、演算処理の頻度を下げる設定変更を行い、再度、S1001からの処理に移行する。一方、S1004で演算結果が不正値でないと判定された場合、処理頻度を下げることなく処理はS1007に移行し、演算結果を画像に重畳して表示する等の後処理を行う。
【0064】
以上では、演算結果に不正値が検出された場合には直ちに、撮像装置110側の演算頻度を下げる場合を説明した。しかし、実施形態によっては不正値がある回数もしくはある頻度以上、検出された場合に演算処理の頻度を下げるようにしてもよい。
【0065】
また、撮像装置110側の演算処理の頻度を下げるだけでなく、撮像装置110で行っている処理の一部を着脱可能デバイス100上で行わせるように変更することで、撮像装置110の負荷を下げるようにしてもよい。もしくはユーザに対して撮像装置110の処理負荷が大きくなっていること、もしくは処理負荷を下げることを促す旨のユーザ通知を入出力装置130上に出す(表示する)ようにしてもよい。そのようなユーザ通知の例としては、例えばネットワークに配信するストリーム数を減らす、演算処理対象の領域を減らす提案など、撮像装置110の負荷を低減するものがある。
【0066】
本実施形態では、撮像装置110側の負荷を下げることで、処理負荷高い状態が継続し高頻度でクロック供給が止められてしまうといった事態を回避することができるので、処理用クロックが短期間に何度も不定になることを効果的に防止することができる。
【0067】
発明は上記実施形態に制限されるものではなく、発明の精神及び範囲から離脱することなく、様々な変更及び変形が可能である。従って、発明の範囲を公にするために請求項を添付する。
【0068】
(その他の実施例)
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
【符号の説明】
【0069】
100 着脱可能デバイス、110 撮像装置、120 ネットワーク、130 入出力装置