画像の白飛びを消して画像のパラメータなどを計算したい
20 ビュー (過去 30 日間)
古いコメントを表示
画像の平均輝度値や面積などのパラメータを求めたいです.
特に白飛びした画像(撮影による光反射する現象)から計算する場合,
白飛びした部分以外の平均輝度値や面積を求めることはできるのでしょうか?
利用できる関数などがありましたら教えていただきたいです.
お願いいたします.
2 件のコメント
Hiroyuki Hishida
2021 年 6 月 4 日
前川さま、
おそらくそれにそのまま使える関数はないので、処理を自作ください。
手順としては、白飛びしているピクセルとそうではないピクセルを認識し、白飛びしていないピクセルについてのみ、輝度値の平均など計算すると良いと思います。
また、白飛びの定義(例えばrgbの値がどうであれば白飛びとするかや、白飛びと白色模様の違いをどうするか、など)はご自身で設定される必要があると思います。
菱田
採用された回答
Atsushi Ueno
2021 年 6 月 6 日
編集済み: Atsushi Ueno
2021 年 6 月 21 日
実際に動かしてみます。繰り返しを避ける為グレースケール画像を処理しています。添付画像はリンク先の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 件のコメント
Atsushi Ueno
2021 年 6 月 21 日
申し訳ございません。白飛びした部分以外の平均輝度値の求め方に誤記がありました。
当初黒色の輝度値は0なので平均値に含まれないと説明しましたが、これは間違いで、母数(黒色以外の画素数)も画像全体ではなく黒以外の画素数に絞らないと正しい平均値になりません。
その他の回答 (0 件)
参考
カテゴリ
Help Center および File Exchange で コンピューター ビジョンと Simulink についてさらに検索
製品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!