L*a*b*色空間に​て1成分を取り出し,​黒い箇所を除いた合計​と平均を取得したい

8 views (last 30 days)
 以下のような画像があるとき,L*a*b*色空間に変換したのち,各L*,a*b*1成分づつ取り出し,各成分の合計値と合計値を黒い箇所を除く面積で割った平均を所得したいと考えております.
L*a*b*色空間に変換するにあたり,rgb2lab を活用しようとしたのですが,各成分を利用する方法と黒い箇所を除く条件式をどのように表現すれば良いかわかりません.
ご教授のほど、よろしくお願いいたします.

Accepted Answer

Shunichi Kusano
Shunichi Kusano on 24 Aug 2021
黒い部分の値はおそらくL=0,a=0,b=0になっていると思いますので(確認してみてください)、Labの各成分がその値に一致しているところを抜き出してきて、論理積を取れば黒い部分のマスクができます。
maskL = labImg(:,:,1) == 0;
maskA = labImg(:,:,2) == 0;
maskB = labImg(:,:,3) == 0;
mask = maskL & maskA & maskB;
画像の中にも該当する画素があれば抽出されてしまうので場合によってはモルフォロジー処理などで、欲しい領域(おそらく画像の左右の領域ですよね?)だけにするような処理が必要かもしれません。詳しくはこちら
マスクができれば、それ以外の画素の値を抽出できるので、その値から平均値を求めれば完了です。
[l,a,b] = imsplit(labImg); % チャンネルごとに分離
meanL = mean(l(~mask)); % 黒領域以外の画素値を抜き出してきて平均値を計算
meanA = mean(a(~mask));
meanB = mean(b(~mask));
  1 Comment
touka kakihara
touka kakihara on 25 Aug 2021
返信遅れてしまい大変申し訳ありません.
丁寧なご回答,誠にありがとうございます.

Sign in to comment.

More Answers (0)

Products


Release

R2021a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!