2値化は、画像内のピクセル強度に基づいて画像を粒子領域 (検査中のオブジェクトを含む) と背景領域の2つの領域に分割します。

ピクセル値の領域は、ユーザによって、または自動的にしきい値として定義されます。範囲外のピクセル値は0になり、範囲内のピクセル値は1またはユーザ定義の値になります。2値化は、バイナリ画像の結果を生成します。

使用目的

2値化を使用してバイナリ画像を生成し、検査を特定の関心領域内に集中します。

2値化は、粒子解析、黄金テンプレート比較、バイナリ粒子分類などのマシンビジョンアプリケーションで最初に実行される処理です。

Visionは、以下の2値化方法をサポートしています。

  • グローバルグレースケール2値化—照明が一定である状態でグレースケール画像にグローバルグレースケール2値化を使用します。グローバルグレースケール2値化は以下の方法で実行することができます。
    • 手動2値化―しきい値範囲を手動で設定することができます。コントラストが明確で照明が一定である画像に推奨されます。
    • クラスタ化―2つ以上のクラスに画像を2値化します。クラスタ化は、最も頻繁に使用される自動2値化の方法です。
    • エントロピー―画像上の極めて小さい関心領域を検出します。この方法は欠陥検出などのアプリケーションで使用されます。
    • 相互分散―クラスがあまり不均衡でない画像に使用します。また、関心オブジェクトとその背景が同等数のピクセルを含んでいる場合に使用します。最適な結果を得るには、最小クラスが最大クラスの最低5%でなければなりません。
    • メトリック―初期のグレースケール値を表す表面によって決定される各2値化の値を計算します。関心オブジェクトとその背景が同等数のピクセルを含んでいる場合に使用する方法です。
    • モーメント―コントラストの低い画像に使用します。
  • グローバルカラー2値化—照明が一定である状態でカラー画像にグローバルカラー2値化を使用します。
  • ローカル2値化—ローカル2値化を使用して、影や強い照明傾斜などの不均等な照明の変化が生じる画像で関心領域を隔離します。ローカル2値化は以下の方法で実行することができます。
    • Niblackアルゴリズム―表示検査またはOCR画像などのアプリケーションに対して有効です。
    • Sauvolaアルゴリズム―ノイズが少なく、粒子の形状が維持されます。
    • 変更後のSauvolaアルゴリズム―Sauvolaアルゴリズムより少ない計算量で済みます。
    • 背景補正アルゴリズム―広範囲の空領域でノイズを軽減します。
  • グローバルグレースケール2値化

    グローバルグレースケール2値化には、手動と自動2値化の手法があります。

    使用目的

    グローバル2値化は、検査する各画像内また複数の画像間で照明が一定である場合に最も適しています。

    概念

    粒子は「強度の範囲」によって特徴付けられます。粒子は、特定のしきい値範囲 (明度またはグレー階調) に属するグレーレベル値を持つピクセルで構成されます。その他のすべてのピクセルは背景の一部分としてみなされます。

    2値化では、「しきい値範囲」と呼ばれるピクセル値の範囲に属するすべてのピクセルが1またはユーザ定義の値に設定され、画像内のその他のすべてのピクセルは0に設定されます。しきい値範囲内のピクセルは粒子の一部とみなされます。しきい値範囲外のピクセルは背景の一部とみなされます。

    以下の図は、画像のヒストグラムを示します。画像内の166から255の値のすべてのピクセルは粒子ピクセルとしてみなされます。

    手動2値化

    手動2値化でのしきい値範囲には、下限しきい値 (最小値) と上限しきい値 (最大値) の2つのユーザ定義のパラメータが含まれます。下限しきい値以上のグレーレベル値と上限しきい値以下のグレーレベル値を含むすべてのピクセルは、画像内の粒子に属するピクセルとして選択されます。

    手動2値化の例

    この例では、以下のソース画像を使用します。

    しきい値範囲[166, 255] (最も明るい領域) に属するピクセルを強調すると、以下の画像が生成されます。

    自動2値化

    Visionには、5つの自動2値化法があります。

    • クラスタ化
    • エントロピー
    • 相互分散
    • メトリック
    • モーメント

    手動2値化とは異なり、上記の手法は下限と上限値を設定することを必要としません。また、光の強度が画像間で異なる場合に最も適しています。

    クラスタ化は、使用可能な唯一のマルチクラス2値化法です。クラスタ化は、3次元または高いレベルの画像を作成できるように、マルチクラスに作用します。

    その他の4つの手法 (エントロピー、メトリック、モーメント、相互分散) は、バイナリ2値化のために確保されます。適用するアルゴリズムは、2値化する画像のタイプによって異なります。

    ソース画像によっては、自動2値化関数 (エントロピーやモーメントなど) を適用する前に元のグレースケール画像を反転するとよい場合があります。この操作は、特に背景が前景よりも明るい場合に有効です。

    クラスタ化

    クラスタ化は、最も頻繁に使用される自動2値化です。2つ以上のクラスに画像を2値化する場合にクラスタ化を使用します。

    クラスタ化によって、画像で認識される位相数に対応する離散クラス数の範囲内の画像のヒストグラムがソートされます。グレー値が決定し、重心は各クラスに対して決定します。この処理は、各位相またはクラスに対して重心を表す値を取得するまで繰り返されます。

    クラスタ化の例

    この例では、画像の2相と3相に対してクラスタ化法を使用します。通常この関数の結果は、画像のヒストグラム値と照明の状態に影響されないことに注目してください。

    この例では、以下の元の画像を使用します。

    2相のクラスタ化は、以下の画像を生成します。

    3相のクラスタ化は、以下の画像を生成します。

    エントロピー

    旧来の画像解析テクニックに基づいて、エントロピーは画像上の極めて小さい領域を占める粒子を検出するのに最も適しています。たとえば、この関数は欠陥検出に適しています。

    相互分散

    相互分散は判別解析に基づいています。最適なしきい値は、しきい値に対する相互分散を最大化することで決定されます。

    メトリック

    各しきい値に対して、初期のグレースケールを表す表面によって求められる値が計算されます。最適なしきい値は、最小値に対応します。

    モーメント

    この手法は、コントラストが悪い画像に適しています。モーメント法は、観察する画像が、理論上元のバイナリ画像を不鮮明にしたものであるという仮定に基づいています。電気ノイズまたは非局所化によって生じる、集録処理中に生成される不鮮明性は、不鮮明な画像と元の画像の両方に対して平均と分散の統計モーメントが同じであるかのように処理されます。この関数によって、理論上のバイナリ画像が再計算されます。

    詳細情報

    すべての自動2値化法は、画像のヒストグラムを使用して、しきい値を決定します。以下の図は、ヒストグラムのパラメータを示すときに使用する表記を示します。これらの表記は、各自動2値化が画像に対してしきい値を計算する方法を示すためにセクション全体で使用されます。

    • iはグレーレベル値、
    • kは、しきい値として選択されたグレーレベル値を示します。
    • h(i) は、各グレーレベル値での画像内のピクセル数を表します。
    • Nは、画像内のグレーレベルの合計数を示します(8ビット画像では256)。
    • nは、画像内のピクセルの合計数を表します。

    自動2値化法を使用して、図に示すように、k 以下のすべてのグレーレベル値がクラス0に属し、その他のグレーレベル値は別のクラス1に属するように、しきい値ピクセル値k を決定します。

    クラスタ化

    しきい値は、以下の状態がTRUEである場合のピクセル値kを指します。

    μ 1 + μ 2 2 = k

    ここで

    • μ1は、0~kの間のすべてのピクセル値の平均です。
    • μ2は、k + 1~255の間のすべてのピクセル値の平均です。

    エントロピー

    この手法では、しきい値は情報理論をヒストグラムデータに適用することで取得されます。情報理論では、ヒストグラムのエントロピーはヒストグラムに関連する情報の量を示します。計算式は、次のとおりです。

    p i = h i i = 0 N - 1 h i

    はグレーレベルiの発生する確率を表します。範囲[0, N – 1]のグレーレベルを含む画像のヒストグラムのエントロピーは、以下の公式で計算されます。

    H = i = 0 N - 1 p i ログ 2 p b i

    kがしきい値である場合、以下の2つのエントロピー

    H b = - i = 0 k p i ログ 2 p b i
    H w = - i = k + 1 N - 1 p w i ログ 2 p w i

    は、2値化後の画像内の黒白のピクセルに関連するエントロピー (情報) の量を示します。Pb(i) は背景の確率、Pb(w) はオブジェクトの確率です。

    最適なしきい値は、以下の公式で計算される2値化された画像のエントロピーを最大化するグレーレベル値です。

    Hb + Hw

    簡素化すると、しきい値は以下の表現が最大化されるピクセル値kです。

    - 1 i = 0 k h i i = 0 k ログ 2 h i + 1 h i - 1 i = k + 1 N - 1 h i i = k + 1 N - 1 ログ 2 h i + 1 h i + ログ 2 i = 0 k h i i = k + 1 N - 1 h i

    相互分散

    しきい値は、以下の表記が最大化されるピクセル値kです。

    σ B 2 k = μ T ω k - μ k 2 ω k 1 - ω k

    ここで、

    μ k = i = 0 k i p i
    μ T = i = 0 N - 1 i p i
    ω k = i = 0 k p i

    ここで、

    • σ B 2 k
      はクラス間分散です。
    • μ k
      は、ビン0~kを含むクラスの平均です。
    • μ T
      は全体の平均です。
    • ω k
      は、クラス確率です。

    メトリック

    しきい値は、以下の表記が最小化されるピクセル値kです。

    i = 0 k h i i - μ 1 + i = k + 1 N - 1 h i i - μ 2

    ここで、

    • μ1は、0の間にある画像内のすべてのピクセル値の平均です。
    • k、およびμ2は、k + 1と255の間にある画像内のすべてのピクセル値の平均です。

    モーメント

    この手法では、2値化される画像のモーメントがバイナリ出力画像に確保されるように、しきい値が計算されます。

    画像のk次モーメントmは、以下のように計算されます。

    m k = 1 n i = 0 i = N - 1 i k h i

    ここで、nは画像内のピクセルの合計数を指します。

    グローバルカラー2値化

    カラー2値化は、カラー画像をバイナリ画像に変換します。

    使用目的

    解析と処理用に形状を隔離する、または不要な特徴部分を削除する必要がある場合、カラー画像を2値化します。

    メモ カラー2値化を実行する前に、ルックアップテーブルまたは等化関数で画像を改善する必要がある場合があります。

    概念

    カラー画像を2値化するには、3つのカラー成分のそれぞれに対してしきい値範囲を指定します。出力画像内のピクセルは、そのカラー成分が指定された範囲内である場合のみ1に設定されます。それ以外の場合、ピクセル値は0に設定されます。

    以下の図は、RGB形式で保存されるカラー画像の各平面のヒストグラムを示します。グレーで表示されている領域は、各カラー平面に対するしきい値範囲を示します。バイナリ画像内で1に設定されるカラー画像内のピクセルの場合、その赤の値は130から200の範囲内、その緑の値は100から150の範囲内、その青の値は55から115の範囲内にある必要があります。

    RGB画像を2値化するには、最初に2値化後に解析するオブジェクトを構成するピクセルの赤、緑、青の値を決定する必要があります。次に、処理の対象となるカラー値を取り囲む各カラー平面のしきい値範囲を指定します。処理するカラーを隔離するために、3つのカラー平面に対して正しい範囲を選択する必要があります。

    以下の図は、HSL形式で保存されるカラー画像の各平面のヒストグラムを示します。グレーで表示されている領域は、各カラー平面に対するしきい値範囲を示します。バイナリ画像内で1に設定されるカラー画像内のピクセルの場合、その色相の値は165から215の範囲内、その彩度の値は0から30の範囲内、その明度の値は25から210の範囲内にある必要があります。

    色相平面には、画像内の主要なカラー情報が含まれています。HSL画像を2値化するには、最初に2値化後に解析するピクセルの色相値を決定する必要があります。一部のアプリケーションでは、同じ色相値と異なる彩度値のあるカラーを選択する必要がある場合があります。明度平面には画像内の強度レベルに関する情報のみが含まれているため、すべての明度値を含むように明度しきい値範囲を設定することができます。これにより、2値化処理が強度情報に影響されなくなります。

    ローカル2値化

    ローカル2値化は、ローカル適応2値化としても知られ、グレースケール画像を粒子領域と背景領域に分割することによりバイナリ画像を作成するという点で、グローバルグレースケール2値化と似ています。粒子の一部分または画像全体の強度統計から抽出される単一のしきい値に基づいたグローバルグレースケール2値化とは異なり、ローカル2値化は近接ピクセルの強度統計に基づいてピクセルを分類化します。

    使用目的

    ローカル2値化を使用して、不規則な照明の変化が生じる画像内の背景から処理対象のオブジェクトを隔離します。強い明度傾斜または陰影の結果生じる変化など、不規則な照明の変化はグローバル2値化の効用を低下させる場合があります。

    以下の図は、不規則な照明の変化のある画像に対するグローバル2値化とローカル2値化を示します。図Aは、LCD数字の元の検査画像を示します。図Bは、グローバル2値化がどのように検査画像を分割するかを示します。右下の数字以外のピクセルが粒子として誤って選択されていることに注目してください。図Cは、ローカル2値化がどのように検査画像を分割するかを示します。LCDデジタルに属するピクセルのみが粒子として選択されます。

    概念

    ローカル2値化アルゴリズムは、検査画像内の各ピクセルに対してローカルピクセルの強度統計 (範囲、分散、表面のフィッティングパラメータ、またはそれらの論理的な組み合わせなど) を計算します。この計算の結果は、検討中のピクセルに対するローカルしきい値です。アルゴリズムは検討中のピクセルの元の強度値をローカルしきい値に比較して、ピクセルが粒子または背景に属するかどうかを決定します。

    ユーザ定義のウィンドウは、どの近接ピクセルが統計計算に考慮されるかどうかを指定します。デフォルトのウィンドウサイズは32 x 32です。

    メモ 偶数のウィンドウ寸法と奇数のウィンドウ寸法は同じ中心ピクセルを生成します。たとえば、以下の図で検討中のピクセルは4 x 4のローカル2値化ウィンドウと3 x 3のローカル2値化ウィンドウで同じです。

    ウィンドウサイズは背景から分離する最小のオブジェクトのサイズに近いサイズである必要があります。以下の図は、簡素化されたローカル2値化ウィンドウを示します。

    1. 画像
    2. ローカル2値化ウィンドウ
    3. 検討中のピクセル
    メモ ウィンドウ内のすべてのピクセルのピクセル輝度は、検討中のピクセルを含め、ローカルしきい値の計算に使用されます。

    標準のローカル2値化関数は長時間の計算時間を必要とします。また、標準のローカル2値化関数の完了時間はウィンドウサイズにより異なります。ローカル2値化は、このような決定的要素の欠如により、リアルタイムアプリケーションで使用することはできません。Visionのローカル2値化関数は、計算速度がウィンドウサイズに影響されない完全に最適化された効率的なアルゴリズムの実装を使用します。これにより、計算コストが削減され、リアルタイムのセグメント化アプリケーションで関数を使用することが可能になります。

    以下のセクションでは、Visionのローカル2値化関数で利用可能なアルゴリズムについて説明します。

    メモ 使用するアルゴリズムに関係なく、明るい背景上の暗いオブジェクトまたは暗い背景上の明るいオブジェクトのどちらを検索するかを指定する必要があります。

    Niblackアルゴリズム

    このアルゴリズムは、OCRとマップ画像分割アプリケーションからの目標指向型評価に基づいて、11種類のローカル適応2値化アルゴリズムの中で最適であることが実験で証明されています。アルゴリズムは、表示検査またはOCRなど、多くの画像2値化アプリケーションに対して有効です。

    Niblackアルゴリズムはウィンドウサイズの影響を受けやすく、サイズが大きい均一の背景のある画像の領域でノイズの多い分割結果を生成します。この問題を解決するために、Visionのローカル2値化関数はアルゴリズムがピクセルを正しく分類化するのに使用する偏差係数を計算します。

    背景補正アルゴリズム

    このアルゴリズムは、画像分割用にローカルとグローバル2値化の論理を組み合わせます。以下の図は、背景補正アルゴリズムを示します。

    背景補正された画像は、「自動2値化」セクションで記述されている相互分散の自動2値化法を使用して2値化されます。

    詳細情報

    以下のセクションでは、各2値化方法で使用されるアルゴリズムを詳細に説明します。

    Niblack

    Niblackアルゴリズムでは、ピクセル (i, j) でのローカルしきい値T(i, j) は、以下のように計算されます。

    T(i, j) = m(i, j) + k.ω (i, j)

    ここで、

    • m(i, j)は局所サンプル平均、
    • kは偏差Niblack/Sauvola因子、
    • ?(i, j)は、標準偏差です。

    各画像ピクセルI(i, j) は、以下の公式に基づいて粒子または背景ピクセルとして分類されます。

    I(i, j) > T(i, j) の場合、I(i, j) = 粒子

    else I(i, j) = 背景

    ヒント kを0に設定すると、Niblackアルゴリズムの計算速度が向上します。

    Sauvola

    Sauvolaアルゴリズムでは、窓付き標準偏差を標準偏差 (R) のダイナミックレンジで除算することによって窓付き標準偏差を正規化します。その結果、ノイズが少なく、粒子の形状が維持されます。Sauvolaアルゴリズムでは、ピクセル (i, j) でのローカルしきい値T(i, j)は、以下のように計算されます。

    T i , j = m i , j * 1 + k * 1 - ω i , j R

    ここで

    • m(i, j)とw(i, j)は窓で計算された平均値と標準偏差です。
    • kはNiblack/Sauvola偏差係数、
    • RはSauvola偏差範囲です。

    変更後のSauvola

    変更後のSauvolaアルゴリズムでは、窓付き平均偏差を標準偏差 (R) のダイナミックレンジで除算することによって窓付き平均偏差を正規化します。この方法では、標準偏差の代わりに平均偏差が使用されるため、Sauvolaアルゴリズムより計算量が少なくなります。変更後のSauvolaアルゴリズムでは、ピクセル (i, j) でのローカルしきい値T(i, j) は、以下のように計算されます。

    T i , j = m i , j * 1 + k * 1 - ɗ i , j R
    ɗ i , j = I i , j - m i , j

    ここで、

    • m(i, j)は局所平均、ɗ(i, j)は局所平均偏差、
    • kはNiblack/Sauvola偏差係数、
    • RはSauvola偏差範囲です。

    背景補正

    背景補正アルゴリズムでは、背景補正された画像B(i, j)は以下のように計算されます。

    B(i, j) = I(i, j) – m(i, j)

    ここで

    • m(i, j) は、ピクセル (i, j) のローカル平均値です。

    2値化の注意事項

    画像を粒子と背景領域に分割する際に頻繁に発生する致命的な問題は、境界線が鮮明に定められていない場合に発生します。そのような場合、正しいしきい値範囲の判断は主観的になります。そのため、2値化を行う前に画像を改善して正しい境界線の位置を描画するとよい場合があります。ルックアップテーブル、フィルタ、FFT、または等化関数を使用して、画像を改善することができます。境界領域を交差するラインの強度プロファイルを観察することも、正しいしきい値を選択する際に役立ちます。最後に、モフォロジー変換によってバイナリ粒子の形状修整が簡素化され、その結果2値化の進行中に生じた不要な抽出が補正されます。