Matlab:如何检查两幅图像是否相似
我有20乘20的彩色图像。目标是: 基于查询,我需要检查哪个调用的图像与查询最匹配。例如,让10个图像成为召回的图像。在10张召回的图像中,我需要找到与查询最接近的匹配 我在考虑使用图像之间的相关性。可以使用相关系数-值越高,像素值之间的相关性越大。(哪里错了,请纠正我)Matlab:如何检查两幅图像是否相似,matlab,image-processing,correlation,Matlab,Image Processing,Correlation,我有20乘20的彩色图像。目标是: 基于查询,我需要检查哪个调用的图像与查询最匹配。例如,让10个图像成为召回的图像。在10张召回的图像中,我需要找到与查询最接近的匹配 我在考虑使用图像之间的相关性。可以使用相关系数-值越高,像素值之间的相关性越大。(哪里错了,请纠正我) R=corr2(A,B1)将计算A和B之间的相关系数,其中A是查询,B1是相同大小的第一个调用图像。我对彩色图像使用了上述命令,但得到的结果是R=NaN。如何解决彩色和灰度的问题。多谢各位 这是查询图像 另一个图像(调用/检
R=corr2(A,B1)
将计算A和B之间的相关系数,其中A是查询,B1是相同大小的第一个调用图像。我对彩色图像使用了上述命令,但得到的结果是R=NaN
。如何解决彩色和灰度的问题。多谢各位
这是查询图像
另一个图像(调用/检索B1)
更新:用于从名为patches.mat的数据库中测试图像与自身相关性的代码(patches是数据库。它由59500个20x20个面片组成,重塑为400维列向量,
取自一组摩托车图像;我使用第50个示例作为查询图像)
Answer=NaN这是因为其中一个图像为黑色或包含单一颜色,这意味着矩阵的所有值都是相似的。检查以下示例:
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)
这是因为其中一个图像是黑色或包含单一颜色,这意味着矩阵的所有值都是相似的。检查以下示例:
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)
我还想尝试一下Wang的通用质量指数,如果两幅图像相等,它会给你一个1.0,在其他情况下,如果空间指示不同,则会给你一个1.0,将一幅图像作为参考,另一幅图像作为相对于第一幅图像的退化图像。参见我还将尝试Wang提出的通用质量指数,如果两幅图像相等,则该指数为1.0,在其他情况下,如果两幅图像的空间指示不同,则该指数为1.0。将一幅图像视为参考图像,将另一幅图像视为相对于第一幅图像的退化图像。参见NaN很可能表示被零除。例如,如果其中一个图像是统一颜色(例如,纯白或纯黑),则可能会发生这种情况。另一方面,您可能希望减少图像的采样以获得更好的匹配。NaN很可能表示除以零。例如,如果其中一个图像是统一颜色(例如,纯白或纯黑),则可能会发生这种情况。另一方面,您可能希望减少图像的采样以获得更好的匹配。谢谢您的回复。那么,对于彩色图像,可以使用corr2()?我已经上传了查询和召回的图像。你能看一下吗?该图像来自一个数据库,该数据库包含59500个20x20灰度级图像块的样本。图像由灰色阴影组成,那么为什么相关性不起作用呢?是否有其他统计方法显示图像之间的距离有多近?再次感谢您的更新。我提供了用于计算的代码。非常感谢你的时间和努力。感谢you@SKM查看更新。顺便说一句,在这个网站上,upvoting的意思和谢谢你一样!我投了更高的票,主要是因为作品《伟大的帖子》中没有看到这种欲望+1.@NKN:我在使用imagesc()时不知道它返回图像句柄。谢谢你指出这一点谢谢你的答复。那么,对于彩色图像,可以使用corr2()?我已经上传了查询和召回的图像。你能看一下吗?该图像来自一个数据库,该数据库包含59500个20x20灰度级图像块的样本。图像由灰色阴影组成,那么为什么相关性不起作用呢?是否有其他统计方法显示图像之间的距离有多近?再次感谢您的更新。我提供了用于计算的代码。非常感谢你的时间和努力。感谢you@SKM查看更新。顺便说一句,在这个网站上,upvoting的意思和谢谢你一样!我投了更高的票,主要是因为作品《伟大的帖子》中没有看到这种欲望+1.@NKN:我在使用imagesc()时不知道它返回图像句柄。谢谢你指出这一点