switching pixel with defined colour in a matrix
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
Gemma
am 17 Nov. 2014
Beantwortet: Image Analyst
am 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.
Thank you in advance
0 Kommentare
Akzeptierte Antwort
Evan
am 17 Nov. 2014
Bearbeitet: Evan
am 17 Nov. 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 Kommentare
Weitere Antworten (1)
Image Analyst
am 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.)
0 Kommentare
Siehe auch
Kategorien
Mehr zu Image Processing Toolbox finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!