这是我的代码。我不知道为什么这不起作用。它表示指数超过矩阵维度。然后它说灰度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
答案 0 :(得分:1)
如果pic
是一个三维数组,那么:
[r c] = size(pic);
将为您提供r
中第一维的尺寸和c
中第二维和第三维尺寸的乘法。这可能不是你想要的。所以你应该这样做:
[r c ignore] = size(pic);
或
r = size(pic, 1);
c = size(pic, 2);