Efficient Graph-Based Image Segmentation

在stanford中的cs131課程提到的Graph-based segmentation,剛好介紹到這篇論文,就來研讀一下。 論文網址:Felzenszwalb, Pedro F., and Daniel P. Huttenlocher. “Efficient graph-based image segmentation.” International journal of computer vision 59.2 (2004): 167-181. 本篇論文是基於圖的(Graph-Based)影像分割演算法,提出一個有效率的影像分割方式,並且影像分群的的結果是有意義的。 主要動機 過往的某些方法並沒有考慮到漸變的影像,使得分割結果不符合預期 問題描述 影像 $G$ 是由像素集合V與無向邊 $E$ 連接一組點對$(v_i, v_j)$,並且具有權重 $w(v_i, v_j)$,權重是由兩像素點之間的差異來產生 S是在影像G分割出來的一個區塊,並以 $G’=(V,E’)$ 表示, 其中$ E’\in E$ 斷定為分割公式定義 斷定兩區域$C_1,C2$是否存在邊界分割,是基於量測兩個區域$C_1,C2$之間的相異性,以及評估區塊內部各自元素的相異性程度 $Dif(C_1, C_2)是兩區域之間的差異,差異是指將組件C_1中的節點v_i連接到C_2中的節點v_j的最小權重邊$ $Int(C)$是計算同一區域內兩兩像素點之間的最大權重 $MInt(C_1, C_2)$是個別區域內的內部差異 $\tau(C)是一個閾值,由設定參數k來控制最後產生的群集大小$ 演算法流程 計算每個像素8相連或4相連的不相似度 將edge E按照不相似度non-decreasing排序edge權重得到$o_1,o_2,…,o_m$ 開始分割動作,初始分割區域為$S^0$, 其中每個像素點$v_i$是獨立的一個區域 重複步驟並定義$q=1,…m$ $S^q$的初始區域是由$S^{q-1}$組成, 定義$v_i, v_j$ 是一組前q小的edge權重對應的點對$o_q = (v_i, v_j) $ 檢查點對合成條件是否符合, 合成條件參考$D(C1, C2)$, 符合則合併, 否則維持分割結果S並繼續執行到結束 測試結果 使用的測試資料是COIL database, 對不同的影像大小使用不同的參數k ...

March 25, 2021 · 1 min · yanz

cs131 lecture 9 Segmentation and Clustering-Agglomerative Clustering

影像分割目的 把屬於同一群的像素集合在一起 將想要做進一步分析的物件與背景分割出來,概念跟框選 ROI 相似,但是更精細的 ROI,把非物件的不相干雜訊濾除 視覺上分群的範例 依照格式塔原則進行分類,以 Gestalt 為名的完形心理學,概念#是人類對於任何視覺圖像的認知,是一種經過知覺系統組織後的形態與輪廓,而並非所有各自獨立部份的集合。 其中格式塔原則的一些特點: Similarity 相似性 Symmetry 對稱性 Common Fate 共同命運,同群在影像中表現出相同的移動方向性、趨勢 Proximity 相近性,物體距離相近時視為一群 clustering method 分群的概念是把一組資料依照距離或相似程度分成不同的群集 分群法是一種非監督式分群方法 相似度比對 常見的相似度比對方法有: Euclidean distance Cosine similarity 歐式距離: 餘弦相似性,概念是比對兩向量的夾角角度: 分群演算法理想特性 可擴縮性(Scalability) 可以處理不同的資料型態 簡單的參數調整與設定 可說明性,呈現的結果是可解釋的 約束性,演算法可由使用者預先設定的限制下動作 Agglomerative clustering 將每個資料點都視為一獨立的群 找出最相近的群集點對 將點對合併成一群 重複上述步驟直到合併結束 定義群集之間的相似性 點到點之間的平均距離 最小點距離 最大點距離 優缺點 好實現且應用廣泛 集群具有自適應形狀 提供階層式的集群 不需預設群數 可能會出現不均勻的群集結果 還是需要定義群集相似度閾值 時間複雜度 $O(n^3)$ 可能陷入局部最佳解 參考 視覺法則 – 格式塔原則

March 24, 2021 · 1 min · yanz

cs131 lecture 6 Feature Descriptors-HoG

