黒い箇所を除いた輝度値の平均、または合計を求めたいです
35 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
touka kakihara
le 20 Juin 2021
Modifié(e) : touka kakihara
le 21 Juin 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 commentaires
Réponse acceptée
Atsushi Ueno
le 21 Juin 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 commentaires
Atsushi Ueno
le 21 Juin 2021
mean2関数は画像データの入力を前提としている為、2次元配列全体の平均値を求めます。
mean関数の出力は1次元減る形になるので、sum関数と同様にmean(mean())とするか、mean(入力,'all')とすれば2次元配列全体の平均値が得られます。
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur イメージ算術 dans Help Center et File Exchange
Produits
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!