访问单个图像像素,matlab

时间:2017-04-25 12:28:57

标签: matlab image-processing

我想改变每一个像素,所以它是“255像素”。 我想在for-loop(!)中做到这一点。

我的代码到现在为止:

for n=1:1:512 %it's a 512x512 image
     picture = 255 - picture;
end

但我不知道如何在图像中按单个像素更改单个像素。

那么我需要在代码中更改“图片”?

抱歉英语不好。我也是新手。

感谢您的帮助

2 个答案:

答案 0 :(得分:4)

如果你坚持使用for循环,计算一般数组的每个元素的数字的补码:

for n=1:numel(picture)
  picture(n) = 255 - picture(n);
end

或者,如果你需要一个二维数组的嵌套循环:

for n=1:size(picture,1)
  for m=1:size(picture,2)
    picture(n,m) = 255 - picture(n,m);
  end
end

然而,这实际上是滥用Matlab。人们想要使用Matlab的一个重要原因是完全以避免像这样的for循环。相反,你应该简单地说:

picture = 255 - picture

答案 1 :(得分:2)

如果你想改变整个画面,我建议你不要使用任何for循环。 只是:

picture = 255 - picture;

如果不必在循环中工作,Matlab会更快;

如果您需要在for循环中修改它,图片是典型的RGB格式,图片大小为512x512x3

for a=1:512
    for b=1:512
       for c=1:3
           picture(a,b,c) = 255 - picture(a,b,c); 
       end
    end
end