MATLABを使用して画像を分割する方法

MATLAB では、画像を分割するために次の方法を使用できます。

  1. しきい値ベースのセグメンテーション: imbinarize 関数を使用して、画像を 2 値画像に変換します。セグメンテーションは、全体的なしきい値手法または適応しきい値手法のいずれかを使用して実行できます。
img = imread('image.jpg');
bw = imbinarize(img, graythresh(img));
figure, imshow(bw);
  1. 領域成長ベースのセグメンテーション: regiongrowing 関数を使用して実装しています。この関数はシード点から成長を開始し、領域に隣接するピクセルを追加します。
img = imread('image.jpg');
seed = [100, 100];
bw = regiongrowing(img, seed);
figure, imshow(bw);
  1. グラフカットによるセグメンテーション:graphcut関数を用いて、前景と背景に画像を分割する。前景と背景のシード点を与える必要がある。
img = imread('image.jpg');
seedFg = [100, 100];
seedBg = [200, 200];
bw = graphcut(img, seedFg, seedBg);
figure, imshow(bw);
  1. エッジ検出によるセグメンテーション:edge関数を使用してエッジを検出し、エッジ繋ぎまたは閉合演算でエッジを閉じられた領域になるように接続する。
img = imread('image.jpg');
edges = edge(img, 'canny');
bw = imclose(edges, strel('disk', 5));
figure, imshow(bw);

画像分割の基本的な手法をいくつか紹介したが、実用上は状況に応じて調整や改良が必要となる場合がある。

bannerAds