CV-2020-筆記:02 特徵(Features) 上

CV-2020-筆記:02 特徵(Features)--上

計算機視覺課程學習筆記

教材:Computer Vision: Algorithms and Applications, 2010算法

「The question of whether computers can think is like the question of whether submarines can swin.」—— Edsger W. Dijkstra

1. 特徵概覽

特徵點

  • 特徵的形式app

    • 特徵點、局部關鍵點、感興趣的點
    • 整塊區域
    • 邊緣圖像
    • 幾何信息
  • 圖像局部特徵dom

    • 圖像局部特徵是基礎,但並不是所有
  • 特徵檢測方法函數

    • 兩種技術路線學習

      • 跟蹤(track):局部搜索(適合畫面變化不大,如視頻連續畫面)
      • 獨立考察,兩兩匹配(match)
    • 四種獨立步驟spa

      • 特徵檢測(feature detection/extraction)
      • 特徵描述(feature description)
      • 特徵匹配(fearure match) / 特徵跟蹤(feature track)

自相關的方法 (Auto-Correlation)

    • 問題:判斷一個點是否是特徵點(與周圍其餘點相差大)
    • 建模rest

      • 直觀的建模orm

        • 圖像與其周邊局部區域的類似性:
        • $E_{WSSD}(u)=\sum_iw(x_i)[I_1(x_i+u)-I_0(x_i)]^2$
      • 局部特徵視頻

        • $E_{AC}({\Delta u})=\sum_iw(x_i)[I_0 (x_i+\Delta u)-I_0(x_i)]^2$
      • 示例

        note-02-01.png

      • 泰勒級數展開對象

        • $I_0(x_i+\Delta u)\approx \triangledown I_0(x_i)+\triangledown I_0(x_i)\cdot\Delta u$
        • $$ \begin{aligned} E_{AC}({\Delta u})&=\sum_iw(x_i)[I_0 (x_i+\Delta u)-I_0(x_i)]^2\\ &\approx \sum_iw(x_i)[I_0 (x_i)+\triangledown I_0(x_i)\cdot\Delta u-I_0(x_i)]^2\\ &=\sum_iw(x_i)[I_0 (x_i)\cdot\Delta u]^2\\ &=\Delta u^TA\Delta u\\ &\triangledown I_0(x_i)=(\frac{\partial I_0}{\partial x},\frac{\partial I_0}{\partial y})(x_i) \end{aligned} $$

        • $A=w\times\begin{bmatrix}I_x^2\quad I_xI_y\\ I_xI_y\quad I_y^2\end{bmatrix}$
    • 特徵點的判斷

      • 設閾值,進行判斷;
      • 求矩陣的跡(trace);
    • 基本特徵提取的算法流程

      1. 將原始圖像與高斯導數進行卷積,獲得水平方向和垂直方向的導數$I_x$和$I_y$;
      2. 計算着圖像對應這些梯度的外積;
      3. 用一個更大的高斯來對這些圖像進行卷積;
      4. 用公式計算出標量度量;
      5. 找到某個閾值以上的局部極大值,並將其報告爲檢測到的特徵點位置。

    2. Harris Corner

    基本觀點

    • 論文:C.Harris, M.Stephens, "A Combined Corner and Edge Detector". 1988
    • 問題:尋找鉸點
    • 方法:經過滑窗尋找,在各個方向上梯度變化都很大的點

    Moravec Corner Detector

    • 圖例
      note-02-02.png
    • 移動$[u,v]$的強度改變:$E(u,v)=\sum_{x,y}w(x,y)[I(x+u,y_v)-I(x,y)]^2$

      • $w(x,y)$: 窗口函數,在窗內爲1,反之爲0(binary window function)
      • $I(x+u,y+v)$:移動強度(shifted intensity)
      • $I(x,y)$:本來強度
      • $(u,v)=(1,0),(1,1),(0,1),(-1,1)$,在$\min\{E\}$尋找局部極值(local maxima)
    • Moravec的問題

      • 四個方向的組合只能考慮45度的方向;
      • 矩陣的差受像素的影響大 (Noisy due to a binary window function);
      • 只有$E$的極小值被考慮到。

    Harris Corner Detector

    • Harris Corner detector在1988年被提出,來改進解決Moravec的問題。
    • 解決方法

      • 使用高斯函數(Gaussian function)替代二分函數(binary function)

        • $w(x,y)=\exp(-\frac{(x^2+y^2)}{2\sigma^2})$
      • 把上下左右滑窗找極值轉爲用泰勒展式找梯度變換狀況:

        $$ \begin{aligned} E(u,v)&=\sum_{x,y}w(x,y)[I(x+u,y+v)-I(x,y)]^2\\ &=\sum_{x,y}w(x,y)[I_xu+I_yv+O(u^2+v^2)]^2\\ E(u,v)&=Au^2+2Cuv+Bv^2\\ A&=\sum_{x,y}w(x,y)I_x^2(x,y)\\ B&=\sum_{x,y}w(x,y)I_y^2(x,y)\\ C&=\sum_{x,y}w(x,y)I_x(x,y)I_y(x,y)\\ E(u,v)&\approx[u,v]M\begin{bmatrix}u\\v\end{bmatrix}\\ M&=\sum_{x,y}w(x,y)\begin{bmatrix}I_x^2\quad I_xI_y\\I_xI_y\quad I_y^2\end{bmatrix} \end{aligned} $$

    • 判斷

      • 邊緣:$\lambda_2\gg\lambda_1$或$\lambda_1\gg\lambda_2$
      • 鉸點:$\lambda_1$和$\lambda_2$都很大,$E$在各個方向都增加
      • 平滑:$\lambda_1$和$\lambda_2$都很小,$E$在各個方向都不變
      • 度量方式:$R=\frac{\lambda_1\lambda_2}{\lambda_1+\lambda_2}=\frac{\det M}{Trace\ M}$
    • 算法

      1. 尋找途中有較大邊角相應函數值$R$的點($R>threshold$)
      2. 尋找$R$中的局部極值
    • 示例

      note-02-03.png

    • Harris Detector的特性

      • $R$值具備旋轉不變性
      • $R$值具備部分的亮度變化不變性(平移不變,拉伸若超過閾值則會改變)
      • $R$值不具有尺度不變性(如弧線縮小,可能會被識別爲鉸點)

        • 使用不一樣尺度多窗口檢測?如何確認窗口大小?

    3. 匹配(Matching)

    特徵匹配

    • 特徵點

      • 魯棒性、不變性 Invariant
      • 獨特性、惟一性 Distinctive
    • 特徵匹配

      • 窮舉搜索 Exhaustive Search
      • 哈希映射 Hashing
      • 最近鄰技術 Nearest Neighbor Techniques:kd-樹和其變體
    • 應用

      • 自動圖像拼接
      • 結果對應
      • 物體識別
      • 幾何分析...

    野點(outlier)

    • 野點、異常點(outliers):未必是錯的點,而是會對計算造成干擾的點
    • 拒絕野點--NN

      • 不比較所有的特徵,而只比較那些有足夠類似性的點
      • $SSD(patch1, patch2)<threshold$
      • SSD

        • 偏差平方和算法(Sum of Squared Differences, SSD),也叫差方和算法

          • $D(i,j)=\sum^M_{s=1}\sum^N_{t=1}[S(i+s-1,j+t-1)-T(s,t)]^2$
        • 平均偏差平方和算法(Mean Square Differences, MSD),也叫均方差算法

          • $D(i,j)=\frac{1}{M\times N}\sum^M_{s=1}\sum^N_{t=1}[S(i+s-1,j+t-1)-T(s,t)]^2$
        • 絕對偏差和算法(Sum of Absolute Differences, SAD)

          • $D(i,j)=\sum^M_{s=1}\sum^N_{t=1}|S(i+s-1,j+t-1)-T(s,t)|$
        • 平均絕對差算法(Mean Absolute Differences, MAD)

          • $D(i,j)=\frac{1}{M\times N}\sum^M_{s=1}\sum^N_{t=1}|S(i+s-1,j+t-1)-T(s,t)|$
        • 歸一化互相關算法(Normalized Cross Correlation, NCC)

          • $R(i,j)=\frac{\sum^M_{s=1}\sum^N_{t=1}|S^{i,j}(s,t)-E(S^{i,j})|\cdot|T(s,t-E(T))|}{\sqrt{\sum^M_{s=1}\sum^N_{t=1}[S^{i,j}(s,t)-E(S^{i,j})]^2\cdot\sum^M_{s=1}\sum^N_{t=1}[T(s,t)-E(T)]^2}}$
        • 序貫類似性檢測算法(Sequential Similarity Detection Algorthim, SSDA)
        • Hadamard變換算法(Sum of Absolute Transformed Difference, SATD)
        • SSD(Single Shot Multi-Box Detector),深度學習的對象檢測方法
    • 拒絕野點更好的方法--NNDR[Lowe, 1999]

      • 1-NN:尋找SSD最接近的匹配
      • 2-NN:尋找第二近SSD的匹配
      • 看1-NN比2-NN更接近多少:$1-NN/2-NN$
      • NNDR(nearest neighbor distance ratio)$=\frac{d_1}{d_2}=\frac{|D_A-D_B|}{|D_A-D_C|}$
    • 進一步排除點--ANMS

      • 自適應非極大值抑制(Adaptive non-maximal suppression, ANMS)
      • 特徵點要比起半徑r內的其餘特徵點強10%,而不是經過固定閾值。

    隨機採樣一致性(RANSAC)

    • 問題:匹配對中出現不一致的狀況("bad" matches)
    • 隨機採樣一致性(Random Sample Consensus)

      • 選一對候選對假設正確,而後其餘點也按此映射尋找匹配對
      • 平均值映射,Least squares fit
    • RANSAC 循環

      1. 隨機選擇四對特徵點;
      2. 計算單應性(homography) $H$;
      3. 計算內點(inliers)當$SSD(p_i,H_{p_i})<\epsilon$;
      4. 記錄最大匹配集合;
      5. 重複計算,獲得在最大匹配集上估計的最小$H$。
    • 通用的RANSAC算法

      運行$k$次:

      1. 隨機選取$n$個採樣;
      2. 對$n$個採樣配合合適的參數$\Theta$;
      3. 對另外$N-n$個點,計算對應模型的適應度,獲得匹配集合的點數$c$。

      輸出參數$\Theta $和最大適配集合$c$。

    • 計算$k$

      • $n$:每次迭代採樣的數量
      • $p$:真實適配集合的機率
      • $P$:$k$次迭代後至少一次成功的機率
      • $k=\frac{\log(1-P)}{\log(1-p^n)}$
    ​ 關於圖像特徵部分的一半內容,包含提取、匹配。中間概念較多,但理解後仍是蠻清晰的,只是計算、公式、實現部分須要多多思考。計算機視覺的魅力開始漸漸體現了...
    相關文章
    相關標籤/搜索