影象二值化演算法是影象處理的基礎。一般來說,二值化演算法可以分為兩個類別:全域性二值化和區域性二值化。全域性二值化是指通過某種演算法找到乙個全域性的閾值t,對影象中座標為(x,y)的畫素值做如下處理:
ostu就是這樣一種全域性二值化演算法,又叫最大類間方差。因為該演算法會遍歷影象中任意乙個畫素值i,計算當其為閾值時,影象的前景和背景影象(並不一定是真正的前景和背景,只是我們把當前小於i的記做背景,大於i的記做前景)的方差值。當方差值達到最大時,我們認為此時的i是該影象的全域性閾值。
符號說明:
前景點數佔影象比例:w0;平均灰度:u0
背景點數佔影象比例:w1,平局灰度:u1
影象平均灰度:
前景和背景影象方差:
c++**:
intostu(mat image)
int pixel=0
;
for(i = 0; i < height; i++)
}//經典ostu演算法,得到前景和背景的分割
//遍歷灰度級[0,255],計算出方差最大的灰度值,為最佳閾值
deltamax=0
;
for(i = 0; i < 256; i++)
else
}mean1=ip1/is1; //
第一類畫素平均灰度值
w0=(float)is1/(float)pixelsum;//
第一類畫素佔整個影象比例
mean2=ip2/is2;
w1=1-w0;
mean=w0*mean1+w1*mean2;
deltatmp=w0*w1*(mean1-mean2)*(mean1-mean2);//
灰度值為i的閾值的類間方差
if (deltatmp>deltamax)
}
return
thres;
}
基於c 實現的幾種排序演算法
插入排序是有乙個已經有序的資料序列,在這個已經排好的資料數列中插入乙個數,要求插入後此資料序列仍然有序。這種演算法適用於少量資料的排序,時間複雜度為o n 2 void insertsort int a,int len a j 1 key 氣泡排序是相鄰的兩個元素比較,像開水冒泡一樣,每輪把最大或最...
基於c 的A star演算法
資料 一 基礎原理 1 從起點開始,向周圍八個方向擴充套件。測試新擴充套件的點的路徑代價,路徑代價由已走的路徑和距離終點的期望加和而成。這個路徑代價是選擇路徑的標準。2 有兩個表open close。close 生成並且考察過的點,存在兩種點。一種是當前選擇的路徑,是最終想要的結果。另一種是考察但沒...
基於 C 的 SQL Parser 實現
乙個函式,可以提取sql語句中查詢字段部分。雖然函式中使用了block,但是block可以很方便的轉換成純 c 的函式,而且未來 block 也很有可能成為 c 標準。import typedef struct field field const field emptyfield static in...