0

特定の範囲行列を使用して、画像の 1 つのセグメントを別のセグメントにコピーする matlab コードを作成しようとしています。私のコードは必要に応じて機能します。私が抱えている唯一の問題は、画像のコピーされた部分に255の値を割り当てて、画像が黒い背景ではなく白い背景に表示されるようにすることです

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

1 に答える 1

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;
于 2016-05-22T17:35:17.010 に答える