(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-02-02
(45)【発行日】2024-02-13
(54)【発明の名称】光学読取装置
(51)【国際特許分類】
G06K 7/10 20060101AFI20240205BHJP
【FI】
G06K7/10 428
G06K7/10 388
G06K7/10 456
(21)【出願番号】P 2020049422
(22)【出願日】2020-03-19
【審査請求日】2022-12-16
(73)【特許権者】
【識別番号】000129253
【氏名又は名称】株式会社キーエンス
(74)【代理人】
【識別番号】110001427
【氏名又は名称】弁理士法人前田特許事務所
(72)【発明者】
【氏名】永田 英純
(72)【発明者】
【氏名】山村 和照
【審査官】田名網 忠雄
(56)【参考文献】
【文献】特開2002-024751(JP,A)
【文献】特開2019-071018(JP,A)
【文献】特開2016-033788(JP,A)
【文献】特開2006-031358(JP,A)
【文献】特開2006-031605(JP,A)
【文献】特開2012-064178(JP,A)
【文献】特開平07-093458(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06K 7/10-7/14
(57)【特許請求の範囲】
【請求項1】
ライン上を搬送されているワークに付されたコードを読み取る定置式の光学読取装置であって、
前記ワークの通過する領域に向けて光を照射するための照明部と、
前記照明部から照射され、前記ワークの通過する領域から反射された光を受光し、当該ワークの通過する領域を撮像した読み取り画像を生成するための撮像部と、
前記撮像部により生成された読み取り画像のデコード処理を命令する第1のコアと、前記第1のコアにより命令された読み取り画像を取得し、取得した読み取り画像に対してデコード処理を実行する複数の第2のコアとを有する処理部と、
複数の前記第2のコアが生成したデコード結果を出力する出力部とを備え、
前記第1のコアは、前記デコード処理を即時に実行可能、または現在実行しているデコード処理の次にデコード処理を実行可能と推定される前記第2のコアにデコード処理を命令し、
複数の前記第2のコアは、前記第1のコアにより異なるタイミングで命令された読み取り画像に対して同時にデコード処理を行うことが可能に構成され
、
前記デコード処理の上限時間は、前記撮像部による読み取り画像の生成時間と、当該読み取り画像が生成されてからメモリに格納されるまでの時間とを加えた時間に、前記第2のコアの数を乗じて得られた基準時間よりも短く設定されている光学読取装置。
【請求項2】
請求項1に記載の光学読取装置において、
前記撮像部は、読み取り画像の連続生成を継続可能に構成され、
前記光学読取装置の設定時に、コードを含む読み取り画像を前記撮像部から取得し、取得した読み取り画像に対して前記処理部でデコード処理を実行してデコード処理に要する時間を計測し、計測時間に基づいてデコード処理の上限時間を自動設定するチューニング実行部を備えている光学読取装置。
【請求項3】
請求項2に記載の光学読取装置において、
前記チューニング実行部は、前
記基準時間と、前記計測時間とを比較し、前記計測時間が前記基準時間以下の場合には、当該計測時間をデコード処理の上限時間とする光学読取装置。
【請求項4】
請求項
3に記載の光学読取装置において、
前記撮像部を制御する撮像制御部を更に備え、
前記チューニング実行部は、前記基準時間と、前記計測時間とを比較し、前記計測時間が前記基準時間を超える場合には、前記計測時間をデコード処理の上限時間と
し、
前記撮像制御部は、
前記計測時間が前記基準時間を超える場合には、前記撮像部による読み取り画像の生成間隔を所定の時間間隔に固定し、
前記所定の時間間隔と、前記撮像部による読み取り画像の生成時間と、当該読み取り画像が生成されてからメモリに格納されるまでの時間とを加えた時間に、前記第2のコアの数を乗じて得られた時間よりも、前記デコード処理の上限時間が短くなるように、前記所定の時間間隔を設定する光学読取装置。
【請求項5】
請求項1から
4のいずれか1つに記載の光学読取装置において、
前記第1のコアは、読み取り画像に第1のコードと第2のコードとが含まれている場合、前記第1のコードと前記第2のコードのデコード処理をそれぞれ異なる前記第2のコアに命令する光学読取装置。
【請求項6】
請求項
5に記載の光学読取装置において、
前記第1のコアは、読み取り画像に含まれている第1のコード及び第2のコードの種別が異なる場合、前記第1のコードと前記第2のコードのデコード処理をそれぞれ異なる前記第2のコアに命令する光学読取装置。
【請求項7】
請求項1から
4のいずれか1つに記載の光学読取装置において、
前記第2のコアはそれぞれ、1次元コードのデコード処理を実行するための第1デコード処理部と、2次元コードのデコード処理を実行するための第2デコード処理部とを有し、
前記読み取り画像に1次元コード及び2次元コードが含まれている場合、前記第2のコアは、前記第1デコード処理部で1次元コードのデコード処理を実行し、前記第2デコード処理部で2次元コードのデコード処理を実行する光学読取装置。
【請求項8】
請求項1から
7のいずれか1つに記載の光学読取装置において、
前記撮像部は、前記ワークを異なる撮像条件で撮像して第1の読み取り画像及び第2の読み取り画像を生成し、
前記第1のコアは、前記第1の読み取り画像及び前記第2の読み取り画像のデコード処理をそれぞれ異なる前記第2のコアに命令する光学読取装置。
【請求項9】
請求項
8に記載の光学読取装置において、
前記撮像部の撮像条件を規定する撮像パラメータを含む複数のバンクを記憶する記憶部と、
前記記憶部に記憶された複数のバンクの中から、ユーザによる第1のバンク及び第2のバンクの選択を受け付ける受付部とを備え、
前記撮像部は、前記受付部で受け付けられた前記第1のバンクの撮像パラメータに従って前記第1の読み取り画像を生成し、前記受付部で受け付けられた前記第2のバンクの撮像パラメータに従って前記第2の読み取り画像を生成する光学読取装置。
【請求項10】
請求項1から
9のいずれか1つに記載の光学読取装置において、
前記第1のコアは、第1の読み取り画像及び第2の読み取り画像のデコード処理をそれぞれ異なるデコード条件で前記第2のコアに命令する光学読取装置。
【請求項11】
請求項1から1
0のいずれか1つに記載の光学読取装置において、
前記第1のコアは、単一のワークを撮像して生成された複数の読み取り画像のデコードをそれぞれ異なる前記第2のコアに命令した場合、デコード処理が命令された前記第2のコアのうち、いずれか1つの前記第2のコアでデコード処理が完了したことを検出すると、他の前記第2のコアのデコード処理を中止させる光学読取装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ワークを撮像することによって生成された読み取り画像に含まれている情報を読み取る光学読取装置に関する。
【背景技術】
【0002】
一般的に、コードリーダは、ワークに付されたバーコードや二次元コード等のコードをカメラによって撮像し、得られた画像に含まれるコードを画像処理によって切り出して二値化し、デコード処理して情報を読み取ることができるように構成されている(例えば特許文献1、2参照)。
【0003】
特許文献1の光学読取装置は、ワークの移動速度と、コードを構成しているセルサイズとに基づいてコードを読み取るための露光時間の上限値を定め、コードを含む複数の画像を取得して解析することで、露光時間を上記上限値以内で自動設定するように構成されている。
【0004】
特許文献2の光学読取装置は、撮像部に撮像処理を実行させるとともに、取得された画像データを共有メモリに転送する第1コアと、当該第1コアからのデコード処理要求に基づいて、共有メモリ内から画像データを読み出してデコード処理を実行する第2コアとを有している。
【先行技術文献】
【特許文献】
【0005】
【文献】特開2018-136860号公報
【文献】特開2012-64178号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
ところで、特許文献2の光学読取装置では、撮像処理を実行する第1コアと、デコード処理を実行する第2コアとを設けることで処理速度の高速化を図っている。しかしながら、例えば物流配送センター等で光学読取装置を使用する場合を想定すると、高速で流れるワークを即時に分別しなければならないので、撮像から読み取り結果出力までのより一層の高速化を達成しながら、読み取りエラーの発生頻度を低くする必要があり、これら相反する要求を両立させるための技術的困難性が極めて高かった。
【0007】
すなわち、例えば物流配送センターでは、サイズや形状が様々な搬送物(ワーク)が高速で搬送されており、タイミング良く撮像すること自体が難しい。そのため、搬送物が撮像領域を通過する際は、単一ではなく複数回の撮像(バースト撮像)が前提となるケースがある。ところが、撮像の間、搬送物は移動し続けているため、1回のデコード処理に要する時間が長いとデコード結果が出力されるまでに搬送物が流れてしまう結果となり、複数回撮像の意味が無くなる。よって、高速にデコード処理する必要がある。
【0008】
また、物流配送センターの搬送物に付されているコードは、搬送の途中で擦れたり、汚れたり、破れたりして品質が悪化する場合があるとともに、低コントラストで読み取りが不安定になりやすいという問題もある。そのため、デコード処理時間を十分に確保しておかなければ、安定した読み取りができなかった。
【0009】
さらに、物流配送センターでは搬送物が次々と高速に搬送されてくるため、撮像からデコード処理を経て読み取り結果出力までの時間が長いと、撮像した搬送物に付されているコードの読み取り結果であるのか、それとも、その後に搬送されてきた搬送物に付されているコードの読み取り結果であるのか判別できなくなるという問題がある。従って、読み取り結果は、撮像後に即時出力することが望ましい。
【0010】
つまり、高速撮像による複数画像の取得と、取得された各画像に対するデコード処理時間の十分な確保と、読み取り結果の即時出力という、互いに反する3つの条件を成立させる必要があった。これは、物流配送センターに限られる問題ではなく、その他にも各種ワークを搬送する施設や工場等でも生じ得る問題である。
【0011】
本発明は、かかる点に鑑みてなされたものであり、その目的とするところは、高速撮像を行って取得された各画像に対するデコード処理時間を十分に確保して安定したデコード結果を得て、得られたデコード結果の即時出力を可能にすることにある。
【課題を解決するための手段】
【0012】
前記目的を達成するために、本開示では、ライン上を搬送されているワークに付されたコードを読み取る定置式の光学読取装置を対象としている。光学読取装置は、前記ワークの通過する領域に向けて光を照射するための照明部と、前記照明部から照射され、前記ワークの通過する領域から反射された光を受光し、当該ワークの通過する領域を撮像した読み取り画像を生成するための撮像部と、前記撮像部により生成された読み取り画像のデコード処理を命令する第1のコアと、前記第1のコアにより命令された読み取り画像を取得し、取得した読み取り画像に対してデコード処理を実行する複数の第2のコアとを有する処理部と、複数の前記第2のコアが生成したデコード結果を出力する出力部とを備えている。前記第1のコアは、前記デコード処理を即時に実行可能、または現在実行しているデコード処理の次にデコード処理を実行可能と推定される前記第2のコアにデコード処理を命令する。複数の前記第2のコアは、前記第1のコアにより異なるタイミングで命令された読み取り画像に対して同時にデコード処理を行うことができる。
【0013】
これによれば、ライン上を搬送されているワークに照明部から光が照射されると、ワークで反射した光が撮像部によって受光され、ワーク及びそのワークに付されたコードを含む読み取り画像が生成される。搬送中の1つのワークを複数回撮像して複数の読み取り画像を生成することが可能になる。
【0014】
複数の読み取り画像、例えば第1読み取り画像、第2読み取り画像、第3読み取り画像、…が生成された場合、第1のコアが、ある第2のコアに対して第1読み取り画像のデコード処理を命令することができる。そして、第1のコアは、デコード処理を即時に実行可能な別の第2のコアに対して第2読み取り画像のデコード処理を命令する。すると、これら第2のコアは、命令された第1及び第2読み取り画像に対して同時にデコード処理を実行する。尚、第1のコアがデコード処理を実行してもよい。
【0015】
また、第1のコアは、複数の第2のコアがデコード処理を実行している場合、現在実行しているデコード処理の次にデコード処理を実行可能と推定される第2のコアに対して第3読み取り画像のデコード処理を命令するので、現在実行しているデコード処理が終了次第、第3読み取り画像のデコード処理が即時に実行される。これにより、複数の読み取り画像に対して同時にデコード処理を実行することが可能になる。
【0016】
また、デコード処理を即時に実行可能と推定される第2のコアは、デコード処理を現在実行していない第2のコアであってもよく、この場合、第1のコアは、複数の第2のコアのうち、デコード処理を現在実行していない第2のコアに対して読み取り画像のデコード処理を命令することができる。また、次にデコード処理を実行可能と推定される第2のコアは、ある規則によって導き出されるコアであってもよい。例えば、複数の第2のコアに予め順番が決められている場合には、1番目の第2のコア、2番目の第2のコア、3番目の第2のコア、…という順番でデコード処理を命令してもよく、第2のコアの順番に基づいて、次にデコード処理を実行可能な第2のコアを推定できる。つまり、ある推定基準に基づいて、デコード処理を即時に実行可能と推定、または次にデコード処理を実行可能と推定される第2のコアにデコード処理を命令すればよく、この推定は結果的に覆っても差し支えない。
【0017】
従って、複数の第2のコアが異なるタイミングで命令された読み取り画像に対して同時にデコード処理を行うことができるので、1つの読み取り画像に対してデコード処理時間を十分に確保して安定した読み取りを可能にしながら、複数の読み取り画像のデコード処理が高速化する。これにより、読み取り結果が高速に得られ、読み取り画像の生成後、読み取り結果を即時に出力することが可能になる。尚、撮像部は、一定の時間間隔ごとに読み取り画像を生成してもよい。
【0018】
第2の側面では、前記撮像部は、読み取り画像の連続生成を継続可能に構成されている。光学読取装置は、その設定時に、コードを含む読み取り画像を前記撮像部から取得し、取得した読み取り画像に対して前記処理部でデコード処理を実行してデコード処理に要する時間を計測し、計測時間に基づいてデコード処理の上限時間を自動設定するチューニング実行部を備えている。
【0019】
この構成によれば、読み取り画像の連続生成を継続することで、いわゆる無限バースト撮像を実行できる。これにより、高速で移動しているワークのコードを逃がさずに読み取り画像に取り込むことができる。
【0020】
また、チューニング実行部が、デコード処理に要する時間を計測して計測時間に基づいてデコード処理の上限時間を自動設定するので、実際の読み取り画像及びコードに適したデコード処理の上限時間とすることができる。デコード処理の上限時間とは、デコード処理のタイムアウト時間のことである。光学読取装置の運用中、例えば品質の悪いコードのようにデコード処理が長時間化してしまう場合に予め設定された上限時間に達すると、デコード処理中の第2のコアが当該デコード処理を打ち切る。
【0021】
第3の側面では、前記デコード処理の上限時間は、前記撮像部による読み取り画像の生成時間と前記第1のコアがメモリに格納した読み取り画像を前記第2のコアが読みに行くのに要する時間とを加えた時間に、前記第2のコアの数を乗じて得られた基準時間よりも短く設定されている。
【0022】
すなわち、撮像部で読み取り画像が生成された後、生成された読み取り画像を第1のコアがメモリに格納し、その格納された読み取り画像を第2のコアが読みに行くことで、当該第2のコアによるデコード処理が実行される。これが全ての第2のコアで実行されるので、1つの第2のコアにおけるデコード処理の上限時間を、読み取り画像の生成時間と第1のコアがメモリに格納した読み取り画像を第2のコアが読みに行くのに要する時間とを加えた時間に、第2のコアの数を乗じて得られた時間よりも短くしておくことで、生成された読み取り画像の全てに対してデコード処理を実行することができる。
【0023】
第4の側面では、前記チューニング実行部は、前記撮像部による読み取り画像の生成時間と前記第1のコアがメモリに格納した読み取り画像を前記第2のコアが読みに行くのに要する時間とを加えた時間に、前記第2のコアの数を乗じて得られた基準時間を得るとともに、得られた基準時間と、前記計測時間とを比較し、前記計測時間が前記基準時間以下の場合には、当該計測時間をデコード処理の上限時間とする。
【0024】
この構成によれば、光学読取装置を運用する前に行う設定時に、チューニング実行部が、読み取り画像を第2のコアにデコード処理させてデコード処理の上限時間を自動設定する。デコード処理の上限時間は、コードの種類やワークの搬送速度等によって変化するが、この上限時間を上述のように設定しておくことで、無限バースト撮像で生成された読み取り画像の全てに対してデコード処理を実行することができる。
【0025】
第5の側面では、前記チューニング実行部は、前記基準時間と、前記計測時間とを比較し、前記計測時間が前記基準時間を超える場合には、前記計測時間をデコード処理の上限時間とする。
【0026】
例えば難読コードの場合には、デコード処理に時間を要し、上記基準時間よりも長くなる場合がある。本例では、このような場合に、上記基準時間に関わらず、デコード処理の上限時間を長くすることができるので、デコード処理が途中で打ち切られることが殆ど無くなる。
【0027】
第6の側面では、前記計測時間をデコード処理の上限時間とする場合、前記撮像部による読み取り画像の生成間隔を、前記計測時間が前記基準時間以下の場合に比べて広くする固定間隔撮像モードを実行する。
【0028】
すなわち、デコード処理の上限時間が上記基準時間を超えるということは、無限バースト撮像を行ったとしても、デコードできない読み取り画像が存在することになる。この場合に、固定間隔撮像モードを実行することで、デコードできない読み取り画像を無くすことができる。
【0029】
第7の側面では、前記第1のコアは、読み取り画像に第1のコードと第2のコードとが含まれている場合、前記第1のコードと前記第2のコードのデコード処理をそれぞれ異なる前記第2のコアに命令する。
【0030】
例えば、1つの読み取り画像に第1のコードと第2のコードとが含まれている場合があり、この場合、第1のコードのデコード処理をある第2のコアに命令し、第2のコードのデコード処理を別の第2のコアに命令することで、第1のコードと第2のコードを並列でデコード処理することができ、1つの読み取り画像の処理時間を短縮できる。
【0031】
第8の側面では、前記第1のコアは、読み取り画像に含まれている第1のコード及び第2のコードの種別が異なる場合、前記第1のコードと前記第2のコードのデコード処理をそれぞれ異なる前記第2のコアに命令する。
【0032】
例えば、1つの読み取り画像に第1のコードとして1次元コード、第2のコードとして2次元コードが含まれている場合があり、この場合、1次元コードのデコード処理をある第2のコアに命令し、2次元コードのデコード処理を別の第2のコアに命令することで、種別の異なるコードを並列でデコードすることができ、1つの読み取り画像の処理時間を短縮できる。尚、第1のコード及び第2のコードの両方が1次元コードであってもよく、1次元コードの中で種別が異なっていてもよい。また、第1のコード及び第2のコードの両方が2次元コードであってもよく、2次元コードの中で種別が異なっていてもよい。
【0033】
第9の側面では、前記第2のコアはそれぞれ、1次元コードのデコード処理を実行するための第1デコード処理部と、2次元コードのデコード処理を実行するための第2デコード処理部とを有する構成とすることができる。前記読み取り画像に1次元コード及び2次元コードが含まれている場合、前記第2のコアは、前記第1デコード処理部で1次元コードのデコード処理を実行し、前記第2デコード処理部で2次元コードのデコード処理を実行することができる。
【0034】
第10の側面では、前記撮像部は、前記ワークを異なる撮像条件で撮像して第1の読み取り画像及び第2の読み取り画像を生成し、前記第1のコアは、前記第1の読み取り画像及び前記第2の読み取り画像のデコード処理をそれぞれ異なる前記第2のコアに命令することができる。これにより、異なる撮像条件で生成された第1の読み取り画像及び第2の読み取り画像のデコード処理を並行して行うことができるので、デコード結果をより高速に出力できる。
【0035】
第11の側面では、前記撮像部の撮像条件を規定する撮像パラメータを含む複数のバンクを記憶する記憶部と、前記記憶部に記憶された複数のバンクの中から、ユーザによる第1のバンク及び第2のバンクの選択を受け付ける受付部とを備え、前記撮像部は、前記受付部で受け付けられた前記第1のバンクの撮像パラメータに従って前記第1の読み取り画像を生成し、前記受付部で受け付けられた前記第2のバンクの撮像パラメータに従って前記第2の読み取り画像を生成する。
【0036】
予め複数のバンクを記憶しておくことで、ユーザがコードの種類やワーク等に応じて適切だと思われるバンクを選択した場合に、そのバンクの撮像パラメータを撮像部による撮像に反映させることができる。例えば、1つのワークに1次元コードと2次元コードとが付されていて、1次元コードと2次元コードとで異なる撮像パラメータを適用したい場合には、1次元コードに適した第1のバンクと、2次元コードに適した第2のバンクとを選択しておくことで、第1のバンクの撮像パラメータが適用された第1の読み取り画像と、第2のバンクの撮像パラメータが適用された第2の読み取り画像とを生成することができる。これにより、各読み取り画像のデコード処理の精度及び速度が向上する。
【0037】
第12の側面では、前記第1のコアは、前記第1の読み取り画像及び前記第2の読み取り画像のデコード処理をそれぞれ異なるデコード条件で前記第2のコアに命令する。
【0038】
第1の読み取り画像及び第2の読み取り画像のデコード処理を異なるデコード条件で並行して行うことができる。
【0039】
第13の側面では、前記第1のコアは、単一のワークを撮像して生成された複数の読み取り画像のデコードをそれぞれ異なる前記第2のコアに命令した場合、デコード処理が命令された前記第2のコアのうち、いずれか1つの前記第2のコアでデコード処理が完了したことを検出すると、他の前記第2のコアのデコード処理を中止させる。この中止処理は必須ではなく、第2のコアの処理に余裕があれば、各第2のコアにデコード処理を継続させてもよい。
【0040】
すなわち、複数の第2のコアにそれぞれ読み取り画像をデコード処理させると、通常、デコード処理が完了するタイミングが異なる。いずれかの第2のコアでデコード処理が完了した段階でデコード結果が得られるので、それ以後、他の第2のコアでデコード処理を継続しても意味が無い。このような場合は、当該他の第2のコアのデコード処理を中止させることができる。
【発明の効果】
【0041】
以上説明したように、本開示によれば、第1のコアが、デコード処理を即時に実行可能、または現在実行しているデコード処理の次にデコード処理を実行可能と推定される第2のコアにデコード処理を命令し、複数の前記第2のコアは、第1のコアにより異なるタイミングで命令された読み取り画像に対して同時にデコード処理を行うこことができる。これにより、高速撮像を行って取得された各画像に対するデコード処理時間を十分に確保して安定した読み取り結果を得ながら、得られた読み取り結果を即時出力することができる。
【図面の簡単な説明】
【0042】
【
図1】
図1は、本発明の実施形態に係る光学読取装置の運用時を説明する図である。
【
図2】
図2は、1次元コードと2次元コードとが付されたワークの一例を示す図である。
【
図3】
図3は、上記光学読取装置のブロック図である。
【
図4】
図4は、上記光学読取装置が有する処理部の詳細構造を示すブロック図である。
【
図6】
図6は、光学読取装置を操作ボタン側から見た図である。
【
図7】
図7は、光学読取装置を端子側から見た図である。
【
図8】
図8は、パラメータセットの表示例を示す図である。
【
図9】
図9は、コードが1種類の場合のコード探索用データ生成処理の一例を示すフローチャートである。
【
図11】
図11は、コードが2種類の場合のコード探索用データ生成処理の一例を示すフローチャートである。
【
図12】
図12は、複数の読み取り画像に対してデコード処理を実行する場合の例を示すタイミングチャートである。
【
図13】
図13は、複数の読み取り画像を複数のコア内の複数スレッドで並列処理する場合の概念図である。
【
図14】
図14は、複数の読み取り画像を複数のコア内の1つのスレッドで並列処理する場合の概念図である。
【
図15】
図15は、デコード処理の完了したコアに次のデコード処理を命令する場合のフローチャートである。
【
図16】
図16は、デコード処理を実行する各コアのキューの状態と、各コアへのデコード処理の命令タイミングとを示す図である。
【
図17】
図17は、チューニングの手順を示すフローチャートである。
【
図18】
図18は、固定間隔撮像モードのタイミングチャートである。
【
図19】
図19は、固定間隔で撮像しない場合のタイミングチャートである。
【
図20】
図20は、コアの空きを待つ場合の処理手順を示すフローチャートである。
【
図21】
図21は、画像データを格納可能なバッファを有している場合の処理手順を示すフローチャートである。
【
図22】
図22は、デコード処理が完了した後の動作例を示すタイミングチャートである。
【
図23】
図23は、デコード処理が完了した後の動作例を示すフローチャートである。
【
図24】
図24は、照明部の明るさを変化させて生成した複数の読み取り画像を異なるコアでデコード処理する場合のタイミングチャートである。
【
図25】
図25は、照明部の明るさを変化させて生成した複数の読み取り画像に含まれている種類の異なるコードを異なるコアでデコード処理する場合のタイミングチャートである。
【
図26】
図26は、光学読取装置の運用時の処理を示すフローチャートである。
【
図27】
図27は、ユーザインターフェース画像の一例を示す図である。
【発明を実施するための形態】
【0043】
以下、本発明の実施形態を図面に基づいて詳細に説明する。尚、以下の好ましい実施形態の説明は、本質的に例示に過ぎず、本発明、その適用物或いはその用途を制限することを意図するものではない。
【0044】
図1は、本発明の実施形態に係る光学読取装置1の運用時を模式的に示す図である。この例では、複数のワークWが搬送用ベルトコンベアBの上面に載置された状態で
図1における矢印Yの方向へ搬送されており、そのワークWから上方へ離れた所に、実施形態に係る光学読取装置1が設置されている。ワークWは、搬送用ベルトコンベアBの上面の幅方向中央部だけでなく、幅方向にオフセットした状態で一方側及び他方側を流れることもあり、ワークWが常に一定の位置を通過するとは限らない。
【0045】
光学読取装置1は、例えば物流配送センター等で使用することができる。物流配送センターに設置されている搬送用ベルトコンベアB上には、サイズや形状が様々な搬送物(ワークW)が高速で搬送されている。また、ワークW同士の搬送方向の間隔も狭く設定されている。さらに、
図2に示すように、ワークWには、複数のコードCD1、CD2が付されている場合があるが、1つだけ付されている場合もある。
【0046】
本例では、第1のコードCD1と第2のコードCD2との種別が異なっており、第1のコードCD1が1次元コードであり、第2のコードCD2が2次元コードである。第1のコードCD1の典型的な例は、バーコードであり、例えばJANコード、ITFコード、GS1-128等を挙げることができる。第2のコードCD2の典型的な例は、QRコード(登録商標)、マイクロQRコード、データマトリクス(Data matrix;Data code)、ベリコード(Veri code)、アズテックコード(Aztec code)、PDF417、マキシコード(Maxi code)などがある。第2のコードCD2にはスタック型とマトリクス型があるが、本発明はいずれの2次元コードに対しても適用できる。第1のコードCD1と第2のコードCD2は、ワークWに直接印刷あるいは刻印することによって付してもよいし、ラベル等に印刷した後にワークWに貼付することによって付してもよく、その手段、方法は問わない。また、ワークWには、1次元コードが複数付されていてもよいし、2次元コードが複数付されていてもよい。以下の説明では、ワークWに第1のコードCD1及び第2のコードCD2が付されていることを前提とするが、本発明はこのようなコードの付与形態に限定して適用されるものではなく、一方のコードのみ、あるいは3つ以上のコードが付されている形態にも適用することができる。
【0047】
図1に示すように、光学読取装置1は、ワークWに付された第1のコードCD1と第2のコードCD2(
図2に示す)を光学的に読み取る装置であり、具体的には、ワークWに付されている第1のコードCD1及び第2のコードCD2を撮像して読み取り画像を生成し、生成された読み取り画像に含まれる第1のコードCD1及び第2のコードCD2をデコード処理してデコード結果を出力することができるように構成されたコードリーダである。
【0048】
光学読取装置1は、その運用時に動かないようにブラケット等(図示せず)に固定して使用される定置式の光学読取装置で構成することができるが、ロボット(図示せず)や使用者等が把持して動かしながら運用してもよい。また、静止状態にあるワークWの第1のコードCD1及び第2のコードCD2を光学読取装置1によって読み取るようにしてもよい。運用時とは、搬送用ベルトコンベアBによって順次搬送されるワークWの第1のコードCD1及び第2のコードCD2を読み取る動作を行っている時である。この実施形態の光学読取装置1は、位置が変動するワークWに付された第1のコードCD1及び第2のコードCD2を読み取りたい場面に適しているが、これに限らず、位置が変動しないワークWに付された第1のコードCD1及び第2のコードCD2を読み取る場合にも使用することもできる。
【0049】
図1に示すように、光学読取装置1は、外部制御装置としてのコンピュータ100及びプログラマブル・ロジック・コントローラ(PLC)101にそれぞれ信号線101a、101aによって有線接続されているが、これに限らず、光学読取装置1、コンピュータ100及びPLC101に通信モジュールを内蔵し、光学読取装置1と、コンピュータ100及びPLC101とを無線接続するようにしてもよい。PLC101は、搬送用ベルトコンベアB及び光学読取装置1をシーケンス制御するための制御装置であり、汎用のPLCを利用することができる。
【0050】
コンピュータ100は、汎用あるいは専用の電子計算機や携帯型端末等を利用することができる。本例では、いわゆるパーソナルコンピュータを使用しており、制御部40と、記憶装置41と、表示部42と、入力部43と、通信部44とを備えている。光学読取装置1を小型化することで、光学読取装置1の表示部7やボタン8、9等だけでは、光学読取装置1の全ての設定を行うことが困難になるので、光学読取装置1とは別にコンピュータ100を用意し、コンピュータ100で光学読取装置1の各種設定を行って設定情報を光学読取装置1に転送するようにしてもよい。
【0051】
また、コンピュータ100が通信部44を備えているので、コンピュータ100と光学読取装置1とを双方向通信可能に接続して、上述した光学読取装置1の処理の一部をコンピュータ100で行うようにしてもよい。この場合、コンピュータ100の一部が光学読取装置1の構成要素の一部になる。
【0052】
制御部40は、記憶装置41に記憶されているプログラムに基づいてコンピュータ100が備えている各部を制御するユニットである。記憶装置41は、各種メモリやハードディスク、SSD(Solid State Drive)等で構成されている。表示部42は、例えば液晶ディスプレイ等で構成されている。入力部43は、キーボードやマウス、タッチセンサ等で構成されている。通信部44は、光学読取装置1と通信を行う部分である。通信部44は、光学読取装置1と接続されるI/O部、RS232C等のシリアル通信部、無線LANや有線LAN等のネットワーク通信部を有していてもよい。
【0053】
制御部40は、光学読取装置1の撮像部5の撮像条件や処理部23における画像処理条件等を設定するためのユーザインターフェース画像や、光学読取装置1から出力されたデコード結果、画像データ等を表示するためのユーザインターフェース画像等を生成し、表示部42に表示させる。表示部42は、光学読取装置1の一部を構成するものとすることができる。記憶装置41は、処理部23によりデコード処理が実行された結果であるデコード結果、撮像部5によって撮像された画像、各種設定情報等を記憶する部分である。
【0054】
また、光学読取装置1は、その運用時において、PLC101から信号線101aを介して、第1のコードCD1及び第2のコードCD2の読取の開始タイミングを規定する読取開始トリガ信号を受信する。そして、光学読取装置1は、この読取開始トリガ信号に基づいてワークWの撮像やデコード処理を行う。その後、デコード処理によって得られたデコード結果は、信号線101aを介してPLC101へ送信される。このように、光学読取装置1の運用時には、光学読取装置1とPLC101等の外部制御装置との間で、信号線101aを介して読取開始トリガ信号の入力とデコード結果の出力が繰り返し行われる。なお、読取開始トリガ信号の入力やデコード結果の出力は、上述したように、光学読取装置1とPLC101との間の信号線101aを介して行ってもよいし、それ以外の図示しない信号線を介して行ってもよい。例えば、ワークWが所定位置に到着したことを検知するためのセンサと光学読取装置1とを直接的に接続し、そのセンサから光学読取装置1へ読取開始トリガ信号を入力するようにしてもよい。また、デコード結果や画像、各種設定情報は、PLC101以外の機器、例えばコンピュータ100へ出力することもできる。
【0055】
[光学読取装置1の全体構成]
図5~
図7に示すように、光学読取装置1は、筐体2と、フロントカバー3とを備えている。
図5に示すように、筐体2の正面には、照明部4と、撮像部5と、エイマー6とが設けられている。照明部4及び撮像部5の構成については後述する。エイマー6は、例えば発光ダイオード(Light Emitting Diode)等の発光体で構成されている。このエイマー6は、光学読取装置1の前方へ向けて光を照射することによって撮像部5による撮像範囲や照明部4の光軸の目安を示すためのものである。使用者は、エイマー6から照射される光を参照して光学読取装置1を設置することもできる。
【0056】
また、
図6に示すように、筐体2の一端面には、表示部7と、セレクトボタン8と、エンターボタン9と、インジケータ10とが設けられている。表示部7の構成については後述する。セレクトボタン8及びエンターボタン9は、光学読取装置1の設定等で使用されるボタンであり、制御ユニット20に接続されている。制御ユニット20はセレクトボタン8及びエンターボタン9の操作状態を検出可能になっている。セレクトボタン8は、表示部7に表示された複数の選択肢の中から1つを選択する際に操作するボタンである。エンターボタン9は、セレクトボタン8で選択した結果を確定する際に操作するボタンである。インジケータ10は、制御ユニット20に接続されていて、たとえば発光ダイオード等の発光体で構成することができる。光学読取装置1の作動状態をインジケータ10の点灯状態によって外部に報知することができる。
【0057】
また、
図7に示すように、筐体2の他端面には、電源コネクタ11と、ネットワークコネクタ12と、シリアルコネクタ13と、USBコネクタ14とが設けられている。また、筐体2の背面には、リヤケースとなるヒートシンク15が設けられている。電源コネクタ11には、光学読取装置1に電力を供給するための電力配線が接続される。シリアルコネクタ13は、コンピュータ100及びPLC101に接続される信号線100a、101aであり、ネットワークコネクタ12は、Ethernetコネクタである。尚、Ethernet規格は一例であり、Ethernet規格以外の規格の信号線を利用することもできる。
【0058】
さらに、筐体2の内部には、
図3に示す制御ユニット20や記憶装置50、出力部60等が設けられている。これらについては後述する。
【0059】
この実施形態の説明では、光学読取装置1の正面及び背面を上述のように定義するが、これは説明の便宜を図るためだけであり、光学読取装置1の使用時における向きを限定するものではない。すなわち、
図1に示すように、光学読取装置1の正面がほぼ下に向くように設置して使用することや、光学読取装置1の正面が上に向くように設置して使用すること、あるいは光学読取装置1の正面が下に向きかつ傾斜した状態となるように設置して使用すること、光学読取装置1の正面が鉛直面に沿うように設置して使用すること等が可能である。
【0060】
[照明部4の構成]
図5に破線で示すように、照明部4は、搬送用ベルトコンベアBで搬送されるワークWの通過する領域に向けて光を照射するための部材である。照明部4から照射された光により、少なくとも搬送用ベルトコンベアBによる搬送方向の所定範囲が照明される。この所定範囲は、運用時に搬送が想定される最も大きなワークWの同方向の寸法よりも広い範囲である。照明部4により、搬送用ベルトコンベアBで搬送されるワークWに付されている第1のコードCD1及び第2のコードCD2が照明される。
【0061】
照明部4は、例えば発光ダイオード等からなる発光体4aを備えており、発光体4aは1つであってもよいし、複数あってもよい。本例では、複数の発光体4aを備えており、発光体4aの間から撮像部5が外部に臨んでいる。また、発光体4aの間からエイマー6の光が照射される。照明部4は、制御ユニット20の撮像制御部22に電気的に接続されていて制御ユニット20により制御され、任意のタイミングで点灯及び消灯させることができるようになっている。
【0062】
本例では、照明部4と撮像部5とが1つの筐体2に搭載されて一体化されているが、照明部4と撮像部5とは別体に構成されていてもよい。この場合、照明部4と撮像部5とを有線または無線接続することができる。また、後述する制御ユニット20は、照明部4に内蔵されていてもよいし、撮像部5に内蔵されていてもよい。筐体2に搭載された照明部4を内部照明と呼び、筐体2とは別体とされた照明部4を外部照明と呼ぶことにする。内部照明及び外部照明の両方を使用してワークWを照明することも可能である。
【0063】
[撮像部5の構成]
図3は光学読取装置1の構成を示すブロック図である。撮像部5は、照明部4から照射され、ワークWの通過する領域から反射された光を受光し、当該ワークWの通過する領域を撮像した読み取り画像を生成するための部材である。撮像部5としては、画素が縦横(X方向及びY方向)に並んだエリアカメラを用いることができ、これにより、2次元コードの読み取りに対応できるとともに、搬送中の1つのワークWを複数回撮像することが可能になる。
【0064】
図3に示すように、撮像部5は、少なくともワークWにおける第1のコードCD1及び第2のコードCD2が付された部分を撮像可能な撮像素子5aと、レンズ等を有する光学系5bと、オートフォーカス機構(AF機構)5cとを備えている。光学系5bには、少なくともワークWにおける第1のコードCD1及び第2のコードCD2が付された部分から反射した光が入射するようになっている。撮像素子5aは、光学系5bを通して得られた第1のコードCD1及び第2のコードCD2を含む画像を電気信号に変換するCCD(charge-coupled device)やCMOS(complementary metal oxide semiconductor)等の受光素子からなるイメージセンサである。
【0065】
AF機構5cは、光学系5bを構成するレンズのうち、合焦用レンズの位置や屈折率を変更することによってピント合わせを行う機構である。AF機構5cは制御ユニット20に接続され、制御ユニット20のAF制御部21により制御される。
【0066】
撮像素子5aは制御ユニット20の撮像制御部22に接続されている。撮像素子5aは、撮像制御部22によって制御され、予め設定された一定の時間間隔ごとにワークWの通過する領域を撮像することや、時間間隔を変化させた任意のタイミングでワークWの通過する領域を撮像することが可能に構成されている。撮像部5は、読み取り画像の連続生成を継続する、いわゆる無限バースト撮像の実行が可能に構成されている。これにより、高速で移動しているワークWのコードCD1、CD2を逃がさずに読み取り画像に取り込むことができるとともに、搬送中の1つのワークWを複数回撮像して複数の読み取り画像を生成することが可能になる。尚、撮像制御部22は、撮像部5に内蔵されていてもよい。
【0067】
撮像素子5aの受光面で受光した光の強さは、撮像素子5aによって電気信号に変換され、撮像素子5aによって変換された電気信号は、読み取り画像を構成する画像データとして制御ユニット20の処理部23に転送される。具体的には、撮像素子5aは、読み取り画像を生成した後、当該読み取り画像を一ラインごとに処理部23に転送する。一ラインとは、例えば撮像素子5aの縦方向または横方向の1列(または1行)である。読み取り画像を一ラインごとに転送するということは、撮像素子5aの縦方向の1列を構成する複数の画素の輝度値、または撮像素子5aの横方向の1列を構成する複数の画素の輝度値を処理部23に転送した後、転送した列の隣の列を構成する複数の画素の輝度値を処理部23に転送し、これを列の並び方向に順次行うことである。尚、撮像素子5aは、読み取り画像を生成した後、一ラインごとに処理部23に転送することなく、読み取り画像の全体を一度に処理部23に転送してもよい。これは例えば撮像制御部22によって制御することができる。
【0068】
[表示部7の構成]
表示部7は、たとえば有機ELディスプレイや液晶ディスプレイ等からなるものである。表示部7は、
図3に示すように制御ユニット20に接続されている。表示部7には、たとえば撮像部5で撮像されたコードCD1、CD2、コードCD1、CD2のデコード結果である文字列、読み取り成功率、マッチングレベル(読み取り余裕度)等を表示させることができる。読み取り成功率とは、複数回読み取り処理を実行したときの平均読み取り成功率である。マッチングレベルとは、デコードが成功したコードCD1、CD2の読み取りのしやすさを示す読取余裕度である。これはデコード時に発生した誤り訂正の数等から求めることができ、たとえば数値で表すことができる。誤り訂正が少なければ少ないほどマッチングレベル(読取余裕度)が高くなり、一方、誤り訂正が多ければ多いほどマッチングレベル(読取余裕度)が低くなる。
【0069】
[記憶装置50の構成]
記憶装置50は、各種メモリやハードディスク、SSD等で構成されている。記憶装置35には、デコード結果記憶部51と、画像データ記憶部52と、パラメータセット記憶部53とが設けられている。デコード結果記憶部51は、処理部23によりデコード処理が実行された結果であるデコード結果を記憶する部分である。画像データ記憶部52は、撮像部5によって撮像された画像を記憶する部分である。パラメータセット記憶部53は、コンピュータ100等の設定装置によって設定された設定情報やセレクトボタン8及びエンターボタン9によって設定された設定情報、チューニグ実行部24がチューニングを実行した結果、得られた設定情報等を記憶する部分である。このパラメータセット記憶部53には、撮像部5の撮像条件(ゲイン、照明部4の光量、露光時間等)と、処理部23における画像処理条件(画像処理フィルタの種類等)とを構成する複数のパラメータを含むパラメータセットを複数記憶することができる。
【0070】
図8は、複数のパラメータセットの表示例を示す図である。コンピュータ100の制御部40は、
図8に示すようなユーザインターフェース画像300を生成して、コンピュータ100の表示部42に表示させることができる。ユーザインターフェース画像300の上部には、複数のタブ301、302、303が設けられており、複数のタブ301、302、303の中から任意の1つを選択することが可能になっている。
【0071】
本例では、バンクのタブ302が選択された場合を示している。1つのパラメータセットを「バンク」と呼ぶことにする。
図8に示す例では、バンク1及びバンク2のみ表示しているが、バンクの数は任意に設定することができる。
【0072】
各バンクには、共通設定項目として、デコード処理のタイムアウト時間を示す「デコードタイムアウト値」、読み取り画像の白黒を反転させる「白黒反転」、筐体2に搭載された照明部4で構成された内部照明の点灯、消灯を切り替える「内部照明」、筐体2とは別体とされた照明部4で構成された外部照明の点灯、消灯を切り替える「外部照明」、コード種別を切り替える「コード詳細設定」等が設けられている。また、各バンクには、読み取り設定項目として、撮像部5による露光時間を示す「露光時間」、撮像部5のゲインを示す「ゲイン」、読み取り画像のコントラストの調整方法を示す「コントラスト調整方式」、適用する画像フィルタの種別及び順番を選択する「1番目画像フィルタ」、「2番目画像フィルタ」等が設けられている。
【0073】
この光学読取装置1では、パラメータセット記憶部53に記憶されている複数のバンクの中から、光学読取装置1の運用時に使用するバンクをユーザが選択可能になっている。すなわち、ユーザは、
図8に示すユーザインターフェース画像300を見ながらコンピュータ100の入力部43を操作し、ユーザインターフェース画像300上で任意のバンクを選択できる。この入力部43は、記憶装置50に記憶された複数のバンクの中から、ユーザによる第1のバンク(バンク1)及び第2のバンク(バンク2)の選択を受け付ける受付部である。尚、バンク1は、1次元コードを読み取るためのパラメータセットであり、バンク2は、2次元コードを読み取るためのパラメータセットである。尚、バンクの選択は、例えばユーザインターフェース画像300に表示されたボタン等(図示せず)の操作で実行可能である。
【0074】
[出力部60の構成]
光学読取装置1は出力部60を有している。出力部60は、後述する処理部23がデコード処理したデコード結果を出力する部分である。具体的に、処理部23は、デコード処理が完了すると、デコード結果を出力部60に送信する。出力部60は、処理部23から受け取ったデコード結果に関するデータを例えばコンピュータ100及びPLC101に送信する通信部で構成することができる。出力部60は、コンピュータ100及びPLC101と接続されるI/O部、RS232C等のシリアル通信部、無線LANや有線LAN等のネットワーク通信部を有していてもよい。
【0075】
[制御ユニット20の構成]
図3に示す制御ユニット20は、光学読取装置1の各部を制御するためのユニットであり、CPUやMPU、システムLSI、DSPや専用ハードウエア等で構成することができる。制御ユニット20は、後述するように様々な機能を搭載しているが、これらは論理回路によって実現されていてもよいし、ソフトウエアを実行することによって実現されていてもよい。
【0076】
制御ユニット20は、AF制御部21と、撮像制御部22と、処理部23と、チューニング実行部24と、UI管理部25とを有している。AF制御部21は、従来から周知のコントラストAFや位相差AFによって上記光学系5bのピント合わせを行う部分である。AF制御部21は、撮像部5に含まれていてもよい。
【0077】
[撮像制御部22の構成]
撮像制御部22は、撮像部5を制御する他、照明部4も制御する部分である。すなわち、撮像制御部22は、撮像素子5aのゲインを調整したり、照明部4の光量を制御したり、撮像素子5aの露光時間(シャッタースピード)を制御するユニットで構成されている。ゲイン、照明部4の光量、露光時間等は、撮像部5の撮像条件に含まれる。
【0078】
[処理部23の構成]
図4に示すように、処理部23は、前処理回路30と、メモリ31と、プロセッサ40とを備えている。撮像素子5aから転送される一ラインごとの画像データは前処理回路30に入力される。前処理回路30は、プロセッサ40の前段に配置されるプリプロセッサであり、例えばPLD(programmable logic device)で構成することができ、例としてFPGA、ASIC等を挙げることができる。
【0079】
前処理回路30は、撮像素子5から所定のライン数の画像データを取り込むたびに、当該画像データに前処理を実行する。所定のライン数の画像データは、1つの読み取り画像のうち、一部の領域を構成するデータであり、したがって、1つの読み取り画像の異なる領域に対してそれぞれ前処理が実行されることになる。
【0080】
所定のライン数とは、1以上の任意のライン数であり、コードらしさを検出するために必要なライン数である。前処理としては、例えば階調変換処理、各種画像フィルタ処理等を挙げることができる。前処理には、これら処理のうち、1つのみまたは複数が含まれていてもよい。階調変換処理の場合、撮像素子5aで取り込んだ画像データの階調を下げる処理であってもよく、具体的には、撮像素子5aで取り込んだ画像データの階調が12ビットであった場合、8ビットにする処理である。前処理には、縮小画像の生成処理が含まれていてもよい。
【0081】
前処理回路30は、前処理を実行した後、コード探索用データ生成処理を実行する。コード探索用データ生成処理は、前処理後の画像データにおける各画素の輝度値に基づいて、当該前処理後の画像データ中の各領域についてコードらしさを示す特徴量を算出する処理を含んでいる。特徴量の具体例としては、エッジ画像データを結合したものを挙げることができるが、これに限られるものではない。前処理回路30は、上記特徴量を算出した後、算出された特徴量に応じた輝度値が割り当てられた特徴量画像を生成する。
【0082】
図9に基づいて、前処理回路30が実行するコード探索用データ生成処理について説明する。
図9では、ワークWに付されたコードが1種類の場合のコード探索用データ生成処理を示しており、このコードは1次元コードであってもよいし、2次元コードであってもよい。スタート後のステップSA1では、前処理回路30が前処理を行った後の画像、即ち前処理後画像を読み込む。その後、ステップSA2に進み、前処理回路30が前処理後画像に対してエッジ検出処理を実行し、エッジデータを生成する。エッジ検出処理は、例えばソベルフィルタ等を用いることで実行できる。例えば1次元コードの場合、バーコードの回転角が0゜の場合、X方向ソベル、90゜の場合、Y方向ソベル、バーコードの回転角に前提がない場合は、X方向ソベル、Y方向ソベル画像に対してそれらを足し合わせるなどして合成した画像を生成してもよい。
【0083】
ステップSA2では、エッジ検出処理後の画像として、例えばエッジ強度画像、エッジ角度画像等を生成することができ、さらに共通の畳み込み処理や演算処理を実行した画像を生成してもよい。また、1次微分処理のみでなく、2次微分処理などもエッジ検出処理として用いることができる。
【0084】
ステップSA3では、ステップSA2で生成したエッジ画像データを取得する。その後、ステップSA4に進み、ある画素及びその近傍のエッジ画像データを統合するエッジ画像データ統合処理を実行する。例えば、エッジ画像データにおいて輝度値の大きな画素が集まる領域にコードが存在している可能性が高いので、その領域をコードの候補領域と推定することができる。エッジ画像データを構成しているある画素及びその近傍に存在するエッジ画像データを統合することで、輝度値の大きな画素が集まる領域を表現することができる。本例では、エッジ画像データの一定の領域内での集まりの程度を計るデータを生成するための積和演算処理や画素統合処理を実行することができる。例えば、特定のウインドウサイズ内の画素値を足し合わせる効果を持つ平滑化処理を用いることができる。また、縮小処理を用いてもよく、縮小処理を用いた場合、データ量が小さくなるため、走査量が少なくて済む利点がある。
【0085】
ステップSA2~SA4を経ることで、前処理回路30は、前処理後の画像データ中の各領域についてコードらしさを示す特徴量を算出し、算出された特徴量に応じた輝度値が割り当てられた特徴量画像を生成することができる。特徴量画像は、特徴量が大きな領域を小さな領域に比べて明るく表示したり、暗く表示することができ、いわゆるヒートマップ画像とすることができ、エッジデータに基づいて生成できる。つまり、画像データにエッジ検出処理を実行してエッジデータを生成した後、ある画素及びその近傍のエッジデータを統合するエッジデータ統合処理を実行してから、ステップSA5に進み、特徴量画像であるヒートマップ画像を生成することができる。
【0086】
図10Aは、
図2に示すワークWを撮像部5で撮像することによって生成された読み取り画像200の一例を示す図である。読み取り画像200には、1次元コードである第1のコードCD1と、2次元コードである第2のコードCD2とが含まれている。
【0087】
図10Bは、1次元コードらしさを示す特徴量(第1の特徴量)に応じた輝度値が割り当てられた1次元コードヒートマップ画像201の一例を示す図である。1次元コードヒートマップ画像201では、1次元コードの候補領域の輝度値が高く、それ以外の領域(1次元コードが存在しない領域)の輝度値が低くなっており、
図10Bで白い部分が1次元コードの候補領域を示し、黒い部分がそれ以外の領域を示している。
図10Bにおいて白い破線で囲んだ領域には、2次元コードが存在しているが、上記した例では1次元コードらしさの特徴量に基づいてヒートマップ画像201を生成しているため、1次元コード以外のコードの領域は輝度値が低くなる。1次元コードヒートマップ画像201は、1次元コード探索用データとしてプロセッサ40が利用する。
【0088】
上記した例では、1次元コードらしさの特徴量に基づいてヒートマップ画像201を生成しているが、これに限らず、前処理回路30によって2次元コードらしさの特徴量を算出し、2次元コードらしさの特徴量に基づいて2次元コードヒートマップ画像202(
図10Cに示す)を生成することもできる。
【0089】
図10Cは、2次元コードらしさを示す特徴量(第2の特徴量)に応じた輝度値が割り当てられた2次元ヒートマップ画像202を示す図である。2次元コードヒートマップ画像202では、2次元コードの候補領域の輝度値が高く、それ以外の領域(2次元コードが存在しない領域)の輝度値が低くなっており、
図10Cで白い部分が2次元コードの候補領域を示し、黒い部分がそれ以外の領域を示している。
図10Cにおいて白い破線で囲んだ領域には、1次元コードが存在しているが、この例では2次元コードらしさの特徴量に基づいてヒートマップ画像202を生成しているため、2次元コード以外のコードの領域は輝度値が低くなる。2次元コードヒートマップ画像202は、2次元コード探索用データとしてプロセッサ40が利用する。
【0090】
尚、
図10B、
図10Cにおける白い破線は説明のために記載しただけであり、実際のヒートマップ画像201、202には表示されない。コードの候補領域が複数あれば、複数の領域がヒートマップ画像に示されることになる。また、ヒートマップ画像201、202は、ユーザに提示してもよいし、提示しなくてもよい。
【0091】
図11は、1次元コードと2次元コードの両方が1つのワークWKに付されている場合に、1次元コードヒートマップ画像201及び2次元コードヒートマップ画像202を生成する手順を示すフローチャートである。ステップSB1~SB3は、
図9に示すフローチャートのステップSA1~SA3と同じである。ステップSB4では、1次元コード用エッジ画像データ統合処理を実行する。1次元コード用エッジ画像データ統合処理では、1次元コードの形状の特徴を利用し、エッジ方向が揃ったエッジを統合する。例えば、エッジ角度画像を生成し、エッジ角度が近しいものは足し合わせ、エッジ角度が遠い場合は引き算する。また、エッジ画像データの一定範囲内において、エッジ方向が近しい画像データを加算し、エッジ方向が異なる画像データ減算する処理を実行してもよい。その後、ステップSB6に進み、
図9のフローチャートのステップSA5で説明したように、1次元コードヒートマップ画像201(
図10B参照)を生成する。
【0092】
また、ステップSB5では、2次元コード用エッジ画像データ統合処理を実行する。2次元コード用エッジ画像データ統合処理では、2次元コードの形状の特徴を利用し、エッジ方向が不揃いなエッジを統合する。例えば、エッジ角度画像を生成し、エッジ角度が近しいものを平均化する。また、エッジ画像データの一定範囲内において、エッジ方向が異なる画像データを加算する処理を実行してもよい。その後、ステップSB7に進み、
図9のフローチャートのステップSA5で説明したように、2次元コードヒートマップ画像202(
図10C参照)を生成する。
図11のフローチャートにおいて、ステップSB4及びSB6と、ステップSB5及びSB7とは、並行して行ってもよいし、一方を先に行ってもよい。
【0093】
図4に示すように、プロセッサ40は、物理的な演算処理装置(コア)を複数有するマルチコアプロセッサであり、前処理回路30によって算出された特徴量を取得し、取得した特徴量に基づいて、読み取り画像においてコードの候補領域を決定し、当該決定された領域のデコード処理を実行し、デコード結果を生成する。生成されたデコード結果は、出力部60が出力する。
【0094】
前処理回路30によって算出された特徴量の取得形態としては、特徴量そのものであってもよいし、前処理回路30によって生成された特徴量画像(
図10B及び
図10Cに示すヒートマップ画像201、202)を取得する形態であってもよい。プロセッサ40は、特徴量画像を取得する場合、取得した特徴量画像に基づいてコードの候補領域を決定することができる。
【0095】
すなわち、プロセッサ40は、1次元コードヒートマップ画像201に基づいて第1のコードCD1の候補領域を決定するとともに、2次元コードヒートマップ画像202に基づいて第2のコードCD2の候補領域を決定する。このとき、プロセッサ40は、1次元コードヒートマップ画像201及び2次元コードヒートマップ画像202における輝度値が所定以上の領域を、それぞれ第1のコードCD1の候補領域及び第2のコードCD2の候補領域とするので、特徴量が大きな領域を正確に特定できる。この場合、決定されたそれぞれ領域のデコード処理を実行し、デコード結果を生成する。
【0096】
図4に示すように、本例では、プロセッサ40とメモリ31とが、データの送受が可能に接続されている。メモリ31は、例えばDDR RAM等の高速なメモリで構成されている。撮像素子5aから前処理回路30に転送された画像データは、プロセッサ40を介してメモリ31に格納される。このとき、プロセッサ40がメモリ31のどの番地に画像データを格納するか決定し、決定した番地に画像データを高速で格納する。撮像素子5aの撮像が行われる度に、画像データの格納処理を行うので、メモリ31には複数の画像データが格納される。プロセッサ40は、適宜メモリ31から画像データを読み出してデコード処理を実行し、その結果をメモリ31に格納する。
【0097】
[デコード処理の詳細]
プロセッサ40は、コアCR0~CR8の9つのコアを備えている。コアCR0は、撮像部5により生成された読み取り画像のデコード処理を他のコアCR1~CR8に命令するコアであり、第1のコアである。コアCR1~CR8は、コアCR0により命令された読み取り画像を取得し、取得した読み取り画像に対してデコード処理を実行するコアであり、第2のコアである。デコード処理を命令する第1のコアはコアCR0の1つであるが、デコード処理を実行する第2のコアはコアCR1~CR8の8つある。デコード処理を実行する第2のコアの数は、2つ以上であればよく、その数は特に限定されるものではない。デコード処理を実行する際、命令された読み取り画像をメモリ31からコアCR1~CR8に転送し、転送された読み取り画像に対してデコード処理を実行してもよいし、コアCR1~CR8が命令された読み取り画像をメモリ31に読みに行ってからデコード処理を実行してもよい。尚、コアCR0がデコード処理を実行してもよい。
【0098】
コアCR0は、デコード処理を即時に実行可能、または現在実行しているデコード処理の次にデコード処理を実行可能と推定されるコアCR1~CR8にデコード処理を命令する。コアCR1~CR8に対するデコード処理の命令は、通常、異なるタイミングでなされるが、各コアCR1~CR8がそれぞれデコード処理を実行することから、複数のデコード処理が並行して実行されることがある。つまり、コアCR1~CR8は、コアCR0により異なるタイミングで命令された読み取り画像に対して同時にデコード処理を行うことが可能に構成されている。
【0099】
以下、本例のデコード処理の詳細について説明する。
図12は、複数の読み取り画像に対してデコード処理を実行する場合の例を示すタイミングチャートである。
【0100】
撮像部5は、ワークWを撮像して読み取り画像を順次生成している。
図12中、C1~C10は、それぞれ1~10番目の読み取り画像生成処理を示しており、この図に示すように、撮像部5がバースト撮像していることにより、1番目の読み取り画像生成処理C1~10番目の読み取り画像生成処理C10まで連続して実行される。撮像間隔が例えば30fpsであれば、1回の読み取り画像生成処理の時間は約33msとなる。
【0101】
一方、
図12中、D1~D10は、それぞれ第1~第10のデコード処理を示している。各デコード処理に要する時間は、高速処理した場合であっても例えば50ms~100ms程度は必要であり、撮像部5による読み取り画像生成処理の時間(約33ms)に比べて大幅に長い。
【0102】
デコード処理を命令するコアCR0は、1番目の読み取り画像生成処理C1が完了すると、1番目の読み取り画像生成処理C1で生成された読み取り画像のデコード処理をコアCR1に命令する。また、コアCR0は、2番目の読み取り画像生成処理C2が完了すると、2番目の読み取り画像生成処理C2で生成された読み取り画像のデコード処理をコアCR2に命令し、3番目の読み取り画像生成処理C3が完了すると、3番目の読み取り画像生成処理C3で生成された読み取り画像のデコード処理をコアCR3に命令する。つまり、コアCR1にデコード処理を命令し、コアCR2、3にデコード処理を命令していない場合には、コアCR2、3はデコード処理を即時に実行可能なコアであると推定され、この場合、コアCR0は、コアCR2、3にデコード処理を命令する。コアCR4~8についても同様である。
【0103】
また、コアCR0は、9番目の読み取り画像生成処理C9が完了すると、9番目の読み取り画像生成処理C9で生成された読み取り画像のデコード処理をコアCR1に命令する。コアCR2~8にデコード処理を命令した後であるため、前回の命令からある程度の時間が経過しており、コアCR1は、デコード処理を即時に実行可能なコアであると推定される。この場合、コアCR1にデコード処理を命令することで、9番目の読み取り画像生成処理C9で生成された読み取り画像のデコード処理を実行できる。同様にして、10番目の読み取り画像生成処理C10で生成された読み取り画像のデコード処理をコアCR2に命令する。このように、デコード処理をコアCR1~8に順に命令することで、コアCR1~8のうちの少なくとも2つがデコード処理を同時に実行する。
【0104】
ここで、読み取り画像生成処理が完了してからコアCR0が読み取り画像をメモリ31に格納し、読み取り命令されたコアCR1~8が読み取り画像を読みに行くまでの時間を転送時間と呼ぶことにする。
【0105】
また、コアCR1~8は読み取り画像が生成されてから転送時間が経過した時点ですぐにデコード処理を実行できるので、前後の処理との関わりがなく、タイミング調整を行う必要がなくなる。さらに、撮像部5は無限バースト撮像を継続できるので、高速搬送中であってもコードを捉えることができるとともに、動画のように連続した画像を残すこともできる。
【0106】
図12におけるT1は、前回のデコード処理が完了した時から次のデコード処理が命令されるまでの時間を示している。時間T1は、デコード処理に要する時間T2に比べて大幅に長く確保することができ、言い換えるとデコード処理の上限時間を長く確保することができ、難読コードのデコードが可能になる。デコード処理の上限時間は、デコード処理のタイムアウト時間のことである。光学読取装置1の運用中、デコード処理が長時間化してしまう場合に予め設定された上限時間に達すると、デコード処理を打ち切るためにタイムアウト時間が設定される。
【0107】
図13は、複数の読み取り画像(第1~第3読み取り画像)を複数のコアCR1~3内の複数スレッド(スレッド1、2)で並列処理する場合の概念図である。この例に示すように、第1読み取り画像に1次元コードと2次元コードとが含まれている場合、第1読み取り画像に対してデコード処理するコアCR1内では、スレッド1として1次元コードのデコード処理を実行し、スレッド2として2次元コードのデコード処理を実行する。同様に、コアCR2内では、スレッド1として第2読み取り画像に含まれる1次元コードのデコード処理を実行し、スレッド2として第2読み取り画像に含まれる2次元コードのデコード処理を実行する。また、コアCR3内では、スレッド1として第3読み取り画像に含まれる1次元コードのデコード処理を実行し、スレッド2として第3読み取り画像に含まれる2次元コードのデコード処理を実行する。複数の1次元コードが付されている場合や、複数の2次元コードが付されている場合も、異なるコアにデコード処理を命令することができる。
【0108】
各コアCR1~3内のスレッド数は2つに限られるものではなく、1つであってもよいし、3つ以上であってもよい。ワークWに1次元コードのみまたは2次元コードのみ付されている場合には、各コアCR1~3ではスレッドが1つになる。
【0109】
また、
図14に示すように、コアCR0は、第1読み取り画像に含まれる1次元コードのデコード処理をコアCR1のスレッド1で実行し、第1読み取り画像に含まれる2次元コードのデコード処理をコアCR2のスレッド1で実行するように命令することもできる。第2読み取り画像についても同様に、コアCR0は、コアCR3で1次元コードのデコード処理を実行し、コアCR4で2次元コードのデコード処理を実行するように命令する。
【0110】
図15は、デコード処理の完了したコアに次のデコード処理を命令する場合のフローチャートであり、デコード処理の各コアCR1~8への割り当て順序を、コアCR0がFIFO(First in First Out)で決定する。このフローチャートは、光学読取装置1が読取開始トリガ信号を受信したタイミングでスタートし、運転停止操作がなされたタイミングで終了する。
【0111】
スタート後、ステップSC1では、撮像部5がワークWを撮像して複数の読み取り画像を順次生成する。ステップSC2では、コアCR0が、コアCR1~8に空きがあるか否かを判定する。空きとは、デコード処理を行っていないことであり、即時にデコード処理を実行可能なことである。ステップSC2でYESと判定されてコアCR1~8のうち、空いているコアがあれば、ステップSC4に進む。ステップSC4において、コアCR0は、その空いているコアに対してデコード処理を命令するので、空いているコアでデコード処理が即時実行され、その後、ステップSC1に戻る。一方、ステップSC2でNOと判定されてコアCR1~8のうち、空いているコアがない場合には、ステップSC3に進んでコアが空くのを所定時間待ち、その後、ステップSC2に進み、空いているコアがあれば、ステップSC4に進む。
【0112】
デコード処理の割り当てをFIFOで決定する場合の具体例について
図16に基づいて説明する。
図16は、コアCR1~3を有している場合について記載している。キューの状態の欄に示す番号は、空いているコアの番号であり、コアCR1が「1」、コアCR2が「2」、コアCR3が「3」にそれぞれ対応している。
【0113】
キューの状態は、最初のとき、全てのコアCR1~3が空いているので、番号1~3が積まれている。その後、1番目の読み取り画像生成処理C1の読み取り画像のデコード処理をコアCR1に命令すると、キューの状態は番号1が消えて番号2、3が積まれている。したがって、コアCR0は、2番目の読み取り画像生成処理C2の読み取り画像のデコード処理をコアCR2に命令できる。同様に、コアCR0は、3番目の読み取り画像生成処理C3の読み取り画像のデコード処理をコアCR3に命令できる。
【0114】
4番目の読み取り画像生成処理C4が完了した時点では、キューの状態に番号1のみ積まれているので、コアCR0は、5番目の読み取り画像生成処理C5の読み取り画像のデコード処理をコアCR1に命令する。このように、コアCR0がコアCR1~3の空き状況を判断し、空いているコアにデコード処理を命令するので、単純にコアCR1~3に順番にデコード処理を割り当てている場合に比べて、高速かつ定間隔での読み取りを実現し易くなる。
【0115】
[チューニング実行部24の構成]
図3に示すチューニング実行部24は、ゲイン、照明部4の光量、露光時間等の撮像条件や、処理部23における画像処理条件を変更するユニットである。処理部23における画像処理条件とは、画像処理フィルタの係数(フィルタの強弱)や、複数の画像処理フィルタがある場合に画像処理フィルタの切替、種類の異なる画像処理フィルタの組み合わせ等である。搬送時のワークWに対する外光の影響や、コードCD1、CD2が付されている面の色及び材質等によって適切な撮像条件及び画像処理条件は異なる。よって、チューニング実行部24は、より適切な撮像条件及び画像処理条件を探索して、AF制御部21、撮像制御部22、処理部23による処理を設定する。画像処理フィルタは、従来から周知の各種フィルタを使用することができる。
【0116】
光学読取装置1を運用する前には、運用準備段階として、光学読取装置1の設定が行われる。光学読取装置1の設定時には、光学読取装置1に信号線101aを介して接続されたコンピュータ100から、設定用の各種コマンドを送信することにより、各種設定を行う。この設定時に、上記チューニング実行部24によるチューニングが行われる。チューニングの具体例について
図17に基づいて説明する。チューニングの開始後、ステップSD1では、ワークWに付されているコードCD1、CD2を撮像部5により撮像して読み取り画像を生成する。
【0117】
そして、ステップSD2に進み、生成された読み取り画像に含まれるコードCD1、CD2を処理部23でそれぞれ探索してデコード処理し、処理部23では、デコード処理が成功したコードCD1、CD2の読み取りのしやすさを示す読取余裕度を解析する。その後、ステップSD3に進み、チューニング実行部24は、処理部23で解析された読取余裕度が高くなるように、撮像条件の変更、画像処理フィルタの適否、適用する画像処理フィルタの強弱を設定する。
【0118】
ステップSD4では、デコード処理に要する時間を計測する。ステップSD5では、デコード処理時間が最速撮像間隔デコード時間以内であるか否か判定する。最速撮像間隔デコード時間は、撮像部5による読み取り画像の生成時間と転送時間とを加えた時間に、コアCR1~8の数を乗じて得られた時間(基準時間)である。例えば、撮像部5による読み取り画像の生成時間をA、コアCR0が、生成された読み取り画像をメモリ31に格納し、コアCR1~CR8が読みに行くのに要する時間(転送時間)をB、コアCR1~8の数をCとした場合、以下の式で求められる時間が最速撮像間隔デコード時間である。
【0119】
最速撮像間隔デコード時間=(A+B)×C
ステップSD5においてYESと判定されて、ステップSD4で計測されたデコード処理時間が最速撮像間隔デコード時間以内であれば、ステップSD6に進み、ステップSD4で計測されたデコード処理時間をデコード処理の上限時間とする。つまり、チューニング実行部24は、光学読取装置1の設定時に、コードを含む読み取り画像を撮像部5により生成し、生成された読み取り画像に対して処理部23でデコード処理を実行してデコード処理に要する時間を計測し、計測時間に基づいてデコード処理の上限時間を自動設定する。尚、デコード処理の上限時間は、最速撮像間隔デコード時間よりも短い時間となるように自動で設定することもできる。
【0120】
一方、ステップSD5においてNOと判定されて、ステップSD4で計測されたデコード処理時間が最速撮像間隔デコード時間を超えている場合には、計測時間をデコード処理の上限時間とするとともに、ステップSD7に進み、固定間隔撮像モードに設定する。固定間隔撮像モードについては後述する。
【0121】
ステップSD6及びSD7を経た後、ステップSD8に進み、設定条件を記憶する。設定条件は、
図8に示すようなバンクの形態で記憶することができる。
【0122】
図18は、固定間隔撮像モードのタイミングチャートである。この図では、コアCR0を省略しているが、デコード処理の命令はコアCR0が実行する。また、コアCR1~3を有している例を示しているが、コアの数は問わない。
【0123】
固定間隔撮像モードは、上述したチューニングの結果、バースト撮像の実行が適していない場合に選択されるモードである。固定間隔撮像モードの場合、
図18にC1~C5で示すように撮像部5が断続的に撮像するので、例えば1番目の読み取り画像生成処理C1が完了しても即時に2番目の読み取り画像生成処理C2が開始されずに、所定の時間間隔をあけて2番目の読み取り画像生成処理C2が開始される。コアCR0は、1番目の読み取り画像生成処理C1が完了すると、1番目の読み取り画像生成処理C1で生成された読み取り画像のデコード処理をコアCR1に命令する。2番目以降の読み取り画像に対しても順次デコード処理が実行される。
【0124】
この固定間隔撮像モードは、1つの読み取り画像に対するデコード処理の時間を長くする必要がある場合に適用するモードであることから、撮像間隔が広くなるが、その間隔は所定の時間間隔に固定されているので、撮像間隔が変化することなく、撮像の間にワークWが通り過ぎないようにすることができる。
【0125】
一方、
図19は、固定間隔で撮像しない場合のタイミングチャートである。この例もコアCR1~3を有している例である。1~3番目の読み取り画像生成処理C1~C3で生成された読み取り画像は、コアCR1~CR3でそれぞれデコード処理を実行する。ところが、コアCR1~CR3におけるデコード処理時間が長いため、4番目の読み取り画像生成処理C4が完了しても、その処理で生成された読み取り画像をデコード処理可能なコアが存在しないことがある。よって、コアCR1のデコード処理が完了するのを待ってから、4番目の読み取り画像生成処理C4で生成された読み取り画像をコアCR1でデコード処理する。この場合、4番目の読み取り画像生成処理C4が完了した後、5番目の読み取り画像生成処理C5を開始するまで時間間隔が生じる。
【0126】
つまり、
図20のフローチャートに示すように、光学読取装置1が読取開始トリガ信号を受信したタイミングでスタートし、スタート後、ステップSE1で読み取り画像を生成した後、ステップSE2でコアに空きがあるか否かを判定した後、空いているコアがあればステップSE3に進んで空いているコアにデコード処理を命令する一方、空いているコアがなければステップSE4に進んでコアの空きを待った後、空いたコアに対してデコード処理を命令する。
【0127】
また、コアに空きがない場合、画像データをバッファに一時的に格納しておくことができる。つまり、
図21のフローチャートに示すように、光学読取装置1が読取開始トリガ信号を受信したタイミングでスタートし、スタート後、ステップSF1で読み取り画像を生成した後、ステップSF2でコアに空きがあるか否かを判定した後、空いているコアがあればステップSF3に進んで空いているコアにデコード処理を命令する。一方、空いているコアがなければステップSF4に進んでバッファに空きがあるか否かを判定した後、バッファに空きがあればステップSF5に進んで画像データをバッファに一時的に格納しておく。バッファに空きがなければステップSF6に進んでバッファまたはコアの空きを待った後、バッファが空けばそこに画像データを格納し、コアがあけばそのコアに対してデコード処理を命令する。
【0128】
バッファの容量には限りがあるため、いずれは画像生成処理の間があくことが考えられる。画像生成処理の間が長くなると、その間にワークWが通り過ぎてしまう場合があるので、固定間隔撮像モードの方が好ましいが、場合によっては
図19のタイミングチャートに示すような運用モードも可能である。
【0129】
また、デコード処理を実行するコアのうち、いずれかのコアのデコード処理が完了した時点で、他のコアのデコード処理を全て終了させることもできる。
図22は、4番目の読み取り画像生成処理C4で生成された読み取り画像のデコード処理D4がコアCR1で完了した場合を示しており、このデコード処理が完了すると、コアCR2で実行中の5番目の読み取り画像生成処理C5で生成された読み取り画像のデコード処理D5を中止するとともに、6番目の読み取り画像生成処理C6で生成された読み取り画像のデコード処理D6は実行しない。デコード処理D5の中止と同時に、またはデコード処理D5の中止後に、デコード処理D4によるデコード結果を出力する。
【0130】
すなわち、複数のコアCR1~CR3にそれぞれ読み取り画像をデコード処理させると、通常、デコード処理が完了するタイミングが異なる。例えばコアCR1でデコード処理が完了した段階でデコード結果が得られるので、それ以後、他のコアCR2、CR3でデコード処理を継続しても意味が無い。このような場合は、コアCR2、CR3のデコード処理を中止させることができる。
【0131】
具体的には、
図23のフローチャートのスタートのタイミングは光学読取装置1が読取開始トリガ信号を受信したタイミングであり、スタート後、ステップSG1で読み取り画像を生成した後、ステップSG2でコアに空きがあるか否かを判定した後、空いているコアがあればステップSG3に進んで空いているコアにデコード処理を命令する。空いているコアがない場合には、ステップSG4に進んでコアが空くのを所定時間待った後、スタートに戻る。ステップSG5では、いずれかのコアでデコード処理が完了したか否かを判定する。いずれかのコアでデコード処理が完了していない場合には、スタートに戻る一方、完了した場合には、ステップSG6に進み、全てのコアでデコード処理を終了する。これにより、次の読取開始トリガ信号の受信に備えて待機状態にすることができる。
【0132】
図24は、照明部4の明るさを変化させて生成した複数の読み取り画像をデコード処理する場合のタイミングチャートである。1、3、5番目の読み取り画像生成処理C1、C3、C5では照明部4の明るさを「10」とし、2、4、6番目の読み取り画像生成処理C2、C4、C6では照明部4の明るさを「20」としている。明るさ「20」は「10」よりも明るい。つまり、撮像部5は、ワークWを異なる撮像条件で撮像して第1の読み取り画像(1、3、5番目の読み取り画像生成処理C1、C3、C5で生成された読み取り画像)と、第2の読み取り画像(2、4、6番目の読み取り画像生成処理C2、C4、C6で生成された読み取り画像)とを生成する。
【0133】
コアCR0は、撮像条件の異なる1番目の読み取り画像生成処理C1で生成された読み取り画像と、2番目の読み取り画像生成処理C2で生成された読み取り画像とを、それぞれ、異なるコアCR1、CR2でデコード処理させる。また、コアCR0は、撮像条件の異なる3番目の読み取り画像生成処理C3で生成された読み取り画像と、4番目の読み取り画像生成処理C4で生成された読み取り画像とを、それぞれ、異なるコアCR3、CR1でデコード処理させる。
【0134】
図25は、照明部4の明るさを変化させて生成した複数の読み取り画像に含まれている種類の異なるコード(1次元コード、2次元コード)を異なるコアでデコード処理する場合のタイミングチャートである。この例は、ワークWに、例えば1次元コード(CODE128)と2次元コード(QR)とが付されていて、2次元コードが1次元コードよりも遠くにある場合を想定している。この場合、照明部4の明るさを「10」とし、相対的に近い1次元コードの撮像に適した明るさとして1、3、5番目の読み取り画像生成処理C1、C3、C5を実行する。一方、相対的に遠い2次元コードの撮像に適した明るさとして、照明部4の明るさを「20」とし、2、4、6番目の読み取り画像生成処理C2、C4、C6を実行する。このとき、
図8に示すバンク1の撮像パラメータに従って1、3、5番目の読み取り画像生成処理C1、C3、C5を実行し、バンク2の撮像パラメータに従って2、4、6番目の読み取り画像生成処理C2、C4、C6を実行してもよい。
【0135】
コアCR0は、撮像条件の異なる1番目の読み取り画像生成処理C1で生成された読み取り画像と、2番目の読み取り画像生成処理C2で生成された読み取り画像とを、それぞれ、コアCR1、CR2でデコード処理させ、コアCR1では1次元コードのデコード処理、コアCR2では2次元コードのデコード処理を実行する。また、コアCR0は、撮像条件の異なる3番目の読み取り画像生成処理C3で生成された読み取り画像と、4番目の読み取り画像生成処理C4で生成された読み取り画像とを、それぞれ、コアCR3、CR1でデコード処理させ、コアCR3では1次元コードのデコード処理、コアCR1では2次元コードのデコード処理を実行する。
【0136】
また、撮像条件が異なる場合と同様に、撮像部5は、ワークWを異なるデコード条件で撮像して第1の読み取り画像及び第2の読み取り画像を生成することもできる。この場合も、コアCR0は、異なるデコード条件で生成された第1の読み取り画像及び第2の読み取り画像のデコード処理をそれぞれ異なるコアに命令することができる。
【0137】
[光学読取装置1の運用]
図26は、光学読取装置1の運用時の処理を示している。光学読取装置1の運用時には、読取開始トリガ信号を受信するとステップSH1が開始される。ステップSH1では、撮像部5がワークWを撮像する。ステップSH2では、ステップSH1の撮像によって得られた画像データによって読み取り画像を生成し、前処理回路30に出力する。このとき、一ラインごとの画像データが前処理回路30に入力される。尚、一ラインごとの画像データとせずに、複数ラインごと、または1つの読み取り画像を構成する画像データの全てを前処理回路30に入力してもよい。
【0138】
ステップSH3では、前処理回路30が画像データに対して例えば階調変換処理、各種画像フィルタ処理等の前処理を実行し、ステップSH4では前処理後画像を生成する。その後、ステップSH5に進み、前処理後の画像データにおける各画素の輝度値に基づいて、当該前処理後の画像データ中の各領域についてコードらしさを示す特徴量を算出し、算出された特徴量に応じた輝度値を割り当てることによって
図10Bや
図10Cに示すヒートマップ画像(コード探索用データ)を生成する。この処理では、エッジデータの生成、エッジデータ統合処理等が実行される。コード探索用データを生成した後、ステップSH6に進んでコード探索用データをプロセッサ40に出力する。
【0139】
プロセッサ40は、ステップSH7においてコード探索用データを利用してコード探索処理を実行する。すなわち、コード探索用データが
図10Bや
図10Cに示すヒートマップ画像である場合、輝度値が高い領域がコードの候補領域に対応しているので、プロセッサ40は、ヒートマップ画像の中で輝度値が高い領域を探索する。
【0140】
ステップSH8ではコードの候補領域を決定する。その後、ステップSH9に進み、プロセッサ40のコアCR0がコアCR1~8に対してデコード処理を命令する。デコード処理後、ステップSH10でデコード結果を取得し、外部機器に出力する。
【0141】
[ユーザインターフェース画像]
図27は、ユーザインターフェース画像300の一例を示す図であり、複数のタブ301、302、303の中から読み取りのタブ301が選択された場合を示している。ユーザインターフェース画像300には、撮像部5が撮像した読み取り画像を表示する読み取り画像表示領域304と、チューニング結果を表示するチューニング結果表示領域305とが設けられている。チューニング結果表示領域305には、例えば読み取りやすさと明るさとの関係を示すグラフ等が表示される。
【0142】
[実施形態の作用効果]
以上説明したように、この実施形態によれば、撮像部5から一ラインごとに画像データを取り込みながら、コードらしさを示す特徴量を算出し、この特徴量に基づいてコードの候補領域を決定し、決定された領域のデコード処理を実行するので、コード探索を行うにあたり、画像全体の走査が終わるまで待つ必要はなく、撮像部5からの画像データの取り込み、特徴量の算出、コードの候補領域の決定を並行して行うことが可能になる。これにより、読み取り画像のサイズが大きくても、デコード結果の出力タイミングを早めることが可能になる。
【0143】
また、デコード処理は、コアCR1~CR8のうち、複数のコアで同時に実行することができる。つまり、複数のコアが異なるタイミングで命令された読み取り画像に対して同時にデコード処理を行うことができるので、1つの読み取り画像に対してデコード処理時間を十分に確保して安定した読み取りを可能にしながら、複数の読み取り画像のデコード処理が高速化する。これにより、読み取り結果が高速に得られ、読み取り画像の生成後、読み取り結果を即時に出力することが可能になる。
【0144】
上述の実施形態はあらゆる点で単なる例示に過ぎず、限定的に解釈してはならない。さらに、特許請求の範囲の均等範囲に属する変形や変更は、全て本発明の範囲内のものである。
【産業上の利用可能性】
【0145】
以上説明したように、本発明に係る光学読取装置は、例えばワークに付されたバーコードや2次元コード等のコードを読み取る場合に使用することができる。
【符号の説明】
【0146】
1 光学読取装置
4 照明部
5 撮像部
23 処理部
24 チューニング実行部
30 前処理回路
40 プロセッサ
43 入力部(受付部)
50 記憶装置(記憶部)
60 出力部
CD1 第1のコード(1次元コード)
CD2 第2のコード(2次元コード)
CR0 コア(第1のコア)
CR1~8 コア(第2のコア)
W ワーク