黒い箇所を除いた輝度値の平均、または合計を求めたいです
35 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
touka kakihara
am 20 Jun. 2021
Bearbeitet: touka kakihara
am 21 Jun. 2021
おそらく初歩的な質問だと思うのですが申し訳ありません.
以下の画像のように端を黒く塗りつぶした画像があったとき,この黒い箇所を除いた輝度値の平均を求めたいと考えています.
または
a = imread("sample.jpg");
a' = rgb2gray(a);
area = numel(a') ;
black = sum(sum(a'<1)) ;%%黒い箇所の面積
notbl = area - black ;%%黒い箇所を除いた面積
で黒い箇所を除いたPixel数を求めることができると思うのですが、これで輝度値の合計を割り平均を求めたいです.
利用できる関数などがありましたらご教授いただけますと幸いです.
よろしくお願いいたします.
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/659325/image.jpeg)
0 Kommentare
Akzeptierte Antwort
Atsushi Ueno
am 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 Kommentare
Atsushi Ueno
am 21 Jun. 2021
mean2関数は画像データの入力を前提としている為、2次元配列全体の平均値を求めます。
mean関数の出力は1次元減る形になるので、sum関数と同様にmean(mean())とするか、mean(入力,'all')とすれば2次元配列全体の平均値が得られます。
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu イメージ算術 finden Sie in Help Center und File Exchange
Produkte
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!