0

これが私のコードです。なぜこれが機能しないのかわかりません。インデックスがマトリックスの次元を超えていると言います。そして、それはグレースケール1のエラー(7行目) avg=mean(pic(col, row, :)); と言います。image(grayscale1(画像名))を入力して機能を使いたい

これも私のプロンプトです 画像ファイルのファイル名を受け取り、画像のグレースケール バージョンを含む 3 次元配列を返す「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
4

1 に答える 1

1

picが 3 次元配列の場合、次のようになります。

[r c] = size(pic);

では 1 次元のサイズが、 では 2 次元と 3 次元のサイズの乗算がr得られますc。それはおそらくあなたが望むものではありません。したがって、次のことを行う必要があります。

[r c ignore] = size(pic);  

また

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