當前位置:首頁 » 操作系統 » 二值化演算法

二值化演算法

發布時間: 2022-01-25 03:19:15

① 我在做基於二值化理論的醫學圖像處理,請問圖像二值化的理論和方法有哪些圖像二值化的演算法有哪些

二值化簡介
方法:
1、全局二值化
2、局部自適應二值化

應用
一幅圖像包括目標物體、背景還有雜訊,要想從多值 二值化的數字圖像中直接提取出目標物體,最常用的方法就是設定一個閾值T,用T將圖像的數據分成兩部分:大於T的像素群和小於T的像素群。這是研究灰度變換的最特殊的方法,稱為圖像的二值化(BINARIZATION)。 圖像的二值化,就是將圖像上的像素點的灰度值設置為0或255,也就是將整個圖像呈現出明顯的只有黑和白的視覺效果。

1、局二值化
一幅圖像包括目標物體、背景還有雜訊,要想從多值的數字圖像中直接提取出目標物體,最常用的方法就是設定一個全局的閾值T,用T將圖像的數據分成兩部分:大於T的像素群和小於T的像素群。將大於T的像素群的像素值設定為白色(或者黑色),小於T的像素群的像素值設定為黑色(或者白色)。 全局二值化,在表現圖像細節方面存在很大缺陷。為了彌補這個缺陷,出現了局部二值化方法。 局部二值化的方法就是按照一定的規則將整幅圖像劃分為N個窗口,對這N個窗口中的每一個窗口再按照一個統一的閾值T將該窗口內的像素劃分為兩部分,進行二值化處理。

2、部自適應二值化
局部二值化也有一個缺陷。這個缺陷存在於那個統一閾值的選定。這個閾值是沒有經過合理的運算得來,一般是取該窗口的平局值。這就導致在每一個窗口內仍然出現的是全局二值化的缺陷。為了解決這個問題,就出現了局部自適應二值化方法。 局部自適應二值化,該方法就是在局部二值化的基礎之上,將閾值的設定更加合理化。該方法的閾值是通過對該窗口像素的平均值E,像素之間的差平方P,像素之間的均方根值Q等各種局部特徵,設定一個參數方程進行閾值的計算,例如:T=a*E+b*P+c*Q,其中a,b,c是自由參數。這樣得出來的二值化圖像就更能表現出二值化圖像中的細節。
編輯本段應用
二值化是圖像處理的基本操作,任何圖像處理基本離不開二值化的操作。其應用非常廣泛。

(轉載自網路--》二值化)

② 二值化圖像的面積和輪廓代碼

open cv讀進來,然後統計像素點,opencv china的一個網站專門介紹了圖像處理的函數和演算法,裡面好多代碼,沒記錯的話,你這個東西裡面有demo

③ 機器學習 特徵二值化

分類演算法一般最後得到的是一個概率向量,表示該樣本屬於某種類別的概率。用戶需要確定每一維對應的是哪一類。
例如,對於你提到的例子,是一個二分類問題,輸出一個二維的概率向量,可以把第0維看做錯誤,第1維看做正確;當然也可以把第1維看做錯誤,第0維看做正確。只要是確定這個對應關系就可以了。
直接把每一類對應到0,1,2,... 就可以了

④ matlab中p-tile演算法(p分位數法)的實現圖像二值化閾值的選取的原理,怎麼實現 的

if Trim(request("Lock")) <> "" then
tj5="and Lock = '"&Trim(request("Lock"))&"'"
else
tj5=""
end if

⑤ 圖像二值化的演算法比較

