说我有一个形象的一个矩阵,我要做到以下几点:Matlab的 - 8x8的窗口,发现平均
- 幻灯片的
8x8
窗口在矩阵 - 计算平均为每个像素矩阵
如何在matlab
中做到这一点,前提是我对matlab中的编码有所了解。
谢谢。
说我有一个形象的一个矩阵,我要做到以下几点:Matlab的 - 8x8的窗口,发现平均
8x8
窗口在矩阵如何在matlab
中做到这一点,前提是我对matlab中的编码有所了解。
谢谢。
您可以使用conv2
和ones(8)
过滤器,如I2 = conv2(I, 1.0/64.0 * ones(8), 'valid');
。由于“过滤器”没有标准化,我们除以64.0。
谢谢你的回复。这将工作在矩阵上滑动窗口吗? – Simplicity
是的,@ natan和我的解决方案都会在矩阵上滑动均值滤波器。 'conv2'会稍快一点,但两种解决方案都是正确的。 –
@ s.bandra,你不会使用'same'而不是'valid'吗?使用'same'可以保持原始图像的大小...这不是'有效'在数学上是错误的,只是让生活更容易下游 – bla
您还可以使用nlfilter
:
fun = @(x) mean(x(:));
ans= nlfilter(img,[8 8],fun);
但作为@ s.bandara建议的,conv2
是多更快只是计算平均... 注意矩阵大小将使用时改变conv2
与valid
。
nlfilter
经过时间0.433989秒。
conv2
已用时间为0.000803秒。
所以很明显,对于寻找平均值的任务,conv2
要快得多。
尝试提取图像的第一子矩阵也喜欢在这里:MATLAB Submatrix
然后用mean(A)功能对每个子矩阵
你有没有考虑过你想要的边缘附近发生了什么? – Dan
我猜你想做一个像[中值过滤器](http://www.mathworks.nl/help/images/ref/medfilt2.html),但是然后使用'mean'作为内核? –