當前位置:首頁 » 操作系統 » sift演算法研究

sift演算法研究

發布時間: 2024-07-27 04:37:37

A. 怎麼驗證sift演算法對亮度的不變性

2、高斯模糊
SIFT演算法是在不同的尺度空間上查找關鍵點,而尺度空間的獲取需要使用高斯模糊來實現,Lindeberg等人已證明高斯卷積核是實現尺度變換的唯一變換核,並且是唯一的線性核。本節先介紹高斯模糊演算法。
2.1二維高斯函數
高斯模糊是一種圖像濾波器,它使用正態分布(高斯函數)計算模糊模板,並使用該模板與原圖像做卷積運算,達到模糊圖像的目的。
N維空間正態分布方程為:
(1-1)

其中,是正態分布的標准差,值越大,圖像越模糊(平滑)。r為模糊半徑,模糊半徑是指模板元素到模板中心的距離。如二維模板大小為m*n,則模板上的元素(x,y)對應的高斯計算公式為:
(1-2)
在二維空間中,這個公式生成的曲面的等高線是從中心開始呈正態分布的同心圓,如圖2.1所示。分布不為零的像素組成的卷積矩陣與原始圖像做變換。每個像素的值都是周圍相鄰像素值的加權平均。原始像素的值有最大的高斯分布值,所以有最大的權重,相鄰像素隨著距離原始像素越來越遠,其權重也越來越小。這樣進行模糊處理比其它的均衡模糊濾波器更高地保留了邊緣效果。

B. 如何比較SIFT,SURF,Harris-SIFT圖像匹配演算法性能

SIFT匹配(Scale-invariant feature transform,尺度不變特徵轉換)是一種電腦視覺的演算法用來偵測與描述影像中的局部性特徵,它在空間尺度中尋找極值點,並提取出其位置、尺度、旋轉不變數,此演算法由 David Lowe 在1999年所發表,2004年完善總結。其應用范圍包含物體辨識、機器人地圖感知與導航、影像縫合、3D模型建立、手勢辨識、影像追蹤和動作比對。
局部影像特徵的描述與偵測可以幫助辨識物體,SIFT 特徵是基於物體上的一些局部外觀的興趣點而與影像的大小和旋轉無關。對於光線、雜訊、些微視角改變的容忍度也相當高。基於這些特性,它們是高度顯著而且相對容易擷取,在母數龐大的特徵資料庫中,很容易辨識物體而且鮮有誤認。使用 SIFT特徵描述對於部分物體遮蔽的偵測率也相當高,甚至只需要3個以上的SIFT物體特徵就足以計算出位置與方位。在現今的電腦硬體速度下和小型的特徵資料庫條件下,辨識速度可接近即時運算。SIFT特徵的信息量大,適合在海量資料庫中快速准確匹配。
2、SIFT特徵的主要特點
從理論上說,SIFT是一種相似不變數,即對圖像尺度變化和旋轉是不變數。然而,由於構造SIFT特徵時,在很多細節上進行了特殊處理,使得SIFT對圖像的復雜變形和光照變化具有了較強的適應性,同時運算速度比較快,定位精度比較高。如:
在多尺度空間採用DOG運算元檢測關鍵點,相比傳統的基於LOG運算元的檢測方法,運算速度大大加快;
關鍵點的精確定位不僅提高了精度,而且大大提高了關鍵點的穩定性;
在構造描述子時,以子區域的統計特性,而不是以單個像素作為研究對象,提高了對圖像局部變形的適應能力;

C. SIFT綆楁硶

SIFT綆楁硶錛氫竴縐嶉潻鍛芥х殑灞閮ㄧ壒寰佹弿榪版妧鏈



