どのように変換するにはグレースケールマトリクスへのRGBマトリクスMATLAB?
質問
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
注意してください。 grayImage
がuint8
であるなら、あなたは255*grayImage/max(grayImage(:))
操作でいくつかの精度を失うことになります。
また、正規grayImage
はデータに依存します。あなたの質問では、次の2個のメソッドを使用します:
rgbImage = grayImage / max(max(grayImage));
画像中の最大値が1
とようにグレースケール画像を正規化
rgbImage = grayImage / 255;
のみ意味をなすもしgrayImage
範囲内0-255
の位置の値
だから、本当にあなたが何をしたいかに依存します。あなたはRGBの画像をしたい場合しかし、あなたは3チャネル行列に自分のシングルチャネル行列を変換する必要があります。
所属していません StackOverflow