voronoi_path_generator.cpp
Go to the documentation of this file.
1 #include <ros/ros.h>
2 #include <nav_msgs/OccupancyGrid.h>
5 #include <memory>
6 #include <opencv2/core/core.hpp>
7 #include <opencv2/highgui/highgui.hpp>
8 #include <opencv2/imgproc/imgproc.hpp>
9 #include <queue>
10 #include <string>
11 
12 using namespace cv;
13 
14 namespace voronoi_map
15 {
16 
17  VoronoiPathGenerator::VoronoiPathGenerator()
18  {
19 
20  }
21 
22  void VoronoiPathGenerator::prepareMap(const Mat& _map, Mat& _des, int erodeSize)
23  {
24  static Mat srcMap;
25  _map.convertTo(srcMap, CV_8UC1);
26 
27  for(int i = 0; i < srcMap.cols * srcMap.rows; i++)
28  {
29  if((signed char)_map.data[i] < 0) srcMap.data[i] = 100;
30  }
31 
32  _des = srcMap;
33 
34  cv::bitwise_not(srcMap, srcMap);
35  cv::threshold(srcMap, _des, 10, 255, cv::THRESH_BINARY | cv::THRESH_OTSU);
36 
37  if(erodeSize <= 0){
38  erodeSize = 1;
39  }
40  if(erodeSize > 0){
41  cv::Mat element = cv::getStructuringElement( cv::MORPH_ELLIPSE,
42  cv::Size( 2*erodeSize + 1, 2*erodeSize+1 ),
43  cv::Point( erodeSize, erodeSize ) );
44 
45  cv::erode(_des, _des, element);
46  }
47  }
48 
49 
50  void VoronoiPathGenerator::computeDistanceField(const cv::Mat& _map, cv::Mat& _distField)
51  {
52  cv::distanceTransform(_map, _distField, cv::DIST_L2, 3);
53  }
54 
55  void VoronoiPathGenerator::computeVoronoiMap(const cv::Mat& _distField, cv::Mat& _voronoiMap)
56  {
57  Mat srcMap = _distField;
58  srcMap.convertTo(_voronoiMap, CV_8UC1, 0.0);
59 
60  voronoi_map::greyscale_thinning(srcMap, _voronoiMap);
61  cv::threshold(_voronoiMap, _voronoiMap, 1, 255, cv::THRESH_BINARY);
62  voronoi_map::sceletonize(_voronoiMap, _voronoiMap);
63  }
64 }
voronoi_path_generator.h
ros.h
voronoi_map
Definition: thinning.h:7
thinning.h
voronoi_map::greyscale_thinning
void greyscale_thinning(const cv::Mat &src, cv::Mat &dst)
Function for finding the ridge of a distance graph.
Definition: thinning.cpp:109
voronoi_map::sceletonize
void sceletonize(const cv::Mat &src, cv::Mat &dst)
Function for thinning the given binary image (Paper Zhang-Suen Thinning)
Definition: thinning.cpp:85


tuw_voronoi_graph
Author(s): Benjamin Binder
autogenerated on Wed Mar 2 2022 01:10:12