ビジョン・オン・チップ・プロセッサを用いてバーコードを捕捉および検出するためのシステムおよび方法
本発明は、CPU制御されたビジョン・システム・オン・チップ(VSoC)アーキテクチャに基づく効率的処理システムを用いてIDの特徴、例えば1Dバーコードを捕捉、検出および抽出するためのシステムおよび方法を提供する。本発明は、例示的に単一命令複数データ処理(SIMD)アーキテクチャで構成された線形アレイプロセッサ(LAP)を提供し、そこにおいてピクセルアレイの行の各ピクセルは類似の幅のアレイで個々のプロセッサに差し向けられる。ピクセルデータは、潜在的にID状の特徴を含んでいる関心領域(ROI)の大まかな検出と追跡を実行するフロントエンド(FE)プロセスで処理される。ROI検出プロセスは近隣操作におけるLAPの効率を最適化するために2部分で、すなわちピクセルアレイから画像ピクセルを読み出す間に起こる行処理ステップと、典型的に読出しが行われた後に起こる画像処理ステップで行われる。IDを包含したROIのピクセルアレイに対する相対運動が追跡および予測される。任意的にあるバックエンド(BE)プロセスは予測されたROIを用いて画像捕捉後に特徴抽出を実行する。特徴抽出は候補ID特徴を導出し、これらの候補ID特徴は検証ステップによって検証され、検証ステップはIDを確認し、精緻化されたROI、向きの角度および特徴セットを生み出す。これらの候補ID特徴は復号プロセッサまたはその他のデバイスに伝送される。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、シンボル読取り装置、より具体的には一次元(1D)バーコードなどのシンボルを捕捉および同定するシステムに関する。
【背景技術】
【0002】
機械視覚システムは、観測された対象に関する情報を伝えるカメラセンサを備える画像取得装置を使用する。次にシステムはこの情報を種々のアルゴリズムに従って解釈して、プログラムされた決定機能および/または同定機能を実行する。
【0003】
一般的に、シンボル(「ID」とも呼ぶ)読取りは画像取得センサ(CMOSカメラ、CCDなど)を、シンボル(「バーコード」)を含んでいるオブジェクトの位置に向けて、そのシンボルの画像を取得することを必要とする。シンボルは正しく並べられた特性または形状のグループを表す一連の所定のパターンを含んでおり、そこから付属のデータプロセッサ(例えばマイクロコンピュータ)はオブジェクトに関する有用な情報(例えばシリアルナンバー、タイプ、モデル、価格など)を導出できる。シンボル/バーコードは多様な形状とサイズのものが利用できる。オブジェクトを標識および同定するために最も普通に用いられているシンボルタイプの一つとして、いわゆる一次元バーコードまたは「線形」バーコードが使用されており、そのうち見慣れたものの一つは幅と間隔が異なる一並びの垂直線からなる。本明細書では一般的にバーコードを含んだ場面を代表するピクセルを取得する画像センサについて説明されるが、周知のレーザスキャナを含む、バーコード情報を取得するための他の技術および装置がバーコード情報を取得するために使用されてきた。
【0004】
背景として図1は、手持ち動作に適合された例示的なスキャニングシステム100を示す。ハンドピース102の形態をした例示の手持ちスキャニング手段が設けられている。これはグリップ部104と本体部106を含んでいる。仮想線で示されている画像形成および処理システム151は制御されて、画像データを照明画像捕捉または他のシステムプロセスを制御するオンボード組込みプロセッサおよび関連するメモリ109に差し向けることができる。このプロセッサ109はまたID復号アプリケーションまたはサブプロセッサ113を含んでいるか、これらと作動的に接続されていてもよく、これらにより画像データは有用な情報(例えばオブジェクトの表面に置かれたシンボル(例えば図示された一次元(1D)バーコード画像195)から導出される英数字行に解釈される。復号された情報はケーブル111を介しまたは無線で、(例えば)ディスプレイ114、キーボード116およびマウス118を有するPCまたは他のデータ記憶装置112に差し向けられ、そこで記憶され、さらに適当なアプリケーション121を用いて操作され得る。アプリケーション121はまた、組み込まれたプロセッサ109が特定のIDの同定および復号タスクに必要な適当な視覚ツール130でプログラムされることを可能にする種々のインタフェース・コンポーネントを含んでいてもよい。さらに、インタフェース・アプリケーションはスキャナ問題を診断し、および/またはスキャナに関する他の状態項目を決定するために使用してもよい。USB(2.0)または無線インタフェースはPC112に対してスキャニング手段102を一時的に接続することを可能にする。手持ちスキャニング手段をその組み込まれたプロセッサ、ID復号アプリケーション、コンピュータ・インタフェースおよび/または他のプロセッサおよびプロセスに対して精確に配置することは、極めて可変的である。
【0005】
スキャニングプロセスはスキャニング手段102からの入力に応答するように適合させることができる。例えば、オペレータが手持ちスキャニング手段102のトリガ122を切り替えると、内部カメラ画像センサ(画像形成システム151の内部)がオブジェクト105上の視野131の画像を捕捉する。視野内には例示の一次元(1D)シンボル195を含んだ例示的な関心領域(ROI)があり、このシンボルは基底にあるオブジェクト105の性格と品質を同定するために使用できる。スキャニング手段102上の1以上の視覚インジケータ141は、プロセッサ109から信号を受けると点灯などの方法(例えばLCD英数字ディスプレイ)で知らせ、シンボル195の読取りと復号に成功したことを示す。関連するイベントを表示するために聴覚インジケータを作動させることもできる。
【0006】
スキャニング手段の1つの望ましい特徴は、ROI内でID(シンボル195)が検出されたらスキャニングプロセスをセルフトリガする能力である。画像ベースの(すなわち画像センサおよび視覚システムを用いる)シンボル/IDスキャナ、一般的にID検出と復号プロセスを開始するために、視野にID(バーコード)があることを示すトリガを必要とする。同様に、ID検出プロセスはトリガの一部であってもよい。すなわちトリガは、スキャナの視野内にIDが検出されることに応答して起こる。多くのアプリケーションにとってそのようなトリガを提供することは困難であるが、その理由は(a)バーコードが視野内にあることが外部ソース(すなわち潜在的トリガ発生器)によって知られない可能性がある。(b)所定の動作機構では信頼できるトリガを発生することは不可能なことがある。この困難は、バーコードが撮像システムを基準とした運動、位置および/または方向において完全に制御されない仕方で動くと増加する。さらに一般的には、システムに固有の1秒当りの画像捕捉および画像復号イベントは、IDを適切にスキャンする能力を制限する。したがってスキャニング手段が急速に動き、および/またはスキャニング手段をIDに対して急角度で向けると、限られた数の捕捉イベントのほとんどまたは全部がIDを適切に検出または復号できなくなることがある。
【0007】
さらに、コード自体のある側面が、限られた数の捕捉イベント内でコードを検出または復号することを困難にし−さらにスキャナが動くと典型的に有用な画像捕捉のグループは一層限られることが知られている。特に、コントラストが低いコード(例えば茶色の段ボール箱に印刷)は、撮像システムが捕捉プロセス中に捕捉設定(例えば利得または露出)の調整を実行することを要求する。そのような場合、最初の捕捉設定は不適切であり、最終的により十分な捕捉設定が調整されるまで待ち時間が発生することがある。この最初の捕捉と調整待ち時間の後で利用できる捕捉の数は非常に少なく、IDの検出および/または復号を困難にする恐れがある。
【0008】
代替として、ユーザはセルフトリガリングを可能にし、スキャニング装置に対するバーコードの運動を幾分か克服するためにレーザスキャナを使用することができる。しかしながらレーザスキャナは機械的部品、例えば動く鏡を用いるため、そのメンテナンスが負担となることがある。さらに、レーザスキャナは乏しいコントラスト、コード印刷の破損などのために読み取りにくいコードに対する性能は、画像ベースのIDスキャナより低い。
【0009】
他の代替的なスキャニング法では、ラインスキャンカメラベースのスキャニング手段を用いて基底にあるオブジェクト上のIDの画像を捕捉する。ラインカメラを使用すると全視野が連続的に撮像および処理され、視野内にID状の特徴をサーチしてこれらの特徴が検出されると処理する。しかしながら、ラインスキャンカメラの短所は、それらは典型的にラインスキャン速度の慎重な制御を必要とするため、IDとカメラとの間の運動が信頼性をもって、精確に測定および/または制御できない状況では、使用が困難か不可能になることである。
【0010】
現在利用できる多様なスキャニング手段は、IDの検出および復号に必要な種々の機能を達成するためにデジタル信号プロセッサ(DSP)を用いる。従ってそのようなDSPは、視覚システム要素と共に慣用的な、またはカスタマイズされたID復号アプリケーションまたはプロセスを含んでいる。これは画像ピクセルが捕捉されるときに、ID状の特徴を含んだ適当な関心領域の近隣操作と比較して処理速度を制限する傾向があり、そのような特徴は抽出され、次にデコーダによって漸次作用される。IDとスキャニング手段のピクセルアレイが互いに対して比較的速く動いているとき−例えばユーザがスキャナをID上で素早く通過させたとき、慣用的な画像センサ/ピクセルアレイの捕捉速度(しばしば1秒当り約60フレーム未満)は、慣用的なDSPの処理能力と組み合わせると、IDを復号するのに十分可読なフレームを提供するには不十分である。1秒当り60フレームの場合でさえ、それらのフレームのほんの一部だけが完全なIDを捕捉し、それらのフレームの幾つかは専らピクセルアレイの撮像パラメータ(照明およびコントラスト変化など)を変更するために利用されるため、復号プロセスには使用できなくなる。こうして慣用的な実装において復号に使用できる画像の最終的な数は急速にゼロに近づく。
【0011】
それゆえ、オブジェクトおよび関連ID(例えば1Dバーコード)に対するスキャニング手段の広範な速度の運動および制御されない位置/向きを可能にする、シンボル/ID特徴を捕捉、検出および同定するシステムおよび方法を提供することが望ましい。このシステムおよび方法によりスキャニング手段の撮像システムは従来困難または達成不可能であったタスク、例えば店頭スワイプスキャンシステムにおけるバーコード読取りを伴うタスクのために動作できる。さらに、画像ベースのスキャニング手段においてトリガの必要性を効果的に減らすかまたは除去するシステムと方法を提供し、それによりトリガを構成することが困難か不可能な環境においてスキャナの撮像システムがレーザスキャナと張り合えるようにすることが望ましい。さらに一般的に、このシステムと方法は1秒当りの画像捕捉および読取りイベントの数を増すのを容易にして、1以上の成功した復号イベントの可能性を高めるべきである。
【発明の概要】
【0012】
本発明は、ビジョン・システム・オン・チップ(VSoC)アーキテクチャに基づく効率的な処理システムを用いて、シンボルID、例えば1Dバーコードの特徴を捕捉、検出および抽出するためのシステムおよび方法を提供することにより、従来技術の短所を克服する。VSoCはCPU(本明細書では「汎用プロセッサ」とも呼ぶ)で制御されて、例示的に単一命令複数データ処理(SIMD)アーキテクチャで構成された線形アレイプロセッサ(LAP)を提供し、そこにおいてピクセルアレイの行の各ピクセルはLAPを定義する類似の幅のアレイで個々のプロセッサに差し向けられる。ピクセルデータは、潜在的にID状の特徴を含んでいる関心領域(ROI)の大まかな検出と追跡を実行するフロントエンド(FE)プロセスに従って処理される。ROI検出プロセスは近隣操作におけるLAPの効率を最適化するために2部分で、すなわちピクセルアレイから画像ピクセルを読み出す間に起こる行処理ステップと、典型的に読出しが行われた後に起こる画像処理ステップとで行われる。IDを包含したROIのピクセルアレイに対する相対運動が追跡および予測される。例示的には、メモリ、SIMDプロセッサ配置構成および汎用プロセッサ(CPU)は共通のチップ/ダイ上に設けられている。ピクセルアレイもこのチップ/ダイ上に設けられていてもよく、例示のVSoCアーキテクチャを提供する。代替として、ピクセルアレイは別個のチップ/ダイ上に設けられて、メモリおよび処理機能を含むダイと作動的に接続されてもよい。
【0013】
一実施態様において、バックエンド(BE)プロセスが存在して、予測されたROIを用いて画像捕捉後に特徴抽出を実行してもよい。特徴抽出は候補ID特徴を導出し、これらの候補ID特徴が検証ステップによって検証される。検証ステップはIDシンボルの存在を確認し、精緻化されたROI、特徴の向きの角度および、典型的に最初の捕捉されたグレイスケールピクセル画像より小さい二値画像形態に縮小された特徴セット自体を生み出す。これらはROIデータと一緒に復号プロセッサまたは他のデバイスに伝送される。代替的に、特徴は検証の前に復号プロセッサに伝送されて急いで復号され、後続の検証は復号結果がデコーダによって適当なIDとして保持されるかどうか決定する。さらに代替的な実施態様において、画像ストリームもDSPに伝送され得る。
【0014】
別の実施態様において、FEプロセスのROI結果は直接(VSoC BEプロセスなしに)オフチップのバックエンド処理装置、例えば画像復号DSPに伝送される。この実施態様では、ROI結果はROI位置、サイズおよび向きを含んでいてもよい。これは未加工の、縮小サイズの(全体的画像の一領域)または圧縮した画像データストリームと一緒に使用されて、DSPによるID検出および復号を実行する。
【0015】
さらに別の実施態様において、ID ROIまたは他の形態のID候補指標データを検出したら(LAPまたは他の大規模データ処理VSoCプロセスの動作を介して)、通知(トリガ)が復号DSPに伝送されて、トリガイベントと関連して伝送された未加工のまたは圧縮された画像データのストリーム内でIDサーチおよび復号動作を起動する。
【0016】
VSoCおよびプロセスがトリガとして使用される場合は、復号装置およびプロセスは代替的に復号のための画像ストリームを他のピクセルアレイソース(トリガVSoCアレイとは異なる解像度を有する他のVSoCであってもよい)から受け取る。この実装では、トリガVSoCは全体的な視覚システムの端末である。
【0017】
例示的な実施態様において、行処理ステップはN行のローリングバッファを提供し、これは近隣操作および抽出後のエッジを所定の回転の向きにビニングすることにより、候補IDのエッジ位置、強度および回転の向きの抽出を可能にする。ビンは結合されて向きが類似したエッジを有する画像処理ステップで領域を定義する。結果として生じる画像はクリーニングされ、視覚ツール、例えばブロブ分析ツールを用いて可能なID ROIを決定する。ROI検出プロセスは予測されたROI運動追跡が導出され得るまで繰り返される。次に予測されたROIを用いて任意的にBEプロセスが行われる。
【0018】
例示的な実施態様において、検証プロセスはストライプまたはスキャンラインを用いて抽出された特徴によってヒストグラムを定義する。この場合、ヒストグラムは180度間隔で大きいピークを示し、ストライプは肯定的なID結果を示す。肯定的なIDストライプの数が閾値を超えれば、検証済みIDが存在して復号が行われてもよい。別の例示的な実施態様では、復号装置またはプロセッサに伝送されたデータは圧縮できる。同様に、広いシフトレジスタを用いて画像データメモリから特徴データを受け取り、その後でポートを通して特徴データを復号装置/プロセッサに送ることができ、その間LAPおよびCPUを自由にして他のタスクで動作させる。
以下の本発明を添付の図面を参照して説明する。
【図面の簡単な説明】
【0019】
【図1】既述の、従来の実装によるオンボードプロセッサおよびID復号アプリケーションを有する手持ちスキャニングシステムの斜視図である。
【図2】例示された実施態様による例示のビジョン・システム・オン・チップ(VSoC)のブロック図である。
【図3】図2のVSoCと関連デバイスとの相互接続を示すブロック図である。
【図4】図2のVSoCの機能的コンポーネントを示すブロック図である。
【図5】例示的な実施態様による、線形アレイプロセッサ(LAP)の個々のコンポーネントの詳細を含む、図2のVSoCの機能的コンポーネントを示すより詳細な模式図である。
【図6】例示的な実施態様による、モデルの座標を変換するための、図2のVSoCの画像アドレスプロセッサのブロック図である。
【図7】例示的な実施態様による、VSoCによりモデルの座標を変換するための例示的な方程式を詳細に示すテキストブロックである。
【図8】例示的な実施態様による、図2のVSoCのコンパレータ・アキュムレータの模式図である。
【図9】例示的な実施態様による、ID検出、同定および特徴抽出プロセスの実装で用いられるバージョンのVSoCのブロック図である。
【図10】例示的な実施態様による、図9のVSoCとオフチップIDデコーダとの間のプロセスの分割を示した、ID検出、同定および特徴抽出プロセスの概要を示すブロック図である。
【図11】例示的な実施態様による、ID関心領域(ROI)を予測するフロントエンド(FE)プロセスと、予測されたROIに基づく任意的にある特徴を伝送するバックエンド(BE)プロセスとを含むVSoCプロセスを示すフローチャートである。
【図12】図11のFEプロセスによるROI検出プロセスで画像ピクセルを読み出す間に行われる行処理ステップを詳細に示すフローチャートである。
【図13】図11のFEプロセスによるROI検出プロセスで画像ピクセルを読み出した後に行われる画像処理ステップを詳細に示すフローチャートである。
【図14】図11の任意的なBEプロセスによるID特徴検証プロセスを詳細に示すフローチャートである。
【図15】例示的な実施態様による、図11のBEプロセスでIDデコーダまたは他のデバイスに伝送する前に特徴データを圧縮または符号化するための例示的なプロセスのフローチャートである。
【図16】図11と同様のFEプロセスを含むVSoCプロセスと、代替的な実施態様による検証プロセスの前に特徴がIDデコーダまたは他のデバイスに伝送されるBEプロセスとを示すフローチャートである。
【図17】代替的な実施態様による、適当なROI情報および画像データを直接バックエンドプロセッサに供給して情報を復号し、図11の特徴を伝送するBEプロセスがない、ROIを予測するFEプロセスを含むVSoCプロセスを示すフローチャートである。
【図18】代替的な実施態様による、バックエンドプロセッサをトリガして、関連する画像データスリーム内で何らかのID特徴をサーチおよび復号するID候補通知プロセスを含むVSoCプロセスを示すフローチャートである。
【発明を実施するための形態】
【0020】
例示的な実施態様によれば、ID/バーコード特徴を捕捉、検出、同定および抽出するシステムおよび方法は、相互接続されたピクセルアレイから読み出されたデータの完全な行を離散的処理サイクルで処理できる(すなわち行内のすべてのデータが各クロックサイクルで同時に処理される)アーキテクチャを定義するプロセッサで動作するように適合されている。これを達成するために、全体的なVSoCプロセッサは、画像データ記憶装置(記憶アレイの幅も1024)とピクセルアレイ(この例では8ビットまたは6ビットピクセルによる1024×768ピクセルアレイ)との間に広いオンビットデータバス(例えば1024×1バス)を含むように組織されている。このメモリは他の類似の幅(例えば1024×1)のバスによって、例えばプロセッサ近隣操作において非常に効率的である単一命令複数データ処理(SIMD)を用いて完全な行を同時に処理するように組織された画像処理コンポーネントと相互に接続されている。したがって、各々のプロセッサは行内の近隣データを処理している他のプロセッサと相互運用できる。これらのプロセッサは組み合わせて線形アレイプロセッサ(LAP)と呼ばれる。例示的な実施態様においてこれらのプロセッサは、それぞれ90MHzで動作する。これらは完全な行のデータ(1024要素)上で同時に1ビット算術論理ユニット(ALU)のように作用するように構成されている。例示的な実施態様において、LAP内のプロセッサはさらに、データがプロセッサ間で最大13列離れて移動できて広く効率的な近隣操作を容易にするように適合されている。例示の処理速度は、LAPに対して約11,520メガバイト/秒の処理能力を生み出す。VSoCの一バージョンが共同譲渡された合衆国特許出願第12/184187号明細書「視覚センサ、システムおよび方法」(E.ジョン・マクギャリー他)に示され説明されているが、その教示は参照により有益な背景情報として組み込まれ、以下において当該箇所で説明される。さらに一般的に、本明細書に記載されたシステムおよび方法は、様々な市販の視覚取得および処理システム上で動作するように適合させることができる。例えば初期のバージョンの単一チップ画像センサが刊行物「デジタルプロセッサアレイを用いる単一チップ画像センサ」(ロベルト・フォルヒハイマー他、VLSI信号処理誌、5号121−131ページ(1993年)に記載されている。
【0021】
I.ビジョン・システム・オン・チップ(VSoC)の概要
図2は、本発明の実施態様によるシステムおよび方法のための単一チップ視覚システム200(VSoC)のブロック図を例示する。VSoC200は単一チップ上にピクセルアレイ208および1以上の回路230を含んでいる。本明細書中で用いられているように、チップという用語は周知の「ダイ」という用語と互換的に使用されてもよい。これは適当な回路要素と配線を配置した単一のユニット状シリコンウエハである。製造においてチップまたはダイは、より大きいチップまたはダイのウエハの一部であってもよく、これらのチップまたはダイは製造プロセスのある段階で個別のパッケージに分離されるが、その後はユニット状コンポーネントとして維持される。種々の実施態様において、ピクセルアレイ208は、撮像されている場面に対して光が感知されたら、ピクセル信号を1以上の回路230に提供するように構成されている。また、種々の実施態様において、1以上の回路230はピクセルアレイ208から提供されたピクセル信号を処理して画像を形成するように構成されており、および任意的に画像に対するパターンマッチングを実行するように構成されている。種々の実施態様において、ピクセルアレイ208と1以上の回路230は、半導体材料の基板上に単一の集積回路を形成する。また、種々の実施態様において、VSoC200は、データをVSoC200に入力し、およびVSoC200から出力するための1以上のI/Oピン(図示せず)を含んでいる。
【0022】
VSoC200は種々の用途、例えば機械視覚用途、消費者用途などで用いることができる。種々の実施態様において、VSoC200は(i)画像取得;(ii)画像前処理;(iii)パターンマッチングの1以上の必要がある用途で用いられてよい。種々の実施態様において、VSoC200は画像取得、前処理および/またはパターンマッチングを単一チップまたは集積回路上で実行できるようにする。より具体的に、例示的な実施態様の視覚センサは特定のシンボル特徴、例えばスキャンされるオブジェクト上に置かれた1Dバーコード特徴を検出および同定するために用いることができるが、これに限られない。例示した実装における1Dバーコードは慣用的なUPC−Aタイプコードを含んでいてもよいが、例示的な実施態様による他の多様な1Dコード配置構成がスキャンおよび検出されてもよい。
【0023】
さらに背景として、1Dまたは「線形」バーコードはある情報を単一の優勢な向きで提示することに留意されたい。すなわち、バーコード特徴は互いに対して平行であり、これらの特徴はすべて一次元で整列されている。すべてのバーコードは直交二次元によって(コントラスト差を解像するために第3の次元を使用するエッチングまたはピーニングされたバーコードで)定義される。図2のバーコードの場合、および本明細書中の他のケースにおいて、垂直次元はデータ内容を提示せず、むしろ水平方向におけるバーの幅と間隔の向きがデータ内容を担う。この水平次元が優勢な向きと見なされる。この説明の目的のために、「シンボル」という用語は、一般的に本明細書で想定されているタイプのバーコードとも呼ばれる。本発明を適用できる線形バーコードのより完全なリストは、インターネット上で下記のウェブサイトに掲載されている。
http://www.aimglobal.org/aimstore/linearsymbologies.asp
【0024】
さらにVSoC200に関して、図3は、本発明の実施態様による相互に接続されたシステム300のブロック図を例示する。システム300は、有線もしくは無線ネットワークまたは他のデータ接続320によって作動的に接続されたVSoC200および相互接続されたデバイス310を含んでいる。システム300においてVSoC200はデバイス310と通信しており、デバイス310とVSoCとの間で信号が伝送される。例示的な実施態様において、図示されたデバイス310はスキャニング手段の1以上のコンポーネント(例えばディスプレイ、別個のID復号回路、種々のインジケータおよび警報など)および/またはベースコンピュータ(PC)、またはスキャニング手段からIDデータを受け取る他のデータプロセッサを表すことができる。デバイス310とVSoCとの間の通信は、多様なデータおよび制御信号を含んでいてもよい。種々の実施態様において、VSoC200は画像を取得し、画像の処理を実行し、処理の結果に基づいてデータをデバイス310に提供するように構成されている。例えば、種々の実施態様において、VSoC200は1以上の特徴の1以上のモデルに基づいて画像中の1以上の特徴をサーチし、サーチの結果に基づいてデータをデバイス310に出力するように構成されている。画像を取得する画像取得と画像中に特徴をサーチするパターンマッチングの双方を単一チップまたは集積回路上で実行できるようにすることにより、VSoC200から伝送されるデータの量は、画像データがVSoC200からVSoC200の外部にある別個のプロセッサに伝送して別個のプロセッサでパターンマッチングを実行しなければならない場合と比較して減らすことができる。
【0025】
例えば、種々の実施態様において、例示のVSoC200は画像を捕捉し、1以上の特徴のモデルを用いて1以上の特徴について画像をサーチし、次いで画像中に1以上の特徴が検出された場合はデバイス320にトリガ信号を提供するために用いることができる。また、幾つかの実施態様において、VSoC200は画像を獲得し、1以上の特徴のモデルを用いて1以上の特徴についで画像をサーチし、次いで画像中に1以上の特徴が検出された場合は物理的場面における1以上の特徴の位置を示す位置データをデバイス310に提供するために用いることができる。結果として、そのような実施態様では、VSoC200から完全な画像データを別個の外部プロセッサに伝送して別個の外部プロセッサに特徴をサーチさせるのではなく、VSoC200は視覚センサチップ上でサーチを実行できる。そのような場合、VSoCはトリガ信号に含まれた最小限の情報、整列/位置データ、特徴データなどをデバイス300に伝送でき−これによりVSoC200からオフチップで伝送されるデータの量を減らすことができる。
【0026】
種々の実施態様において、VSoC200から伝送されるデータの量を減らすことにより、VSoC200が画像を取得できる速度(1秒当りフレーム)を増すことができる。なぜならVSoC200動作は伝送動作の完了によって制約されることが少なくなるからである。例えば幾つかの実施態様において、VSoC200が画像を1秒当り200フレームの速度で捕捉および処理するように構成されてもよく、それによりVSoC200は例えば自動ビデオ監視、車両制御、IDリーダー/スキャニング手段におけるトリガリングおよび特徴の検出/抽出(以下に説明する)、ジェスチャー認識、静止または移動視覚センサを用いた三次元(3D)モデリングによるオブジェクトの寸法決定、運動解析などの用途に有利に使用できよう。
【0027】
種々の実施態様において、VSoC200はセルフトリガするように構成されているため、種々の実施態様でVSoC200はその周囲を連続的に撮像して連続的な画像ストリームを取得できる。より具体的には、VSoC200は、他の視覚用途のためにソフトウェアトリガまたはハードウェアトリガとして使用されるトリガを提供するように構成できる。例えばIDリーダーのためのソフトウェアトリガにより、ID候補を包含する関心領域が処理されて、例えば相互接続されたデバイス上で関連する復号プロセスまたはアプリケーションによって復号するためのID特徴の検出および同定を試みる(以下に説明する)。
【0028】
VSoC200からオフチップで伝送されるデータの量を減らすと、信号をオフチップで駆動するために必要な電流も減少するため電力消費は低下する。同様に、これによりVSoC200と外部デバイスとの間のデータ交換が減るので電磁的干渉(EMI)が減少する。電力消費の低下は多くの用途、例えば無線手持ちIDスキャナと関連した用途を含む、バッテリ容量に制限された用途で有利である。
【0029】
幾つかの実施態様において、デバイス310は画像データを処理できるタイプの装置であり、VSoC200は画像データをデバイス310に伝送するように構成されている。以下に説明する例示的な実施態様では、デバイス310は手持ちスキャニング手段の種々のコンポーネントを含んでおり、その中にはID復号アプリケーションのインスタンス化を伴うデジタル信号プロセッサ(DSP)、ならびに復号されたIDを受け取って操作するベースデータ処理および記憶装置(例えば無線インタフェースとネットワーク化されたPC)が含まれる。VSoC200が画像データをデバイス310に伝送するように構成された幾つかの実施態様において、VSoC200は1以上の特徴のモデルを使用して1以上の特徴に対する画像をサーチして、画像中に1以上の特徴の少なくとも1個が検出された場合のみ画像の画像データをデバイス310に伝送するように構成されている。また、VSoC200が画像データをデバイス310に伝送するように構成された幾つかの実施態様において、VSoC200は1以上の特徴のモデルを使用して1以上の特徴に対する画像をサーチして、サーチから同定された特徴に基づいて決定された画像中の関心領域に対する画像のみデバイス310に伝送するように構成されている。VSoC200が画像データをデバイス310に伝送するように構成された種々の実施態様において、VSoC200は画像に対する完全な画像データをデバイス310に送るように制御可能であってもよい。幾つかの実施態様において、VSoC200が1以上の特徴が検出された画像に対するモデルの姿勢を示す姿勢情報をデバイス310に伝送するように構成されている。
【0030】
種々の実施態様において、デバイス310はプロセッサを含んでおり、VSoC200は、処理タスクをデバイス310のプロセッサとインタラクティブに交換し、および/またはどの具体的なタスクがVSoC200とデバイス310のプロセッサの各々によって実行されるべきかをユーザが特定して、例えば処理能力、メモリの使用などの最適化を可能にするように構成できる。また、種々の実施態様において、デバイス310はプロセッサを含んでよく、VSoC200は1以上の特徴を含んでいそうな候補画像または画像の部分を決定し、この候補画像または画像の部分をデバイス310に伝送してデバイス310によって処理させるように構成されてもよい。幾つかの実施態様において、VSoC200は1以上の他のコンポーネント(図示せず)、例えば自動焦点レンズ、適合装置などと接続して使用でき、種々の用途、例えばID読取り用途などの有用な時間周期内に、画像を取得して、任意的にそれらを処理しながら、例えば異なる視野の深度または異なる照明を提供することができる。同様に、上述したように、および以下に詳述するように、デバイスはID復号DSPを含んでいてもよい。
【0031】
本明細書で説明される例示的なVSoCおよび一般的に望ましいと考えられる他の実装は、いわゆるデータ「収束」として作用することができ、そこにおいてこれらの実装は捕捉された画像データのセットを縮小されたサイズのデータに変換してデバイス310に伝送するのを容易にする一方、この縮小されたデータセットにおいてさらにバックエンドおよび/またはオフチップ処理を実行するのに十分に有意な情報側面を保持する。例として、そのような収束動作は、(a)アレイからの画像データを処理して一般的にデバイスに伝送される画像のサイズおよび/または深度を縮小すること;(b)画像を処理してオリジナル画像と比較することによって縮小されたサイズの特徴を抽出して、縮小サイズの特徴セットをデバイスに伝送すること;および(c)多数の画像フレームを処理し、そこから減少した数の画像を全体として、または縮小されたデータセットとして伝送することを含むが、これらに限られない。さらに、本明細書でシステムおよび方法に従って使用することが想定されているVSoC実装は、一般的に画像または他の処理されたデータ(例えばエッジ、ROIなど)を前処理して、この前処理されたデータをデバイス(310)に伝送することを可能にする。この場合、前処理はデバイスよりもVSoCによってより効率的に達成される。それにより処理速度の上昇が可能になるが、それはVSoCにおいて未加工データがより高速に前処理されてより焦点を絞ったデータセットが生み出されるからであり、これはデバイスによってはもっとゆっくり処理されるであろう。種々の実装において、高度にパラレルな処理環境が存在し、画像からのピクセルデータが大きいグルーピング(例えば捕捉されたピクセルデータ行)として同時に処理され得ることは、その高速な前処理を容易にする。そのようなパラレル環境において、大きいグループ処理の恩恵を受ける操作、例えば近隣操作は、効率を大幅に増して実行される。
【0032】
例示のシステムおよび方法に関して、以下に説明されるように、実装の収束効果は、本発明による種々のVSoC実装は記憶されたデータを処理してより精緻化されたおよび/または小さいサイズのデータセットを生成し、それと同時にデータをピクセルアレイからバッファメモリに読み出すという事実によって強化される。一実施態様において、この処理は1行毎に実行されるが、同時に処理されるデータの他のグルーピングも想定されている。その理由は、1秒当りフレーム(FPS)の未加工画像データの捕捉速度よりもデータを高速で処理できるためである。
【0033】
図4は、VSoC200実施態様の内部アーキテクチャを例示する。VSoC200は上述したピクセルアレイ208および上述した1以上の回路230(図2)を含んでいる。種々の実施態様において、1以上の回路230は制御回路422、汎用メモリ402、処理回路424、画像アドレスプロセッサ410、1以上の画像メモリデバイス414、画像データセレクタ415、モデルデータシフタ416、1以上のコンパレータ・アキュムレータ420、およびプライオリティエンコーダ417を含んでいる。
【0034】
種々の実施態様において、ピクセルアレイ208は、撮像されている場面に対して感知された光に基づいて1以上のピクセル信号を提供するように構成されている。また、種々の実施態様において、処理回路424は、ピクセルアレイ208から提供された1以上のピクセル信号を処理して画像を生成するように構成されている。一般に、例示的な実施態様の処理回路はSIMDアーキテクチャとして実現され、そこにおいてピクセルアレイ208から伝送されたピクセルデータの完全な行は、処理されると同時に広いバス404に伝送される。バス404は1以上の画像メモリデバイスと通信しており、したがって画像ピクセルデータの完全な行を同時に(すなわち共通のクロックサイクルで)読み込みまたは読み出すことができる広いバスを特徴とする。幾つかの実施態様において、ピクセルアレイ208から提供された1以上のピクセル信号はアナログ信号であり、そのような信号はLAPによる処理に先立って適当なADC回路によってデジタル信号に変換される。種々の実施態様において、処理回路424は、1以上のピクセル信号から得られたデジタルピクセル値で1以上の前処理動作を実行して、前処理された画像データを提供するように構成されている。
【0035】
例として、種々の実施態様において処理回路424は、デジタルピクセル値のノイズを低減するためにノイズリダクションのための前処理を実行するように構成されている。画像ノイズはピクセル値の不規則変動であり、VSoC200などの電子ノイズによって引き起こされることがある。種々の実施態様において、処理回路424は、フィルタリングプロセスによって、例えば最初のピクセル値が近隣ピクセル値の強度のメジアン値に置き換えられるメジアンフィルタリングによってノイズリダクションを遂行するように構成されている。このノイズリダクションのフィルタリング機能については、さらに以下で説明する。幾つかの実施態様において、処理回路424は他のタイプのフィルタリング、例えば各々のピクセル値を近隣ピクセル値の値に近づけようとする円滑化操作を表すマスクでピクセル値のデータを回すことにより、ノイズが低減される低域フィルタリングを実行するように構成されている。メジアンフィルタリングおよび低域フィルタリングは単にフィルタリングのタイプの例として提示されるものであり、他の種々の実施態様においてVSoC200は別のタイプのフィルタリングを実行するように構成されてもよいことが認識されるべきである。
【0036】
種々の実施態様において、処理回路424はまた前処理を実行して、6ビットまたは8ビット(または他の値)のグレイスケールピクセル値を1ビット二値ピクセル値に変換するように構成されている。幾つかの実施態様において、処理回路424は、例えばグレイスケールピクセル値と閾値との比較に基づいて、グレイスケールピクセル値を絶対的な黒ピクセル値か、または白ピクセル値に変換する閾値化プロセスを実行するように構成されている。そのような閾値化プロセスにより、ピクセル値の二値化が可能になる。種々の実施態様において、処理回路424はまた、データで形態学的閉鎖操作(morphological closing operation)を実行するように構成されており、膨張が行われ、次に結果として生じるデータで構造化要素を用いて収縮が実行される。このような形態学的閉鎖操作は、例えばある画像の前景領域内にある背景色の穴を縮小するために使用できる。
【0037】
種々の実施態様において、1以上の画像メモリデバイス414は、画像の画像データを記憶するように構成されている。例えば、上述したように、種々の実施態様において、処理回路424はピクセルアレイ208から提供されたピクセルデータで処理を実行して、処理の結果を1以上の画像メモリデバイス414に捕捉された画像のピクセル強度データとして記憶する。種々の実施態様において、1以上の画像メモリデバイス414はそれぞれデータを記憶および提供するためにランダムアクセスメモリ(RAM)などを含んでいる。RAMのサイズとレイアウトは、メモリの行がピクセルアレイ208の行に対応するアドレスを含むように設けることができる。同様に処理回路(上記のLAPを集合的に定義)425における個々のSIMDプロセッサの数は、所定のピクセルアレイとメモリの行における要素の数と同じであることができる。種々の実施態様において、制御回路422は、ピクセルアレイ208を制御して光を捕捉し、ピクセル信号を提供するように構成されており、また、処理回路424を制御してピクセルアレイ208からのピクセル信号を処理し、画像の画像データを提供するように構成されている。幾つかの実施態様において、ピクセルアレイ208は可視スペクトル内にある光を捕捉し、捕捉された光に基づいてピクセル信号を提供するように構成されている。幾つかの実施態様において、ピクセルアレイ208は、可視スペクトル外にある光も(または択一的に)捕捉し、捕捉された光に基づいてピクセル信号を提供するように構成されている。幾つかの実施態様において、ピクセルアレイ208は、可視スペクトルと可視スペクトル外の双方から光を捕捉し、捕捉された光に基づいてピクセル信号を提供できるように構成されている。
【0038】
種々の実施態様において、制御回路422は外部デバイス、例えば上述した1以上の特徴のモデルに対するPCからモデル命令を受け取るように構成されており、およびモデル命令を汎用メモリ402に記憶するように構成されている。種々の実施態様において、汎用メモリ402はデータを記憶および提供するためにRAMなどを含んでいる。種々の実施態様において、汎用メモリ402は制御回路422によって実行され得るプログラムを記憶している。幾つかの実施態様において、汎用メモリ402はVSoC200の外部にある外部メモリ(図示せず)で補完されてもよく、そのような実施態様でVSoC200は外部メモリと汎用メモリ402との間でデータを伝送できるように構成できる。種々の実施態様において、図4の諸要素は種々異なるアプリケーションのために所望されるならば補完または省略でき−そのようなバリエーションの幾つかを以下に例示のシステムおよび方法に関して説明する。
【0039】
種々の実施態様において、1以上の回路230は、1以上の特徴のモデルを使用して1以上の特徴について画像をサーチするように構成されている。幾つかの実施態様において、サーチされるべき画像は1以上の画像メモリデバイス414に記憶され、画像をサーチするために使用される1以上の特徴のモデルのモデル命令は汎用メモリ402に記憶される。また種々の実施態様において、制御回路422は、汎用メモリ402からのモデル命令を実行し、モデル命令に基づいて処理回路424、画像アドレスプロセッサ410、モデルデータシフタ416および複数のコンパレータ・アキュムレータ400を制御するように構成されている。画像マッチングとオブジェクト/特徴姿勢(整列)決定を行うように適合された幾つかの実施態様において、各々のモデル命令はモデル基準点に対して位置を特定する対応する座標を含んでいる。また幾つかの実施態様において、制御回路422は、プログラムされた画像モデルのモデル命令からの座標を画像アドレスプロセッサ410に提供するように構成されており、画像アドレスプロセッサ410は、少なくとも一部は1以上の変換値に基づいて座標を変換済み座標に変換するように構成されている。種々の実施態様において、画像アドレスプロセッサ410は幾何学的変換に従ってモデルの座標を変換することを可能にする。
【0040】
幾何学的変換に従ってモデルの座標を変換する能力を持つことにより、画像中の特徴を種々の角度で回転させ、種々のサイズに拡縮し、または別の画像の種々の位置に転移して画像中に特徴をサーチするときに利点が提供される。ある特徴のモデルを幾何学的に変換する能力を有する幾つかの例において、モデルは画像中の特徴の回転、縮尺または位置にかかわりなく、画像中の特徴を検出するために使用されてもよい。種々の実施態様において、画像アドレスプロセッサ410は、1以上のアフィン変換値に従い1以上のモデルの座標を変換するように構成されている。
【0041】
種々の実施態様において、画像アドレスプロセッサ410は、変換済み座標の第1の座標を1以上の画像メモリデバイス414に提供し、1以上の画像メモリデバイス414にアクセスして、この1以上の画像メモリデバイス414に変換済み座標の第1の座標によって指示されたデータを画像データセレクタ415に提供させるように構成されている。種々の実施態様において、画像アドレスプロセッサ410はまた、変換済み座標の第2の座標を画像データセレクタ415に提供して、この画像データセレクタ415に1以上の画像メモリデバイス414から受け取ったデータを、変換済み座標の第2の座標に基づく量だけシフトさせるように構成されている。
【0042】
種々の実施態様において、制御回路422は、モデルから累積増分と1以上の値をモデルデータシフタ416に提供するように構成されており、モデルデータシフタ416は、1以上の値と累積増分を1以上のコンパレータ・アキュムレータ420に提供するように構成されている。実施態様では1以上のコンパレータ・アキュムレータ420は、サーチされるべき画像のデータに基づいて得られた1以上の値を、モデルからの1以上の値と比較するように構成されている。また、種々の実施態様において、1以上のコンパレータ・アキュムレータ420は、比較の結果に基づいて選択的に累積を実行して、累積増分を積み増すように構成されている。
【0043】
種々の実施態様において、処理回路424はまた1以上のコンパレータ・アキュムレータ400から累積された値を受け取って、画像とモデルデータとの比較に対する局所的な最大応答を示す二値タグワードを形成するように構成されている。さらに、プライオリティエンコーダ417は、処理回路424から二値タグワードを受け取り、二値タグワードに基づいて制御回路422に出力を提供するように構成できる。種々の実施態様において、制御回路422はさらにVSoC200からの出力を提供するように構成されている。
【0044】
図5は、VSoC200の実施態様のより詳細な表現を例示する。種々の実施態様において、VSoC200は上述したピクセルアレイ208と併せて、ピクセルコントローラ505、複数のアナログコンパレータ507、アナログランプ発生器504、複数のアナログ・デジタル変換器(ADC)ラッチ509、およびデジタルランプ発生器503を含んでいる。種々の実施態様において、ピクセルアレイ208は行と列に配置された複数のピクセル回路506を含んでいる。また種々の実施態様において、各ピクセル回路506は、撮像されている場面の対応する部分の光強度をサンプリングするために、感光要素または光検出器、例えばフォトダイオードなどを含んでおり、各ピクセル回路506は、サンプリングされた光強度に基づいてアナログピクセル信号を提供するように構成されている。
【0045】
種々の実施態様において、ピクセルコントローラ505は、ピクセルアレイ208内のピクセル回路506に制御信号を供給してピクセル回路506の動作を制御する。幾つかの実施態様において、ピクセルアレイ208の同じ行にあるピクセル回路506はピクセルコントローラ505からの共通の行制御信号を共有し、ピクセルアレイ208の同じ列にあるピクセル回路506は共通の列読出しラインを共有して出力を提供する。種々の実施態様において、ピクセルコントローラ505は、ピクセル回路506を制御して1行ずつデータの出力を提供する。また種々の実施態様において、ピクセルアレイ208内のピクセル回路506の各列からのアナログピクセル信号出力は、対応するアナログコンパレータ507に入力される。
【0046】
種々の実施態様において、ピクセルアレイ208からのアナログピクセル信号出力のアナログ・デジタル変換は複数のアナログコンパレータ207、アナログランプ発生器204、複数のADCラッチ209、およびデジタルランプ発生器503を用いて実行される。幾つかの実施態様において、ピクセルアレイ508の各列におけるアナログピクセル信号出力は対応するアナログコンパレータ507で、アナログランプ発生器504によって生成された共通のアナログ基準レベルと比較される。また、幾つかの実施態様において、デジタルランプ発生器503は、アナログランプ発生器504によって生成されたアナログ基準レベルを代表するデジタル信号を生成するように構成されている。種々の実施態様において、アナログ基準レベルの何らかの与えられた列がアナログピクセル信号のレベルに等しい場合、対応するアナログコンパレータ507はデジタル出力を生成して対応するADCラッチ509にデジタルランプ発生器503によって供給されたデジタル信号の値をラッチさせる。
【0047】
種々の実施態様において、VSoC200はさらに、制御プロセッサ501、上述した汎用姿勢メモリ402、複数の画像入力レジスタ510、複数の入力/出力(I/O)レジスタ511、複数のシフトレジスタ512、複数の算術論理ユニット(ALU)513、複数の画像メモリデバイス414(上述)、および種々の回路コンポーネントを適当なサイズのバスを介して相互に接続する複数のデータパス518を含んでいる。種々の実施態様において、制御プロセッサ501は汎用メモリ502に接続されて、そこからVSoC200の制御要素を実行するためのプログラムおよびモデルを得る。種々の実施態様において、各ADCラッチ509に対応する画像入力レジスタ510に接続され、各画像入力レジスタ510は出力データラインによりデータパス518の対応する分岐に接続されている。
【0048】
種々の実施態様において、各データパス518は、データをビットシリアル形式で搬送するシリアルデータパスを含んでいる。他の種々の実施態様において、各データパス518は、データを搬送するための複数のデータラインを含んでいてもよい。幾つかの実施態様において、複数のデータパス518はバスの一部である。また、幾つかの実施態様では、ピクセルアレイ208内のピクセル回路506の各列に対して1以上のデータパス518が存在する。種々の実施態様において、各データパス518は対応する画像入力レジスタ510、対応するI/Oレジスタ511、対応するシフトレジスタ512、対応するALU513、および対応する画像メモリデバイス414に接続されている。また、種々の実施態様において、複数のI/Oレジスタ511は、それぞれ制御プロセッサ501に接続されて、制御プロセッサ501からデータを入力したり、制御プロセッサ501にデータを出力したりする。幾つかの実施態様において、複数のシフトレジスタ512は、左右すぐ近隣にシフトレジスタがあればそれぞれ接続されている。また、幾つかの実施態様において、各ALU513は一組の対応するレジスタを通して対応するデータパス518に接続されており、これらのレジスタは2以上のデータ入力レジスタ(aおよびb)と1個のキャリーレジスタ(c)を含んでいる。
【0049】
種々の実施態様において、各画像入力レジスタ510はデジタル化された画像データを相応のデータパス518により、対応するI/Oレジスタ511、対応するシフトレジスタ512、対応するALU513、および対応する画像メモリデバイス414に利用できるようにする。種々の処理操作において、画像データは複数の画像メモリデバイス414にバッファリングされ、LAP425の一部を共同で含んでいる複数のALU513を用いて処理される。種々の実施態様において、処理された画像データまたは他のデータは、二次データ処理および/またはVSoC200の外部にあるデバイスとのデータの外部通信のために、複数のI/Oレジスタ511を通して制御プロセッサ501によってアクセスされてもよい。
【0050】
図4および図5を参照すると、種々の実施態様において、制御回路422は制御プロセッサ501およびピクセルコントローラ505を含んでいる。また、種々の実施態様において、処理回路424は複数のアナログコンパレータ507、アナログランプ発生器504、複数のADCラッチ509、デジタルランプ発生器503、複数の画像入力レジスタ510、複数のI/Oレジスタ511、複数のシフトレジスタ512、および複数のALU513を含んでいる。種々の実施態様において、1以上の画像メモリデバイス414(図4)は、図5に例示されているような複数の画像メモリデバイス414を含んでいる。
【0051】
さらに図5を参照すると、種々の実施態様においてVSoC200はさらに、画像アドレスプロセッサ410、画像データセレクタ415、モデルデータシフタ416、複数のコンパレータ・アキュムレータ420、およびプライオリティエンコーダ417を含んでいる。種々の実施態様において、各々のデータパス518は画像データセレクタ415に接続されている。また、種々の実施態様において、制御プロセッサ501は画像アドレスプロセッサ410に接続され、次に画像アドレスプロセッサ410は複数の画像メモリデバイス414のアドレス入力および画像データセレクタ415の制御入力に接続されている。
【0052】
幾つかの実施態様において、制御プロセッサ501はモデルデータシフタ416の入力に接続され、モデルデータシフタ416の出力は複数のコンパレータ・アキュムレータ420の各々の入力に接続されている。各コンパレータ・アキュムレータ420はまた画像データセレクタ415からの入力を受け取るために接続されている。種々の実施態様において、画像データセレクタ415は双方向バレルシフタなどを含んでいる。また、種々の実施態様において、各々の複数のコンパレータ・アキュムレータ420は、対応するデータパス518に作動的に接続されている。幾つかの実施態様において、プライオリティエンコーダ417は各々のデータパス518に接続され、および制御プロセッサ501に接続されている。図5に例示されたVSoC200のアーキテクチャの接続性および/または編成は例として提示されているものであり、他の種々の実施態様においてVSoC200は別の適当な配置構成を有してよいことが認識されるべきである。
【0053】
図6は、VSoC200に使用するための画像アドレスプロセッサ410の実施態様のブロック図を例示する。種々の実施態様において、画像アドレスプロセッサ410は、モデルの座標を少なくとも一部は1以上の変換値に基づいて変換済み座標に変換するように構成されている。種々の実施態様において、画像アドレスプロセッサ410は変換値を記憶するために変換係数レジスタ602、603、604および605、画像行オフセットレジスタ601、および画像列オフセットレジスタ606を含んでいる。種々の実施態様において、画像アドレスプロセッサ410はさらに、符号付き乗算器607、608、609および610、ならびに加算器611、612、613および614を含んでいる。
【0054】
アドレスプロセッサの動作の例で、画像アドレスプロセッサ410への入力としてモデルの第1の座標(図6にXで示す)とモデルの第2の座標(図6にYで示す)が提供される。図5および図6を参照すると、種々の実施態様において制御プロセッサ501は、モデル汎用メモリ402からのモデル命令をフェッチして、画像アドレスプロセッサ410に対するモデル命令に含まれた座標を提供するように構成されている。例えば制御プロセッサ501は汎用メモリ402からのモデルのモデル命令、例えばモデル例として提示されているモデルの第1のモデル命令をフェッチして、モデル命令に含まれている座標、例えば例における座標(−7、−2)を画像アドレスプロセッサ410に提供するように構成できる。この例では、第1の座標に対する−7の値は画像アドレスプロセッサ410へのX入力として提供され、第2の座標に対する−2の値は、画像アドレスプロセッサ410へのY入力として提供されよう。
【0055】
図6に示すように、種々の実施態様において変換係数レジスタ602、603、604および605はそれぞれアフィン変換係数K00、K01、K11およびK10を記憶するために書込み可能であり、K00、K01、K11およびK10の値は所望の変換を実行できるように設定可能である。種々の実施態様において、画像行オフセットレジスタ601は行オフセット値DRを記憶するために書込み可能であり、画像列オフセットレジスタ606は列オフセット値DCを記憶するために書込み可能であり、DRおよびDCの値は設定可能である。種々の実施態様において、制御プロセッサ501(図5)は、画像アドレスプロセッサ410内の値K00、K01、K11、K10、DRおよびDCをモデルの所望の幾何学的変換に基づいて設定するように構成されている。
【0056】
種々の実施態様において、符号付き乗算器607は変換係数レジスタ602からの入力と、変換されるべき第1の座標である入力を受け取り、出力を加算器611に提供する。また、種々の実施態様において、符号付き乗算器608は変換係数レジスタ603からの入力と、変換されるべき第2の座標である入力を受け取り、出力を加算器611に提供する。種々の実施態様において、符号付き乗算器609は変換係数レジスタ604からの入力と、変換されるべき第2の座標である入力を受け取り、出力を加算器612に提供する。また、種々の実施態様において、符号付き乗算器610は変換係数レジスタ605からの入力と、変換されるべき第1の座標である入力を受け取り、出力を加算器612に提供する。
【0057】
種々の実施態様において、加算器611は符号付き乗算器607と符号付き乗算器608から入力を受け取り、出力を加算器613に提供する。また、種々の実施態様において、加算器612は符号付き乗算器609と符号付き乗算器610から入力を受け取り、出力を加算器614に提供する。種々の実施態様において、加算器613は画像行オフセットレジスタ601と加算器611から入力を受け取り、出力を第1の変換済み座標(図6にRで示す)に提供する。また、種々の実施態様において、加算器614は画像列オフセットレジスタ606と加算器612から入力を受け取り、出力を第2の変換済み座標(図6にCで示す)に提供する。こうして図6の実施態様において、画像アドレスプロセッサ600は複数の変換値K00、K01、K11、K10、DRおよびDCに基づいて座標(X、Y)を変換済み座標(R、C)に変換することを可能にする。
【0058】
図7に示すテキストボックス710には、図6の画像アドレスプロセッサ410の実施態様に対する(X、Y)入力と(R、C)出力との関係を規定した方程式が記載されている。図7に例示されているように、Rに対する方程式はR=X*K00+Y*K01+DRとして提供され、Cに対する方程式はC=X*K10+Y*K11+DCとして提供される。こうして図6の画像アドレスプロセッサ410の実施態様は所望の幾何学的変換のための変換値を設定することによって、幾何学的変換、例えば回転、拡縮または転移に従いモデルの座標を変換することを可能にする。画像アドレスプロセッサ410を用いて幾何学的変換を可能にすることによって、1以上の特徴のモデルを、画像中の1以上の特徴の種々の回転、縮尺および転移に対するパターンマッチングに使用できる。
【0059】
図6の画像アドレスプロセッサ410の実施態様において、画像アドレスプロセッサ410は6個の変換値K00、K01、K11、K10、DRおよびDCに基づいて座標を変換することを可能にする。こうして図6の画像アドレスプロセッサ410の実施態様は、変換に対して6自由度を可能にする。もちろん、画像アドレスプロセッサ410の他の種々の実施態様において変換に対して6自由度以上許容するために6以上の変換値を使用できることが理解されるべきである。例えば種々の実施態様において、画像アドレスプロセッサ410に別の3個の変換値が提供され、画像アドレスプロセッサ410は、さらに透視歪みに対する変換を許容するように構成される。他の種々の実施態様では、画像アドレスプロセッサ410の実施態様において6個より少ない変換値が用いられてよいことも理解されるべきである。例えば画像アドレスプロセッサ410の種々の実施態様は、転移を可能にするために2個の変換値のみ許容してよい。また、図6に例示された画像アドレスプロセッサ410の実施態様は例示的な画像アドレスプロセッサの実装の例として提示されており、他の種々の実施態様では座標の変換に使用する画像アドレスプロセッサとして代替的な配置構成を使用できることが認識されるべきである。
【0060】
図8は、VSoC(図4)で使用するためのコンパレータ・アキュムレータ420の実施態様のブロック図を例示する。種々の実施態様において、コンパレータ・アキュムレータ420は画像データシフタ801、画像データデコーダ802、複数のANDゲート803、ORゲート804、マッチシフタ805、マッチエンコーダ806およびマッチアキュムレータ807を含んでいる。種々の実施態様において、画像データシフタ801は、画像データ入力ライン808からデータを受け取り、画像データシフタ801がシフトするようにクロックされる度に画像データシフタ801内でデータを1位置だけシフトするように構成されている。また、種々の実施態様において、画像データシフタ801は、画像データデコーダ802に出力を提供するように構成されている。
【0061】
種々の実施態様において、画像データデコーダ802は画像データシフタ801から提供された値を復号し、復号された値の各ビットを複数のANDゲート803の対応するANDゲートの相応の第1の入力に提供するように構成されている。また、種々の実施態様において、モデルの1以上のモデル値の各ビットは、1以上のモデルデータ入力ライン809を介して複数のANDゲート803の対応するANDゲートの相応の第2の入力に提供されるように構成されている。
【0062】
種々の実施態様において、画像からのビットは画像データシフタ801内にシフトされ、次に画像データデコーダ802により、画像データシフタ801内の二値数の十進値に対応するビット位置に「1」を有し、他のすべての位置に「0」を有するビットストリングに二進展開することによって復号してもよく、復号されたビットストリング内の低いオーダーのビットは0のビット位置に対応する。次に、種々の実施態様において、画像データデコーダ802からの復号されたビットストリングは、複数のANDゲート803を用いて、1以上のモデルデータ入力ライン809を介して提供される、モデル内の値から再構成されたビットストリングと比較してもよい。種々の実施態様において、ORゲート804は複数のANDゲート803の各々の出力を受け取り、複数のANDゲート803のいずれかの出力が「1」の場合は「1」の出力ビットを提供する。幾つかの実施態様において、ORゲート804は複数のORゲートによって置き換えられて、複数のANDゲート803のいずれかが「1」の値を有するビットを出力したか決定するように構成できる。種々の実施態様において、ORゲート804の出力は、モデルの特定の幾何学的変換および幾何学的に変換されたモデルの画像に対する特定の位置について、画像の画像データとモデルのモデルデータとの間にマッチが検出されたか否かを示す。種々の実施態様において、複数のANDゲート803およびORゲート804はコンパレータと見なされてもよい。もちろん、複数のANDゲート803およびORゲート804は比較を実行するための配置構成の例として提示されており、他の種々の実施態様において別のタイプのコンパレータを使用できることが認識されるべきである。
【0063】
種々の実施態様において、ORゲート804の出力はマッチシフタ805に提供され、そしてこのマッチシフタ805は、ORゲート804から提供されたビットを入力し、マッチシフタ805がクロックされる度にマッチシフタ805内の他のビットを1位置だけシフトするように構成されている。種々の実施態様において、マッチシフタ805内のデータはマッチエンコーダ806に出力され、そしてこのマッチエンコーダ806は、マッチシフタ805内に記憶されたビットで表される値を符号化し、マッチアキュムレータ807のクロックに出力を提供するように構成されている。種々の実施態様において、マッチアキュムレータ807は、1以上のモデルデータ入力ライン809からモデルの累積増分を受け取り、そしてマッチエンコーダ806の出力の値に基づいてクロックされると累積増分を積み増すように構成されている。また、種々の実施態様において、マッチアキュムレータ807は、マッチアキュムレータ807内で累積された値を対応するデータパス518に出力するように構成されている。
【0064】
種々の実施態様において、制御回路422(図4)は、信号を各々のコンパレータ・アキュムレータ420に送り、制御回路422がリセットコマンドを含んだモデル命令を実行すると各々のコンパレータ・アキュムレータ420内のマッチアキュムレータ807がデフォルト値にリセットされるように構成されている。また、種々の実施態様において、制御回路422は信号を送り、制御回路422が比較コマンドを含んだモデル命令を実行すると各々のコンパレータ・アキュムレータ420内のマッチアキュムレータ807によって累積が行われるように構成されている。そのような実施態様において、各々のコンパレータ・アキュムレータ420内のマッチアキュムレータ807は対応するマッチエンコーダ806の出力によってクロックれてもよく、累積が許されたときにマッチアキュムレータ807は対応するマッチエンコーダ806から出力された値に応じて累積を実行するか、または実行しない。
【0065】
II.VSoCシステムの実装
ID特徴を検出、同定および抽出するためのシステムおよび方法の例示的な実施態様において、全体的なスキャニング手段アーキテクチャ900において実装される視覚センサ(VSoC)200は、図9に従って提供される。上述した例示のVSoC200に関して図示および説明された種々の要素は、本システムおよび方法における諸機能との相互参照を容易にするために再編されている。例えば、図9に示す読出し回路918の諸要素は一部は上述した制御回路422内にあり、一部は処理回路424(図4および図5)内にある。同様にLAP425は全体的な処理回路424の一部として示されている。読者が例示のシステムおよび方法が動作できるための例示の(または代替的な)VSoCアーキテクチャの環境をさらに理解するのを助けるために、追加の機能および相互接続(例えばID復号DSP980および種々の通信ポート)が図9にも示されている。
【0066】
図示されたピクセルアレイ208は、例示の1Dバーコード916を含んだROI914を撮像している状態で示されている。バーコード916に対するピクセルアレイ208の向きは、角度および回転が高度に可変である。同様にピクセルアレイは、この実施態様により想定されている画像捕捉および処理フレームレートでバーコードに対して運動することが期待でき、そのような運動が存在すると復号に必要とされる情報を一層の信頼性をもって捕捉できる。例示のピクセルアレイは1028列×786行として構成できる。そのようなアレイは境界効果を回避するために、上下および左右に2個のダミー行および列を含んでいてもよく、こうして例示的な1024行×782列のアクティブな8ビット(または代替として6ビット)のピクセルアレイを提供する。ADC回路を含む相互接続された読出し回路918と上述した関連機能は、アナログセンサの出力をデジタルピクセルデータに変換し、これは例示的な実施態様により関連するバス920を介して1024行として線形アレイプロセッサ(LAP)425に読み出される。
【0067】
ピクセルアレイ208内の画像捕捉プロセスは、センサコントローラ922によって処理される。例示した実装では、これはアレイ内のピクセルの各行に対する操作および読出し回路のイベントのシーケンスを制御するために要求される波形を生成するプログラム可能な有限状態機械(FSM)からなる。センサコントローラ922の動作はユーザにより別個の16ビットプロセッサ501(上に図5で説明した制御プロセッサ501)内の構成レジスタ942を介してプログラムできる。これはVSoC200の一部であり、さらに以下で説明する。これらのレジスタ942は、ピクセルアレイ208および読出し回路918のすべてのプログラム可能なパラメータを構成し、ROI、シャッターモード、露出時間およびADC解像度のパラメータを含む。画像フレームが取得されると、それは1024行にわたり1行ずつ読み出されてデジタル形式に変換される。この読出しおよびA/D変換プロセスと並行して、LAP425はこのシステムと方法のROI検出および特徴抽出アプリケーションのプログラムコードに従って画像を処理する(以下に説明する)。
【0068】
LAP425は1024の同一処理要素の一次元アレイからなるパラレルプロセッサであり、各々の要素は上で一般的に説明したように1ビットデータパス、16アキュムレータビット、キャリーおよびイネーブルフラグからなる。LAP425はSIMD機械として実現されているので、すべてのプロセッサは同時に動作し、同じ動作を異なるデータで実行する。
【0069】
各LAP要素はデータメモリの1列(4096ビット)から1ビットを読み取り、書き込むことができる。行アドレスはLAPメモリ読取りまたは書込みサイクルの間、すべての要素に対して同じである。データメモリとLAPとの間には、読出しデータを左か右に最大13位置シフトするように構成できるバレルシフタがある。これにより各LAP要素は(クロックサイクル毎に)それ自身の位置の左右13列からのデータにアクセスできる。データメモリ(すなわち上に図4で説明した1以上の画像メモリデバイス414)は、1024×1024ビットの4ブロックからなる広い1024バス952を介して相互に接続されている。このメモリは画像処理の中間結果を記憶するために使用される。メモリはLAPからの全体的な処理画像の部分のみ記憶するように適合されることに留意すべきである。それはまた以下に説明するように、処理の中間結果、例えばROI情報および抽出された特徴を記憶する。こうしてピクセルアレイからのデータはメモリ414内を絶えず動かされ、成功したID検出動作に関係がなければ廃棄されるか、または情報が有望なID特性を示す場合は次のステップおよびプロセッサ、例えば復号に進む。典型的なアプリケーションにおいて、取得される画像は1行ずつLAPに伝送される。LAP425においてデータは処理されて等価二値画像を生成する。この結果として生じる二値画像は、その後の処理のために漸次データメモリに記憶される。幾つかの視覚システム実施態様において、二値画像スキャンはVSoCの相関器954によって処理されて、正規化相関およびパターンマッチング情報を得ることができる。該当する場合は、正規化相関を加速し、画像中でパターンマッチングを実行するために使用できる。プライオリティエンコーダは画像行内の推移を検出するために最適化される。上述したプライオリティエンコーダ956(幅1024ビット)は、バス952を介してメモリ414と相互作用してデータメモリ行内のセットビットの高速検出を提供する。
【0070】
多数の画像処理動作はLAP425上で実行され、画像行内のポイントの接続性または分布が検出されなければならない。例示的な実施態様においてこれらの動作を加速するために、VSoC200はアレイを横断する「伝搬/生成」機能を実現するカスタム論理ブロックを包含する。伝搬/生成ユニット958(バス952上)の可能な2通りのアプリケーションは、オブジェクトの位置特定と「未知のポイント」の解像である。ブロックは1024個の同一セルからなる。各セルは近隣セルと通信する1対の「搬入」および「搬出」信号を有する(それぞれ右方向と左方向に対応)。アレイの左側と右側の入力はゼロに設定されている。LAP425ワードを伝搬/生成ユニットに書き込んだ後、伝搬/生成ユニット内の値が有効になるまで例示的に5サイクル必要とする。
【0071】
制御プロセッサ501は、VSoC200にLAP425とは別個のコンパクトな高速処理ユニットを提供する。例示的な実施態様におけるプロセッサ501は16ビットユニットであるが、他のサイズも想定されている。それは効率的な低レベル画像処理と、LAP425および相関器954に対する制御を提供する。プロセッサ501は汎用命令セットを用いて動作し、また二値画像上で動作するための追加的な専用命令もサポートする。なぜならば、そのような二値画像はVSoCの動作の典型的なモードだからである。プロセッサ501は何らかの主要な端末フラグを含む多数のソースからトリガされたインターラプトをサポートする。図示されているように、プロセッサ501はLAP425およびデータメモリ414とそれぞれ16ビットバス960、962を介して相互に接続されている。
【0072】
例示的な実施態様において制御プロセッサ501(本明細書では「CPU」とも呼ぶ)は、縮小命令セットコンピュータ(RISC)を伴うハーバード・アーキテクチャを用いて実現されており、プログラムとデータに対して別個のメモリを提供するが、プログラムメモリはデータ記憶の目的にも使用できる。これは16個の汎用レジスタ、R0〜R14およびSP(942)を定義する。例示した実装においてこれらのレジスタはそれぞれ16ビットである。また、例示の17ビットのプログラムカウンタ/シーケンサ944も存在するが、これはプロセッサが直接65536個の16ビットワードをプログラムRAM(すなわち上記汎用メモリ402)内でアドレス指定し、同じ量をプログラムROM948内でアドレス指定することを可能にする(しかしこの実施態様ではROMは現在48Kのアクティブなワードしか持っていない)。計算はすべてレジスタ間で行われる。こうしてメモリからの値は操作される前にレジスタ(942)にロードされる。
【0073】
データメモリ414は、レジスタをポインタとして用いて、バス962を介して16ビットワードとしてアクセスされる。レジスタは任意的にメモリアクセス後に事前減分または事後減分または事前/事後増分してもよい。例示した実装ではポインタ・プラス一定オフセットアドレス指定モードも提供される。256Kワード(512Kバイト)のフルデータメモリにアクセスすることを許容するために、例示した実装ではページレジスタが用いられる。二値画像は1ワード16ピクセルでデータメモリにパックされる。効率的なアクセスを可能にするために、2個のポインタレジスタPXおよびPYが用いられる。これらは単一ピクセルをアドレス指定するために用いられ、いずれか一方または両者は独立にアクセス後に事後増分され、事後減分され、または変容されない。PXレジスタは10ビット、およびPYレジスタは12ビットで画像マッピング(1024列×4096行)を反映する。
【0074】
128ワードI/Oスペースも例示的に提供され(図示せず)、絶対的アドレス指定を用いて直接アクセスされる。これは多くのシステムと端末レジスタを含んでおり、残りはスクラッチメモリによって占められる。追加のレジスタ動作のために補助レジスタセット947も設けられている。LAP425のアキュムレータバンク(16ビットの1024ワード)はPXレジスタをポインタとして用いてアクセスできる。ALU操作はワーキングレジスタ942、947の間でALU949と、いずれか2個の汎用レジスタをオペランドとして用いることができる16×16乗算器アキュムレータを使用して行われる。そのような演算の32ビット結果は32ビットMRレジスタ(図示せず)に記憶または累積される。例示的に設けられているシフタは、MRレジスタを0〜31位置だけシフトダウンし、その結果を特定の汎用レジスタに入れてもよい。乗算器およびシフタは符号付き演算または符号なし演算用に構成できる。
【0075】
プログラムメモリ402は16ビットの65536ワードを記憶する(上に図4で説明した汎用メモリの一部)。このRAMメモリ402は物理的に32ビットの32Kワードとして編成できる。ROM948は32ビットの24Kワードとして編成できる。ページレジスタはROMまたはSRAMがアクセスされるかどうかを決定し、プログラムフェッチ、プログラムメモリ読取りおよびプログラムメモリ書込み用に別個のページを有する。起動時には、プロセッサ501は最初にROMから実行する。ROMは、プロセッサの起動構成ピンを読み取って所望される二次起動モードを決定する起動ソフトウェアを有する。これらのモードは、ホストパラレルポート(FIFO)962からの起動、SPIスレーブポート(964)を介するホストプロセッサからの起動、およびSPIマスタポート(964)を介するシリアルフラッシュ970からの起動を含んでおり、これらすべては16ビット通信バス966を介してプロセッサと相互接続されている。RAMに/又はRAMからレジスタ値およびデータを双方向に伝送できるようにする全二重シリアル通信を実現するためにSPI経路が設けられていることに留意されたい。標準SPIマスタポートはシリアルフラッシュメモリまたは他の端末装置にアクセスすることが意図されている。ソフトウェアに制御されて2台の互換デバイスを接続できるように2本のセレクトピンが設けられている。スレーブSPIポートはホストマイクロコントローラとの代替インタフェースとして使用できる。利用可能な起動モードの一つが選択されたら、ソフトウェアが適当なデバイスからコードをロードしてプログラムRAM402に記憶する。すべてのソフトウェアがロードされたら、制御はプログラムRAM402のスタートに移動される。
【0076】
例示のVSoCのLAP425と関連して、パラレル処理タスクとシリアル処理タスクの効率的なバランスを提供するために、多様なプロセッサ実装を採用できることは明確にすべきである。例示的な一実施態様において、CPU/プロセッサ501とLAP425は同時に動作せず、むしろ両者のうち一方が与えられた命令を実行している間、他方は動作しないことが要求される。図示されたCPU/プロセッサ501は、例示的な実施態様による可能な実装の一つに過ぎない。LAP、データメモリおよび他の関連コンポーネントとの適当な相互接続を有する代替的な実施態様において、異なる(非ハーバードおよび/または非RISC)アーキテクチャに基づくプロセッサを実現できる。
【0077】
SPIポート配置構成964に加えて、パラレル(FIFO)ポート962が設けられている。このポートはオフチップ・ホストプロセッサ、マイクロコントローラ、または他のデバイス、例えば例示的な実施態様で例示されたID復号DSP980と通信することが意図されている。DSP980はデータメモリ414からLAP425を介して処理された特徴データを反復的に受け取り、そのようなデータを連続的に復号し、復号されたIDを供給することに努める。このプロセスについて以下に詳述する。代替として、同じピンを図示されたビデオポートとして使用して、ビデオポートを装備された他のプロセッサに画像を出力することができる。一実施態様において、512ワード幅のホストポートは1024ピクセル行を約25.5マイクロ秒または約51画像/秒で伝送できる。バス966沿いに別個の専用ビデオポート972も設けることができることに留意されたい。
【0078】
ツイストペア線を通してデータを連続的に高速で伝送するために、低電圧差動信号(LVDS)ポート974が設けられている。これは多様な商業的供給源から出ているデシリアライザICと互換性のある1個のスタートビット、10個のデータビットおよび1個のストップビットからなるフレームフォーマットを用いる。種々の実施態様において、LVDSポート974は復号DSP980との通信のためのホストポート962に対する代替として用いることができる。さらに、標準UART976の形式のシリアルポートが設けられ、また例示的に最大16GPIOラインを有する汎用入力/出力(GPIO)ポート978が設けられており、これらはバス966沿いの他のI/Oポートのピンで多重化されている。IEEE標準ジョイントテストアクショングループ(JTAG)ポート982は、プロセッサ501内のほとんどすべての内部デバイスおよび内部構成レジスタと直接接続を可能にするデバッグポートとして使用できる。この経路によってメインメモリおよび内部デバイスにアクセスすることも可能である。VSoC200内には電源管理機能(984)、システムクロック発生器986、リセット機能(988および990)およびバステーブルROM992も例示的に設けられている。さらに、バス966はプロセッサ501に応答して統計ユニット993と相互接続する。このユニット993は例示的にエッジ追跡動作の間、統計を計算する。統計は一組のI/Oマップドレジスタに記憶される。エッジ追跡が完了したら、統計は追跡されているオブジェクトの外周と直交および対角境界ボックスを決定するために使用できる。
【0079】
上述したVSoCの実装は、多様な例示的な実施態様によるシステムおよび方法で使用するための多種の可能なプロセッサ実装の例であることは明確にすべきである。代替的な実施態様において、プロセッサは異なるパラレルアーキテクチャを中心に編成でき、別個の制御プロセッサの有無を問わない。同様に、本発明のシステムおよび方法を実行するために、高度にパラレルではなく、適当な速度およびデータ処理能力を備えた単一または複数のプロセッサを用いることができる。こうして、本明細書で使用される「VSoC」または「視覚センサ」の用語は、多様なプロセッサアーキテクチャを含めて広く解すべきであり、これには上述したある動作が他のオンチップコンポーネントと相互接続された別個のコンポーネントによりオフチップ(オフダイ)で実行されるものも含まれる。
【0080】
例えば、本明細書で例示されたアーキテクチャは、SIMD 配置構成(LAP)、メモリ、汎用プロセッサ(CPU)およびピクセルアレイを単一チップ/ダイ上に含んで、VSoCアーキテクチャを定義しているが、(例えば)ピクセルアレイはオフチップ/オフダイに存在し、適当なリードによって作動的に相互接続されることがはっきりと想定されている。これはある実装において望ましいであろう。これは例えば、デバイス形状要因が特定の幾何的条件を指定し、またはプロセスアセンブリとは別個のピクセルアレイが所望される場合である。
【0081】
III.画像捕捉、ROI決定および任意的な特徴抽出
図10は、例示のVSoC200または他の適当な処理システムを用いてID(例えば1Dバーコード−例えば多様な表面に置かれたUPC−A)の区域で画像を捕捉し、潜在的にIDを含むROIを決定し、IDを代表するROIから候補特徴を抽出するシステムおよび方法の概観1000を示す。例示的な実施態様において、IDがスキャニング手段および関連する端末装置によって有用な情報に復号されるプロセス全体1000は、プロセス全体1000をVSoCベースのプロセス1010と別個のデコーダベースのプロセス1020に分割することを必要とする。このようにしてVSoCは別個の効率的に実装されたデコーダ回路に接続されて、例えばDSPとして実現され、多様な市販のID復号アプリケーションを実行できる。VSoCおよびデコーダは適当な相互接続を介して(例えば上述のホストポート962を用いて)互いに接続されている。一般にそのようなアプリケーションは、データ接続1030によって表されているように、所定のROIの復号されたデータ値、検出されたID特徴の相対的角度、およびID特徴の詳細(例えば個々の特徴の相対的幅、間隔など)を導出できる。
【0082】
図示されたプロセス全体1000の配置構成により、処理負荷をVSoCとDSPプロセッサとの間で配分することが可能である。プロセスの配分を採用することにより、1秒当り読取りの試み(画像捕捉速度によって表される)は最適化でき、それによって精度が増す。プロセスの配分によってまた、現在利用可能なシステムとアーキテクチャで得られるよりも高性能の全体システム(ROI決定、特徴抽出、復号)が可能になり、種々の1Dコードタイプおよび潜在的に多様な2Dコードタイプを含む(がこれらに限られない)多様なシンボルをより効率的に復号できるようになる。
【0083】
多数の要因が例示的な実施態様による処理の配分を望ましいものにしている。より具体的には、本明細書中の実施態様によるVSoC200は、近隣操作およびバーコード特徴の決定(例えばコントラストエッジ)において典型的なDSPプロセッサよりも有意に効率的である。すなわち、VSoC200はある行で与えられたピクセルに隣接する(近隣の)多数のピクセルデータに基づいて、LAP425が当該行全体で並行動作するためにエッジを高速に処理できる。例示した実装では、近隣は与えられたピクセルから約±13ピクセル離れている。さらに、例示のVSoCはデータ伝送では画像捕捉より低効率であり得るため、VSoCと復号DSP980との間で伝送されるデータの量が減少するならば、DSP980が未加工画像データの捕捉と処理の両方を受け持つシステムよりも画像捕捉速度が改善されるべきである。同様に、DSP980は典型的にVSoC200425(例示的な実施態様では90MHz)より高いクロック速度で動作するので、より高速に線形操作、例えばバーコード復号(適当な復号アプリケーションまたはアルゴリズムを用いて)を実行できる。同様に、DSP980は例示した実装では典型的にVSoC200より多いプログラムメモリを提供するので、単一のアプリケーションで多様なシンボルを復号するように装備できる。
【0084】
例示的なシステムおよび方法の種々の実施態様と関連してVSoCはID検出および決定の効率を増すことができる。図11、図16、図17および図18は、VSoCプロセス全体の例示的な実施態様を示しており、それぞれデータを伝送し、これらのデータはオフチップ復号装置(慣用または特製のID復号アプリケーションを実行するDSP)によって使用されて復号されたID情報を導出することができる。一実施態様(図11および図16にバリエーションを示す)において、VSoCプロセスはフロントエンド(FE)プロセスとバックエンド(BE)プロセスからなり、システム処理リソースをより高速に処理されるID ROI検出および追跡ステップと、オーバーヘッドがより大きい特徴抽出およびID検証ステップとに効率的に割り当てる。抽出された特徴、ROI情報および検証された/精緻化されたデータが復号装置に提供される。任意的に、DSPに伝送されるデータは未加工の、圧縮された、またはサイズを縮小した(例えば画像全体のより小さい領域をカバーする)画像データを含むこともできる(以下に別の実施態様でも説明)。このFE/BE実施態様は一般的に誤判定のID検出が最も少なく、したがって復号DSPは有望なIDで動作し、その処理能力が誤判定のIDを復号するために不必要に使用されないことを保証する。別の例示的な実施態様(図17)において、BEプロセスは本質的にVSoCプロセスから省かれ、FEプロセスから追跡されたROIデータが直接復号装置に提供されて、適当な復号アプリケーションを実行する。伝送されるデータは、例えばROIの位置、サイズおよび向きのパラメータ、ならびにアレイからの画像データストリーム(またはその圧縮もしくは縮小サイズバージョン)を含んでおり、それらによって復号装置はROIの領域と関連した画像データ上で動作することによりIDの抽出を試みることができる。さらに別の例示的な実施態様(図18)において、VSoCプロセスは単純に特性などのIDの位置が特定された(例えばROIが検出された)という通知を提供でき、それにより復号装置または他のバックエンドプロセス、オフチッププロセスをトリガして、関連する未加工のまたは圧縮された画像データストリームに基づいて復号動作を起動させる。
【0085】
代替的な実施態様によれば、VSoCおよびVSoCで動作する例示的なシステムと方法は、画像ID情報または存在データ(例えばROI検出)を捕捉して、他のVSoCや、ID情報をより精密な視覚システムプロセス(例えば完全ID検出および復号)を実行するための通知として用いる代替的な視覚センサにトリガを提供するように適合できることが想定されている。トリガVSoCに対するピクセルアレイ解像度は、フルスケールセンサと異なることがある(典型的にはより小さい)。この場合は、VSoCおよびVSoCで動作する例示的なシステムと方法は、ID復号または他の操作のための全体的な視覚システムの端末として作用し、復号を実行するために使用される画像ストリームは他のピクセルアレイソースから伝送される。
【0086】
最初に図11を参照すると、例示的な実施態様により画像を捕捉し、その中にROIを決定し、潜在的な候補ID特徴を抽出してDSP980によって復号するVSoCプロセス1100が示されている。LAP425のパラレルアーキテクチャおよび縮小したサイズの画像データメモリ414(一般的にピクセルアレイ208から完全に捕捉された画像のサイズより記憶容量が小さい)を最も効率的に使用するために、プロセス1100は「フロントエンド」(FE)サブプロセス1110と、任意的な(代替として下の図17参照)「バックエンド」(BE)サブプロセス1120の2部分に分割されている。画像は捕捉され、FEアルゴリズムを用いて同時に処理される。要約すると、FEプロセス1110は特徴を抽出すべきROIが検出されたか決定する。典型的に、1以上のデータが検出された場合、このステップで保存される唯一のデータは、潜在的にIDを含んでいるROIの予測された位置である。ROIが検出されたら、後続の新しい画像が捕捉され、BEプロセス1120を用いて同時に処理される。BEプロセス1120は新しい画像中の予測されたROI位置で実行する。
【0087】
さらにFEプロセス1110を参照すると、ピクセルアレイ208は最初にステップ1130で1以上のIDを含んだ場面の画像を捕捉する。画像は読出し回路によって1行ずつLAP425に読み出される。画像が読み出されると、各行は画像データメモリ414に記憶され、CPUプロセッサ501に制御されてLAPによって操作される。最初の目標は、ROI検出ステップ1132で行に含まれているID状の特徴(エッジ)に基づきROIの位置特定を試みることである。より具体的には、この検出ステップの目標は対象ID(例えば1Dバーコード)のサイズ制約を満たす向きが類似したエッジの密な領域を特定することである。スキャニング手段のピクセルアレイ208のIDに対する回転角度はおそらく直角でないので、与えられた行にはIDの一部しか発生しない。したがってID状の特徴セットを有するROIを検出するために、幾つかの行の出力が必要とされよう。
【0088】
さらに図12および図13を参照すると、ROI検出ステップ1132は例示的に(a)画像読出し中に起こる行処理ステップ1200(図12)と、(b)画像フレームピクセル読出しの完了後に起こる画像処理ステップ1300(図13)の2段階に分割されている。本明細書に記載されたステップの順序(行処理に画像処理が続き、それぞれの中に個別のサブステップがある)の説明は、想定されている多くの可能なプロセスステップおよびサブステップの順序の例として受け取られるべきであることに留意されたい。図示/説明された順序は例示的な実施態様において、ROI検出アルゴリズムを実行する際の効率を促進するために望ましい。しかしながら代替的な実施態様において、記載された行処理サブステップの幾つかは画像処理の一部とすることができ、その逆も可能である。より一般的に、本明細書中の種々のプロセスに関して記載されたステップおよびサブステップは、特定のプロセッサおよび/またはアルゴリズムの要件を満たすために必要な場合は再編できる。
【0089】
行処理ステップ1200は潜在的なIDエッジを特定し、これらを回転の向きに基づいてビンにまとめるために用いられる。ステップ1210に示されているように、プロセス1200はN行の画像を記憶しているメモリ414内のローリングバッファを定義する(ステップ1210)。この例ではNは3行に等しい。次に行処理ステップ1220に従い、新しい行が取得されるたびに、プロセスは適当なエッジ検出ツール、例えば3×3ゾーベル・オペレータを用いてX方向とY方向で8ビットの符号付きエッジ強度(Sx、Sy)を検出する。次に結合された強度がSm=abs(Sx)+abs(Sy)として計算される。これはIDに対する潜在的なテクスチャと見なされる十分なエッジ状特性を与えない区域を排除するためのメカニズムを提供する。この「ノイズ」区域の排除はステップ1224で行われる。次に、プロセス1200の行処理ステップ1220は、所定のノイズ閾値を上回るエッジ強度を有するピクセルを決定する(ステップ1226)。例示的な実施態様では、ノイズ閾値として値25が用いられる。代替的な実施態様において、エッジデータに対する感度を高めるためにより低い閾値(ノイズに対する抵抗性が小さい)を使用してもよい。他のメカニズムも適用でき、例えば局所的なエッジ強度閾値を設定するために局所的コントラストを測定することも想定されている。次に、各エッジは4(または他の数)の回転の向きの一つを表す相応のビンに入れられる(ステップ1228)。個別のビンが4個ある場合、各ビンは180度の弧上で45度の範囲を表す。次に、ステップ1229でM行を横断して(すなわち垂直に)各々の向きのビンの内容を垂直に加算する。この実施態様ではMは16行に等しいが、他の値も想定されている。ここでは各ビンは特定の列位置で16行の画像中に存在する特定の向きのエッジカウウントを表す。ステップ1220で出力されたビンはステップ1240で、1024(列)×4(向き)×48(合計行方ビン当り結合されたビン)ビンに記憶され、ビン当り5ビットのデータを有する。代替的な実施態様において、ゾーベル計算(ステップ1222)は現在用いられている8ビットから6ビット、さらにはそれより少ないビットに減らされることが想定されている。
【0090】
次にROI検出ステップ1132で、画像ピクセル読出しの完了に続いて、出力されたビンで画像処理ステップ1300(図13)が実行される。ステップ1300は2部分からなる。第1の部分1310では、潜在的なIDの向きが類似したエッジがグループ分けされて、解像度を減らした二値画像を形成する。それから第2の部分1330で、プロセスは視覚ツール(例示的に慣用的なブロブ分析ツール)を用いて可能なID ROIを決定する。
【0091】
画像処理ステップ1300の第1の部分1310を参照すると、ステップ(1312)でP個のビンのグループは水平に加算される。例示的な実施態様において加算されたビンの数Pは16である。代替的な実施態様においてこの数Pは可変である。例示の16ビンを加算した後では、各ビンは16×16画像タイルに対して同じ向きのエッジカウントを含んでいる。換言すれば、画像のすべての16×16領域に対して4個のビンが存在し、それぞれ当該ビンの向きの数のカウントを有する。次に、各ステップ1312で合計された16×16領域の各々に対して後続のステップ(ボックス1320)が起こる。最初にステップ1322では、各領域に対してプロセス1300は最大エッジカウントを有する構成的ビン(「最大のビン」)と2番目に大きいエッジカウントを有するビン(「次に最大のビン」)、最小のエッジカウントを有するビン(「最小のビン」)と次に最小のエッジカウントを有するビン(「次に最小のビン」)を決定する。次にステップ1324で、各領域について2個の最大のエッジカウントビンが加算され、ここから2個の最小のエッジカウントビンが減算される。次にステップ1326で、各領域について、所定の閾値を上回る(ステップ1324で)結合されたエッジカウントの合計に対して、プロセスは64×48(または他の所定のサイズ)の二値画像中のビンの位置に「1」(または他の指標)を割り当てる。この「1」の値は、当該タイルには十分に向きが類似したエッジがあることを示している。さもなければ、ステップはこの位置に「0」または他の指標を割り当てる。その結果は、特定の領域に対して優勢な向きが達成されることである。ある領域で優勢な向きを評価し、その優勢な向きに関係した強度に対応する値を提供するために、多様な代替プロセスを採用できることがはっきりと想定されている。
【0092】
画像処理ステップ1300の第1の部分1310を実行した後で、プロセス1300は第2の部分1330を実行して、全体的画像はクリーニングされ、慣用的なブロブ分析または他の適当な視覚ツールを用いて可能なID ROIを決定する。最初にプロセスの第2の部分1330は二値形態学(この実施態様では画像慣用的な画像処理技術を用いて画像の2回の膨張と画像の1回の収縮を実行することを含む)を実行して穴を埋め、IDバー/特徴の間の広いスペースのために弱く接続された領域を結び付ける(ステップ1332)。画像がクリーニングされたら、ステップ1334でプロセスは高速ブロブ分析を実行する。高速ブロブ分析の結果(また他の適当な視覚ツールの結果)は、周知のIDに対する所定のサイズ基準を満たさないブロブを取り除くために使用される(ステップ1336)。例示的な実施態様で現在の基準は、(a)サイズ>45ピクセル(各ピクセルは16×16領域を表す)、(b)幅>2ピクセル、および(c)高さ>2ピクセルを有するブロブを含んでいる。
【0093】
ステップ1338でIDサイズ基準を満たすことができないブロブを取り除いた後、ステップ1338で例示のプロセス部分1330はグリッド整列されたブロブ方形を用いてブロブ位置をオリジナル画像座標にマッピングして戻す。代替として、代替的な実施態様においてグリッド整列されない方形(または他の周知の境界形状)を用いることができる。最後にステップ1339で、プロセスの第2の部分1330は、画像座標のY方向で固定されたサイズの量またはROIサイズに比例する量だけブロブサイズを拡張することによって、グリッド整列された(またはグリッド整列されない適当な)ROIを生成する。この拡張は静かな(低ノイズの)ID区域およびビン閾値を越えない散在ID成分コンポーネントが捕捉されたことを保証する。その最終結果は検出済みID ROIである。このデータを生成するための処理時間は、行ピクセルで近隣操作を実行する際のLAPの効率のために比較的小さい。
【0094】
再び図11のFEサブプロセス1110を参照すると、各ROI検出ステップ1132の結果はメモリ414に記憶される。1以上のROI結果が利用可能であれば、FEサブプロセス1110はマルチフレームROI追跡/予測ステップ1134に入る。一実施態様においてROI追跡ステップ1134は画像中に1個の候補ROIがあることを保証し、記憶された画像の連続における当該ROIの中心を用いて、スキャニング手段/ピクセルアレイ208の結果としてROIの方向、速度および加速度を評価する。ピクセルアレイ208はIDに対して動かされるか、またはその逆であり−またはIDおよびピクセルアレイ208の双方が互いに対して動かされる。IDが1秒当り30インチ動くためには、フレーム当りの位置変化の程度がかなり小さく、1秒当りに処理されるフレームの数約150〜200という効果的なフレームレートが推定される。追跡プロセスは比較的高速に動作して、フレーム間のROIの中心の位置の変化を視野内における位置(これは全体的なピクセルアレイまたはそのサブセットで表すことができる)を基準に比較する。代替的な実施態様において、画像中に1以上のROI候補が存在する場合に、各ROIを別個に識別および追跡する適当なメカニズムでROI追跡を使用できることに留意されたい。例えば、各ROIがフレーム間で類似に小さい量だけ動く場合に、各ROIの新しい位置は当該ROIと関連し、他のROIとは関連していないことが推定される。より一般的には、1以上のROIの追跡は、各画像フレーム中の候補ROIが先行の位置に対する距離および方向の点で連続して(例えば容認可能な動きの制約の所定の範囲内で)動いたかということに関する決定を伴う。所定の単一または複数のフレーム内で他のフレームに対して候補ROIの距離または方向の不連続性が大きい場合は、追跡計算から除外できる。同様に、レーム間で候補ROIに予想される連続した軌跡が欠如していることは、誤った読取りを示す。
【0095】
決定ステップ1136は、十分な数の信頼できる追跡イベントが起きたか判定し、潜在的なID ROIの適当な追跡を保証するのに十分な数の信頼できる追跡イベントが記憶されるまで(分岐1138を介して)分岐してステップ1130に戻る。ROIがほぼ間違いなく追跡プロセスの対象である(例えばROIが処理された画像の連続の全部またはほとんど全部に予想通りに存在しているか、容認可能な動きの制約の範囲に合致して動いた)ことを信頼性をもって確認するのに十分な数のROIフレームが追跡されたら、決定ステップ1136はBEサブプロセス1120に分岐して、予測されたROI1140のパラメータをメモリ414から供給する。FEサブプロセスに関係する他のデータは必要なくなり、メモリ414内で上書きされてもよい。
【0096】
任意的なBEサブプロセス1120において、ステップ1150でピクセルアレイ208はさらに画像捕捉を実行する。例示的に、この捕捉と読出しは(予測された現在位置がアレイの全体的なピクセル領域内にあることを考慮して)予測されたROIと関連するアレイの区域でのみ起きてよい。画像捕捉(ステップ1150)から読み出されたピクセルデータは、さらにステップ1152で動的特徴抽出によってもたらされるデータ精緻化を受ける。動的特徴抽出は(予測されたROI内での)ID特徴の互いの相対的角度および間隔をより精確に決定するために用いられ、それにより誤ったID読取りの可能性が減らされる。このプロセスはまたLAPによってより効率的に達成されるID読取りの部分を実行することによって、オフチップ復号回路(DSP980)における処理オーバーヘッドも減らす。一般に、LAPにとって効率的なFEサブプロセスで予測されたROIが生成されると、より処理集約的な特徴抽出または復号ステップで誤判定のID検出イベントが減少することを保証する。むしろ、顕著な数の(またはすべての)誤判定は、高速FEサブプロセスで排除される。
【0097】
動的特徴抽出は、予測されたROI内におけるエッジ強度特徴の計算に基づいている。例示的な実施態様において、これはFEサブプロセス1110から供給される予測されたROIのサイズに基づいて3×3か、または5×5カーネルを用いる。より大きいカーネル(例えば5×5)は、より大きい予測されたROIに対して特徴エッジの角度/回転の良好な解像度を得るために用いることができる。動的特徴抽出は行処理動作として実行され、画像がピクセルアレイ208から読み出されるときに起きる。
【0098】
より小さい3×3カーネルに対してはゾーベル・オペレータが用いられる。5×5カーネルに対しては、ガウスの導関数を近似する分離可能なフィルタ機能を用いることができる。例示的な実施態様において、このカーネルは2の冪乗計算に対して最適化されており、g=[1 4 8 4 1]およびgp=[1 2 0 −2 −1]の要素を有する。フィルタのX反応を測定するために、画像はgT、次いでgpで回旋される。フィルタのY反応を測定するために、画像はgpT、次いでgで回旋される。結果として生じる符号付きXおよびYエッジ強度は(所望するならば)切り詰められ連結されてメモリ414に保存される。結果として生じるエッジ強度の最小サイズはXに対して4ビット、およびYに対して4ビット(3強度ビット+1符号ビット)であり、ピクセル当り8ビット値を生み出す。しかしながら、これは所望するならば任意のビット深度に、XおよびY強度成分のそれぞれに対して最大8ビットまで増すことができ、ピクセル当り16ビットの値を生み出す。次の表はID(UPC−Aバーコード)サイズ、使用するフィルタおよびメモリ要件の間の例示的な関係を示している。下の表から明白なように、動的特徴抽出の処理は高速である。図示されたメモリの記憶要件はバーコードが垂直に向けられた最悪ケースを仮定しており−一般的に特徴が大部分または完全に1列ずつ決定されることを要求する。ここに見られるように、8ビットデータを超える記憶は最小撮像距離で公称バーコードに対する例示の利用可能なメモリを超えることがある(例えば376×241ピクセル)。
【0099】
【表1】
【0100】
動的特徴の抽出に続いて、BEサブプロセスは少なくとも3つの目標を遂行するID検証ステップ1154を実現する。すなわち、検証はROIをチェックし、ROI内の多数の位置でエッジ角度のヒストグラムをより精密に吟味することにゆおり、バーコードを含んでいるという確信を増す。これにより撮像されたIDにわたり角度の歪みとコントラストの差が 得られる。この検証ステップはID特徴(例えば平行なバー)の優勢な角度も決定し、また所定の向きのROIが得られる一組のスキャンライン終点を決定する。より一般的に、検証は向きの角度が一層制約された範囲を特徴に適用して、ID特徴(例えば平行なバー)の互いに対する精確な整列を保証する。
【0101】
ID検証は、画像読出しが完了した後で行われる画像処理動作である。しかしながら検証プロセスは読出しの間に、予測されたROIの等間隔の水平「ストライプ」または「スキャンライン」をメモリ414に記憶するので、検証処理は継続的に実行できる。例示的な実施態様ではストライプの数は現在7に設定されているが、代替的な実施態様でこれより大きいか、または小さい数を用いることができる。各ストライプの幅はROIのサイズに応じて3行または5行である。一実施態様において、より大きいサイズのROIは典型的により広いストライプを用いるので、より大きいフィルタを適用してもよい。
【0102】
図14を参照すると、検証プロセス1154は各ストライプ(ブロック1410)に対して1行のエッジ強度を計算させ、ステップ1420で3×3ゾーベル・アルゴリズムか、または5×5の分離可能な2の冪乗のフィルタ(または他のエッジツール)を用いる。種々の実施態様において、ステップ1152とステップ1154の両方で同じツール/フィルタが使用される場合は、これらの強度は動的特徴抽出(ステップ1152)の間に事前に計算できる。例示的な実施態様において、各エッジ強度はXおよびYエッジ方向を表す2個の符号付き8ビットコンポーネントによって定義される。次に、LAP425においてCORDIC(または他の適当な)アルゴリズムがで各エッジ位置で実行されて9ビット角度および9ビット強度値を生成する(ステップ1422)。実施態様でCORDIC機能が用いられるのは、それによってプロセッサのオーバーヘッドおよび動作速度に負担を与える恐れのある三角法の関数(例えば正接/逆正接関数)を用いることなく、角度の計算が可能になるからであることに留意されたい。
【0103】
次に検証プロセス1154は所定の強度を超える各エッジ位置について、左隣および右隣より大きい強度を有するかを判定することによって、それが局所的最大位置であるか決定する(ステップ1424)。次に、VSoCプライオリティエンコーダ956はステップ1424からの局所的エッジ最大位置をロードされ、これらの位置に基づいてエッジ角度のヒストグラムを作成するためにCPU(RISC)プロセッサ501が用いられる(ステップ1426)。このCPU501を用いて、ヒストグラムで約180度離れた2個の最大ピークがサーチされる(ステップ1428)。角度が180度離れた大きいピークを検出できたら、このストライプはIDが存在することを示し(決定ステップ1430)、肯定的なID結果の数が増分される(ステップ1432)。次のストライプ(もしあれば)が選択されて(ステップ1434)、プロセスは分岐して計算ステップ1420に戻ってこの次のストライプ上で動作する。同様に、ストライプが肯定的なIDではない場合は(決定ステップ1430)、プロセスはステップ1434および1420を介して次のストライプ(もしあれば)上で動作する。すべてのストライプが処理されたら、決定ステップ1440は、IDの肯定的な存在を示すストライプの数が閾値を超えるか決定する。超える場合は、IDは検証済みとなる(ステップ1442)。さもなければ決定ステップ1440は検証されなかった結果を返し(ステップ1444)、システムは新しいROIをサーチするか−または非読込み指示をユーザに返して、ユーザに対象を再スキャンすることを促す。
【0104】
代替的な実施態様において、各角度ヒストグラムまたは角度ヒストグラム全体で追加のチェックおよびテストを実行できることが想定されているが、それはそのような動作における処理オーバーヘッドが合理的に低いためである。検証プロセス1154はさらにステップ1446で、バーコードが存在することを示すストライプを用いて優勢なID角度を計算することを含んでいてもよい。例示的な実施態様において優勢なバーコードは、それらのストライプの平均ピーク角度(0〜180度)で定義される。次にバーコードROIは同じストライプを用いて精緻化される(ステップ1448)。優勢なID角度の設定公差内にある各ストライプの開始エッジと終了エッジが検出される。これらのサンプリングされたポイントを用いてROIの境界はより緻密に精緻化して優勢な角度に沿って向きを整えることができる。VSoC CPU501に代替的なアルゴリズム/プロセスを使用し、この豊富なエッジデータを用いて各ストライプに対するIDの開始と終了を決定できるが、このようなプロセスの大部分が全体的な処理時間に与える影響は最小限でなければならないことに留意されたい。
【0105】
次に、例示的な実施態様において抽出および検証に成功した特徴、ならびにROI情報および優勢な角度(1158)はホストポート962または他の通信リンク(例えばLVDS974)を介してオフチップDSP980に送られ、IDに含まれた情報がステップ1156に従って復号される。伝送された特徴は典型的にID全体またはその顕著な部分を具体化している。この理由で大きい特徴セットはタイムリーにDSPに伝送することが困難なことがある。一実施態様において、CPUはホストポートへの伝送を16ビット単位で送る。例示的な実施態様において、図9を参照すると、VSoCはデータをより効率的にDSPに伝送するために、1024幅の記憶アレイを有するシフトレジスタ996と、1024幅のバスとの相互接続を含んでいてもよい。そのようなものとしてLAP425はCPU501よりも直接に、1024幅の行をメモリ414からシフトレジスタ996に送り、それから(例えば)バス966を介して選択されたポートに送ることができる。これによりCPUおよび他のコンポーネントは本質的に、普通なら時間がかかるポートを通したデータの伝送を実行することから解放するものであり、このデータの伝送はプロセッサ425、501が他のタスクで動作している間にシフトレジスタ996によって高いクロック速度で処理される。
【0106】
さらなる例示的な実施態様では、データストリームを圧縮してDSPに伝送するために、伝送ステップは符号化を含んでいてもよいことが想定されている。例示的な実施態様において、図15に示されているように、ランレングス符号化プロセス1500を実装できる。ステップ1510で、プロセス1500は最初に(例えば上記の特徴抽出1152および/または検証ステップ1154から導出された)局所的最大エッジ位置をプライオリティエンコーダ956にロードすることによって各行で作用する。ROIに先立って検出されたエッジは、ステップ1520で伝搬/生成ユニット958を用いて除去される。次にステップ1540でCPU501はプライオリティエンコーダ956を読み込んで画像からエッジ値を得る。プロセスは行が存在している間(決定ステップ1550)は次の行で動作し(ステップ1560)。分岐1562からステップ1510へと継続する。すべての行が処理されたら(決定ステップ1550)、圧縮された伝送は完了し(ステップ1570)、ROIの前に現れる画像中の不必要な情報を取り除く。代替的な実施態様において、より複雑なおよび/または代替的な圧縮技術または符号化技術を採用できることは明確にすべきである。
【0107】
種々の実施態様においてメモリ制限は特徴の適切な記憶に負担となることがある。したがって図16に、メモリの負担を低減する結果、平均フレームレートが低下してデータ伝送が増すVSoCプロセスの代替的な実施態様を示す。一般に、図16のFEプロセス1110は図11を参照して説明したものと実質的に同じであり、したがって同じ参照符号が用いられている。予測されたROIの供給1140に続いて、図16のBEプロセス1620に進む。図示されていように、捕捉および読出しはBEプロセス1620のステップ1650で行われる。動的特徴抽出(ステップ1652)と伝送(ステップ1660)は、すべての予測されたROIに対して画像を読み出している間に行われる(1140)。したがって復号DSPは、検証が行われる前の読出しの間に特徴データ1662を受け取る。この実施態様では、ID検証(ステップ1670)は読出しと伝送が完了した後に起こる。検証信号は、優勢な角度と精緻化されたROI位置の情報1672(IDは検証済みであると仮定)はサイクルの終点で送られ、ここからDSPは復号プロセスを完了できる。代替として、IDが検証できない場合は、DSPは非検証信号を受け取るか、または信号を受け取らず(したがってタイムアウトして)IDを復号しない。BEプロセス1620に従ってより低い平均フレームレートが生じるのは、精緻化されたROI(すなわちIDの優勢な角度で整列された境界ボックス)が、特徴伝送の前に計算されないからであることに留意されたい。それゆえ精緻化されたROIより平均して大きい予測されたグリッド整列ROIのすべての特徴がDSPに伝送される。データ伝送が増すのはこのROIがより大きいためであり、検証が伝送後に行われるのですべての候補ROIについて特徴が伝送されるからである。検証は行読出し時間に顕著に影響するため、典型的に読出しの間は行われない。
【0108】
上述したように、完全なFE/BEプロセス1100および1600(図11および図16)は、例示的な実施態様によりIDを検出および決定するシステムおよび方法に従って実装できる種々の可能なデータ収束プロセスの一つである。図17に示すように、等価FEプロセス1110を採用するVSoCプロセス1700は、ROIの位置、サイズおよび向きのデータ1710を生成する。BEプロセスにおいて特徴抽出と検証によりこのデータをさらに精緻化する代わりに、情報は直接オフチップ・バックエンド復号装置(プロセス1750の一部)、例えば復号DSP1720に、伝送されたROI情報を使用するために適合された適当な慣用または特製の復号アプリケーションと一緒に伝送される。システムはまた未加工の、縮小または圧縮された画像データストリーム1730を復号装置1720に伝送する。このストリームは、基底にある1Dコード(もしあれば)を発見する試みにおいて、ROIパラメータの一般的な制御下で復号装置によって作用される。すなわちデコーダ1720はROI情報を用いて入ってくる画像データのスキャンをトリガし、(慣用的な技術を用いて)復号可能なID特徴の位置を特定して画像内のROIの位置および向きに対して整列させようとする。これに基づいて、復号装置は復号されたID(または複数のID)を返すか、成功しなかった場合は読取り失敗を示す(ブロック1740)。
【0109】
VSoCプロセスのデータ収束特性の効率は、大部分のID検出および復号がバックエンド、潜在的にオフチップの(DSP)プロセッサによって行われる実装においても適用される。図18に示すように、プロセス全体1800は画像捕捉プロセス1130を、上により切り詰めたVSoCプロセス1810の一部として説明した要領で企図する。ステップ1820でLAPまたは他のVSoC処理要素は、上記と同様の高速ROI検出動作、または他の高速のID検出アルゴリズム例えば近隣操作を用いて実行する。ROIまたは他のID指標を検出(決定ステップ1830)した後、VSoCプロセス1810は通知1840を(典型的に)オフチップ・バックエンドID処理プロセス1850に、関連する画像データ1860の同時ストリームと一緒に、未加工の形式か適当に圧縮して伝送する。通知はID復号プロセッサ(慣用または特製の復号アプリケーションを有するDSP)に対するID復号トリガ1870として働く。このトリガはDSPにID状の画像データのストリーム1860をサーチさせ、特定された情報があれば復号させるする(ステップ1880)。復号が成功したら、ステップ1890で復号された情報が供給される。さもなければ、復号に失敗した通知が提供される。一実施態様において、この通知は画像のどこでトリガが生成されたかに関する情報を含んでいてもよいので、DSP内のすべての情報はそれぞれ精確に時間が計られて、ストリーム化された画像データでトリガを誘発したと見られる位置のサーチを開始できる。
【0110】
上述した種々のVSoCプロセスは多様な画像情報を提供でき、最初は(画像捕捉から導出された)大縮尺の画像情報であり、次に効率的な大縮尺の(典型的に並行な)プロセスおよび関連するアルゴリズムによって縮小されて、より小さい有用なデータセットを提供し、これが他のプロセス、プロセッサおよび/またはアルゴリズムおよびプロセスによって効率的に処理でき、その間大縮尺プロセスが続いているることは明確にすべきである。
【0111】
より一般的に、例示的なシステムおよび方法は例示のVSoCの特徴を効率的に使用して、大量のフロントエンド高速画像データを望ましく処理し、この情報を有用なデータのより小さいストリームに効果的に収束して、これが同時にバックエンドプロセッサおよび/またはプロセスに供給されることを明確にすべきである。LAPとCPUを組み合わせて読み出す間に、処理後のコンパクトなデータセットでより精緻な画像処理を実行する、大まかな画像処理に対するLAPの並行的特質の利点を最大限活用することにより、種々の実装においてフレームレートを慣用的なID復号配置構成に対して効果的に3倍以上高めることができる。さらに、LAPアーキテクチャを用いて計算上のオーバーヘッドを低減し、画像処理アーキテクチャを単純化することにより、全体的な電力消費を減らすことができ、無線スキャナにとっては再充電またはバッテリ交換の間の稼働サイクル時間が増すことになる。
【0112】
以上、本発明の例示的な実施態様を詳述した。本発明の精神と範囲から逸脱することなく種々の変容および追加を行うことができる。上述した種々の実施態様の各々は、多様な特徴を提供するために記載された他の実施態様と組み合わせることができる。さらに、上に本発明の装置と方法の幾つかの別個の実施態様を記述したが、これは単に本発明の原理の応用を例示したものに過ぎない。例えば代替的な実施態様において、復号機能および回路をオンチップで設けて、適当なオンチップ通信リンクおよび/またはバスを介してVSoCの他の機能的コンポーネントと相互に接続することができる。同様に、ピクセルアレイに設けられ、プロセッサ、メモリおよび通信バス相互接続において実装されたデータ行および列の幅は極めて可変である。より一般的に、本明細書で説明されたシステムおよび方法はハードウェア、コンピュータ可読プログラム命令からなるソフトウェア、またはハードウェアとソフトウェアの組合せによって実現できる。したがって、この記述は単に例示として意図されたものであり、本発明の範囲を制限するものなどとして解されてはならない。
【技術分野】
【0001】
本発明は、シンボル読取り装置、より具体的には一次元(1D)バーコードなどのシンボルを捕捉および同定するシステムに関する。
【背景技術】
【0002】
機械視覚システムは、観測された対象に関する情報を伝えるカメラセンサを備える画像取得装置を使用する。次にシステムはこの情報を種々のアルゴリズムに従って解釈して、プログラムされた決定機能および/または同定機能を実行する。
【0003】
一般的に、シンボル(「ID」とも呼ぶ)読取りは画像取得センサ(CMOSカメラ、CCDなど)を、シンボル(「バーコード」)を含んでいるオブジェクトの位置に向けて、そのシンボルの画像を取得することを必要とする。シンボルは正しく並べられた特性または形状のグループを表す一連の所定のパターンを含んでおり、そこから付属のデータプロセッサ(例えばマイクロコンピュータ)はオブジェクトに関する有用な情報(例えばシリアルナンバー、タイプ、モデル、価格など)を導出できる。シンボル/バーコードは多様な形状とサイズのものが利用できる。オブジェクトを標識および同定するために最も普通に用いられているシンボルタイプの一つとして、いわゆる一次元バーコードまたは「線形」バーコードが使用されており、そのうち見慣れたものの一つは幅と間隔が異なる一並びの垂直線からなる。本明細書では一般的にバーコードを含んだ場面を代表するピクセルを取得する画像センサについて説明されるが、周知のレーザスキャナを含む、バーコード情報を取得するための他の技術および装置がバーコード情報を取得するために使用されてきた。
【0004】
背景として図1は、手持ち動作に適合された例示的なスキャニングシステム100を示す。ハンドピース102の形態をした例示の手持ちスキャニング手段が設けられている。これはグリップ部104と本体部106を含んでいる。仮想線で示されている画像形成および処理システム151は制御されて、画像データを照明画像捕捉または他のシステムプロセスを制御するオンボード組込みプロセッサおよび関連するメモリ109に差し向けることができる。このプロセッサ109はまたID復号アプリケーションまたはサブプロセッサ113を含んでいるか、これらと作動的に接続されていてもよく、これらにより画像データは有用な情報(例えばオブジェクトの表面に置かれたシンボル(例えば図示された一次元(1D)バーコード画像195)から導出される英数字行に解釈される。復号された情報はケーブル111を介しまたは無線で、(例えば)ディスプレイ114、キーボード116およびマウス118を有するPCまたは他のデータ記憶装置112に差し向けられ、そこで記憶され、さらに適当なアプリケーション121を用いて操作され得る。アプリケーション121はまた、組み込まれたプロセッサ109が特定のIDの同定および復号タスクに必要な適当な視覚ツール130でプログラムされることを可能にする種々のインタフェース・コンポーネントを含んでいてもよい。さらに、インタフェース・アプリケーションはスキャナ問題を診断し、および/またはスキャナに関する他の状態項目を決定するために使用してもよい。USB(2.0)または無線インタフェースはPC112に対してスキャニング手段102を一時的に接続することを可能にする。手持ちスキャニング手段をその組み込まれたプロセッサ、ID復号アプリケーション、コンピュータ・インタフェースおよび/または他のプロセッサおよびプロセスに対して精確に配置することは、極めて可変的である。
【0005】
スキャニングプロセスはスキャニング手段102からの入力に応答するように適合させることができる。例えば、オペレータが手持ちスキャニング手段102のトリガ122を切り替えると、内部カメラ画像センサ(画像形成システム151の内部)がオブジェクト105上の視野131の画像を捕捉する。視野内には例示の一次元(1D)シンボル195を含んだ例示的な関心領域(ROI)があり、このシンボルは基底にあるオブジェクト105の性格と品質を同定するために使用できる。スキャニング手段102上の1以上の視覚インジケータ141は、プロセッサ109から信号を受けると点灯などの方法(例えばLCD英数字ディスプレイ)で知らせ、シンボル195の読取りと復号に成功したことを示す。関連するイベントを表示するために聴覚インジケータを作動させることもできる。
【0006】
スキャニング手段の1つの望ましい特徴は、ROI内でID(シンボル195)が検出されたらスキャニングプロセスをセルフトリガする能力である。画像ベースの(すなわち画像センサおよび視覚システムを用いる)シンボル/IDスキャナ、一般的にID検出と復号プロセスを開始するために、視野にID(バーコード)があることを示すトリガを必要とする。同様に、ID検出プロセスはトリガの一部であってもよい。すなわちトリガは、スキャナの視野内にIDが検出されることに応答して起こる。多くのアプリケーションにとってそのようなトリガを提供することは困難であるが、その理由は(a)バーコードが視野内にあることが外部ソース(すなわち潜在的トリガ発生器)によって知られない可能性がある。(b)所定の動作機構では信頼できるトリガを発生することは不可能なことがある。この困難は、バーコードが撮像システムを基準とした運動、位置および/または方向において完全に制御されない仕方で動くと増加する。さらに一般的には、システムに固有の1秒当りの画像捕捉および画像復号イベントは、IDを適切にスキャンする能力を制限する。したがってスキャニング手段が急速に動き、および/またはスキャニング手段をIDに対して急角度で向けると、限られた数の捕捉イベントのほとんどまたは全部がIDを適切に検出または復号できなくなることがある。
【0007】
さらに、コード自体のある側面が、限られた数の捕捉イベント内でコードを検出または復号することを困難にし−さらにスキャナが動くと典型的に有用な画像捕捉のグループは一層限られることが知られている。特に、コントラストが低いコード(例えば茶色の段ボール箱に印刷)は、撮像システムが捕捉プロセス中に捕捉設定(例えば利得または露出)の調整を実行することを要求する。そのような場合、最初の捕捉設定は不適切であり、最終的により十分な捕捉設定が調整されるまで待ち時間が発生することがある。この最初の捕捉と調整待ち時間の後で利用できる捕捉の数は非常に少なく、IDの検出および/または復号を困難にする恐れがある。
【0008】
代替として、ユーザはセルフトリガリングを可能にし、スキャニング装置に対するバーコードの運動を幾分か克服するためにレーザスキャナを使用することができる。しかしながらレーザスキャナは機械的部品、例えば動く鏡を用いるため、そのメンテナンスが負担となることがある。さらに、レーザスキャナは乏しいコントラスト、コード印刷の破損などのために読み取りにくいコードに対する性能は、画像ベースのIDスキャナより低い。
【0009】
他の代替的なスキャニング法では、ラインスキャンカメラベースのスキャニング手段を用いて基底にあるオブジェクト上のIDの画像を捕捉する。ラインカメラを使用すると全視野が連続的に撮像および処理され、視野内にID状の特徴をサーチしてこれらの特徴が検出されると処理する。しかしながら、ラインスキャンカメラの短所は、それらは典型的にラインスキャン速度の慎重な制御を必要とするため、IDとカメラとの間の運動が信頼性をもって、精確に測定および/または制御できない状況では、使用が困難か不可能になることである。
【0010】
現在利用できる多様なスキャニング手段は、IDの検出および復号に必要な種々の機能を達成するためにデジタル信号プロセッサ(DSP)を用いる。従ってそのようなDSPは、視覚システム要素と共に慣用的な、またはカスタマイズされたID復号アプリケーションまたはプロセスを含んでいる。これは画像ピクセルが捕捉されるときに、ID状の特徴を含んだ適当な関心領域の近隣操作と比較して処理速度を制限する傾向があり、そのような特徴は抽出され、次にデコーダによって漸次作用される。IDとスキャニング手段のピクセルアレイが互いに対して比較的速く動いているとき−例えばユーザがスキャナをID上で素早く通過させたとき、慣用的な画像センサ/ピクセルアレイの捕捉速度(しばしば1秒当り約60フレーム未満)は、慣用的なDSPの処理能力と組み合わせると、IDを復号するのに十分可読なフレームを提供するには不十分である。1秒当り60フレームの場合でさえ、それらのフレームのほんの一部だけが完全なIDを捕捉し、それらのフレームの幾つかは専らピクセルアレイの撮像パラメータ(照明およびコントラスト変化など)を変更するために利用されるため、復号プロセスには使用できなくなる。こうして慣用的な実装において復号に使用できる画像の最終的な数は急速にゼロに近づく。
【0011】
それゆえ、オブジェクトおよび関連ID(例えば1Dバーコード)に対するスキャニング手段の広範な速度の運動および制御されない位置/向きを可能にする、シンボル/ID特徴を捕捉、検出および同定するシステムおよび方法を提供することが望ましい。このシステムおよび方法によりスキャニング手段の撮像システムは従来困難または達成不可能であったタスク、例えば店頭スワイプスキャンシステムにおけるバーコード読取りを伴うタスクのために動作できる。さらに、画像ベースのスキャニング手段においてトリガの必要性を効果的に減らすかまたは除去するシステムと方法を提供し、それによりトリガを構成することが困難か不可能な環境においてスキャナの撮像システムがレーザスキャナと張り合えるようにすることが望ましい。さらに一般的に、このシステムと方法は1秒当りの画像捕捉および読取りイベントの数を増すのを容易にして、1以上の成功した復号イベントの可能性を高めるべきである。
【発明の概要】
【0012】
本発明は、ビジョン・システム・オン・チップ(VSoC)アーキテクチャに基づく効率的な処理システムを用いて、シンボルID、例えば1Dバーコードの特徴を捕捉、検出および抽出するためのシステムおよび方法を提供することにより、従来技術の短所を克服する。VSoCはCPU(本明細書では「汎用プロセッサ」とも呼ぶ)で制御されて、例示的に単一命令複数データ処理(SIMD)アーキテクチャで構成された線形アレイプロセッサ(LAP)を提供し、そこにおいてピクセルアレイの行の各ピクセルはLAPを定義する類似の幅のアレイで個々のプロセッサに差し向けられる。ピクセルデータは、潜在的にID状の特徴を含んでいる関心領域(ROI)の大まかな検出と追跡を実行するフロントエンド(FE)プロセスに従って処理される。ROI検出プロセスは近隣操作におけるLAPの効率を最適化するために2部分で、すなわちピクセルアレイから画像ピクセルを読み出す間に起こる行処理ステップと、典型的に読出しが行われた後に起こる画像処理ステップとで行われる。IDを包含したROIのピクセルアレイに対する相対運動が追跡および予測される。例示的には、メモリ、SIMDプロセッサ配置構成および汎用プロセッサ(CPU)は共通のチップ/ダイ上に設けられている。ピクセルアレイもこのチップ/ダイ上に設けられていてもよく、例示のVSoCアーキテクチャを提供する。代替として、ピクセルアレイは別個のチップ/ダイ上に設けられて、メモリおよび処理機能を含むダイと作動的に接続されてもよい。
【0013】
一実施態様において、バックエンド(BE)プロセスが存在して、予測されたROIを用いて画像捕捉後に特徴抽出を実行してもよい。特徴抽出は候補ID特徴を導出し、これらの候補ID特徴が検証ステップによって検証される。検証ステップはIDシンボルの存在を確認し、精緻化されたROI、特徴の向きの角度および、典型的に最初の捕捉されたグレイスケールピクセル画像より小さい二値画像形態に縮小された特徴セット自体を生み出す。これらはROIデータと一緒に復号プロセッサまたは他のデバイスに伝送される。代替的に、特徴は検証の前に復号プロセッサに伝送されて急いで復号され、後続の検証は復号結果がデコーダによって適当なIDとして保持されるかどうか決定する。さらに代替的な実施態様において、画像ストリームもDSPに伝送され得る。
【0014】
別の実施態様において、FEプロセスのROI結果は直接(VSoC BEプロセスなしに)オフチップのバックエンド処理装置、例えば画像復号DSPに伝送される。この実施態様では、ROI結果はROI位置、サイズおよび向きを含んでいてもよい。これは未加工の、縮小サイズの(全体的画像の一領域)または圧縮した画像データストリームと一緒に使用されて、DSPによるID検出および復号を実行する。
【0015】
さらに別の実施態様において、ID ROIまたは他の形態のID候補指標データを検出したら(LAPまたは他の大規模データ処理VSoCプロセスの動作を介して)、通知(トリガ)が復号DSPに伝送されて、トリガイベントと関連して伝送された未加工のまたは圧縮された画像データのストリーム内でIDサーチおよび復号動作を起動する。
【0016】
VSoCおよびプロセスがトリガとして使用される場合は、復号装置およびプロセスは代替的に復号のための画像ストリームを他のピクセルアレイソース(トリガVSoCアレイとは異なる解像度を有する他のVSoCであってもよい)から受け取る。この実装では、トリガVSoCは全体的な視覚システムの端末である。
【0017】
例示的な実施態様において、行処理ステップはN行のローリングバッファを提供し、これは近隣操作および抽出後のエッジを所定の回転の向きにビニングすることにより、候補IDのエッジ位置、強度および回転の向きの抽出を可能にする。ビンは結合されて向きが類似したエッジを有する画像処理ステップで領域を定義する。結果として生じる画像はクリーニングされ、視覚ツール、例えばブロブ分析ツールを用いて可能なID ROIを決定する。ROI検出プロセスは予測されたROI運動追跡が導出され得るまで繰り返される。次に予測されたROIを用いて任意的にBEプロセスが行われる。
【0018】
例示的な実施態様において、検証プロセスはストライプまたはスキャンラインを用いて抽出された特徴によってヒストグラムを定義する。この場合、ヒストグラムは180度間隔で大きいピークを示し、ストライプは肯定的なID結果を示す。肯定的なIDストライプの数が閾値を超えれば、検証済みIDが存在して復号が行われてもよい。別の例示的な実施態様では、復号装置またはプロセッサに伝送されたデータは圧縮できる。同様に、広いシフトレジスタを用いて画像データメモリから特徴データを受け取り、その後でポートを通して特徴データを復号装置/プロセッサに送ることができ、その間LAPおよびCPUを自由にして他のタスクで動作させる。
以下の本発明を添付の図面を参照して説明する。
【図面の簡単な説明】
【0019】
【図1】既述の、従来の実装によるオンボードプロセッサおよびID復号アプリケーションを有する手持ちスキャニングシステムの斜視図である。
【図2】例示された実施態様による例示のビジョン・システム・オン・チップ(VSoC)のブロック図である。
【図3】図2のVSoCと関連デバイスとの相互接続を示すブロック図である。
【図4】図2のVSoCの機能的コンポーネントを示すブロック図である。
【図5】例示的な実施態様による、線形アレイプロセッサ(LAP)の個々のコンポーネントの詳細を含む、図2のVSoCの機能的コンポーネントを示すより詳細な模式図である。
【図6】例示的な実施態様による、モデルの座標を変換するための、図2のVSoCの画像アドレスプロセッサのブロック図である。
【図7】例示的な実施態様による、VSoCによりモデルの座標を変換するための例示的な方程式を詳細に示すテキストブロックである。
【図8】例示的な実施態様による、図2のVSoCのコンパレータ・アキュムレータの模式図である。
【図9】例示的な実施態様による、ID検出、同定および特徴抽出プロセスの実装で用いられるバージョンのVSoCのブロック図である。
【図10】例示的な実施態様による、図9のVSoCとオフチップIDデコーダとの間のプロセスの分割を示した、ID検出、同定および特徴抽出プロセスの概要を示すブロック図である。
【図11】例示的な実施態様による、ID関心領域(ROI)を予測するフロントエンド(FE)プロセスと、予測されたROIに基づく任意的にある特徴を伝送するバックエンド(BE)プロセスとを含むVSoCプロセスを示すフローチャートである。
【図12】図11のFEプロセスによるROI検出プロセスで画像ピクセルを読み出す間に行われる行処理ステップを詳細に示すフローチャートである。
【図13】図11のFEプロセスによるROI検出プロセスで画像ピクセルを読み出した後に行われる画像処理ステップを詳細に示すフローチャートである。
【図14】図11の任意的なBEプロセスによるID特徴検証プロセスを詳細に示すフローチャートである。
【図15】例示的な実施態様による、図11のBEプロセスでIDデコーダまたは他のデバイスに伝送する前に特徴データを圧縮または符号化するための例示的なプロセスのフローチャートである。
【図16】図11と同様のFEプロセスを含むVSoCプロセスと、代替的な実施態様による検証プロセスの前に特徴がIDデコーダまたは他のデバイスに伝送されるBEプロセスとを示すフローチャートである。
【図17】代替的な実施態様による、適当なROI情報および画像データを直接バックエンドプロセッサに供給して情報を復号し、図11の特徴を伝送するBEプロセスがない、ROIを予測するFEプロセスを含むVSoCプロセスを示すフローチャートである。
【図18】代替的な実施態様による、バックエンドプロセッサをトリガして、関連する画像データスリーム内で何らかのID特徴をサーチおよび復号するID候補通知プロセスを含むVSoCプロセスを示すフローチャートである。
【発明を実施するための形態】
【0020】
例示的な実施態様によれば、ID/バーコード特徴を捕捉、検出、同定および抽出するシステムおよび方法は、相互接続されたピクセルアレイから読み出されたデータの完全な行を離散的処理サイクルで処理できる(すなわち行内のすべてのデータが各クロックサイクルで同時に処理される)アーキテクチャを定義するプロセッサで動作するように適合されている。これを達成するために、全体的なVSoCプロセッサは、画像データ記憶装置(記憶アレイの幅も1024)とピクセルアレイ(この例では8ビットまたは6ビットピクセルによる1024×768ピクセルアレイ)との間に広いオンビットデータバス(例えば1024×1バス)を含むように組織されている。このメモリは他の類似の幅(例えば1024×1)のバスによって、例えばプロセッサ近隣操作において非常に効率的である単一命令複数データ処理(SIMD)を用いて完全な行を同時に処理するように組織された画像処理コンポーネントと相互に接続されている。したがって、各々のプロセッサは行内の近隣データを処理している他のプロセッサと相互運用できる。これらのプロセッサは組み合わせて線形アレイプロセッサ(LAP)と呼ばれる。例示的な実施態様においてこれらのプロセッサは、それぞれ90MHzで動作する。これらは完全な行のデータ(1024要素)上で同時に1ビット算術論理ユニット(ALU)のように作用するように構成されている。例示的な実施態様において、LAP内のプロセッサはさらに、データがプロセッサ間で最大13列離れて移動できて広く効率的な近隣操作を容易にするように適合されている。例示の処理速度は、LAPに対して約11,520メガバイト/秒の処理能力を生み出す。VSoCの一バージョンが共同譲渡された合衆国特許出願第12/184187号明細書「視覚センサ、システムおよび方法」(E.ジョン・マクギャリー他)に示され説明されているが、その教示は参照により有益な背景情報として組み込まれ、以下において当該箇所で説明される。さらに一般的に、本明細書に記載されたシステムおよび方法は、様々な市販の視覚取得および処理システム上で動作するように適合させることができる。例えば初期のバージョンの単一チップ画像センサが刊行物「デジタルプロセッサアレイを用いる単一チップ画像センサ」(ロベルト・フォルヒハイマー他、VLSI信号処理誌、5号121−131ページ(1993年)に記載されている。
【0021】
I.ビジョン・システム・オン・チップ(VSoC)の概要
図2は、本発明の実施態様によるシステムおよび方法のための単一チップ視覚システム200(VSoC)のブロック図を例示する。VSoC200は単一チップ上にピクセルアレイ208および1以上の回路230を含んでいる。本明細書中で用いられているように、チップという用語は周知の「ダイ」という用語と互換的に使用されてもよい。これは適当な回路要素と配線を配置した単一のユニット状シリコンウエハである。製造においてチップまたはダイは、より大きいチップまたはダイのウエハの一部であってもよく、これらのチップまたはダイは製造プロセスのある段階で個別のパッケージに分離されるが、その後はユニット状コンポーネントとして維持される。種々の実施態様において、ピクセルアレイ208は、撮像されている場面に対して光が感知されたら、ピクセル信号を1以上の回路230に提供するように構成されている。また、種々の実施態様において、1以上の回路230はピクセルアレイ208から提供されたピクセル信号を処理して画像を形成するように構成されており、および任意的に画像に対するパターンマッチングを実行するように構成されている。種々の実施態様において、ピクセルアレイ208と1以上の回路230は、半導体材料の基板上に単一の集積回路を形成する。また、種々の実施態様において、VSoC200は、データをVSoC200に入力し、およびVSoC200から出力するための1以上のI/Oピン(図示せず)を含んでいる。
【0022】
VSoC200は種々の用途、例えば機械視覚用途、消費者用途などで用いることができる。種々の実施態様において、VSoC200は(i)画像取得;(ii)画像前処理;(iii)パターンマッチングの1以上の必要がある用途で用いられてよい。種々の実施態様において、VSoC200は画像取得、前処理および/またはパターンマッチングを単一チップまたは集積回路上で実行できるようにする。より具体的に、例示的な実施態様の視覚センサは特定のシンボル特徴、例えばスキャンされるオブジェクト上に置かれた1Dバーコード特徴を検出および同定するために用いることができるが、これに限られない。例示した実装における1Dバーコードは慣用的なUPC−Aタイプコードを含んでいてもよいが、例示的な実施態様による他の多様な1Dコード配置構成がスキャンおよび検出されてもよい。
【0023】
さらに背景として、1Dまたは「線形」バーコードはある情報を単一の優勢な向きで提示することに留意されたい。すなわち、バーコード特徴は互いに対して平行であり、これらの特徴はすべて一次元で整列されている。すべてのバーコードは直交二次元によって(コントラスト差を解像するために第3の次元を使用するエッチングまたはピーニングされたバーコードで)定義される。図2のバーコードの場合、および本明細書中の他のケースにおいて、垂直次元はデータ内容を提示せず、むしろ水平方向におけるバーの幅と間隔の向きがデータ内容を担う。この水平次元が優勢な向きと見なされる。この説明の目的のために、「シンボル」という用語は、一般的に本明細書で想定されているタイプのバーコードとも呼ばれる。本発明を適用できる線形バーコードのより完全なリストは、インターネット上で下記のウェブサイトに掲載されている。
http://www.aimglobal.org/aimstore/linearsymbologies.asp
【0024】
さらにVSoC200に関して、図3は、本発明の実施態様による相互に接続されたシステム300のブロック図を例示する。システム300は、有線もしくは無線ネットワークまたは他のデータ接続320によって作動的に接続されたVSoC200および相互接続されたデバイス310を含んでいる。システム300においてVSoC200はデバイス310と通信しており、デバイス310とVSoCとの間で信号が伝送される。例示的な実施態様において、図示されたデバイス310はスキャニング手段の1以上のコンポーネント(例えばディスプレイ、別個のID復号回路、種々のインジケータおよび警報など)および/またはベースコンピュータ(PC)、またはスキャニング手段からIDデータを受け取る他のデータプロセッサを表すことができる。デバイス310とVSoCとの間の通信は、多様なデータおよび制御信号を含んでいてもよい。種々の実施態様において、VSoC200は画像を取得し、画像の処理を実行し、処理の結果に基づいてデータをデバイス310に提供するように構成されている。例えば、種々の実施態様において、VSoC200は1以上の特徴の1以上のモデルに基づいて画像中の1以上の特徴をサーチし、サーチの結果に基づいてデータをデバイス310に出力するように構成されている。画像を取得する画像取得と画像中に特徴をサーチするパターンマッチングの双方を単一チップまたは集積回路上で実行できるようにすることにより、VSoC200から伝送されるデータの量は、画像データがVSoC200からVSoC200の外部にある別個のプロセッサに伝送して別個のプロセッサでパターンマッチングを実行しなければならない場合と比較して減らすことができる。
【0025】
例えば、種々の実施態様において、例示のVSoC200は画像を捕捉し、1以上の特徴のモデルを用いて1以上の特徴について画像をサーチし、次いで画像中に1以上の特徴が検出された場合はデバイス320にトリガ信号を提供するために用いることができる。また、幾つかの実施態様において、VSoC200は画像を獲得し、1以上の特徴のモデルを用いて1以上の特徴についで画像をサーチし、次いで画像中に1以上の特徴が検出された場合は物理的場面における1以上の特徴の位置を示す位置データをデバイス310に提供するために用いることができる。結果として、そのような実施態様では、VSoC200から完全な画像データを別個の外部プロセッサに伝送して別個の外部プロセッサに特徴をサーチさせるのではなく、VSoC200は視覚センサチップ上でサーチを実行できる。そのような場合、VSoCはトリガ信号に含まれた最小限の情報、整列/位置データ、特徴データなどをデバイス300に伝送でき−これによりVSoC200からオフチップで伝送されるデータの量を減らすことができる。
【0026】
種々の実施態様において、VSoC200から伝送されるデータの量を減らすことにより、VSoC200が画像を取得できる速度(1秒当りフレーム)を増すことができる。なぜならVSoC200動作は伝送動作の完了によって制約されることが少なくなるからである。例えば幾つかの実施態様において、VSoC200が画像を1秒当り200フレームの速度で捕捉および処理するように構成されてもよく、それによりVSoC200は例えば自動ビデオ監視、車両制御、IDリーダー/スキャニング手段におけるトリガリングおよび特徴の検出/抽出(以下に説明する)、ジェスチャー認識、静止または移動視覚センサを用いた三次元(3D)モデリングによるオブジェクトの寸法決定、運動解析などの用途に有利に使用できよう。
【0027】
種々の実施態様において、VSoC200はセルフトリガするように構成されているため、種々の実施態様でVSoC200はその周囲を連続的に撮像して連続的な画像ストリームを取得できる。より具体的には、VSoC200は、他の視覚用途のためにソフトウェアトリガまたはハードウェアトリガとして使用されるトリガを提供するように構成できる。例えばIDリーダーのためのソフトウェアトリガにより、ID候補を包含する関心領域が処理されて、例えば相互接続されたデバイス上で関連する復号プロセスまたはアプリケーションによって復号するためのID特徴の検出および同定を試みる(以下に説明する)。
【0028】
VSoC200からオフチップで伝送されるデータの量を減らすと、信号をオフチップで駆動するために必要な電流も減少するため電力消費は低下する。同様に、これによりVSoC200と外部デバイスとの間のデータ交換が減るので電磁的干渉(EMI)が減少する。電力消費の低下は多くの用途、例えば無線手持ちIDスキャナと関連した用途を含む、バッテリ容量に制限された用途で有利である。
【0029】
幾つかの実施態様において、デバイス310は画像データを処理できるタイプの装置であり、VSoC200は画像データをデバイス310に伝送するように構成されている。以下に説明する例示的な実施態様では、デバイス310は手持ちスキャニング手段の種々のコンポーネントを含んでおり、その中にはID復号アプリケーションのインスタンス化を伴うデジタル信号プロセッサ(DSP)、ならびに復号されたIDを受け取って操作するベースデータ処理および記憶装置(例えば無線インタフェースとネットワーク化されたPC)が含まれる。VSoC200が画像データをデバイス310に伝送するように構成された幾つかの実施態様において、VSoC200は1以上の特徴のモデルを使用して1以上の特徴に対する画像をサーチして、画像中に1以上の特徴の少なくとも1個が検出された場合のみ画像の画像データをデバイス310に伝送するように構成されている。また、VSoC200が画像データをデバイス310に伝送するように構成された幾つかの実施態様において、VSoC200は1以上の特徴のモデルを使用して1以上の特徴に対する画像をサーチして、サーチから同定された特徴に基づいて決定された画像中の関心領域に対する画像のみデバイス310に伝送するように構成されている。VSoC200が画像データをデバイス310に伝送するように構成された種々の実施態様において、VSoC200は画像に対する完全な画像データをデバイス310に送るように制御可能であってもよい。幾つかの実施態様において、VSoC200が1以上の特徴が検出された画像に対するモデルの姿勢を示す姿勢情報をデバイス310に伝送するように構成されている。
【0030】
種々の実施態様において、デバイス310はプロセッサを含んでおり、VSoC200は、処理タスクをデバイス310のプロセッサとインタラクティブに交換し、および/またはどの具体的なタスクがVSoC200とデバイス310のプロセッサの各々によって実行されるべきかをユーザが特定して、例えば処理能力、メモリの使用などの最適化を可能にするように構成できる。また、種々の実施態様において、デバイス310はプロセッサを含んでよく、VSoC200は1以上の特徴を含んでいそうな候補画像または画像の部分を決定し、この候補画像または画像の部分をデバイス310に伝送してデバイス310によって処理させるように構成されてもよい。幾つかの実施態様において、VSoC200は1以上の他のコンポーネント(図示せず)、例えば自動焦点レンズ、適合装置などと接続して使用でき、種々の用途、例えばID読取り用途などの有用な時間周期内に、画像を取得して、任意的にそれらを処理しながら、例えば異なる視野の深度または異なる照明を提供することができる。同様に、上述したように、および以下に詳述するように、デバイスはID復号DSPを含んでいてもよい。
【0031】
本明細書で説明される例示的なVSoCおよび一般的に望ましいと考えられる他の実装は、いわゆるデータ「収束」として作用することができ、そこにおいてこれらの実装は捕捉された画像データのセットを縮小されたサイズのデータに変換してデバイス310に伝送するのを容易にする一方、この縮小されたデータセットにおいてさらにバックエンドおよび/またはオフチップ処理を実行するのに十分に有意な情報側面を保持する。例として、そのような収束動作は、(a)アレイからの画像データを処理して一般的にデバイスに伝送される画像のサイズおよび/または深度を縮小すること;(b)画像を処理してオリジナル画像と比較することによって縮小されたサイズの特徴を抽出して、縮小サイズの特徴セットをデバイスに伝送すること;および(c)多数の画像フレームを処理し、そこから減少した数の画像を全体として、または縮小されたデータセットとして伝送することを含むが、これらに限られない。さらに、本明細書でシステムおよび方法に従って使用することが想定されているVSoC実装は、一般的に画像または他の処理されたデータ(例えばエッジ、ROIなど)を前処理して、この前処理されたデータをデバイス(310)に伝送することを可能にする。この場合、前処理はデバイスよりもVSoCによってより効率的に達成される。それにより処理速度の上昇が可能になるが、それはVSoCにおいて未加工データがより高速に前処理されてより焦点を絞ったデータセットが生み出されるからであり、これはデバイスによってはもっとゆっくり処理されるであろう。種々の実装において、高度にパラレルな処理環境が存在し、画像からのピクセルデータが大きいグルーピング(例えば捕捉されたピクセルデータ行)として同時に処理され得ることは、その高速な前処理を容易にする。そのようなパラレル環境において、大きいグループ処理の恩恵を受ける操作、例えば近隣操作は、効率を大幅に増して実行される。
【0032】
例示のシステムおよび方法に関して、以下に説明されるように、実装の収束効果は、本発明による種々のVSoC実装は記憶されたデータを処理してより精緻化されたおよび/または小さいサイズのデータセットを生成し、それと同時にデータをピクセルアレイからバッファメモリに読み出すという事実によって強化される。一実施態様において、この処理は1行毎に実行されるが、同時に処理されるデータの他のグルーピングも想定されている。その理由は、1秒当りフレーム(FPS)の未加工画像データの捕捉速度よりもデータを高速で処理できるためである。
【0033】
図4は、VSoC200実施態様の内部アーキテクチャを例示する。VSoC200は上述したピクセルアレイ208および上述した1以上の回路230(図2)を含んでいる。種々の実施態様において、1以上の回路230は制御回路422、汎用メモリ402、処理回路424、画像アドレスプロセッサ410、1以上の画像メモリデバイス414、画像データセレクタ415、モデルデータシフタ416、1以上のコンパレータ・アキュムレータ420、およびプライオリティエンコーダ417を含んでいる。
【0034】
種々の実施態様において、ピクセルアレイ208は、撮像されている場面に対して感知された光に基づいて1以上のピクセル信号を提供するように構成されている。また、種々の実施態様において、処理回路424は、ピクセルアレイ208から提供された1以上のピクセル信号を処理して画像を生成するように構成されている。一般に、例示的な実施態様の処理回路はSIMDアーキテクチャとして実現され、そこにおいてピクセルアレイ208から伝送されたピクセルデータの完全な行は、処理されると同時に広いバス404に伝送される。バス404は1以上の画像メモリデバイスと通信しており、したがって画像ピクセルデータの完全な行を同時に(すなわち共通のクロックサイクルで)読み込みまたは読み出すことができる広いバスを特徴とする。幾つかの実施態様において、ピクセルアレイ208から提供された1以上のピクセル信号はアナログ信号であり、そのような信号はLAPによる処理に先立って適当なADC回路によってデジタル信号に変換される。種々の実施態様において、処理回路424は、1以上のピクセル信号から得られたデジタルピクセル値で1以上の前処理動作を実行して、前処理された画像データを提供するように構成されている。
【0035】
例として、種々の実施態様において処理回路424は、デジタルピクセル値のノイズを低減するためにノイズリダクションのための前処理を実行するように構成されている。画像ノイズはピクセル値の不規則変動であり、VSoC200などの電子ノイズによって引き起こされることがある。種々の実施態様において、処理回路424は、フィルタリングプロセスによって、例えば最初のピクセル値が近隣ピクセル値の強度のメジアン値に置き換えられるメジアンフィルタリングによってノイズリダクションを遂行するように構成されている。このノイズリダクションのフィルタリング機能については、さらに以下で説明する。幾つかの実施態様において、処理回路424は他のタイプのフィルタリング、例えば各々のピクセル値を近隣ピクセル値の値に近づけようとする円滑化操作を表すマスクでピクセル値のデータを回すことにより、ノイズが低減される低域フィルタリングを実行するように構成されている。メジアンフィルタリングおよび低域フィルタリングは単にフィルタリングのタイプの例として提示されるものであり、他の種々の実施態様においてVSoC200は別のタイプのフィルタリングを実行するように構成されてもよいことが認識されるべきである。
【0036】
種々の実施態様において、処理回路424はまた前処理を実行して、6ビットまたは8ビット(または他の値)のグレイスケールピクセル値を1ビット二値ピクセル値に変換するように構成されている。幾つかの実施態様において、処理回路424は、例えばグレイスケールピクセル値と閾値との比較に基づいて、グレイスケールピクセル値を絶対的な黒ピクセル値か、または白ピクセル値に変換する閾値化プロセスを実行するように構成されている。そのような閾値化プロセスにより、ピクセル値の二値化が可能になる。種々の実施態様において、処理回路424はまた、データで形態学的閉鎖操作(morphological closing operation)を実行するように構成されており、膨張が行われ、次に結果として生じるデータで構造化要素を用いて収縮が実行される。このような形態学的閉鎖操作は、例えばある画像の前景領域内にある背景色の穴を縮小するために使用できる。
【0037】
種々の実施態様において、1以上の画像メモリデバイス414は、画像の画像データを記憶するように構成されている。例えば、上述したように、種々の実施態様において、処理回路424はピクセルアレイ208から提供されたピクセルデータで処理を実行して、処理の結果を1以上の画像メモリデバイス414に捕捉された画像のピクセル強度データとして記憶する。種々の実施態様において、1以上の画像メモリデバイス414はそれぞれデータを記憶および提供するためにランダムアクセスメモリ(RAM)などを含んでいる。RAMのサイズとレイアウトは、メモリの行がピクセルアレイ208の行に対応するアドレスを含むように設けることができる。同様に処理回路(上記のLAPを集合的に定義)425における個々のSIMDプロセッサの数は、所定のピクセルアレイとメモリの行における要素の数と同じであることができる。種々の実施態様において、制御回路422は、ピクセルアレイ208を制御して光を捕捉し、ピクセル信号を提供するように構成されており、また、処理回路424を制御してピクセルアレイ208からのピクセル信号を処理し、画像の画像データを提供するように構成されている。幾つかの実施態様において、ピクセルアレイ208は可視スペクトル内にある光を捕捉し、捕捉された光に基づいてピクセル信号を提供するように構成されている。幾つかの実施態様において、ピクセルアレイ208は、可視スペクトル外にある光も(または択一的に)捕捉し、捕捉された光に基づいてピクセル信号を提供するように構成されている。幾つかの実施態様において、ピクセルアレイ208は、可視スペクトルと可視スペクトル外の双方から光を捕捉し、捕捉された光に基づいてピクセル信号を提供できるように構成されている。
【0038】
種々の実施態様において、制御回路422は外部デバイス、例えば上述した1以上の特徴のモデルに対するPCからモデル命令を受け取るように構成されており、およびモデル命令を汎用メモリ402に記憶するように構成されている。種々の実施態様において、汎用メモリ402はデータを記憶および提供するためにRAMなどを含んでいる。種々の実施態様において、汎用メモリ402は制御回路422によって実行され得るプログラムを記憶している。幾つかの実施態様において、汎用メモリ402はVSoC200の外部にある外部メモリ(図示せず)で補完されてもよく、そのような実施態様でVSoC200は外部メモリと汎用メモリ402との間でデータを伝送できるように構成できる。種々の実施態様において、図4の諸要素は種々異なるアプリケーションのために所望されるならば補完または省略でき−そのようなバリエーションの幾つかを以下に例示のシステムおよび方法に関して説明する。
【0039】
種々の実施態様において、1以上の回路230は、1以上の特徴のモデルを使用して1以上の特徴について画像をサーチするように構成されている。幾つかの実施態様において、サーチされるべき画像は1以上の画像メモリデバイス414に記憶され、画像をサーチするために使用される1以上の特徴のモデルのモデル命令は汎用メモリ402に記憶される。また種々の実施態様において、制御回路422は、汎用メモリ402からのモデル命令を実行し、モデル命令に基づいて処理回路424、画像アドレスプロセッサ410、モデルデータシフタ416および複数のコンパレータ・アキュムレータ400を制御するように構成されている。画像マッチングとオブジェクト/特徴姿勢(整列)決定を行うように適合された幾つかの実施態様において、各々のモデル命令はモデル基準点に対して位置を特定する対応する座標を含んでいる。また幾つかの実施態様において、制御回路422は、プログラムされた画像モデルのモデル命令からの座標を画像アドレスプロセッサ410に提供するように構成されており、画像アドレスプロセッサ410は、少なくとも一部は1以上の変換値に基づいて座標を変換済み座標に変換するように構成されている。種々の実施態様において、画像アドレスプロセッサ410は幾何学的変換に従ってモデルの座標を変換することを可能にする。
【0040】
幾何学的変換に従ってモデルの座標を変換する能力を持つことにより、画像中の特徴を種々の角度で回転させ、種々のサイズに拡縮し、または別の画像の種々の位置に転移して画像中に特徴をサーチするときに利点が提供される。ある特徴のモデルを幾何学的に変換する能力を有する幾つかの例において、モデルは画像中の特徴の回転、縮尺または位置にかかわりなく、画像中の特徴を検出するために使用されてもよい。種々の実施態様において、画像アドレスプロセッサ410は、1以上のアフィン変換値に従い1以上のモデルの座標を変換するように構成されている。
【0041】
種々の実施態様において、画像アドレスプロセッサ410は、変換済み座標の第1の座標を1以上の画像メモリデバイス414に提供し、1以上の画像メモリデバイス414にアクセスして、この1以上の画像メモリデバイス414に変換済み座標の第1の座標によって指示されたデータを画像データセレクタ415に提供させるように構成されている。種々の実施態様において、画像アドレスプロセッサ410はまた、変換済み座標の第2の座標を画像データセレクタ415に提供して、この画像データセレクタ415に1以上の画像メモリデバイス414から受け取ったデータを、変換済み座標の第2の座標に基づく量だけシフトさせるように構成されている。
【0042】
種々の実施態様において、制御回路422は、モデルから累積増分と1以上の値をモデルデータシフタ416に提供するように構成されており、モデルデータシフタ416は、1以上の値と累積増分を1以上のコンパレータ・アキュムレータ420に提供するように構成されている。実施態様では1以上のコンパレータ・アキュムレータ420は、サーチされるべき画像のデータに基づいて得られた1以上の値を、モデルからの1以上の値と比較するように構成されている。また、種々の実施態様において、1以上のコンパレータ・アキュムレータ420は、比較の結果に基づいて選択的に累積を実行して、累積増分を積み増すように構成されている。
【0043】
種々の実施態様において、処理回路424はまた1以上のコンパレータ・アキュムレータ400から累積された値を受け取って、画像とモデルデータとの比較に対する局所的な最大応答を示す二値タグワードを形成するように構成されている。さらに、プライオリティエンコーダ417は、処理回路424から二値タグワードを受け取り、二値タグワードに基づいて制御回路422に出力を提供するように構成できる。種々の実施態様において、制御回路422はさらにVSoC200からの出力を提供するように構成されている。
【0044】
図5は、VSoC200の実施態様のより詳細な表現を例示する。種々の実施態様において、VSoC200は上述したピクセルアレイ208と併せて、ピクセルコントローラ505、複数のアナログコンパレータ507、アナログランプ発生器504、複数のアナログ・デジタル変換器(ADC)ラッチ509、およびデジタルランプ発生器503を含んでいる。種々の実施態様において、ピクセルアレイ208は行と列に配置された複数のピクセル回路506を含んでいる。また種々の実施態様において、各ピクセル回路506は、撮像されている場面の対応する部分の光強度をサンプリングするために、感光要素または光検出器、例えばフォトダイオードなどを含んでおり、各ピクセル回路506は、サンプリングされた光強度に基づいてアナログピクセル信号を提供するように構成されている。
【0045】
種々の実施態様において、ピクセルコントローラ505は、ピクセルアレイ208内のピクセル回路506に制御信号を供給してピクセル回路506の動作を制御する。幾つかの実施態様において、ピクセルアレイ208の同じ行にあるピクセル回路506はピクセルコントローラ505からの共通の行制御信号を共有し、ピクセルアレイ208の同じ列にあるピクセル回路506は共通の列読出しラインを共有して出力を提供する。種々の実施態様において、ピクセルコントローラ505は、ピクセル回路506を制御して1行ずつデータの出力を提供する。また種々の実施態様において、ピクセルアレイ208内のピクセル回路506の各列からのアナログピクセル信号出力は、対応するアナログコンパレータ507に入力される。
【0046】
種々の実施態様において、ピクセルアレイ208からのアナログピクセル信号出力のアナログ・デジタル変換は複数のアナログコンパレータ207、アナログランプ発生器204、複数のADCラッチ209、およびデジタルランプ発生器503を用いて実行される。幾つかの実施態様において、ピクセルアレイ508の各列におけるアナログピクセル信号出力は対応するアナログコンパレータ507で、アナログランプ発生器504によって生成された共通のアナログ基準レベルと比較される。また、幾つかの実施態様において、デジタルランプ発生器503は、アナログランプ発生器504によって生成されたアナログ基準レベルを代表するデジタル信号を生成するように構成されている。種々の実施態様において、アナログ基準レベルの何らかの与えられた列がアナログピクセル信号のレベルに等しい場合、対応するアナログコンパレータ507はデジタル出力を生成して対応するADCラッチ509にデジタルランプ発生器503によって供給されたデジタル信号の値をラッチさせる。
【0047】
種々の実施態様において、VSoC200はさらに、制御プロセッサ501、上述した汎用姿勢メモリ402、複数の画像入力レジスタ510、複数の入力/出力(I/O)レジスタ511、複数のシフトレジスタ512、複数の算術論理ユニット(ALU)513、複数の画像メモリデバイス414(上述)、および種々の回路コンポーネントを適当なサイズのバスを介して相互に接続する複数のデータパス518を含んでいる。種々の実施態様において、制御プロセッサ501は汎用メモリ502に接続されて、そこからVSoC200の制御要素を実行するためのプログラムおよびモデルを得る。種々の実施態様において、各ADCラッチ509に対応する画像入力レジスタ510に接続され、各画像入力レジスタ510は出力データラインによりデータパス518の対応する分岐に接続されている。
【0048】
種々の実施態様において、各データパス518は、データをビットシリアル形式で搬送するシリアルデータパスを含んでいる。他の種々の実施態様において、各データパス518は、データを搬送するための複数のデータラインを含んでいてもよい。幾つかの実施態様において、複数のデータパス518はバスの一部である。また、幾つかの実施態様では、ピクセルアレイ208内のピクセル回路506の各列に対して1以上のデータパス518が存在する。種々の実施態様において、各データパス518は対応する画像入力レジスタ510、対応するI/Oレジスタ511、対応するシフトレジスタ512、対応するALU513、および対応する画像メモリデバイス414に接続されている。また、種々の実施態様において、複数のI/Oレジスタ511は、それぞれ制御プロセッサ501に接続されて、制御プロセッサ501からデータを入力したり、制御プロセッサ501にデータを出力したりする。幾つかの実施態様において、複数のシフトレジスタ512は、左右すぐ近隣にシフトレジスタがあればそれぞれ接続されている。また、幾つかの実施態様において、各ALU513は一組の対応するレジスタを通して対応するデータパス518に接続されており、これらのレジスタは2以上のデータ入力レジスタ(aおよびb)と1個のキャリーレジスタ(c)を含んでいる。
【0049】
種々の実施態様において、各画像入力レジスタ510はデジタル化された画像データを相応のデータパス518により、対応するI/Oレジスタ511、対応するシフトレジスタ512、対応するALU513、および対応する画像メモリデバイス414に利用できるようにする。種々の処理操作において、画像データは複数の画像メモリデバイス414にバッファリングされ、LAP425の一部を共同で含んでいる複数のALU513を用いて処理される。種々の実施態様において、処理された画像データまたは他のデータは、二次データ処理および/またはVSoC200の外部にあるデバイスとのデータの外部通信のために、複数のI/Oレジスタ511を通して制御プロセッサ501によってアクセスされてもよい。
【0050】
図4および図5を参照すると、種々の実施態様において、制御回路422は制御プロセッサ501およびピクセルコントローラ505を含んでいる。また、種々の実施態様において、処理回路424は複数のアナログコンパレータ507、アナログランプ発生器504、複数のADCラッチ509、デジタルランプ発生器503、複数の画像入力レジスタ510、複数のI/Oレジスタ511、複数のシフトレジスタ512、および複数のALU513を含んでいる。種々の実施態様において、1以上の画像メモリデバイス414(図4)は、図5に例示されているような複数の画像メモリデバイス414を含んでいる。
【0051】
さらに図5を参照すると、種々の実施態様においてVSoC200はさらに、画像アドレスプロセッサ410、画像データセレクタ415、モデルデータシフタ416、複数のコンパレータ・アキュムレータ420、およびプライオリティエンコーダ417を含んでいる。種々の実施態様において、各々のデータパス518は画像データセレクタ415に接続されている。また、種々の実施態様において、制御プロセッサ501は画像アドレスプロセッサ410に接続され、次に画像アドレスプロセッサ410は複数の画像メモリデバイス414のアドレス入力および画像データセレクタ415の制御入力に接続されている。
【0052】
幾つかの実施態様において、制御プロセッサ501はモデルデータシフタ416の入力に接続され、モデルデータシフタ416の出力は複数のコンパレータ・アキュムレータ420の各々の入力に接続されている。各コンパレータ・アキュムレータ420はまた画像データセレクタ415からの入力を受け取るために接続されている。種々の実施態様において、画像データセレクタ415は双方向バレルシフタなどを含んでいる。また、種々の実施態様において、各々の複数のコンパレータ・アキュムレータ420は、対応するデータパス518に作動的に接続されている。幾つかの実施態様において、プライオリティエンコーダ417は各々のデータパス518に接続され、および制御プロセッサ501に接続されている。図5に例示されたVSoC200のアーキテクチャの接続性および/または編成は例として提示されているものであり、他の種々の実施態様においてVSoC200は別の適当な配置構成を有してよいことが認識されるべきである。
【0053】
図6は、VSoC200に使用するための画像アドレスプロセッサ410の実施態様のブロック図を例示する。種々の実施態様において、画像アドレスプロセッサ410は、モデルの座標を少なくとも一部は1以上の変換値に基づいて変換済み座標に変換するように構成されている。種々の実施態様において、画像アドレスプロセッサ410は変換値を記憶するために変換係数レジスタ602、603、604および605、画像行オフセットレジスタ601、および画像列オフセットレジスタ606を含んでいる。種々の実施態様において、画像アドレスプロセッサ410はさらに、符号付き乗算器607、608、609および610、ならびに加算器611、612、613および614を含んでいる。
【0054】
アドレスプロセッサの動作の例で、画像アドレスプロセッサ410への入力としてモデルの第1の座標(図6にXで示す)とモデルの第2の座標(図6にYで示す)が提供される。図5および図6を参照すると、種々の実施態様において制御プロセッサ501は、モデル汎用メモリ402からのモデル命令をフェッチして、画像アドレスプロセッサ410に対するモデル命令に含まれた座標を提供するように構成されている。例えば制御プロセッサ501は汎用メモリ402からのモデルのモデル命令、例えばモデル例として提示されているモデルの第1のモデル命令をフェッチして、モデル命令に含まれている座標、例えば例における座標(−7、−2)を画像アドレスプロセッサ410に提供するように構成できる。この例では、第1の座標に対する−7の値は画像アドレスプロセッサ410へのX入力として提供され、第2の座標に対する−2の値は、画像アドレスプロセッサ410へのY入力として提供されよう。
【0055】
図6に示すように、種々の実施態様において変換係数レジスタ602、603、604および605はそれぞれアフィン変換係数K00、K01、K11およびK10を記憶するために書込み可能であり、K00、K01、K11およびK10の値は所望の変換を実行できるように設定可能である。種々の実施態様において、画像行オフセットレジスタ601は行オフセット値DRを記憶するために書込み可能であり、画像列オフセットレジスタ606は列オフセット値DCを記憶するために書込み可能であり、DRおよびDCの値は設定可能である。種々の実施態様において、制御プロセッサ501(図5)は、画像アドレスプロセッサ410内の値K00、K01、K11、K10、DRおよびDCをモデルの所望の幾何学的変換に基づいて設定するように構成されている。
【0056】
種々の実施態様において、符号付き乗算器607は変換係数レジスタ602からの入力と、変換されるべき第1の座標である入力を受け取り、出力を加算器611に提供する。また、種々の実施態様において、符号付き乗算器608は変換係数レジスタ603からの入力と、変換されるべき第2の座標である入力を受け取り、出力を加算器611に提供する。種々の実施態様において、符号付き乗算器609は変換係数レジスタ604からの入力と、変換されるべき第2の座標である入力を受け取り、出力を加算器612に提供する。また、種々の実施態様において、符号付き乗算器610は変換係数レジスタ605からの入力と、変換されるべき第1の座標である入力を受け取り、出力を加算器612に提供する。
【0057】
種々の実施態様において、加算器611は符号付き乗算器607と符号付き乗算器608から入力を受け取り、出力を加算器613に提供する。また、種々の実施態様において、加算器612は符号付き乗算器609と符号付き乗算器610から入力を受け取り、出力を加算器614に提供する。種々の実施態様において、加算器613は画像行オフセットレジスタ601と加算器611から入力を受け取り、出力を第1の変換済み座標(図6にRで示す)に提供する。また、種々の実施態様において、加算器614は画像列オフセットレジスタ606と加算器612から入力を受け取り、出力を第2の変換済み座標(図6にCで示す)に提供する。こうして図6の実施態様において、画像アドレスプロセッサ600は複数の変換値K00、K01、K11、K10、DRおよびDCに基づいて座標(X、Y)を変換済み座標(R、C)に変換することを可能にする。
【0058】
図7に示すテキストボックス710には、図6の画像アドレスプロセッサ410の実施態様に対する(X、Y)入力と(R、C)出力との関係を規定した方程式が記載されている。図7に例示されているように、Rに対する方程式はR=X*K00+Y*K01+DRとして提供され、Cに対する方程式はC=X*K10+Y*K11+DCとして提供される。こうして図6の画像アドレスプロセッサ410の実施態様は所望の幾何学的変換のための変換値を設定することによって、幾何学的変換、例えば回転、拡縮または転移に従いモデルの座標を変換することを可能にする。画像アドレスプロセッサ410を用いて幾何学的変換を可能にすることによって、1以上の特徴のモデルを、画像中の1以上の特徴の種々の回転、縮尺および転移に対するパターンマッチングに使用できる。
【0059】
図6の画像アドレスプロセッサ410の実施態様において、画像アドレスプロセッサ410は6個の変換値K00、K01、K11、K10、DRおよびDCに基づいて座標を変換することを可能にする。こうして図6の画像アドレスプロセッサ410の実施態様は、変換に対して6自由度を可能にする。もちろん、画像アドレスプロセッサ410の他の種々の実施態様において変換に対して6自由度以上許容するために6以上の変換値を使用できることが理解されるべきである。例えば種々の実施態様において、画像アドレスプロセッサ410に別の3個の変換値が提供され、画像アドレスプロセッサ410は、さらに透視歪みに対する変換を許容するように構成される。他の種々の実施態様では、画像アドレスプロセッサ410の実施態様において6個より少ない変換値が用いられてよいことも理解されるべきである。例えば画像アドレスプロセッサ410の種々の実施態様は、転移を可能にするために2個の変換値のみ許容してよい。また、図6に例示された画像アドレスプロセッサ410の実施態様は例示的な画像アドレスプロセッサの実装の例として提示されており、他の種々の実施態様では座標の変換に使用する画像アドレスプロセッサとして代替的な配置構成を使用できることが認識されるべきである。
【0060】
図8は、VSoC(図4)で使用するためのコンパレータ・アキュムレータ420の実施態様のブロック図を例示する。種々の実施態様において、コンパレータ・アキュムレータ420は画像データシフタ801、画像データデコーダ802、複数のANDゲート803、ORゲート804、マッチシフタ805、マッチエンコーダ806およびマッチアキュムレータ807を含んでいる。種々の実施態様において、画像データシフタ801は、画像データ入力ライン808からデータを受け取り、画像データシフタ801がシフトするようにクロックされる度に画像データシフタ801内でデータを1位置だけシフトするように構成されている。また、種々の実施態様において、画像データシフタ801は、画像データデコーダ802に出力を提供するように構成されている。
【0061】
種々の実施態様において、画像データデコーダ802は画像データシフタ801から提供された値を復号し、復号された値の各ビットを複数のANDゲート803の対応するANDゲートの相応の第1の入力に提供するように構成されている。また、種々の実施態様において、モデルの1以上のモデル値の各ビットは、1以上のモデルデータ入力ライン809を介して複数のANDゲート803の対応するANDゲートの相応の第2の入力に提供されるように構成されている。
【0062】
種々の実施態様において、画像からのビットは画像データシフタ801内にシフトされ、次に画像データデコーダ802により、画像データシフタ801内の二値数の十進値に対応するビット位置に「1」を有し、他のすべての位置に「0」を有するビットストリングに二進展開することによって復号してもよく、復号されたビットストリング内の低いオーダーのビットは0のビット位置に対応する。次に、種々の実施態様において、画像データデコーダ802からの復号されたビットストリングは、複数のANDゲート803を用いて、1以上のモデルデータ入力ライン809を介して提供される、モデル内の値から再構成されたビットストリングと比較してもよい。種々の実施態様において、ORゲート804は複数のANDゲート803の各々の出力を受け取り、複数のANDゲート803のいずれかの出力が「1」の場合は「1」の出力ビットを提供する。幾つかの実施態様において、ORゲート804は複数のORゲートによって置き換えられて、複数のANDゲート803のいずれかが「1」の値を有するビットを出力したか決定するように構成できる。種々の実施態様において、ORゲート804の出力は、モデルの特定の幾何学的変換および幾何学的に変換されたモデルの画像に対する特定の位置について、画像の画像データとモデルのモデルデータとの間にマッチが検出されたか否かを示す。種々の実施態様において、複数のANDゲート803およびORゲート804はコンパレータと見なされてもよい。もちろん、複数のANDゲート803およびORゲート804は比較を実行するための配置構成の例として提示されており、他の種々の実施態様において別のタイプのコンパレータを使用できることが認識されるべきである。
【0063】
種々の実施態様において、ORゲート804の出力はマッチシフタ805に提供され、そしてこのマッチシフタ805は、ORゲート804から提供されたビットを入力し、マッチシフタ805がクロックされる度にマッチシフタ805内の他のビットを1位置だけシフトするように構成されている。種々の実施態様において、マッチシフタ805内のデータはマッチエンコーダ806に出力され、そしてこのマッチエンコーダ806は、マッチシフタ805内に記憶されたビットで表される値を符号化し、マッチアキュムレータ807のクロックに出力を提供するように構成されている。種々の実施態様において、マッチアキュムレータ807は、1以上のモデルデータ入力ライン809からモデルの累積増分を受け取り、そしてマッチエンコーダ806の出力の値に基づいてクロックされると累積増分を積み増すように構成されている。また、種々の実施態様において、マッチアキュムレータ807は、マッチアキュムレータ807内で累積された値を対応するデータパス518に出力するように構成されている。
【0064】
種々の実施態様において、制御回路422(図4)は、信号を各々のコンパレータ・アキュムレータ420に送り、制御回路422がリセットコマンドを含んだモデル命令を実行すると各々のコンパレータ・アキュムレータ420内のマッチアキュムレータ807がデフォルト値にリセットされるように構成されている。また、種々の実施態様において、制御回路422は信号を送り、制御回路422が比較コマンドを含んだモデル命令を実行すると各々のコンパレータ・アキュムレータ420内のマッチアキュムレータ807によって累積が行われるように構成されている。そのような実施態様において、各々のコンパレータ・アキュムレータ420内のマッチアキュムレータ807は対応するマッチエンコーダ806の出力によってクロックれてもよく、累積が許されたときにマッチアキュムレータ807は対応するマッチエンコーダ806から出力された値に応じて累積を実行するか、または実行しない。
【0065】
II.VSoCシステムの実装
ID特徴を検出、同定および抽出するためのシステムおよび方法の例示的な実施態様において、全体的なスキャニング手段アーキテクチャ900において実装される視覚センサ(VSoC)200は、図9に従って提供される。上述した例示のVSoC200に関して図示および説明された種々の要素は、本システムおよび方法における諸機能との相互参照を容易にするために再編されている。例えば、図9に示す読出し回路918の諸要素は一部は上述した制御回路422内にあり、一部は処理回路424(図4および図5)内にある。同様にLAP425は全体的な処理回路424の一部として示されている。読者が例示のシステムおよび方法が動作できるための例示の(または代替的な)VSoCアーキテクチャの環境をさらに理解するのを助けるために、追加の機能および相互接続(例えばID復号DSP980および種々の通信ポート)が図9にも示されている。
【0066】
図示されたピクセルアレイ208は、例示の1Dバーコード916を含んだROI914を撮像している状態で示されている。バーコード916に対するピクセルアレイ208の向きは、角度および回転が高度に可変である。同様にピクセルアレイは、この実施態様により想定されている画像捕捉および処理フレームレートでバーコードに対して運動することが期待でき、そのような運動が存在すると復号に必要とされる情報を一層の信頼性をもって捕捉できる。例示のピクセルアレイは1028列×786行として構成できる。そのようなアレイは境界効果を回避するために、上下および左右に2個のダミー行および列を含んでいてもよく、こうして例示的な1024行×782列のアクティブな8ビット(または代替として6ビット)のピクセルアレイを提供する。ADC回路を含む相互接続された読出し回路918と上述した関連機能は、アナログセンサの出力をデジタルピクセルデータに変換し、これは例示的な実施態様により関連するバス920を介して1024行として線形アレイプロセッサ(LAP)425に読み出される。
【0067】
ピクセルアレイ208内の画像捕捉プロセスは、センサコントローラ922によって処理される。例示した実装では、これはアレイ内のピクセルの各行に対する操作および読出し回路のイベントのシーケンスを制御するために要求される波形を生成するプログラム可能な有限状態機械(FSM)からなる。センサコントローラ922の動作はユーザにより別個の16ビットプロセッサ501(上に図5で説明した制御プロセッサ501)内の構成レジスタ942を介してプログラムできる。これはVSoC200の一部であり、さらに以下で説明する。これらのレジスタ942は、ピクセルアレイ208および読出し回路918のすべてのプログラム可能なパラメータを構成し、ROI、シャッターモード、露出時間およびADC解像度のパラメータを含む。画像フレームが取得されると、それは1024行にわたり1行ずつ読み出されてデジタル形式に変換される。この読出しおよびA/D変換プロセスと並行して、LAP425はこのシステムと方法のROI検出および特徴抽出アプリケーションのプログラムコードに従って画像を処理する(以下に説明する)。
【0068】
LAP425は1024の同一処理要素の一次元アレイからなるパラレルプロセッサであり、各々の要素は上で一般的に説明したように1ビットデータパス、16アキュムレータビット、キャリーおよびイネーブルフラグからなる。LAP425はSIMD機械として実現されているので、すべてのプロセッサは同時に動作し、同じ動作を異なるデータで実行する。
【0069】
各LAP要素はデータメモリの1列(4096ビット)から1ビットを読み取り、書き込むことができる。行アドレスはLAPメモリ読取りまたは書込みサイクルの間、すべての要素に対して同じである。データメモリとLAPとの間には、読出しデータを左か右に最大13位置シフトするように構成できるバレルシフタがある。これにより各LAP要素は(クロックサイクル毎に)それ自身の位置の左右13列からのデータにアクセスできる。データメモリ(すなわち上に図4で説明した1以上の画像メモリデバイス414)は、1024×1024ビットの4ブロックからなる広い1024バス952を介して相互に接続されている。このメモリは画像処理の中間結果を記憶するために使用される。メモリはLAPからの全体的な処理画像の部分のみ記憶するように適合されることに留意すべきである。それはまた以下に説明するように、処理の中間結果、例えばROI情報および抽出された特徴を記憶する。こうしてピクセルアレイからのデータはメモリ414内を絶えず動かされ、成功したID検出動作に関係がなければ廃棄されるか、または情報が有望なID特性を示す場合は次のステップおよびプロセッサ、例えば復号に進む。典型的なアプリケーションにおいて、取得される画像は1行ずつLAPに伝送される。LAP425においてデータは処理されて等価二値画像を生成する。この結果として生じる二値画像は、その後の処理のために漸次データメモリに記憶される。幾つかの視覚システム実施態様において、二値画像スキャンはVSoCの相関器954によって処理されて、正規化相関およびパターンマッチング情報を得ることができる。該当する場合は、正規化相関を加速し、画像中でパターンマッチングを実行するために使用できる。プライオリティエンコーダは画像行内の推移を検出するために最適化される。上述したプライオリティエンコーダ956(幅1024ビット)は、バス952を介してメモリ414と相互作用してデータメモリ行内のセットビットの高速検出を提供する。
【0070】
多数の画像処理動作はLAP425上で実行され、画像行内のポイントの接続性または分布が検出されなければならない。例示的な実施態様においてこれらの動作を加速するために、VSoC200はアレイを横断する「伝搬/生成」機能を実現するカスタム論理ブロックを包含する。伝搬/生成ユニット958(バス952上)の可能な2通りのアプリケーションは、オブジェクトの位置特定と「未知のポイント」の解像である。ブロックは1024個の同一セルからなる。各セルは近隣セルと通信する1対の「搬入」および「搬出」信号を有する(それぞれ右方向と左方向に対応)。アレイの左側と右側の入力はゼロに設定されている。LAP425ワードを伝搬/生成ユニットに書き込んだ後、伝搬/生成ユニット内の値が有効になるまで例示的に5サイクル必要とする。
【0071】
制御プロセッサ501は、VSoC200にLAP425とは別個のコンパクトな高速処理ユニットを提供する。例示的な実施態様におけるプロセッサ501は16ビットユニットであるが、他のサイズも想定されている。それは効率的な低レベル画像処理と、LAP425および相関器954に対する制御を提供する。プロセッサ501は汎用命令セットを用いて動作し、また二値画像上で動作するための追加的な専用命令もサポートする。なぜならば、そのような二値画像はVSoCの動作の典型的なモードだからである。プロセッサ501は何らかの主要な端末フラグを含む多数のソースからトリガされたインターラプトをサポートする。図示されているように、プロセッサ501はLAP425およびデータメモリ414とそれぞれ16ビットバス960、962を介して相互に接続されている。
【0072】
例示的な実施態様において制御プロセッサ501(本明細書では「CPU」とも呼ぶ)は、縮小命令セットコンピュータ(RISC)を伴うハーバード・アーキテクチャを用いて実現されており、プログラムとデータに対して別個のメモリを提供するが、プログラムメモリはデータ記憶の目的にも使用できる。これは16個の汎用レジスタ、R0〜R14およびSP(942)を定義する。例示した実装においてこれらのレジスタはそれぞれ16ビットである。また、例示の17ビットのプログラムカウンタ/シーケンサ944も存在するが、これはプロセッサが直接65536個の16ビットワードをプログラムRAM(すなわち上記汎用メモリ402)内でアドレス指定し、同じ量をプログラムROM948内でアドレス指定することを可能にする(しかしこの実施態様ではROMは現在48Kのアクティブなワードしか持っていない)。計算はすべてレジスタ間で行われる。こうしてメモリからの値は操作される前にレジスタ(942)にロードされる。
【0073】
データメモリ414は、レジスタをポインタとして用いて、バス962を介して16ビットワードとしてアクセスされる。レジスタは任意的にメモリアクセス後に事前減分または事後減分または事前/事後増分してもよい。例示した実装ではポインタ・プラス一定オフセットアドレス指定モードも提供される。256Kワード(512Kバイト)のフルデータメモリにアクセスすることを許容するために、例示した実装ではページレジスタが用いられる。二値画像は1ワード16ピクセルでデータメモリにパックされる。効率的なアクセスを可能にするために、2個のポインタレジスタPXおよびPYが用いられる。これらは単一ピクセルをアドレス指定するために用いられ、いずれか一方または両者は独立にアクセス後に事後増分され、事後減分され、または変容されない。PXレジスタは10ビット、およびPYレジスタは12ビットで画像マッピング(1024列×4096行)を反映する。
【0074】
128ワードI/Oスペースも例示的に提供され(図示せず)、絶対的アドレス指定を用いて直接アクセスされる。これは多くのシステムと端末レジスタを含んでおり、残りはスクラッチメモリによって占められる。追加のレジスタ動作のために補助レジスタセット947も設けられている。LAP425のアキュムレータバンク(16ビットの1024ワード)はPXレジスタをポインタとして用いてアクセスできる。ALU操作はワーキングレジスタ942、947の間でALU949と、いずれか2個の汎用レジスタをオペランドとして用いることができる16×16乗算器アキュムレータを使用して行われる。そのような演算の32ビット結果は32ビットMRレジスタ(図示せず)に記憶または累積される。例示的に設けられているシフタは、MRレジスタを0〜31位置だけシフトダウンし、その結果を特定の汎用レジスタに入れてもよい。乗算器およびシフタは符号付き演算または符号なし演算用に構成できる。
【0075】
プログラムメモリ402は16ビットの65536ワードを記憶する(上に図4で説明した汎用メモリの一部)。このRAMメモリ402は物理的に32ビットの32Kワードとして編成できる。ROM948は32ビットの24Kワードとして編成できる。ページレジスタはROMまたはSRAMがアクセスされるかどうかを決定し、プログラムフェッチ、プログラムメモリ読取りおよびプログラムメモリ書込み用に別個のページを有する。起動時には、プロセッサ501は最初にROMから実行する。ROMは、プロセッサの起動構成ピンを読み取って所望される二次起動モードを決定する起動ソフトウェアを有する。これらのモードは、ホストパラレルポート(FIFO)962からの起動、SPIスレーブポート(964)を介するホストプロセッサからの起動、およびSPIマスタポート(964)を介するシリアルフラッシュ970からの起動を含んでおり、これらすべては16ビット通信バス966を介してプロセッサと相互接続されている。RAMに/又はRAMからレジスタ値およびデータを双方向に伝送できるようにする全二重シリアル通信を実現するためにSPI経路が設けられていることに留意されたい。標準SPIマスタポートはシリアルフラッシュメモリまたは他の端末装置にアクセスすることが意図されている。ソフトウェアに制御されて2台の互換デバイスを接続できるように2本のセレクトピンが設けられている。スレーブSPIポートはホストマイクロコントローラとの代替インタフェースとして使用できる。利用可能な起動モードの一つが選択されたら、ソフトウェアが適当なデバイスからコードをロードしてプログラムRAM402に記憶する。すべてのソフトウェアがロードされたら、制御はプログラムRAM402のスタートに移動される。
【0076】
例示のVSoCのLAP425と関連して、パラレル処理タスクとシリアル処理タスクの効率的なバランスを提供するために、多様なプロセッサ実装を採用できることは明確にすべきである。例示的な一実施態様において、CPU/プロセッサ501とLAP425は同時に動作せず、むしろ両者のうち一方が与えられた命令を実行している間、他方は動作しないことが要求される。図示されたCPU/プロセッサ501は、例示的な実施態様による可能な実装の一つに過ぎない。LAP、データメモリおよび他の関連コンポーネントとの適当な相互接続を有する代替的な実施態様において、異なる(非ハーバードおよび/または非RISC)アーキテクチャに基づくプロセッサを実現できる。
【0077】
SPIポート配置構成964に加えて、パラレル(FIFO)ポート962が設けられている。このポートはオフチップ・ホストプロセッサ、マイクロコントローラ、または他のデバイス、例えば例示的な実施態様で例示されたID復号DSP980と通信することが意図されている。DSP980はデータメモリ414からLAP425を介して処理された特徴データを反復的に受け取り、そのようなデータを連続的に復号し、復号されたIDを供給することに努める。このプロセスについて以下に詳述する。代替として、同じピンを図示されたビデオポートとして使用して、ビデオポートを装備された他のプロセッサに画像を出力することができる。一実施態様において、512ワード幅のホストポートは1024ピクセル行を約25.5マイクロ秒または約51画像/秒で伝送できる。バス966沿いに別個の専用ビデオポート972も設けることができることに留意されたい。
【0078】
ツイストペア線を通してデータを連続的に高速で伝送するために、低電圧差動信号(LVDS)ポート974が設けられている。これは多様な商業的供給源から出ているデシリアライザICと互換性のある1個のスタートビット、10個のデータビットおよび1個のストップビットからなるフレームフォーマットを用いる。種々の実施態様において、LVDSポート974は復号DSP980との通信のためのホストポート962に対する代替として用いることができる。さらに、標準UART976の形式のシリアルポートが設けられ、また例示的に最大16GPIOラインを有する汎用入力/出力(GPIO)ポート978が設けられており、これらはバス966沿いの他のI/Oポートのピンで多重化されている。IEEE標準ジョイントテストアクショングループ(JTAG)ポート982は、プロセッサ501内のほとんどすべての内部デバイスおよび内部構成レジスタと直接接続を可能にするデバッグポートとして使用できる。この経路によってメインメモリおよび内部デバイスにアクセスすることも可能である。VSoC200内には電源管理機能(984)、システムクロック発生器986、リセット機能(988および990)およびバステーブルROM992も例示的に設けられている。さらに、バス966はプロセッサ501に応答して統計ユニット993と相互接続する。このユニット993は例示的にエッジ追跡動作の間、統計を計算する。統計は一組のI/Oマップドレジスタに記憶される。エッジ追跡が完了したら、統計は追跡されているオブジェクトの外周と直交および対角境界ボックスを決定するために使用できる。
【0079】
上述したVSoCの実装は、多様な例示的な実施態様によるシステムおよび方法で使用するための多種の可能なプロセッサ実装の例であることは明確にすべきである。代替的な実施態様において、プロセッサは異なるパラレルアーキテクチャを中心に編成でき、別個の制御プロセッサの有無を問わない。同様に、本発明のシステムおよび方法を実行するために、高度にパラレルではなく、適当な速度およびデータ処理能力を備えた単一または複数のプロセッサを用いることができる。こうして、本明細書で使用される「VSoC」または「視覚センサ」の用語は、多様なプロセッサアーキテクチャを含めて広く解すべきであり、これには上述したある動作が他のオンチップコンポーネントと相互接続された別個のコンポーネントによりオフチップ(オフダイ)で実行されるものも含まれる。
【0080】
例えば、本明細書で例示されたアーキテクチャは、SIMD 配置構成(LAP)、メモリ、汎用プロセッサ(CPU)およびピクセルアレイを単一チップ/ダイ上に含んで、VSoCアーキテクチャを定義しているが、(例えば)ピクセルアレイはオフチップ/オフダイに存在し、適当なリードによって作動的に相互接続されることがはっきりと想定されている。これはある実装において望ましいであろう。これは例えば、デバイス形状要因が特定の幾何的条件を指定し、またはプロセスアセンブリとは別個のピクセルアレイが所望される場合である。
【0081】
III.画像捕捉、ROI決定および任意的な特徴抽出
図10は、例示のVSoC200または他の適当な処理システムを用いてID(例えば1Dバーコード−例えば多様な表面に置かれたUPC−A)の区域で画像を捕捉し、潜在的にIDを含むROIを決定し、IDを代表するROIから候補特徴を抽出するシステムおよび方法の概観1000を示す。例示的な実施態様において、IDがスキャニング手段および関連する端末装置によって有用な情報に復号されるプロセス全体1000は、プロセス全体1000をVSoCベースのプロセス1010と別個のデコーダベースのプロセス1020に分割することを必要とする。このようにしてVSoCは別個の効率的に実装されたデコーダ回路に接続されて、例えばDSPとして実現され、多様な市販のID復号アプリケーションを実行できる。VSoCおよびデコーダは適当な相互接続を介して(例えば上述のホストポート962を用いて)互いに接続されている。一般にそのようなアプリケーションは、データ接続1030によって表されているように、所定のROIの復号されたデータ値、検出されたID特徴の相対的角度、およびID特徴の詳細(例えば個々の特徴の相対的幅、間隔など)を導出できる。
【0082】
図示されたプロセス全体1000の配置構成により、処理負荷をVSoCとDSPプロセッサとの間で配分することが可能である。プロセスの配分を採用することにより、1秒当り読取りの試み(画像捕捉速度によって表される)は最適化でき、それによって精度が増す。プロセスの配分によってまた、現在利用可能なシステムとアーキテクチャで得られるよりも高性能の全体システム(ROI決定、特徴抽出、復号)が可能になり、種々の1Dコードタイプおよび潜在的に多様な2Dコードタイプを含む(がこれらに限られない)多様なシンボルをより効率的に復号できるようになる。
【0083】
多数の要因が例示的な実施態様による処理の配分を望ましいものにしている。より具体的には、本明細書中の実施態様によるVSoC200は、近隣操作およびバーコード特徴の決定(例えばコントラストエッジ)において典型的なDSPプロセッサよりも有意に効率的である。すなわち、VSoC200はある行で与えられたピクセルに隣接する(近隣の)多数のピクセルデータに基づいて、LAP425が当該行全体で並行動作するためにエッジを高速に処理できる。例示した実装では、近隣は与えられたピクセルから約±13ピクセル離れている。さらに、例示のVSoCはデータ伝送では画像捕捉より低効率であり得るため、VSoCと復号DSP980との間で伝送されるデータの量が減少するならば、DSP980が未加工画像データの捕捉と処理の両方を受け持つシステムよりも画像捕捉速度が改善されるべきである。同様に、DSP980は典型的にVSoC200425(例示的な実施態様では90MHz)より高いクロック速度で動作するので、より高速に線形操作、例えばバーコード復号(適当な復号アプリケーションまたはアルゴリズムを用いて)を実行できる。同様に、DSP980は例示した実装では典型的にVSoC200より多いプログラムメモリを提供するので、単一のアプリケーションで多様なシンボルを復号するように装備できる。
【0084】
例示的なシステムおよび方法の種々の実施態様と関連してVSoCはID検出および決定の効率を増すことができる。図11、図16、図17および図18は、VSoCプロセス全体の例示的な実施態様を示しており、それぞれデータを伝送し、これらのデータはオフチップ復号装置(慣用または特製のID復号アプリケーションを実行するDSP)によって使用されて復号されたID情報を導出することができる。一実施態様(図11および図16にバリエーションを示す)において、VSoCプロセスはフロントエンド(FE)プロセスとバックエンド(BE)プロセスからなり、システム処理リソースをより高速に処理されるID ROI検出および追跡ステップと、オーバーヘッドがより大きい特徴抽出およびID検証ステップとに効率的に割り当てる。抽出された特徴、ROI情報および検証された/精緻化されたデータが復号装置に提供される。任意的に、DSPに伝送されるデータは未加工の、圧縮された、またはサイズを縮小した(例えば画像全体のより小さい領域をカバーする)画像データを含むこともできる(以下に別の実施態様でも説明)。このFE/BE実施態様は一般的に誤判定のID検出が最も少なく、したがって復号DSPは有望なIDで動作し、その処理能力が誤判定のIDを復号するために不必要に使用されないことを保証する。別の例示的な実施態様(図17)において、BEプロセスは本質的にVSoCプロセスから省かれ、FEプロセスから追跡されたROIデータが直接復号装置に提供されて、適当な復号アプリケーションを実行する。伝送されるデータは、例えばROIの位置、サイズおよび向きのパラメータ、ならびにアレイからの画像データストリーム(またはその圧縮もしくは縮小サイズバージョン)を含んでおり、それらによって復号装置はROIの領域と関連した画像データ上で動作することによりIDの抽出を試みることができる。さらに別の例示的な実施態様(図18)において、VSoCプロセスは単純に特性などのIDの位置が特定された(例えばROIが検出された)という通知を提供でき、それにより復号装置または他のバックエンドプロセス、オフチッププロセスをトリガして、関連する未加工のまたは圧縮された画像データストリームに基づいて復号動作を起動させる。
【0085】
代替的な実施態様によれば、VSoCおよびVSoCで動作する例示的なシステムと方法は、画像ID情報または存在データ(例えばROI検出)を捕捉して、他のVSoCや、ID情報をより精密な視覚システムプロセス(例えば完全ID検出および復号)を実行するための通知として用いる代替的な視覚センサにトリガを提供するように適合できることが想定されている。トリガVSoCに対するピクセルアレイ解像度は、フルスケールセンサと異なることがある(典型的にはより小さい)。この場合は、VSoCおよびVSoCで動作する例示的なシステムと方法は、ID復号または他の操作のための全体的な視覚システムの端末として作用し、復号を実行するために使用される画像ストリームは他のピクセルアレイソースから伝送される。
【0086】
最初に図11を参照すると、例示的な実施態様により画像を捕捉し、その中にROIを決定し、潜在的な候補ID特徴を抽出してDSP980によって復号するVSoCプロセス1100が示されている。LAP425のパラレルアーキテクチャおよび縮小したサイズの画像データメモリ414(一般的にピクセルアレイ208から完全に捕捉された画像のサイズより記憶容量が小さい)を最も効率的に使用するために、プロセス1100は「フロントエンド」(FE)サブプロセス1110と、任意的な(代替として下の図17参照)「バックエンド」(BE)サブプロセス1120の2部分に分割されている。画像は捕捉され、FEアルゴリズムを用いて同時に処理される。要約すると、FEプロセス1110は特徴を抽出すべきROIが検出されたか決定する。典型的に、1以上のデータが検出された場合、このステップで保存される唯一のデータは、潜在的にIDを含んでいるROIの予測された位置である。ROIが検出されたら、後続の新しい画像が捕捉され、BEプロセス1120を用いて同時に処理される。BEプロセス1120は新しい画像中の予測されたROI位置で実行する。
【0087】
さらにFEプロセス1110を参照すると、ピクセルアレイ208は最初にステップ1130で1以上のIDを含んだ場面の画像を捕捉する。画像は読出し回路によって1行ずつLAP425に読み出される。画像が読み出されると、各行は画像データメモリ414に記憶され、CPUプロセッサ501に制御されてLAPによって操作される。最初の目標は、ROI検出ステップ1132で行に含まれているID状の特徴(エッジ)に基づきROIの位置特定を試みることである。より具体的には、この検出ステップの目標は対象ID(例えば1Dバーコード)のサイズ制約を満たす向きが類似したエッジの密な領域を特定することである。スキャニング手段のピクセルアレイ208のIDに対する回転角度はおそらく直角でないので、与えられた行にはIDの一部しか発生しない。したがってID状の特徴セットを有するROIを検出するために、幾つかの行の出力が必要とされよう。
【0088】
さらに図12および図13を参照すると、ROI検出ステップ1132は例示的に(a)画像読出し中に起こる行処理ステップ1200(図12)と、(b)画像フレームピクセル読出しの完了後に起こる画像処理ステップ1300(図13)の2段階に分割されている。本明細書に記載されたステップの順序(行処理に画像処理が続き、それぞれの中に個別のサブステップがある)の説明は、想定されている多くの可能なプロセスステップおよびサブステップの順序の例として受け取られるべきであることに留意されたい。図示/説明された順序は例示的な実施態様において、ROI検出アルゴリズムを実行する際の効率を促進するために望ましい。しかしながら代替的な実施態様において、記載された行処理サブステップの幾つかは画像処理の一部とすることができ、その逆も可能である。より一般的に、本明細書中の種々のプロセスに関して記載されたステップおよびサブステップは、特定のプロセッサおよび/またはアルゴリズムの要件を満たすために必要な場合は再編できる。
【0089】
行処理ステップ1200は潜在的なIDエッジを特定し、これらを回転の向きに基づいてビンにまとめるために用いられる。ステップ1210に示されているように、プロセス1200はN行の画像を記憶しているメモリ414内のローリングバッファを定義する(ステップ1210)。この例ではNは3行に等しい。次に行処理ステップ1220に従い、新しい行が取得されるたびに、プロセスは適当なエッジ検出ツール、例えば3×3ゾーベル・オペレータを用いてX方向とY方向で8ビットの符号付きエッジ強度(Sx、Sy)を検出する。次に結合された強度がSm=abs(Sx)+abs(Sy)として計算される。これはIDに対する潜在的なテクスチャと見なされる十分なエッジ状特性を与えない区域を排除するためのメカニズムを提供する。この「ノイズ」区域の排除はステップ1224で行われる。次に、プロセス1200の行処理ステップ1220は、所定のノイズ閾値を上回るエッジ強度を有するピクセルを決定する(ステップ1226)。例示的な実施態様では、ノイズ閾値として値25が用いられる。代替的な実施態様において、エッジデータに対する感度を高めるためにより低い閾値(ノイズに対する抵抗性が小さい)を使用してもよい。他のメカニズムも適用でき、例えば局所的なエッジ強度閾値を設定するために局所的コントラストを測定することも想定されている。次に、各エッジは4(または他の数)の回転の向きの一つを表す相応のビンに入れられる(ステップ1228)。個別のビンが4個ある場合、各ビンは180度の弧上で45度の範囲を表す。次に、ステップ1229でM行を横断して(すなわち垂直に)各々の向きのビンの内容を垂直に加算する。この実施態様ではMは16行に等しいが、他の値も想定されている。ここでは各ビンは特定の列位置で16行の画像中に存在する特定の向きのエッジカウウントを表す。ステップ1220で出力されたビンはステップ1240で、1024(列)×4(向き)×48(合計行方ビン当り結合されたビン)ビンに記憶され、ビン当り5ビットのデータを有する。代替的な実施態様において、ゾーベル計算(ステップ1222)は現在用いられている8ビットから6ビット、さらにはそれより少ないビットに減らされることが想定されている。
【0090】
次にROI検出ステップ1132で、画像ピクセル読出しの完了に続いて、出力されたビンで画像処理ステップ1300(図13)が実行される。ステップ1300は2部分からなる。第1の部分1310では、潜在的なIDの向きが類似したエッジがグループ分けされて、解像度を減らした二値画像を形成する。それから第2の部分1330で、プロセスは視覚ツール(例示的に慣用的なブロブ分析ツール)を用いて可能なID ROIを決定する。
【0091】
画像処理ステップ1300の第1の部分1310を参照すると、ステップ(1312)でP個のビンのグループは水平に加算される。例示的な実施態様において加算されたビンの数Pは16である。代替的な実施態様においてこの数Pは可変である。例示の16ビンを加算した後では、各ビンは16×16画像タイルに対して同じ向きのエッジカウントを含んでいる。換言すれば、画像のすべての16×16領域に対して4個のビンが存在し、それぞれ当該ビンの向きの数のカウントを有する。次に、各ステップ1312で合計された16×16領域の各々に対して後続のステップ(ボックス1320)が起こる。最初にステップ1322では、各領域に対してプロセス1300は最大エッジカウントを有する構成的ビン(「最大のビン」)と2番目に大きいエッジカウントを有するビン(「次に最大のビン」)、最小のエッジカウントを有するビン(「最小のビン」)と次に最小のエッジカウントを有するビン(「次に最小のビン」)を決定する。次にステップ1324で、各領域について2個の最大のエッジカウントビンが加算され、ここから2個の最小のエッジカウントビンが減算される。次にステップ1326で、各領域について、所定の閾値を上回る(ステップ1324で)結合されたエッジカウントの合計に対して、プロセスは64×48(または他の所定のサイズ)の二値画像中のビンの位置に「1」(または他の指標)を割り当てる。この「1」の値は、当該タイルには十分に向きが類似したエッジがあることを示している。さもなければ、ステップはこの位置に「0」または他の指標を割り当てる。その結果は、特定の領域に対して優勢な向きが達成されることである。ある領域で優勢な向きを評価し、その優勢な向きに関係した強度に対応する値を提供するために、多様な代替プロセスを採用できることがはっきりと想定されている。
【0092】
画像処理ステップ1300の第1の部分1310を実行した後で、プロセス1300は第2の部分1330を実行して、全体的画像はクリーニングされ、慣用的なブロブ分析または他の適当な視覚ツールを用いて可能なID ROIを決定する。最初にプロセスの第2の部分1330は二値形態学(この実施態様では画像慣用的な画像処理技術を用いて画像の2回の膨張と画像の1回の収縮を実行することを含む)を実行して穴を埋め、IDバー/特徴の間の広いスペースのために弱く接続された領域を結び付ける(ステップ1332)。画像がクリーニングされたら、ステップ1334でプロセスは高速ブロブ分析を実行する。高速ブロブ分析の結果(また他の適当な視覚ツールの結果)は、周知のIDに対する所定のサイズ基準を満たさないブロブを取り除くために使用される(ステップ1336)。例示的な実施態様で現在の基準は、(a)サイズ>45ピクセル(各ピクセルは16×16領域を表す)、(b)幅>2ピクセル、および(c)高さ>2ピクセルを有するブロブを含んでいる。
【0093】
ステップ1338でIDサイズ基準を満たすことができないブロブを取り除いた後、ステップ1338で例示のプロセス部分1330はグリッド整列されたブロブ方形を用いてブロブ位置をオリジナル画像座標にマッピングして戻す。代替として、代替的な実施態様においてグリッド整列されない方形(または他の周知の境界形状)を用いることができる。最後にステップ1339で、プロセスの第2の部分1330は、画像座標のY方向で固定されたサイズの量またはROIサイズに比例する量だけブロブサイズを拡張することによって、グリッド整列された(またはグリッド整列されない適当な)ROIを生成する。この拡張は静かな(低ノイズの)ID区域およびビン閾値を越えない散在ID成分コンポーネントが捕捉されたことを保証する。その最終結果は検出済みID ROIである。このデータを生成するための処理時間は、行ピクセルで近隣操作を実行する際のLAPの効率のために比較的小さい。
【0094】
再び図11のFEサブプロセス1110を参照すると、各ROI検出ステップ1132の結果はメモリ414に記憶される。1以上のROI結果が利用可能であれば、FEサブプロセス1110はマルチフレームROI追跡/予測ステップ1134に入る。一実施態様においてROI追跡ステップ1134は画像中に1個の候補ROIがあることを保証し、記憶された画像の連続における当該ROIの中心を用いて、スキャニング手段/ピクセルアレイ208の結果としてROIの方向、速度および加速度を評価する。ピクセルアレイ208はIDに対して動かされるか、またはその逆であり−またはIDおよびピクセルアレイ208の双方が互いに対して動かされる。IDが1秒当り30インチ動くためには、フレーム当りの位置変化の程度がかなり小さく、1秒当りに処理されるフレームの数約150〜200という効果的なフレームレートが推定される。追跡プロセスは比較的高速に動作して、フレーム間のROIの中心の位置の変化を視野内における位置(これは全体的なピクセルアレイまたはそのサブセットで表すことができる)を基準に比較する。代替的な実施態様において、画像中に1以上のROI候補が存在する場合に、各ROIを別個に識別および追跡する適当なメカニズムでROI追跡を使用できることに留意されたい。例えば、各ROIがフレーム間で類似に小さい量だけ動く場合に、各ROIの新しい位置は当該ROIと関連し、他のROIとは関連していないことが推定される。より一般的には、1以上のROIの追跡は、各画像フレーム中の候補ROIが先行の位置に対する距離および方向の点で連続して(例えば容認可能な動きの制約の所定の範囲内で)動いたかということに関する決定を伴う。所定の単一または複数のフレーム内で他のフレームに対して候補ROIの距離または方向の不連続性が大きい場合は、追跡計算から除外できる。同様に、レーム間で候補ROIに予想される連続した軌跡が欠如していることは、誤った読取りを示す。
【0095】
決定ステップ1136は、十分な数の信頼できる追跡イベントが起きたか判定し、潜在的なID ROIの適当な追跡を保証するのに十分な数の信頼できる追跡イベントが記憶されるまで(分岐1138を介して)分岐してステップ1130に戻る。ROIがほぼ間違いなく追跡プロセスの対象である(例えばROIが処理された画像の連続の全部またはほとんど全部に予想通りに存在しているか、容認可能な動きの制約の範囲に合致して動いた)ことを信頼性をもって確認するのに十分な数のROIフレームが追跡されたら、決定ステップ1136はBEサブプロセス1120に分岐して、予測されたROI1140のパラメータをメモリ414から供給する。FEサブプロセスに関係する他のデータは必要なくなり、メモリ414内で上書きされてもよい。
【0096】
任意的なBEサブプロセス1120において、ステップ1150でピクセルアレイ208はさらに画像捕捉を実行する。例示的に、この捕捉と読出しは(予測された現在位置がアレイの全体的なピクセル領域内にあることを考慮して)予測されたROIと関連するアレイの区域でのみ起きてよい。画像捕捉(ステップ1150)から読み出されたピクセルデータは、さらにステップ1152で動的特徴抽出によってもたらされるデータ精緻化を受ける。動的特徴抽出は(予測されたROI内での)ID特徴の互いの相対的角度および間隔をより精確に決定するために用いられ、それにより誤ったID読取りの可能性が減らされる。このプロセスはまたLAPによってより効率的に達成されるID読取りの部分を実行することによって、オフチップ復号回路(DSP980)における処理オーバーヘッドも減らす。一般に、LAPにとって効率的なFEサブプロセスで予測されたROIが生成されると、より処理集約的な特徴抽出または復号ステップで誤判定のID検出イベントが減少することを保証する。むしろ、顕著な数の(またはすべての)誤判定は、高速FEサブプロセスで排除される。
【0097】
動的特徴抽出は、予測されたROI内におけるエッジ強度特徴の計算に基づいている。例示的な実施態様において、これはFEサブプロセス1110から供給される予測されたROIのサイズに基づいて3×3か、または5×5カーネルを用いる。より大きいカーネル(例えば5×5)は、より大きい予測されたROIに対して特徴エッジの角度/回転の良好な解像度を得るために用いることができる。動的特徴抽出は行処理動作として実行され、画像がピクセルアレイ208から読み出されるときに起きる。
【0098】
より小さい3×3カーネルに対してはゾーベル・オペレータが用いられる。5×5カーネルに対しては、ガウスの導関数を近似する分離可能なフィルタ機能を用いることができる。例示的な実施態様において、このカーネルは2の冪乗計算に対して最適化されており、g=[1 4 8 4 1]およびgp=[1 2 0 −2 −1]の要素を有する。フィルタのX反応を測定するために、画像はgT、次いでgpで回旋される。フィルタのY反応を測定するために、画像はgpT、次いでgで回旋される。結果として生じる符号付きXおよびYエッジ強度は(所望するならば)切り詰められ連結されてメモリ414に保存される。結果として生じるエッジ強度の最小サイズはXに対して4ビット、およびYに対して4ビット(3強度ビット+1符号ビット)であり、ピクセル当り8ビット値を生み出す。しかしながら、これは所望するならば任意のビット深度に、XおよびY強度成分のそれぞれに対して最大8ビットまで増すことができ、ピクセル当り16ビットの値を生み出す。次の表はID(UPC−Aバーコード)サイズ、使用するフィルタおよびメモリ要件の間の例示的な関係を示している。下の表から明白なように、動的特徴抽出の処理は高速である。図示されたメモリの記憶要件はバーコードが垂直に向けられた最悪ケースを仮定しており−一般的に特徴が大部分または完全に1列ずつ決定されることを要求する。ここに見られるように、8ビットデータを超える記憶は最小撮像距離で公称バーコードに対する例示の利用可能なメモリを超えることがある(例えば376×241ピクセル)。
【0099】
【表1】
【0100】
動的特徴の抽出に続いて、BEサブプロセスは少なくとも3つの目標を遂行するID検証ステップ1154を実現する。すなわち、検証はROIをチェックし、ROI内の多数の位置でエッジ角度のヒストグラムをより精密に吟味することにゆおり、バーコードを含んでいるという確信を増す。これにより撮像されたIDにわたり角度の歪みとコントラストの差が 得られる。この検証ステップはID特徴(例えば平行なバー)の優勢な角度も決定し、また所定の向きのROIが得られる一組のスキャンライン終点を決定する。より一般的に、検証は向きの角度が一層制約された範囲を特徴に適用して、ID特徴(例えば平行なバー)の互いに対する精確な整列を保証する。
【0101】
ID検証は、画像読出しが完了した後で行われる画像処理動作である。しかしながら検証プロセスは読出しの間に、予測されたROIの等間隔の水平「ストライプ」または「スキャンライン」をメモリ414に記憶するので、検証処理は継続的に実行できる。例示的な実施態様ではストライプの数は現在7に設定されているが、代替的な実施態様でこれより大きいか、または小さい数を用いることができる。各ストライプの幅はROIのサイズに応じて3行または5行である。一実施態様において、より大きいサイズのROIは典型的により広いストライプを用いるので、より大きいフィルタを適用してもよい。
【0102】
図14を参照すると、検証プロセス1154は各ストライプ(ブロック1410)に対して1行のエッジ強度を計算させ、ステップ1420で3×3ゾーベル・アルゴリズムか、または5×5の分離可能な2の冪乗のフィルタ(または他のエッジツール)を用いる。種々の実施態様において、ステップ1152とステップ1154の両方で同じツール/フィルタが使用される場合は、これらの強度は動的特徴抽出(ステップ1152)の間に事前に計算できる。例示的な実施態様において、各エッジ強度はXおよびYエッジ方向を表す2個の符号付き8ビットコンポーネントによって定義される。次に、LAP425においてCORDIC(または他の適当な)アルゴリズムがで各エッジ位置で実行されて9ビット角度および9ビット強度値を生成する(ステップ1422)。実施態様でCORDIC機能が用いられるのは、それによってプロセッサのオーバーヘッドおよび動作速度に負担を与える恐れのある三角法の関数(例えば正接/逆正接関数)を用いることなく、角度の計算が可能になるからであることに留意されたい。
【0103】
次に検証プロセス1154は所定の強度を超える各エッジ位置について、左隣および右隣より大きい強度を有するかを判定することによって、それが局所的最大位置であるか決定する(ステップ1424)。次に、VSoCプライオリティエンコーダ956はステップ1424からの局所的エッジ最大位置をロードされ、これらの位置に基づいてエッジ角度のヒストグラムを作成するためにCPU(RISC)プロセッサ501が用いられる(ステップ1426)。このCPU501を用いて、ヒストグラムで約180度離れた2個の最大ピークがサーチされる(ステップ1428)。角度が180度離れた大きいピークを検出できたら、このストライプはIDが存在することを示し(決定ステップ1430)、肯定的なID結果の数が増分される(ステップ1432)。次のストライプ(もしあれば)が選択されて(ステップ1434)、プロセスは分岐して計算ステップ1420に戻ってこの次のストライプ上で動作する。同様に、ストライプが肯定的なIDではない場合は(決定ステップ1430)、プロセスはステップ1434および1420を介して次のストライプ(もしあれば)上で動作する。すべてのストライプが処理されたら、決定ステップ1440は、IDの肯定的な存在を示すストライプの数が閾値を超えるか決定する。超える場合は、IDは検証済みとなる(ステップ1442)。さもなければ決定ステップ1440は検証されなかった結果を返し(ステップ1444)、システムは新しいROIをサーチするか−または非読込み指示をユーザに返して、ユーザに対象を再スキャンすることを促す。
【0104】
代替的な実施態様において、各角度ヒストグラムまたは角度ヒストグラム全体で追加のチェックおよびテストを実行できることが想定されているが、それはそのような動作における処理オーバーヘッドが合理的に低いためである。検証プロセス1154はさらにステップ1446で、バーコードが存在することを示すストライプを用いて優勢なID角度を計算することを含んでいてもよい。例示的な実施態様において優勢なバーコードは、それらのストライプの平均ピーク角度(0〜180度)で定義される。次にバーコードROIは同じストライプを用いて精緻化される(ステップ1448)。優勢なID角度の設定公差内にある各ストライプの開始エッジと終了エッジが検出される。これらのサンプリングされたポイントを用いてROIの境界はより緻密に精緻化して優勢な角度に沿って向きを整えることができる。VSoC CPU501に代替的なアルゴリズム/プロセスを使用し、この豊富なエッジデータを用いて各ストライプに対するIDの開始と終了を決定できるが、このようなプロセスの大部分が全体的な処理時間に与える影響は最小限でなければならないことに留意されたい。
【0105】
次に、例示的な実施態様において抽出および検証に成功した特徴、ならびにROI情報および優勢な角度(1158)はホストポート962または他の通信リンク(例えばLVDS974)を介してオフチップDSP980に送られ、IDに含まれた情報がステップ1156に従って復号される。伝送された特徴は典型的にID全体またはその顕著な部分を具体化している。この理由で大きい特徴セットはタイムリーにDSPに伝送することが困難なことがある。一実施態様において、CPUはホストポートへの伝送を16ビット単位で送る。例示的な実施態様において、図9を参照すると、VSoCはデータをより効率的にDSPに伝送するために、1024幅の記憶アレイを有するシフトレジスタ996と、1024幅のバスとの相互接続を含んでいてもよい。そのようなものとしてLAP425はCPU501よりも直接に、1024幅の行をメモリ414からシフトレジスタ996に送り、それから(例えば)バス966を介して選択されたポートに送ることができる。これによりCPUおよび他のコンポーネントは本質的に、普通なら時間がかかるポートを通したデータの伝送を実行することから解放するものであり、このデータの伝送はプロセッサ425、501が他のタスクで動作している間にシフトレジスタ996によって高いクロック速度で処理される。
【0106】
さらなる例示的な実施態様では、データストリームを圧縮してDSPに伝送するために、伝送ステップは符号化を含んでいてもよいことが想定されている。例示的な実施態様において、図15に示されているように、ランレングス符号化プロセス1500を実装できる。ステップ1510で、プロセス1500は最初に(例えば上記の特徴抽出1152および/または検証ステップ1154から導出された)局所的最大エッジ位置をプライオリティエンコーダ956にロードすることによって各行で作用する。ROIに先立って検出されたエッジは、ステップ1520で伝搬/生成ユニット958を用いて除去される。次にステップ1540でCPU501はプライオリティエンコーダ956を読み込んで画像からエッジ値を得る。プロセスは行が存在している間(決定ステップ1550)は次の行で動作し(ステップ1560)。分岐1562からステップ1510へと継続する。すべての行が処理されたら(決定ステップ1550)、圧縮された伝送は完了し(ステップ1570)、ROIの前に現れる画像中の不必要な情報を取り除く。代替的な実施態様において、より複雑なおよび/または代替的な圧縮技術または符号化技術を採用できることは明確にすべきである。
【0107】
種々の実施態様においてメモリ制限は特徴の適切な記憶に負担となることがある。したがって図16に、メモリの負担を低減する結果、平均フレームレートが低下してデータ伝送が増すVSoCプロセスの代替的な実施態様を示す。一般に、図16のFEプロセス1110は図11を参照して説明したものと実質的に同じであり、したがって同じ参照符号が用いられている。予測されたROIの供給1140に続いて、図16のBEプロセス1620に進む。図示されていように、捕捉および読出しはBEプロセス1620のステップ1650で行われる。動的特徴抽出(ステップ1652)と伝送(ステップ1660)は、すべての予測されたROIに対して画像を読み出している間に行われる(1140)。したがって復号DSPは、検証が行われる前の読出しの間に特徴データ1662を受け取る。この実施態様では、ID検証(ステップ1670)は読出しと伝送が完了した後に起こる。検証信号は、優勢な角度と精緻化されたROI位置の情報1672(IDは検証済みであると仮定)はサイクルの終点で送られ、ここからDSPは復号プロセスを完了できる。代替として、IDが検証できない場合は、DSPは非検証信号を受け取るか、または信号を受け取らず(したがってタイムアウトして)IDを復号しない。BEプロセス1620に従ってより低い平均フレームレートが生じるのは、精緻化されたROI(すなわちIDの優勢な角度で整列された境界ボックス)が、特徴伝送の前に計算されないからであることに留意されたい。それゆえ精緻化されたROIより平均して大きい予測されたグリッド整列ROIのすべての特徴がDSPに伝送される。データ伝送が増すのはこのROIがより大きいためであり、検証が伝送後に行われるのですべての候補ROIについて特徴が伝送されるからである。検証は行読出し時間に顕著に影響するため、典型的に読出しの間は行われない。
【0108】
上述したように、完全なFE/BEプロセス1100および1600(図11および図16)は、例示的な実施態様によりIDを検出および決定するシステムおよび方法に従って実装できる種々の可能なデータ収束プロセスの一つである。図17に示すように、等価FEプロセス1110を採用するVSoCプロセス1700は、ROIの位置、サイズおよび向きのデータ1710を生成する。BEプロセスにおいて特徴抽出と検証によりこのデータをさらに精緻化する代わりに、情報は直接オフチップ・バックエンド復号装置(プロセス1750の一部)、例えば復号DSP1720に、伝送されたROI情報を使用するために適合された適当な慣用または特製の復号アプリケーションと一緒に伝送される。システムはまた未加工の、縮小または圧縮された画像データストリーム1730を復号装置1720に伝送する。このストリームは、基底にある1Dコード(もしあれば)を発見する試みにおいて、ROIパラメータの一般的な制御下で復号装置によって作用される。すなわちデコーダ1720はROI情報を用いて入ってくる画像データのスキャンをトリガし、(慣用的な技術を用いて)復号可能なID特徴の位置を特定して画像内のROIの位置および向きに対して整列させようとする。これに基づいて、復号装置は復号されたID(または複数のID)を返すか、成功しなかった場合は読取り失敗を示す(ブロック1740)。
【0109】
VSoCプロセスのデータ収束特性の効率は、大部分のID検出および復号がバックエンド、潜在的にオフチップの(DSP)プロセッサによって行われる実装においても適用される。図18に示すように、プロセス全体1800は画像捕捉プロセス1130を、上により切り詰めたVSoCプロセス1810の一部として説明した要領で企図する。ステップ1820でLAPまたは他のVSoC処理要素は、上記と同様の高速ROI検出動作、または他の高速のID検出アルゴリズム例えば近隣操作を用いて実行する。ROIまたは他のID指標を検出(決定ステップ1830)した後、VSoCプロセス1810は通知1840を(典型的に)オフチップ・バックエンドID処理プロセス1850に、関連する画像データ1860の同時ストリームと一緒に、未加工の形式か適当に圧縮して伝送する。通知はID復号プロセッサ(慣用または特製の復号アプリケーションを有するDSP)に対するID復号トリガ1870として働く。このトリガはDSPにID状の画像データのストリーム1860をサーチさせ、特定された情報があれば復号させるする(ステップ1880)。復号が成功したら、ステップ1890で復号された情報が供給される。さもなければ、復号に失敗した通知が提供される。一実施態様において、この通知は画像のどこでトリガが生成されたかに関する情報を含んでいてもよいので、DSP内のすべての情報はそれぞれ精確に時間が計られて、ストリーム化された画像データでトリガを誘発したと見られる位置のサーチを開始できる。
【0110】
上述した種々のVSoCプロセスは多様な画像情報を提供でき、最初は(画像捕捉から導出された)大縮尺の画像情報であり、次に効率的な大縮尺の(典型的に並行な)プロセスおよび関連するアルゴリズムによって縮小されて、より小さい有用なデータセットを提供し、これが他のプロセス、プロセッサおよび/またはアルゴリズムおよびプロセスによって効率的に処理でき、その間大縮尺プロセスが続いているることは明確にすべきである。
【0111】
より一般的に、例示的なシステムおよび方法は例示のVSoCの特徴を効率的に使用して、大量のフロントエンド高速画像データを望ましく処理し、この情報を有用なデータのより小さいストリームに効果的に収束して、これが同時にバックエンドプロセッサおよび/またはプロセスに供給されることを明確にすべきである。LAPとCPUを組み合わせて読み出す間に、処理後のコンパクトなデータセットでより精緻な画像処理を実行する、大まかな画像処理に対するLAPの並行的特質の利点を最大限活用することにより、種々の実装においてフレームレートを慣用的なID復号配置構成に対して効果的に3倍以上高めることができる。さらに、LAPアーキテクチャを用いて計算上のオーバーヘッドを低減し、画像処理アーキテクチャを単純化することにより、全体的な電力消費を減らすことができ、無線スキャナにとっては再充電またはバッテリ交換の間の稼働サイクル時間が増すことになる。
【0112】
以上、本発明の例示的な実施態様を詳述した。本発明の精神と範囲から逸脱することなく種々の変容および追加を行うことができる。上述した種々の実施態様の各々は、多様な特徴を提供するために記載された他の実施態様と組み合わせることができる。さらに、上に本発明の装置と方法の幾つかの別個の実施態様を記述したが、これは単に本発明の原理の応用を例示したものに過ぎない。例えば代替的な実施態様において、復号機能および回路をオンチップで設けて、適当なオンチップ通信リンクおよび/またはバスを介してVSoCの他の機能的コンポーネントと相互に接続することができる。同様に、ピクセルアレイに設けられ、プロセッサ、メモリおよび通信バス相互接続において実装されたデータ行および列の幅は極めて可変である。より一般的に、本明細書で説明されたシステムおよび方法はハードウェア、コンピュータ可読プログラム命令からなるソフトウェア、またはハードウェアとソフトウェアの組合せによって実現できる。したがって、この記述は単に例示として意図されたものであり、本発明の範囲を制限するものなどとして解されてはならない。
【特許請求の範囲】
【請求項1】
シンボルID特徴を検出および抽出するシステムであって、
a.いずれも離散的なダイ上にある、複数の単一命令複数データ処理(SIMD)プロセッサと、メモリと、少なくとも1つの汎用プロセッサとを含み、前記メモリは記憶および伝送するように構成および配置されており、前記SIMDプロセッサはそれぞれピクセルアレイによって提供されるピクセルデータのグループ上で動作するように構成および配置されており;
b.さらに、該システムはID関心領域(ROI)検出プロセスを含んでおり、前記プロセスは少なくとも一部は捕捉されたピクセルデータがピクセルアレイから提供されている間に動作して、ID復号プロセスに伝送されるように適合されたデータセットを提供する、
前記システム。
【請求項2】
ピクセルアレイがダイ上にある、請求項1記載のシステム。
【請求項3】
各々のSIMDプロセッサが、ピクセルアレイにより共通のクロックサイクルで提供されるピクセルデータのグループ上で動作するように構成および配置されている、請求項1記載のシステム。
【請求項4】
前記ピクセルデータのグループが、ピクセルアレイからの1行のピクセルデータ読出しを含む、請求項1記載のシステム。
【請求項5】
前記ROI検出プロセスが、捕捉されたピクセルデータがピクセルアレイから読み出される間、ID ROI候補を示すエッジデータを検出するための行内で動作する行処理プロセスを含む、請求項1記載のシステム。
【請求項6】
前記ROI検出プロセスが、各ID ROI候補エッジデータをそれらの向きに関して類似のビンにグループ分けするように動作する画像処理プロセスを含む、請求項5記載のシステム。
【請求項7】
前記画像処理プロセスがビンをその中のエッジデータの最大カウントで定義する、請求項6記載のシステム。
【請求項8】
前記画像処理プロセスは、IDサイズ基準を満たすエッジデータを分析するブロブ分析プロセスと、IDサイズ基準を満たす分析されたROIデータのマッピングに基づき少なくとも1つのROIを生成するプロセスとを含む、請求項6記載のシステム。
【請求項9】
さらに、少なくとも1つのROIを用いてROI運動特性を定義して予測されたROIを提供するROI追跡プロセスを含む、請求項1記載のシステム。
【請求項10】
さらに、予測されたROIを受け取り、予測されたROIおよび後続の画像捕捉に基づいて、そこに含まれている情報を復号するためにROI内のID特徴を生成するデータ精緻化プロセスを含む、請求項9記載のシステム。
【請求項11】
前記データ精緻化プロセスはさらに、ID特徴の角度の向きをさらに精緻化することを含んだ、ID特徴内のID情報の検証を含む、請求項10記載のシステム。
【請求項12】
シンボルID特徴を検出および抽出するシステムであって、
a.いずれも離散的なダイ上にある、複数の単一命令複数データ処理(SIMD)プロセッサと、メモリと、少なくとも1つの汎用プロセッサとを含み、前記メモリは記憶および伝送するように構成および配置されており、前記SIMDプロセッサはそれぞれピクセルアレイによって提供されるピクセルデータのグループ上で動作するように構成および配置されており;
b.さらに該システムは、ピクセルデータが捕捉されてピクセルアレイから読み出される間、ピクセルデータのグルーピング内にID特性が存在することを決定するフロントエンド(FE)プロセスと;
c.ID特性の存在に関連した情報を転送する伝送プロセスとを含んでおり、ピクセルデータの少なくとも一部を復号してそこからID情報を導出する復号プロセスを可能にする、
前記システム。
【請求項13】
ピクセルアレイがダイ上にある請求項12記載のシステム。
【請求項14】
復号プロセスがオフダイに置かれ、作動的にダイと接続される、請求項12記載のシステム。
【請求項15】
さらに、予測されたROIを導出するROI運動決定プロセスを含む、請求項12記載のシステム。
【請求項16】
予測されたROI情報は、ピクセルアレイから読み出されたピクセルデータストリームと関連して復号プロセスに伝送される、請求項15記載のシステム。
【請求項17】
さらに、ピクセルデータを捕捉し、そこからID特徴を抽出して、予測された関心領域に基づきID特徴の存在を検証するバックエンド(BE)プロセスを含み、抽出されたID特徴は復号プロセスに伝送される、請求項12記載のシステム。
【請求項18】
復号プロセスがID特性の存在をトリガとして受け取り、それに応答して、伝送されたピクセルデータストリームからIDを復号するように構成および配置されている、請求項12記載のシステム。
【請求項19】
シンボルID特徴を検出および抽出するための方法であって、
a.いずれも離散的なダイ上にある、複数の単一命令複数データ処理(SIMD)プロセッサと、メモリと、少なくとも1つの汎用プロセッサとを有し、前記メモリによって記憶および伝送し、ピクセルデータのグループがピクセルアレイによって提供されて、少なくとも1つのSIMDプロセッサによりピクセルデータのグループ上で動作するステップと;
b.ID関心領域(ROI)検出プロセスを少なくとも一部は捕捉されたピクセルデータがピクセルアレイから提供されている間に動作させて、ID復号プロセスに伝送されるように適合されたデータセットを提供するステップとを含む、
前記方法。
【請求項20】
さらに、ピクセルアレイをダイの上に置くことを含む、請求項19記載の方法。
【請求項21】
少なくとも1つのSIMDプロセッサによって動作するステップは、ピクセルデータのグループ上で共通のクロックサイクルで動作する、請求項19記載の方法。
【請求項22】
ピクセルデータのグループがピクセルアレイから読み出された1行のピクセルデータを含む、請求項19記載の方法。
【請求項23】
さらに、捕捉されたピクセルデータがピクセルアレイから読み出される間、ID ROI候補を示すエッジデータを検出するための行内で行処理プロセスを動作させることを含む、請求項19記載の方法。
【請求項24】
さらに、ROI検出プロセスは、各ID ROI候補エッジデータをそれらの向きに関して類似のビンにグループ分けするように動作する画像処理プロセスを動作させることを含む、請求項23記載の方法。
【請求項25】
さらに、前記画像処理プロセスにおいてビンをその中のエッジデータの最大カウントで定義することを含む、請求項24記載の方法。
【請求項26】
さらに、前記画像処理プロセスにおいて、IDサイズ基準を満たすエッジデータを分析するブロブ分析プロセスと、IDサイズ基準を満たす分析されたROIデータのマッピングに基づき1以上のROIを生成するプロセスとを実行することを含む、請求項24記載の方法。
【請求項27】
さらに、ROI運動特性を定義して予測されたROIを提供するために、少なくとも1つのROIを用いてROIを追跡することを含む、請求項19記載の方法。
【請求項28】
さらに、予測されたROIを受け取り、予測されたROIおよび後続の画像捕捉に基づいて、その中のID情報を復号するためにROI内のID特徴を生成するデータ精緻化プロセスを動作させること含む、請求項27記載の方法。
【請求項29】
さらに、ID特徴の角度の向きを精緻化することを含めて、ID特徴内のID情報の検証を含む、請求項28記載のシステム。
【請求項30】
シンボルID特徴を検出および抽出する方法であって、
a.いずれも離散的なダイ上にある、複数の単一命令複数データ処理(SIMD)プロセッサと、メモリと、少なくとも1つの汎用プロセッサとを有し、前記メモリによって記憶および伝送し、ピクセルデータのグループがピクセルアレイによって提供されて、少なくとも1つのSIMDプロセッサによりピクセルデータのグループ上で動作するステップと;
b.フロントエンド(FE)プロセスにより、ピクセルデータが捕捉されてピクセルアレイから読み出される間、ピクセルデータのグルーピング内にID特性が存在することを決定するステップと;
c.伝送プロセスにより、ID特性の存在に関連した情報を転送し、ピクセルデータの少なくとも一部を復号してそこからID情報を導出することを可能にするステップとを含む、
前記方法。
【請求項31】
さらに、ピクセルアレイをダイ上に置くことを含む、請求項30記載の方法。
【請求項32】
復号のステップがオフダイで実行される請求項30記載の方法。
【請求項33】
さらに、予測されたROIをROI運動決定プロセスで導出することを含む、請求項30記載の方法。
【請求項34】
さらに、予測されたROI情報を、ピクセルアレイから読み出されたピクセルデータストリームと関連して復号プロセスに伝送することを含む、請求項33記載の方法。
【請求項35】
さらに、バックエンド(BE)でピクセルデータを捕捉し、そこからID特徴を抽出することを含む、請求項33記載の方法。
【請求項36】
さらに、予測された関心領域に基づきID特徴の存在を検証することを含み、抽出されたID特徴は復号プロセスに伝送される、請求項35記載の方法。
【請求項37】
復号のステップは、ID特性の存在をトリガとして受け取り、それに応答して伝送されたピクセルデータストリームからIDを復号することを含む、請求項30記載のシステム。
【請求項1】
シンボルID特徴を検出および抽出するシステムであって、
a.いずれも離散的なダイ上にある、複数の単一命令複数データ処理(SIMD)プロセッサと、メモリと、少なくとも1つの汎用プロセッサとを含み、前記メモリは記憶および伝送するように構成および配置されており、前記SIMDプロセッサはそれぞれピクセルアレイによって提供されるピクセルデータのグループ上で動作するように構成および配置されており;
b.さらに、該システムはID関心領域(ROI)検出プロセスを含んでおり、前記プロセスは少なくとも一部は捕捉されたピクセルデータがピクセルアレイから提供されている間に動作して、ID復号プロセスに伝送されるように適合されたデータセットを提供する、
前記システム。
【請求項2】
ピクセルアレイがダイ上にある、請求項1記載のシステム。
【請求項3】
各々のSIMDプロセッサが、ピクセルアレイにより共通のクロックサイクルで提供されるピクセルデータのグループ上で動作するように構成および配置されている、請求項1記載のシステム。
【請求項4】
前記ピクセルデータのグループが、ピクセルアレイからの1行のピクセルデータ読出しを含む、請求項1記載のシステム。
【請求項5】
前記ROI検出プロセスが、捕捉されたピクセルデータがピクセルアレイから読み出される間、ID ROI候補を示すエッジデータを検出するための行内で動作する行処理プロセスを含む、請求項1記載のシステム。
【請求項6】
前記ROI検出プロセスが、各ID ROI候補エッジデータをそれらの向きに関して類似のビンにグループ分けするように動作する画像処理プロセスを含む、請求項5記載のシステム。
【請求項7】
前記画像処理プロセスがビンをその中のエッジデータの最大カウントで定義する、請求項6記載のシステム。
【請求項8】
前記画像処理プロセスは、IDサイズ基準を満たすエッジデータを分析するブロブ分析プロセスと、IDサイズ基準を満たす分析されたROIデータのマッピングに基づき少なくとも1つのROIを生成するプロセスとを含む、請求項6記載のシステム。
【請求項9】
さらに、少なくとも1つのROIを用いてROI運動特性を定義して予測されたROIを提供するROI追跡プロセスを含む、請求項1記載のシステム。
【請求項10】
さらに、予測されたROIを受け取り、予測されたROIおよび後続の画像捕捉に基づいて、そこに含まれている情報を復号するためにROI内のID特徴を生成するデータ精緻化プロセスを含む、請求項9記載のシステム。
【請求項11】
前記データ精緻化プロセスはさらに、ID特徴の角度の向きをさらに精緻化することを含んだ、ID特徴内のID情報の検証を含む、請求項10記載のシステム。
【請求項12】
シンボルID特徴を検出および抽出するシステムであって、
a.いずれも離散的なダイ上にある、複数の単一命令複数データ処理(SIMD)プロセッサと、メモリと、少なくとも1つの汎用プロセッサとを含み、前記メモリは記憶および伝送するように構成および配置されており、前記SIMDプロセッサはそれぞれピクセルアレイによって提供されるピクセルデータのグループ上で動作するように構成および配置されており;
b.さらに該システムは、ピクセルデータが捕捉されてピクセルアレイから読み出される間、ピクセルデータのグルーピング内にID特性が存在することを決定するフロントエンド(FE)プロセスと;
c.ID特性の存在に関連した情報を転送する伝送プロセスとを含んでおり、ピクセルデータの少なくとも一部を復号してそこからID情報を導出する復号プロセスを可能にする、
前記システム。
【請求項13】
ピクセルアレイがダイ上にある請求項12記載のシステム。
【請求項14】
復号プロセスがオフダイに置かれ、作動的にダイと接続される、請求項12記載のシステム。
【請求項15】
さらに、予測されたROIを導出するROI運動決定プロセスを含む、請求項12記載のシステム。
【請求項16】
予測されたROI情報は、ピクセルアレイから読み出されたピクセルデータストリームと関連して復号プロセスに伝送される、請求項15記載のシステム。
【請求項17】
さらに、ピクセルデータを捕捉し、そこからID特徴を抽出して、予測された関心領域に基づきID特徴の存在を検証するバックエンド(BE)プロセスを含み、抽出されたID特徴は復号プロセスに伝送される、請求項12記載のシステム。
【請求項18】
復号プロセスがID特性の存在をトリガとして受け取り、それに応答して、伝送されたピクセルデータストリームからIDを復号するように構成および配置されている、請求項12記載のシステム。
【請求項19】
シンボルID特徴を検出および抽出するための方法であって、
a.いずれも離散的なダイ上にある、複数の単一命令複数データ処理(SIMD)プロセッサと、メモリと、少なくとも1つの汎用プロセッサとを有し、前記メモリによって記憶および伝送し、ピクセルデータのグループがピクセルアレイによって提供されて、少なくとも1つのSIMDプロセッサによりピクセルデータのグループ上で動作するステップと;
b.ID関心領域(ROI)検出プロセスを少なくとも一部は捕捉されたピクセルデータがピクセルアレイから提供されている間に動作させて、ID復号プロセスに伝送されるように適合されたデータセットを提供するステップとを含む、
前記方法。
【請求項20】
さらに、ピクセルアレイをダイの上に置くことを含む、請求項19記載の方法。
【請求項21】
少なくとも1つのSIMDプロセッサによって動作するステップは、ピクセルデータのグループ上で共通のクロックサイクルで動作する、請求項19記載の方法。
【請求項22】
ピクセルデータのグループがピクセルアレイから読み出された1行のピクセルデータを含む、請求項19記載の方法。
【請求項23】
さらに、捕捉されたピクセルデータがピクセルアレイから読み出される間、ID ROI候補を示すエッジデータを検出するための行内で行処理プロセスを動作させることを含む、請求項19記載の方法。
【請求項24】
さらに、ROI検出プロセスは、各ID ROI候補エッジデータをそれらの向きに関して類似のビンにグループ分けするように動作する画像処理プロセスを動作させることを含む、請求項23記載の方法。
【請求項25】
さらに、前記画像処理プロセスにおいてビンをその中のエッジデータの最大カウントで定義することを含む、請求項24記載の方法。
【請求項26】
さらに、前記画像処理プロセスにおいて、IDサイズ基準を満たすエッジデータを分析するブロブ分析プロセスと、IDサイズ基準を満たす分析されたROIデータのマッピングに基づき1以上のROIを生成するプロセスとを実行することを含む、請求項24記載の方法。
【請求項27】
さらに、ROI運動特性を定義して予測されたROIを提供するために、少なくとも1つのROIを用いてROIを追跡することを含む、請求項19記載の方法。
【請求項28】
さらに、予測されたROIを受け取り、予測されたROIおよび後続の画像捕捉に基づいて、その中のID情報を復号するためにROI内のID特徴を生成するデータ精緻化プロセスを動作させること含む、請求項27記載の方法。
【請求項29】
さらに、ID特徴の角度の向きを精緻化することを含めて、ID特徴内のID情報の検証を含む、請求項28記載のシステム。
【請求項30】
シンボルID特徴を検出および抽出する方法であって、
a.いずれも離散的なダイ上にある、複数の単一命令複数データ処理(SIMD)プロセッサと、メモリと、少なくとも1つの汎用プロセッサとを有し、前記メモリによって記憶および伝送し、ピクセルデータのグループがピクセルアレイによって提供されて、少なくとも1つのSIMDプロセッサによりピクセルデータのグループ上で動作するステップと;
b.フロントエンド(FE)プロセスにより、ピクセルデータが捕捉されてピクセルアレイから読み出される間、ピクセルデータのグルーピング内にID特性が存在することを決定するステップと;
c.伝送プロセスにより、ID特性の存在に関連した情報を転送し、ピクセルデータの少なくとも一部を復号してそこからID情報を導出することを可能にするステップとを含む、
前記方法。
【請求項31】
さらに、ピクセルアレイをダイ上に置くことを含む、請求項30記載の方法。
【請求項32】
復号のステップがオフダイで実行される請求項30記載の方法。
【請求項33】
さらに、予測されたROIをROI運動決定プロセスで導出することを含む、請求項30記載の方法。
【請求項34】
さらに、予測されたROI情報を、ピクセルアレイから読み出されたピクセルデータストリームと関連して復号プロセスに伝送することを含む、請求項33記載の方法。
【請求項35】
さらに、バックエンド(BE)でピクセルデータを捕捉し、そこからID特徴を抽出することを含む、請求項33記載の方法。
【請求項36】
さらに、予測された関心領域に基づきID特徴の存在を検証することを含み、抽出されたID特徴は復号プロセスに伝送される、請求項35記載の方法。
【請求項37】
復号のステップは、ID特性の存在をトリガとして受け取り、それに応答して伝送されたピクセルデータストリームからIDを復号することを含む、請求項30記載のシステム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【公表番号】特表2012−517638(P2012−517638A)
【公表日】平成24年8月2日(2012.8.2)
【国際特許分類】
【出願番号】特願2011−549344(P2011−549344)
【出願日】平成22年2月10日(2010.2.10)
【国際出願番号】PCT/US2010/023734
【国際公開番号】WO2010/093680
【国際公開日】平成22年8月19日(2010.8.19)
【出願人】(504382671)コグネックス・コーポレイション (16)
【Fターム(参考)】
【公表日】平成24年8月2日(2012.8.2)
【国際特許分類】
【出願日】平成22年2月10日(2010.2.10)
【国際出願番号】PCT/US2010/023734
【国際公開番号】WO2010/093680
【国際公開日】平成22年8月19日(2010.8.19)
【出願人】(504382671)コグネックス・コーポレイション (16)
【Fターム(参考)】
[ Back to top ]