黒い箇所を除いた輝度値の平均、または合計を求めたいです
조회 수: 32 (최근 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!