使用数组将图像转换为灰度

时间:2013-02-16 18:27:01

标签: arrays matlab nested nested-loops grayscale

这是我的代码。我不知道为什么这不起作用。它表示指数超过矩阵维度。然后它说灰度1中的错误(第7行)avg = mean(pic(col,row,:)); 我想通过输入图像(灰度1(图像名称))

来使用该功能

此处还有我的提示编写一个名为“grayscale1.m”的函数,该函数接收图像文件的文件名,并返回带有图像灰度版本的三维数组。它适用于任何大小的图像。您的解决方案应使用嵌套循环来设置每个像素的值。

function grayscale1(picture)
pic = imread(picture);
[r c] = size(pic); 
    for row = 1:r 
         for col = 1:c 
             avg=mean(pic(row, col, :));
               pic(row,col,:)=avg;
          end
    end   
 end

1 个答案:

答案 0 :(得分:1)

如果pic是一个三维数组,那么:

[r c] = size(pic);

将为您提供r中第一维的尺寸和c中第二维和第三维尺寸的乘法。这可能不是你想要的。所以你应该这样做:

[r c ignore] = size(pic);  

r = size(pic, 1);
c = size(pic, 2);