(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024100670
(43)【公開日】2024-07-26
(54)【発明の名称】コードリーダ及びコード読み取り方法
(51)【国際特許分類】
G06K 7/10 20060101AFI20240719BHJP
【FI】
G06K7/10 428
G06K7/10 416
【審査請求】未請求
【請求項の数】10
【出願形態】OL
(21)【出願番号】P 2023146156
(22)【出願日】2023-09-08
(31)【優先権主張番号】P 2023003906
(32)【優先日】2023-01-13
(33)【優先権主張国・地域又は機関】JP
(71)【出願人】
【識別番号】000129253
【氏名又は名称】株式会社キーエンス
(74)【代理人】
【識別番号】110001427
【氏名又は名称】弁理士法人前田特許事務所
(72)【発明者】
【氏名】大堀 宏海
(72)【発明者】
【氏名】田近 太一
(57)【要約】
【課題】寸法測定センサのようなワークの寸法を測定するためのセンサを設けなくても、コードが存在する領域を自動で検出して高速な読み取りを可能にする。
【解決手段】コードリーダ1は、ワークに付されたコードからの反射光を集光するレンズ31aと、レンズ31aの光軸に対して傾斜した受光面を有する画像センサ31bとからなるシャインプルーフ光学系31を有する撮像部3と、撮像部3から出力されたコード画像に基づいてコード領域を特定し、特定されたコード領域からコードを検出するコード検出部43と、コード検出部43により検出されたコードをデコードするデコード部44とを備えている。
【選択図】
図3
【特許請求の範囲】
【請求項1】
コンベア上を移動するワークに付されたコードを読み取るコードリーダであって、
ワークに照明光を照射する照明部と、
ワークに付されたコードからの反射光を集光するレンズと、当該レンズの光軸に対して傾斜した受光面を有する画像センサとからなるシャインプルーフ光学系を有し、前記受光面で受光した受光量に基づいてコードが含まれるコード画像を生成し、出力する撮像部と、
前記撮像部から出力されたコード画像に基づいてコード領域を特定し、特定されたコード領域からコードを検出するコード検出部と、
前記コード検出部により検出されたコードをデコードするデコード部とを備える、
コードリーダ。
【請求項2】
請求項1に記載のコードリーダにおいて、
前記コードリーダは、前記コンベアの上方に設置された際に、当該コンベアに対して略垂直な方向に沿った被写界深度を形成することが可能であり、
前記コード検出部は、前記ワークと前記撮像部の距離によって変化する前記画像センサ上における前記ワークの写りこみの位置に応じて、コードの検出基準を異ならせることを特徴とする、コードリーダ。
【請求項3】
請求項2に記載のコードリーダにおいて、
前記コード検出部は、前記コード画像に基づいてエッジを抽出し、抽出されたエッジが存在する領域を前記コード領域として特定することを特徴とする、コードリーダ。
【請求項4】
請求項3に記載のコードリーダにおいて、
前記コード検出部は、前記ワークが前記撮像部に対して近方に位置する場合は、遠方に位置する場合に比べて前記エッジの周波数が低い領域をコード領域として特定し、前記ワークが前記撮像部に対して遠方に位置する場合は近方にある場合に比べて前記エッジの周波数が高い領域をコード領域として特定するように、前記コード画像から評価値を算出することを特徴とする、コードリーダ。
【請求項5】
請求項4に記載のコードリーダにおいて、
前記コード検出部は、前記コード画像に対して、異なる周波数のエッジを抽出するための複数のエッジ抽出フィルタを適用することによって複数のエッジ画像を生成し、生成した各エッジ画像のエッジに基づいて、前記コード領域を特定することを特徴とする、コードリーダ。
【請求項6】
請求項5に記載のコードリーダにおいて、
前記コード検出部は、相対的に周波数が高いエッジ領域を抽出するための第1エッジ抽出フィルタと、相対的に周波数が低いエッジ領域を抽出するための第2エッジ抽出フィルタを前記コード画像に対して適用可能に構成され、前記第1エッジ抽出フィルタを前記コード画像に適用することにより、前記撮像部に対して遠方に位置するコードを検出し、前記第2エッジ抽出フィルタを前記コード画像に適用することにより、前記撮像部に対して近方に位置するコードを検出することを特徴とする、コードリーダ。
【請求項7】
請求項4に記載のコードリーダにおいて、
前記コード検出部は、前記ワークが前記撮像部に対して近方に位置する場合に、前記ワークが前記画像センサに写る位置に対して相対的に周波数が低いエッジ領域を抽出するためのカーネル係数でエッジ抽出を行い、前記ワークが前記撮像部に対して遠方に位置する場合に、前記ワークが前記画像センサに写る位置に対して相対的に周波数が高いエッジ領域を抽出するためのカーネル係数でエッジ抽出を行うことを特徴とする、コードリーダ。
【請求項8】
請求項3に記載のコードリーダにおいて、
前記コード検出部は、前記ワークが前記撮像部に対して近方に位置し、かつ相対的に輝度が低いエッジは、相対的に輝度が高いエッジよりも、評価値を抑え、前記ワークが前記撮像部に対して遠方に位置し、かつ相対的に輝度が高いエッジは、相対的に輝度が低いエッジよりも、評価値が抑えられるように、前記評価値を算出することを特徴とする、コードリーダ。
【請求項9】
請求項5に記載のコードリーダにおいて、
読取対象のコード領域を記憶する記憶部を更に備え、
前記コード検出部は、前記記憶部に記憶されたコード領域に対応するエッジ抽出フィルタを、前記コード画像に対して適用することを特徴とする、コードリーダ。
【請求項10】
コンベア上を移動するワークに付されたコードを読み取るコード読み取り方法であって、
ワークに照明光を照射する照明ステップと、
ワークに付されたコードからの反射光を集光するレンズと、当該レンズの光軸に対して傾斜した受光面を有する画像センサとからなるシャインプルーフ光学系を有する撮像部でワークを撮像し、前記受光面で受光した受光量に基づいてコードが含まれるコード画像を生成し、出力する撮像ステップと、
前記撮像ステップで出力されたコード画像に基づいてコード領域を特定し、特定されたコード領域からコードを検出するコード検出ステップと、
前記コード検出ステップで検出されたコードをデコードするデコードステップとを備える、
コード読み取り方法。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、ワークに付されたコードを読み取るコードリーダ及びコード読み取り方法に関する。
【背景技術】
【0002】
例えば多数の物品(以下、ワークという)を取り扱っている物流現場では、各ワークにコードを付しておき、コンベアで搬送する途中段階にあるワークのコードをコードリーダで読み取り、読取結果に応じてワークを仕分けることが行われている。
【0003】
また、例えば物品の流通経路を製造段階から消費段階あるいは廃棄段階まで追跡可能にする、いわゆるトレーサビリティを目的としてコードリーダが使用されることもあり、コードリーダは様々な分野で利用されている。
【0004】
一般的に、コードリーダは、ワークに付されたコードを撮像部によって撮影し、得られた画像に含まれるコードを画像処理によって切り出して二値化し、デコード処理して情報を読み取ることができるように構成されている。
【0005】
この種のコードリーダとしては、コンベア面に対して垂直な方向の被写界深度が深くなるように、撮像部の受光面をレンズの光軸に対して傾斜させた、いわゆるシャインプルーフ光学系を備えたものが知られている(例えば特許文献1参照)。この特許文献1のコードリーダでは、寸法測定センサを利用してワーク高さを測定し、測定したワーク高さに応じたピクセルを読み出すことにより、読み取り処理を高速化するようにしている。
【先行技術文献】
【特許文献】
【0006】
【発明の概要】
【発明が解決しようとする課題】
【0007】
ところで、被写界深度が深くなるシャインプルーフ光学系を用いると、様々な大きさのコードが一度に視野に入ったり、ピントが合ったりする場合があり、コードの探索対象候補が増え、その結果、処理に時間がかかってしまう場合がある。
【0008】
そこで、特許文献1のコードリーダのようにワーク高さを測定するための寸法測定センサを設け、測定したワーク高さに応じたピクセルを読み出すことにより、読み取り処理を高速化することが考えられるが、寸法測定センサが必要になる分、システムが大がかりなものになってしまう。
【0009】
本開示は、かかる点に鑑みたものであり、その目的とするところは、寸法測定センサのようなワークの寸法を測定するためのセンサを設けなくても、コードが存在する領域を自動で検出して高速な読み取りを可能にすることにある。
【課題を解決するための手段】
【0010】
上記目的を達成するために、本態様では、コンベア上を移動するワークに付されたコードを読み取るコードリーダを前提とすることができる。コードリーダは、ワークに照明光を照射する照明部と、ワークに付されたコードからの反射光を集光するレンズと、当該レンズの光軸に対して傾斜した受光面を有する画像センサとからなるシャインプルーフ光学系を有し、前記受光面で受光した受光量に基づいてコードが含まれるコード画像を生成し、出力する撮像部と、前記撮像部から出力されたコード画像に基づいてコード領域を特定し、特定されたコード領域からコードを検出するコード検出部と、前記コード検出部により検出されたコードをデコードするデコード部とを備えている。
【0011】
この構成によれば、撮像部がシャインプルーフ光学系を有しているので、被写界深度を例えばワークの高さ方向に深くすることが可能になる。これにより、高さの異なる複数のワークがコンベア上を移動する現場であっても、各ワークに付されているコードにピントが合ったコード画像を出力できる。撮像部から出力されたコード画像に基づいて特定されたコード領域からコード検出部がコードを検出し、検出されたコードをデコード部がデコードするので、デコード領域がコード画像の一部の領域となるように限定される。従って、高速な読み取りが可能になる。
【0012】
前記コードリーダは、前記コンベアの上方に設置することもできる。コードリーダをコンベアの上方に設置した場合には、当該コンベアに対して略垂直な方向に沿った被写界深度を形成することが可能である。前記ワークと前記撮像部の距離が変化すると、前記画像センサ上における前記ワークの写りこみの位置が変化することになる。前記コード検出部は、前記ワークと前記撮像部の距離によって変化する前記画像センサ上における前記ワークの写りこみの位置に応じて、コードの検出基準を異ならせることで写りこみの位置に適した検出基準でコードを検出できる。
【0013】
前記コード検出部は、前記コード画像に基づいてエッジを抽出することもできる。この場合、前記コード検出部は、抽出されたエッジが存在する領域を前記コード領域として特定できる。
【0014】
前記コード検出部は、前記ワークが前記撮像部に対して近方に位置する場合は、遠方に位置する場合に比べて前記エッジの周波数が低い領域をコード領域として特定し、前記ワークが前記撮像部に対して遠方に位置する場合は近方にある場合に比べて前記エッジの周波数が高い領域をコード領域として特定するように、前記コード画像から評価値を算出することができる。これにより、ワークと撮像部との距離によって変化するエッジの周波数に応じた評価値に基づいてコード領域を特定できる。
【0015】
前記コード検出部は、前記コード画像に対して、異なる周波数のエッジを抽出するための複数のエッジ抽出フィルタを適用することもできる。この場合、前記コード検出部は、複数のエッジ画像を生成し、生成した各エッジ画像のエッジに基づいて、前記コード領域を特定できる。
【0016】
具体的には、前記コード検出部は、相対的に周波数が高いエッジ領域を抽出するための第1エッジ抽出フィルタと、相対的に周波数が低いエッジ領域を抽出するための第2エッジ抽出フィルタを前記コード画像に対して適用できる。前記第1エッジ抽出フィルタを前記コード画像に適用することにより、前記撮像部に対して遠方に位置するコードを検出することができ、また、前記第2エッジ抽出フィルタを前記コード画像に適用することにより、前記撮像部に対して近方に位置するコードを検出することができる。
【0017】
前記コード検出部は、前記ワークが前記撮像部に対して近方に位置する場合に、前記ワークが前記画像センサに写る位置に対して相対的に周波数が低いエッジ領域を抽出するためのカーネル係数でエッジ抽出を行うことができる。また、前記コード検出部は、前記ワークが前記撮像部に対して遠方に位置する場合に、前記ワークが前記画像センサに写る位置に対して相対的に周波数が高いエッジ領域を抽出するためのカーネル係数でエッジ抽出を行うこともできる。
【0018】
前記コード検出部は、前記ワークが前記撮像部に対して近方に位置し、かつ相対的に輝度が低いエッジは、相対的に輝度が高いエッジよりも、評価値を抑えるように、評価値を算出することができる。また、前記コード検出部は、前記ワークが前記撮像部に対して遠方に位置し、かつ相対的に輝度が高いエッジは、相対的に輝度が低いエッジよりも、評価値が抑えられるように、前記評価値を算出することができる。
【0019】
コードリーダは、読取対象のコード領域を記憶する記憶部を更に備えていてもよい。この場合、前記コード検出部は、前記記憶部に記憶されたコード領域に対応するエッジ抽出フィルタを、前記コード画像に対して適用することができる。
【0020】
本開示の他の態様では、コンベア上を移動するワークに付されたコードを読み取るコード読み取り方法を前提とすることもできる。コード読み取り方法は、ワークに照明光を照射する照明ステップと、ワークに付されたコードからの反射光を集光するレンズと、当該レンズの光軸に対して傾斜した受光面を有する画像センサとからなるシャインプルーフ光学系を有する撮像部でワークを撮像し、前記受光面で受光した受光量に基づいてコードが含まれるコード画像を生成し、出力する撮像ステップと、前記撮像ステップで出力されたコード画像に基づいてコード領域を特定し、特定されたコード領域からコードを検出するコード検出ステップと、前記コード検出ステップで検出されたコードをデコードするデコードステップとを備えている。
【発明の効果】
【0021】
以上説明したように、シャインプルーフ光学系を有する撮像部から出力されたコード画像に基づいてコード領域を特定し、特定されたコード領域から検出されたコードをデコードするようにしたので、コードが存在する領域を自動で検出して高速な読み取りが可能になる。
【図面の簡単な説明】
【0022】
【
図1】本発明の実施形態に係るコードリーダの運用時を説明する図である。
【
図2】コードリーダの運用時の例を説明する図である。
【
図4】シャインプルーフ光学系、平面ミラー、ピント面の関係を示す模式図である。
【
図5】FIG.5Aは受光面上に形成されるピント面の形状を示す図であり、FIG.5Bは側方から見た視野範囲及びピントが合う領域を示す図である。
【
図6】FIG.6Aは高さの高いワークが視野範囲に入った場合を説明する図であり、FIG.6Bは高さの低いワークが視野範囲に入った場合を説明する図である。
【
図7】FIG.7Aはワークが右寄りを搬送される場合を説明する図であり、FIG.7Bはワークが左寄りを搬送される場合を説明する図である。
【
図9】輝度変換処理の第1の例を示すフローチャートである。
【
図10】FIG.10A、10B、10Cはそれぞれ異なる輝度変換カーブの例を示す図である。
【
図11】輝度変換処理の第2の例を示すフローチャートである。
【
図13】コード位置探索処理の第1の例を示すフローチャートである。
【
図14】入力画像の各領域を異なるカーネル係数でエッジ抽出処理する場合を説明する図である。
【
図16】入力画像の各領域を異なるカーネル係数でエッジ抽出処理する場合の別の例を説明する図である。
【
図18】コード位置探索処理の第2の例を示すフローチャートである。
【
図19】デコード処理の例を示すフローチャートである。
【
図20】FIG.20Aは撮像部の視野範囲に2つのワークが入った場合を示す図であり、FIG.20Bは、撮像部の視野範囲に1つのワークが入るようにワーク間距離を拡大した場合を示す図である。
【
図21】コードとワークの紐付け処理を実行する場合の説明図である。
【
図22】自動絞り調整機構によって被写界深度領域を変化させる場合の説明図である。
【
図23】別実施形態に係るコードリーダの運用時を説明する図である。
【
図24】別実施形態に係るコードリーダの斜視図である。
【
図25】別実施形態に係るコードリーダの照明部と撮像部との位置関係を示す図である。
【
図26】狭角照明光と広角照明光との重複度合を説明する図である。
【
図27】狭角照明光、広角照明光、照明部の光軸、撮像部のレンズの光軸を示す模式図である。
【
図28】照明部のレンズと発光素子との相対的な位置関係を示す断面図である。
【
図30】別実施形態に係るコードリーダで生成されたコード画像の例を示す図である。
【
図31】比較例に係るコード画像の例を示す図である。
【
図32】FIG.32Aは本発明と比較例のコード画像の輝度値を示すグラフであり、FIG.32Bは比較例のコード画像の輝度値を示すグラフである。
【発明を実施するための形態】
【0023】
以下、本発明の実施形態を図面に基づいて詳細に説明する。尚、以下の好ましい実施形態の説明は、本質的に例示に過ぎず、本発明、その適用物或いはその用途を制限することを意図するものではない。
【0024】
図1は、本発明の実施形態に係るコードリーダ1の運用時を模式的に示す図である。この例では、複数のワークWが搬送用コンベア(以下、コンベアという)Bの上面に載置された状態で
図1における矢印Aの方向へ搬送されており、そのワークWから上方へ離れた所に、実施形態に係るコードリーダ1が設置されている。コンベアBは、例えばベルトコンベア等で構成されており、多数のワークWを順次搬送可能に構成されている。コンベアBの幅方向はX方向に沿っており、また、コンベアBの搬送方向はY方向に沿っている。尚、後述するが、コードリーダ1は、ワークWから側方へ離れた所に設置されていてもよい。
【0025】
コードリーダ1は、コンベアB上を移動するワークWに付されているコードを撮像してコード画像を生成し、コード画像に含まれるコードをデコードして情報を読み取ることができるように構成されている。
図1に示す例では、コードリーダ1が定置式の場合である。この定置式のコードリーダ1の運用時には、コードリーダ1が動かないようにブラケット等(図示せず)に固定して使用する。尚、定置式のコードリーダ1をロボット(図示せず)が把持した状態で使用してもよい。また、静止状態にあるワークWのコードをコードリーダ1によって読み取るようにしてもよい。定置式のコードリーダ1の運用時とは、コンベアBによって搬送されるワークWのコードを順に読み取る動作を行っている時である。
【0026】
図2に示す例は、複数のコードリーダ1を単一のコンベアBで使用する例である。この例では、コンベアBで搬送されるワークWが通過する部分に支持部材Cが設置されている。支持部材Cは、コンベアBで搬送されるワークWの側方を上下方向に延びる一対の側方部材C1と、側方部材C1の上側部分同士を繋ぐように延びる上方部材C2とで構成されている。各側方部材C1には、コードリーダ1がコンベアBで搬送されるワークWの側面に対向するように取り付けられ、また、上方部材C2には、コードリーダ1がコンベアBで搬送されるワークWの上面に対向するように取り付けられている。支持部材Cは、コンベアBによる搬送方向に間隔をあけて複数設けられていてもよいし、1つのみ設けられていてもよい。コードリーダ1は、上方部材C2にのみ取り付けられていてもよいし、側方部材C1にのみ取り付けられていてもよい。
【0027】
また、各ワークWの外面にはコードが付されている。コードには、バーコード及び二次元コードの両方が含まれる。二次元コードとしては、たとえば、QRコード(登録商標)、マイクロQRコード、データマトリクス(Data matrix;Data code)、ベリコード(Veri code)、アズテックコード(Aztec code)、PDF417、マキシコード(Maxi code)などがある。二次元コードにはスタック型とマトリクス型があるが、本発明はいずれの二次元コードに対しても適用できる。コードは、ワークWに直接印刷あるいは刻印することによって付してもよいし、ラベルに印刷した後にワークWに貼付することによって付してもよく、その手段、方法は問わない。
【0028】
図1に示すように、コードリーダ1は、コンピュータ200及びプログラマブル・ロジック・コントローラ(PLC)201にそれぞれ信号線200a、201aによって有線接続されているが、これに限らず、コードリーダ1、コンピュータ200及びPLC201に無線通信モジュールを内蔵し、コードリーダ1と、コンピュータ200及びPLC201とを無線接続するようにしてもよい。PLC201は、コンベアB及びコードリーダ1をシーケンス制御するための制御装置であり、汎用のPLCを利用することができる。コンピュータ200は、汎用あるいは専用の電子計算機や携帯型端末等を利用することができる。
【0029】
また、コードリーダ1は、その運用時において、PLC201から信号線201aを介して、コード読取の開始タイミングを規定する読取開始トリガ信号を受信する。そして、コードリーダ1は、この読取開始トリガ信号に基づいてコードの撮像やデコードを行う。その後、デコードした結果は、信号線201aを介してPLC201へ送信される。このように、コードリーダ1の運用時には、コードリーダ1とPLC201等の外部制御装置との間で、信号線201aを介して読取開始トリガ信号の入力とデコード結果の出力が繰り返し行われる。なお、読取開始トリガ信号の入力やデコード結果の出力は、上述したように、コードリーダ1とPLC201との間の信号線201aを介して行ってもよいし、それ以外の図示しない信号線を介して行ってもよい。例えば、ワークWの到着を検知するためのセンサとコードリーダ1とを直接的に接続し、そのセンサからコードリーダ1へ読取開始トリガ信号を入力するようにしてもよい。
【0030】
図3は、コードリーダ1のブロック図である。コードリーダ1は、照明部2、撮像部3、制御部4、記憶部5及び通信部6を有している。制御部4は、撮像部3を制御する撮像制御部41と、照明部2を制御する照明制御部42と、コード検出部43と、デコード部44とを備えている。また、記憶部5は、例えばSSD(ソリッドステートドライブ)等のような読み書き可能な記憶装置で構成することができる。記憶部5には、例えば各種プログラム、デコード結果、画像データ、設定情報等を記憶しておくことができ、デコード結果記憶部51と、画像データ記憶部52と、設定記憶部53とを有している。デコード結果記憶部51、画像データ記憶部52及び設定記憶部53は、図示しないが、別々の記憶装置に記憶されていてもよい。
【0031】
通信部6は、コンピュータ200やPLC201との通信を実行する部分である。コンピュータ200による設定情報は通信部6を介して制御部4が受信する。また、PLC201からの読取開始トリガ信号は通信部6を介して制御部4が受信する。コードリーダ1によるデコード結果は、通信部6を介してコンピュータ200やPLC201に送信される。
【0032】
照明部2は、ワークWに照明光を照射する部分であり、例えば発光ダイオード((LED:Light Emission Diode)等からなる発光体を備えている。照明部2と撮像部3とは一体化されていてもよいし、照明部2と撮像部3とは別体とされていてもよい。照明部2は照明制御部42によって制御され、点灯及び消灯の切替や点灯時の明るさ変更等がなされる。PLC201から読取開始トリガ信号が入力されると、照明制御部42は照明部2を所定時間だけ点灯させ、所定時間経過後に消灯する。
【0033】
撮像部3は、ワークWを撮像してコードが含まれるコード画像を生成し、制御部4に出力する部分である。撮像部3は、シャインプルーフ光学系31、前処理回路32及び平面ミラー33を有している。
図4にも示すように、シャインプルーフ光学系31は、レンズ31aと、当該レンズ31aの光軸Dに対して傾斜した受光面を有する画像センサ31bとからなるものである。レンズ31aは、ワークWに付されたコードからの反射光を集光する結像レンズであり、入射した光は画像センサ31bの受光面へ向けて出射されて受光面上で結像する。
【0034】
平面ミラー33は、撮像部3に入射した光をレンズ31aに向けるための部材である。すなわち、この例では、シャインプルーフ光学系31を有しているので、ピント面7は画像センサ31bのV方向に延びるように形成される。V方向は、
図1におけるZ方向(高さ方向)と対応している。
図5のFIG.5Aには、画像センサ31bの受光面上に形成されるピント面7の形状を示しており、遠方及び近方は
図4における遠方及び近方と一致している。FIG.5Aに示すように、近方の方が遠方に比べてピント面7の幅(H方向)が狭くなる。
図5のFIG.5Bは、
図1に対応する方向から見ており、遠方及び近方はFIG.5Aにおける遠方及び近方と一致している。FIG.5Bでは、画像センサ31bの視野範囲を符号8で示し、ピントが合う領域を符号9で示している。また、視野範囲8の中央を延びる光軸を符号10で示している。このように、シャインプルーフ光学系31は画像センサ31bのV方向にピント面7の傾斜を持つことになる。従って、
図1に示すように、コードリーダ1は、コンベアBの上方に設置された際に、当該コンベアBに対して略垂直な方向(Z方向)に沿った被写界深度を形成することが可能である。
【0035】
例えばコードリーダ1を物流現場で使用する場合には、コンベアBで搬送する途中段階にあるワークWのコードをコードリーダ1で読み取り、読取結果に応じてワークWを仕分けることが行われている。このような現場で取り扱われているワークWの大きさや形状は様々であり、高さの高いワークWと低いワークWとが混在していることもある。
図6のFIG.6Aでは、コードリーダ1がコンベアBの上方に設置された際に、高さの高いワークWが視野範囲8に入った場合を示している。一方、FIG.6Bでは、コードリーダ1がコンベアBの上方に設置された際に、高さの低いワークWが視野範囲8に入った場合を示している。ワークWの上面にコードが付されていると想定すると、FIG.6Aに示す場合ではFIG.6Bに示す場合に比べてピントの合う位置を上にする必要が生じ、FIG.6Bに示す場合ではFIG.6Aに示す場合に比べてピントの合う位置を下する必要が生じる。
【0036】
本実施形態では、シャインプルーフ光学系31を有していることで、コンベアBに対して略垂直な方向に沿った被写界深度を形成できるので、FIG.6Aに示す場合及びFIG.6Bに示す場合の両方でワークWの上面のコードにピントが合ったコード画像を生成できる。
【0037】
また、物流現場では、コンベアBの搬送方向上流から下流に沿って見たときにワークWが右寄りを搬送される場合や、左寄りを搬送される場合がある。
図7のFIG.7Aでは、右側面にコードが付されているワークWがコンベアBの右寄りを搬送されており、一方、FIG.7Bでは、右側面にコードが付されているワークWがコンベアBの左寄りを搬送されている場合を想定している。FIG.7Aに示す場合ではFIG.7Bに示す場合に比べてピントの合う位置を右にする必要が生じ、FIG.7Bに示す場合ではFIG.7Aに示す場合に比べてピントの合う位置を左にする必要が生じる。この場合、
図2に示す右側の側方部材C1にコードリーダ1を取り付けて、コードリーダ1をコンベアBで搬送されるワークWの右側方に設置する。コードリーダ1は、シャインプルーフ光学系31を有していることで、コンベアBで搬送されるワークWの右側方に設置された際には、当該コンベアBの幅方向に沿った被写界深度を形成することが可能である。これにより、FIG.7Aに示す場合及びFIG.7Bに示す場合の両方でワークWの右側面のコードにピントが合ったコード画像を生成できる。尚、ワークWの左側面にコードが付されている場合には、
図2に示す左側の側方部材C1にコードリーダ1を取り付けて運用すればよい。
【0038】
図3に示す画像センサ31bは、レンズ31aを通して得られたコードの画像を電気信号に変換するCCD(charge-coupled device)やCMOS(complementary metal oxide semiconductor)等の受光素子を含んでいる。画像センサ31bの受光面で受光した受光量に基づいてコードが含まれるコード画像を生成する。画像センサ31bが生成したコード画像は、前処理回路32に入力される。前処理回路32は必要に応じて設ければよく、必須なものではない。
【0039】
前処理回路32は、例えばFPGA(Field Programmable Gate Array)等の集積回路で構成されており、画像センサ31bから出力されたコード画像に対して各種前処理を実行する部分である。前処理には、例えば各種フィルタ処理等が含まれる。撮像部3は、前処理回路32によって前処理が実行されたコード画像を制御部4に出力する。前処理回路32による前処理は、必要に応じて実行すればよく、前処理が実行されないコード画像を制御部4に出力してもよい。制御部4に出力されたコード画像は、記憶部5が有する画像データ記憶部52に記憶される。
【0040】
撮像部3は、撮像制御部41によって制御される。PLC201から読取開始トリガ信号が入力されると、撮像制御部41は、予め設定された露光時間だけ露光させてコード画像を生成する。撮像制御部41が撮像部3を制御することにより、画像センサ31bで生成されたコード画像に対して予め設定されたゲインを適用し、コード画像の明るさをデジタル画像処理によって増幅する処理も実行する。
【0041】
(制御部4の詳細)
制御部4は、中央演算処理装置、ROM、RAM等を有するマイクロコンピュータを含んでいる。制御部4に含まれるハードウェアや制御部4が実行するソフトウェア等により、撮像制御部41、照明制御部42、コード検出部43及びデコード部44が構成される。
【0042】
制御部4のコード検出部43は、撮像部3から出力されたコード画像に基づいてコード領域を特定し、特定されたコード領域からコードを検出する部分である。制御部4のデコード部44は、コード検出部43により検出されたコードをデコードする部分であり、具体的には、コードが白黒の二値化されたデータで表されるので、白黒の二値化されたデータをデコードする。デコードには、符号化されたデータの対照関係を示すテーブルを使用することができる。さらに、デコード部44は、デコードした結果が正しいか否かを所定のチェック方式に従ってチェックする。データに誤りが発見された場合にはエラー訂正機能を使用して正しいデータを演算する。エラー訂正機能はコードの種類によって異なっている。以下、コード検出部43及びデコード部44の詳細について具体的に説明する。
【0043】
(全体フローチャート)
図8は、撮像から読み取り結果出力までの一連の処理の例を示す全体フローチャートである。このフローチャートは、コードリーダ1の運用を開始した時点でスタートする。スタート後のステップSA1では、読取開始トリガ信号がPLC201からコードリーダ1に入力される。読取開始トリガ信号が入力されると、照明制御部42が照明部2を点灯させ、撮像制御部41が撮像部3に撮像させてコード画像を生成させる。ステップSA1は、ワークWに照明光を照射する照明ステップである。
【0044】
ステップSA2では、輝度変換処理を実行する。すなわち、本例では、シャインプルーフ光学系31を有しているので、
図6で説明したように近方から遠方までピントが合い、
図5のFIG.5Aに示す画像センサ31bの上部で近方にピントが合い、画像センサ31bの下部で遠方にピントが合う。撮像対象物が撮像部3に近づけば近づくほど撮像対象物が明るく撮像され、撮像対象物が撮像部3から離れれば離れるほど撮像対象物が暗く撮像されることになるので、画像センサ31bの上部でピントが合った部分(近方)が画像センサ31bの下部でピントが合った部分(遠方)に比べて明るく、反対に、画像センサ31bの下部でピントが合った部分(遠方)が画像センサ31bの上部でピントが合った部分(近方)に比べて暗くなる。
【0045】
ステップSA2の輝度変換処理の詳細について、
図9に示す輝度変換処理の第1の例を説明する。輝度変換処理は、例えば前処理回路32を利用して実行できるが、他の集積回路を利用して実行してもよい。以下の説明では、輝度変換処理をコード検出部43で実行する場合について説明するが、輝度変換処理を前処理回路32で実行してもよい。この場合、前処理回路32で輝度変換処理が実行されたコード画像がコード検出部43に出力されることになる。また、コード検出部43は前処理回路32を含んで構成されていてもよい。この場合、コード検出部43の一部である前処理回路32で輝度変換処理が実行され、輝度変換処理が実行されたコード画像に基づいてコード検出部43がコード候補位置を検出することになる。
【0046】
ステップSB1では、撮像制御部41が撮像部3にコード画像を生成させ、撮像部3が生成したコード画像をコード検出部43が取得する。ステップSB2では、コード検出部43が、ステップSB1で取得したコード画像に対して、画像センサ31bのV方向位置に応じた輝度変換カーブを適用する。輝度変換カーブの例は
図10のFIG.10A、10B、10Cにそれぞれ示しており、横軸をコード検出部43への入力、縦軸をコード検出部43からの出力としている。FIG.10Aのグラフ及びFIG.10Bのグラフに示すように、輝度変換処理は線形変換処理であってもよいし、FIG.10Cのグラフに示すように、輝度変換処理は非線形変換処理であってもよい。コード検出部43は、コード画像おける読取対象のコードが存在する位置(基準ピント位置)、即ち画像センサ31bのV方向の位置に応じて輝度変換カーブを変更させる。例えば、読取対象コードの読み取りに最適なコントラストを有するコード画像となるように、コード検出部43が輝度変換カーブをコード画像に適用する。また、読取対象コードの読み取りに最適なダイナミックレンジを有するコード画像となるように、コード検出部43が輝度変換カーブをコード画像に適用する。
図10に示すように、遠方用と近方用とで出力画像の画素値を0にする黒レベルを変化させる。近方でピントが合うV方向位置の入力画素値は遠方でピントが合うV方向位置の入力画素値と比べると明るくなるため、近方では出力画像の画素値を0にする入力画像の輝度値を、遠方で出力画像の画素値を0にする入力画像の輝度値よりも、入力輝度値が大きい側にオフセットさせる(黒レベルオフセット)。これにより、近方のV方向の位置で入力画像の輝度値が明るい場合に、出力画像の輝度値が飽和することを効果的に防止できる一方、遠方のV方向の位置では、出力画像の輝度値を適切な明るさに高めることができる。
【0047】
基準ピント位置に基づいてダイナミックレンジを設定すること、及びコントラストを確保することができるので、基準ピント位置から大きく外れた位置については、白飛びまたは黒つぶれさせることもできる。これにより、基準ピント位置から大きく外れた所のコードを読み取り対象から除外できる。
【0048】
ステップSB3では、ステップSB2で輝度変換カーブが適用されることによって生成された輝度変換画像を出力する。
図8に示すステップSA1、及び
図9に示すステップSB1~SB3は、撮像ステップである。
【0049】
図11は、輝度変換処理の第2の例を示している。ステップSC1は、
図9に示すステップSB1と同じである。ステップSC2ではコード検出部43が外部条件を取得する。外部条件とは、例えばワークWの高さ(コードが付されている面の高さ)を計測する距離センサ等で取得された高さデータが含まれる。コード検出部43は、高さデータを取得することで、コードが付されている面の高さを取得でき、取得した高さに基づいて、基準ピント位置を推定することができる。
【0050】
ステップSC3では、ステップSC2で取得した外部条件に応じた輝度変換カーブをコード画像に適用する。コードが付されている面の高さデータを取得して基準ピント位置を推定した場合には、推定した基準ピント位置にあるコードの読み取りに適したダイナミックレンジ、コントラストとなるように輝度変換カーブを変更する。ステップSC4では、ステップSC3で輝度変換カーブが適用されることによって生成された輝度変換画像を出力する。
図8に示すステップSA1、及び
図11に示すステップSC1~SC4は、撮像ステップである。
【0051】
また、ワークWのどの部分が撮像部3の被写界深度領域に入っているかは、撮像時刻に応じて変化するため、撮像時刻を外部条件として取得し、撮像時刻に応じて輝度変換カーブを変更してもよい。
【0052】
輝度変換設定は、コードリーダ1の運用前に実行されるチューニングで行ってもよい。すなわち、制御部40は、ユーザからの指示に基づいてチューニングを実行可能に構成されている。チューニングは、照明部2の照明条件、撮像部3の撮像条件及びデコード処理のデコード条件を変化させて、撮像及びデコード処理を繰り返し、各照明条件、撮像条件及びデコード条件にて算出されたコードの読み取りのしやすさを示すマッチングレベルに基づいて、最適な撮像条件及びデコード条件を決定する。より具体的には、コードリーダ1の設定時に、撮像部3のゲイン及び露光時間、照明部2の光量等の撮像条件や、前処理回路32における画像処理条件、輝度変換カーブ等を変更してデコードに適した条件となるように各種条件(チューニングパラメータ)を設定する。前処理回路32における画像処理条件とは、画像処理フィルタの係数(フィルタの強弱)や、複数の画像処理フィルタがある場合に画像処理フィルタの切替、種類の異なる画像処理フィルタの組み合わせ等である。より適切な撮像条件及び画像処理条件を探索して、各処理を設定する際に、輝度変換設定も行うことができる。これにより、最適な輝度変換カーブを自動的に設定できる。
【0053】
また、コードが付されている高さに応じて、ユーザが最適な輝度変換カーブを手動設定してもよい。この場合、輝度変換カーブを変更しながら輝度変換画像を目視で確認し、コードを読み取るのに最適なコントラストまたはダイナミックレンジとなるように、輝度変換カーブを選択し、選択した輝度変換カーブを登録する。
【0054】
輝度変換カーブの自動設定または手動設定の際に、輝度変換カーブをバンクに登録してもよい。本実施形態では、例えば撮像部3の撮像条件を構成するパラメータ及びデコード処理条件等を構成するパラメータ、輝度変換カーブの種類がセットになったバンクを記憶部5の設定記憶部53に記憶することができるように構成されている。バンクは、パラメータセットと呼ぶことができる。バンクは複数設けられており、それぞれに異なるパラメータが記憶されている。例えば、設定記憶部53には、チューニングにより設定された第1の撮像条件、第1のコード条件及び第1の輝度変換カーブと、第2の撮像条件、第2のコード条件及び第2の輝度変換カーブとがそれぞれ別のバンクとして記憶されている。
【0055】
このコードリーダ1では、設定記憶部53に記憶されている複数のバンクのうち、第1の撮像条件、第1のコード条件及び第1の輝度変換カーブを含む一のパラメータセットから、第2の撮像条件、第2のコード条件及び第2の輝度変換カーブを含む他のパラメータセットへ切り替えることや、その反対の切り替えができるように構成されている。パラメータセットの切替は、制御部4が行うことや、ユーザが行うこともできるし、PLC201等の外部制御装置からの切替信号によって行うように構成することもできる。パラメータセットの切替をユーザが行う場合には、例えばユーザインターフェースに組み込まれているパラメータセット切替部を操作すればよい。パラメータセット切替部を「有効」にすることで、そのバンクのパラメータセットがコードリーダ1の運用時に使用され、また、パラメータセット切替部を「無効」にすることで、そのバンクのパラメータセットがコードリーダ1の運用時に使用されないようになる。つまり、パラメータセット切替部は、一のパラメータセットから他のパラメータセットに切り替えるためのものである。
【0056】
図12は、輝度変換の例を説明する図である。
図12中、「大サイズのワーク」とは高さが最も高いワークのことであり、「中サイズのワーク」とは高さが中程度のワークのことであり、「小サイズのワーク」とは高さが最も低いワークのことである。図の上側から下側に向かってワークWが搬送されている様子を示しており、各ワークWの上面にコードが付されている。
【0057】
大サイズのワークの場合、画像センサ31bの上部でコードにピントが合うことになるので、画像センサ31bの上部でコードの読み取りに最適なコントラストまたはダイナミックレンジとなるように、輝度変換カーブを適用する。中サイズのワークの場合、画像センサ31bの上下方向中間部でコードにピントが合うことになるので、画像センサ31bの上下方向中間部でコードの読み取りに最適なコントラストまたはダイナミックレンジとなるように、輝度変換カーブを適用する。小サイズのワークの場合、画像センサ31bの下部でコードにピントが合うことになるので、画像センサ31bの下部でコードの読み取りに最適なコントラストまたはダイナミックレンジとなるように、輝度変換カーブを適用する。
【0058】
以上のようにして
図8に示すステップSA2の輝度変換処理が完了すると、ステップSA3に進み、コード検出部43がコード候補位置探索処理を実行する。コード候補位置探索処理は、撮像ステップで出力されたコード画像に基づいてコード領域を特定し、特定されたコード領域からコードを検出するコード検出ステップである。このステップは、撮像ステップで出力されたコード画像におけるコード候補位置を決定する位置決定ステップである。
【0059】
図13は、コード候補位置探索処理の第1の例を示すフローチャートである。ステップSD1では、
図9に示すステップSB3または
図11に示すステップSC4で出力された輝度変換画像を取得する。輝度変換画像はコード画像であり、コード検出部43は、コード画像である輝度変換画像に基づいてエッジを抽出し、抽出されたエッジが存在する領域をコード領域として特定する。例えば
図14に示すように、ワークWの低い部分にコードCDが付されている場合には、画像センサ31bの下部でコードCDにピントが合ったコード画像が取得される。また、
図12に示すように、小サイズのワークWでは、画像センサ31bの下部でコードCDにピントが合い、また、中サイズのワークWでは、画像センサ31bの上下方向中間部でコードCDにピントが合う。つまり、ワークWと撮像部3の距離によって画像センサ31b上におけるワークWの写りこみの位置が変化することになり、コード検出部43は、ワークWと撮像部3の距離によって変化する画像センサ31b上におけるワークWの写りこみの位置に応じて、コードの検出基準を異ならせる。
【0060】
コード領域を特定する際、コード検出部43は、コード画像から算出した評価値に基づいて特定する。例えば、コード検出部43は、ワークWが撮像部3に対して近方に位置する場合は、遠方に位置する場合に比べてエッジの周波数が低い領域をコード領域として特定し、ワークWが撮像部3に対して遠方に位置する場合は近方にある場合に比べてエッジの周波数が高い領域をコード領域として特定するように、コード画像から評価値を算出する。
【0061】
評価値を算出する際、コード検出部43は、ワークWが撮像部3に対して近方に位置し、かつ相対的に輝度が低いエッジは、相対的に輝度が高いエッジよりも、評価値を抑える。さらに、コード検出部43は、ワークWが撮像部3に対して遠方に位置し、かつ相対的に輝度が高いエッジは、相対的に輝度が低いエッジよりも、評価値が抑えられるように、評価値を算出する。
【0062】
評価値を算出する際、ステップSD2では、コード検出部43が、ステップSD1で取得した輝度変換画像に対して、複数の異なるエッジ強調フィルタを適用してもよい。エッジ強調フィルタとしては、例えばソベルフィルタを挙げることができ、例えばバーコードの回転角が0°の場合はX方向ソベル、バーコードの回転角が90°の場合はY方向ソベル、バーコードの回転角に前提がない場合はX方向ソベル画像及びY方向ソベル画像を足し合わせて合成した画像を生成してもよい。ステップSD2では、コード検出部43が、コード画像に対して、異なる周波数のエッジを抽出するための複数のエッジ抽出フィルタを適用することによって複数のエッジ画像を生成する。
【0063】
例えば、記憶部5に、読取対象のコード領域を記憶させておくこともできる。読取対象のコード領域は、設定時に、ワークWにおけるコードが付された部分に基づいて特定でき、特定した読取対象のコード領域を記憶部5に記憶させておくとともに、当該読取対象のコード領域に適用するエッジ抽出フィルタも記憶部5に記憶させておく。運用時、コード検出部43は、記憶部5に記憶されたコード領域に対応するエッジ抽出フィルタを、コード画像の対応するコード領域に対して適用する。
【0064】
ステップSD3では、ステップSD2の処理の結果、コード検出部43が複数のエッジ画像を取得する。ステップSD4では、コード検出部43が、ステップSD3で取得された複数のエッジ画像の統合処理を実行する。ステップSD4では、コード検出部43が各エッジ統合処理結果に基づいてコード候補位置を決定する。すなわち、エッジ処理画像においては、輝度値の大きな画素が多く集まる領域をコード領域と推定することができる。
【0065】
例えば、コード検出部43は、コード画像内でのコードの位置を探索するため、コードらしさを表すヒートマップ画像を生成することができる。すなわち、コード検出部43は、コードの特徴量を定量化し、特徴量の大きさを各画素値に割り当てたヒートマップを生成し、当該ヒートマップ上で、コードが存在する可能性が高いコード候補領域を抽出する。具体例としては、ヒートマップにおいて相対的に熱く(特徴量が大きく)示されている領域でコードの特徴部分を取得する方法がある。特徴部分が複数取得された場合には、優先づけをして抽出し、RAM等に記憶させておくことができる。ヒートマップ画像を用いることで、コード領域を高速に検出することが可能になる。
【0066】
ヒートマップ画像を生成する際には、輝度値の大きな画素が多く集まる領域を表現するために、近傍のエッジデータを統合する処理を実行する。例えば、特定のウィンドウサイズ内の画素値を足し合わせる効果を持つ平滑化処理により、統合処理を行うことができる。平滑化処理の代わりに縮小処理を用いてもよい。
【0067】
ここで、同一コードの場合、エッジ情報の周波数特性は、近方が遠方に比べて低周波になり、遠方が近方に比べて高周波になる。コード画像のエッジデータをV方向位置とその基準周波数特性に基づいて重みづけや簡略化を行うことで、被写界深度領域に近いコードの評価値を高くするように、コード検出部43を構成することができる。
【0068】
その構成の例として、コード検出部43は、コード画像に対して、異なる周波数のエッジを抽出するための複数のエッジ抽出フィルタを適用することによって複数のエッジ画像を生成し、生成した各エッジ画像のエッジに基づいてコード領域を特定する。具体的には、コード検出部43は、相対的に周波数が高いエッジ領域を抽出するための第1エッジ抽出フィルタと、相対的に周波数が低いエッジ領域を抽出するための第2エッジ抽出フィルタをコード画像に対して適用する。コード検出部43は、第1エッジ抽出フィルタをコード画像に適用することにより、撮像部3に対して遠方に位置するコードを検出し、第2エッジ抽出フィルタをコード画像に適用することにより、撮像部3に対して近方に位置するコードを検出する。
【0069】
コード検出部43は、ワークWが撮像部3に対して近方に位置する場合に、ワークWが画像センサ31bに写る位置に対して相対的に周波数が低いエッジ領域を抽出するためのカーネル係数でエッジ抽出を行い、ワークWが撮像部3に対して遠方に位置する場合に、ワークWが画像センサ31bに写る位置に対して相対的に周波数が高いエッジ領域を抽出するためのカーネル係数でエッジ抽出を行うように構成されている。
【0070】
図14に示すように、入力画像100の下側部分100aは、ワークWが撮像部3に対して遠方に位置する場合にワークWが写る部分であり、入力画像100の下側部分100aに対しては、相対的に周波数が高いエッジ領域を抽出するためのカーネル係数として例えば1/4のカーネル係数でエッジ抽出を行う。このエッジ抽出フィルタは、遠距離用エッジ抽出フィルタと呼ぶこともできる。
【0071】
一方、入力画像100の上側部分100bは、ワークWが撮像部3に対して近方に位置する場合にワークWが写る部分であり、入力画像100の上側部分100bに対しては、相対的に周波数が低いエッジ領域を抽出するためのカーネル係数として例えば1/16のカーネル係数でエッジ抽出を行う。このエッジ抽出フィルタは、近距離用エッジ抽出フィルタと呼ぶこともできる。
【0072】
また、入力画像100の上下方向中間部分100cは、ワークWが撮像部3に対して遠方と近方の間に位置する場合にワークWが写る部分であり、入力画像100の中間部分100cに対しては、中間のカーネル係数として1/9のカーネル係数でエッジ抽出を行う。このエッジ抽出フィルタは、中距離用エッジ抽出フィルタと呼ぶこともできる。遠距離用エッジ抽出フィルタ、近距離用エッジ抽出フィルタ及び中距離用エッジ抽出フィルタで使用される上記カーネル係数は例であり、上記例とは異なる係数を使用してもよい。
【0073】
図15は、
図14に示す例の変形例を示している。すなわち、
図14に示すように異なるカーネル係数を有する複数のエッジ抽出フィルタを適用してもよいし、
図15に示すように位置に応じて異なるカーネル係数のエッジ抽出フィルタをかけてもよい。
図14に示す例では、エッジ統合画像を生成しなくてもよく、いずれかの画像でコード候補領域が抽出されていればよい。尚、
図14に示す例でエッジ統合画像を生成してもよい。
【0074】
図15に示す例では、入力画像100の下側部分100a、上側部分100b、中間部分100cで互いに異なるカーネル係数でエッジ抽出処理されてエッジ統合されたエッジ統合画像101が得られる。尚、入力画像100を2分割してもよく、この場合、上側部分と下側部分とで互いに異なるカーネル係数でエッジ抽出処理を実行する。
【0075】
図16は、2つのワークW1、W2が搬送方向に接近した状態で搬送されている場合を示している。
図17は、
図16に示す例の変形例を示している。
図16、
図17は、それぞれ
図14、
図15の関係と同じであり、
図16に示すように異なるカーネル係数を有する複数のエッジ抽出フィルタを適用してもよいし、
図17に示すように位置に応じて異なるカーネル係数のエッジ抽出フィルタをかけてもよい。
【0076】
図16に示す例では、2つのワークW1、W2にそれぞれ付されているコードCD1、CD2の高さは略同じである。搬送方向下流側に位置するワークW1のコードCD1は、画像センサ31bのピントが合う領域9外に位置しているため、画像センサ31b上では、ワークW1のコードCD1がぼけている。搬送方向上流側に位置するワークW2のコードCD2は、画像センサ31bのピントが合う領域9内に入っているため、画像センサ31b上では、ワークW2のコードCD2にピントが合っている。入力画像100の下側部分100a、上側部分100b、中間部分100cに対して、それぞれ上述したカーネル係数でエッジ抽出することで、ぼけているコードCD1のエッジは抽出されず、コードCD2のエッジが強調され、
図17に示す例ではエッジ統合画像101を生成することができる。
【0077】
その後、
図13のステップSD5に進む。ステップSD5では、コード検出部43が、各エッジ統合結果に基づいてコード候補位置を決定する。
図15や
図17に示すエッジ統合画像101は、エッジ統合結果を示す画像である。
図15のエッジ統合画像101では下側部分の左右方向中央部がコード領域として特定される。
図17のエッジ統合画像101では上側部分の左右方向中央部がコード領域として特定される。
【0078】
異なるカーネル係数を有するエッジ強調フィルタを適用する場合について、
図18に示すフローチャートに基づいて説明する。ステップSE1は、
図13のステップSD1と同じである。ステップSE2では、上述した
図14~
図17に示すように、画像センサ31bのV方向位置に応じて異なるカーネル係数を有するエッジ強調フィルタを適用する。ステップSE3~SE5は、それぞれ
図13のステップSD3~SD5と同じである。
【0079】
コード候補位置探索が終了すると、
図8に示すフローチャートのステップSA4に進む。ステップSA4では、ステップSA3でコード候補位置探索の結果、コード候補位置の検出に成功したか否かを判定する。コード候補位置の検出に失敗した場合には、ステップSA1に進む。コード候補位置の検出に成功した場合には、ステップSA5に進み、コード検出ステップで検出されたコードをデコード部44がデコードする。ステップSA5はデコードステップである。
【0080】
図19は、デコード処理の例を示すフローチャートであり、ステップSF1では、ステップSA3で探索したコード候補位置データをデコード部44が取得する。ステップSF2では、デコード部44が、ステップSF1で取得したコード候補位置データに基づいて、コード候補位置が遠方側にあるか否かを判定する。
図14及び
図15に示すように、入力画像100の下側部分100aにコード候補位置がある場合には、コード候補位置が遠方側に位置していると判定する。一方、
図16及び
図17に示すように、入力画像100の上側部分100bにコード候補位置がある場合には、コード候補位置が遠方側に位置していないと判定する。
【0081】
ステップSF2でYESと判定されてコード候補位置が遠方側に位置している場合には、ステップSF3に進み、デコード部44が、遠方用の設定を記憶部5の設定記憶部53から読み出す。ステップSF2でNOと判定されてコード候補位置が遠方側に位置していない場合には、ステップSF4に進み、デコード部44が、近方用の設定を記憶部5の設定記憶部53から読み出す。遠方用の設定、近方用の設定には、コードサイズ(上限・下限)、コントラスト(白黒の閾値)などが含まれている。つまり、近方用の設定と遠方用の設定には、それぞれ、デコード対象のコードサイズ、コードの傾き、デコード対象とする明るさの基準値、コントラストの少なくともいずれかが含まれる。遠方用の設定に含まれるデコード対象のコードサイズの上限は、近方用の設定に含まれるデコード対象のコードサイズの上限よりも小さくなっている。また、遠方用の設定に含まれるコントラスト値は、近方用の設定に含まれるコントラスト値よりも低くなっている。
【0082】
このステップは、位置決定ステップで決定されたコード候補位置に基づいて、撮像部3から近方に位置するコードのデコード処理に用いる近方用の設定と、撮像部3から遠方に位置するコードのデコード処理に用いる遠方用の設定と、のいずれかを選択する選択ステップである。
【0083】
ステップSF3で遠方用の設定を読み出した後、ステップSF5に進み、遠方領域、即ち入力画像100の下側部分100aにデコード部44が超解像処理を実行する。すなわち、入力画像100の下側部分100aは、遠方領域であるため、近方領域に存在するコードと同じコードであっても小さく写ることになる。この小さく写る遠方領域のコードに対応する入力画像100の下側部分100aに対して超解像処理を実行することで、後述するデコード処理能力を向上させることができる。一方、近方領域に存在するコードにピントが合う入力画像100の上側部分100bではコードが大きく写るので、入力画像100の上側部分100bに対しては超解像処理を非実行とする。これにより、高速かつ高精度なデコードを実行できる。尚、入力画像100の上側部分100bに対して超解像処理を実行可能にしてもよい。
【0084】
このように、制御部4は、撮像部3から出力されたコード画像に対して、当該コード画像におけるコード候補位置を決定するとともに、決定されたコード候補位置に基づいて、記憶部5の設定記憶部53から近方用の設定または遠方用の設定を選択し、当該選択した設定を用いてコード画像に対してデコード処理を実行する。これにより、遠方側のコード及び近方側のコードに対してそれぞれ適した設定が適用されてデコード処理(デコードステップ)が実行される。
【0085】
また、コードサイズに応じて超解像処理の実行、非実行を自動決定するようにしてもよい。例えば、設定時に、読取対象のコードサイズをユーザが予め設定しておき、このコードサイズの設定情報を記憶部5に記憶させておく。運用時には、デコード部44がコードサイズの設定情報を記憶部5から読み込んで、超解像処理を実行する領域を特定し、特定した領域に対して超解像処理を実行する。
【0086】
記憶部5は、超解像処理が実行される領域を超解像処理の実行領域とし、この超解像処理の実行領域を設定情報として記憶することができる。すなわち、超解像処理の実行領域は、コード画像の遠方領域に対応する領域であり、この領域を設定情報として記憶することができる。制御部4は、遠方用の設定を選択した場合、記憶部5から超解像処理の実行領域を読み出して、当該実行領域に超解像処理を実行する。
【0087】
また、超解像処理だけでなく、デコードするコードの大きさの上限値・下限値でもよいし、コードの傾きでもよいし、デコード対象とする明るさの基準値を最適化してもよい。
【0088】
ステップSF6では、コード候補位置に存在するコードをデコード部44がデコードする。
【0089】
デコード部44がデコードすると、
図8のフローチャートに戻り、ステップSA6に進む。ステップSA6では、ステップSA5でのデコードが成功したか否かをデコード部44が判定する。デコードが失敗していると判定された場合にはステップSA7に進み、ステップSA3で探索したコード候補位置(デコードを試みていないコード候補位置)が他にもあるか否かを判定する。コード候補位置が他にもある場合にはステップSA5に進み、当該他のコード候補位置に存在するコードをデコード部44がデコードする。コード候補位置が他にない場合にはステップSA1に進む。
【0090】
ステップSA6でデコードが成功したと判定された場合にはステップSA8に進み、デコード部44が、デコードの結果に基づいて誤割り当てリスクレベルを算出する。誤割り当てリスクレベルは、ジャミングリスクレベルともいい、被写界深度領域内でデコードできたコードか否かを評価する指標である。誤割り当てリスクレベルは、エッジデータ、輝度値、ワーク搬送位置、明るさ、コードの幾何形状、コード位置等により定義される評価指標である。このように、制御部4は、エッジデータ、輝度値、ワーク搬送位置、コードの幾何形状、コード位置の少なくともいずれかに基づいて、被写界深度領域内でデコードできたコードか否かを評価する指標を算出する。評価指標は、読み取りに成功したコード画像に基づいて算出してもよいし、コード画像の時間的な変化、例えば高周波成分が多い状態から少ない状態への変化に基づいて算出してもよい。また、制御部4は、コード画像のコントラストに基づいて、被写界深度領域内でデコードできたコードか否かを評価する指標を算出してもよい。例えばコード画像のコントラストが高い場合には低い場合に比べて、被写界深度領域内でデコードできたコードと評価する指標を高くする。このステップは、デコード処理の結果に基づいて、当該デコード処理を適用したコードが、シャインプルーフ光学系31によってコンベアBの搬送面に対して略垂直に形成された被写界深度領域内でデコードできたコードか否かを評価する指標を算出する算出ステップである。
【0091】
その後、ステップSA9に進み、誤った割り当てがなされているか否かをデコード部44が判定する。すなわち、制御部4のデコード部44は、デコード処理を実行した後、デコード処理の結果に基づいて、デコード処理を適用したコードが、シャインプルーフ光学系31によってコンベアBの搬送面に対して略垂直に形成された被写界深度領域内でデコードできたコードか否かを評価する指標を算出する。そして、デコード部44は、算出した指標に基づいて、コードが誤ったワークに割り当てられているか否かを判定する。このステップは、算出ステップで算出した指標に基づいて、コードが誤ったワークWに割り当てられている否かを判定する判定ステップである。
【0092】
誤った割り当てがなされている場合にはステップSA10に進み、デコード部44が通信部6を介して誤割り当てエラーをユーザに通知する。つまり、コードリーダ1は、デコード部44によってコードが誤ったワークWに割り当てられていると判定した場合に、エラー信号を出力可能に構成されている。誤った割り当てがなされていない場合には、ステップSA11に進み、デコード部44が通信部6を介して読取データ(デコード結果)を出力する。
【0093】
(コードとワークの紐付け処理)
図20のFIG.20Aは、2つのワークW1、W2の間隔が狭く、撮像部3の視野範囲8に2つのワークW1、W2が入った状態を示している。このタイミングで読み取ったコードはワークW1、W2のどちらのワークに割り当てるべきか判断が難しい。対応策の一つとして、例えば、読み取ったコードの座標を算出し、算出したコード座標を利用してコードとワークを紐付ける方法が考えられるが、この場合、同一視野内の複数のワークを座標で識別することになるため、設置精度などで誤割り当てのリスクが残存する。このリスクを減らすためには、FIG.20Bに示すようにワークW1とワークW2との距離を拡大する処置が必要になるが、そうすると単位時間あたりに取り扱えるワーク数が減ることになり、物流現場では適切な対応策とは言い難い。
【0094】
このことに対し、本実施形態では、
図21に示すように、撮像部3の被写界深度をワークW1、W2の搬送方向と垂直ないし垂直に近い方向となるように設定することでコードとワークの紐付け処理を可能にしている。そして、
図8に示すフローチャートのステップSA8で算出した誤割り当てリスクレベルに基づいて誤割り当てリスクを評価する。
【0095】
また、
図22に示すように、撮像部3が自動絞り調整機構31cを備えていてもよい。自動絞り調整機構31cは、例えばレンズ31aと画像センサ31bとの間に設けられており、画像センサ31bに入る光量を調整するための機構である。制御部4の撮像制御部41を介して自動絞り調整機構31cが制御されるようになっており、自動絞り調整機構31cによって絞り量を調整することで、
図22の下側に示すように被写界深度領域を変化させることができる。そして、制御部4は、自動絞り調整機構31cによる絞り量に応じた被写界深度領域に基づいて、被写界深度領域内でデコードできたコードか否かを評価する指標を算出する。つまり、ワークW1、W2の間隔に応じて自動絞り調整機構31cの絞り量を変化させることで、コードとワークの紐付け処理が可能になる。
【0096】
(別実施形態)
図23は、本発明の別実施形態に係るコードリーダ1の運用時を説明する図である。また、
図24は、本発明の別実施形態に係るコードリーダ1の外観を示す斜視図である。この別実施形態では、主に照明部2の構成が上記実施形態と異なっている。以下、上記実施形態と同一部分には同じ符号を付して説明を省略し、上記実施形態と異なる部分について詳細に説明する。
【0097】
この別実施形態に係るコードリーダ1は、照明部2及び撮像部3を格納する筐体300を備えている。筐体300は、X方向に長い形状を有しており、上下方向、左右方向(X方向)、前後方向を
図24に示すように定義する。この方向の定義は実施形態の説明を容易にするためであり、コードリーダ1の使用時の方向を限定するものではない。例えば筐体300の長手方向が上下方向や傾斜した方向に向くようにコードリーダ1を設置することもできる。
【0098】
筐体300は、上壁部301、下壁部302、左側壁部303、右側壁部304、前壁部305及び後壁部306を有している。
図23に示すように、コードリーダ1の設置時に前壁部305がワークWに向くように配置される。よって、
図24に示すように、前壁部305には、ワークWからの反射光を透過させる受光窓305aが設けられるとともに、照明部2から照射された照明光を透過させる左側投光窓(第1投光窓)305b及び右側投光窓(第2投光窓)305cが設けられている。受光窓305aは、前壁部305の長手方向中央部に位置付けられる一方、左側投光窓305bは前壁部305の左側、右側投光窓305cは前壁部305の右側にそれぞれ位置付けられている。つまり、左側投光窓305b及び右側投光窓305cは受光窓305aを左右方向から挟むように配置されるとともに、左側投光窓305b、受光窓305a及び右側投光窓305cが筐体300の長手方向に一列に並んでいる。
【0099】
筐体300には、受光窓305aとは反対側(本例では後側)に切欠平面307が設けられている。切欠平面307は、上壁部301の上部及び後壁部306の後部を面取りすることによって形成されており、その面取りの角度は特に限定されるものではないが、例えば45度となっている。撮像部3は、切欠平面307が水平面と略平行となる場合に、シャインプルーフ光学系31のピント面が略鉛直となるように構成されている。すなわち、シャインプルーフ光学系31は筐体300に対して相対移動しないように固定されているので、シャインプルーフ光学系31のピント面と水平面とのなす角度は、筐体300の向きによって変化することになる。コンベアBの搬送面は略水平であることが多く、シャインプルーフ光学系31のピント面はコンベアBの搬送面に対して略直角(略鉛直)となるようにしたいケースが多い。このことに対応して、本実施形態に係るコードリーダ1を設置する際、
図23に示すように、作業者は、切欠平面307が略水平となるように水準器等で調整すれば、シャインプルーフ光学系31のピント面が自動的にコンベアBの搬送面に対して略垂直になり、設置作業が容易に行える。切欠平面307は、コードリーダ1を設置するときのガイド面や目印等と呼ぶこともできる。尚、切欠平面307の形成箇所は、上述した箇所に限られるものではなく、例えば筐体300の前側や下側であってもよいが、筐体300の前側には左側投光窓305b、右側投光窓305c及び受光窓305aが設けられているので、これらの面積を大きく確保する観点からは筐体300の後側に切欠平面307を設けるのが好ましい。
【0100】
図24及び
図25に示すように、この実施形態の照明部2は、筐体300内の左側部分に格納される左側照明部2Aと、筐体300内の右側部分に格納される右側照明部2Bとを含んでいる。左側照明部2Aの前に左側投光窓305bが位置付けられており、第1投光窓305bは左側照明部2Aから照射される照明光を遮らないように十分な大きさとされている。また、右側照明部2Bの前に右側投光窓305cが位置付けられており、右側投光窓305cは右側照明部2Bから照射される照明光を遮らないように十分な大きさとされている。
【0101】
一方、撮像部3は、筐体300内の左右方向中央部に格納されている。撮像部3の前に受光窓305aが位置付けられている。従って、撮像部3は、左側照明部2Aと右側照明部2Bとで左右方向から挟まれるように配置される。撮像部3のレンズ31aの光軸に沿って見たとき、受光窓305aは、左側照明部2Aと右側照明部2Bとの間に配置されている。
【0102】
照明部2は、シャインプルーフ光学系31のピント面が略均一な明るさとなる照明光を照射可能に構成されている。具体的には、照明部2は、シャインプルーフ光学系31のピント面の遠方側に照射する単位面積当たりの光量が、シャインプルーフ光学系31のピント面の近方側に照射する単位面積当たりの光量よりも大きくなるように構成されている。照明部2がこのように構成されているので、ワークWを照明する照明ステップを実行する際には、シャインプルーフ光学系31のピント面が略均一な明るさとなる照明光を照射することができる。
【0103】
シャインプルーフ光学系31のピント面が略均一な明るさは、一例として、暗いコードの輝度値平均が、明るいコードの輝度値平均の50%以上と定義してもよい。また、暗いコードの輝度値平均が、明るいコードの輝度値平均の60%以上と定義してもよい。この詳細については後述する。
【0104】
シャインプルーフ光学系31のピント面が略均一な明るさとは、シャインプルーフ光学系31のピント面のいかなる位置のコードも読取可能な程度の明るさということもできる。すなわち、コードを撮像して生成されたコード画像が暗くても、デコード部44によってデコード処理する際に時間をかければ読み取ることができる場合があるが、本実施形態のように、コンベアB上を移動するワークWに付されたコードを読み取るコードリーダ1においては、短時間(所定時間)内にコードの読み取りを完了させる必要ある。シャインプルーフ光学系31のピント面が略均一な明るさとなっていることで、ピント面のいかなる位置のコードも所定時間内に読み取ることができる。所定時間は、ワークWの搬送速度に基づいて決定される時間であり、特に限定されるものではないが、例えば先に撮像されたコード画像の読み取りが、次に撮像されたコード画像の読み取りを開始する前に終了するような時間とすることができる。
【0105】
以下、シャインプルーフ光学系31のピント面を略均一な明るさとすることが可能な照明部2の構成の一例について具体的に説明する。
図25に示すように、左側照明部2Aは、左側照明基板21と、狭角照明光を照射する左側狭角照明部(第1狭角照明部)22と、狭角照明光の照射角よりも広角な広角照明光を照射する左側広角照明部(第1広角照明部)23とを有している。一方、右側照明部2Bは、右側照明基板24と、狭角照明光を照射する右側狭角照明部(第2狭角照明部)25と、狭角照明光の照射角よりも広角な広角照明光を照射する右側広角照明部(第2広角照明部)26とを有している。
【0106】
左側狭角照明部22は、筐体300内の最も左に格納されている。左側広角照明部23は、筐体300内における左側狭角照明部22の右側に格納されている。右側狭角照明部25は、筐体300内の最も右に格納されている。右側広角照明部26は、筐体300内における右側狭角照明部25の左側に格納されている。したがって、撮像部3のレンズ31aの光軸に沿って見たとき、左側広角照明部23は、左側狭角照明部22と受光窓305aとの間に配置され、右側広角照明部26は、右側狭角照明部25と受光窓305aとの間に配置されている。つまり、撮像部3のレンズ31aの光軸に沿って見たとき、左側狭角照明部22および右側狭角照明部25と、左側広角照明部23および右側広角照明部26と、受光窓305aとは、筐体300の長手方向に一列に並んでいる。
【0107】
図26は、左側狭角照明部22、左側広角照明部23、右側狭角照明部25及び右側広角照明部26の各々の照明範囲を模式的に示す図である。図中、左側狭角照明部22から延びる2本の実線L1は、左側狭角照明部22から照射される狭角照明光の照明範囲を示している。また、右側狭角照明部25から延びる2本の実線L2は、右側狭角照明部25から照射される狭角照明光の照明範囲を示している。左側狭角照明部22から照射される狭角照明光の照明範囲と、右側狭角照明部25から照射される狭角照明光の照明範囲とは等しくなっているが、互いに異なっていてもよい。
【0108】
左側広角照明部23から延びる2本の一点鎖線L3は、左側広角照明部23から照射される広角照明光の照明範囲を示している。また、右側広角照明部26から延びる2本の一点鎖線L4は、右側広角照明部26から照射される狭角照明光の照明範囲を示している。左側広角照明部23から照射される広角照明光の照明範囲と、右側広角照明部26から照射される広角照明光の照明範囲とは等しくなっているが、互いに異なっていてもよい。
【0109】
図26に示すように、シャインプルーフ光学系31のピント面の遠方側と近方側とを定義した場合、シャインプルーフ光学系31のピント面の遠方側における狭角照明光と広角照明光との重複度合が、シャインプルーフ光学系31のピント面の近方側における狭角照明光と広角照明光との重複度合よりも高くなるように構成されている。ピント面の遠方側では、近方側に比べて届く光量が少なくなるが、ピント面の遠方側において狭角照明光と広角照明光との重複度合を高くしていることで、ピント面の遠方側を近方側と同様に明るくすることが可能になる。
【0110】
例えば、照明部2から第1距離だけ離間した第1基準位置をシャインプルーフ光学系31のピント面の近方側とし、照明部2から第1距離よりも長い第2距離だけ離間した第2基準位置をシャインプルーフ光学系31のピント面の遠方側とする。シャインプルーフ光学系31のピント面の近方側において、左側狭角照明部22の照明光は、左側広角照明部23の照明光と重複する一方で右側広角照明部26の照明光とは重複せず、右側狭角照明部25の照明光は、右側広角照明部26の照明光と重複する一方で左側広角照明部23の照明光とは重複しないように、照明部2を構成することができる。
【0111】
また、シャインプルーフ光学系31のピント面の遠方側において、左側狭角照明部22と右側狭角照明部25のいずれの照明光も、左側広角照明部23および右側広角照明部26の両方の照明光と重複するように、照明部2を構成することができる。ピント面の遠方側では、左側広角照明部23および右側広角照明部26の照明光が互いに重複している。
【0112】
図27はコードリーダ1を側方から見た模式図である。この
図27では撮像部3の視野範囲を符号8の破線で示し、撮像部3のレンズ31aの光軸を符号10で示し、照明部2の光軸を符号27で示している。この
図27に示すように、照明部2の光軸27と、撮像部3のレンズ31aの光軸10とは角度が異なっており、照明部2の光軸27は、レンズ31aの光軸10よりも、シャインプルーフ光学系31のピント面7の遠方側を指向している。狭角照明部22、25の光軸と、広角照明部23、26の光軸とは、水平面に対する角度が同じになっており、側方からみたとき、狭角照明部22、25の光軸及び広角照明部23、26の光軸が重複する位置関係にある。狭角照明部22、25の光軸及び広角照明部23、26の光軸を、照明部2の光軸としてまとめて符号27で示している。尚、狭角照明部22、25の光軸と、広角照明部23、26の光軸とが側面視で重複しないように設定してもよい。
【0113】
図28は、照明部2の左側狭角照明部22の断面図である。左側狭角照明部22は、左側照明基板21に実装された発光ダイオードからなる複数の発光素子(発光部)22aと、各発光素子22aから出射された光を集光するレンズ22bとを有している。左側狭角照明部22のレンズ22bの中心軸を符号22cで示している。また、発光素子22aの中心軸を符号22dで示している。発光素子22aの中心軸は、発光素子22aの発光面の中心部を通り、かつ、発光面に対して垂直になっている。
【0114】
左側狭角照明部22のレンズ22bは、当該レンズ22bの中心軸22cが発光素子22aの中心軸22dと異なるように配置されている。つまり、レンズ22bの中心軸22cと発光素子22aの中心軸22dとがオフセットしている。これにより、照明部2の光軸27がシャインプルーフ光学系31のピント面7の遠方側を指向するようになる。左側広角照明部23、右側狭角照明部25及び右側広角照明部26も、左側狭角照明部22と同様に構成することができる。
【0115】
また、発光素子22aとレンズ22bとを同軸に配置して、レンズ22bが発光素子22aの中心軸22dに対して非対称形状にすることで、照明部2の光軸27がシャインプルーフ光学系31のピント面7の遠方側を指向するようにしてもよい。
【0116】
また、発光素子22aとレンズ22bとを同軸に配置して、左側照明基板21を傾けることにより、照明部2の光軸27がシャインプルーフ光学系31のピント面7の遠方側を指向するようにしてもよい。
【0117】
また、照明部2は、光量が互いに異なる複数の発光素子22aを有していてもよく、この場合、光量が互いに異なる複数の発光素子22aを用いてシャインプルーフ光学系31のピント面が略均一な明るさとなる照明光を照射するように構成できる。すなわち、シャインプルーフ光学系31のピント面の遠方側に照明光を照射する発光素子の光量を、シャインプルーフ光学系31のピント面の近方側に照明光を照射する発光素子の光量よりも大きくすることで、シャインプルーフ光学系31のピント面が略均一な明るさとなる照明光を照射できる。発光素子22aの制御によって光量を互いに異ならせてもよいし、発光素子22aの制御によらず、発光素子22aの性能によって光量を互いに異ならせてもよい。
【0118】
また、照明部2は、光強度が互いに異なる複数の発光素子22aを有していてもよく、この場合、光強度が互いに異なる複数の発光素子22aを用いてシャインプルーフ光学系31のピント面が略均一な明るさとなる照明光を照射するように構成できる。すなわち、シャインプルーフ光学系31のピント面の遠方側に照明光を照射する発光素子の光強度を、シャインプルーフ光学系31のピント面の近方側に照明光を照射する発光素子の光強度よりも高くすることで、シャインプルーフ光学系31のピント面が略均一な明るさとなる照明光を照射できる。
【0119】
また、照明部2は、シャインプルーフ光学系31のピント面に対する光軸の角度が互いに異なる複数の発光素子22aを有していてもよく、この場合、ピント面に対する光軸の角度が互いに異なる複数の発光素子22aを用いてシャインプルーフ光学系31のピント面が略均一な明るさとなる照明光を照射するように構成できる。
【0120】
(輝度変換)
シャインプルーフ光学系31のピント面を略均一な明るさとするための手段としては、上述したように照明部2の構成によって可能であるが、例えばコードリーダ1の設置条件、コード条件等に応じた輝度変換カーブをコード画像に適用して当該コード画像の輝度値を変換し、輝度値が変換された後のコード画像(変換後コード画像)に対してデコード処理を実行するようにしてもよい。尚、上記照明部2の構成と、輝度変換カーブの適用とを併用してもよいし、いずれか一方のみ実行してもよい。
【0121】
コードリーダ1の通信部6は、当該コードリーダ1の設置条件及びコード条件を受信可能に構成されている。設置条件には、コードリーダ1の設置距離と設置角度の少なくともいずれかが含まれている。コード条件には、コードサイズとコードコントラスト値(Print Contrast Signal)の少なくともいずれかが含まれている。
【0122】
制御部4は、通信部6で受信された設置条件及びコード条件を取得すると、取得した設置条件及びコード条件に基づいて輝度変化カーブを決定し、さらに、撮像部3から出力された第1コード画像を取得する。制御部4は、決定した輝度変化カーブを、撮像部3から出力された第1コード画像に対して適用することで、輝度値が変換された第2コード画像を生成する。撮像部3から出力された第1コード画像に対して、画像センサ31bのV方向位置に応じた輝度変換カーブを適用して、当該輝度変換カーブによって輝度値が変換された第2コード画像を生成する処理は、コード検出部43が実行してもよい。制御部4のデコード部44は、第2コード画像に対してデコード処理を実行する。
【0123】
制御部4は、撮像部3から出力された第1コード画像に対して、画像センサ31bのV方向位置に応じた輝度変換カーブを適用して、当該輝度変換カーブによって輝度値が変換された第2コード画像を生成し、第2コード画像に対してデコード処理を実行することもできる。このとき、画像センサ31bのV方向位置に応じて互いに異なる複数の輝度変換カーブを適用して、第2コード画像を生成してもよい。この複数の輝度変換カーブは、近方に対応するV方向位置に適用する近方用輝度変換カーブと、遠方に対応するV方向位置に適用する遠方用輝度変換カーブとを含んでいてもよい。近方用輝度変換カーブは、遠方用輝度変換カーブと比較して、第2コード画像において輝度値が0に変換される第1コードの輝度値が大きくなるように構成されている。
【0124】
制御部4は、第1コード画像においてコードが存在する基準ピント位置以外の位置を特定し、特定した基準ピント位置以外の位置を白飛びまたは黒つぶれさせた第2コード画像を生成してもよい。この場合、デコード部44は、基準ピント位置以外の位置を白飛びまたは黒つぶれさせた第2コード画像に対してデコード処理を実行する。
【0125】
図29は、近方用輝度変換カーブと遠方用輝度変換カーブを示すグラフであり、横軸では入力の輝度値を1024階調としており、縦軸では出力の輝度値を256階調としている。この図に示すように、コードリーダ1の設置条件やコード条件に基づいて、輝度変換カーブの形状を変更すること、及びオフセットさせることができる。例えば、ワークWの高さ(ピント面の対象範囲)について、ワークWが高い(対象範囲が広い)ほど、入力レンジを広くする。また、コードリーダ1の設置角度について、ワークWに対する撮像部3の光軸の角度が急峻(正反射光が多い)なほど明るくなるため、入力レンジを
図27の右側にオフセットさせる。また、コードサイズについては、例えばナローバー幅が小さい場合に入力レンジを狭くして、コントラストが明確になるようにする。また、コードコントラスト値については、コードコントラスト値が小さい場合に入力レンジを狭くして、コントラストが明確になるようにする。これらのうち、任意の一のみ実行してもよいし、任意の2以上を併用してもよい。
【0126】
シャインプルーフ光学系31のピント面を略均一な明るさとするための方法としては、上述した筐体300に格納された照明部2の構成及び制御による方法以外にも、例えば筐体300とは別の筐体(図示せず)に格納された照明部(外部照明)を利用する方法がある。一または複数の外部照明を用いることにより、シャインプルーフ光学系31のピント面を略均一な明るさとすることができる。また、一または複数の外部照明と、筐体300に格納された照明部2とを併用することにより、シャインプルーフ光学系31のピント面を略均一な明るさとすることができる。外部照明を用いる場合には、シャインプルーフ光学系31のピント面における遠方側の明るさを外部照明で補うことが可能である。外部照明は、例えば照明制御部42(
図3に示す)によって制御することができる。
【0127】
図30は、コードリーダ1で生成されたコード画像の例を示しており、符号7の四角形はピント面を示している。この例では、段ボール箱をワークWとしている。ワークWの側面には、上段のコード400、中段のコード401及び下段のコード402が付されている。この図に示すように、シャインプルーフ光学系31のピント面の近方側に位置するコード(上段のコード400)と、遠方側に位置するコード(下段のコード402)の両方が適切な明るさ(デコードを短時間で完了させることできる明るさ)で撮像されていることが分かる。
【0128】
図31は、比較例に係るコード画像の例を示す図である。比較例は、シャインプルーフ光学系31のピント面を略均一な明るさとするため構成を備えていないコードリーダである。FIG.31Aは、中段のコード401が適切な明るさとなるように照明条件を設定した場合のコード画像の例を示しており、この場合、下段のコード402は暗くなり、デコードが不可能もしくはデコードに長時間を要する結果となる。
【0129】
FIG.31Bは、上段のコード400が適切な明るさとなるように照明条件を設定した場合のコード画像の例を示しており、この場合、中段のコード401は暗くなり、デコードが不可能もしくはデコードに長時間を要する結果となる。下段のコード402については撮像できていない。
【0130】
FIG.31Cは、下段のコード402が適切な明るさとなるように照明条件を設定した場合のコード画像の例を示しており、この場合、上段のコード400が明るくなり過ぎて一部が白飛びしており、デコードが不可能もしくはデコードに長時間を要する結果となる。
【0131】
図32のFIG.32Aに示すグラフは、本発明に係るコードリーダ1で生成されたコード画像の輝度値を示しており、下側に示すグラフは、比較例に係るコードリーダで生成されたコード画像の輝度値を示している。グラフの縦軸は輝度値であり、横軸は画像センサ31bのU方向のピクセル位置を示している。グラフの実線は、上段のコード400の輝度値を示しており、破線は、下段のコード402の輝度値を示している。
【0132】
FIG.32Aのグラフに示すように、上段のコード400の輝度値平均は120程度であるのに対し、下段のコード402の輝度値平均は90程度である。本発明を適用することで、暗いコードである下段のコード402の輝度値平均が、明るいコードである上段のコード400の輝度値平均の70%程度となる。暗いコードの輝度値平均が、明るいコードの輝度値平均の50%以上であれば、両方のコードのデコードは短時間で完了するので、暗いコードの輝度値平均が、明るいコードの輝度値平均の50%以上となるように照明部2を構成するか、輝度値変換処理を行えばよい。暗いコードの輝度値平均が、明るいコードの輝度値平均の60%以上となるようにするのがより好ましい。
【0133】
図32のFIG.32Bのグラフに示すように、比較例の場合、上段のコード400の輝度値平均は100程度であるのに対し、下段のコード402の輝度値平均は40程度である。この場合、暗いコードの輝度値平均が、明るいコードの輝度値平均の40%程度になり、暗いコードのデコードが不可能もしくはデコードに長時間を要する結果となる。
【0134】
(デコード処理に用いる設定の選択)
通信部6が受信した設置条件およびコード条件に関する情報は、デコード処理に用いる遠方用の設定の選択時に用いることができる。例えば、制御部4は、撮像部3から遠方に位置するコードのデコード処理に用いる遠方用の設定を選択した場合、通信部6が受信した設置条件およびコード条件に基づいて、超解像処理の実行領域を決定することができる。
【0135】
また、デコード処理に用いる設定として、撮像部3から近方に位置するコードのデコード処理に用いる近方用の設定と、撮像部3から遠方に位置するコードのデコード処理に用いる遠方用の設定の2つ以外にも、近方と遠方の間(中間)に位置するコードのデコード処理に用いる中間位置用の設定が含まれていてもよい。中間位置用の設定は、他の設定と同様に、記憶部5の設定記憶部53に記憶させておくことができる。中間位置用の設定が複数あってもよく、例えば、近方に近い第1の中間位置用の設定と、遠方に近い第2の中間位置用の設定とが中間位置用の設定に含まれていてもよい。
【0136】
制御部4は、撮像部3から出力されたコード画像に対して、当該コード画像におけるコード候補位置を決定するとともに、当該コード候補位置に基づいて、記憶部5の設定記憶部53から近方用の設定、遠方用の設定及び中間位置用の設定のうち、いずれか1つを選択し、当該選択した設定を用いてコード画像に対してデコード処理を実行する。中間位置用の設定では、遠方用の設定に比べて超解像処理を弱めに適用する。
【0137】
また、制御部4は、コード候補位置が近方と判定した場合、超解像処理の対象領域の外側のみを近方用の設定でデコードしてもよいし、遠方と判定した場合、対象領域のみを超解像処理した上、遠方用の設定でデコードしてもよい。
【0138】
上述の実施形態はあらゆる点で単なる例示に過ぎず、限定的に解釈してはならない。さらに、特許請求の範囲の均等範囲に属する変形や変更は、全て本発明の範囲内のものである。
【産業上の利用可能性】
【0139】
以上説明したように、本発明に係るコードリーダは、例えばワークに付されたバーコード等を読み取る場合に利用することができる。
【符号の説明】
【0140】
1 コードリーダ
2 照明部
3 撮像部
4 制御部
31 シャインプルーフ光学系
31a レンズ
31b 画像センサ
43 コード検出部
44 デコード部
B コンベア
W ワーク