このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
imhmin
H-minima 変換を使用したイメージの局所的な最小値の抑制
説明
例
H-Minima 変換の計算
10×10 のサンプル イメージを作成します。より大きい強度値で囲まれた連結ピクセルの領域をそれぞれ含む、3 つの局所的な最小値を追加します。
a = 10*ones(10,10); a(2:4,2:4) = 7; a(6:8,6:8) = 2; a(1:3,7:9) = 13; a(2,8) = 10;
次のイメージは、ピクセル値をグレースケールで表したものです。各最小値の深さは、周囲のピクセル値によって決まります。
局所的な最小値の深さを最大で 4 だけ小さくする H-minima 変換を適用します。
h = 4; b = imhmin(a,h);
次のイメージは、変換後のイメージをグレースケールで表したものです。この変換は、最小値の 2 つを完全に抑制します。この変換は、最も深い最小値を部分的に抑制し、その最小値のピクセルの強度値に 4 を加算します。
H-Minima 変換を使用した watershed セグメント化の改善
watershed セグメント化の際に、浅い局所的な最小値を抑制することでオーバーセグメンテーションを防ぐことができます。
セグメント化する梨の RGB イメージを読み込んで表示します。イメージをグレースケールに変換して表示します。各梨の中心部にある明るい部分は、局所的な最大値に対応しています。
RGB = imread("pears.png");
I = im2gray(RGB);
imshow(I)
watershed セグメント化では、このイメージは流域の稜線と集水域から成る地表面に似ています。地表面に水が流れ込むと、その水は集水域に蓄えられます。グレースケール イメージでは、局所的な最小値が集水域に相当します。梨をセグメント化するには、梨の中心部が局所的な最小値となるように、イメージを反転させます。
Icomp = imcomplement(I); imshow(Icomp)
反転したイメージを 3 次元表面として表示します。このとき、各ピクセルの 3 番目の次元が強度値となります。各梨の深い領域の底はスパイク状になっています。これは、水が蓄えられる集水域のように、数多くの浅い局所的な最小値を表しています。
surf(Icomp,EdgeColor="none")
colormap(gray)
フィルター処理されていないイメージをセグメント化し、その結果をラベルとして元のイメージに重ね合わせて表示します。このイメージは細かくセグメント化されすぎています。これは、各梨に 1 つのマスクが割り当てられているのではなく、数多くの小さなマスクが存在することを意味しています。
L = watershed(Icomp); overlay = labeloverlay(I,L); imshow(overlay)
H-minima 変換を適用し、浅い最小値を抑制します。h
の値は試行錯誤で決定されています。この値を変更し、h
の値がセグメント化の結果に与える影響を確認してください。
h = 30;
Ifilt = imhmin(Icomp,h);
フィルター処理されたイメージを 3 次元表面として表示します。
surf(Ifilt,EdgeColor="none")
colormap(gray)
フィルター処理されたイメージをセグメント化し、その結果を表示します。このイメージでは、前景にある各梨に概ね 1 つのマスクが割り当てられています。
Lfilt = watershed(Ifilt); overlayfilt = labeloverlay(I,Lfilt); imshow(overlayfilt)
入力引数
I
— 入力イメージ
数値配列
入力イメージは、任意の次元の数値配列として指定します。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
H
— H-minima 変換
非負のスカラー
H-minima 変換。非負のスカラーとして指定します。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
conn
— ピクセルの連結性
4
| 8
| 6
| 18
| 26
| 0
と 1
から成る 3 x 3 x ... x 3 の行列
ピクセルの連結性。次の表のいずれかの値を指定します。既定の連結性は 2 次元イメージでは 8
、3 次元イメージでは 26
です。
値 | 意味 | |
---|---|---|
2 次元連結性 | ||
| ピクセルのエッジの部分が接触している場合、ピクセルは連結されます。ピクセルの近傍は水平方向または垂直方向に隣接するピクセルです。 |
現在のピクセルを灰色で示します。 |
| ピクセルのエッジまたはコーナーが接触している場合、ピクセルは連結されます。ピクセルの近傍は水平方向、垂直方向または対角方向に隣接するピクセルです。 |
現在のピクセルを灰色で示します。 |
3 次元連結性 | ||
| 面が接触している場合、ピクセルは連結されます。ピクセルの近傍は次のように隣接するピクセルです。
|
現在のピクセルを灰色で示します。 |
| 面またはエッジが接触している場合、ピクセルは連結されます。ピクセルの近傍は次のように隣接するピクセルです。
|
現在のピクセルは立方体の中心です。 |
| 面、エッジまたはコーナーが接触している場合、ピクセルは連結されます。ピクセルの近傍は次のように隣接するピクセルです。
|
現在のピクセルは立方体の中心です。 |
高次元の場合、imhmin
は既定値
を使用します。conndef
(ndims(I),"maximal")
連結性は、0
と 1
から成る 3 × 3 × ... × 3 行列を指定し、任意の次元に対してより一般的に定義することもできます。1
の値を持つ要素は、conn
の中心要素に対する近傍の位置を定義します。conn
は、その中心要素に関して対称でなければなりません。詳細については、カスタム連結性の定義を参照してください。
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
参照
[1] Soille, P. Morphological Image Analysis: Principles and Applications. Springer-Verlag, 1999, pp. 170-171.
拡張機能
C/C++ コード生成
MATLAB® Coder™ を使用して C および C++ コードを生成します。
使用上の注意および制限:
imhmin
では C コードの生成がサポートされています (MATLAB® Coder™ が必要)。汎用のMATLAB Host Computer
ターゲット プラットフォームを選択した場合、プリコンパイルされたプラットフォーム固有の共有ライブラリを使用するコードが、imhmin
によって生成されます。共有ライブラリを使用するとパフォーマンスの最適化は維持されますが、コードを生成できるターゲット プラットフォームが限定されます。詳細については、Image Processing Toolbox でサポートされているコード生成のタイプを参照してください。コードを生成する際、オプションの 3 番目の入力引数
conn
はコンパイル時の定数でなければなりません。
バージョン履歴
R2006a より前に導入
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)