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

cs131 lecture 1 Introduction

課程介紹 CS131 是史丹佛大學所開設的電腦視覺課程 主要預備技能與知識有 Python 應用 線性代數 微積分 機率與統計 有了以上的基礎知識,在接下來的課程會比較得心應手 而除了 CS131 在史丹佛有電腦視覺課程外,另外還有進階課程 CS231a、到 DNN 領域的 CS231n 讓想更進一步學習的人有更多選擇 Introduction to Computer Vision 人之所以看得到影像,是由於光線照到物體,經由眼睛接收到影像,再傳送到大腦做對應的舉動 ex:騎車看到紅燈會停車、看到貓咪會想用手去摸… 而電腦視覺所做的事也是如此,用一個攝影機接收影像資訊,傳送到電腦,經過計算後進行相應的舉動 電腦視覺與人眼的動作流程差異: 打光到物體成像 -> 接受影像(人眼\sensor) -> 理解(大腦\電腦) 並做出動作 而人眼的視覺感知是非常強的,對物體分析、幾何認知能力在電腦視覺上都很難去做 但偶爾也有出錯(被騙)的時候,人眼視覺錯覺: 棋盤陰影錯覺 電腦視覺的挑戰:將數位影像像素值轉換成有用的訊息 人眼看到的與電腦視覺看到的東西是截然不同的 如何建構一個方法(演算法)可以像人眼一樣識別幾何、分析物體、由影像取出我們想知道的資訊。 電腦視覺應用 3D 建模 臉部辨識:臉部偵測、笑臉檢測 生物辨識:指紋辨識、虹膜辨識、人臉解鎖 文字辨識 OCR 影像分類:手機上執行物品搜尋器-Google Googles、商品搜尋功能 app-snapTell 自駕車 智慧超市

February 8, 2021 · 1 min · yanz