首页 > 技术文章 > DBSCAN算法原理

cheney-pro 2020-12-08 22:10 原文

1. DBSCAN算法原理

首先介绍该算法的主要概念与参数:

(1) ε值:样本与样本之间的距离阈值,如果样本A与样本B的距离小于该阈值,则认为样本A在样本B的邻域内,同时样本B也在样本A的邻域内。

(2) minPts:每一个样本的邻域内样本数阈值,如果该样本邻域内的样本数大于等于该阈值,则认为该样本是核心点。

(3) 核心点:即邻域内的样本数大于等于minPts的样本。如下图所示,如果样本A的邻域内(以A为圆心的圆内)样本数达到minPts以上,则认为A为核心点。

(4) 样本距离:欧式距离与曼哈顿距离是两种很常见的衡量数据样本距离的指标,假设有样本A(a1,a2,...,an)和样本B(b1,b2,...,bn),那么A与B的欧式距离为:

曼哈顿距离为:

(5) 样本的访问标记:一开始将所有样本的标记设置为-1,表示所有样本都没有被访问。算法执行过程中,会遍历一遍所有样本,经过遍历的样本则将其标记置1,表示该样本已经被访问过,不用再处理。

(6) 样本的类编号:设置一个初始类编号为-1,分类过程中,每新增一个类,类编号加1。每当一个样本被归类到某一个类之后,该样本的类编号则设置为当前新增的类编号。所以可以通过判断该样本的类编号是否为-1来判断其是否已经被归类。

DBSCAN算法的核心思想是,判断每一个样本是不是核心点,如果是核心点,则对该样本及其邻域内的样本进行分类处理,具体处理流程如下:

下面我们使用C++和opencv实现DBSCAN算法,对灰度图像进行分类。样本就是灰度图像的每一个像素点,可以把每一个像素点看成一个三维向量,由x坐标、y坐标、像素值I(x,y)组成[x, y, I(x,y)]。为了简化计算,我们使用曼哈顿距离来计算各样本之间的距离。

 

推荐阅读