鑷1999騫碊avid Lowe鐨勯潻鏂頒箣浣滆癁鐢熶互鏉ワ紝SIFT綆楁硶鍥犲叾灝哄害鍜屾棆杞涓嶅彉鎬у湪鍥懼儚澶勭悊棰嗗煙鐙鏍戜竴甯溿傜洿鑷2020騫寸殑涓撳埄鏈熸弧錛岃繖涓寮哄ぇ鐨勫伐鍏峰備粖宸叉垚涓哄紑婧愮殑瀹濊吹璧勬簮錛岃騫挎硾搴旂敤浜庡叏鏅鎷嶆憚銆佸浘鍍忓尮閰嶇瓑浼楀氬満鏅銆傝╂垜浠娣卞叆鎺㈣⊿IFT綆楁硶鐨勫伐浣滃師鐞嗭紝棰嗙暐鍏跺湪鍥懼儚涓栫晫鐨勯瓟鍔涖



1.2 SIFT綆楁硶鐨勬牳蹇冨師鐞



棣栧厛錛孲IFT璧鋒簮浜庡浘鍍忕殑灝哄害絀洪棿姒傚康錛岄氳繃鍒涘緩楂樻柉閲戝瓧濉旀潵妯℃嫙浜虹溂瀵硅繙榪戝拰娓呮櫚搴︾殑鎰熺煡銆傝繖涓榪囩▼閫氳繃閲囨牱娉曟ā鎷熷浘鍍忕殑緙╂斁錛岄珮鏂鏍稿鉤婊戝勭悊鍒欐ā鎷熺粏鑺傜殑灞傛″彉鍖栥



1.2.1 鍥懼儚楂樻柉閲戝瓧濉旂殑鏋勫緩


鏋勫緩楂樻柉閲戝瓧濉旂殑鍏抽敭鍦ㄤ簬璁$畻鍘熷嬪浘鍍忕殑灝哄搞侀噾瀛楀旂殑灞傜駭鍜岄珮鏂妯$硦緋繪暟銆傛瘡灞傚浘鍍忛氳繃涓婁竴灞傜殑涓嬮噰鏍鋒潵瀹炵幇錛屽艦鎴愪竴緇勬ā鎷熶笉鍚屽昂搴︾殑鍥懼儚銆傚湪瀵繪壘鏋佸肩偣鏃訛紝鎴戜滑鍒╃敤楂樻柉宸鍒嗛噾瀛楀旓紝鍏舵瘡灞備箣闂寸殑宸寮傛湁鍔╀簬媯嫻嬪叧閿鐐廣傛瀬鍊肩偣瀹氫綅娑夊強闃堝煎勭悊錛堜緥濡傦紝T=0.04錛屼笌鍥懼儚鏁伴噺鐩稿叧錛屼互鍙婂儚緔犲肩殑緇濆瑰礆級錛屽苟鍦ㄤ笁涓鏂瑰悜錛坸銆亂鍜屜冿級涓婅繘琛屾悳緔銆備負浜嗘彁楂樼簿搴︼紝鏋佸肩偣榪橀渶緇忚繃娉板嫆灞曞紑淇姝o紝鍚屾椂鍓旈櫎浣庡規瘮搴﹀尯鍩熷拰杈圭紭鏁堝簲鐨勫獎鍝嶃



鍏抽敭鐐規弿榪扮殑鏋勫緩


鍏抽敭鐐圭殑鏂瑰悜淇℃伅鐢辨搴︾粺璁℃彁渚涳紝鎺ョ潃閫氳繃鍒掑垎鍥懼儚鍖哄煙銆佹墽琛屽潗鏍囧彉鎹錛屼互鍙婄粺璁128緇寸洿鏂瑰浘鏉ユ瀯閫犺︾粏鐨勬弿榪扮︺傝繖涓榪囩▼紜淇濅簡鍏抽敭鐐瑰湪涓嶅悓灝哄害鍜屾棆杞涓嬬殑紼沖畾琛ㄧず錛屼嬌寰桽IFT鍦ㄥ浘鍍忓尮閰嶅拰璇嗗埆浠誨姟涓琛ㄧ幇鍑鴻壊銆



