图像分割matlab

Matlab图像处理教程系列之图像分割(二)

若如初见. 提交于 2020-02-17 17:55:41
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

数字图像处理(八)——Matlab实现单阈值与多阈值分割

青春壹個敷衍的年華 提交于 2020-02-01 10:30:32
实验内容 对左侧图像进行单阈值、多阈值分割,分别得到右侧的结果。请大家实现这两种方法的分割,对比单阈值与多阈值以及不同阈值的分割效果。 实验一:单阈值分割 方法一:人工阈值选择法: 阈值分割最简单的方法就是人工选择法。基于灰度阈值的分割方法,其关键是如何合理的选择阈值。人工选择方法是通过人眼的观察,应用人对图像的知识,在分析图像直方图的基础上,人工选择出合理的阈值。也可以在人工选择出阈值后,根据分割的效果,不断地进行交互操作,从而选择出最佳的阈值。首先,图像的原图如下: 其次,利用imhist()函数显示出图像的灰度直方图: 通过观察图像灰度直方图可以发现,在150-200之间的灰度值出现很少,而在两边出现了明显的两个高峰,因此根据人工选择阈值法选取183作为图像的阈值分割点,得到的实验效果图如下图所示: 通过观察可以发现人工阈值选择法成功得出了实验效果图,利用灰度直方图的峰谷阈值方法是一种有效且简单的阈值方法,但是该方法有一个局限性,就是要求图像的灰度直方图必须具有双峰型。 方法二:Ostu法: Ostu法是一种使类间方差最大的自动确定阈值的方法,该方法具有简单、处理速度快的特点,是一种常用的阈值选取方法。算法的具体步骤如下: 1、给定一个初始阈值Th,将图像分为C1和C2两类。 2、分别计算出每个灰度值在图像矩阵中的个数,存放在count()矩阵当中。 3