OTSU的中心思想是閾值T應使目標與背景兩類的類間方差最大。
//用類間方差最大思想計算閾值
int Threshold(int *hist) //compute the threshold
{
float u0, u1;
float w0, w1;
int count0;
int t, maxT;
float devi, maxDevi = 0; //方差及最大方差
int i;
int sum = 0;
for (i = 0; i < 256; i++)
{
sum = sum + hist[i];
}
for (t = 0; t < 255; t++)
{
u0 = 0; count0 = 0;
//閾值為t時,c0組的均值及產生的概率
for (i = 0; i <= t; i++)
{
u0 += i * hist[i]; count0 += hist[i];
}
u0 = u0 / count0; w0 = (float)count0/sum;
//閾值為t時,c1組的均值及產生的概率
u1 = 0;
for (i = t + 1; i < 256; i++)
{
u1 += i * hist[i];
}
u1 = u1 / (sum - count0); w1 = 1 - w0;
//兩類間方差
devi = w0 * w1 * (u1 - u0) * (u1 - u0);
//記錄最大的方差及最佳位置
if (devi > maxDevi)
{
maxDevi = devi;
maxT = t;
}
}
return maxT;
}
//二值化處理
void OTSU(IplImage *src, IplImage *dst)
{
int i = 0, j = 0;
int wide = src->widthStep;
int high = src->height;
int hist[256] = {0};
int t;
unsigned char *p, *q;
for (j = 0; j < high; j ++)
{
p = (unsigned char *)(src->imageData + j * wide);
for (i = 0; i < wide; i++)
{
hist[p[i]]++; //統計直方圖
}
}
t = Threshold(hist);
for (j = 0; j < high; j ++)
{
q = (unsigned char *)(dst->imageData + j * wide);
p = (unsigned char *)(src->imageData + j * wide);
for (i = 0; i < wide; i++)
{
q[i] = p[i] >= t ? 255 : 0;
}
}
}
OTSU演算法對不均勻光照的圖片不能產生很好的效果。 另外一個Kittler演算法,是一種快速的全局閾值法。它的效果不比OTSU差多少,但速度快好多倍,如果可以應用在圖像質量不錯的環境。
它的中心思想是,計算整幅圖像的梯度灰度的平均值,以此平均值做為閾值。
//kittler演算法
for (i=1;i<high-1;i++)
{
plineadd=src->imageData+i*wide;
pNextLine=src->imageData+(i+1)*wide;
pPreLine=src->imageData+(i-1)*wide;
for(j=1;j<wide-1;j++)
{
//求水平或垂直方向的最大梯度
Grads=MAX(abs((uchar)pPreLine[j]-(uchar)pNextLine[j]),abs((uchar)plineadd[j-1]-(uchar)plineadd[j+1])); //max(xGrads,yGrads)
sumGrads += Grads;
//梯度與當前點灰度的積
sumGrayGrads += Grads*((uchar)plineadd[j]);
}
}
threshold=sumGrayGrads/sumGrads;
// printf(%d ,threshold);
for(i=0;i<high;i++)
{
plineadd=src->imageData+i*wide;
pTempLine=kittler->imageData+i*wide;
for(j=0;j<wide;j++)
{
pTempLine[j]=(uchar)plineadd[j]>threshold?255:0;
}
}

⑥ 關於Niblack二值化演算法matlab代碼

for i=1:r:Height
for j=1:r:Width
block = imag(i:i+r-1,j:j+r-1); %提取方塊
m = mean2(block);
v = var(var(double(block)));
t = m + k * v;
block = double(block > t); %計算二值
imag(i:i+r-1,j:j+r-1) = block; %放回方塊
end
end

⑦ 幾種二值化方法c++實現

掃描線劃圖圖像二值化方法可以分為全局方法和局部方法:
全局方法根據線劃圖像的灰度直方圖和灰度空間分布確定一個閾值,由此實現灰度圖像N--值圖像的轉變,比較有代表性的全局演算法包括平均灰度法,Otsu方法,迭代最優演算法等。
局部方法是通過檢查每個像素點的鄰域來確定局部閾值,它比全局閾值有著更廣泛的應用,典型的局部閾值方法有Niblack方法,Bemsen方法,平均梯度法等。

