Asked by angel
on 14 Feb 2013

after calculating the mean i;ve to store it in array corresponding to their block number

plz tell me how to do?

Mean=[];

for row = 1 : blockSizeR : rows

for col = 1 : blockSizeC : columns

row1 = row;

row2 = row1 + blockSizeR - 1;

row2 = min(rows, row2);

col1 = col;

col2 = col1 + blockSizeC - 1;

col2 = min(columns, col2);

oneBlock = grayImage(row1:row2, col1:col2);

m=mean(mean(oneBlock));

M=m;

Mean=[Mean;M];

disp(Mean);

end

end

the above code shows only the mean value... but i want that it also shows the block number corresponding to the mean value...

plz rectify or modify the above code in order to do so.

Answer by Image Analyst
on 14 Feb 2013

Accepted Answer

Not sure how you want to define block number but how about:

blockNumber = 1;

for row = 1 : blockSizeR : rows

for col = 1 : blockSizeC : columns

row1 = row;

row2 = row1 + blockSizeR - 1;

row2 = min(rows, row2);

col1 = col;

col2 = col1 + blockSizeC - 1;

col2 = min(columns, col2);

oneBlock = grayImage(row1:row2, col1:col2);

Mean(blockNumber) = mean2(oneBlock);

fprintf('The mean for block #%d = $f', ...

blockNumber, Mean(blockNumber));

blockNumber = blockNumber + 1;

end

end

angel
on 15 Feb 2013

can u code it sir for me plz.... u mean

S=sort(Mean(blockNumber);

fprintf('\nblock #%d = %f',blockNumber,S);

if not, correct it plz

Walter Roberson
on 15 Feb 2013

[S, blockNumber] = sort(Mean);

fprintf('\nBlock #%d = %f', [blockNumber(:), S(:)].' );

angel
on 15 Feb 2013

thank u so much sir :)

ur help means a lot to me.

Sign in to comment.

Answer by Abbas Cheddad
on 14 Feb 2013

Hi there,

You could do the following:

%%%%%%%%%%%%%

fun = @(block_struct) mean2(block_struct.data);

I2 = blockproc(A,[8 8],fun);

Block_Mean(:,1)=reshape(I2,[1 size(I2,1)*size(I2,2)]);

Block_Mean(:,2)=1:length(Block_Mean);

%%%%%%%%%%%%%%

Where "A" denotes your image and [8 8] is the size of the block of your choice. This will result in "Block_Mean" which holds the mean intensity and the corresponding block number.

angel
on 14 Feb 2013

Abbas Cheddad
on 14 Feb 2013

Block_proc returns a single image with the same size as "A" if you use the documented code as in:

fun = @(block_struct) ...

mean2(block_struct.data) * ones(size(block_struct.data));

But in the code I have given you, each pixel in "I2" corresponds to the mean of a single block.

Anyhow, since what you have in hand works for you then happy days!

Sign in to comment.

Answer by Jan
on 14 Feb 2013

R = BlockMean(img, blockSizeR, blockSizeC);

angel
on 14 Feb 2013

this shows error:

Undefined function 'BlockMean' for input arguments of type 'uint8'. input image is 256 x 256

sir plz help me in sorting the mean values which i've calculated...

plz go through the above code that i've mentioned and tell me..

Walter Roberson
on 15 Feb 2013

You need to download and install that code in order to have a BlockMean routine.

angel
on 15 Feb 2013

ok sir :)

regards Angel

Sign in to comment.

Opportunities for recent engineering grads.

Apply Today
## 0 Comments

Sign in to comment.