久久精品精选,精品九九视频,www久久只有这里有精品,亚洲熟女乱色综合一区
    分享

    OpenCV-Python SIFT尺度不變特征變換 | 三十九

     taotao_2016 2020-08-26

    目標

    在這一章當中,

    • 我們將學習SIFT算法的概念
    • 我們將學習找到SIFT關鍵點和描述算符。

    理論

    在前兩章中,我們看到了一些像Harris這樣的拐角檢測器。它們是旋轉不變的,這意味著即使圖像旋轉了,我們也可以找到相同的角。很明顯,因為轉角在旋轉的圖像中也仍然是轉角。但是縮放呢?如果縮放圖像,則拐角可能不是角。例如,檢查下面的簡單圖像。在同一窗口中放大小窗口中小圖像中的拐角時,該角是平坦的。因此,Harris拐角不是尺度不變的。

    OpenCV-Python SIFT尺度不變特征變換 | 三十九

    因此,在2004年,不列顛哥倫比亞大學的D.Lowe在他的論文《尺度不變關鍵點中的獨特圖像特征》中提出了一種新算法,即尺度不變特征變換(SIFT),該算法提取關鍵點并計算其描述算符。 (改論文易于理解,被認為是學習SIFT的最佳材料。因此,本文只是該論文的簡短摘要)。 SIFT算法主要包括四個步驟。 我們將一一看到它們。

    SIFT算法主要包括四個步驟。我們將一一看到它們。

    1. 尺度空間極值檢測

    從上圖可以明顯看出,我們不能使用相同的窗口來檢測具有不同比例的關鍵點。即便小拐角可以。但是要檢測更大的拐角,我們將需要更大的窗口。為此,使用了比例空間濾波。在其中,找到具有各種$σ$值的圖像的高斯拉普拉斯算子。LoG用作斑點檢測器,可檢測由于$σ$的變化而導致的各種大小的斑點。簡而言之,$σ$用作縮放參數。例如,在上圖中,低$σ$的高斯核對于較小的拐角給出較高的值,而高$σ$的高斯核對于較大的拐角而言非常合適。因此,我們可以找到整個尺度和空間上的局部最大值,這給了我們$(x,y,σ)$值的列表,這意味著在$(x,y)$在$σ$尺度上有一個潛在的關鍵點。

    但是這種LoG代價昂貴,因此SIFT算法使用的是高斯差值,它是LoG的近似值。高斯差是作為具有兩個不同$σ$的圖像的高斯模糊差而獲得的,設為$σ$和$kσ$。此過程是針對高斯金字塔中圖像的不同八度完成的。如下圖所示:

    OpenCV-Python SIFT尺度不變特征變換 | 三十九

    一旦找到該DoG,便會在圖像上搜索比例和空間上的局部極值。例如,將圖像中的一個像素與其8個相鄰像素以及下一個比例的9個像素和前一個比例的9個像素進行比較。如果是局部極值,則可能是關鍵點。從根本上說,關鍵點是最好的代表。如下圖所示:

    OpenCV-Python SIFT尺度不變特征變換 | 三十九

    對于不同的參數,本文給出了一些經驗數據,可以概括為:octaves=4,縮放尺度=5,初始$σ=1.6$,$k=sqrt{2}$等作為最佳值。

    2. 關鍵點定位

    一旦找到潛在的關鍵點位置,就必須對其進行優化以獲取更準確的結果。他們使用了標度空間的泰勒級數展開來獲得更精確的極值位置,如果該極值處的強度小于閾值(根據論文為0.03),則將其拒絕。在OpenCV DoG中,此閾值稱為ContrastThreshold,它對邊緣的響應較高,因此也需要刪除邊緣。

    為此,使用類似于哈里斯拐角檢測器的概念。他們使用2x2的Hessian矩陣(H)計算主曲率。從哈里斯拐角檢測器我們知道,對于邊緣,一個特征值大于另一個特征值。因此,這里他們使用了一個簡單的函數。

    如果該比率大于一個閾值(在OpenCV中稱為edgeThreshold),則該關鍵點將被丟棄。論文上寫的值為10。

    因此,它消除了任何低對比度的關鍵點和邊緣關鍵點,剩下的就是很可能的目標點。

    3. 方向分配

    現在,將方向分配給每個關鍵點,以實現圖像旋轉的不變性。根據比例在關鍵點位置附近采取鄰域,并在該區域中計算梯度大小和方向。創建了一個具有36個覆蓋360度的bin的方向直方圖(通過梯度幅度和$σ$等于關鍵點比例的1.5的高斯加權圓窗加權)。提取直方圖中的最高峰,并且將其超過80%的任何峰也視為計算方向。它創建的位置和比例相同但方向不同的關鍵點。它有助于匹配的穩定性。

    4. 關鍵點描述

    現在創建了關鍵點描述符。在關鍵點周圍采用了16x16的鄰域。它分為16個4x4大小的子塊。對于每個子塊,創建8 bin方向直方圖。因此共有128個bin值可用。它被表示為形成關鍵點描述符的向量。除此之外,還采取了幾種措施來實現針對照明變化,旋轉等的魯棒性。

    5. 關鍵點匹配

    通過識別兩個圖像的最近鄰,可以匹配兩個圖像之間的關鍵點。但是在某些情況下,第二個最接近的匹配可能非常接近第一個。它可能是由于噪音或其他原因而發生的。在那種情況下,采用最接近距離與第二最接近距離之比。如果大于0.8,將被拒絕。根據論文,它可以消除大約90%的錯誤匹配,而僅丟棄5%的正確匹配。因此,這是SIFT算法的總結。有關更多詳細信息和理解,強烈建議閱讀原始論文。記住一件事,該算法已申請專利。所以這個算法包含在opencv contrib repo中

    OpenCV中的SIFT

    現在,讓我們來看一下OpenCV中可用的SIFT功能。讓我們從關鍵點檢測開始并進行繪制。首先,我們必須構造一個SIFT對象。我們可以將不同的參數傳遞給它,這些參數是可選的,它們在docs中已得到很好的解釋。

    import numpy as npimport cv2 as cvimg = cv.imread('home.jpg')gray= cv.cvtColor(img,cv.COLOR_BGR2GRAY)sift = cv.xfeatures2d.SIFT_create()kp = sift.detect(gray,None)img=cv.drawKeypoints(gray,kp,img)cv.imwrite('sift_keypoints.jpg',img)

    sift.detect()函數在圖像中找到關鍵點。如果只想搜索圖像的一部分,則可以通過掩碼。每個關鍵點是一個特殊的結構,具有許多屬性,例如其(x,y)坐標,有意義的鄰域的大小,指定其方向的角度,指定關鍵點強度的響應等。

    OpenCV還提供cv.drawKeyPoints()函數,該函數在關鍵點的位置繪制小圓圈。如果將標志cv.DRAWMATCHESFLAGSDRAWRICH_KEYPOINTS傳遞給它,它將繪制一個具有關鍵點大小的圓,甚至會顯示其方向。請參見以下示例。

    img=cv.drawKeypoints(gray,kp,img,flags=cv.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS) cv.imwrite('sift_keypoints.jpg',img)

    查看下面的結果:

    OpenCV-Python SIFT尺度不變特征變換 | 三十九

    現在要計算描述符,OpenCV提供了兩種方法。

    1. 由于已經找到關鍵點,因此可以調用sift.compute(),該函數根據我們找到的關鍵點來計算描述符。例如:kp,des = sift.compute(gray,kp)
    2. 如果找不到關鍵點,則可以使用sift.detectAndCompute()函數在單步驟中直接找到關鍵點和描述符。

    我們將看到第二種方法:

    sift = cv.xfeatures2d.SIFT_create() kp, des = sift.detectAndCompute(gray,None)

    這里的kp將是一個關鍵點列表,而des是一個形狀為$NumberofKeypoints×128$的數字數組。

    這樣我們得到了關鍵點,描述符等。現在我們想看看如何在不同圖像中匹配關鍵點。我們將在接下來的章節中學習。

      本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發布,不代表本站觀點。請注意甄別內容中的聯系方式、誘導購買等信息,謹防詐騙。如發現有害或侵權內容,請點擊一鍵舉報。
      轉藏 分享 獻花(0

      0條評論

      發表

      請遵守用戶 評論公約

      類似文章 更多

      主站蜘蛛池模板: 亚洲AV无码专区在线电影天堂| 国内精品视频一区二区三区八戒| 中文字幕精品无码一区二区三区| 久久久久亚洲AV成人网人人软件 | 2020无码专区人妻系列日韩| 亚洲日韩日本中文在线| 亚洲嫩模喷白浆在线观看| 亚洲国产美女精品久久久| 亚洲精品熟女一区二区| 成人国产片视频在线观看| 粗大挺进朋友人妻淑娟| 国产69精品久久久久999小说| 国产在线中文字幕精品| 99视频30精品视频在线观看| 欧美牲交A欧美牲交| 福利一区二区1000| 日韩免费无码一区二区三区| 无码人妻蜜肉动漫中文字幕| 免费AV片在线观看网址| 精品国产一区二区三区麻豆| 国产精品区一区第一页| 乱人伦中文字幕成人网站在线| 精品久久人人妻人人做精品| 欧美成人午夜在线观看视频| 亚欧AV无码乱码在线观看性色 | 久久综合亚洲色一区二区三区| 精品人妻二区中文字幕| 中文字幕无码无码专区| 和艳妇在厨房好爽在线观看| 国产精品久久无码不卡黑寡妇| 国产尤物AV尤物在线看| 国产精品视频亚洲二区| 日韩夜夜高潮夜夜爽无码| 亚洲自偷自拍另类小说| 鲁丝片一区二区三区免费| 午夜精品一区二区三区在线观看| 在线高清免费不卡全码| 国产不卡一区二区四区| 国产V亚洲V天堂无码久久久| 久久天天躁夜夜躁狠狠85| 国产在线午夜不卡精品影院 |