2014-03-03 239 views
0

我一直在尋找這個天,但我似乎無法知道從哪裏開始。我試圖用它們的顏色來比較基本圖像和其他10個圖像,並且我有界可以使用歐幾里得或直方圖匹配而不使用opencv函數。我只嘗試過歐式距離。我想要做的是獲得image1和image2中每個像素的距離。我顯示的距離,我得到非常高的價值。我的代碼在這裏有什麼可能是錯的?請幫忙。 :)圖像相似性(直方圖匹配/歐幾里得距離)

for(p=0;p<height;p++) // row 
{ 

    for(p2=0;p2<inputHeight;p2++) // row 
    {      
     for(u2=0;u2<inputWidth;u2++) // col 
     { 
      r2 = inputData[p2*inputStep+u2*inputChannels+2]; 
      g2 = inputData[p2*inputStep+u2*inputChannels+1]; 
      b2 = inputData[p2*inputStep+u2*inputChannels+0];  
     } 
    }        
    for(p=0;p<height;p++) // row 
    { 
     for(u=0;u<width;u++) // col 
     { 
      r = data[p*step+u*channels+2]; 
      g = data[p*step+u*channels+1]; 
      b = data[p*step+u*channels+0];  
     } 
    } 

    euclidean=(euclidean+sqrt(pow(b2-b,2) + pow(g2-g, 2) + pow(r2-r,2))); 
} 

回答

0

你的程序往往當你相加,得到非常高的價值的所有像素歐氏距離起來:

euclidean=(euclidean+sqrt(pow(b2-b,2) + pow(g2-g, 2) + pow(r2-r,2))); 

我建議你做如下:

  1. 計算顏色直方圖(矢量特徵)的圖像。

  2. 計算這些直方圖之間的相關係數作爲圖像的差異。

相關問題