2016-05-22 2 views
0

J'essaie d'écrire un code matlab qui copie un segment d'une image dans une autre avec une matrice de plage particulière. Mon code fonctionne selon les besoins. Le seul problème que j'ai est que je veux attribuer 255 valeur à copier une partie de l'image afin que l'image apparaît sur fond blanc plutôt que fond noirComment affecter des valeurs à un tableau d'images dans Matlab?

a=imread('/Applications/MATLAB_R2015a.app/toolbox/images/imdata/cameraman.tif'); 
    a=double(a); 
    b=zeros(256,256); 
    for i =0:1:255 
     for j=0:1:255 
     if((i>=97 && i<=150)&&(j>=34 && j<=81)) 
     b(j,i)=a(j,i); 
    % else 
    %   b(j,i)=255; 
     end 
     end 
    end 
    imshow(a,[]); 
    figure,imshow(b,[]); 
    imageSegmenter(b); 

Répondre

1

Au lieu d'initialiser votre matrice pour zeros initialiser simplement à 255 .

b = 255 + zeros(256, 256); 

Comme un côté note, Matlab utilise l'indexation de base 1 afin que vous devez changer vos indices de boucle for pour refléter le fait que:

for i = 1:size(b,2) 
    for j = 1:size(b, 1) 
     % Do stuff 
    end 
end 

Mieux encore, vous pouvez supprimer complètement la boucle for.

b = 255 + zeros(256, 256); 
b(34:81, 97:150) = a; 
+0

Quand je suis en train de retirer boucle et en place des valeurs codées en dur, je suis en train de prendre des valeurs dans des variables x1, x2, y1, y2 et mis en erreur que je reçois. b (x1: x2, y1: y2) = a; –