(57)【特許請求の範囲】
【請求項１】
複数のセンサ素子を備えるセンサ素子アレイであって、前記複数のセンサ素子が、前記センサ素子アレイの少なくとも第1の寸法および第2の寸法に沿って配置され、前記複数のセンサ素子の各々が、前記複数のセンサ素子に入射する光に基づいて信号を生成することができ、前記信号が、画像を表す前記複数のセンサ素子に対応する、センサ素子アレイと、
専用コンピュータビジョン(CV)計算ハードウェアであって、1つまたは複数の対象センサ素子のブロックに近接する複数の隣接センサ素子に関連する信号に少なくとも部分的に基づいて、前記1つまたは複数の対象センサ素子の前記ブロックに関する局所CV特徴を計算するように構成された、専用コンピュータビジョン(CV)計算ハードウェアと、
前記画像を表す前記信号のサブセットに対応するセンサ素子のブロックに対応する信号の組合せ、合計、または平均の計算のための積分ハードウェアであって、前記専用CV計算ハードウェアが、前記計算された組合せ、合計、または平均へのアクセスを有する、積分ハードウェアと、
前記専用CV計算ハードウェアに結合された専用マイクロプロセッサであって、第2のマイクロプロセッサとの通信のためのインターフェースを含む、専用マイクロプロセッサと
を備えるビジョンセンサ。
【請求項２】
前記第2のマイクロプロセッサとの通信のための前記インターフェースが、シリアル周辺インターフェース(SPI)、インター・インテグレイティド・サーキット(I2C)、または低電圧差動シグナリング(LVDS)のうちの1つを使用する、請求項1に記載のビジョンセンサ。
【請求項３】
モバイルデバイスが、前記ビジョンセンサと前記第2のマイクロプロセッサとを備え、前記専用マイクロプロセッサが、ワイヤードインターフェースを介して前記第2のマイクロプロセッサに結合され、前記第2のマイクロプロセッサが、前記専用マイクロプロセッサよりも高いパワーのプロセッサである、請求項1に記載のビジョンセンサ。
【請求項４】
前記第2のマイクロプロセッサとの通信のためのワイヤレスモジュールをさらに備え、前記第2のマイクロプロセッサとの通信のための前記ワイヤレスモジュールが、前記第2のマイクロプロセッサとの通信のための前記インターフェースを使用して前記専用マイクロプロセッサに結合される、請求項1に記載のビジョンセンサ。
【請求項５】
前記ワイヤレスモジュールが、Zigbee(IEEE802.15.4規格)、Bluetooth(登録商標)、ボディエリアネットワーク(IEEE802.15.6)、ワイヤレスUSB、Wi-Fi(802.11)、Z-wave、またはIrDA(IRベースの通信)を使用して通信するように構成された、請求項4に記載のビジョンセンサ。
【請求項６】
前記局所CV特徴が計算される前記1つまたは複数の対象センサ素子の前記ブロックが、単一の対象センサ素子である、請求項1に記載のビジョンセンサ。
【請求項７】
前記専用CV計算ハードウェアが、ローカルバイナリパターン(LBP)ラベルを計算する、請求項1に記載のビジョンセンサ。
【請求項８】
前記積分ハードウェアが、前記画像の積分画像を計算することを可能とする、請求項7に記載のビジョンセンサ。
【請求項９】
前記専用CV計算ハードウェアが、前記画像のウィンドウ内の基準オブジェクトの有無を検出するように構成されたカスケード分類ハードウェアに結合される、請求項8に記載のビジョンセンサ。
【請求項１０】
前記専用マイクロプロセッサが、前記基準オブジェクトの存在が検出されたとき、前記基準オブジェクトの存在の指標を受信するように構成された、請求項9に記載のビジョンセンサ。
【請求項１１】
前記専用マイクロプロセッサが、前記専用CV計算ハードウェアから受信した局所CV特徴に基づいて前記画像のウィンドウ内の基準オブジェクトの有無を検出するように構成された、請求項1に記載のビジョンセンサ。
【請求項１２】
前記専用CV計算ハードウェアが、符号付き勾配ヒストグラム(HSG)特徴を計算する、請求項1に記載のビジョンセンサ。
【請求項１３】
前記局所CV特徴が、スポット、エッジ、または直線エッジのコーナーのうちの1つまたは複数に対応する、請求項1に記載のビジョンセンサ。
【請求項１４】
前記センサ素子アレイおよび前記専用CV計算ハードウェアが、画像信号処理回路もなしに結合される、請求項1に記載のビジョンセンサ。
【請求項１５】
前記センサ素子アレイから前記専用CV計算ハードウェアによって受信される前記信号が、欠陥補正、ホワイトバランシング、カラーバランシング、オートフォーカス、レンズロールオフ、デモザイキング、デベイヤリング、および/または画像鮮明化のうちの1つまたは複数を受けないようにする、請求項14に記載のビジョンセンサ。
【請求項１６】
ビジョンセンサにおいて、センサ素子アレイの複数のセンサ素子からのセンサ素子に入射する光に基づいたセンサ読取り値を受信するステップであって、各々が前記複数のセンサ素子に入射する光に基づいた信号を生成することを可能とする前記複数のセンサ素子が、前記センサ素子アレイの少なくとも第1の寸法および第2の寸法に沿って配置され、前記信号が、画像を表す前記複数のセンサ素子に対応する、ステップと、
前記ビジョンセンサの専用コンピュータビジョン(CV)ハードウェアを用いて、1つまたは複数の対象センサ素子のブロックに近接する複数の隣接センサ素子に関連する信号に少なくとも部分的に基づいて、前記1つまたは複数の対象センサ素子の前記ブロックに関する1つまたは複数の局所CV特徴を計算するステップと、
前記ビジョンセンサの積分ハードウェアを用いて、前記画像を表す前記信号のサブセットに対応するセンサ素子のブロックに対応する信号の組合せ、合計、または平均の計算するステップであって、前記専用CV計算ハードウェアが、前記計算された組合せ、合計、または平均へのアクセスを有する、ステップと、
前記計算された1つまたは複数の局所CV特徴に基づいて検出された基準オブジェクトの指標を、前記専用CVハードウェアに結合された前記ビジョンセンサの専用マイクロプロセッサにおいて、生成するステップと
を備える方法。
【請求項１７】
前記専用マイクロプロセッサが、第2のマイクロプロセッサとの通信のためのインターフェースを含む、請求項16に記載の方法。
【請求項１８】
前記インターフェースが、ワイヤードインターフェースまたはワイヤレスインターフェースのうちの1つである、請求項17に記載の方法。
【請求項１９】
前記検出された基準オブジェクトの前記指標に基づいて、前記専用マイクロプロセッサから前記第2のマイクロプロセッサに信号を送るステップをさらに備える、請求項18に記載の方法。
【請求項２０】
センサ素子アレイの複数のセンサ素子からのセンサ素子に入射する光に基づいたセンサ読取り値を受信するための手段であって、各々が前記複数のセンサ素子に入射する光に基づいた信号を生成することを可能とする前記複数のセンサ素子が、前記センサ素子アレイの少なくとも第1の寸法および第2の寸法に沿って配置され、前記信号が、画像を表す前記複数のセンサ素子に対応する、手段と、
前記センサ素子のうちの1つまたは複数の各ブロックについて、少なくとも隣接するセンサ素子からのセンサ読取り値に基づいて1つまたは複数の局所コンピュータビジョン(CV)特徴を計算するための手段と、
前記画像を表す前記信号のサブセットに対応するセンサ素子のブロックに対応する信号の組合せ、合計、または平均の計算するための手段であって、前記専用CV計算ハードウェアが、前記計算された組合せ、合計、または平均へのアクセスを有する、手段と、
前記計算された1つまたは複数の局所CV特徴に基づいて、基準オブジェクトの指標を生成するための手段と、
前記基準オブジェクトの前記指標を第2のプロセッサと通信するための手段と
を備えるビジョンセンサ。
【請求項２１】
前記局所CV特徴を計算するための手段が、ローカルバイナリパターン(LBP)ラベルを計算するための手段を備える、請求項20に記載のビジョンセンサ。
【請求項２２】
前記局所CV特徴を計算するための手段が、符号付き勾配ヒストグラム(HSG)ラベルを計算するための手段を備える、請求項20に記載のビジョンセンサ。
【請求項２３】
前記局所CV特徴が、スポット、エッジ、または直線エッジのコーナーのうちの1つまたは複数に対応する、請求項20に記載のビジョンセンサ。
【請求項２４】
専用コンピュータビジョン(CV)マイクロプロセッサによって実行可能な命令であって、
センサ素子アレイの複数のセンサ素子からのセンサ素子に入射する光に基づいたセンサ読取り値を生成するために前記センサ素子アレイを制御することであって、前記複数のセンサ素子が、前記センサ素子アレイの少なくとも第1の寸法および第2の寸法に沿って配置された、制御することと、
1つまたは複数の対象センサ素子のブロックに近接する複数の隣接センサ素子に関連する信号に少なくとも部分的に基づいて、前記1つまたは複数の対象センサ素子の前記ブロックに関する1つまたは複数の局所CV特徴を計算するために専用コンピュータビジョン(CV)ハードウェアを制御することと、
画像を表す前記信号のサブセットに対応するセンサ素子のブロックに対応する信号の組合せ、合計、または平均の計算するために積分ハードウェアを制御することであって、前記専用CV計算ハードウェアが、前記計算された組合せ、合計、または平均へのアクセスを有する、制御することと、
前記計算された1つまたは複数の局所CV特徴に基づいて検出された基準オブジェクトの指標を、前記専用CVハードウェアに結合された専用マイクロプロセッサにおいて生成することと
を行うための命令を備える、非一時的コンピュータ可読記憶媒体。
【請求項２５】
第2のマイクロプロセッサとの通信のための通信インターフェースを制御するための命令をさらに備える、請求項24に記載の非一時的コンピュータ可読記憶媒体。
【請求項２６】
前記通信インターフェースが、ワイヤードインターフェースまたはワイヤレスインターフェースのうちの1つを備える、請求項25に記載の非一時的コンピュータ可読記憶媒体。
【請求項２７】
前記検出された基準オブジェクトの前記生成された指標を、前記専用CVハードウェアから前記第2のマイクロプロセッサに、送信するための命令をさらに備える、請求項25に記載の非一時的コンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、一般には、コンピュータビジョンを可能にすることに関し、より詳細には、コンピュータビジョンを使用して特徴を検出する効率を改善することに関する。
【背景技術】
【０００２】
コンピュータビジョンは、アプリケーションで使用するための画像を取得し、処理し、分析し、理解するための方法を含む分野である。従来、センサに結合されたプロセッサは、センサから画像データを取得し、CV特徴を検出するためのセンサから受信した情報における特定のコンピュータビジョン(CV)特徴と、結果としてこれらの特徴に関連するオブジェクトとを計算する。CV特徴は、エッジ、コーナーなどの特徴を含む。プロセッサ上で実行されるプログラムは、平面検出、顔検出、笑顔検出、ジェスチャ検出などの様々なアプリケーションにおいて、検出された特徴を利用し得る。
【０００３】
近年、コンピューティングデバイスがコンピューティングデバイスの視野内の特徴およびオブジェクトを検出することを可能にするために多大な努力がなされている。モバイルデバイスなどのコンピューティングデバイスは、モバイルデバイスによって使用される処理リソースおよび電力の量と、熱放散とに対して敏感であるように設計される。しかしながら、従来、プロセッサを使用してカメラによって取り込まれた画像の視野内の特徴およびオブジェクトを検出することは、かなりの処理リソースを必要とし、その結果、モバイルデバイスなどのコンピューティングデバイスにおいて電力消費が大きくなり、バッテリ寿命が低下することになる。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】Rainer Lienhart and Jochen Maydt, An Extended Set of Haar-like Features for Rapid Object Detection, 2002
【非特許文献２】Chris MessomおよびAndre Barczak、Fast and Efficient Rotated Haar-like Features using Rotated Integral Images、2006
【発明の概要】
【課題を解決するための手段】
【０００５】
本開示の態様は、例として示される。以下の説明は、図面を参照して提供され、図面では、全体にわたって同様の参照番号が同様の要素を示すために使用される。本明細書では1つまたは複数の技法の様々な詳細について説明するが、他の技法も同様に可能である。いくつかの例では、様々な技法の説明を容易にするために、周知の構造およびデバイスは、ブロック図で示される。
【０００６】
明細書の残りの部分および図面を参照することによって、本開示によって与えられる実施例の性質および利点をさらに理解することができ、同様の参照番号が、同様の構成要素を指すために、いくつかの図面全体で用いられる。いくつかの例では、複数の同様の構成要素のうちの1つを示すために、サブラベルが参照番号に関連付けられる。存在するサブラベルを特定することなく、参照番号に言及する場合、参照番号はそのようなすべての同様の構成要素を指す。
【図面の簡単な説明】
【０００７】
【図１】2次元アレイに配置された複数のセンサ素子を備える例示的なセンサを示す図である。
【図２】センサ素子とピクセル内回路とを備える例示的なピクセルを示す図である。
【図３Ａ】周辺回路に結合された例示的なセンサ素子アレイを示す図である。
【図３Ｂ】例示的な実装形態のスマートビジョンセンサを示す図である。
【図４Ａ】本開示の特定の態様による例示的なセンサ装置を示す図である。
【図４Ｂ】本開示の特定の態様による、アプリケーションプロセッサにワイヤレスに結合された例示的なセンサ装置を示す図である。
【図５】フレームベースカメラを使用するビジョンセンサの例示的な実装形態を示す図である。
【図６】イベントベースを使用するビジョンセンサの例示的な実装形態を示す図である。
【図７】本開示の特定の態様によるビジョンセンサの例示的なピクセルを示す図である。
【図８】本開示の態様を実行するための例示的なピクセルを示す図である。
【図９】ローカルバイナリパターン回路の例示的な回路を示す図である。
【図１０】符号付き勾配回路のヒストグラムの例示的な回路を示す図である。
【図１１】ピクセル内および周辺回路においてコンピュータビジョン(CV)特徴を計算するための感知装置の例示的なブロック図である。
【図１２】ピクセル内および周辺回路においてCV特徴を計算するための感知装置の別の例示的なブロック図である。
【図１３】本開示の特定の態様による例示的なフローチャートである。
【図１４Ａ】複数のセンサ素子からのセンサ読取り値をCV特徴に変換し、より高いレベルのCV動作を実行するプロセスを示す図である。
【図１４Ｂ】複数のセンサ素子からのセンサ読取り値をCV特徴に変換し、より高いレベルのCV動作を実行するプロセスを示す図である。
【図１４Ｃ】複数のセンサ素子からのセンサ読取り値をCV特徴に変換し、より高いレベルのCV動作を実行するプロセスを示す図である。
【図１５Ａ】Haar-like特徴を使用する顔検出のための既存の方法を示す図である。
【図１５Ｂ】Haar-like特徴を使用する顔検出のための既存の方法を示す図である。
【図１６Ａ】画像上の2次元積分を計算する既存の方法の一例を示す図である。
【図１６Ｂ】画像上の2次元積分を計算する既存の方法の一例を示す図である。
【図１７Ａ】回転矩形の2次元積分を計算する既存の方法の一例を示す図である。
【図１７Ｂ】回転矩形の2次元積分を計算する既存の方法の一例を示す図である。
【図１７Ｃ】回転矩形の2次元積分を計算する既存の方法の一例を示す図である。
【図１７Ｄ】回転矩形の2次元積分を計算する既存の方法の一例を示す図である。
【図１８Ａ】いくつかの実装形態による、任意の角度を有する矩形領域を計算するための1次元積分の使用を示す図である。
【図１８Ｂ】いくつかの実装形態による、任意の角度を有する矩形領域を計算するための1次元積分の使用を示す図である。
【図１９】いくつかの実装形態による、ハードウェアにおける1次元積分画像の計算を示す図である。
【図２０】いくつかの実装形態による、1次元積分を計算するためのハードウェア実装を示す図である。
【図２１】1つまたは複数の実施形態が実施され得るコンピューティングシステムの一例を示す図である。
【発明を実施するための形態】
【０００８】
本開示は、一般には、コンピュータビジョンを可能にすることに関し、より詳細には、コンピュータビジョンを使用して特徴を検出する効率を改善することに関する。
【０００９】
技法は、センサ読取り値に基づいて計算結果を生成することによって、エッジ、コーナーなどのコンピュータビジョン(CV)特徴を検出することを説明する。センサ装置は、複数のセンサ素子を含むセンサ素子アレイを含み得る。センサ素子は、列および行などの2次元アレイに配置され得る。センサ素子は、環境条件に基づいてセンサ読取り値を生成することができ得る。センサ装置はまた、センサ素子に結合されたピクセル内回路、および/または、センサ素子アレイに結合され、複数のセンサ素子からの出力を受信するように構成された周辺回路を含み得る。ピクセル内回路および/または周辺回路は、センサ素子に近接した隣接センサ素子によって生成されたセンサ読取り値に基づいて、センサ素子のためのマルチピクセル計算を表す演算を実行するように構成された計算機構(computation structure)を含み得る。加えて、センサ装置は、検出されたCV特徴に対してさらなる演算を実行するための専用マイクロプロセッサを含み得る。たとえば、専用マイクロプロセッサは、本明細書で開示されるように、CV特徴に基づいて、笑顔、顔などの、マクロ特徴または基準オブジェクトを検出し得る。
【００１０】
ビジョンセンサなどの例示的な装置は、複数のセンサ素子を備えるセンサ素子アレイを含み得る。複数のセンサ素子は、センサ素子アレイの少なくとも第1の寸法および第2の寸法に沿って配置され得る。本開示の特定の態様では、複数のセンサ素子の各々は、複数のセンサ素子に入射する光に基づいて信号を生成することができ得、信号は、画像を表す複数のセンサ素子に対応する。専用コンピュータビジョン(CV)計算ハードウェアは、1つまたは複数の対象センサ素子のブロックに近接する複数の隣接センサ素子に関連する信号に少なくとも部分的に基づいて、1つまたは複数の対象センサ素子のブロックに関する局所CV特徴を計算するように構成され得る。さらに、専用マイクロプロセッサが専用CV計算ハードウェアに結合され得、専用マイクロプロセッサは、第2のマイクロプロセッサと通信するためのインターフェースを含む。本開示の特定の態様では、局所CV特徴が計算される1つまたは複数の対象センサ素子のブロックは、単一の対象センサ素子である。本開示の特定の態様では、専用CV計算ハードウェアは、ローカルバイナリパターン(LBP:local binary pattern)ラベルまたは符号付き勾配ヒストグラム(HSG:histogram of signed gradients)特徴を計算する。本明細書で使用される場合、LBPラベルおよびLBP特徴、またはより一般的にCV特徴は、その隣接ピクセル要素のうちの1つまたは複数との対象ピクセルの比較に基づいて計算されるCV特徴を指すことがある。局所CV特徴は、スポット、エッジ、または直線エッジのコーナーのうちの1つまたは複数を含み得る。
【００１１】
例示的なモバイルデバイスは、ビジョンセンサと第2のマイクロプロセッサとを備え得、専用マイクロプロセッサは、ワイヤードインターフェースを介して第2のマイクロプロセッサに結合され、第2のマイクロプロセッサは、専用マイクロプロセッサよりも高いパワーのプロセッサである。いくつかの例では、ワイヤードインターフェースを介した第2のプロセッサとの通信は、シリアル周辺インターフェース(SPI)、インター・インテグレイティド・サーキット(I2C)、または低電圧差動シグナリング(LVDS)のうちの1つを使用する。
【００１２】
特定の実装形態では、第2のマイクロプロセッサとの通信のためにワイヤレスモジュールが使用され得、第2のマイクロプロセッサとの通信のためのワイヤレスモジュールは、第2のマイクロプロセッサとの通信のためのインターフェースを使用して専用マイクロプロセッサに結合される。ワイヤレスモジュールは、Zigbee(IEEE802.15.4規格)、Bluetooth(登録商標)、ボディエリアネットワーク(IEEE802.15.6)、ワイヤレスUSB、Wi-Fi(802.11)、Z-wave、またはIrDA(IRベースの通信)を使用して通信するように構成され得る。
【００１３】
本開示の特定の態様では、ビジョンセンサは、画像のウィンドウに対応する信号の少なくともサブセットに基づいて画像の少なくとも一部の積分画像(integral image)を計算するための2次元積分ハードウェアをさらに含み、専用CV計算ハードウェアは、センサ素子のブロックに対応する信号の組合せ、合計、または平均の計算のために、計算された積分画像へのアクセスを有する。CV計算ハードウェアは、画像のウィンドウ内の基準オブジェクトの有無を検出するように構成されたカスケード分類ハードウェアにさらに結合され得る。特定の例では、専用マイクロプロセッサは、基準オブジェクトの存在が検出されたとき、基準オブジェクトの存在の指標を受信するように構成され得る。本開示の特定の態様では、専用マイクロプロセッサは、専用CV計算ハードウェアから受信した局所CV特徴に基づいて画像のウィンドウ内の基準オブジェクトの有無を検出するように構成され得る。
【００１４】
本開示の特定の態様では、センサ素子アレイおよびCV計算ハードウェアは、介在する画像信号処理回路なしで接続される。たとえば、センサ素子アレイからのCV計算ハードウェアによって受信される信号は、欠陥補正、ホワイトバランシング、カラーバランシング、オートフォーカス、レンズロールオフ、デモザイキング、デベイヤリング、および/または画像鮮明化のうちの1つまたは複数を受けなくてもよい。
【００１５】
本開示の態様は、上記および本開示を通して開示されるように実行するための方法、および手段を備える装置をさらに開示する。本開示の態様は、非一時的コンピュータ可読記憶媒体をさらに開示し、非一時的コンピュータ可読記憶媒体は、上記および本明細書を通して開示される本開示の態様を実行するための専用コンピュータビジョン(CV)マイクロプロセッサによって実行可能な命令を含み得る。
【００１６】
上記は、以下に続く詳細な説明がよりよく理解され得るように、例の特徴および技術的利点をいくぶん広く概説している。以下で、追加の特徴および利点について説明する。開示される概念および特定の例は、本開示の同じ目的を実行するための他の構造を修正または設計するための基礎として容易に利用され得る。そのような等価の構成は、添付の特許請求の範囲の要旨および範囲から逸脱しない。本明細書で開示される概念に特有あると考えられる特徴は、それらの構成および動作方法の両方として、関連する利点とともに、添付図面に関連して考慮されるとき、以下の説明からよりよく理解されるであろう。図面の各々は、例示および説明の目的のために提供され、特許請求の範囲の制限の定義としては提供されない。
【００１７】
詳細な説明
いくつかの例示的な実施形態について、本明細書の一部を形成する添付図面に関して説明する。本開示の1つまたは複数の態様が実装され得る特定の実施形態について以下で説明するが、本開示の範囲または添付の特許請求の範囲の趣旨から逸脱することなく、他の実施形態が使用されることがあり、様々な修正が行われることがある。
【００１８】
センサは、複数のセンサ素子のセンサ素子アレイを含み得る。センサ素子アレイは、センサ素子アレイの列および行などの2次元に配置されたセンサ素子を含む2次元アレイであり得る。センサ素子の各々は、環境条件に基づいてセンサ読取り値を生成することが可能であり得る。特定の実装形態では、センサは、ビジョンセンサであり得、センサ素子に入射する光に基づいてセンサ読取り値を生成し得る。図1は、2次元アレイに配置された複数のセンサ素子を備える例示的なセンサ100を示す。図1では、センサ100の図は、センサ素子アレイ内の64(8×8)個のセンサ素子を表す。様々な実装形態では、センサ素子の形状、センサ素子の数、センサ素子間の間隔は、本発明の範囲から逸脱することなく、非常に変化し得る。センサ素子102は、64個のセンサ素子のグリッドからの例示的なセンサ素子を表す。複数のセンサ素子102の各々は、センサ100に入射する光に基づいて信号を生成することができ、信号は、画像を表す複数のセンサ素子に対応する。
【００１９】
特定の実装形態では、センサ素子は、センサ素子に結合されたピクセル内回路(計算機構)として実装された専用CV計算ハードウェアを有し得る。いくつかの実装形態では、センサ素子およびピクセル内回路は一緒に、ピクセルと呼ばれることがある。センサ素子に結合されたピクセル内回路によって実行される処理は、ピクセル内処理と呼ばれることがある。いくつかの例では、センサ素子アレイは、ピクセルアレイと呼ばれることがあり、違いは、ピクセルアレイがセンサ素子と各センサ素子に関連するピクセル内回路の両方を含むことである。図2は、センサ素子202とピクセル内回路204とを有する例示的なピクセル200を示す。特定の実装形態では、ピクセル内回路204は、アナログ回路、デジタル回路、またはそれらの任意の組合せであり得る。
【００２０】
特定の実装形態では、センサ素子アレイは、センサ素子のグループに結合された周辺回路(計算機構)として実装された専用CV計算ハードウェアを有し得る。そのような周辺回路は、オンチップセンサ回路と呼ばれることがある。しかしながら、いくつかの実装形態では、そのような周辺回路はまた、チップ外で実装されてもよく、それによって、センサおよび周辺回路は、単一の基板上に製造されない。図3は、センサ素子アレイ302に結合された例示的な周辺回路(304および306)を示す。
【００２１】
本明細書で説明するように、専用CV計算ハードウェアは、対象センサ素子に近接する複数の隣接センサ素子に関連する信号に少なくとも部分的に基づいて対象センサ素子に関するCV特徴または局所CV特徴を計算する。いくつかの実装形態では、CV特徴または局所CV特徴を計算する専用CV計算ハードウェア(たとえば、ハードウェアベースのCV計算)は、ソフトウェア計算技法が汎用プロセッサ上でソフトウェアベースのCV計算アルゴリズムを実行する従来のソフトウェア計算技法とは異なる。そのようなCV特徴は、次いで、複数のセンサ素子の各々を対象センサ素子としてとり、複数のセンサ素子の各々について計算され得る。いくつかの実装形態では、局所CV特徴は、単一の対象センサ素子についてではなく、1つまたは複数の対象センサ素子のブロックについて計算され得ることが理解される。言い換えれば、CV特徴計算は、単一のセンサ素子ではなく、センサ素子またはピクセルのブロックに対応する合計されたまたは平均された信号に対して実行され得る。そのような実装形態では、対象センサ素子(もしくは、対象センサ素子に関連する信号)および/または隣接センサ素子(もしくは、複数の隣接センサ素子に関連する信号)を参照する議論は、対象センサ素子または隣接センサ素子の代わりに対象センサ素子のブロックに関連する、組み合わされた、合計された、または平均された値を指すように理解され得る。たとえば、CV特徴は、センサ素子ブロック103に近接する複数の隣接センサ素子、たとえば、センサ素子ブロック104a、104b、104c、104d、104e、104f、104g、および/または104hに関連する複数の隣接センサ素子に関連する信号(たとえば、組み合わされた、合計された、および/または平均された信号)に少なくとも部分的に基づいて、センサ素子ブロック103について計算され得る。センサ素子ブロック103、104a、104b、104c、104d、104e、104f、104g、および/または104hは、1×1個のセンサ素子(合計1個のセンサ素子)のブロック、1×2個のセンサ素子(合計2個のセンサ素子)のブロック、2×2個のセンサ素子(合計4個のセンサ素子)のブロック、2×3個のセンサ素子(合計6個のセンサ素子)のブロック、3×3個のセンサ素子(合計9個のセンサ素子)のブロックなどを含み得ることが理解される。一般に、センサ素子ブロックは、任意のn×mのブロックを含み得、ここで、nおよびmは、各々独立に、1よりも大きいが、センサアレイの2つの次元のうちの1つまたは別の次元に沿ったセンサ素子の数よりも少ない任意の数であり得る。
【００２２】
本明細書で説明するように、CV特徴または局所CV特徴は、センサの各センサ素子またはピクセルに関連するラベルなどの、低レベルコンピュータビジョンマーカまたはインジケータを検出することを指し得る。たとえば、ラベルは、センサ素子のためのローカルバイナリパターン(LBP)ラベルを含み得る。センサ素子のためのLBPラベルは、センサ素子のセンサ読取り値と、その隣接センサ素子のうちのいくつかのセンサ読取り値とを比較することによって生成され得る。一般に、所与のセンサ素子を参照して計算されたCV特徴、ラベル、または特徴記述子は、(1)エッジ、(2)LBPまたは局所3値パターン(LTP:local ternary pattern)のようなラベル、(3)勾配またはその符号、たとえば、符号付き勾配のヒストグラム(HSG)または勾配方向ヒストグラム(HOG:histogram of oriented gradients)、(4)1次元畳込み、2次元畳込み、または3次元畳込み、(5)ハリスまたはFASTのようなコーナー、(6)湾曲度、(7)最大値または最小値、(8)連続性および/または不連続性、(9)コントラスト、(10)正規化ピクセル差分(NPD:normalized pixel differences)、(11)テンプレートマッチング、などに関連付けられ得る
【００２３】
本明細書で説明するように、対象センサ素子に比較的近いセンサ素子は、隣接センサ素子と呼ばれることがある。本開示の特定の態様では、隣接センサ素子は、対象センサ素子のすぐ隣のセンサ素子を含み得る。本開示の特定の他の態様では、隣接センサ素子はまた、対象センサ素子に比較的近く、すぐ隣ではないセンサ素子を含み得る。たとえば、特定の例では、センサの数の幅または高さが64個のセンサ素子であるとき、対象センサ素子から3個のセンサ素子内のセンサ素子は、依然として隣接センサ素子と考えられ得る。
【００２４】
図3Bは、センサ素子アレイと、CV計算ハードウェアと、第2のマイクロプロセッサと通信するためのインターフェースを含む専用マイクロプロセッサとを含む例示的な実装形態のスマートビジョンセンサを示す。センサ素子アレイ308は、図1に示すセンサ100と同様であり得る。センサ素子アレイ308は、相関二重サンプリング回路を含み得る。センサ素子アレイ308はまた、たとえば、CV計算が組み合わされた値またはより低い分解能を使用して改善される実装形態では、ラインバッファ310に信号を出力する前に、センサ素子またはピクセルの信号または値を組み合わせる、合計する、または平均する回路を含み得る。ラインバッファ310は、センサ素子アレイ308からビジョンセンサの他の部分に画像または画像の一部を表す信号を転送するために、1つまたは複数のラインバッファを含み得る。いくつかの実装形態では、センサ素子アレイ308は、画像信号処理(ISP:image signal processing)のための回路を含まないことがあり、したがって、図3Bは、センサ素子アレイ308およびCV計算ハードウェア312が、介在するISP回路なしで接続される実装形態を示す。たとえば、いくつかの実装形態では、センサ素子アレイ308からCV計算ハードウェア312によって受信される信号は、欠陥補正、ホワイトバランシング、カラーバランシング、オートフォーカス、レンズロールオフ、デモザイキング、デベイヤリング、および/または画像鮮明化のうちの1つまたは複数を受けていない。しかしながら、いくつかのそのようなISPがない実装形態では、焦点合わせまたは自動露出補正などのなんらかの処理が生じ得る。ISPを受けていないそのような信号は、生信号と呼ばれることがある。1つの実装形態では、センサ素子アレイ308は、320×240個のセンサ素子を備えるアレイを有する、ISPなしのクォータービデオグラフィックスアレイ(QVGA:Quarter Video Graphics Array)カメラセンサである。
【００２５】
様々な実装形態では、CV計算ハードウェア312は、デジタル領域またはアナログ領域のいずれかでCV計算を実行することができる。アナログ領域でCV計算を実行することができるCV計算回路のいくつかの例は、図9および図10を参照して本明細書で開示される。それらおよび同様の回路のデジタルバージョンも可能である。したがって、オプションで、デジタル実装形態では、ラインバッファ310とCV計算ハードウェア312との間にアナログ-デジタル変換器(ADC:analog-to-digital converter)314が配置され得る。いくつかの実装形態では、CV計算ハードウェア312は、CV特徴を計算する以外の機能をほとんどまたはまったく持たないように設計されたハードウェアであるという意味で、専用CV計算ハードウェアである。
【００２６】
いくつかの実装形態では、CV計算ハードウェア312は、図1を参照して論じたように、センサ素子またはピクセルのブロックに関連する信号の組合せ、合計、または平均を使用し得る。そのような実装形態では、積分画像は、図16A〜図16B、図17A〜図17D、図18A〜図18B、図19、および図20を参照して説明するように、CV計算ハードウェア312への入力前に、そのような組合せ、合計、または平均を計算する際に有用であり得る。したがって、オプションでは、ビジョンセンサはまた、センサ素子アレイ内のセンサ素子の少なくともサブセットによってサンプリングされた画像を表す信号の少なくともサブセットに基づいて、画像の少なくとも一部の積分画像を計算するための2次元積分ハードウェア316を含み得る。図示のように、2次元積分ハードウェア316は、専用CV計算ハードウェアと通信することができる。センサ素子アレイによってサンプリングされた画像を表す積分画像、および/または、センサ素子アレイによってサンプリングされた画像の一部の積分画像は、本明細書の他の場所で説明するように、信号値を直接加算することと比較して、センサ素子のブロックに関する信号値をより迅速に組み合わせる、合計する、または平均するために使用され得る。2次元積分ハードウェア316は、センサ素子アレイからの生信号に基づいて、デジタル領域またはアナログ領域のいずれかで、センサ素子アレイによってサンプリングされた画像のすべてまたは一部の積分画像を表す信号を生成することが可能な回路を含み得る。いくつかの実装形態では、2次元積分ハードウェア316によって生成された(センサ素子アレイによってサンプリングされた画像の一部またはサンプルウィンドウのみの積分画像であり得る)積分画像は、図3Bに示すように、ハードウェア走査ウィンドウアレイ318内に記憶され得る。たとえば、ハードウェア走査ウィンドウアレイは、積分画像を記憶するための、ランダムアクセスメモリ(RAM)アレイまたは他の形態のアナログもしくはデジタルメモリを含み得る。ピクセルレベルのLBPのように、センサ素子のブロックに対応する信号の組合せ、合計、または平均を計算することが有用でない実装形態では、2次元積分ハードウェア316は、含まれなくてもよく、したがって、センサ素子アレイ310からのアナログ生信号、またはADC314からのデジタルに変換された生信号を含むサンプリングウィンドウは、ハードウェア走査ウィンドウアレイ318内に直接記憶され得ることが理解される。さらに、いくつかの実装形態では、2次元積分ハードウェア316は、図17A〜図17D、図18A〜図18B、図19、および図20を参照して論じたように、1次元積分を同様にまたは代わりに実行し得ることが理解される。同様に、ハードウェア走査ウィンドウアレイ318は、センサアレイ308によって取り込まれた画像のサンプルウィンドウに対応する1次元積分画像を記憶し得る。1次元積分画像の使用は、たとえば、回転された基準オブジェクト、たとえば、顔を検出するために、回転されたブロックを使用して、マルチブロックLBPの計算を可能にし得る。
【００２７】
ビジョンセンサはまた、CV計算ハードウェア312を含み得る。いくつかの実装形態では、CV計算ハードウェアは、センサ素子のブロックに近接する複数の隣接センサ素子に関連する信号に少なくとも部分的に基づいて、1つまたは複数の対象センサ素子のブロックに関する局所CV特徴を計算し得る。たとえば、CV計算ハードウェアのローカルバイナリパターン(LBP)実装形態では、CV計算ハードウェアは、(たとえば、積分画像を使用して生成された)生画像信号、または生画像信号の組合せ、合計、もしくは平均に対応する信号値を受信し、生画像信号に基づいてデジタルLBPラベルを生成するハードウェアを含み得る。マルチブロックLBPが計算される実装形態では、1つまたは複数の対象センサ素子のブロックは、一例として、11×11個のセンサ素子のブロックを含み得る。局所CV特徴が計算される1つまたは複数の対象センサ素子のブロックが単一の対象センサ素子である場合、ピクセルレベルのLBP計算も行われ得ることも理解される。上記の説明は、専用マイクロプロセッサ320とは別であるようにCV計算ハードウェア312を参照したが、いくつかの実装形態では、専用CV計算ハードウェア312は、専用マイクロプロセッサ320内のハードウェア内に実装され得ることが理解される。
【００２８】
専用ハードウェアにおいて、上記で論じたLBPラベルなどのCV特徴を生成することは、プロセッサ、たとえば、アプリケーションプロセッサなどの汎用プロセッサ、さらには専用マイクロプロセッサにおいてCV特徴を計算することと比較して、ビジョンセンサの電力を低減し得る。しかしながら、ビジョンセンサは、CV計算ハードウェア312に結合された専用マイクロプロセッサ320を依然として含み得る。専用マイクロプロセッサ320は、CV計算ハードウェア312からハードウェア計算されたCV特徴を受信し、タスクが所与のクラスに属する画像内のすべてのオブジェクトの位置およびサイズを見つけることである(その顔検出が特定の場合と見なされ得る)オブジェクトクラス検出などのより高いレベルのコンピュータビジョン動作、ならびに他のコンピュータビジョン動作を実行することができる。さらに、専用マイクロプロセッサ320は、ラインバッファ310、ADC314、2次元積分ハードウェア316、ハードウェア走査ウィンドウアレイ318、およびCV計算ハードウェア312に制御信号を提供し得る。いくつかの実装形態では、オブジェクトクラス検出または他のコンピュータビジョン動作を実行するために、専用マイクロプロセッサ320は、オブジェクトクラス検出、たとえば、顔検出を実行するために、カスケード分類器アルゴリズムを使用し得る。オプションの実装形態では、マイクロプロセッサ上の計算負荷をさらに低減するために、ハードウェア内にカスケード分類器を実装することによって、さらなる電力節約が可能である。
【００２９】
オプションのカスケード分類ハードウェア322は、カスケード分類器のハードウェア実装を含む。いくつかの実装形態では、カスケード分類器は、カスケード分類器が訓練されるオブジェクトの例と非オブジェクトの例、たとえば、顔の画像と顔ではない画像とを含む画像のデータセットに対して機械学習技法を使用して訓練される。たとえば、第1の段階では、カスケード分類ハードウェアは、たとえば、ハードウェア走査ウィンドウアレイ318内に記憶された特定の数Iの対象センサ素子についてLBP特徴が計算されることをCV計算ハードウェア312から要求し得る。加えて、対象センサ素子の位置{(x11,y11),...(x1l,y1l)}も、カスケード分類ハードウェア322によって提供されることになる。CV計算ハードウェア312が、ベクトル値として扱われ得る要求されたLBP特徴を提供すると、カスケード分類ハードウェアは、第1の重み付きスカラー合計値を生成するために、1つまたは複数の重みを用いてLBP特徴の各々のドット積の合計を実行する。一般に、各LBP特徴(LBP11,...,LBP1l)は、各々が異なり得る所与の重み(w11,...,w1l)が乗算されることになる。第1の重み付きスカラー合計値は、次いで、第1のしきい値と比較される。スカラー和がしきい値よりも小さい場合、所与の確率に対して、ハードウェア走査ウィンドウアレイ318内に記憶された信号によって表される画像の部分内に顔は存在せず、したがって、カスケード分類ハードウェア322は、ハードウェア走査ウィンドウアレイ318が走査を継続し、1つまたは複数の新しい列または行を追加し、1つまたは複数の古い列または行を除去すべきであることを示すために、ハードウェア走査ウィンドウアレイ318と、オプションで、ラインバッファ310およびセンサ素子アレイ308などのビジョンセンサの他の構成要素とに信号を送る。画像の後続のウィンドウ、または、ハードウェア走査ウィンドウアレイ318内に記憶されたセンサ素子アレイのセンサ素子の後続のサブセットに対応する後続の複数の信号を用いて、プロセスは、新たに開始することができる。画像の後続のウィンドウは、画像の前のウィンドウと大部分で重複し得ることが理解される。いくつかの実装形態では、画像は、左から右に走査され、センサ素子アレイ308の終わりに達すると、画像は、1つまたは複数の行を下に移動した後、再び左から右に走査され得る。別の実装形態では、画像は、1つまたは複数の行だけ下にシフトした後、右から左に走査され得、これは、前の画像との増大した重複を考慮し得る。
【００３０】
スカラー和が第1のしきい値よりも大きい場合、カスケード分類ハードウェア322は、次の段階に移動する。次の(この例では、第2の)段階では、カスケード分類ハードウェアは、ハードウェア走査ウィンドウアレイ318内に記憶された位置{(x21,y21),...(x2m,y2m)}におけるm個の対象センサ素子に関するLBP特徴を提供するように、再びCV計算ハードウェア312に要求する。CV計算ハードウェア312が、要求されたLBP特徴(LBP21,...,LBP2m)を計算し、提供すると、カスケード分類ハードウェア322は、第2の重み付きスカラー合計値を生成するために、1つまたは複数の重み(w21,...,w2m)を用いてLBP特徴の各々のドット積の別の合計を実行する。第2の重み付きスカラー合計値は、次いで、第2のしきい値と比較される。スカラー和が第2のしきい値よりも小さい場合、ハードウェア走査ウィンドウアレイ318内に記憶された信号によって表される画像の部分内に顔が存在する可能性は低く、カスケード分類器は、走査を継続し、画像の次の部分に移動するために、ビジョンセンサアレイ内の他の構成要素に信号を送る。第2の重み付きスカラー合計値が第2のしきい値よりも大きい場合、プロセスは、上記で説明したように第3の段階に進む。最終段階、たとえば、N段カスケード分類器における第N段階の終わりに、第Nの重み付きスカラー合計値が第Nのしきい値よりも大きい場合、ハードウェア走査ウィンドウアレイ318内に記憶された画像の部分内に顔が検出される。カスケード分類ハードウェア322は、次いで、顔が検出されたことを専用マイクロプロセッサ320に示すことができ、さらにオプションで、顔または顔の一部が検出された画像の部分の位置を示し得る。
【００３１】
LBPが各段階で計算されるべきハードウェア走査ウィンドウアレイ318内の対象センサ素子の数および位置は、一般に、カスケード分類ハードウェア322にプログラムされ、上記で論じた機械学習の訓練から生じる。同様に、LBP特徴の各々に乗算する重みも、一般に、機械学習の訓練中に決定され、次いで、カスケード分類ハードウェア322にプログラムされる。段階の数も、訓練の結果として得られ、カスケード分類ハードウェア322にプログラムされる。いくつかの実装形態では、カスケード分類器は、1段階と31段階の間、たとえば15段階を含み得る。カスケード分類ハードウェア322は、いくつかの実装形態では、カスケード分類器機能を実行し、他の重要な機能をほとんどまたはまったく実行しないように設計されたハードウェアであるという意味で、専用カスケード分類ハードウェアと見なされ得る。上記で説明した実装形態は、モデルを生成するために以前の実験室内での訓練および機械学習に基づいてプログラムされた重みおよびしきい値に基づくカスケード分類器に関するが、カスケード分類ハードウェア322、または、CV計算ハードウェア312から受信したハードウェア計算されたCV特徴に基づいてCV動作を実行するように設計された周辺回路内の他のハードウェアは、現場で機械学習を実行するように設計され得ることが理解される。
【００３２】
今説明した実装形態では、専用マイクロプロセッサ320は、たとえば、顔検出されたイベントをどうするのかを決定し得る。たとえば、第2のマイクロプロセッサにイベントを送り得る。いくつかの実装形態では、専用マイクロプロセッサ320および第2のマイクロプロセッサは、それぞれ、図4Aおよび図4Bの専用マイクロプロセッサ406およびアプリケーションプロセッサ408に対応し得る。図3Bに示すように、専用マイクロプロセッサ320は、第2のマイクロプロセッサと通信するためのインターフェース324を含む。
【００３３】
上記の説明は、専用マイクロプロセッサ320とは別個のものとしてカスケード分類ハードウェア322を参照したが、いくつかの実装形態では、専用カスケード分類ハードウェア322は、専用マイクロプロセッサ320内のハードウェア内に実装され得ることが理解される。代替的には、カスケード分類器は、専用マイクロプロセッサ320上のソフトウェアアルゴリズムとして実行され得る。さらに、カスケード分類器の代わりに、またはカスケード分類器に加えて、他のソフトウェアアルゴリズムが専用マイクロプロセッサ上で実行され得る。たとえば、顔検出は、図14Cに記載のように、ヒストグラムを使用して実行され得る。いくつかのそのような実装形態では、走査ウィンドウアレイ318内に記憶された画像のサンプルウィンドウについて計算されたすべてのLBPラベルのヒストグラムは、走査ウィンドウアレイ318内に記憶されたサンプルウィンドウ内の顔の存在を検出するために基準ヒストグラムと比較され得る。いくつかの実装形態では、たとえば、ヒストグラムを使用して顔を検出するために、専用ハードウェアが実装され得る。そのような実装形態は、カスケード分類ハードウェア322の代わりに、またはカスケード分類ハードウェア322に加えて、そのような専用ハードウェアを含み得る。
【００３４】
図3Bに示す実装形態では、ラインバッファ310、ADC314、2次元積分ハードウェア316、ハードウェア走査ウィンドウアレイ318、CV計算ハードウェア312、カスケード分類ハードウェア322、またはそれらの任意の組合せのうちの1つまたは複数は、周辺回路304、すなわち、センサ素子アレイ308の周辺にある回路と見なされ得る。今列挙した様々な構成要素、またはそれらの任意の組合せは、センサ素子アレイ308内のピクセル内回路として代わりに実装され得ることも理解される。
【００３５】
図2、図3A、および図3Bに示す様々な実装形態では、専用CV計算ハードウェアは、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、または、本開示の態様を実行するための任意の同様のアナログもしくはデジタルコンピューティングロジックを使用して、センサ素子アレイに結合されたデジタルロジックとして実装され得る。
【００３６】
特定の実装形態では、専用CV処理モジュールとして実装された専用CV計算ハードウェアは、CV特徴を計算するための非一時的コンピュータ可読媒体上に記憶された命令を実行するように構成され得る。たとえば、ユーザインターフェース、I/Oとの対話などからの割込みを処理するためのいくつかの異なる機能およびアプリケーションを有するオペレーティングシステムを実行し得る汎用プロセッサとは対照的に、専用CV処理モジュールとして実装された専用CV計算ハードウェアは、主にCV特徴を計算するための命令を実行するように構成され得る。
【００３７】
さらに、図4Aに示すように、特定の実装形態では、センサ装置400は、センサ402と、コンピュータビジョン計算ハードウェア404と、専用マイクロプロセッサ406とを有し得る。コンピュータビジョン計算ハードウェア404は、図2、図3A、および図3Bに記載のように、感知された情報に対する初期処理を実行するためのピクセル内回路または周辺回路であり得る。専用マイクロプロセッサ406は、ASIC、FPGA、埋込みマイクロプロセッサ、または、本開示の態様を実行するための任意の同様のアナログもしくはデジタルコンピューティングロジックを使用して実装され得る。
【００３８】
少なくとも特定の実装形態では、専用マイクロプロセッサ406は、アプリケーションプロセッサ408に追加され、アプリケーションプロセッサ408の代わりではないことが留意されるべきである。たとえば、専用マイクロプロセッサ406は、検出されたコンピュータビジョン特徴の指標、オブジェクトクラス検出の指標、および/または、マクロ特徴を決定するため、または、笑顔、顔、オブジェクトなどの基準オブジェクトの画像内の有無を検出するための、以前に記憶された画像または基準インジケータに対するパターンマッチの指標を受信し得る。本明細書で使用される場合、マクロ特徴は、計算された、たとえば、ハードウェア計算されたCV特徴に基づくCV計算または動作を使用して検出される(顔などの)オブジェクトまたはオブジェクトの一部もしくは態様(皮膚のテクスチャ、笑顔、顔の表情)を指すことがある。専用マイクロプロセッサ406は、アプリケーションプロセッサ408にマクロ特徴検出の指標を送り得る。アプリケーションプロセッサ408は、その情報を取得し得、その入力に基づいて動作を実行し得る。たとえば、モバイルデバイスでは、アプリケーションプロセッサ408は、ユーザの顔を検出した後、モバイルデバイス画面をアンロックし得る。同様に、子犬のおもちゃでは、アプリケーションプロセッサ408は、笑顔が検出されたとき、親しみやすい音声の吠え声を生成し得る。いずれにしても、より高いレベルのコンピュータビジョン特徴は、アプリケーションプロセッサ408による直接のコンピュータビジョン特徴計算と比較して省電力で、センサ装置400などの専用マイクロプロセッサ406を含む低電力システムによって計算され得る。これは、特に、アプリケーションプロセッサが専用マイクロプロセッサ406よりも高い電力のプロセッサである実装形態の場合である。
【００３９】
一般に、モバイルデバイスの文脈でのように、アプリケーションプロセッサ408は、比較的より複雑で、計算集約的で、電力集約的で、オペレーティングシステムの動作などのシステムレベルの動作を実行する役割を果たし得、ユーザと対話するためのユーザインターフェースを実装し、デバイスのための電力管理を実行し、メモリおよび他のリソースなどを管理し得るが、専用マイクロプロセッサは、比較的そうではなくてもよい。アプリケーションプロセッサ408は、図21のプロセッサ2110と同様であり得る。
【００４０】
しかしながら、特定の実装形態では、アプリケーションプロセッサ408は、複雑さがより低く、低電力である。たとえば、カメラ機能とビデオ機能とを有するおもちゃは、センサ装置400自体の中で子供が笑っていることを検出し、次いで、アプリケーションプロセッサ408からロジックを使用して吠える動作を実行し得る。
【００４１】
図4Aは、ワイヤードインターフェースを使用してアプリケーションプロセッサ408に結合された専用マイクロプロセッサ406を開示する。専用マイクロプロセッサ406とアプリケーションプロセッサ408との間のワイヤードインターフェースの例は、シリアル周辺インターフェース(SPI)、集積回路間(I2C)、低電圧作動シグナリング(LVDS)、またはそのことのための任意の他の適切なワイヤードプロトコルのうちの1つまたは複数を含み得る。
【００４２】
しかしながら、図4Bに示すように、特定の実装形態では、専用マイクロプロセッサ406は、ワイヤレスインターフェースを使用してアプリケーションプロセッサ408に結合され得る。アプリケーションプロセッサ408にワイヤレスに接続するために、専用マイクロプロセッサ406は、図4B中でセンサワイヤレスモジュール410と呼ばれる、センサ装置400に結合された中間ワイヤレスモジュール410に接続され得る。いくつか実装形態では、センサワイヤレスモジュール410は、上記で論じたワイヤードインターフェースを使用して専用マイクロプロセッサ406に接続され得る。次に、センサワイヤレスモジュール410は、アプリケーションプロセッサ408に結合され得るアプリケーションプロセッサワイヤレスモジュール412とワイヤレスに通信し得る。ワイヤレスモジュールは、Zigbee(IEEE802.15.4規格)、Bluetooth(登録商標)、ボディエリアネットワーク(IEEE802.15.6)、ワイヤレスUSB、Wi-Fi(802.11)、Z-wave、またはIrDA(赤外線ベースの通信)などの、アプリケーションプロセッサ408と通信するための1つまたは複数の適切なワイヤレスプロトコルを使用するように構成され得る。
【００４３】
本開示の態様によれば、特定の実装形態では、様々な異なるセンサが、本開示の態様に従って改善され得る。例示的なセンサは、ビジョンセンサ、嗅覚センサ、および/または化学センサを含み得る。本開示の全体を通してビジョンセンサが論じられるが、同様の技術は、本発明の範囲から逸脱することなく、他のタイプのセンサでも用いられ得る。
【００４４】
技法は、一実装形態では、センサデータがアプリケーションプロセッサ、またはセンサ装置の外部の任意の他の処理エンティティに送られる前の、ピクセル内回路、周辺回路、または、専用マイクロプロセッサ内の特徴(たとえば、CV特徴およびマクロ特徴)の計算のための専用回路もしくはシステムを説明する。特徴の計算のためのそのような専用回路は、(1)回路が特定の特徴の計算に最適化されるとき、(2)プロセッサ命令復号、メモリ転送などに関連してより少ないオーバヘッドが含まれるとき、電力節約につながる。
【００４５】
加えて、顔、笑顔などのマクロ特徴は、CV特徴から導出され得、また、コンピュータビジョン計算ハードウェア404および/または専用マイクロプロセッサ406を使用して生成され得る。
【００４６】
図5および図6は、ビジョンセンサを備える感知装置の例示的な実装形態を示す。コンピューティングデバイスに結合された1つまたは複数のカメラを使用して、画像、またはビデオなどの一連の画像を取得するために、いくつかの技法が用いられ得る。
【００４７】
図5は、ビジョンセンサの例示的な実装形態を示す。アドバンスドフォトセンサ(APS:advanced photo sensor)などのビジョンセンサは、画像データを取得するための画像カメラまたはビデオカメラ内で使用され得る。フレームベースの実装形態では、画像データの取得は、クロックに同期され得、画像フレーム全体のデータは、取得クロックに同期した所定の頻度で取得され得る。一実装形態では、カメラは、複数のセンサ素子を備えるセンサ素子アレイ502を備え得る。各センサ素子は、ピクセル内回路に結合され、一緒にピクセルと呼ばれ得る。各ピクセルは、取得クロックに同期した画像データを取得するように構成され得る。
【００４８】
図5に示すように、行ドライバ504(ROW DRV)は、フレーム全体について行ごとにデータの読取りをトリガし、CV動作のためにプロセッサ上で実行される画像処理ブロックにデータを送る。タイミングコントローラ510(TCON)は、相関二重サンプリングブロック506(CDS)における相関二重サンプリングをトリガする。相関二重サンプリングは、各センサのための検出電圧を較正するために用いられ得る。たとえば、一実装形態では、センサ素子のための検出電圧を適切に較正するために、電圧は、センサが光に曝されたときに検出され得る。情報は、センサとCDSとの間のアナログ領域内で転送される。CDSは、データを処理し、アナログ領域内のアナログ-デジタル変換器508(ADC)にデータを送る。ADCは、アナログデータをデジタルデータに変換し、プロセッサ512を使用するCV動作を使用する画像処理のためにプロセッサにデータを送信する。以下でより詳細に論じるように、フレームベースのカメラでCV計算を実行することは、高消費電力につながる。
【００４９】
図6は、ビジョンセンサを備える感知装置の例示的な実装形態を示す。計算デバイスに結合された1つまたは複数のカメラを使用して、画像、またはビデオなどの一連の画像を取得するために、いくつかの技法が用いられ得る。
【００５０】
図6は、イベントベースのカメラを使用するビジョンセンサの例示的な実装形態を示す。ビジョンセンサは、画像データを取得するための画像カメラまたはビデオカメラ内で使用され得る。イベントベースのカメラセンサは、イベントに基づいて画像情報を取得するように構成され得る。一実装形態では、イベントベースのカメラは、図1に示すように、複数のピクセルを備え得る。各ピクセルは、センサ素子とピクセル内回路とを備え得る。各ピクセルは、ピクセルで検出されたイベントに基づいて画像データを取得するように構成され得る。たとえば、一実装形態では、任意の所与のピクセルで知覚された環境条件の変化(たとえば、オブジェクトから反射する光の変化)は、しきい値を超える電圧の変化をもたらす可能性があり、ピクセルにおけるイベントをもたらす可能性がある。イベントに応答して、ピクセルに関連するロジックは、さらなる処理のためにプロセッサにセンサ素子読取り値を送り得る。
【００５１】
図7を参照すると、各ピクセル700は、図7に示すように、フォトダイオード702と、動的ビジョンセンサ(DVS:dynamic vision sensor)704回路とを含み得る。DVSモジュールは、イベント検出回路と呼ばれることもある。イベント検出モジュールは、ピクセルにおける値の変化を検出し、イベントインジケータを生成する。イベントが検出された場合、ピクセルの輝度(intensity)がしきい値を超えて変化したとき、センサ読取り値がプロセッサに送り出される。いくつかの例では、イベントが検出されたセンサ素子の位置は、ペイロードとともに、さらなる処理のためにコンピュータシステムに送られる。一実装形態では、ペイロードは、輝度電圧、輝度電圧の変化、または、輝度電圧の変化の極性(符号)であり得る。いくつかの例では、イベントベースのカメラは、従来のフレームベースのカメラと比較して、さらなる処理のためにプロセッサに転送されるデータの実質的により少ない量をもたらすことができ、電力節約をもたらす。
【００５２】
図6では、ブロック602は、センサとイベント検出回路とを集合的に表す。ブロック602は、複数のピクセルを有するセンサを表し、各ピクセルは、イベント検出のためのセンサ素子と回路とを備える。各ピクセルは、センサ素子を使用してセンサ読取り値を生成する。センサ読取り値は、後にデジタル化され、すなわち、ADC変換器608を使用してアナログデータからデジタルデータに変換される。行ドライバ604(ROW DRV)は、フレーム全体に対して行ごとにデータの読出しをトリガする。タイミングコントローラ610(TCON)は、センサ読取り値のサンプリングをトリガする。一実施形態では、以前のセンサ読出しの結果は、各ピクセルについて列並列SRAM606内に記憶され得る。列並列SRAM606内に記憶された結果は、現在のセンサ読取り値と以前のセンサ読取り値との間の比較に基づいてイベントを比較し、トリガするために、比較器によって使用され得る。ピクセルで取得されたアナログ情報は、アナログ-デジタル(ADC)変換器608を使用してデジタル領域に変換される。デジタル化されたセンサ読取り値は、コンピュータビジョン動作を使用するさらなる画像処理のためにプロセッサ612に送られ得る。
【００５３】
プロセッサ612は、特徴と、結果としてこれらの特徴に関連するオブジェクトとを検出するための、個々のピクセルから受信した情報に対する特定のCV動作を実行し得る。特徴は、エッジ、コーナーなどの複雑ではない特徴を含み得る。CV動作は、マルチピクセル計算を実行することによって特徴を検出するために、センサ素子アレイからの複数のピクセルからの情報を使用し得る。たとえば、対象センサ素子またはピクセルに対してCV動作を実行するために、CV動作は、対象センサ素子またはピクセルに近接する隣接センサ素子またはピクセルによって生成されたセンサ読取り値を使用し得る。
【００５４】
本明細書で説明するように、対象センサ素子に比較的近いセンサ素子は、隣接センサ素子と呼ばれることがある。本開示の特定の態様では、隣接センサ素子は、対象センサ素子のすぐ隣のセンサ素子を含み得る。本開示の特定の他の態様では、隣接センサ素子はまた、対象センサ素子に比較的近く、すぐ隣ではないセンサ素子を含み得る。たとえば、特定の例では、センサの数の幅または高さが64個のセンサ素子であるとき、対象センサ素子から3個のセンサ素子内のセンサ素子は、依然として隣接センサ素子と考えられ得る。
【００５５】
特定の実施形態では、アプリケーションプロセッサ408上でLBPおよびHSGなどのCV動作を実行することは、図2、図3A、図3B、図4A、図4Bに示す実装形態と比較したとき、電力集約的で、処理集約的であり得る。さらに、アナログピクセル値をデジタルピクセル値に変換することは、電力を消費する可能性があり、したがって、いくつかの実装形態では、アナログ領域でのCV特徴の計算が有用であり得る。図3Bのいくつかの実装形態に示すように、デジタル実装形態はまた、CV計算ハードウェア312およびオプションでカスケード分類ハードウェア322によって実行される計算を、たとえば、マイクロプロセッサにおいて純粋にソフトウェアで実行することと比較して、電力節約を提供し得る。さらに、多くの例において、アプリケーションプロセッサ408上でCV動作を実行することは、システムメモリ内にセンサからの情報を格納することと、センサ情報の処理をトリガすることと、CV計算のためにメモリから命令を取得することと、結果を格納することとを必要とするので、アプリケーションプロセッサ408上でCV特徴を検出することは、電力集約的で、処理集約的である可能性がある。加えて、アプリケーションプロセッサ408は、一般に、命令を実行するときに電力を欠乏する。センサからの偽のまたは興味のないイベントは、不活動の間は低電力モードで動作していてもよいアプリケーションプロセッサ408を起動させ、システムの消費電力を大幅に増加させる。
【００５６】
本発明の特定の実施形態は、アプリケーションプロセッサ408を起動させ、アプリケーションプロセッサ408でこれらの低レベルのCV特徴を計算する代わりに、専用CV計算ハードウェアを使用してLBP計算およびHSG計算などのCV動作を実行するための技法を説明する。
【００５７】
本明細書で説明するように、CV特徴または局所CV特徴は、センサの各センサ素子またはピクセルに関連するラベルなどの低レベルのコンピュータビジョンマーカまたはインジケータを検出することを指すことがある。たとえば、ラベルは、センサ素子のためのLBPラベルを含み得る。センサ素子のためのLBPラベルは、センサ素子のセンサ読取り値と、その隣接センサ素子のうちのいくつかのセンサ読取りとを比較することによって生成され得る。LBPラベルは、センサ素子の基準からのCV特徴がエッジまたは直線エッジ、コーナーまたは直線エッジのコーナー、カーブ、スポットなどを表すかどうかを示し得る。HSGなどの他の技法は、本開示の範囲から逸脱することなく、CV特徴を検出するために使用され得る。
【００５８】
本明細書で説明するように、CV特徴の変換に基づいてイベントを検出および/または生成することは、センサ素子またはセンサ素子の小さいグループの観点から特徴の変化を検出することを指すことがある。たとえば、センサ素子におけるLBPラベルが変化した場合、イベントが検出および/または生成され得る。言い換えれば、センサ素子において検出されたCV特徴がスポットからエッジに変化する場合、これは、イベントの生成をトリガし得る。
【００５９】
以下でより詳細に説明するように、位置およびCV特徴情報などの追加の情報を伴うイベントの生成は、さらなる処理のためにアプリケーションプロセッサに提供され得る。本開示の一態様では、アプリケーションプロセッサは、笑顔、顔、またはそのことに関する任意の他のオブジェクトなどのマクロ特徴を検出するために、これらのイベントと、関連情報とを使用し得る。
【００６０】
図8は、本開示の態様を実行するための例示的なピクセル806を示す。図8中のピクセルは、知覚回路802(たとえば、少なくとも1つのフォトダイオード)と、ピクセル内アナログ処理のためのCVブロック804とを備える。図8に示すように、特定の実装形態では、以前の電圧と現在の電圧とを記憶するために、複数のキャパシタが使用され得る。CVブロック804は、特徴検出のためのLBPまたはHSGなどのCV動作を使用し得る。出力は、特徴検出の態様を示す情報を含み得る。図9は、特徴のLBPラベルを計算するための例示的な回路を提供し、図10は、HSG特徴を計算するための例示的な回路を提供する。いくつかの例では、キャパシタンス値を有するキャパシタは、隣接センサ素子によって生成されたセンサ読取り値に基づいて実行されるマルチピクセル計算の一環としてのアナログ重み付けおよび合計を実行するための重み付けを反映する。たとえば、HSGラベルを生成するために、変化するキャパシタンスを有するキャパシタに電圧を印加することは、その電圧入力に関連する重みを変化させる。複数のキャパシタが並列に連結されているとき、複数のキャパシタに印加される複数のピクセルからの電圧は、それぞれのキャパシタのキャパシタンスに基づいて重み付き合計を生成する効果を有する。
【００６１】
図8、図9、および図10は、(図2に開示するように)ピクセル内回路内のロジックおよび/または回路の例示的な実装形態を示すが、そのようなロジックおよび/または回路は、本開示の範囲から逸脱することなく、(図3Aおよび図3Bに示すように)周辺回路として実装され得る。さらに、そのようなロジックおよび/または回路は、本開示の範囲から逸脱することなく、アナログ回路および/またはデジタル回路として実装され得る。
【００６２】
図11および図12は、イベントベースのセンサにおけるコンピュータビジョン動作の2つの例示的な実装形態を示す。図11および図12は、イベントベースのカメラを示すが、同様の実装形態は、本発明の範囲から逸脱することなく、フレームベースのカメラに対しても可能である。
【００６３】
図11は、ピクセル内回路または周辺回路においてコンピュータビジョン動作を実行する感知装置の例示的なブロック図を示す。図11は、センサ1102と、動的ビジョンセンサ(DVS)モジュール1104と、CVモジュール1106とを示す。図11に示すように、センサ1102からのセンサ読取り値を生成した後、DVSモジュール1104は、センサ読取り値において検出された変化に基づいてイベントを検出し得る。イベントが検出されると、CVモジュールは、CV動作を実行し得、特徴レベル粒度(granularity)におけるイベントを検出し得る。いくつかの例では、特徴の検出時に、CVモジュールは、さらなる処理のためにプロセッサに情報を送り得る。
【００６４】
センサ1102、DVSモジュール1104、およびCVモジュール1106は、様々な異なる粒度における様々な異なる構成で実装され得る。たとえば、図11中のセンサは、図1中のセンサ素子102などの単一のセンサ素子、または、図1中のセンサ100などのセンサ素子アレイ全体を表し得る。センサ1102からのセンサ読取り値は、DVSモジュール1104に継続的に送られる。
【００６５】
DVSモジュール1104は、ピクセル内回路または周辺回路またはそれらに任意の組合せとして実装され得る。DVSモジュール1104が複数のピクセルに関するセンサ読取り値を処理する構成では、DVSモジュール704は、列(列並列DVSとも呼ばれる)などのセンサ素子アレイの1次元、またはセンサ素子アレイ全体に関連するセンサ素子からのセンサ読取り値を処理し得る。DVSモジュール1104は、センサ素子に関する電圧強度などのセンサ読取り値をその以前に記憶されたアナログ読取り値に対して継続的に比較し得る。電圧強度における差または変化が所定のしきい値を超える場合、DVSモジュール1104は、CVモジュール1106にイベントを提起し得る。DVSモジュール1104によって提起されたイベントは、図11に示すようにピクセルレベルの粒度である。
【００６６】
同様に、CVモジュール1106は、センサピクセルの各々の内部のピクセル内回路として、もしくはオンチップセンサ回路として複数のピクセルに関するセンサ読取り値を処理するための周辺回路として、またはそれらの組合せとして実装され得る。CVモジュール1106が複数のピクセルに関するセンサ読取り値を処理する構成では、CVモジュール1106は、列(列並列CVとも呼ばれる)などのセンサ素子アレイの1次元、またはセンサ素子アレイ全体に関連するセンサ素子からのセンサ読取り値を処理し得る。
【００６７】
図示していないが、CVモジュール1106は、基準センサ素子に近接する隣接センサ素子によって生成されたセンサ読取り値に基づいて、センサ素子に関するマルチピクセル計算を表すアナログ動作またはデジタル動作を実行するように構成され得る。
【００６８】
CVモジュール1106は、HSGラベルまたはLBPラベルを生成することによって、エッジおよびコーナーなどの特徴を検出し得る。したがって、検出された各ピクセルイベントについて、CVモジュールは、変更されたピクセルに関連する現在の特徴を決定し得、図11に示すように、値を特徴イベントとして出力し得る。
【００６９】
図12は、ピクセル内回路または周辺回路におけるコンピュータビジョン動作を実行する感知装置の別の例示的なブロック図を示す。図12は、センサ1202と、CVモジュール1204と、DVSモジュール1206とを示す。図11を参照して説明した装置とは対照的に、図12中のCV動作は、DVS動作の前に実行される。図12に示すように、アナログ読取り値としてセンサ1202からのセンサ読取り値を生成した後、CVモジュール1204は、特徴の検出を可能にするように電圧を処理し得、DVSモジュール1206に情報を渡し得る。DVSモジュール1206は、したがって、(ピクセル粒度におけるイベントとは対照的に)特徴粒度でイベントを検出し得る。いくつかの例では、特徴の検出時に、CVモジュールは、さらなる処理のためにプロセッサに情報を送り得る。
【００７０】
センサ1202、CVモジュール1204、およびDVS1206モジュールは、様々な異なる粒度における様々な異なる構成で実装され得る。たとえば、図12中のセンサは、図1からのセンサ素子1202などの単一のセンサ素子、または、図1からのセンサ100などのセンサ素子アレイ全体を表し得る。
【００７１】
CVモジュール1204は、センサピクセルの各々の内部のピクセル内回路として、または、オンチップセンサモジュールとしての複数のピクセルに関するセンサ読取り値を処理するための周辺回路として実装され得る。CVモジュール1204が複数のピクセルに関するセンサ読取り値を処理する構成では、CVモジュール1204は、列(列並列CVとも呼ばれる)などのセンサ素子アレイの1次元、またはセンサ素子アレイ全体に関連するセンサ素子からのセンサ読取り値を処理し得る。
【００７２】
図示していないが、CVモジュール1204は、基準ピクセルに近接する隣接センサ素子によって生成されたセンサ読取り値に基づいて、ピクセルに関するマルチピクセル計算を表すアナログ動作とデジタル動作とを実行するように構成され得る。
【００７３】
同様に、DVSモジュール1206は、センサピクセルの各々の内部のピクセル内回路として、または、オンチップセンサ回路として複数のピクセルに関するセンサ読取り値を処理するための周辺回路として、実装され得る。DVSモジュール1206が複数のピクセルに関するセンサ読取り値を処理する構成では、DVSモジュール1206は、列(列並列DVSとも呼ばれる)などのセンサ素子アレイの1次元、またはセンサ素子アレイ全体に関連するセンサ素子からのセンサ読取り値を処理し得る。
【００７４】
図11および図12では、ピクセル内回路もしくは周辺回路に加えて、またはそれらの代替で、DVS動作およびCV動作は、専用CV計算ハードウェアにおいて実行され得る。さらに、CV特徴を示すCVラベルが検出されると、結果は、1つまたはマクロ特徴のさらなる処理および検出のための専用マイクロプロセッサ406に送られ得る。
【００７５】
図13は、本開示の特定の態様による例示的なフローチャートである。プロセス1300(または、本明細書で説明する任意の他のプロセス、もしくはそれらの変形および/もしくは組合せ)のうちのいくつかまたはすべては、回路またはロジックによって実行され得る。回路またはロジックは、ピクセル内回路、周辺回路、専用CV処理ロジック、またはそれらの任意の組合せにおいて実装され得る。いくつかの例では、ロジックのすべてまたは部分は、命令を使用して実装され得、デジタル回路上で実行され得、非一時的コンピュータ可読媒体上に記憶され得る。
【００７６】
ブロック1302において、対象センサ素子などの構成要素は、複数のセンサ素子から、センサ素子に入射する光に基づいたセンサ読取り値を受信する。一実装形態では、センサ読取り値は、センサ素子への入射光によって生じる電圧読取り値である。別の実装形態では、センサ読取り値は、バッファまたはキャパシタ内の以前に記憶された電圧値からしきい値を超えた電圧の変化である。
【００７７】
対象センサ素子は、センサ素子アレイを形成する複数のセンサ素子からの1つであり得る。複数のセンサ素子は、は、図1に示すセンサ素子アレイの例示と同様に、センサ素子アレイの少なくとも第1の寸法および第2の寸法に沿って配置され得る。
【００７８】
ブロック1304において、CV計算ハードウェアなどの構成要素は、1つまたは複数の対象センサ素子のブロックに関する1つまたは複数の局所CV特徴を、センサ素子のブロックに近接する複数の隣接センサ素子に関連する信号に少なくとも部分的に基づいて計算し得る。
【００７９】
CV特徴は、対象センサ素子に比較的近いセンサ読取り値に関して対象センサ素子に関する任意の所与の時点におけるセンサ読取り値に関連する属性を識別または提供する。CV特徴または局所CV特徴は、センサの各センサ素子またはピクセルに関連するラベルなどの低レベルのコンピュータビジョンマーカまたはインジケータを検出することを指すことがある。たとえば、ラベルは、センサ素子のためのローカルバイナリパターン(LBP)ラベルを含み得る。センサ素子のためのLBPラベルは、センサ素子のセンサ読取り値と、その隣接センサ素子のうちのいくつかのセンサ読取りとを比較することによって生成され得る。対象センサ素子に比較的近いセンサ素子は、隣接センサ素子と呼ばれることがある。対象センサ素子に近接する複数の隣接センサ素子は、対象センサ素子に近接する、または対象センサ素子を含む2次元パッチを含み得る。本開示の特定の態様では、隣接センサ素子は、対象センサ素子のすぐ隣のセンサ素子を含み得る。本開示の特定の他の態様では、隣接センサ素子はまた、対象センサ素子に比較的近く、すぐ隣ではないセンサ素子を含み得る。たとえば、特定の例では、センサの数の幅または高さが64個のセンサ素子であるとき、対象センサ素子から3個のセンサ素子内のセンサ素子は、依然として隣接センサ素子と考えられ得る。特定の実装形態では、CV特徴は、LBPラベルなどのラベルを使用して導出され得る。
【００８０】
ブロック1306において、専用CVマイクロプロセッサに結合された専用マイクロプロセッサ406などの構成要素は、計算された1つまたは複数の局所CV特徴に基づいて検出された基準オブジェクトの指標を得る。特定の例では、基準オブジェクトのそのような指標は、図3Bのカスケード分類ハードウェア322から受信され得る。たとえば、カスケード分類ハードウェア322は、計算された1つまたは複数の局所CV特徴に基づいてオブジェクトを検出し得る。CV特徴からマクロ特徴および/またはオブジェクトを検出する1つの例示的なプロセスは、図3Bおよび図14Cにおいてより詳細に説明される。代替的には、または加えて、指標は、専用マイクロプロセッサ自体によって実行されるCV動作から結果として生じ得る。いくつかのそのような実装形態では、専用マイクロプロセッサは、オブジェクト検出などのCV動作を実行するために、コンピュータビジョン計算ハードウェア404からのハードウェア計算されたCV特徴を使用する。
【００８１】
専用マイクロプロセッサは、インターフェースを介してセンサ装置の外部の別のプロセッサに結合され得る。インターフェースは、ワイヤードまたはワイヤレスであり得る。ワイヤードインターフェースは、限定はしないが、SPI、I2C、またはLVDSを含み得る。ワイヤレスインターフェースを介する通信を容易にするために、専用マイクロプロセッサは、ワイヤレスモジュールに結合され得、Zigbee(IEEE802.15.4規格)、Bluetooth(登録商標)、ボディエリアネットワーク(IEEE802.15.6)、ワイヤレスUSB、Wi-Fi(802.11)、Z-wave、またはIrDA(IRベースの通信)を使用してワイヤレスに通信し得る。
【００８２】
図13に示す特定のステップは、一実施形態による、動作モード間の切替えの特定の方法を提供する理解されるべきである。代替の実施形態では、ステップの他のシーケンスも実行され得る。たとえば、代替の実施形態は、上記で概説したステップ/ブロックを異なる順序で実行し得る。例示のために、ユーザは、第3の動作モードから第1の動作モードに変更すること、第4のモードから第2のモードに変更すること、またはそれらの任意の組合せの間で変更することを選び得る。その上、図13に示される個々のステップ/ブロックは、個々のステップに対して様々な順序で適宜実行され得る、複数のサブステップを含み得る。さらに、追加のステップ/ブロックが、具体的な用途に応じて、追加または削除され得る。当業者は、プロセスの多くの変形、修正、および代替を認識し、評価するであろう。
【００８３】
図14A、図14B、および図14Cは、複数のセンサ素子からのセンサ読取り値をCV特徴に変換し、次いでマクロ特徴に変換するプロセスを示す。
【００８４】
図14Aは、対象センサ素子、たとえば、値「5」を有するセンサ素子のためのLBPラベルを生成するために考慮中の図1からの複数のセンサ読取り値からのセンサ読取り値のグループ(ウィンドウ1402)を示す。
【００８５】
図14Bは、LBPラベルを生成するための中心センサ素子1404のためのバイナリしきい値を生成するプロセスを示す。中心センサ素子のために生成されたラベルは、バイナリ値1111000によって表され得る。各ラベルは、対象センサ素子の観点からのCV特徴の指標を提供し得る。ラベルを生成するためのしきい値処理は、センサアレイ内の複数の対象センサ素子に対応する信号に対して繰り返され得、複数の対象センサ素子は、たとえば、センサアレイのサンプルウィンドウまたはセンサ素子のサブセットを形成する。図1で述べたように、図14Bに示すピクセルレベルのLBPは、ブロック内の1つまたは複数の対象センサ素子と関連する値の合計などの1つまたは複数の対象センサ素子のブロックに対応する値をその隣接センサ素子ブロックと比較することによって、図示のバイナリしきい値が1つまたは複数の対象センサ素子のブロックのために生成されるマルチブロックLBPを含むように拡張され得る。センサ素子のブロックの各々に対応する値の計算は、積分画像を計算することによって容易にされ得る。同様に、対象センサ素子と隣接センサ素子との間の差に応じて3つの出力を提供する局所3値パターン(LTP)など、LBPの拡張も同様に計算され得ることが理解される。たとえば、LTPの一実装形態では、隣接センサ素子に対応する信号がしきい値を加えた対象センサ素子に対応する信号よりも大きい場合、出力は1であり、隣接センサ素子に対応する信号が対象センサ素子に対応する信号と比較してしきい値内である場合、出力はゼロであり、隣接センサ素子に対応する信号がしきい値を引いた対象センサ素子に対応する信号よりも小さい場合、出力はマイナス1である。
【００８６】
図14Cは、ウィンドウからのセンサ素子の各々に関する複数のラベルから生成された、ウィンドウ、たとえば、センサ素子アレイからのセンサ素子のいくらかのサブセットを表すウィンドウに関する例示的な正規化ヒストグラムを示す。図14Cに示すように、サンプルウィンドウ内のセンサ読取り値に関するLBPラベルの各々は、たとえば、256スロットを有するヒストグラム上のどこかに入り得る。したがって、たとえば、対象センサ素子をその8個の隣接センサ素子と比較したとき、256の異なるLBPラベルが可能であることを意味する8ビット数が生成されることになる。ヒストグラムは、可能なLBPラベルの各々がサンプルウィンドウ内で実際に生成された回数を表し得る。一実装形態では、顔がサンプルウィンドウ内に存在するかどうかを決定するために、生成されたヒストグラムは、顔の基準ヒストグラムと比較され得る。生成されたヒストグラムと基準ヒストグラムとの間の交点が計算され得、交点の合計から生成されたスカラー和が計算され得る。スカラー和がしきい値よりも大きい場合、所与の確率で、顔がサンプルウィンドウ内で検出される。基準ヒストグラムおよびしきい値は、一般に、本例では、サンプルの顔、サンプルの非顔、およびそれらのLBPヒストグラムのデータセットに対して機械学習アルゴリズムを使用する訓練段階で決定される。基準ヒストグラムおよびしきい値が訓練段階で決定されると、同じアーキテクチャについて、それらは、たとえば、図3Bの専用マイクロプロセッサ320または図4Aおよび図4Bの専用マイクロプロセッサ406にプログラムされ得、または代替的には、上記のヒストグラムプロセスは、画像内の所与のウィンドウのためのヒストグラムを計算し、顔または他のオブジェクトがサンプルウィンドウ内に存在するかどうかを決定するための専用ハードウェアによって実行され得る。
【００８７】
そのようなヒストグラムは、ウィンドウ1402からの複数のセンサ読取り値についての情報を識別する特定の特徴を表し得る。ヒストグラムは、画像内または画像のサンプルウィンドウ内の複数のセンサ読取り値から、顔、笑顔、オブジェクトなどの基準オブジェクトまたはマクロ特徴を識別または検出するための統計またはヒューリスティックス(heuristics)に基づいて分析され得る。いくつかの実装形態では、ヒストグラムは、以前に記憶されたヒストグラムと比較され得る。
【００８８】
しかしながら、図14Cからのヒストグラムは、縮尺通りに、または計算値に基づいて描かれておらず、単にヒストグラムの視覚的例示を表していることが留意されるべきである。生成されたヒストグラムは、コンピュータビジョンのためのマクロ特徴を検出するために使用され得る。たとえば、特定のヒストグラムパターンは、笑顔、顔、オブジェクトなどを表し得る。
【００８９】
上記で開示した実施形態に加えて、任意の回転および1次元積分で矩形特徴を使用してコンピュータビジョンを実行するための追加の実施形態を以下に開示する。そのような計算は、ピクセル内回路204内もしくは周辺回路内の専用CV計算ハードウェアで、または上記で論じた他の専用デジタルロジックで達成され得る。
【００９０】
任意の回転および1次元積分で矩形特徴を使用するコンピュータビジョン
多くの既存のCVアルゴリズムは、画像内の指定された矩形内のセンサ素子からのセンサ読取り値の合計または平均を計算することを必要とする。そのようなコンピュータビジョンアルゴリズムは、たとえば、顔検出および他のタイプの画像ベースのタスクで使用され得る。いくつかの解決策は、特定の計算を加速させるために積分画像の使用を組み込む。オリジナルのViola-Jonesアルゴリズムなどの実装形態は、矩形が水平および/または垂直に整列されることを必要とする。これらの実装形態は、斜めに整列された矩形と整数比で整列された矩形とを含むように拡張されている。しかしながら、これらの解決策は、固定された所定の角度での特定の斜め整列に限定される。したがって、固定された所定の角度に整列を限定されることなく効率的に実行され得るCV計算技法の必要性が存在する。
【００９１】
加えて、CV動作を効率的に計算するための方法、システム、コンピュータ可読媒体、および装置が提示される。いくつかの実施形態では、センサ素子の複数の行を含むセンサ素子アレイを含む原画像が受信される。受信した原画像に基づく1次元積分画像が計算される。1次元積分画像内の各センサ素子は、受信した原画像内の対応するセンサ読取り値と、対応する受信された原画像内のセンサ素子の同じ行内の特定の方向に対するすべてのセンサ素子の値とに基づくセンサ素子値を有する。CV動作は、行単位でCV動作を計算することによって、原画像に重畳された任意の回転を有する形状に対応して実行される。各行について、CV演算は、行の1次元積分画像からの第1の端部センサ素子値と1次元積分画像からの第2の端部センサ素子値とに基づいて計算される。
【００９２】
本開示の態様は、任意の角度で整列された矩形に関する計算を可能にするために、1次元積分を使用する。これは、任意の整列を有し得る画像内の顔または他のオブジェクトを追跡するのに有用であり得る。これらの積分を計算する簡単な方法は、ハードウェアにおいて実施され得る。
【００９３】
いくつかの実施形態では、方法は、画像を受信するステップを含む。方法は、画像のセンサ素子の複数の行を備えるセンサ素子アレイにアクセスするステップをさらに含む。方法は、加えて、複数の行のうちの1つの中の各センサ素子に関するセンサ素子値を順次決定するステップを含む。方法は、各センサ素子に関するセンサ素子値を決定するステップと同時に、行内の各センサ素子に関するセンサ素子値を第1のバッファにコピーするステップをさらに含む。方法は、加えて、第1のバッファ内のセンサ素子値をセンサ素子値の以前の合計に加えるステップを含み、センサ素子値の以前の合計は、センサ素子アレイ内の前の複数の行の各々に関するセンサ素子値の合計を表す。
【００９４】
いくつかの実施形態では、センサ素子値の以前の合計は、第2のバッファ内に記憶される。いくつかの実施形態では、複数の行の各々は、複数のセルを備え、複数のセルの各々は、センサ素子値を備える。いくつかの実施形態では、追加するステップは、センサ素子の行の各々の中の各センサ素子のセンサ素子値が決定されるまで実行される。いくつかの実施形態では、方法はまた、追加するステップに少なくとも部分的に基づいて受信画像の積分画像を計算するステップを含む。いくつかの実施形態では、方法はまた、さらなる処理のためにソフトウェアアプリケーションに積分画像を転送するステップを含む。いくつかの実施形態では、装置は、画像のセンサ素子の複数の行を備えるセンサ素子アレイと、バッファと、加算器回路と、プロセッサとを含む。プロセッサは、複数の行のうちの1つの中の各センサ素子に関するセンサ素子値を順次決定するように構成される。プロセッサはまた、各センサ素子に関するセンサ素子値を決定するのと同時に、行内の各センサ素子に関するセンサ素子値をバッファにコピーするように構成される。プロセッサは、加算器回路によってセンサ素子値の以前の合計にバッファ内のセンサ素子値を加算するようにさらに構成され、センサ素子値の以前の合計は、センサ素子アレイ内の行の前の複数の行の各々に関するセンサ素子値の合計を表す。
【００９５】
いくつかの実施形態では、CV動作を効率的に計算するための方法は、センサ素子の複数の行を備えるセンサ素子アレイを備える原画像を受信するステップを含む。方法はまた、受信した原画像に基づいて1次元積分画像を計算するステップを含み、1次元積分画像内の各センサ素子は、受信した原画像内の対応するセンサ素子値と、対応する受信された原画像内のセンサ素子の同じ行内の特定の方向に対するすべてのセンサ素子の値とに基づくセンサ素子値を有する。方法は、加えて、行単位でCV動作を計算することによって、原画像に重畳された任意の回転を有する形状に対応するCV動作を実行するステップを含み、各行について、CV動作は、行の1次元積分画像からの第1の端部センサ素子値と1次元積分画像からの第2の端部センサ素子値とに基づいて計算される。
【００９６】
いくつかの実施形態では、形状は、矩形である。いくつかの実施形態では、第1の端部は、形状の境界内の最も左側のエッジであり、第2の端部は、形状の境界内の最も右側のエッジである。
【００９７】
特定の例示的な方法は、画像を受信するステップと、画像のセンサ素子の複数の行を備えるセンサ素子アレイにアクセスするステップと、複数の行からの行に関するセンサ素子値を第1のバッファの対応する行内にコピーするステップと、センサ素子値を第2のバッファに書き込むステップとを含み得、第2のバッファ内の各センサ素子値は、第1のバッファ内の対応するセンサ素子値と、第1のバッファ内の対応するセンサ素子値に先行するすべてのセンサ素子値との和に等しい。受信画像から積分画像を計算するステップは、書込みステップに少なくとも部分的に基づき得る。積分画像は、さらなる処理のためにソフトウェアアプリケーションに転送され得る。
【００９８】
特定のセンサ装置は、センサ素子アレイと、バッファと、加算器回路と、複数の行からの行に関するセンサ読取り値を第1のバッファ内の対応する行にコピーし、センサ素子値を第2のバッファに書き込むためのプロサッサとを含み得、第2のバッファ内の各センサ読取り値は、第1のバッファ内の対応するセンサ読取り値と、第1のバッファ内の対応するセンサ読取り値に先行するすべてのセンサ読取り値との和に等しい。
【００９９】
CV動作を効率的に計算するための別の例示的な方法は、センサ素子の複数の行を備えるセンサ素子アレイを備える原画像を受信するステップと、受信した原画像に基づいて1次元積分画像を計算するステップであって、1次元積分画像内の各センサ素子が、受信した原画像内の対応するセンサ素子値と、対応する受信した原画像内のセンサ素子の同じ行内の特定の方向に対するすべてのセンサ素子の値とに基づくセンサ素子値を有する、ステップと、行単位でCV動作を計算することによって、原画像に重畳された任意の回転を有する形状に対応するCV動作を実行するステップとを含み得、各行について、CV動作は、行の1次元積分画像からの第1の端部センサ素子値と1次元積分画像からの第2の端部センサ素子値とに基づいて計算される。形状は、矩形であり得る。第1の端部は、形状の境界内の最も左側のエッジであり得、第2の端部は、形状の境界内の最も右側のエッジであり得る。
【０１００】
図15Aおよび図15Bは、Haar-like特徴を使用する顔検出のための既存の方法を示す。図15Aおよび図15Bに示す図面は、画像内の顔を検出するために、Viola-JonesアルゴリズムとHaar-like特徴とを使用し得る。
【０１０１】
Haar-like特徴は、画像内の検出ウィンドウ内の特定の位置における隣接矩形領域を考慮し、各領域内のセンサ素子強度を合計し、これらの合計間の差を計算する。単純な矩形Haar-like特徴は、原画像内で任意の位置および尺度であり得る、矩形内部の領域のセンサ素子の合計の差として定義され得る。この差は、次いで、画像のサブセクションを分類するために使用される。たとえば、顔検出のための一般的なHaar-like特徴は、目の上および頬領域の上にある2つの隣接する矩形のセットである。これらの矩形の位置は、ターゲットオブジェクト(この場合には顔)への境界ボックスのように機能する検出ウィンドウに対して定義される。2つの隣接する矩形の一例を図15Aに示す。左の「黒」領域内にあると決定されたセンサ素子の数は、-1が掛けられ得、右の「白」領域内にあると決定されたセンサ素子の数は、+1が掛けられ得る。これらの2つの数は、次いで、隣接する矩形を含むウィンドウによって囲まれる画像の領域のためのセンサ素子値を得るために、一緒に合計され得る。これは、ウィンドウ内、または、いくつかの場合では、ウィンドウのサブウィンドウ内で、各隣接矩形対ごとに繰り返され得る。
【０１０２】
Viola-Jonesアルゴリズムの検出段階では、ターゲットサイズのウィンドウは、入力画像上を移動され、画像の各サブセクションについて、Haar-like特徴が計算される。差は、次いで、オブジェクトから非オブジェクトを分離する学習されたしきい値と比較される。そのようなHaar-like特徴は、弱いラーナー(learner)または分類子のみである(その検出品質は、ランダム推測よりもわずかによい)ので、十分な精度でオブジェクトを記述するために、多数のHaar-like特徴が必要である。したがって、Viola-Jonesアルゴリズムでは、Haar-like特徴は、強いラーナーまたは分類子を形成するために、分類子カスケードと呼ばれるものに編成される。しかしながら、Viola-Jonesアルゴリズムは、2次元積分を使用し、任意の角度を有する矩形は、整列された矩形ほど効率的に計算され得ない。
【０１０３】
Viola-Jonesアルゴリズムによって使用され得る様々な隣接する矩形を図15Bに示す。たとえば、隣接する矩形は、画像内のエッジ特徴(たとえば、1a、1b、1c、1d)を検出するために使用され得る。別の例では、複数の隣接する矩形は、画像内の線特徴(たとえば、2a、2b、2c、2d、2e、2f、2g、2h)を検出するために使用され得る。さらに別の例では、画像内の中心を取り囲む特徴(たとえば、3a、3b)を検出するために、矩形内に含まれる矩形が使用され得る。さらに別の例では、画像内の特定の対角線特徴(たとえば、4)を検出するために、複数の矩形が配置され得る。
【０１０４】
しかしながら、画像内に見られるように、矩形を含むウィンドウの各々は、所定の角度(たとえば、90度または45度)で整列される。矩形を含むウィンドウは、任意の角度で回転されない。上述したように、既存のViola-Jonesアルゴリズムは、矩形が任意の角度で回転された場合、特徴を効率的に検出することができない可能性がある。
【０１０５】
図16Aおよび図16Bは、画像上の2次元積分を計算する既存の方法の一例を示す。図15Aおよび図15Bに関して上記で説明した矩形内のセンサ素子の数の合計は、必要な計算の膨大な量のため、非効率的である可能性がある。2次元積分の使用は、隣接する矩形を含むウィンドウによって境界が定められた画像の領域に関するセンサ素子値を決定する際により効率的な計算を可能にし得る。図16Aに示すように、任意の所与のx-y座標では、x-y座標の上部および左からの範囲内のセンサ素子の数は、合計され得る。(陰影付き領域によって示す)。この領域内のセンサ素子値のこの合計は、図16B中の例によって示すように、計算効率のために保持され得る。図16Bでは、4つの異なるサブウィンドウがウィンドウ内に存在する。これらのサブウィンドウの各々は、複数の隣接する矩形を含み得る。加えて、x-y座標が図中に示されている(たとえば、1、2、3、および4)。しかしながら、サブウィンドウの事前の計算は、他のサブウィンドウの将来の計算のために再使用され得る。
【０１０６】
たとえば、サブウィンドウ「D」のセンサ素子の合計は、x-y座標4からx-y座標2およびx-y座標3の値を減算し、次いで、x-y座標4にx-y座標1を加算することによって計算され得る。言い換えれば、合計(「D」)=値(「4」)-値(「2」)-値(「3」)+値(「1」)である。したがって、サブウィンドウ「D」のセンサ素子の合計を決定するために、4つのルックアップのみが必要とされる。計算のこの方法は、個々の特徴に関する合計が必要とされないので、図15Aおよび図15Bに関して説明した合計方法と比較して計算効率を改善し得る。しかしながら、この方法は、矩形が任意の角度で回転された場合、依然として特徴を効率的に検出することができない可能性がある。
【０１０７】
図17A〜図17Dは、回転された矩形にわたる2次元積分を計算する既存の方法の一例を示す。Lienhartらは、図17Aおよび図17Bに関して説明した積分画像計算を回転された矩形に拡張した(Rainer LienhartおよびJochen Maydt、An Extended Set of Haar-like Features for Rapid Object Detection、2002を参照)。図17Aは、図16Aに示したものと同様の直立エリア総和テーブル(SAT:summed area table)を示す。しかしながら、図17Bは、回転されたエリア総和テーブル(RSAT)を示す。この例では、RSATは、45度回転された積分画像である。RSATに対して図16Aおよび図16Bで説明した2次元積分動作を実行することは、回転されたコーナー内のセンサ素子値(たとえば、TSAT(x,y))の合計を計算することになる。図17Cは、従来の整列された矩形のセンサ素子合計の計算方式を示し、図17Dは、回転された矩形のセンサ素子合計の計算方式を示す。TSAT(x,y)においてセンサ素子値から減算される領域は、「-」符号によって示され、TSAT(x,y)においてセンサ素子値に加算される領域は、「+」符号によって示される。
【０１０８】
この方法は、計算するHaar-like特徴のより豊かなセットを提供し得る。しかしながら、角度は、予め決められ、したがって、方法は、任意の回転角度を有する矩形を効率的に計算するために依然として苦労する可能性がある。さらに、既存の解決策が機能するために、回転の角度(たとえば、単位整数回転角)が予め決められる必要がある(Chris MessomおよびAndre Barczak、Fast and Efficient Rotated Haar-like Features using Rotated Integral Images、2006参照)。
【０１０９】
1次元積分を使用して任意の角度のセンサ素子値の合計を計算する
図18A〜図18Bは、いくつかの実装形態による、任意の角度を有する矩形領域を計算するために1次元積分を使用することを示す。上記で説明したように、任意の角度を計算するための単純な合計または2次元積分を使用する合計の既存の方法は、整列された矩形を計算するほど効率的ではない可能性がある。所定の回転を有する矩形のセンサ素子合計値を計算するためにいくつかの改善がなされているが、これらの方法は、任意の角度を有する矩形に関するセンサ素子合計値を依然として効率的に計算することができない。矩形が任意の回転を有するときの2次元積分の使用は、数千の角度をもたらし得、各角度は、積分画像のために計算される必要があり得る。
【０１１０】
しかしながら、任意の回転を有する矩形に関するセンサ素子合計値を計算するための1次元積分の使用は、加速のために使用され得る。さらに、この方法は、ハードウェアにおいて実施され得る。図18Aは、1次元積分画像内の任意の回転角度における矩形を示す。1次元積分画像は、原画像に基づいて計算され得る。1次元積分画像が計算されると、矩形(たとえば、Haar-like特徴テンプレート、またはマルチブロックLBPに関するブロック)は、1次元積分画像に重畳され得る。積分画像内の各センサ素子に関する各センサ素子値は、同じ行内の特定のセンサ素子の左の各センサ素子に関するセンサ素子値に加えて、特定のセンサ素子に関するセンサ素子値を含み得る。(陰影付きセンサ素子によって示す)矩形内のセンサ素子に関するセンサ素子値の合計を計算するために、各行に関する矩形に対応するセンサ素子値の合計は、決定され得る(図18Bに示す)。各行に関するセンサ素子値の合計は、矩形内の行の最も右側のセンサ素子のセンサ素子値から矩形内の行の最も左側のセンサ素子のセンサ素子値を減算することによって決定され得る。この計算は、矩形内にある特定の行内のすべてのセンサ素子に関するセンサ素子値の合計をもたらすことになる。本質的に、各行に関する矩形の「境界線」は、行全体のセンサ素子の合計値を決定するために使用される。これは、水平センサ素子ラインと垂直センサ素子ラインの両方について行われ得る。各々の新しいセンサ素子値は、同じ行内の特定のセンサ素子の左のセンサ素子値の以前の結果に加算される。必要とされるルックアップの数は、2次元積分画像に対して増加する可能性があるが、画像値のすべてが個別に合計される必要があるというわけではないので、方法は、依然としてより計算的に効率的であり得る。
【０１１１】
図19は、いくつかの実装形態による、ハードウェアにおける1次元積分画像の計算を示す。図示のハードウェアは、センサ素子アレイ(「ピクセルアレイ」とラベル付けされている)と、読出しバッファと、積分計算バッファとを示す。センサ素子アレイ内の各行に関する電圧値は、読出しバッファ内に読み出され得る。たとえば、行Nの電圧値は、読出しバッファ内に読み出される。行内の各センサ素子は、左から右へ(または右から左へ)読み出され得、ラスタライズされた様式で読出しバッファに送られ得る。各センサ素子値は、読出しバッファに送られ得、次いで、プロセスは、次の行N+1に対して繰り返し得る。
【０１１２】
実装形態は、ラスタライズされた様式で画像内のセンサ素子のすべてを連続的に読み出すことによって、カメラセンサからの積分画像の直接読出しを可能にすることが理解され得る。読出しバッファから受信された各々の新しいセンサ素子値は、積分画像を得るために、積分計算バッファによって同じ行内の以前に読み出されたセンサ素子の以前のセンサ素子合計値に加算され得る。
【０１１３】
積分画像は、次いで、記憶するため、またはCV計算で使用するために、(図3Bの走査ウィンドウアレイ318またはCV計算ハードウェア312などの)ハードウェアに送られ得る。代替的に、または加えて、1次元積分画像は、受信した積分画像に基づいて評価したい矩形を決定し得るソフトウェアに送られ得る。ハードウェアで積分画像を計算することは、ソフトウェアで積分画像を計算することを上回る利点(効率など)を提供することが理解され得る。この方法は、任意の角度で任意の矩形を効率的に計算することが可能であり得、所定の回転角度のテーブルを必要としなくてもよいことも理解され得る。加えて、この方法は、矩形の所定の角度に依存しなければならないのではなく、矩形のより微細な角度を提供し得る。最終的に、これは、改善された顔検出と他のCVアプリケーションとをもたらし得る。
【０１１４】
図20は、いくつかの実装形態による、1次元積分を計算するためのハードウェア実装形態を示す。ハードウェア実装形態は、図19に示す、センサ素子アレイ(「ピクセルアレイ」とラベル付けされている)と、読出しバッファと、積分計算バッファとを含む。加えて、ハードウェア実装形態は、加算器回路(たとえば、8ビット加算器回路)を含む。図19に関して説明したように、センサ素子の行(たとえば、行N)がセンサ素子ごとに読出しバッファ内に読み出された後、「データアウト」は、加算器回路に(左から右へ)入力され得る。加算器回路は、読出しバッファからの入力「データアウト」を加算器回路からの以前の「データアウト」に加算する。加算の結果は、次いで、新しい「データアウト」になり得る。したがって、加算器回路からの「データアウト」は、その時点までに読み出された行Nに関するセンサ素子値の現在の合計であり得る。加算器回路からの「データアウト」は、次いで、積分計算バッファ内に記憶され得る。このプロセスは、行N内のすべてのセンサ素子の読出しが完了するまで継続し得る。いくつかの実装形態では、「データアウト」は、たとえば、図3Bの走査ウィンドウアレイ318内に記憶され得る。
【０１１５】
図21は、本発明の実装形態を実施する際に用いられるデバイスおよびセンサ100の一部を組み込む例示的なコンピューティングデバイスを示す。たとえば、コンピューティングデバイス2100は、モバイルデバイスまたは任意の他のコンピューティングデバイスの構成要素のうちのいくつかを表し得る。コンピューティングデバイス2100の例には、限定はされないが、デスクトップ、ワークステーション、パーソナルコンピュータ、スーパーコンピュータ、ビデオゲーム機、タブレット、スマートフォン、ラップトップ、ネットブック、または他のポータブルデバイスがある。図21は、本明細書で説明する様々な他の実施形態によって提供される方法を実行することができ、かつ/または、ホストコンピューティングデバイス、リモートキオスク/端末、販売時点デバイス、モバイル多機能デバイス、セットトップボックスおよび/もしくはコンピューティングデバイスとして機能することができる、コンピューティングデバイス2100の一実施形態の概略図を提供する。図21は、種々の構成要素の一般化された図を提供することのみを意図しており、必要に応じて、そのいずれか、またはすべてが利用される場合がある。図21は、したがって、個々のシステム要素がどのように比較的分離されたまたは比較的統合された方法で実施され得るのかを広く例示する。
【０１１６】
バス2105を介して電気的に結合され得る(または適宜別様に通信し得る)ハードウェア要素を備える、コンピューティングデバイス2100が示されている。ハードウェア要素は、限定はしないが、1つもしくは複数の汎用プロセッサおよび/または1つもしくは複数の専用プロセッサ(デジタル信号処理チップ、グラフィックスアクセラレーションプロセッサ、など)を含む1つまたは複数のプロセッサ2110と、限定はしないが、1つもしくは複数のカメラセンサ2150、マウス、キーボードなどを含み得る1つまたは複数の入力デバイス2115と、限定はしないが、ディスプレイユニット、プリンタなどの1つまたは複数の出力デバイス2120とを含み得る。センサ2150は、ビジョンセンサ、嗅覚センサ、および/または化学センサを含み得る。いくつかの実装形態では、センサ2150は、図1、図3A、図3B、図4A、図4B、図5、図6、図11、および図12に関して説明したセンサ素子アレイに対応し得る。
【０１１７】
コンピューティングデバイス2100は、1つまたは複数の非一時的記憶デバイス2125をさらに含む(かつ/またはそれと通信する)ことができ、非一時的記憶デバイス2125は、限定はしないが、ローカルストレージおよび/もしくはネットワークアクセス可能なストレージを備えることができ、ならびに/または、限定はしないが、プログラム可能、フラッシュ更新可能などであり得る、ディスクドライブ、ドライブアレイ、光記憶デバイス、ランダムアクセスメモリ(「RAM」)および/もしくは読取り専用メモリ(「ROM」)などのソリッドフォーム記憶デバイスを含むことができる。そのような記憶デバイスは、限定はしないが、様々なファイルシステム、データベース構造などを含む任意の適切なデータ記憶装置を実装するように構成され得る。
【０１１８】
コンピューティングデバイス2100はまた、通信サブシステム2130を含み得る。通信サブシステム2130は、データを受信し送信するための送受信機、または、有線媒体および/もしくはワイヤレス媒体を含み得る。通信サブシステム2130はまた、限定はしないが、モデム、ネットワークカード(ワイヤレスまたはワイヤード)、赤外線通信デバイス、ワイヤレス通信デバイスおよび/またはチップセット(Bluetooth(登録商標)デバイス、802.11デバイス、WiFiデバイス、WiMaxデバイス、セルラー通信設備など)などを含み得る。通信サブシステム2130は、ネットワーク(一例を挙げると、以下で説明するネットワークなど)、他のコンピューティングデバイス、および/または本明細書で説明する任意の他のデバイスとデータを交換することを可能にしてもよい。多くの実施形態では、コンピューティングデバイス2100は、上記で説明したように、ランダムアクセスメモリ(RAM)デバイスまたは読出し専用メモリ(ROM)デバイスを含み得る非一時的作業メモリ2135をさらに備えることになる。
【０１１９】
コンピューティングデバイス2100は、オペレーティングシステム2140、デバイスドライバ、実行可能ライブラリ、および/または、1つもしくは複数のアプリケーションプログラム2145などの他のコードを含む、作業メモリ2135内に現在配置されているように図示されている、ソフトウェア要素を備えることができ、1つまたは複数のアプリケーションプログラム2145は、本明細書で説明するように、様々な実施形態によって提供されるコンピュータプログラムを含んでよく、ならびに/または、他の実施形態によって提供される方法を実施し、かつ/もしくはシステムを構成するように設計され得る。単なる例として、上記で説明した方法に関して説明する1つまたは複数の手順は、コンピュータ(および/またはコンピュータ内のプロセッサ)によって実行可能なコードおよび/または命令として実装され得、次いで、一態様では、そのようなコードおよび/または命令は、説明した方法に従って1つまたは複数の動作を実行するために、汎用コンピュータ(または他のデバイス)を構成し、かつ/または適応させるために使用され得る。
【０１２０】
これらの命令および/またはコードのセットは、上記で説明した記憶デバイス2125などのコンピュータ可読記憶媒体上に記憶され得る。場合によっては、記憶媒体は、コンピューティングデバイス2100などのコンピューティングデバイス内に組み込まれ得る。他の実施形態では、記憶媒体に記憶されている命令/コードによって汎用コンピュータをプログラムし、構成し、かつ/または適応させるために記憶媒体が使用され得るように、記憶媒体は、コンピューティングデバイスから分離され(たとえば、コンパクトディスクのようなリムーバブル媒体)、かつ/またはインストールパッケージにおいて提供され得る。これらの命令は、コンピューティングデバイス2100によって実行可能である、実行可能コードの形をとることができ、ならびに/または(たとえば、様々な一般的に利用可能なコンパイラ、インストールプログラム、圧縮/展開ユーティリティなどのいずれかを使用した)コンピューティングデバイス2100上でのコンパイルおよび/もしくはインストール時に、次いで実行可能コードの形をとるソースコードおよび/もしくはインストール可能コードの形をとることができる。
【０１２１】
特定の要件に応じて、大幅な変更が行われ得る。たとえば、カスタマイズされたハードウェアも使用され得、および/または、特定の要素が、ハードウェア、ソフトウェア(アプレットなどのポータブルソフトウェアを含む)、またはその両方で実装され得る。さらに、ネットワーク入力/出力デバイスなどの他のコンピューティングデバイス2100との接続が用いられ得る。
【０１２２】
いくつかの実施形態は、本開示による方法を実行するためにコンピューティングデバイス(コンピューティングデバイス2100など)を用い得る。たとえば、説明した方法の手順のうちのいくつかまたはすべては、作業メモリ2135内に含まれる(オペレーティングシステム2140、および/またはアプリケーションプログラム2145などの他のコード内に組み込まれ得る)1つまたは複数の命令の1つまたは複数のシーケンスを実行するプロセッサ2110に応答してコンピューティングデバイス2100によって実行され得る。そのような命令は、1つまたは複数の記憶デバイス2125などの別のコンピュータ可読媒体から作業メモリ2135内に読み込まれ得る。単なる例として、ワーキングメモリ2135に含まれる命令のシーケンスの実行は、プロセッサ2110に、本明細書で説明する方法の1つまたは複数の手順を実行させる場合がある。
【０１２３】
本明細書で使用される「機械可読媒体」および「コンピュータ可読媒体」という用語は、機械を特定の様式で動作させるデータを提供することに関与する任意の媒体を指す。コンピューティングデバイス2100を使用して実装される実施形態では、様々なコンピュータ可読媒体が、実行するためにプロセッサ2110に命令/コードを提供する際に必要とされることがあり、ならびに/または、そのような命令/コードを(たとえば、信号として)記憶および/または搬送するために使用され得る。多くの実装形態では、コンピュータ可読媒体は、物理的および/または有形の記憶媒体である。そのような媒体は、限定はしないが、不揮発性媒体、揮発性媒体、および伝送媒体を含む多くの形態をとり得る。不揮発性媒体は、たとえば、記憶デバイス2125などの光ディスクおよび/または磁気ディスクを含む。揮発性媒体は、限定はしないが、作業メモリ2135などのダイナミックメモリを含む。伝送媒体は、限定はしないが、バス2105、ならびに通信サブシステム2130の種々の構成要素(および/または通信サブシステム2130が他のデバイスとの通信を提供する媒体)を含む電線を含む、同軸ケーブル、銅線、および光ファイバーを含む。したがって、伝送媒体はまた、(限定はしないが、無線データ通信および赤外線データ通信中に生成されるものなどの、電波、音波、および/または光波を含む)波の形態をとり得る。代替実施形態では、カメラなどのイベント駆動型構成要素およびデバイスが使用されてもよく、その場合、処理の一部がアナログドメインにおいて実行されてもよい。
【０１２４】
物理的および/または有形のコンピュータ可読媒体の一般的な形態は、たとえば、フロッピーディスク、フレキシブルディスク、ハードディスク、磁気テープ、もしくは任意の他の磁気媒体、コンパクトディスク読出し専用メモリ(CD-ROM)、任意の他の光学媒体、パンチカード、紙テープ、穴のパターンを有する任意の他の物理的媒体、ランダムアクセスメモリ(RAM)、プログラマブル読出し専用メモリ(PROM)、消去可能プログラマブル読出し専用メモリ(EPROM)、フラッシュEPROM、任意の他のメモリチップもしくはカートリッジ、以下で説明する搬送波、または、コンピュータが命令および/もしくはコードを読み取り得る任意の他の媒体を含む。
【０１２５】
実行するためにプロセッサ2110に1つまたは複数の命令の1つまたは複数のシーケンスを搬送する際に、コンピュータ可読媒体の様々な形態が関与し得る。単なる例として、命令は、最初にリモートコンピュータの磁気ディスクおよび/または光ディスク上に担持され得る。リモートコンピュータは、命令をそのダイナミックメモリ内にロードし得、コンピューティングデバイス2100によって受信および/または実行されるように、伝送媒体を介して信号として命令を送り得る。電磁信号、音響信号、光信号などの形をとり得るこれらの信号はすべて、本発明の様々な実施形態による、命令が符号化され得る搬送波の例である。
【０１２６】
通信サブシステム2130(および/またはその構成要素)は、一般に、信号を受信することになり、バス2105は、次いで、作業メモリ2135に信号(および/または、信号によって搬送されるデータ、命令など)を搬送し得、プロセッサ2110は、作業メモリ2135から命令を取り出し、実行する。作業メモリ2135によって受信された命令は、オプションで、プロセッサ2110による実行の前または後のいずれかに、非一時的記憶デバイス2125上に記憶され得る。
【０１２７】
上記で論じた方法、システム、およびデバイスは、例である。種々の実施形態は、必要に応じて、種々の手順または構成要素を省略、置換、または追加することができる。たとえば、代替の構成では、説明される方法は、説明される順序とは異なる順序で実施される場合があり、かつ/または、種々のステージの追加、省略、および/もしくは組合せが行われる場合がある。さらに、特定の実施形態に関して説明された特徴は、種々の他の実施形態において組み合わせることができる。実施形態の異なる態様および要素は、同じように組み合わせることができる。また、技術は発展するので、要素のうちの多くは、本開示の範囲をそれらの具体例に限定しない例である。
【０１２８】
特定の詳細は、実施形態の完全な理解を提供するために、明細書本文で与えられる。しかしながら、実施形態は、これらの具体的な詳細を伴わずに実践することができる。たとえば、実施形態を不明瞭することを避けるために、周知の回路、プロセス、アルゴリズム、構造、および技法は、無用に詳述することなく示されている。この明細書本文は、例示的な実施形態のみを提供し、本発明の範囲、適用性、または構成を限定するものではない。むしろ、実施形態のこれらの説明は、本発明の実施形態を実施することを可能にする説明を当業者に与える。本発明の趣旨および範囲から逸脱することなく、要素の機能および構成に種々の変更を加えることができる。
【０１２９】
また、いくつかの実施形態は、フロー図またはブロック図として示されたプロセスとして説明されている。各々が、動作について順次プロセスとして説明することがあるが、動作の多くは、並行にまたは同時に実行され得る。加えて、動作の順序は、並べ替えられ得る。プロセスは、図に含まれていない追加のステップを有し得る。さらに、方法の実施形態は、ハードウェア、ソフトウェア、ファームウェア、ミドルウェア、マイクロコード、ハードウェア記述言語、またはそれらの任意の組合せによって実施され得る。関連するタスクを実施するためのプログラムコードまたはコードセグメントは、ソフトウェア、ファームウェア、ミドルウェア、またはマイクロコードにおいて実現されるときには、ストレージ媒体などのコンピュータ可読媒体に記憶されてもよい。プロセッサは、関連するタスクを実施してもよい。
【０１３０】
いくつかの実施形態を説明してきたが、本開示の要旨から逸脱することなく、様々な変更、代替構成、および等価物が使用され得る。たとえば、上記の要素は、単により大きいシステムの構成要素であってもよく、他のルールが本発明の適用例よりも優先するか、そうでなければ本発明の適用例を修正してもよい。また、上記の要素が考慮される前、途中、または後に、いくつかのステップが行われ得る。したがって、上記の説明は本開示の範囲を限定しない。
【符号の説明】
【０１３１】
100  センサ
102  センサ素子
103  センサ素子ブロック
104a、104b、104c、104d、104e、104f、104g、104h  センサ素子ブロック
200  ピクセル
202  センサ素子
204  ピクセル内回路
302  センサ素子アレイ
304  周辺回路
306  周辺回路
308  センサ素子アレイ
310  ラインバッファ
312  CV計算ハードウェア
314  アナログ-デジタル変換器、ADC
316  2次元積分ハードウェア
318  ハードウェア走査ウィンドウアレイ
320  専用マイクロプロセッサ
322  カスケード分類ハードウェア
324  インターフェース
400  センサ装置
402  センサ
404  コンピュータビジョン計算ハードウェア
406  専用マイクロプロセッサ
408  アプリケーションプロセッサ
410  センサワイヤレスモジュール、中間ワイヤレスモジュール
412  アプリケーションプロセッサワイヤレスモジュール
502  センサ素子アレイ
504  行ドライバ
506  相関二重サンプリングブロック
508  アナログ-デジタル変換器
510  タイミングコントローラ
512  プロセッサ
602  ブロック
604  行ドライバ
606  列並列SRAM
608  アナログ-デジタル(ADC)変換器
610  タイミングコントローラ
612  プロセッサ
700  ピクセル
702  フォトダイオード
704  動的ビジョンセンサ(DVS)
802  知覚回路
804  CVブロック
806  ピクセル
1102  センサ
1104  動的ビジョンセンサ(DVS)モジュール
1106  CVモジュール
1202  センサ
1204  CVモジュール
1206  DVSモジュール
1402  ウィンドウ
1404  中心センサ素子
2100  コンピューティングデバイス
2105  バス
2110  プロセッサ
2115  入力デバイス
2120  出力デバイス
2125  非一時的記憶デバイス
2130  通信サブシステム
2135  作業メモリ
2140  オペレーティングシステム
2145  アプリケーションプログラム
2150  カメラセンサ、センサ
【図１】
0006737776.tif 000002
【図２】
0006737776.tif 000003
【図３Ａ】
0006737776.tif 000004
【図３Ｂ】
0006737776.tif 000005
【図４Ａ】
0006737776.tif 000006
【図４Ｂ】
0006737776.tif 000007
【図５】
0006737776.tif 000008
【図６】
0006737776.tif 000009
【図７】
0006737776.tif 000010
【図８】
0006737776.tif 000011
【図９】
0006737776.tif 000012
【図１０】
0006737776.tif 000013
【図１１】
0006737776.tif 000014
【図１２】
0006737776.tif 000015
【図１３】
0006737776.tif 000016
【図１４Ａ−１４Ｃ】
0006737776.tif 000017
【図１５Ａ】
0006737776.tif 000018
【図１５Ｂ】
0006737776.tif 000019
【図１６Ａ】
0006737776.tif 000020
【図１６Ｂ】
0006737776.tif 000021
【図１７Ａ】
0006737776.tif 000022
【図１７Ｂ】
0006737776.tif 000023
【図１７Ｃ】
0006737776.tif 000024
【図１７Ｄ】
0006737776.tif 000025
【図１８Ａ】
0006737776.tif 000026
【図１８Ｂ】
0006737776.tif 000027
【図１９】
0006737776.tif 000028
【図２０】
0006737776.tif 000029
【図２１】
0006737776.tif 000030