【问题标题】:converting image to grayscale using arrays使用数组将图像转换为灰度
【发布时间】:2013-02-16 18:27:00
【问题描述】:

这是我的代码。我不确定为什么这不起作用。它说索引超过矩阵尺寸。然后它说 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

【问题讨论】:

    标签: arrays matlab nested nested-loops grayscale


    【解决方案1】:

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

    [r c] = size(pic);
    

    将在r 中为您提供第一个维度的大小,并在c 中为您提供第二个维度和第三个维度的乘法。这可能不是你想要的。所以你应该这样做:

    [r c ignore] = size(pic);  
    

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

    【讨论】:

      猜你喜欢
      • 2010-11-20
      • 2021-06-06
      • 2018-12-19
      • 2021-04-02
      • 2012-11-09
      相关资源
      最近更新 更多