2016-05-22 9 views
0

Ich versuche, einen Matlab-Code zu schreiben, der ein Segment eines Bildes in ein anderes mit einer bestimmten Bereichsmatrix kopiert. Mein Code funktioniert wie erforderlich. Das einzige Problem, das ich habe, ist, dass ich 255 Wert zuweisen möge Teil des Bildes zu kopieren, so dass das Bild auf weißen Hintergrund erscheint anstatt schwarzer HintergrundWie weise ich einem Bild-Array in Matlab Werte zu?

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); 

Antwort

1

Statt Ihre Matrix zeros einfach initialisieren initialisieren es 255 .

b = 255 + zeros(256, 256); 

Als Randnotiz verwendet MATLAB 1-basierte Indizierung so sollten Sie Ihre for Schleife Indizes ändern, zu reflektieren:

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

Noch besser wäre es, können Sie vollständig die for Schleife entfernen.

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

Wenn ich für Schleife und anstelle von hart codierten Werten zu entfernen, versuche ich, Werte in Variablen x1, x2, y1, y2 und setzte zu nehmen versuchen in ich Fehler immer bin. b (x1: x2, y1: y2) = a; –