Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

detectMSERFeatures

説明

regions = detectMSERFeatures(I) は、2 次元のグレースケールまたはバイナリの入力イメージ I で検出された MSER 特徴に関する情報が含まれる MSERRegions オブジェクト regions を返します。このオブジェクトは、Maximally Stable Extremal Regions (MSER) アルゴリズムを使用して領域を検出します。

メモ

この関数を使用して Simulink® をサポートするには、モデル コンフィギュレーション設定を有効にしなければなりません。ダイアログ ボックスを表示するには、Simulink エディターで [モデル化] タブを選択し、[モデル設定]、[モデル プロパティ] を選択します。[コンフィギュレーション パラメーター] ダイアログ ボックスで、[シミュレーション ターゲット][詳細設定パラメーター][MATLAB 関数での動的メモリ割り当て] を選択します。

[regions,cc] = detectMSERFeatures(I) は、オプションで MSER 領域を連結要素の構造体として返します。

[___] = detectMSERFeatures(I,Name,Value) は、1 つ以上の名前と値の引数で指定された追加オプションを設定します。

すべて折りたたむ

イメージを読み取って MSER 領域を検出

I = imread('cameraman.tif');
regions = detectMSERFeatures(I);

返された 'regions' オブジェクト内に格納されたピクセル リストによって記述される MSER 領域を可視化します。

figure; imshow(I); hold on;
plot(regions,'showPixelList',true,'showEllipses',false);

Figure contains an axes object. The axes object contains 238 objects of type image, line.

楕円と重心を領域に合わせて表示します。既定の設定では、プロットに楕円と重心が表示されます。

figure; imshow(I); 
hold on;
plot(regions);

Figure contains an axes object. The axes object contains 475 objects of type image, line.

MSER 領域を検出します。

I = imread('coins.png');
[regions,mserCC] = detectMSERFeatures(I);

検出されたすべての MSER 領域を表示します。

figure
imshow(I)
hold on
plot(regions,'showPixelList',true,'showEllipses',false)

Figure contains an axes object. The axes object contains 176 objects of type image, line.

MSER 領域の離心率を測定して領域の真円度を判断します。

stats = regionprops('table',mserCC,'Eccentricity');

円形領域のみを保持するように離心率値をしきい値処理します (円形領域の離心率は低くなります)。

eccentricityIdx = stats.Eccentricity < 0.55;
circularRegions = regions(eccentricityIdx);

円形領域を表示します。

figure
imshow(I)
hold on
plot(circularRegions,'showPixelList',true,'showEllipses',false)

Figure contains an axes object. The axes object contains 155 objects of type image, line.

入力引数

すべて折りたたむ

入力イメージ。M 行 N 列の 2 次元のグレースケールまたはバイナリのイメージとして指定します。実数で非スパースでなければなりません。この関数は、MSER 領域を検出する前に、uint8 ではない入力イメージを uint8 に内部的に変換します。

データ型: uint8 | int16 | uint16 | single | double | logical

名前と値の引数

オプションの引数のペアを Name1=Value1,...,NameN=ValueN として指定します。ここで、Name は引数名で、Value は対応する値です。名前と値の引数は他の引数の後に指定しなければなりませんが、ペアの順序は重要ではありません。

R2021a より前では、コンマを使用して名前と値をそれぞれ区切り、Name を引用符で囲みます。

例: 'RegionAreaRange',[30 14000] は、領域のサイズをピクセル単位で指定します。

強度しきい値レベル間のステップ サイズ。'ThresholdDelta' と (0,100] の範囲の数値で構成されるコンマ区切りのペアとして指定します。この値は、安定性をテストするときに極値領域の選択に使用される入力データ型の範囲のパーセント比として表されます。より多くの領域を返すには、この値を小さくします。一般的な値の範囲は、0.8 ~ 4 です。

ピクセル単位の領域のサイズ。'RegionAreaRange' と 2 要素ベクトルで構成されるコンマ区切りのペアとして指定します。ベクトル [minArea maxArea] を指定すると、minArea から maxArea の範囲 (両端を含む) のピクセルを含む領域を選択できます。

