通过在Matlab中将图像网格与blockproc分开来进行图像过滤

时间:2013-03-22 09:26:48

标签: matlab grid filtering

我尝试将图像划分为相同大小的网格,并获得过滤器对这些网格的响应。每个网格的每个响应矩阵需要作为separeate获得。例如,如果我正在过滤并且图像尺寸为500x500,网格尺寸为100x100,那么我需要获得尺寸为100x100的5 * 5 = 25个不同的响应矩阵。我怎么能在Matlab上做到这一点?

我已经尝试过blockproc但它并没有为每个图像网格提供单独的响应,而是对图像进行网格化并运行过滤器并提供更大的响应向量。这是我用于blockproc的代码

fun = @(x)  imfilter(x.data,filter,'conv');
img_res=blockproc(img,[100 100],fun,'UseParallel',1,'TrimBorder',1,'PadPartialBlocks',1);
我可以做我提出的建议吗?有什么建议吗?

1 个答案:

答案 0 :(得分:0)

这就是我做的事情

% step 1 divide into blocks
szM = size(image)
nb = szM ./ grid_size % number of blocks in each dimension
C = mat2cell(image,repmat(grid_size(1),1,nb(1)), repmat(grid_size(2),1,nb(2)))

% step 2: do something for each block (here MIN)
C2 = cellfun(@(x) min(x(:)), C, 'un', 0)
M2 = cell2mat(C2)