【问题标题】:Is there a substitute for blockproc in Matlab?Matlab中有blockproc的替代品吗?
【发布时间】:2012-06-29 15:07:11
【问题描述】:

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

基础 Matlab 中是否有可以替代blockproc 的函数组合?


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

【问题讨论】:

标签: matlab image-processing matrix


【解决方案1】:

这是一个使用 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

输入图像和生成的图块:

【讨论】:

    【解决方案2】:

    mat2tilescellfuncell2mat 不会或多或少地做blockproc 所做的事情吗?

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-17
      • 2017-03-05
      • 2021-03-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多