Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

modefilt

2 次元および 3 次元モードのフィルター処理

説明

B = modefilt(A) は、2 次元イメージまたは 3 次元ボリューム A にモードのフィルター処理を行います。B の各出力ピクセルは、A における対応するピクセルの近傍のモード (最も頻繁に現れる値) を含んでいます。A が 2 次元の場合、modefilt は 3 行 3 列のモード フィルターを使用します。A が 3 次元の場合、modefilt は 3 x 3 x 3 のモード フィルターを使用します。modefilt は境界要素をミラーリングすることにより、A をパディングします。

モード フィルター処理は、他のタイプのフィルター処理 (メディアン フィルター処理など) が使用できない categorical データを処理するために役立ちます。

B = modefilt(A,filtsize) は、フィルター近傍のサイズも指定します。filtsize は正の奇数の整数のベクトルです。A が 2 次元の場合、filtsize は 1 行 2 列のベクトルとして指定します。A が 3 次元の場合、filtsize は 1 行 3 列のベクトルとして指定します。

B = modefilt(___,padopt) は、modefilt による配列の境界のパディング方法も指定します。

すべて折りたたむ

イメージ (img) とそれに対応するカテゴリカル ラベル付きバージョンのイメージ (label) をワークスペースに読み込みます。

load buildingPixelLabeled;

元のイメージ img を表示します。

imshow(img)

Figure contains an axes object. The axes object contains an object of type image.

カテゴリカル ラベル付きイメージ label を表示します。カテゴリカル イメージは、空、草、建物、歩道という 4 つに分かれたカテゴリにラベル付けしています。表示するときは、関数 label2rgb を使用して、これらのカテゴリを色に変換します。

imshow(label2rgb(label))

Figure contains an axes object. The axes object contains an object of type image.

既定のフィルター サイズとパディング方法を使用して、カテゴリカル ラベル付きイメージ label にモードのフィルター処理を行います。

 b = modefilt(label);

フィルター処理されたカテゴリカル ラベル付きイメージ b を表示します。フィルター処理されたイメージでは、ラベル付けされた領域間のエッジが識別しやすくなっています。

 figure
 imshow(label2rgb(b));

Figure contains an axes object. The axes object contains an object of type image.

MRI のラベル付きボリュームを読み取ります。ボリュームはワークスペース変数 label に保存されます。

load(fullfile(toolboxdir('images'),'imdata','BrainMRILabeled', ...
    'labels','label_001.mat'));

ラベル付きボリュームを表示します。わかりやすくするため、表示にタイトルを追加します。

ViewPnl = uipanel(figure,'Title','Labeled Volume');
labelvolshow(label,'Parent',ViewPnl);

フィルターのサイズを指定して、ラベル付きボリュームにモードのフィルター処理を行います。

labelOut = modefilt(label,[5 5 5]);

フィルター処理されたラベル付きボリュームを表示します。わかりやすくするため、表示にタイトルを追加します。

ViewPnlFiltered = uipanel(figure,'Title','Mode Filtered Labeled Volume');
labelvolshow(labelOut,'Parent',ViewPnlFiltered);

入力引数

すべて折りたたむ

2 次元イメージまたは 3 次元ボリューム。categorical 配列、logical 配列、または数値配列として指定します。

データ型: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32 | logical | categorical

フィルター サイズ。正の奇数の整数のベクトルとして指定します。2 次元イメージの場合、[height width] 形式のベクトルを指定します。2 次元イメージの既定の設定は [3 3] です。3 次元ボリュームの場合、[height width depth] 形式のベクトルを指定します。3 次元ボリュームの既定の設定は [3 3 3] です。

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

パディング方法。次のいずれかの値を指定します。

説明
'symmetric'配列自体の鏡像で配列をパディングします。
'replicate'境界の要素を繰り返すことによって配列をパディングします。
'zeros'数値データの場合は 0、categorical データの場合は <undefined> で、配列をパディングします。

例: labelOut = modefilt(label,'replicate');

データ型: char | string

出力引数

すべて折りたたむ

フィルター処理されたイメージまたはボリューム。入力イメージ A と同じサイズとクラスの数値配列として返されます。

ヒント

  • モード値について同順位のピクセルが近傍に複数ある場合、この関数は次のタイブレーク アルゴリズムを使用します。

    • 中心ピクセルが同順位のモード値の 1 つである場合、この関数はこの値を使用します。

    • 中心ピクセルが同順位のモード値の 1 つではない場合、この関数は最も数値の小さいモードを使用します。

    • カテゴリカル入力の場合、この関数は、categories(A) によって返されたリストにある 1 番目のカテゴリを (モードと同順位のカテゴリの中で) 選択します。

  • modefilt は RGB イメージを 3 次元ボリュームとして扱います。RGB イメージのチャネル単位のフィルター処理を行うには、filtsize[3 3 1] として指定します。たとえば、b = modefilt(a,[3 3 1]); のようなコードになります。

拡張機能

バージョン履歴

R2020a で導入