switching pixel with defined colour in a matrix
1 visualización (últimos 30 días)
Mostrar comentarios más antiguos
Gemma
el 17 de Nov. de 2014
Respondida: Image Analyst
el 18 de Nov. de 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.
Thank you in advance
0 comentarios
Respuesta aceptada
Evan
el 17 de Nov. de 2014
Editada: Evan
el 17 de Nov. de 2014
If I is your image:
I = imread('peppers.png');
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 comentarios
Más respuestas (1)
Image Analyst
el 18 de Nov. de 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.)
0 comentarios
Ver también
Categorías
Más información sobre Image Processing Toolbox en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!