このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
bfscore
イメージのセグメンテーションのための輪郭マッチング スコア
構文
説明
は、score
= bfscore(prediction
,groundTruth
)prediction
内の予測セグメンテーションと groundTruth
内のトゥルース セグメンテーションとの間の BF (Boundary F1) 輪郭マッチング スコアを計算します。prediction
と groundTruth
は、バイナリ セグメンテーションのための logical 配列ペア、あるいはマルチクラス セグメンテーションのためのラベルまたは categorical 配列ペアの可能性があります。
[
は、score
,precision
,recall
] = bfscore(prediction
,groundTruth
)groundTruth
イメージと比較した prediction
イメージの精度値および再現率値も返します。
[___] = bfscore(
は、指定されたしきい値を距離許容誤差として使用して BF スコアを計算し、境界点が一致するかどうかを判定します。prediction
,groundTruth
,threshold
)
例
バイナリ セグメンテーション用の BF スコアの計算
セグメント化するオブジェクトを含むイメージを読み取ります。イメージをグレースケールに変換し、結果を表示します。
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');
動的輪郭セグメンテーションの BF スコアをグラウンド トゥルースと比較して計算します。
similarity = bfscore(BW, BW_groundTruth);
マスクを重ねて表示します。色はマスクの違いを示します。
figure
imshowpair(BW, BW_groundTruth)
title(['BF Score = ' num2str(similarity)])
多領域セグメンテーション用の BF スコアの計算
この例では、イメージを複数の領域にセグメント化する方法を説明します。その後、各領域の BF スコアを計算します。
セグメント化する複数の領域を含むイメージを読み取ります。
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)')
セグメント化された領域ごとに BF スコアを計算します。
similarity = bfscore(L, L_groundTruth)
similarity = 3×1
0.7992
0.5333
0.7466
BF スコアは 2 番目の領域で顕著に小さくなります。この結果は、イメージの右下隅の土を葉として誤って分類するセグメンテーション結果の視覚的な比較と一致しています。
入力引数
prediction
— 予測セグメンテーション
2 次元または 3 次元の logical、数値、または categorical 配列
予測セグメンテーション。2 次元または 3 次元の logical、数値、または categorical
配列として指定します。prediction
が数値配列の場合、ラベル配列を表し、データ型 double
の非負の整数を含まなければなりません。
データ型: logical
| double
| categorical
groundTruth
— グラウンド トゥルース セグメンテーション
2 次元または 3 次元の logical、数値、または categorical 配列
グラウンド トゥルース セグメンテーション。prediction
と同じサイズとデータ型の、2 次元または 3 次元の logical、数値、または categorical
配列として指定します。groundTruth
が数値配列の場合、ラベル配列を表し、データ型 double
の非負の整数を含まなければなりません。
データ型: logical
| double
| categorical
threshold
— 距離許容誤差のしきい値
正のスカラー
ピクセル単位の距離許容誤差のしきい値。正のスカラーとして指定します。しきい値は、境界点が一致するかどうかを決定します。threshold
を指定しない場合、既定値はイメージの対角線の長さの 0.75% になります。
例: 3
データ型: double
出力引数
score
— BF スコア
数値スカラー | 数値ベクトル
BF スコア。範囲 [0, 1] の数値を持つスカラーまたはベクトルとして返されます。score
が 1 の場合、prediction
および groundTruth
に含まれる対応するクラスのオブジェクトの輪郭が完全一致であることを意味します。入力配列に応じて、次のようになります。
logical 配列。
score
はスカラーであり、前景の BF スコアを表します。ラベルまたは categorical 配列。
score
はベクトルです。score
の 1 つ目の係数は 1 番目の前景クラスの BF スコア、2 つ目の係数は 2 番目の前景クラスのスコアとなり、以下同様です。
precision
— 精度
数値スカラー | 数値ベクトル
精度。範囲 [0, 1] の数値を持つスカラーまたは数値ベクトルとして返されます。各要素は、対応する前景クラスのオブジェクトの輪郭の精度を示します。
"精度" とは、予測境界の長さに対する、グラウンド トゥルース セグメンテーションの境界に十分に近い予測セグメンテーションの境界上の点の数の比率です。言い換えれば、精度とは、偽陽性ではなく真陽性である検出の割合です。
recall
— 再現率
数値スカラー | 数値ベクトル
再現率。範囲 [0, 1] の数値を持つスカラーまたは数値ベクトルとして返されます。各要素は、対応する前景クラスのオブジェクトの輪郭の再現率を示します。
"再現率" とは、グラウンド トゥルース境界の長さに対する、予測セグメンテーションの境界に十分に近いグラウンド トゥルース セグメンテーションの境界上の点の数の比率です。言い換えれば、再現性とは、検出漏れではない、検出された真陽性の割合です。
詳細
BF (Boundary F1) スコア
BF スコアは、オブジェクトの予測境界がグラウンド トゥルース境界にどのくらい近いかを測定します。
BF スコアは、予測境界上の点が、グラウンド トゥルース境界上に一致する点を持つかどうかを決定するために、距離許容誤差を使用して precision
と recall
の値の調和平均 (F1-measure) として定義されます。
score
= 2 * precision
* recall
/ (recall
+ precision
)
参照
[1] Csurka, G., D. Larlus, and F. Perronnin. "What is a good evaluation measure for semantic segmentation?" Proceedings of the British Machine Vision Conference, 2013, pp. 32.1-32.11.
拡張機能
スレッドベースの環境
MATLAB® の backgroundPool
を使用してバックグラウンドでコードを実行するか、Parallel Computing Toolbox™ の ThreadPool
を使用してコードを高速化します。
この関数は、スレッドベースの環境を完全にサポートします。詳細については、スレッドベースの環境での MATLAB 関数の実行を参照してください。
バージョン履歴
R2017b で導入R2022b: スレッドベース環境のサポート
bfscore
は、スレッドベースの環境をサポートするようになりました。
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)