漫水填充法
漫水填充算法是根据像素灰度值之间的差值寻找相同区域实现分割。我们可以将图像的灰度值理解成像素点的高度,这样一张图像可以看成崎岖不平的地面或者山区,向地面上某一个低洼的地方倾倒一定量的水,水将会掩盖低于某个高度的区域。漫水填充法利用的就是这样的原理,其形式与注水相似,因此被称形象的称为“漫水”。
与向地面注水一致,漫水填充法也需要在图像选择一个注水像素,该像素被称为种子点,种子点按照一定规则不断向外扩散,从而形成具有相似特征的独立区域,进而实现图像分割。漫水填充分割法主要分为以下三个步骤:
- 选择种子点(x,y);
- 以种子点为中心,判断4邻域或者8邻域的像素值与种子点像素值的差值,将差值小于阈值的像素点添加进区域内。
- 将新加入的像素点作为新的种子点,反复执行第二步,直到没有新的像素点被添加进该区域。
计算方式:
- in case of a grayscale image and floating range(灰度图,浮动范围)
src(x′,y′)−loDiff≤src(x,y)≤src(x′,y′)+upDiff\texttt{src} (x’,y’)- \texttt{loDiff} \leq \texttt{src} (x,y) \leq \texttt{src} (x’,y’)+ \texttt{upDiff}src(x′,y′)−loDiff≤src(x,y)≤src(x′,y′)+upDiff
- in case of a grayscale image and fixed range(灰度图,固定范围)
src(seedPoint.x,seedPoint.y)−loDiff≤src(x,y)≤src(seedPoint.x,seedPoint.y)+upDiff\texttt{src} ( \texttt{seedPoint} .x, \texttt{seedPoint} .y)- \texttt{loDiff} \leq \texttt{src} (x,y) \leq \texttt{src} ( \texttt{seedPoint} .x, \texttt{seedPoint} .y)+ \texttt{upDiff}src(seedPoint.x,seedPoint.y)−loDiff≤src(x,y)≤src(seedPoint.x,seedPoint.y)+upDiff
- in case of a color image and floating range(彩色图,浮动范围)
src(x′,y′)r−loDiffr≤src(x,y)r≤src(x′,y′)r+upDiffr,\texttt{src} (x’,y’)_r- \texttt{loDiff} _r \leq \texttt{src} (x,y)_r \leq \texttt{src} (x’,y’)_r+ \texttt{upDiff} _r,src(x′,y′)r−loDiffr≤src(x,y)r≤src(x′,y′)r+upDiffr,
src(x′,y′)g−loDiffg≤src(x,y)g≤src(x′,y′)g+upDiffg\texttt{src} (x’,y’)_g- \texttt{loDiff} _g \leq \texttt{src} (x,y)_g \leq \texttt{src} (x’,y’)_g+ \texttt{upDiff} _gsrc(x′,y′)g−loDiffg≤src(x,y)g≤src(x′,y′)g+upDiffg
and
src(x′,y′)b−loDiffb≤src(x,y)b≤src(x′,y′)b+upDiffb\texttt{src} (x’,y’)_b- \textt