bwboundariesの色分けについて

3 views (last 30 days)
Nagae Ryoya
Nagae Ryoya on 20 Nov 2019
Commented: Shunichi Kusano on 21 Nov 2019
bwboundaries関数を用いた際に多くの色が用いられ、色分けされますが、プログラムの中に、色を指定するような部分は見られず、どのように色が出てきているのでしょうか。

Accepted Answer

Shunichi Kusano
Shunichi Kusano on 20 Nov 2019
bwboundaries関数自体は、境界の座標を取得するためのもので、お気づきのとおり色情報などは含みません。
色は表示の際にユーザ側で指定できます。
例えばご提示のURLの2番目の例ですと、境界を描画しているのはplot関数で、その中で色はcolors(cidx)で指定しています。境界の番号ごとにcolors=['b' 'g' 'r' 'c' 'm' 'y'];で指定した色を順繰りに割当てて表示させています。
  4 Comments
Nagae Ryoya
Nagae Ryoya on 21 Nov 2019
regionprops関数を使用したいのですが、プログラムがうまく行きません。
regionprops関数の例が載っているページを確認しましたが、自分のプログラムと合わせることができません。
プログラムは以下の通りです。
%%画像入力
kaki_img=imread('box_dark.jpg'); %画像読み込み
%kakiimg=imcrop(kakiimg)
figure(2)
imshow(kaki_img,'Border','tight','InitialMagnification','fit');
%%画像全体のセグメンテーション
kaki_red=kaki_img(:,:,1); %画像のセグメンテーション(赤要素検出)
figure(3)
imshow(kaki_red,'Border','tight','InitialMagnification','fit');
%%画像の二値化
kaki_th=kaki_red>180;
figure(4)
imshow(kaki_th,'Border','tight','InitialMagnification','fit');
%%二値化画像の穴埋め
kaki_th=imfill(kaki_th,'holes');
figure(5)
imshow(kaki_th,'Border','tight','InitialMagnification','fit');
%%二値化画像のクリーンナップ(周囲の白を除去)
cc1=bwconncomp(kaki_th);
main1=regionprops(cc1,'Area');
A=[main1. Area];
[~,biggest]=max(A);
kaki_th(labelmatrix(cc1)~=biggest)=0; %最大の塊となっている1の要素以外の1の要素を0にする
figure(6)
imshow(kaki_th,'Border','tight','InitialMagnification','fit');
%%牡蠣の二値化画像の外周に色付け
BW=imbinarize(I);
%%Detec boundarries
B=bwboundaries(kaki_th,'noholes');
figure(7)
imshow(BW)
hold on
for kk=1:numel(B)
%%'c'で色を固定
plot(B{kk}(:,2),B{kk}(:,1),'c','LineWidth',2)
end
よろしくお願いします。
Shunichi Kusano
Shunichi Kusano on 21 Nov 2019
具体的には何がうまくいきませんか?上のプログラムのどの画像(変数)にregionpropsを適用したいのですか?regionpropsではなんのパラメータを計算したいのですか?

Sign in to comment.

More Answers (0)

Categories

Find more on Image Processing Toolbox in Help Center and File Exchange

Products


Release

R2019b

Community Treasure Hunt

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

Start Hunting!