0

画像を同じサイズのグリッドとして分割し、それらのグリッドに対するフィルターの応答を取得しようとしました。各グリッドの各応答マトリックスは、個別に取得する必要があります。たとえば、グリッド サイズ 100x100 でサイズ 500x500 のフィルター処理と画像を作成する場合、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);

私が提案したことを行うにはどうすればよいですか?なにか提案を?

4

1 に答える 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)
于 2013-03-22T09:32:16.123 に答える