0

这是我的代码。我不确定为什么这不起作用。它说索引超过矩阵尺寸。然后它说 Grayscale1 中的错误(第 7 行) avg=mean(pic(col, row, :)); 我想通过输入 image(grayscale1(imagename)) 来使用该功能

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

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
4

1 回答 1

1

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

[r c] = size(pic);

将为您提供 1 维的大小r以及2 维和 3 维大小的乘积c。这可能不是你想要的。所以你应该这样做:

[r c ignore] = size(pic);  

或者

r = size(pic, 1);
c = size(pic, 2);
于 2013-02-16T18:43:07.933 回答