2017-04-26 8 views
-2

は私がこれまでに、MATLAB

randx = randsrc(512,512,[1 0]); 

for n=1:1:512 
    if (randx(n)==0) 
     A(n)=0; 
    end 
end 

今までちょうど最初の列は変更されます0

にランダムに私のコードを画像のすべてのピクセルを変更したいです。 他のものを変更する方法もわかりません。ヘルプ

+0

numpyインデックスとスライスを見てください。続行する前に理解することが非常に重要です。それでは、あなた自身も問題を解決することができます –

答えて

2

。 1と512の間のnを持つA(n)のみを使用すると、最初の列の要素にのみアクセスします(画像に512x512 = 262144の要素があり、最初の512、つまり最初の列)。

ではなく

for n=1:1:262144 

を使用してみてください。これは動作します!

+0

すごい、ありがとう!! – noclue123

1

ため

おかげであなたは、配列あなたの画像の同じサイズを生成するために、任意のランダム関数を使用することができます。ここで例えば私はrandsampleを使用:行と列:次の2つのインデックスを使用して画像にアクセスする必要がある

I = imread('cameraman.tif'); 
p = [0.2 0.8]; % probabilities for 0 and 1 
% randomly set pixels to 0 
r = reshape(randsample([0 1],numel(I),true,p),size(I)); 
I(r == 0) = 0; 
imshow(I); 

enter image description here