2013-10-16 84 views
0

我正在使用HOG功能來檢測兩個圖像的相似性,並找出圖像的哪個部分發生了變化。測試場景是我首先以表格的圖片作爲參考,然後在表格的角落添加一個對象,然後在相同的位置再次拍攝圖片。如何檢測opencv中兩個圖像之間的變化?

然後我使用resize和hog來計算兩張圖片上的HOG特徵數組。 Imgproc.resize(mGray,mGray,new Size(128,256)); hog.compute(mGray,des); 然後

double distance=0; 
    for(int i=0;i<ref.length;i++) 
    { 
     distance += Math.abs(ref[i] - a[i]); 
    } 
    if(distance < Threshold){ 
     Log.i(TAG,"has difference "+distance);      
    }else{ 
     Log.i(TAG,"has no difference "+distance); 
    } 

現在我可以檢測上有兩張圖片的變化,但我怎麼能快速確定在何處變化?最初,我正在考慮將圖片拆分爲許多小塊,並計算這些小塊的HOG特徵值,逐塊比較距離,但這並不是很有效。

如果有更好的方法來做到這一點?

回答

0

豬描述符只會告訴你有變化,但不是變化的地方。您可以使用篩選特徵和描述符,並確定所有匹配的特徵並繪製包含所有匹配特徵的邊界框。

除了在描述符本身上逐個塊,您可以使用k-means簇,然後對簇編號進行塊比較。

相關問題