初めまして
マルマウンテンと申します。
現在、製造業の新規事業部門でデータサイエンティストをしております。
業務で画像処理をよく行っており、大津の2値化について記載いたします。
まず画像処理で2値化を前処理で行い、その後に画像解析をすることが多いです。
その画像処理の2値化(白黒)を行うと、不要な情報を減らすことができるのと画像の容量を減らして解析のスピードを上げることができます。
ただし、2値化する際にどの画素値を閾値にして2値化するのかなど自分で判断することが大変なことも多いです。そこで、大津の2値化を行うことで閾値を自動的に算出して、その閾値を用いて2値化することができます。
その大津の2値化について原理を説明していきます。
大津の2値化(判別分析法)と原理
大津の手法は、分離度が最も大きくなるときの閾値を求めます。処理手順は次の通りです
-
入力画像(1チャンネル)のヒストグラムを求めます。
-
ヒストグラムから、画素値の最大値 $I_{\text{max}}$、最小値$I_{\text{min}}$、平均値$\mu_0$を求めます。
-
最大値 $I_{\text{max}}$と最小値$I_{\text{min}}$の範囲内で、ある閾値$t$を選びます。
-
閾値でヒストグラムを2つのクラス(Class)に分けます。
-
クラス1の分散$\sigma_1^2$、平均値$\mu_1$、画素数$n_1$を求めます。
-
クラス2の分散$\sigma_2^2$、平均値$\mu_2$、画素数$n_2$を求めます。
-
クラス内分散とクラス間分散を以下の式から求めます:
クラス内分散: $\sigma_w^2(t) = \frac{n_1 \sigma_1^2 + n_2 \sigma_2^2}{n_1+n_2}$
クラス間分散: $\sigma_b^2(t) = \frac{n_1 (\mu_1 - \mu)^2 + n_2 (\mu_2 - \mu)^2}{n_1+n_2}$ -
分離度(クラス内分散とクラス間分散の比)を求めます:
分離度 $D(t) = \frac{\sigma_b2(t)}{\sigma_w2(t)}$
手順3~8を繰り返し、分離度が最大になるときの閾値を二値化処理に用います。
このアルゴリズムにより、適切な閾値を自動的に決定して画像を二値化することができます。