經典的閾值分割

2021-07-29 11:25:10 字數 2061 閱讀 8954

(1)otsu :最大類間方差

記t為前景與背景的分割閾值,前景點數佔影象比例為w0, 平均灰度為u0;背景點數佔影象比例為w1,平均灰度為u1。

則影象的總平均灰度為:u=w0*u0+w1*u1。

前景和背景圖象的方差:g=w0*(u0-u)*(u0-u)+w1*(u1-u)*(u1-u)。

當方差g最大時,可以認為此時前景和背景差異最大,此時的灰度t是最佳閾值。

int otsu(iplimage *image)  

;  float pixelpro[256]=;  

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

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

//統計灰度級中每個畫素在整幅影象中的個數  

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

}  //計算每個畫素在整幅影象中的比例  

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

//經典ostu演算法,得到前景和背景的分割  

//遍歷灰度級[0,255],計算出方差最大的灰度值,為最佳閾值  

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

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

else       //前景部分  

}  u0 = u0tmp / w0;        //第一類的平均灰度  

u1 = u1tmp / w1;        //第二類的平均灰度  

u = u0tmp + u1tmp;      //整幅影象的平均灰度  

//計算類間方差  

deltatmp = w0 * (u0 - u)*(u0 - u) + w1 * (u1 - u)*(u1 - u);  

//找出最大類間方差以及對應的閾值  

if(deltatmp > deltamax)  

}  cout<<"閾值為:"< }

(2)迭代閾值分割

迭代閾值分割就是通過迭代方法計算閾值,求取閾值的具體步驟為:假定乙個初始閾值t1,t1一般取影象中灰度值的最大值和最小值的中間值;

使用t1分割影象,得到兩個陣列h1和h2,h1是由灰度值大於等於t1的所有畫素點組成,h2由灰度值小於t1的所有畫素組成;

計算h1和h_2兩個陣列的平均值μ1和μ2;計算新閾值

t2=(μ1+ μ2)/2         (2-5)

如果|t2-t1 |≤t0(t_0為乙個很小的數),即兩次閾值的值很接近時,迭代終止,否則t1=t2,重複上述步驟。最後的t2就是所求的閾值。

int height = img->height;  

int width  = img->width;  

int step      = img->widthstep;  

int channels  = img->nchannels;  

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

double tempg = -1;//臨時類間方差  

double histogram[256]=;// = new double[256];//灰度直方圖  

for(int i=0;i   

}  //迭代閾值分割

double k1,k2;

double t=0,u=0,u1,u2;

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

k2= (u/t);

//迭代,知道k1=k2;

do u1=u/t;

t=u=0.0;

for(i=(int)k2;i<255;i++)//高灰度區域的灰度平均值

u2=u/t;

k2=(u1+u2)/2;//取平均

} while (fabs(k1-k2)<0.000000001);//知道二次的平均一致,不在改變!

cvthreshold(m_pimage, m_pimage, k2+10, 255, cv_thresh_binary_inv);

otsu閾值分割演算法原理 閾值分割 Otsu法

演算法實現 不呼叫函式 include include using namespace std using namespace cv 實現灰度直方圖的繪製 void drawpicture mat inpicture,mat outpicture ma hist const int bins 256...

halcon閾值分割

1.threshold image region mingray,maxgray 全域性閾值分割,適用於環境穩定,目標與背景存在明顯的灰度差的場合。read image image,clip gray histo image,image,absolutehisto,relativehisto gen...

Halcon閾值分割

1.threshold image region mingray,maxgray 全域性閾值分割,適用於環境穩定,目標與背景存在明顯的灰度差的場合。應用 1 利用灰度直方圖確定閾值進行影象分割。一般是物體與背景之間存在乙個明顯的灰度差,直方圖會存在兩個波峰乙個是目標乙個是背景,那麼閾值就是物體與背景...