真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

c語言prim函數(shù),prim算法具體實(shí)現(xiàn)

OpenCV+Python特征提取算法與圖像描述符之SIFT / SURF / ORB

算法效果比較博文

目前創(chuàng)新互聯(lián)公司已為上千余家的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)頁空間、網(wǎng)站托管維護(hù)、企業(yè)網(wǎng)站設(shè)計、二道網(wǎng)站維護(hù)等服務(wù),公司將堅持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。

用于表示和量化圖像的數(shù)字列表,簡單理解成將圖片轉(zhuǎn)化為一個數(shù)字列表表示。特征向量中用來描述圖片的各種屬性的向量稱為特征矢量。

參考

是一種算法和方法,輸入1個圖像,返回多個特征向量(主要用來處理圖像的局部,往往會把多個特征向量組成一個一維的向量)。主要用于圖像匹配(視覺檢測),匹配圖像中的物品。

SIFT論文

原理

opencv官網(wǎng)解釋

實(shí)質(zhì)是在不同的尺度空間上查找關(guān)鍵點(diǎn)(特征點(diǎn)),并計算出關(guān)鍵點(diǎn)的方向。SIFT所查找到的關(guān)鍵點(diǎn)是一些十分突出,不會因光照,仿射變換和噪音等因素而變化的點(diǎn),如角點(diǎn)、邊緣點(diǎn)、暗區(qū)的亮點(diǎn)及亮區(qū)的暗點(diǎn)等。

尺度不變特征轉(zhuǎn)換(Scale-invariant feature transform或SIFT)是一種電腦視覺的算法用來偵測與描述影像中的局部性特征,它在空間尺度中尋找極值點(diǎn),并提取出其位置、尺度、旋轉(zhuǎn)不變量。

其應(yīng)用范圍包含物體辨識、機(jī)器人地圖感知與導(dǎo)航、影像縫合、3D模型建立、手勢辨識、影像追蹤和動作比對。

對現(xiàn)實(shí)中物體的描述一定要在一個十分重要的前提下進(jìn)行,這個前提就是對自然界建模時的尺度。當(dāng)用一個機(jī)器視覺系統(tǒng)分析未知場景時,計算機(jī)沒有辦法預(yù)先知道圖像中物體的尺度,因此我們需要同時考慮圖像在多尺度下的描述,獲知感興趣物體的最佳尺度。圖像的尺度空間表達(dá)指的是圖像的所有尺度下的描述。

KeyPoint數(shù)據(jù)結(jié)構(gòu)解析

SURF論文

原理

opencv官網(wǎng)解釋

SURF是SIFT的加速版,它善于處理具有模糊和旋轉(zhuǎn)的圖像,但是不善于處理視角變化和光照變化。在SIFT中使用DoG對LoG進(jìn)行近似,而在SURF中使用盒子濾波器對LoG進(jìn)行近似,這樣就可以使用積分圖像了(計算圖像中某個窗口內(nèi)所有像素和時,計算量的大小與窗口大小無關(guān))。總之,SURF最大的特點(diǎn)在于采用了Haar特征以及積分圖像的概念,大大加快了程序的運(yùn)行效率。

因?yàn)閷@?,OpenCV3.3開始不再免費(fèi)開放SIFT\SURF,需要免費(fèi)的請使用ORB算法

ORB算法綜合了FAST角點(diǎn)檢測算法和BRIEFF描述符。

算法原理

opencv官方文檔

FAST只是一種特征點(diǎn)檢測算法,并不涉及特征點(diǎn)的特征描述。

論文

opencv官方文檔

中文版

Brief是Binary Robust Independent Elementary Features的縮寫。這個特征描述子是由EPFL的Calonder在ECCV2010上提出的。主要思路就是在特征點(diǎn)附近隨機(jī)選取若干點(diǎn)對,將這些點(diǎn)對的灰度值的大小,組合成一個二進(jìn)制串,并將這個二進(jìn)制串作為該特征點(diǎn)的特征描述子。文章同樣提到,在此之前,需要選取合適的gaussian kernel對圖像做平滑處理。

1:不具備旋轉(zhuǎn)不變性。

