輝度の数字の行列をグ​レースケール画像に変​換する方法

18 次查看(过去 30 天)
suzuka iwaki
suzuka iwaki 2024-1-16
[-255,255]の範囲で輝度の行列にしたとき、その行列を画像に変換するコードを教えていただきたいです。また、画像に変換するときに、輝度の行列に負の値が含まれていても画像への変換が可能であるか教えていただきたいです。
  1 个评论
Akira Agata
Akira Agata 2024-1-16
mat2gray 関数を使うと簡単にグレースケール画像に変換することができます。

请先登录,再进行评论。

回答(1 个)

Atsushi Ueno
Atsushi Ueno 2024-1-20
编辑:Atsushi Ueno 2024-1-20
@Akira Agataさんの仰る mat2gray 関数を使ってみました
% 輝度の数字の行列サンプル:[0,255](int8) イメージを2倍して255減算
oldG = int16(im2gray(imread('peppers.png'))) .* 2 - 255;
% @Akira Agataさんの仰る mat2gray 関数に突っ込んだ
newG = mat2gray(oldG,[-255,255]);
class(newG) % 出力は double 型に変換された
ans = 'double'
tiledlayout(3,1)
ax1 = nexttile; plot(oldG(:)); % [-255,255](int16型) はイメージデータではない
ax2 = nexttile; plot(newG(:)); % [0,1](double型) はイメージデータの一つ
ax3 = nexttile; montage({oldG,newG}); % 前者はimshowでは表示できない。後者はできる
  1 个评论
Akira Agata
Akira Agata 2024-1-21
mat2gray 関数の第二入力引数は出力値の範囲です。このため [-255, 255] と入力してしまうとその範囲で出力してしまいます。
この引数のデフォルト設定は [0, 1] ですので、第二入力引数を指定せずに適用するとグレースケール画像になります。もし uint8 型の画像に変換したい場合には、mat2gray 適用後に im2uint8 で変換してください。
% 輝度の数字の行列サンプル:[0, 255](int8) イメージを2倍して255減算
oldG = int16(im2gray(imread('peppers.png'))).*2 - 255;
% mat2gray関数を適用 (デフォルト設定: [0, 1](double) イメージとして出力
newG = mat2gray(oldG);
% 結果を確認
figure
imshow(newG)

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 イメージ 的更多信息

产品


版本

R2023b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!