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

[-255,255]の範囲で輝度の行列にしたとき、その行列を画像に変換するコードを教えていただきたいです。また、画像に変換するときに、輝度の行列に負の値が含まれていても画像への変換が可能であるか教えていただきたいです。

댓글 수: 1

Akira Agata
Akira Agata 2024년 1월 16일
mat2gray 関数を使うと簡単にグレースケール画像に変換することができます。

댓글을 달려면 로그인하십시오.

답변 (1개)

Atsushi Ueno
Atsushi Ueno 2024년 1월 20일
편집: Atsushi Ueno 2024년 1월 20일

0 개 추천

@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)

댓글을 달려면 로그인하십시오.

카테고리

도움말 센터File Exchange에서 Convert Image Type에 대해 자세히 알아보기

제품

릴리스

R2023b

질문:

2024년 1월 16일

댓글:

2024년 1월 21일

Community Treasure Hunt

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

Start Hunting!