黒い箇所を除いた輝度値の平均、または合計を求めたいです
36 次查看(过去 30 天)
显示 更早的评论
おそらく初歩的な質問だと思うのですが申し訳ありません.
以下の画像のように端を黒く塗りつぶした画像があったとき,この黒い箇所を除いた輝度値の平均を求めたいと考えています.
または
a = imread("sample.jpg");
a' = rgb2gray(a);
area = numel(a') ;
black = sum(sum(a'<1)) ;%%黒い箇所の面積
notbl = area - black ;%%黒い箇所を除いた面積
で黒い箇所を除いたPixel数を求めることができると思うのですが、これで輝度値の合計を割り平均を求めたいです.
利用できる関数などがありましたらご教授いただけますと幸いです.
よろしくお願いいたします.
0 个评论
采纳的回答
Atsushi Ueno
2021-6-21
画像データは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 个评论
Atsushi Ueno
2021-6-21
mean2関数は画像データの入力を前提としている為、2次元配列全体の平均値を求めます。
mean関数の出力は1次元減る形になるので、sum関数と同様にmean(mean())とするか、mean(入力,'all')とすれば2次元配列全体の平均値が得られます。
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 イメージ算術 的更多信息
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!