Set*_*Sen 5 matlab image-processing matrix
我一直在使用blockproc块状处理图像.不幸的是,它blockproc是图像处理工具箱的一部分,我个人电脑上没有.
基础Matlab中是否有可以替代的功能组合blockproc?
我最初的猜测是用于im2col将每个块转换为列,然后arrayfun处理每个列.然后我意识到这im2col也是图像处理工具箱的一部分,所以这不能解决我的问题.
以下是使用MAT2CELL的示例.它将图像划分为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
Run Code Online (Sandbox Code Playgroud)
输入图像和结果图块:
