如何聚類提取的SIFT描述符。進行聚類的目的是將其用於分類目的。SIFT聚類將篩選特徵(128維向量)轉換爲詞彙
1
A
回答
1
要羣集,轉換N * 128維(N是描述符的從每個圖像的數目)成M * 128維數組(所有圖像中M個描述符)。並對這些數據執行集羣。
如:
def dict2numpy(dict):
nkeys = len(dict)
array = zeros((nkeys * PRE_ALLOCATION_BUFFER, 128))
pivot = 0
for key in dict.keys():
value = dict[key]
nelements = value.shape[0]
while pivot + nelements > array.shape[0]:
padding = zeros_like(array)
array = vstack((array, padding))
array[pivot:pivot + nelements] = value
pivot += nelements
array = resize(array, (pivot, 128))
return array
all_features_array = dict2numpy(all_features)
nfeatures = all_features_array.shape[0]
nclusters = 100
codebook, distortion = vq.kmeans(all_features_array,
nclusters)
-1
通常使用kmeans來獲得k箇中心,您可以將每個圖像更改爲K的向量(每個維度表示該羣集中有多少個補丁)。
2
方法:所有的
首先計算
SIFT descriptor
對於每個圖像/對象,然後push_back
該描述符成單個圖像(稱爲讓該圖像Mat featuresUnclustered
)。之後,您的任務是將所有描述符聚類到一定數量的組/簇(由您決定)。這將是你的詞彙量/詞典的大小。
int dictionarySize=200;
然後終於來聚類他們的步驟
//define Term Criteria TermCriteria tc(CV_TERMCRIT_ITER,100,0.001); //retries number int retries=1; //necessary flags int flags=KMEANS_PP_CENTERS; //Create the BoW (or BoF) trainer BOWKMeansTrainer bowTrainer(dictionarySize,tc,retries,flags); //cluster the feature vectors Mat dictionary=bowTrainer.cluster(featuresUnclustered);
相關問題
- 1. Opencv SiFT的特徵向量大小
- 2. 構建篩選特徵編碼包中的詞彙
- 3. 譜聚類特徵向量和特徵值
- 4. 如何將特徵矩陣轉換爲圖像處理中的特徵向量?
- 5. 將特徵的Spark向量轉換爲數組
- 6. Maxima:將特徵向量轉換爲矩陣
- 7. 將PNG圖像轉換爲像素灰度值特徵向量
- 8. 如何將數據幀轉換爲標籤特徵向量?
- 9. 如何將SIFT特徵矩陣轉換爲支持向量機可讀的存檔?
- 10. 帶有bagof特徵的SIFT特徵
- 11. 哪種聚類算法最適合聚類一維特徵?
- 12. 自然語言處理 - 將文本特徵轉換成特徵向量
- 13. 特徵選擇,聚類,降維算法之間的區別
- 14. 如何從sklearn譜聚類中獲得特徵值和特徵向量?
- 15. 轉換PCL點類型XYZ到特徵向量4F
- 16. OpenCV的Python和SIFT特徵
- 17. SIFT特徵提取器
- 18. 將三維點的矢量轉換爲特徵的均勻表示
- 19. 如何將Scala特徵轉換爲java?
- 20. 數字數據轉換爲特徵向量
- 21. 轉換特徵向量的一列分爲單列
- 22. 在將分類特徵轉換爲熊貓數字特徵時出錯
- 23. 如何使用神經網絡保存篩選特徵向量用於分類
- 24. SIFT是否爲旋轉不變特徵opencv
- 25. 將二維向量轉換爲二維數組
- 26. 復特徵向量
- 27. 將大型XTS對象轉換爲數組以計算Eignevalues和特徵向量
- 28. 將Fortran77代碼轉換爲Matlab代碼以找到特徵值/向量
- 29. [R特徵值/特徵向量
- 30. cvBlobsLib的特徵向量和特徵值
確定,怎麼能代表描述符的聚類,我知道描述符128的功能。所以如何表示它們 –
對於一個對象/圖像,您將得到一個描述符,它只是一行128列的圖像。因此,如果您使用50張圖像,那麼您將擁有50張這樣的圖像(即一行128列)。現在,您將所有這些行放在一個單個圖像中,在上面的示例中,這些圖像的特徵爲「unclustered」。 – skm