【画像処理】大津の二値化処理の原理・特徴・計算式

画像処理における大津の手法(判別分析法)を用いた二値化処理の原理や計算式についてまとめました。

大津の二値化処理(判別分析法)と原理

本ページの内容は以下動画で解説しています。

大津の手法(判別分析法)は、自動的に閾値を決定して二値化処理を行う手法の1つです。
この手法では、分離度が最も大きくなるときの閾値を求めます。
閾値を求めるまでの処理手順は次の通りです。

① 入力画像I(1チャンネル)のヒストグラムを求めます。

②ヒストグラムから、画素値の最大値I_{max}、最小値I_{min}、平均値\mu_0を求めます。

I_{min}I_{max}の範囲内で、ある閾値Tを選びます。

④ 閾値Tでヒストグラムを2つのクラス(Class)に分けます。

⑤ クラス1の分散\sigma_1^2、平均値\mu_1、画素数n_1を求めます。

⑥ クラス2の分散\sigma_2^2、平均値\mu_2、画素数n_2を求めます。

⑦ 以下の式からクラス内分散\sigma_w^2とクラス間分散\sigma_b^2を求めます。

(1)   \begin{eqnarray*} \sigma_w^2 &=& \frac{n_1 \sigma_1^2 + n_2 \sigma_2^2}{n_1+n_2}\\ \sigma_b^2 &=& \frac{n_1(\mu_1-\mu_0)^2 + n_2(\mu_2-\mu_0)^2}{n_1+n_2} \end{eqnarray*}

⑧ 手順⑦で求めた2つの分散から、分離度S(クラス内分散とクラス間分散の比)を求めます。

(2)   \begin{eqnarray*} S=\frac{\sigma_b^2}{\sigma_w^2} \end{eqnarray*}

⑨ 手順③~⑧を繰り返し、分離度SI_{min}I_{max}の範囲内にある全てのTの分だけ求めます。

⑩ 分離度Sが最大になるときのTを二値化処理に用いる閾値に決定します。

【実装例】プログラミング

プログラミング言語による実装例を以下にまとめました。

https://algorithm.joho.info/programming/python/opencv-otsu-thresholding-py/
【画像処理入門】アルゴリズム&プログラミング
画像処理における基本的なアルゴリズムとその実装例(プログラム)についてまとめました。

コメント