另一種描述影像特徵的方法,HoG(Histogram of Oriented Gradients),方向梯度直方圖 特徵描述子 HoG 簡介 局部的物件外觀與形狀經常由局部亮度梯度或邊緣方向顯現出來,因此透過局部梯度資訊建立一個梯度角度直方圖的特徵 HoG 流程 把影像切分成多個小區塊(稱為 cells),cells 的形狀可以是矩形或圓形,每個 cell 累加梯度方向的局部直方圖 把 cell 合成多個格子成為一個 block,對 block 內的亮度區域進行正規化 結果: 與 SIFT1 不同的地方 HoG 通常用來描述更大的影像區域,SIFT 用關鍵點來進行匹配 SIFT 是對整體梯度進行正規化,HoG 是使用周圍的 cell 區塊 參考 一文講解方向梯度直方圖(hog) A Gentle Introduction Into The Histogram Of Oriented Gradients

March 16, 2021 · 1 min · yanz

cs131 lecture 6 Feature Descriptors-SIFT

我們在上一回找到了角點,但如何利用關鍵點的周圍資訊,來讓彼此匹配,也許可以把角點周圍的像素區塊取出來匹配,但如果遇到兩張影像角度不同時如何匹配? SIFT descriptor(SIFT=Scale-Invariant Feature Transform) 建構一個旋轉不變性描述子 從 DoG 得到一個帶有尺度不變性的關鍵點 從關鍵點周圍資訊找出特徵角度(不直接旋轉個別影像區塊進行匹配,因為很慢) SIFT 流程 使用影像梯度計算關鍵點周圍的角度直方圖,並把角度切成八等分 把關鍵點周圍梯度值每 4x4 為一群,個別計算旋轉過的梯度方向直方圖 梯度的貢獻程度取決於距離,如果它在兩個直方圖位置的中間,它給兩個直方圖一半的貢獻 梯度直方圖的方向分為 8 份與每個區塊為 4x4 是由作者選出最佳的參數結果 8 方向的直方圖,4x4 個直方圖陣列,會有 8x4x4=128 個向量 SIFT 描述子是一個長度為 128 的向量,並有帶有旋轉不變性與尺度不變性 可以比較影像 A 與影像 B 的各自的向量來尋找配對的關鍵點 很大的影像梯度通常來自 3D 照明效果(如:眩光),將 128 維向量最大數值限制在 0.2 內,計算完後再進行正規化(乘上 256) SIFT 測試結果 在隨機改變影像尺度、角度,再加上一定的 noise 的 dataset 下的特徵比對結果 在隨機改變影像尺度、角度、仿射變換並加入 2%的 noise 的 dataset,對 30000 個特徵進行最鄰近點搜尋的結果,測試穩定性 對測試資料進行 30 度的仿射變換與 2%的 noise 後提取特徵點,計算單點最鄰近搜尋的準確率 SIFT 結論 SIFT 是一個具有尺度不變性、旋轉不變性,並具有獨特性的關鍵點提取方法 有效率的計算速度,可以在一般的 PC 上做到接近即時處理的效果 論文中也展示使用關鍵點加上最鄰近搜尋來進行物件檢測 參考 David G. Lowe,“Distinctive Image Features from Scale-Invariant Keypoints”," International Journal of Computer Vision, 60, 2 (2004), pp. 91-110 wiki-尺度不變特徵轉換

March 15, 2021 · 1 min · yanz

cs131 lecture 6 Feature Descriptors-Laplacian & DoG

問題 Harris corner 沒有尺度不變性 在不同尺度下所呈現的角點響應函數都不同,Image 1 的最小圓圈範圍是跟 Image 2 最大圓圈範圍才會有相同的角點結果 解決方法 希望能設計一個 scale invariant detection function 可以讓每張影像都找得到一個穩定的尖峰,才能在多尺度搜尋時找到相同的結果 Scale Invariant Detection 使用 Laplacian 與 Difference of Gaussians kernel 來對影像進行不同尺度的縮放 Laplacian kernel $L = \sigma^2(G_{xx}(x,y,\sigma)+G_{yy}(x,y,\sigma))$ 其中 G 是高斯函數 $G(x,y,\sigma)=\frac{1}{\sqrt{2\pi}\sigma}e^{-\frac{x^2+y^2}{2\sigma^2}}$ Difference of Gaussians(DoG) $DoG = G(x,y,k{\sigma}) - G(x,y,{\sigma}) $ 對影像逐漸加深模糊度,越模糊所保留的細節越少 高斯差所得到的影像細節隨著$\sigma$越大細節越粗糙 Scale Invariant Detections Harris-Laplacian:結合 Laplacian kernel 的 harris corner,並取出局部最大值作為結果 SIFT:使用 DoG 並對每個點取 3x3x3 鄰居 26 個點(不包含自己),找出高斯差最小的數值

