Using blockproc to simply copy an array

1 view (last 30 days)
Saud Alfalasi
Saud Alfalasi on 21 Nov 2020
Commented: Saud Alfalasi on 22 Nov 2020
Hi can I use blockproc to copy 3 arrays
and them merge them
redChannel = I(:, :, 1);
greenChannel = I(:, :, 2);
blueChannel = I(:, :, 3);
%% output functions
funr = redChannel + greenChannel + blueChannel;
fung = S(:,:,2);
funb = S(:,:,3);
blockSize = [64 64];
@(block_struct) (block_struct.data) * ones(size(block_struct.data));
%% blocks
blockyImageR = blockproc(I, blockSize, funr)
blockyImageR = blockproc(redChannel, blockSize, fung)
The above trials are not working.
output should be blocks of 64x64x3

Answers (1)

Matt J
Matt J on 22 Nov 2020
Using sepblockfun from the file exchange,
blockSize = [64 64];
R=sepblockfun(I,[blockSize,3],'sum');
R=repelem(R,blockSize);
I(:,:,1)=R;
  1 Comment
Saud Alfalasi
Saud Alfalasi on 22 Nov 2020
Hi Matt, thank you I will give this a try.
I would also like to try and pinpoint the minddle value of my block (coordinates 2,2) and do a quoteince differnce betwen it and the surrounding values. - is this possible?
Ideally what I want to do is not only change values in blocks but also manage the sequence of movement from block to block - example follwing some kind of sequence which results in going from block1 > block 7 > block 27
Will the sepblockfun allow this?
I'm trying to manipulate each element in each block with a set of conditons - ('if's, 'else's, 'for's - is this doable?

Sign in to comment.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!