34 ROS_ERROR(
"InpaintRadius filter did not find param radius.");
39 ROS_ERROR(
"Radius must be greater than zero.");
46 ROS_ERROR(
"Inpaint filter did not find parameter `input_layer`.");
53 ROS_ERROR(
"Inpaint filter did not find parameter `output_layer`.");
70 mapOut.add(
"inpaint_mask", 0.0);
72 mapOut.setBasicLayers(std::vector<std::string>());
75 mapOut.at(
"inpaint_mask", *iterator) = 1.0;
78 cv::Mat originalImage;
81 const float minValue = mapOut.get(
inputLayer_).minCoeffOfFinites();
82 const float maxValue = mapOut.get(
inputLayer_).maxCoeffOfFinites();
84 grid_map::GridMapCvConverter::toImage<unsigned char, 3>(mapOut,
inputLayer_, CV_8UC3, minValue, maxValue,
86 grid_map::GridMapCvConverter::toImage<unsigned char, 1>(mapOut,
"inpaint_mask", CV_8UC1, mask);
88 const double radiusInPixels =
radius_ / mapIn.getResolution();
89 cv::inpaint(originalImage, mask, filledImage, radiusInPixels, cv::INPAINT_NS);
91 grid_map::GridMapCvConverter::addLayerFromImage<unsigned char, 3>(filledImage,
outputLayer_, mapOut, minValue, maxValue);
92 mapOut.erase(
"inpaint_mask");
std::string outputLayer_
Output layer name.
std::string inputLayer_
Input layer name.
virtual bool update(const T &mapIn, T &mapOut)
#define PLUGINLIB_EXPORT_CLASS(class_type, base_class_type)
double radius_
Inpainting radius.