March 10, 2021 · 1 min · yanz

cs131 lecture 5 Features And Fitting-Local Invariant Features & Harris Corner

使用特徵點來尋找物件、定位、全景拼接 使用 Local Invariant Features 動機 全局特徵有它的限制性 增強對遮擋、角度變化的魯棒性 常見的方法 找到多個獨特的關鍵點 定義一個 window 大小把 key points 的的周圍資訊取出來 提取周圍資訊並做正規化 計算正規化區域的局部描述子,例如使用區域色彩資訊 匹配局部描述子 好的 Local Features 特性 區塊特徵萃取要有重複性與準確性 特徵是局部的獨特,對變形與雜亂背景有魯棒性 要能萃取夠多的特徵進行比對 計算方法越快越好 Harris Corner 設計準則:可以很簡單的用一個小視窗當作視野範圍辨認出角點 如果在角點,往任意方向移動這個小視窗應該會有很大的亮度變化 Formulation 移動小視窗的中心座標點$[x,y]到[x+u,y+v]$來計算移動後的亮度變化 量測單點亮度變化公式: $ I(x+u,y+v) - I(x,y) $ 計算整個小視窗內的亮度變化公式: $\sum_{xy}w(x,y)[I(x+u,y+v)-I(x,y)]^2 $ 其中 window function 可以使用加權函數、高斯函數 利用泰勒展開式對$I(x+u,y+v)$ 其中一階近似為 將一階近似帶入 harris corner 公式 最終 其中 M 是一個 2x2 的矩陣用來計算影像導數 M 是對稱矩陣,求其特徵值 可以把矩陣 M 想像成是一個橢圓型,其中它的軸長是$\lambda_1 , \lambda_2$,方向由 R 定義 可以看到$\lambda_1 , \lambda_2$ 與影像的關係,而我們只關心 corner 的地方,試著將 corner 位置的值透過一個公式過濾出來 ...

March 10, 2021 · 1 min · yanz

cs131 lecture 5 Features And Fitting-RANSAC

線段檢測的難題 會有雜訊干擾 如何找到一條局部斷裂的線 由 noise 干擾導致檢測方向偏移 回顧投票法 蠻力投票法,時間複雜度$ O(N^2) $ 投票法可以讓所有模型通用 循環所有參數,取得投票結果 選出高票參數結果 雜訊所產生的線段也會被納入投票的參數中,但通常結果會與我們想要的預期不符 RANSAC RANdom SAmple Consensus,隨機抽樣一致 將資料分成 inliers(正常數據), outliers(異常數據) RANSAC 目標:濾除異常數據,使用正常的數據進行檢測 直覺來看,在線段檢測中,若選擇的 edge 是 outliers 進行擬合時,其他點應該不會在所擬合的線段上 隨機選取兩點得到直線後,藍色點為靠近線段的 inliers,紫色點為遠離線段的 outliers RANSAC 流程 循環 k 次迭代: 在一組資料集中(ex:edge 點座標)隨機選擇要執行模型評估的最小數據集(ex:直線偵測下是兩個點) 代入選擇的數據集來計算數據模型 尋找此模型內的 inliers 數量 比較當前模型結果與目前最佳模型結果數量,紀錄最大 inliers 數量與對應模型結果 重新估算迭代次數 k 如何設定參數 k 參數符號定義: 假設$n$是建立模型所需的點數量(已知,ex:直線擬合需要兩點) $w$ 是 inliers 的數量/數據集的總數量(未知) $w^n$是所有$n$個點均為是 inliers 的機率 $1-w^n$是所有$n$個點有一個是 outliers 的機率 迭代$k$次都沒辦法找到所有點是 inliers 的機率$(1-w^n)^k$ 迭代$k$次所有點是 inliers 的機率$1-(1-w^n)^k$ 選擇較高的迭代次數$k$來讓找到 inliers 的機率提高 ...

