① 自動確定圖像二值化最佳閾值的方法

閾值將原圖象分成前景,背景兩個圖象。
前景:用n1, csum, m1來表示在當前閾值下的前景的點數,質量矩,平均灰度
後景:用n2, sum-csum, m2來表示在當前閾值下的背景的點數,質量矩,平均灰度
當取最佳閾值時,背景應該與前景差別最大,關鍵在於如何選擇衡量差別的標准
而在otsu演算法中這個衡量差別的標准就是最大類間方差(英文簡稱otsu,這也就是這個演算法名字的來源)
在本程序中類間方差用sb表示,最大類間方差用fmax
關於最大類間方差法(otsu)的性能:
類間方差法對噪音和目標大小十分敏感,它僅對類間方差為單峰的圖像產生較好的分割效果。
當目標與背景的大小比例懸殊時,類間方差准則函數可能呈現雙峰或多峰,此時效果不好,但是類間方差法是用時最少的。
最大最大類間方差法(otsu)的公式推導:
記t為前景與背景的分割閾值,前景點數占圖像比例為w0, 平均灰度為u0;背景點數占圖像比例為w1,平均灰度為u1。
則圖像的總平均灰度為:u=w0*u0+w1*u1。
前景和背景圖象的方差:g=w0*(u0-u)*(u0-u)+w1*(u1-u)*(u1-u)=w0*w1*(u0-u1)*(u0-u1),此公式為方差公式,可參照概率論課本
上面的g的公式也就是下面程序中的sb的表達式
當方差g最大時,可以認為此時前景和背景差異最大,也就是此時的灰度是最佳閾值

unsafe public int GetThreshValue(Bitmap image)
{
BitmapData bd = image.LockBits(new Rectangle(0, 0, image.Width, image.Height), ImageLockMode.WriteOnly, image.PixelFormat);
byte* pt = (byte*)bd.Scan0;
int[] pixelNum = new int[256]; //圖象直方圖,共256個點
byte color;
byte* pline;
int n, n1, n2;
int total; //total為總和,累計值
double m1, m2, sum, csum, fmax, sb; //sb為類間方差,fmax存儲最大方差值
int k, t, q;
int threshValue = 1; // 閾值
int step = 1;
switch (image.PixelFormat)
{
case PixelFormat.Format24bppRgb:
step = 3;
break;
case PixelFormat.Format32bppArgb:
step = 4;
break;
case PixelFormat.Format8bppIndexed:
step = 1;
break;
}
//生成直方圖
for (int i = 0; i < image.Height; i++)
{
pline = pt + i * bd.Stride;
for (int j = 0; j < image.Width; j++)
{
color = *(pline + j * step); //返回各個點的顏色,以RGB表示
pixelNum[color]++; //相應的直方圖加1
}
}
//直方圖平滑化
for (k = 0; k <= 255; k++)
{
total = 0;
for (t = -2; t <= 2; t++) //與附近2個灰度做平滑化,t值應取較小的值
{
q = k + t;
if (q < 0) //越界處理
q = 0;
if (q > 255)
q = 255;
total = total + pixelNum[q]; //total為總和,累計值
}
pixelNum[k] = (int)((float)total / 5.0 + 0.5); //平滑化,左邊2個+中間1個+右邊2個灰度,共5個,所以總和除以5,後面加0.5是用修正值
}
//求閾值
sum = csum = 0.0;
n = 0;
//計算總的圖象的點數和質量矩,為後面的計算做准備
for (k = 0; k <= 255; k++)
{
sum += (double)k * (double)pixelNum[k]; //x*f(x)質量矩,也就是每個灰度的值乘以其點數(歸一化後為概率),sum為其總和
n += pixelNum[k]; //n為圖象總的點數,歸一化後就是累積概率
}

fmax = -1.0; //類間方差sb不可能為負,所以fmax初始值為-1不影響計算的進行
n1 = 0;
for (k = 0; k < 255; k++) //對每個灰度(從0到255)計算一次分割後的類間方差sb
{
n1 += pixelNum[k]; //n1為在當前閾值遍前景圖象的點數
if (n1 == 0) { continue; } //沒有分出前景後景
n2 = n - n1; //n2為背景圖象的點數
if (n2 == 0) { break; } //n2為0表示全部都是後景圖象,與n1=0情況類似,之後的遍歷不可能使前景點數增加,所以此時可以退出循環
csum += (double)k * pixelNum[k]; //前景的「灰度的值*其點數」的總和
m1 = csum / n1; //m1為前景的平均灰度
m2 = (sum - csum) / n2; //m2為背景的平均灰度
sb = (double)n1 * (double)n2 * (m1 - m2) * (m1 - m2); //sb為類間方差
if (sb > fmax) //如果算出的類間方差大於前一次算出的類間方差
{
fmax = sb; //fmax始終為最大類間方差(otsu)
threshValue = k; //取最大類間方差時對應的灰度的k就是最佳閾值
}
}
image.UnlockBits(bd);
image.Dispose();
return threshValue;
}

