デコード方法及びデコード処理装置
【課題】デフォーカス状態で読み取られた読取信号であってもデコードすることができるようにする。
【解決手段】コード画像から反射した光を光電変換して、反射光の強度を示す読取信号を生成し、該生成した読取信号を微分して微分信号を生成する。これを前提にして、生成した微分信号から読取信号の反射光の強度の変曲点を検出し、該検出した変曲点間の幅長に対応する、反射光の強度の極値であるピークレベルを検出する。そして、検出したピークレベル間の差を求めて、該求めたピークレベル間の差から読取信号をデコードするための閾値ThB2,ThS2を設定する。これにより、汚れが付着したり印刷品質の劣化したコード画像の読取信号や、デフォーカス状態で読み取られた読取信号であってもデコードすることができる。
【解決手段】コード画像から反射した光を光電変換して、反射光の強度を示す読取信号を生成し、該生成した読取信号を微分して微分信号を生成する。これを前提にして、生成した微分信号から読取信号の反射光の強度の変曲点を検出し、該検出した変曲点間の幅長に対応する、反射光の強度の極値であるピークレベルを検出する。そして、検出したピークレベル間の差を求めて、該求めたピークレベル間の差から読取信号をデコードするための閾値ThB2,ThS2を設定する。これにより、汚れが付着したり印刷品質の劣化したコード画像の読取信号や、デフォーカス状態で読み取られた読取信号であってもデコードすることができる。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、読取対象からの反射光の強度を示す読取信号をデコードするデコード方法及びデコード処理装置に関するものである。
【背景技術】
【0002】
画像認識における二値化処理は、デコードされた出力結果の精度を左右する重要な技術である。以下に代表的な画像認識について述べる。
【0003】
特許文献1には、微分強度の大きい順に並び替えて処理する顔認証装置が開示されている。この顔認証装置によれば、微分処理によって顔画像たる濃淡画像から微分強度画像を生成し、該生成した微分強度画像の内、抽出したい顔部品が含まれる所定領域内で画素を微分強度の大きい順に並び替える処理を行う。その後、顔部品に対応付けてある指定の画素数分だけ選択した部位を濃度変化の激しい部位及びそれ以外の部位を濃度変化の激しくない平坦な部位として閾値を設定し、該設定した閾値で微分強度画像を2値化画像として出力している。
【0004】
特許文献2には、微分処理して二値化を行う二値化方式が開示されている。この二値化方式によれば、CCDやCMOS等で構成される撮像素子によってコード記号すなわち多値画像信号を撮像し、零交叉点検出部で零交叉点検出するために、二次微分部により二次微分し、その二次微分信号が正から負、又は負から正に大きく変化する点(零交叉点)を符号変化点検出部により検出する。後段の二値化閾値算出部では、零交叉点検出部からのトリガ信号により、コード読み取り部が出力する多値画像信号の輝度値をサンプリングして保持し、二値化の閾値として二値化部に出力する。
【0005】
特許文献3には、A/D変換して二値化を行うOCR(光学文字読み取り装置)が開示されている。OCRでは、原稿の白地と、文字の黒部分するため、CCDで読み取った原稿の画像データをA/D変換し、画像処理を行う。例えば、原稿読み取りデータの最大値(白側)と最小値(黒側)の差をA/D変換の基準電圧とすることでダイナミックレンジを大きくし、この基準電圧に基づいてA/D変換することにより二値化の精度を上げている。
【0006】
特許文献4には、シーク動作を向上させる光ディスク再生装置が開示されている。光ピックアップにおいて、対物レンズをそのシフト範囲の最内周位置及び最外周位置にそれぞれシフトさせた状態で、光ヒップアップを光ディスクの半径方向で移動させる。このとき、閾値生成回路は、それぞれの状態で二値化前信号を二値化するのに最適な第1閾値及び第2閾値を求め、両閾値の平均値を最終閾値として閾値レジスタに設定する。シーク動作時には、上記の最終閾値で二値化前信号が二値化される。このように、二値化する最適値が最も大きくなる、又は最も小さくなる対物レンズのシフト範囲の最内周位置及び最外周位置でそれぞれ第1閾値及び第2閾値を求め、両者の平均値を上記所定の閾値としている。
【0007】
次に、コード記号画像を光学的に処理するコードスキャナを例にとり、画像認識における二値化処理の過程を詳細に説明する。
【0008】
このコードスキャナは、図12に示すような読み取り対象物50に形成されるコード画像51にレーザ光線等を照射し、その反射光を受光して電気的処理を施すことによって、当該コード画像51の情報を読み取るものである。
【0009】
例えば、コード画像51は、バー(例えば、幅が広いバーであるワイドバーWBや、幅が細いバーであるナローバーNB)とスペース(例えば、幅が広いスペースであるワイドスペースWSや、幅が細いスペースであるナロースペースNS)とで構成されるものである。なお、本例では、読み取り対象物50に汚れNが付着していることを前提とする。
【0010】
次に、このようなコードスキャナの二値化処理例について説明する。図13は、縦軸を信号レベル(反射光強度)とし、横軸を位置としたときの読取信号D1の波形例を示す説明図である。図13に示すように、コードスキャナが読み取ったコード画像51の情報は、読取信号D1として読み取られる。
【0011】
この読取信号D1は、コード画像51のワイドバーWB、ナローバーNB、ワイドスペースWS及びナロースペースNSにそれぞれ対応した、下向きの大きな凸形状を有するワイドバー波形WB1、下向きの小さな凸形状を有するナローバー波形NB1、上向きの大きな凸形状を有するワイドスペース波形WS1及び上向きの小さな凸形状を有するナロースペース波形NS1を含む。因みに、図12で示した読み取り対象物50に汚れNが付着しているときには、読取信号D1は、ノイズN1を含んでしまう。
【0012】
図14は、縦軸を信号レベルとし、横軸を位置としたときの微分信号D2の波形例を示す説明図である。コードスキャナは、読取信号D1を微分して微分信号D2を生成する。図14に示すように、この微分信号D2は、読取信号D1のワイドバー波形WB1、ナローバー波形NB1、ワイドスペース波形WS1又はナロースペース波形NS1の変曲点を極値とした波形を有する。
【0013】
図15は、縦軸をバー/スペース(「0」のときがバー、「1」のときがスペース)とし、横軸を位置としたときの二値化信号D3の波形例を示す説明図である。コードスキャナは、微分信号D2の変曲点を立ち上がり又は立ち下がりポイントとして二値化信号D3を生成する。
【0014】
図15に示すように、この二値化信号D3は、ワイドバー波形WB1、ナローバー波形NB1、ワイドスペース波形WS1及びナロースペース波形NS1にそれぞれ対応した、ワイドバー信号WB3、ナローバー信号NB3、ワイドスペース信号WS3及びナロースペース信号NS3を含む。また、二値化信号D3は、読取信号D1のノイズN1に対応したノイズ信号N3も含んでしまう。
【0015】
このように、読み取り対象物50に汚れNが付着してしまうと、二値化信号D3にノイズ信号N3を含んでしまい、コード画像51の情報を正しくデコードすることができない。
【0016】
次に、読み取り対象物50とコードスキャナが所定の距離(焦点距離)以上離れていて、コードスキャナの受光面がレンズの結像面から光軸方向にずれている状態(デフォーカス状態)になっているときの、コードスキャナの二値化処理例について説明する。図16は、縦軸を信号レベル(反射光強度)とし、横軸を位置としたときの読取信号D4の波形例を示す説明図である。
【0017】
この読取信号D4は、図13で説明した読取信号D1と同様に、コード画像51のワイドバーWB、ナローバーNB、ワイドスペースWS及びナロースペースNSにそれぞれ対応した、下向きの大きな凸形状を有するワイドバー波形WB4、下向きの小さな凸形状を有するナローバー波形NB4、上向きの大きな凸形状を有するワイドスペース波形WS4及び上向きの小さな凸形状を有するナロースペース波形NS4を含む。因みに、本例では、図12で示した読み取り対象物50に汚れNが付着しているときでも、読み取り対象物50とコードスキャナが焦点距離より離れているので、読取信号D4は、読取信号D1のようにノイズN1を含まない。
【0018】
図17は、縦軸を信号レベルとし、横軸を位置としたときの微分信号D5の波形例を示す説明図である。コードスキャナは、読取信号D4を微分して微分信号D5を生成する。図17に示すように、この微分信号D5は、読取信号D4のワイドバー波形WB4、ナローバー波形NB4、ワイドスペース波形WS4又はナロースペース波形NS4の変曲点を極値とした波形を有する。変曲点間の幅長は、全て略同じ長さになっている。
【0019】
図18は、縦軸をバー/スペース(「0」のときがバー、「1」のときがスペース)とし、横軸を位置としたときの二値化信号D6の波形例を示す説明図である。コードスキャナは、微分信号D5の変曲点を立ち上がり又は立ち下がりポイントとして二値化信号D6を生成する。
【0020】
図18に示すように、この二値化信号D6は、ワイドバー波形WB4、ナローバー波形NB4、ワイドスペース波形WS4及びナロースペース波形NS4にそれぞれ対応した、ワイドバー信号WB6、ナローバー信号NB6、ワイドスペース信号WS6及びナロースペース信号NS6を含む。
【0021】
図17で示したように変曲点間の幅長が全て略同じ長さであるので、ワイドバー信号WB6、ナローバー信号NB6、ワイドスペース信号WS6及びナロースペース信号NS6も全て略同じ長さになってしまう。これでは、コード画像51の情報を正しくデコードすることができない。
【先行技術文献】
【特許文献】
【0022】
【特許文献1】特開2007−80087号公報
【特許文献2】特開2001―209751号公報
【特許文献3】特開平9−128523号公報
【特許文献4】特開2006−65909号公報
【発明の概要】
【発明が解決しようとする課題】
【0023】
画像認識における出力結果の精度が劣る原因は、上記コードスキャナで説明したように、読み取り対象物に汚れ等が付着したり、あるいは印刷品質が悪いことが考えられる。また、デフォーカス状態で対象物を読み取ってしまうと、正確にデコードすることができない。これらの問題は、特許文献1乃至4においても発生しており、閾値を変動させたり、閾値算出アルゴリズムのステップを増やすことによって解消している。しかし、その場合であっても、計算に時間がかかったり、高速なCPUを必要としたり、コードスキャナの製造コストがかかってしまい大量生産に適する技術とは言えない。
【0024】
そこで、本発明は、上述の課題を解決したものであって、複雑なアルゴリズムや高速なCPUを用いなくても、また、読み取り対象物に汚れ等が付着したり印刷品質が劣化したりしても、コード画像の読取信号をデコードすることができ、また、デフォーカス状態で読み取られた読取信号であってもデコードすることができるデコード方法及びデコード処理装置を提供することを目的とする。
【課題を解決するための手段】
【0025】
上述の課題を解決するために、本発明に係るデコード方法は、読取対象から反射した光を光電変換して、反射光の強度を示す読取信号を生成する第1のステップと、第1のステップで生成された読取信号を微分して微分信号を生成する第2のステップと、第2のステップで生成された微分信号から読取信号の反射光の強度の変曲点を検出し、該検出した変曲点間の幅長に対応する、反射光の強度の極値であるピークレベルを検出する第3のステップと、第3のステップで検出されたピークレベル間の差を求めて、該求めたピークレベル間の差から読取信号をデコードするための閾値を設定する第4ステップと、第4のステップで設定された閾値に基づいて読取信号をデコードする第5のステップとを有することを特徴とするものである。
【0026】
本発明に係るデコード方法では、読取対象から反射した光を光電変換して、反射光の強度を示す読取信号を生成し、該生成した読取信号を微分して微分信号を生成する。これを前提にして、生成した微分信号から読取信号の反射光の強度の変曲点を検出し、該検出した変曲点間の幅長に対応する、反射光の強度の極値であるピークレベルを検出する。そして、検出したピークレベル間の差を求めて、該求めたピークレベル間の差から読取信号をデコードするための閾値を設定する。これにより、設定した閾値に基づいて読取信号をデコードすることができるようになる。
【0027】
また、本発明に係るデコード処理装置では、読取対象から反射した光を光電変換して、反射光の強度を示す読取信号を生成する読取信号生成部と、読取信号生成部で生成された読取信号を微分して微分信号を生成する微分信号生成部と、微分信号生成部で生成された微分信号に基づいて読取信号を二値化する二値化部と、二値化部で二値化された読取信号をデコードするデコード部とを備え、二値化部は、微分信号から読取信号の反射光の強度の変曲点を検出して、該検出した変曲点間の幅長に対応する、反射光の強度の極値であるピークレベルを検出し、デコード部は、二値化部によって検出されたピークレベル間の差を求めて、該求めたピークレベル間の差から読取信号をデコードするための閾値を設定し、該設定した閾値に基づいて読取信号をデコードすることを特徴とするものである。
【発明の効果】
【0028】
本発明に係るデコード方法及びデコード処理装置によれば、印刷品質の劣化したコード画像(読取対象)の読取信号や、コード画像をデフォーカス状態で読み取られて生成された読取信号であっても、複雑なアルゴリズムや高速なCPUを使用せずに、デコードすることができる。この結果、読み取り性能が向上したデコード方法及びデコード処理装置を提供することができる。
【図面の簡単な説明】
【0029】
【図1】第1の実施の形態に係るコードスキャナ100の構成例を示すブロック図である。
【図2】二値化回路26の処理例(その1)を示す説明図である。
【図3】二値化回路26の処理例(その2)を示す説明図である。
【図4】デコーダ27の処理例(その1)を示す説明図である。
【図5】デコーダ27の処理例(その2)を示す説明図である。
【図6】二値化回路26の処理例(その3)を示す説明図である。
【図7】二値化回路26の処理例(その4)を示す説明図である。
【図8】デコーダ27の処理例(その3)を示す説明図である。
【図9】デコーダ27の処理例(その4)である。
【図10】コードスキャナ100の動作例を示すフローチャートである。
【図11】第2の実施の形態に係るコードスキャナ100Aの構成例を示すブロック図である。
【図12】コード画像51の構成例を示す説明図である。
【図13】読取信号D1の波形例を示す説明図である。
【図14】微分信号D2の波形例を示す説明図である。
【図15】二値化信号D3の波形例を示す説明図である。
【図16】読取信号D4の波形例を示す説明図である。
【図17】微分信号D5の波形例を示す説明図である。
【図18】二値化信号D6の波形例を示す説明図である。
【発明を実施するための形態】
【0030】
以下、図面を参照して、本発明に係るデコード処理装置の実施の形態の一例として、コードスキャナについて説明する。
<第1の実施の形態>
[コードスキャナ100の構成例]
図1に示すように、コードスキャナ100は、結像レンズ21、撮像素子22、ライン抽出部23、増幅器24、微分回路25、二値化回路26及びデコーダ27を備える。コードスキャナ100は、読み取り対象物50に形成されたコード画像51から反射した光を結像レンズ21に入射させて集光し、CCDやCMOS等による撮像素子22上に結像させる。
【0031】
撮像素子22は、読取信号生成部の一例であり、反射光を当該反射光の強度に応じて光電変換してアナログの電気信号である読取信号D1,D4を生成し、該生成した読取信号D1,D4をライン抽出部23に出力する。
【0032】
撮像素子22にはライン抽出部23が接続される。ライン抽出部23は、撮像素子22から出力された読取信号D1,D4を1ライン毎抽出して増幅器24に出力する。
【0033】
ライン抽出部23には増幅器24が接続される。増幅器24は、ライン抽出部23から出力された読取信号D1,D4の信号レベルを所定の大きさに増幅して微分回路25及び二値化回路26に出力する。
【0034】
増幅器24には微分回路25及び二値化回路26が接続される。微分回路25は、微分信号生成部の一例であり、増幅器24で増幅された読取信号D1,D4を微分して微分信号D2,D5を生成し、二値化回路26に出力する。
【0035】
微分回路25には二値化回路26が接続される。二値化回路26は、二値化部の一例であり、増幅器24から出力された読取信号D1,D4と、微分回路25から出力された微分信号D2,D5とを受信する。二値化回路26は、受信した微分信号D2,D5から当該微分信号D2,D5の極値を検出することにより、読取信号D1,D4の反射光の強度の変曲点を検出する。微分信号D2,D5の極値は、読取信号D1,D4の反射光の強度の変曲点が存在する位置に対応するものである。
【0036】
二値化回路26は、検出した変曲点に基づいて、増幅器24から出力された読取信号D1,D4を二値化して変曲点間の幅長の情報を有する二値化信号D3,D6を生成する。二値化回路26は、生成した二値化信号D3,D6をデコーダ27に出力する。更に、二値化回路26は、変曲点間の幅長に対応する、反射光の強度の極値であるピークレベルを検出し、検出したピークレベルの値(例えば、後述する図2のピークレベルC1の信号レベル値:9800)と当該ピークレベルの位置(例えば、図2のピークレベルC1の位置:350)とを含む情報であるピークレベル情報D7をデコーダ27に出力する。
【0037】
二値化回路26にはデコーダ27が接続される。デコーダ27は、デコード部の一例であり、二値化回路26から出力された二値化信号D3,D6及びピークレベル情報D7から変曲点間の幅長及びピークレベルの値を抽出する。デコーダ27は、抽出した幅長及びピークレベルの値を集計して、該集計結果から幅長及びピークレベルに関する正常値範囲を設定する。そして、デコーダ27は、設定した正常値範囲の範囲外にある幅長又はピークレベルをノイズとみなして削除する。正常値範囲とは、例えば、幅長及びピークレベルの値の集計結果が正規分布に従って分布すると仮定して、この分布に近い幅長及びピークレベルは正常であるとし、この分布から遠い幅長及びピークレベルは異常であるとして定めた範囲である。
【0038】
デコーダ27は、ピークレベル間の差を求めて、該求めたピークレベルの差から読取信号D1,D4をデコードするための閾値を設定する。例えば、デコーダ27は、ピークレベルの差が所定の値より小さいか否かを判断し、該判断結果が所定の値より小さい場合には、幅長から閾値を設定し、該判断結果が所定の値以上である場合には、ピークレベルから閾値を設定する。なお、デコーダ27は、検出したピークレベルの度数分布を求めて、該求めた度数分布から読取信号D1,D4をデコードするための閾値を設定しても良い。
【0039】
閾値を設定後、デコーダ27は、当該閾値と、正常値範囲の範囲内にある幅長及びピークレベルのプロット(後述する図5のプロット)と、ピークレベル情報D7のピークレベルの位置とに基づいて読取信号D1,D4をデコード処理することで、コード画像51の情報をデコードすることができる。
【0040】
[二値化回路26及びデコーダ27の処理例]
次に、二値化回路26及びデコーダ27の処理例について説明する。図2の(A)は、縦軸を信号レベル(反射光強度)とし、横軸を位置としたときの、二値化回路26の読取信号D1の処理例を示す説明図である。図2の(B)は、縦軸を信号レベルとし、横軸を位置としたときの、二値化回路26の微分信号D2の処理例を示す説明図である。
【0041】
本例では、図12に示したコード画像51が読み取られて、撮像素子22、ライン抽出部23及び増幅器24によって図13に示した読取信号D1が生成され、この読取信号D1に基づいて、微分回路25によって図14に示した微分信号D2が生成されることを前提とする。つまり、図2の(A)は、図13の読取信号D1と同じであり、図2の(B)は、図14の微分信号D2と同じである。
【0042】
図2の(A),(B)に示すように、二値化回路26は、微分信号D2の極値に対応した読取信号D1の反射光の強度の変曲点A1,A2を検出する(つまり、微分信号D2の極値は、読取信号D1の変曲点と一致している。)。そして、二値化回路26は、検出した変曲点A1,A2より変曲点間の幅長B1に対応する、反射光の強度の極値であるピークレベルC1を検出する。因みに、幅長B2,B3,B4は、ピークレベルC2,C3,C4にそれぞれ対応している。また、ピークレベルC1,C2,C3,C4は、図12で示したワイドスペースWS、ナロースペースNS、ワイドバーWB及びナローバーNBにそれぞれ対応している。
【0043】
図2の(A)では、図12で示した汚れNがピークレベルC5,C6として現れている。また、幅長B1,B2,B3,B4は、コード画像51の幅に対応して長さが決まっている。
【0044】
図3は、縦軸をバー/スペース(「0」のときがバー、「1」のときがスペース)とし、横軸を位置としたときの二値化回路26の二値化信号D3の処理例を示す説明図である。二値化回路26は、図2の(B)で検出した微分信号D2の変曲点A1,A2を立ち上がり又は立ち下がりポイントとした二値化信号D3を生成する。図3に示すように、この二値化信号D3から幅長B1〜B4が求められる。
【0045】
図4は、縦軸をピークレベルとし、横軸を幅長としたときの、二値化回路26が生成するピークレベル及び幅長をプロットした度数分布例を示す説明図である。図4に示すように、横軸の幅長は、正数をワイドスペースWS及びナロースペースNSが存在するスペース領域とし、負数をワイドバーWB及びナローバーNBが存在するバー領域としている。デコーダ27は、図2の(A)で示したピークレベルC1〜C4と、図3で求めた幅長B1〜B4とを集計して、該集計結果からピークレベルC1〜C4及び幅長B1〜B4に関する、一点鎖線で示した正常値範囲E1〜E4を設定する。
【0046】
正常値範囲E1は、ワイドスペースWSに関する領域であり、幅長B1及びピークレベルC1を集計して、例えば該集計結果が正規分布に従って分布すると仮定することで、設定されるものである。正常値範囲E2は、ナロースペースNSに関する領域であり、幅長B2及びピークレベルC2を集計して、例えば該集計結果が正規分布に従って分布すると仮定することで、設定されるものである。正常値範囲E3は、ワイドバーWBに関する領域であり、幅長B3及びピークレベルC3を集計して、例えば該集計結果が正規分布に従って分布すると仮定することで、設定されるものである。正常値範囲E4は、ナローバーNBに関する領域であり、幅長B4及びピークレベルC4を集計して、例えば該集計結果が正規分布に従って分布すると仮定することで、設定されるものである。
【0047】
デコーダ27は、幅長又はピークレベルが正常値範囲E1〜E4の範囲外にある場合、当該幅長又はピークレベルをノイズとみなして削除する。つまり、図4では、ピークレベルC5,C6が正常値範囲E1〜E4の範囲外に存在するので、デコーダ27は、ピークレベルC5,C6に対応するノイズN1を削除する(又は、ノイズN1をデコード処理しない)。
【0048】
図5は、図4の度数分布例からノイズN1を削除して、閾値ThB1,ThS1を設定する処理例を示す説明図である。閾値ThB1とは、ワイドバーWBとナローバーNBとの境界値であり、閾値ThB1より幅長の値が小さければ当該プロットに対応するバーをワイドバーWBとみなし、閾値ThB1より幅長の値が大きければ当該プロットに対応するバーをナローバーNBとみなす。また、閾値ThS1とは、ワイドスペースWSとナロースペースNSとの境界値であり、閾値ThS1より幅長の値が小さければ当該プロットに対応するスペースをナロースペースNSとみなし、閾値ThS1より幅長の値が大きければ当該プロットに対応するスペースをワイドスペースWSとみなす。
【0049】
図5に示すように、デコーダ27は、正常値範囲E3と正常値範囲E4との間の幅長に対して閾値ThB1を設定する。また、デコーダ27は、正常値範囲E1と正常値範囲E2との間の幅長に対して閾値ThS1を設定する。つまり、図5では、デコーダ27は、幅長から閾値ThB1,ThS1を設定している。
【0050】
なお、閾値ThB1,ThS1は、幅長B1〜B4間のそれぞれの差から設定するものであっても構わない(例えば、閾値ThS1は、(B1+B2)/2から求められ、閾値ThB1は、(B3+B4)/2から求められる)。
【0051】
デコーダ27は、図5で示した度数分布(又は、幅長B1〜B4間の差)に基づいて設定された閾値ThB1,ThS1を用いて読取信号D1をデコードする。
【0052】
このように、本実施の形態に係るコードスキャナ100では、読み取り対象物50に汚れN等が付着したり印刷品質が劣化したりしても、読取信号D1をデコードするための閾値ThB1,ThS1が設定されるので、コード画像51の読取信号D1を確実にデコードすることができる。
【0053】
次に、読み取り対象物50とコードスキャナが所定の距離(焦点距離)以上離れていて、デフォーカス状態になっているときの、コードスキャナの二値化処理例について説明する。ここで、デフォーカス状態とは、ピンボケ状態であって、コードスキャナの受光面がレンズの結像面から光軸方向にずれている状態をいう。
【0054】
図6の(A)は、縦軸を信号レベル(反射光強度)とし、横軸を位置としたときの、二値化回路26の読取信号D4の処理例を示す説明図である。図6の(B)は、縦軸を信号レベルとし、横軸を位置としたときの、二値化回路26の微分信号D5の処理例を示す説明図である。
【0055】
本例では、図12に示したコード画像51がデフォーカス状態で読み取られて、撮像素子22、ライン抽出部23及び増幅器24によって図16に示した読取信号D4が生成され、この読取信号D4に基づいて、微分回路25によって図17に示した微分信号D5が生成されることを前提とする。つまり、図6の(A)は、図16の読取信号D4と同じであり、図6の(B)は、図17の微分信号D5と同じである。
【0056】
図6の(A),(B)に示すように、二値化回路26は、微分信号D5の極値に対応した読取信号D4の反射光の強度の変曲点F1,F2を検出する(つまり、微分信号D5の極値は、読取信号D4の変曲点と一致している。)。そして、二値化回路26は、検出した変曲点F1,F2より変曲点間の幅長G1に対応する、反射光の強度の極値であるピークレベルH1を検出する。因みに、幅長G2,G3,G4は、ピークレベルH2,H3,H4にそれぞれ対応している。また、ピークレベルH1,H2,H3,H4は、図11で示したワイドスペースWS、ナロースペースNS、ワイドバーWB及びナローバーNBにそれぞれ対応している。
【0057】
図6の(A)では、コード画像51をデフォーカス状態で読み取ったために、図12で示した汚れNに起因した、図2の(A)で示したピークレベルC5,C6が現れない。しかしながら、幅長G1,G2,G3,G4は、コード画像51をデフォーカス状態で読み取ったために、それぞれ略同じ長さになっている。
【0058】
図7は、縦軸をバー/スペース(「0」のときがバー、「1」のときがスペース)とし、横軸を位置としたときの二値化回路26の二値化信号D6の処理例を示す説明図である。二値化回路26は、図6の(B)で検出した微分信号D5の変曲点F1,F2を立ち上がり又は立ち下がりポイントとした二値化信号D6を生成する。図7に示すように、この二値化信号D6から幅長G1〜G4が求められる。
【0059】
図8は、縦軸をピークレベルとし、横軸を幅長としたときの、二値化回路26が生成するピークレベル及び幅長をプロットした度数分布例を示す説明図である。図8に示すように、横軸の幅長は、正数をワイドスペースWS及びナロースペースNSが存在するスペース領域とし、負数をワイドバーWB及びナローバーNBが存在するバー領域としている。デコーダ27は、図6の(A)で示したピークレベルH1〜H4と、図7で求めた幅長G1〜G4とを集計して、該集計結果からピークレベルH1〜H4及び幅長G1〜G4に関する、一点鎖線で示した正常値範囲I1〜I4を設定する。
【0060】
正常値範囲I1は、ワイドスペースWSに関する領域であり、幅長G1及びピークレベルH1を集計して、例えば該集計結果が正規分布に従って分布すると仮定することで、設定されるものである。正常値範囲I2は、ナロースペースNSに関する領域であり、幅長G2及びピークレベルH2を集計して、例えば該集計結果が正規分布に従って分布すると仮定することで、設定されるものである。正常値範囲I3は、ワイドバーWBに関する領域であり、幅長G3及びピークレベルH3を集計して、例えば該集計結果が正規分布に従って分布すると仮定することで、設定されるものである。正常値範囲I4は、ナローバーNBに関する領域であり、幅長G4及びピークレベルH4を集計して、例えば該集計結果が正規分布に従って分布すると仮定することで、設定されるものである。
【0061】
デコーダ27は、幅長又はピークレベルが正常値範囲I1〜I4の範囲外にある場合、当該幅長又はピークレベルをノイズとみなして削除する。ただし、本例では、コード画像51から汚れNに起因するノイズが読み取られていないので、この処理は行われていない。
【0062】
図9は、図8の度数分布例から、閾値ThB2,ThS2を設定する処理例を示す説明図である。図9に示すように、ピークレベルの値とバー又はスペースの幅長とは、相関関係にある。つまり、ピークレベルの値が大きいと、バー又はスペースの幅長が大きく(ワイドバーWB又はワイドスペースWSに対応する)、ピークレベルの値が小さいと、バー又はスペースの幅長が小さい(ナローバーNB又はナロースペースNSに対応する)。
【0063】
閾値ThB2とは、ワイドバーWBとナローバーNBとの境界値であり、閾値ThB2よりピークレベルの値が小さければ当該プロットに対応するバーをナローバーNBとみなし、閾値ThB2よりピークレベルの値が大きければ当該プロットに対応するバーをワイドバーWBとみなす。また、閾値ThS2とは、ワイドスペースWSとナロースペースNSとの境界値であり、閾値ThS2よりピークレベルの値が小さければ当該プロットに対応するスペースをナロースペースNSとみなし、閾値ThS2よりピークレベルの値が大きければ当該プロットに対応するスペースをワイドスペースWSとみなす。
【0064】
デコーダ27は、図9に示す正常値範囲I1と正常値範囲I2との間のピークレベルに対して閾値ThS2を設定する。また、二値化回路26は、正常値範囲I3と正常値範囲I4との間のピークレベルに対して閾値ThB2を設定する。つまり、図9では、デコーダ27は、図5で示したように幅長からではなく、ピークレベルから閾値ThB2,ThS2を設定している。この理由は、図5のように幅長から閾値を設定しようとすると、正常値範囲I1,I2又は正常値範囲I3,I4が幅長に対して重なっている(図7に示したように、幅長が全て略同じ長さになっている)ので、閾値を設定することができないことによる。
【0065】
なお、閾値ThB2,ThS2は、ピークレベルH1〜H4間のそれぞれの差から設定するものであっても構わない(例えば、閾値ThS2は、(H1+H2)/2から求められ、閾値ThB2は、(H3+H4)/2から求められる)。
【0066】
デコーダ27は、図9で示した度数分布(又は、ピークレベルH1〜H4間の差)に基づいて設定された閾値ThB2,ThS2を用いて読取信号D4をデコードする。
【0067】
このように、本発明に係るコードスキャナでは、コード画像51をデフォーカス状態で読み取られて生成された読取信号D4であっても、読取信号D4をデコードするための閾値ThB2,ThS2が設定されるので、複雑なアルゴリズムや高速なCPUを用いなくても、デコードすることができる。
【0068】
[コードスキャナ100の動作例]
次に、コードスキャナ100の動作例についてフローチャートを用いて説明する。図10に示すように、ステップST1では、読み取り対象物50に形成されたコード画像51に反射した光をコードスキャナ100が受光する。コードスキャナ100は、結像レンズ21によって反射光を集光して、撮像素子22に結像させることにより、コード画像51を当該コードスキャナ100内に取り込む。コードスキャナ100内に取り込まれたコード画像51は、撮像素子22によって光電変換されて読取信号D1,D4が生成される。読取信号D1,D4は、ライン抽出部23で1ライン毎に抽出されてから、増幅器24によって当該読取信号D1,D4の信号レベルが所定の大きさに増幅される(図13及び図16参照)。
【0069】
ステップST2に移行して、微分回路25は、読取信号D1,D4を微分して微分信号D2,D5を生成する(図14及び図17参照)。
【0070】
ステップST3に移行して、二値化回路26は、微分信号D2,D5の極値を読取信号D1の信号レベルの変曲点A1,A2,F1,F2として検出する(図2及び図6参照)。そして、二値化回路26は、検出した変曲点A1,A2,F1,F2に基づいて、増幅器24から出力された読取信号D1,D4を二値化して二値化信号D3,D6を生成する(図3及び図7参照)。
【0071】
ステップST4に移行して、二値化回路26は、生成した二値化信号D3,D6から変曲点間の幅長B1〜B4,G1〜G4と、この幅長B1〜B4,G1〜G4に対応するピークレベルC1〜C4,H1〜H4とを検出する(図2及び図6参照)。そして、二値化回路26は、検出したピークレベルC1〜C4,H1〜H4の値と当該ピークレベルの位置とを含む情報であるピークレベル情報D7を生成する。
【0072】
ステップST5に移行して、デコーダ27は、二値化回路26で生成された二値化信号D3,D6及びピークレベル情報D7から幅長B1〜B4,G1〜G4及びピークレベルC1〜C4,H1〜H4の値を抽出する。そして、デコーダ27は、抽出した幅長B1〜B4,G1〜G4及びピークレベルC1〜C4,H1〜H4を集計して、該集計結果から幅長B1〜B4,G1〜G4及びピークレベルC1〜C4,H1〜H4に関する正常値範囲E1〜E4,I1〜I4を設定する(図4及び図7参照)。
【0073】
ステップST6に移行して、デコーダ27は、設定した正常値範囲E1〜E4,I1〜I4内に幅長B1〜B4,G1〜G4及びピークレベルC1〜C4,H1〜H4が存在するか否かを判断する。正常値範囲E1〜E4,I1〜I4内に幅長B1〜B4,G1〜G4及びピークレベルC1〜C4,H1〜H4が存在する場合には、ステップST8に移行し、存在しない場合には、ステップST7に移行する。
【0074】
ステップST7では、デコーダ27は、正常値範囲E1〜E4,I1〜I4の範囲外にある幅長又はピークレベルをノイズとみなして削除する。例えば、図3で示したピークレベルC5,C6がノイズN1となる。
【0075】
ステップST8では、デコーダ27は、ピークレベルC1〜C4,H1〜H4間の差が予め記憶された所定の値より小さいか否かを判断する。ピークレベルC1〜C4,H1〜H4間の差が所定の値より小さい場合には、ステップST9に移行し、ピークレベルC1〜C4,H1〜H4間の差が所定の値以上である場合には、ステップST10に移行する。
【0076】
例えば、図4のピークレベルC1〜C4に着目すると、ピークレベルC1とピークレベルC2との差は小さく、ピークレベルC3とピークレベルC4との差も小さい。この場合には、ステップST9に移行する。また、図8のピークレベルH1〜H4に着目すると、ピークレベルH1とピークレベルH2との差は大きく、ピークレベルH3とピークレベルH4との差も大きい。この場合には、ステップST10に移行する。
【0077】
ステップST9では、デコーダ27は、幅長B1〜B4,G1〜G4に基づいて閾値を設定する。例えば、図5では、デコーダ27は、幅長B1を含む正常値範囲E1と幅長B2を含む正常値範囲E2との間で閾値ThS1を設定し、また、幅長B3を含む正常値範囲E3と幅長B4を含む正常値範囲E4との間で閾値ThB1を設定する。閾値ThB1,ThS1が設定されたら、ステップST11に移行する。
【0078】
ステップST10では、デコーダ27は、ピークレベルC1〜C4,H1〜H4に基づいて閾値を設定する。例えば、図9では、二値化回路26は、ピークレベルH1を含む正常値範囲I1とピークレベルH2を含む正常値範囲I2との間で閾値ThS2を設定し、また、ピークレベルH3を含む正常値範囲I3とピークレベルH4を含む正常値範囲I4との間で閾値ThB2を設定する。閾値ThB2,ThS2が設定されたら、ステップST11に移行する。
【0079】
ステップST11では、デコーダ27は、設定した閾値ThB1,ThS1,ThB2,ThS2と、正常値範囲の範囲内にある幅長及びピークレベルのプロットと、ピークレベル情報D7が有するピークレベルの位置とに基づいて、コード画像51の情報(読取信号D1,D4)をデコードする。
【0080】
このように、第1の実施の形態に係るコードスキャナ100によれば、コード画像51から反射した光を光電変換して、反射光の強度を示す読取信号D1,D4を生成し、該生成した読取信号D1,D4を微分して微分信号D2,D5を生成する。これを前提にして、生成した微分信号D2,D5から読取信号D1,D4の反射光の強度の変曲点A1,A2,F1,F2を検出し、該検出した変曲点間の幅長B1〜B4,G1〜G4に対応する、反射光の強度の極値であるピークレベルC1〜C4,H1〜H4を検出する。そして、検出したピークレベルC1〜C4,H1〜H4間の差を求めて、該求めたピークレベルC1〜C4,H1〜H4間の差から読取信号D1,D4をデコードするための閾値ThB1,ThS1,ThB2,ThS2を設定する。
【0081】
これにより、汚れNが付着したり印刷品質の劣化したコード画像51の読取信号D1,D4や、デフォーカス状態で読み取られた読取信号D1,D4であっても、当該読取信号D1,D4をデコードするための閾値ThB1,ThS1,ThB2,ThS2が設定されるので、複雑なアルゴリズムや高速なCPUを使用せずに、デコードすることができる。この結果、読み取り性能が向上したデコード方法及びコードスキャナ(デコード処理装置)を提供することができる。
【0082】
なお、本実施の形態では、コード画像51の一例としてバーコードで説明したが、これに限定されず、二次元コードであっても本発明のデコード方法が適用可能である。この場合、図1に示したコードスキャナ100で二次元コード画像を1フレーム撮像し、該撮像した二次元コード画像を水平方向及び垂直方向にライン毎に走査して、図10に示した処理を行う。そして、ライン毎に二値化したデータを再び1フレームの画像に合算することにより、デコード可能となる。
【0083】
また、本実施の形態で説明したデコード方法は、コードスキャナだけではなく、光ディスク再生装置のようなデータをデコードする装置にも適用可能である。
【0084】
また、四値コードであっても本発明が可能である。この場合、一値に対してはデフォーカスの度合いが大きいためピークレベルから閾値を設定し、二値、三値及び四値に対してはデフォーカスの度合いが小さいため幅長から閾値を設定する。
【0085】
<第2の実施の形態>
本実施の形態では、光照射部10を備えたコードスキャナ100Aについて説明する。前述の第1の実施の形態と同じ名称及び符号のものは同じ機能を有するので、その説明を省略する。
【0086】
[コードスキャナ100Aの構成例]
図11に示すように、コードスキャナ100Aは、光照射部10及び信号処理部20で構成される。光照射部10は、レーザ光源11、集光レンズ13、開口絞り14及びスキャニングミラー15を備える。
【0087】
光照射部10は、半導体レーザ等によるレーザ光源11の発光点12から出力されるレーザ光線を集光レンズ13で集光させた後、開口絞り14でその径を絞り、スキャニングミラー15により読み取り対象物50に向かって偏向させて、読み取り対象物50に形成されたコード画像51に対して照射する。
【0088】
そして、光照射部10は、コード画像51上をレーザ光線のビームスポットにより走査する。スキャニングミラー15は、図11では平面鏡として示しているが、正多角形柱上で側面が鏡面となっているポリゴンミラーを用いても良い。
【0089】
信号処理部20は、結像レンズ21、撮像素子22、ライン抽出部23、増幅器24、微分回路25、二値化回路26及びデコーダ27を備える。信号処理部20は、読み取り対象物50に形成されたコード画像51から反射されてきた走査レーザ光線を結像レンズ21に入射させて集光し、CCDやCMOS等による撮像素子22上に結像させる。ライン抽出部23、増幅器24、微分回路25、二値化回路26及びデコーダ27は、前述の第1の実施の形態と同じものであるので、その説明を省略する。
【0090】
このように、第2の実施の形態に係るコードスキャナ100Aによれば、読み取り対象物50に向かってレーザ光線を照射する光照射部10を備え、汚れNが付着したり印刷品質の劣化したコード画像51の読取信号D1,D4や、デフォーカス状態で読み取られた読取信号D1,D4であっても、デコードすることができる。
【0091】
本発明は、従来のアルゴリズム処理を使用しつつ、閾値設定を幅長からピークレベルに変更するという当業者であっても容易に想到不可能な斬新な方法によって、読み取り対象物に汚れ等が付着したり印刷品質が劣化したりしても、また、デフォーカス状態で読み取られた読取信号であっても、複雑なアルゴリズムや高速なCPUを使用せずにデコード可能になるという優れたものである。
【符号の説明】
【0092】
10・・・光照射部、11・・・レーザ光源、12・・・発光点、13・・・集光レンズ、14・・・開口絞り、15・・・スキャンニングミラー、20・・・信号処理部、21・・・結像レンズ、22・・・撮像素子(読取信号生成部)、23・・・ライン抽出部、24・・・増幅器、25・・・微分回路(微分信号生成部)、26・・・二値化回路(二値化部)、27・・・デコーダ(デコード部)、50・・・読み取り対象物、51・・・コード画像、A1,A2,F1,F2・・・変曲点、B1〜B4,G1〜G4・・・幅長、C1〜C4,H1〜H4・・・ピークレベル、D1,D4・・・読取信号、D2,D5・・・微分信号、D3,D6・・・二値化信号、E1〜E4,I1〜I4・・・正常値範囲、N・・・汚れ、NB・・・ナローバー、NS・・・ナロースペース、WB・・・ワイドバー、WS・・・ワイドスペース
【技術分野】
【0001】
本発明は、読取対象からの反射光の強度を示す読取信号をデコードするデコード方法及びデコード処理装置に関するものである。
【背景技術】
【0002】
画像認識における二値化処理は、デコードされた出力結果の精度を左右する重要な技術である。以下に代表的な画像認識について述べる。
【0003】
特許文献1には、微分強度の大きい順に並び替えて処理する顔認証装置が開示されている。この顔認証装置によれば、微分処理によって顔画像たる濃淡画像から微分強度画像を生成し、該生成した微分強度画像の内、抽出したい顔部品が含まれる所定領域内で画素を微分強度の大きい順に並び替える処理を行う。その後、顔部品に対応付けてある指定の画素数分だけ選択した部位を濃度変化の激しい部位及びそれ以外の部位を濃度変化の激しくない平坦な部位として閾値を設定し、該設定した閾値で微分強度画像を2値化画像として出力している。
【0004】
特許文献2には、微分処理して二値化を行う二値化方式が開示されている。この二値化方式によれば、CCDやCMOS等で構成される撮像素子によってコード記号すなわち多値画像信号を撮像し、零交叉点検出部で零交叉点検出するために、二次微分部により二次微分し、その二次微分信号が正から負、又は負から正に大きく変化する点(零交叉点)を符号変化点検出部により検出する。後段の二値化閾値算出部では、零交叉点検出部からのトリガ信号により、コード読み取り部が出力する多値画像信号の輝度値をサンプリングして保持し、二値化の閾値として二値化部に出力する。
【0005】
特許文献3には、A/D変換して二値化を行うOCR(光学文字読み取り装置)が開示されている。OCRでは、原稿の白地と、文字の黒部分するため、CCDで読み取った原稿の画像データをA/D変換し、画像処理を行う。例えば、原稿読み取りデータの最大値(白側)と最小値(黒側)の差をA/D変換の基準電圧とすることでダイナミックレンジを大きくし、この基準電圧に基づいてA/D変換することにより二値化の精度を上げている。
【0006】
特許文献4には、シーク動作を向上させる光ディスク再生装置が開示されている。光ピックアップにおいて、対物レンズをそのシフト範囲の最内周位置及び最外周位置にそれぞれシフトさせた状態で、光ヒップアップを光ディスクの半径方向で移動させる。このとき、閾値生成回路は、それぞれの状態で二値化前信号を二値化するのに最適な第1閾値及び第2閾値を求め、両閾値の平均値を最終閾値として閾値レジスタに設定する。シーク動作時には、上記の最終閾値で二値化前信号が二値化される。このように、二値化する最適値が最も大きくなる、又は最も小さくなる対物レンズのシフト範囲の最内周位置及び最外周位置でそれぞれ第1閾値及び第2閾値を求め、両者の平均値を上記所定の閾値としている。
【0007】
次に、コード記号画像を光学的に処理するコードスキャナを例にとり、画像認識における二値化処理の過程を詳細に説明する。
【0008】
このコードスキャナは、図12に示すような読み取り対象物50に形成されるコード画像51にレーザ光線等を照射し、その反射光を受光して電気的処理を施すことによって、当該コード画像51の情報を読み取るものである。
【0009】
例えば、コード画像51は、バー(例えば、幅が広いバーであるワイドバーWBや、幅が細いバーであるナローバーNB)とスペース(例えば、幅が広いスペースであるワイドスペースWSや、幅が細いスペースであるナロースペースNS)とで構成されるものである。なお、本例では、読み取り対象物50に汚れNが付着していることを前提とする。
【0010】
次に、このようなコードスキャナの二値化処理例について説明する。図13は、縦軸を信号レベル(反射光強度)とし、横軸を位置としたときの読取信号D1の波形例を示す説明図である。図13に示すように、コードスキャナが読み取ったコード画像51の情報は、読取信号D1として読み取られる。
【0011】
この読取信号D1は、コード画像51のワイドバーWB、ナローバーNB、ワイドスペースWS及びナロースペースNSにそれぞれ対応した、下向きの大きな凸形状を有するワイドバー波形WB1、下向きの小さな凸形状を有するナローバー波形NB1、上向きの大きな凸形状を有するワイドスペース波形WS1及び上向きの小さな凸形状を有するナロースペース波形NS1を含む。因みに、図12で示した読み取り対象物50に汚れNが付着しているときには、読取信号D1は、ノイズN1を含んでしまう。
【0012】
図14は、縦軸を信号レベルとし、横軸を位置としたときの微分信号D2の波形例を示す説明図である。コードスキャナは、読取信号D1を微分して微分信号D2を生成する。図14に示すように、この微分信号D2は、読取信号D1のワイドバー波形WB1、ナローバー波形NB1、ワイドスペース波形WS1又はナロースペース波形NS1の変曲点を極値とした波形を有する。
【0013】
図15は、縦軸をバー/スペース(「0」のときがバー、「1」のときがスペース)とし、横軸を位置としたときの二値化信号D3の波形例を示す説明図である。コードスキャナは、微分信号D2の変曲点を立ち上がり又は立ち下がりポイントとして二値化信号D3を生成する。
【0014】
図15に示すように、この二値化信号D3は、ワイドバー波形WB1、ナローバー波形NB1、ワイドスペース波形WS1及びナロースペース波形NS1にそれぞれ対応した、ワイドバー信号WB3、ナローバー信号NB3、ワイドスペース信号WS3及びナロースペース信号NS3を含む。また、二値化信号D3は、読取信号D1のノイズN1に対応したノイズ信号N3も含んでしまう。
【0015】
このように、読み取り対象物50に汚れNが付着してしまうと、二値化信号D3にノイズ信号N3を含んでしまい、コード画像51の情報を正しくデコードすることができない。
【0016】
次に、読み取り対象物50とコードスキャナが所定の距離(焦点距離)以上離れていて、コードスキャナの受光面がレンズの結像面から光軸方向にずれている状態(デフォーカス状態)になっているときの、コードスキャナの二値化処理例について説明する。図16は、縦軸を信号レベル(反射光強度)とし、横軸を位置としたときの読取信号D4の波形例を示す説明図である。
【0017】
この読取信号D4は、図13で説明した読取信号D1と同様に、コード画像51のワイドバーWB、ナローバーNB、ワイドスペースWS及びナロースペースNSにそれぞれ対応した、下向きの大きな凸形状を有するワイドバー波形WB4、下向きの小さな凸形状を有するナローバー波形NB4、上向きの大きな凸形状を有するワイドスペース波形WS4及び上向きの小さな凸形状を有するナロースペース波形NS4を含む。因みに、本例では、図12で示した読み取り対象物50に汚れNが付着しているときでも、読み取り対象物50とコードスキャナが焦点距離より離れているので、読取信号D4は、読取信号D1のようにノイズN1を含まない。
【0018】
図17は、縦軸を信号レベルとし、横軸を位置としたときの微分信号D5の波形例を示す説明図である。コードスキャナは、読取信号D4を微分して微分信号D5を生成する。図17に示すように、この微分信号D5は、読取信号D4のワイドバー波形WB4、ナローバー波形NB4、ワイドスペース波形WS4又はナロースペース波形NS4の変曲点を極値とした波形を有する。変曲点間の幅長は、全て略同じ長さになっている。
【0019】
図18は、縦軸をバー/スペース(「0」のときがバー、「1」のときがスペース)とし、横軸を位置としたときの二値化信号D6の波形例を示す説明図である。コードスキャナは、微分信号D5の変曲点を立ち上がり又は立ち下がりポイントとして二値化信号D6を生成する。
【0020】
図18に示すように、この二値化信号D6は、ワイドバー波形WB4、ナローバー波形NB4、ワイドスペース波形WS4及びナロースペース波形NS4にそれぞれ対応した、ワイドバー信号WB6、ナローバー信号NB6、ワイドスペース信号WS6及びナロースペース信号NS6を含む。
【0021】
図17で示したように変曲点間の幅長が全て略同じ長さであるので、ワイドバー信号WB6、ナローバー信号NB6、ワイドスペース信号WS6及びナロースペース信号NS6も全て略同じ長さになってしまう。これでは、コード画像51の情報を正しくデコードすることができない。
【先行技術文献】
【特許文献】
【0022】
【特許文献1】特開2007−80087号公報
【特許文献2】特開2001―209751号公報
【特許文献3】特開平9−128523号公報
【特許文献4】特開2006−65909号公報
【発明の概要】
【発明が解決しようとする課題】
【0023】
画像認識における出力結果の精度が劣る原因は、上記コードスキャナで説明したように、読み取り対象物に汚れ等が付着したり、あるいは印刷品質が悪いことが考えられる。また、デフォーカス状態で対象物を読み取ってしまうと、正確にデコードすることができない。これらの問題は、特許文献1乃至4においても発生しており、閾値を変動させたり、閾値算出アルゴリズムのステップを増やすことによって解消している。しかし、その場合であっても、計算に時間がかかったり、高速なCPUを必要としたり、コードスキャナの製造コストがかかってしまい大量生産に適する技術とは言えない。
【0024】
そこで、本発明は、上述の課題を解決したものであって、複雑なアルゴリズムや高速なCPUを用いなくても、また、読み取り対象物に汚れ等が付着したり印刷品質が劣化したりしても、コード画像の読取信号をデコードすることができ、また、デフォーカス状態で読み取られた読取信号であってもデコードすることができるデコード方法及びデコード処理装置を提供することを目的とする。
【課題を解決するための手段】
【0025】
上述の課題を解決するために、本発明に係るデコード方法は、読取対象から反射した光を光電変換して、反射光の強度を示す読取信号を生成する第1のステップと、第1のステップで生成された読取信号を微分して微分信号を生成する第2のステップと、第2のステップで生成された微分信号から読取信号の反射光の強度の変曲点を検出し、該検出した変曲点間の幅長に対応する、反射光の強度の極値であるピークレベルを検出する第3のステップと、第3のステップで検出されたピークレベル間の差を求めて、該求めたピークレベル間の差から読取信号をデコードするための閾値を設定する第4ステップと、第4のステップで設定された閾値に基づいて読取信号をデコードする第5のステップとを有することを特徴とするものである。
【0026】
本発明に係るデコード方法では、読取対象から反射した光を光電変換して、反射光の強度を示す読取信号を生成し、該生成した読取信号を微分して微分信号を生成する。これを前提にして、生成した微分信号から読取信号の反射光の強度の変曲点を検出し、該検出した変曲点間の幅長に対応する、反射光の強度の極値であるピークレベルを検出する。そして、検出したピークレベル間の差を求めて、該求めたピークレベル間の差から読取信号をデコードするための閾値を設定する。これにより、設定した閾値に基づいて読取信号をデコードすることができるようになる。
【0027】
また、本発明に係るデコード処理装置では、読取対象から反射した光を光電変換して、反射光の強度を示す読取信号を生成する読取信号生成部と、読取信号生成部で生成された読取信号を微分して微分信号を生成する微分信号生成部と、微分信号生成部で生成された微分信号に基づいて読取信号を二値化する二値化部と、二値化部で二値化された読取信号をデコードするデコード部とを備え、二値化部は、微分信号から読取信号の反射光の強度の変曲点を検出して、該検出した変曲点間の幅長に対応する、反射光の強度の極値であるピークレベルを検出し、デコード部は、二値化部によって検出されたピークレベル間の差を求めて、該求めたピークレベル間の差から読取信号をデコードするための閾値を設定し、該設定した閾値に基づいて読取信号をデコードすることを特徴とするものである。
【発明の効果】
【0028】
本発明に係るデコード方法及びデコード処理装置によれば、印刷品質の劣化したコード画像(読取対象)の読取信号や、コード画像をデフォーカス状態で読み取られて生成された読取信号であっても、複雑なアルゴリズムや高速なCPUを使用せずに、デコードすることができる。この結果、読み取り性能が向上したデコード方法及びデコード処理装置を提供することができる。
【図面の簡単な説明】
【0029】
【図1】第1の実施の形態に係るコードスキャナ100の構成例を示すブロック図である。
【図2】二値化回路26の処理例(その1)を示す説明図である。
【図3】二値化回路26の処理例(その2)を示す説明図である。
【図4】デコーダ27の処理例(その1)を示す説明図である。
【図5】デコーダ27の処理例(その2)を示す説明図である。
【図6】二値化回路26の処理例(その3)を示す説明図である。
【図7】二値化回路26の処理例(その4)を示す説明図である。
【図8】デコーダ27の処理例(その3)を示す説明図である。
【図9】デコーダ27の処理例(その4)である。
【図10】コードスキャナ100の動作例を示すフローチャートである。
【図11】第2の実施の形態に係るコードスキャナ100Aの構成例を示すブロック図である。
【図12】コード画像51の構成例を示す説明図である。
【図13】読取信号D1の波形例を示す説明図である。
【図14】微分信号D2の波形例を示す説明図である。
【図15】二値化信号D3の波形例を示す説明図である。
【図16】読取信号D4の波形例を示す説明図である。
【図17】微分信号D5の波形例を示す説明図である。
【図18】二値化信号D6の波形例を示す説明図である。
【発明を実施するための形態】
【0030】
以下、図面を参照して、本発明に係るデコード処理装置の実施の形態の一例として、コードスキャナについて説明する。
<第1の実施の形態>
[コードスキャナ100の構成例]
図1に示すように、コードスキャナ100は、結像レンズ21、撮像素子22、ライン抽出部23、増幅器24、微分回路25、二値化回路26及びデコーダ27を備える。コードスキャナ100は、読み取り対象物50に形成されたコード画像51から反射した光を結像レンズ21に入射させて集光し、CCDやCMOS等による撮像素子22上に結像させる。
【0031】
撮像素子22は、読取信号生成部の一例であり、反射光を当該反射光の強度に応じて光電変換してアナログの電気信号である読取信号D1,D4を生成し、該生成した読取信号D1,D4をライン抽出部23に出力する。
【0032】
撮像素子22にはライン抽出部23が接続される。ライン抽出部23は、撮像素子22から出力された読取信号D1,D4を1ライン毎抽出して増幅器24に出力する。
【0033】
ライン抽出部23には増幅器24が接続される。増幅器24は、ライン抽出部23から出力された読取信号D1,D4の信号レベルを所定の大きさに増幅して微分回路25及び二値化回路26に出力する。
【0034】
増幅器24には微分回路25及び二値化回路26が接続される。微分回路25は、微分信号生成部の一例であり、増幅器24で増幅された読取信号D1,D4を微分して微分信号D2,D5を生成し、二値化回路26に出力する。
【0035】
微分回路25には二値化回路26が接続される。二値化回路26は、二値化部の一例であり、増幅器24から出力された読取信号D1,D4と、微分回路25から出力された微分信号D2,D5とを受信する。二値化回路26は、受信した微分信号D2,D5から当該微分信号D2,D5の極値を検出することにより、読取信号D1,D4の反射光の強度の変曲点を検出する。微分信号D2,D5の極値は、読取信号D1,D4の反射光の強度の変曲点が存在する位置に対応するものである。
【0036】
二値化回路26は、検出した変曲点に基づいて、増幅器24から出力された読取信号D1,D4を二値化して変曲点間の幅長の情報を有する二値化信号D3,D6を生成する。二値化回路26は、生成した二値化信号D3,D6をデコーダ27に出力する。更に、二値化回路26は、変曲点間の幅長に対応する、反射光の強度の極値であるピークレベルを検出し、検出したピークレベルの値(例えば、後述する図2のピークレベルC1の信号レベル値:9800)と当該ピークレベルの位置(例えば、図2のピークレベルC1の位置:350)とを含む情報であるピークレベル情報D7をデコーダ27に出力する。
【0037】
二値化回路26にはデコーダ27が接続される。デコーダ27は、デコード部の一例であり、二値化回路26から出力された二値化信号D3,D6及びピークレベル情報D7から変曲点間の幅長及びピークレベルの値を抽出する。デコーダ27は、抽出した幅長及びピークレベルの値を集計して、該集計結果から幅長及びピークレベルに関する正常値範囲を設定する。そして、デコーダ27は、設定した正常値範囲の範囲外にある幅長又はピークレベルをノイズとみなして削除する。正常値範囲とは、例えば、幅長及びピークレベルの値の集計結果が正規分布に従って分布すると仮定して、この分布に近い幅長及びピークレベルは正常であるとし、この分布から遠い幅長及びピークレベルは異常であるとして定めた範囲である。
【0038】
デコーダ27は、ピークレベル間の差を求めて、該求めたピークレベルの差から読取信号D1,D4をデコードするための閾値を設定する。例えば、デコーダ27は、ピークレベルの差が所定の値より小さいか否かを判断し、該判断結果が所定の値より小さい場合には、幅長から閾値を設定し、該判断結果が所定の値以上である場合には、ピークレベルから閾値を設定する。なお、デコーダ27は、検出したピークレベルの度数分布を求めて、該求めた度数分布から読取信号D1,D4をデコードするための閾値を設定しても良い。
【0039】
閾値を設定後、デコーダ27は、当該閾値と、正常値範囲の範囲内にある幅長及びピークレベルのプロット(後述する図5のプロット)と、ピークレベル情報D7のピークレベルの位置とに基づいて読取信号D1,D4をデコード処理することで、コード画像51の情報をデコードすることができる。
【0040】
[二値化回路26及びデコーダ27の処理例]
次に、二値化回路26及びデコーダ27の処理例について説明する。図2の(A)は、縦軸を信号レベル(反射光強度)とし、横軸を位置としたときの、二値化回路26の読取信号D1の処理例を示す説明図である。図2の(B)は、縦軸を信号レベルとし、横軸を位置としたときの、二値化回路26の微分信号D2の処理例を示す説明図である。
【0041】
本例では、図12に示したコード画像51が読み取られて、撮像素子22、ライン抽出部23及び増幅器24によって図13に示した読取信号D1が生成され、この読取信号D1に基づいて、微分回路25によって図14に示した微分信号D2が生成されることを前提とする。つまり、図2の(A)は、図13の読取信号D1と同じであり、図2の(B)は、図14の微分信号D2と同じである。
【0042】
図2の(A),(B)に示すように、二値化回路26は、微分信号D2の極値に対応した読取信号D1の反射光の強度の変曲点A1,A2を検出する(つまり、微分信号D2の極値は、読取信号D1の変曲点と一致している。)。そして、二値化回路26は、検出した変曲点A1,A2より変曲点間の幅長B1に対応する、反射光の強度の極値であるピークレベルC1を検出する。因みに、幅長B2,B3,B4は、ピークレベルC2,C3,C4にそれぞれ対応している。また、ピークレベルC1,C2,C3,C4は、図12で示したワイドスペースWS、ナロースペースNS、ワイドバーWB及びナローバーNBにそれぞれ対応している。
【0043】
図2の(A)では、図12で示した汚れNがピークレベルC5,C6として現れている。また、幅長B1,B2,B3,B4は、コード画像51の幅に対応して長さが決まっている。
【0044】
図3は、縦軸をバー/スペース(「0」のときがバー、「1」のときがスペース)とし、横軸を位置としたときの二値化回路26の二値化信号D3の処理例を示す説明図である。二値化回路26は、図2の(B)で検出した微分信号D2の変曲点A1,A2を立ち上がり又は立ち下がりポイントとした二値化信号D3を生成する。図3に示すように、この二値化信号D3から幅長B1〜B4が求められる。
【0045】
図4は、縦軸をピークレベルとし、横軸を幅長としたときの、二値化回路26が生成するピークレベル及び幅長をプロットした度数分布例を示す説明図である。図4に示すように、横軸の幅長は、正数をワイドスペースWS及びナロースペースNSが存在するスペース領域とし、負数をワイドバーWB及びナローバーNBが存在するバー領域としている。デコーダ27は、図2の(A)で示したピークレベルC1〜C4と、図3で求めた幅長B1〜B4とを集計して、該集計結果からピークレベルC1〜C4及び幅長B1〜B4に関する、一点鎖線で示した正常値範囲E1〜E4を設定する。
【0046】
正常値範囲E1は、ワイドスペースWSに関する領域であり、幅長B1及びピークレベルC1を集計して、例えば該集計結果が正規分布に従って分布すると仮定することで、設定されるものである。正常値範囲E2は、ナロースペースNSに関する領域であり、幅長B2及びピークレベルC2を集計して、例えば該集計結果が正規分布に従って分布すると仮定することで、設定されるものである。正常値範囲E3は、ワイドバーWBに関する領域であり、幅長B3及びピークレベルC3を集計して、例えば該集計結果が正規分布に従って分布すると仮定することで、設定されるものである。正常値範囲E4は、ナローバーNBに関する領域であり、幅長B4及びピークレベルC4を集計して、例えば該集計結果が正規分布に従って分布すると仮定することで、設定されるものである。
【0047】
デコーダ27は、幅長又はピークレベルが正常値範囲E1〜E4の範囲外にある場合、当該幅長又はピークレベルをノイズとみなして削除する。つまり、図4では、ピークレベルC5,C6が正常値範囲E1〜E4の範囲外に存在するので、デコーダ27は、ピークレベルC5,C6に対応するノイズN1を削除する(又は、ノイズN1をデコード処理しない)。
【0048】
図5は、図4の度数分布例からノイズN1を削除して、閾値ThB1,ThS1を設定する処理例を示す説明図である。閾値ThB1とは、ワイドバーWBとナローバーNBとの境界値であり、閾値ThB1より幅長の値が小さければ当該プロットに対応するバーをワイドバーWBとみなし、閾値ThB1より幅長の値が大きければ当該プロットに対応するバーをナローバーNBとみなす。また、閾値ThS1とは、ワイドスペースWSとナロースペースNSとの境界値であり、閾値ThS1より幅長の値が小さければ当該プロットに対応するスペースをナロースペースNSとみなし、閾値ThS1より幅長の値が大きければ当該プロットに対応するスペースをワイドスペースWSとみなす。
【0049】
図5に示すように、デコーダ27は、正常値範囲E3と正常値範囲E4との間の幅長に対して閾値ThB1を設定する。また、デコーダ27は、正常値範囲E1と正常値範囲E2との間の幅長に対して閾値ThS1を設定する。つまり、図5では、デコーダ27は、幅長から閾値ThB1,ThS1を設定している。
【0050】
なお、閾値ThB1,ThS1は、幅長B1〜B4間のそれぞれの差から設定するものであっても構わない(例えば、閾値ThS1は、(B1+B2)/2から求められ、閾値ThB1は、(B3+B4)/2から求められる)。
【0051】
デコーダ27は、図5で示した度数分布(又は、幅長B1〜B4間の差)に基づいて設定された閾値ThB1,ThS1を用いて読取信号D1をデコードする。
【0052】
このように、本実施の形態に係るコードスキャナ100では、読み取り対象物50に汚れN等が付着したり印刷品質が劣化したりしても、読取信号D1をデコードするための閾値ThB1,ThS1が設定されるので、コード画像51の読取信号D1を確実にデコードすることができる。
【0053】
次に、読み取り対象物50とコードスキャナが所定の距離(焦点距離)以上離れていて、デフォーカス状態になっているときの、コードスキャナの二値化処理例について説明する。ここで、デフォーカス状態とは、ピンボケ状態であって、コードスキャナの受光面がレンズの結像面から光軸方向にずれている状態をいう。
【0054】
図6の(A)は、縦軸を信号レベル(反射光強度)とし、横軸を位置としたときの、二値化回路26の読取信号D4の処理例を示す説明図である。図6の(B)は、縦軸を信号レベルとし、横軸を位置としたときの、二値化回路26の微分信号D5の処理例を示す説明図である。
【0055】
本例では、図12に示したコード画像51がデフォーカス状態で読み取られて、撮像素子22、ライン抽出部23及び増幅器24によって図16に示した読取信号D4が生成され、この読取信号D4に基づいて、微分回路25によって図17に示した微分信号D5が生成されることを前提とする。つまり、図6の(A)は、図16の読取信号D4と同じであり、図6の(B)は、図17の微分信号D5と同じである。
【0056】
図6の(A),(B)に示すように、二値化回路26は、微分信号D5の極値に対応した読取信号D4の反射光の強度の変曲点F1,F2を検出する(つまり、微分信号D5の極値は、読取信号D4の変曲点と一致している。)。そして、二値化回路26は、検出した変曲点F1,F2より変曲点間の幅長G1に対応する、反射光の強度の極値であるピークレベルH1を検出する。因みに、幅長G2,G3,G4は、ピークレベルH2,H3,H4にそれぞれ対応している。また、ピークレベルH1,H2,H3,H4は、図11で示したワイドスペースWS、ナロースペースNS、ワイドバーWB及びナローバーNBにそれぞれ対応している。
【0057】
図6の(A)では、コード画像51をデフォーカス状態で読み取ったために、図12で示した汚れNに起因した、図2の(A)で示したピークレベルC5,C6が現れない。しかしながら、幅長G1,G2,G3,G4は、コード画像51をデフォーカス状態で読み取ったために、それぞれ略同じ長さになっている。
【0058】
図7は、縦軸をバー/スペース(「0」のときがバー、「1」のときがスペース)とし、横軸を位置としたときの二値化回路26の二値化信号D6の処理例を示す説明図である。二値化回路26は、図6の(B)で検出した微分信号D5の変曲点F1,F2を立ち上がり又は立ち下がりポイントとした二値化信号D6を生成する。図7に示すように、この二値化信号D6から幅長G1〜G4が求められる。
【0059】
図8は、縦軸をピークレベルとし、横軸を幅長としたときの、二値化回路26が生成するピークレベル及び幅長をプロットした度数分布例を示す説明図である。図8に示すように、横軸の幅長は、正数をワイドスペースWS及びナロースペースNSが存在するスペース領域とし、負数をワイドバーWB及びナローバーNBが存在するバー領域としている。デコーダ27は、図6の(A)で示したピークレベルH1〜H4と、図7で求めた幅長G1〜G4とを集計して、該集計結果からピークレベルH1〜H4及び幅長G1〜G4に関する、一点鎖線で示した正常値範囲I1〜I4を設定する。
【0060】
正常値範囲I1は、ワイドスペースWSに関する領域であり、幅長G1及びピークレベルH1を集計して、例えば該集計結果が正規分布に従って分布すると仮定することで、設定されるものである。正常値範囲I2は、ナロースペースNSに関する領域であり、幅長G2及びピークレベルH2を集計して、例えば該集計結果が正規分布に従って分布すると仮定することで、設定されるものである。正常値範囲I3は、ワイドバーWBに関する領域であり、幅長G3及びピークレベルH3を集計して、例えば該集計結果が正規分布に従って分布すると仮定することで、設定されるものである。正常値範囲I4は、ナローバーNBに関する領域であり、幅長G4及びピークレベルH4を集計して、例えば該集計結果が正規分布に従って分布すると仮定することで、設定されるものである。
【0061】
デコーダ27は、幅長又はピークレベルが正常値範囲I1〜I4の範囲外にある場合、当該幅長又はピークレベルをノイズとみなして削除する。ただし、本例では、コード画像51から汚れNに起因するノイズが読み取られていないので、この処理は行われていない。
【0062】
図9は、図8の度数分布例から、閾値ThB2,ThS2を設定する処理例を示す説明図である。図9に示すように、ピークレベルの値とバー又はスペースの幅長とは、相関関係にある。つまり、ピークレベルの値が大きいと、バー又はスペースの幅長が大きく(ワイドバーWB又はワイドスペースWSに対応する)、ピークレベルの値が小さいと、バー又はスペースの幅長が小さい(ナローバーNB又はナロースペースNSに対応する)。
【0063】
閾値ThB2とは、ワイドバーWBとナローバーNBとの境界値であり、閾値ThB2よりピークレベルの値が小さければ当該プロットに対応するバーをナローバーNBとみなし、閾値ThB2よりピークレベルの値が大きければ当該プロットに対応するバーをワイドバーWBとみなす。また、閾値ThS2とは、ワイドスペースWSとナロースペースNSとの境界値であり、閾値ThS2よりピークレベルの値が小さければ当該プロットに対応するスペースをナロースペースNSとみなし、閾値ThS2よりピークレベルの値が大きければ当該プロットに対応するスペースをワイドスペースWSとみなす。
【0064】
デコーダ27は、図9に示す正常値範囲I1と正常値範囲I2との間のピークレベルに対して閾値ThS2を設定する。また、二値化回路26は、正常値範囲I3と正常値範囲I4との間のピークレベルに対して閾値ThB2を設定する。つまり、図9では、デコーダ27は、図5で示したように幅長からではなく、ピークレベルから閾値ThB2,ThS2を設定している。この理由は、図5のように幅長から閾値を設定しようとすると、正常値範囲I1,I2又は正常値範囲I3,I4が幅長に対して重なっている(図7に示したように、幅長が全て略同じ長さになっている)ので、閾値を設定することができないことによる。
【0065】
なお、閾値ThB2,ThS2は、ピークレベルH1〜H4間のそれぞれの差から設定するものであっても構わない(例えば、閾値ThS2は、(H1+H2)/2から求められ、閾値ThB2は、(H3+H4)/2から求められる)。
【0066】
デコーダ27は、図9で示した度数分布(又は、ピークレベルH1〜H4間の差)に基づいて設定された閾値ThB2,ThS2を用いて読取信号D4をデコードする。
【0067】
このように、本発明に係るコードスキャナでは、コード画像51をデフォーカス状態で読み取られて生成された読取信号D4であっても、読取信号D4をデコードするための閾値ThB2,ThS2が設定されるので、複雑なアルゴリズムや高速なCPUを用いなくても、デコードすることができる。
【0068】
[コードスキャナ100の動作例]
次に、コードスキャナ100の動作例についてフローチャートを用いて説明する。図10に示すように、ステップST1では、読み取り対象物50に形成されたコード画像51に反射した光をコードスキャナ100が受光する。コードスキャナ100は、結像レンズ21によって反射光を集光して、撮像素子22に結像させることにより、コード画像51を当該コードスキャナ100内に取り込む。コードスキャナ100内に取り込まれたコード画像51は、撮像素子22によって光電変換されて読取信号D1,D4が生成される。読取信号D1,D4は、ライン抽出部23で1ライン毎に抽出されてから、増幅器24によって当該読取信号D1,D4の信号レベルが所定の大きさに増幅される(図13及び図16参照)。
【0069】
ステップST2に移行して、微分回路25は、読取信号D1,D4を微分して微分信号D2,D5を生成する(図14及び図17参照)。
【0070】
ステップST3に移行して、二値化回路26は、微分信号D2,D5の極値を読取信号D1の信号レベルの変曲点A1,A2,F1,F2として検出する(図2及び図6参照)。そして、二値化回路26は、検出した変曲点A1,A2,F1,F2に基づいて、増幅器24から出力された読取信号D1,D4を二値化して二値化信号D3,D6を生成する(図3及び図7参照)。
【0071】
ステップST4に移行して、二値化回路26は、生成した二値化信号D3,D6から変曲点間の幅長B1〜B4,G1〜G4と、この幅長B1〜B4,G1〜G4に対応するピークレベルC1〜C4,H1〜H4とを検出する(図2及び図6参照)。そして、二値化回路26は、検出したピークレベルC1〜C4,H1〜H4の値と当該ピークレベルの位置とを含む情報であるピークレベル情報D7を生成する。
【0072】
ステップST5に移行して、デコーダ27は、二値化回路26で生成された二値化信号D3,D6及びピークレベル情報D7から幅長B1〜B4,G1〜G4及びピークレベルC1〜C4,H1〜H4の値を抽出する。そして、デコーダ27は、抽出した幅長B1〜B4,G1〜G4及びピークレベルC1〜C4,H1〜H4を集計して、該集計結果から幅長B1〜B4,G1〜G4及びピークレベルC1〜C4,H1〜H4に関する正常値範囲E1〜E4,I1〜I4を設定する(図4及び図7参照)。
【0073】
ステップST6に移行して、デコーダ27は、設定した正常値範囲E1〜E4,I1〜I4内に幅長B1〜B4,G1〜G4及びピークレベルC1〜C4,H1〜H4が存在するか否かを判断する。正常値範囲E1〜E4,I1〜I4内に幅長B1〜B4,G1〜G4及びピークレベルC1〜C4,H1〜H4が存在する場合には、ステップST8に移行し、存在しない場合には、ステップST7に移行する。
【0074】
ステップST7では、デコーダ27は、正常値範囲E1〜E4,I1〜I4の範囲外にある幅長又はピークレベルをノイズとみなして削除する。例えば、図3で示したピークレベルC5,C6がノイズN1となる。
【0075】
ステップST8では、デコーダ27は、ピークレベルC1〜C4,H1〜H4間の差が予め記憶された所定の値より小さいか否かを判断する。ピークレベルC1〜C4,H1〜H4間の差が所定の値より小さい場合には、ステップST9に移行し、ピークレベルC1〜C4,H1〜H4間の差が所定の値以上である場合には、ステップST10に移行する。
【0076】
例えば、図4のピークレベルC1〜C4に着目すると、ピークレベルC1とピークレベルC2との差は小さく、ピークレベルC3とピークレベルC4との差も小さい。この場合には、ステップST9に移行する。また、図8のピークレベルH1〜H4に着目すると、ピークレベルH1とピークレベルH2との差は大きく、ピークレベルH3とピークレベルH4との差も大きい。この場合には、ステップST10に移行する。
【0077】
ステップST9では、デコーダ27は、幅長B1〜B4,G1〜G4に基づいて閾値を設定する。例えば、図5では、デコーダ27は、幅長B1を含む正常値範囲E1と幅長B2を含む正常値範囲E2との間で閾値ThS1を設定し、また、幅長B3を含む正常値範囲E3と幅長B4を含む正常値範囲E4との間で閾値ThB1を設定する。閾値ThB1,ThS1が設定されたら、ステップST11に移行する。
【0078】
ステップST10では、デコーダ27は、ピークレベルC1〜C4,H1〜H4に基づいて閾値を設定する。例えば、図9では、二値化回路26は、ピークレベルH1を含む正常値範囲I1とピークレベルH2を含む正常値範囲I2との間で閾値ThS2を設定し、また、ピークレベルH3を含む正常値範囲I3とピークレベルH4を含む正常値範囲I4との間で閾値ThB2を設定する。閾値ThB2,ThS2が設定されたら、ステップST11に移行する。
【0079】
ステップST11では、デコーダ27は、設定した閾値ThB1,ThS1,ThB2,ThS2と、正常値範囲の範囲内にある幅長及びピークレベルのプロットと、ピークレベル情報D7が有するピークレベルの位置とに基づいて、コード画像51の情報(読取信号D1,D4)をデコードする。
【0080】
このように、第1の実施の形態に係るコードスキャナ100によれば、コード画像51から反射した光を光電変換して、反射光の強度を示す読取信号D1,D4を生成し、該生成した読取信号D1,D4を微分して微分信号D2,D5を生成する。これを前提にして、生成した微分信号D2,D5から読取信号D1,D4の反射光の強度の変曲点A1,A2,F1,F2を検出し、該検出した変曲点間の幅長B1〜B4,G1〜G4に対応する、反射光の強度の極値であるピークレベルC1〜C4,H1〜H4を検出する。そして、検出したピークレベルC1〜C4,H1〜H4間の差を求めて、該求めたピークレベルC1〜C4,H1〜H4間の差から読取信号D1,D4をデコードするための閾値ThB1,ThS1,ThB2,ThS2を設定する。
【0081】
これにより、汚れNが付着したり印刷品質の劣化したコード画像51の読取信号D1,D4や、デフォーカス状態で読み取られた読取信号D1,D4であっても、当該読取信号D1,D4をデコードするための閾値ThB1,ThS1,ThB2,ThS2が設定されるので、複雑なアルゴリズムや高速なCPUを使用せずに、デコードすることができる。この結果、読み取り性能が向上したデコード方法及びコードスキャナ(デコード処理装置)を提供することができる。
【0082】
なお、本実施の形態では、コード画像51の一例としてバーコードで説明したが、これに限定されず、二次元コードであっても本発明のデコード方法が適用可能である。この場合、図1に示したコードスキャナ100で二次元コード画像を1フレーム撮像し、該撮像した二次元コード画像を水平方向及び垂直方向にライン毎に走査して、図10に示した処理を行う。そして、ライン毎に二値化したデータを再び1フレームの画像に合算することにより、デコード可能となる。
【0083】
また、本実施の形態で説明したデコード方法は、コードスキャナだけではなく、光ディスク再生装置のようなデータをデコードする装置にも適用可能である。
【0084】
また、四値コードであっても本発明が可能である。この場合、一値に対してはデフォーカスの度合いが大きいためピークレベルから閾値を設定し、二値、三値及び四値に対してはデフォーカスの度合いが小さいため幅長から閾値を設定する。
【0085】
<第2の実施の形態>
本実施の形態では、光照射部10を備えたコードスキャナ100Aについて説明する。前述の第1の実施の形態と同じ名称及び符号のものは同じ機能を有するので、その説明を省略する。
【0086】
[コードスキャナ100Aの構成例]
図11に示すように、コードスキャナ100Aは、光照射部10及び信号処理部20で構成される。光照射部10は、レーザ光源11、集光レンズ13、開口絞り14及びスキャニングミラー15を備える。
【0087】
光照射部10は、半導体レーザ等によるレーザ光源11の発光点12から出力されるレーザ光線を集光レンズ13で集光させた後、開口絞り14でその径を絞り、スキャニングミラー15により読み取り対象物50に向かって偏向させて、読み取り対象物50に形成されたコード画像51に対して照射する。
【0088】
そして、光照射部10は、コード画像51上をレーザ光線のビームスポットにより走査する。スキャニングミラー15は、図11では平面鏡として示しているが、正多角形柱上で側面が鏡面となっているポリゴンミラーを用いても良い。
【0089】
信号処理部20は、結像レンズ21、撮像素子22、ライン抽出部23、増幅器24、微分回路25、二値化回路26及びデコーダ27を備える。信号処理部20は、読み取り対象物50に形成されたコード画像51から反射されてきた走査レーザ光線を結像レンズ21に入射させて集光し、CCDやCMOS等による撮像素子22上に結像させる。ライン抽出部23、増幅器24、微分回路25、二値化回路26及びデコーダ27は、前述の第1の実施の形態と同じものであるので、その説明を省略する。
【0090】
このように、第2の実施の形態に係るコードスキャナ100Aによれば、読み取り対象物50に向かってレーザ光線を照射する光照射部10を備え、汚れNが付着したり印刷品質の劣化したコード画像51の読取信号D1,D4や、デフォーカス状態で読み取られた読取信号D1,D4であっても、デコードすることができる。
【0091】
本発明は、従来のアルゴリズム処理を使用しつつ、閾値設定を幅長からピークレベルに変更するという当業者であっても容易に想到不可能な斬新な方法によって、読み取り対象物に汚れ等が付着したり印刷品質が劣化したりしても、また、デフォーカス状態で読み取られた読取信号であっても、複雑なアルゴリズムや高速なCPUを使用せずにデコード可能になるという優れたものである。
【符号の説明】
【0092】
10・・・光照射部、11・・・レーザ光源、12・・・発光点、13・・・集光レンズ、14・・・開口絞り、15・・・スキャンニングミラー、20・・・信号処理部、21・・・結像レンズ、22・・・撮像素子(読取信号生成部)、23・・・ライン抽出部、24・・・増幅器、25・・・微分回路(微分信号生成部)、26・・・二値化回路(二値化部)、27・・・デコーダ(デコード部)、50・・・読み取り対象物、51・・・コード画像、A1,A2,F1,F2・・・変曲点、B1〜B4,G1〜G4・・・幅長、C1〜C4,H1〜H4・・・ピークレベル、D1,D4・・・読取信号、D2,D5・・・微分信号、D3,D6・・・二値化信号、E1〜E4,I1〜I4・・・正常値範囲、N・・・汚れ、NB・・・ナローバー、NS・・・ナロースペース、WB・・・ワイドバー、WS・・・ワイドスペース
【特許請求の範囲】
【請求項1】
読取対象から反射した光を光電変換して、反射光の強度を示す読取信号を生成する第1のステップと、
前記第1のステップで生成された読取信号を微分して微分信号を生成する第2のステップと、
前記第2のステップで生成された微分信号から前記読取信号の前記反射光の強度の変曲点を検出し、該検出した変曲点間の幅長に対応する、前記反射光の強度の極値であるピークレベルを検出する第3のステップと、
前記第3のステップで検出されたピークレベル間の差を求めて、該求めたピークレベル間の差から前記読取信号をデコードするための閾値を設定する第4ステップと、
前記第4のステップで設定された閾値に基づいて前記読取信号をデコードする第5のステップとを有することを特徴とするデコード方法。
【請求項2】
前記第2のステップでは、
前記変曲点間の幅長と前記ピークレベルとを集計して、該集計結果から前記幅長及び前記ピークレベルに関する正常値範囲を設定し、
該設定した正常値範囲の範囲外にある前記幅長又は前記ピークレベルをノイズとみなして削除することを特徴とする請求項1に記載のデコード方法。
【請求項3】
前記第3のステップでは、
前記第2のステップで検出されたピークレベルの度数分布を求めて、該求めた度数分布に基づいて前記読取信号をデコードするための閾値を設定することを特徴とする請求項1に記載のデコード方法。
【請求項4】
前記第3のステップでは、
前記ピークレベル間の差が所定の値より大きいか否かを判断し、
前記判断結果が所定の値より大きい場合には、前記幅長から前記閾値を設定し、前記判断結果が所定の値以下である場合には、前記ピークレベルから前記閾値を設定することを特徴とする請求項1に記載のデコード方法。
【請求項5】
読取対象から反射した光を光電変換して、反射光の強度を示す読取信号を生成する読取信号生成部と、
前記読取信号生成部で生成された読取信号を微分して微分信号を生成する微分信号生成部と、
前記微分信号生成部で生成された微分信号に基づいて前記読取信号を二値化する二値化部と、
前記二値化部で二値化された前記読取信号をデコードするデコード部とを備え、
前記二値化部は、
前記微分信号から前記読取信号の前記反射光の強度の変曲点を検出して、該検出した変曲点間の幅長に対応する、前記反射光の強度の極値であるピークレベルを検出し、
前記デコード部は、
前記二値化部によって検出されたピークレベル間の差を求めて、該求めたピークレベル間の差から前記読取信号をデコードするための閾値を設定し、該設定した閾値に基づいて前記読取信号をデコードすることを特徴とするデコード処理装置。
【請求項1】
読取対象から反射した光を光電変換して、反射光の強度を示す読取信号を生成する第1のステップと、
前記第1のステップで生成された読取信号を微分して微分信号を生成する第2のステップと、
前記第2のステップで生成された微分信号から前記読取信号の前記反射光の強度の変曲点を検出し、該検出した変曲点間の幅長に対応する、前記反射光の強度の極値であるピークレベルを検出する第3のステップと、
前記第3のステップで検出されたピークレベル間の差を求めて、該求めたピークレベル間の差から前記読取信号をデコードするための閾値を設定する第4ステップと、
前記第4のステップで設定された閾値に基づいて前記読取信号をデコードする第5のステップとを有することを特徴とするデコード方法。
【請求項2】
前記第2のステップでは、
前記変曲点間の幅長と前記ピークレベルとを集計して、該集計結果から前記幅長及び前記ピークレベルに関する正常値範囲を設定し、
該設定した正常値範囲の範囲外にある前記幅長又は前記ピークレベルをノイズとみなして削除することを特徴とする請求項1に記載のデコード方法。
【請求項3】
前記第3のステップでは、
前記第2のステップで検出されたピークレベルの度数分布を求めて、該求めた度数分布に基づいて前記読取信号をデコードするための閾値を設定することを特徴とする請求項1に記載のデコード方法。
【請求項4】
前記第3のステップでは、
前記ピークレベル間の差が所定の値より大きいか否かを判断し、
前記判断結果が所定の値より大きい場合には、前記幅長から前記閾値を設定し、前記判断結果が所定の値以下である場合には、前記ピークレベルから前記閾値を設定することを特徴とする請求項1に記載のデコード方法。
【請求項5】
読取対象から反射した光を光電変換して、反射光の強度を示す読取信号を生成する読取信号生成部と、
前記読取信号生成部で生成された読取信号を微分して微分信号を生成する微分信号生成部と、
前記微分信号生成部で生成された微分信号に基づいて前記読取信号を二値化する二値化部と、
前記二値化部で二値化された前記読取信号をデコードするデコード部とを備え、
前記二値化部は、
前記微分信号から前記読取信号の前記反射光の強度の変曲点を検出して、該検出した変曲点間の幅長に対応する、前記反射光の強度の極値であるピークレベルを検出し、
前記デコード部は、
前記二値化部によって検出されたピークレベル間の差を求めて、該求めたピークレベル間の差から前記読取信号をデコードするための閾値を設定し、該設定した閾値に基づいて前記読取信号をデコードすることを特徴とするデコード処理装置。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【公開番号】特開2012−14425(P2012−14425A)
【公開日】平成24年1月19日(2012.1.19)
【国際特許分類】
【出願番号】特願2010−150227(P2010−150227)
【出願日】平成22年6月30日(2010.6.30)
【出願人】(391062872)株式会社オプトエレクトロニクス (70)
【Fターム(参考)】
【公開日】平成24年1月19日(2012.1.19)
【国際特許分類】
【出願日】平成22年6月30日(2010.6.30)
【出願人】(391062872)株式会社オプトエレクトロニクス (70)
【Fターム(参考)】
[ Back to top ]