主要内容

bwmorph3

バイナリボリュームの演算

説明

J= bwmorph3(V,operation)は string または文字ベクトルoperationを指定したモルフォロジー演算をバイナリ ボリュームVに適用します。bwmorph3は、論理ボリュームJでの结果を返し。。

すべて折りたたむ

3 ri mriボリュームデータ読み込みバイナリボリュームを作成。。。。沃尔肖を使用して、ボリューム データを表示します。

loadmristack; BW1 = mristack > 127; volshow(BW1);

1 に設定されているボクセルであり、かつ、0 に設定されているボクセルで囲まれているボクセルを削除するには、ボリューム データで'干净的'操作を実行します。削除するボクセルを決定するとき、'干净的'26个个するボクセルを考虑。。。。沃尔肖を使用て结果表示します。

BW2 = bwmorph3(BW1,'干净的');沃尔肖(BW2);

比较のため,でで'majority'操作を実行ます'majority'操作'干净的'操作同様を実行します。。,ターゲットボクセルボクセルの近傍あるボクセルボクセルボクセルのの半分半分以上以上以上以上以上以上以上以上以上以上以上以上以上以上以上以上以上以上以上以上以上以上以上以上以上以上以上以上以上以上以上以上以上以上以上以上以上以上以上以上以上以上以上以上以上以上以上以上以上以上以上以上以上以上以上以上以上以上以上以上以上以上以上以上以上以上以上以上以上以上以上以上以上以上以上以上以上以上以上以上以上以上以上'majority'操作も 26 個の隣接ボクセルを考慮します。沃尔肖を使用て结果表示します。

bw3 = bwmorph3(bw1,'多数');Volshow(BW3);

この例では、bwmorph3でサポートされるモルフォロジー演算のそれぞれがシンプル ボリュームでどのように機能するのかを説明します。

値が1の3 x 3 x 3のキューブを中心に含む,値が0の9 x 9 x 3の直方体を作成します。

innercube = ones(3,3,3); cube_center = padarray(innercube,[3 3],0,'both')
cube_center = cube_center(:,::,1)= 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 01 1 1 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 cube_center(:,:,2)= 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 1 11 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 cube_center(:,:,3) = 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

remove 操作でのピクセルの Off 設定

'remove'演算をし,内侧キューブの中央をを0に設定します。この操作は、'on'ボクセルによって完全に囲まれた、任意の'on'ボクセルの値を、'离开'に設定します。

remove_center = bwmorph3(cube_center,'remove')
remove_center =9x9x3 logical arrayremove_center(::,:,1)= 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 1 1 1 11 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 remove_center(:, :, :,2)= 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 remove_center(:,:,3) = 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

填充演算ののの

'充满'演算をし,内侧キューブの中央をを1に設定します。この操作は、'on'ボクセルによって完全に囲まれた、任意の'离开'ボクセルの値を、'on'に設定します。

fill_center = bwmorph3(remove_center,'充满')
fill_center =9x9x3 logical arrayfill_center(:,:,1) = 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 fill_center(:,:,2) = 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 fill_center(:,:,3) = 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

清洁演算でのピクセル除去除去

'干净的'演算を使用して、1に设定てがボリュームコンポーネントコンポーネント连结していいボクセルボクセルすべてすべてををを削除削除削除削除削除しします。。。。このこのこの例例例でではは,,,,,,,,,,,,,,,、2'干净的'演算を使用してそれを削除します。

Cube_center(2,2,2) = 1
cube_center = cube_center(:,::,1)= 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 01 1 1 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 cube_center(:,:,2)= 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 cube_center(:,:,3) = 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
cube_cleaned = bwmorph3(cube_center,'干净的')
cube_cleaned =9x9x3 logical arraycube_cleaned(:,::,1)= 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 1 1 1 11 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 CUBE_CLEANED(:,:,:,2)= 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 cube_cleaned(:,:,3) = 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

过半数の検出

'majority'演算を使用して、Cube_centerの過半数を 検出します。この演算では、ボクセルの 26 個の連結された隣接ボクセルの半数以上 (majority) が1に設定されている場合にだけボクセルが維持されます。

