2

假设我有一个图像矩阵,我想做以下事情:

  • 在矩阵上滑动一个8x8窗口
  • 计算矩阵中每个像素的平均值

matlab如果我对 matlab 中的编码有点陌生,我怎么能做到这一点。

谢谢。

4

3 回答 3

4

您还可以使用nlfilter

fun = @(x) mean(x(:)); 
ans= nlfilter(img,[8 8],fun);

但正如@s.bandara 所建议的那样,计算平均值conv2快得多......请注意,使用conv2with时矩阵大小会发生变化valid

在此处输入图像描述

nlfilter经过的时间是 0.433989 秒。

conv2 经过的时间是 0.000803 秒。

所以很明显,对于找到平均值的任务来说,conv2要快得多。

于 2013-01-22T08:40:55.740 回答
4

您可以使用conv2过滤ones(8)器,如I2 = conv2(I, 1.0 / 64.0 * ones(8), 'valid');. 我们除以 64.0 因为“过滤器”没有标准化。

于 2013-01-22T08:33:17.963 回答
0

尝试首先提取图像的子矩阵,如下所示:MATLAB Submatrix

然后对每个子矩阵使用mean(A)函数

于 2013-01-22T08:49:01.077 回答