How to create an image puzzle?

15 ビュー (過去 30 日間)
Zurez
Zurez 2013 年 4 月 14 日
編集済み: mohamad k 2018 年 6 月 28 日
I have to take an image and break it into 8 different blocks and then reshuffle it. Then the whole reshuffled image should become a part of 3*3 square blocks with one one block empty so as to create an image puzzle. Please guide me . I am using Matlab 2009b

採用された回答

Knut
Knut 2013 年 4 月 14 日
編集済み: Knut 2013 年 4 月 14 日
Hi.
I was not entirely sure what you were requesting, so I choose to do some interpretation. The snip below will load a standard image, divide it into a 3x3 grid, randomly sort those tiles, set one tile to zero, then assemble a "puzzle" image.
You could probably do this neater using image processing toolbox (blkproc), but I don't have that.
%%load and crop image
imdata = imread('ngc6543a.jpg');
new_dims = size(imdata) - rem(size(imdata), 3);
imdata = imdata(1:new_dims(1),1:new_dims(2), :);
%%Arrange into 3x3 cell
block_dims = new_dims./[3 3 1];
blocks = mat2cell(imdata, block_dims(1)*ones(3,1), block_dims(2)*ones(3,1), block_dims(3));
%%Rearrange randomly
blocks(1:9) = blocks(randperm(9));
%%Set one block to zero
blocks(ceil(9*rand(1))) = {zeros(block_dims, class(imdata))};
%%Return to image
puzzle = cell2mat(blocks);
%%Plot input and output
figure(1)
image(imdata)
figure(2)
image(puzzle)
Edit: Removed an error spotted by Zurez
  9 件のコメント
Harshit
Harshit 2013 年 4 月 15 日
mohamad k
mohamad k 2018 年 6 月 28 日
編集済み: mohamad k 2018 年 6 月 28 日
hi guys, I have a project like this and the answer is appropriate but in addition I need to displace the blocks in the project. could you help me how to displace two blocks by clicking on them? thanks

サインインしてコメントする。

その他の回答 (0 件)

Community Treasure Hunt

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

Start Hunting!

Translated by