6

画像を取得して特定のスムージングタスクを実行できる関数を作成しています。関数の最初に、を使用して画像をグレースケール画像に変換しますpic = rgb2gray(pic);

関数が任意の画像を取得できるようにしたいと思っています(すでにグレースケールであっても)。Matlabでは、グレースケールイメージを渡すと、変換できないため、現在エラーが発生します(これは明らかです)。

組み込み関数または画像をテストしてそのカラーフォーマットを決定する簡単な方法はありますか?

私はグーグルでisRGBとisGrayscale関数について何かを読みましたが、それらはMatlabの新しいバージョンから削除されました...

このような機能が組み込まれていれば、かっこいいと思います。

     if (pic == RGB)
         do
          .
          .
          .
     elseif (pic == GrayScale)
         do
          .
          .
          .
     else 
         do
          .
          .
          .

pixel x,yそうでない場合は、を取り、その値をテストする関数を作成できますか?

if (p(x,y) == ....か何か?よくわかりません...考えますか?

4

3 に答える 3

12

カラー画像には3つのチャネル(R、G、B)があるため、次のようになります。

size(pic, 3) = 3

グレースケールの場合:

size(pic, 3) = 1
于 2013-02-13T19:41:23.317 に答える
6

@Miloが提案したものと似ていますが、機能が異なります。使用ndims

ndims(pic)

画像の次元数を返しますpic。配列の次元数は常に2以上であり、RGB画像では。になります>2。末尾のシングルトンディメンションは無視されます(シングルトンディメンションは、その対象となる任意のディメンションsize(A,dim) = 1です)。

于 2013-02-13T23:33:53.733 に答える
1

f = imfinfo('yourimage.someextension');

f.ColorType

これにより、画像のColorTypeが返されます。これは、プログラムで確認できます。

于 2015-01-05T12:17:25.213 に答える