💻
Tutorial
  • INTRO
  • Part 0 (개요)
    • README
    • 3D 영상처리
    • [별첨] PCL & PCD란 (100%)
    • chapter02 : PCL 설치 (100%)
    • chapter03 : ROS 실습 준비(100%)
  • Part 1 (초급)
    • README
    • PCL 기반 로봇 비젼
    • [별첨] 파일 생성 및 입출력 (70%)
      • PCL-Cpp (70%)
      • PCL-Python (70%)
      • Open3D-Python (70%)
      • ROS 실습 (90%)
    • Filter
    • [별첨] 샘플링 (70%)
      • 다운샘플링-PCL-Cpp (70%)
      • 다운샘플링-PCL-Python (50%)
      • 업샘플링-PCL-Cpp (70%)
      • ROS 실습 (90%)
    • [별첨] 관심 영역 설정 (70%)
      • PCL-Cpp (70%)
      • PCL-Python (70%)
      • ROS 실습 (90%)
    • [별첨] 노이즈 제거 (70%)
      • PCL-Cpp (70%)
      • PCL-Python (50%)
      • ROS 실습 (90%)
  • Part 2 (중급)
    • README
    • Kd-Tree/Octree Search
    • Chapter03 : Sample Consensus
    • [별첨] 바닥제거 (RANSAC) (70%)
      • PCL-Cpp (70%)
      • PCL-Python (70%)
      • ROS 실습 (90%)
    • 군집화 (70%)
      • Euclidean-PCL-Cpp (70%)
      • Euclidean-PCL-Python (0%)
      • Conditional-Euclidean-PCL-Cpp (50%)
      • DBSCAN-PCL-Python (0%)
      • Region-Growing-PCL-Cpp (50%)
      • Region-Growing-RGB-PCL-Cpp (50%)
      • Min-Cut-PCL-Cpp (50%)
      • Model-Outlier-Removal-PCL-Cpp (50%)
      • Progressive-Morphological-Filter-PCL-Cpp (50%)
    • 포인트 탐색과 배경제거 (60%)
      • Search-Octree-PCL-Cpp (70%)
      • Search-Octree-PCL-Python (70%)
      • Search-Kdtree-PCL-Cpp (70%)
      • Search-Kdtree-PCL-Python (70%)
      • Compression-PCL-Cpp (70%)
      • DetectChanges-PCL-Cpp (50%)
      • DetectChanges-PCL-Python (50%)
    • 특징 찾기 (50%)
      • PFH-PCL-Cpp
      • FPFH-PCL-Cpp
      • Normal-PCL-Cpp (70%)
      • Normal-PCL-Python (80%)
      • Tmp
    • 분류/인식 (30%)
      • 인식-GeometricConsistencyGrouping
      • SVM-RGBD-PCL-Python (70%)
      • SVM-LIDAR-PCL-Python (0%)
      • SVM-ROS (0%)
    • 정합 (70%)
      • ICP-PCL-Cpp (70%)
      • ICP-ROS 실습 (10%)
    • 재구성 (30%)
      • Smoothig-PCL-Cpp (70%)
      • Smoothig-PCL-Python (70%)
      • Triangulation-PCL-Cpp (70%)
  • Part 3 (고급)
    • README
    • 딥러닝 기반 학습 데이터 생성 (0%)
      • PointGAN (90%)
      • AutoEncoder (0%)
    • 딥러닝 기반 샘플링 기법 (0%)
      • DenseLidarNet (50%)
      • Point Cloud Upsampling Network
      • Pseudo-LiDAR
    • 딥러닝 기반 자율주행 탐지 기술 (0%)
    • 딥러닝 기반 자율주행 분류 기술 (0%)
      • Multi3D
      • PointNet
      • VoxelNet (50%)
      • YOLO3D
      • SqueezeSeg
      • butNet
  • Snippets
    • PCL-Snippets
    • PCL-Python-Helper (10%)
    • Lidar Data Augmentation
  • Appendix
    • 시각화Code
    • 시각화툴
    • Annotation툴
    • Point Cloud Libraries (0%)
    • 데이터셋
    • Cling_PCL
    • 참고 자료
    • 작성 계획_Tips
    • 용어집
Powered by GitBook
On this page
  • Min-Cut Based Segmentation
  • Theoretical Primer
  • 1. For the given point cloud algorithm constructs the graph that contains every single point of the cloud as a set of vertices and two more vertices called source and sink.
  • 2. Algorithm assigns weights for every edge. There are three different types of weight. Let’s examine them:
  • 3. After all the preparations the search of the minimum cut is made. Based on an analysis of this cut, cloud is divided on foreground and background points.

Was this helpful?

  1. Part 2 (중급)
  2. 군집화 (70%)

Min-Cut-PCL-Cpp (50%)

PreviousRegion-Growing-RGB-PCL-Cpp (50%)NextModel-Outlier-Removal-PCL-Cpp (50%)

Last updated 5 years ago

Was this helpful?

Min-Cut Based Segmentation

Aleksey Golovinskiy, Thomas Funkhouser, , ICCV 2009

In this tutorial we will learn how to use the min-cut based segmentation algorithm implemented in the pcl::MinCutSegmentation class.

This algorithm makes a binary segmentation of the given input cloud.

Having objects center and its radius the algorithm divides the cloud on two sets:

  • foreground

  • background points

  • (points that belong to the object and those that do not belong).

Theoretical Primer

The idea of this algorithm is as follows:

1. For the given point cloud algorithm constructs the graph that contains every single point of the cloud as a set of vertices and two more vertices called source and sink.

  • Every vertex of the graph that corresponds to the point is connected with source and sink with the edges.

  • In addition to these, every vertex (except source and sink) has edges that connect the corresponding point with its nearest neighbours.

2. Algorithm assigns weights for every edge. There are three different types of weight. Let’s examine them:

First of all it assigns weight to the edges between clouds points. This weight is called smooth cost and is calculated by the formula:

  • Here dist is the distance between points. The farther away the points are, the more is probability that the edge will be cut.

Next step the algorithm sets data cost.

  • It consists of foreground and background penalties.

  • The first one is the weight for those edges that connect clouds points with the source vertex and has the constant user-defined value.

  • The second one is assigned to the edges that connect points with the sink vertex and is calculated by the formula:

  • Here distanceToCenter is the distance to the expected center of the object in the horizontal plane:

Radius that occurs in the formula is the input parameter for this algorithm and can be roughly considered as the range from objects center outside of which there are no points that belong to foreground (objects horizontal radius).

3. After all the preparations the search of the minimum cut is made. Based on an analysis of this cut, cloud is divided on foreground and background points.

smoothCost=e^{-(\frac{dist}{ \sigma })^2}
backgroundPenalty=(\frac{distanceToCenter}{radius})
distanceToCenter=\sqrt{(x-centerX)^2+(y-centerY)^2}
Min-Cut Based Segmentation of Point Clouds