很难解释我在寻找什么,我在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
答案 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(它使用卷积)。