② 閾值的判定方法有哪些,圖像處理方面的

閾值選擇 的恰當與否對分割的效果起著決定性的作用。圖像的分割方法主要包括幅度分割方法、最小錯誤分割法、迭代法求圖像最佳分割閾值法、最大類間方差 法(大津演算法)等一系列方法。
具體演算法你可以再詳細查

③ 動態閾值一般有什麼演算法謝謝啦,沒錢。。。

%本程序是利用最大類間方差演算法求解自適應閾值,對圖像進行分割
clear;
warning off;

web -browser
SE = strel('diamond',4);
BW1 = imread('img1.bmp');
BW2 = imerode(BW1,SE);
BW3 = imdilate(BW2,SE);
BW4 = BW1-BW3;

%rgb轉灰度
if isrgb(BW4)==1
I_gray=rgb2gray(BW4);
else
I_gray=BW4;
end
figure,imshow(I_gray);
I_double=double(I_gray);%轉化為雙精度
[wid,len]=size(I_gray);
colorlevel=256; %灰度級
hist=zeros(colorlevel,1);%直方圖
%threshold=128; %初始閾值

%計算直方圖
for i=1:wid
for j=1:len
m=I_gray(i,j)+1;
hist(m)=hist(m)+1;
end
end
hist=hist/(wid*len);%直方圖歸一化
miuT=0;
for m=1:colorlevel
miuT=miuT+(m-1)*hist(m);
end
xigmaB2=0;

for mindex=1:colorlevel
threshold=mindex-1;
omega1=0;
omega2=0;
for m=1:threshold-1
omega1=omega1+hist(m);
end
omega2=1-omega1;
miu1=0;
miu2=0;

for m=1:colorlevel
if m<threshold
miu1=miu1+(m-1)*hist(m);
else
miu2=miu2+(m-1)*hist(m);
end
end
miu1=miu1/omega1;
miu2=miu2/omega2;
xigmaB21=omega1*(miu1-miuT)^2+omega2*(miu2-miuT)^2;
xigma(mindex)=xigmaB21;
if xigmaB21>xigmaB2
finalT=threshold;
xigmaB2=xigmaB21;
end
end
fT=finalT/255 %閾值歸一化
T=graythresh(I_gray)%matlab函數求閾值
for i=1:wid
for j=1:len
if I_double(i,j)>finalT
bin(i,j)=1;
else
bin(i,j)=0;
end
end
end
figure,imshow(bin);
figure,plot(1:colorlevel,xigma);
已發送,請查收,發送郵箱[email protected] ,你的郵箱名是錯的,彈回來了。反正這里也有,不發了。

④ matlab中如何用大津法找出圖片合適的閾值

I
=
imread('coins.png');
level
=
graythresh(I);%%matlab
自帶的自動確定閾值的方法,大津法,類間方差
BW
=
im2bw(I,level);%%用得到的閾值直接對圖像進行二值化
imshow(BW)
%%%%%%%%%%%%%%%%%%%
要大津法的源代碼的話,在matlab
command
window
里輸入open
graythresh
,該函數就是大津法的源代碼。

⑤ 怎樣基於直方圖分割前景和背景設定閾值

其實也就是ostu分割,matlab的graythresh函數就可以計算出閾值

⑥ 對圖像進行超像素分割後怎樣提取前景和背景區域

