我轉換兩個直方圖成整數數組,我現在有大小ARRAY1 [65536]和數組2 [65536]在其中的值是從0 -255在不同的索引範圍的兩個陣列。現在我想匹配兩個這些數組,以便我可以得到這兩個圖像匹配的結果。 請儘快幫助我。如何比較圖像的兩個直方圖?
回答
好吧,如果圖像匹配,你不能比的。正如Tergiver所說,圖像直方圖是圖像中色調(亮度)分佈的圖形表示。
如果您想比較直方圖並檢查它們之間的差異程度,可以按照以下示例進行操作(爲了簡化,這是一個具有5個元素大小的數組的示例):
int[] array1 = {0,255,100,200,78 };
int[] array2 = {255, 0, 250, 15, 34 };
float[] diff = new float[5];
for (int i = 0; i < 5; i++)
{
diff[i] = ((float)Math.Abs(array1[i] - array2[i]))/255;
}
float degreeOfDiff = diff.Sum()/array1.Length*100;
bool sameDistribution = degreeOfDiff == 0;
Debug.WriteLine(degreeOfDiff + "%");
Debug.WriteLine(sameDistribution);
我會強調,這將不是檢查圖像是否相等。
這個解決方案會給我不同的是image1與image2有多少不同?因爲我的最後一個階段是圖像識別,在這裏我卡在這裏比較兩個直方圖。 – Malik 2013-04-11 18:53:57
它會比較兩個**直方圖**,在這種情況下,「degreeOfDiff」將顯示一個直方圖與另一個直方圖的差異程度。不知道這是什麼類型的直方圖以及它擁有哪種信息,我不能向你保證它會比較圖像。它肯定會比較'int'範圍從0到255 :) – 2013-04-11 18:58:48
你不能。
的圖像直方圖爲您提供了一個給定的顏色出現在圖像中的次數。想象圖像A爲25個像素的黑色豎直線和圖像B作爲黑盒子的5×5像素的圖像。
A和B兩者具有完全相同的直方圖,但顯然不是類似圖像。
他們是如果他的相似性度量基於直方圖。我認爲這取決於他的「相似」。如果他意味着他想知道兩幅原始圖像是否「看起來相似」(對於看起來相似的某些模糊值),那麼您無法通過比較直方圖來做到這一點。 – JakeP 2013-04-11 18:50:17
問題有點模糊,但如果你想要的是對稱差那麼這裏有一個單行LINQ查詢它:
int[] foo = new int[] { 1,2,3 };
int[] bar = new int[] { 4,5,6 };
int distance = foo.Zip(bar, (x,y)=>Math.Abs(x-y)).Aggregate((x,y)=>x+y);
Console.WriteLine("Symmetric difference between foo and bar: {0}", distance);
可能有奇的方法來計算相似度。這在很大程度上取決於你想要考慮什麼樣的圖像「相似」。我懷疑你還可以得到更好的結果具有更小的陣列(即放在一起類似的陰影),使得「幾乎」一樣的顏色寄存器作爲「類似」的圖像。
編輯:它看起來像Earth mover's distance是你想要的:Wikiedia的頁面列出圖像比較作爲EMD的一個很好的應用。
的EMD的計算機科學的早期應用是比較兩個 可以由於抖動,模糊或本地 變形不同灰度的圖像。[4]在這種情況下,該區域是圖像的域,和 光(或墨水)的總量是「污垢」將被重新排列。
該EMD被廣泛用於基於內容的圖像檢索,以計算兩個數字圖像的顏色直方圖之間的距離 。在這種 情況下,區域是RGB顏色立方體,並且每個圖像像素是「污垢」一個 包裹。可以使用相同的技術用於任何其他 定量像素屬性,諸如亮度,梯度,在一個視頻幀明顯 運動等。
的維基百科頁面還具有僞碼算法來計算EMD,我相信這是你問題的正確答案。
- 1. 使用直方圖比較兩個圖像
- 2. OSX:比較兩個圖像
- 3. 如何直接比較兩個圖像背景android
- 4. 比較兩個圖像圖標?
- 5. 兩幅圖像的圖像比較
- 6. 比較2個直方圖與卡方
- 7. 比較Android中的兩個圖像
- 8. 比較IOS中的兩個圖像8
- 9. 比較兩幅圖像
- 10. 比較兩個圖像問題
- 11. 比較兩個圖像是否相同
- 12. 在JavaScript中比較兩個圖像
- 13. 使用OpenCV比較兩個圖像
- 14. 如何比較圖像(緩存圖像)?
- 15. 我如何比較圖像
- 16. 如何比較兩個Dia圖?
- 17. 如何比較使用sikuli的兩個圖像的內容?
- 18. Matlab - 直方圖熵的比較
- 19. 如何比較Qt中的兩個RGB圖像?
- 20. 如何比較二進制模式圖像的兩個輪廓?
- 21. 用於比較兩個圖像與方向的算法
- 22. 最快的方法來比較兩個圖像
- 23. 使用不安全的方法比較兩個圖像數據
- 24. 在Python中比較兩個圖像的簡單方法
- 25. Python:用戶界面圖像擦除,比較兩個圖像
- 26. 比較兩個視圖
- 27. 圖像直接比較vs散列
- 28. 如何比較兩個邊緣圖像(在OpenCV中)?
- 29. 如何比較兩個圖像使用字節數組
- 30. 如何比較java中的兩個圖像?在高度和寬度方面
你所說的「匹配這些陣列」是什麼意思?你只是想測量兩個直方圖之間的地球移動者的距離嗎? – redtuna 2013-04-11 18:29:52
我們可以得到你想要的更多信息?你想知道array1中的值的百分比與array2中的相應值完全匹配嗎? – JakeP 2013-04-11 18:29:57
具有256灰度色調的圖像的直方圖應該對應於256個元素的數組。你爲什麼擁有數組[65536]? – leonbloy 2013-04-11 18:32:43