2014-11-24 110 views
0

我想從一組圖像補丁中創建一個代碼簿。我已將圖像(Caltech 101)分成20 X 20個圖像塊。我想爲每個補丁創建一個SIFT描述符。但對於一些圖像補丁,它不會返回任何描述符/關鍵點。我曾嘗試使用OpenCV和vlfeat。 使用任何庫的行爲都是相同的。空/無SIFT描述符和python中生成的關鍵點

以下是使用OpenCV的我的代碼 -

sift = cv2.SIFT() 
img = cv2.imread('patch_temp.jpg',0) 
imgptch = cv2.imread('image_patch.jpg',cv2.CV_LOAD_IMAGE_GRAYSCALE) 
kp, des = sift.detectAndCompute(imgptch,None) 
print des 

德是 '無'。如果我使用vlfeat,情況也是如此。 注意:如果我使用不同的圖像,上面的作品。它會爲某些圖像返回無(10箇中的6個)。

我已經使用OpenCV的索引創建的圖像補丁 -

patch = img[0:20,0:20] 
cv2.imwrite('image_patch.jpg',img) 

回答

2

功能sift.detectAndCompute第一嘗試檢測SIFT關鍵點然後計算描述在發現位置。

這不是你想要的:你想要爲每個補丁有一個描述符。 您可以先製作關鍵點位置(將其pt屬性調整爲您的修補程序的中心並將其size屬性調整爲您的修補程序大小)。然後,只調用這組位置上的描述符提取器。