2:對噪聲敏感

3:不具備尺度不變性。

ORB論文

OpenCV官方文檔

ORB采用了FAST作為特征點(diǎn)檢測算子,特征點(diǎn)的主方向是通過矩(moment)計算而來解決了BRIEF不具備旋轉(zhuǎn)不變性的問題。

ORB還做了這樣的改進(jìn),不再使用pixel-pair,而是使用9×9的patch-pair,也就是說,對比patch的像素值之和,解決了BRIEF對噪聲敏感的問題。

關(guān)于計算速度:

ORB是sift的100倍,是surf的10倍。

對圖片數(shù)據(jù)、特征分布的一種統(tǒng)計

對數(shù)據(jù)空間(bin)進(jìn)行量化

Kmeans

邊緣:尺度問題-不同的標(biāo)準(zhǔn)差 捕捉到不同尺度的邊緣

斑點(diǎn) Blob:二階高斯導(dǎo)數(shù)濾波LoG

關(guān)鍵點(diǎn)(keypoint):不同視角圖片之間的映射,圖片配準(zhǔn)、拼接、運(yùn)動跟蹤、物體識別、機(jī)器人導(dǎo)航、3D重建

SIFT\SURF

OpenCV-Python之——圖像SIFT特征提取

在一定的范圍內(nèi),無論物體是大還是小,人眼都可以分辨出來。然而計算機(jī)要有相同的能力卻不是那么的容易,在未知的場景中,計算機(jī)視覺并不能提供物體的尺度大小,其中的一種方法是把物體不同尺度下的圖像都提供給機(jī)器,讓機(jī)器能夠?qū)ξ矬w在不同的尺度下有一個統(tǒng)一的認(rèn)知。在建立統(tǒng)一認(rèn)知的過程中,要考慮的就是在圖像在不同的尺度下都存在的特征點(diǎn)。

在早期圖像的多尺度通常使用圖像金字塔表示形式。圖像金字塔是同一圖像在不同的分辨率下得到的一組結(jié)果其生成過程一般包括兩個步驟:

多分辨率的圖像金字塔雖然生成簡單,但其本質(zhì)是降采樣,圖像的局部特征則難以保持,也就是無法保持特征的尺度不變性。

我們還可以通過圖像的模糊程度來模擬人在距離物體由遠(yuǎn)到近時物體在視網(wǎng)膜上成像過程,距離物體越近其尺寸越大圖像也越模糊,這就是高斯尺度空間,使用不同的參數(shù)模糊圖像(分辨率不變),是尺度空間的另一種表現(xiàn)形式。

構(gòu)建尺度空間的目的是為了檢測出在不同的尺度下都存在的特征點(diǎn),而檢測特征點(diǎn)較好的算子是Δ^2G(高斯拉普拉斯,LoG)

使用LoG雖然能較好的檢測到圖像中的特征點(diǎn),但是其運(yùn)算量過大,通??墒褂肈oG(差分高斯,Difference of Gaussina)來近似計算LoG。

從上式可以知道,將相鄰的兩個高斯空間的圖像相減就得到了DoG的響應(yīng)圖像。為了得到DoG圖像,先要構(gòu)建高斯尺度空間,而高斯的尺度空間可以在圖像金字塔降采樣的基礎(chǔ)上加上高斯濾波得到,也就是對圖像金字塔的每層圖像使用不同的參數(shù)σ進(jìn)行高斯模糊,使每層金字塔有多張高斯模糊過的圖像。

如下圖,octave間是降采樣關(guān)系,且octave(i+1)的第一張(從下往上數(shù))圖像是由octave(i)中德倒數(shù)第三張圖像降采樣得到。octave內(nèi)的圖像大小一樣,只是高斯模糊使用的尺度參數(shù)不同。

對于一幅圖像,建立其在不同尺度scale下的圖像,也稱為octave,這是為了scale-invariant,也就是在任何尺度都能有對應(yīng)的特征點(diǎn)。下圖中右側(cè)的DoG就是我們構(gòu)建的尺度空間。

