(57)【特許請求の範囲】
【請求項１】
画像内を走査して、黒画像領域及び白画像領域によって情報を表現する情報画像内の黒画像領域又は白画像領域の幅の相互間の比率と第１の判断基準に基づいて、該情報画像の始端部分を検出する第１の検出手段と、
前記第１の検出手段によって検出された始端部分を有する情報画像内の黒画像領域又は白画像領域の幅の相互間の比率と前記第１の判断基準とは異なる第２の判断基準に基づいて、該情報画像の始端部分以外の部分を検出する第２の検出手段と、
前記第１の検出手段と前記第２の検出手段により検出された領域を情報画像として解析して情報を抽出する情報抽出手段
を具備し、
前記画像内には、複数種類の情報画像があり、該情報画像は走査方向に対して傾いている
ことを特徴とする画像処理装置。
【請求項２】
前記第２の検出手段によって検出された始端部分以外の部分を有する情報画像内の黒画像領域又は白画像領域の本数を検出する第３の検出手段と、
前記第３の検出手段によって検出された本数に応じて、前記第２の検出手段によって検出された始端部分以外の部分を有する情報画像内の黒画像領域又は白画像領域の幅の相互間の比率と前記第１の判断基準及び前記第２の判断基準とは異なる第３の判断基準に基づいて、前記情報画像の終端部分を検出する第４の検出手段
を具備することを特徴とする請求項１に記載の画像処理装置。
【請求項３】
ある走査において前記第１の検出手段が情報画像の始端部分を検出した場合は、該検出における走査にあっては、前記第２の検出手段及び前記第３の検出手段による検出を行わない
ことを特徴とする請求項２に記載の画像処理装置。
【請求項４】
あるラインの走査において前記第１の検出手段が情報画像の始端部分を検出した場合は、該ラインにおいて始端部分を検出した後の走査にあっては、前記第１の検出手段による検出を行わず、前記第２の検出手段及び前記第３の検出手段による検出を行う
ことを特徴とする請求項３に記載の画像処理装置。
【請求項５】
前記第４の検出手段によって終端部分を検出した場合は、前記情報画像を解読する解読手段
を具備することを特徴とする請求項２に記載の画像処理装置。
【請求項６】
コンピュータを、
画像内を走査して、黒画像領域及び白画像領域によって情報を表現する情報画像内の黒画像領域又は白画像領域の幅の相互間の比率と第１の判断基準に基づいて、該情報画像の始端部分を検出する第１の検出手段と、
前記第１の検出手段によって検出された始端部分を有する情報画像内の黒画像領域又は白画像領域の幅の相互間の比率と前記第１の判断基準とは異なる第２の判断基準に基づいて、該情報画像の始端部分以外の部分を検出する第２の検出手段と、
前記第１の検出手段と前記第２の検出手段により検出された領域を情報画像として解析して情報を抽出する情報抽出手段
として機能させ、
前記画像内には、複数種類の情報画像があり、該情報画像は走査方向に対して傾いている
ことを特徴とする画像処理プログラム。
【請求項７】
前記コンピュータを、
前記第２の検出手段によって検出された始端部分以外の部分を有する情報画像内の黒画像領域又は白画像領域の本数を検出する第３の検出手段と、
前記第３の検出手段によって検出された本数に応じて、前記第２の検出手段によって検出された始端部分以外の部分を有する情報画像内の黒画像領域又は白画像領域の幅の相互間の比率と前記第１の判断基準及び前記第２の判断基準とは異なる第３の判断基準に基づいて、前記情報画像の終端部分を検出する第４の検出手段
としてさらに機能させることを特徴とする請求項６に記載の画像処理プログラム。
【請求項８】
ある走査において前記第１の検出手段が情報画像の始端部分を検出した場合は、該検出における走査にあっては、前記第２の検出手段及び前記第３の検出手段による検出を行わない
ことを特徴とする請求項７に記載の画像処理プログラム。
【請求項９】
あるラインの走査において前記第１の検出手段が情報画像の始端部分を検出した場合は、該ラインにおいて始端部分を検出した後の走査にあっては、前記第１の検出手段による検出を行わず、前記第２の検出手段及び前記第３の検出手段による検出を行う
ことを特徴とする請求項８に記載の画像処理プログラム。
【請求項１０】
前記コンピュータを、
前記第４の検出手段によって終端部分を検出した場合は、前記情報画像を解読する解読手段
として機能させることを特徴とする請求項７に記載の画像処理プログラム。
【請求項１１】
画像内の走査対象とするラインを設定する対象ライン設定手段
を具備し、
前記第１の検出手段は、前記対象ライン設定手段によって設定されたラインを走査対象とし、
前記第４の検出手段が終端部分を検出した後に、前記第１の検出手段によって検出された始端部分から前記第４の検出手段によって検出された終端部分までの間における画像領域又は白画像領域の分布に関する情報を検出する分布情報検出手段と、
前記分布情報検出手段によって検出された分布に関する情報に基づいて、既に走査対象としたラインにおける情報画像に今回の走査対象としたラインにおける情報画像を付加して、情報画像を生成する情報画像付加生成手段
をさらに具備することを特徴とする請求項２に記載の画像処理装置。
【請求項１２】
前記分布情報検出手段によって検出された分布に関する情報と既に走査対象としたラインにおける情報画像の分布に関する情報とを比較する比較手段
を具備し、
前記情報画像付加生成手段は、前記比較手段による比較結果に基づいて、情報画像を生成する
ことを特徴とする請求項１１に記載の画像処理装置。
【請求項１３】
前記コンピュータを、
画像内の走査対象とするラインを設定する対象ライン設定手段
として機能させ、
前記第１の検出手段は、前記対象ライン設定手段によって設定されたラインを走査対象とし、
前記第４の検出手段が終端部分を検出した後に、前記第１の検出手段によって検出された始端部分から前記第４の検出手段によって検出された終端部分までの間における画像領域又は白画像領域の分布に関する情報を検出する分布情報検出手段と、
前記分布情報検出手段によって検出された分布に関する情報に基づいて、既に走査対象としたラインにおける情報画像に今回の走査対象としたラインにおける情報画像を付加して、情報画像を生成する情報画像付加生成手段
としてさらに機能させることを特徴とする請求項７に記載の画像処理プログラム。
【請求項１４】
前記コンピュータを、
前記分布情報検出手段によって検出された分布に関する情報と既に走査対象としたラインにおける情報画像の分布に関する情報とを比較する比較手段
としてさらに機能させ、
前記情報画像付加生成手段は、前記比較手段による比較結果に基づいて、情報画像を生成する
ことを特徴とする請求項１３に記載の画像処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理装置及び画像処理プログラムに関する。
【背景技術】
【０００２】
情報画像の１つであるバーコードを用いた情報処理技術が種々開発されている。特に、画像内にあるバーコード画像を抽出する技術がある。
なお、ここで、バーコードとは、異なる幅や間隔をもつ平行な縦線の組み合わせによって情報を表現するコードであって、横断走査によって光学的に読み取るものをいう。また、バーコードの種類として、例えば、ＪＡＮコード、ＮＷ−７、ＩＴＦ、ＣＯＤＥ３９、ＣＯＤＥ１２８、郵便カスタマーコード、ＥＡＮ１２８等がある。
【０００３】
これに関連する技術として、例えば、特許文献１には、長方形バーコード領域を含む原画像の走査分解データを２値データに変換する２値化手段と、その２値データを記憶する記憶手段と、前記２値データの輪郭データを走査する走査窓内データの論理和で前記輪郭データを所定サイズ分拡大しバーコードの輪郭データ間を塗り潰す輪郭信号膨張手段と、その膨張データの間引き入力による前記膨張データの所定サイズ分の縮小データを走査する走査窓内データの論理積で前記縮小データを所定サイズ分縮小することによりバーコード領域の一部を残し背景画像領域を消去する縮小・収縮手段と、その縮小・収縮したデータから前記長方形バーコードの傾きと中心を演算する傾き・中心演算手段と、その傾き方向にしたがって前記記憶手段からデータを読み出すためのアドレスを演算するアドレス演算手段と、その読みだしデータからバーコードを復号するバーコード復号手段とを具備する画像信号処理装置によって、バーコードラベルが入力原稿の任意の位置・方向に貼られていても復号を可能とすることが開示されている。
【０００４】
また、例えば、特許文献２には、フレームメモリ内のバーコードが、どのような種類であっても同一のアルゴリズムを用いて検出ができ、バーコードの種類が予め判っていなくても検出ができるようにすることを目的とし、２値変換部は、フレームメモリに記憶された画像データを８×８画素のブロックに分割し、２値データに変換し、離散的コサイン変換（ＤＣＴ）部は、この８×８画素のブロックにＤＣＴを施し、係数メモリは、その変換結果（ＤＣＴ変換係数）を記憶し、この２値化、ＤＣＴがフレームメモリの全てのブロックについて行われ、バーコード検出部は、係数メモリに記憶された各ブロックのＤＣＴ変換係数からバーコード領域を検出することが開示されている。
【０００５】
また、例えば、特許文献３には、バーコード抽出装置に関し、入力した画像データから、バーコード矩形領域を自動的に抽出できるようにすることを目的とし、画像メモリと、画像メモリの画像データの全領域を順次走査して抽出ウインドゥ内に黒／白パターンが交互に出現する領域を仮バーコード領域として抽出する黒／白パターン抽出部と、仮バーコード領域にレフトガードバー、センターバー、ライトガードバーが存在するか否かを判定し、真のバーコード領域を抽出するバーコード判定部と、真のバーコード領域の矩形範囲を探索してバーコードを囲む矩形領域の位置を決定しバーコード矩形領域として抽出するバーコード矩形範囲探索部と、抽出したバーコード矩形領域を既抽出済みのバーコード矩形領域と比較し、両者がオーバーラップしていない場合にのみ、バーコード矩形領域を登録するバーコード領域比較部を備えていることが開示されている。
【０００６】
また、例えば、特許文献４には、バーコードの位置、大きさ及び傾きが不特定であってもバーコードを特定してバーコードの位置及び傾きを検出することを課題とし、入力画像から抽出した物品領域の画像を所定の閾値によって２値データに変換し画像メモリに記憶し、そして、２値データに対して拡大と縮退操作を行って黒画素の連結領域を作成し、所定個数以上の黒画素で構成される連結領域を抽出して各連結領域に対する形状の特徴量を求め、また、連結領域と２値データとについて論理積を求め、所定個数以上の黒画素が連続する図形を抽出し、この図形に対して傾きの方向を求め、各傾きの図形の個数を連結領域毎に集計し、連結領域の形状の特徴量と図形の傾き別個数を連結領域毎に比較し、形状が矩形で同一の傾きの図形の個数が多い連結領域をバーコード領域として検出することが開示されている。
【特許文献１】特開平０２−１２５３８１号公報
【特許文献２】特開平０６−２６６８７９号公報
【特許文献３】特開平０９−０１６７０１号公報
【特許文献４】特開平０９−０６２７６３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
ところで、情報画像が記載されている画像の解像度又は情報画像の大きさが予め分からない場合、又はさまざまな種類の情報画像が混在する場合に、２値データに対して拡大と縮退操作を行って黒画素の連結領域を作成すると、それらの情報画像の誤抽出が起こってしまう。
本発明は、情報画像の解像度又は大きさが異なっている場合、又は複数種類の情報画像が混在している場合であっても、その情報画像の解読可能な領域を抽出する画像処理装置及び画像処理プログラムを提供することを目的としている。
【課題を解決するための手段】
【０００８】
かかる目的を達成するための本発明の要旨とするところは、次の各項の発明に存する。
本願請求項１記載の発明は、画像内を走査して、黒画像領域及び白画像領域によって情報を表現する情報画像内の黒画像領域又は白画像領域の幅の相互間の比率と第１の判断基準に基づいて、該情報画像の始端部分を検出する第１の検出手段と、前記第１の検出手段によって検出された始端部分を有する情報画像内の黒画像領域又は白画像領域の幅の相互間の比率と前記第１の判断基準とは異なる第２の判断基準に基づいて、該情報画像の始端部分以外の部分を検出する第２の検出手段と、前記第１の検出手段と前記第２の検出手段により検出された領域を情報画像として解析して情報を抽出する情報抽出手段を具備し、前記画像内には、複数種類の情報画像があり、該情報画像は走査方向に対して傾いていることを特徴とする画像処理装置である。
【０００９】
本願請求項２記載の発明は、前記第２の検出手段によって検出された始端部分以外の部分を有する情報画像内の黒画像領域又は白画像領域の本数を検出する第３の検出手段と、前記第３の検出手段によって検出された本数に応じて、前記第２の検出手段によって検出された始端部分以外の部分を有する情報画像内の黒画像領域又は白画像領域の幅の相互間の比率と前記第１の判断基準及び前記第２の判断基準とは異なる第３の判断基準に基づいて、前記情報画像の終端部分を検出する第４の検出手段を具備することを特徴とする請求項１に記載の画像処理装置である。
【００１０】
本願請求項３記載の発明は、ある走査において前記第１の検出手段が情報画像の始端部分を検出した場合は、該検出における走査にあっては、前記第２の検出手段及び前記第３の検出手段による検出を行わないことを特徴とする請求項２に記載の画像処理装置である。
【００１１】
本願請求項４記載の発明は、あるラインの走査において前記第１の検出手段が情報画像の始端部分を検出した場合は、該ラインにおいて始端部分を検出した後の走査にあっては、前記第１の検出手段による検出を行わず、前記第２の検出手段及び前記第３の検出手段による検出を行うことを特徴とする請求項３に記載の画像処理装置である。
【００１２】
本願請求項５記載の発明は、前記第４の検出手段によって終端部分を検出した場合は、前記情報画像を解読する解読手段を具備することを特徴とする請求項２に記載の画像処理装置である。
【００１３】
本願請求項６記載の発明は、コンピュータを、画像内を走査して、黒画像領域及び白画像領域によって情報を表現する情報画像内の黒画像領域又は白画像領域の幅の相互間の比率と第１の判断基準に基づいて、該情報画像の始端部分を検出する第１の検出手段と、前記第１の検出手段によって検出された始端部分を有する情報画像内の黒画像領域又は白画像領域の幅の相互間の比率と前記第１の判断基準とは異なる第２の判断基準に基づいて、該情報画像の始端部分以外の部分を検出する第２の検出手段と、前記第１の検出手段と前記第２の検出手段により検出された領域を情報画像として解析して情報を抽出する情報抽出手段として機能させ、前記画像内には、複数種類の情報画像があり、該情報画像は走査方向に対して傾いていることを特徴とする画像処理プログラムである。
【００１４】
本願請求項７記載の発明は、前記コンピュータを、前記第２の検出手段によって検出された始端部分以外の部分を有する情報画像内の黒画像領域又は白画像領域の本数を検出する第３の検出手段と、前記第３の検出手段によって検出された本数に応じて、前記第２の検出手段によって検出された始端部分以外の部分を有する情報画像内の黒画像領域又は白画像領域の幅の相互間の比率と前記第１の判断基準及び前記第２の判断基準とは異なる第３の判断基準に基づいて、前記情報画像の終端部分を検出する第４の検出手段としてさらに機能させることを特徴とする請求項６に記載の画像処理プログラムである。
【００１５】
本願請求項８記載の発明は、ある走査において前記第１の検出手段が情報画像の始端部分を検出した場合は、該検出における走査にあっては、前記第２の検出手段及び前記第３の検出手段による検出を行わないことを特徴とする請求項７に記載の画像処理プログラムである。
【００１６】
本願請求項９記載の発明は、あるラインの走査において前記第１の検出手段が情報画像の始端部分を検出した場合は、該ラインにおいて始端部分を検出した後の走査にあっては、前記第１の検出手段による検出を行わず、前記第２の検出手段及び前記第３の検出手段による検出を行うことを特徴とする請求項８に記載の画像処理プログラムである。
【００１７】
本願請求項１０記載の発明は、前記コンピュータを、前記第４の検出手段によって終端部分を検出した場合は、前記情報画像を解読する解読手段として機能させることを特徴とする請求項７に記載の画像処理プログラムである。
【００１８】
本願請求項１１記載の発明は、画像内の走査対象とするラインを設定する対象ライン設定手段を具備し、前記第１の検出手段は、前記対象ライン設定手段によって設定されたラインを走査対象とし、前記第４の検出手段が終端部分を検出した後に、前記第１の検出手段によって検出された始端部分から前記第４の検出手段によって検出された終端部分までの間における画像領域又は白画像領域の分布に関する情報を検出する分布情報検出手段と、前記分布情報検出手段によって検出された分布に関する情報に基づいて、既に走査対象としたラインにおける情報画像に今回の走査対象としたラインにおける情報画像を付加して、情報画像を生成する情報画像付加生成手段をさらに具備することを特徴とする請求項２に記載の画像処理装置である。
【００１９】
本願請求項１２記載の発明は、前記分布情報検出手段によって検出された分布に関する情報と既に走査対象としたラインにおける情報画像の分布に関する情報とを比較する比較手段を具備し、前記情報画像付加生成手段は、前記比較手段による比較結果に基づいて、情報画像を生成することを特徴とする請求項１１に記載の画像処理装置である。
【００２０】
本願請求項１３記載の発明は、前記コンピュータを、画像内の走査対象とするラインを設定する対象ライン設定手段として機能させ、前記第１の検出手段は、前記対象ライン設定手段によって設定されたラインを走査対象とし、前記第４の検出手段が終端部分を検出した後に、前記第１の検出手段によって検出された始端部分から前記第４の検出手段によって検出された終端部分までの間における画像領域又は白画像領域の分布に関する情報を検出する分布情報検出手段と、前記分布情報検出手段によって検出された分布に関する情報に基づいて、既に走査対象としたラインにおける情報画像に今回の走査対象としたラインにおける情報画像を付加して、情報画像を生成する情報画像付加生成手段としてさらに機能させることを特徴とする請求項７に記載の画像処理プログラムである。
【００２１】
本願請求項１４記載の発明は、前記コンピュータを、前記分布情報検出手段によって検出された分布に関する情報と既に走査対象としたラインにおける情報画像の分布に関する情報とを比較する比較手段としてさらに機能させ、前記情報画像付加生成手段は、前記比較手段による比較結果に基づいて、情報画像を生成することを特徴とする請求項１３に記載の画像処理プログラムである。
【発明の効果】
【００２２】
請求項１の画像処理装置によれば、情報画像の解読可能な領域を抽出することができる。
【００２３】
請求項２の画像処理装置によれば、情報画像以外の余分なものを含めて抽出してしまう誤りを低減させることができる。
【００２４】
請求項３の画像処理装置によれば、情報画像の抽出にかかる処理の負荷を軽減することができるようになる。
【００２５】
請求項４の画像処理装置によれば、情報画像の抽出にかかる処理の負荷を軽減することができるようになる。
【００２６】
請求項５の画像処理装置によれば、情報画像を解読することができるようになる。
【００２７】
請求項６の画像処理プログラムによれば、情報画像の解読可能な領域を抽出することができる。
【００２８】
請求項７の画像処理プログラムによれば、情報画像以外の余分なものを含めて抽出してしまう誤りを低減させることができる。
【００２９】
請求項８の画像処理プログラムによれば、情報画像の抽出にかかる処理の負荷を軽減することができるようになる。
【００３０】
請求項９の画像処理プログラムによれば、情報画像の抽出にかかる処理の負荷を軽減することができるようになる。
【００３１】
請求項１０の画像処理プログラムによれば、情報画像を解読することができるようになる。
【００３２】
請求項１１の画像処理装置によれば、情報画像の抽出の精度の劣化を防止して、情報画像の抽出にかかる処理の負荷を軽減することができる。
【００３３】
請求項１２の画像処理装置によれば、情報画像の抽出の精度の劣化をさらに防止することができる。
【００３４】
請求項１３の画像処理プログラムによれば、情報画像の抽出の精度の劣化を防止して、情報画像の抽出にかかる処理の負荷を軽減することができる。
【００３５】
請求項１４の画像処理プログラムによれば、情報画像の抽出の精度の劣化をさらに防止することができる。
【発明を実施するための最良の形態】
【００３６】
以下、図面に基づき本発明を実現するにあたっての好適な各種の実施の形態の例を説明する。
図１は、第１の実施の形態の構成例についての概念的なモジュール構成図を示している。
なお、モジュールとは、一般的に論理的に分離可能なソフトウェア（コンピュータ・プログラム）、ハードウェア等の部品を指す。したがって、本実施の形態におけるモジュールはコンピュータ・プログラムにおけるモジュールのことだけでなく、ハードウェア構成におけるモジュールも指す。それゆえ、本実施の形態は、コンピュータ・プログラム、システム及び方法の説明をも兼ねている。ただし、説明の都合上、「記憶する」、「記憶させる」、これらと同等の文言を用いるが、これらの文言は、実施の形態がコンピュータ・プログラムの場合は、記憶装置に記憶させるように制御するの意である。また、モジュールは機能にほぼ一対一に対応しているが、実装においては、１モジュールを１プログラムで構成してもよいし、複数モジュールを１プログラムで構成してもよく、逆に１モジュールを複数プログラムで構成してもよい。また、複数モジュールは１コンピュータによって実行されてもよいし、分散又は並列環境におけるコンピュータによって１モジュールが複数コンピュータで実行されてもよい。なお、１つのモジュールに他のモジュールが含まれていてもよい。また、以下、「接続」とは物理的な接続の他、論理的な接続（データの授受、指示、データ間の参照関係等）を含む。
また、システム又は装置とは、複数のコンピュータ、ハードウェア、装置等がネットワーク（一対一対応の通信接続を含む）等の通信手段で接続されて構成されるほか、１つのコンピュータ、ハードウェア、装置等によって実現される場合も含まれる。所定という用語は、予め定められたの意の他に、そのときの状況・状態に応じて、又はそれまでの状況・状態に応じての意を含めて用いる。
【００３７】
情報画像とは、黒画像領域及び白画像領域によって情報を表現するものであって、機械可読な態様で電子データを表すために体系的に作られたコードをいい、具体的には、１次元バーコード、スタック型２次元コード等である。
本実施の形態が処理対象とする情報画像の例を、図４に示す。１次元バーコードとして、（Ａ）ＣＯＤＥ３９、（Ｂ）ＮＷ７、（Ｃ）ＩＴＦ、（Ｄ）ＣＯＤＥ９３、（Ｅ）ＪＡＮ、（Ｆ）ＣＯＤＥ１２８があり、その他にも、ＥＡＮ１２８等がある。スタック型２次元コードとして、（Ｇ）ＣＯＤＥ４９、（Ｈ）ＣＯＤＥ１６Ｋ、（Ｉ）ＰＤＦ４１７等がある。なお、１次元バーコードとしては、現状存在する、あらゆるものを対象とする。２次元コードとしては、１次元バーコードを複数段積層したものを対象とする。したがって、ＱＲコードのような２次元コードは対象としない。なお、本実施の形態を説明するにあたって、対象とする情報画像として１次元バーコードを例示する。また、情報画像の構成として、黒画像領域であるバーと白画像領域（隙間）であるホワイトバーを有している。なお、ホワイトバーと対比する等の文脈に応じて、バーを黒バーと称する場合がある。
【００３８】
第１の実施の形態の情報画像検出モジュール３２は、画像内を走査することによって、その画像内にある情報画像を抽出するものであって、図１に示すように、始端部分検出モジュール１１、始端部分以外の部分検出モジュール１２、本数検出モジュール１３を有している。
始端部分検出モジュール１１は、始端部分以外の部分検出モジュール１２と接続されており、バーコード内のバー又はホワイトバーの幅の相互間の比率と第１の判断基準に基づいて、そのバーコードのスタートコードを検出する。相互間の比率とは、対象としているバー又はホワイトバーの幅とそのバー又はホワイトバーよりも前に検出しているバー又はホワイトバーの幅との間の比率をいう。特に、ここでの相互間の比率とは、最初に発見したバーの幅と次のホワイトバー（前記バーに隣接しているホワイトバー）の幅との間の比率をいう。
始端部分以外の部分検出モジュール１２は、始端部分検出モジュール１１、本数検出モジュール１３と接続されており、始端部分検出モジュール１１によって検出されたスタートコードを有するバーコード内のバー又はホワイトバーの幅の相互間の比率と前記第１の判断基準とは異なる第２の判断基準に基づいて、そのバーコードの始端部分以外の部分を検出する。なお、始端部分以外の部分とは、バーコードの画像内の解読可能な領域であって、始端部分に続く領域のことをいう。
本数検出モジュール１３は、始端部分以外の部分検出モジュール１２と接続されており、始端部分以外の部分検出モジュール１２によって検出された始端部分以外の部分を有するバーコード内のバー又はホワイトバーの本数を検出する。
また、ある走査において始端部分検出モジュール１１がバーコードのスタートコードを検出した場合は、その検出における走査にあっては、始端部分以外の部分検出モジュール１２及び本数検出モジュール１３による検出を行わず、また、あるラインの走査において始端部分検出モジュール１１がバーコードのスタートコードを検出した場合は、そのラインにおいて始端部分を検出した後の走査にあっては、始端部分検出モジュール１１による検出を行わず、始端部分以外の部分検出モジュール１２及び本数検出モジュール１３による検出を行うようにしてもよい。
【００３９】
また、第１の実施の形態を別の観点で捉えた場合の情報画像検出モジュール３２は、図２に示すように、第１の判断モジュール２１、第２の判断モジュール２２、第３の判断モジュール２３、第４の判断モジュール２４、候補領域追加モジュール２５、第５の判断モジュール２６を有している。
【００４０】
第１の判断モジュール２１は、第２の判断モジュール２２と接続されており、対象としているホワイトバーの幅が直前に検出されたバーの幅の２倍以下であり、かつ１／２以上であるか否かを判断する。つまり、ここでは、最初のバーの幅と次のホワイトバー（つまり最初のホワイトバー）の幅とを比較している。そして、この基準を満たす場合は、バーコードのスタートコードを検出したという可能性がある場合であり、この基準を満たさない場合は、最初のバーがバーコードの一部を形成していない場合である。この基準を満たしたバーとホワイトバーの連続領域について、次の第２の判断モジュール２２による処理を行う。
【００４１】
第２の判断モジュール２２は、第１の判断モジュール２１、第３の判断モジュール２３と接続されており、第１の判断モジュール２１による基準を満たしたものについて、対象としているバー又はホワイトバーの幅は、それまで走査したバー又はホワイトバーのうち最小のものの幅の４倍以下であり、かつ最大のものの幅の１／４以上であるか否かを判断する。この基準を満たしたバーとホワイトバーの連続領域について、次の第３の判断モジュール２３による処理を行う。
また、第２の判断モジュール２２による判断は、バー毎に又はホワイトバー毎に判断するようにしてもよい。つまり、第２の判断モジュール２２は、対象としているバーの幅が、それまで走査したバーのうち最小のものの幅の４倍以下であり、かつ最大のものの幅の１／４以上であるか否かを判断するようにしてもよい。又は、第２の判断モジュール２２は、対象としているホワイトバーの幅が、それまで走査したホワイトバーのうち最小のものの幅の４倍以下であり、かつ最大のものの幅の１／４以上であるか否かを判断するようにしてもよい。印刷によっては、一様にバーを太くするように印刷してしまうものがあるが、そのような印刷物に対応させる場合に適している。
【００４２】
第３の判断モジュール２３は、第２の判断モジュール２２、第４の判断モジュール２４と接続されており、第２の判断モジュール２２による基準を満たしたものについて、既に出現したバーの本数は、バーコードのバーの最小限本数に到達したか否かを判断する。バーコードとして成り立つ本数のバーが出現したバーとホワイトバーの連続領域について、次の第４の判断モジュール２４による処理を行う。
【００４３】
第４の判断モジュール２４は、第３の判断モジュール２３、候補領域追加モジュール２５と接続されており、第３の判断モジュール２３によって検出された本数に応じて、第２の判断モジュール２２によって検出されたバーコード内のバー又はホワイトバーの幅の比率と第１の判断モジュール２１の判断基準及び第２の判断モジュール２２の判断基準とは異なる判断基準に基づいて、バーコードのストップコードを検出する。つまり、具体的には、対象としているホワイトバーの幅は、それまで走査したホワイトバーのうち最大のものの幅の１．５倍以下であるか否かを判断する。これは、バーコードの終端部分であるか否かを判断するものである。
候補領域追加モジュール２５は、第４の判断モジュール２４、第５の判断モジュール２６と接続されており、対象としているバーを、バーコードの候補領域のバーとして追加する。
第５の判断モジュール２６は、候補領域追加モジュール２５と接続されており、バーコード領域の候補領域が複数ライン続いているか否かを判断する。
【００４４】
図３を用いて、第１の実施の形態の構成例についての全体的なモジュール構成を説明する。第１の実施の形態の全体は、画像入力モジュール３１、情報画像検出モジュール３２、バーコードデコードモジュール３３、デコード結果処理モジュール３４を有している。
画像入力モジュール３１は、情報画像検出モジュール３２と接続されており、バーコードを含む画像を入力する。入力した画像を情報画像検出モジュール３２へ渡す。その入力した画像に含まれるバーコードは、複数あってもよいし、複数種類のバーコードが含まれていてもよいし、また、そのバーコードは走査方向に対して傾きをもっていてもよい。
情報画像検出モジュール３２は、画像入力モジュール３１、バーコードデコードモジュール３３と接続されており、画像入力モジュール３１によって入力された画像から情報画像であるバーコードを検出する。その検出したバーコードの画像をバーコードデコードモジュール３３へ渡す。
バーコードデコードモジュール３３は、情報画像検出モジュール３２、デコード結果処理モジュール３４と接続されており、情報画像検出モジュール３２から受け取ったバーコードの画像を解析して情報を抽出する。つまり、バーコードを解読するデコーダーである。そして、抽出した情報をデコード結果処理モジュール３４へ渡す。
デコード結果処理モジュール３４は、バーコードデコードモジュール３３と接続されており、バーコードデコードモジュール３３から受け取った情報を処理する。例えば、画像内に記載されたバーコードによって表現されているその文書名を用いて、その画像の電子情報である電子文書を取り出す等の処理を行う。
【００４５】
図５を用いて第１の実施の形態の具体的な概要を述べる。
まず、１次元バーコードは、主に細いバーと太いバーの２種類の太さのバーからなるものと、４種類の太さのバーからなるものがある。よって、バーを検出する際、今まで走査したバーのうち最小のバーの４倍以上の太さ、又は最大のバーの１／４以下の太さのバーが出現した場合はバーコード領域が途切れたものと判断できる。
このとき、つまり、始端部分のバーを検出する時点で、許容比率を４倍又は１／４としてしまうと、バーコード領域ではない領域をバーコード領域として検出してしまう可能性がある。このような場合を図５を用いて説明する。
【００４６】
図５（Ａ）は、画像入力モジュール３１によって入力された画像内のバーコードの周辺を示したものである。バーコードは罫線５３によって囲まれている状態である。図５（Ｂ）は、図５（Ａ）に示すライン５１を走査する場合、最初に検出する箇所５２を拡大したものである。
この場合、最初の走査によって、本来のバーコードのバー（５４〜５８）よりも前にある罫線５３が検出されるが、この罫線５３とバーコードの始まりのバー５４までのスペースは罫線５３の太さの４倍以下なので、罫線５３もバーコード領域として検出されてしまう。
【００４７】
ここで、一般的なバーコードのスタートコード及びストップコードを図６に示す。なお、スタートコードとは、バーコードの始めを示す特定のコードをいう。ストップコードとは、バーコードの終わりを示す特定のコードをいう。また、それぞれ、スタートキャラクタ、ストップキャラクタとも言われる。例えば、ＪＡＮコードでは、レフトガードバー（バーコードの左端部分）、ライトガードバー（バーコードの右端部分）、センターバー（レフトガードバー以外であってライトガードバー以外の部分）という用語を用いており、ここでは、レフトガードバーをスタートコード、ライトガードバーをストップコードと称する。
これらのキャラクタ構成を検討すると、スタートコードにおいて、１本目のバーから２本目のバーまでの距離（すなわち、１本目のホワイトバー）の幅が、最初のバーの幅の４倍以上又は１／４以下となることはない。よって、１本目のバーから次のバーを検出する際は、比率の許容量を小さくする。ここでの比率は、１本目のホワイトバーの幅は、前のバーの２倍以下かつ１／２以上の太さ以内を許容することとする。なお、図６（Ｄ）ＵＰＣ／ＥＡＮ／ＪＡＮには、スタートコード、ストップコードの他に中間コードも示している。
【００４８】
また、１キャラクタが成り立つ本数のバーが出てくると、ほとんどのサイズのバーが一度は出現した可能性が高くなる。そのまま「今まで走査したバーのうち最小のバーの４倍以下の太さ、かつ最大のバーの１／４以上の太さ」を許容比率として検出を続けると、バーコードの最後のクワイエットゾーンが少ない場合などは、バーコードを超えてバーの検出を続けてしまう可能性がある。なお、クワイエットゾーン（Ｑｕｉｅｔ  Ｚｏｎｅ）とは、バーコードを読み取る際に必要なバーコードの前後の空白部分をいう。マージンともいわれる。一般的に、このクワイエットゾーンの中に他の図柄である罫線５３などがあるとバーコードとして認識できない。このような場合を図７を用いて説明する。
【００４９】
図７に例示するように、バーコード７１の最後の部分（検出領域７３）を検出する場合、隣の罫線７２の枠までの距離が「今まで走査したバーのうち最小のバーの４倍以下の太さ、かつ最大のバーの１／４以上の太さ」に入ってしまうため、罫線７２までバーコードとして検出されてしまう。よって、１キャラクタが成り立つ本数のバーが出現した後は、再び比率の許容量を小さくする。
図６の標準的なバーコードのスタートコード及びストップコードの例を検討すると、太さが２種類のコードではスタートコードが出現した時点で太さ１と太さ２のバーが両方必ず出現する。
しかし、太さが４種類のＣＯＤＥ１２８では、スタートコードが出現した時点で太さ３のバーまでしか出現せず、今後太さ４のバーが出現する可能性がある。つまり、比率としては、４／３（＝１．３３）であるが、誤差を考慮して１．５倍を採用する。
よって「今まで走査したバーのうち最大のバーの１．５倍より太い太さのスペース」が出現した場合はバーコード領域終了とする。
【００５０】
このようにバーの検出本数により許容比率を変え、それを超えるバーが現れた場合は検出終了とする。このような処理を行って、最後のクワイエットゾーンをクワイエットゾーンとして読み取り、バーコードのみを取り出す。
【００５１】
ここで、バーコードは１キャラクタを６〜９本のバーで構成しており、必ずスタートコードとストップコードを含むため、バーコードとして成り立つための最低バー数というものが存在する。
スタートコードとストップコードとを含む最低の１キャラクタとして、ＣＯＤＥ３９では２９本、ＮＷ７では２３本、ＣＯＤＥ１２８では１９本となる。
よって、検出されたバーの本数がバーコードとして成り立つ最低本数（この場合、ＣＯＤＥ１２８として１９本）を満たすかどうかの判断をして、満たす場合はバーコード候補領域として登録する。
【００５２】
以上のように１ラインを走査してバーコード候補領域の検出を行ったら、次のラインの走査に移る。次のラインで検出されたバーコード候補領域が、前のラインで検出された領域と重なっていたら、この２つの領域を結合する。重なっているか否かは、Ｘ座標（走査ライン方向の座標）が一致しているか否かによって判断する。つまり、一致している部分があれば、重なっていると判断する。
以上の走査を繰り返し、最終的に所定以上の連続したラインでバーコード候補領域として判断したならば、これを結合してバーコード領域とする。
【００５３】
図８に示すフローチャートを用いて、第１の実施の形態の情報画像検出モジュール３２における処理例の流れを説明する。
まずステップＳ２０１では、画像入力モジュール３１で入力され、二値化された画像を受け取り、その画像を１ラインずつ走査する。以後、バーを１本検出した後、次のバーの太さを判断し、バーコードとして成り立つかどうかを順に判断していく。
【００５４】
ステップＳ２０２では、バーの検出を開始する。
ステップＳ２０３では、バーコード領域として最初のバーの検出かどうかを判断する。最初のバーである場合（Ｙｅｓの場合）はステップＳ２０５へ進み、それ以外の場合（Ｎｏの場合）はステップＳ２０４へ進む。
ステップＳ２０５では、現在の黒バーの次のホワイトバーに進み、ホワイトバーの幅が前のバーの幅の２倍以下かつ１／２以上かを判断する。この処理は図２の例に示す第１の判断モジュール２１に相当するものである。この範囲から外れている場合（Ｎｏの場合）はバーコード領域ではないので、ステップＳ２１２に進む。この範囲内の場合（Ｙｅｓの場合）はステップＳ２０８へ進んで、この黒バーとホワイトバーをバーコード候補領域として追加し、ステップＳ２０９へ進む。つまり、バーコードのスタートコードを検出した場合は、ステップＳ２０４、ステップＳ２０６、ステップＳ２０７の処理を行わずに、同一ラインにおける次のバーの抽出を行うようにする（ステップＳ２０９）。その場合、そのラインにおいてスタートコードを検出した後の走査にあっては、ステップＳ２０５での処理を行わず、ステップＳ２０４、ステップＳ２０６での処理を行い、場合によってはステップＳ２０７での処理を行う。
【００５５】
ステップＳ２０３で、バーコード領域として最初のバーではないと判断した場合はステップＳ２０４へ進み、ステップＳ２０４では、対象としているバーの幅は、今まで走査したバーのうち最小のバーの幅の４倍以下の太さ、かつ最大のバーの幅の１／４以上かを判断する。この処理は図２の例に示す第２の判断モジュール２２に相当するものである。Ｎｏであった場合はバーコード領域の終了なので、ステップＳ２１０へ進む。Ｙｅｓであった場合はステップＳ２０６へ進む。なお、ステップＳ２０４での判断は、ホワイトバーの幅を用いて行うようにしてもよい。
ステップＳ２０６では、既に検出した領域にバーコードとして成り立つ本数のバーが含まれているかどうかを判断する。この処理は図２の例に示す第３の判断モジュール２３に相当するものである。含まれている場合（Ｙｅｓの場合）はステップＳ２０７へ進み、含まれていない場合（Ｎｏの場合）はステップＳ２０８へ進む。
【００５６】
ステップＳ２０７では、ホワイトバーの幅が今まで走査したホワイトバーの幅のうち最大のものの１．５倍以下かを判断する。この処理は図２の例に示す第４の判断モジュール２４に相当するものである。Ｙｅｓの場合はバーコード領域が継続しているとしてステップＳ２０８に進み、現在のバーをバーコード候補領域を構成するバーとして登録する。Ｎｏの場合はバーコード領域が終了したとしてステップＳ２１０へ進む。
ステップＳ２０８では、現在のバーをバーコード候補領域を構成するバーとして登録する。その後、ステップＳ２０９に進む。
ステップＳ２０９では、走査ライン上に次のバーがあるかどうかのチェックを行い、ある場合（Ｙｅｓの場合）はステップＳ２０２に戻って次のバーを検出する。ない場合（Ｎｏの場合）はステップＳ２１０に進む。
【００５７】
ステップＳ２１０には連続するバーコード領域が終了するとたどり着く。ステップＳ２１０では、今までに検出した候補領域はバーコードとして成り立つ本数のバーが含まれているかどうかを判断する。含まれている場合（Ｙｅｓの場合）、ステップＳ２１１へ進む。含まれていない場合（Ｎｏの場合）は、その領域を破棄し、ステップＳ２１２に進む。
なお、ステップＳ２１０で、前述したバーの本数に関する判断基準にさらに加えて、黒バー又はホワイトバーの太さは２種類であるか又は４種類であるかを判断するようにしてもよい。つまり、前述の判断基準で含まれていると判断された場合（Ｙｅｓの場合）であって、太さが２種類又は４種類である場合は、ステップＳ２１１へ進み、それ以外の場合はステップＳ２１２へ進む。この判断を行うために、黒バー又はホワイトバーの太さをグルーピングする。このグルーピングは、ある太さを基準にして所定の範囲内にあるものは１つのグループに属すると判断してグループを形成する。そして、そのグループ数が太さの種類数に該当する。
【００５８】
ステップＳ２１１では、今までにバーコードのバーとして検出した領域をバーコード候補領域とする。
ステップＳ２１２では、次のバーを検出する。ある場合（Ｙｅｓの場合）はステップＳ２０２に戻り処理を繰り返す。ない場合（Ｎｏの場合）はステップＳ２１３に進む。
ステップＳ２１３では、次の走査ラインがあるかどうかを判断する。次のラインが存在する場合（Ｙｅｓの場合）はステップＳ２０１に戻る。存在しない場合（Ｎｏの場合）はステップＳ２１４へ進む。
ステップＳ２１４では、各ラインで検出したバーコード候補領域が、所定数の複数ラインにわたって存在しているかどうかを判断する。この処理は図２の例に示す第５の判断モジュール２６に相当するものである。所定数の複数ラインにわたっている場合（Ｙｅｓの場合）はステップＳ２１５に進む。それ以外の場合（Ｎｏの場合）はステップＳ２１６へ進む。
【００５９】
ステップＳ２１５では、その領域をバーコード領域としてデコーダーに出力する。ここでのバーコード領域は、図４に例示されている各バーコードのすべてである必要はなく、バーコードが解読可能な領域であれば足りる。例えば、図４（Ｅ）のＪＡＮは、すべてのバーの長さが一定ではなく一部のバーの長さが他のバーよりも長くなっている。このようなコード体系の場合、他のバーより長いバーの一部をバーコード領域とする必要はなく、他のバーの長さと同じ長さまでの領域をバーコード領域としてデコーダーに出力してもよい。
ステップＳ２１６では、所定数の複数ラインにわたってバーコード候補領域がないので、バーコード領域は無しとして処理する。
なお、１ライン内に複数のバーコードがあった場合に対応するために、検出したバーコード候補領域に識別符号を付して、Ｘ座標を用いてバーコード候補領域を特定するようにしてもよい。
【００６０】
前述の実施の形態が処理対象とする画像の例を図９、図１０を用いて説明する。
図９は、複数の帳票（帳票９１、帳票９３、帳票９５、帳票９７）にそれぞれバーコード（バーコード９２、バーコード９４、バーコード９６、バーコード９８）が付されている場合であって、自動原稿送り装置等を用いて、それらの画像を連続して画像入力モジュール３１が入力した場合である。また、それぞれのバーコードは異なる種類のものである。これら全ての画像は、前述の実施の形態によって処理対象となる。
図１０は、１つの画像１００を画像入力モジュール３１が入力した場合である。その画像１００には、２つの帳票（送り状１０１、納品書１０３）があり、それぞれにバーコード（バーコード１０２、バーコード１０４）が付されている。そして、それぞれの帳票には、バーコードが罫線等と隣接或いは接触している。また、バーコードは異なる種類であり、傾いたものである。このような画像をもバーコード領域が分断されることなく、また抽出領域が他のオブジェクトと接触しても、バーコードとして抽出する形状が変わってしまうことなく、処理する。つまり、図８に示したフローチャートにおけるステップＳ２１４でＹｅｓとなるほどに、各走査ラインのバーコード候補領域が重なっており、そのバーコード候補領域が所定数以上のラインからなっていればよい。
【００６１】
次に、第２の実施の形態を説明する。
第１の実施の形態では、１ラインずつ処理を行っていたが、第２の実施の形態は、所定ライン毎に処理を行う。そして、処理を省いてはいるが、バーコード抽出の精度を落とさないようにするために、第５の判断モジュール１１６による処理を加える。
図１１は、第２の実施の形態の情報画像検出モジュール３２の構成例についての概念的なモジュール構成図を示している。なお、第１の実施の形態と同種のモジュールには同一符号を付し重複した説明を省略する。また、第２の実施の形態の全体的なモジュール構成例は、第１の実施の形態と同様であり、図３に示すものと同様である。
情報画像検出モジュール３２は、図１１に示すように、対象ライン設定モジュール１１１、第１の判断モジュール２１、第２の判断モジュール２２、第３の判断モジュール２３、第４の判断モジュール２４、候補領域追加モジュール２５、第５の判断モジュール１１６を有している。また、第５の判断モジュール１１６は、分布情報検出モジュール１１６１、比較モジュール１１６２、バーコード付加生成モジュール１１６３を有している。
【００６２】
対象ライン設定モジュール１１１は、第１の判断モジュール２１と接続されており、対象とする画像内の走査対象とするラインを設定する。その設定したラインを第１の判断モジュール２１に渡す。例えば、走査対象を所定のライン毎（１０ライン毎）と設定してもよい。
第１の判断モジュール２１は、対象ライン設定モジュール１１１、第２の判断モジュール２２と接続されており、対象ライン設定モジュール１１１によって設定されたラインに対して、前述の第１の実施の形態のものと同様の処理を行う。
【００６３】
分布情報検出モジュール１１６１は比較モジュール１１６２と接続されており、第４の判断モジュール２４がストップコードを検出した後に、第１の判断モジュール２１によって検出されたスタートコードから第４の判断モジュール２４によって検出されたストップコードまでの間におけるバー又はホワイトバーの分布に関する情報（以下、分布情報ともいう）を検出する。例えば、分布情報として、バー又はホワイトバーの太さ、その本数等、又はそれらの平均、分散等の統計情報等がある。バーコード内であれば、バー又はホワイトバーの太さ、その本数等は一定であるため、その分布情報も一定となる。しかし、バーコードではない文字領域では、分布情報は一定にはならない。特に、所定のライン毎に検出した場合は、隣り合うラインではないので、分布情報はライン毎に異なることになる。これによって、バーコードと文字領域とを区別する。
比較モジュール１１６２は分布情報検出モジュール１１６１、バーコード付加生成モジュール１１６３と接続されており、分布情報検出モジュール１１６１によって検出された分布情報と既に走査対象としたラインにおけるバーコードの分布情報とを比較する。例えば、バー又はホワイトバーの太さ、その本数等のそれぞれの差分を算出して、その差分を比較結果とする。
【００６４】
バーコード付加生成モジュール１１６３は比較モジュール１１６２と接続されており、分布情報検出モジュール１１６１によって検出された分布情報に基づいて、既に走査対象としたラインにおけるバーコード（１ライン又は複数ラインのバーコード、以下、「前者のバーコード」ともいう）に今回の走査対象としたラインにおけるバーコード（１ラインのバーコード、以下、「後者のバーコード」ともいう）を付加して、バーコードを生成する。バーコード付加生成モジュール１１６３による処理は繰り返して行われるので、生成したバーコードは、次の処理では、既に走査対象としたラインにおけるバーコードとなる。このようにして、徐々にバーコードを生成、つまり抽出していく。なお、候補領域追加モジュール２５は、対象としているバーを、バーコードの候補領域のバーとして追加することによって、バーを縦向きにした場合に、横方向にバーコードを生成するものであるが、バーコード付加生成モジュール１１６３は、縦方向にバーコードを生成するものである。また、比較モジュール１１６２による比較結果に基づいて、バーコードを生成するようにしてもよい。つまり、既に走査対象としたラインにおけるバーコードの分布情報と分布情報検出モジュール１１６１によって検出された分布情報とが合致すると、比較モジュール１１６２によって判断された場合に、バーコードを生成する。両者の分布情報が合致するとは、一致する場合を含み、所定の範囲内にある場合を含む。例えば、比較モジュール１１６２による比較結果である差分が所定の閾値以下である場合がある。
【００６５】
バーコード付加生成モジュール１１６３は、バーコードを生成する前に、更に、分布情報検出モジュール１１６１、場合によっては比較モジュール１１６２に対して、前者のバーコードと後者のバーコードとの間にある中間ラインにおける分布情報を検出させ、その比較結果（前者のバーコードの分布情報と中間ラインにおける分布情報との比較結果、又は後者のバーコードの分布情報と中間ラインにおける分布情報との比較結果）を得させるようにしてもよい。そして、その比較結果を用いて、バーコードを生成するようにしてもよい。なお、この更なる処理は、比較結果が前記所定の閾値（第１閾値）とは異なる所定の閾値（第２閾値）以下の場合に行うようにしてもよい。例えば、第２閾値は、第１閾値未満であって近似する値等である。また、中間ラインは前者のバーコードと後者のバーコードとの間にあれば、その間を２等分する地点のラインであってもよいし、ランダムに選択してもよい。更に、１つではなく、複数であってもよい。
【００６６】
図１２、１３に示すフローチャート、図１４に示す処理例を用いて、第２の実施の形態の情報画像検出モジュール３２における処理例の流れを説明する。
なお、ステップＳ１２０２からステップＳ１２１２までの処理は、第１の実施の形態による図８に示したフローチャートのステップＳ２０２からステップＳ２１２までの処理に対応するので、説明を省略する。
まず、ステップＳ１２０１では、画像入力モジュール３１で入力され、二値化された画像を受け取り、対象ライン設定モジュール１１１によって設定されたラインを走査する。
【００６７】
ステップＳ１２０２からステップＳ１２１２までの処理によって、走査対象とされたライン内で、バーコード候補領域を生成する。つまり、バーを１本検出した後、次のバーの太さを判断し、バーコードとして成り立つかどうかを順に判断していく。
例えば、図１４（ａ）の例に示すように、対象画像１４０の１行目のライン内で、バーコード候補領域１４１、１４２を抽出する。ここで、バーコード候補領域１４１はバーコードであるが、バーコード候補領域１４２は文字領域である。次の処理、つまり、２回目のステップＳ１２０１で１＋Ｎライン目を走査対象とした後のステップＳ１２０２からステップＳ１２１２までの処理では、図１４（ｂ）の例に示すように、バーコード候補領域１４３を新たに抽出する。
【００６８】
ステップＳ１２１３では、１ライン走査した結果、つまりそのラインにおけるステップＳ１２０１からステップＳ１２１２までの処理の結果、バーコード候補領域が検出されたか否かを判断する。かかる判断において、検出されている場合（Ｙｅｓの場合）はステップＳ１２１４へ進み、それ以外の場合（Ｎｏの場合）はステップＳ１２１８へ進む。
ステップＳ１２１４では、前の走査ラインで検出されたバーコード候補領域と、今回の走査ラインで検出されたバーコード候補領域の横（走査ライン方向）の位置座標が所定範囲内にあるか否かを判断する。かかる判断において、所定範囲内にある場合（Ｙｅｓの場合）はステップＳ１２１５へ進み、それ以外の場合（Ｎｏの場合）はステップＳ１２１８へ進む。つまり、２つのバーコード候補領域は、その位置から１つのバーコードになり得るか否かを判断している。例えば、図１４（ｂ）の例に示すバーコード候補領域１４３はバーコード候補領域１４１と横の位置座標が所定範囲内にあるので、ステップＳ１２１５へ進む。なお、バーコード候補領域１４３はバーコード候補領域１４２とは所定範囲内にない。なお、横の位置座標とは、バーコードの左右端の座標をいい、バーコードの左端の座標のみ、右端の座標のみであってもよい。
【００６９】
ステップＳ１２１５では、前の走査ラインまでのバーコード候補領域と今回の走査ラインのバーコード候補領域の分布情報を取得する。ここで、分布情報検出モジュール１１６１が両者の分布情報を検出するようにしてもよいし、前の走査ラインまでのバーコード候補領域については、既に分布情報検出モジュール１１６１によって検出された分布情報を用いるようにしてもよい。
ステップＳ１２１６では、ステップＳ１２１５で取得した両者の分布情報が所定範囲内にあるか否かを判断する。かかる判断において、所定範囲内にある場合（Ｙｅｓの場合）はステップＳ１２１７へ進み、それ以外の場合（Ｎｏの場合）はステップＳ１２１８へ進む。つまり、２つのバーコード候補領域は、その分布情報から１つのバーコードになり得るか否かを判断している。例えば、図１４（ｂ）の例に示すバーコード候補領域１４３はバーコード候補領域１４１と分布情報が所定範囲内にあるので、ステップＳ１２１７へ進む。
ステップＳ１２１７では、今回の走査ラインのバーコード候補領域を前の走査ラインまでのバーコード候補領域に付加する。つまり、前の走査ラインまでのバーコード候補領域を今回の走査ラインのバーコード候補領域まで延長して、矩形のバーコードを生成する。例えば、図１４（ｃ）の例に示すように、バーコード候補領域１４１をバーコード候補領域１４３まで延長してバーコード候補領域１４４を生成する。
【００７０】
ステップＳ１２１８では、前の走査ラインまでで検出されたバーコード候補領域であって、今回の走査ラインで検出されたバーコード候補領域と接続されなかったバーコード候補領域があるか否かを判断する。かかる判断において、バーコード候補領域がある場合（Ｙｅｓの場合）はステップＳ１２１９へ進み、それ以外の場合（Ｎｏの場合）はステップＳ１２２１へ進む。つまり、バーコードの検出途中であるのか否かを判断している。
ステップＳ１２１９では、今までに検出したバーコード候補領域が所定の高さ以上であるか否かを判断する。かかる判断において、所定の高さ以上である場合（Ｙｅｓの場合）はステップＳ１２２０へ進み、それ以外の場合（Ｎｏの場合）はステップＳ１２２１へ進む。つまり、ステップＳ１２１９には、前の走査ラインでバーコード領域が終了したと判断し得るバーコード候補領域がある場合にたどり着くものであり、ステップＳ１２１９では、バーコードとして成り立ち得る高さを有しているか否かを判断して、バーコードの検出が終了したか否かを判断している。図１４（ｃ）の例に示すバーコード候補領域１４２は所定の高さを有していないので、ステップＳ１２２１へ進み、ステップＳ１２２０の処理を行わないので、バーコード候補領域１４２はバーコード領域として登録されない。
ステップＳ１２２０では、対象としているバーコード候補領域をバーコード領域として登録する。つまり、そのバーコード候補領域をバーコードとして検出している。
ステップＳ１２２１では、次の走査ラインがあるか否かを判断する。ある場合（Ｙｅｓの場合）はステップＳ１２０１へ戻り、次の対象ラインに対する処理を繰り返す。次の走査ラインがない場合は終了し、それまでにステップＳ１２２０で登録されたバーコード領域が、その画像内にあるバーコード領域である。
【００７１】
図１５を参照して、前述の実施の形態のハードウェア構成例について説明する。図１５に示す構成は、例えばパーソナルコンピュータ（ＰＣ）などによって構成されるものであり、スキャナ等のデータ読み取り部１５１７と、プリンタなどのデータ出力部１５１８を備えたハードウェア構成例を示している。
【００７２】
ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１５０１は、前述の実施の形態において説明した各種のモジュール、すなわち、始端部分検出モジュール１１、始端部分以外の部分検出モジュール１２、本数検出モジュール１３等の各モジュールの実行シーケンスを記述したコンピュータ・プログラムにしたがった処理を実行する制御部である。
【００７３】
ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）１５０２は、ＣＰＵ１５０１が使用するプログラムや演算パラメータ等を格納する。ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１５０３は、ＣＰＵ１５０１の実行において使用するプログラムや、その実行において適宜変化するパラメータ等を格納する。これらはＣＰＵバスなどから構成されるホストバス１５０４により相互に接続されている。
【００７４】
ホストバス１５０４は、ブリッジ１５０５を介して、ＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ／Ｉｎｔｅｒｆａｃｅ）バスなどの外部バス１５０６に接続されている。
【００７５】
キーボード１５０８、マウス等のポインティングデバイス１５０９は、操作者により操作される入力デバイスである。ディスプレイ１５１０は、液晶表示装置又はＣＲＴ（Ｃａｔｈｏｄｅ  Ｒａｙ  Ｔｕｂｅ）などから成り、各種情報をテキストやイメージ情報として表示する。
【００７６】
ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）１５１１は、ハードディスクを内蔵し、ハードディスクを駆動し、ＣＰＵ１５０１によって実行するプログラムや情報を記録又は再生させる。ハードディスクは、入力された画像や情報画像検出モジュール３２が検出したバーコードの画像などが格納される。さらに、その他の各種のデータ処理プログラム等、各種コンピュータ・プログラムが格納される。
【００７７】
ドライブ１５１２は、装着されている磁気ディスク、光ディスク、光磁気ディスク、又は半導体メモリ等のリムーバブル記録媒体１５１３に記録されているデータ又はプログラムを読み出して、そのデータ又はプログラムを、インタフェース１５０７、外部バス１５０６、ブリッジ１５０５、及びホストバス１５０４を介して接続されているＲＡＭ１５０３に供給する。リムーバブル記録媒体１５１３も、ハードディスクと同様のデータ記録領域として利用可能である。
【００７８】
接続ポート１５１４は、外部接続機器１５１５を接続するポートであり、ＵＳＢ、ＩＥＥＥ１３９４等の接続部を持つ。接続ポート１５１４は、インタフェース１５０７、及び外部バス１５０６、ブリッジ１５０５、ホストバス１５０４等を介してＣＰＵ１５０１等に接続されている。通信部１５１６は、ネットワークに接続され、外部とのデータ通信処理を実行する。データ読み取り部１５１７は、例えばスキャナであり、ドキュメントの読み取り処理を実行する。データ出力部１５１８は、例えばプリンタであり、ドキュメントデータの出力処理を実行する。
【００７９】
なお、図１５に示すハードウェア構成は、１つの構成例を示すものであり、前述の実施の形態は、図１５に示す構成に限らず、前述の実施の形態において説明したモジュールを実行可能な構成であればよい。例えば、一部のモジュールを専用のハードウェア（例えば特定用途向け集積回路（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ：ＡＳＩＣ）等）で構成してもよく、一部のモジュールは外部のシステム内にあり通信回線で接続しているような形態でもよく、さらに図１５に示すシステムが複数互いに通信回線によって接続されていて互いに協調動作するようにしてもよい。また、複写機、ファックス、スキャナ、プリンタ、複合機（スキャナ、プリンタ、複写機、ファックス等のいずれか２つ以上の機能を有している画像処理装置）などに組み込まれていてもよい。
【００８０】
前記実施の形態においては、情報画像検出モジュール３２とバーコードデコードモジュール３３は独立しており、情報画像検出モジュール３２による処理を行った後に、バーコードデコードモジュール３３による処理を行うようにしたが、情報画像検出モジュール３２とバーコードデコードモジュール３３を合成して、バーコードの検出を行いながら、そのバーコードのデコードを行うようにしてもよい。
なお、バーの幅を対象とした処理はホワイトバーの幅を対象とした処理にしてもよいし、ホワイトバーの幅を対象とした処理はバーの幅を対象とした処理にしてもよい。
前記実施の形態の説明で述べた閾値における具体的な数値は、ノイズ状況を考慮して多少許容量を大きくした値であってもよい。
【００８１】
なお、説明したプログラムについては、記録媒体に格納して提供してもよく、また、そのプログラムを通信手段によって提供してもよい。その場合、例えば、前記説明したプログラムについて、「プログラムを記録したコンピュータ読み取り可能な記録媒体」の発明として捉えてもよい。
「プログラムを記録したコンピュータ読み取り可能な記録媒体」とは、プログラムのインストール、実行、プログラムの流通などのために用いられる、プログラムが記録されたコンピュータで読み取り可能な記録媒体をいう。
なお、記録媒体としては、例えば、デジタル・バーサタイル・ディスク（ＤＶＤ）であって、ＤＶＤフォーラムで策定された規格である「ＤＶＤ−Ｒ、ＤＶＤ−ＲＷ、ＤＶＤ−ＲＡＭ等」、ＤＶＤ＋ＲＷで策定された規格である「ＤＶＤ＋Ｒ、ＤＶＤ＋ＲＷ等」、コンパクトディスク（ＣＤ）であって、読出し専用メモリ（ＣＤ−ＲＯＭ）、ＣＤレコーダブル（ＣＤ−Ｒ）、ＣＤリライタブル（ＣＤ−ＲＷ）等、光磁気ディスク（ＭＯ）、フレキシブルディスク（ＦＤ）、磁気テープ、ハードディスク、読出し専用メモリ（ＲＯＭ）、電気的消去及び書換可能な読出し専用メモリ（ＥＥＰＲＯＭ）、フラッシュ・メモリ、ランダム・アクセス・メモリ（ＲＡＭ）等が含まれる。
そして、前記のプログラム又はその一部は、前記記録媒体に記録して保存や流通等させてもよい。また、通信によって、例えば、ローカル・エリア・ネットワーク（ＬＡＮ）、メトロポリタン・エリア・ネットワーク（ＭＡＮ）、ワイド・エリア・ネットワーク（ＷＡＮ）、インターネット、イントラネット、エクストラネット等に用いられる有線ネットワーク、あるいは無線通信ネットワーク、さらにこれらの組み合わせ等の伝送媒体を用いて伝送させてもよく、また、搬送波に乗せて搬送させてもよい。
さらに、前記のプログラムは、他のプログラムの一部分であってもよく、あるいは別個のプログラムと共に記録媒体に記録されていてもよい。また、複数の記録媒体に分割して
記録されていてもよい。また、圧縮や暗号化など、復元可能であればどのような態様で記録されていてもよい。
【図面の簡単な説明】
【００８２】
【図１】第１の実施の形態の構成例についての概念的なモジュール構成図である。
【図２】第１の実施の形態の構成例について、別の観点から捉えた概念的なモジュール構成図である。
【図３】第１の実施の形態の構成例についての全体的なモジュール構成図である。
【図４】第１の実施の形態が対象とする情報画像の例を示す説明図である。
【図５】バーコードの始端部分を検出する処理例を示す説明図である。
【図６】バーコードのスタートコード、ストップコードの例を示す説明図である。
【図７】バーコードの終端部分を検出する処理例を示す説明図である。
【図８】第１の実施の形態によるバーコード抽出処理例を示すフローチャートである。
【図９】第１の実施の形態の処理対象となるバーコードを含む画像の例を示す説明図である。
【図１０】第１の実施の形態の処理対象となるバーコードを含む画像の例を示す説明図である。
【図１１】第２の実施の形態の構成例についての概念的なモジュール構成図である。
【図１２】第２の実施の形態によるバーコード抽出処理例を示すフローチャートである。
【図１３】第２の実施の形態によるバーコード抽出処理例を示すフローチャートである。
【図１４】第２の実施の形態による処理例を示す説明図である。
【図１５】第１の実施の形態、第２の実施の形態を実現するコンピュータのハードウェア構成例を示すブロック図である。
【符号の説明】
【００８３】
１１…始端部分検出モジュール
１２…始端部分以外の部分検出モジュール
１３…本数検出モジュール
２１…第１の判断モジュール
２２…第２の判断モジュール
２３…第３の判断モジュール
２４…第４の判断モジュール
２５…候補領域追加モジュール
２６…第５の判断モジュール
３１…画像入力モジュール
３２…情報画像検出モジュール
３３…バーコードデコードモジュール
３４…デコード結果処理モジュール
１１１…対象ライン設定モジュール
１１６…第５の判断モジュール
１１６１…分布情報検出モジュール
１１６２…比較モジュール
１１６３…バーコード付加生成モジュール
【図１】
0005470734.tif 000002
【図２】
0005470734.tif 000003
【図３】
0005470734.tif 000004
【図４】
0005470734.tif 000005
【図５】
0005470734.tif 000006
【図６】
0005470734.tif 000007
【図７】
0005470734.tif 000008
【図８】
0005470734.tif 000009
【図９】
0005470734.tif 000010
【図１０】
0005470734.tif 000011
【図１１】
0005470734.tif 000012
【図１２】
0005470734.tif 000013
【図１３】
0005470734.tif 000014
【図１４】
0005470734.tif 000015
【図１５】
0005470734.tif 000016