# switching pixel with defined colour in a matrix

3 views (last 30 days)
Gemma on 17 Nov 2014
Answered: Image Analyst on 18 Nov 2014
Hello everybody,
I would like to shuffle single pixels (or even better: groups of pixels) of an image. Important is that every pixel keeps its colour information, so that in the end, the values of pixels of one certain colour is constant.
I know how to do that with a normal matrix. But when it is about colour-values, I have 3 linked matrices (in the RGB-colour-range). How is it possible to combine the 3 matrices with the same grade of permutation?
Or is it possible to select the n-th permutation of a matrix and reshaping it? is that n-th permutation of matrix a in the same way permuted like the n-th permutation of matrix b?
I hope I made myself clear and that somebody could help.

Evan on 17 Nov 2014
Edited: Evan on 17 Nov 2014
R = I(:,:,1);
G = I(:,:,2);
B = I(:,:,3);
Idx = reshape(randperm(numel(R)),size(R));
R = R(Idx); G = G(Idx); B = B(Idx);
I_new = cat(3,R,G,B);
% Visualize the images.
subplot(1,2,1); imagesc(I); title('Before'); axis image
subplot(1,2,2); imagesc(I_new); title('After'); axis image
% Test to see that pixels have only been re-ordered, not changed.
sum(I(:)) == sum(I_new(:))
Also, it looks like there are some tools on the file exchange that allow you to "scramble" images in more sophisticated ways:
##### 2 CommentsShowHide 1 older comment
Evan on 17 Nov 2014
No problem. Glad it's working for you!

Image Analyst on 18 Nov 2014
For whatever it's worth (now that you've accepted a working example), I attach my demo (below the image it creates). (I was traveling the last two days and I didn't see this until now.)

### Categories

Find more on Region and Image Properties in Help Center and File Exchange

### Community Treasure Hunt

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

Start Hunting!

Translated by