matlab - Matlab 中是否有 blockproc 的替代品?

标签 matlab image-processing matrix

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

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


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

最佳答案

这是一个使用 MAT2CELL 的例子。它将图像划分为 N×M block ,并处理图像大小不能被 block 数整除的情况。

%# 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

输入图像和生成的图 block :

input_image tiles

关于matlab - Matlab 中是否有 blockproc 的替代品?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11238828/

相关文章:

javascript - MATLAB 作为带有 Javascript 的 COM 自动化服务器

c - dcraw的gamma_curve实现的算法叫什么名字?

Python OpenCV 找到图像中的所有三角形

performance - 请更高效的Matlab代码

matlab - 处理过的图像中的伪影

python - 如何使用python在opencv中对噪声图像执行中值滤波

c++ - 如何在 C++ 中创建一个矩阵大小由参数决定的函数?

r - 如何解决prcomp.default() : cannot rescale a constant/zero column to unit variance

c++ - 矩阵乘法问题

matlab - 通过为每一列向下滑动一个给定的向量来创建一个矩阵