自適應閾值分割 最大類間方差法 大津法 OTSU

2021-08-31 18:21:21 字數 1458 閱讀 6359

最大類間方差法是由日本學者大津(nobuyuki otsu)於2023年提出的,是一種自適應的閾值確定的方法,又叫大津法,簡稱otsu。它是按影象的灰度特性,將影象分成背景和目標兩部分,或者說,是尋找乙個閾值為k,將影象的顏色分為1,2.....k和k+1.....256兩部分。

如何確定這個閾值k?演算法分類的原理是讓背景和目標之間的類間方差最大,因為背景和目標之間的類間方差越大,說明構成影象的2部分的差別越大,錯分的可能性越小。下面進行公式推導:

首先是符號說明:對於影象i(x,y),前景(即目標)和背景的分割閾值記作t,屬於前景的畫素點數占整幅影象的比例記為ω0,其平均灰度μ0;背景畫素點數占整幅影象的比例為ω1,其平均灰度為μ1。影象的總平均灰度記為μ,類間方差記為g。假設影象的背景較暗,並且影象的大小為m×n,影象中畫素的灰度值小於閾值t的畫素個數記作n0,畫素灰度大於閾值t的畫素個數記作n1

採用遍歷的方法得到尋找到類間方差最大值,對應的閾值,即為所求。

**區:

int myotsu(const iplimage *frame) //大津法求閾值

;    float pixelpro[grayscale]=;

int i, j, pixelsum = width * height, threshold = 0;

uchar* data = (uchar*)frame->imagedata;

//統計每個灰度級中畫素的個數

for(i = 0; i < height; i++)

}//計算每個灰度級的畫素數目佔整幅影象的比例

for(i = 0; i < grayscale; i++)

//遍歷灰度級[0,255],尋找合適的threshold

float w0, w1, u0tmp, u1tmp, u0, u1, deltatmp, deltamax = 0;

for(i = 0; i < grayscale; i++)

else   //前景部分

}u0 = u0tmp / w0;

u1 = u1tmp / w1;

deltatmp = (float)(w0 *w1* pow((u0 - u1), 2)) ;

if(deltatmp > deltamax)

}return threshold;

}

**親測有效,成功實現閾值分割

**部分參考: 

本文針對灰度影象,彩色影象可以參考:

最大類間方差法 大津法,OTSU

最大類間方差法是由日本學者大津 nobuyuki otsu 於1979年提出的,是一種自適應的閾值確定的方法,又叫大津法,簡稱otsu。它是按影象的灰度特性,將影象分成背景和目標2部分。背景和目標之間的類間方差越大,說明構成影象的2部分的差別越大,當部分目標錯分為背景或部分背景錯分為目標都會導致2部...

最大類間方差(大津法)詳解

參考 應用 是求影象全域性閾值的最佳方法,應用不言而喻,適用於大部分需要求影象全域性閾值的場合。優點 計算簡單快速,不受影象亮度和對比度的影響。缺點 對影象雜訊敏感 只能針對單一目標分割 當目標和背景大小比例懸殊 類間方差函式可能呈現雙峰或者多峰,這個時候效果不好。計算類間方差 double var...

Otsu最大類間方差法

otsu最大類間方差法 最大類間方差法,是由日本學者otsu在1979年提出的一種對影象進行 二值化的高效演算法。1.otsu最大類間方差法原理 利用閾值將 原影象分成前景 背景兩個影象,當取最佳閾值時,背景應該與前景差別最大,關鍵在於如何選擇衡量差別的標準,而在otsu演算法中這個衡量差別的標準就...