保存した画像が白飛びしたようになる問題
Show older comments
8bitのbmpファイルを読み込み、ガウシアンフィルタを適応し、原画像から処理後の画像を引き算してその後その画像を保存しました。
しかし、保存した画像がMatlab上で表示されている画像とコントラスとが全く違うものになりました。この問題の原因は何なのでしょうか?写真左が保存した画像で、写真右がMatlab上で表示されてる画像です。
ご教授お願いいたします。

画像の読み込み
img=imread('C:/SNR/slow40s_same.bmp',"bmp");
img2=imread('c:/SNR/slow40s_same2.bmp','bmp');
imshowpair(img,img2,'montage')
ガウシアンフィルタ適応
gusimg=imgaussfilt(img,4.5);
gusimg2=imgaussfilt(img2,4.5);
imshowpair(gusimg,gusimg2,'montage')
imwrite(gusimg,'C:/SNR/gus_slow40s_same.bmp','bmp');
imwrite(gusimg2,'C:/SNR/gus_slow40s_same2.bmp','bmp')
ハイパスフィルタ=イメージからガウス処理(lowpass)したイメージを引く
b=imsubtract(img,gusimg);
b2=imsubtract(img2,gusimg2);
hpassimg=histeq(b);
hpassimg2=histeq(b2);
imshowpair(img,hpassimg,'montage')
title('figure1')
imshowpair(img2,hpassimg2,'montage')
title('figure2')
imwrite(hpassimg,gray,'C:/SNR/hpass_slow40s_same.bmp','bmp');
imwrite(hpassimg2,gray,'C:/SNR/hpass_slow40s_same2.bmp','bmp');
8 Comments
Hernia Baby
on 1 Aug 2021
もしよろしければ、画像データもいただけますでしょうか?
Atsushi Ueno
on 2 Aug 2021
>保存した画像がMatlab上で表示されている画像とコントラストが全く違うものになりました
保存した画像(再度読みだしたagain)とMatlab上で表示されている画像(hpassimg)のコントラストは同じでした。これは勘違いという事でしょうか?
ヒストグラムも表示してみました。histeqの結果が均等分布になっていませんね。
img=imread('slow40s_same.bmp',"bmp");
gusimg=imgaussfilt(img,4.5);
b=imsubtract(img,gusimg);
imhist(b);
hpassimg=histeq(b);
imhist(hpassimg);
imwrite(hpassimg,gray,'hpass_slow40s_same.bmp','bmp');
again=imread('hpass_slow40s_same.bmp',"bmp");
multi = cat(3,img,gusimg,b,hpassimg,again);
montage(multi);
朋貴 熊田
on 3 Aug 2021
Atsushi Ueno
on 3 Aug 2021
私が質問の意図を正確に把握できていないかもしれません。誤解が生じない様に変数名で話しましょう。
- img:原画像
- gusimg:ガウシアンフィルタを適応した画像
- b:ハイパスフィルタ=イメージimgからガウス処理(lowpass)したイメージgusimgを引いた画像
- hpassimg:bのヒストグラムを均等化してコントラスト強調した画像
- again:hpassimgを'hpass_slow40s_same.bmp'として保存後、読み込んだ画像
「保存した画像」は明らかにagainと同じと断定できます。
私の認識では「Matlab上で表示されている画像(hpassimg)」と「保存した画像(again)」は同じです。
上記コメントにヒストグラムを表示したように、白飛びしたようになるのはhpassimgから、つまりhisteq(ヒストグラムの均等化によるコントラスト強調)からであって、imwrite(画像の保存)が白飛びしたようになる原因ではないと認識しています。
朋貴 熊田
on 3 Aug 2021
Atsushi Ueno
on 3 Aug 2021
自分はhpassimgをMatlab上で表示してある画像と、hpassimgをimwrite()で保存した画像'hpass_slow40s_same.bmp'を(例えばWindowsフォトで)表示して見比べる事をしていないので話が食い違っているのかも知れません。'hpass_slow40s_same.bmp'を再度againに読み込んでMatlab上で表示した画像は同じに見えますがそれでは意味がないのでしょうか?
朋貴 熊田
on 3 Aug 2021
Accepted Answer
More Answers (0)
Categories
Find more on イメージ in Help Center and File Exchange
Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!


