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

Canny Edge Detector

Canny edge檢測流程 使用高斯濾波器 使用Sobel濾波器取出x,y方向梯度 對梯度進行非極大值抑制 使用滯後閾值 高斯濾波 平滑影像,濾除雜訊 滯後閾值 設定高閾值與低閾值 低於低閾值的不是edge,如線段(D) 高於高閾值的是強edge,如線段(A)、(B) 介於高低閾值之間的edge,需檢查他的線段是否有與強edge連接 若有連接到,如線段(C),就視為edge,沒連接到的就非edge(E)

December 15, 2020 · 1 min · Yen Tsai

Canny Edge Detector

Canny edge檢測流程 使用高斯濾波器 使用Sobel濾波器取出x,y方向梯度 對梯度進行非極大值抑制 使用滯後閾值 高斯濾波 平滑影像,濾除雜訊 滯後閾值 設定高閾值與低閾值

December 15, 2020 · 1 min · Yen Tsai

Image Classification

website:CS231n: Convolutional Neural Networks for Visual Recognition 影像分類是電腦視覺的核心任務,但其中有許多障礙要克服 遇到的問題 Semantic Gap 語義鴻溝 Semantic Gap指的是在不同系統中形成的結構造成差異 人眼傳送到大腦所看到的物體形成的過程!=攝影機傳送到電腦看到物體形成的過程 人眼看到的是物體是光線照射到物體,經過反射後部份光線射入我們的眼睛。人腦所想的通常是高階特徵ex:飛機、汽車、室內空間 在電腦中看到的數位影像是個三維tensor(R, G, B channel)。電腦主要觀察低階特徵ex:顏色分布、紋理(texture) Viewpoint variation 視野角度變化 攝影機視野改變造成觀測結果產生變化 Background Clutter 非均值的背景 背景可能非常雜亂 Illumination 亮度的變化 不同的燈源,打光方式造成同一個物體不同成像結果 Occlusion 被遮蔽的物體 物體被遮擋一部分,但還是可以透過特徵來辨認出來 Deformation 物體形狀的變化 Intraclass variation 同類型的不同變化 沒辦法透過硬編碼的方式在這些問題下輕易的分類出貓咪 機器學習: 數據驅動方法 寫一個影像分類演算法與排序演算法非常不同,假設今天是要辨識一隻貓咪,我們必須考慮到貓咪的各種形狀、顏色等變化。 因此,與其透過硬編碼方式定義出複雜的經驗法則,不如透過給予很多數據來建立一個學習演算法。 流程: 收集數據集(影像與對應的類別標記) 機器學習演算法訓練分類器 使用分類器預測新讀進來的影像 Nearest Neighbor Classifier Nearest Neighbor 比較兩影像之間的距離 L1距離公式:$d_1(I_1, I_2) = \sum_{p} |I^P_1 - I^P_2|$ $其中I_1, I_2 是影像,P是I_1, I_2像素點的索引$ 這個距離公式就是逐點計算兩影像像素值差異的總和,加絕對值是為了避免正負號誤差加總後造成抵銷 實作KNN測試cifar10 in github 參考 跟着cs231n学英语(Module 1)

November 15, 2020 · 1 min · Yen Tsai