Adi Shavit が述べたように、画像は非常にノイズが多いです。これは、画像上で流域を直接使用すると、過剰なセグメンテーションにつながります (画像全体に多くの極値があるため)。
画像を滑らかにするために、何らかの前処理を実行する必要があります。ぼかしを使用したくない場合はimreconstruct
、極値を見つける前に形態学的再構成 ( ) を試すことができます。
% if img is your original grayscale image
wSize = 6;
se = strel('disk', wSize);
% opening by reconstruction - to remove specks in the dark background
imgEroded = imerode(img, se);
imgRecon = imreconstruct(imgEroded, img);
imgReconComp = imcomplement(imgRecon);
% opening by reconstruction - to homogenize the pixels in the foreground(clouds)
imgEroded2 = imerode(imgReconComp, se);
imgRecon2 = imreconstruct(imgEroded2, imgReconComp);
minima = imregionalmin(imgRecon2);
元の画像に重ねられた最小値は次のようになります -

構造化要素のサイズ/形状を試して、より良い結果が得られるかどうかを確認できます。
極値をシードとして使用して、勾配画像で流域セグメンテーションを実行することもできますが、これでは意味のある結果が得られない可能性があります (とにかくセグメンテーションを実行しようとしているようには見えません)。