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

조회 수: 19 (최근 30일)
Abigail Thomas
Abigail Thomas 2019년 10월 9일
답변: Matt J 2019년 10월 10일
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

채택된 답변

Matt J
Matt J 2019년 10월 10일
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

추가 답변 (1개)

Walter Roberson
Walter Roberson 2019년 10월 9일
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
Abigail Thomas
Abigail Thomas 2019년 10월 9일
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.

댓글을 달려면 로그인하십시오.

Community Treasure Hunt

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

Start Hunting!

Translated by