dice
イメージ セグメンテーションのための Sørensen-Dice 類似度係数
説明
は、バイナリ イメージ similarity
= dice(BW1
,BW2
)BW1
と BW2
との間の Sørensen-Dice 類似度係数を計算します。
は、ラベル イメージ similarity
= dice(L1
,L2
)L1
と L2
の各ラベルの Dice 指数を計算します。
は、categorical イメージ similarity
= dice(C1
,C2
)C1
と C2
の各カテゴリの Dice 指数を計算します。
例
セグメント化するオブジェクトを含むイメージを読み取ります。イメージをグレースケールに変換し、結果を表示します。
A = imread('hands1.jpg'); I = im2gray(A); figure imshow(I) title('Original Image')
動的輪郭 (snakes) を使用して手をセグメント化します。
mask = false(size(I)); mask(25:end-25,25:end-25) = true; BW = activecontour(I, mask, 300);
グラウンド トゥルース セグメンテーションを読み取ります。
BW_groundTruth = imread('hands1-mask.png');
動的輪郭セグメンテーションの Dice 指数をグラウンド トゥルースと比較して計算します。
similarity = dice(BW, BW_groundTruth);
マスクを重ねて表示します。色はマスクの違いを示します。
figure
imshowpair(BW, BW_groundTruth)
title(['Dice Index = ' num2str(similarity)])
この例では、イメージを複数の領域にセグメント化する方法を説明します。その後、各領域の Dice 類似度係数を計算します。
セグメント化する複数の領域を含むイメージを読み取ります。
RGB = imread('yellowlily.jpg');
典型的な色の特性を区別する 3 つの領域用にスクリブルを作成します。最初の領域には黄色の花が分類されます。2 番目の領域には、緑色の茎および葉が分類されます。最後の領域には、茶色の土が2 つのイメージのパッチに分かれて分類されます。領域は、要素が ROI の左上隅の x 座標と y 座標、ROI の幅、および ROI の高さを示す 4 要素ベクトルで指定されます。
region1 = [350 700 425 120]; % [x y w h] format
BW1 = false(size(RGB,1),size(RGB,2));
BW1(region1(2):region1(2)+region1(4),region1(1):region1(1)+region1(3)) = true;
region2 = [800 1124 120 230];
BW2 = false(size(RGB,1),size(RGB,2));
BW2(region2(2):region2(2)+region2(4),region2(1):region2(1)+region2(3)) = true;
region3 = [20 1320 480 200; 1010 290 180 240];
BW3 = false(size(RGB,1),size(RGB,2));
BW3(region3(1,2):region3(1,2)+region3(1,4),region3(1,1):region3(1,1)+region3(1,3)) = true;
BW3(region3(2,2):region3(2,2)+region3(2,4),region3(2,1):region3(2,1)+region3(2,3)) = true;
イメージの上にシード領域を表示します。
imshow(RGB) hold on visboundaries(BW1,'Color','r'); visboundaries(BW2,'Color','g'); visboundaries(BW3,'Color','b'); title('Seed Regions')
測地線距離ベースの色のセグメンテーションを使用して、イメージを 3 領域にセグメント化します。
L = imseggeodesic(RGB,BW1,BW2,BW3,'AdaptiveChannelWeighting',true);
イメージのグラウンド トゥルース セグメンテーションを読み込みます。
L_groundTruth = double(imread('yellowlily-segmented.png'));
セグメンテーションの結果をグラウンド トゥルースと視覚的に比較します。
figure
montage({label2rgb(L),label2rgb(L_groundTruth)})
title('Comparison of Segmentation Results (Left) and Ground Truth (Right)')
セグメント化された領域ごとに Dice 類似度係数を計算します。Dice 類似度係数は 2 番目の領域で顕著に小さくなります。この結果は、イメージの右下隅の土を葉として誤って分類するセグメンテーション結果の視覚的な比較と一致しています。
similarity = dice(L, L_groundTruth)
similarity = 3×1
0.9396
0.7247
0.9139
入力引数
最初のバイナリ イメージ。任意の次元の logical 配列として指定します。
データ型: logical
2 番目のバイナリ イメージ。BW1
と同じサイズの logical 配列として指定します。
データ型: logical
最初のラベル イメージ。非負の整数から成る任意の次元の配列として指定します。
データ型: double
2 番目のラベル イメージ。L1
と同じサイズの非負の整数から成る配列として指定します。
データ型: double
最初の categorical イメージ。任意の次元の categorical
配列として指定します。
データ型: category
2 番目の categorical イメージ。C1
と同じサイズの categorical
配列として指定します。
データ型: category
出力引数
Dice 類似度係数。範囲 [0, 1] の数値を持つ数値スカラーまたは数値ベクトルとして返されます。similarity
が 1 の場合、2 つのイメージのセグメンテーションが完全一致であることを意味します。入力配列に応じて、次のようになります。
バイナリ イメージ。
similarity
はスカラーです。ラベル イメージ。
similarity
はベクトルで、最初の係数はラベル 1 の Dice 指数、2 番目の係数はラベル 2 の Dice 指数となり、以下同様です。categorical イメージ。
similarity
はベクトルで、最初の係数は最初のカテゴリの Dice 指数、2 番目の係数は 2 番目のカテゴリの Dice 指数となり、以下同様です。
データ型: double
詳細
2 つの集合 A および B の Dice 類似度係数は次のように表されます。
dice
(A,B) = 2 * | intersection
(A,B) | / ( | A | + | B | )
ここで |A| は、集合 A の基数を表します。Dice 指数は、真陽性 (TP)、偽陽性 (FP)、および偽陰性 (FN) に関して次のように表すこともできます。
dice
(A,B) = 2 * TP / ( 2 * TP + FP + FN)
Dice 指数は、次の式のように Jaccard 指数に関連します。
dice
(A,B) = 2 * jaccard
(A,B) / (1 + jaccard
(A,B) )
バージョン履歴
R2017b で導入
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
- América Latina (Español)
- Canada (English)
- United States (English)
ヨーロッパ
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)