このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
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
入力引数
I
— グレースケール イメージまたはバイナリ イメージ
数値配列 | logical 配列
グレースケールまたはバイナリ イメージ。数値配列または logical 配列として指定します。
例: I = imread('pout.tif');
データ型: single
| double
| int8
| int16
| int32
| uint8
| uint16
| uint32
| logical
conn
— ピクセルの連結性
4
| 8
| 6
| 18
| 26
| 0
と 1
から成る 3 x 3 x ... x 3 の行列
ピクセルの連結性。次の表のいずれかの値、または 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 = [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"])
は、イメージの左または右の境界に接する明るい構造を削除します。
Borders
— イメージのどの境界から構造を削除するか
string のベクトル | 0
と 1
から成る N 行 2 列の行列
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)
です。これは、イメージのどの境界に接する構造も削除するよう指定します。
Connectivity
— ピクセルの連結性
4
| 8
| 6
| 18
| 26
| 0
と 1
から成る 3 x 3 x ... x 3 の行列
R2023b 以降
ピクセルの連結性。4
、8
、6
、18
、26
、または 0
と 1
から成る 3×3×...×3 の行列として指定します。詳細については、conn
を参照してください。
データ型: double
| logical
出力引数
J
— 処理されたイメージ
数値配列 | 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.
拡張機能
C/C++ コード生成
MATLAB® Coder™ を使用して C および C++ コードを生成します。
使用上の注意および制限:
imclearborder
では C コードの生成がサポートされています (MATLAB® Coder™ が必要)。汎用のMATLAB Host Computer
ターゲット プラットフォームを選択した場合、プリコンパイルされたプラットフォーム固有の共有ライブラリを使用するコードが、imclearborder
によって生成されます。共有ライブラリを使用するとパフォーマンスの最適化は維持されますが、コードを生成できるターゲット プラットフォームが限定されます。詳細については、Image Processing Toolbox でサポートされているコード生成のタイプを参照してください。3 次元までの入力のみがサポートされています。
名前と値の引数
Connectivity
はコンパイル時の定数でなければなりません。Borders
の値が数値行列の形式ではない場合、その値を cell 配列として指定しなければなりません。
バージョン履歴
R2006a より前に導入R2023b: パフォーマンスの向上
関数 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 テスト システム上で行いました。
R2023b: どの境界から構造を削除するかを指定するオプション
名前と値の引数 Borders
を使用して、どの境界に連結している構造を削除するかを指定します。たとえば、imclearborder(I,Borders=["left" "right"])
は、左または右のイメージ境界にのみ接する明るい構造を削除します。
参考
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)