Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
两个Java OpenCV矩阵之间的距离_Java_Opencv - Fatal编程技术网

两个Java OpenCV矩阵之间的距离

两个Java OpenCV矩阵之间的距离,java,opencv,Java,Opencv,我有两个Java OpenCV(这是两个图像的集合) 计算这两个矩阵之间“距离”的最佳方法是什么?(假设两个视觉上相似的DFT之间的距离很小)可能没有一个最佳答案,因为这取决于您想要如何度量图像的相似性。但是,我们可以尝试一些想法,看看什么最适合您的情况: 一个简单的想法是计算矩阵中每个单元的平方误差(假设矩阵具有相同的维度行,COLS)。因此,矩阵M1和M2的距离度量为: MAT diff_matrix = M1 - M2; double distance = diff_matrix.norm

我有两个Java OpenCV(这是两个图像的集合)


计算这两个矩阵之间“距离”的最佳方法是什么?(假设两个视觉上相似的DFT之间的距离很小)

可能没有一个最佳答案,因为这取决于您想要如何度量图像的相似性。但是,我们可以尝试一些想法,看看什么最适合您的情况:

一个简单的想法是计算矩阵中每个单元的平方误差(假设矩阵具有相同的维度行,COLS)。因此,矩阵M1和M2的距离度量为:

MAT diff_matrix = M1 - M2;
double distance = diff_matrix.norm();
如果矩阵有不同的维度,只需向矩阵中添加新行/列(行/列较少),并用0填充额外的条目。

在您希望检测到一个矩阵在与其他矩阵相同的区域中共享几乎相同的颜色的情况下,上述想法非常有效。但是,根据DFT定义和颜色的测量方式,用一种颜色替换另一种颜色可能会导致其他类似图像的测量结果完全不同。因此,另一个想法是首先通过使图像中最常见的第k种颜色对应于预定义颜色方案中的第k种颜色来规范化图像的颜色方案

另一个想法是首先计算矩阵的特征向量,然后计算特征向量的差,然后将差平方。如果矩阵不是正方形,则需要计算这些矩阵的奇异值分解(SVD)来执行这些操作。比较特征向量的优点是,只要矩阵的行或列的顺序相同,特征向量就会相同

最后,你可以考虑混合这些想法,并将它们的结果组合成线性组合。