Matlab“缩小”具有平均值的向量

时间:2011-10-12 14:37:06

标签: matlab matrix

很难解释我在寻找什么,我在Matlab中有一个由n矩阵表示的图像,我试图将其缩小到4x4,就像缩放图像一样(平均值最接近的值)< / p>

所以例如

1 2 3 4 5 6 7 8
1 2 3 4 5 6 7 8
0 2 3 4 9 9 7 8
0 2 3 4 9 9 7 8
1 2 3 4 5 6 7 8
1 2 3 4 5 6 7 8
1 2 3 4 5 6 7 7
1 2 3 4 5 6 7 7

会变成

1.5 3.5 5.5 7.5
1.0 3.5 9.0 7.5
1.5 3.5 5.5 7.5
1.5 3.5 5.5 7.0

3 个答案:

答案 0 :(得分:5)

看起来imresize提供的内容与您的预期略有不同。对于您的输入数据,以下内容将起作用:

A = filter2([1 1; 1 1] / 4, X, 'same')
A = A(1:2:end, 1:2:end);

编辑:实际上,执行以下操作可能会更快:

i = 1:2:size(A,1)-1;
j = 1:2:size(A,2)-1;

B = 0.25 * (A(i,j) + A(i+1,j) + A(i,j+1) + A(i+1,j+1));

答案 1 :(得分:3)

您无法使用imresize()功能的任何原因?它完全符合您的要求..

I =

 1 2 3 4 5 6 7 8
 1 2 3 4 5 6 7 8
 0 2 3 4 5 6 7 8
 0 2 3 4 5 6 7 8
 1 2 3 4 5 6 7 8
 1 2 3 4 5 6 7 8
 1 2 3 4 5 6 7 8
 1 2 3 4 5 6 7 8



I2 = imresize(I,[4 4])

I2 =

1.4688    3.4919    5.5117    7.4922
1.0742    3.5289    5.5117    7.4922
1.4688    3.4919    5.5117    7.4922
1.5137    3.4877    5.5117    7.4922

答案 2 :(得分:0)

如果你没有图像处理工具箱中的imresize.m,你可以看到八度音程如何here(它使用卷积)。