一般取1~4這樣就突出了圖像中豎直的邊緣,而對水平邊緣則先不予考慮。圖像預處理包括,所以先要進行圖像的二值化。牌照圖像的二值化是處理與識別圖像中很關鍵的一步。牌照圖片可以看成由前景字元和背景兩部分組成,在光照比較均勻的時候,如果未檢測到上述條件的結果,求上式為最大值的t,則認為目標已檢測到。牌照定位就是從含有車牌的車牌圖像中提取出車牌區域。車牌圖像能否正確地從車輛圖像中提取是自動識別的前提,所以圖像提取需要極高的正確性,直至變化次數小於8,幾何畸變復原等等。
圖像的變換原始圖像的數據一般比較大,對其進行處理的時間一般也較長、神經網路、矢量量化等方法。下面主要介紹字元豎向紋理統計方法:是閾值為t 時灰度的平均值。對於其它字元,首先需將待識別的字元歸一化,在此將其縮放成32×64;1',二值化就相當於怎樣找到一個合適的閾值把字元和背景分開。車牌圖像二值化關鍵之一就是閾值的選擇。在不同的環境下對具體的圖像的復原方法也不同,必須抓住車牌的最主要特徵,利用它來提取車牌。將該點設為最高點。若最高點和最低點之差大於15,而且在一相對小的范圍內變化頻繁, 例如由於均勻直線運動而引起的復原:是整體圖像的平均值:將圖像直方圖在某一閾值處理分割成兩組,當被分成的兩組的方差為最大時。然後找到最小的Di ,其對應的Zi 的名字就是識別出的字元的名字。另外。
牌照定位對圖像預處理之後,下一個關鍵步驟就是對圖像中的牌照進行定位;,否則丟棄。
4 字元分割車牌定位處理後;然後與字模資料庫中的字元進行模板匹配,經過一些特殊處理後得到識別結果。模板匹配的基本演算法是最小歐氏距離法, 即對任一原型模式Zi,計算它和待匹配字元X的歐氏距離Di,即Di=|X-Zi|、背景等中提取出車牌,如果小於等於1/。下面介紹類間最大方差演算法對已定位的圖像進行二值化處理。類間最大方差演算法的基本思想是,即求maxσ2的t′值,決定閾值。設一幅圖像的灰度級為L,灰度級為i的象素點數為ni,則圖像的全部象素數為N=,為了放大這個特徵,我們設計了一個處理函數,即:(x,而盡可能的不要利用後面的結果來調整這一步的工作。根據處理牌照的類型和特點,有多種牌照定位方法,如字元豎向紋理統計、彩色分類,y)-2F (x,y)+F (x+d,y)F (x,各組產生的概率如下,此時,t′值便是閾值。
字元識別對待識別的字元,首先判斷其HVR,如光線和天氣條件的變化,計算機將車牌部分從整幅圖像中提取出來,實現車牌的定位。設定門限值為127、檢測閾值為16,對圖像進行逐行掃描,若某一行0→1和1→0的變化大於閾值則設其為待測車牌最低點,繼續逐行掃描;, 按字元'。車牌最主要的特徵就是:車牌的底色和車牌字的顏色對比度大,y)=F (x-d,所以全部采樣的灰度平均值為μ=ω0μ0+ω1μ1兩組間的方差用下式求出,車牌的提取需要一次處理性就能把絕大多數特徵提取出來,若大於0.6,則為'。因此要從一整幅車牌圖像包括車身, 也就是說存在雜訊的影響,通常存在影響的因素是多方面的;識別, 否則按其它字元識別,有助於進一步的識別,直至檢測到目標、同類型的車牌字元和車牌背景的細微差別等都有可能使圖像模糊不清。因此要對圖像進行復原。應該緊緊抓住這個特徵來完成對車牌的提取,得到的仍是車牌的灰度圖像。而在字元識別中一般採用的都是二值圖像;1',否則,繼續逐行掃描;1':c0 產生的概率,c1 產生的概率c0 組的平均值,c1 組的平均值其中μT=,y):原圖像P (x,y);1',而由於實時性的要求:圖像的復原和圖像的變換等。
圖像的復原在一些場合輸入的圖像很有可能是模糊不清的。這種方法能夠對各類牌照圖像實現很好的分割效果。將汽車圖像文件以Raw 格式文件存入計算機後,也可以通過一些語法限定(即最後三位一定是數字,倒數第四五位是字母或數字。對字元'、角度不合適:σ2B=ω0(μ0-μT)2+ω(μ1-μT)2=ω0ω1(μ1-μ0 )2從1~L 間改變t:處理後圖像d:處理參數;,可以檢查字元的像素填充率,則自動設定門限值,重復上述操作,各值的概率pi=ni/N,然後用t 將其分成兩組c0={1-t}和c1={t+1~L-1};3 ,則可能是字元'圖像預處理先對視頻採集的車牌圖像進行必要的預處理

⑦ 在遙感中閾值是什麼意思

圖像分割是圖像處理與計算機視覺領域低層次視覺中最為基礎和重要的領域之一,它是對圖像進行視覺分析和模式識別的基本前提.閾值法是一種傳統的圖像分割方法,因其實現簡單、計算量小、性能較穩定而成為圖像分割中最基本和應用最廣泛的分割技術.已被應用於很多的領域。本文是在閱讀大量國內外相關文獻的基礎上,對閾值分割技術稍做總結,分三個大類綜述閾值選取方法,然後對閾值化演算法的評估做簡要介紹。
關鍵詞
圖像分割 閾值選取 全局閾值 局部閾值 直方圖 二值化

1.引言
所謂圖像分割是指根據灰度、彩色、空間紋理、幾何形狀等特徵把圖像劃分成若干個互不相交的區域,使得這些特徵在同一區域內,表現出一致性或相似性,而在不同區域間表現出明顯的不同[37].簡單的講,就是在一幅圖像中,把目標從背景中分離出來,以便於進一步處理。圖像分割是圖像處理與計算機視覺領域低層次視覺中最為基礎和重要的領域之一,它是對圖像進行視覺分析和模式識別的基本前提.同時它也是一個經典難題,到目前為止既不存在一種通用的圖像分割方法,也不存在一種判斷是否分割成功的客觀標准。
閾值法是一種傳統的圖像分割方法,因其實現簡單、計算量小、性能較穩定而成為圖像分割中最基本和應用最廣泛的分割技術.已被應用於很多的領域,例如,在紅外技術應用中,紅外無損檢測中紅外熱圖像的分割,紅外成像跟蹤系統中目標的分割;在遙感應用中,合成孔徑雷達圖像中目標的分割等;在醫學應用中,血液細胞圖像的分割,磁共振圖像的分割;在農業工程應用中,水果品質無損檢測過程中水果圖像與背景的分割。在工業生產中,機器視覺運用於產品質量檢測等等。在這些應用中,分割是對圖像進一步分析、識別的前提,分割的准確性將直接影響後續任務的有效性,其中閾值的選取是圖像閾值分割方法中的關鍵技術。

2.閾值分割的基本概念
圖像閾值化分割是一種最常用,同時也是最簡單的圖像分割方法,它特別適用於目標和背景占據不同灰度級范圍的圖像[1]。它不僅可以極大的壓縮數據量,而且也大大簡化了分析和處理步驟,因此在很多情況下,是進行圖像分析、特徵提取與模式識別之前的必要的圖像預處理過程。圖像閾值化的目的是要按照灰度級,對像素集合進行一個劃分,得到的每個子集形成一個與現實景物相對應的區域,各個區域內部具有一致的屬性,而相鄰區域布局有這種一致屬性。這樣的劃分可以通過從灰度級出發選取一個或多個閾值來實現。
閾值分割法是一種基於區域的圖像分割技術,其基本原理是:通過設定不同的特徵閾值,把圖像像素點分為若干類.常用的特徵包括:直接來自原始圖像的灰度或彩色特徵;由原始灰度或彩色值變換得到的特徵.設原始圖像為f(x,y),按照一定的准則在f(x,y)中找到特徵值T,將圖像分割為兩個部分,分割後的圖像為

若取 :b0=0(黑),b1=1(白),即為我們通常所說的圖像二值化。

(原始圖像) (閾值分割後的二值化圖像)

一般意義下,閾值運算可以看作是對圖像中某點的灰度、該點的某種局部特性以及該點在圖像中的位置的一種函數,這種閾值函數可記作
T(x,y,N(x,y),f(x,y))
式中,f(x,y)是點(x,y)的灰度值;N(x,y)是點(x,y)的局部鄰域特性.根據對T的不同約束,可以得到3種不同類型的閾值[37],即
點相關的全局閾值T=T(f(x,y))
(只與點的灰度值有關)
區域相關的全局閾值T=T(N(x,y),f(x,y))
(與點的灰度值和該點的局部鄰域特徵有關)
局部閾值或動態閾值T=T(x,y,N(x,y),f(x,y))
(與點的位置、該點的灰度值和該點鄰域特徵有關)

圖像閾值化這個看似簡單的問題,在過去的四十年裡受到國內外學者的廣泛關注,產生了數以百計的閾值選取方法[2-9],但是遺憾的是,如同其他圖像分割演算法一樣,沒有一個現有方法對各種各樣的圖像都能得到令人滿意的結果,甚至也沒有一個理論指導我們選擇特定方法處理特定圖像。
所有這些閾值化方法,根據使用的是圖像的局部信息還是整體信息,可以分為上下文無關(non-contextual)方法(也叫做基於點(point-dependent)的方法)和上下文相關(contextual)方法(也叫做基於區域(region-dependent)的方法);根據對全圖使用統一閾值還是對不同區域使用不同閾值,可以分為全局閾值方法(global thresholding)和局部閾值方法(local thresholding,也叫做自適應閾值方法adaptive thresholding);另外,還可以分為雙閾值方法(bilever thresholding)和多閾值方法(multithresholding)
本文分三大類對閾值選取技術進行綜述:
1) 基於點的全局閾值方法;
2) 基於區域的全局閾值方法
3) 局部閾值方法和多閾值方法

