画像の白飛びを消して画像のパラメータなどを計算したい
45 views (last 30 days)
Show older comments
画像の平均輝度値や面積などのパラメータを求めたいです.
特に白飛びした画像(撮影による光反射する現象)から計算する場合,
白飛びした部分以外の平均輝度値や面積を求めることはできるのでしょうか?
利用できる関数などがありましたら教えていただきたいです.
お願いいたします.
2 Comments
Hiroyuki Hishida
on 4 Jun 2021
前川さま、
おそらくそれにそのまま使える関数はないので、処理を自作ください。
手順としては、白飛びしているピクセルとそうではないピクセルを認識し、白飛びしていないピクセルについてのみ、輝度値の平均など計算すると良いと思います。
また、白飛びの定義(例えばrgbの値がどうであれば白飛びとするかや、白飛びと白色模様の違いをどうするか、など)はご自身で設定される必要があると思います。
菱田
Accepted Answer
Atsushi Ueno
on 6 Jun 2021
Edited: Atsushi Ueno
on 21 Jun 2021
実際に動かしてみます。繰り返しを避ける為グレースケール画像を処理しています。添付画像はリンク先のwikipediaより拝借しました。白飛び・黒つぶれ - Wikipedia
mygy = rgb2gray(imread('Blown-out_highlights.jpg')); % 画像読込とグレースケール変換
imshow(mygy); % 画像表示
avrg = mean2(mygy) % 画像の平均輝度値(黒:0~白:255)
area = numel(mygy) % 画像の面積(全画素数)
white = sum(sum(mygy>250)) % 所定輝度以上の面積(画素数)(ここでは輝度251~255を"白飛び"とした)
notwh = area - white % 白飛びした部分以外の面積(画素数)
mygy(mygy>250) = 0; % 白飛びした部分を黒(0)にする
%avrg2 = mean2(mygy) % 白飛びした部分以外の平均輝度値(白飛びした部分は0なので平均輝度値に含まれない)
avrg2 = mean2(mygy(mygy>0)) % 白飛びした部分以外の平均輝度値(上の行は誤記で、こちらが正しい)
imshow(mygy); % 画像表示
3 Comments
Atsushi Ueno
on 21 Jun 2021
申し訳ございません。白飛びした部分以外の平均輝度値の求め方に誤記がありました。
当初黒色の輝度値は0なので平均値に含まれないと説明しましたが、これは間違いで、母数(黒色以外の画素数)も画像全体ではなく黒以外の画素数に絞らないと正しい平均値になりません。
More Answers (0)
See Also
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!