PCL_点云分割_最小割算法
普遍应用于前背景分割,立体视觉、抠图等。 GraphCuts图是在普通图的基础上多了2个顶点,这2个顶点分别用符号**”S”和”T”**表示,统称为终端顶点。其它所有的顶点都必须和这2个顶点相连形成边集合中的一部分。所以Graph Cuts中有两种顶点,也有两种边。 第一种顶点和边是:第一种普通顶点对应于图像中的每个像素。每两个邻域顶点(对应于图像中每两个邻域像素)的连接就是一条边。这种边也叫n-links。 第二种顶点和边是:除图像像素外,还有另外两个终端顶点,叫S(source:源点,取源头之意)和T(sink:汇点,取汇聚之意)。每个普通顶点和这2个终端顶点之间都有连接,组成第二种边。这种边也叫t-links。 PCL中实现最小割算法: (1)构造图:对于一个给出的点云,算法会以点云中每一个点,另加一个source(源点)、一个sink(汇点),作为GraphCut图的顶点;点云中每个点与其近邻连线所形成的边叫n-links,与sink、source连线形成的边叫t-links。 (2)对边赋权值: (3)最小割计算:将点云分为前景和背景。 代码: # include <iostream> # include <vector> # include <pcl/io/pcd_io.h> # include <pcl/point_types.h> # include <pcl