youcans 的 OpenCV 例程200篇165.多阈值 OTSU 处理方法

Posted 小白YouCans

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了youcans 的 OpenCV 例程200篇165.多阈值 OTSU 处理方法相关的知识,希望对你有一定的参考价值。

欢迎关注 『youcans 的 OpenCV 例程 200 篇』 系列,持续更新中
欢迎关注 『youcans 的 OpenCV学习课』 系列,持续更新中


【youcans 的 OpenCV 例程200篇】165.多阈值 OTSU 处理方法


3.5 多阈值处理方法

OTSU 方法使用最大化类间方差(intra-class variance)作为评价准则,基于对图像直方图的计算,可以给出类间最优分离的最优阈值。

OTSU 方法可以扩展到任意数量的阈值。假设有 K 个分类 c 1 , c 2 , . . . , c k c_1, c_2,...,c_k c1,c2,...,ck 时,可以定义类间方差为:
σ B 2 = ∑ k = 1 K P k ( m k − m G ) 2 \\sigma^2_B = \\sum^K_k=1 P_k(m_k - m_G)^2 σB2=k=1KPk(mkmG)2
常用地,考虑由 3个灰度区间组成的 3个类,可以由 2个阈值分割,定义类间方差为:
σ B 2 = P 1 ( m 1 − m G ) 2 + P 2 ( m 2 − m G ) 2 + P 3 ( m 3 − m G ) 2 P 1 + P 2 + P 3 = 1 P 1 ∗ m 1 + P 2 ∗ m 2 + P 3 ∗ m 3 = m G P 1 = ∑ i = 0 k 1 p i ,   P 2 = ∑ i = k 1 + 1 k 2 p i ,   P 3 = ∑ i = k 2 + 1 L − 1 p i m 1 = ∑ i = 0 k 1 i ∗ p i / P 1 ,   m 2 = ∑ i = k 1 + 1 k 2 i ∗ p i / P 2 ,   m 3 = ∑ i = k 2 + 1 L − 1 i ∗ p i / P 3 , \\sigma^2_B = P_1(m_1 - m_G)^2 + P_2(m_2 - m_G)^2 + P_3(m_3 - m_G)^2 \\\\ P_1 + P_2 + P_3 = 1\\\\ P_1*m_1 + P_2*m_2 + P_3*m_3 = m_G \\\\ P_1 = \\sum^k_1_i=0 p_i ,\\ P_2 = \\sum^k_2_i=k_1+1 p_i ,\\ P_3 = \\sum^L-1_i=k_2+1 p_i \\\\ m_1 = \\sum^k_1_i=0 i*p_i /P_1 ,\\ m_2 = \\sum^k_2_i=k_1+1 i*p_i /P_2 ,\\ m_3 = \\sum^L-1_i=k_2+1 i*p_i /P_3 ,\\\\ σB2=P1(m1mG)2+P2(m2mG)2+P3(m3mG)2P1+P2+P3=1P1m1+P2m2+P3m3=mGP1=i=0k1pi, P2=i=k1+1k2pi, P3=i=k2+1L1pim1=i=0k1ipi/P1, m2=i=k1+1k2ipi/P2, m3=i=k2+1L1ipi/P3,
使类间方差 ICV 最大化的灰度值 k 1 , k 2 k_1, k_2 k1,k2 就是最优阈值。

阈值处理后的图像由下式给出:
g ( x , y ) = a , f ( x , y ) ≤ k 1 ∗ b , k 1 ∗ ≤ f ( x , y ) ≤ k 2 ∗ c , f ( x , y ) ≥ k 2 ∗ g(x,y) = \\begincases a, & f(x,y) \\le k_1^* \\\\ b, & k_1^* \\le f(x,y) \\le k_2^* \\\\ c, & f(x,y) \\ge k_2^* \\\\ \\endcases g(x,y)=youcans 的 OpenCV 例程200篇182.基于形态学梯度的分水岭算法

youcans 的 OpenCV 例程200篇结束语

youcans的OpenCV例程200篇总目录

youcans 的 OpenCV 例程200篇179.图像分割之 GrabCut 图割法(掩模图像)

youcans 的 OpenCV 例程200篇201. 图像的颜色空间转换

OpenCV 例程200篇 目录-202205更新