Asked by Sharen H
on 20 Jul 2013

i have to divide my image into n number of small 2X2 matrix and find the mean value and replace that 2x2 matrix with the mean value . example

x=

[2 3 4 5

2 3 4 5

1 2 3 4

1 2 3 4]

i have to find the mean of

[2 3

2 3] similarly for others and replace that concerned matrix with that mean value the output should get is

[2 2 4 4

2 2 4 4

1 1 3 3

1 1 3 3]

*No products are associated with this question.*

Answer by Wayne King
on 20 Jul 2013

Edited by Wayne King
on 20 Jul 2013

Do you have the Image Processing Toolbox? You can use blockproc(), but I'm not sure how you are getting your expected output above. You say you need the mean of 2x2 chunks submatrices like [2 3; 2 3]. Do you mean that you want the column means of those, which are 2 and 3, or you want the mean of all 4 elements which is 2.5? How are you taking the mean and ending up with a matrix the same size as the original?

I'll show you how to use blockproc() to return the column means for each 2x2 submatrix in x. That means for each 2x2 submatrix, you'll get back a 1x2 with the two column means. Accordingly, a 4x4 matrix reduces to a 2x4.

fun = @(block_struct) mean(block_struct.data); Y = blockproc(x,[2 2],fun);

If you want the overall mean of each 2x2 submatrix, giving you a 2x2 matrix at the end:

fun = @(block_struct) mean(block_struct.data(:)); Y = blockproc(x,[2 2],fun);

Show 2 older comments

Wayne King
on 20 Jul 2013

Answer by Andrei Bobrov
on 20 Jul 2013

Edited by Andrei Bobrov
on 23 Jul 2013

for youe case without blockproc (without Image Processing Toolbox):

kron(cellfun(@mean2,mat2cell(x,2*[1 1],2*[1 1])),[1 1; 1 1])

or use Peter J. Acklam' idea. Thanks to the cyclist for this link.

m = [2 2]; % size your small block s = size(x); n = s./m;

a = permute(reshape(x,m(1),n(1),n(2),[]),[1 3 2 4]); out = kron(reshape(mean(reshape(a,[],prod(m))),n(1),[]),ones(n))

use function `blkproc`

sizeblock = [2 2]; Y = blkproc(x,sizeblock,@mean2); out = kron(Y,ones(size(x)./sizeblock));

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi test

Learn moreOpportunities for recent engineering grads.

Apply Today
## 0 Comments