我正在尝试进行某种图像排序。
我有5张图片,第一张是我的主要图片。我试图根据它们的相似性对图像进行排序。(最相似的图像到不太相似的图像)。
Matlab有matchfeature
方法,但我不认为我正确使用它,因为我的结果是错误的。我尝试使用:
[indexPairs,matchmetric] = matchFeatures(features1,features2,"MatchThreshold,10")
然后我尝试对matchmetric
数组进行排序。但它没有工作
有谁可以告诉我一些算法或任何提示?谢谢..
答案 0 :(得分:1)
您可以计算每个图像与主图像之间的相关系数,然后根据系数对它们进行排序。
doc corr2
例如,假设您将所有图像存储在一个单元格阵列(称为ImageCellArray)中,其中第一张图像是您的主图像":
for i = 2:size(ImageCellArray,2) % size(ImageCellArray,2) is the total # of images, i.e. the size of the cell array containing them.
CorrCoeff(i) = corr2(rgb2gray(ImageCellArray{1}),rgb2gray(ImageCellArray{i}));
end
[values indices] = sort(CorrCoeff); % sort the coefficients and get the number of the corresponging image.
然后我猜你好了。
答案 1 :(得分:1)
您可以计算每个图像与主图像相比的PSNR(峰值信噪比)。 PSNR是通常用于测量针对原始图像的重建压缩的质量的度量。
计算机视觉系统工具箱中的implemented in Matlab作为功能块,图像处理工具箱中还有psnr
function。结果将是您可以用来对图像进行排名的分贝数。较高的PSNR值表示更大的相似性。
答案 2 :(得分:0)
看一下image retrieval的这个例子。它不是匹配图像对之间的特征,而是使用统计工具箱中的KDTreeSearcher
来查找整个数据库图像集中查询图像中每个特征的最近邻居。