Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab中是否有blockproc的替代品?_Matlab_Image Processing_Matrix - Fatal编程技术网

Matlab中是否有blockproc的替代品?

Matlab中是否有blockproc的替代品?,matlab,image-processing,matrix,Matlab,Image Processing,Matrix,我一直在使用块处理图像。不幸的是,blockproc是图像处理工具箱的一部分,我的个人电脑上没有 在base Matlab中是否有一个函数组合可以替代blockproc 我最初的猜测是使用im2col将每个块转换为列,然后arrayfun处理每个列。然后我意识到im2col也是图像处理工具箱的一部分,所以这并不能解决我的问题。不会与cellfun和cell2mat一起或多或少做blockproc做的事情吗 您可以自己编写一个包装器,使其使用与blockproc相同的参数,我认为这并不难做到。下

我一直在使用块处理图像。不幸的是,
blockproc
是图像处理工具箱的一部分,我的个人电脑上没有

在base Matlab中是否有一个函数组合可以替代
blockproc


我最初的猜测是使用
im2col
将每个块转换为列,然后
arrayfun
处理每个列。然后我意识到
im2col
也是图像处理工具箱的一部分,所以这并不能解决我的问题。

不会与
cellfun
cell2mat
一起或多或少做
blockproc
做的事情吗


您可以自己编写一个包装器,使其使用与
blockproc
相同的参数,我认为这并不难做到。

下面是一个使用MAT2CELL的示例。它将图像划分为N×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
输入图像和生成的分幅:

相关问题: