如何访问每个图像像素,matlab

时间:2017-04-26 11:29:21

标签: matlab image-processing

我想将图像的每个像素随机更改为0

我的代码到目前为止

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

for n=1:1:512
    if (randx(n)==0)
        A(n)=0;
    end  
end
直到现在,第一列才被改变。 不知道如何改变其他的。

感谢您的帮助

2 个答案:

答案 0 :(得分:2)

您需要使用两个索引访问您的图像:行和列。仅使用A(n)在1和512之间的n,您只能访问第一列的元素(请注意,您的图像具有512x512 = 262144个元素,并且您只访问前512个,即第一个列)。

尝试使用

for n=1:1:262144

代替。这将有效!

答案 1 :(得分:1)

您可以使用任何随机函数生成与图像大小相同的数组。例如,我使用randsample

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