娣卞叆浜嗚ВSIFT綆楁硶鐨勬瘡涓涓緇嗚妭錛屼綘灝嗘洿鑳芥h祻鍒板畠鍦ㄥ浘鍍忓勭悊棰嗗煙涓鐨勫箍娉涘簲鐢ㄥ拰鍗撹秺鎬ц兘銆傛棤璁烘槸澶勭悊澶嶆潅鍦烘櫙涓鐨勮嗚夋悳緔錛岃繕鏄鍦ㄥ叏鏅鎷嶆憚涓瀹炵幇鏃犵紳鎷兼帴錛孲IFT閮芥槸涓嶅彲鎴栫己鐨勫伐鍏楓傛帰緔㈡洿澶氬叧浜嶴IFT鐗瑰緛鎻愬彇鍜屽昂搴︾┖闂村浘鍍忛噾瀛楀旂殑娣卞叆鏂囩珷錛岃繘涓姝ユ彁鍗囦綘鐨勫浘鍍忓勭悊鎶鑳藉惂錛

D. HartSift: 一種基於GPU的高准確性和實時SIFT

尺度不變特徵變換 (SIFT) 是最流行和最強大的特徵提取演算法之一,因為它對尺度、旋轉和光照保持不變。它已被廣泛應用於視頻跟蹤、圖像拼接、同時定位和映射(SLAM)、運動結構(SFM)等領域。然而,高計算復雜度限制了其在實時系統中的進一步應用。這些系統必須在准確性和性能之間進行權衡以實現實時特徵提取。他們採用其他更快但精度較低的演算法,如 SURF 和 PCA-SIFT。為了解決這個問題,本文提出了一種使用 CUDA 的 GPU 加速 SIFT,命名為 HartSift,充分利用單機CPU和GPU的計算資源,實現高精度、實時的特徵提取。實驗表明,在 NIVDIA GTX TITAN Black GPU 上,HartSift 可以根據圖像的大小在 3.14-10.57ms (94.61-318.47fps) 內處理圖像。此外,HartSift 分別比 OpenCV-SIFT(CPU 版本)和 SiftGPU(GPU 版本)快 59.34-75.96 倍和 4.01-6.49 倍。同時,HartSift 的性能和 CudaSIFT(迄今為止最快的 GPU 版本)的性能幾乎相同,而 HartSift 的准確度遠高於 CudaSIFT。

SIFT演算法可以提取大量顯著特徵,這些特徵在縮放、旋轉、光照和3D視點保持不變,還提供了跨越雜訊和仿射失真的穩健匹配。但SIFT的高計算復雜度限制了其在大規模數據和實時系統中的進一步應用。而復雜度較低的演算法,如SURF、PCA-SIFT的准確性又不太高。因此,在主流計算平台上實現高精度、實時的SIFT是一個重要而有意義的研究課題。

而SIFT演算法具有很好的並行性,可以正確移植到GPU上。因此,在配備GPU的異構計算系統上實現高性能的SIFT具有重要的實用價值。

SIFT 演算法包含三個階段,包括高斯差分(DoG)金字塔的構建、精確的關鍵點定位和 128 維描述符生成。由於每個階段都有自己的並行特性,因此必須使用不同的並行粒度和優化來實現高性能。尤其是後兩個階段,負載不平衡不利於GPU優化,會導致性能下降。

本文的主要貢獻和創新可以概括如下:

有許多工作嘗試在GPU上使用SIFT演算法。

然而,為了實現高性能,他們省略了 SIFT 演算法的一些重要步驟,例如將輸入圖像加倍、保持尺度變化的連續性和擬合二次函數以定位準確的關鍵點信息。作者的實驗表明,這些遺漏會導致 SIFT 丟失很多關鍵點和准確性。

Lowe將輸入圖像尺寸加倍作為高斯金字塔 的最底層,每個尺度 通過高斯卷積產生:

高斯金字塔確定之後,利用相同Octave的層級相減,得到差分金字塔:

其中 ,在本文中, .

檢測尺度空間極值

將DoG金字塔每個像素與相鄰像素比較,同層8個,上下層9個,若像素是局部最大值或局部最小值,將其視為關鍵點候選。

去除無效關鍵點

去除較低對比度和不穩定邊緣響應的候選關鍵點,通過將3D二次函數擬合到附近數據執行子像素插值,以獲取精確的位置、比例和主曲率比。

