灰度圖像的二值化自適應(yīng)閾值的算法_第1頁
灰度圖像的二值化自適應(yīng)閾值的算法_第2頁
灰度圖像的二值化自適應(yīng)閾值的算法_第3頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、OTSU方法計算圖像二值化的自適應(yīng)閾值 最大類間方差法(otsu)的原理: 閾值將原圖象分成前景,背景兩個圖象。 前景:用n1, csum, m1來表示在當(dāng)前閾值下的前景的點數(shù),質(zhì)量矩,平均灰度 后景:用n2, sum-csum, m2來表示在當(dāng)前閾值下的背景的點數(shù),質(zhì)量矩,平均灰度 當(dāng)取最佳閾值時,背景應(yīng)該與前景差別最大,關(guān)鍵在于如何選擇衡量差別的標(biāo)準(zhǔn) 而在otsu算法中這個衡量差別的標(biāo)準(zhǔn)就是最大類間方差(英文簡稱otsu,這也就是這個算法名字的來源) 在本程序中類間方差用sb表示,最大類間方差用fmax 關(guān)于最大類間方差法(otsu)的性能: 類間方差法對噪音和目標(biāo)大小十分敏感,它僅對類間

2、方差為單峰的圖像產(chǎn)生較好的分割效果。 當(dāng)目標(biāo)與背景的大小比例懸殊時,類間方差準(zhǔn)則函數(shù)可能呈現(xiàn)雙峰或多峰,此時效果不好,但是類間方差法是用時最少的。 最大最大類間方差法(otsu)的公式推導(dǎo): 記t為前景與背景的分割閾值,前景點數(shù)占圖像比例為w0, 平均灰度為u0;背景點數(shù)占圖像比例為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的表達式 當(dāng)方差g最大時,可以認(rèn)為此時前景

3、和背景差異最大,也就是此時的灰度是最佳閾值 OTSU方法計算圖像二值化的自適應(yīng)閾值 /* OTSU 算法可以說是自適應(yīng)計算單閾值(用來轉(zhuǎn)換灰度圖像為二值圖像)的簡單高效方法。 下面的代碼最早由 Ryan Dibble提供,此后經(jīng)過多人Joerg.Schulenburg, R.Z.Liu 等修改,補正。 算法對輸入的灰度圖像的直方圖進行分析,將直方圖分成兩個部分,使得兩部分之間的距離最大。劃分點就是求得的閾值。 parameter: *image - buffer for image rows, cols - size of image x0, y0, dx, dy - region of ve

4、ctor used for computing threshold vvv - debug option, is 0, no debug information outputed */ /*=*/ /* OTSU global thresholding routine */ /* takes a 2D unsigned char array pointer, number of rows, and */ /* number of cols in the array. returns the value of the threshold */ /*=*/ int otsu (unsigned c

5、har *image, int rows, int cols, int x0, int y0, int dx, int dy, int vvv unsigned char *np; / 圖像指針 int thresholdValue=1; / 閾值 int ihist256; / 圖像直方圖,256個點 int i, j, k; / various counters int n, n1, n2, gmin, gmax; double m1, m2, sum, csum, fmax, sb; / 對直方圖置零. memset(ihist, 0, sizeof(ihist; gmin=255; g

6、max=0; / 生成直方圖 for (i = y0 + 1; i y0 + dy - 1; i+ np = &imagei*cols+x0+1; for (j = x0 + 1; j gmax gmax=*np; if(*np gmin gmin=*np; np+; /* next pixel */ / set up everything sum = csum = 0.0; n = 0; for (k = 0; k = 255; k+ sum += (double k * (double ihistk; /* x*f(x 質(zhì)量矩*/ n += ihistk; /* f(x 質(zhì)量 */ if

7、(!n / if n has no value, there is problems. fprintf (stderr, NOT NORMAL thresholdValue = 160n; return (160; / do the otsu global thresholding method fmax = -1.0; n1 = 0; for (k = 0; k fmax fmax = sb; thresholdValue = k; / at this point we have our thresholding value / debug code to display threshold

8、ing values if ( vvv & 1 fprintf(stderr,# OTSU: thresholdValue = %d gmin=%d gmax=%dn, thresholdValue, gmin, gmax; return(thresholdValue; 另外一個 unsafe public int GetThreshValue(Bitmap image BitmapData bd = image.LockBits(new Rectangle(0, 0, image.Width, image.Height, ImageLockMode.WriteOnly, image.Pixe

9、lFormat; byte* pt = (byte*bd.Scan0; int pixelNum = new int256; /圖象直方圖,共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.Forma

10、t24bppRgb: 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表示 pixelNumcolor+; /相應(yīng)

11、的直方圖加1 /直方圖平滑化 for (k = 0; k = 255; k+ total = 0; for (t = -2; t = 2; t+ /與附近2個灰度做平滑化,t值應(yīng)取較小的值 q = k + t; if (q 255 q = 255; total = total + pixelNumq; /total為總和,累計值 pixelNumk = (int(floattotal / 5.0 + 0.5; /平滑化,左邊2個+中間1個+右邊2個灰度,共5個,所以總和除以5,后面加0.5是用修正值 /求閾值 sum = csum = 0.0; n = 0; /計算總的圖象的點數(shù)和質(zhì)量矩,為后面的計算做準(zhǔn)備 for (k = 0; k = 255; k+ sum += (doublek * (doublepixelNumk; /x*f(x質(zhì)量矩,也就是每個灰度的值乘以其點數(shù)(歸一化后為概率),sum為其總和 n += pixelNumk; /n為圖象總的點數(shù),歸一化后就是累積概率 fmax = -1.0; /類間方差sb不可能為負(fù),所以fmax初始值為-1不影響計算

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論