圖像預處理(二值化)

圖像預處理(二值化)

本文的實驗室主要經過opencv與python3實現,相關的代碼能夠在GitHub中找到。html

1. 圖像獲取與灰度化

經過攝像頭獲取到的圖像爲彩色的圖像。彩色圖像主要分爲兩種類型,RGB及CMYK。其中RGB的彩色圖像是由三種不一樣顏色成分組合而成,一個爲紅色,一個爲綠色,另外一個爲藍色。而CMYK類型的圖像則由四個顏色成分組成:青C、品M、黃Y、黑CMYK類型的圖像主要用於印刷行業。python

每一個圖像的像素一般對應於二維空間中一個特定的位置,而且有一個或者多個與那個點相關的採樣值組成數值。灰度圖像,也稱爲灰階圖像,圖像中每一個像素能夠由0(黑)到255(白)的亮度值(Intensity)表示。0-255之間表示不一樣的灰度級。git

將彩色圖像轉化成爲灰度圖像的過程稱爲圖像的灰度化處理。灰度化,在RGB模型中,若是R=G=B時,則彩色表示一種灰度顏色,其中R=G=B的值叫灰度值,所以,灰度圖像每一個像素只需一個字節存放灰度值(又稱強度值、亮度值),灰度範圍爲0-255。彩色圖像中的每一個像素的顏色有R、G、B三個份量決定,而每一個份量有255個值可取,這樣一個像素點能夠有1600多萬(255255255)的顏色的變化範圍。而灰度圖像一個像素點的變化範圍爲255種,因此在數字圖像處理種通常先將各類格式的圖像轉變成灰度圖像以使後續的圖像的計算量變得少一些。灰度圖像的描述與彩色圖像同樣仍然反映了整幅圖像的總體和局部的色度和亮度等級的分佈和特徵。對於灰度化的方式有份量法、最大值法、平均值法,加權平均法等。本文使用平均值法對圖像進行灰度化。github

對於平均值法,將彩色圖像中的R、G、B三個份量的亮度求簡單的平均值,將獲得的值做爲灰度值輸出而獲得灰度圖。其實現的表達式以下:算法

1524360552787

經過實驗獲得獲得以下圖所示,灰度化先後:(實現代碼)函數

2.二值化

經過以上對彩色圖片進行灰度化之後,把獲取到的灰度圖像進行二值化處理。對於二值化,其目的是將目標用戶背景分類,爲後續車道的識別作準備。灰度圖像二值化最經常使用的方法是閾值法,他利用圖像中目標與背景的差別,把圖像分別設置爲兩個不一樣的級別,選取一個合適的閾值,以肯定某像素是目標仍是背景,從而得到二值化的圖像。測試

對於閾值法二值化,假設閾值設置爲T,就能夠以T爲邊界,把數值分爲兩個部分,則二值化的公式以下:
1524362043254
式中,Gray(i,j)表示在圖片(i,j)處的灰度值,Ϝ(i,j)表示二值化後的值,只能取0或者1。在閾值二值化中,最主要的是選取合適的閾值,這也是二值化的難點所在。經常使用的二值化閾值選取方法有雙峯法、p參數法、大律法(Otsu法)、最大熵閾值法、迭代法等。3d

2.1 雙峯法選取閾值T

若是給定的圖像的灰度分佈是比較有規律,苗木表和背景在圖像的直方圖各自造成一個波峯,他們之間存在波谷。那麼,閾值T能夠在波谷取值,以下圖所示:
1524362867104
實現的表達式以下:

式中,T表示閾值,Gray(i,j)表示原始圖像的灰度值,G(i,j)表示二值化後的灰度值。經過實驗獲取獲得的道路圖像的直方圖灰度分佈,如圖所示。

從圖中能夠看出,在道路圖像二值化中不適合使用雙峯法選取閾值。htm

2.2 P參數法選取閾值T

若已知目標區域的P值,則能夠採用P參數的法進行分割。假設已知直方圖中目標區域所佔的比例爲P_1,則該算法實現的步驟以下:
(1). 計算圖像直方圖的分佈P(t),其中t = 0,1,2...255,表示圖像的灰度值;
(2). 從t=0開始,計算圖像的累積分佈直方圖,實現的表達式爲:

(3). 計算閾值T,

獲得的T值也表示P_1最接近累積分佈的灰度分佈值t。圖片

2.3 大律法(Otsu法)選取閾值T

Otsu算法的基本思想是用某一假定的灰度值t將圖像的灰度分爲兩組,當兩組的類間方差最大時,此灰度值t就是圖像二值化的最佳閾值。假設圖像有L個灰度值,那麼灰度值的取值範圍爲0~L-1,在此範圍內取灰度值T,將圖像分紅兩組G_1和G_2其中G_1包含的像素值在0~T,G_2的灰度值在T+1~ L-1,用N表示圖像圖像像素總數,n_i表示灰度值爲i的像素的個數。求值過程以下:假設每個灰度值i出現的機率p_i= n_i/N,G_1和G_2兩組像素個數在總體圖像中所佔的百分比爲ω_1和ω_2,兩組平均灰度值爲μ_1和μ_2,則:
佔比:

平均值灰度值:

圖像總灰度值:

類間方差:

最佳閾值:獲取類方差最大值時對應的灰度值t:

經過以上的步驟便可獲得最佳的T值。

2.4 最大熵閾值法求T值

在信息論中的Shannon entropy概念用於圖像分割,依據是使得圖像中目標與背景分佈的信息量最大,即經過測試圖像灰度直方圖的熵,找出最佳的閾值T。對於灰度值範圍爲0,1,2...L-1的圖像,其直方圖熵的定義爲:

其中p_i爲像素值爲i的像素佔整個圖像的機率。設閾值t將圖像劃分爲目標O和背景B兩類,他們的機率分佈分別爲:

因此目標O和背景B的熵函數分別爲:

其中,

圖像的總熵爲:

此方法不須要先驗知識,而對非理想的雙峯直方圖也能夠進行較好的分割,但不適合信噪比較低的圖像分割。
經過實驗,對灰度化的圖像進行二值化後的效果以下,

能夠本身調整閾值來到達更好的二值化效果。相關代碼,與API在GitHub中能夠找到。

未完待續。

參考文獻

https://wenku.baidu.com/view/acc24dcf680203d8ce2f2469.html

https://wenku.baidu.com/view/bb6e38f7c8d376eeaeaa3163.html

相關文章
相關標籤/搜索