i want a randomly scramble of a divided image into 4 blocks
1 次查看(过去 30 天)
显示 更早的评论
please if i have image 256X256 and i divided it into 4 blocks, how can i scramble the blocks randomly or change the orders of the 4 blocks ,then i stitch them together again after this permutation or this changing inorder to change the parameters of the image and got a cihper one??
should i convert it to vector and then permuted or i can permuted it in blocks case?? please i want the code
0 个评论
回答(2 个)
Jan
2021-4-23
编辑:Jan
2021-4-23
img = uint8(((0:255) + (0:255).') / 2); % Test image
s = size(img);
% Split image to blocks:
img4 = reshape(img, s(1) / 2, 2, s(2) / 2, 2);
img4 = permute(img4, [1, 3, 2, 4]);
img4 = reshape(img4, s(1)/2, s(2)/2, 4);
% Mix:
img4 = img4(:, :, randperm(4));
% Get matrix again:
img4 = reshape(img4, s(1)/2, s(2)/2, 2, 2);
img4 = permute(img4, [1, 3, 2, 4]);
result = reshape(img4, s);
imagesc(result)
Or:
img = uint8(((0:255) + (0:255).') / 2); % Test image
s = size(img);
C = mat2cell(img, [s(1)/2, s(1)/2], [s(2)/2, s(2)/2]);
C(:) = C(randperm(4));
result = cell2mat(C);
imagesc(result)
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Convert Image Type 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!