Есть ли в Matlab замена для blockproc?

Я используюblockproc для обработки изображений блочно. К несчастью,blockproc является частью набора инструментов для обработки изображений, которого у меня нет на моем персональном компьютере.

Есть ли комбинация функций в базовом Matlab, которая может заменитьblockproc?

Мое первоначальное предположение было использоватьim2col преобразовать каждый блок в столбцы, а затемarrayfun обрабатывать каждый столбец. Тогда я понял, чтоim2col также является частью панели инструментов обработки изображений, так что это не решает мою проблему.

 Amro29 июн. 2012 г., 17:11
связанный вопрос:Matlab - merge submatrices

Ответы на вопрос(2)

Решение Вопроса

лементы N-by-M и обрабатывает случай, когда размер изображения не делится равномерно на количество мозаичных элементов.

%# 2D grayscale image
I = imread('coins.png');

%# desird number of horizontal/vertical tiles to divide the image into
numBlkH = 4;
numBlkW = 4;

%# compute size of each tile in pixels
[imgH,imgW,~] = size(I);
szBlkH = [repmat(fix(imgH/numBlkH),1,numBlkH-1) imgH-fix(imgH/numBlkH)*(numBlkH-1)];
szBlkW = [repmat(fix(imgW/numBlkW),1,numBlkW-1) imgW-fix(imgW/numBlkW)*(numBlkW-1)];

%# divide into tiles, and linearize using a row-major order
C = mat2cell(I, szBlkH, szBlkW)';
C = C(:);

%# display tiles i subplots
figure, imshow(I)
figure
for i=1:numBlkH*numBlkW
    subplot(numBlkH,numBlkW,i), imshow( C{i} )
end

Исходное изображение и получающиеся плитки:

input_image tiles

mat2tiles вместе сcellfun а такжеcell2mat делать более или менее то, чтоblockproc делает?

Вы можете написать обертку самостоятельно, чтобы она использовала те же аргументы, что иblockprocЯ не думаю, что это должно быть так сложно сделать.

Ваш ответ на вопрос