假设我有一个图像矩阵,我想做以下事情:
- 在矩阵上滑动一个
8x8
窗口 - 计算矩阵中每个像素的平均值
matlab
如果我对 matlab 中的编码有点陌生,我怎么能做到这一点。
谢谢。
您还可以使用nlfilter
:
fun = @(x) mean(x(:));
ans= nlfilter(img,[8 8],fun);
但正如@s.bandara 所建议的那样,计算平均值conv2
要快得多......请注意,使用conv2
with时矩阵大小会发生变化valid
。
nlfilter
经过的时间是 0.433989 秒。
conv2
经过的时间是 0.000803 秒。
所以很明显,对于找到平均值的任务来说,conv2
要快得多。
您可以使用conv2
过滤ones(8)
器,如I2 = conv2(I, 1.0 / 64.0 * ones(8), 'valid');
. 我们除以 64.0 因为“过滤器”没有标准化。
尝试首先提取图像的子矩阵,如下所示:MATLAB Submatrix
然后对每个子矩阵使用mean(A)函数