(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024120844
(43)【公開日】2024-09-05
(54)【発明の名称】光学コードの読み取り
(51)【国際特許分類】
H04N 25/133 20230101AFI20240829BHJP
【FI】
H04N25/133
【審査請求】有
【請求項の数】12
【出願形態】OL
【外国語出願】
(21)【出願番号】P 2023215151
(22)【出願日】2023-12-20
(31)【優先権主張番号】23158471
(32)【優先日】2023-02-24
(33)【優先権主張国・地域又は機関】EP
(71)【出願人】
【識別番号】591005615
【氏名又は名称】ジック アーゲー
(74)【代理人】
【識別番号】110001069
【氏名又は名称】弁理士法人京都国際特許事務所
(72)【発明者】
【氏名】ハンネス ルフ
(57)【要約】 (修正有)
【課題】コードリーダに対して相対運動している物体上の光学コードを読み取るためのカメラベースのコードリーダを提供する。
【解決手段】該コードリーダ10は、画像センサ18が受光素子22の複数のライン配列20a~dを備えていること、前記受光素子22の一部が白色光に感度を有し、前記受光素子22の別の一部がそれぞれ単一の色の光にのみ感度を有し、そうしてグレースケールの画像ラインを撮影するためのグレースケールチャネルとカラーの画像ラインを撮影するための複数のカラーチャネルとが形成されていること、及び、前記第1の処理ユニット24がグレースケールチャネル用に少なくとも1つの処理チャネル50とカラーチャネル毎に少なくとも1本の処理チャネル50という複数の並列の処理チャネル50を備えており、グレースケールの画像ラインとそれに付属するカラーの画像ラインとをその都度並列に且つ同時に新たにスケーリングする。
【選択図】
図1
【特許請求の範囲】
【請求項1】
コードリーダ(10)に対して相対運動している物体(40)上の光学コード(44)を読み取るためのカメラベースのコードリーダ(10)であって、その都度の画像ラインを撮影するためのライン状の画像センサ(18)と、少なくとも1つの第1の前処理ユニット(24)及び1つの別の処理ユニット(25)を有する制御及び評価ユニット(24、25、26)とを備え、前記第1の前処理ユニット(24)が少なくとも間接的に前記画像センサ(18)と接続されており、且つ、前記相対運動の進行中に画像ラインを1本ずつ読み出し、前処理において各画像ラインをズーム倍率zで新たにスケーリングしてから前記別の処理ユニット(26)に渡すように構成されており、前記別の処理ユニット(26)が前記画像ラインから前記光学コード(44)を読み取るように構成されている、コードリーダ(10)において、
前記画像センサ(18)が受光素子(22)の複数のライン配列(20a~d)を備えていること、前記受光素子(22)の一部が白色光に感度を有し、前記受光素子(22)の別の一部がそれぞれ単一の色の光にのみ感度を有し、そうしてグレースケールの画像ラインを撮影するためのグレースケールチャネルとカラーの画像ラインを撮影するための複数のカラーチャネルとが形成されていること、及び、前記第1の処理ユニット(24)がグレースケールチャネル用に少なくとも1つの処理チャネル(50)とカラーチャネル毎に少なくとも1本の処理チャネル(50)という複数の並列の処理チャネル(50)を備えており、グレースケールの画像ラインとそれに付属するカラーの画像ラインとをその都度並列に且つ同時に新たにスケーリングすること、
を特徴とするコードリーダ(10)。
【請求項2】
距離センサを備えており、前記制御及び評価ユニット(24、25、26)が前記ズーム倍率zを前記距離センサの距離値から、特に画像ライン毎に、決定するように構成されている、請求項1に記載のコードリーダ(10)。
【請求項3】
前記ズーム倍率zが前記複数の処理チャネル(50)内で違っている、請求項1又は2に記載のコードリーダ(10)。
【請求項4】
前記制御及び評価ユニット(24、25、26)が、画像ラインをそれぞれ中央で分割し、出来上がった半分のラインの一方を鏡像反転させるように構成されており、前記処理チャネル(50)が、1本の画像ラインの2つの半分のラインを並列に新たにスケーリングするように構成されている、請求項1又は2に記載のコードリーダ(10)。
【請求項5】
前記処理チャネル(50)が、1本の画像ラインを前記ズーム倍率zを用いた線形的な内挿又は外挿により新たにスケーリングするように構成されており、特にそのスケーリングが、撮影された画像ラインを前記ズーム倍率zで伸長又は圧縮して該伸長又は圧縮された画像ラインを再び元の画像ラスタに離散化することにより行われ、その際、前記画素ラスタの移行部では前記伸長又は圧縮された画素が新たな画素と重なった部分の面積に比例して該新たな画素に寄与する、請求項1又は2に記載のコードリーダ(10)。
【請求項6】
前記第1の前処理ユニット(24)が全ての処理チャネル(50)のための共通のズーム制御部(52)を備えている、請求項1又は2に記載のコードリーダ(10)。
【請求項7】
前記第1の前処理ユニット(24)がFPGA(Field Programmable Gate Array)を備えている、及び/又は、前記別の処理ユニット(26)がマイクロプロセッサを備えている、請求項1又は2に記載のコードリーダ(10)。
【請求項8】
前記制御及び評価ユニット(24、25、26)が、前記画像センサ(18)と前記第1の前処理ユニット(24)との間に配置され、前記カラーチャネルで撮影された画像ラインの色適合化(48)を実行するように及び/又は前記グレースケールチャネルと前記カラーチャネルから少なくとも1つの別のカラーチャネルを生成するように構成された、第2の前処理ユニット(25)、特にFPGAを備えている、請求項1又は2に記載のコードリーダ(10)。
【請求項9】
前記グレースケールチャネルの画像ラインからのグレースケール画像がコードの読み取りに用いられる、並びに/又は、前記カラーチャネルの画像ラインからのカラー画像がコード付きの物体及び/若しくはコード領域を認識し、分類し及び/若しくは画像背景から区別するために用いられる、請求項1又は2に記載のコードリーダ(10)。
【請求項10】
2つ、3つ又は4つのライン配列(20a~d)が設けられ、少なくとも1つのライン配列(20a~d)が白に感度を有する受光素子(22)のみを備えている、請求項1又は2に記載のコードリーダ(10)。
【請求項11】
前記画像センサ(18)が、2つの原色、特に赤と青、の一方に対してそれぞれ感度を有する複数の受光素子(22)を備える一方、第3の原色、特に緑、に対して感度を有する受光素子(22)を備えていない、請求項1又は2に記載のコードリーダ(10)。
【請求項12】
物体(40)に対して相対運動するコードリーダ(10)、特に請求項1又は2に記載のカメラベースのコードリーダ(10)を用いて前記物体(40)上の光学コード(44)を読み取る方法であって、前記物体(40)が前記コードリーダ(10)のライン状の画像センサ(18)により画像ライン毎に撮影され、第1の前処理ユニット(24)が画像ラインを1本ずつ読み出し、ズーム倍率zで新たにスケーリングしてから別の処理ユニット(26)に渡し、該別の処理ユニットが前記新たにスケーリングされた画像ラインから前記光学コード(44)を読み取る、という方法において、
前記画像センサ(18)が受光素子(22)の複数のライン配列(20a~d)を備えていること、前記受光素子(22)の一部が白色光に感度を有し、前記受光素子(22)の別の一部がそれぞれ単一の色の光にのみ感度を有し、そうしてグレースケールの画像ラインの撮影に用いられるグレースケールチャネルとカラーの画像ラインの撮影に用いられる複数のカラーチャネルとが形成されていること、及び、前記第1の処理ユニット(24)がグレースケールチャネル用に少なくとも1つの処理チャネル(50)とカラーチャネル毎に少なくとも1本の処理チャネル(50)という複数の並列の処理チャネル(50)においてグレースケールの画像ラインとそれに付属するカラーの画像ラインとをその都度並列に且つ同時に新たにスケーリングすること、
を特徴とする方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、請求項1及び12のプレアンブルにそれぞれ記載の、コードリーダに対して相対運動している物体上の光学コードを読み取るためのカメラベースのコードリーダ、及び、カメラベースのコードリーダで物体上の光学コードを読み取る方法に関する。
【背景技術】
【0002】
物流上の応用業務の自動化、例えば物体の自動仕分けのために、各物体にコードが付され、それがコードリーダによって読み取られる。使用される光学コードはバーコード又は2次元コード(Maxicode、Aztecコード等)であり、やや広い意味では文字認識(OCR)で復号される文字もそうである。このようなコードを読み取るため、コードを含む各物体の画像が撮影される。
【0003】
空港での荷物の扱いや物流センターにおける荷物の自動仕分け等の際に自動的に機能する読み取り装置では、物体がコードリーダの近くを通るように搬送され、その物体とその表面に付されたコードの画像データがライン毎の走査により取得される。個々の画像ラインが既知の又は測定されたベルト速度に基づいて合成される。ラインカメラは高い解像度と速度に達する。
【0004】
典型的にはラインカメラはモノクロ画像を撮影する。これはグレースケール画像又は白黒画像とも呼ばれる。これによれば最大の光子収量が達成され、以て最大の信号雑音比が達せられる。また、いずれにせよ明と暗の領域しかないコードの読み取りにとって色の取得は差し当たり関心の対象にならないように思われる。それでもなお色情報を得る必要がある場合、普通はマトリクスカメラに頼る。しかしそれはまさに高速のベルトに応用する場合に不利である。なぜなら、高いフレームレートが必要とされる上、その個々の画像の結合(Stitching)は画像ラインを単純に接触させて並べることに比べて非常に計算コストがかかるからである。その上、マトリクス画像センサではライン方向においてライン画像センサと同じ画素数を得ることができない。カラーラインカメラも知られているがさほど普及していない。それらは例えば、赤、緑及び青(RGB)の3本のライン、これらの原色をに交互に配列した単一のライン、又は、バイヤー型パターンを模して赤と青の画素が交互に現れる1本のラインと純粋な緑の第2のラインを持つ。バイヤー型パターンはRGBによる色空間の表現と同じくらいよく用いられるが、それだけが唯一の可能なものというわけではない。代わりの色パターンでは、例えば白のチャネルを追加したり(RGBW)、減法混色(シアン、マゼンタ、イエローのCMY、そして場合によっては黒成分Keyを含めたCMYK)を用いたりする。他にもHSV(色相、彩度、明度)又はLab若しくはCIELABといった色空間の表現がある。
【0005】
特許文献1は、グレースケール画像を撮影するための少なくとも1本の白のラインとカラー画像を撮影するための少なくとも1本のカラーラインとを備えるラインカメラを開示している。カラーラインには赤と青の受光画素が設けられている一方、緑の受光画素はない。緑の色情報は白のラインの助けを借りて赤と青の色情報から再構成することができる。
【0006】
特許文献2は、ラインカメラを用いて1つのグレースケール画像と少なくとも2つの単色画像という形で取得された画像データの明度及び色補正に関係している。明度関数がラインカメラの各照明モジュールのために個別に決定され、カメラ内に保存される。ラインカメラはこれらの明度関数を読み出し、それをグレースケール画像と単色画像の補正に用いる。
【0007】
カメラ及び画像センサの技術の進歩のせいで、処理すべき画像はますます大きくなっている。そのデータ量が膨大であるため、限られた計算能力と帯域ではリアルタイム条件下でのカメラ内での転送及び処理が非常に難しくなっている。その場合に助けとなるのが混成型の計算アーキテクチャ、即ちマイクロプロセッサ(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)と結合させたものを用いることである。
【0008】
ここで特に有効性が実証されているのは画像センサからの画像データの読み取りを担当するFPGAとの組み合わせである。このFPGAはそのために高速インターフェイス(PCI:Peripheral Component Interconnect、PCIE:PCI Express、MIPI:Mobile Industry Processor Interface)を通じてマイクロプロセッサのメモリと接続されている。そのため画像データはDMA(Direct Memory Access)によりFPGAからメモリに伝送される。この読み取りとメモリ保存のプロセスをストリーミングと呼ぶ。CPUを用いて実装されたデコーダがそれから後段において保存済みの画像にアクセスしてコードを読み取ることができる。先に挙げた混成型アーキテクチャの補助モジュールは、それら自身が既に保存済みの画像を必要とする限り、どれでもストリーミングのアプローチに容易に利用できるわけではないのに対し、FPGAは画像データを画素毎に直接読み出して処理することができる。
【0009】
画像データは好ましくはFPGA内で既に直接、オンザフライで処理されるが、その際、マイクロプロセッサ用の追加情報又はメタデータを画像データと一緒に保存することができる。典型的な前処理ステップとして、コード候補を含む関心領域(ROI:Region of Interest)を見つけ出すセグメント化や、明度適合化がある。特許文献3は、読み取られた各部分を更なる部分の読み取り中にもう二値化することにより、受信中に既に及び/又はリアルタイムでカラー又はグレースケール画像を二値画像に変換するように構成された二値化器を含むセンサ及びコード検出方法を開示している。特許文献4には、画像が受信中にもう圧縮されるような光電センサの駆動方法が記載されている。このような前処理では、リアルタイムで並列に多数の簡単な計算操作(例えば行列の乗算)を実行するために、その都度、FPGAの能力が利用される。光学コードを読み取るためのデコーダの計算操作のような連続的でより複雑な計算操作は依然としてマイクロプロセッサに残されており、マイクロプロセッサはそのために、用意された画像データと、可能なら前処理結果を用いる。
【0010】
特許文献5にはカメラ及び画像データ処理方法が記載されている。そこではストリーミング法においてニューラルネットワークを用いてセグメント化が行われる。即ち、更なる画像データがまだ読み込まれている間にもう画像データが処理される。少なくともニューラルネットワークの第1層はFPGA上に実装することができる。これにより計算時間とハードウェアに対する要求が著しく低減される。ニューラルネットワークの結果の他に、多くの実施形態では原画像も、可能な古典的な前処理の後でメモリへストリーミングされる。
【0011】
別の公知の前処理ステップはズーム又は解像度適合化に関するものである。それはズーム式対物レンズのレンズを動かす又は変化させる光学ズームとは一線を画してデジタルズームと呼ばれる。この場合、ラインカメラで撮影された画像ラインが、計算的に内挿若しくは外挿により、ズーム倍率によって決まる新たな解像度になる。これは例えば特許文献6に記載されている。
【0012】
特許文献7では、均一な解像度で歪みのない画像を撮影するため、物体の形状を測定し、その都度の走査対象のラインに対して、ズーム倍率と撮影周波数を適切に調整し、特にそれをラインセンサに対して斜め方向を向いた物体表面に沿うズームの傾斜及び周波数の傾斜の形で行う。しかしこのズーム倍率は計算によりデジタル的に考慮されるのではなく、光学的に調整される。
【0013】
従来のデジタルズームはグレースケール画像にしか関係していない。カラーラインカメラでは、ライン毎に異なるズーム倍率を適用できるにも関わらずグレースケール画像とカラー画像が互いに同期していなければならないという追加の問題点がある。また、追加のカラー画像データのせいで処理対象のデータ量は更に大幅に増えるが、カメラは必要な処理速度を達成しなければならない。そうなると、従来のアプローチではカメラのハードウェア資源に過大な負荷がかかるため、該カメラは、高いベルト速度、高い解像度、及び動的な電力損失の低減の要求を考慮すると、リアルタイムではもはやデジタルズームを含む処理を実行できない。
【先行技術文献】
【特許文献】
【0014】
【特許文献1】EP 3 822 844 B1
【特許文献2】EP 4 080 402 A1
【特許文献3】EP 2 003 599 A1
【特許文献4】EP 1 365 577 A1
【特許文献5】EP 3 916 633 A1
【特許文献6】US 2007/0268530 A1
【特許文献7】EP 2 026 249 A1
【発明の概要】
【発明が解決しようとする課題】
【0015】
故に本発明の課題はラインカメラでのコード読み取りを更に改善することである。
【課題を解決するための手段】
【0016】
この課題は請求項1及び12にそれぞれ記載の、コードリーダに対して相対運動している物体上の光学コードを読み取るためのカメラベースのコードリーダ、及び、カメラベースのコードリーダで物体上の光学コードを読み取る方法により解決される。光学コードは特に任意の規格のバーコード及び2次元コードである。撮影対象の物体とコードリーダの間の相対運動は、好ましくは、コードリーダを物体の流れの近く(例えば搬送装置の近く)に固定的に取り付けることにより生じさせる。ライン状の画像センサ又はラインセンサがその都度1本の画像ラインを撮影し、それにより画像センサの視野内で前記相対運動の最新の位置にある物体のライン状の対応部分を撮影する。カメラの内部、外部又は一部が内部で一部が外部にある制御及び評価ユニットが少なくとも1つの第1の前処理ユニットと1つの別の処理ユニットを備えている。第1の前処理ユニットは少なくとも間接的に画像センサと接続されている。該ユニットは画像ラインを1本ずつ読み込み、それを前処理してから前記別の処理ユニットに渡す。なおこれは、前処理された画像ラインがメモリに書き込まれ、前記別の処理ユニットがこのメモリに同様にアクセスできる、ということも意味し得る。こうして、第1の前処理ユニットが画像データのストリーミングを担当するか少なくともそれ(即ち画像データストリーム中の画像データの漸次的な読み込みと引き渡し)に関与するというパイプライン構造が出来上がる。互いに接して並べられた画像ラインが画像となる。これは根本的には無限画像であるか、あるいは結合させて任意の設定数の画像ラインを持つ画像にすること、好ましくは内容に応じて物体又は関心領域(ラベルやコード領域等)毎に1枚の画像とすることができる。
【0017】
ここで考察される第1の前処理ユニットの前処理ステップは、各画像ラインをズーム倍率zで新たにスケーリングするズームである。即ち、n画素をn×z画素に伸長又は圧縮した新たな画像ラインが作られる。その際、伸長に相当するズーム倍率z>1と圧縮に相当するz<1が考えられる。そのズーム倍率は、好ましくは、各画像ラインが物体を同じ縮尺で記録するように、即ち、同じ大きさの物体構造が同数の画素で撮影されるように、画像ライン毎にその都度選択される。これを表現する1つの方法はdpi(dots per inch。ここではむしろ1インチ当たりの画素)での解像度を一定にすることである。ズーム倍率z=1は、物体及びその距離のせいで偶然に画像ラインの目標解像度が最初から達成されているという特別な状況において時々現れ得る。それでも、他のズーム倍率に対してと同様にカメラを調整することに変わりはなく、好ましくは、z=1の特殊なケースをわざわざ捕らえるのではなく(それも当然可能ではあるが)、この場合でもズーム操作用の計算を実行する。ズームの他にも別の前処理があり得るが、これについては冒頭で数例を挙げている。
【0018】
前記別の処理ユニットは前処理された画像ラインから光学コードを読み取る。これは、別の準備ステップとしてのセグメント化によって実際にコードが見つかった関心領域に限定することができる。
【0019】
本発明の出発点となる基本思想は、カラーラインセンサを使用し、前記ズームを各色に対応する並列なチャネル内で実行することである。従って画像センサは受光素子又は受光画素のライン配列を複数有するラインセンサとして構成されている。複数のライン配列とは数本、いずれにせよ10本未満であり、ライン方向の解像度、従ってライン方向の受光素子の数はそれより数桁大きく、数百、数千又はそれ以上になる。各受光素子はそれぞれグレースケール又は特定の色での撮影を担当する。つまり、カラーの受光素子と呼び得る、1色しか知覚しない(例えばフィルタを備えた)受光素子が存在する。これらの受光素子は、それぞれ該当色のカラーの画像ラインが撮影される複数の色チャネルを形成する。他の受光素子(これらは白の受光素子と呼び得る)は光スペクトル全体を知覚し、特に色フィルタを備えていない。これらはグレースケール又は白黒の画像ラインが撮影されるグレースケールチャネルを形成する。当然ながら、知覚される光の範囲は画像センサのハードウェア制限により限定される。白及びカラーの画素は様々なパターンでライン配列にわたって配置することができる。
【0020】
第1の処理ユニットは複数の並列の処理チャネル、即ち、グレースケールチャネル用に少なくとも1つの処理チャネル、そして各カラーチャネル用にそれぞれ少なくとも1つの処理チャネルを備えている。従って、異なる色及びグレースケールに対するズーム操作は並列化されるか、若しくは、グレースケールの画像ラインと複数のカラーの画像ラインとを含む1本の画像ラインがその都度並列且つ同時に新たにスケーリングされる。グレースケールの画像ラインと各カラーの画像ラインの相互の付属は、それらが画像センサの1回の撮影に若しくは撮影された光景の同一部分に対応することにより生じる。前記複数の処理チャネル内では同一の又は個別のズーム倍率zを用いることができる。
【0021】
本発明には、カラー撮影ばかりかグレースケール撮影まで同時に行う場合の膨大なデータ量と画像データの同期という、冒頭で詳述した問題が解決されるという利点がある。並列の処理チャネルにより必要な処理速度を達成し、動的な電力損失を低減することができる。他の場合には、この問題はカメラ内に統合されたハードウェア上では全く解決されないか、少なくとも過度のコストをかけなければ解決されないであろう。本発明のおかげでズーム操作をリアルタイムで行うことができ、オンザフライ処理でストリーミング中にもうパイプライン構造に組み入れることができる。オンザフライとは、ある画像ラインが新たにスケーリングされている一方で次の画像ラインがもう撮影される又は読み出されるということを意味する。従って実質的には、ズームのために、並列の処理チャネルの1つを1回だけ実行するための僅かな時間オフセットまで、知覚可能な程度の追加の処理時間は必要とされない。前記別の処理ユニットによる後段の画像処理又はコード読み取りのための画像データが全体として利用可能になるや否や、そのデータはもう前記ズーム倍率で新たにスケーリングされている。
【0022】
前記コードリーダが距離センサを備えており、前記制御及び評価ユニットが前記ズーム倍率zを前記距離センサの距離値から、特に画像ライン毎に、決定するように構成されていることが好ましい。距離センサはコードリーダに統合されていてもよいし、外部にあってもよく、例えば前記相対運動と逆に上流方向に前置されたレーザスキャナとすることができる。測定された距離には幾何学的な計算により又は予め用意された参照表を用いて適切なズーム倍率zを割り当てることができ、特に画像ライン毎に新たなズーム倍率zが割り当てられる。コードリーダに対して物体表面が傾斜している場合、必ずしもライン毎に新たな距離値を測定してそこでのズーム倍率zを計算する必要はなく、冒頭に挙げた特許文献7に記載のように、ズーム倍率が前記傾斜に沿って変化するようなズームの傾斜をたどってもよい。第1の前処理ユニットは例えば前記別の処理ユニットから距離値を受け取り、それを用いてズーム倍率zを自ら決定するか、あるいはズーム倍率zが前記別の処理ユニットから第1の前処理ユニットへ直接渡される。制御及び評価ユニットは、距離センサの制御及び/又はズーム倍率の決定のために、前記機能を単独で又は前記別の処理ユニットと共同で果たす更に別のユニットを備えるものとすることができる。
【0023】
ズーム倍率zは前記複数の処理チャネル内で違っていることが好ましい。これによれば、例えば、グレースケールに感度を有する受光素子と各色に感度を有する受光素子とが異なる密度で存在しており、従ってグレースケールチャネルとカラーチャネルとで解像度が異なる、という画像センサの画素パターンが均一化される。前記違いはグレースケールチャネルとそれら自身は同一である各カラーチャネルとの間に現れてもよいし、またカラーチャネル同士の内部で現れてもよい。
【0024】
制御及び評価ユニットが、画像ラインをそれぞれ中央で分割し、出来上がった半分のラインの一方を鏡像反転させるように構成されており、前記処理チャネルが、1本の画像ラインの2つの半分のラインを並列に新たにスケーリングするように構成されていることが好ましい。これは、制御及び評価ユニットの内部において前記第1の前処理ユニット又はまだ紹介していない前段の第2の前処理ユニットが担うことが好ましい。画像ラインの2分割若しくは処理チャネルの実質的な2重化により、処理の更なる高速化及び/又は使用する計算モジュールの性能若しくはクロック周波数の更なる低減が可能となる。中央で分割して鏡像反転させることでズームが均一になるとともに、その後、一方の新たにスケーリングした半分のラインを再び鏡像反転させて他方の新たにスケーリングした半分のラインと結合するときに移行が滑らかになる。
【0025】
前記処理チャネルが、1本の画像ラインをズーム倍率zを用いた線形的な内挿又は外挿により新たにスケーリングするように構成されており、特にそのスケーリングが、撮影された画像ラインをズーム倍率zで伸長又は圧縮して該伸長又は圧縮された画像ラインを再び元の画像ラスタに離散化することにより行われ、その際、画素ラスタの移行部では前記伸長又は圧縮された画素が新たな画素と重なった部分の面積に比例して該新たな画素に寄与することが好ましい。このズーム操作は従って線形的な操作である。当然ながら計算は実際には方程式により示されるが、これは、元の幅を持つ画素ラインの傍にズーム倍率zの分だけ伸長又は圧縮された画像ラインを横たえることだとイメージすることができる。元の幅を持つ画素ライン内で模範的に選び出された1つの画素(これを「新たな画素」と呼ぶ)に対し、今度は、伸長又は圧縮された隣接する画素群から得られる新たな画素値を割り当てることになる。0.5≦z≦2とすると(普通、実際にコードを読み取るにはこれで十分である)、そのような隣接する画素は新たな画素1つにつき2つしかあり得ず、それらは自身の重なった部分の面積に比例して寄与する。従って、隣接する画素の移行部が観察している画素に対して真ん中にあれば隣接する画素は半分ずつ寄与し、移行部が右又は左方向にずれていればそのずれの大きさに応じて重みが線形的に変わる。このやり方は0.5≦z≦2という制約がない場合へ非常に簡単に拡張でき、その場合はより多くの隣接画素があり得て、その一部は完全に重なっており、それに応じた高い重みで寄与する。z>1のズームの場合、伸長された画像ラインは周縁部では無視するか切り捨てることが好ましく、それに対応してz<1のズームの場合、より外側の周縁部までゼロ等の固定値で埋めることで、新たにスケーリングされた画像ラインがズーム倍率zに関わらず最後には必ず同じ長さに留まるようにすることができる。
【0026】
前記第1の前処理ユニットは全ての処理チャネルのための共通のズーム制御部を備えていることが好ましい。これにより簡単な方法で同期と全体的に最適なズーム倍率zとが保証される。
【0027】
前記第1の前処理ユニットがFPGA(Field Programmable Gate Array)を備えていること、及び/又は、前記別の処理ユニットがマイクロプロセッサを備えていることが好ましい。既に冒頭で触れたように、この混成型アーキテクチャはカメラベースのコードリーダでその有効性が実証されており、その場合、FPGAは、それ自体は特別に複雑ではないものの膨大な量のデータに適用されるような処理を担う。そしてマイクロプロセッサは後段の処理ステップ、特にコードの読み取りに携わり、しかも好ましくはそれを関心領域内のみ又は他の方法で予め選択されることで低減されたデータ量のみにする。
【0028】
制御及び評価ユニットは、画像センサと第1の前処理ユニットとの間に配置され、カラーチャネルで撮影された画像ラインの色適合化を実行するように及び/又はグレースケールチャネルとカラーチャネルから少なくとも1つの別のカラーチャネルを生成するように構成された、第2の前処理ユニット、特にFPGAを備えていることが好ましい。各画像点はいずれも複数の色成分を有するベクトルとして理解することができ、その場合、実施形態によってグレースケールは色成分の1つであったり、そうでなかったりする。色適合化又は色合わせとは、各画像点にそれぞれ、予定色に相当する、色ずれを調整する新たな適合化された色成分を割り当てることを意味する。抽象的にはそれは、ある色空間からある色空間内への、一般には非線形の関数として理解することができる。典型的にはその関数は同じ色空間内に留まるが、例えばRGBで画像を撮影してCYMKで色を適合化する等の入れ替わりを排除するものではない。前記関数は例えば、グレースケールチャネル若しくはカラーチャネルが色適合化された画像点に寄与するときの重みの形で、参照表として又は好ましくはニューラルネットワークとして、実装することができる。色適合化では別のカラーチャネルを生成したり色を再構成したりすることもできる。特に、グレースケールチャネルは全ての原色の重なりを撮影するから、他の原色が記録されていれば、1つの原色を分離することができる。例えば、画像センサが白、赤及び青の受光素子だけを備えており、緑がないものとする。その場合、元々緑のカラーチャネルは存在しないが、存在するカラーチャネルから再構成できる。再構成は色適合化に続けて行ってもよいが、特に好ましくは再構成と色適合化を1つのステップで行う。
【0029】
好ましくは、グレースケールチャネルの画像ラインからのグレースケール画像がコードの読み取りに用いられる、並びに/又は、カラーチャネルの画像ラインからのカラー画像がコード付きの物体及び/若しくはコード領域を認識し、分類し及び/若しくは画像背景から区別するために用いられる。カラー画像から光学コードを読み取ることは原理的には可能である。もっとも、グレースケール画像では可能な範囲で最大の信号雑音比が得られ、画像センサの設計によっては最高の解像度も得られるため、従来のモノクロの撮影画像を用いた場合と同じ質のコード読み取りが可能である。色情報は任意の機能に利用できるが、コード読み取りと結びついた機能、例えば最初にコード領域をセグメント化又は発見するためにも利用できる。コードの下地は周囲と色が違っていることがしばしばあり、また、色情報はコード付きの物体を認識して背景から分離するために用いることができる。あるいは、カラー画像は他の何らかの機能、特にカラー画像として出力されて後段で初めて視覚化及び診断の機能又は全く別の追加的な任務に利用される。従って、コードの読み取りに特に適したグレースケール画像の撮影とその補助又は他の目的で利用可能なカラー画像の撮影という2つの機能は、特に1つの機器内で、互いに結びつけることができる。
【0030】
好ましくは2つ、3つ又は4つのライン配列が設けられ、少なくとも1つのライン配列が白に感度を有する受光素子のみを備えている。ここに挙げた数は厳密に示したものであり、最小数ではない。少数のライン配列を用いれば画像センサが非常にコンパクトな構造になる。一例は、1本のグレースケール画像データ用のラインと1本のカラー画像データ用のラインを有する2重ラインである。1本のカラー画像データ用のラインを複数色で分け合う必要があるため、少なくとも2本のカラー画像データ撮影用のラインを設けることでライン方向の解像度を高めることが好ましい。
【0031】
画像センサは、2つの原色、特に赤と青、の一方に対してそれぞれ感度を有する複数の受光素子を備える一方、第3の原色、特に緑、に対して感度を有する受光素子を備えていないことが好ましい。原色とは、加法混色の赤、緑及び青、若しくは減法混色の青緑(シアン)、深紅(マゼンタ)及び黄(イエロー)である。そのうち2つしか設けないことにより、受光素子とライン配列が削減される。欠けている原色は上述したように必要に応じて再構成することができる。代わりにそれぞれの3原色が全て存在するようにすること(RGB及びCMY、若しくはRGBW、CMYW)も考えられよう。設けられる色成分又は撮影される原色は好ましくは赤と青である。加法混色で撮影すれば特に良い結果が得られるが、それは欠けている色成分の再構成がこの色表現に限られるという意味ではない。まさにバイヤー型パターンでは2重に設けられる緑がこの好ましい実施形態では撮影されないため、そのために画像センサの受光素子を設ける必要がない。必要であれば緑を白、赤及び青の色成分から生成する。
【0032】
1本のカラーの画像ライン撮影用のライン内にあるカラー受光素子は同じ色に感度を有していることが好ましい。言い換えれば、このようなラインは例えば赤のライン、緑のライン又は青のラインのように均一である。従って、該当する色情報が最大の解像度で得られる。あるいは、1本のライン内の受光素子が例えば赤青赤青又は赤緑緑青のように交互に並べて配列された異なる色に感度を有するものであってもよい。更に、例えば赤青赤青のラインと純粋な緑のラインというように、均一なラインと混色のラインを組み合わせることも考えられる。原理的には、白とカラーの受光素子を同じライン内で混在させることも可能ではあるが、白の受光素子は完全な白のみのラインを成すことが好ましい。なぜなら、そうでなければコード読み取りにとって重大な解像度損失といずれにせよ回避可能な複雑さとが生じるからである。
【0033】
グレースケールの画像ラインはカラーの画像ラインよりも高い解像度で撮影されることが好ましい。これは、コード読み取りそのものは主としてグレースケールの画像ラインを用いて行い、色は単に補助的に利用するという場合に有利である。より低い解像度は、例えば各色の受光素子の数を少なくしたりサイズを大きくしたりすることにより、既に最初から現れていてもよい。あるいは、ハードウェアレベル又はソフトウェアレベルでビニング又はダウンサンプリングを行うことで、カラーの画像ラインの処理対象データを後のステップのために事後的に減らすことも考えられる。
【0034】
本発明に係る方法は同様のやり方で仕上げていくことが可能であり、それにより同様の利点を示す。そのような有利な特徴は、例えば本願の独立請求項に続く従属請求項に模範的に記載されているが、それらに限られるものではない。
【0035】
以下、本発明について、更なる特徴及び利点をも考慮しつつ、実施形態に基づいて模範的に、添付の図面を参照しながら詳しく説明する。図面の各図に示すものは次の通りである。
【図面の簡単な説明】
【0036】
【
図2】コードを付した物体を載せたベルトコンベアの上方に固定的に取り付けられたコードリーダの応用を示す3次元図。
【
図3】1本の赤、1本の青、及び1本の白のラインを有するライン状画像センサの概略図。
【
図4】1本の赤、1本の青、及び2本の白のラインを有するライン状画像センサの概略図。
【
図5】赤と青が交互に現れる1本のラインと、1本の白のラインとを有するライン状画像センサの概略図。
【
図6】赤と青が交互に現れる2本のラインと、2本の白のラインとを有するライン状画像センサの概略図。
【
図7】画像センサ、2つの前処理ユニット、及び別の処理ユニットを有する処理パイプラインの概略図。
【
図8】ズーム倍率z>1での伸長ズームを説明するための図。
【
図9】ズーム倍率z<1での圧縮ズームを説明するための図。
【発明を実施するための形態】
【0037】
図1はカメラベースのコードリーダ10の非常に簡略化したブロック図を示している。コードリーダ10は撮影対物レンズ16(ここでは単に簡単なレンズで表されている)を通じて検出領域14からの受信光12を捕らえる。ライン状の画像センサ18が検出領域14及び該領域に場合によって存在する物体の画像データを生成する。画像センサ18は感光性を有する受信画素22から成る少なくとも2本のライン20a~bを有しており、ライン方向には数百、数千又はそれ以上の多数の受信画素22が設けられている。
【0038】
画像センサ18の画像データは制御及び評価ユニットにより読み出される。制御及び評価ユニットは、ここでは模範的に、2つの前処理ユニット24、25と1つの別の処理ユニット26とを有するパイプライン構造として描かれている。別の実施形態では第2の前処理ユニット25がなく第1の前処理ユニット24だけである一方、更に別の実施形態では追加の前処理ユニットを設けることができる。好ましくは、前処理ユニット24、25はFPGA(Field Programmable Gate Array)を備えており、別の処理ユニット26はマイクロプロセッサ(CPU:Central Processing Unit)を備えている。一般に任意のデジタル式の計算モジュールが考慮の対象となり、FPGAやCPUの他には、例えばDSP(Digital Signal Processor)、GPU(Graphics Processing Unit)、NPU(Neural Processing Unit)、又はTPU(Tensor Processing Unit)等がある。制御及び評価ユニットは、接続された計算ユニット内、例えばコンピュータ、ローカルネットワーク、エッジデバイス又はクラウドに少なくともその一部を実装することができる。
【0039】
評価の優先的な部分は、得られた画像ラインを並べて全体画像にすることにある。その他、評価の際に画像データに対して予備的にフィルタリング、平滑化、明度正規化、特定領域への裁断、又は二値化を行うことができる。本発明ではデジタルズームが設けられるが、これについては後で
図7~9を参照してより詳しく説明する。更に、典型的には、個々の物体又はコード領域を見つけ出すセグメント化が行われた後、そこに含まれるコードの復号、即ちコードに含まれる情報の読み取りが行われる。前処理ユニット24、25と別の処理ユニット26との間の作業分担は、データ量は多いがそれ自体は単純なステップ、特に全画素にアクセスする必要があるステップを前処理ユニット24、25に処理させるようにすることが好ましい。そして、特に関心領域の内部だけのより複雑なステップを別の処理ユニット26に割り当てる。前処理ユニット24、25はストリーミングの間に、即ち画像センサ18から画像データを読み込んで別の処理ユニット26に渡す間に、もう自らの任務を果たすことができる。このような処理パイプライン又はオンザフライ処理により、画像データが全体として利用可能になるや否やそのデータは実質的にもう前処理済みになっているというリアルタイム処理が可能になる。特にデジタルズームは、ストリーミングの間にもう第1の前処理ユニット24により実行できるステップである。
【0040】
検出領域14を発射光28で十分に明るくくまなく照らすため、好ましくは、少なくとも1つの光源32と発光光学系34とを有する照明装置30が設けられている。これは図と違って外部にあってもよい。カメラ10のインターフェイス36にはデータを出力できる。それは例えば、生画像データ、前処理された画像データ、並びに、識別された物体や読み取られたコード情報又はまだ復号されていないコード画像データ等、様々な処理段階における他のデータである。逆に、該インターフェイス36又は他のインターフェイスを通じてカメラ10のパラメータ設定を行うことができる。
【0041】
図2は、コードリーダ10をベルトコンベア38付近に取り付けて使用できることを示している。ベルトコンベア38は矢印で示したようにコードリーダ10の検出領域14を通って物体40を搬送方向42に搬送する。物体40は表面にコード領域44を有している。コードリーダ10の任務は、コード領域44を認識し、そこに付されたコードを読み取り、復号して、それぞれ該当する物体40に割り当てることである。側面に付されたコード領域46も認識するため、好ましくは複数のコードリーダ10が異なる視点から用いられる。また、例えば物体40の形状を捕らえるための前段のレーザスキャナやベルトコンベア38の速さを検出するためのインクリメンタルエンコーダといった追加のセンサがあってもよい。前段のレーザスキャナの代わりに、又はそれを補完するために、コードリーダ10は統合された距離センサを備えることができる。
【0042】
コードリーダ10の検出領域14はライン状の画像センサ18に対応してライン状の読み取り野を持つ平面である。物体40が搬送方向42にライン毎に撮影されることにより、コード領域44を含む搬送中の物体40の全体画像が次第に生じてくる。その際、ライン20a~bは非常に近接して並んでいるため、それらは物体のほぼ同じ部分を捕らえる。代わりにずれを光学的に又は計算により補償することもできる。
【0043】
コードリーダ10は自らの画像センサ18でカラーの画像データ又はカラー画像を取得する。従って複数のカラーチャネルがある。なぜなら色空間は複数の色成分でしか表現できないからである。色情報は様々な目的で利用することができる。人間の観察者のために色を再現する他、例えば荷物であるか、封筒であるか、あるいは紙袋であるかを見出すために物体40を分類する作業がある。ベルトコンベアの容器(例えば深皿コンベアの深皿、又は箱)が空かどうか確認することができる。画像データを物体40又はコード領域44にセグメント化する処理を色情報に基づいて行う又はそれにより支援することができる。また、例えば危険物表示用の特定の刷り込み又はステッカーの認識等、追加的な画像認識の課題を解決したり、文字を読み取ったりできる(OCR、光学文字認識)。
【0044】
コードリーダ10はまた自らの画像センサ18でグレースケールの画像データ又はグレースケール画像若しくは白黒画像を取得する。従ってカラーチャネルに加えてグレースケールチャネルを備えている。言葉の使い方を統一すれば、これは赤、青及び緑といった本来のカラーチャネルの他に白のカラーチャネルも設けられているものと理解することができる。以下では代表としてRGBを色空間の表現に用いるが、それにより他の表現を排除するものではない。そのうちの幾つかは冒頭で模範的に挙げている。
【0045】
図3~6は白黒画像と色情報を一緒に取得するためのライン状画像センサ18の実施形態のいくつかの例を示している。これらの実施形態に共通するのは、ライン20a~dの少なくとも1本が、ハードウェアの限界内で全スペクトルにわたり光を捕らえる受信画素22から成る白のラインであるということである。別の少なくとも1本のライン20a~dは(特に対応する色フィルタにより)特定の色にのみ感度を有する受信画素22から成るカラーラインである。各カラーラインでの受信画素22の色の配置は実施形態により異なっているが、図示した実施形態での分布は、考えられる通常のRGB(ただし図示せず)、特にバイヤー型パターンとは違っている。また、図示した実施形態から外れて白の画素とカラーの画素を1本のライン内で混在させることも可能ではあるが、白の画素のみのラインが少なくとも1本なければ、結果としてコード読み取りに特に重要なグレースケールの画像ラインの解像度が低くなってしまう。
【0046】
図3は1本の赤のライン20a、1本の青のライン20b、及び1本の白のライン20cを有する実施形態を示している。即ち、各ライン20a~cそのものは均一であり、1本のライン20a~c内の受信画素22は同じ光スペクトルに感度を有している。
図4は追加の白のライン20dを有する変形を示している。
【0047】
図5の実施形態では赤に感度を有する受信画素22と青に感度を有する受信画素22が1本のカラーライン20a内で交互に混ざっている。これによれば、白のライン20bと組み合わせてラインが全部で2本しかない構造が可能である。
図6は、カラーライン20a~bと白のライン20c~dが両方とも2重になった変形を示している。
【0048】
これらの例は原色の赤と青を白と一緒にしたもの(RBW)を基にして選んだものに過ぎない。他の実施形態では別の色フィルタ及び色が用いられる。例えば、緑を赤又は青と一緒に用いること(RGW、BGW)や、3原色を全て用いること(RGBW)も考えられよう。更に、減法混色の青緑(シアン)、深紅(マゼンタ)及び黄(イエロー)を同様に組み合わせること(CMW、CYW、MYW、又はCMYW)も考慮の対象となる。
【0049】
図3~6の実施例では差し当たり赤及び青という2つの原色でのみ画像データを記録している。RGB値で色を表現したい場合は、欠けている緑をG=W-R-B又はより一般的に関数f(W,R,B)により少なくとも近似的に再構成できる。他の色が欠けている場合にも同様に再構成が可能である。このような再構成の後、又は該再構成を含むステップにおいて、好ましくは、撮影した色を予定色に補正する色適合化を行う。それには、異なるカラーチャネルとグレースケールチャネルに重みを付けるマトリクスを後ろに置いたり、撮影した各色に予定色を割り当てる参照表を提示したりすることができる。参照表の任務をニューラルネットワークが引き受けてもよい。色適合化は、画像センサ18が全ての原色を撮影し、原色の再構成が行われない場合でも可能である。
【0050】
図7は第1の前処理ユニット24、第2の前処理ユニット25及び別の処理ユニット26を有する一実施形態における制御及び評価ユニットの処理パイプラインの概略図を示している。第1の前処理ユニット24はデジタルズームを担当しているためこの名前を持っている。しかし、画像センサ18と直接接続されて処理パイプラインの最初の部分となるのは好ましくは第2の前処理ユニット25であり、それに続いて第1の前処理ユニット24と別の処理ユニット26がある。別の実施形態では第1の前処理ユニット24しかない。2つの前処理ユニット24及び25はそれぞれFPGA上に実装されていることが好ましい。
【0051】
画像センサ18は1本ずつ画像ラインを撮影し、少なくとも1本のグレースケールチャネルと2本のカラーチャネルにおいて画像情報を生成する。以下では白、赤及び青を代表例として引き合いに出す。従ってこの例では、完全なRGB色を出力する必要がある場合は緑のカラーチャネルを再構成しなければならない。代案では既に画像センサ18が1本の緑の画像ライン、場合によってはバイヤー型パターンを模して2本の緑の画像ラインを撮影し、その結果、最初からもう緑のカラーチャネルがある。模範的に挙げた色を用いた説明は、他の色感度及び/又は色空間表現を有する他の画像センサ18にも援用できる。
【0052】
グレースケールチャネル及び元のカラーチャネル内の画像情報は第2の前処理ユニット25に渡される、あるいはそこから読み取られる、若しくはストリーミングされる。第2の前処理ユニット25の色計算ユニット48が欠けているカラーチャネルを再構成する及び/又は各色を上述のように適合化する。画像情報はそれからグレースケールチャネル及びカラーチャネル(これは再構成されたカラーチャネルの分だけ拡張されている)において第1の前処理ユニット24に渡される。色を再構成する必要がなく、色適合化も行わない場合、第2の前処理ユニット25は省略可能である。更にその機能は一緒に第1の前処理ユニット24上で実装しても構わない。
【0053】
第1の前処理ユニット24は多数の処理チャネル50を備えており、好ましくはグレースケールチャネル及びカラーチャネル(再構成されたカラーチャネルがあればそれを含む)の各々に対してそれぞれ少なくとも1本の処理チャネル50がある。各処理チャネル50は自身に割り当てられたグレースケールチャネル又はカラーチャネルに対してこの後すぐに説明するデジタルズームをそれぞれ並列に実行する。これは共通のズーム制御部52により調整される。この制御部は、同期が維持されること及び全てのチャネルが統一的なやり方でズーム又はスケーリングされることを保証する。並列の処理チャネル50はリアルタイムで画像センサ18の大量のデータを処理することを可能にする。処理を高度に並列化すればするほど、特にFPGA内のクロック周波数をより低く選ぶことができ、以て動的なエネルギー損失を低減させるとともにFPGA内の配置と配線を簡素化することができる。新たにスケーリングされたカラーの画像ラインは、好ましくはまとめられて、新たにスケーリングされたグレースケールの画像ラインと同様に別の処理ユニット26に又は該ユニットがアクセスできるメモリに送られる。
【0054】
並列化の度合いをより高めるため、全てのチャネル内の画像ラインを中央で分割し、一方の半分のラインを鏡像反転させることができる。それからそれらの半分のラインを互いに並列に処理するが、そのために処理チャネル50を更に2重にすることができる。分割と鏡像反転は第1の前処理ユニット24が処理チャネル50よりも前段で又は後者の最初の部分で引き受けるが、第2の前処理ユニット25がもう引き受けてもよい。このようにすれば、ズームのアルゴリズムにより各チャネルを並列に且つ同時に中央から外へズームしたり新たにスケーリングしたりできる。中央から外へのズームは、半分のラインを互いに並列にではなく連続して処理する場合にも有意義であり得る。なぜなら、そうすればまたとりわけ、新たにスケーリングされた各ラインの中心が常に揃っていることが確実になるからである。
【0055】
適切なズーム倍率は好ましくはライン毎に新たに決定される。それはコードリーダ10の内部の距離センサ又は外部のセンサ(例えば前段のレーザスキャナ)により測定された距離情報を基礎にすることができる。別の処理ユニット26は距離測定部を制御するか、それに相当する内部又は外部の処理ユニットと接続されている。距離情報からのズーム倍率Zの決定は第1の前処理ユニット24、別の処理ユニット26及び/又は別のモジュールが担当することができる。それに応じて距離値又はズーム倍率zが第1の前処理ユニット24に通知される。更に、特にグレースケールチャネル及びカラーチャネル内の元の解像度が同じではない場合、処理チャネル50毎に異なるズーム倍率zも考えられる。
【0056】
図8はズーム倍率z>1での伸長ズーム又はズームインを説明するための図である。図中、上側にはズーム前の入力ライン、下側にはズーム後の出力ラインを示している。垂直な線は半分のラインに好ましく分割することを象徴的に示している。本例ではz=4/3=:bとa:=1/z=3/4である。見れば分かるように、線形の再スケーリング(内挿、外挿)のために、入力ラインがズーム倍率で伸長され、その後、出力ライン内に維持されている元の画素ラスタに離散化されている。また、z≠1であるため出力ラインの画素は入力ラインの両方の画素移行部と揃っていない。出力ラインの1画素は隣の又は上にある入力ラインの画素の値を重畳度に応じた重みを付けて受け取る。具体的な計算仕様を
図8に示しているが、それらは同様にして任意の個数の画素に拡張できる。ズームイン後はライン幅がもはや元のライン幅と一致しないため、好ましくは、新たにスケーリングした画像ラインを右方及び左方で元のライン幅まで切り捨てる。
【0057】
図9はズーム倍率z<1での圧縮ズーム又はズームアウトを説明するための図である。ここでは分かりやすくするため、
図8の例の全くの逆数であるz=3/4=:bを選んだ。更に今度はa:=-(1-/1/z))=1/3である。今度は伸長ではなく圧縮されており、
図9に示した計算仕様がそれに合わせて少し変わっているが、それ以外は
図8での説明を参照することができる。ズームアウト後はライン幅が狭くなっているため、欠損した画素をゼロ等の所定値で埋めることが好ましい。
【0058】
図8及び9で具体的に示した計算仕様では0.5≦z≦2という境界条件が好ましく設定されている。ただし本手法はそれ以外の値のズーム倍率zを用いる線形の再スケーリングにも同様に拡張できる。
【外国語明細書】