2013-03-22 66 views
0

我尝试将图像划分为相同大小的网格,并获得滤波器在这些网格上的响应。每个网格的每个响应矩阵需要分别获得。例如,如果我正在过滤图像尺寸为500x500,网格尺寸为100x100,则比我需要获得尺寸为100x100的5 * 5 = 25个不同的响应矩阵。我怎么能在Matlab上做到这一点?通过在Matlab中将图像网格与blockproc分开进行图像过滤

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

fun = @(x) imfilter(x.data,filter,'conv'); 
img_res=blockproc(img,[100 100],fun,'UseParallel',1,'TrimBorder',1,'PadPartialBlocks',1); 

何我可以做我建议的?任何建议?

回答

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)