Matlab图像处理教程系列之图像分割(二)
1.使用距离变换的分水岭分割 (1)距离变换 D = bwdist(BW); 二值图像的距离变换是指从每个像素到最接近零值的像素的距离。 (2)测地距离变换 D = bwdistgeodesic(BW,mask); 2.使用梯度的分水岭分割 获取梯度图像: h = fspecial('sobel'); fd = tofloat(f); g = sqrt(imfilter(fd, h, 'replicate') .^ 2 + ... imfilter(fd, h', 'replicate') .^ 2); 在使用针对分割的分水岭变换之前,常常使用梯度幅度对图像进行预处理。梯度幅度图像沿着物体的边缘有较高的像素值,而在其他地方则有较低的像素值。在理想的情况下,分水岭变换可得到沿物体边缘的分水岭脊线。若梯度图像直接进行分水岭变换可能会严重过分割,所以在计算分水岭变换之前可以先平滑梯度图像。 3.控制标记符的分水岭分割 (1)计算局部极小值区域 rm = imregionalmin(f); 其中,f 是灰度图像,rm 是二值图像,rm 的前景像素标记出局部小区域的位置。 (2)扩展极小值 im = imextendedmin(f,h); 其中,f 是灰度图像,h 是高度阈值,im 是一幅二值图像,im 的前景像素标记了深的局部小区域的位置。 (3)强制最小 mp = imimposemin