在 Matlab 中对滑动窗口应用操作
Posted
技术标签:
【中文标题】在 Matlab 中对滑动窗口应用操作【英文标题】:Apply an operation on a sliding window in Matlab 【发布时间】:2016-12-28 04:44:18 【问题描述】:我有一张大图,我必须:
首先,将函数应用于图像的每个可能的补丁,例如滑动窗口。这实际上与 Matlab 中支持的卷积非常相似,但我需要在每个图像块上计算一个“关键值”(实数)(让我们将其视为黑盒函数)。根据 cmets 的建议,我可以使用“blockproc”功能
1234563 .相反,我想检测那些重叠的窗口并只保留键值最低的窗口。你可以说我不想找到 n 个最小的键值,而只想找到 n 个局部最小值(虽然不确定这个类比是否正确)。代码太长太复杂不能给出代码(人脸识别使用+5个函数的特征脸)【问题讨论】:
也许是blockproc
,也许是im2col
。如果您实际上包含了对您正在尝试做的事情的描述以及一些可以在您的问题中实现预期结果的示例代码,那将非常有帮助。这样我们就可以给出更具体的答案。
或nlfilter
。我忘了nlfilter
。很棒的功能。
@beaker 我已经编辑了问题,现在可以了吗? :(
如果你想要重叠窗口,那么nlfilter
可能就是你想要的。您只需将要在每个窗口上执行的函数的句柄传递给它。
@beaker 但它似乎无法解决我的第二个问题:(
【参考方案1】:
第一步:将nlfilter
应用于原图:
keyimg = nlfilter(img, windowsize, keyfun);
第 2 步:将im2col
应用于keyimg
并对键值进行排序:
colimg = im2col(keyimg, windowsize, 'sliding');
minimg = sort(colimg, 1); % perhaps take only the first `k` rows
【讨论】:
以上是关于在 Matlab 中对滑动窗口应用操作的主要内容,如果未能解决你的问题,请参考以下文章