cube_major = bwmorph3(cube_center,'多数')
cube_major =9x9x3 logical arraycube_major(:,::,1)= 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 CUBE_MAJOR(:,:,:,2)= 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 cube_major(:,:,3) = 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

骨格にした形状作成作成

分岐点と終点のオプションを描くには、別の小さな行列 (今回は骨格のような線形の形状) を作成します。

x1 =眼(5);x2 =零(5);x2(3,3)= 1;x3 = x2;shape = cat(3,x1,x2,x3)
shape = shape(:,:,1)= 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 shape(:, :, :,2)= 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 00 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 shape(:,:,3) = 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 00 0 0 0

终点の検出

形状の終点を'endpoints'演算を使用して検出します。この形状には、3 つの終点があります。1 番目の平面で対角の両端と、3 番目の平面の中央を通る線の端です。

shape_endpts = bwmorph3(shape,'endpoints')
shape_endpts =5x5x3 logical arrayshape_endpts(:,:,1) = 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 shape_endpts(:,:,2) = 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 shape_endpts(:,:,3) = 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0

分岐点の検出

形状の分岐点を'branchpoints'演算を使用して検出します。形状には、1 つの分岐点があります。対角線と水平線が交差するところです。

shape_brpts = bwmorph3(shape,'branchpoints')
shape_brpts =5x5x3 logical arrayshape_brpts(:,:,1) = 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0 shape_brpts(:,:,2) = 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 shape_brpts(:,:,3) = 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

入力引数

すべて折りたたむ

入力ボリューム。数値配列または logical 配列として指定します。数値入力场合,ゼロのピクセルは1(真的)であるとれます。

bwmorph3は 1 次元、2 次元または 3 次元配列を受け付けます。1 次元または 2 次元の入力配列を指定する場合、bwmorph3は、3 次元ボリュームに対して定義されているモルフォロジー演算を実行します。2 次元の処理を実行する場合は、代わりにbwmorphを使用し。

データ::single|双倍的|int8|INT16|INT32|INT64|uint8|UINT16|uint32|uint64|logical

実行するモルフォロジー演算。以下の文字ベクトルまたは string スカラーのいずれかに指定します。これらの演算の例については、モルフォロジー演算の说明を参照してください。

操作

説明

'branchpoints'

スケルトンの分岐点を検出する。分岐点は、複数の分岐が交差するジャンクションのボクセルです。

分岐点を見つけるには、イメージをスケルトン化しなければなりません。スケルトン化されたイメージを作成するには、BWSKELを使用し。

'干净的'

0 に設定することで、孤立したボクセルを削除します。孤立ボクセルは、126连结ボクセル,连结连结,,,,,,,,,,0に設定されているボクセルに囲まれているものです。

'endpoints'

スケルトンの終点を検出します。終点は分岐の端にあるボクセルです。

メモ: 終点を見つけるには、イメージをスケルトン化しなければなりません。スケルトン化されたイメージを作成するには、BWSKELを使用し。

'充满'

1に设定で,のボクセルをます。の孤立ボクセルはは个别のの,,,0に設定されており、1に設定されているボクセルで (6 個に連結されて) 囲まれています。

'多数'

1に設定されているボクセルを維持します。ただし 3 x 3 x 3 で、26 個の隣接に連結されたものの中で 14 個以上 (majority) のボクセルが1に設定されている場合です。他の場合は、ボクセルを0に設定します。

モルフォロジー演算の说明を参照してください。

'remove'

0に設定して内部ボクセルを削除します。内部ボクセルは個別のボクセルで、1に設定されており、1に設定されているボクセルで (6 個に連結されて) 囲まれています。

データ::char|string

出力引数

すべて折りたたむ

モルフォロジー演算後のボリューム。入力ボリュームV逻辑配列配列として返されれ。。。。

ヒント

  • 3次元モルフォロジーの收缩膨张行うには,关数imerodeまたはimdilateに构造化要素ones(3,3,3)を指定して使用します。

  • 3次元,クロージングオープニングトップフィルター处理またはハットフィルター处理をを実行するに关数关数快到了imopenimtophat,またはimbothatに构造化要素ones(3,3,3)を指定して使用します。

バージョン履歴

R2018Aで导入