【问题标题】:Sliding Window on two image(main image and sub image) matrices两个图像(主图像和子图像)矩阵上的滑动窗口
【发布时间】:2013-05-01 07:08:48
【问题描述】:

我是 matlab 新手,遇到了一些问题。如果您能帮助我,将不胜感激。我必须继续使用滑动窗口技术。主窗口应该是一个 40x40 的矩阵,而我想要滑过的子矩阵是一个 10x10 的窗口图像矩阵。我想检查两个矩阵是否相等,我认为'isequal()' 函数是检查两个矩阵是否相等的更好选择。请帮忙。

【问题讨论】:

  • 你在寻找什么样的平等?窗口中有什么样的数据。您是否将 10x10 滑动窗口与主窗口的 10x10 子集进行比较?顺便说一句,根据您要执行的操作,您可能会发现 conv2 非常有用(即 2D 卷积)
  • 是的,先生,我正在将 10x10 图像矩阵与 40x40 大小的主图像矩阵的 10x10 子集进行比较。

标签: image matlab matrix sliding-window


【解决方案1】:

您可以使用conv2 或更一般的nlfilter。由于 Dan 已经建议 conv2 我将举另一个例子:

如果你的矩阵是M 并且窗口是w 10x10:

f = @(x) isequall(x(:)),w(:));
Ans = nlfilter(M,[10 10],f);

【讨论】:

  • 谢谢先生,但很抱歉,由于我是 matlab 新手,我有这些愚蠢的疑问。对不起。所以我应该做的是,将 10x10 图像矩阵存储在“w”中......?通过给 w= imread('image_file.jpg');这样可以吗??
  • 我假设您手头已经有 wM...您在问题中写道,您想在 40x40 矩阵上滑动 10x10 矩阵。如果您不知道如何获得,我建议您先阅读一些基本的 matlab 文档。
【解决方案2】:

试试这个代码

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 值来更改窗口大小

如果 2 个矩阵相似,则 w3 值将为零

【讨论】:

    猜你喜欢
    • 2014-06-02
    • 1970-01-01
    • 1970-01-01
    • 2015-02-21
    • 2012-06-09
    • 2016-02-15
    • 1970-01-01
    • 1970-01-01
    • 2015-05-30
    相关资源
    最近更新 更多