Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab-8x8窗口与求均值_Matlab_Matrix_Window_Mean - Fatal编程技术网

Matlab-8x8窗口与求均值

Matlab-8x8窗口与求均值,matlab,matrix,window,mean,Matlab,Matrix,Window,Mean,假设我有一个图像矩阵,我想做以下工作: 在矩阵上滑动8x8窗口 计算矩阵中每个像素的平均值 如果我对matlab中的编码有点陌生,那么在matlab中如何做到这一点呢 谢谢。您可以将conv2与ones(8)过滤器一起使用,如I2=conv2(I,1.0/64.0*ones(8),“valid”)。我们除以64.0,因为“过滤器”未标准化。您也可以使用: 但是,正如@s.bandara所建议的那样,conv2比仅计算平均值快得多。。。 请注意,将conv2与valid一起使用时,矩阵大小将发

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

  • 在矩阵上滑动
    8x8
    窗口
  • 计算矩阵中每个像素的平均值
如果我对matlab中的编码有点陌生,那么在
matlab中如何做到这一点呢


谢谢。

您可以将
conv2
ones(8)
过滤器一起使用,如
I2=conv2(I,1.0/64.0*ones(8),“valid”)。我们除以64.0,因为“过滤器”未标准化。

您也可以使用:

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

nlfilter
运行时间为0.433989秒

conv2
运行时间为0.000803秒


因此,很明显,对于查找平均值的任务,
conv2
要快得多。

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


然后对每个子矩阵使用该功能

我想他想要的是一个滑动窗口,而不是平铺。@natan。谢谢你的友好回复。在矩阵上滑动te窗口是否有效?是的
nlfilter
是一个通用的滑动邻域运算函数,它可以使用比
mean
更高级的函数,因此有点过分了。
conv2
也应该可以工作,我会将
有效的
输入替换为
相同的
,不过…@natan,非常有用,+1。我建议不要使用
相同的
,因为顺序效应。你考虑过边缘附近会发生什么吗?我猜你想做一个类似a的东西,但是使用
平均值
作为内核?谢谢你的回复。这对在矩阵上滑动te窗口有效吗?是的,@natan's和我的解决方案都会在矩阵上滑动平均值过滤器
conv2
会快一点,但两种解决方案都是正确的。@s.bandra,您不想使用
same
而不是
valid
?使用
same
保持原始图像大小。。。这不是因为
有效
在数学上是错误的,只是让下游的生活更轻松,而OP更满意,但是
相同的
在边界上是不正确的,您可以始终使用
大小
。。。但是是的,两者都可以。顺便说一下,
nlfilter
也有同样的问题!
fun = @(x) mean(x(:)); 
ans= nlfilter(img,[8 8],fun);