3.基於點的全局閾值選取方法
3.1 p-分位數法
1962年Doyle[10]提出的p-分位數法(也稱p-tile法)可以說是最古老的一種閾值選取方法。該方法使目標或背景的像素比例等於其先驗概率來設定閾值,簡單高效,但是對於先驗概率難於估計的圖像卻無能為力。
例如,根據先驗知識,知道圖像目標與背景象素的比例為PO/PB,則可根據此條件直接在圖像直方圖上找到合適的閾值T,使得f(x,y)>=T的象素為目標,f(x,y)<T的象素為背景。

3.2 迭代方法選取閾值[11]
初始閾值選取為圖像的平均灰度T0,然後用T0將圖像的象素點分作兩部分,計算兩部分各自的平均灰度,小於T0的部分為TA,大於T0的部分為TB
計算 ,將T1 作為新的全局閾值代替T0,重復以上過程,如此迭代,直至TK 收斂,即TK+1 =TK
經試驗比較,對於直方圖雙峰明顯,谷底較深的圖像,迭代方法可以較快地獲得滿意結果。但是對於直方圖雙峰不明顯,或圖像目標和背景比例差異懸殊,迭代法所選取的閾值不如最大類間方差法。

3.3 直方圖凹面分析法
從直觀上說,圖像直方圖雙峰之間的谷底,應該是比較合理的圖像分割閾值,但是實際的直方圖是離散的,往往十分粗糙、參差不齊,特別是當有雜訊干擾時,有可能形成多個谷底。從而難以用既定的演算法,實現對不同類型圖像直方圖谷底的搜索
Rosenfeld和Torre[12]提出可以構造一個包含直方圖 的最小凸多邊形 ,由集差 確定 的凹面。若 和 分別表示 與 在灰度級之處的高度,則 取局部極大值時所對應的灰度級可以作為閾值。也有人使用低通濾波的方法平滑直方圖,但是濾波尺度的選擇並不容易[13]。
但此方法仍然容易受到雜訊干擾,對不同類型的圖像,表現出不同的分割效果。往往容易得到假的谷底。但此方法對某些只有單峰直方圖的圖像,也可以作出分割。如:

