Ix = imlter(double(I), hx, 'replicate');
gradmag = sqrt(Ix.^2 + Iy.^2);
gure('units', 'normalized', 'position', [0 0 1 1]);
subplot(1, 2, 1); imshow(I,[]), title('灰度图像')
subplot(1, 2, 2); imshow(gradmag,[]), title('梯度幅值图像')
可否直接对梯度幅值图像使用分水岭算法?
L = watershed(gradmag);
Lrgb = label2rgb(L);
gure('units', 'normalized', 'position', [0 0 1 1]);
subplot(1, 2, 1); imshow(gradmag,[]), title('梯度幅值图像')
subplot(1, 2, 2); imshow(Lrgb); title('梯度幅值做分水岭变换')
直接使用梯度模值图像进行分水岭算法得到的结果往往会存在过度分割的现象。
因此通常需要分别对前景对象和背景对象进行标记,以获得更好的分割效果。
第 3 步:标记前景对象
有多种方法可以应用在这里来获得前景标记,这些标记必须是前景对象内部的