如何有效地应用多个过滤器

时间:2014-02-03 16:39:45

标签: matlab

我有一个分为网格的图像。可以说图像大小为100x120,每个补丁的大小为50x60a = rand(100,120);e = mat2cell(a,[50 50],[60 60]);

现在,在每个补丁中,我们必须使用imfilter(e{i}, mask, 'symmetric')命令应用过滤器。从这个函数的输出,这是一个大小与补丁相同的数组,我们保留一个值。让我们说最大值。我们将结果存储在多维数组D中。在第一个切片中,我们应该使用filter1过滤所有修补程序,第二个切片应包含由filter 2过滤的所有修补程序。所以D数组的维数是'100x120x(过滤器数)。

使用for循环执行上述操作过于耗时,尤其是当补丁和过滤器的数量很大时。有没有办法在不使用for循环的情况下执行此操作?我非常感谢你的帮助!

感谢您的时间。

编辑: @ Jigg的评论后,我们可以提供以下信息:

outPut= zeros(size(I,1),size(I,2),size(cellArrayofMasks,1)*size(cellArrayofMasks,2));
parfor i=1:numel(cellArrayofMasks)//works faster
    mask = cellArrayofMasks{i};
    fun = @(block_struct) ...
            imfilter(block_struct.data, mask, 'symmetric');
      outPut(:,:,i)= blockproc(Im,[M N],fun);//MxN patch
end

我们可以避免外部循环吗?

0 个答案:

没有答案