どのように変換するにはグレースケールマトリクスへのRGBマトリクスMATLAB?

StackOverflow https://stackoverflow.com/questions/2619668

質問

rgbImage = grayImage / max(max(grayImage));

または

rgbImage = grayImage / 255;

るので、理由がありますか?

役に立ちましたか?

解決

に変換するには グレースケール画像RGB画像, が問題でアドレス:

  • グレースケール画像 2-D、 RGB画像 3-Dですから、複製、グレースケールイメージデータを三回コンピューを書いてます。
  • 画像データを記憶させることができ多くの異なる データ種類, ですから、変換します。として格納され double データ型になり、画像のピクセル値は浮動小数点数の範囲が0-1.として格納され uint8 データ型になり、画像のピクセル値は整数の範囲で0-255です。チェックできるデータの種類の画像マトリクスの機能 class.

ここには3つの代表的な条件がありましたらご記入下さいかとの出会い:

  • に変換するには uint8 または double グレースケール画像をRGBイメージ 同じデータ型, 利用できる機能 repmat または cat:

    rgbImage = repmat(grayImage,[1 1 3]);
    rgbImage = cat(3,grayImage,grayImage,grayImage);
    
  • に変換するには uint8 グレースケールイメージを double RGB画像き換 double 第一に、その規模により255の

    rgbImage = repmat(double(grayImage)./255,[1 1 3]);
    
  • に変換するには double グレースケールイメージを uint8 RGBイメージ、規模により255最初に変換す uint8:

    rgbImage = repmat(uint8(255.*grayImage),[1 1 3]);
    

他のヒント

は定義することにより、RGB画像を使用して、画像を表現するために三次元マトリックスを必要がある意味、3つのチャネルを有します。だから、正しい答えがあります:

rgbImage = repmat(255*grayImage/max(grayImage(:)),[1 1 3]);

際に正規化grayImage注意してください。 grayImageuint8であるなら、あなたは255*grayImage/max(grayImage(:))操作でいくつかの精度を失うことになります。

また、正規grayImageはデータに依存します。あなたの質問では、次の2個のメソッドを使用します:

rgbImage = grayImage / max(max(grayImage));
画像中の最大値が1

ようにグレースケール画像を正規化

rgbImage = grayImage / 255;
のみ意味をなす

もしgrayImage範囲内0-255の位置の値

だから、本当にあなたが何をしたいかに依存します。あなたはRGBの画像をしたい場合しかし、あなたは3チャネル行列に自分のシングルチャネル行列を変換する必要があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top