全局閾值法期望灰度值法:設圖像的尺寸為M*N,其灰度取值為厶,厶,厶…..k,用隨機變數X來表示每個像素點的灰度值。可以用概率分布來描述圖像的灰度分布情況,分別設各灰度級出現的概率為式2.1:^,A=p(厶)(2.1),仍=p(厶),...,PN=p(「)且有∑見=1灰度圖像的一個重要的統計量就是灰度期望值,使用它為閾值可以使黑色像素和白色像素的灰度值均等,公式(2.2)即為灰度期望值的計算式:鰳刪=∑厶見n-tⅣ(2.2)該演算法對於簡單圖像的效果好,而且計算復雜度較低,缺點是對於亮度不均勻的線劃圖像效果較差。
Otsu方法:這種方法又被稱為最大類間方差方法,是一種自適應的閾值確定方法。它根據灰度特性,將圖像分為目標和背景兩個部分,目標和背景的方差越大,說明這兩個部分的差別越大,因此類間最大方差的分割意味著錯分概率最小。對於灰度圖像I(x,y),目標和背景的分割閾值為T,屬於目標的像素點數占整個圖像像素點的比例是‰,其平均灰度值為Po;背景像素點數占整個圖像像素點的比例為q,其平均灰度值為「,圖像總平均灰度值記為盧,類間方差為g。假設圖像M*N的背景比較暗,圖像中像素灰度值小於閾值T的像素個數記為%,7第二章細化之前的預處理分析像素灰度值大於閾值T的像素個數記為Ⅳl,所以有式2.3到式2.8成立:嘞=j麗No(2.3)q:熹戧=———L—MxN』(2.4)。IZ.4l、Ⅳo+M=MxN‰+q=1‖=‰肛o+qH(2.5)(2.6)(2.7)(2.8)g=‰(po—JLl)2+q(「一‖)對於灰度圖像來說,分別以每個灰度為閾值計算對應的類間方差,其中使類間方差最大化的灰度值即為閾值。該演算法對於較簡單的線劃圖像有良好的效果而且有較快的運算速度,所以這種演算法的應用非常廣泛。
最優閾值法:又被稱為逼近迭代演算法,這種方法的原理是將直方圖用兩個或多個正態分布的概率密度函數來近似表示的方法,閾值取為對應兩個或多個正態分布的最大值之間的最小概率處的灰度值,其結果是具有最小誤差的分割。這里的誤差包括兩部分:將目標誤認為背景而被剔除或將背景、雜訊歸為目標。最優閾值法的處理步驟:El:計算圖像的最小灰度值k和最大灰度值Z二,令閾值初值為式2.9:To=(Zmi。+Z懈)/2(2.9)E2:根據閾值將圖像分為目標和背景兩部分,求出兩部分的平均灰度值Zo和五,分別計算Z0和Zl的平均值,用公式2.10來表示:∑I(i,/)10,J璉TkZo=互=等‰∑I(i,/)T)01.2(1群砸,/)>『、。一E3:計算新閾值,用式2.1l表示:T「1=(Zo+z1)/2(2.11)如果T『=T「1或者達到設定的最大迭代次數就結束,否則轉向步驟E2。該演算法能較好區分圖像的目標和背景,但是會導致圖像細微信息的丟失。

局部閾值法Niblack方法:基於局部均值和局部標准差,基本公式:T(x,y)=m(x,y)+七』s化少).(2.12)長安大學碩士論文對於圖像I(x,y),在(X,y)處的閾值r(x,Y)由局部均值m(x,Y)和局部標准差s(x,Y)決定,k表示調整系數,一般設為.0.2。在Niblack方法中,窗口大小的選擇非常重要,既要小到能保持足夠的局部細節又要大到能抑制雜訊。Niblack方法能很好地保持圖像細節,對於清晰的線劃圖像能夠提供很好的二值化結果,但是在一些模糊的線劃圖像中會保留一些不必要的細節。在最初的Niblack方法中,k值是固定的,但是對於不同的圖像,通常需要根據圖像的灰度分布情況自動調整k的值才能取得較好的結果,因此後來提出很多改進的演算法,其中一個改進的Niblack方法的基本公式為式2.13-T(x,J,):m(x,y)【l+k(1一掣掣)】瓜(2.13)k和R都是經驗常量,改進的Niblack方法使用k和R來減少對雜訊的敏感度。