強度しきい値が一定でない場合の、極値領域間での最大面積変動。'MaxAreaVariation' と正のスカラー値で構成されるコンマ区切りのペアとして指定します。この値を大きくするとより多くの領域が返されますが、安定性が低下する場合があります。安定した領域は、強度しきい値が変化しても非常に似たサイズになります。一般的な値の範囲は、0.1 ~ 1.0 です。

四角形の関心領域。ベクトルとして指定します。ベクトルは [x y width height] の形式でなければなりません。ROI を指定すると、関数は、[x y] にある [width height] によって指定されたサイズの領域内のコーナーを検出します。[x y] 要素は、領域の左上隅を指定します。

出力引数

すべて折りたたむ

MSER 領域オブジェクト。MSERRegions オブジェクトとして返されます。オブジェクトには、グレースケールまたはバイナリの入力イメージで検出された MSER 特徴に関する情報が含まれます。

連結要素の構造体。4 つのフィールドをもつ構造体として返されます。連結要素の構造体は、関数 regionprops を使用して領域のプロパティを測定する場合に役立ちます。4 つのフィールドは次のとおりです。

フィールド説明
Connectivity

MSER 領域の連結性。

既定値: 8

ImageSize

I のサイズ。

NumObjects

I 内の MSER 領域の数。

PixelIdxList

NumObjects ベクトルを含む 1 行 NumObjects 列の cell 配列。各ベクトルは、その要素に対応する MSER 領域内のピクセルの線形インデックスを表します。

アルゴリズム

すべて折りたたむ

強度しきい値レベル

MSER 検出器は、入力イメージの強度範囲をインクリメンタルにステップ実行して、安定領域を検出します。ThresholdDelta パラメーターは、検出器が安定性のテストを行う増分の数を決定します。しきい値のデルタ値は、バケツに水を満たすためのカップのサイズであると考えることができます。カップが小さくなると、バケツをいっぱいにするまでの増分の数が多くなります。バケツは領域の強度プロファイルであると考えることができます。

MSER オブジェクトは、さまざまな強度しきい値による領域サイズの変動をチェックします。安定していると見なされるには、変動が MaxAreaVariation パラメーターの値より小さくなければなりません。

メモ

MSER 特徴検出は、強度値が極端に変化するイメージでの使用には適していません。

強度プロファイルを一連のバケツを表すイメージであると考えることで、MSER を大まかに説明できます。どのバケツも上面と地面が同一平面上になるように配置され、バケツの 1 つにホースが差し込まれていると想像してください。バケツに水が注がれると、水が溢れて、次のバケツに水がたまり始めます。より小さな水の領域が連結してより大きな水域となり、最後には領域全体が水で満たされます。バケツが水で満たされていく過程で、MSER の安定性条件との照合が行われます。さまざまな強度しきい値で領域が表示され、拡大、マージされます。

参照

[1] Nister, D., and H. Stewenius, "Linear Time Maximally Stable Extremal Regions", Lecture Notes in Computer Science. 10th European Conference on Computer Vision, Marseille, France: 2008, no. 5303, pp. 183–196.

[2] Matas, J., O. Chum, M. Urba, and T. Pajdla. "Robust wide baseline stereo from maximally stable extremal regions." Proceedings of British Machine Vision Conference, pages 384-396, 2002.

[3] Obdrzalek D., S. Basovnik, L. Mach, and A. Mikulik. "Detecting Scene Elements Using Maximally Stable Colour Regions," Communications in Computer and Information Science, La Ferte-Bernard, France; 2009, vol. 82 CCIS (2010 12 01), pp 107–115.

[4] Mikolajczyk, K., T. Tuytelaars, C. Schmid, A. Zisserman, T. Kadir, and L. Van Gool, "A Comparison of Affine Region Detectors"; International Journal of Computer Vision, Volume 65, Numbers 1–2 / November, 2005, pp 43–72 .

拡張機能

バージョン履歴

R2012a で導入