(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-01-10
(45)【発行日】2024-01-18
(54)【発明の名称】電子機器及びその制御方法、プログラム
(51)【国際特許分類】
G06F 21/60 20130101AFI20240111BHJP
【FI】
G06F21/60
(21)【出願番号】P 2020058306
(22)【出願日】2020-03-27
【審査請求日】2023-03-08
(73)【特許権者】
【識別番号】000001007
【氏名又は名称】キヤノン株式会社
(74)【代理人】
【識別番号】110003281
【氏名又は名称】弁理士法人大塚国際特許事務所
(72)【発明者】
【氏名】渡邉 達也
【審査官】上島 拓也
(56)【参考文献】
【文献】国際公開第2010/122895(WO,A1)
【文献】米国特許出願公開第2019/0079702(US,A1)
【文献】特開2006-019932(JP,A)
【文献】特開2012-089010(JP,A)
【文献】特開2014-116864(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/60
G06F 12/14
(57)【特許請求の範囲】
【請求項1】
演算処理部を備えたデバイスを着脱可能な電子機器であって、
前記演算処理部の処理対象であるデータを分割して複数の分割データを得る分割手段と、
前記複数の分割データの各々を前記デバイスへ送信するための、複数種類のコマンドの組み合わせである第1のコマンド群を決定する決定手段と、
前記決定手段により決定された前記第1のコマンド群を用いて分割データを送信する送信手段と、を備え、
前記決定手段は、前記複数の分割データの内のある分割データを送信する場合と、他の分割データを送信する場合とで、前記第1のコマンド群を構成するコマンドの組み合わせを変更することを特徴とする電子機器。
【請求項2】
前記分割データは、前記演算処理部の処理単位に対応していることを特徴とする請求項1に記載の電子機器。
【請求項3】
前記複数の分割データのサイズが同じであることを特徴とする請求項2に記載の電子機器。
【請求項4】
前記データは画像データであり、
前記分割手段は、
前記画像データにおける被写体の大きさと位置に基づいて前記画像データを複数種類の大きさの画像へ分割して複数の分割画像を生成し、
前記複数の分割画像の大きさを所定の大きさに揃えることにより得られる複数の分割画像データを、前記複数の分割データとして得ることを特徴とする請求項3に記載の電子機器。
【請求項5】
前記分割手段は、前記複数の分割データの各々に、データの開始または終了を示す情報を付加することを特徴とする請求項2に記載の電子機器。
【請求項6】
前記決定手段は、所定の通信規格に準拠した複数種類のコマンドを組み合わせることにより前記第1のコマンド群を決定することを特徴とする請求項1乃至5のいずれか1項に記載の電子機器。
【請求項7】
前記決定手段は、前記分割データのデータ量とコマンドの通信に要する時間に基づいて、要求された時間内に前記分割データの送信を終えるように前記第1のコマンド群を構成するコマンドの組み合わせを決定することを特徴とする請求項1乃至6のいずれか1項に記載の電子機器。
【請求項8】
前記処理対象として複数のデータを送信する場合に、データごとに、前記送信手段による前記複数の分割データの送信の順序を変更する変更手段を更に備えることを特徴とする請求項1乃至7のいずれか1項に記載の電子機器。
【請求項9】
前記変更手段により変更された送信の順序を保持する保持手段をさらに備えることを特徴とする請求項8に記載の電子機器。
【請求項10】
前記演算処理部による演算結果を前記デバイスから読み出す読出手段をさらに備えることを特徴とする請求項1乃至7のいずれか1項に記載の電子機器。
【請求項11】
前記処理対象として複数のデータを送信する場合に、データごとに、前記送信手段による前記複数の分割データの送信の順序を変更する変更手段と、
前記変更手段により変更された送信の順序を保持する保持手段と、を備え、
前記読出手段により読み出された演算結果が、前記保持手段に保持されている送信の順序に基づいて前記複数の分割データの各々に対応付けられることを特徴とする請求項10に記載の電子機器。
【請求項12】
前記読出手段は、
所定量のデータを読み出すための複数種類のコマンドの組み合わせである第2のコマンド群を決定し、
前記第2のコマンド群を用いて前記演算結果を前記所定量ずつ前記デバイスから読み出し、
前記所定量の演算結果を読み出す間に、前記第2のコマンド群を構成するコマンドの組み合わせを変更することを特徴とする請求項10または11に記載の電子機器。
【請求項13】
前記所定量のデータは、前記演算処理部が1つの前記分割データを処理することにより得られる演算結果であることを特徴とする請求項12に記載の電子機器。
【請求項14】
前記第1のコマンド群を用いた送信により前記複数の分割データを送信する間に、前記第2のコマンド群を用いた前記所定量ずつの演算結果の受信が行われることを特徴とする請求項12または13に記載の電子機器。
【請求項15】
記憶部を備えたデバイスを着脱可能な電子機器であって、
前記記憶部からデータを読み出すための複数種類のコマンドの組み合わせであるコマンド群を決定する決定手段と、
前記コマンド群のコマンドにより前記デバイスからデータを読み出す読出処理を複数回実行することにより、読み出し対象のデータを前記記憶部から読み出す読出手段と、を備え、
前記決定手段は、前記読み出し対象のデータの内のあるデータを読み出す前記読出処理と、他のデータを読み出す前記読出処理とで、前記コマンド群を構成する複数種類のコマンドの組み合わせを変更することを特徴とする電子機器。
【請求項16】
前記読出処理は前記デバイスから所定量のデータを読み出す処理であり、
前記決定手段は、前記所定量のデータとコマンドの通信に要する時間に基づいて、要求された時間内に前記所定量のデータの受信を終えるように、前記コマンド群を構成するコマンドの組み合わせを決定することを特徴とする請求項15に記載の電子機器。
【請求項17】
演算処理部を備えたデバイスを着脱可能な電子機器の制御方法であって、
前記演算処理部の処理対象であるデータを分割して複数の分割データを得る分割工程と、
前記複数の分割データの各々を前記デバイスへ送信するための、複数種類のコマンドの組み合わせである第1のコマンド群を決定する決定工程と、
前記決定工程により決定された前記第1のコマンド群を用いて分割データを送信する送信工程と、を備え、
前記決定工程では、前記複数の分割データの内のある分割データを送信する場合と、他の分割データを送信する場合とで、前記第1のコマンド群を構成するコマンドの組み合わせを変更することを特徴とする電子機器の制御方法。
【請求項18】
記憶部を備えたデバイスを着脱可能な電子機器の制御方法であって、
前記記憶部に記憶されているデータを読み出すための複数種類のコマンドの組み合わせであるコマンド群を決定する決定工程と、
前記コマンド群を用いて前記デバイスからデータを読み出す読出処理を複数回実行することにより、読み出し対象のデータを読み出す読出工程と、を備え、
前記決定工程では、前記読み出し対象のデータの内のあるデータを読み出す前記読出処理と、他のデータを読み出す前記読出処理とで、前記コマンド群を構成する複数種類のコマンドの組み合わせを変更することを特徴とする電子機器の制御方法。
【請求項19】
請求項1乃至16のいずれか1項に記載された電子機器の各手段としてコンピュータを機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、着脱可能デバイスと接続可能な電子機器及びその制御方法、プログラムに関する。
【背景技術】
【0002】
近年、監視カメラにより撮像された画像を用いて物体の検出や追尾、属性の推定等を行う画像解析、そのような画像解析の結果を用いた物体数の推定が様々なシーンで行われている。これまでは監視カメラの映像をPCやサーバ等の高性能な演算装置に転送して画像解析が行われてきたが、モバイル用演算装置の処理能力の向上に伴い、画像解析をカメラ側で直接行う事例も増えてきている。実装形態としてはカメラ本体に演算装置を配置する他に、USB等の着脱可能デバイスに演算装置を配置する形態も提案されている。カメラ本体に演算装置を配置した形態では、演算装置を配置した着脱可能デバイスを装着することで、カメラ側でより高度な解析処理を行うことができる。
【0003】
しかし、汎用的なI/Fを用いてカメラと着脱可能デバイスを接続した場合、通信に用いられるプロトコルは公知である。そのため、データを容易に解析されてしまう可能性がある。特許文献1では、通信を確立する際に暗号化を用いて通信設定のための情報を交換する通信設定方式が開示されている。また、特許文献2では複数のI/F(複数の通信経路)で機器間を接続し、通信経路の数で暗号化した情報を復元する方法が開示されている。
【先行技術文献】
【特許文献】
【0004】
【文献】特開2015-046927号公報
【文献】特開2013-144037号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、上述の特許文献1に開示された従来技術では、通信方法を確立するための認証方法に関しては記載があるが、通信確立後のデータの送受信方式に関しては言及されていない。また、上述の特許文献2に開示された従来技術では、データを暗号化するための方法に関しては記載があるが、機器間のI/Fのプロトコル自体が解析されることに関しては言及されていない。
【0006】
本発明は、既知の通信プロトコルを用いて接続された電子機器とデバイスの間の通信内容が第三者により把握されてしまう可能性を低減する技術を提供する。
【課題を解決するための手段】
【0007】
本発明の一態様による電子機器は以下の構成を備える。すなわち、
演算処理部を備えたデバイスを着脱可能な電子機器であって、
前記演算処理部の処理対象であるデータを分割して複数の分割データを得る分割手段と、
前記複数の分割データの各々を前記デバイスへ送信するための、複数種類のコマンドの組み合わせである第1のコマンド群を決定する決定手段と、
前記決定手段により決定された前記第1のコマンド群を用いて分割データを送信する送信手段と、を備え、
前記決定手段は、前記複数の分割データの内のある分割データを送信する場合と、他の分割データを送信する場合とで、前記第1のコマンド群を構成するコマンドの組み合わせを変更する。
【発明の効果】
【0008】
本発明によれば、既知の通信プロトコルを用いて接続された電子機器とデバイスの間の通信内容が第三者により把握されてしまう可能性を低減することができる。
【図面の簡単な説明】
【0009】
【
図1】実施形態によるシステム構成の一例を示す図。
【
図2】撮像装置のハードウェア構成例を示すブロック図。
【
図4】着脱可能デバイスのハードウェア構成例を示すブロック図。
【
図5】着脱可能デバイスの機能構成例を示すブロック図。
【
図6】システムで実行される処理の例を示すフローチャート。
【
図8】第1実施形態による分割画像データの生成例を示した図。
【
図9】第1実施形態による画像送信処理を示すフローチャート。
【
図10】第1実施形態による演算結果の受信処理を示すフローチャート。
【
図11】第2実施形態による、複数フレームの送受信処理を示したフローチャート。
【
図12】理機能の情報を格納しているアドレス内のデータを概略的に示す図。
【発明を実施するための形態】
【0010】
以下、添付図面を参照して実施形態を詳しく説明する。なお、以下の実施形態は特許請求の範囲に係る発明を限定するものではない。実施形態には複数の特徴が記載されているが、これらの複数の特徴の全てが発明に必須のものとは限らず、また、複数の特徴は任意に組み合わせられてもよい。さらに、添付図面においては、同一若しくは同様の構成に同一の参照番号を付し、重複した説明は省略する。
【0011】
[第1実施形態]
以下、着脱可能なデバイスを装着する電子機器として撮像装置を用いた例を説明する。
<システム構成>
図1に、本実施形態の画像解析システムの構成例を示す。以下では、一例として、このシステムが特定人物追跡システムである場合について説明する。ただし、これに限られず、画像を解析して所定の情報出力を行う任意のシステムに、以下の議論を適用することができる。本システムは、撮像装置110a~110dと、ネットワーク120と、入出力装置130とを含んで構成される。なお、撮像装置110a~110dは、それぞれ、例えば撮像した画像を記録可能なデバイスを着脱可能なスロットを有し、そのスロットに着脱可能デバイス100a~100dが挿入されることにより、着脱可能デバイス100a~100dと接続される。なお、以下では、着脱可能デバイス100a~100dを「着脱可能デバイス100」と表記し、撮像装置110a~110dを「撮像装置110」と表記する。なお、以下では、画像という用語は、映像、動画、静止画を総称するものとする。
【0012】
着脱可能デバイス100は、撮像装置110に対して着脱可能な演算デバイスである。着脱可能デバイス100は、一例として、SDカードに所定の処理回路を搭載したメモリデバイスである。着脱可能デバイス100は、例えば、SDカードの態様によって、撮像装置110にその全体が挿入可能に構成され、これにより、撮像装置110から突出する部分がない状態で撮像装置110と接続可能に構成することができる。また、着脱可能デバイス100は、例えば、撮像装置110にその半分以上の部分が挿入可能に構成され、これにより、撮像装置110から突出する部分が少ない状態で撮像装置110と接続可能に構成されてもよい。これにより、着脱可能デバイス100が配線等の障害物と干渉することを防ぐことができ、デバイスの利用時の利便性を高めることができる。また、多くの既存のネットワークカメラなどの撮像装置110には、SDカードスロットが用意されているため、既存の撮像装置110に対して、着脱可能デバイス100により拡張機能を提供することができる。なお、着脱可能デバイス100は、SDカードの態様以外に、少なくともその撮像装置110で撮影された画像を記憶可能な記憶装置が装着される際に使用される任意のインタフェースで、撮像装置110に装着されるように構成されてもよい。例えば、着脱可能デバイス100は、USB(ユニバーサリシリアルバス)インタフェースを有し、撮像装置110のUSBソケットに装着されるように構成されてもよい。また、所定の処理回路は、例えば、所定の処理を実行するようにプログラムされたFPGA(フィールドプログラマブルゲートアレイ)によって実装されるが、それ以外の形式で実装されてもよい。
【0013】
撮像装置110は、ネットワークカメラ等の撮像装置である。本実施形態では、撮像装置110は、画像を処理することのできる演算装置を内蔵するものとするが、これに限られない。例えば、撮像装置110に接続されたPC(パーソナルコンピュータ)等の外部コンピュータが存在してもよく、これらの組み合わせを、撮像装置110として扱ってもよい。また、本実施形態では、全ての撮像装置110に、着脱可能デバイス100が装着されているものとする。なお、
図1では、4つの撮像装置110と、それぞれに装着された着脱可能デバイスとが示されているが、これらの装置の組み合わせの数は3つ以下であってもよいし、5つ以上であってもよい。撮像装置110に、画像解析処理機能を有する着脱可能デバイス100が装着されることにより、撮像装置110が画像解析処理機能を有しなくても、撮像装置110側で画像処理を実行することが可能となる。また、本実施形態のように撮像装置110に画像処理用の演算装置が配置された形態では、演算装置が配置された着脱可能デバイス100が撮像装置110に装着されることにより、撮像装置110側で実行可能な画像処理を多様化・高度化することができる。
【0014】
入出力装置130は、ユーザからの入力の受け付けや、ユーザへの情報の出力(例えば情報の表示)を行う装置である。本実施形態では、例えば入出力装置130は、PC等のコンピュータであり、そのコンピュータにインストールされたブラウザやネイティブアプリケーションによって、情報の入出力が行われる。
【0015】
撮像装置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は、例えば、独自の通信プロトコル等の他の通信プロトコルでの通信が可能なように構成されてもよい。
【0016】
<装置構成>
(撮像装置の構成)
続いて、撮像装置110の構成について説明する。
図2は、撮像装置110のハードウェア構成例を示す図である。撮像装置110は、そのハードウェア構成として、例えば、撮像部201、画像処理部202、演算処理部203、配信部204、SD I/F部205を含む。なお、I/Fは、インタフェースの略語である。
【0017】
撮像部201は、光を結像するためのレンズ部と、結像された光に応じたアナログ信号変換する撮像素子とを含んで構成される。レンズ部は、画角を調整するズーム機能や、光量の調整を行う絞り機能などを有する。撮像素子は、光をアナログ信号に変換する際の感度調整を行うゲイン機能を有する。これらの機能は、画像処理部202から通知された設定値に基づいて調整される。撮像部201によって取得されたアナログ信号は、アナログ-デジタル変換回路によってデジタル信号に変換され、画像信号として画像処理部202へ転送される。
【0018】
画像処理部202は、画像処理エンジンと、その周辺デバイス等を含んで構成される。周辺デバイスは、例えば、RAM(Random Access Memory)や、各I/Fのドライバ等を含む。画像処理部202では、撮像部201から取得した画像信号に対して、例えば、現像処理、フィルタ処理、センサ補正、ノイズ除去等の、画像処理を施して画像データを生成する。また、画像処理部202は、レンズ部や撮像素子へ設定値を送信し、適切露出画像を取得できるように、露出調整を実行しうる。画像処理部202において生成された画像データは、演算処理部203へ転送される。
【0019】
演算処理部203は、CPUやMPU等の1つ以上のプロセッサ、RAMやROM等のメモリ、各I/Fのドライバなどから構成される。なお、CPUはCentral Processing Unitの、MPUはMicro Processing Unitの、RAMはRandom Access Memoryの、ROMはRead Only Memoryの、頭字語である。演算処理部203では、一例において、上述のシステムにおいて実行されるべき処理の各部分を撮像装置110と着脱可能デバイス100とのいずれが実行するかの分担を決定し、その決定した分担に対応する処理を実行しうる。また、演算処理部203は、着脱可能デバイス100とのSD規格(SD Associationにより策定)に則ったSD通信のプロトコル制御も行う。SD通信のプロトコル制御機能の詳細に関しては後述する。画像処理部202から受け取った画像は、配信部204、又は、SD I/F部205へ転送される。また、処理結果のデータも配信部204へ転送される。
【0020】
配信部204は、ネットワーク配信エンジンと、例えば、RAMやETH PHYモジュールなどの周辺デバイス等を含んで構成される。ETH PHYモジュールは、Ethernetの物理(PHY)レイヤの処理を実行するモジュールである。配信部204は、演算処理部203から取得した画像データや処理結果のデータを、ネットワーク120へ配信可能な形式に変換して、変換後のデータをネットワーク120へ出力する。SD I/F部205は、着脱可能デバイス100と接続するためのインタフェース部分で、例えば、電源と、着脱可能デバイス100を着脱するための、着脱ソケット等の装着機構を含んで構成される。ここでは、SD I/F部205が、SD Associationにより策定されたSD規格に従って構成されるものとする。演算処理部203から取得された画像の着脱可能デバイス100への転送や、着脱可能デバイス100からのデータの取得等の、着脱可能デバイス100と撮像装置110との間での通信は、SD I/F部205を通じて行われる。
【0021】
図3に、撮像装置110の機能構成例を示す。撮像装置110は、その機能として、例えば、撮像制御部301、信号処理部302、記憶部303、制御部304、解析部305、デバイス通信部306、及び、ネットワーク通信部307を含む。
【0022】
撮像制御部301は、撮像部201を介して周囲の環境を撮影するようにする制御を実行する。信号処理部302は、撮像制御部301によって撮影された画像に対して所定の処理を施して、撮影画像のデータを生成する。以下では、この撮影画像のデータを単に「撮影画像」と呼ぶ。信号処理部302は、例えば、撮像制御部301によって撮影された画像を符号化する。信号処理部302は、静止画像に対して、例えば、JPEG(Joint Photographic Experts Group)等の符号化方式を用いて符号化を行う。また、信号処理部302は、動画像に対して、H.264/MPEG-4 AVC(以下では「H.264」と呼ぶ。)、HEVC(High Efficiency Video Coding)等の符号化方式を用いて符号化を行う。また、信号処理部302は、予め設定された複数の符号化方式の中から、例えば撮像装置110の不図示の操作部を介して、ユーザにより選択された符号化方式を用いて、画像を符号化してもよい。
【0023】
記憶部303は、後述する解析処理の結果を記憶する。なお、本実施形態では、実行される処理が解析処理であるが、任意の処理が実行されてもよい。制御部304は、信号処理部302、記憶部303、解析部305、デバイス通信部306、ネットワーク通信部307を、それぞれが所定の処理を実行するように、制御する。
【0024】
解析部305は、撮影画像に対して、解析前処理、解析処理、解析後処理の少なくともいずれかを選択的に実行する。解析前処理は、後述の解析処理を実行する前に、撮影画像に対して実行する処理である。本実施形態の解析前処理では、一例として、撮影画像を分割して分割画像を作成する処理が実行されるものとする。解析処理は、入力された画像を解析して得られる情報を出力する処理である。本実施形態の解析処理では、一例として、解析前処理によって得られた分割画像を入力として、人体検出処理、顔検出処理、車両検出処理の少なくともいずれかを実行し、解析処理結果を出力する処理が実行されるものとする。解析処理は、例えば非特許文献1の技術によって、画像に含まれるオブジェクトを検出できるように学習が行われた機械学習モデルを用いて、分割画像中のオブジェクトの位置を出力するように構成された処理でありうる。解析後処理は、解析処理が実行された後に実行される処理である。本実施形態の解析後処理では、一例として、各分割画像に対する解析処理結果に基づいて、各分割画像において検出されたオブジェクトの数を合計した値を処理結果として出力する処理が実行されるものとする。なお、解析処理は、パターンマッチングを行って画像中のオブジェクトを検出し、その位置を出力する処理であってもよい。
【0025】
デバイス通信部306は、着脱可能デバイス100との通信を行う。デバイス通信部306は、入力されたデータを着脱可能デバイス100が処理可能な形式に変換し、その変換によって得られたデータを着脱可能デバイス100に送信する。また、デバイス通信部306は、着脱可能デバイス100からデータを受信し、受信したデータを撮像装置110が処理可能な形式に変換する。本実施形態では、デバイス通信部306は、変換処理として、小数を浮動小数点形式と固定小数点形式との間で変換する処理を実行するものとするが、これに限られず、他の処理がデバイス通信部306によって実行されてもよい。また、本実施形態では、デバイス通信部306は、着脱可能デバイス100に対してSD規格の範囲内で事前に定められたコマンドシーケンスを送信し、着脱可能デバイス100からの応答を受信することで、着脱可能デバイス100との通信を行うものとする。ネットワーク通信部307は、ネットワーク120を介して、入出力装置130との通信を行う。
【0026】
(着脱可能デバイスの構成)
図4に、着脱可能デバイス100のハードウェア構成例を示す。着脱可能デバイス100は、一例として、I/F部401、FPGA402、SDコントローラ403、及び、記憶部404を含んで構成される。着脱可能デバイス100は、撮像装置110が有するSD I/F部205の着脱ソケットに挿抜できる形状で、すなわちSD規格に則った形状で成形されるものとする。
【0027】
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を介して実行される。
【0028】
FPGA402は、入出力制御部410、処理切替部411、及び演算処理部412を含んで構成される。FPGA402は、内部の論理回路構造を繰り返し再構成できる半導体デバイスの一種である。FPGA402が実現する処理により、着脱可能デバイス100が装着された装置に、処理機能を追加(提供)することができる。また、FPGA402の再構成機能により、後から論理回路構造を変更することができるため、例えば技術の進歩の早い分野の装置に着脱可能デバイス100を装着することにより、その装置において適時に適切な処理を実行することが可能となる。なお、本実施形態では、FPGAが用いられる例について説明するが、後述する処理を実現可能である限りにおいて、例えば、汎用のASICや専用のLSIが用いられてもよい。FPGA402は、生成される論理回路構造の情報を含んだ設定データが専用のI/Fから書き込まれることにより、又は、その設定データがその専用のI/Fから読み出されることによって、起動される。本実施形態では、この設定データが記憶部404に保持されているものとする。FPGA402は、電源が投入されると、記憶部404から設定データを読み出し、論理回路を生成して起動する。ただし、これに限られず、例えば、着脱可能デバイス内に専用の回路を実装することにより、I/F部401を介して、撮像装置110がFPGA402に設定データを書き込んでもよい。
【0029】
入出力制御部410は、撮像装置110との間で画像を送受信するための回路、撮像装置110から受信したコマンドを解析する回路、解析した結果に基づいて制御を行う回路、等を含んで構成される。ここでのコマンドは、SD規格に定義されているものであり、入出力制御部410は、それらのうちのいくつかを検出することができる。機能の詳細に関しては後述する。入出力制御部410は、記憶処理の場合はSDコントローラ403へ画像を送信し、画像解析処理の場合は演算処理部412へ画像を送信するように制御を行う。また、入出力制御部410は、処理の切り替えの設定データを受け取った場合は、処理切替部411へ設定データを送信する。処理切替部411は、撮像装置110から受け取った設定データに基づいて、記憶部404から画像解析処理機能の情報を取得し、演算処理部412に書き込むための回路を含んで構成される。画像解析処理機能の情報は、例えば、演算処理部412内で処理される演算の順序や種類、演算の係数などを示す設定パラメータである。
【0030】
演算処理部412は、画像解析処理機能を実行するために必要な複数の演算回路を含んで構成される。演算処理部412は、処理切替部411から受け取った画像解析処理機能の情報に基づいて、各演算処理を実行して、その処理結果を撮像装置110へ送信し、及び/又は、その処理結果を記憶部404に記録する。このように、FPGA402は、事前に保持された複数の処理機能に対応する設定データに含まれる、実行対象の処理機能の設定データを抽出して、その抽出した設定データに基づいて演算処理部412によって実行される処理内容を書き換える。これにより、着脱可能デバイス100が、その複数の処理機能のうちの少なくともいずれかを選択的に実行することができる。また、新規に追加する処理の設定データを随時追加することにより、撮像装置110側で最新の処理を実行させることができる。なお、以下では、複数の処理機能のそれぞれに対応する複数の設定データを有していることを、複数の処理機能を有すると表現する。すなわち、着脱可能デバイス100のFPGA402が1つの処理機能を実行するように構成されている状態であっても、他の処理機能のための設定データにより演算処理部412の処理内容を変更することができる場合、複数の処理機能を有する、と表現する。
【0031】
SDコントローラ403は、SD規格に定義されているような公知のコントロールIC(集積回路)であり、SDプロトコルのスレーブ動作の制御と、記憶部404に対するデータの読み書きの制御とを実行する。記憶部404は、例えばNAND型フラッシュメモリによって構成され、例えば、撮像装置110から書き込まれた記憶データ、演算処理部412に書き込まれる画像解析処理機能の情報、FPGA402の設定データ等の各種情報を記憶する。なお、記憶部404に対するデータの書き込みおよび読み出しはブロック(例えば、512BYTEのサイズを有する)を単位として行われる。
【0032】
図5に、着脱可能デバイス100の機能構成例を示す。着脱可能デバイス100は、その機能構成として、例えば、解析部501及び通信部502を含む。解析部501は、画像に対する解析処理を実行する。解析部501は、例えば、解析処理設定要求を入力された場合に、入力された解析処理を実行可能な状態にするための設定を実行する。また、解析部501は、画像が入力された場合、その入力された画像に対して、実行可能な状態に設定された解析処理を実行する。本実施形態では、実行可能な解析処理は、人体検出処理と顔検出処理であるものとするが、これらに限られない。例えば、事前に記憶された人物が画像に含まれるか否かを判定する処理(後述する顔認証処理)であってもよい。例えば、事前に記憶された人物の画像特徴量と、入力された画像から検出された人物の画像特徴量との一致度合いが算出され、一致度合いが閾値以上の場合に事前に記憶された人物であると判定される。また、プライバシー保護を目的として。入力された画像から検出された人物に対して、所定のマスク画像を重畳したり、モザイク処理を施したりする処理であってもよい。また、人物の特定の行動を機械学習によって学習した学習モデルを用いて、画像中の人物が特定の行動を行っているかを検出する処理であってもよい。さらには、画像中の領域がどのような領域なのかを判定する処理であってもよい。例えば、建物や道路、人物、空等を機械学習によって学習した学習モデルを用いて、画像中の領域がどのような領域なのかを判定する処理であってもよい。以上のように、実行可能な解析処理は、機械学習を用いた画像解析処理にも、機械学習を用いない画像解析処理にも応用可能である。また、上記の各解析処理は、着脱可能デバイス100が単独で行うのではなく、撮像装置110と協働して実行してもよい。通信部502は、I/F部401を介して、撮像装置110との通信を行う。
【0033】
入出力装置130は、一般的なPC等のコンピュータとして構成され、例えば、プロセッサが、メモリや記憶装置に格納されたプログラムを実行することにより、各種機能を実行することができる。
【0034】
<処理の流れ>
続いて、システム内で実行される処理の流れの例について説明する。なお、以下の各処理のうち撮像装置110が実行する処理は、例えば、演算処理部203内のプロセッサがメモリ等に記憶されたプログラムを実行することによって実現される。ただし、これは一例に過ぎず、後述の処理の一部又は全部が、専用のハードウェアによって実現されてもよい。また、着脱可能デバイス100や入出力装置130が実行する処理についても、各装置におけるプロセッサがメモリ等に記憶されたプログラムを実行することによって実現されてもよいし、処理の一部又は全部を、専用のハードウェアによって実現してもよい。
【0035】
(全体の流れ)
図6に、システムで実行される画像解析処理の一連の流れを概略的に示す。本処理では、まず、ユーザによって、撮像装置110に着脱可能デバイス100が装着される(S601)。撮像装置110は、着脱可能デバイス100の初期化シーケンスを実行する(S602)。この初期化シーケンスでは、撮像装置110と着脱可能デバイス100との間で所定のコマンドが送受信されることにより、撮像装置110が、着脱可能デバイス100を使用可能な状態となる。その後、撮像装置110は、着脱可能デバイス100が実行可能な処理を把握し、ローカルで実行可能な(撮像装置110単体で又は撮像装置110と着脱可能デバイス100の組み合わせで実行可能な)処理を把握する(S603)。なお、着脱可能デバイス100は、任意の処理を実行可能なように構成されうるが、撮像装置110側で実行されるべき処理と無関係な処理については考慮されなくてもよい。一例において、撮像装置110は、例えば入出力装置130から事前に取得した実行されうる処理のリストを保持しておいてもよい。この場合、撮像装置110は、着脱可能デバイス100が実行可能な処理を示す情報を着脱可能デバイス100から取得した際に、その処理がリストに含まれているか否かによって、実行されうる処理のみを把握することができる。
【0036】
続いて、撮像装置110は、実行する処理を決定し、必要に応じて着脱可能デバイス100の設定を実行する(S604)。すなわち、実行対象として決定された処理の少なくとも一部が着脱可能デバイス100によって実行される場合に、その処理のための着脱可能デバイス100の設定が実行される。この設定においては、例えば、実行対象の処理に対応する設定データを用いたFPGA402の再構成が行われうる。そして、撮像装置110または着脱可能デバイス100が、解析処理を実行する(S605)。その後、撮像装置110は、後処理を実行する(S606)。なお、S605とS606の処理は繰り返し実行される。
図6の処理は、例えば、着脱可能デバイス100が装着された際に実行されるが、例えば着脱可能デバイス100が取り外された際にも、S603の処理が再度実行されるようにするなど、
図6の処理の少なくとも一部が繰り返し実行されてもよい。
【0037】
S603~S606についてさらに説明する。S603で、撮像装置110の制御部304は、記憶部303に記憶されている、撮像装置110自身の解析部305において実行可能な処理のリストである第1処理リストを読み出す。続いて、制御部304は、デバイス通信部306を制御して、装着された着脱可能デバイス100の特定のアドレスへの読み出し要求(リードコマンド)を発行する。以下では、この特定のアドレスを「アドレスA」と呼ぶ場合がある。なお、アドレスAに格納されているデータの詳細については後述する。制御部304は、アドレスAから読み出したデータに基づいて、着脱可能デバイス100が有する処理機能のリスト(第2処理リスト)を生成する。
【0038】
入出力装置130では、撮像装置110から第1処理リストと第2処理リストを、ネットワークを介して取得し、画面表示等によってユーザに提示する。ユーザは、操作部を介して、表示されたリストから実行すべき解析処理(以下では、「実行対象処理」と呼ぶ。)を選択する。入出力装置130は、実行対象処理の選択結果を、撮像装置110へ通知する。
【0039】
S604で、制御部304は、実行対象処理が第2処理リストに含まれる場合、デバイス通信部306を制御して、実行対象処理の設定要求を着脱可能デバイス100に送信する。着脱可能デバイス100の通信部502は、実行対象処理の設定要求を撮像装置110から受信する。通信部502は、撮像装置110から受信した実行対象処理の設定要求を、解析部501に出力する。解析部501は、通信部502から入力された実行対象処理の設定要求に基づいて、着脱可能デバイス100が実行対象処理を実行可能な状態となるようにするための設定を実行する。例えば、処理切替部411が、設定要求に応じて演算処理部412の実行対象処理を切り替える。通信部502は、例えば設定処理が完了した後に、設定完了通知を撮像装置110へ送信する。
【0040】
S605では、制御部304は、実行対象処理が第2処理リストに含まれている場合、デバイス通信部306を制御して、解析処理対象の画像を着脱可能デバイス100に送信する。例えば、制御部304は、解析処理対象の画像の書き込み要求(ライトコマンド)を発行することにより、着脱可能デバイス100へ解析処理対象の画像を送信する。着脱可能デバイス100の通信部502は、解析処理対象の画像を撮像装置110から受信し、撮像装置110から受信した画像を解析部501に出力する。解析部501は、通信部502から入力された画像に対して、S604で設定された実行対象処理を実行し、記憶部404に格納する。
【0041】
その後、S606において、通信部502は、撮像装置110からの解析処理結果の読み出し要求(リードコマンド)に応じて、解析部501による処理によって得られた解析処理結果を記憶部404から読み出して、撮像装置110へ送信する。撮像装置110の制御部304は、デバイス通信部306を制御して、着脱可能デバイス100から解析処理結果を受信する。その後、制御部304は、解析部305を制御して、解析処理結果に対して解析後処理を実行する。
【0042】
(撮像装置110と着脱可能デバイス100との間の通信)
・着脱可能デバイスのインタフェース構成
ここで、撮像装置110と着脱可能デバイス100との通信について説明する。撮像装置110の演算処理部203と着脱可能デバイス100のSDコントローラ403は、撮像装置110のSD I/F部205のデバイス挿入用ソケットを介し、電源ライン、GNDライン、クロックライン、コマンドライン、データラインで接続される。なお、クロックライン、コマンドライン、及び、データラインは、FPGA402を経由する形で接続されるものとする。クロックラインでは、演算処理部203から出力される同期用のクロックが通信される。コマンドラインでは、演算処理部203からSDコントローラ403への動作要求用に発行するコマンド、コマンドに対するSDコントローラ403から演算処理部203へのレスポンスが通信される。データラインでは、演算処理部203からの書き込みデータ、着脱可能デバイス100からの読み出しデータが通信される。また、演算処理部203は、SD I/F部205のデバイス挿入用ソケットのデバイスディテクト信号のHighとLowを判別することにより、着脱可能デバイス100が挿入されているか否かを認識することができる。
【0043】
・着脱可能デバイスの初期設定
演算処理部203は、SDコントローラ403に対して電源供給後にコマンドライン上でコマンドを発行する。そして、演算処理部203は、SDコントローラ403からのレスポンスと、SDカードとしてのデバイス情報を示す出力データを受信したことに応じて、データの通信用の電圧、通信速度(クロック周波数)等の設定を行う。
【0044】
・コマンドとレスポンスの構成
図7に、コマンドライン上で通信されるコマンドとレスポンスの構成例を示す。これらのコマンドとレスポンスはSD規格に従う構成を有する。演算処理部203からSDコントローラ403に対して発行されるコマンド701は、コマンドナンバー部704と、コマンド引数部705と、誤り訂正用データ部706とを含んで構成される。コマンドナンバー部704には、コマンドの種別を示す値が記述される。例えば、コマンドナンバー部704に値「23」が格納されている場合、そのコマンドがデータブロック数を指定するブロック数指定コマンドであることが示される。また、コマンドナンバー部704に値「25」が格納されている場合、そのコマンドがマルチライトコマンドであることが示され、コマンドナンバー部704に値「12」が格納されている場合、そのコマンドがデータ転送停止コマンドであることが示される。コマンド引数部705では、コマンドの種別に応じて転送データブロック数、メモリの書き込み・読み出しアドレス等の情報が指定される。また、コマンドの最初のビットには、コマンドの開始位置を示すコマンドスタートビット702が付加され、コマンドの最後のビットにはコマンドの終了を示すコマンドエンドビット707が付加される。また、コマンドスタートビット702の後ろに、撮像装置110から着脱可能デバイス100に対して出力された信号であることを示すディレクションビット703も付加される。
【0045】
演算処理部203からのコマンドに対してSDコントローラ403から返されるレスポンス711は、どのコマンドに対するレスポンスかを示すレスポンスナンバー部714と、レスポンス引数部715と、誤り訂正用データ部716とを含む。また、レスポンスの最初のビットにはレスポンスの開始位置を示すレスポンススタートビット712が付加され、レスポンスの最後のビットにはレスポンスの終了位置を示すレスポンスエンドビット717が付加される。また、レスポンススタートビット712の後ろに着脱可能デバイス100から撮像装置110に対して出力された信号であることを示すディレクションビット713も付加される。レスポンス引数部715には、コマンド種別に応じてSDカードのステータス等の情報が格納される。
【0046】
・データの転送
次に、演算処理部203と着脱可能デバイス100とのデータの送受信の方法を説明する。上述したように、SD I/F部205では、データの書き込み及び読み出し共にブロック単位でデータの転送が行われる。ブロックは、例えば、記憶部404におけるデータの書き込みおよび読みだしの単位であり、例えば512BYTEのサイズを有する。
【0047】
演算処理部203が着脱可能デバイス100に対して複数ブロックのデータを転送する方法には以下の3つの方法がある。1つ目の方法は、1ブロック分のデータだけを送信するライトコマンド(以下、シングルライトコマンド)を用いた方法である。シングルライトコマンドは、演算処理部203がブロック指定コマンド、転送停止コマンドを発行せずに、1ブロック分のデータを転送し、書き込みを行うコマンドである。コマンド引数部705には、アクセスする記憶部404のアドレスが設定される。
【0048】
残り2つの方法は、1回のコマンドによって複数ブロック分のデータの転送、書き込みを指示するマルチライトコマンドを用いた方法である。1つ目の方法は、転送データのブロック数指定コマンドによってブロック数が指定された後に、マルチライトコマンドにより、指定されたブロック数だけデータが転送される。ブロック数指定コマンドでは、コマンド引数部705において書き込みデータのブロック数が指定され、マルチライトコマンドでは、コマンド引数部705においてデータが書き込まれるべき記憶部404のアドレスが指定される。2つ目の方法では、ブロック数指定コマンドが発行されることなくマルチライトコマンドが発行されることにより、データ転送が開始され、データ転送が終わった時点で転送停止コマンドが発行されることによって処理が終了する。このとき、マルチライトコマンドのコマンド引数部705において、データが書き込まれるべき記憶部404のアドレスのみが指定される。尚、どちらのマルチライトコマンドによる書き込みにおいても、SDコントローラ403はコマンドで指定されたアドレスから書き込みを開始する。そして、SDコントローラ403は、1ブロック分のデータを入力するごとに書き込みアドレスをインクリメントして記憶部404へのデータの書き込みを行う。演算処理部203は3つの書き込み方法を任意に切り替えることが可能である。
【0049】
なお、記憶処理が行われる場合、FPGA402は、演算処理部203から送られるコマンドとデータをそのままSDコントローラ403に入力し、SDコントローラ403は、受信したデータをコマンドで指定された記憶部404のアドレスに格納する。画像解析処理が行われる場合には、FPGA402は、演算処理部203から送られるデータに対して解析処理を実行し、その処理結果のデータと、記憶部404の所定のアドレスを指定する情報を、SDコントローラ403に出力する。SDコントローラ403は、指定された記憶部のアドレスに処理結果を格納する。
【0050】
演算処理部203が着脱可能デバイス100から複数ブロックのデータを読み出す方法は以下の3つの方法がある。1つ目の方法は、1ブロック分のデータだけを読み出し、受信するリードコマンド(以下、シングルリードコマンド)を用いた方法である。シングルリードコマンドは、演算処理部203がブロック指定コマンド、転送停止コマンドを発行せずに、1ブロック分のデータを読み出すコマンドである。コマンド引数部705には、アクセスする記憶部404のアドレスが設定される。
【0051】
残りの2つの方法は、1回のコマンドで複数ブロックのデータの読み出しを指示する方法である。1つ目の方法では、ブロック数指定コマンドでブロック数が指定されてからマルチリードコマンドを発行することにより、指定されたブロック数のデータが読み出される。ブロック数指定コマンドでは、コマンド引数部705において読み出しデータのブロック数が指定され、マルチリードコマンドのコマンド引数部705においてデータの読み出し元のメモリのアドレスが指定される。2つ目の方法では、ブロック数指定コマンドが発行されることなくマルチリードコマンドが発行されることにより、データの読み出しが開始され、転送停止コマンドが発行されることによって処理が終了する。尚、どちらのマルチリードコマンドによる読み出しにおいても、SDコントローラ403はコマンドで指定されたアドレスから読み出しを開始する。そして、SDコントローラ403は、1ブロック分のデータを出力するごとに読み出しアドレスをインクリメントして記憶部404に格納されているデータを読み出す。演算処理部203は3つの読み出し方法を任意に切り替えることが可能である。
【0052】
なお、書き込みデータ、読み出しデータが1ブロックの場合には、シングルライトコマンド、シングルリードコマンドが発行されることにより、ブロック数指定コマンド、転送停止コマンドが発行されることなく、データの書き込み、読み出しが実行されうる。シングルライトコマンド、シングルリードコマンドにおいても、上述の説明と同様に、コマンド引数部705において、アクセス対象の記憶部404のアドレスが指定される。
【0053】
演算処理部203は、着脱可能デバイス100に対して書き込みを行うことにより、記憶処理または画像解析処理の対象となるデータを着脱可能デバイス100へ送信することができる。また、演算処理部203は、着脱可能デバイス100に対して読み出しを行うことにより、記憶部404に記憶された画像データ、画像解析処理の処理結果、着脱可能デバイス100が保有する画像解析の処理機能の情報を取得することができる。
【0054】
・画像解析処理機能の情報確認
本実施形態の着脱可能デバイス100は、記憶部404の特定のアドレスAに、自装置が有する処理機能の情報を格納する。撮像装置110の演算処理部203は、このアドレスAに対してマルチリードコマンド又はシングルリードコマンドを発行することにより、着脱可能デバイス100が有する処理機能の情報を確認することができる。ここでの処理機能の情報は、処理機能を保有しているか否か、処理が実行された場合に完了するまでの所要時間、処理結果のデータサイズ、処理結果が格納されるアドレス情報を含む。
図12に、この処理機能の情報の一例を示す。処理機能保有フラグ1201は、着脱可能デバイス100が画像解析処理機能を有していることを示している。撮像装置110は、処理機能保有フラグ1201を確認することにより、着脱可能デバイス100が画像解析処理機能を有しているか否かを判定する。処理機能分類1202は、着脱可能デバイス100が有している解析処理を示す。入力データサイズ1203及び処理データ数1204は、各々の処理機能のデータの入力仕様に関する情報を示す。また、推定処理時間1205は、データ入力から処理結果出力までに掛かる時間を示し、処理結果データ数1206は処理結果のデータ数を示す。また、処理結果格納アドレス1207は、記憶部404のどこに処理結果が格納されるかを示す。演算処理部203は、
図12に示すような記憶部404のアドレスAのデータを読み出すことにより、
図13に示すような処理機能テーブルを取得することができる。なお、本明細書においてデータ数とは、データの量(データのサイズ)に対応するブロック数である。
【0055】
また、着脱可能デバイス100は、演算処理部203からアドレスAに対するリードコマンドが発行されない場合には、自装置が装着された機器が画像解析処理機能を使用しない機器であると判断する。この場合、着脱可能デバイス100は、転送されるデータに関しては記憶部404に対する記憶処理のみを実行するようにしうる。これにより、着脱可能デバイス100は、画像解析処理機能を必要としない機器に対しては、メモリデバイスとしてのみ機能することが可能となる。ここでは、記憶部404の特定のアドレスAに処理機能の情報を格納しておく方法を示したが、これに限定されない。例えば、着脱可能デバイス100の初期設定時に使用されるコマンドに対するレスポンスにおける、レスポンス引数部715に、処理機能の情報を付加するようにしてもよい。
【0056】
なお、撮像装置110は、例えば、着脱可能デバイス100の初期化設定終了後に、記憶部404のアドレスAの読み出しを実行する。また、撮像装置110は、ソケットにおいてデバイスのディテクトがされなくなった場合に、読み込んだ情報を破棄する。撮像装置110は、情報の破棄の後にデバイスがソケットに挿入された場合、初期化設定終了後に再度アドレスAの値を読み出す。これにより、撮像装置110は、異なる着脱可能デバイスが挿入された場合に、その着脱可能デバイスの保有機能の情報を読み出し、設定することができる。
【0057】
<画像データの生成方法>
図8を用いて、顔認証システムの場合を例に、本実施形態の撮像装置110が、画像を分割して画像データを生成する方法を説明する。したがって、以下の例では、着脱可能デバイス100の演算処理部412が、入力された画像から顔認証を行うための推論演算処理を行う。
【0058】
画像800は、演算処理部203が画像処理部202から受け取った画像である。学習画像803は、演算処理部412で行われる推論演算処理の学習に用いられた画像であり、ある一定の画像サイズを有し、その画像内で顔が一定の割合を占めるように調整されている。そのため、演算処理部412で行われる推論演算処理には、学習画像803の画像サイズと画像内に占める顔の大きさの割合にできるだけ近い画像データが入力されることが望ましい。
【0059】
そこで、演算処理部203は、被写体距離の違いによって被写体801と被写体802が画像800のように撮影された場合、被写体801と被写体802の画像上の位置に従って、学習画像803の比率に近くなるように画像を分割する。
図6の画像800において示されている破線は、画像800の分割の一例を示している。加えて、演算処理部203は学習画像803の画像サイズに合うように伸縮処理を行い、着脱可能デバイス100への送信対象となる複数の分割画像データを生成する。結果、複数の分割画像データの大きさはすべて等しい。なお、演算処理部203が分割位置を画像800から判断して設定するようにしたが、入出力装置130からユーザが直接設定するようにしてもよい。
【0060】
<画像データの送信処理>
図9を用いて、撮像装置(演算処理部203)が、撮像部201により撮像された画像を分割して送信する処理を説明する。なお、
図9に示される処理は、
図6のS604からS605の間に、演算処理部203により行われる処理である。
【0061】
S901において、撮像装置110の撮像部201が画像を取得すると、画像処理部202がその取得された画像に対して画像処理を行う。演算処理部203は、画像処理部202により画像処理が施された画像を取得する。S902において、演算処理部203は、S204で設定された解析処理に応じて、
図8の参照により上述した方法で、複数の分割画像データを生成する。
【0062】
S903において、演算処理部203は、1つの分割画像データについてどのようなコマンドの組み合わせでその分割画像データを送信するかを決定する。以下、決定されたコマンドの組み合わせをコマンド群という。着脱可能デバイス100上で実行される推論演算処理に必要な時間は、入力される画像データのサイズや、演算処理部412の動作周波数、つまり、着脱可能デバイス100との通信速度に比例して大きくなる。一方で、画像解析処理全体として必要となる処理速度に応じて、演算処理部412の演算時間として割り当てられる時間の上限がある。そのため、この上限時間を満たす範囲で、コマンドの組み合わせが選択され、分割画像データの送信に用いられるコマンド群が決定される。例えば、分割画像データのデータ量とコマンドの通信に要する時間に基づいて、要求された時間内に分割画像データの送信を終えるようにコマンド群を構成するコマンドの組み合わせが決定される。ただし、データ転送の方法が変わる際には、シングルライトコマンド、もしくは、マルチライトコマンドを発行する必要があるので、このようなコマンドの送信にかかる時間も加味する必要がある。例えば、シングルライトコマンドは、1ブロックごとにコマンドの通信が発生するので送信に時間を要する。従って、マルチライトコマンドとデータ転送停止コマンドを用いたデータ送信は、シングルライトコマンドに比べて高速である。
【0063】
S904では、演算処理部203が、S903で決定されたコマンド群(コマンドの組み合わせ)に従って、着脱可能デバイス100に対して、ライトコマンドまたはマルチライトコマンドを用いて分割画像データの送信を複数回実行する。S905において、演算処理部203は、取得された画像から生成された複数の分割画像データの全てを送信し終えたたかどうかを判定する。全ての分割画像データを送信済みと判定された場合は、本処理を終了する。未送信の分割画像データが存在する場合は、演算処理部203は、次の分割画像データを選択し、処理をS903へ戻す。ただし、演算処理部203は、送信に用いたコマンドの組み合わせを記憶しておき、次のS903では記憶しておいたコマンドの組み合わせと一致しないようにコマンドの組み合わせを選択または決定する。こうして、複数の分割画像データが送信される間に、送信に用いられるコマンド群を構成するコマンドの組み合わせが変更される。
【0064】
なお、上述した上限時間を満足する複数のコマンド群(複数種類のコマンドの組み合わせ)をリストとして登録しておき、順番に選択するようにしてもよい。なお、リストに登録されているすべての組み合わせについて選択を終えた後、選択の順番を変更するようにしてもよい。また、
図8で説明したように、各々の分割画像データのサイズは所定サイズに揃えられるので、着脱可能デバイス100の演算処理部412は、送信されたデータのサイズが所定サイズに到達したことにより、1つの分割画像データが送信されたことを把握できる。なお、分割画像データごとに、その開始および/または終了を示す所定コードが送信され、演算処理部412がその所定コードを検出することで分割画像データの送信を把握するようにしてもよい。この場合、複数の分割画像データのサイズはそれぞれ異なっていてもよい。
【0065】
<演算結果の受信処理>
次に、撮像装置110が着脱可能デバイス100から演算結果を受信する場合の処理を説明する。演算処理部203は、シングルリードコマンド、マルチリードコマンドを用いて、着脱可能デバイス100からFPGA402(演算処理部412)による演算結果を受信する。シングルリードコマンド、マルチリードコマンドは上述の通りである。
【0066】
図10は、演算処理部203が着脱可能デバイス100で推論処理された演算結果を受信する処理を示すフローチャートである。
図10のフローチャートに示される処理の開始時には、
図9により上述した処理が終了し、着脱可能デバイス100において全ての分割画像データに対して演算処理部412による推論処理が行われ、記憶部404に演算結果が格納されている。
【0067】
S1001において、演算処理部203は、S902で生成された分割画像データの数を確認する。演算処理部203は、取得した分割画像データの数を、読み出すべき演算結果の数としてセットする。S1002~S1004では、演算結果を所定量ずつ読み出す読出処理が繰り返される。本例では、所定量の演算結果とは、1つの分割画像データに対する演算結果である。S1002において、演算処理部203は、どのようなコマンドの組み合わせで演算結果を受信するかを決定する。以下、このようなコマンドの組み合わせを、
図9の説明と同様に、コマンド群とも称する。コマンドの組み合わせの決め方は、S903と同様の考え方となるが、受信処理におけるコマンド群はリードコマンド、および/または、マルチリードコマンドにより構成される。こうして、演算結果を所定量ずつ受信するにおいて、その所定量とコマンドの通信に要する時間に基づいて、要求された時間内に所定量のデータの受信を終えるようにコマンド群が構成される。
【0068】
S1003では、演算処理部203が、S1002で決定されたコマンド群(コマンドの組み合わせ)を用いて、着脱可能デバイス100から演算結果の読み出しを複数回実行し、それらを受信する。S1004では、演算処理部203が、S1001でセットされた演算結果の数と読み出した演算結果の合計数を比較する。両者が一致した場合は演算結果が全て読み出されたと判断され、処理は画像の後処理を行うためにS1005へ移行する。不一致の場合には未受信の演算結果があると判断され、残りの演算結果を読み出すために、処理はS1002へ移行する。なお、演算処理部203は受信に使用したコマンドの組み合わせを記憶しておき、次のS1002では記憶しておいたコマンドの組み合わせと一致しないようにコマンドの組み合わせを選択する。こうして、演算結果が送信される間に、送信に用いられるコマンド群を構成するコマンドの組み合わせが変更される。
【0069】
撮像装置110は、分割画像データの送信順を把握しており、S1003で受信された演算結果がどの分割画像データに対応するものであるかを判定することができる。したがって、S1005では、演算処理部203が、上述のS1001~S1004の処理で取得した演算結果を元の画像に重畳し、配信部204からネットワーク120へ配信する。
【0070】
以上のように第1実施形態では、撮像装置110は、画像データを分割することで得られた複数の分割画像データを着脱可能デバイス100に送信し、着脱可能デバイス100の演算処理部412に演算処理を行わせる。このとき、複数の分割画像データを送信するために複数種類のライトコマンドの組み合わせを用いるとともに、分割画像データごとにその組み合わせを異ならせている。したがって、分割画像データの区切りを示すための所定のコード、演算処理の対象となる分割画像データのサイズなどを知らない第3者には、撮像装置110により着脱可能デバイス100へ書き込まれた画像を判別することが困難である。また、本実施形態では、演算結果を取得する際にも、演算結果ごとに異なるリードコマンドの組み合わせが用いられる。したがって、演算結果のデータサイズなどが分かりにくくなり、第3者が撮像装置110により読み出された演算結果の内容を特定されてしまう可能性を低減することができる。
【0071】
<第2実施形態>
第2実施形態では、複数のフレームに渡って、第1実施形態に示す分割画像データの送信処理、演算結果の受信処理と、を組み合わせた場合の、撮像装置110と着脱可能デバイス100の送受信フローとその効果を説明する。尚、第1実施形態で示した構成と、画像の送信、演算結果の受信単体の制御方法、フローは、第2実施形態においても同様である。
【0072】
<フレーム間の送受信処理>
図11は、第2実施形態による撮像装置110の送受信動作を説明するフローチャートである。以下、
図11のフローチャートを用いて、撮像装置110と着脱可能デバイス100の複数フレームに渡る送受信処理を説明する。尚、第1実施形態と同じ符号で示す処理については、同様の処理を行うものとする。
図11に示すフローチャートは、
図6に示すS604からS606の間に行われる処理である。なお、
図11に示される処理では、演算処理の対象である画像(分割画像データ)を送信する処理から開始される。
【0073】
S1101において、演算処理部203は、送信と受信の順序を決める。着脱可能デバイス100は、演算結果のデータをFPGA402内部、もしくは、記憶部404に保存することができる。そのため、必ずしも分割画像データの送信と、演算結果の受信をセットで行う必要はない。なお、送信と受信の順序の決定においては、それまでの送信処理により送信された分割画像データに関して未受信の演算結果が記憶部404に存在している状態で受信処理が実行されるように考慮される。
【0074】
S1102において、演算処理部203は、画像を分割して得られた複数の分割画像データをどのような順序で送信するかを決定し、決定された順序に基づいて次に送信される分割画像データを特定する。なお、演算処理部203は、S1102で決定された送信の順序の情報をS1005まで保持しておく。そして、演算処理部203は、分割画像データを送信するためのコマンド群を決定し(S903)、決定されたコマンド群を用いてS1102で送信対象に決定された分割画像データを送信する(S904)。S1103において、演算処理部203は、S1101で決定された送受信の順序を確認し、次の処理が送信処理であるか受信処理であるかを判断する。次の処理が送信処理の場合、処理はS1102へ移行する。一方、次の処理が受信処理の場合、処理はS1002へ移行する。
【0075】
演算処理部203は、S1002においてコマンド群を構成するリードコマンドの組み合わせを決定する。S1104において、演算処理部203は、S1002で決定したコマンド群(リードコマンドの組み合わせ)を用いて、着脱可能デバイス100から演算結果を受信する。演算結果は、S1102で決定された順序(分割画像データの送信順序)で受信されることになる。演算処理部203は、S1102で決定された、分割画像データの送信の順序の情報を保持しており、この情報から、順次に受信される演算結果がどの分割画像データに対する演算結果であるかを判断できる。
【0076】
S1105において、演算処理部203は、S1101で決めた送受信の順序を確認し、次の処理が送信処理であるか受信処理であるかを判断する。次の処理が送信処理の場合は、処理はS1102へ移行する。一方、次のコマンドが受信処理の場合は、処理はS1004へ移行する。S1004において、演算処理部203は、全ての演算結果を受信し終えたか否か(例えば、S902で生成した分割画像データの数と一致する演算結果を受信したか否か)を判断する。演算結果を受信し終えていなければ処理はS1002に戻り、演算処理部203は、次の演算結果の読み出しを行う。
【0077】
S1004において、全ての演算結果の受信を終えたと判断された場合、処理はS1005へ進む。S1005において、演算処理部203は、S1102で決定された分割画像データの送信の順序を参照して、読み出された演算結果を複数の分割画像データの各々に対応付ける。こうして、演算処理部203は、S901で取得された画像に演算結果を適切に重畳して配信することができる。S1005で演算結果を重畳した画像が配信された後、処理は、S901へ戻り、次のフレームの画像に対して同様の処理が行われる。ただし、演算処理部203は、前回のフレームにおいて決定された送受信の順序と分割画像データの送信の順序を記憶しておく。そして、新たなフレームの画像について処理を行う場合には、S1101とS1102において、演算処理部203は、記憶しておいた順序と一致しないように、送受信の順序と分割画像データの送信の順序を決定する。
【0078】
以上のように、第2実施形態によれば、ライトコマンドの組み合わせ、リードコマンドの組み合わせ、画像データの送信動作と演算結果の読み出し動作の順番、着脱可能デバイス100へ送信される分割画像データの位置の順序が変更される。従って、これらを把握していない第3者は、たとえ通信プロトコルが既知であっても、撮像装置110と着脱可能デバイス100の間のデータの送受信に関して、その内容を把握することが困難である。
【0079】
なお、第2実施形態では、コマンドの組み合わせと分割画像データの送信の順序を変更したが、分割画像データの送信の順序を変更するだけでも、送信内容についての第3者による解析されてしまう可能性を低減することができる。また、第1実施形態、第2実施形態では、着脱可能デバイス100を装着する電子機器として撮像装置を例示したが、これに限られるものではない。また、上記実施形態では、画像データを分割して得られた複数の分割画像データを着脱可能デバイス100へ送信される分割データとして説明したが、これに限られるものではない。すなわち、演算処理の対象となるデータから演算処理の処理単位に対応した複数の分割データを取得し、これを送信する構成であればよく、データの内容は何等限定されるものではない。
【0080】
(その他の実施形態)
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
【0081】
本発明は上記実施の形態に制限されるものではなく、本発明の精神及び範囲から離脱することなく、様々な変更及び変形が可能である。従って、本発明の範囲を公にするために、以下の請求項を添付する。
【符号の説明】
【0082】
100a~100d:着脱可能デバイス、110a~110d:撮像装置、120:ネットワーク、130:入出力装置、201:撮像部、202:画像処理部、203:演算処理部、204:配信部、205:SD I/F部、301:撮像制御部、302:信号処理部、303:記憶部、304:制御部、305:解析部、306:デバイス通信部、307:ネットワーク通信部、401:I/F部、402:FPGA、403:SDコントローラ、404:記憶部、501:解析部、502:通信部