(57)【特許請求の範囲】
【請求項１】
読取対象の画像を光学的に検出し、当該検出された画像に対応するアナログ画像信号をＡ／Ｄ変換することによって、前記画像を構成する各画素が信号レベルに応じた階調値を有する多値データに変換して記憶し、当該記憶された多値データを２値データに変換するための閾値を決定する閾値決定処理を行い、当該閾値決定処理によって決定された閾値を用いて前記多値データを前記２値データに変換する情報コードの２値化方法において、
前記閾値決定処理は、
指定された範囲の階調値を有する画素の中の相対的に小さな階調値を有する所定割合の画素の有する最大の階調値である下方階調値と、指定された範囲の階調値を有する画素の中の相対的に大きな階調値を有する所定割合の画素の有する最小の階調値である上方階調値とを求め、前記下方階調値と前記上方階調値との相加平均を求める指定範囲平均値算出処理を含んでおり、
次の手順（１）〜（４）によって実行されることを特徴とする情報コードの２値化方法。
（１）全範囲の階調値を指定し、前記指定範囲平均値算出処理にて算出される前記相加平均を基準値とする。
（２）前記基準値以下の階調値を指定し、前記指定範囲平均値算出処理にて算出される前記相加平均を暗側平均値とすると共に、前記基準値以上の階調値を指定し、前記指定範囲平均値算出処理にて算出される前記相加平均を明側平均値とする。
（３）前記暗側平均値と前記明側平均値との相加平均を境界値として求める。
（４）前記境界値と前記基準値との差が予め定められた値以下となっている場合には、前記境界値を前記閾値として決定する。一方、前記境界値と前記基準値との差が予め定められた値よりも大きい場合には、前記境界値を新たな基準値として、上記（２）からの手順を繰り返す。
【請求項２】
読取対象の画像を光学的に検出し、当該検出された画像に対応するアナログ画像信号をＡ／Ｄ変換することによって、前記画像を構成する各画素が信号レベルに応じた階調値を有する多値データに変換して記憶し、当該記憶された多値データを２値データに変換するための閾値を決定する閾値決定処理を行い、当該閾値決定処理によって決定された閾値を用いて前記多値データを前記２値データに変換する情報コードの２値化方法において、
前記閾値決定処理は、
指定された階調値よりも小さな階調値（下側階調値）であって、当該下側階調値から前記指定された階調値までの範囲に所定個数の画素が含まれるような下側階調値と、指定された階調値よりも大きな階調値（上側階調値）であって、前記指定された階調値から上側階調値までの範囲に所定個数の画素が含まれるような上側階調値とを求め、前記下側階調値と前記上側階調値の相加平均を求める平均値算出処理を含んでおり、
次の手順（１）〜（３）によって実行されることを特徴とする情報コードの２値化方法。
（１）全画素のうちの相対的に小さな階調値を有する所定割合の画素の有する最大の階調値である下方階調値と、全画素のうちの相対的に大きな階調値を有する所定割合の画素の有する最小の階調値である上方階調値とを求めて、前記下方階調値と前記上方階調値との相加平均を基準値として求める。
（２）前記基準値を指定し、前記平均値算出処理にて算出される相加平均を境界値とする。
（３）前記境界値と前記基準値との差が予め定められた値以下となっている場合には、前記境界値を前記閾値として決定する。一方、前記境界値と前記基準値との差が予め定められた値よりも大きい場合には、前記境界値を新たな基準値として、上記（２）からの手順を繰り返す。
【請求項３】
請求項２に記載の２値化方法において、
前記平均値算出処理における前記所定個数は、前記境界値と前記基準値との差に応じて決定されるよう構成されていることを特徴とする情報コードの２値化方法。
【請求項４】
読取対象の画像を光学的に検出し、当該検出された画像に対応するアナログ画像信号をＡ／Ｄ変換することによって、前記画像を構成する各画素が信号レベルに応じた階調値を有する多値データに変換して記憶し、当該記憶された多値データを２値データに変換するための閾値を決定する閾値決定処理を行い、当該閾値決定処理によって決定された閾値を用いて前記多値データを前記２値データに変換する情報コードの２値化方法において、
前記閾値決定処理は、次の手順（１）〜（３）によって実行されることを特徴とする情報コードの２値化方法。
（１）所定数の画素を含む小エリアに分割し、当該小エリアに含まれる画素の最大の階調値と最小の階調値との差を算出する。
（２）前記階調値の差に対する前記小エリアの分布に基づき、相対的に大きな差を有する前記小エリアの分布の平均階調差を求めると共に、所定数の小エリアにて構成される基準エリアを単位として、当該基準エリアに含まれる小エリアの最大又は最小の階調値の相加平均を求める。
（３）前記相加平均を前記平均階調差に基づき補正して前記基準エリア毎に閾値を決定する。
【請求項５】
請求項１〜４のいずれかに記載の２値化方法を用いて光学情報を読み取るよう構成されていることを特徴とする光学情報読取装置。
【請求項６】
請求項１〜４のいずれかに記載の２値化方法を用いて読取対象の情報コードを画像データとして復元するコード品質判断補助装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、バーコード、２次元コード等の情報コードを光学的に読み取る技術に関する。
【０００２】
【従来の技術】
従来より、情報コードを読み取る装置が知られている。例えば、従来の２次元コード読取装置の中には、ＣＣＤセンサなどで読み取られて出力されるアナログ信号をＡ／Ｄ変換することによって、その信号レベルに応じた多値データ（多階調ディジタル画像データ）として画像メモリに一旦記憶し、この画像メモリに記憶された多値データを２値データ（２階調ディジタル画像データ）に変換（以下「２値化」という。）してデコードするものがあった。
【０００３】
それは、２次元コードにも様々な種類・サイズのものがあり、特に高密度の２次元コードを読み取る場合には、２次元コードを構成する情報単位としてのセル１つあたりの画素数（割り当て画素）が少なくなり、明（白）／暗（黒）の境界部分に該当する画素を「明」と判断するか「暗」と判断するかが読み取りの成否に大きく影響するからである。
【０００４】
多値データを２値化する手法として、ＡＩＭの作成した国際規格によれば、全てのイメージピクセル値を反射率によってソートし、ピクセルの最も暗い部分１０％が含まれる反射率と最も明るい部分１０％が含まれる反射率との平均を閾値として２値化を行い、これによって作成された２値化イメージを使用してコードの品質判断等を行うこととしている。
【０００５】
ここでこの２値化手法を具体的に説明する。
まず、各画素が０〜２５５までの範囲の階調値を有するような多値データであれば、この階調値によってソートし、全体の１０％の画素であって、暗い（階調値が小さい）側の画素を含む階調値の範囲を求める。この範囲は、階調値「０」〜「α」と示される。同様に、全体の１０％の画素であって、明るい（階調値が大きい）側の画素を含む階調値の範囲を求める。この範囲は、階調値「β」〜「２５５」として示される。このとき、閾値を（α＋β）／２として求めるという具合である。
【０００６】
例えば図１０（ａ）のような視野で読み取られた２次元コード画像について、さらに具体的に説明する。図１０（ａ）中の斜線を施した領域が２次元コード領域を示しており、この２次元コード領域は、明又は暗のセルによって構成されているものとする。このとき、図１１（ａ）に、階調値と画素の個数との対応を示す分布を模式的に示した。このように、階調値と画素の個数との分布は、２つに分かれるのが一般的である。すなわち、「暗」に相当する画素の分布が階調値の低い側に現れ、「明」に相当する画素の分布が階調値の高い側に現れる。この場合、図１１（ａ）に示すように、暗い側の１０％の画素は階調値α１までに含まれており、一方、明るい側の１０％の画素は階調値β１以上の部分に含まれている。そのため、閾値γ１は、（α１＋β１）／２として求められる。そして、この閾値γ１にて多値データ画像を２値化すれば、閾値γ１よりも階調値が小さい画素は「暗」として、逆にγ１よりも階調値が大きい画素は「明」として２値化されることになる。これによって、「暗」に相当する画素の分布は閾値γ１よりも階調値の低い方に分布しているため「暗」として、一方、「明」に相当する画素の分布は閾値γ１よりも階調値の高い方に分布しているため「明」として２値化される。
【０００７】
【発明が解決しようとする課題】
しかしながら、この手法を用いた場合、例えば図１０（ｂ）に示すように、画像データ全体の中で２次元コード領域の占める割合が小さくなると、すなわち画像データ中の背景領域の面積が大きくなると、次に示すような不都合が生じる。なお、２次元コード領域を構成するセルについては図１０（ａ）と同様とし、背景領域は「明」（白）であるとする。
【０００８】
このとき、図１１（ｂ）に、階調値と画素の個数との対応を示す分布を模式的に示した。図１１（ｂ）から分かるように、画像データ中に「暗」に相当する画素が極端に少なくなるため、「暗」に相当する画素の個数が減少し、「明」に相当する画素の個数が増加している。したがって、図１１（ｂ）に示すように、暗い側の１０％の画素は階調値α２までに含まれることになる。つまり、上述した階調値α１よりも大きくなるのである。一方、明るい側の１０％の画素は階調値β２以上の部分に含まれている。そのため、閾値γ２は、（α２＋β２）／２として求められるが、この閾値γ２は、図１１（ａ）に示した閾値γ１と比べて大きくなる。そして、この閾値γ２にて多値データ画像を２値化すれば、閾値γ２よりも階調値が小さい画素は「暗」として２値化されることになる。そのため、図１１（ａ）中に記号Ａで示したような「明」に相当するはずの画素が「暗」として２値化されしまう。結果として、図１０（ｂ）の場合、２次元コードを構成する各セルの明／暗の境界部分に該当する画素が「暗」となる可能性が高く、２値データを画像として復元すると、各セルが「黒太り」することになり、読み取りに悪影響を与えることになってしまう。また、この２値データに基づく画像によって２次元コードの品質判定を行う場合、図１０（ａ）と同一の２次元コードを読み取らせた場合でも、図１０（ａ）のものよりも品質が悪いと判断されてしまう。
【０００９】
この問題を解決するための手法として、例えば図１１（ｂ）中の「暗」に相当する画素の分布の最頻値α３と、「明」に相当する画素の分布の最頻値β３との平均（α３＋β３）／２を閾値γ３とするという手法が考えられるが、例えば背景画像領域と比べて２次元コード画像領域の面積が極端に小さくなったとき等、「暗」に相当する画素の個数が少なくなったり、また、「暗」に相当する画素の有する階調値がばらついたりすると、最頻値α３が求められない状況も起こり得る。
【００１０】
本発明は、取り込んだ画像データ中の情報コード領域と背景領域との面積比によらず、適切に多値データを２値化することを目的とする。
【００１１】
【課題を解決するための手段及び発明の効果】
上記目的を達成するためになされた請求項１に記載の情報コードの２値化方法では、読取対象の画像を光学的に検出する。例えばＣＣＤセンサを用いて読取対象からの反射光を電気的な信号に変換する。そして、検出された画像に対応するアナログ画像信号をＡ／Ｄ変換することによって、読取対象の画像を、各画素が信号レベルに応じた階調値を有する多値データとして記憶する。例えば各画素が８ビットの階調値を有する多値データとして記憶するという具合である。この場合、２8 （＝２５６）階調であるから、各画素は「０」〜「２５５」までの階調値を有することになる。
【００１２】
そして、閾値決定処理にて決定される閾値を用いて、記憶された多値データを２値データに変換する。つまり、多階調の各画素を「明」又は「暗」の２階調に変換するのである。
本発明では、このような基本手順によって、情報コードの２値化が行われるのであるが、本発明の２値化方法においては、上述の閾値決定処理に特徴を有している。そこで閾値決定処理について以下説明する。
【００１３】
本発明における閾値決定処理は、指定範囲平均値算出処理を含んでいるため、最初に、この指定範囲平均値算出処理を説明する。
指定範囲平均値算出処理は、下方階調値と、上方階調値とを求め、その両方の階調値の相加平均を求める処理である。
【００１４】
下方階調値とは、指定された範囲の階調値を有する画素の中の所定割合の画素であって、相対的に小さな階調値を有する画素の有する階調値の最大のものをいう。同様に、上方階調値とは、指定された範囲の階調値を有する画素の中の所定割合の画素であって、相対的に大きな階調値を有する画素の有する階調値の最小のものをいう。
【００１５】
例えば、図１１に示した例で、階調値「０」〜「２５５」を指定し、所定割合を１０％として、指定範囲平均値算出処理を実行することを考える。このとき、全画素の１０％の画素であって、相対的に小さな階調値を有する画素は、図１１（ａ）では階調値「０」〜「α１」の中に、また、図１１（ｂ）では「０」〜「α２」の中に存在する。したがって、それら画素の有する最大の階調値は、図１１（ａ）では「α１」であり、図１１（ｂ）では「α２」である。同様に、全画素の１０％の画素であって、相対的に大きな階調値を有する画素は、図１１（ａ）では階調値「β１」〜「２５５」の中に、また、図１１（ｂ）では「β２」〜「２５５」の中に存在する。したがって、それら画素の有する最小の階調値は、図１１（ａ）では「β１」であり、図１１（ｂ）では「β２」である。したがって、指定範囲平均値算出処理を実行すると、図１１（ａ）に示した例では、相加平均が階調値γ１として算出され、図１１（ｂ）に示した例では相加平均が階調値γ２として算出されることになる。
【００１６】
このような指定範囲平均値算出処理を含む閾値決定処理は、次に示す手順（１）〜（５）によって実行される。
手順（１）〜（５）を図４を参照して具体的に説明し、画像データ中の情報コード領域が背景領域と比べて極端に小さくなった場合であっても適切に閾値が設定されることを説明する。なお、図４は、図１１（ｂ）と同様の分布になっている。
【００１７】
まず手順（１）では、全範囲の階調値「０」〜「２５５」が指定され、指定範囲平均値算出処理にて算出される相加平均が基準値とされる。この場合、図４（ａ）に示すように、下方階調値α、上方階調値βが算出され、相加平均γが基準値とされる。
【００１８】
続く手順（２）では、基準値γ以下の階調値が指定され、すなわち階調値「０」〜「γ」が指定され、範囲平均値算出処理が実行される。この場合、図４（ｂ）に示すように、下方階調値ａ１及び上方階調値ｂ１が算出され、相加平均ｃ１が算出される。そして、相加平均ｃ１が暗側平均値となる。
【００１９】
また、手順（２）では、基準値γ以上の階調値が指定され、すなわち、階調値「γ」〜「２５５」が指定され、範囲平均値算出処理が実行される。この場合、図４（ｂ）に示すように、下方階調値ａ２及び上方階調値ｂ２が算出され、相加平均ｃ２が算出される。そして、この相加平均ｃ２が明側平均値となる。
【００２０】
続く手順（３）では、図４（ｂ）に示すように、手順（２）で求めた暗側平均値ｃ１と明側平均値ｃ２との相加平均γ’を境界値として求める。
そして、手順（４）では、この境界値γ’と（１）で求めた基準値γとを比較する。そして、境界値γ’と基準値γとの差が予め定められた値以下となっている場合には、境界値γ’を閾値γ’として決定する。一方、境界値γ’と前記基準値γとの差が予め定められた値よりも大きい場合には、境界値γ’を新たな基準値として、上記（２）からの手順を繰り返す。
【００２１】
つまり、上記（２）からの手順が繰り返されると、暗側平均値は、「暗」に相当する画素の分布の平均階調値に近づき、一方、明側平均値は、「明」に相当する画素の分布の平均階調値に近づく。したがって、手順（３）にて算出される境界値は、ある値にしだいに収束していき、手順（４）にて閾値が決定されるのである。
【００２２】
従来、全画素の中の暗い側１０％、明るい側１０％が含まれるような階調値を求めて、その相加平均を閾値とする手法があった。しかし、この場合、例えば画像中の情報コードの占める面積が背景画像に比べて極端に小さくなった場合、すなわち「暗」に相当する画素が「明」に相当する画素に比べて極端に少なくなると、図１１（ｂ）に示すように、算出される閾値γ２が階調値の高い側（明るい側）にずれて、その結果、「明」に相当する画素（図１１（ｂ）中に記号Ａで示した）が「暗」として２値化されるという不都合が生じていた。
【００２３】
これに対して、本発明では、境界値（基準値）以下の画素を「暗」側の画素として、この「暗」側の画素の平均階調値（暗側平均値）を求めると共に、境界値以上の画素を「明」側の画素として、この「明」側の画素の平均階調値（明側平均値）を求めて（上記手順（２））、さらにその相加平均を新たな境界値とするという処理を繰り返して閾値を決定する（上記手順（３），（４））。すなわち、「暗」側の画素と「明」側の画素のぞれぞれの平均の階調値を求めて処理するようにしたため、「暗」の側の画素と「明」の側の画素の個数が極端に違っていても、「暗」に相当する画素と「明」に相当する画素を適切に切り分けるような閾値を決定することができる。その結果、取り込んだ画像データ中の情報コード領域と背景領域との面積比が変化しても、適切に多値データを２値化することができる。
【００２４】
また、「暗」又は「明」側の画素の平均階調値を求めるにあたって、対象となる画素のうちで階調値の低い側と高い側の所定割合の画素を含む階調値（下方階調値、上方階調値）を算出し、「暗」又は「明」側の画素の平均階調値を求める。したがって、「暗」又は「明」に対応する画素の分布に最頻値が存在しない場合であっても適切に閾値を決定することができる。
【００２５】
ところで、上述した方法は、画像データ全体の画素を「暗」側の画素と「明」側の画素に分けるという工夫であったが、閾値として決定すべき階調値近傍の画素の個数は、その階調値の前後の適当な範囲で等しくなるはずである。図４（ａ）からも分かるように、「暗」に相当する画素の分布と「明」に相当する画素の分布の間の範囲では画素の個数が平坦になっているからである。この前提に基づけば、例えば請求項２に示すような２値化方法を採用することも考えられる。
【００２６】
本発明の２値化方法においても、２値化を行う基本手順は、上述した請求項１に記載の発明と同様である。そして、閾値決定処理のみが異なるため、この閾値決定処理について説明する。
本発明の２値化方法における閾値決定処理は、平均値算出処理を含んでいる。そこで最初に、この平均値算出処理を説明する。
【００２７】
平均値算出処理では、下側階調値と、上側階調値とを求め、その両方の階調値の相加平均を求める。
下側階調値は、指定された階調値よりも小さな階調値であって、当該下側階調値から指定された階調値までの範囲に所定個数の画素が含まれるような階調値をいう。一方、上側階調値は、指定された階調値よりも大きな階調値であって、指定された階調値から上側階調値までの範囲に所定個数の画素が含まれるような階調値をいう。
【００２８】
例えば図６は、図４（ａ）に示した閾値γ付近の画素の個数と階調値との対応関係を拡大して示した説明図である。なお、図６中の階調値γは、図４（ａ）の階調値γに対応している。
この図６において、階調値γが指定された場合、指定された階調値γ以下の画素のうちの所定個数の画素が範囲Ｄに入るのであれば、階調値ａが下側階調値となる。一方、指定された階調値γ以上の画素のうちの所定個数の画素が範囲Ｃに入るのであれば、階調値ｂが上側階調値となる。したがって、階調値γを指定して、平均値算出処理を実行すれば、下側階調値ａと上側階調値ｂとの相加平均γ’が算出される。
【００２９】
このような平均値算出処理を含む閾値決定処理は、次に示す手順（１）〜（３）にて実行される。以下、手順（１）〜（３）を具体的に説明する。
まず手順（１）では、全画素のうちの相対的に小さな階調値を有する所定割合の画素の有する最大の階調値と、全画素のうちの相対的に大きな階調値を有する所定割合の画素の有する最小の階調値とを求めて、当該階調値の相加平均を基準値として求める。この処理は、請求項１に記載の２値化方法の手順（１）と同様のものである。
【００３０】
続く手順（２）では、手順（１）にて算出された基準値を指定し、平均値算出処理にて算出される相加平均を境界値とする。
具体的に言えば、手順（１）では、図４（ａ）に示すように、階調値α及び階調値βを求めて、相加平均γを算出して基準値とする。手順（２）では、図６に示したように、平均値算出処理によって、基準値γ前後のそれぞれで所定個数の画素を含む下側階調値ａと上側階調値ｂとを求めて、相加平均γ’を境界値として算出する。
【００３１】
そして、手順（３）では、境界値と基準値との差が予め定められた値以下となっている場合には、境界値を閾値として決定する。一方、境界値と基準値との差が予め定められた値よりも大きい場合には、境界値を新たな基準値として、上記（２）からの手順を繰り返す。境界値γ’と基準値γとの差が予め定められた値以下となっている場合とは、境界値γ’がある程度収束した場合をいう。
【００３２】
つまり、手順（２）及び（３）を繰り返せば、階調値に対する画素の個数の分布が境界値γ’の前後の適当な範囲で一定となるまで境界値γ’は移動することになる。図４では、境界値γ’は、基準値γよりも、左方向（「暗」側の画素方向）へ移動して収束する。
【００３３】
本発明は、「暗」に相当する画素の分布と「明」に相当する画素の分布との間の範囲では、画素の個数が一定となっていることに着目したものであり、閾値近傍の画素の分布に従い閾値を補正する。これによって、「暗」の側の画素と「明」の側の画素の個数が極端に違っていても、「暗」に相当する画素と「明」に相当する画素を適切に切り分けるような閾値を決定することができる。その結果、取り込んだ画像データ中の情報コード領域と背景領域との面積比が変化しても、適切に多値データを２値化することができる。
【００３４】
また、階調値付近の画素の分布に従って閾値を決定するため、「暗」又は「明」側の画素の分布に最頻値が存在しない場合であっても適切に閾値を決定することができる。
なお、平均値算出処理における所定個数は、境界値と基準値との差に応じて決定することが考えられる。境界値と基準値との差が小さい場合には、所定個数を大きくする。逆に、境界値と基準値との差が大きい場合には、所定個数を小さくする。所定個数を大きくしたり、所定個数を小さくしたりすることによって、算出される境界値の収束時間が変わるためである。このようにすれば、上記手順（２）において算出される境界値を適切な速度で収束させることができる。
【００３５】
ところで、請求項１に記載の方法は、画素を「暗」側の画素と「明」側の画素に分けることによって、また、請求項２に記載の方法は、境界値付近の画素の分布によって、適切な閾値を決定するものであった。つまり、画素の全体の分布には、「暗」側の画素の分布と「明」側の画素の分布のみが存在することを前提としていた。しかし、例えば情報コードが印刷されている情報記録面に情報コードに重ねて図柄が印刷されているような場合も考えられる。この図柄は、例えば薄い青色などで印刷されていることが考えられ、その場合、この図柄部分に対応する画素は、「明」に相当する画素と「暗」に相当する画素の中間あたりの階調値を持つことが考えられる。図示すれば、例えば図８（ｂ）に記号Ｂで示すような分布が現れるという具合である。
【００３６】
そして、この図柄の部分は、情報コードと切り分けるために「明」として２値化したいのであるが、例えば請求項１に示した方法によれば、図柄部分に相当する画素が「暗」側の画素と見なされることも考えられる。この場合、この図柄に対応する画素は、「暗」として２値化される可能性がある。また、例えば請求項２に示した方法によれば、図８（ｂ）から分かるように、「明」に相当する画素の分布と、図柄部分に相当する画素の分布との境界部分に閾値が決定される可能性がある。そのため、この場合も、図柄に対応する画素は、「暗」として２値化される可能性がある。
【００３７】
そこで、請求項３に示すような方法を採用することが考えられる。
本発明においても、２値化を行う基本手順は、上述した請求項１及び２に記載の発明と同様である。そして、閾値決定処理が異なるため、この閾値決定処理を説明する。
【００３８】
本発明の２値化方法における閾値決定処理は、次の手順（１）〜（３）によって実行される。
手順（１）〜（３）を図８（ａ）及び図９に基づいて具体的に説明する。なお、図８（ａ）では、画像データ全体に中間調の図柄が印刷されているものとして説明する。
【００３９】
まず手順（１）では、画像データ全体を、所定数の画素を含む小エリアに分割し、当該小エリアに含まれる画素の最大の階調値と最小の階調値との差を算出する。例えば、画像データ全体を、図８（ａ）に示すように、小エリアｅ１，ｅ２，ｅ３，・・・という具合に分割する。なお、例えば一つの小エリアは３×３画素の領域とすることが考えられる。そして、各小エリアｅ１，ｅ２，ｅ３，・・・のそれぞれに含まれる画素の有する最大の階調値と最小の階調値との差を算出する。図８（ａ）に示した小エリアｅ８，ｅ９は、情報コードの一部がそのエリア内の一部にあるため、最大階調値と最小階調値との差は大きくなる。一方、小エリアｅ１〜ｅ７では、中間調の図柄部分に対応する画素と「明」の画素の階調値の差となるため、小エリアｅ８，ｅ９に比べて、最大階調値と最小階調値との差は小さくなる。
【００４０】
続く手順（２）では、小エリア毎の最大階調値と最小階調値との差の分布に基づいて、差が大きい側に分布する小エリアについて当該差の平均を求める。
この差の分布は図９に示す如くである。上述したように、小エリアｅ１〜ｅ７に対して算出される差は、相対的に小さくなるため、これらのエリアについては、階調差の小さい側に分布する。一方、小エリアｅ８，ｅ９に対して算出される差は、相対的に大きくなるため、これらのエリアについては、階調差の大きい側に分布する。差が大きい側に分布する小エリアについての差の平均は、図９では階調差ｄ２に相当する。この階調差ｄ２は、図８（ｂ）中のｄ２におおよそ対応するものである。
【００４１】
また、手順（２）では、所定数の小エリアにて構成される基準エリアを単位として、当該基準エリアに含まれる小エリアの最大又は最小の階調値の相加平均を求める。基準エリアは、所定数の小エリアから構成される。例えば、図８（ａ）では、縦横３つずつの小エリアから基準エリアが構成され、画像データ全体が６つの基準エリアで構成されている。小エリアｅ１〜ｅ９の９つの小エリアが基準エリアに相当するという具合である。なお、画像データの全エリアを基準エリアとしてもよいが、後述するようにこの基準エリア単位で閾値が決定されるため、画像データをいくつかの基準エリアに分けた方が適切な閾値が決定されるという点で有利である。
【００４２】
一の基準エリアに対する画素の分布が図８（ｂ）のようになるのであれば、最小の階調値の平均は、おおよそ「暗」に対応する画素の分布の最頻値辺りに算出される（記号ｈ１で示した）。一方、最大の階調値の平均は、おおよそ「明」に対応する画素の分布の最頻値辺りに算出される（記号ｈ２で示した）。
【００４３】
そして、続く手順（３）では、最小又は最大の階調値の相加平均を差の平均にて補正して閾値を決定する。上記手順（２）では、差の平均として図８（ｂ）に示した差ｄ２が算出される。したがって、手順（２）にて最小の階調値ｈ１を求める場合、このｄ２を所定倍してｈ１に足した値を閾値として決定するという具合である。例えば図８（ｂ）では、階調値ｈ１に（１／４）×ｄ２を足して閾値γ’を求めている。一方、手順（２）にて最大の階調値ｈ２を求める場合、このｄ２を所定倍してｈ２から引いた値を閾値として決定するという具合である。例えば図８（ｂ）では、階調値ｈ２から（３／４）×ｄ２を引いて閾値γ’を求めている。
【００４４】
つまり、この方法は、「暗」に相当する画素の分布と、「明」に相当する画素の分布との平均の差を求め、この差に応じて閾値を決定する。これによって、図８（ｂ）に示すように、中間調である図柄部分に相当する画素の分布を考慮して閾値を決定することができる。その結果、図柄と重ねて印刷されている情報コードであっても、適切な閾値を設定することができる。
【００４５】
なお、以上は、情報コードの２値化方法の発明として説明してきたが、この２値化方法を用いた光学情報読取装置の発明として実現することもできる。すなわち、請求項１〜４のいずれかに記載の２値化方法を用いて光学情報を読み取るよう構成されていることを特徴とする光学情報読取装置である。
【００４６】
また、同様に、この２値化方法を用いて情報コードの品質判断をするための装置を構成してもよい。すなわち、請求項１〜４のいずれかに記載の２値化方法を用いて読取対象の情報コードを画像データとして復元するコード品質判断補助装置である。この品質判断補助装置にて復元された画像データに基づいて、印刷された情報コードの印刷品質等を評価すれば、画像データ中の背景領域の大きさに関係なく、情報コードの品質を適切に判断することができる。
【００４７】
【発明の実施の形態】
以下、本発明を具体化した一実施形態を図面を参照して説明する。
［第１実施形態］
図１は、第１実施形態の２次元コード読取装置１のブロック図である。本第１実施形態の２次元コード読取装置１は、読取制御回路１０と、照明用発光ダイオード（照明ＬＥＤ）１１と、ＣＣＤエリアセンサ１２と、増幅回路１３と、Ａ／Ｄ変換回路１４と、アドレス発生回路１５と、同期パルス出力回路１６と、画像メモリ２０と、システム制御回路３０と、スイッチ群３１と、液晶表示器３２と、通信Ｉ／Ｆ回路３３と中心にして構成されている。
【００４８】
読取制御回路１０及びシステム制御回路３０は、ＣＰＵ、ＲＯＭ、ＲＡＭ、Ｉ／Ｏ等を備えたコンピュータシステムとして構成されている。読取制御回路１０は、ＲＯＭに記憶されているプログラムに従って後述する閾値決定処理等を実行する。一方、システム制御回路３０には、スイッチ群３１、液晶表示器３２及び通信Ｉ／Ｆ回路３３が接続されており、システム制御回路３０は、入出力制御を主として行う。
【００４９】
照明ＬＥＤ１１は、読取対象の光学情報である２次元コードに対して照明用の赤色光を照射するものである。
ＣＣＤエリアセンサ１２は、２次元的に配列された複数の受光素子であるＣＣＤを有しており、外界を撮像してその２次元画像を水平方向の走査線信号として出力する。なお、本第１実施形態では、このＣＣＤエリアセンサ１２からの「アナログ画像信号」としての走査線信号は増幅回路１３によって増幅されＡ／Ｄ変換回路１４に出力される。
【００５０】
この増幅回路１３は、読取制御回路１０から入力したゲインコントロール電圧に対応する増幅率で、ＣＣＤエリアセンサ１２から出力された走査線信号を増幅する。
Ａ／Ｄ変換回路１４はアナログの走査線信号をディジタル信号に変換して、画像メモリ２０に出力する。Ａ／Ｄ変換回路１４にてディジタル信号に変換されたデータは多値データであり、この多値データは画像メモリ２０の多値データ記憶領域２０ａに記憶される。また、この多値データは、各画素が８ビット（「０」〜「２５５」）の階調値を有するものとなっている。
【００５１】
同期パルス出力回路１６は、ＣＣＤエリアセンサ１２から出力される２次元画像データのパルスより十分に細かい同期パルスを出力する。アドレス発生回路１５はこの同期パルスをカウントして、画像メモリ２０の多値データ記憶領域２０ａに対するアドレスを発生させる。多値データは、アドレス毎に８ビット単位で書き込まれる。
【００５２】
読取制御回路１０は、画像メモリ２０の多値データ記憶領域２０ａに記憶された多値データを読み出し、この多値データに基づいて２値化のための閾値を決定する閾値決定処理を実行する。そして、この閾値決定処理にて決定された閾値に基づいて、読み出した多値データを２値データに変換（２値化）し、再び画像メモリ２０の２値データ記憶領域２０ｂに記憶する。
【００５３】
スイッチ群３１は、利用者が読取処理の開始を指示するための読取スイッチや、テンキーあるいは各種ファンクションキーを備えており、情報入力のために用いられる。
液晶表示器３２は、例えば２階調表示のＬＣＤとして構成されており、読み込んだ光学情報などを表示するためなどに用いられる。
【００５４】
通信Ｉ／Ｆ回路３３は、図示しない外部装置との間で通信を行うものであり、図示しない通信用発光素子を介してデータを外部装置に送信したり、図示しない通信用受光素子を介して外部装置からの信号（例えばシステムを動かすためのプログラムや送信を待機する命令等）を受信する。
【００５５】
このような構成を備えた本第１実施形態の２次元コード読取装置１は、ＣＣＤエリアセンサ１２から出力される走査線信号を増幅回路１３によって増幅し、その増幅された走査線信号をＡ／Ｄ変換回路１４によって多値データに変換して画像メモリ２０の多値データ記憶領域２０ａに記憶する。そして、読取制御回路１０が、多値データ記憶領域２０ａに記憶された多値データに基づいて、閾値決定処理を実行する。そして、閾値決定処理にて決定された閾値によって、多値データを２値化し、２値データとして画像メモリ２０の２値データ記憶領域２０ａに記憶する。そして、読取制御回路１０は、次に光学情報の読取処理を実行し、画像メモリ２０の２値データ記憶領域２０ａに記憶された２値データに基づいて、光学情報を読み取る。
【００５６】
本第１実施形態の２次元コード読取装置１は、上述した閾値決定処理に特徴を有している。
そこで次に、図面に基づいて、読取制御回路１０にて実行される閾値決定処理を説明する。なお、この閾値決定処理には、指定範囲平均値算出処理が含まれているため、まず最初に、図３のフローチャートに基づいて、この指定範囲平均値算出処理を説明し、その後、図２のフローチャートに基づいて、閾値決定処理を説明する。
【００５７】
図３中の最初のステップＳ３００において、指定範囲の階調値を有する画素の中で所定条件を満たす画素を選択する。指定範囲平均値算出処理は、後述する閾値決定処理からコールされるのであるが、閾値決定処理において階調値の範囲が指定される。したがって、ここでは指定された範囲の階調値を有する画素を対象に処理を行う。具体的には、指定範囲の階調値を有する画素の中で相対的に小さな階調値を有する１０％の画素を選択する。
【００５８】
続くＳ３１０では、Ｓ３００にて選択された画素の有する階調値の中で最大の階調値を下方階調値とする。
次のＳ３２０では、指定範囲の階調値を有する画素の中で所定条件を満たす画素を選択する。ここでは、指定範囲の階調値を有する画素の中で相対的に大きな階調値を有する１０％の画素を選択する。
【００５９】
続くＳ３３０では、Ｓ３２０にて選択された画素の有する階調値の中で最小の階調値を上方階調値とする。
そして、次のＳ３４０では、Ｓ３１０にて算出された下方階調値と、Ｓ３３０にて算出された上方階調値との相加平均を求め、その後、コール元の処理ステップへ戻る。
【００６０】
以上が指定範囲平均値算出処理である。
続けて、図２のフローチャートに基づいて、閾値決定処理を説明する。
まず最初のステップＳ１００において、全範囲の階調値「０」〜「２５５」を指定する。続くＳ１１０にて、図３を用いて上述した指定範囲平均値算出処理をコールする。そして、次のＳ１２０では、指定範囲平均値算出処理にて求められた相加平均γを基準値とする。
【００６１】
ここでＳ１００〜Ｓ１２０の処理を図４を用いて具体的に説明する。
上述したように画像メモリ２０の多値データ記憶領域２０ａに記憶された多値データは、「０」〜「２５５」の階調値を有する画素のデータである。図４は、ある多値データについての階調値とその階調値を有する画素の分布を示した説明図である。
【００６２】
Ｓ１００にて全範囲の階調値「０」〜「２５５」が指定され、Ｓ１１０にて指定範囲平均値算出処理がコールされると、指定範囲平均値算出処理において、まず指定範囲の階調値「０」〜「２５５」を有する画素の中で相対的に小さな階調値を有する１０％の画素が選択される（Ｓ３００）。図４（ａ）では、階調値「０」〜「α」の範囲に分布する画素が相対的に小さな１０％の画素に相当する。そして、これらの画素の有する最大の階調値が下方階調値とされる（Ｓ３１０）。すなわち、下方階調値は、階調値「α」である。
【００６３】
続いて、指定範囲の階調値「０」〜「２５５」を有する画素の中で相対的に大きな階調値を有する１０％の画素が選択される（Ｓ３２０）。図４では、階調値「β」〜「２５５」の範囲に分布する画素が相対的に大きな１０％の画素に相当する。そして、これらの画素の有する最小の階調値が上方階調値とされる。すなわち、上方階調値は、階調値「β」である。
【００６４】
そして、下方階調値αと上方階調値βとの相加平均γが求められる（Ｓ３４０）。上述したＳ１２０では、この相加平均γが基準値とされる。
続くＳ１３０では、基準値以下の階調値を指定し、次のＳ１４０で指定範囲平均値算出処理をコールする。そして、指定範囲平均値算出処理にて求められた相加平均を暗側平均値とする。
【００６５】
また、次のＳ１６０では、基準値以上の階調値を指定し、次のＳ１７０で指定範囲平均値算出処理をコールする。そして、指定範囲平均値算出処理にて求められた相加平均を明側平均値とする。
そして、続くＳ１９０では、暗側平均値と明側平均値の相加平均を境界値として算出する。
【００６６】
ここでＳ１３０〜Ｓ１９０の処理を図４を用いて具体的に説明する。
基準値以下の階調値「０」〜「γ」が指定され（Ｓ１３０）指定範囲平均値算出処理が実行されると（Ｓ１４０）、図４（ｂ）に示すように、下方階調値ａ１及び上方階調値ｂ１が算出され、相加平均ｃ１が算出される。そして、相加平均ｃ１が暗側平均値となる（Ｓ１５０）。また、基準値以上の階調値「γ」〜「２５５」が指定され（Ｓ１６０）範囲平均値算出処理が実行されると（Ｓ１７０）、図４（ｂ）に示すように、下方階調値ａ２及び上方階調値ｂ２が算出され、相加平均ｃ２が算出される。そして、この相加平均ｃ２が明側平均値となる（Ｓ１８０）。そして、暗側平均値ｃ１と明側平均値ｃ２の相加平均γ’が境界値として算出される（Ｓ１９０）。
【００６７】
図２中のＳ２００では、境界値γ’と基準値γとの差が所定値ε以下であるか否かを判断する。ここで｜γ’−γ｜≦εである場合（Ｓ２００：ＹＥＳ）、Ｓ２１０にて境界値γ’を閾値とし、その後、本閾値決定処理を終了する。一方、｜γ’−γ｜＞εである場合（Ｓ２００：ＮＯ）、Ｓ２２０にて境界値γ’を新たな基準値γとしてＳ１３０からの処理を繰り返す。
【００６８】
Ｓ１３０〜Ｓ１９０の処理が繰り返されると、暗側平均値は、「暗」に相当する画素の分布の平均階調値に近づき、一方、明側平均値は、「明」に相当する画素の分布の平均階調値に近づく。したがって、境界値γ’は、ある階調値にしだいに収束していく。
【００６９】
従来、全画素の中の暗い側１０％、明るい側１０％が含まれるような階調値を求めて、その相加平均を閾値とする手法があった。しかし、画像中の情報コードの占める面積が極端に小さくなった場合、すなわち暗い側の画素が明るい側の画素に比べて極端に少なくなると、図１１（ｂ）に示すように、算出される閾値γ２が階調値の高い側（明るい側）にずれて、その結果、「明」に相当する画素（図１１（ｂ）中に記号Ａで示した）が「暗」として２値化されるという不都合が生じていた。
【００７０】
これに対して、本第１実施形態では、基準値以下の階調値を指定して（図２中のＳ１３０）指定範囲平均値算出処理を実行することによって（Ｓ１４０）、「暗」側の画素の平均階調値（暗側平均値）を求め（Ｓ１５０）、基準値以上の階調値を指定して（Ｓ１６０）指定範囲平均値算出処理を実行することによって（Ｓ１７０）、「明」側の画素の平均階調値（明側平均値）を求めて（Ｓ１８０）、その相加平均を新たな境界値（基準値）とする（Ｓ２２０）という処理を繰り返して閾値を決定する（Ｓ２１０）。すなわち、「暗」側の画素と「明」側の画素とを分け、ぞれぞれの平均の階調値を求めて閾値を求めるようにしたため、「暗」側の画素と「明」側の画素の個数が極端に違っていても、「暗」に相当する画素と「明」に相当する画素を適切に切り分けるような閾値を決定することができる。その結果、取り込んだ画像中の２次元コード領域と背景領域との面積比が変化しても、適切に多値データを２値化することができる。
【００７１】
また、図３に示した指定範囲平均値算出処理では、「暗」又は「明」側の画素の平均階調値を求めるにあたって、対象となる画素のうちで階調値の低い側と高い側の所定割合の画素を含む境界の階調値（下方階調値、上方階調値）を算出して（図３中のＳ３１０，Ｓ３３０）、「暗」又は「明」側の画素の平均階調値を求める（Ｓ３４０）。したがって、「暗」又は「明」に対応する画素の分布に最頻値が存在しない場合であっても適切に閾値を決定することができる。
［第２実施形態］
上記第１実施形態は、全画素を「暗」側の画素と「明」側の画素の２つに分け、それぞれ「暗」側の画素の分布の平均値及び「明」側の画素の分布の平均値から閾値を決定するものであった。
【００７２】
これに対して、閾値として決定すべき階調値近傍の画素の個数は、その階調値の前後の適当な範囲において等しくなるはずである。図４（ａ）からも分かるように、「暗」に相当する画素の分布と「明」に相当する画素の分布の間の範囲では画素の分布が平坦になっているからである。この前提に基づいて閾値を決定する実施形態を第２実施形態として以下に説明する。なお、上記第１実施形態と同様の部分については、説明を省略し、同一の符号を付して記述する。ここでは、上記第１実施形態と異なる閾値決定処理についてのみ説明する。
【００７３】
図５は、本第２実施形態において、読取制御回路１０にて実行される閾値決定処理を示すフローチャートである。
まず最初のステップＳ４００において、全範囲の階調値「０」〜「２５５」を指定する。続くＳ４１０にて、上記第１実施形態で図３を用いて上述した指定範囲平均値算出処理をコールする。これによって、上記第１実施形態と同様に例えば図４（ａ）に示すような、下方階調値αと上方階調値βとの相加平均γが求められる。続くＳ４２０では、Ｓ４１０にて求められた平均値γを基準値とする。
【００７４】
そして、続くＳ４３０では、基準値γ以下の階調値ａであって、階調値「ａ」〜「γ」までの範囲の画素が所定個数Ｋとなるような「下側階調値」としての階調値「ａ」を求める。同様に、次にＳ４４０では、基準値γ以上の階調値ｂであって、階調値「γ」〜「ｂ」までの範囲の画素が所定個数Ｋとなるような「上側階調値」としての階調値「ｂ」を求める。
【００７５】
続くＳ４５０では、上側階調値ａと下側階調値ｂの相加平均を境界値γ’として算出する。
なお、上述したＳ４３０〜Ｓ４５０の処理が「平均値算出処理」に相当する。
ここでＳ４３０〜Ｓ４５０の処理を、図６を参照して具体的に説明する。
【００７６】
例えば図６は、図４（ａ）に示した階調値γ付近の画素の個数と階調値との対応関係を拡大して示した説明図である。図６中の階調値γは、図４（ａ）の階調値γに対応している。
この図６において、階調値γ＞ａであって、階調値「ａ」〜「γ」の範囲（図６中に記号Ｄで示した範囲）に分布する画素が所定個数Ｋとなるような階調値「ａ」を求める（Ｓ４３０）。所定個数Ｋは、図６中の分布曲線の範囲Ｄにおける下側の面積に相当する。一方、階調値γ＜ｂであって、階調値「γ」〜「ｂ」の範囲（図６中に記号Ｃで示した範囲）の画素が所定個数Ｋとなるような階調値「ｂ」を求める（Ｓ４４０）。所定個数Ｋは、図６中の分布曲線の範囲Ｃにおける下側の面積に相当する。そして、階調値ａと階調値ｂの相加平均を境界値γ’として算出する（Ｓ４５０）。
【００７７】
そして、図５中のＳ４６０では、境界値γ’と基準値γとの差が所定値ε以下であるか否かを判断する。ここで｜γ’−γ｜≦εである場合（Ｓ４６０：ＹＥＳ）、Ｓ４７０にて境界値γ’を閾値とし、その後、本閾値決定処理を終了する。一方、｜γ’−γ｜＞εである場合（Ｓ４６０：ＮＯ）、Ｓ４８０にて境界値γ’を新たな基準値γとしてＳ４３０からの処理を繰り返す。
【００７８】
Ｓ４３０〜Ｓ４５０の処理を繰り返せば、階調値に対する画素の個数の分布が境界値γ’の前後の適当な範囲で一定となるまで境界値γ’は移動することになる。図４では、境界値γ’は、基準値γよりも左方向（「暗」側の画素方向）へ移動して収束する。
【００７９】
本第２実施形態では、「暗」に相当する画素の分布と「明」に相当する画素の分布との境界部分は、画素の分布が一定となっていることに着目し、境界値近傍の画素の分布に従い閾値を決定する。これによって、「暗」の側の画素と「明」の側の画素の個数が極端に違っていても、「暗」に相当する画素と「明」に相当する画素を適切に切り分けるような閾値を決定することができる。その結果、取り込んだ画像中の２次元コード領域と背景領域との面積比が変化しても、適切に多値データを２値化することができる。
【００８０】
また、階調値付近の画素の分布に従って閾値を決定するため、「暗」又は「明」側の画素の分布に最頻値が存在しない場合であっても適切に閾値を決定することができる。
［第３実施形態］
上記第１実施形態においては、全画素を「暗」側の画素と「明」側の画素に分けることによって、また、上記第２実施形態においては、境界値付近の画素の分布に着目して、適切な閾値を決定するものであった。つまり、画素の全体の分布には、「暗」側の画素の分布と「明」側の画素の分布のみが存在することを前提としていた。しかし、例えば情報コードが印刷されている情報記録面に情報コードに重ねて図柄が印刷されているような場合も考えられる。この図柄は、例えば薄い青色などで印刷されていることが考えられ、その場合、この図柄部分に対応する画素は、「明」に相当する画素と「暗」に相当する画素の中間あたりの階調値を持つことが考えられる。例えば図８（ｂ）に記号Ｂで示すように、「暗」に相当する画素の分布と「明」に相当する画素の分布の間に、この図柄部分に対応する画素の分布が現れるという具合である。
【００８１】
そして、この図柄の部分は、情報コードと切り分けるために「明」として２値化したいのであるが、上記第１実施形態に示した方法によれば、図柄部分を含む画素の分布が「暗」側の画素と見なされることも考えられる。この場合、この図柄に対応する画素は、「暗」として２値化される可能性がある。また、上記第２実施形態に示した方法によれば、図８（ｂ）から分かるように、「明」に相当する画素の分布と、図柄部分に相当する画素の分布との境界部分に閾値が決定される可能性がある。そのため、この場合も、図柄に対応する画素は「暗」として２値化される可能性がある。
【００８２】
本第３実施形態の２次元コード読取装置１は、このように情報コードの記録面に情報コードに重ねて図柄が印刷されている場合であっても、適切な閾値を決定して情報コードを２値化する。なお、上記第１及び第２実施形態と同様の部分については説明を省略し、同一の符号を用いて記述する。ここでは、上記第１及び第２実施形態の閾値決定処理及びその後の２値化処理に相当する２値化処理についてのみ説明する。
【００８３】
図７は、本第３実施形態における２値化処理を示すフローチャートである。
まず最初のステップＳ５００において、取り込んだ多値画像データを小エリアに分割する。本第３実施形態において一の小エリアは３×３画素となっている。
続くＳ５１０では、各小エリアに含まれる画素の最大階調値、最小階調値、及びその差を算出する。
【００８４】
次のＳ５２０では、小エリア縦横３つ分の基準エリアを選択し、この基準エリアを単位として、この基準エリアに含まれる小エリアの最大階調値の相加平均ｈ２を求める。
そして、続くＳ５３０では、各小エリアの最大階調値と最小階調値との差の分布をとる。続くＳ５４０では、差の分布において、相対的に差が大きい方の分布の平均値ｄ２を算出する。
【００８５】
次のＳ５５０では、Ｓ５２０にて算出した平均値ｈ２からｄ２の（３／４）倍を引いた値を閾値として算出する。
そして、Ｓ５６０では、選択した基準エリアの各小エリアに含まれる画素を、Ｓ５５０にて算出された閾値を用いて２値化する。
【００８６】
続くＳ５７０では、全てのエリアを２値化したか否かを判断する。ここで２値化していないエリアが存在する場合（Ｓ５７０：ＮＯ）、Ｓ５２０からの処理を繰り返す。一方、全てのエリアを２値化したと判断された場合（Ｓ５７０：ＹＥＳ）、本２値化処理を終了する。
【００８７】
ここで上述した本第３実施形態における２値化処理を、図８を用いて具体的に説明する。
上述したように、画像データ全体を、所定数の画素を含む小エリアに分割し（図７中のＳ５００）、当該小エリアに含まれる画素の最大の階調値、最小の階調値、及びその差を算出する（Ｓ５１０）。つまり、画像データ全体を、図８（ａ）に示すように、小エリアｅ１，ｅ２，ｅ３，・・・に分割する。そして、各小エリアｅ１，ｅ２，ｅ３，・・・のそれぞれに含まれる画素の有する最大の階調値と最小の階調値とを求め、さらに、その差を算出する。図８（ａ）に示した小エリアｅ８，ｅ９は、情報コードの一部がそのエリア内の一部にあるため、最大階調値と最小階調値との差は大きくなる。一方、小エリアｅ１〜ｅ７では、中間調の図柄部分に対応する画素と「明」の画素の階調値の差となるため、小エリアｅ８，ｅ９に比べて、最大階調値と最小階調値との差は小さくなる。
【００８８】
次に所定数の小エリアにて構成される基準エリアを単位として、当該基準エリアに含まれる小エリアの最大の階調値の相加平均を求める（Ｓ５２０）。この基準エリアは、縦横３つの小エリアから構成される。図８（ａ）に示す如く、全エリアを６つの基準エリアに分ける。例えば小エリアｅ１〜ｅ９の９つが基準エリアを構成するという具合である。そして、この基準エリアにに含まれる小エリアの最大の階調値の相加平均を求める。なお、基準エリアとしては、例えば画像データの全エリアを考えてもよいが、後述するようにこの基準エリア単位で閾値が決定されるため、画像データをいくつかの基準エリアに分けた方が適切な閾値が決定されるという点で有利である。
【００８９】
基準エリアに対する画素の分布が図８（ｂ）のようになるのであれば、最大の階調値の平均は、おおよそ「明」に対応する画素の分布の最頻値辺りに算出される（記号ｈ２で示した）。
次に小エリア毎に算出された差の分布に基づいて、差が大きい側に分布する小エリアについて当該差の平均を求める。差の分布は図９に示す如くである。上述したように、小エリアｅ１〜ｅ７に対して算出される差は、相対的に小さくなるため、これらのエリアについては、階調差の小さい側に分布する。一方、小エリアｅ８，ｅ９に対して算出される差は、相対的に大きくなるため、これらのエリアについては、階調差の大きい側に分布する。したがって、図９に示す如く、全領域での階調値の差の分布を見れば、階調値の差が相対的に大きな小エリアに対応する部分と、階調値の差が相対的に小さな小エリアに対応する部分が現れる。
【００９０】
そこで、階調差が大きい側の分布の平均の階調差を算出する（Ｓ５４０）。すなわち、図９中における平均値ｄ２を算出する。この平均値ｄ２は、図８（ｂ）中のｄ２におおよそ対応するものである。
続けて最大の階調値の相加平均ｈ２を差の分布の平均値ｄ２にて補正して閾値を決定する。本実施形態では、相加平均ｈ２からｄ２の（３／４）倍を引いた値を閾値としている。
【００９１】
つまり、本第３実施形態における方法は、「暗」に相当する画素の分布と、「明」に相当する画素の分布との差を求め、この差に応じて閾値を決定する。これによって、図８（ｂ）に示すように、中間調である図柄部分に相当する画素の分布を考慮して閾値を決定することができる。その結果、図柄と重ねて印刷されている情報コードであっても、適切な閾値を設定することができる。
【００９２】
なお、本第３実施形態においては、小エリア縦横３つ分の基準エリアを選択し、この基準エリアを単位として、この基準エリアに含まれる小エリアの最大階調値の相加平均ｈ２を求め（図７中のＳ５２０）、相加平均ｈ２からｄ２の（３／４）倍を引いた値を閾値として決定したが（Ｓ５５０）、図８（ｂ）に示したように、基準エリアに含まれる小エリアの最小階調値の相加平均ｈ１を求め、この相加平均ｈ１に差の平均ｄ２の（１／４）倍を足した値を閾値として決定してもよい。
［その他］
以上、本発明はこのような上記実施形態に何等限定されるものではなく、本発明の主旨を逸脱しない範囲において種々なる形態で実施し得る。
【００９３】
例えば上記第１、第２及び第３実施形態では、本発明を２次元コード読取装置に適用したものであったが、例えばバーコードを読み取るバーコード読取装置に適用することももちろん可能である。また、情報コードの品質判断をするための装置に適用し、読取対象の情報コードを画像データとして復元するコード品質判断補助装置を構成することも考えられる。このコード品質判断補助装置にて復元された画像データに基づいて、印刷された情報コードの印刷品質等を評価すれば、画像データ中の背景領域の大きさに関係なく、情報コードの品質を適切に判断することができる。
【図面の簡単な説明】
【図１】実施形態の２次元コード読取装置を示すブロック図である。
【図２】第１実施形態の閾値決定処理を示すフローチャートである。
【図３】第１及び第２実施形態の指定範囲平均値算出処理を示すフローチャートである。
【図４】閾値決定処理を具体的に示す説明図である。
【図５】第２実施形態の閾値決定処理を示すフローチャートである。
【図６】閾値決定処理を具体的に示す説明図である。
【図７】第３実施形態の２値化処理を示すフローチャートである。
【図８】２値化処理における閾値決定処理を示すフローチャートである。
【図９】小エリアにおける階調差の分布を示す説明図である。
【図１０】画像中の２次元コード領域と背景領域との関係を示す説明図である。
【図１１】従来の問題点を示すための説明図である。
【符号の説明】
１…２次元コード読取装置                １０…読取制御回路
１１…照明用発光ダイオード（照明ＬＥＤ）  １２…ＣＣＤエリアセンサ
１３…増幅回路                            １４…Ａ／Ｄ変換回路
１５…アドレス発生回路                    １６…同期パルス発生回路
２０…画像メモリ                          ２０ａ…多値データ記憶領域
２０ｂ…２値データ記憶領域                ３０…システム制御回路
３１…スイッチ群                          ３２…液晶表示器
３３…通信Ｉ／Ｆ回路
【図１】
0003994571.tif 000002
【図２】
0003994571.tif 000003
【図３】
0003994571.tif 000004
【図４】
0003994571.tif 000005
【図５】
0003994571.tif 000006
【図６】
0003994571.tif 000007
【図７】
0003994571.tif 000008
【図８】
0003994571.tif 000009
【図９】
0003994571.tif 000010
【図１０】
0003994571.tif 000011
【図１１】
0003994571.tif 000012