⑧ 幾種經典的二值化方法及其vb.net實現

圖像二值化的目的是最大限度的將圖象中感興趣的部分保留下來,在很多情況下,也是進行圖像分析、特徵提取與模式識別之前的必要的圖像預處理過程。這個看似簡單的問題,在過去的四十年裡受到國內外學者的廣泛關注,產生了數以百計的閾值選取方法,但如同其他圖像分割演算法一樣,沒有一個現有方法對各種各樣的圖像都能得到令人滿意的結果。
本文針對幾種經典而常用的二值發放進行了簡單的討論並給出了其vb.net 實現。

1、P-Tile法

Doyle於1962年提出的P-Tile (即P分位數法)可以說是最古老的一種閾值選取方法。該方法根據先驗概率來設定閾值,使得二值化後的目標或背景像素比例等於先驗概率,該方法簡單高效,但是對於先驗概率難於估計的圖像卻無能為力。

2、OTSU 演算法(大津法)

OSTU演算法可以說是自適應計算單閾值(用來轉換灰度圖像為二值圖像)的簡單高效方法。1978 OTSU年提出的最大類間方差法以其計算簡單、穩定有效,一直廣為使用。


3、迭代法(最佳閥值法)

(1). 求出圖象的最大灰度值和最小灰度值,分別記為Zl和Zk,令初始閾值為:

(2). 根據閾值TK將圖象分割為前景和背景,分別求出兩者的平均灰度值Z0和ZB:式中,Z(i,j)是圖像上(i,j)點的象素值,N(i,j)是(i,j)點的權值,一般取1。


(3). 若TK=TK+1,則所得即為閾值,否則轉2,迭代計算。

4、一維最大熵閾值法
它的思想是統計圖像中每一個灰度級出現的概率 ,計算該灰度級的熵 ,假設以灰度級T分割圖像,圖像中低於T灰度級的像素點構成目標物體(O),高於灰度級T的像素點構成背景(B),那麼各個灰度級在本區的分布概率為:

O區: i=1,2……,t

B區: i=t+1,t+2……L-1

上式中的 ,這樣對於數字圖像中的目標和背景區域的熵分別為:

對圖像中的每一個灰度級分別求取W=H0 +HB,選取使W最大的灰度級作為分割圖像的閾值,這就是一維最大熵閾值圖像分割法。

⑨ 有人會用kittler演算法對圖像進行二值化嗎

因素只有一個,就是閾值,因為就這一個參數。選過高,圖像一片白,選過低,一片黑,都導致圖像細節的喪失。 最佳的選擇當然是看直方圖,選擇中間的谷點。但如果整幅圖像的灰度分布在空間並不均勻,就會導致二值化後的整體效果不佳。

熱點內容
opensslcmake編譯 發布:2024-09-08 09:08:48 瀏覽:652
linux下ntp伺服器搭建 發布:2024-09-08 08:26:46 瀏覽:742
db2新建資料庫 發布:2024-09-08 08:10:19 瀏覽:171
頻率計源碼 發布:2024-09-08 07:40:26 瀏覽:778
奧迪a6哪個配置帶後排加熱 發布:2024-09-08 07:06:32 瀏覽:101
linux修改apache埠 發布:2024-09-08 07:05:49 瀏覽:209
有多少個不同的密碼子 發布:2024-09-08 07:00:46 瀏覽:566
linux搭建mysql伺服器配置 發布:2024-09-08 06:50:02 瀏覽:995
加上www不能訪問 發布:2024-09-08 06:39:52 瀏覽:811
銀行支付密碼器怎麼用 發布:2024-09-08 06:39:52 瀏覽:513