2015-08-26 2 views
0

Bien que je réussisse à brouiller les images (en utilisant JigSaw ou RANDBLOCK), je n'arrive pas à comprendre comment brouiller des éléments de matrice spécifiques (blocs) dans chaque image. Je suis incapable de joindre des images, donc précisément ce dont j'ai besoin est montré sous la forme d'image here (il suffit de frapper «brouiller»). Comme vous le verrez, la première image est divisée en une matrice 8 x 7, et certains éléments sont brouillées pour produire la deuxième image, à savoirComment brouiller des éléments spécifiques dans une image?

[1,1;1,2;1,3;1,4;1,5;2,1;2,2;2,3;2,4;2,5;3,1;3,2;3,3;3,4;3,5;4,2;4,3;4,4;5,2;5,3;5,4;6,2;6,3;6,4] 

Je serais très reconnaissante pour tout conseil, comme je suis un novice à MATLAB, et besoin de compléter les stimuli dès que possible!

Un grand merci à l'avance,

Maria

+0

Vous devriez démontrer une base recherche sur ce sujet. Regardez comment indexer les blocs dans une matrice et vous devriez être prêt à partir. – Marius

Répondre

4

Je préférerais Lena, donc on y va -

%// Indices of specific blocks to be randomized 
sp_idx = [2,2;2,3;2,4;2,5;2,6;3,2;3,3;3,4;3,5;3,6;4,2;4,3;4,4;4,5;4,6; 
      5,3;5,4;5,5;6,3;6,4;6,5;7,3;7,4;7,5]; 

%// Invite lena to MATLAB workspace and *cut off her right arm* 
im = imread('http://www.ece.rice.edu/~wakin/images/lenaTest3.jpg'); 
im = im(:,1:448); 

%// Define blocksize (rows x columns) 
n = 64; 
m = 64; 

%// New random indices corresponding to sp_idx 
new_rand_idx = sp_idx(randperm(size(sp_idx,1)),:); 

%// Split image into blocks 
split_blks = mat2cell(im, ones(1,8)*n, ones(1,7)*m); 

%// Get old and new linear indices and thus randomize specific blocks 
old_lind = sub2ind(size(split_blks),sp_idx(:,1),sp_idx(:,2)); 
new_lind = sub2ind(size(split_blks),new_rand_idx(:,1),new_rand_idx(:,2)); 
split_blks(new_lind) = split_blks(old_lind); 
new_im = cell2mat(split_blks); 

%// Show images 
figure, 
subplot(121),imshow(im),title('Before') 
subplot(122),imshow(new_im),title('After') 

Sortie -

enter image description here

+1

Beau travail ... :-) –

+1

Qu'avez-vous fait à Lena ?! –

+2

@LuisMendo Utilisé ma baguette magique;) Bien que couper le bras droit était la décision la plus difficile que j'ai prise aujourd'hui :) – Divakar