Image matlab中图像的分块处理

Image matlab中图像的分块处理,image,matlab,image-processing,Image,Matlab,Image Processing,我有一个256*256大小的图像,我希望对该图像进行分块处理。为此,我希望得到64*64=4096个块,每个块有16个像素。我是Matlab新手,所以我发现很难找到具体的命令来实现这一点。到目前为止我得到的是 I=imread('kidneyimage.jpg'); I=rgb2gray(I); % block wise processing needed. 非常感谢您对这些命令的任何帮助。要做到这一点,您可以使用函数im2col 如果您刚刚开始使用Matlab,请尝试

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

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

非常感谢您对这些命令的任何帮助。

要做到这一点,您可以使用函数
im2col


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

似乎函数
B=
(A[mn],fun)
正是您所需要的。它对图像的每个块
A
应用函数
fun
,然后连接结果。还有直接从文件中读取图像的选项。

我建议任何人(尤其是初学者)都要习惯于在不使用
的情况下解决
for
循环的问题,并以正确的方式进行处理。@EitanT据我所知,for循环在Matlab中是一个性能问题。是吗?@Krishan是的,在MATLAB中你应该尽量不使用它们。@Krishan从性能的角度来看,使用MATLAB而不是C/C++是一个性能问题:)如果你的代码必须非常快,那么只使用MATLAB创建一个草案解决方案,然后使用C/C++数值库重新实现它。不管怎么说,Matlab循环在90年代已经很慢了,在最近版本的Matlab中它们变得更快了。谢谢你的回复。实际上,我想对每个块进行haar小波变换,得到特征[Ca,Ch,Cv,Cd]。我知道haar transform[Ca,Ch,Cv,Cd]=dwt2(I,'haar')的命令;但是,我如何传递块而不是整个图像,并分别获得每个块的[Ca、Ch、Cv、Cd]?