3.4 最大類間方差法
由Otsu[14]於1978年提出的最大類間方差法以其計算簡單、穩定有效,一直廣為使用。從模式識別的角度看,最佳閾值應當產生最佳的目標類與北京類的分離性能,此性能我們用類別方差來表徵,為此引入類內方差 、類間方差 和總體方差 ,並定義三個等效的准則測量:
, , . (3)
鑒於計算量的考量,人們一般通過優化第三個准則獲取閾值。此方法也有其缺陷,kittler和Illingworth[15]的實驗揭示:當圖像中目標與背景的大小之比很小時方法失效。
在實際運用中,往往使用以下簡化計算公式:
(T) = WA(μa-μ)2 + Wb(μb-μ)2
其中, 為兩類間最大方差,WA 為A類概率,μa為A類平均灰度,Wb 為B類概率,μb為B類平均灰度,μ為圖像總體平均灰度。
即閾值T將圖像分成A,B兩部分,使得兩類總方差 (T)取最大值的T,即為最佳分割閾值。

3.5 熵方法
八十年代以來,許多學者將Shannon信息熵的概念應用於圖像閾值化,其基本思想都是利用圖像的灰度分布密度函數定義圖像的信息熵,根據假設的不同或視角的不同提出不同的熵准則,最後通過優化該准則得到閾值。Pun[16]通過使後驗熵的上限最大來確定閾值。Kapur等人[17]的方法假定目標和背景服從兩個不同的概率分布 和 定義
(4)
使得熵
(5)
達到最大求得最佳閾值。
此方法又稱為KSW熵方法。

3.6 最小誤差閾值
此方法來源於Bayes最小誤差分類方法。

Eb(T)是目標類錯分到背景類的概率,Eo(T)是背景類錯分到目標類的概率
總的誤差概率 E(T) = Eb(T) + Eo(T)
使E(T)取最小值,即為最優分類方法。

在Kittler和Illingworth[18]於1986年提出的最小誤差法中,直方圖被視為目標與背景混合集概率密度函數 的估計
(9)
其中, 為先驗概率, ,求解下列方程可得到Bayes最小誤差閾值
(10)
遺憾的是上式中 , 和 通常是未知的,Nakagawa和Rosenfeld[19]提倡用擬合方法從直方圖中估計這些參數,但是演算法相當復雜,不易實現。

3.7 矩量保持法
矩量保持(moment-preserving)法[20] ,即矩守恆閾值法,是1985年提出的,其基本思想是最佳的閾值應該使分割前後圖像的矩量保持不變,由此可以得到一組矩量保持方程,求解該方程組就可以得到最佳閾值。

3.8 模糊集方法
模糊集理論較好的描述了人類視覺中的模糊性和隨機性,因此在圖像閾值化領域受到了廣泛的關注。模糊集閾值化方法的基本思想是,選擇一種S狀的隸屬度函數定義模糊集,隸屬度為0.5的灰度級對應了閾值,當然在上述隸屬度函數的表達式中閾值是一個未知的參數;然後在此模糊集上定義某種准則函數(例如整個圖像的總體模糊度),通過優化准則函數來確定最佳閾值。
Pal等[21]首先,他們把一幅具有 個灰度級的 圖像看作一個模糊集 ,其中隸屬函數 定義如下:
(11)
參數 稱之為交叉點(即 )。由此從圖像 的空間 平面得到模糊特性 平面。然後,基於此模糊集定義了圖像的線性模糊度 、二次模糊度 和模糊熵 ,使這三個量取最小值時的交叉點 即為最佳閾值。
文獻[21]指出模糊隸屬度函數在該演算法中的作用僅在於將圖像由灰度數據空間轉換為模糊空間 ,其函數的形式對增強結果幾乎沒有影響。這就使我們有理由使用一些形式簡單的函數形式。例如國內學者發表的一種模糊閾值方法[22]:

隸屬度μ(x)表示灰度x具有明亮特性的程度,c為隸屬函數窗寬,q對應隸屬度為0.5的灰度級。設灰度級 的模糊率為:
= min{μ(l),1-μ(l)}
則得到整幅圖像的模糊率[44]

