簡體   English   中英

兩個Java OpenCV矩陣之間的距離

[英]Distance between two Java OpenCV matrices

我有兩個Java OpenCV 矩陣(Mat) (這是兩個圖像的DFT )。

計算這兩個矩陣之間的“距離”的最佳方法是什么? (假設兩個視覺上相似的DFT的距離很小)

對此可能沒有一個最佳答案,因為這取決於您要如何測量圖像的相似性。 但是,我們可以嘗試一些想法,看看哪種方法最適合您的情況:

一個簡單的想法是計算矩陣中每個像元的平方誤差(假設矩陣具有相同的尺寸ROWS,COLS)。 因此,矩陣M1和M2的距離度量為:

MAT diff_matrix = M1 - M2;
double distance = diff_matrix.norm();

如果矩陣的維數不同,只需將新的行/列添加到具有較少行/列的矩陣中,然后用0填充這些多余的條目。

在您要檢測一個矩陣與另一個矩陣在相同區域中共享幾乎相同顏色的情況下,上述想法效果很好。 但是,根據您的DFT定義和顏色的測量方式,將一種顏色替換為另一種顏色可能會導致將相似的圖像測量為完全不同的圖像。 因此,另一個想法是首先通過使圖像中第k個最普遍的顏色與預定義顏色方案中的第k個顏色相對應來規范化圖像的顏色方案。

另一個想法是先計算矩陣的特征向量,然后計算特征向量的差,然后對差求平方。 如果矩陣不是正方形,則需要為這些矩陣計算奇異值分解(SVD)才能執行這些操作。 比較特征向量的優點是,只要矩陣的行或列的順序相同,特征向量就會相同。

最后,您可能會考慮這些想法的混合,並將其結果線性組合。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM