黒い箇所を除いた輝度値の平均、または合計を求めたいです
35 views (last 30 days)
Show older comments
touka kakihara
on 20 Jun 2021
Edited: touka kakihara
on 21 Jun 2021
おそらく初歩的な質問だと思うのですが申し訳ありません.
以下の画像のように端を黒く塗りつぶした画像があったとき,この黒い箇所を除いた輝度値の平均を求めたいと考えています.
または
a = imread("sample.jpg");
a' = rgb2gray(a);
area = numel(a') ;
black = sum(sum(a'<1)) ;%%黒い箇所の面積
notbl = area - black ;%%黒い箇所を除いた面積
で黒い箇所を除いたPixel数を求めることができると思うのですが、これで輝度値の合計を割り平均を求めたいです.
利用できる関数などがありましたらご教授いただけますと幸いです.
よろしくお願いいたします.
0 Comments
Accepted Answer
Atsushi Ueno
on 21 Jun 2021
画像データは0~255の整数値で、各画素の輝度値を表します。
(a'<1)は、a'の値が0の画素に対しTRUEを返します。それを合計すれば黒い箇所の面積(画素数)になります。
a'(a'<1)は、黒い箇所の輝度値のみを選択します。
a'(a'>=1)は、黒い箇所を除いた輝度値のみを選択します。これを合計し画素数で割れば平均輝度値が求まります。
MATLABではa'は行列の転置を意味するので変数の名前として用いる事は出来ません。これをa_dsに変更しました。
a = imread("sample.jpg");
imshow(a)
a_ds = rgb2gray(a);
area = numel(a_ds) % 画像全体の面積(画素数)
black = sum(sum(a_ds<1)) % 黒い箇所の面積(画素数)
notbl = area - black % 黒い箇所を除いた面積(画素数)
sumbr = sum(sum(a_ds(a_ds>=1))) % 黒い箇所を除いた輝度値の合計
avebr = sumbr / notbl % 黒い箇所を除いた輝度値の合計/面積(画素数)
avebr2 = mean2(a_ds(a_ds>=1)) % 黒い箇所を除いた輝度値の平均
2 Comments
Atsushi Ueno
on 21 Jun 2021
mean2関数は画像データの入力を前提としている為、2次元配列全体の平均値を求めます。
mean関数の出力は1次元減る形になるので、sum関数と同様にmean(mean())とするか、mean(入力,'all')とすれば2次元配列全体の平均値が得られます。
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!