bwmorph
バイナリ イメージのモルフォロジー演算
説明
例
バイナリ イメージのモルフォロジー演算の実行
バイナリ イメージの読み取りと表示
BW = imread('circles.png');
imshow(BW);
内部のピクセルを削除して形状の輪郭を残します。
BW2 = bwmorph(BW,'remove');
figure
imshow(BW2)
イメージのスケルトンを取得します。
BW3 = bwmorph(BW,'skel',Inf);
figure
imshow(BW3)
入力引数
BW
— バイナリ イメージ
2 次元数値行列 | 2 次元 logical 行列
バイナリ イメージ。2 次元数値行列または 2 次元 logical 行列として指定します。数値入力の場合、非ゼロのピクセルは 1
(true
) であると見なされます。
operation
— 実行するモルフォロジー演算
文字ベクトル | string スカラー
実行するモルフォロジー演算。以下のいずれかに指定します。
操作 | 説明 |
---|---|
| ボトム ハットを使用したモルフォロジー演算を実行し、そのイメージからイメージのモルフォロジー クロージングを差し引いたものを返します。 関数 |
| スケルトンの分岐点を検出する。次に例を示します。 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 1 1 1 1 becomes 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 メモ: 分岐点を見つけるには、イメージをスケルトン化しなければなりません。スケルトン化されたイメージを作成するには、 |
| 連結していない 2 つの非ゼロ近傍をもつ場合、連結されていないピクセルの橋渡しをする、つまり、 1 0 0 1 1 0 1 0 1 becomes 1 1 1 0 0 1 0 1 1 |
| このパターンの中心ピクセルのように孤立したピクセル ( 0 0 0 0 1 0 0 0 0 |
| モルフォロジー クロージング (膨張の後に収縮) を実行します。 関数 |
| 対角の塗りつぶしを使用して、背景の 8 連結性を削除します。次に例を示します。 0 1 0 0 1 0 1 0 0 becomes 1 1 0 0 0 0 0 0 0 |
| スケルトンの終点を検出します。次に例を示します。 1 0 0 0 1 0 0 0 0 1 0 0 becomes 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 0 0 0 メモ: 終点を見つけるには、イメージをスケルトン化しなければなりません。スケルトン化されたイメージを作成するには、 |
| このパターンの中心ピクセルのように孤立した内部ピクセル ( 1 1 1 1 0 1 1 1 1 |
| H 連結ピクセルを削除します。次に例を示します。 1 1 1 1 1 1 0 1 0 becomes 0 0 0 1 1 1 1 1 1 |
| 3 行 3 列近傍内の 5 つ以上のピクセルが |
| モルフォロジー オープニング (収縮の後に膨張) を実行します。 関数 |
| 内部のピクセルを削除します。このオプションでは、すべての 4 連結近傍が |
|
|
|
3 次元ボリュームを処理する、またはスケルトンを枝刈りするとき、関数 |
| 枝分かれしたピクセルを削除します。次に例を示します。 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 becomes 0 0 0 0 0 1 0 0 0 1 0 0 1 1 0 0 1 1 0 0 |
|
|
|
|
| トップ ハットを使用したモルフォロジー演算を実行し、そのイメージからイメージのモルフォロジー オープニングを差し引いたものを返します。 関数 |
ヒント
モルフォロジー収縮またはモルフォロジー膨張を実行するには、それぞれ関数 imerode
または imdilate
を使用します。関数 bwmorph
によって実行された収縮または膨張を繰り返す場合は、ones(3)
として近傍を指定します。
データ型: char
| string
n
— 演算を実行する回数
正の整数 | Inf
演算を実行する回数。正の整数または Inf
として指定します。n
を Inf
として指定した場合、イメージが変化しなくなるまで関数 bwmorph
が演算を反復します。
例: 100
データ型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
出力引数
BW2
— モルフォロジー演算後のイメージ
2 次元 logical 行列
モルフォロジー演算後のイメージ。2 次元 logical 行列として返されます。
データ型: logical
アルゴリズム
"thin"
オプションと共に使用した場合、bwmorph
は、次のアルゴリズム[3]を使用します。
最初の部分反復では、条件 G1、G2、G3 がすべて満たされる場合にのみ、ピクセル p を削除します。
2 番目の部分反復では、条件 G1、G2、 がすべて満たされる場合にのみ、ピクセル p を削除します。
条件 G1 は次のとおりです。
ここで、
x1、x2、...、x8 は、p の 8 つの近傍の値です。東近傍から反時計回りに番号が振られています。
条件 G2 は次のとおりです。
ここで、
条件 G3 は次のとおりです。
条件 G3' は次のとおりです。
細線化アルゴリズムの反復作業 1 回分は、部分反復作業 2 回分で構成されています。反復回数 (n=Inf
) として無限数を指定すると、イメージが変更しなくなるまで反復が行われます。条件はすべて、事前に計算されたルックアップ テーブルをもつ applylut
を使用してテストされます。
参照
[1] Haralick, Robert M., and Linda G. Shapiro, Computer and Robot Vision, Vol. 1, Addison-Wesley, 1992.
[2] Kong, T. Yung and Azriel Rosenfeld, Topological Algorithms for Digital Image Processing, Elsevier Science, Inc., 1996.
[3] Lam, L., Seong-Whan Lee, and Ching Y. Suen, "Thinning Methodologies-A Comprehensive Survey," IEEE Transactions on Pattern Analysis and Machine Intelligence, Vol 14, No. 9, September 1992, page 879, bottom of first column through top of second column.
[4] Pratt, William K., Digital Image Processing, John Wiley & Sons, Inc., 1991.
拡張機能
C/C++ コード生成
MATLAB® Coder™ を使用して C および C++ コードを生成します。
使用上の注意および制限:
bwmorph
では C コードの生成がサポートされています (MATLAB® Coder™ が必要)。汎用のMATLAB Host Computer
ターゲット プラットフォームを選択した場合、プリコンパイルされたプラットフォーム固有の共有ライブラリを使用するコードが、bwmorph
によって生成されます。共有ライブラリを使用するとパフォーマンスの最適化は維持されますが、コードを生成できるターゲット プラットフォームが限定されます。詳細については、Image Processing Toolbox でサポートされているコード生成のタイプを参照してください。コードを生成する際、演算を指定する文字ベクトルまたは string スカラーはコンパイル時の定数でなければなりません。最良の結果を得るには、入力イメージのクラスが
logical
でなければなりません。
GPU コード生成
GPU Coder™ を使用して NVIDIA® GPU のための CUDA® コードを生成します。
使用上の注意および制限:
コードを生成する際、演算を指定する文字ベクトルまたは string スカラーはコンパイル時の定数でなければなりません。最良の結果を得るには、入力イメージのクラスが
logical
でなければなりません。
GPU 配列
Parallel Computing Toolbox™ を使用してグラフィックス処理装置 (GPU) 上で実行することにより、コードを高速化します。
この関数は、GPU 配列を完全にサポートします。詳細については、GPU でのイメージ処理を参照してください。
バージョン履歴
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)