(57)【特許請求の範囲】
【請求項１】
読取対象から反射した光を光電変換して、反射光の強度を示す読取信号を生成する第１のステップと、
前記第１のステップで生成された読取信号を微分して微分信号を生成する第２のステップと、
前記第２のステップで生成された微分信号から前記読取信号の前記反射光の強度の変曲点を検出し、該検出した変曲点間の幅長に対応する、前記反射光の強度の極値であるピークレベルを検出する第３のステップと、
前記第３のステップで検出されたピークレベル間の差を求めて、該求めたピークレベル間の差から前記読取信号をデコードするための閾値を設定する第４ステップと、
前記第４のステップで設定された閾値に基づいて前記読取信号をデコードする第５のステップとを有することを特徴とするデコード方法。
【請求項２】
前記第３のステップでは、
前記変曲点間の幅長と前記ピークレベルとを集計して、該集計結果から前記幅長及び前記ピークレベルに関する正常値範囲を設定し、
該設定した正常値範囲の範囲外にある前記幅長又は前記ピークレベルをノイズとみなして削除することを特徴とする請求項１に記載のデコード方法。
【請求項３】
前記第４のステップでは、
前記第３のステップで検出されたピークレベルの度数分布を求めて、該求めた度数分布に基づいて前記読取信号をデコードするための閾値を設定することを特徴とする請求項１に記載のデコード方法。
【請求項４】
前記第４のステップでは、
前記ピークレベル間の差が所定の値より小さいか否かを判断し、
前記判断結果が所定の値より小さい場合には、前記幅長から前記閾値を設定し、前記判断結果が所定の値以上である場合には、前記ピークレベルから前記閾値を設定することを特徴とする請求項１に記載のデコード方法。
【請求項５】
読取対象から反射した光を光電変換して、反射光の強度を示す読取信号を生成する読取信号生成部と、
前記読取信号生成部で生成された読取信号を微分して微分信号を生成する微分信号生成部と、
前記微分信号生成部で生成された微分信号に基づいて前記読取信号を二値化する二値化部と、
前記二値化部で二値化された前記読取信号をデコードするデコード部とを備え、
前記二値化部は、
前記微分信号から前記読取信号の前記反射光の強度の変曲点を検出して、該検出した変曲点間の幅長に対応する、前記反射光の強度の極値であるピークレベルを検出し、
前記デコード部は、
前記二値化部によって検出されたピークレベル間の差を求めて、該求めたピークレベル間の差から前記読取信号をデコードするための閾値を設定し、該設定した閾値に基づいて前記読取信号をデコードすることを特徴とするデコード処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、読取対象からの反射光の強度を示す読取信号をデコードするデコード方法及びデコード処理装置に関するものである。
【背景技術】
【０００２】
画像認識における二値化処理は、デコードされた出力結果の精度を左右する重要な技術である。以下に代表的な画像認識について述べる。
【０００３】
特許文献１には、微分強度の大きい順に並び替えて処理する顔認証装置が開示されている。この顔認証装置によれば、微分処理によって顔画像たる濃淡画像から微分強度画像を生成し、該生成した微分強度画像の内、抽出したい顔部品が含まれる所定領域内で画素を微分強度の大きい順に並び替える処理を行う。その後、顔部品に対応付けてある指定の画素数分だけ選択した部位を濃度変化の激しい部位及びそれ以外の部位を濃度変化の激しくない平坦な部位として閾値を設定し、該設定した閾値で微分強度画像を２値化画像として出力している。
【０００４】
特許文献２には、微分処理して二値化を行う二値化方式が開示されている。この二値化方式によれば、ＣＣＤやＣＭＯＳ等で構成される撮像素子によってコード記号すなわち多値画像信号を撮像し、零交叉点検出部で零交叉点検出するために、二次微分部により二次微分し、その二次微分信号が正から負、又は負から正に大きく変化する点（零交叉点）を符号変化点検出部により検出する。後段の二値化閾値算出部では、零交叉点検出部からのトリガ信号により、コード読み取り部が出力する多値画像信号の輝度値をサンプリングして保持し、二値化の閾値として二値化部に出力する。
【０００５】
特許文献３には、Ａ／Ｄ変換して二値化を行うＯＣＲ（光学文字読み取り装置）が開示されている。ＯＣＲでは、原稿の白地と、文字の黒部分するため、ＣＣＤで読み取った原稿の画像データをＡ／Ｄ変換し、画像処理を行う。例えば、原稿読み取りデータの最大値（白側）と最小値（黒側）の差をＡ／Ｄ変換の基準電圧とすることでダイナミックレンジを大きくし、この基準電圧に基づいてＡ／Ｄ変換することにより二値化の精度を上げている。
【０００６】
特許文献４には、シーク動作を向上させる光ディスク再生装置が開示されている。光ピックアップにおいて、対物レンズをそのシフト範囲の最内周位置及び最外周位置にそれぞれシフトさせた状態で、光ヒップアップを光ディスクの半径方向で移動させる。このとき、閾値生成回路は、それぞれの状態で二値化前信号を二値化するのに最適な第１閾値及び第２閾値を求め、両閾値の平均値を最終閾値として閾値レジスタに設定する。シーク動作時には、上記の最終閾値で二値化前信号が二値化される。このように、二値化する最適値が最も大きくなる、又は最も小さくなる対物レンズのシフト範囲の最内周位置及び最外周位置でそれぞれ第１閾値及び第２閾値を求め、両者の平均値を上記所定の閾値としている。
【０００７】
次に、コード記号画像を光学的に処理するコードスキャナを例にとり、画像認識における二値化処理の過程を詳細に説明する。
【０００８】
このコードスキャナは、図１２に示すような読み取り対象物５０に形成されるコード画像５１にレーザ光線等を照射し、その反射光を受光して電気的処理を施すことによって、当該コード画像５１の情報を読み取るものである。
【０００９】
例えば、コード画像５１は、バー（例えば、幅が広いバーであるワイドバーＷＢや、幅が細いバーであるナローバーＮＢ）とスペース（例えば、幅が広いスペースであるワイドスペースＷＳや、幅が細いスペースであるナロースペースＮＳ）とで構成されるものである。なお、本例では、読み取り対象物５０に汚れＮが付着していることを前提とする。
【００１０】
次に、このようなコードスキャナの二値化処理例について説明する。図１３は、縦軸を信号レベル（反射光強度）とし、横軸を位置としたときの読取信号Ｄ１の波形例を示す説明図である。図１３に示すように、コードスキャナが読み取ったコード画像５１の情報は、読取信号Ｄ１として読み取られる。
【００１１】
この読取信号Ｄ１は、コード画像５１のワイドバーＷＢ、ナローバーＮＢ、ワイドスペースＷＳ及びナロースペースＮＳにそれぞれ対応した、下向きの大きな凸形状を有するワイドバー波形ＷＢ１、下向きの小さな凸形状を有するナローバー波形ＮＢ１、上向きの大きな凸形状を有するワイドスペース波形ＷＳ１及び上向きの小さな凸形状を有するナロースペース波形ＮＳ１を含む。因みに、図１２で示した読み取り対象物５０に汚れＮが付着しているときには、読取信号Ｄ１は、ノイズＮ１を含んでしまう。
【００１２】
図１４は、縦軸を信号レベルとし、横軸を位置としたときの微分信号Ｄ２の波形例を示す説明図である。コードスキャナは、読取信号Ｄ１を微分して微分信号Ｄ２を生成する。図１４に示すように、この微分信号Ｄ２は、読取信号Ｄ１のワイドバー波形ＷＢ１、ナローバー波形ＮＢ１、ワイドスペース波形ＷＳ１又はナロースペース波形ＮＳ１の変曲点を極値とした波形を有する。
【００１３】
図１５は、縦軸をバー／スペース（「０」のときがバー、「１」のときがスペース）とし、横軸を位置としたときの二値化信号Ｄ３の波形例を示す説明図である。コードスキャナは、微分信号Ｄ２の変曲点を立ち上がり又は立ち下がりポイントとして二値化信号Ｄ３を生成する。
【００１４】
図１５に示すように、この二値化信号Ｄ３は、ワイドバー波形ＷＢ１、ナローバー波形ＮＢ１、ワイドスペース波形ＷＳ１及びナロースペース波形ＮＳ１にそれぞれ対応した、ワイドバー信号ＷＢ３、ナローバー信号ＮＢ３、ワイドスペース信号ＷＳ３及びナロースペース信号ＮＳ３を含む。また、二値化信号Ｄ３は、読取信号Ｄ１のノイズＮ１に対応したノイズ信号Ｎ３も含んでしまう。
【００１５】
このように、読み取り対象物５０に汚れＮが付着してしまうと、二値化信号Ｄ３にノイズ信号Ｎ３を含んでしまい、コード画像５１の情報を正しくデコードすることができない。
【００１６】
次に、読み取り対象物５０とコードスキャナが所定の距離（焦点距離）以上離れていて、コードスキャナの受光面がレンズの結像面から光軸方向にずれている状態（デフォーカス状態）になっているときの、コードスキャナの二値化処理例について説明する。図１６は、縦軸を信号レベル（反射光強度）とし、横軸を位置としたときの読取信号Ｄ４の波形例を示す説明図である。
【００１７】
この読取信号Ｄ４は、図１３で説明した読取信号Ｄ１と同様に、コード画像５１のワイドバーＷＢ、ナローバーＮＢ、ワイドスペースＷＳ及びナロースペースＮＳにそれぞれ対応した、下向きの大きな凸形状を有するワイドバー波形ＷＢ４、下向きの小さな凸形状を有するナローバー波形ＮＢ４、上向きの大きな凸形状を有するワイドスペース波形ＷＳ４及び上向きの小さな凸形状を有するナロースペース波形ＮＳ４を含む。因みに、本例では、図１２で示した読み取り対象物５０に汚れＮが付着しているときでも、読み取り対象物５０とコードスキャナが焦点距離より離れているので、読取信号Ｄ４は、読取信号Ｄ１のようにノイズＮ１を含まない。
【００１８】
図１７は、縦軸を信号レベルとし、横軸を位置としたときの微分信号Ｄ５の波形例を示す説明図である。コードスキャナは、読取信号Ｄ４を微分して微分信号Ｄ５を生成する。図１７に示すように、この微分信号Ｄ５は、読取信号Ｄ４のワイドバー波形ＷＢ４、ナローバー波形ＮＢ４、ワイドスペース波形ＷＳ４又はナロースペース波形ＮＳ４の変曲点を極値とした波形を有する。変曲点間の幅長は、全て略同じ長さになっている。
【００１９】
図１８は、縦軸をバー／スペース（「０」のときがバー、「１」のときがスペース）とし、横軸を位置としたときの二値化信号Ｄ６の波形例を示す説明図である。コードスキャナは、微分信号Ｄ５の変曲点を立ち上がり又は立ち下がりポイントとして二値化信号Ｄ６を生成する。
【００２０】
図１８に示すように、この二値化信号Ｄ６は、ワイドバー波形ＷＢ４、ナローバー波形ＮＢ４、ワイドスペース波形ＷＳ４及びナロースペース波形ＮＳ４にそれぞれ対応した、ワイドバー信号ＷＢ６、ナローバー信号ＮＢ６、ワイドスペース信号ＷＳ６及びナロースペース信号ＮＳ６を含む。
【００２１】
図１７で示したように変曲点間の幅長が全て略同じ長さであるので、ワイドバー信号ＷＢ６、ナローバー信号ＮＢ６、ワイドスペース信号ＷＳ６及びナロースペース信号ＮＳ６も全て略同じ長さになってしまう。これでは、コード画像５１の情報を正しくデコードすることができない。
【先行技術文献】
【特許文献】
【００２２】
【特許文献１】特開２００７−８００８７号公報
【特許文献２】特開２００１―２０９７５１号公報
【特許文献３】特開平９−１２８５２３号公報
【特許文献４】特開２００６−６５９０９号公報
【発明の概要】
【発明が解決しようとする課題】
【００２３】
画像認識における出力結果の精度が劣る原因は、上記コードスキャナで説明したように、読み取り対象物に汚れ等が付着したり、あるいは印刷品質が悪いことが考えられる。また、デフォーカス状態で対象物を読み取ってしまうと、正確にデコードすることができない。これらの問題は、特許文献１乃至４においても発生しており、閾値を変動させたり、閾値算出アルゴリズムのステップを増やすことによって解消している。しかし、その場合であっても、計算に時間がかかったり、高速なＣＰＵを必要としたり、コードスキャナの製造コストがかかってしまい大量生産に適する技術とは言えない。
【００２４】
そこで、本発明は、上述の課題を解決したものであって、複雑なアルゴリズムや高速なＣＰＵを用いなくても、また、読み取り対象物に汚れ等が付着したり印刷品質が劣化したりしても、コード画像の読取信号をデコードすることができ、また、デフォーカス状態で読み取られた読取信号であってもデコードすることができるデコード方法及びデコード処理装置を提供することを目的とする。
【課題を解決するための手段】
【００２５】
上述の課題を解決するために、本発明に係るデコード方法は、読取対象から反射した光を光電変換して、反射光の強度を示す読取信号を生成する第１のステップと、第１のステップで生成された読取信号を微分して微分信号を生成する第２のステップと、第２のステップで生成された微分信号から読取信号の反射光の強度の変曲点を検出し、該検出した変曲点間の幅長に対応する、反射光の強度の極値であるピークレベルを検出する第３のステップと、第３のステップで検出されたピークレベル間の差を求めて、該求めたピークレベル間の差から読取信号をデコードするための閾値を設定する第４ステップと、第４のステップで設定された閾値に基づいて読取信号をデコードする第５のステップとを有することを特徴とするものである。
【００２６】
本発明に係るデコード方法では、読取対象から反射した光を光電変換して、反射光の強度を示す読取信号を生成し、該生成した読取信号を微分して微分信号を生成する。これを前提にして、生成した微分信号から読取信号の反射光の強度の変曲点を検出し、該検出した変曲点間の幅長に対応する、反射光の強度の極値であるピークレベルを検出する。そして、検出したピークレベル間の差を求めて、該求めたピークレベル間の差から読取信号をデコードするための閾値を設定する。これにより、設定した閾値に基づいて読取信号をデコードすることができるようになる。
【００２７】
また、本発明に係るデコード処理装置では、読取対象から反射した光を光電変換して、反射光の強度を示す読取信号を生成する読取信号生成部と、読取信号生成部で生成された読取信号を微分して微分信号を生成する微分信号生成部と、微分信号生成部で生成された微分信号に基づいて読取信号を二値化する二値化部と、二値化部で二値化された読取信号をデコードするデコード部とを備え、二値化部は、微分信号から読取信号の反射光の強度の変曲点を検出して、該検出した変曲点間の幅長に対応する、反射光の強度の極値であるピークレベルを検出し、デコード部は、二値化部によって検出されたピークレベル間の差を求めて、該求めたピークレベル間の差から読取信号をデコードするための閾値を設定し、該設定した閾値に基づいて読取信号をデコードすることを特徴とするものである。
【発明の効果】
【００２８】
本発明に係るデコード方法及びデコード処理装置によれば、印刷品質の劣化したコード画像（読取対象）の読取信号や、コード画像をデフォーカス状態で読み取られて生成された読取信号であっても、複雑なアルゴリズムや高速なＣＰＵを使用せずに、デコードすることができる。この結果、読み取り性能が向上したデコード方法及びデコード処理装置を提供することができる。
【図面の簡単な説明】
【００２９】
【図１】第１の実施の形態に係るコードスキャナ１００の構成例を示すブロック図である。
【図２】二値化回路２６の処理例（その１）を示す説明図である。
【図３】二値化回路２６の処理例（その２）を示す説明図である。
【図４】デコーダ２７の処理例（その１）を示す説明図である。
【図５】デコーダ２７の処理例（その２）を示す説明図である。
【図６】二値化回路２６の処理例（その３）を示す説明図である。
【図７】二値化回路２６の処理例（その４）を示す説明図である。
【図８】デコーダ２７の処理例（その３）を示す説明図である。
【図９】デコーダ２７の処理例（その４）である。
【図１０】コードスキャナ１００の動作例を示すフローチャートである。
【図１１】第２の実施の形態に係るコードスキャナ１００Ａの構成例を示すブロック図である。
【図１２】コード画像５１の構成例を示す説明図である。
【図１３】読取信号Ｄ１の波形例を示す説明図である。
【図１４】微分信号Ｄ２の波形例を示す説明図である。
【図１５】二値化信号Ｄ３の波形例を示す説明図である。
【図１６】読取信号Ｄ４の波形例を示す説明図である。
【図１７】微分信号Ｄ５の波形例を示す説明図である。
【図１８】二値化信号Ｄ６の波形例を示す説明図である。
【発明を実施するための形態】
【００３０】
以下、図面を参照して、本発明に係るデコード処理装置の実施の形態の一例として、コードスキャナについて説明する。  
＜第１の実施の形態＞  
［コードスキャナ１００の構成例］  
図１に示すように、コードスキャナ１００は、結像レンズ２１、撮像素子２２、ライン抽出部２３、増幅器２４、微分回路２５、二値化回路２６及びデコーダ２７を備える。コードスキャナ１００は、読み取り対象物５０に形成されたコード画像５１から反射した光を結像レンズ２１に入射させて集光し、ＣＣＤやＣＭＯＳ等による撮像素子２２上に結像させる。
【００３１】
撮像素子２２は、読取信号生成部の一例であり、反射光を当該反射光の強度に応じて光電変換してアナログの電気信号である読取信号Ｄ１，Ｄ４を生成し、該生成した読取信号Ｄ１，Ｄ４をライン抽出部２３に出力する。
【００３２】
撮像素子２２にはライン抽出部２３が接続される。ライン抽出部２３は、撮像素子２２から出力された読取信号Ｄ１，Ｄ４を１ライン毎抽出して増幅器２４に出力する。
【００３３】
ライン抽出部２３には増幅器２４が接続される。増幅器２４は、ライン抽出部２３から出力された読取信号Ｄ１，Ｄ４の信号レベルを所定の大きさに増幅して微分回路２５及び二値化回路２６に出力する。
【００３４】
増幅器２４には微分回路２５及び二値化回路２６が接続される。微分回路２５は、微分信号生成部の一例であり、増幅器２４で増幅された読取信号Ｄ１，Ｄ４を微分して微分信号Ｄ２，Ｄ５を生成し、二値化回路２６に出力する。
【００３５】
微分回路２５には二値化回路２６が接続される。二値化回路２６は、二値化部の一例であり、増幅器２４から出力された読取信号Ｄ１，Ｄ４と、微分回路２５から出力された微分信号Ｄ２，Ｄ５とを受信する。二値化回路２６は、受信した微分信号Ｄ２，Ｄ５から当該微分信号Ｄ２，Ｄ５の極値を検出することにより、読取信号Ｄ１，Ｄ４の反射光の強度の変曲点を検出する。微分信号Ｄ２，Ｄ５の極値は、読取信号Ｄ１，Ｄ４の反射光の強度の変曲点が存在する位置に対応するものである。
【００３６】
二値化回路２６は、検出した変曲点に基づいて、増幅器２４から出力された読取信号Ｄ１，Ｄ４を二値化して変曲点間の幅長の情報を有する二値化信号Ｄ３，Ｄ６を生成する。二値化回路２６は、生成した二値化信号Ｄ３，Ｄ６をデコーダ２７に出力する。更に、二値化回路２６は、変曲点間の幅長に対応する、反射光の強度の極値であるピークレベルを検出し、検出したピークレベルの値（例えば、後述する図２のピークレベルＣ１の信号レベル値：９８００）と当該ピークレベルの位置（例えば、図２のピークレベルＣ１の位置：３５０）とを含む情報であるピークレベル情報Ｄ７をデコーダ２７に出力する。
【００３７】
二値化回路２６にはデコーダ２７が接続される。デコーダ２７は、デコード部の一例であり、二値化回路２６から出力された二値化信号Ｄ３，Ｄ６及びピークレベル情報Ｄ７から変曲点間の幅長及びピークレベルの値を抽出する。デコーダ２７は、抽出した幅長及びピークレベルの値を集計して、該集計結果から幅長及びピークレベルに関する正常値範囲を設定する。そして、デコーダ２７は、設定した正常値範囲の範囲外にある幅長又はピークレベルをノイズとみなして削除する。正常値範囲とは、例えば、幅長及びピークレベルの値の集計結果が正規分布に従って分布すると仮定して、この分布に近い幅長及びピークレベルは正常であるとし、この分布から遠い幅長及びピークレベルは異常であるとして定めた範囲である。
【００３８】
デコーダ２７は、ピークレベル間の差を求めて、該求めたピークレベルの差から読取信号Ｄ１，Ｄ４をデコードするための閾値を設定する。例えば、デコーダ２７は、ピークレベルの差が所定の値より小さいか否かを判断し、該判断結果が所定の値より小さい場合には、幅長から閾値を設定し、該判断結果が所定の値以上である場合には、ピークレベルから閾値を設定する。なお、デコーダ２７は、検出したピークレベルの度数分布を求めて、該求めた度数分布から読取信号Ｄ１，Ｄ４をデコードするための閾値を設定しても良い。
【００３９】
閾値を設定後、デコーダ２７は、当該閾値と、正常値範囲の範囲内にある幅長及びピークレベルのプロット（後述する図５のプロット）と、ピークレベル情報Ｄ７のピークレベルの位置とに基づいて読取信号Ｄ１，Ｄ４をデコード処理することで、コード画像５１の情報をデコードすることができる。
【００４０】
［二値化回路２６及びデコーダ２７の処理例］  
次に、二値化回路２６及びデコーダ２７の処理例について説明する。図２の（Ａ）は、縦軸を信号レベル（反射光強度）とし、横軸を位置としたときの、二値化回路２６の読取信号Ｄ１の処理例を示す説明図である。図２の（Ｂ）は、縦軸を信号レベルとし、横軸を位置としたときの、二値化回路２６の微分信号Ｄ２の処理例を示す説明図である。
【００４１】
本例では、図１２に示したコード画像５１が読み取られて、撮像素子２２、ライン抽出部２３及び増幅器２４によって図１３に示した読取信号Ｄ１が生成され、この読取信号Ｄ１に基づいて、微分回路２５によって図１４に示した微分信号Ｄ２が生成されることを前提とする。つまり、図２の（Ａ）は、図１３の読取信号Ｄ１と同じであり、図２の（Ｂ）は、図１４の微分信号Ｄ２と同じである。
【００４２】
図２の（Ａ），（Ｂ）に示すように、二値化回路２６は、微分信号Ｄ２の極値に対応した読取信号Ｄ１の反射光の強度の変曲点Ａ１，Ａ２を検出する（つまり、微分信号Ｄ２の極値は、読取信号Ｄ１の変曲点と一致している。）。そして、二値化回路２６は、検出した変曲点Ａ１，Ａ２より変曲点間の幅長Ｂ１に対応する、反射光の強度の極値であるピークレベルＣ１を検出する。因みに、幅長Ｂ２，Ｂ３，Ｂ４は、ピークレベルＣ２，Ｃ３，Ｃ４にそれぞれ対応している。また、ピークレベルＣ１，Ｃ２，Ｃ３，Ｃ４は、図１２で示したワイドスペースＷＳ、ナロースペースＮＳ、ワイドバーＷＢ及びナローバーＮＢにそれぞれ対応している。
【００４３】
図２の（Ａ）では、図１２で示した汚れＮがピークレベルＣ５，Ｃ６として現れている。また、幅長Ｂ１，Ｂ２，Ｂ３，Ｂ４は、コード画像５１の幅に対応して長さが決まっている。
【００４４】
図３は、縦軸をバー／スペース（「０」のときがバー、「１」のときがスペース）とし、横軸を位置としたときの二値化回路２６の二値化信号Ｄ３の処理例を示す説明図である。二値化回路２６は、図２の（Ｂ）で検出した微分信号Ｄ２の変曲点Ａ１，Ａ２を立ち上がり又は立ち下がりポイントとした二値化信号Ｄ３を生成する。図３に示すように、この二値化信号Ｄ３から幅長Ｂ１〜Ｂ４が求められる。
【００４５】
図４は、縦軸をピークレベルとし、横軸を幅長としたときの、二値化回路２６が生成するピークレベル及び幅長をプロットした度数分布例を示す説明図である。図４に示すように、横軸の幅長は、正数をワイドスペースＷＳ及びナロースペースＮＳが存在するスペース領域とし、負数をワイドバーＷＢ及びナローバーＮＢが存在するバー領域としている。デコーダ２７は、図２の（Ａ）で示したピークレベルＣ１〜Ｃ４と、図３で求めた幅長Ｂ１〜Ｂ４とを集計して、該集計結果からピークレベルＣ１〜Ｃ４及び幅長Ｂ１〜Ｂ４に関する、一点鎖線で示した正常値範囲Ｅ１〜Ｅ４を設定する。
【００４６】
正常値範囲Ｅ１は、ワイドスペースＷＳに関する領域であり、幅長Ｂ１及びピークレベルＣ１を集計して、例えば該集計結果が正規分布に従って分布すると仮定することで、設定されるものである。正常値範囲Ｅ２は、ナロースペースＮＳに関する領域であり、幅長Ｂ２及びピークレベルＣ２を集計して、例えば該集計結果が正規分布に従って分布すると仮定することで、設定されるものである。正常値範囲Ｅ３は、ワイドバーＷＢに関する領域であり、幅長Ｂ３及びピークレベルＣ３を集計して、例えば該集計結果が正規分布に従って分布すると仮定することで、設定されるものである。正常値範囲Ｅ４は、ナローバーＮＢに関する領域であり、幅長Ｂ４及びピークレベルＣ４を集計して、例えば該集計結果が正規分布に従って分布すると仮定することで、設定されるものである。
【００４７】
デコーダ２７は、幅長又はピークレベルが正常値範囲Ｅ１〜Ｅ４の範囲外にある場合、当該幅長又はピークレベルをノイズとみなして削除する。つまり、図４では、ピークレベルＣ５，Ｃ６が正常値範囲Ｅ１〜Ｅ４の範囲外に存在するので、デコーダ２７は、ピークレベルＣ５，Ｃ６に対応するノイズＮ１を削除する（又は、ノイズＮ１をデコード処理しない）。
【００４８】
図５は、図４の度数分布例からノイズＮ１を削除して、閾値ThB1，ThS1を設定する処理例を示す説明図である。閾値ThB1とは、ワイドバーＷＢとナローバーＮＢとの境界値であり、閾値ThB1より幅長の値が小さければ当該プロットに対応するバーをワイドバーＷＢとみなし、閾値ThB1より幅長の値が大きければ当該プロットに対応するバーをナローバーＮＢとみなす。また、閾値ThS1とは、ワイドスペースＷＳとナロースペースＮＳとの境界値であり、閾値ThS1より幅長の値が小さければ当該プロットに対応するスペースをナロースペースＮＳとみなし、閾値ThS1より幅長の値が大きければ当該プロットに対応するスペースをワイドスペースＷＳとみなす。
【００４９】
図５に示すように、デコーダ２７は、正常値範囲Ｅ３と正常値範囲Ｅ４との間の幅長に対して閾値ThB1を設定する。また、デコーダ２７は、正常値範囲Ｅ１と正常値範囲Ｅ２との間の幅長に対して閾値ThS1を設定する。つまり、図５では、デコーダ２７は、幅長から閾値ThB1，ThS1を設定している。
【００５０】
なお、閾値ThB1，ThS1は、幅長Ｂ１〜Ｂ４間のそれぞれの差から設定するものであっても構わない（例えば、閾値ThS1は、（Ｂ１＋Ｂ２）／２から求められ、閾値ThB1は、（Ｂ３＋Ｂ４）／２から求められる）。
【００５１】
デコーダ２７は、図５で示した度数分布（又は、幅長Ｂ１〜Ｂ４間の差）に基づいて設定された閾値ThB1，ThS1を用いて読取信号Ｄ１をデコードする。
【００５２】
このように、本実施の形態に係るコードスキャナ１００では、読み取り対象物５０に汚れＮ等が付着したり印刷品質が劣化したりしても、読取信号Ｄ１をデコードするための閾値ThB1，ThS1が設定されるので、コード画像５１の読取信号Ｄ１を確実にデコードすることができる。
【００５３】
次に、読み取り対象物５０とコードスキャナが所定の距離（焦点距離）以上離れていて、デフォーカス状態になっているときの、コードスキャナの二値化処理例について説明する。ここで、デフォーカス状態とは、ピンボケ状態であって、コードスキャナの受光面がレンズの結像面から光軸方向にずれている状態をいう。
【００５４】
図６の（Ａ）は、縦軸を信号レベル（反射光強度）とし、横軸を位置としたときの、二値化回路２６の読取信号Ｄ４の処理例を示す説明図である。図６の（Ｂ）は、縦軸を信号レベルとし、横軸を位置としたときの、二値化回路２６の微分信号Ｄ５の処理例を示す説明図である。
【００５５】
本例では、図１２に示したコード画像５１がデフォーカス状態で読み取られて、撮像素子２２、ライン抽出部２３及び増幅器２４によって図１６に示した読取信号Ｄ４が生成され、この読取信号Ｄ４に基づいて、微分回路２５によって図１７に示した微分信号Ｄ５が生成されることを前提とする。つまり、図６の（Ａ）は、図１６の読取信号Ｄ４と同じであり、図６の（Ｂ）は、図１７の微分信号Ｄ５と同じである。
【００５６】
図６の（Ａ），（Ｂ）に示すように、二値化回路２６は、微分信号Ｄ５の極値に対応した読取信号Ｄ４の反射光の強度の変曲点Ｆ１，Ｆ２を検出する（つまり、微分信号Ｄ５の極値は、読取信号Ｄ４の変曲点と一致している。）。そして、二値化回路２６は、検出した変曲点Ｆ１，Ｆ２より変曲点間の幅長Ｇ１に対応する、反射光の強度の極値であるピークレベルＨ１を検出する。因みに、幅長Ｇ２，Ｇ３，Ｇ４は、ピークレベルＨ２，Ｈ３，Ｈ４にそれぞれ対応している。また、ピークレベルＨ１，Ｈ２，Ｈ３，Ｈ４は、図１１で示したワイドスペースＷＳ、ナロースペースＮＳ、ワイドバーＷＢ及びナローバーＮＢにそれぞれ対応している。
【００５７】
図６の（Ａ）では、コード画像５１をデフォーカス状態で読み取ったために、図１２で示した汚れＮに起因した、図２の（Ａ）で示したピークレベルＣ５，Ｃ６が現れない。しかしながら、幅長Ｇ１，Ｇ２，Ｇ３，Ｇ４は、コード画像５１をデフォーカス状態で読み取ったために、それぞれ略同じ長さになっている。
【００５８】
図７は、縦軸をバー／スペース（「０」のときがバー、「１」のときがスペース）とし、横軸を位置としたときの二値化回路２６の二値化信号Ｄ６の処理例を示す説明図である。二値化回路２６は、図６の（Ｂ）で検出した微分信号Ｄ５の変曲点Ｆ１，Ｆ２を立ち上がり又は立ち下がりポイントとした二値化信号Ｄ６を生成する。図７に示すように、この二値化信号Ｄ６から幅長Ｇ１〜Ｇ４が求められる。
【００５９】
図８は、縦軸をピークレベルとし、横軸を幅長としたときの、二値化回路２６が生成するピークレベル及び幅長をプロットした度数分布例を示す説明図である。図８に示すように、横軸の幅長は、正数をワイドスペースＷＳ及びナロースペースＮＳが存在するスペース領域とし、負数をワイドバーＷＢ及びナローバーＮＢが存在するバー領域としている。デコーダ２７は、図６の（Ａ）で示したピークレベルＨ１〜Ｈ４と、図７で求めた幅長Ｇ１〜Ｇ４とを集計して、該集計結果からピークレベルＨ１〜Ｈ４及び幅長Ｇ１〜Ｇ４に関する、一点鎖線で示した正常値範囲Ｉ１〜Ｉ４を設定する。
【００６０】
正常値範囲Ｉ１は、ワイドスペースＷＳに関する領域であり、幅長Ｇ１及びピークレベルＨ１を集計して、例えば該集計結果が正規分布に従って分布すると仮定することで、設定されるものである。正常値範囲Ｉ２は、ナロースペースＮＳに関する領域であり、幅長Ｇ２及びピークレベルＨ２を集計して、例えば該集計結果が正規分布に従って分布すると仮定することで、設定されるものである。正常値範囲Ｉ３は、ワイドバーＷＢに関する領域であり、幅長Ｇ３及びピークレベルＨ３を集計して、例えば該集計結果が正規分布に従って分布すると仮定することで、設定されるものである。正常値範囲Ｉ４は、ナローバーＮＢに関する領域であり、幅長Ｇ４及びピークレベルＨ４を集計して、例えば該集計結果が正規分布に従って分布すると仮定することで、設定されるものである。
【００６１】
デコーダ２７は、幅長又はピークレベルが正常値範囲Ｉ１〜Ｉ４の範囲外にある場合、当該幅長又はピークレベルをノイズとみなして削除する。ただし、本例では、コード画像５１から汚れＮに起因するノイズが読み取られていないので、この処理は行われていない。
【００６２】
図９は、図８の度数分布例から、閾値ThB2，ThS2を設定する処理例を示す説明図である。図９に示すように、ピークレベルの値とバー又はスペースの幅長とは、相関関係にある。つまり、ピークレベルの値が大きいと、バー又はスペースの幅長が大きく（ワイドバーＷＢ又はワイドスペースＷＳに対応する）、ピークレベルの値が小さいと、バー又はスペースの幅長が小さい（ナローバーＮＢ又はナロースペースＮＳに対応する）。
【００６３】
閾値ThB2とは、ワイドバーＷＢとナローバーＮＢとの境界値であり、閾値ThB2よりピークレベルの値が小さければ当該プロットに対応するバーをナローバーＮＢとみなし、閾値ThB2よりピークレベルの値が大きければ当該プロットに対応するバーをワイドバーＷＢとみなす。また、閾値ThS2とは、ワイドスペースＷＳとナロースペースＮＳとの境界値であり、閾値ThS2よりピークレベルの値が小さければ当該プロットに対応するスペースをナロースペースＮＳとみなし、閾値ThS2よりピークレベルの値が大きければ当該プロットに対応するスペースをワイドスペースＷＳとみなす。
【００６４】
デコーダ２７は、図９に示す正常値範囲Ｉ１と正常値範囲Ｉ２との間のピークレベルに対して閾値ThS2を設定する。また、二値化回路２６は、正常値範囲Ｉ３と正常値範囲Ｉ４との間のピークレベルに対して閾値ThB2を設定する。つまり、図９では、デコーダ２７は、図５で示したように幅長からではなく、ピークレベルから閾値ThB2，ThS2を設定している。この理由は、図５のように幅長から閾値を設定しようとすると、正常値範囲Ｉ１，Ｉ２又は正常値範囲Ｉ３，Ｉ４が幅長に対して重なっている（図７に示したように、幅長が全て略同じ長さになっている）ので、閾値を設定することができないことによる。
【００６５】
なお、閾値ThB2，ThS2は、ピークレベルＨ１〜Ｈ４間のそれぞれの差から設定するものであっても構わない（例えば、閾値ThS2は、（Ｈ１＋Ｈ２）／２から求められ、閾値ThB2は、（Ｈ３＋Ｈ４）／２から求められる）。
【００６６】
デコーダ２７は、図９で示した度数分布（又は、ピークレベルＨ１〜Ｈ４間の差）に基づいて設定された閾値ThB2，ThS2を用いて読取信号Ｄ４をデコードする。
【００６７】
このように、本発明に係るコードスキャナでは、コード画像５１をデフォーカス状態で読み取られて生成された読取信号Ｄ４であっても、読取信号Ｄ４をデコードするための閾値ThB2，ThS2が設定されるので、複雑なアルゴリズムや高速なＣＰＵを用いなくても、デコードすることができる。
【００６８】
［コードスキャナ１００の動作例］  
次に、コードスキャナ１００の動作例についてフローチャートを用いて説明する。図１０に示すように、ステップＳＴ１では、読み取り対象物５０に形成されたコード画像５１に反射した光をコードスキャナ１００が受光する。コードスキャナ１００は、結像レンズ２１によって反射光を集光して、撮像素子２２に結像させることにより、コード画像５１を当該コードスキャナ１００内に取り込む。コードスキャナ１００内に取り込まれたコード画像５１は、撮像素子２２によって光電変換されて読取信号Ｄ１，Ｄ４が生成される。読取信号Ｄ１，Ｄ４は、ライン抽出部２３で１ライン毎に抽出されてから、増幅器２４によって当該読取信号Ｄ１，Ｄ４の信号レベルが所定の大きさに増幅される（図１３及び図１６参照）。
【００６９】
ステップＳＴ２に移行して、微分回路２５は、読取信号Ｄ１，Ｄ４を微分して微分信号Ｄ２，Ｄ５を生成する（図１４及び図１７参照）。
【００７０】
ステップＳＴ３に移行して、二値化回路２６は、微分信号Ｄ２，Ｄ５の極値を読取信号Ｄ１の信号レベルの変曲点Ａ１，Ａ２，Ｆ１，Ｆ２として検出する（図２及び図６参照）。そして、二値化回路２６は、検出した変曲点Ａ１，Ａ２，Ｆ１，Ｆ２に基づいて、増幅器２４から出力された読取信号Ｄ１，Ｄ４を二値化して二値化信号Ｄ３，Ｄ６を生成する（図３及び図７参照）。
【００７１】
ステップＳＴ４に移行して、二値化回路２６は、生成した二値化信号Ｄ３，Ｄ６から変曲点間の幅長Ｂ１〜Ｂ４，Ｇ１〜Ｇ４と、この幅長Ｂ１〜Ｂ４，Ｇ１〜Ｇ４に対応するピークレベルＣ１〜Ｃ４，Ｈ１〜Ｈ４とを検出する（図２及び図６参照）。そして、二値化回路２６は、検出したピークレベルＣ１〜Ｃ４，Ｈ１〜Ｈ４の値と当該ピークレベルの位置とを含む情報であるピークレベル情報Ｄ７を生成する。
【００７２】
ステップＳＴ５に移行して、デコーダ２７は、二値化回路２６で生成された二値化信号Ｄ３，Ｄ６及びピークレベル情報Ｄ７から幅長Ｂ１〜Ｂ４，Ｇ１〜Ｇ４及びピークレベルＣ１〜Ｃ４，Ｈ１〜Ｈ４の値を抽出する。そして、デコーダ２７は、抽出した幅長Ｂ１〜Ｂ４，Ｇ１〜Ｇ４及びピークレベルＣ１〜Ｃ４，Ｈ１〜Ｈ４を集計して、該集計結果から幅長Ｂ１〜Ｂ４，Ｇ１〜Ｇ４及びピークレベルＣ１〜Ｃ４，Ｈ１〜Ｈ４に関する正常値範囲Ｅ１〜Ｅ４，Ｉ１〜Ｉ４を設定する（図４及び図７参照）。
【００７３】
ステップＳＴ６に移行して、デコーダ２７は、設定した正常値範囲Ｅ１〜Ｅ４，Ｉ１〜Ｉ４内に幅長Ｂ１〜Ｂ４，Ｇ１〜Ｇ４及びピークレベルＣ１〜Ｃ４，Ｈ１〜Ｈ４が存在するか否かを判断する。正常値範囲Ｅ１〜Ｅ４，Ｉ１〜Ｉ４内に幅長Ｂ１〜Ｂ４，Ｇ１〜Ｇ４及びピークレベルＣ１〜Ｃ４，Ｈ１〜Ｈ４が存在する場合には、ステップＳＴ８に移行し、存在しない場合には、ステップＳＴ７に移行する。
【００７４】
ステップＳＴ７では、デコーダ２７は、正常値範囲Ｅ１〜Ｅ４，Ｉ１〜Ｉ４の範囲外にある幅長又はピークレベルをノイズとみなして削除する。例えば、図３で示したピークレベルＣ５，Ｃ６がノイズＮ１となる。
【００７５】
ステップＳＴ８では、デコーダ２７は、ピークレベルＣ１〜Ｃ４，Ｈ１〜Ｈ４間の差が予め記憶された所定の値より小さいか否かを判断する。ピークレベルＣ１〜Ｃ４，Ｈ１〜Ｈ４間の差が所定の値より小さい場合には、ステップＳＴ９に移行し、ピークレベルＣ１〜Ｃ４，Ｈ１〜Ｈ４間の差が所定の値以上である場合には、ステップＳＴ１０に移行する。
【００７６】
例えば、図４のピークレベルＣ１〜Ｃ４に着目すると、ピークレベルＣ１とピークレベルＣ２との差は小さく、ピークレベルＣ３とピークレベルＣ４との差も小さい。この場合には、ステップＳＴ９に移行する。また、図８のピークレベルＨ１〜Ｈ４に着目すると、ピークレベルＨ１とピークレベルＨ２との差は大きく、ピークレベルＨ３とピークレベルＨ４との差も大きい。この場合には、ステップＳＴ１０に移行する。
【００７７】
ステップＳＴ９では、デコーダ２７は、幅長Ｂ１〜Ｂ４，Ｇ１〜Ｇ４に基づいて閾値を設定する。例えば、図５では、デコーダ２７は、幅長Ｂ１を含む正常値範囲Ｅ１と幅長Ｂ２を含む正常値範囲Ｅ２との間で閾値ThS1を設定し、また、幅長Ｂ３を含む正常値範囲Ｅ３と幅長Ｂ４を含む正常値範囲Ｅ４との間で閾値ThB1を設定する。閾値ThB1，ThS1が設定されたら、ステップＳＴ１１に移行する。
【００７８】
ステップＳＴ１０では、デコーダ２７は、ピークレベルＣ１〜Ｃ４，Ｈ１〜Ｈ４に基づいて閾値を設定する。例えば、図９では、二値化回路２６は、ピークレベルＨ１を含む正常値範囲Ｉ１とピークレベルＨ２を含む正常値範囲Ｉ２との間で閾値ThS2を設定し、また、ピークレベルＨ３を含む正常値範囲Ｉ３とピークレベルＨ４を含む正常値範囲Ｉ４との間で閾値ThB2を設定する。閾値ThB2，ThS2が設定されたら、ステップＳＴ１１に移行する。
【００７９】
ステップＳＴ１１では、デコーダ２７は、設定した閾値ThB1，ThS1，ThB2，ThS2と、正常値範囲の範囲内にある幅長及びピークレベルのプロットと、ピークレベル情報Ｄ７が有するピークレベルの位置とに基づいて、コード画像５１の情報（読取信号Ｄ１，Ｄ４）をデコードする。
【００８０】
このように、第１の実施の形態に係るコードスキャナ１００によれば、コード画像５１から反射した光を光電変換して、反射光の強度を示す読取信号Ｄ１，Ｄ４を生成し、該生成した読取信号Ｄ１，Ｄ４を微分して微分信号Ｄ２，Ｄ５を生成する。これを前提にして、生成した微分信号Ｄ２，Ｄ５から読取信号Ｄ１，Ｄ４の反射光の強度の変曲点Ａ１，Ａ２，Ｆ１，Ｆ２を検出し、該検出した変曲点間の幅長Ｂ１〜Ｂ４，Ｇ１〜Ｇ４に対応する、反射光の強度の極値であるピークレベルＣ１〜Ｃ４，Ｈ１〜Ｈ４を検出する。そして、検出したピークレベルＣ１〜Ｃ４，Ｈ１〜Ｈ４間の差を求めて、該求めたピークレベルＣ１〜Ｃ４，Ｈ１〜Ｈ４間の差から読取信号Ｄ１，Ｄ４をデコードするための閾値ThB1，ThS1，ThB2，ThS2を設定する。
【００８１】
これにより、汚れＮが付着したり印刷品質の劣化したコード画像５１の読取信号Ｄ１，Ｄ４や、デフォーカス状態で読み取られた読取信号Ｄ１，Ｄ４であっても、当該読取信号Ｄ１，Ｄ４をデコードするための閾値ThB1，ThS1，ThB2，ThS2が設定されるので、複雑なアルゴリズムや高速なＣＰＵを使用せずに、デコードすることができる。この結果、読み取り性能が向上したデコード方法及びコードスキャナ（デコード処理装置）を提供することができる。
【００８２】
なお、本実施の形態では、コード画像５１の一例としてバーコードで説明したが、これに限定されず、二次元コードであっても本発明のデコード方法が適用可能である。この場合、図１に示したコードスキャナ１００で二次元コード画像を１フレーム撮像し、該撮像した二次元コード画像を水平方向及び垂直方向にライン毎に走査して、図１０に示した処理を行う。そして、ライン毎に二値化したデータを再び１フレームの画像に合算することにより、デコード可能となる。
【００８３】
また、本実施の形態で説明したデコード方法は、コードスキャナだけではなく、光ディスク再生装置のようなデータをデコードする装置にも適用可能である。
【００８４】
また、四値コードであっても本発明が可能である。この場合、一値に対してはデフォーカスの度合いが大きいためピークレベルから閾値を設定し、二値、三値及び四値に対してはデフォーカスの度合いが小さいため幅長から閾値を設定する。
【００８５】
＜第２の実施の形態＞  
本実施の形態では、光照射部１０を備えたコードスキャナ１００Ａについて説明する。前述の第１の実施の形態と同じ名称及び符号のものは同じ機能を有するので、その説明を省略する。
【００８６】
［コードスキャナ１００Ａの構成例］  
図１１に示すように、コードスキャナ１００Ａは、光照射部１０及び信号処理部２０で構成される。光照射部１０は、レーザ光源１１、集光レンズ１３、開口絞り１４及びスキャニングミラー１５を備える。
【００８７】
光照射部１０は、半導体レーザ等によるレーザ光源１１の発光点１２から出力されるレーザ光線を集光レンズ１３で集光させた後、開口絞り１４でその径を絞り、スキャニングミラー１５により読み取り対象物５０に向かって偏向させて、読み取り対象物５０に形成されたコード画像５１に対して照射する。
【００８８】
そして、光照射部１０は、コード画像５１上をレーザ光線のビームスポットにより走査する。スキャニングミラー１５は、図１１では平面鏡として示しているが、正多角形柱上で側面が鏡面となっているポリゴンミラーを用いても良い。
【００８９】
信号処理部２０は、結像レンズ２１、撮像素子２２、ライン抽出部２３、増幅器２４、微分回路２５、二値化回路２６及びデコーダ２７を備える。信号処理部２０は、読み取り対象物５０に形成されたコード画像５１から反射されてきた走査レーザ光線を結像レンズ２１に入射させて集光し、ＣＣＤやＣＭＯＳ等による撮像素子２２上に結像させる。ライン抽出部２３、増幅器２４、微分回路２５、二値化回路２６及びデコーダ２７は、前述の第１の実施の形態と同じものであるので、その説明を省略する。
【００９０】
このように、第２の実施の形態に係るコードスキャナ１００Ａによれば、読み取り対象物５０に向かってレーザ光線を照射する光照射部１０を備え、汚れＮが付着したり印刷品質の劣化したコード画像５１の読取信号Ｄ１，Ｄ４や、デフォーカス状態で読み取られた読取信号Ｄ１，Ｄ４であっても、デコードすることができる。
【００９１】
本発明は、従来のアルゴリズム処理を使用しつつ、閾値設定を幅長からピークレベルに変更するという当業者であっても容易に想到不可能な斬新な方法によって、読み取り対象物に汚れ等が付着したり印刷品質が劣化したりしても、また、デフォーカス状態で読み取られた読取信号であっても、複雑なアルゴリズムや高速なＣＰＵを使用せずにデコード可能になるという優れたものである。
【符号の説明】
【００９２】
１０・・・光照射部、１１・・・レーザ光源、１２・・・発光点、１３・・・集光レンズ、１４・・・開口絞り、１５・・・スキャンニングミラー、２０・・・信号処理部、２１・・・結像レンズ、２２・・・撮像素子（読取信号生成部）、２３・・・ライン抽出部、２４・・・増幅器、２５・・・微分回路（微分信号生成部）、２６・・・二値化回路（二値化部）、２７・・・デコーダ（デコード部）、５０・・・読み取り対象物、５１・・・コード画像、Ａ１，Ａ２，Ｆ１，Ｆ２・・・変曲点、Ｂ１〜Ｂ４，Ｇ１〜Ｇ４・・・幅長、Ｃ１〜Ｃ４，Ｈ１〜Ｈ４・・・ピークレベル、Ｄ１，Ｄ４・・・読取信号、Ｄ２，Ｄ５・・・微分信号、Ｄ３，Ｄ６・・・二値化信号、Ｅ１〜Ｅ４，Ｉ１〜Ｉ４・・・正常値範囲、Ｎ・・・汚れ、ＮＢ・・・ナローバー、ＮＳ・・・ナロースペース、ＷＢ・・・ワイドバー、ＷＳ・・・ワイドスペース
【図１】
0005398653.tif 000002
【図２】
0005398653.tif 000003
【図３】
0005398653.tif 000004
【図４】
0005398653.tif 000005
【図５】
0005398653.tif 000006
【図６】
0005398653.tif 000007
【図７】
0005398653.tif 000008
【図８】
0005398653.tif 000009
【図９】
0005398653.tif 000010
【図１０】
0005398653.tif 000011
【図１１】
0005398653.tif 000012
【図１２】
0005398653.tif 000013
【図１３】
0005398653.tif 000014
【図１４】
0005398653.tif 000015
【図１５】
0005398653.tif 000016
【図１６】
0005398653.tif 000017
【図１７】
0005398653.tif 000018
【図１８】
0005398653.tif 000019