以下、本発明の実施の形態を図面に基づいて説明する。ただし、以下に示す実施の形態は、本発明の技術思想を具体化するための光学式情報読取装置及び光学式情報読取方法を例示するものであって、本発明は光学式情報読取装置及び光学式情報読取方法を以下のものに特定しない。また、本明細書は特許請求の範囲に示される部材を、実施の形態の部材に特定するものでは決してない。特に実施の形態に記載されている構成部品の寸法、材質、形状、その相対的配置等は特に特定的な記載がない限りは、本発明の範囲をそれのみに限定する趣旨ではなく、単なる説明例にすぎない。なお、各図面が示す部材の大きさや位置関係等は、説明を明確にするため誇張していることがある。さらに以下の説明において、同一の名称、符号については同一もしくは同質の部材を示しており、詳細説明を適宜省略する。さらに、本発明を構成する各要素は、複数の要素を同一の部材で構成して一の部材で複数の要素を兼用する態様としてもよいし、逆に一の部材の機能を複数の部材で分担して実現することもできる。
[実施形態1]
光学式情報読取装置は、文字列や、バーコード、二次元コード等のシンボルを読み取ってデータの登録、照合を行う部材であり、ハンディターミナル、業務用PDA等とも呼ばれる。特に、シンボルがDPMで読取対象物に直接刻印されている等、シンボルが凹凸を有する場合であっても、安定的に読み取れるようにした光学式情報読取装置である。本発明の実施形態1に係る光学式情報読取装置100を、図1~図3に示す。これらの図において、図1は本発明の実施形態1に係る光学式情報読取装置100を示す斜視図、図2は図1の光学式情報読取装置100を斜め下方から見た斜視図、図3は図1の光学式情報読取装置100のブロック図を、それぞれ示している。
これらの図に示す光学式情報読取装置100は、筐体部10と、把持部14と、撮像ユニット20と、演算部30と、表示部50と、操作部54と、電源部56を備える。撮像ユニット20は、撮像部21と、照明手段40を含む。この光学式情報読取装置100は、読み取り対象のシンボルに対して照明手段40を用いて複数の方向から照明光を照射し、それぞれの方向における照明光の照射時に撮像部21で撮像された画像を合成することにより、シンボルの輪郭が強調された画像を取得し、この画像に対してシンボルの読み取りを行う。使用者は把持部14を手で握って、シンボルに向けた姿勢に光学式情報読取装置100を構えて、操作部54に設けられたトリガスイッチを指で操作することにより、シンボルの読み取り等の処理を実行させる。
筐体部10は、光学式情報読取装置100の外形を形成する部材である。筐体部10の内部には、撮像ユニット20や表示部50、電源部56等が収納される。ここでは筐体部10は、一方向に延長された形状とし、長手方向に表示部50の表示面と把持部14とが直線状に並ぶように形成している。また筐体部10の内部では、先端側に撮像ユニット20が、後端側で把持部14の内部には電源部56が、それぞれ配置されている。さらに筐体部10は、図1~図2に示すように、上ケース11と下ケース12に二分割されている。下ケース12は筐体部10の下面を構成し、先端側に斜め下方に開口させた読取口13を形成している。さらに上ケース11は上面を平坦面とし、表示部50の表示面を表出させている。表示部50は、一方向に延長された矩形状の表示面を有する。このような筐体部10は、強度を有する軽量な材質で構成され、例えば樹脂製とする。
把持部14は、使用者が把持するための部位であり、筐体部10の一部に設けられている。また把持部14と筐体部10は別部材で構成する他、これらを一体に形成してもよい。把持部14は筐体部10の後端側に一体的に設けられている。さらに把持部14を筐体部10に対して着脱式としてもよい。
さらにまた把持部には、操作部54を設けている。操作部54には、使用者が指で操作するための各種の操作キーを配置している。使用者は操作キーを操作することで、表示面における表示内容に対して種々の操作を実行したり、照明光やエイミング光の照射、読み取り、画像の撮像等の各種の処理を行う。操作キーには、例えば読み取りを指示するトリガスイッチや、エイミング光を照射するエイミングスイッチが含まれる。なお、操作部54をタッチパネルとすることも可能である。表示部50と別個のタッチパネル式の操作部としてもよいし、表示器50を操作部54が設けられている位置まで設け、その部分を操作入力に用いることで操作部としての機能を実現することもできる。
表示部50は、撮像部21により得られた画像や、読取結果、業務アプリケーション等の各種情報を表示させるための部材である。表示部50では主に業務アプリケーションを表示させながら、画像表示でもって読み取りを分かりやすくするための補助的な役割も果たす。表示部50は、使用者の操作に応じて表示を行う。表示部50の表示は、使用者のキー入力や、タッチパネル入力、サーバからの操作等に応じて行われる。表示部50は、LCDや有機EL等で構成される。また表示部50は一方向に延長された矩形状の表示面を有しており、筐体部10の上面に表出させている。表示面は、読み取った情報や設定情報等を表示させるための面である。この表示面は、タッチパネルとすることができる。
撮像部21は、読み取り対象となるシンボルを含む画像を取得する。撮像部21は、C-MOSやCCD等の撮像素子(イメージセンサ)で構成される。撮像素子は板状に構成される。また撮像部21は、一以上の光学レンズ22を含んでおり、受光された反射光を撮像素子に結像させる。
照明手段40は、撮像部21でシンボルを撮像する際にシンボルを照明するよう、照明光を照射するための部材である。照明手段40は、撮像部21の光軸の周囲に設けられた複数の照明部43を備える。照明部43は、発光ダイオード(LED)や有機EL等で構成される。
電源部56は、照明手段40や撮像部21、演算部30や表示部50等に駆動電力を供給するための部材である。ここでは電源部56は、充電可能な二次電池で構成されており、コードレスで携行可能な光学式情報読取装置100を実現している。
(演算部30)
演算部30は、撮像制御部31と、照明制御部32と、画像処理部33と、読出部34を含む。この演算部30は、与えられた信号やデータを処理して各種の演算を行い、演算結果を出力する制御回路や制御素子である。このような演算部30は、CPUやMPU、GPU、TPU、FPGA、ASIC、LSI等のプロセッサやマイコン、あるいはSoC等のチップセット等で構成される。
照明制御部32は、複数の照明部43を所定の順序に従って逐次点灯させ、光軸に対する照明方向を変えてシンボルに照明光を照射するよう照明手段40を制御する。
撮像制御部31は、照明制御部32により複数の照明部43を点灯させるタイミングごとに、異なる照明方向の照明光を用いて得られた画像をそれぞれ取得するよう、撮像部21を制御する。このため撮像制御部31は照明制御部32と連動して、照明手段40の点灯と撮像部21による撮像を同期させている。
画像処理部33は、異なる照明方向の照明光を用いて得られた複数の画像から、シンボルの凹凸を示す形状画像を生成する。
読出部34は、画像処理部33により得られた形状画像を基に、シンボルを読み取る。光学式情報読取装置で読み取る読み取り対象のシンボルには、文字列の他、二次元コードやバーコード等のコードが含まれる。コードには、QRコード、MicroQRコード、tQR、iQR、SQRC(セキュリティ機能搭載QRコード)、CPコード、DataMatrix、GS1Data Matrix、Aztec、PDF417、Micro PDF417、GS1Data Bar14、Limited,Stacked,Expanded+Composite、UPC/EAN/GS1-128/ITF/Codabar、Veri Code、Maxi Code(いずれも商品名又はサービス名)等、規格化されたコードが挙げられる。コードは、各規格に従い、復号化されており、読出部34で各規格に従って復号化される。また、標準化されていない独自規格のコードでもよい。さらに本明細書で文字列というとき、数字や記号も含む意味で使用する。文字列の読み取りの場合は、事前の復号化は不要であり、読出部34は画像中から文字列を抽出してOCRを行う(詳細は後述)。
(照明手段40)
照明手段40は、照明部43を撮像部21の光軸の周囲に3つ以上備えている。照明制御部32で3つ以上の照明部43をそれぞれ点灯する際に、撮像制御部31はシンボルを含む画像を撮像部21で取得する。また画像処理部33は、照明方向に応じてシンボルを含む画像を処理し、照明方向に基づき処理された画像を合成することにより、形状画像を生成する。
画像処理部33は、シンボルの凹凸を示す形状画像として照度差ステレオ(フォトメトリックステレオ)の原理に基づく照度差ステレオ画像を合成する。これにより、照度差ステレオ法に基づき、読み取り対象のシンボルの凹凸形状を示した形状画像を、光学式情報読取装置100で簡便に撮像できる利点が得られる。照度差ステレオ法では、図4に示すように、ワークWKの同一の領域を同一の視点から、照明手段40の照明方向を変えながら、すなわち照明部43を切り替えながら複数の画像を撮像部21で撮影し、各画像に含まれる各位置の明るさの変化から、当該位置の面の傾きを推定する。この照度差ステレオ法を用いて、シンボルの形状を取得して読み取りを行う。
照明制御部32は、照明手段40の点灯を制御する照明モードとして、照度差ステレオの原理に従い照明光を照射する照度差ステレオ照明モードに加えて、明視野観察や暗視野観察等、照明方向や照明パターンを変化させることが可能なマルチアングル照明モードを含むことができる。これにより、読み取り対象のシンボルに応じて、マルチアングル照明による画像と照度差ステレオ画像とを、一の光学式情報読取装置100で選択して読み取ることが可能となる。
(照明部43)
マルチアングル照明モードを含む場合、照明手段40は、照度差ステレオ照明用の照明部と、マルチアングル照明用の照明部とを個別に備えている。照明部43を構成する照明群は読取口13を囲むように二重に配置されている。内側に配置された第一照明群41がマルチアングル照明用照明を、外側に配置された第二照明群42が照度差ステレオ用照明を、それぞれ構成している。
上述した筐体部10は、図3に示すように第一面1と、この第一面1と反対側の第二面2を有する。把持部14は、筐体部10に設けられている。また操作部54は、第二面2に設けられ、使用者から数字又は文字の入力を受け付ける操作キーを含む。一方、撮像部21は第一面1側に設けられている。撮像部21は光軸を有し、シンボルを含む画像を取得する。
照明手段は、撮像部21の光軸の周囲に円環状又は矩形状に配置されている。この照明手段は、光源群と、反射部46と、同軸照明を備える。光源群は、第一面1側に設けられ、撮像部21の光軸の周囲に環状に配置されている。この光源群は、シンボルの周囲側から照明光をそれぞれ照射する。ここで光源群は、シンボルに対して、相対的に低い角度と、相対的に高い角度の少なくとも2種類以上の異なる天頂角から、それぞれ照明光を照射する。反射部46は、読取口13の内部で、撮像部21の光軸上に配置されて、この撮像部21への入射光を反射させる。同軸照明は、第一面1側に設けられている。この同軸照明は、撮像部21の光軸と同軸状に照明光を照射する。
筐体部10には、読取口13が開口されている。読取口13は、円環状又は矩形状に配置された照明手段で画成されている。この読取口13は、撮像部21の光軸及び筐体部10から傾斜して開口されている。照明制御部32は、読取口13の周囲から、光源群を点灯させ、光源群の明視野照明光成分と暗視野照明光とを同時にシンボルに照射するよう制御する。また画像処理部33は、光源群から照明光を照射して撮像部21で撮像されたシンボルを含む画像を読み取る。表示部50は、筐体部10の第二面2に設けられている。この表示部50は、操作部54から入力された数字又は文字と、光源群が点灯した状態で撮像部21により得られたシンボルを含む画像を表示する。
照明モードの切り替えは、照明切替部で行う。照明切替部の一例として、照明切替画面のGUIを準備してもよい。照明切替画面では、ラジオボタンでマルチアングル照明、下方向照明、照度差ステレオ照明を選択できる。例えば照明Type1、照明Type2、照明Type3を選択可能とする。このような例では照明Type1をマルチアングル照明として、例えば読み取り対象のシンボルを付したワークが鋳肌のざらざらした金属のような場合に、背景部分となる金属表面を除去する場面に好適となる。また照明Type2を下方向照明として、金属やドットピーン等のワークに対して乱反射光で読み取るケースに好適となる。またType3を照度差ステレオ法に基づく照明として、照度差ステレオ処理の画像フィルタを利用して、ワークに刻印されたシンボルの凹凸を浮き上がらせる場合に好適となる。またType3では、凹文字に対応した照明モードと凸文字に対応した照明モードとを有している。
(照度差ステレオ法)
照度差ステレオ法(photometric stereo)とは、異なる複数の照明方向から照明した画像を撮像して、その陰影情報からワークの法線ベクトルを求める三次元計測の手法の一つである。このような照度差ステレオ法を用いた画像処理装置は、法線ベクトル(傾き画像に相当)からX軸やY軸の成分を輝度値に置き換えた画像や、反射率画像(アルベド画像に相当)を作成して、画像検査に応用している。従来の照度差ステレオ法では、撮像対象のワークに対して、異なる方向から照明光を照射した部分照明画像を複数枚撮像するため、複数方向からの照明を用意する必要があり、装置が大型化すること、またワークの位置と照明の位置を予め正確に規定する必要があり、設営に手間がかかる問題があった。また、撮像に際してはワークが静止した状態とする必要があり、撮像時に手ぶれさせないことが求められる。このように照度差ステレオ法は高さ情報が必要な画像検査に主に用いられており、光学式情報読取装置のような、シンボルの陰影の読み取りを目的とした機器には用いられていなかった。いいかえると、高さ情報が本来的に不要な機器では、そもそも高さ情報の取得に用いられる照度差ステレオ法を適用する理由もなかった。このような理由により、従来は小型で携行可能な光学式情報読取装置で、照度差ステレオ法が採用された例は存在していなかった。
これに対し本実施形態に係る光学式情報読取装置100では、複数の照明部43を撮像部21の光軸の周囲に環状に配置した照明手段40を、筐体部10に組み込むことで、携行性を維持したまま、照度差ステレオ用の照明を構成している。
また追加的な工夫として、ワークの撮像時に手ぶれを生じさせにくいよう、このような複数の照明部43で囲まれた読取口13を直接、ワークの表面に押し当てて撮像させることにより、撮像時に光学式情報読取装置100を固定し易くできる。
加えて、撮像を短時間で行えるよう、露光時間を短くすることで、さらに撮像処理を高速化している。また、照明光の光量を増すことで、露光時間を短くしても十分な明るさの部分照明画像が得られる。
ここでは、照明部40を構成するLEDの駆動電流を増している。一般にLEDの駆動回路で定格電流に制限があり、駆動電流を大きくするには設計変更が必要となる。本実施形態においては、すべての照明部を点灯させた全照明で撮像した全照明画像を撮像可能としており、すべての照明部を同時に点灯させる電流を供給できるように設計されている。一方で部分照明画像の撮像に際しては、照明方向に応じたLEDのみを点灯させれば足りる。いいかえると、全照明画像の撮像時には他のLEDに供給される電流分も、部分照明画像の撮像時には点灯させるLEDに回すことが可能となる。この結果、全照明画像の撮像時よりも多くの電流値をLEDに供給できるので、その分、より光量の多い部分照明画像を撮像できるので、露光時間を短くすることが可能となる。
さらに、通常のシンボルの読み取りと比べて、前処理となる画像処理が煩雑な照度差ステレオ法を適用することで、処理時間が長くなる結果、シンボルの撮像(スキャン)から読み取り結果の出力(デコード)までの処理時間が長くなって応答性が低下する。そこで、近距離に置かれたワークに対してのみ行わせ、中距離や遠距離に置かれた通常のワークの読み取りにおいては、照度差ステレオ法による画像処理を行わないよう、距離に応じて照度差ステレオ法の実行を選択的に行わせることで、装置全体としてのレスポンスの低下を回避している。以下、各構成について詳述する。
なおこの例では、照度差ステレオ用の照明手段40として、図5に示す第二照明群42のように上方向照明部42a、下方向照明部42b、右方向照明部42d、左方向照明部42cを矩形状に配置した例を説明する。ただ本発明は、照明部を矩形状に配置する構成に限定せず、照度差ステレオ法を実現可能な他の照明部の配置パターンを適宜採用することができる。例えば照明手段を六角形状とする等、多角形状に配置してもよい。あるいは照明手段を円環状に配置してもよい。さらに環状に配置した照明手段は、4つに分割する構成に限られず、例えば5以上に分割してもよいし、あるいは3以下に分割してもよい。一般に照度差ステレオ法では最低3方向の照明が必要とされているところ、本実施形態においては、照明部の分割数の最小を2分割とする。例えば矩形状に配置した照明部を、隅部を挟んでL字状に連結し、左下と右上にそれぞれ配置する構成としてもよい。この例では、左下方向照明部と、右上方向照明部で照明手段を構成している。このような照明手段であれば、X方向成分、Y方向成分は、これら2枚の照明から得られる画像に含まれているので、同様の画像フィルタを用いることで、X方向、Y方向の傾き画像を取得できる。撮像部21内の撮像素子の画素の配列方向と、照明方向が対応すると照明に対応した画像の合成処理をし易いので好ましい。
照明手段40は、照明部43を撮像部21の光軸の周囲に、円環状又は矩形状に複数の照明部43を配置している。この円環状又は矩形状に配置された複数の照明部43で囲まれた領域を、読取口13としている。
(読取支持部15)
また読取口13には、図3に示すように読取支持部15を設けることが好ましい。読取支持部15は、読み取り対象のシンボルを含む読取対象物の表面に押し当てるための支点を少なくとも2点以上、読取口13の外側に、複数の照明部43よりも外部に突出させて形成している。支点は、読取口13の円環状の周又は矩形状の辺に形成することが好ましい。これにより、動きや手ぶれに弱いとされる照度差ステレオ法において、手持ち式の光学情報読取装置を用いつつ、これを物理的に支点を押し当てることで、手ぶれを防ぎ立体的なステレオ画像を取得し、読み取りを行うことが可能となる。なお支点は、必ずしも照明部よりも突出させる必要はなく、照明部と同一面状に形成することもできる。
なお、必ずしも読取支持部15をワークの表面に当接させることを要するものでなく、撮像するワークに応じて、手で把持したまま読取支持部をワークの表面に当接させることなく撮像や読み取りを行わせてもよい。例えばDPMでなくワークの表面に印刷されたシンボルやシール等で貼付されたシンボルを読み取る場合は、照度差ステレオ処理は不要であり、通常の読み取り動作で足りる。よってこの場合は、ワークの表面に押し当てる必要はない。また、読取口13の全面をワークに押し当てる他、2点のみで当接させる構成としてもよい。例えば使用者が光学式情報読取装置100を、2点を支点としてワークに押し当て、この2点を結ぶ直線と交差する方向への傾斜が生じ得る場合でも、一軸への傾斜であれば使用者が撮像の瞬間に傾斜しないように手で保持することも比較的容易であり、また一軸方向へのわずかな傾斜であれば、照度差ステレオ処理においても比較的影響が少ない状態として、十分な精度の読み取りが可能と考えられる。
(撮像シーケンス)
次に、画像を撮像する撮像シーケンスを、図6のタイミングチャート及び図7、図8のフローチャートに基づいて説明する。ここでは、照度差ステレオ処理とライブビュー処理を並行して行っている。すなわち、照度差ステレオ処理によって部分照明画像を撮像して輪郭を抽出し、シンボルを読み取ってその結果を出力すると共に、ライブビュー処理によって、シンボルを含む画像を撮像して表示部50にリアルタイム画像として表示させている。
(照度差ステレオ処理)
まず、照度差ステレオ処理を、図7のフローチャートに基づいて説明する。まず、ステップS701において、トリガスイッチを押下して、読み取り処理を開始する。これに従って、ステップS702において、異なる方向から照明された部分照明画像が複数枚、撮像される。ここでは、上下左右に配置された照明部43をそれぞれ点灯させるように照明制御部32で点灯制御され、図6に示すようにその照明タイミングに従って撮像部21で順に撮像を行う。4方向から順次照明が照射されて、4枚の部分照明画像が撮像される。
次にステップS703において、フィルタ処理を行う。ここでは、撮像した部分照明画像を用いて、照度差ステレオのフィルタ処理を行う。
次にステップS704において、デコード処理を行う。ここでは、フィルタ処理した画像を用いて、デコード処理を行う。
そしてステップS705において、デコード結果を取得する。さらにステップS706において、読み取り結果が成功か否かを判定し、成功の場合は読み取り処理を終了する。一方成功でない場合、すなわち失敗又は所定時間内に成功が通知されないタイムアウトの場合は、ステップS702に戻って処理を繰り返す。
(ライブビュー処理)
一方で、照度差ステレオ処理でフィルタ処理やデコード処理を実施している間に、ライブビュー処理を行う。ライブビュー処理では、照明部43をすべて点灯させた全照明で撮像した画像を、表示部50に表示させると共に、動画像のようにリアルタイムに表示内容を更新させる。この手順を、図8のフローチャートに基づいて説明する。まず、ステップS801において、トリガスイッチを押下する。これはステップS701と共通である。次にステップS802において、すべての照明部43を点灯させた全照明画像を撮像する。そしてステップS803において、全照明画像を表示部50に表示させる。さらにステップS804において、一定時間スリープ処理を行う。次にステップS805において、読み取りが成功したか否かを判定し、成功の場合は処理を終了する。一方、失敗又はタイムアウトの場合は、ステップS802に戻り、処理を繰り返す。このステップS805は、上述したステップS706と共通であり、シンボルの読み取りが終了した場合はライブビュー処理も終了し、読み取りが失敗等の場合は、ライブビュー処理も継続させる。
ここでライブビュー用の全照明画像の撮像は、照度差ステレオ処理におけるフィルタ処理やデコード処理とは非同期で、周期的に行う。ただし、撮像処理を重複させないよう、撮像部21が部分照明画像を撮像していない間に、全照明画像を撮像させる。なお図6の例では、4枚の部分照明画像を撮像する間に、2枚の全照明画像を撮像しているが、1枚としてもよいし、3枚以上としてもよい。全照明画像の撮像枚数は、ライブビュー画像に要求されるフレームレートや演算部30の処理能力に応じて決定される。例えば、リアルタイム性を持たせるために、10fps以上で全照明画像を更新する。
(ライブビュー画像)
このように、フィルタ処理やデコード処理を行う間に、ライブビュー画像を表示させる。その理由は、照度差ステレオ処理でシンボルの撮像を行う際には、光学式情報読取装置100をシンボルを表示させたワークに覆い被せるようにして撮像するため、使用者がシンボルを目視できなくなるためである。
図9Aに示すように、ワークWKの表面にDPMによって形成されたシンボルSBを照度差ステレオ処理で読み取る場合を考える。ここで、照度差ステレオ用の最適な撮像を行うためには、光学式情報読取装置100をシンボルSBに対して近距離に近づける必要がある。その際、図9Bに示すようにエイミングモジュール60から出るエイミング光が光学式情報読取装置100の読取口13の陰に入ってしまい、使用者からエイミング位置APが見えなくなってしまう。このままでは、正しくシンボルSBを撮像できる位置に光学式情報読取装置100を配置できているのかを使用者が確認しづらくなる。そこで、ライブビュー処理により表示部50にライブビュー画像をリアルタイムで表示させることにより、使用者は表示部50に表示された画像を参照しながら、位置合わせができるようにしている。ここでライブビュー画像には、全ての照明部43を点灯させた全照明画像を表示することが好ましい。照度差ステレオ処理で用いる部分照明画像では、照明方向が限られているため、シンボルSBの全体像の確認には不向きなことが考えられる。また形状画像では、後述する通り画像の内縦方向を部分的に限定して画像処理しているので視野が狭くなり、位置合わせに使いづらい。よってこれらの画像を利用せず、別途、全照明画像を撮像してリアルタイムに更新するようにしている。特に、全ての照明方向の照明部43を点灯させた画像を用いることで、実際のワークWKの様子を確認し易くなり、見た目で位置合わせができる。
リアルタイム画像を表示させる表示部50は、リアルタイム画像を表示するリアルタイム画像表示領域を設けることができる。これにより、筐体部10に設けた撮像部21の位置に合わせてリアルタイム画像を表示させることで、図9Bに示すようにシンボルSBに被せるように光学式情報読取装置100を構えた場合でも、使用者に対して感覚的に光学式情報読取装置100を透過させてシンボルSBを視認しているように提示させることができ、直感的な把握が容易となって操作性がよくなる。
(照度差ステレオ処理でシンボルの輪郭を抽出する手順)
画像処理部33は、照度差ステレオ処理により、画像中からシンボルを抽出すると共に、復号化を行う。この照度差ステレオ法を用いて、シンボルを構成する要素CLの輪郭を抽出する手順の一例を、図10~図16に基づいて説明する。ここで、シンボルを構成する要素CLとは、例えば、読み取り対象のシンボルがQRコードの場合は、QRコードを構成する一セル、バーコードの場合は一バー、文字列の場合は各文字が、それぞれ該当する。
照度差ステレオ処理では、上述の通り照明方向を変えた場合の明るさの変化から、傾きを推定している。この処理では明るさを利用することから、照明により影CSが生じると、傾きを誤って推定する原因となる。ただし本実施形態においては、誤った傾きの結果を逆手にとって、要素CLの輪郭を抽出している。
(物体の輪郭が凸として出る原理)
形状画像に、要素CLの輪郭が凸として現れるのは、以下の手順による。
(1)影CSによる影響で、傾き画像にステップ変化が現れる。
(2)形状画像内部の差分計算によって、凸と認識される。
以下、これらを順次説明する。
(1:影CSによる影響で、傾き画像にステップ変化が現れる)
ここでは説明を簡単にするため、X方向の傾きのみを扱う。読み取り対象のシンボルを構成する要素CLとして、図10に示すような断面視四角形を考える。このような要素CLに対して、左側から照明を当てた画像を上から見た図は、図11のようになる。また、右側から照明を当てた画像は、図12のようになる。これらの画像に対して、照度差ステレオ処理によって得られた傾き画像のプロファイルは、図13で示すようになる。ここでは、X方向の傾きの推定結果を、矢印で示している。この図において破線で囲んだ領域では、傾き画像のプロファイルが影CSの影響で正確に得られていないことが判る。
(2:形状画像内部の差分計算によって、凸と認識される)
次に、このような傾き画像に現れる影CSの影響について検討する。読み取り対象のシンボルを含む画像に対して、細かな凸凹を得る積み上げ計算は、傾き画像での微分処理となる。すなわち、傾き画像の各画素の法線ベクトルに対して、X方向に微分処理を施し、表面の傾きの輪郭を示す輪郭画像を生成する。ここで、図13の傾き画像に対して微分処理を施し、得られた輪郭画像を図14に示す。この輪郭画像において、輪郭OLは白線で、影CSの終わりの部分ESは黒線で、それぞれ表れている。また平坦な面FSの階調値は128となる。
ここまではX方向のみについて説明したが、実際の形状画像ではX方向とY方向の両方向に処理される。そこで、X方向とY方向の両方で処理を行った輪郭画像を、図15に示す。ここで、影CSの終わりの部分はシンボルの読み取りにおいては必要ないため、レベル調整で影CSの終わりの部分を見えなくする。この結果、図16に示すように、要素CLの輪郭OLのみの形状画像を生成できる。
(画像処理範囲の制限機能)
読出部34は、撮像部21の撮像領域のうち、撮像領域の上端及び下端から所定の幅の撮像領域については、読み取りの対象から外し、撮像領域の中央領域を、読み取り対象とするようにしてもよい。これにより、読み取り処理は制限することで処理時間を高速化しつつ、表示自体は広い視野を確保して見易くすることにより、使用者の利便性を向上できる。
一方で表示部50は、読出部34により読み取り対象から外した領域も含めて画像を表示するようにしてもよい。これにより、光学式情報読取装置100の内部処理では、画像の一部を除去して高速化を図りつつ、使用者に対して表示部50上で画像を表示させる際には、画像処理では除かれた領域も含めた画像の全体像を表示させることで、視認性を高めている。
例えばデコード処理が文字列のOCRの場合、文字列は一般に横方向に書かれているので、画像の縦方向に領域を限定しても、言い換えると横書きの文字列の上下を画像処理の対象から排除しても、文字列の領域に対しては適切にフィルタ処理を行える。また、画像処理の対象領域を制限したことで、処理の簡素化、高速化が図られる。また、画像処理に先立ち、シンボルの領域のみを画像中から抽出して、抽出された領域のみを画像処理の対象としてもよい。この方法であれば、さらに文字列の左右に存在する、読み取りに不要な領域も排除されるため、一層の高速化が図られる。
(照度差ステレオ処理の自動ON/OFF機能)
画像処理部33は、照度差ステレオ処理を常時適用するのでなく、必要なときにのみ適用するように構成してもよい。いいかえると、読み取り対象のシンボルに応じて、DPMされたシンボルのような凹凸形状が含まれる場合に照度差ステレオ処理を実行させ、一方で印刷されたシンボル等、平面状のシンボルの場合には、通常の照明により反射光の濃淡を検出してシンボルの読み取りを行うようにしてもよい。
具体的には、読み取り対象のシンボルと光学式情報読取装置100とのワーキングディスタンスに基づいて、照度差ステレオ法に基づく画像処理の実行のON/OFFを切り替えることが好ましい。具体的には、ワーキングディスタンスが所定値以下の場合に、照度差ステレオ画像の合成処理を実行する。一方、ワーキングディスタンスが所定値以上の場合には、照度差ステレオ画像の合成処理をOFFする。これによって、照度差ステレオ法に基づく重い画像処理を必要時にのみ実行させることで、処理時間の短縮を図ることができる。すなわち、照度差ステレオ法では照明方向の異なる画像を複数枚撮像し、これらから傾き画像やアルベド画像を生成する必要があり、物理的な撮像時間や撮像した画像の処理に時間を要する。このため、光学式情報読取装置100でシンボルを撮像して復号した結果を出力するまでの応答時間が長くなって、レスポンスの低下が懸念される。一方で、照度差ステレオ法を用いた撮像を行う際には、ワークの表面に読取口13を押しつける作業が必要となる。いいかえると、ワーキングディスタンスが短い場合に照度差ステレオ法を適用する必要が生じ、逆に、ワーキングディスタンスが長い場合には通常の照明(マルチアングル照明)でシンボルの読み取りには足りる。そこで、ワーキングディスタンスが長い場合には、照度差ステレオ法に基づく撮像から画像処理までの一連の処理(以下、「照度差ステレオ処理」という)をOFFとすることで、処理時間を短縮してレスポンスの低下を抑制できる。
ワーキングディスタンスに基づいた照度差ステレオ処理のON/OFFは、自動で切り替えるようにすることが好ましい。これにより、使用者はワーキングディスタンスに応じて一々照度差ステレオ処理のON/OFFを切り替えるという煩わしい操作を省き、使い勝手のよい操作環境が得られる。照度差ステレオ処理の自動ON/OFFを実現するため、読み取り対象のシンボルと光学式情報読取装置100とのワーキングディスタンスを測定する距離測定部を備えている。距離測定部としては、光電センサ等の測距センサ等が利用できる。例えば撮像部21に隣接してエイミングモジュールを設け、エイミングモジュールが発するエイミング光の位置でもって、ワーキングディスタンスを判別するように構成してもよい。すなわち、エイミング位置APは、ワーキングディスタンスが近いときは、本来の位置よりも若干左側に移動し、ワーキングディスタンスが遠くなると、右側に移動していく。この現象を利用し、三角測距でワーキングディスタンスを測定している。照度差ステレオ処理をONさせるワーキングディスタンスのしきい値としては、例えば50mm~70mm等とする。
また、照明手段40で照明を行う際の照明条件や、撮像部21で撮像を行う際の撮影条件(本明細書においては照明条件と撮影条件をまとめて撮像条件と呼ぶことがある。)は、ワーキングディスタンスに応じて変化させてもよい。ここで照明条件を規定する照明パラメータには、例えば照明方向、すなわちどの照明部43をONして、どの照明部43をOFFさせるかの点灯パターン、各照明部43の光量、すなわちLEDの駆動電流、あるいは何秒間点灯させるかを示す点灯時間等が挙げられる。また撮影条件を規定する撮像パラメータとしては、CMOSの露光時間やゲイン等が挙げられる。さらに、ワーキングディスタンスに応じて照明条件や撮影条件を変化させる場合は、近距離用と長距離用の二種類のパラメータセットを予め用意する他、近距離用、中距離用、長距離用の三種類のパラメータセットを予め用意してもよいし、4種類以上としてもよい。この例では、近距離用、中距離用、長距離用の三種類のパラメータセットを予め用意している。そして、ワーキングディスタンスに応じて、デフォルトのパラメータセットが選択され、選択された照明条件及び撮影条件で画像が撮像され、読み取りが行われる。読み取りに失敗した場合は、別のパラメータセットが順次選択され、読み取りが成功するまで撮像と画像処理が行われる。
一方で、ワーキングディスタンスの測定に失敗した場合、すなわちワーキングディスタンスが不明の場合には、所定の順序でパラメータセットを切り替えて読み取りを行う。例えば、まず近距離用のパラメータセット、すなわち照度差ステレオ処理を含む撮像と画像処理を行う。読み取りが成功した場合は処理を終了し、失敗した場合は中距離用のパラメータセットに切り替えて、すなわち照度差ステレオ処理を省いた読み取りを行い、さらに失敗した場合は長距離用のパラメータセットに切り替えて同様に読み取りを行う。
さらに照度差ステレオ処理の実行に際しても、条件の異なる撮像条件を予め複数用意して、これらを順次切り替えて撮像処理及び読取処理を行うように構成してもよい。例えば照明制御部32で、読み取り対象のシンボルの文字サイズ、又はシンボルのドットサイズに関するパラメータである特徴サイズと、シンボルの凹凸の反転とを少なくとも含む第二照明群42に係る調整パラメータを変化させて、照明手段40の点灯を制御する。画像処理部33は、照明手段40により照明光の制御された複数の画像の各デコード結果に基づいて、調整するパラメータを決定する。このように撮像条件として、特徴レベル、オフセット、ノイズレベル等のパラメータを変更することができる。また、撮像した画像の評価結果に基づいて、これらのパラメータを自動で調整することにより、使用者はパラメータの設定といった面倒な作業を意識することなく、シンボルの読み取りを状況に応じて自動で設定を変更させた状態で読み取ることが可能となる。
例えば、読み取り対象のシンボルが凸文字か凹文字か、太字か細字かの4つの組み合わせに応じて、予め照明部43の照明条件及び撮像部21の撮影条件を変化させた4組のパラメータセットを準備しておく。すなわち、凸文字かつ太字、凸文字かつ細字、凹文字かつ太字、凹文字かつ細字の組み合わせとする。ここで、シンボルが凹文字か凸文字かについては、パラメータセットとして二値化するしきい値を変化させる。またシンボルが太字か細字かについては、パラメータセットとして抽出する画像周波数成分を変化させる。なお、シンボルは文字列に限らず、QRコードのような二次元コードやバーコードといったコードも対象としているが、凹又は凸、細かい又は粗いケースを判り易く表現するため、ここでは凸「文字」や太「字」と表現している。そして、これらのパラメータセット毎に、順次照明制御部32及び撮像制御部31を制御して部分照明画像を4枚撮像して形状画像を生成し、読み取り処理を行っていく。そして、計4枚の形状画像の読み取りを順次行う過程で、何れかの形状画像でシンボルの読み取りに成功した時点で、読取結果を出力すると共に読取処理を終了する。これにより、利用者は特段の設定を行うことなく、DPMのような従来読み取りが困難であったシンボルであっても、通常のシンボルと同様に読み取りを行えるようになる。
なお、上記構成に限らず、例えば4枚の形状画像を順次生成して、各形状画像の評価を行い、最も評価値の高い形状画像を選択して、読取結果として出力するように構成してもよい。また、このように4つのパラメータセットを順に振ることで、読み取りができるパラメータを自動で探索するように構成してもよい。さらに、演算部30にマルチコアのCPU等を用いてデコード処理させる際には、1コアは凹側の処理(フィルタ処理及びデコード処理)、別の1コアに凸側の処理を行わせるように、処理毎にコアを割り当ててもよい。この場合は、各コアの結果を受けて、読み取りの信頼度が高い方の読み取り結果をデコード結果として出力する。特にフィルタ処理には背景ノイズが載り易いため、複数のフィルタ条件を試して、信頼度の高い結果を選定することで、信頼性が高められる。
(演算部30の一例)
図3の演算部30の一例を、図17のブロック図に示す。この図に示す演算部30は、撮像制御部31と、照明制御部32と、画像処理部33と、読出部34を含む。画像処理部33は、法線ベクトル導出部33aと、凹凸判定部33bと、読取用画像生成部33cの機能を実現する。
従来、DPM等によりワーク表面に成形された凹凸形状を有する文字列の読み取りにおいては、読み取り対象の文字列が凹文字の場合と、凸文字の場合とで、それぞれ読取アルゴリズム等の読み取りの設定を異ならせた上で、読み取りを実行していた。この方法では、文字列の読み取り前に予め、文字列の凹凸の種別を設定する必要があり、手間が掛かる上、文字列の凹凸が変更されると、これに応じて読取側の設定も変更しなければならない。また、このような凹凸別の設定を行わない場合や、読み取り対象の文字列が凹文字か凸文字かが事前に判明していない場合は、まず凹文字専用の読取アルゴリズムと、凸文字専用の読取アルゴリズムのどちらか一方で読み取りを行い、意味のある文字列を認識できない場合には、他方のアルゴリズムで読み取りを行っていたが、この方法では読み取りに本来の2倍の時間を要するという問題があった。
これに対し本実施形態に係る光学式情報読取装置100では、文字列の読み取りを行う前に、文字列が凹文字であるか凸文字であるかを自動で判定し、判定結果に基づいて文字列が読み取りやすくなるように画像処理を行った後に、判定結果に応じたアルゴリズムで文字列を読み取っている。
(法線ベクトル導出部33a)
法線ベクトル導出部33aは、撮像部21により生成された複数の輝度画像に基づいて、照度差ステレオの原理により読取対象物の表面の法線ベクトルを求めるための部材である。
(凹凸判定部33b)
凹凸判定部33bは、法線ベクトル導出部33aにより求められた読取対象物の表面の法線ベクトルに基づいて、該読取対象物の表面の形状を求め、凹凸部分が凹と凸のいずれの形状であるかを判定するための部材である。
(中間画像生成部33b1)
また凹凸判定部33bは、中間画像生成部33b1の機能を実現する。中間画像生成部33b1は、法線ベクトル導出部33aにより求められた読取対象物の表面の法線ベクトルに基づいて読取対象物の表面の形状を求め、この読取対象物の表面の形状を示す中間画像を生成する。中間画像生成部33b1で生成された中間画像に基づいて、凹凸部分が凹と凸のいずれの形状であるかを判定する。具体的には、中間画像生成部33b1は、照度差ステレオ画像の各画素に、読取対象物の表面の各部の形状に基づいて、凸部分と凹部分に異なる画素値を割り当てることで、中間画像を生成する。
ここで凹凸判定部33bは、中間画像の凹凸部分を含む所定の画像領域内における凸部分に対応する画素数と、凹部分に対応する画素数の割合に基づいて、凹凸部分が凹と凸のいずれの形状であるかを判定するよう構成してもよい。特に凹凸判定部33bは、中間画像において基準値が割り当てられた画素に隣接する画素の内、凸部に対応する画素数と凹部に対応する画素数の割合を求めることで、凹凸部分が凹と凸のいずれの形状であるかを判定することができる。
そして読取用画像生成部33cは、凹凸判定部33bによって凹凸部分が凹形状であると判定された場合には、凹部分に対応する画素以外の画素に統一して画素値を割り当てる。一方、凹凸部分が凸形状であると判定された場合には、凸部分に対応する画素以外の画素に統一して画素値を割り当てる。これにより、凹凸部分の形状が強調された読取用画像が生成される。
あるいは読取用画像生成部33cは、凹凸判定部33bによって凹凸部分が凹形状であると判定された場合には、読取対象物の表面の平坦な部分に対応する画素に自動で第一の基準値を割り当てると共に、凹形状が強調されるように該読取対象物の表面の各部に対応する各画素に画素値を割り当ててもよい。一方で凹凸部分が凸形状であると判定された場合には、読取対象物の表面の平坦な部分に対応する画素に自動で第一の基準値とは異なる第二の基準値を割り当てると共に、凸形状が強調されるように該読取対象物の表面の各部に対応する各画素に画素値を割り当てる。このようにして、凹凸部分の形状が強調された強調された読取用画像を生成することが可能となる。
(基準値)
ここで基準値について説明する。本実施形態においては、基準値は読取対象物の平坦な部分に対応する輝度値として割り当てられる。例えば輝度値を0~255の256諧調、すなわち28の8ビットで表現する場合、基準値は0~255のいずれかの値をとることになる。上述した凹凸判定部33bが、中間画像において基準値が割り当てられた画素に隣接する画素から凹凸部分の凹凸を判定する例においては、基準値を、読取対象物の平坦部分の灰色領域にあたる輝度値32~223に設定する。これにより、平坦部分に隣接する領域の輝度値分布を、凹凸判定に用いることが可能となる。
また、読取対象物が凹形状の場合は、読取対象物の表面の平坦な部分に対応する画素に自動で第一の基準値を割り当てる。例えば凹文字の場合は、凹部分の形状に着目したいため、平坦部分の基準値を輝度値の上限である255に設定する。こうすることで、略平坦又は凸部分に対応する画素には255付近の画素値が割り当てられ、凹部分のみが、へこみ具合に応じて0~255の輝度値で表現される。この結果、凹形状が強調されるように読取対象物の表面の各部に対応する各画素に画素値が割り当てられるようになる。
一方で、読取対象物が凹形状の場合は、読取対象物の表面の平坦な部分に対応する画素に自動で第一の基準値とは異なる第二の基準値を割り当てる。例えば凸文字の場合は、平坦部分に割り当てる基準値を、輝度値の下限である0に設定する。こうすることで、凸部分のみが0~255の輝度値で表現されることになる。この結果、凸形状が強調されるように読取対象物の表面の各部に対応する各画素に画素値を割り当てられる。このようにして、読取対象物の凹凸部分の形状が強調された読取用画像が生成される。
また中間画像生成部33b1で生成された中間画像上に、読出部34が読み出した情報に対応する領域を識別可能に表示部に表示させてもよい。これにより、読み取り対象が正しく読み取られているか否かをユーザが視覚的に判断できる。
なお本明細書において、凹形状とは、ワークの表面に対して主に窪んでいる部分でもって、文字列等のシンボルを表現しているものを意味する。また凸形状とは、ワークの表面に対して主に突出している部分でもって、シンボルを表現しているものを意味する。凹形状が一部において突出している部分を含んでいても、概ね窪んでいる部分でもってシンボルを表現している場合は、凹形状として捉え、また凸形状が一部において窪んでいる部分を含んでいても、概ね突出している部分でもってシンボルを表現している場合は、凸形状として捉える。いいかえると、「凹形状又は凸形状を有する凹凸部分」とは、凹形状のみ、又は凸形状のみを有する凹凸部分という意味でなく、概ね凹形状でシンボルを表現している凹凸部分、又は概ね凸形状でシンボルを表現している凹凸部分という意味である。
(読取用画像生成部33c)
読取用画像生成部33cは、凹凸判定部33bによって判定された凹凸部分の凹又は凸形状の判定結果に従い、この凹凸部分の形状が強調された読取用画像を生成するための部材である。具体的には、凹凸部分が凹形状であると判定された場合には、読取対象物の表面の凹形状以外の部分の形状が背景となるように各画素に画素値を割り当てる。一方、凹凸部分が凸形状であると判定された場合には、読取対象物の表面の凸形状以外の部分の形状が背景となるように各画素に画素値を割り当てる。このような画素値の割り当てに従い、凹凸部分の形状を強調する強調処理を行って読取用画像を生成する。
読取用画像生成部33cは、読取用画像における特定の画素について、中間画像における特定の画素の画素値に基づいて値を修正する。また、この修正については、中間画像ではなく、輝度画像における特定の画素に対応する画素の輝度値に基づいて行われても良い。
読取用画像生成部33cは、さらに基点画素抽出部33c1と、画素復元部33c2を備える。基点画素抽出部33c1は、輝度値が0付近の画素を基点画素として抽出し、他の画素を背景画素として一定値に変換する。また画素復元部33c2は、基点画素抽出部33c1で抽出された基点画素を基点と対応する元画像の画素位置の周辺に、輝度値が上限値以外の輝度値を有する画素がある場合に、当該画素を復元する。
読出部34は、読取用画像生成部33cによって生成された読取用画像に基づいて、凹凸部分の形状に対応する情報を読み出す。これにより、凹凸部分を凹凸判定部33bで自動判定することが可能となり、事前に凹凸部分が凹形状か凸形状かを明示的に指定せずとも、自動判定結果に基づいて読取用画像を生成して読出部34でもって高精度に読み取りが可能となる。
(照度差ステレオ法の画像処理におけるパラメータ設定)
凹凸部分の形状に対応する情報は、典型的には、凹凸で表現された凹凸文字列である。このような凹凸文字列の読取を行うための画像は、照度差ステレオ法の原理に基づき生成される。読取対象物であるワークに形成された凹凸文字列が、凹文字列か凸文字列かによって、照度差ステレオ法の画像処理における最適なパラメータは異なる。このため、凹凸文字列の読み取りを行うに際しては、読取対象物に形成された凹凸文字列が凹文字列か凸文字列かを、事前に設定する等して、適切なパラメータを選択する必要があった。一例として、読取対象物に形成された凹凸文字列が凹文字列の場合の光学画像の例を図18に、凸文字列の例を図19に、それぞれ示す。また図18の凹文字列に対する照度差ステレオ画像を図20に、図19の凸文字列に対する照度差ステレオ画像を図21に、それぞれ示す。図20と図21とでは、照度差ステレオ法の画像処理におけるパラメータ設定がそれぞれ異なっており、図20は凹文字列用のパラメータ設定を、図21は凸文字列用のパラメータ設定を、それぞれ行った上で画像処理した照度差ステレオ画像を示している。
一方で、このような凹凸文字列の凹凸別の選択を行うことなく、単一のパラメータ設定として、凹文字列、凸文字列のいずれも認識したい場合がある。このような運用においては、凹文字列、凸文字列の双方の画像に対して順次読取試行することで、凹文字列、凸文字列のいずれの場合にも適切な画像処理を行い、文字列の読み取りを行うことができる。しかしながら、この方法では、凹文字列用のパラメータ設定と、凸文字列用のパラメータ設定の両方で画像処理を行うことから、読取精度や読取速度の面で問題が生じる。すなわち、読取精度の面では、所望でない画像を対象に読み取りを行う場合に、誤認識するリスクがあった。また読取速度の面では、所望でない画像の読み取りも試行しなければならず、その分だけ読取時間が長くなっていた。
そこで、本実施形態に係る光学式読取装置においては、
1.凹文字列、凸文字列の双方の情報を含む1枚の照度差ステレオ画像を生成し、
2.この照度差ステレオ画像に対して、凹文字列か凸文字列かを自動判定する処理を実行し、
3.この結果に基づいて、照度差ステレオ画像に対して、文字部を強調する文字部強調処理を実行している。以下、これら1~3の詳細について記載する。
(1.照度差ステレオ画像生成処理)
例えば、図18に示すようなワークの光学画像を撮像部21で撮像して取得する。このような光学画像に対して、凹文字列、凸文字列の双方の情報を含む1枚の照度差ステレオ画像を生成する。この処理は法線ベクトル導出部33aで行う。一例として、図18のワークに対して、凸部分が白、凹部分が黒、平坦部分が灰色で構成された照度差ステレオ画像を、図22に示す。
(2.凹凸形状自動判定処理)
次に、照度差ステレオ画像生成処理により得られた照度差ステレオ画像に対して、撮像対象が凹文字列か、凸文字列かを自動判定する処理を実行する。この処理は凹凸判定部33bで行う。ここで、照度差ステレオ画像生成処理により得られた照度差ステレオ画像について、凹文字列、凸文字列のそれぞれに対して以下の特性がある。すなわち凹文字列の場合は、図22の例に示す照度差ステレオ画像のように文字部分は黒色、文字の淵部分は白色となる。一方、図19に示したような凸文字列の場合は、図23の例に示すように、文字部分が白色、文字の淵部分が黒色となる。また平坦部分は、凹文字列、凸文字列共に灰色となる。これらから、「文字部分」、「文字の淵部分」、「平坦部分」は、以下の関係性を持つことになる。まず「文字部分」は、「文字の淵部分」に囲まれる。また「文字の淵部分」は、「平坦部分」に囲まれる。このような特性を利用することで、灰色の平坦部分に隣接する画素の輝度値分布として、黒色の画素が多い場合は、文字の淵部分が黒色ということになり、凸文字列と判断できる。一方で灰色の平坦部分に隣接する画素の輝度値分布として、逆に白色の画素が多い場合は、文字の淵部分が白色ということになり、凹文字列と判定できる。
このような判断基準に従って、凹文字列か凸文字列かを自動判定する自動判定処理のフローチャートを、図24に示す。まずステップS2401において、照度差ステレオ画像を取得する。ここでは上述した1.の照度差ステレオ画像生成処理に従い、法線ベクトル導出部33aで凹文字列、凸文字列の双方の情報を含む1枚の照度差ステレオ画像を生成する。
次にステップS2402において、灰色の画素に隣接する画素の輝度分布を取得する。この処理は凹凸判定部33bの中間画像生成部33b1で行う。中間画像生成部33b1は、照度差ステレオ画像である中間画像を生成する。ここで凹凸判定部33bは、中間画像の凹凸部分を含む所定の画像領域内における凸部分に対応する画素数と、凹部分に対応する画素数の割合に基づいて、凹凸部分が凹と凸のいずれの形状であるかを判定するよう構成してもよい。特に凹凸判定部33bは、中間画像において基準値が割り当てられた画素に隣接する画素の内、凸部に対応する画素数と凹部に対応する画素数の割合を求めることで、凹凸部分が凹と凸のいずれの形状であるかを判定することができる。この例では、輝度分布を規定するしきい値を固定値としている。例えば輝度値を0~255の256階調(8ビット)で表現する場合、0~31を黒、224~255を白として、黒、灰色、白の輝度分布を取得する。
次にステップS2403において、黒画素が白画素よりも多いか否かを凹凸判定部33bで判定する。多い場合は、ステップS2404において、「試行極性1」に「凸」をセットし、「試行極性2」に「凹」をセットして、ステップS2406に進む。一方、ステップS2403において、黒画素が白画素以下と判定された場合は、ステップS2405に進み、「試行極性1」に「凹」をセットし、「試行極性2」に「凸」をセットして、ステップS2406に進む。
そしてステップS2406において、「試行極性1」に基づいた文字認識処理を実行する。すなわち、「試行極性1」が「凸」の場合は、読出部34が凸文字列用のパラメータ設定にて文字列の読み取り、すなわちOCR処理を行う。あるいは「試行極性1」が「凹」の場合は、読出部34が凹文字列用のパラメータ設定でOCR処理を行う。この結果、ステップS2407において、有効な読取結果の文字列が得られているか否かを判定し、得られている場合はステップS2410に進んで、結果文字列を出力して処理を終了する。一方、ステップS2407において、有効な読取結果の文字列が得られていない場合は、ステップS2408に進んで、「試行極性2」に基づいた文字認識処理を、読出部34で実行する。そしてステップS2409において、有効な読取結果の文字列が得られているか否かを再び判定し、得られている場合はステップS2410に進み、上述の通り結果文字列を出力して処理を終了する。一方、ステップS2409においても、有効な読取結果の文字列が得られていない場合は、ステップS2411に進んで、読み取り失敗を出力して、処理を終了する。このようにして、凹文字列か凸文字列かを自動判定することができる。なお図24の自動判定処理において、有効な読取結果の文字列が得られている場合も、これを正式な読み取り結果とするものではなく、あくまで応答部分が凹文字列か凸文字列かの自動判定における一処理にすぎない。
(3.文字部強調処理)
以上の凹凸形状自動判定処理の結果に基づき、1.で得られた照度差ステレオ画像に対して、文字部強調処理を実行する。ここでは、照度差ステレオ画像を読出部34で文字認識処理を実行するに先立ち、認識精度を向上させるための前処理として、文字部強調処理を実行する。この処理は読取用画像生成部33cで行う。
一般的なOCR認識処理の特性として、1.で得られるような照度差ステレオ画像、すなわち背景部の輝度値の分散が大きい画像に対する認識は難しい。そこでOCR処理で精度の高い認識結果を得るために、背景部の輝度値の分散を小さくして、文字部のみを強調する前処理を行う。ここで、文字部を強調するにあたっては、凹凸形状が凹文字列か凸文字列かが判明している必要がある。このため、2.の凹凸形状自動判定処理の結果に基づいて、文字部強調処理を実行する。文字部強調処理の例を、図25、図29のフローチャートにそれぞれ示す。まず、凹凸文字で共通の文字部基点画素抽出処理と文字部画素復元処理を行う文字部強調処理について、図25に基づいて説明する。
(凹凸文字で共通の処理を行う文字部強調処理)
ここではステップS2501において、照度差ステレオ画像を入力する。照度差ステレオ画像は上述した1.の照度差ステレオ画像生成処理により生成された画像であり、例えば図22(凹文字列)や図23(凸文字列)に示すような画像である。次にステップS2502において、凹凸判定の結果を参照する。ここでは、上述した2.の凹凸形状自動判定処理の判定結果を取得し、凹文字(図22)の場合はステップS2504に進む。一方、凸文字の場合はステップS2503に進み、画像の白黒を反転させる処理を行う。この処理は、読取用画像生成部33cで行う。例えば図23の照度差ステレオ画像に対して白黒を反転させると、図26の反転照度差ステレオ画像が得られる。その上でステップS2504に進む。
(文字部基点画素の抽出処理)
次にステップS2504において、文字部基点画素を抽出する。この処理は、基点画素抽出部33c1で行う。ここでは、輝度値0付近の画素のみを残して、他を背景色に変換する。背景色としては、所定の輝度値、例えば8ビットの場合は255とする。これにより、図27に示すような文字部基点画素で構成された照度差ステレオ画像が得られる。このような処理により、照度差ステレオ画像の背景部の輝度値の分散を小さくして、文字部のみを強調できる。
(文字部画素の復元処理)
さらにステップS2505において、文字部の画素復元処理を行う。この処理は、画素復元部33c2で行う。画素復元部33c2は、基点画素抽出部33c1で抽出された文字部基点画素を、この文字部基点画素と対応する照度差ステレオ画像の画素位置の周辺に、輝度値が上限値以外の輝度値を有する画素がある場合に、この画素を復元する。輝度値の上限値は、例えば8ビットの場合は255とする。例えば、元の照度差ステレオ画像である図22や図26を見て、輝度値255以外の輝度値を有する画素がある場合に、この画素を復元する処理である。文字部の中にも、平坦部に近い輝度値を有する画素が存在する。このため、単純に輝度値0付近の画素を255に変換するだけでは、安定した読み取りを実現できない。そこでこのような文字部画素の復元処理を行うことで、読み取りの信頼性が向上する。このようにして、図27の文字部基点画素で構成された照度差ステレオ画像から、文字部画素を復元した照度差ステレオ画像である読取用画像を、図28に示す。
最後に、ステップS2506において、文字認識処理を行う。この処理は、読出部34で行う。ここでは、読取用画像に対して、読出部34でOCR処理を行う。
なお、以上の文字部強調処理では、凹文字に対する文字部基点画素の抽出処理と文字部画素の復元処理を行う方法を基準とし、凸文字の場合に画像の白黒反転を行うことで仮想的に凹文字に変換して同様に処理する手順を説明したが、本発明はこの方法に限らず、例えば凸文字に対する文字部基点画素の抽出処理と文字部画素の復元処理を行う方法を基準とし、凹文字の場合に画像の白黒反転を行うことで仮想的に凸文字に変換して処理するよう構成してもよい。
(凹凸文字で個別の処理を行う文字部強調処理)
以上の方法では、共通の文字部基点画素の抽出処理と文字部画素の復元処理を行う方法について説明した。ただ文字部強調処理はこの方法に限られず、白黒反転処理を行うことなく、凹文字、凸文字それぞれに対して個別に文字部基点画素の抽出処理と文字部画素の復元処理を行うこともできる。この方法を、図29のフローチャートに基づいて説明する。まず、ステップS2901において、照度差ステレオ画像を入力する。次にステップS2902において、凹凸判定の結果を参照する。凹凸判定結果が凹文字の場合はステップS2903に進み、凹文字用のパラメータ設定にて文字部基点画素を抽出する。例えば、1.の照度差ステレオ画像生成処理により、図22に示す照度差ステレオ画像(凹文字列)が得られている場合は、図30に示す照度差ステレオ画像に変換し、文字部分を強調すると共に、背景画像を一定輝度(例えば255)に変換する。さらにステップS2904において、凹文字用のパラメータ設定にて、文字部画素復元処理を行う。例えば図30の照度差ステレオ画像に対し、文字部基点画素抽出処理によって失われた文字の一部を復元した、図31に示す読取用画像に変換する。そしてステップS2907に進み、文字認識処理を実行する。ここでは、読出部34でもってOCR処理を行い、文字認識結果を出力する。
一方、ステップS2902において、凸文字と判定された場合は、ステップS2905に進み、凸文字用のパラメータ設定にて文字部基点画素を抽出する。例えば、図23に示す照度差ステレオ画像(凸文字列)が得られている場合は、図32に示す照度差ステレオ画像に変換し、文字部分を強調すると共に、背景画像を一定輝度(例えば0)に変換する。さらにステップS2906において、凸文字用のパラメータ設定にて、文字部画素復元処理を行う。例えば図32の照度差ステレオ画像を、図33に示す読取用画像に変換し、文字部基点画素抽出処理によって失われた文字の一部を復元する。そしてステップS2907に進み、文字認識処理を実行する。ここでは、読出部34でもってOCR処理を行い、文字認識結果を出力する。このようにして、白黒反転処理を行うことなく、凹文字、凸文字それぞれに応じたパラメータ設定において個別に文字部基点画素の抽出処理と文字部画素の復元処理を行うことで、正確な文字認識結果を得ることが可能となる。
[実施形態2]
(凹凸指定部36)
以上の例では、凹凸判定部33bでもって凹凸部分を自動判定して、事前に凹凸部分が凹形状か凸形状かを明示的に指定することなく読取用画像を生成して読み取りを行う例を説明した。ただ本発明は、凹凸部分が凹形状か凸形状かの指示を受け付けるように構成してもよい。このような例を実施形態2に係る光学式情報読取装置200として、図34のブロック図に示す。なおこの図において、上述した部材と同じ部材については、同じ符号を付して詳細説明を適宜省略する。図34に示す光学式情報読取装置200は、凹凸部分が凹と凸のいずれの形状であるかについてあらかじめ指定を受け付ける凹凸指定部36を備える。読取用画像生成部33cは、凹凸指定部36により凹凸部分の形状が指定されている場合は、指定された凹凸が強調されるように読取用画像を生成する。一方で凹凸指定部36により凹凸部分の形状が指定されていない場合は、凹凸判定部33bにより凹凸部分が凹と凸のいずれの形状であるかを自動で判定して、読取用画像を生成する。この構成であれば、読取対象物の凹凸部分が予め凹形状や凸形状に決まっている場合は、予め凹形状や凸形状に応じた読取設定を行うことにより、凹凸形状の自動判別処理を不要として、処理の高速化や軽負荷化を図ることが可能となる。
(光学式情報読取方法)
次に、読取対象物の表面に形成された凹形状又は凸形状を有する凹凸部分の形状を認識し、認識結果に基づいて情報を読み出す光学式情報読取方法について説明する。まず、読取対象物の表面に異なる3つ以上の方向から個別に照明部でもって光を照射し、該読取対象物の表面を照明する。次に、照明部から照射され読取対象物の表面より反射された光を受光し、複数の輝度画像を撮像部21で生成する。そして、撮像部21により生成された複数の輝度画像に基づいて、照度差ステレオ法の原理により読取対象物の表面の法線ベクトルを求める。さらに求められた読取対象物の表面の法線ベクトルに基づいて、該読取対象物の表面の形状を求め、凹凸部分が凹と凸のいずれの形状であるかを判定する。ここで、凹凸部分が凹形状であると判定された場合には、読取対象物の表面の凹形状以外の部分の形状が背景となるように各画素に画素値を割り当てる。一方、凹凸部分が凸形状であると判定された場合には、読取対象物の表面の凸形状以外の部分の形状が背景となるように各画素に画素値を割り当てる。このように、凹凸部分が凹形状、凸形状のいずれであるかの判定結果に基づいて異なる画素値の割り当てを行うことで、凹凸部分の形状が強調された読取用画像を生成する。最後に、読取用画像に基づいて、凹凸部分の形状に対応する情報を読み出す。これにより、凹凸部分を凹凸判定部33bで自動判定することが可能となり、事前に凹凸部分が凹形状か凸形状かを明示的に指定せずとも、自動判定結果に基づいて読取用画像を生成して読出部34でもって高精度に読み取りが可能となる。
(アタッチメント部60)
さらに光学式情報読取装置は、筐体部10の一端に開口された読取口13に、アタッチメント部60を連結自在とすることもできる。このような例を、変形例に係る光学式情報読取装置300として、図35~図39に示す。これらの図において、図35は変形例に係る光学式情報読取装置300を示す斜視図、図36は図35の光学式情報読取装置300の先端側斜め下方から見た斜視図、図37は図35の光学式情報読取装置300からアタッチメント部60を外した分解斜視図、図38は図36の光学式情報読取装置300からアタッチメント部60を外した分解斜視図、図39は図35の光学式情報読取装置300を読取対象物に押し当てた状態を示す垂直断面図を、それぞれ示している。変形例に係る光学式情報読取装置300において、上述した部材と同じ部材については、同じ符号を付して詳細説明を省略する。これらの図に示すアタッチメント部60は、読取口13よりも内径を大きくした第二読取口62を一旦に開口し、他端を読取口13と連結自在とし、読取口13と第二読取口62を連通させるように枠状に形成されている。このアタッチメント部60は、第二読取口62の枠状の内面を構成する4面に、それぞれ光学窓64を備えている。アタッチメント部60を筐体部10の読取口13側と連結した装着状態において、各光学窓64はそれぞれ照明部と光学的に接続されて、照明部の発光を導光する。これにより、アタッチメント部60自体に発光体や電源を設けることなく、照明部の発光を利用して、第二取付口の内部で読取対象物を4方向から照明可能とできる。特に、図36、図38に示すように第二読取口62の内径DR2を、読取口13の内径DR1よりも大きく構成したことで、アタッチメント部60を連結して読取口13をより大きくすることが可能となる。この結果、読取口13に収まりきらない大きな読取対象物であっても、第二読取口62で4方向から囲むようにして照明し、読み取りを行うことが可能となる。
読取口13は、図2に示すように筐体部10の長手方向に対して傾斜して開口されている。また読取口13の内部において、撮像素子21aは図39に示すように、受光面を筐体部10の長手方向に対して傾斜する姿勢に配置されている。ここで、撮像素子21aの受光面と、読取口13の平面のなす角度をθとする。
一方で、アタッチメント部60は、第二読取口62を画成する平面と、筐体部10の読取口13と連結する連結面61とを傾斜させて構成している。図36及び図38に示すように、この第二読取口62の面と連結面61との傾斜角をθとする。このように構成することで、筐体部10の読取口13にアタッチメント部60を連結した状態で、図39に示すように第二読取口62は、読取対象物を形成した平面に押し当てると、読取対象物の平面と、撮像素子21aの板状の主面とが、平行姿勢となる。これにより、光学式情報読取装置300単体では、板状の撮像素子21aを長手方向に傾斜姿勢で固定しつつも、アタッチメント部60を利用することで、読取対象物に対して正面から撮像した画像を容易に取得することが可能となる。いいかえると、アタッチメント部60を装着することで、撮像素子21aの受光面の角度を、読取対象物に対して正対する姿勢に補正できる。
なお撮像素子21aは、必ずしも読取口13において受光面を正対する姿勢に固定する必要はなく、例えば読取口13にミラーなどの光学部材を配置し、ミラーで一回以上光軸を反射させて撮像素子に案内するような光学経路を構成してもよい。この場合は、撮像素子の受光面でなく、撮像素子に光軸を反射させる光学素子の反射面を筐体部10の長手方向に対して傾斜する姿勢に配置する。本発明はこのような光学部材によって反射させる構成も含めており、「撮像部の受光面を筐体部の長手方向に対して傾斜する姿勢に配置する」とは、このような光学部材の反射面も含めた撮像部の受光面を傾斜させる構成を含む意味で使用する。