2016-05-22 6 views
0

Я пытаюсь написать код matlab, который копирует один сегмент изображения в другой с помощью определенных матриц диапазона. Мой код работает по мере необходимости. Единственная проблема, которую я имею, что я хочу, чтобы присвоить 255 значение скопированную часть изображения таким образом, чтобы на белом фоне появляется изображение, а не черный фонКак назначить значения массиву изображений в 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); 

ответ

1

Вместо того, чтобы инициализировать вашу матрицу zeros просто инициализировать его 255 ,

b = 255 + zeros(256, 256); 

В качестве побочного сведению, MATLAB использует 1 на основе индексации, так что вы должны изменить ваши показатели for цикла, чтобы отразить, что:

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

еще лучше, вы можете полностью удалить петлю for.

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

Когда я пытаюсь удалить цикл и вместо жестких закодированных значений я пытаюсь принимать значения в переменные x1, x2, y1, y2 и положить в Я получаю сообщение об ошибке. b (x1: x2, y1: y2) = a; –