February 28, 2021 · 1 min · yanz

cs131 lecture 4 Edge Detection

Edge 的重要性 大部分的形狀等資訊可以從邊緣分析出來 用 edge 來提取資訊、辨識物件 回復幾何形狀與消失點(vanishing point) Edge 產生原因 表面法向不連續性(Surface normal discontinuity):區塊內看到多個不同角度的表面 深度不連續性 (Depth discontinuity):由物體前後距離不一所產生邊緣 表面顏色不連續性 (Surface color discontinuity):物體改變顏色,例如材質顏色改變 亮度不連續性 (Illumination discontinuity):陰影,光線亮度變化 邊緣檢測在一階微分應用 Edge detection Using First/Second Derivative 透過一階微分找出亮度變化大的地方 First Derivative 1D function: 2D function: 轉換成 2D mask/filter gradient vector:對 x,y 方向進行偏微分,也就是用上述兩個 Gx, Gy 的 mask 個別對影像進行 convolution gradient magnitude:透過 x,y 方向梯度的加總得到最終梯度強度 gradient direction:gradient vector 中 gradient 變化量最大的角度 Noise 對 edge detection 的影響 noise 對邊緣檢測的影響不大 若有較大的影響可以考慮先對影像進行平滑運算 Median filter Gaussian filter Bilateral filter Tradeoff:影像模糊度越強,noise 越少,但 edge 也會被模糊掉 ...

February 21, 2021 · 2 min · yanz

cs131 lecture 3 Filters And Convolutions

概述 What is filtering:Forming a new image whose pixel values are transformed from original pixel values 影像處理中的濾波:把原來影像像素值透過某種轉換組合成新的影像 目標 從影像中取出有用的訊息或轉換影像屬性 擷取特徵:edge, corners, blobs detection… 其他應用:超解析度成像 super-resolution, 影像修復 in-painting, 去噪 de-noising convolution & correlation convolution 公式: correlation 公式: compare with convolution & correlation convolution 的符號是$ f*g $,correlation的符號是$ f**g $ convolution 先對 filter mask 做轉置再做 correlation 參考 影像修復 matlab example

February 18, 2021 · 1 min · yanz

cs131 lecture 2 Images And Transformations

數位影像的類別 Binary : 二值化影像,影像像素值非 0 即 1,在影像顯示中 0 表示黑色、1 代表白色 Grayscale : 灰階影像,影像像素值在[0~255]之間,像素值越大越接近白色 Color : 彩色影像,常見的是 RGB 和 CMYK,RGB 彩色影像是由紅、綠、藍三個色彩通道組合而成。CMYK 則是由青色(Cyan)、洋紅色(Magenta)、黃色(Yellow)、黑色(blacK)四個通道組成。 影像解析度 dpi:Dots Per Inch,每英寸點數,dpi 的數值越高,所輸出的解析度就越高,常用在印表機上的設定 影像轉換 變換矩陣 transformation matrix 對原 x,y 座標進行縮放 角度轉換 矩陣可以做多重轉換: $ p’=R_2R_1Sp $ 其中 p 是座標點,$R_1 R_2 是角度轉換矩陣,S是縮放矩陣,p’是轉換後的座標點$ 多重轉換的細節: 矩陣變換是由右到左做變換 上列式子與 $ p’=R_2(R_1(Sp)) $ 相等 也與$ p’=(R_2R_1S)p $ ,先做矩陣變換運算,再與座標變換 齊次坐標 Homogeneous coordinates 變換矩陣可以做縮放、旋轉,但卻不能加上常量進行平移 解決方法:每個向量末端加上"1" 新的轉換矩陣可以旋轉、縮放,還可以平移了,讚 齊次坐標上的影像縮放 為何在加上每個向量末端加上"1"就可以進行縮放? 原因是在:我們也許想透過除法的方式達到縮放的效果,但實際上矩陣運算並不能直接做除法運算,因此將他轉換為齊次座標,再進行除法運算 用圖片來解釋比較清楚: 有個座標點為$ [x, y] = [15, 21] $,今天想將它縮小3倍, 我們透過齊次座標的方式把$[x, y]$改寫成$[x, y, w] = [15, 21, 3]$ 其中的$W$把它想像成是我們的投影機距離 ...

February 10, 2021 · 1 min · yanz