Main Content

imhmax

H-maxima 変換を使用したイメージの局所的な最大値の抑制

説明

J = imhmax(I,H) は、H-maxima 変換を使用してグレースケール イメージ I の局所的な最大値を抑制します。H-maxima 変換は、すべての局所的な最大値の高さを、最大で H によって指定された量だけ小さくします。その結果、高さが H 未満の局所的な最大値はこの変換によって完全に抑制されます。"局所的な最大値" は、同じ強度値 t をもつ連結ピクセルで、強度値が t より小さいピクセルで囲まれています。

J = imhmax(I,H,conn) は、I 内の局所的な最大値を識別するのに使用される連結性の値も指定します。

すべて折りたたむ

10×10 のサンプル イメージを作成します。より小さい強度値で囲まれた連結ピクセルの領域をそれぞれ含む、2 つの局所的な最大値を追加します。

a = 10*ones(10,10);
a(2:4,2:4) = 13;  
a(6:8,6:8) = 18;

次のイメージは、ピクセル値をグレースケールで表したものです。各最大値の高さは、周囲のピクセル値によって決まります。

Grayscale representation of the original image, with callouts labeling the height of the maxima as 3 and 8.

局所的な最大値の高さを最大で 4 だけ小さくする H-maxima 変換を適用します。

b = imhmax(a,4);

次のイメージは、変換後のイメージをグレースケールで表したものです。この変換は、最大値の 1 つを完全に抑制します。この変換は、より高い最大値を部分的に抑制し、その最大値のピクセルの強度値から 4 を減算します。

Grayscale representation of the transformed image.

小さい局所的な最大値を抑制することで、イメージ内で最も明るいピークを特定できます。

雪片のグレースケール イメージをワークスペースに読み取って表示します。

I = imread("snowflakes.png");
imshow(I,InitialMagnification=200)

イメージ内の局所的な最大値を検出します。

regmax = imregionalmax(I);

局所的な最大値のピクセルのマスクを、元のイメージの上にオーバーレイとして表示します。この局所的な最大値は、雪片ではなく強度の微小な変動に対応しています。

overlay = imoverlay(I,regmax,"green");
imshow(overlay,InitialMagnification=200)

H-maxima 変換を適用し、強度の微小なピークを除去します。フィルター処理されたイメージを表示します。

h = 75;
B = imhmax(I,h);
imshow(B,InitialMagnification=200)

フィルター処理されたイメージの局所的な最大値を検出します。最大値のマスクを、元のイメージの上にオーバーレイとして表示します。

regmaxfilt = imregionalmax(B);
overlayfilt = imoverlay(I,regmaxfilt,"green");
imshow(overlayfilt,InitialMagnification=200)

なお、代わりに関数imextendedmaxを使用すると、H-maxima 変換の適用と局所的な最大値の計算を 1 ステップで行うことができます。

入力引数

すべて折りたたむ

入力イメージは、任意の次元の数値配列として指定します。

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

H-maxima 変換。非負のスカラーとして指定します。

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

ピクセルの連結性。次の表のいずれかの値を指定します。既定の連結性は 2 次元イメージでは 8、3 次元イメージでは 26 です。

意味

2 次元連結性

4

ピクセルのエッジの部分が接触している場合、ピクセルは連結されます。ピクセルの近傍は水平方向または垂直方向に隣接するピクセルです。

3-by-3 pixel neighborhood with four pixels connected to the center pixel

現在のピクセルを灰色で示します。

8

ピクセルのエッジまたはコーナーが接触している場合、ピクセルは連結されます。ピクセルの近傍は水平方向、垂直方向または対角方向に隣接するピクセルです。

3-by-3 pixel neighborhood with 8 pixels connected to the center pixel

現在のピクセルを灰色で示します。

3 次元連結性

6

面が接触している場合、ピクセルは連結されます。ピクセルの近傍は次のように隣接するピクセルです。

  • 次のいずれかの方向: 奥、手前、左、右、上および下

3-by-3-by-3 pixel neighborhood with 6 pixels connected to the faces of the center pixel

現在のピクセルを灰色で示します。

18

面またはエッジが接触している場合、ピクセルは連結されます。ピクセルの近傍は次のように隣接するピクセルです。

  • 次のいずれかの方向: 奥、手前、左、右、上および下

  • 右下または上の奥など、2 つの方向の組み合わせ

3-by-3-by-3 pixel neighborhood with 6 pixels connected to the faces and 12 pixels connected to the edges of the center pixel

現在のピクセルは立方体の中心です。

26

面、エッジまたはコーナーが接触している場合、ピクセルは連結されます。ピクセルの近傍は次のように隣接するピクセルです。

  • 次のいずれかの方向: 奥、手前、左、右、上および下

  • 右下または上の奥など、2 つの方向の組み合わせ

  • 右上の奥または左下の奥など、3 つの方向の組み合わせ

3-by-3-by-3 pixel neighborhood with 6 pixels connected to the faces, 12 pixels connected to the edges, and 8 pixels connected to the corners of the center pixel

現在のピクセルは立方体の中心です。

高次元の場合、imhmax は既定値 conndef(ndims(I),"maximal") を使用します。

連結性は、01 から成る 3 × 3 × ... × 3 行列を指定し、任意の次元に対してより一般的に定義することもできます。1 の値を持つ要素は、conn の中心要素に対する近傍の位置を定義します。conn は、その中心要素に関して対称でなければなりません。詳細については、カスタム連結性の定義を参照してください。

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

出力引数

すべて折りたたむ

変換後のイメージ。I と同じサイズとクラスの数値配列として返されます。

参照

[1] Soille, P. Morphological Image Analysis: Principles and Applications. Springer-Verlag, 1999, pp. 170-171.

拡張機能

バージョン履歴

R2006a より前に導入