第二章 空間域的切割
2.1 Morphological Gradient
2.1 Morphological Gradient
首先,在 Morphological 處理中的基本運算有下面幾個:
膨脹(Dilation): (Structuring element)。圖 2.1 為膨脹和侵蝕的示意圖。圖 2.1(a)中所指的 A、B 也就是定義中的集合 A 跟 B,圖 2.1(b)中深色的區域則是 A 跟 B 作膨脹運算後
(b)Dilation Α⊕Β (c)Erosion ΑΘΒ 圖 2.1 Dilation 和 Erosion 之示意圖
前面所提到的膨脹跟侵蝕是用在二元影像(binary image)上,若要在灰階值 的影像上應用膨脹和侵蝕,方法需做下述之修正。若欲處理的影像中座標為(x,y) 的灰階值表示為 f(x,y),所使用的結構元素(structuring element) 中座標為(x,y) 的灰階值表示為 b(x,y)。
灰階值的膨脹(Gray-scale dilation)
以 b 對 f 作灰階值膨脹(Gray-scale dilation) 我們可以記作 f ⊕b,定義
就是結構元素中座標是(0,0)的位置) 是對應到影像當中的座標(s,t),相加結果中 的最大值即是此像素膨脹的結果。
灰階值侵蝕(Gray-scale erosion):
以 b 對 f 作灰階值侵蝕(Gray-scale erosion) 我們可以記作 f Θb,定義
經過梯度運算的結果。
(a)
(b)
圖 2.2 梯度運算的結果
2.2 分水嶺切割(Watershed segmentation)
分水嶺切割是將影像分成相同性質的封閉區域,而且區域之間並不會有重 疊發生。所以我們將分水嶺切割作為空間域分割所用的演算法。
2.2.1 用氾濫(immersion)模擬的分水嶺演算法
當我們把一張影像的灰階值當成是地理上表面高度的高低起伏時,則此張 影像在地理的觀點上就猶如有高山、平原、盆地等等的地形分佈。圖 2.3 為分 水嶺演算法的示意圖,圖中地勢越高的地方則是影像中強度越強的地方。圖 2.3 中有二個集水盆地(catchment basins),每一個盆地中都有高度最低的區域,所以 在整張影像當中,每塊局部的最小值都會形成一個集水盆地。我們以氾濫的模 式,去模擬水從各個盆地的最低處開始慢慢的向上漲,當有兩個不同盆地的水 上漲到要互相接觸到時,就用一個水壩將兩邊隔開,而此時的水壩即是我們所 要找的分水嶺線(watershed line),當水漲到最高點的時候,所有的分水嶺皆會被 找出來。
2.2.2 分水嶺演算法之實現
Vincent 和 Soille’s algorithm[5]是最常被使用的到的一個找出分水嶺的演 算法。接下來將簡單的敘述此演算法的處理流程:
步驟 1) 先對要處理的影像 F 的每個點作梯度(gradient) 的運算,找出每個點 的梯度值。而經過此運算後的影像稱為 G。
步驟 2) 將 G 量化成 32 個梯度等級(gradient level),並對 G 中的所有像素依 梯度值由小到大來做排序。
步驟 3) 因為每塊局部最小的區域都會形成一個集水區域,所以將那些擁有最 小梯度等級的像素找出來,這些像素相當於某些集水盆地的最低處,
並且將在同一個盆地中的最小梯度等級像素給予一樣的編號。且每個 盆地有自己所屬的編號。
步驟 4) 接著將對影像中的像素由低到高的梯度等級來做處理。假設我們目 前正要對梯度等級為 N 的像素來做處理,圖 2.4 中顏色較深的部份是 梯度等級小於 N 的像素所構成的集水盆地,顏色較淺的是梯度等級 為 N 的像素,而白色的部份則是梯度等級大於 N 的像素。將圖中已 找出來的集水盆地當作是中心(也就是顏色較深的區域),在這些區域 周圍一圈的像素,若是有梯度等級為 N 且還沒有被編號過的像素,
我們將之給予和集水盆地相同的編號。不斷重複這個動作,每做一次 各個集水區便會向外膨脹一圈擁有梯度等級為 N 的像素,直到各集
水區周圍已經沒有符合條件的像素可以來做膨脹為止。此時,若還有 梯度等級為 N 的像素沒有被給予編號,這些像素構成的區域相當於 圖 2.4 中的”新發現之集水盆地”,也就是說這些像素構成的區域將會 是另一些新的集水盆地之最低處,我們就利用步驟 3 之方式給予這些 像素編號。
步驟 5) 當所有梯度等級為 N 的像素都經過編號後,檢查這些被編號的點,
當像素周圍有跟本身編號不同編號的像素存在,則此像素的位置就 是分水嶺的位置,我們就將此像素標記成分水嶺,以此條件,找出 所有再分水嶺位置的點。而被分水嶺隔開的集水區,將合併成一個 大的集水區,再繼續執行步驟 4,對梯度等級 N+1 的像素來處理。
步驟 6) 當做完最高梯度等級的處理之後,所有的分水嶺的點也都會被找出 來。
當執行完分水嶺的演算法的之後,我們可以發現,所找出來的分水嶺都是 位於影像中梯度值比較強的位置,也就是說是影像中邊緣部份。圖 2.5 中是經 過分水嶺演算法的結果以及他們的原圖。
(a)
(b)
圖 2.4 分水嶺之結果 (a)左邊為 akiyo 分水嶺之結果右邊為原圖 (b)左邊為 hall 分水嶺之結果右邊為原圖
第三章
時間域的切割
在上一章我們介紹的空間域切割所用到的分水嶺演算法,接下來我們在這 章要進入時間域的切割。而時間域的切割最主要的目的在於,切割出影片中在 運動的前景(運動的物件),也就是將會移動的前景跟靜止的背景分開。時間域 切割的基本觀念為,利用影片中影像序列之間的相關性來區分出移動的前景跟 靜止的背景。
所以通常在做物件的切割之前,會先做場景切換的偵測,因為當場景切換 時,兩張畫面之間幾乎沒有關聯性,所以就不會對正在切換的畫面作切割,我 們利用了 Munchurl Kim 的方法[8]取畫面間差值的平均絕對值(mean absolute difference, MAD)來判定是否發生場景切換。
3.1 概要
時間域切割中有兩項資訊是最常被利用參考到的,分別是影像中的運動資 訊和畫面間強度的改變。
首先,影片中物件移動的資訊是以運動向量(motion vector)來表示,而運動
被視為同一個物件。
畫面間強度的改變所指的是每個像素再不同畫面其強度的差異,之所以在 影像序列中像素強度(intensity)的改變為一項重要資訊,是因為移動物件在不同 畫面間的位置、形狀或是內部紋理會有所不同,造成在這些位置的像素其強度 在不同畫面間亦有所不同。我們提出的時間域切割演算法就是利用此項資訊來 做動態物件的切割。利用像素強度改變的資訊來建構和維護一個背景的資訊(靜 止不動的部分),而將要做分割的畫面跟已建構好的背景做比較,若是跟背景不 同的部份便被判定為移動的物件的部份。
3.2 演算法的整個流程
演算法可以分成五個主要步驟,圖 3.1 便是這五個主要步驟的流程圖。畫 面差(frame difference)主要的目的就是在取得兩張連續畫面間所產生改變的部 份,所以畫面差遮罩中被標記的部份則是判定為有所改變的部份。背景建構 (background construction)的動作將會建構出一個可靠的背景資訊,而背景-目前 畫面差(background-current frame difference)會將目前要做分割的畫面跟背景做 比較,找出和背景不同的部份。將上述三個動作所取得的資訊整合起來,即可 得到一個初始的物件遮罩,這個遮罩當中會有雜訊,所以我們還需做最後的處 理, 將雜訊去除得到一個精確的物件遮罩。
current
3.2.1 畫面差(Frame Difference)
畫面差的做法是將目前正要處理的畫面跟前一張畫面的每一個相對座標 的像素相減,若相減出來的絕對值大於門檻值,便認為此像素有所改變。我們 使用一個畫面差遮罩(frame difference mask,FDK)來紀錄哪些像素被認為是移 動的像素,且這個遮罩也會被傳給背景重健的步驟當作輸入。下面的式子將實
⎩⎨
3.2.2 背景的建構(Background Construction)
由於只利用畫面差會因許多外在因素而使得結果不令人滿意,但是背景 資訊和目前畫面的差異會比兩張連續畫面來的大,所以我們要建構一個可靠的 背景。背景建構就是為了要由影像序列中建構出一個可靠的背景資訊來提供給 整個切割的演算法使用。
我們利用兩項資訊來做背景的建構,一個是目前正在處理的畫面之影 像,另一向資訊就是上一個步驟產生的 FDM,建構出來的背景必須存放於一個 背景緩衝器(background buffer)B 內,這個背景緩衝器 B 在一開始的時候是空 的。我們建構或是更新背景緩衝器內像素的主要原則就是,當一像素在連續 N 張畫面沒有改變,我們才認為它是背景像素,將之加入到背景緩衝器內。所以 建構以及更新主要是靠 FDM 所提供的資訊,因為在畫面差步驟當中會去判段 此像素是否有改變。FDM 若是 0 表示此像素沒有改變,此像素則有可能是背景 像素,但是我們現在要建構的是一個可靠的背景,則不能很輕易的就將一個可 能是背景的資訊拿來建構背景,因為有些屬於移動緩慢物件的像素或是物件中 的雜訊也可能在短短幾張畫面中被認為是沒有改變的,這樣會將錯誤的資訊加 入至背景換衝器內,而使得之後的切割產生不正確的結果。因此,我們在建構 背景或是更新時,是當某個座標的像素在連續一定數量的畫面被認為是背景
的,是用來紀錄各個像素連續被認為沒有改變的次數,換句話說,當某個像素
(a) Akiyo 影片所建出來的背景
(b)hall 所建構出來的背景 圖 3.3 建構出來的背景資訊
個背景-目前差遮罩(background-current difference mask,BCDM),下列的式子實 (background buffer)內的值相減,而不是跟前一個畫面相減。圖 3.4 為 hall 經過 此步驟產生的結果,很明顯的看出來,它所產生的分割資訊 BCDM,比圖 3.2(b) 的 FDM 準確,尤其是在影像中人的內部,在 FDM 中無法完整的呈現,但是在 BCDM 中卻能較完整的呈現。這就是建構背景的最大好處。
圖 3.4 hall 的 BCDM
3.2.4 偵測物件(object detection)
經過前面的處理取得一些物件相關的資訊後,則利用這些資訊將物件偵 測出來,以一個初始物件遮罩(initial object mask,IOM)來表示偵測出的物件。
IOM 是判斷 BCDM(background current difference mask)、FDM(frame difference mask )和 BCM(background construction mask)所提供的資訊而產生的。表 3.1 描 述了偵測物件的規則,影像中的每個像素皆是以此表來做判斷。表中物件像素 (Object pixel)的欄位是表示該像素是否為物件像素。
BCM BCDM FDM Object pixel
False unused 1 Yes False unused 0 No True 1 unused Yes
True 0 unused No
表 3.1 物件偵測判斷表
對於畫面中的每一個像素,首先,我們由 BCM 判斷它的背景資訊是否 已經建構,若尚未建構,則它的 BCM 為否(false),表示背景緩衝器內目前是空 的。我們在偵測物件的時候就只能利用 FDM(畫面差遮罩)的資訊而不能參考