3. 区域生长算法
摘自:
图像中区域生长算法的详解和实现
OpenCV-区域生长算法
区域生长算法
基础
图像分割是一种重要的图像处理技术,而区域生长是图像分割技术的鄂一种。
区域生长算法的基本思想是将有相似性质的像素点合并到一起。对每一个区域要先指定一个种子点作为生长的起点,然后将种子点周围领域的像素点和种子点进行对比,将具有相似性质的点合并起来继续向外生长,直到没有满足条件的像素被包括进来为止。这样一个区域的生长就完成了。
- 给定种子点(种子点如何选取?)
种子点的选取很多时候都采用人工交互的方法实现,也有用其他方式的,
比如寻找物体并提取物体内部点或者利用其它算法找到的特征点作为种子点。
- 确定在生长过程中能将相邻像素包括进来的准则
这个准则很重要:例如包括灰度值的差值;彩色图像的颜色;梯度特征,包括梯度的方向和幅值特征。该点周围的区域特征,例如harr特征,也就是区域像素和特征。
举个例子:发在PAMI上的LSD直线检测算法中的关键一步就是找line support regions.这个区域的查找就是利用区域生长法则,生长的条件就是梯度的方向角度。
- 生长的停止条件
灰度差值的区域生长算法
算法实现的步骤:
a> 创建一个空白的图像(全黑);
b> 将种子点存入vector中,vector中存储待生长的种子点;
c> 依次弹出种子点并判断种子点如周围8领域的关系(生长规则),相似的点则作为下次生长的种子点;
d> vector中不存在种子点后就停止生长。