1. 程式人生 > >計算機視覺(八):影象分割

計算機視覺(八):影象分割

一、閾值處理

      由於閾值處理直觀、實現簡單且計算速度快,因此影象閾值處理在影象分割應用中處於核心地位。

1. 基礎知識

      假設圖1(a)中的灰度直方圖對應於影象 f

( x , y ) f(x,y) ,該影象由暗色背景上的較亮物體組成,以這樣的組成方式,物體畫素和背景畫素所具有的灰度值組成了兩種支配模式。從背景中提取物體的一種明顯方法是,選擇一個將這些模式分開的閾值 T
T
。然後, f ( x , y ) > T f(x,y)>T 的任何點 ( x , y ) (x,y) 稱為一個物件點;否則該點稱為背景點。分割後的影象 g ( x , y ) g(x,y) 由下式給出:
g ( x , y ) = { 1 , f ( x , y ) > T 0 , f ( x , y ) T            ( 1 ) g(x,y) = \begin{cases} 1, & \text{$f(x,y) > T$} \\ 0, & \text{$f(x,y) ≤ T$}\ \ \ \ \ \ \ \ \ \ (1) \end{cases} T T 是一個適用於整個影象的常數時,上式給出的處理稱為全域性閾值處理。當 T T 值在一幅影象上改變時,我們把該處理稱為可變閾值處理(區域性閾值處理或區域閾值處理有時用於表示可變閾值處理)。若 T T 取決於空間座標 ( x , y ) (x,y) 本身,則可變閾值處理通常稱為動態閾值處理或自適應閾值處理。
      圖1(b)顯示了一個更為困難的閾值處理問題,它包含有三個支配模式的直方圖。分割的影象由下式給出:
g ( x , y ) = { a , f ( x , y ) > T 2 b , T 1 < f ( x , y ) T 2 c , f ( x , y ) T 1 g(x,y) = \begin{cases} a, & \text{$f(x,y) > T_2$} \\ b, & \text{$T_1 < f(x,y) ≤ T_2$} \\ c, & \text{$f(x,y) ≤ T_1$} \end{cases} 式中,a、b和c是任意三個不同的灰度值。
在這裡插入圖片描述

圖1

2. 基本的全域性閾值處理

      當物體和背景畫素的灰度分佈十分明顯時,可以用適用於整個影象的單個(全域性)閾值。能對每幅影象自動估計閾值的演算法如下:
① 為全域性閾值 T T 選擇一個初始估計值。
② 在式(1)中用 T T 分割該影象。這將產生兩組畫素: G 1 G_1 由灰度值大於 T T 的所有畫素組成, G 2 G_2 由所有小於等於 T T 的畫素組成。
③ 對 G 1 G_1 G 2 G_2 的畫素分別計算平均灰度值(均值) m 1 m_1 m 2 m_2
④ 計算一個新的閾值: T = 1 2 ( m 1 + m 2 ) T = {1\over 2}(m_1+m_2)
⑤ 重複步驟2到步驟4,直到連續迭代中的 T T 值間的差小於一個預定義的引數 Δ T \Delta T 為止。
      通常, Δ T \Delta T 越大,則演算法執行的迭代次數越少。所選的初始閾值必須大於影象中的最小灰度級而小於最大灰度級。影象的平均灰度對於 T T 來說是較好的初始選擇。

3. 用Otsu方法的全域性閾值處理

      令 { 0 , 1 , 2 , . . . , L 1 } \{0,1,2,...,L-1\} 表示一幅大小為 M × N M\times N 畫素的數字影象中的 L L 個不同的灰度級, n i n_i 表示灰度級為 i i 的畫素數。影象中的畫素總數為 M N = n 0 + n 1 + . . . + n L 1 MN = n_0+n_1+...+n_{L-1} 。歸一化的直方圖具有分量 p i = n i / M N p_i = n_i/MN 。由此有
i = 0 L 1 p i = 1 ,      p i 0 \sum_{i=0}^{L-1}p_i = 1,\ \ \ \ p_i\geq 0       假設使用閾值把輸入影象處理為兩類 C 1 C_1 C 2 C_2 ,Ostu演算法如下:
① 計算輸入影象的歸一化直方圖。使用 p i p_i