imclearborder
イメージ境界と連結している明るい構造を非表示にする
説明
は、1 つ以上の名前と値の引数を使用して、境界構造の選択に関するオプションを指定します。たとえば、J = imclearborder(___,Name=Value)imclearborder(I,Borders=["left" "right"]) は、イメージの左または右の境界に接する構造のみを削除します。
例
バイナリ イメージ (石英の微細柱状粒子のイメージを後処理したもの [2]) をワークスペースに読み取って表示します。
originalBW = imread("quartz_columns.png");
imshow(originalBW)
イメージ内でイメージ境界に連結している明るいオブジェクトをすべてクリアし、調整後のイメージを表示します。
BWclearB = imclearborder(originalBW); imshow(BWclearB)

暗い境界をもつオブジェクトを含むグレースケール イメージをワークスペースに読み取って表示します。
I = imread("logo.png");
imshow(I)
イメージの補数を取り、境界を削除します。イメージを表示します。
J = imcomplement(I); JNoBorder = imclearborder(J); imshow(JNoBorder)

イメージの補数を再度取り、元の入力イメージのコントラストに戻します。
INoBorder = imcomplement(JNoBorder); imshow(INoBorder)

バイナリ イメージ (石英の微細柱状粒子のイメージを後処理したもの [2]) をワークスペースに読み取って表示します。
originalBW = imread("quartz_columns.png");
imshow(originalBW)
イメージの上または下の境界と連結しているオブジェクトのみを削除します。
BWclear2B = imclearborder(originalBW, Borders=["top" "bottom"]); imshow(BWclear2B)

シンプルなバイナリ イメージを作成します。
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 配列として指定します。
データ型: single | double | int8 | int16 | int32 | uint8 | uint16 | uint32 | logical
ピクセルの連結性。次の表のいずれかの値、または 0 と 1 から成る 3×3×...×3 の行列として指定します。既定の連結性は 2 次元イメージでは 8、3 次元イメージでは 26 です。
値 | 意味 | |
|---|---|---|
2 次元連結性 | ||
| ピクセルのエッジの部分が接触している場合、ピクセルは連結されます。ピクセルの近傍は水平方向または垂直方向に隣接するピクセルです。 |
現在のピクセルを灰色で示します。 |
| ピクセルのエッジまたはコーナーが接触している場合、ピクセルは連結されます。ピクセルの近傍は水平方向、垂直方向または対角方向に隣接するピクセルです。 |
現在のピクセルを灰色で示します。 |
3 次元連結性 | ||
| 面が接触している場合、ピクセルは連結されます。ピクセルの近傍は次のように隣接するピクセルです。
|
現在のピクセルを灰色で示します。 |
| 面またはエッジが接触している場合、ピクセルは連結されます。ピクセルの近傍は次のように隣接するピクセルです。
|
現在のピクセルは立方体の中心です。 |
| 面、エッジまたはコーナーが接触している場合、ピクセルは連結されます。ピクセルの近傍は次のように隣接するピクセルです。
|
現在のピクセルは立方体の中心です。 |
高次元の場合、imclearborder は既定値 を使用します。conndef(ndims(I),"maximal")
連結性は、0 と 1 から成る 3 × 3 × ... × 3 行列を指定し、任意の次元に対してより一般的に定義することもできます。1 の値を持つ要素は、conn の中心要素に対する近傍の位置を定義します。conn は、その中心要素に関して対称でなければなりません。詳細については、カスタム連結性の定義を参照してください。
引数 conn および名前と値の引数 Connectivity の両方を指定した場合、imclearborder は、Connectivity に従って連結性を設定し、conn の値を無視します。
メモ
既定以外の連結性を設定した場合、入力イメージのエッジ上のピクセルは、境界上のピクセルであるとは見なされません。たとえば、conn = [0 0 0; 1 1 1; 0 0 0] の場合、最初と最後の行の上の要素は、連結性の定義に従って、イメージの外側の領域と接続していないため境界のピクセルとは見なされません。
データ型: double | logical
名前と値の引数
オプションの引数のペアを Name1=Value1,...,NameN=ValueN として指定します。ここで、Name は引数名で、Value は対応する値です。名前と値の引数は他の引数の後に指定しなければなりませんが、ペアの順序は重要ではありません。
例: imclearborder(I,Borders=["left" "right"]) は、イメージの左または右の境界に接する明るい構造を削除します。
R2023b 以降
イメージのどの境界から構造を削除するか。string のベクトル、または 0 と 1 から成る N 行 2 列の行列として指定します。
string のベクトル — 2 次元イメージのどの境界から構造を削除するかを、
"left"、"right"、"top"、および"bottom"の任意の組み合わせとして指定します。Iを 2 次元イメージとして指定した場合、Bordersの既定値は["left" "right" "top" "bottom"]です。0と1から成る 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 以降
ピクセルの連結性。4、8、6、18、26、または 0 と 1 から成る 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 2025). Accessed August 8, 2025. https://www.doi.org/10.17612/P7Z59J.
拡張機能
使用上の注意および制限:
imclearborderでは C コードの生成がサポートされています (MATLAB® Coder™ が必要)。汎用のMATLAB Host Computerターゲット プラットフォームを選択した場合、プリコンパイルされたプラットフォーム固有の共有ライブラリを使用するコードが、imclearborderによって生成されます。共有ライブラリを使用するとパフォーマンスの最適化は維持されますが、コードを生成できるターゲット プラットフォームが限定されます。詳細については、Image Processing Toolbox でサポートされているコード生成のタイプを参照してください。3 次元までの入力のみがサポートされています。
名前と値の引数
Connectivityはコンパイル時の定数でなければなりません。Bordersの値が数値行列の形式ではない場合、その値を cell 配列として指定しなければなりません。
使用上の注意および制限については、「C/C++ コード生成」セクションを参照してください。GPU コード生成にも同様の、使用上の注意および制限が適用されます。
バージョン履歴
R2006a より前に導入関数 imclearborder のパフォーマンスが向上しました。たとえば、以下のコードで時間を計測すると、前のリリースと比べて imclearborder の呼び出しが約 1.7 倍高速化しています。
function t = imclearborderTimingTest A = imbinarize(imread("rice.png")); f = @() imclearborder(A); t = timeit(f); end
およその実行時間は次のとおりです。
R2023a: 0.85 ms
R2023b: 0.51 ms
コードの時間計測は、macOS 12.5.1、Intel® Core i9 CPU @ 3.6 GHz テスト システム上で行いました。
名前と値の引数 Borders を使用して、どの境界に連結している構造を削除するかを指定します。たとえば、imclearborder(I,Borders=["left" "right"]) は、左または右のイメージ境界にのみ接する明るい構造を削除します。
参考
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
- América Latina (Español)
- Canada (English)
- United States (English)
ヨーロッパ
- 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)