方向分配

將候選關鍵點周圍的梯度累積到36 bins的直方圖中,根據每層的尺度計算搜索半徑。每個緊鄰像素由一個高斯加權窗口加權,梯度方向累計到36 bins的方向直方圖中。峰值為主要梯度方向,同時超過峰值80%的局部峰值bin也被視為關鍵點方向。

對關鍵點周圍像素計算梯度直方圖,搜索半徑比上一步驟大得多,同樣用一個高斯加權函數用於為每個鄰居的梯度值分配權重。

根據梯度方向將最終的梯度值累積到一個 360-bin 的圓形方向直方圖。最後,直方圖將被歸一化、平滑並轉換為 128D 描述符。

構建金字塔應該保持順序,以保證尺度空間變化連續性。Acharya和Bjorkman為加快這一過程,犧牲准確性打破構建順序。考慮到不能使准確性降低,構建順序在HartSift中保留。

分離卷積核

對於 大小的卷積核處理 大小的圖像需要進行 次運算,如果將2D卷積核拆解為兩個1D的卷積核,計算量減少至 . 通過使用共享內存和向量化方法,更容易實現合並全局內存訪問並減少一維卷積的冗餘訪問。

Uber 內核

Uber內核將多個不同任務放到一個物理內核中,在一個內核中並行處理任務,而不需要在內核之間切換。差分金字塔第 層由高斯金字塔第 和第 層決定。將高斯差分金字塔和高斯卷積核封裝在單個核中,可以充分挖掘並行性。

線程不需要重復讀取高斯金字塔第 層的值,這是由於第 層的值計算完後,結果會放在寄存器內而不是全局內存中。藉助Uber內核的優勢,我們可以節省 的空間和 的內核運行時間

異構並行

HartSift 採用異構並行方法來加速這一階段。CPU 和 GPU 將並行協作,構建 DoG 金字塔。

由於GPU處理小圖像沒有優勢,作者將 以下的圖像放到CPU處理,大圖像放到GPU處理。用戶也可以自行設置分離點,確保CPU和GPU負載平衡。

存在兩個問題:

負載均衡

Warp是GPU最小並行執行單元,即以鎖步方式執行的 32 個線程的集合。若負載不均衡,則warp執行時間取決於最後一個線程完成的時間,warp負載不均衡會導致GPU效率降低。

由於候選關鍵點分布的隨機性,幾乎所有經線都包含不同數量的空閑線程。如果這些warp繼續處理以下部分,就會出現兩個級別的負載不平衡.

在去除無效的候選關鍵點部分時,線程將進行亞像素插值以獲得准確的候選關鍵點信息,從而去除具有低對比度或不穩定邊緣響應的關鍵點候選。換句話說,一些線程會比其他線程更早返回一次。負載不平衡會變得更加嚴重。

為了突破性能瓶頸,HartSift 引入了重新平衡工作負載和多粒度並行優化。

重新平衡工作負載

當檢測到負載不平衡時,HartSift 將通過啟動具有適當粒度的新內核並分派每個具有 32 個活動線程的新經線來重新平衡工作負載。

此外,啟動三個內核分別處理這三個部分,不僅可以重新平衡工作量,還可以根據不同部分的並行特性提供多粒度的並行。

多粒度並行

重新平衡工作負載優化保證每個內核中的線程和經線被完全載入,多粒度並行優化保證工作負載將平均分配到線程和經線。此外,不同內核的並行粒度取決於工作負載的特性。

HartSift通過將一個線程映射到一個或多個像素,採用與關鍵點候選檢測部分和無效關鍵點去除部分並行的線程粒度。然而,線程粒度並行會導致方向分配部分的負載不平衡,因為不同關鍵點的相鄰區域半徑不同。線程粒度並行會為單個線程分配過多的工作,這在某些情況下限制了硬體資源的利用率。所以在這部分應用混合粒度並行:扭曲粒度構建直方圖,線程粒度找出並將主導方向分配給相應的關鍵點。

基於扭曲的直方圖演算法