其中,MN為圖像尺寸,L為圖像總灰度級, 圖像中灰度為 的象素個數。
對應於不同的q值,就可以計算出相應的圖像模糊率,選取使得 最小的q值,作為圖像分割的最佳閾值即可。

3.9 小結
對於基於點的全局閾值選取方法,除上述主要幾種之外還許多,但大多都是以上述基本方法為基礎,做出的改進方法或者對演算法的優化,如使用遞推方法以降低演算法復雜性。
例如在文獻[42]中,提出一種使目標和背景差距最大的閾值求取方法,類似於最大類間方差閾值法。是它的一種簡化演算法。
又如1984年Dunn等人[23]提出了均勻化誤差閾值選取方法,這種方法實質上是要使將背景點誤分為目標點的概率等於將目標點誤分為背景點的概率。類似於最小誤差閾值法。
近年來有一些新的研究手段被引入到閾值選取中。比如人工智慧,在文獻[24] 中,描述了如何用人工智慧的方法,尋找直方圖的谷底點,作為全局閾值分割。其它如神經網路,數學形態學[39][46],小波分析與變換[40]等等。
總的來說,基於點的全局閾值演算法,與其它幾大類方法相比,演算法時間復雜度較低,易於實現,適合應用於在線實時圖像處理系統。由於我的研究方向為機器視覺,所作的項目要求演算法具有良好的實時性,因此針對基於點的全局閾值方法,閱讀了較多的文獻,在綜述里敘述也相對比較詳細。

4 基於區域的全局閾值選取方法
對一幅圖像而言,不同的區域,比如說目標區域或背景區域,同一區域內的象素,在位置和灰度級上同時具有較強的一致性和相關性。
而在上述基於點的全局閾值選取方法中,有一個共同的弊病,那就是它們實際上只考慮了直方圖提供的灰度級信息,而忽略了圖像的空間位置細節,其結果就是它們對於最佳閾值並不是反映在直方圖的谷點的情況會束手無策,不幸我們通常遇到的很多圖像恰恰是這種情況。另一方面,完全不同的兩幅圖片卻可以有相同的直方圖,所以即使對於峰谷明顯的情況,這些方法也不能保證你得到合理的閾值。於是,人們又提出了很多基於空間信息的閾值化方法。
可以說,局域區域的全局閾值選取方法,是基於點的方法,再加上考慮點領域內象素相關性質組合而成,所以某些方法常稱為「二維xxx方法」。由於考慮了象素領域的相關性質,因此對雜訊有一定抑止作用[41]。
4.1 二維熵閾值分割方法[25]
使用灰度級-局域平均灰度級形成的二維灰度直方圖[43]進行閾值選取,這樣就得到二維熵閾值化方法。

(二維灰度直方圖: 灰度-領域平均灰度)
如圖,在0區和1區,象素的灰度值與領域平均灰度值接近,說明一致性和相關性較強,應該大致屬於目標或背景區域;2區和3區一致性和相關性較弱,可以理解為雜訊或邊界部分。二維熵閾值分割,就是選擇(S,T)對,使得目標類和背景類的後驗熵最大。(具體方法是一維熵閾值分割的推廣,可參見上一節)
Abutaleb[26],和Pal]結合Kapur]和Kirby的方法,分別提出了各自的二維熵閾值化方法,其准則函數都是使目標熵和背景熵之和最大化。Brink[27]的方法則是使這兩者中的較小者最大化,該方法的計算復雜度為 ,後來有人改進為遞推快速演算法將時間復雜度降為 (其中 為最大灰度級數)。

4.2 簡單統計法
Kittler等人[28],[29]提出一種基於簡單的圖像統計的閾值選取方法。使用這種方法,閾值可以直接計算得到,從而避免了分析灰度直方圖,也不涉及准則函數的優化。該方法的計算公式為
(19)
其中,

因為e(x,y)表徵了點(x,y)領域的性質,因此本方法也屬於基於區域的全局閾值法。

4.3 直方圖變化法
從理論上說,直方圖的谷底是非常理想的分割閾值,然後在實際應用中,圖像常常受到雜訊等的影響而使其直方圖上原本分離的峰之間的谷底被填充,或者目標和背景的峰相距很近或者大小差不多,要檢測他們的谷底就很難了。
在上一節基於點的全局閾值方法中,我們知道直方圖凹面分析法的弊病是容易受到雜訊干擾,對不同類型的圖像,表現出不同的分割效果。往往容易得到假的谷底。這是由於原始的直方圖是離散的,而且含雜訊,沒有考慮利用象素領域性質。
而直方圖變化法,就是利用一些象素領域的局部性質變換原始的直方圖為一個新的直方圖。這個新的直方圖與原始直方圖相比,或者峰之間的谷底更深,或者谷轉變成峰從而更易於檢測。這里的象素領域局部性質,在很多方法中經常用的是象素的梯度值。
例如,由於目標區的象素具有一定的一致性和相關性,因此梯度值應該較小,背景區也類似。而邊界區域或者雜訊,就具有較大的梯度值。最簡單的直方圖變換方法,就是根據梯度值加權,梯度值小的象素權加大,梯度值大的象素權減小。這樣,就可以使直方圖的雙峰更加突起,谷底更加凹陷。

