Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.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
Matlab:如何检查两幅图像是否相似_Matlab_Image Processing_Correlation - Fatal编程技术网

Matlab:如何检查两幅图像是否相似

Matlab:如何检查两幅图像是否相似,matlab,image-processing,correlation,Matlab,Image Processing,Correlation,我有20乘20的彩色图像。目标是: 基于查询,我需要检查哪个调用的图像与查询最匹配。例如,让10个图像成为召回的图像。在10张召回的图像中,我需要找到与查询最接近的匹配 我在考虑使用图像之间的相关性。可以使用相关系数-值越高,像素值之间的相关性越大。(哪里错了,请纠正我) R=corr2(A,B1)将计算A和B之间的相关系数,其中A是查询,B1是相同大小的第一个调用图像。我对彩色图像使用了上述命令,但得到的结果是R=NaN。如何解决彩色和灰度的问题。多谢各位 这是查询图像 另一个图像(调用/检

我有20乘20的彩色图像。目标是:

基于查询,我需要检查哪个调用的图像与查询最匹配。例如,让10个图像成为召回的图像。在10张召回的图像中,我需要找到与查询最接近的匹配

我在考虑使用图像之间的相关性。可以使用相关系数-值越高,像素值之间的相关性越大。(哪里错了,请纠正我)

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()时不知道它返回图像句柄。谢谢你指出这一点