IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ジック アーゲーの特許一覧

特許7430471カメラベースのコードリーダ及び光学コード読み取り方法
<>
  • 特許-カメラベースのコードリーダ及び光学コード読み取り方法 図1
  • 特許-カメラベースのコードリーダ及び光学コード読み取り方法 図2
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-02-02
(45)【発行日】2024-02-13
(54)【発明の名称】カメラベースのコードリーダ及び光学コード読み取り方法
(51)【国際特許分類】
   G06K 7/10 20060101AFI20240205BHJP
   G06T 7/00 20170101ALI20240205BHJP
   G06K 7/14 20060101ALI20240205BHJP
【FI】
G06K7/10 408
G06T7/00 610
G06K7/10 372
G06K7/14 039
【請求項の数】 13
【外国語出願】
(21)【出願番号】P 2022162184
(22)【出願日】2022-10-07
(65)【公開番号】P2023060829
(43)【公開日】2023-04-28
【審査請求日】2022-12-14
(31)【優先権主張番号】10 2021 126 906.7
(32)【優先日】2021-10-18
(33)【優先権主張国・地域又は機関】DE
(73)【特許権者】
【識別番号】591005615
【氏名又は名称】ジック アーゲー
(74)【代理人】
【識別番号】110001069
【氏名又は名称】弁理士法人京都国際特許事務所
(72)【発明者】
【氏名】ロマン ミューラー
(72)【発明者】
【氏名】ハンネス ルフ
(72)【発明者】
【氏名】ヨハネス ラインボルト
【審査官】松平 英
(56)【参考文献】
【文献】特開2005-157677(JP,A)
【文献】特開2008-071032(JP,A)
【文献】特開2012-155609(JP,A)
【文献】特開2019-049967(JP,A)
【文献】特開2021-077360(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06K 7/00-7/14
17/00-19/18
G06T 7/00-7/90
G06V10/00-20/90
30/418
40/16
40/20
(57)【特許請求の範囲】
【請求項1】
光学コード(20)を含む画像データを取得するための画像センサ(24)と、画像データを保存するためのメモリ(34)と、前記画像データを前記画像センサ(24)から前記メモリ(34)へ画像データストリームの形で転送するための第1処理ユニット(30)と、保存された前記画像データを解析することで前記光学コード(20)のコード内容を読み出すデコード(36)を行うように構成された第2処理ユニット(32)とを備えるカメラベースのコードリーダ(10)において、
前記第1処理ユニット(30)が少なくとも1つの補助機能のために構成されており、該補助機能において前記第1処理ユニット(30)が前記画像データの少なくとも一部を前記メモリ(34)から再び読み取り、前処理し、前処理の結果を前記メモリ(34)に書き戻すこと、及び、前記第2処理ユニット(32)が必要に応じて前記デコード(36)の支援のために前記第1処理ユニット(30)の補助機能を呼び出すように構成されていること、を特徴とするコードリーダ(10)。
【請求項2】
前記第1処理ユニット(30)がFPGA(Field Programmable Gate Array)を備えている、及び/又は、前記第2処理ユニット(32)がマイクロプロセッサを備えている、請求項1に記載のコードリーダ(10)。
【請求項3】
前記第1処理ユニット(30)が画像行又はその一部を前記画像センサ(24)からそれぞれ読み出してメモリ(34)に保存する、請求項1に記載のコードリーダ(10)。
【請求項4】
前記第1処理ユニット(30)が、前記補助機能として前処理を実行するだけでなく、前記画像センサ(24)からそれぞれ読み込まれた画像データを、前記メモリ(34)への転送前に、まだ別の画像データが前記画像センサ(24)から読み込まれている間に、もう前処理するように構成されている、請求項1に記載のコードリーダ(10)。
【請求項5】
前記第1処理ユニット(30)が、前記画像センサ(24)から前記メモリ(34)へ画像データを転送するための第1パーティション(30a)と、補助機能を実行するための第2パーティション(30b)とを備えている、請求項1~4のいずれかに記載のコードリーダ(10)。
【請求項6】
前記第1パーティション(30a)と前記第2パーティション(30b)が異なるクロック周波数で駆動される、請求項5に記載のコードリーダ(10)。
【請求項7】
前記第1処理ユニット(30)が、補助機能として、コード候補を含む関心領域の発見を含むセグメント化を行うように構成されている、請求項1に記載のコードリーダ(10)。
【請求項8】
前記第1処理ユニット(30)が補助機能として高解像度化を行うように構成されている、請求項1に記載のコードリーダ(10)。
【請求項9】
前記第1処理ユニット(30)が補助機能として画像の一部の回転を行うように構成されている、請求項1に記載のコードリーダ(10)。
【請求項10】
前記第1処理ユニット(30)が補助機能としてフィルタを用いた処理、特に鮮鋭化フィルタ、エッジフィルタ、又は平滑化フィルタを用いた処理を行うように構成されている、請求項1に記載のコードリーダ(10)。
【請求項11】
前記第1処理ユニット(30)が補助機能としてコード部分とのパターンマッチングを行うように構成されている、請求項1に記載のコードリーダ(10)。
【請求項12】
前記第1処理ユニット(30)が補助機能として射影補正又は歪曲収差補正を行うように構成されている、請求項1に記載のコードリーダ(10)。
【請求項13】
画像センサ(24)から光学コード(20)を含む画像データを取得し、第1処理ユニット(30)により画像データストリームの形で前記画像センサ(24)からメモリ(34)へ転送し、第2処理ユニット(32)においてデコード(36)する、光学コード(20)の読み取り方法であって、前記光学コード(20)のコード内容を読み出すために、保存された前記画像データを解析する方法において、
前記第2処理ユニット(32)が必要に応じて前記デコード(36)の支援のために前記第1処理ユニット(30)の少なくとも1つの補助機能を呼び出すこと、及び、前記第1処理ユニット(30)が前記補助機能の実行の際に前記画像データの少なくとも一部を前記メモリ(34)から再び読み取り、前処理し、前処理の結果を前記メモリ(34)に書き戻すことを特徴とする方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、請求項1又は13のプレアンブルに記載のカメラベースのコードリーダ及び光学コード読み取り方法に関する。
【背景技術】
【0002】
コードリーダはスーパーマーケットのレジ、荷物の自動識別、郵便物の仕分け、空港での荷物の発送準備、その他の物流での応用が知られている。カメラベースのコードリーダが画像センサを用いて物品の画像をその表面に付されたコードとともに撮影し、画像解析ソフトウェアがその画像からコード情報を抽出する。カメラベースのコードリーダは、1次元バーコード以外に、マトリクスコードのように2次元的に構成され、より多くの情報を利用できる種類のコードも問題なく処理できる。
【0003】
ある重要な一群の利用形態では、コードを付した物品がコードリーダの近くを通過するように搬送される。画像センサで画像データが繰り返し取得される。これらの画像データには撮影周波数及び搬送速度に応じて多少の重なりが生じる。コードリーダはより複雑なコード読み取りシステムの一部であることが多い。例えば、物品を複数の又は全ての側から撮影するためにしばしば複数のコードリーダが読み取りトンネルに設けられる。また、送り量若しくは搬送速度を測定するためのエンコーダや物体の形状を測定するレーザスキャナ等、追加のセンサが設けられている。
【0004】
カメラ及び画像センサの技術の進歩により、処理すべき画像はますます大きくなっている。その途方もないデータ量をリアルタイム条件下でカメラ内において有限の計算能力及び帯域幅で処理及び転送しようとすると大きな問題に直面する。そこで助けになるのが異種の計算アーキテクチャ、即ちマイクロプロセッサ(CPU, Central Processing Unit)とFPGA(Field Programmable Gate Array)、DSP(Digital Signal Processor)、GPU(Graphics Processing Unit)又はいわゆるAIアクセラレータ(NPU: Neural Processing Unit、TPU: Tensor Processing Unit)等との組み合わせの使用である。
【0005】
ここで特に実績があるのは画像センサからの画像データの読み出しを担当するFPGAとの組み合わせである。それに加えてこのFPGAは高速インターフェイス(PCI: Peripheral Component Interconnect、PCIE: PCI Express、MIPI: Mobile Industry Processor Interface)を介してマイクロプロセッサのメモリと接続されている。従って画像データはDMA(Direct Memory Access)を通じてFPGAからメモリ内へ転送される。この読み出しと保存のプロセスはストリーミングと呼ばれる。その後、CPUを用いて実装されるデコーダが、後段において、保存された画像にアクセスしてコードを読み取ることができる。ストリーミングのアプローチは先に挙げた異種アーキテクチャの他の追加部品では簡単にはできない。それらは基本的に既にそれら自身が、保存された画像を必要とするのに対し、FPGAは画像データを画素毎に直接読み出して更に処理することができる。
【0006】
画像データはFPGAにおいて早くも直接、オンザフライで前処理することが好ましく、その際、画像データと共にマイクロプロセッサ用の追加情報又はメタデータを保存することができる。典型的な前処理ステップに該当するのは、グレースケール画像を白黒画像にする二値化や、コード候補を含む関心領域(ROI: Region of Interest)を見出すセグメント化である。例えば特許文献1にはコードを検出するための光電センサ及び方法が記載されているが、そこでは二値化器が、それぞれ読み込まれた部分をまだ別の部分が読み込まれている間に二値化することにより、既に受光の間に及び/又はリアルタイムでカラー又はグレースケール画像を二値画像に変換するように構成されている。特許文献2では、FPGA上での前処理において関心領域又はコード候補をコントラストの尺度に基づいて見出す。未公開の欧州特許出願第20176228.3号ではセグメント化のときにニューラルネットワークの第1層がFPGA上で読み込みの間に既に完了する。特許文献3は画像が既に受光の間に圧縮される光電センサの駆動方法を開示している。
【0007】
その際、それぞれFPGAの能力を利用することで、多数の簡単な演算操作(例えば行列の乗算)を並行してリアルタイムに実行する。連続的で複雑なデコーダの演算操作はマイクロプロセッサに任されたままであり、そのために該プロセッサは用意された画像データを利用し、前処理の結果があればそれも頼りにする。しかし、例えばモジュールサイズが極端である場合のように、デコーダが困難に遭遇し、成功が期待できるような読み取り試行のためには計算量の多い操作を非常に多数の画素に対して実行しなければならなくなる場合がある。別のコードを含む新たな画像データが入ってくるまでに利用できるデコード用の時間窓は、そのような状況下ではもはや不十分かも知れない。他方で、FPGAが、流入してくる全ての画像データに対し、適宜の前処理ステップをストリーミングの間に単純に予防的に行うことはできない。それはまず不必要な計算コストを生じさせる。なぜなら、多くのコードは追加の前処理ステップなしでも読み取られるからである。加えて、適切な前処理ステップを個々の事例に応じて選択することになるが、それにはまず、現在の特別な事例に適したステップを決定するために必要な情報をデコーダが持っていること、特に最初の読み取り試行が無駄に終わった後であることが必要である。
【先行技術文献】
【特許文献】
【0008】
【文献】EP 2 003 599 A1
【文献】EP 2 555 160 B1
【文献】EP 1 365 577 A1
【発明の概要】
【発明が解決しようとする課題】
【0009】
故に本発明の課題は、異種アーキテクチャにおけるコードの読み取りを更に改善することである。
【課題を解決するための手段】
【0010】
この課題は請求項1又は13に記載のカメラベースのコードリーダ及び光学コードの読み取り方法により解決される。光学コードは例えば任意の規格に従ったバーコード又は2次元コードである。画像センサが、多数の画素を持つ画像データを、典型的には数キロピクセルのラインセンサ又は数メガピクセルのマトリクスセンサを用いて高解像度で取得する。稼働時にコードリーダは光学コードを備えた物体を検出するから、そのとき画像データは光学コードを持つ少なくとも1つの領域を含む。
【0011】
コードリーダの第1処理ユニットが画像センサの画像データ、即ち好ましくは高解像度の生画像を読み込み、該画像データをメモリに転送する。この読み込みと保存は隣接する画素を一組にした画像データストリームとして行われ、ストリーミングと呼ばれる。画像データは、実施形態によってはストリーミングの間に直接前処理され、適宜処理された画像データ又は前処理の際に得られた追加情報若しくはメタデータが保存される。コードリーダは他にデコードのための第2処理ユニット、即ち、メモリに保存された画像データと、前処理の結果があればそれも評価又は処理することで画像データ内の光学コードのコード内容を読み取るためのユニットを含んでいる。
【0012】
本発明の出発点となる基本思想は、第2処理ユニットを支援するために第1処理ユニットをデコードの間に追加的に利用するということである。従って第1処理ユニットは2重の役割を持つようになる。即ち、画像データの読み込み及び保存というこれまでのストリーミングの機能を拡張して、コプロセッサとしても追加的に機能する。それに応じて第1処理ユニットは、既にメモリにストリーミングされた画像データの少なくとも一部を再び読み取り、前処理を実行し、該前処理の結果を改めて保存するという、少なくとも1つの補助機能のために構成されている。この補助機能は、デコーダが最新のコードをデコードするためにその機能を必要とするときに、第2前処理ユニットから要求があった場合にのみ発動される。その場合、第1処理ユニットはコプロセッサとしてその第2の役割を務め、その補助機能で第2処理ユニットを支援する。補助機能の結果としては、処理後の画像データ及び/又は追加情報若しくはメタデータが考えられる。第2処理ユニットはメモリ中のこの結果にアクセスし、場合によっては改めて第1処理ユニットの補助機能を利用しつつ、デコードを継続する。
【0013】
本発明には第2処理ユニットの負担を軽減できるという利点がある。これは、画素ベースであるために多重的に必要となる操作であって、第1処理ユニットによってはるかに高い効率で実行されるような操作にとって特に有利である。それにより所要時間が短縮されるか、何らかの処理が、利用可能な時間窓の枠内でようやく可能になる。このデコーダのためには、公知のやり方によれば第2処理ユニットにおいて十分な計算及び時間のリソースが利用できないためそもそも考慮の対象にならないようなアルゴリズムでさえ、開発することができる。
【0014】
第1処理ユニットがFPGA(Field Programmable Gate Array)を備えていること、及び/又は、第2処理ユニットがマイクロプロセッサ(CPU)を備えていることが好ましい。FPGAはストリーミング、及び比較的簡単な個々の演算操作での大量のデータのリアルタイム処理に特に適している。他方、CPUはずっと柔軟性が高く、自ずとより複雑な計算ステップを実行できる。これはデコードにとって有利である。CPUがデコード中に問題に遭遇したとしても、それがまた、例えばより大きな画像範囲内での画素レベルの操作のように、多数の簡単な演算操作を必要とするような問題であるなら、CPUはそのためにFPGAの補助機能を頼りにすることができる。
【0015】
第1処理ユニットは画像行又はその一部を画像センサからそれぞれ読み出してそれをメモリに保存することが好ましい。これによれば、画像は画像センサの行毎に読み込まれ又はストリーミングされ、処理は行指向で行われる。1行を超える画像行を対象とする前処理(例えばフィルタカーネルを用いた畳み込み)のために、第1の処理ユニットは、適適宜の本数の画像行をローリング方式で一時保存する画像バッファを備えることができる。原理的には画像行の代わりに画像列で同様に処理することも可能である。これはここでは単なる座標定義の違いと解釈し、区別しない。
【0016】
第1処理ユニットは、画像センサからそれぞれ読み込まれた画像データを、メモリへの転送前に、まだ別の画像データが画像センサから読み込まれている間に、もう前処理するように構成されていることが好ましい。従ってこの第1処理ユニットは「オンザフライ」で又はストリーミング中にもう前処理を行うように構成されている。この前処理は補助機能とは明らかに区別すべきものである。それは、そもそも第2処理ユニットのデコーダが画像データへのアクセスを得るよりも前に、いわばデータの源において直接実行される。一方、補助機能は、第1処理ユニットにより既に保存された画像データに基づいてデコーダにより目的に合わせて要求される。
【0017】
第1処理ユニットは、画像センサからメモリへ画像データを転送するための第1パーティションと、補助機能を実行するための第2パーティションとを備えていることが好ましい。この第1処理ユニットの内部では、ストリーミングとコプロセッシング、若しくは画像データの転送と補助機能の実行という、2つの機能が明確に分けられている。特にそのために、分割された面又は領域がFPGA上に設けられる。他にもパーティションがあってもよく、好ましくは状況に応じて両方のパーティションから必要とされるアルゴリズムを持つ第3パーティションがあるとよい。
【0018】
第1パーティションと第2パーティションは異なるクロック周波数で駆動されることが好ましい。これは明確な分離により技術的に可能である。このようにすれば、例えば限られたエネルギー収支又は熱収支を非常に的確に分配することができる。クロック周波数の適合は補助機能に対して行うことが好ましい。なぜなら、ストリーミングは典型的には固定されたフレームレートとステップを揃えなければならないため、状況にあまり依存せず、適合化もあまりできないからである。
【0019】
第1処理ユニットは、補助機能として、コード候補を含む関心領域の発見を含むセグメント化を行うように構成されていることが好ましい。これは模範的なコプロセッサ機能又は補助機能である。一又は複数のそのような補助機能を実装することができる。内容的には、補助機能のかなりの処理はストリーミングの間にもう実行することができる。しかしそれらはここで言うところの補助機能ではない。なぜなら補助機能は、保存済みの画像データのためにデコーダによってストリーミングの後で目的に合わせて要求される又は発動されるものだからである。光学コード又はコード候補と思われるものを含む画像範囲(ROI、関心領域)を見出すセグメント化は、冒頭で従来技術において述べたように、ストリーミング中に既にオンザフライで実行されることが時々ある。あるいは、まずデコーダがセグメント化を要求する、若しくは、既にストリーミング中に実行された事前のセグメント化を補う形でより精細なセグメント化又は別のパラメータ下でのセグメント化を実行させる。
【0020】
第1処理ユニットは補助機能として高解像度化を行うように構成されていることが好ましい。これは別の模範的なコプロセッサ機能又は補助機能であり、前の段落の一般的な所見はこの補助機能及び他の補助機能にも同様に当てはまる。高解像度化は事後的な又はデジタル的なズーム機能に相当する。そのためにアップサンプリングや超解像といった概念の下でそれ自体公知の数多くのアプローチがある。ところが、従来からデコーダの第2処理ユニットには必要なリソースがないことがよくあり、その結果、適切な補助機能により高解像度化が著しく高速化したりそもそも初めて可能になったりする。高解像度化の対象は、画像全体、部分領域(特にコード候補を含む関心領域)、又はコード部分のみとすることができる。
【0021】
第1処理ユニットは補助機能として画像の一部の回転を行うように構成されていることが好ましい。これは別の模範的なコプロセッサ機能又は補助機能である。回転のための公式又はアルゴリズムは一般に知られている。もっともそれは第2処理ユニットでは大抵実行できない画素ベースの処理であるため、第1処理ユニットの支援は大きな改善のステップとなる。
【0022】
第1処理ユニットは補助機能としてフィルタを用いた処理、特に鮮鋭化フィルタ、エッジフィルタ、又は、ノイズフィルタ若しくは平滑化フィルタを用いた処理を行うように構成されていることが好ましい。フィルタカーネルを用いた画像又は画像範囲の畳み込みには、第1処理ユニットでは効率的に実行される一方、第2処理ユニットでは所与の時間配分内で行うことが困難であるような多数の個別操作が必要となる。そのようにして画像を鮮鋭化したり、エッジ検出とモジュール検出の準備をしたり、ひずみ補正(ぼけ修正)を行ったりすることができる。
【0023】
第1処理ユニットは補助機能としてコード部分とのパターンマッチングを行うように構成されていることが好ましい。パターンマッチング(テンプレート照合)ではコード部分の認識又は少なくとも部分的なデコードを直接画像データ上で行うことができる。デコーダは二値化された白黒画像データを用いて作業を行うのが普通であるのに対し、パターンマッチングは基になるカラー又はグレースケール値のデータに対して実行することができる。
【0024】
第1処理ユニットは補助機能として射影補正又は歪曲収差補正を行うように構成されていることが好ましい。これにより、撮影されたコードに対する不都合な視点や画像センサの対物レンズの歪曲収差を補償することができる。これにはそれぞれ画素レベルでの操作が必要であるが、それは第1処理ユニットにより補助機能として効率良く実行される。
【0025】
本発明に係る方法は、前記と同様のやり方で仕上げていくことが可能であり、それにより同様の効果を奏する。そのような効果をもたらす特徴は、例えば本願の独立請求項に続く従属請求項に模範的に記載されているが、それらに限られるものではない。
【0026】
以下、本発明について、更なる特徴及び利点をも考慮しつつ、模範的な実施形態に基づき、添付の図面を参照しながら詳しく説明する。
【図面の簡単な説明】
【0027】
図1】カメラベースのコードリーダをベルトコンベアの上方に取り付けた模範例の概略的な全体図。
図2】FPGAをストリーマー、CPUをデコーダとして含み、FPGAが追加的にコプロセッサとして機能する、異種アーキテクチャの概略図。
【発明を実施するための形態】
【0028】
図1はベルトコンベア12の上方に取り付けられたカメラベースのコードリーダ10を示している。ベルトコンベア12は矢印16で示したようにコードリーダ10の検出領域18を通過するように物体14を搬送する。物体14はその外側表面にコード20を持っており、これがコードリーダ10により検出されて評価される。このコード20は上面に付されているか、少なくとも上から見えるように付されている場合にのみコードリーダ10で認識できる。そこで、図1の描画から逸脱して、例えば側面又は底面に付されたコード22を読み取るために複数のコードリーダ10を異なる方向から取り付けることで、いわゆる全方向からの多重読み取りを可能にしてもよい。読み取りシステムに対する複数のコードリーダ10の配置は実際には読み取りトンネルとして実施することがほとんどである。このようにコードリーダをベルトコンベア付近に固定して用いることは実際に非常によくある。しかし、本発明は画像データの処理若しくはコードリーダ10そのものに関するものであり、従って本例を限定的なものとして解釈してはならない。
【0029】
コードリーダ10は画像センサ24を用いて搬送中の物体14とコード20の画像データを取得し、そのデータが制御及び評価ユニット26により画像解析とデコード法を用いて更に処理される。制御及び評価ユニット26についてはすぐ後で図2を参照しつつ詳しく説明する。インターフェイス28を通じてコードリーダ10は情報(読み取ったコード又は画像データ等)を出力する。
【0030】
図2は制御及び評価ユニット26とその接続を概略図で示している。制御及び評価ユニット26は第1処理ユニット30(以下ではFPGA(Field Programmable Gate Array)の例で説明する)と第2処理ユニット32(以下ではCPU(Central Processing Unit)の例で説明する)とを含んでいる。第1処理ユニット30は少なくとも2つの部分を備えており、そのうち第1部分30aはストリーミング、第2部分30bはコプロセッサと表記されている。そして任意選択で共通の第3部分30cを含むことができる。第2処理ユニット32は画像データに基づいて光学コードを読み取るためのデコーダ36を備えている。
【0031】
第1処理ユニット30は一方で画像センサ24(Imager Interface)と接続され、他方で第2処理ユニット32の方向に高速インターフェイス(PCI, PCIE, MIPI)を備えている。ここで本発明にとって特に重要なのは両方の処理ユニット30、32が画像データ及び処理結果のためのメモリ34にアクセスするということである。それに相当する読み書きプロセスは好ましくはDMA(Direct Memory Access)によって行われる。メモリ34は少なくとも機能的に、実施形態によっては構造的にもCPU32の一部と解釈される。2つの処理ユニット30、32間のもう1つの接続は補助機能の呼び出しを可能にする。
【0032】
さて、稼働時には画像センサ24がその都度新たな画像又は新たな画像部分を撮影する。これはマトリクスセンサの矩形画像でもよいが、ラインセンサの個々の又は複数の画像ラインであることも考えられる。その場合、コードリーダ10と物体14の間の相対運動の進行とともにその画像ラインが次々に全体画像を生み出す。画像センサ24の画像データは第1処理ユニット(ここでは特にその第1部分30a)により読み出されてメモリ34に転送される又はストリーミングされる。
【0033】
第2処理ユニット32のデコーダ36はメモリ34内の画像データにアクセスし、該画像データとともに取得された光学コードの内容を読み出す。そのために、画素量と計算量の多い操作であって、CPUはそれにあまり適しておらず、第1処理ユニット30においてずっと効率的且つ高速に実行することができるような操作が必要になる場合が若干ある。デコーダ36はこのような場合、第1処理ユニット30にコプロセッサとして支援してもらうことを決めることができる。これにより第1処理ユニット30はストリーマー及びコプロセッサとしての2重の役割を持つようになる。
【0034】
この支援する機能を補助機能と呼ぶ。これを担当するのが第1処理ユニット30の第2部分30bである。第2処理ユニット32により対応する呼び出しが行われたら、第1処理ユニット30はメモリ34にある保存済みの画像データに再びアクセスする、若しくはそのデータを第1処理ユニット30に再び読み込む。該ユニットは補助機能を実行し、その結果を改めてメモリ34に書き込む。第2処理ユニット32のデコーダ36はその結果に基づいてメモリ34にアクセスすることによりコードの読み取りを続けることができる。
【0035】
補助機能は画素レベルでの画像データの操作に関係するものであることが好ましいが、その代わりに又はそれに加えて評価も行い、適宜の追加情報又はメタデータを生成して、それを同様にメモリ34に書き込むこともできる。このようなメタデータを通じてデコーダ36は補助機能の所望のパラメータ設定を行うことができる。又は、そのパラメータ設定はそれに適した第1処理ユニット30のインターフェイス(Register Interface)を通じて行われる。
【0036】
ストリーミングの間でも既に前処理は可能であるから、第1処理ユニット30の第1部分30aにより最初にメモリに転送された画像データ、及び該データに付属するメタ情報があればその情報は、もう前処理の結果である。しかしこのような前処理ステップは定常的に且つ全画像データに対して同じように実行される。デコーダ36はこの時点で介入して具体的な画像データについて判断を下すことはまだ全くできない。これに対して補助機能は必要時にのみ最新の画像データに基づいて実行され、しかもこの画像データのために的確にパラメータ設定を行うことができる。
【0037】
ストリーミングの間及び/又はその後で補助機能として実行することができる前処理の一例として、コード候補を含む関心領域(ROI)を見出すセグメント化がある。これはストリーミングの間に又はオンザフライで共通の基準に基づいて行われるが、補助機能として行う場合は特別に、画像データの一部のみについて、例えば解釈が難しい画像範囲について非常にコストのかかる方法で行うこともできる。
【0038】
既に述べたように第1処理ユニット30は異なるパーティション又は部分30a~cを備えている。第1部分30aはストリーミングと、場合によってはストリーミング中における前処理とメタデータの生成を担当し、第2部分30bはコプロセッサとして補助機能の任務を担当する。任意選択の第3部分30cはストリーミングの間にも補助機能の実行中にも必要となる共通に利用される機能を担当する。部分30a~cは単に機能的なものと理解するのではなく、分割(特に異なる領域又は面部分への分割)により実際に別々に実装されていること、従って本物のパーティションとなっていることが好ましい。更に部分30a~cは必要に応じて異なるクロック周波数で駆動することさえできる。これは特に、エネルギー収支や熱収支に制限がある場合に、様々な機能の全体的な性能を均一にして最適化するために有利である。
【0039】
補助機能のいくつかの例を以下に説明するが、ここに挙げる例が全てではない。少なくとも1つの補助機能が用意されるが、より多くの補助機能を任意に組み合わせることもできる。同様に第2処理ユニット32のデコーダも、補助機能が必要であるどうか、そしてそれはどの個別の補助機能又はどの複数の補助機能の組み合わせか、という選択をケースバイケースで行う。1つの補助機能を何度も呼び出すこともできる。ここでは例として、対応する補助機能をその都度重み付けを変えながら何度も呼び出すことにより実行されるニューラルネットワークの繰り返し層を挙げることができる。
【0040】
補助機能の一例に高解像度化がある。これはズーム機能に相当するが、それは光学的な拡大に基づくものではなく、画像データの解像度を事後的に精細化するものである。デコーダ36は、例えばモジュールサイズが非常に小さい場合、即ちコード要素を表現する画素数が少なすぎる場合にそのような補助機能を必要とする。双三次補間、双線形補間、線形補間、又はスプラインを用いた補間等、内挿によるアップサンプリングのためのアルゴリズム自体は公知である。画像データ(例えばグレースケール値)がメモリ34から再び第1処理ユニット30乃至はその第2部分30bへ、好ましくは高解像度化の望ましい係数及び望ましい内挿法と共に転送される。内挿には2、4…といった係数が理想的である。他のアプローチは超解像というキーワードの下にある文献に記載されており、それには特にニューラルネットワークが用いられる。
【0041】
補助機能の別の例に画像範囲又はコードの回転がある。このために好ましくは、個々のラインセグメントが次々にメモリ34から第1処理ユニット30へ再び転送され、その際にデコーダ36が望ましい回転角を算出して第1処理ユニット30に伝える。好ましくはその回転角に応じて関係のあるラインセグメントのみを転送して処理する。ラインセグメント内におけるコードの位置等のメタ情報を双方向に一緒に送ることができる。平面内での回転を拡張して射影補正を行うことも考えられる。
【0042】
補助機能の別の例としてフィルタがある。フィルタカーネルを用いた畳み込みは基本的に行列演算であり、故にFPGAがそれに非常に適している。ここでは、ノイズ、ひずみ及び歪曲収差、被写体ぶれ等に関係し得る数多くの方法がある。例えばコード構造の信号雑音比がノイズのせいで余りに悪くなっている場合には鮮鋭化フィルタを用いることができる。その場合に考えられるパラメータには中央のグレースケール値、最大及び最小のグレースケール値、並びに他の統計量(標準偏差等)がある。ソーベルフィルタ等の相応のフィルタによりエッジ認識の準備又はその改善をすることができる。不鮮明さ又は被写体ぶれを適切なフィルタ(ルーシー・リチャードソン畳み込み、ぼけ修正)により少なくとも部分的に補償することができる。幾何補正、特に歪曲収差を補償するための補正もフィルタと解釈することができる。フィルタを補って又はその代りに特定の特徴的な量(鮮鋭度等)を決定し、メタ情報として返すことが考えられる。そうするとデコーダ36は、読み取り試行が成功するかどうか、若しくは他にどの処置及び場合によってはどの補助機能がまだ事前に必要であるかを判断することができる。上述のフィルタと同様の効果をニューラルネットワークを用いて達成することもできる。
【0043】
補助機能の別の例としてパターンマッチング(テンプレート照合)がある。これによれば、カラー又はグレースケール値の画像データ上で直接、コードセグメントを見出してデコードすることが試みられる。これに関してはモジュールサイズ、パターン(テンプレート)、統計値及びコード形式等のパラメータが関心の対象となる。この補助機能にもニューラルネットワークが適している。
図1
図2