白黒を認識する原理
白黒のとらえ方
コードを読み取るカメラは下記のような原理でコントラスト(白・黒)を捉えています。白く見えている部分は、カメラに入光する光量が“多い”ため白く見えます。反対に黒く見えている部分は、カメラに入光する光量が“少ない”ため黒く見えます。この光量の多い・少ないがコントラストに影響します。
色による見え方の違い
2次元コードを読み取る場合、コードと背景のコントラストが高くなければいけません。照明光の色、および読み取り対象コードのコード色や背景色により白黒のとらえ方が変わります。2次元コードの読み取りをおこなう場合は、色による特性を正しく理解する必要があります。色は光の波長により決まります。たとえば赤の光は波長が長く、青の光は波長が短くなります。人の目は、この波長の違いを色として捉えます。赤く見えるものは赤い光を発する特長を持っており、青く見えるものは青い光を発する特長を持っています。
言い換えると、赤く見えるものは赤以外の光は発さない特長を持っており、青く見えるものは青以外の光を発さない特長を持っています。これを2次元コードリーダに置き換えます。一般的に赤色照明を使用することが多いです。
赤色照明で白いもの、黒いもの、赤いもの、青いものを照らした場合、反射は次項のようになります。
赤色照明で白もしくは黒の対象物に照明を当てた場合の反射光
白色は、すべての色を反射させる特長を持っています。したがって、赤色照明から発せられた光は白いものに当たり反射します。
反対に黒色は、すべての色を吸収する(光を反射しない)特長を持っています。そのため、赤色照明から発せられた光は黒いものに当たると、吸収され、ほとんど反射がおきません。
2次元コードリーダで撮像すると以下のようになります。
コードの背景は白で明るく、コード部の黒は黒く写真に映っています。そのため2次元コードリーダには、コントラストが高い画像が取得できています。
赤色照明で赤もしくは青の対象物に照明を当てた場合の反射光
赤色は、赤色を反射させる特長を持っています。したがって、赤色照明から発せられた光は赤いものにあたり反射します。
反対に青色は、青以外の光を吸収する(光を反射しない)特長を持っています。そのため、赤色照明から発せられた光は青いものに当たると、吸収され、ほとんど反射がおきません。
2次元コードリーダで撮像すると以下のようになります。
赤色のコードは、背景もコードも赤色光を反射する色のため、背景とコードのコントラストが低い状態となっています。反対に、青色のコードは、背景は赤色光を反射し、コードは赤色光を吸収します。その結果、背景とコードのコントラストが高い画像が取得できています。
以上のようにコントラストを高くするには、照明光、および対象物の背景とコードの色の組み合わせが重要になります。波長が近い色の組み合わせにしてしまうと、コントラストが低くなり、読み取りが不安定になります。2次元コードを読み取る場合は、照明色、背景色、コード色の関係に合わせて、 仕様をご検討ください。
読み取り対象ワークの表面状態、形状による特性
2次元コードを読み取るうえで、もう一つ重要となるのが、読み取り対象ワークの表面状態や、形状です。ラベル以外のものに2次元コードが印字されている場合、表面状態や形状により、照明光の反射の仕方が変わります。そのため、そのワークにあった読み取り方をしなければ、安定した読み取りができなくなります。読み取り仕様を決める場合は、対象ワークの特長を理解する必要があります。
反射の種類
反射は、2つに大別されます。
鏡面反射
一方向からの光が別の一方向に出て行く反射のことで、鏡に光を当てたときに起こるような反射のことを指します。正反射とも呼びます。
鏡面反射の場合、入射角と反射角が等しくなり、拡散反射はほとんどおきません。
拡散反射
ざらざらした表面に光が当たり、さまざまな方向に反射することを指します。乱反射とも呼びます。
鋳肌面に印字された2次元コード
鋳肌表面は全体に凸凹があります。ワークの印字表面を拡大すると、セルがマーキングされた部分でも、鋳肌表面の凸凹の影響により、明るく光るところと黒くなるところが発生します。同様にセルの周囲にも濃淡が発生します。
コードリーダのグレー画像を確認すると、通常の写真で確認するより、背景との差が小さくなることが確認できます。グレー画像を2値化すると、2次元コードの周囲に黒い成分が多く発生するため、正しく2次元コードを認識できない状態となります。
コードリーダの照明を強く発光させると、鋳肌面の凸凹の黒い成分が白飛びした状態となります。
セル部分はマーキングにより印字されているため、薄くはなりますが、鋳肌面の凸凹よりはっきりした状態になります。
2値化画像を見ると、正しくコードが認識できる状態になるため、安定した読み取りが可能です。鋳肌面への直接印字には, 照明光量を大きくできるようにしてみてください。
切削・加工面に印字された2次元コード
金属表面には、細い筋状の加工傷がついているときがあります。この加工傷をヘアラインといい、切削面や加工面、または圧延した金属表面に発生します。この細かな加工傷のある表面に照明光を直接照射すると、加工傷方向に対して垂直に照明光の濃淡が発生し、2次元コードのセルが認識できない状態になります。
切削面、加工面を研磨していない場合、その加工痕が残った状態となります。上図のように円柱ワークの切断面に2次元コードを印字すると、その切断方向に加工痕が残るため、その加工痕方向に照明光が伸びるような状態(下図)となります。
ヘアラインの向きに関係なく2次元コードを印字されている場合が多く、リング照明等を直接照射すると、ワークによってさまざまな照明の反射状態となるため、安定した読み取りができません。
照明光をムラなく照射するために拡散板を使用します。(A図)印字がはっきりとした物であれば、照明光の光量を強くすることで、2次元コード周囲のヘアライン部分を白飛びさせ、2次元コードのみ浮き上がった状態を作ることがで きます。(B図)
ヘアライン上に2次元コードを印字する場合は、セルを深くきっちり印字することが重要です。
黒樹脂面に印字された2次元コード
黒い樹脂ワークは、強度を高めるためにガラス繊維を混ぜることがよくあります。
その影響により、ワーク表面状態が変化したり、印字された2次元コードの発色状態が変化します。
どちらのコードも樹脂面にレーザで印字しています。2次元コードリーダで画像を取得すると、ガラス繊維成分の影響により、黒樹脂面が強く反射し、白くなる部分が多く発生します。
通常の状態では、どちらもコードが白く見えるはずですが、グレー画像を見ると、発色が少ない下側のコード部は黒く反転した状態になっています。これは、コード周囲より、印字部の反射光量が小さい状態となるためです。2次元コードリーダの設定には白黒反転の読み取りを選択するものもあり、このような状態が発生すると、単一の設定条件では読み取りできない状態になります。
ガラス繊維の光の反射を逃すため、コードリーダを斜め方向に設置します。斜めから照明光を照射すると、コードの印字部だけの反射となり、見た目と同様に、白印字(白黒反転)状態に見えるようになります。
鏡面に印字された2次元コード
ウェハ表面や、研磨された表面に2次元コードを印字した場合、ワーク表面に写り込むコードリーダや照明の光源の影響により、実際の読み取り範囲が非常に狭くなっていたり、2次元コードを正しく認識できない状態になっていたりする場合があります。
鏡面上に印字された2次元コードは、印字方法により、人の見た目では黒発色や白発色の状態になります。しかし、カメラの画像では、どちらの印字状態でもセルが白い反転状態となります。
コードリーダを正面に設置すると、照明の光源や、コードリーダの読み取り部が、ワーク表面に写り込み、2次元コードは正しく認識できても、照明や読み取り部の影響で、安定した読み取りができる範囲が狭くなったり、セルが隠れてしまうような状態が発生します。
コードリーダを斜めに設置することで、照明の鏡面反射光を逃し、セルでの拡散反射光のみを受光するコード面に読み取り部が写り込まない状態になります。安定した読み取りを実現するためには、コードリーダをワーク面に対して斜め方向に設置すると良いでしょう。