2016-05-22 10 views
0

私は、画像の1つのセグメントを特定の範囲マトリックスを持つ別のセグメントにコピーするmatlabコードを書こうとしています。 私のコードは必要に応じて動作します。画像は、単に255に初期化しzerosにあなたの行列を初期化する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

代わりに黒の背景ではなく、白い背景の上に表示されるように、私が午前唯一の問題は、私は、画像の一部をコピーした255値を割り当てることです。

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

いっそのこと、あなたが完全にforループを削除することができます:あなたはそれを反映するために、あなたのforループインデックスを変更する必要がありますので、サイドノートとして

b = 255 + zeros(256, 256); 

は、MATLABは1ベースのインデックスを使用しています。

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

私はループのために、私は変数X1、X2、Y1、Y2と私はエラーを取得していますに入れるに値を取るしようとしていますハードコーディングされた値の代わりに削除しようとしています。 b(x1:x2、y1:y2)= a; –

関連する問題