MATLAB Answers

0

Matlab code to split an image into a square grid of square blocks

Asked by Abigail Thomas on 9 Oct 2019
Latest activity Answered by Matt J
on 10 Oct 2019
Hello everyone,
I am having a hard time writing a matlab code that splits an image into a square grid of square blocks of side equal to where then shuffle the grid using randperm. So it is based on user input of how much the image should be cut down to, say the user inputs SplitImage(Image, r). All help is appreciated.
Capture.PNG

  0 Comments

Sign in to comment.

2 Answers

Answer by Matt J
on 10 Oct 2019
 Accepted Answer

This uses mat2tiles (Download)
A=mat2tiles( imread('cameraman.tif'), [32,32]);
[m,n]=size(A);
B=cell2mat(A(randperm(m), randperm(n)));
imshow(B)
untitled.png

  0 Comments

Sign in to comment.


Answer by Walter Roberson
on 9 Oct 2019

See mat2cell() to do the splitting into cell arrays. Then randomize the cell array order, and then cell2mat() to restore.
You will have problems if your block size is not an exact divisor of the array size unless you take special care that all rows and columns in the randomized blocks add up to consistent sizes.

  1 Comment

Thank you for you clear answer sir. Could you please supply with a code so I could compare mine with it? I am just starting out with Matlab.

Sign in to comment.