在matlab中逐块处理图像

时间:2012-06-04 13:15:58

标签: image matlab image-processing

我的图像大小为256 * 256,我想要对该图像进行逐块处理。要做到这一点,我想得到64 * 64 = 4096块,每块16像素。我是Matlab的新手,所以我发现很难找到具体的命令来做到这一点。到目前为止我所拥有的是,

    I=imread('kidneyimage.jpg');
    I=rgb2gray(I);
    % block wise processing needed.

非常感谢任何有关命令的帮助。

3 个答案:

答案 0 :(得分:2)

为此,您可以使用函数im2col

http://www.mathworks.fr/help/toolbox/images/ref/im2col.html

答案 1 :(得分:1)

如果您刚刚开始使用Matlab,请尝试最简单的方法:使用两个嵌套的for循环来迭代并操纵每个块。查看imread的帮助页面,此功能为您提供一个填充每个像素颜色的矩阵。 Matlab有一个特殊的符号,用colon (:) operator提取矩阵的部分,因此您可以轻松地逐个修改图像块。

答案 2 :(得分:0)

似乎功能B = blockproc (A, [M N], fun)完全符合您的需要。它为每个图像块fun应用函数A,然后连接结果。还有直接从文件中读取图像的选项。