我有20乘20大小的彩色图像,目的是:
基于一个查询,我需要检查哪个被召回的图像与查询最接近。例如,让10个图片被召回。在10个被召回的图像中,我需要找到与查询最接近的匹配。
我在考虑利用图像之间的相关性。可以使用相关系数--越高的值,越是像素值之间的相关性。(请纠正我的错误)。
R = corr2(A,B1)将计算A和B之间的相关系数,其中A是查询,B1是第一个被召回的相同大小的图像。我对彩色图像使用了上面的命令,但是我得到了结果R = NaN。我如何解决这个问题的彩色和灰度。谢谢。
这是查询图像

另一张图像(召回/检索B1)

更新:用于测试来自名为patches.mat的数据库的图像与自身的相关性的代码(修补程序是数据库。它由59500个20x20个补丁组成,从一堆摩托车图像中重新塑造成400个维列向量;我使用第50个示例作为查询图像)。
img_query = imagesc(reshape(patches(:,50),20,20));
colormap gray;axis image;
R = corr2(img_query,img_query)答案= NaN
发布于 2016-02-05 22:40:16
这是因为其中一幅图像是黑色的,或者包含一种颜色,这意味着矩阵的所有值都是相似的。请查看以下示例:
I = imread('pout.tif');
J = I*0; % create a black image
R = corr2(I,J);
R =
NaN
I = imread('pout.tif');
J = 255*ones(size(I)); % create a white image
R = corr2(I,J);
R =
NaN更新
在您的情况下,它应该可以工作,正如您在下面的示例中所看到的那样,它工作得非常完美:
I1 = abs(255*(rand(10,10));
I2 = abs(255*(rand(10,10));
corr2(I1,I2)
ans =
0.0713

即使你分享的图片,它是为我工作。要找出您的问题,您必须共享代码的一部分,或者按原样发布图像,而不是保存的图像(大小为420x560x3)。
注意:您不能拥有包含超过一个层的图像。
您的代码显示您使用的是图像的句柄,而不是图像本身。
测试这个:
I = reshape(patches(:,50),20,20);
corr2(I,I)发布于 2016-02-06 12:59:41
我也会尝试一下Wang的通用质量指数,如果两幅图像相等的话,它给出了1.0的值,而在其他情况下,如果它们有不同的空间指示,请将一幅图像作为参考,另一幅图像相对于第一幅图像来说是一个退化的图像。请参阅index/demo.html
https://stackoverflow.com/questions/35234472
复制相似问题