4.4 其它基於區域的全局閾值法
鬆弛法利用鄰域約束條件迭代改進線性方程系統的收斂特性,當用於圖像閾值化時其思想是:首先根據灰度級按概率將像素分為「亮」和「暗」兩類,然後按照領域像素的概率調整每個像素的概率,調整過程迭代進行,使得屬於亮(暗)區域的像素「亮(暗)」的概率變得更大。
其它還有許多方法利用灰度值和梯度值散射圖,或者利用灰度值和平均灰度值散射圖。

5 局部閾值法和多閾值法

5.1 局部閾值(動態閾值)
當圖像中有如下一些情況:有陰影,照度不均勻,各處的對比度不同,突發雜訊,背景灰度變化等,如果只用一個固定的全局閾值對整幅圖像進行分割,則由於不能兼顧圖像各處的情況而使分割效果受到影響。有一種解決辦法就是用與象素位置相關的一組閾值(即閾值使坐標的函數)來對圖像各部分分別進行分割。這種與坐標相關的閾值也叫動態閾值,此方法也叫變化閾值法,或自適應閾值法。這類演算法的時間復雜性可空間復雜性比較大,但是抗噪能力強,對一些用全局閾值不易分割的圖像有較好的效果。
例如,一幅照度不均(左邊亮右邊暗)的原始圖像為:

如果只選擇一個全局閾值進行分割,那麼將出現下面兩種情況,都不能得到滿意的效果。

(閾值低,對亮區效果好,則暗區差) (閾值高,對暗區效果好,則亮區差)

若使用局部閾值,則可分別在亮區和暗區選擇不同的閾值,使得整體分割效果較為理性。

(按兩個區域取局部閾值的分割結果)
進一步,若每個數字都用不同的局部閾值,則可達到更理想的分割效果。

5.1.1 閾值插值法
首先將圖像分解成系列子圖,由於子圖相對原圖很小,因此受陰影或對比度空間變化等帶來的問題的影響會比較小。然後對每個子圖計算一個局部閾值(此時的閾值可用任何一種固定閾值選取方法)。通過對這些子圖所得到的閾值進行插值,就可以得到對原圖中每個象素進行分割所需要的合理閾值。這里對應每個象素的閾值合起來構成的一個曲面,叫做閾值曲面。

5.1.2 水線閾值演算法
水線(也稱分水嶺或流域,watershed)閾值演算法可以看成是一種特殊的自適應迭代閾值方法,它的基本思想是:初始時,使用一個較大的閾值將兩個目標分開,但目標間的間隙很大;在減小閾值的過程中,兩個目標的邊界會相向擴張,它們接觸前所保留的最後像素集合就給出了目標間的最終邊界,此時也就得到了閾值。

5.1.3 其它的局部閾值法
文獻[30]提出了一種基於閾值曲面的二維遺傳演算法。遺傳演算法是基於進化論中自然選擇機理的、並行的、統計的隨機化搜索方法,所以在圖像處理中常用來確定分割閾值。
文獻[31] [32]中提出一種基於局部梯度最大值的插值方法。首先平滑圖像,並求得具有局部梯度最大值的像素點,然後利用這些像素點的位置和灰度在圖像上內插,得到灰度級閾值表面。
除此之外,典型的局部閾值方法還有White和Rohrer[33]的加權移動平均閾值方法,Perez和Gonzalez[34]的適用於非均勻照射下圖像的局部閾值方法以及Shio[35]的與照射無關的對比度度量閾值方法等。總的來說,這類演算法的時間和空間復雜度都較大,但是抗噪能力強,對一些使用全局閾值法不宜分割的圖像具有較好的效果。

5.2 多閾值法
很顯然,如果圖像中含有占據不同灰度級區域的幾個目標,則需要使用多個閾值才能將它們分開。其實多域值分割,可以看作單閾值分割的推廣,前面討論的大部分閾值化技術,諸如Otsu的最大類間方差法, Kapur的最大熵方法、矩量保持法和最小誤差法等等都可以推廣到多閾值的情形。以下介紹另外幾種多閾值方法。
5.2.1 基於小波的多域值方法。
小波變換的多解析度分析能力也可以用於直方圖分析[36],一種基於直方圖分析的多閾值選取方法思路如下:首先在粗解析度下,根據直方圖中獨立峰的個數確定分割區域的類數,這里要求獨立峰應該滿足三個條件:(1)具有一定的灰度范圍;(2)具有一定的峰下面積;(3)具有一定的峰谷差。然後,在相鄰峰之間確定最佳閾值,這一步可以利用多分辨的層次結構進行。首先在最低解析度一層進行,然後逐漸向高層推進,直到最高解析度。可以基於最小距離判據對在最低層選取的所有閾值逐層跟蹤,最後以最高解析度層的閾值為最佳閾值。
5.2.2 基於邊界點的遞歸多域值方法。
這是一種遞歸的多閾值方法。首先,將象素點分為邊界點和非邊界點兩類,邊界點再根據它們的鄰域的亮度分為較亮的邊界點和較暗的邊界點兩類,然後用這兩類邊界點分別作直方圖,取兩個直方圖中的最高峰多對應的灰度級作為閾值。接下去,再分別對灰度級高於和低於此閾值的像素點遞歸的使用這一方法,直至得到預定的閾值數。

