Image 两个图像(主图像和子图像)矩阵上的滑动窗口
我对matlab还不熟悉,有些东西让我很为难。如果你能帮我,我将不胜感激。我必须继续使用滑动窗口技术。主窗口应该是一个40x40的矩阵,而我想滑动的子矩阵是一个10x10的窗口图像矩阵。我想检查两个矩阵是否相等,我认为'isequal()'函数是检查两个矩阵相等性的更好选项。请提供帮助。您可以使用Image 两个图像(主图像和子图像)矩阵上的滑动窗口,image,matlab,matrix,sliding-window,Image,Matlab,Matrix,Sliding Window,我对matlab还不熟悉,有些东西让我很为难。如果你能帮我,我将不胜感激。我必须继续使用滑动窗口技术。主窗口应该是一个40x40的矩阵,而我想滑动的子矩阵是一个10x10的窗口图像矩阵。我想检查两个矩阵是否相等,我认为'isequal()'函数是检查两个矩阵相等性的更好选项。请提供帮助。您可以使用conv2,也可以更一般地使用。由于Dan已经建议了conv2,我将给出另一个例子: 如果矩阵为M且窗口为w10x10: f = @(x) isequall(x(:)),w(:)); Ans = nlf
conv2
,也可以更一般地使用。由于Dan已经建议了conv2
,我将给出另一个例子:
如果矩阵为M
且窗口为w
10x10:
f = @(x) isequall(x(:)),w(:));
Ans = nlfilter(M,[10 10],f);
试试这个代码
a=[1 : 8 ; 9 : 16 ; 17 : 24];
b=[1 : 8 ; 9 : 16 ; 17 : 24];
imw=size(a,2);
imh=size(a,1);
disp(imh);
disp(imw);
wh=1;
ww=3;
for j=1:imh-wh+1
for i=1:imh-ww+1
w1=a(j:j+wh-1,i:i+ww-1,:);
w2=b(j:j+wh-1,i:i+ww-1,:);
w3=w1-w2;
disp(w3);
end
end
此处窗口大小取1X3
您可以通过更改循环限制和ww、wh值来更改窗口大小
如果两个矩阵相似,那么w3值将为零您想要什么样的相等?窗口中有什么类型的数据。您是否将10x10滑动窗口与主窗口的10x10子集进行比较?顺便说一句,根据您的尝试,您可能会发现
conv2
非常有用(即2D卷积)是的,先生,我正在将10x10图像矩阵与40x40大小的主图像矩阵的10x10子集进行比较。谢谢您,先生,但很抱歉,因为我是matlab新手,我有这些愚蠢的疑问。对不起所以我要做的是,将10x10的图像矩阵存储在“w”中。。?给出w=imread('image_file.jpg');这样行吗?我想你手边已经有了w
和M
。。。您在问题中写道,您希望在40x40矩阵上滑动10x10矩阵。如果您不知道如何获得,我建议您先阅读一些基本的matlab文档。