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