名前

Watershed — はウォータシェド変換を画像に適用する

呼び出し

SegmentedImage = Watershed(Image, Marker);

引数

Image

2次元の行列で、型はuint8である

Marker

2次元の行列で、型はbooleanで、値が%tの画像はウォータシェド変換の最初点である

SegmentedImage

行列で、次元はImageと同じで、型はint32である

説明

本関数はウォータシェド変換を画像に適用する。

RGB = ReadImage('contrib\IPD-5.0\demos\teaset.png');

Image = RGB2Gray(RGB);

global EDGE_SOBEL;

Gradient = EdgeFilter(Image, EDGE_SOBEL);

EdgeImage = ~SegmentByThreshold(Gradient, 60);

DistanceImage = DistanceTransform(EdgeImage);

ThresholdImage = SegmentByThreshold(DistanceImage, 8);
          
MarkerImage = SearchBlobs(ThresholdImage);

SegmentedImage = Watershed(Gradient, MarkerImage);

figure();

ColorMapLength = length(unique(SegmentedImage));

ShowImage(SegmentedImage, ...
                        'Result of Watershed Transform', ...
                        jetcolormap(ColorMapLength));  

参考

DistanceTransform, EdgeFilter