為了尋找尺度空間的極值點(diǎn),每一個采樣點(diǎn)要和它所有的相鄰點(diǎn)比較,看其是否比它的圖像域和尺度域的相鄰點(diǎn)大或者小。如圖所示,中間的檢測點(diǎn)和它同尺度的8個相鄰點(diǎn)和上下相鄰尺度對應(yīng)的9×2個點(diǎn)共26個點(diǎn)比較,以確保在尺度空間和二維圖像空間都檢測到極值點(diǎn)。 一個點(diǎn)如果在DOG尺度空間本層以及上下兩層的26個領(lǐng)域中是最大或最小值時,就認(rèn)為該點(diǎn)是圖像在該尺度下的一個特征點(diǎn)。下圖中將叉號點(diǎn)要比較的26個點(diǎn)都標(biāo)為了綠色。

找到所有特征點(diǎn)后, 要去除低對比度和不穩(wěn)定的邊緣效應(yīng)的點(diǎn) ,留下具有代表性的關(guān)鍵點(diǎn)(比如,正方形旋轉(zhuǎn)后變?yōu)榱庑危绻眠吘壸鲎R別,4條邊就完全不一樣,就會錯誤;如果用角點(diǎn)識別,則穩(wěn)定一些)。去除這些點(diǎn)的好處是增強(qiáng)匹配的抗噪能力和穩(wěn)定性。最后,對離散的點(diǎn)做曲線擬合,得到精確的關(guān)鍵點(diǎn)的位置和尺度信息。

近來不斷有人改進(jìn),其中最著名的有 SURF(計算量小,運(yùn)算速度快,提取的特征點(diǎn)幾乎與SIFT相同)和 CSIFT(彩色尺度特征不變變換,顧名思義,可以解決基于彩色圖像的SIFT問題)。

其中sift.detectAndCompute()函數(shù)返回kp,des。

上圖dog的shape為(481, 500, 3),提取的特征向量des的shape為(501, 128),501個128維的特征點(diǎn)。

該方法可以在特征點(diǎn)處繪制一個小圓圈。

【小項目-1】用Python進(jìn)行人聲伴奏分離和音樂特征提取

比如采樣率為22050,音頻文件有36s,那么x為長度為22050*36=793800的float。

用到了python庫 Spleeter

抽象地了解下原理吧

參考文章是這篇:Spleeter: a fast and efficient music source separation tool with pre-trained models

原理文章是這篇 SINGING VOICE SEPARATION: A STUDY ON TRAINING DATA

粗略掃了一眼,原理主要是用U-Net進(jìn)行分割,然后這個Python工具主要是利用了一個pre-trained的model。

參考鏈接:機(jī)器之心的一篇文章

縱軸表示頻率(從0到10kHz),橫軸表示剪輯的時間。由于我們看到所有動作都發(fā)生在頻譜的底部,我們可以將頻率軸轉(zhuǎn)換為對數(shù)軸。

可以對頻率取對數(shù)。

感覺這個參數(shù)蠻有意思的

整個頻譜被投影到12個區(qū)間,代表音樂八度音的12個不同的半音(或色度), librosa.feature.chroma_stft 用于計算。

先對音頻進(jìn)行短時傅里葉變換

其中每行存儲一個窗口的STFT,大小為1025*1551

這里要注意理解怎么基于stft的結(jié)果來畫頻譜圖

沒太了解,感覺就大概知道有這么個量可以用到就行。

librosa.feature.spectral_centroid 計算信號中每幀的光譜質(zhì)心:

1. 先理解連續(xù)傅里葉變換

2. 再理解離散傅里葉變換

對連續(xù)函數(shù)進(jìn)行離散采樣

3. 最后進(jìn)入短時傅里葉變換

是先把一個函數(shù)和窗函數(shù)進(jìn)行相乘,然后再進(jìn)行一維的傅里葉變換。并通過窗函數(shù)的滑動得到一系列的傅里葉變換結(jié)果,將這些結(jié)果豎著排開得到一個二維的表象。


文章名稱:c語言prim函數(shù),prim算法具體實(shí)現(xiàn)
網(wǎng)站鏈接:http://weahome.cn/article/hsedih.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部