Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

imclearborder

イメージ境界と連結している明るい構造を非表示にする

説明

J = imclearborder(I) は、周りのものよりも明るく、イメージ境界に連結している、イメージ I 内の構造を非表示にします。この関数を使用して、イメージ境界をクリアするか、イメージ境界を選択します。グレースケール イメージの場合、imclearborder は、境界構造を非表示にするだけでなく、全体的な強度レベルを低くする傾向があります。出力イメージ J は、入力に応じてグレースケールまたはバイナリになります。

J = imclearborder(I,conn) はピクセルの連結性 conn を指定します。

J = imclearborder(___,Name=Value) は、1 つ以上の名前と値の引数を使用して、境界構造の選択に関するオプションを指定します。たとえば、imclearborder(I,Borders=["left" "right"]) は、イメージの左または右の境界に接する構造のみを削除します。

すべて折りたたむ

バイナリ イメージ (石英の微細柱状粒子のイメージを後処理したもの [2]) をワークスペースに読み取って表示します。

originalBW = imread("quartz_columns.png");
imshow(originalBW)

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

イメージ内でイメージ境界に連結している明るいオブジェクトをすべてクリアし、調整後のイメージを表示します。

BWclearB = imclearborder(originalBW);
imshow(BWclearB)

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

暗い境界をもつオブジェクトを含むグレースケール イメージをワークスペースに読み取って表示します。

I = imread("logo.png");
imshow(I)

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

イメージの補数を取り、境界を削除します。イメージを表示します。

J = imcomplement(I);
JNoBorder = imclearborder(J);
imshow(JNoBorder)

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

イメージの補数を再度取り、元の入力イメージのコントラストに戻します。

INoBorder = imcomplement(JNoBorder);
imshow(INoBorder)

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

バイナリ イメージ (石英の微細柱状粒子のイメージを後処理したもの [2]) をワークスペースに読み取って表示します。

originalBW = imread("quartz_columns.png");
imshow(originalBW)

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

イメージの上または下の境界と連結しているオブジェクトのみを削除します。

BWclear2B = imclearborder(originalBW, Borders=["top" "bottom"]);
imshow(BWclear2B)

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

シンプルなバイナリ イメージを作成します。

BW = [0     0     0     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     1     1     1     0     0     0
      0     1     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];

4 連結性を使用してイメージの境界にあるピクセルをクリアします。imclearborder は (5,2) のピクセルをクリアしません。4 連結性を使用すると、(4,1) の境界のピクセルに連結しているとは見なされないからです。

BWc1 = imclearborder(BW,Connectivity=4)
BWc1 = 9×9

     0     0     0     0     0     0     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     1     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

次に、8 連結性を使用してイメージの境界にあるピクセルをクリアします。imclearborder は (5,2) のピクセルをクリアします。8 連結性を使用すると、(4,1) の境界のピクセルに連結していると見なされるためです。

BWc2 = imclearborder(BW,Connectivity=8)
BWc2 = 9×9

     0     0     0     0     0     0     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

入力引数

すべて折りたたむ

グレースケールまたはバイナリ イメージ。数値配列または logical 配列として指定します。

例: I = imread('pout.tif');

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

ピクセルの連結性。次の表のいずれかの値、または 01 から成る 3×3×...×3 の行列として指定します。既定の連結性は 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

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

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

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

メモ

既定以外の連結性を設定した場合、入力イメージのエッジ上のピクセルは、境界上のピクセルであるとは見なされません。たとえば、conn = [0 0 0; 1 1 1; 0 0 0] の場合、最初と最後の行の上の要素は、連結性の定義に従って、イメージの外側の領域と接続していないため境界のピクセルとは見なされません。

メモ

引数 conn および名前と値の引数 Connectivity の両方を指定した場合、imclearborder は、Connectivity に従って連結性を設定し、conn の値を無視します。

データ型: double | logical

名前と値の引数

オプションの引数のペアを Name1=Value1,...,NameN=ValueN として指定します。ここで、Name は引数名で、Value は対応する値です。名前と値の引数は他の引数の後に指定しなければなりませんが、ペアの順序は重要ではありません。

例: imclearborder(I,Borders=["left" "right"]) は、イメージの左または右の境界に接する明るい構造を削除します。

R2023b 以降

イメージのどの境界から構造を削除するか。string のベクトル、または 01 から成る N 行 2 列の行列として指定します。

  • string のベクトル — 2 次元イメージのどの境界から構造を削除するかを、"left""right""top"、および "bottom" の任意の組み合わせとして指定します。I を 2 次元イメージとして指定した場合、Borders の既定値は ["left" "right" "top" "bottom"] です。

  • 01 から成る N 行 2 列の行列 — N 次元イメージのどの境界から構造を削除するかを指定します。ここで、各行の最初の要素は対応する次元の最初の境界を表し、2 番目の要素はその次元の 2 番目の境界を表します。たとえば、Borders(k,1)1 の場合、k 番目の次元で最初の境界に接する構造が選択されます。Borders(k,2)1 の場合、k 番目の次元で 2 番目の境界に接する構造が選択されます。たとえば、Borders = [0 0; 1 1; 0 0] と指定することは、Borders = ["left" "right"] と指定することと等価です。N 次元イメージの Borders の既定値は ones(ndims(I),2) です。これは、イメージのどの境界に接する構造も削除するよう指定します。

R2023b 以降

ピクセルの連結性。4861826、または 01 から成る 3×3×...×3 の行列として指定します。詳細については、conn を参照してください。

データ型: double | logical

出力引数

すべて折りたたむ

処理されたグレースケールまたはバイナリ イメージ。指定した入力イメージに応じて、数値配列または logical 配列として返されます。

アルゴリズム

imclearborder はモルフォロジー再構成を使用します。

  • マスク イメージは入力イメージです。

  • マーカー イメージは境界沿いを除きすべて 0 で、マスク イメージと等しくなります。

参照

[1] Soille, Pierre. Morphological Image Analysis: Principles and Applications Berlin ; New York: Springer, 1999, 164–165.

[2] Molnar, Ian. Uniform quartz - Silver nanoparticle injection experiment, Digital Rocks Portal (April 2016). Accessed March 10, 2023. https://www.digitalrocksportal.org/projects/44, made available for documentation use under the ODC-BY 1.0 Attribution License.

拡張機能

バージョン履歴

R2006a より前に導入

すべて展開する