作者針對每個關鍵點提出了一種基於扭曲粒度和原子操作的高性能直方圖演算法,以充分利用局部性。

該階段關鍵點的鄰域半徑遠大於前一階段。需要為每個關鍵點累積數千個鄰居到一個 360-bin 直方圖。如果採用前一階段的基於原子扭曲的直方圖演算法,會對這一階段的性能產生不同的影響。

HartSift引入了一種atomic-free的直方圖演算法,進一步提升了這一階段的性能。

該演算法包含三個步驟:

為了消除線程間的負載不平衡,實現全局合並訪問,HartSift 使用一個warp 來處理一個keypoint 的所有鄰居。當線程計算出它們的方向 bin 時,它們需要根據bin變數的值將梯度值累加到局部直方圖。考慮到有如此多的鄰居並且一個經線的一些線程可能具有相同的 bin,演算法1引入了一種無原子的多鍵約簡方法來累積每個經線的部分和。這種方法可以利用warp級shuffle和vote指令完全消除原子操作和本地同步。它根據bin對經紗的線程進行分組並指定每組具有最低車道的線程作為隊長線程。隊長線程將保存他們自己的 bin 的部分總和,並將它們並行地累積到駐留在共享內存中的本地直方圖,而不會發生 bank 沖突和同步。在遍歷所有鄰居後,HartSift 將最終的局部直方圖復制到駐留在全局內存中的全局直方圖。

本文提出了一種GPU上的並行SIFT,命名為Hart-Sift,它可以在單機內同時使用CPU和GPU來實現高精度和實時的特徵提取。HartSift根據每個階段的不同特點,通過適當採用不同的優化策略來提升性能,例如負載均衡、基於warp的直方圖演算法和不同尺度樣本的atomic-free直方圖演算法等。在NVIDIA GTX TITAN Black GPU上,HartSift可以在3.14 ~ 10.57ms(94.61 ~ 318.47fps)內提取高精度特徵,輕松滿足高精度和實時性的苛刻要求。另外,與OpenCV-SIFT和SiftGPU相比,HartSift獲得了59.34 ~ 75.96倍和4.01 ~ 6.49倍加速分別。同時,HartSift 和 CudaSIFT 的性能幾乎相同,但 HartSift 遠比 CudaSIFT 准確。

E. sift演算法是什麼

Sift演算法是David Lowe於1999年提出的局部特徵描述子,並於2004年進行了更深入的發展和完善。Sift特徵匹配演算法可以處理兩幅圖像之間發生平移、旋轉、仿射變換情況下的匹配問題,具有很強的匹配能力。

這一演算法的靈感也十分的直觀,人眼觀測兩張圖片是否匹配時會注意到其中的典型區域(特徵點部分),如果我們能夠實現這一特徵點區域提取過程,再對所提取到的區域進行描述就可以實現特徵匹配了。

sift演算法的應用

SIFT演算法目前在軍事、工業和民用方面都得到了不同程度的應用,其應用已經滲透了很多領域,典型的應用如下:物體識別;機器人定位與導航;圖像拼接;三維建模;手勢識別;視頻跟蹤;筆記鑒定;指紋與人臉識別;犯罪現場特徵提取。

熱點內容
java上傳文件到伺服器 發布:2024-11-25 20:52:47 瀏覽:740
軸加工編程 發布:2024-11-25 20:52:12 瀏覽:411
手機的媒體存儲 發布:2024-11-25 20:29:42 瀏覽:264
安卓如何關閉手機桌面 發布:2024-11-25 20:24:37 瀏覽:700
腳本也違法嗎 發布:2024-11-25 20:24:24 瀏覽:304
phpeol 發布:2024-11-25 20:16:01 瀏覽:92
您所訪問的頁面升級 發布:2024-11-25 20:00:56 瀏覽:597
快手編程師 發布:2024-11-25 20:00:55 瀏覽:148
androidadt下載最新 發布:2024-11-25 19:47:29 瀏覽:353
我的世界如何強制獲得伺服器管理員許可權 發布:2024-11-25 19:39:13 瀏覽:604