このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
jaccard
イメージ セグメンテーションのための Jaccard 類似度係数
説明
は、バイナリ イメージ similarity
= jaccard(BW1
,BW2
)BW1
と BW2
の交点を BW1
と BW2
の和集合で割った値、別名、Jaccard 指数を計算します。イメージには、バイナリ イメージ、ラベル イメージまたは categorical イメージを指定できます。
は、ラベル イメージ similarity
= jaccard(L1
,L2
)L1
と L2
の各ラベルの Jaccard 指数を計算します。
は、categorical イメージ similarity
= jaccard(C1
,C2
)C1
と C2
の各カテゴリの Jaccard 指数を計算します。
例
バイナリ セグメンテーションのための Jaccard 類似度係数の計算
セグメント化するオブジェクトを含むイメージを読み取ります。イメージをグレースケールに変換し、結果を表示します。
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');
このセグメンテーションの Jaccard 指数を計算します。
similarity = jaccard(BW, BW_groundTruth);
マスクを重ねて表示します。色はマスクの違いを示します。
figure
imshowpair(BW, BW_groundTruth)
title(['Jaccard Index = ' num2str(similarity)])
多領域セグメンテーションのための Jaccard 類似度係数の計算
この例では、イメージを複数の領域にセグメント化する方法を説明します。この例では、各領域の Jaccard 類似度係数を計算します。
セグメント化する複数の領域を含むイメージを読み取ります。
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;
イメージの上にシード領域を表示します。
figure 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 imshowpair(label2rgb(L),label2rgb(L_groundTruth),'montage') title('Comparison of Segmentation Results (Left) and Ground Truth (Right)')
セグメント化された領域ごとに Jaccard 類似度指数 (IoU) を計算します。
similarity = jaccard(L, L_groundTruth)
similarity = 3×1
0.8861
0.5683
0.8414
Jaccard 類似度インデックスは 2 番目の領域で顕著に小さくなります。この結果は、イメージの右下隅の土を葉として誤って分類するセグメンテーション結果の視覚的な比較と一致しています。
入力引数
BW1
— 最初のバイナリ イメージ
logical 配列
最初のバイナリ イメージ。任意の次元の logical 配列として指定します。
データ型: logical
BW2
— 2 番目のバイナリ イメージ
logical 配列
2 番目のバイナリ イメージ。BW1
と同じサイズの logical 配列として指定します。
データ型: logical
L1
— 最初のラベル イメージ
非負の整数から成る配列
最初のラベル イメージ。非負の整数から成る任意の次元の配列として指定します。
データ型: double
L2
— 2 番目のラベル イメージ
非負の整数から成る配列
2 番目のラベル イメージ。L1
と同じサイズの非負の整数から成る配列として指定します。
データ型: double
C1
— 最初の categorical イメージ
categorical
配列
最初の categorical イメージ。任意の次元の categorical
配列として指定します。
データ型: category
C2
— 2 番目の categorical イメージ
categorical
配列
2 番目の categorical イメージ。C1
と同じサイズの categorical
配列として指定します。
データ型: category
出力引数
similarity
— Jaccard 類似度係数
数値スカラー | 数値ベクトル
Jaccard 類似度係数。範囲 [0, 1] の値を持つ数値スカラーまたは数値ベクトルとして返されます。similarity
が 1 の場合、2 つのイメージのセグメンテーションが完全一致であることを意味します。入力配列に応じて、次のようになります。
バイナリ イメージ。
similarity
はスカラーです。ラベル イメージ。
similarity
はベクトルで、最初の係数はラベル 1 の Jaccard 指数、2 番目の係数はラベル 2 の Jaccard 指数となり、以下同様です。categorical イメージ。
similarity
はベクトルで、最初の係数は最初のカテゴリの Jaccard 指数、2 番目の係数は 2 番目のカテゴリの Jaccard 指数となり、以下同様です。
データ型: double
詳細
Jaccard 類似度係数
2 つの集合 A および B の Jaccard 類似度係数 (別名 Intersection over Union または IoU) は次のように表されます。
jaccard
(A,B) = | intersection
(A,B) | / | union
(A,B) |
ここで |A| は、集合 A の基数を表します。Jaccard 指数は、真陽性 (TP)、偽陽性 (FP)、および偽陰性 (FN) に関して次のように表すこともできます。
jaccard
(A,B) = TP / (TP + FP + FN)
Jaccard 指数は、次のように Dice 指数に関連します。
jaccard
(A,B) = dice
(A,B) / (2 - dice
(A,B) )
バージョン履歴
R2017b で導入
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- 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)