為解決這一問題,學術界通過近似,提出了能夠實時執行同時效果接近於anms的演算法。這裡對efficient adaptive non-maximal suppression algorithms for homogeneous spatial keypoint distribution 中提出的ssc演算法進行介紹
不同於anms演算法直接算出每個點的最大響應距離,然後通過排序拿出指定的n個關鍵點。 ssc演算法利用影象儲存在空間上的離散性來加速這一過程。
它的基本流程如下圖所示。
如圖,ssc演算法是乙個迭代選取關鍵點以及試錯逼近給定數量的過程。它的基本思想是先猜測乙個響應距離d,然後以此為依據,依照響應度從大到小,拿出響應度最高且彼此相隔至少為d的m個關鍵點。通過使用與影象等大的mask,這裡可以將時間複雜度降低為常數級。顯然這m個關鍵點必然滿足
r i=
min∣
∣xi−
xj∣∣
,s.t
.res
pons
e(xi
) spon se(x j),x j∈ sr_i =min||x_i-x_j||,s.t.response(x_i)ri =mi n∣∣x i−x j∣∣ ,s.t .res pons e(xi )spon se(x j), xj∈ s即在範圍d的區域中它的響應度最高。如果mn,則增大d。這一過程是乙個二分查詢的過程。當∣m− n∣ < k|m-n|∣m −n∣< k時,則停止這個流程,k為設定的誤差閾值。此時輸出的關鍵點滿足anms演算法的條件。 實際使用的過程中,往往只需要5~8次迭代就可以達到目標,1000個點在pc上耗時不到1ms。當然,實際上由於取關鍵點的過程中,計算距離並非嚴格使用歐式距離,ssc演算法最終得到的點與anms有一些細微的不同。 ssc演算法發表於2023年,**可以在找到,作者將其應用於slam中,獲得了一定程度的提公升。 另一方面slam是乙個各個模組耦合較深的系統,傳統的orb-slam bucketing方法已經深入人心,並且與它的模組互相作用,導致很難正確的評估和推廣新的關鍵點分布演算法了。 bailo o, rameau f, joo k, et al. efficient adaptive non-maximal suppression algorithms for homogeneous spatial keypoint distribution[j]. pattern recognition letters, 2018, 106: 53-60. 上一章提到不管是nms還是bucketing的方法都無法獲得最優的關鍵點空間分布。前者在視窗內避免了關鍵點的聚集效應,但是無法保證全域性的均勻分布 後者能保證全域性大概均勻分布,但是無法保證區域性不聚集 當然目前的實現中往往opencv已經做了3x3的nms,但是這種視窗的大小無法保證真正意義上的不... 你有了目標,你開始了幾點一線的生活。慢慢的你發現,活著,就是為了掙大錢。可是畢竟人生不是一帆風順,你找不到喜歡的工作,遇不到志同道合的同事,這時候你開始無措,想回到小時候,想找人訴苦,甚至你還想過自殺。慶幸的是,你發現,你還有個溫暖的家。有的人一生真的很不容易,但是他們卻活的很幸福,他們不奢求錦衣玉... 在本篇文章中,我將對機器學習做個概要的介紹。本文的目的是能讓即便完全不了解機器學習的人也能了解機器學習,並且上手相關的實踐。這篇文件也算是easypr開發的番外篇,從這裡開始,必須對機器學習了解才能進一步介紹easypr的核心。當然,本文也面對一般讀者,不會對閱讀有相關的前提要求。在進入正題前,我想...從NMS談起 自適應非極大值抑制演算法(ANMS)
從生活談起
從機器學習談起