5.2.3 均衡對比度遞歸多域值方法。
首先,對每一個可能閾值計算它對應於它的平均對比度

其中, 是閾值為 時圖像總的對比度, 是閾值 檢測到的邊界點的數目。然後,選擇 的直方圖上的峰值所對應的灰度級為最佳閾值。對於多閾值情形,首先用這種方法確定一個初始閾值,接著,去掉初始閾值檢測到的邊界點的貢獻再做一次 的直方圖,並依據新的直方圖選擇下一個閾值。這一過程可以這樣一直進行下去,直到任何閾值的最大平均對比度小於某個給定的限制為止。

6 閾值化演算法評價簡介
盡管人們在圖像分割方面做了許多研究工作,但由於尚無通用的分割理論,現已提出的分割演算法大都是針對具體問題的,並沒有一種適合於所有圖像的通用的分割演算法。另一方面,給定一個實際圖像分割問題要選擇合用的分割演算法也還沒有標準的方法。為解決這些問題需要研究對圖像分割的評價問題。分割評價是改進和提高現有演算法性能、改善分割質量和指導新演算法研究的重要手段。
然而,如同所有的圖像分割方法一樣,閾值化結果的評價是一個比較困難的問題。事實上對圖像分割本身還缺乏比較系統的精確的研究,因此對其評價則更差一些。人們先後已經提出了幾十個評價准則。這些准則中又有定性的,也有定量的;有分析演算法的,也有檢測實驗結果的,文獻[37]將它們大致分為13類。
文獻[4] 中選擇攝影師、建築物和模特三幅圖像作為標准圖像,並採用趨於一致性度量和形狀參數對幾種常用的全局閾值方法的分割結果進行了評價。結果表明對於這三幅圖像,如果希望得到的二值圖像比較均勻且目標的形狀較好,推薦使用最大熵方法、矩量保持方法和最大類間方差法。
文獻[38] 中以磁碟及鶴模型作標准圖像,在雜訊條件下用錯分概率、形狀和均勻性度量作為標准評估了五種常見的整體閾值選取方法的性能。這五種方法是四元樹方法、矩量保持法、最大類間方差法、最大熵方法和簡單統計法。結果表明各種方法的性能不僅與所處理的圖像有關,而且也和所選用的准則有關。該文獻也指出,對於一般實時應用來說,可以選擇最大類間方差方法和簡單統計法。
最後,評價的目的是為了能指導、改進和提高分割,如何把評價和分割應用聯系起來尚有許多工作要做。一個可能的方法是結合人工智慧技術,建立分割專家系統[45],以有效的利用評價結果進行歸納推理,從而把對圖像的分割由目前比較盲目的試驗階段推進到系統地實現的階段。

⑧ Matlab編程求一個最大類間方差法的計算最佳閾值的程序。

k的0~255循環求得每一個對應的fc=w0*(u0-ut).^2+w1*(u1-ut).^2;然後比較這256個fc中的最大值,對應的那個k就是ostu的閾值。所以你這個還差一個k的循環,並在循環裡面求最大fc。
我這也有段求閾值的,你可以參考下

hist=zeros(256,1);%直方圖
%threshold=128; %初始閾值
%計算直方圖
for i=1:height
for j=1:width
m=I_gray(i,j)+1;
hist(m)=hist(m)+1;
end
end
hist=hist/(height*width);%落在每一灰度級上的概率
avg=0;
for m=1:256
avg=avg+(m-1)*hist(m);
end
temp=0;
for i=1:256
p1=0;
avg1=0;
avg2=0;
T_current=i-1;%當前分割閾值
for m=1:T_current-1
p1=hist(m)+ p1;%低灰度級概率總和
end
p2=1-p1;%高灰度級概率總和
for m=1:256
if m<T_current
avg1=avg1+(m-1)*hist(m);
else
avg2=avg2+(m-1)*hist(m);
end
end
avg1=avg1/p1;
avg2=avg2/p2;

D=p1*(avg1-avg)^2+p2*(avg2-avg)^2;
if D>=temp
finalT=T_current;
temp=D;
end
end
另外,站長團上有產品團購,便宜有保證