From 9d1decfa6ec458eb0b24a10e305fae9823f8b3cc Mon Sep 17 00:00:00 2001 From: Sven Oesau Date: Mon, 11 Dec 2023 08:40:46 +0100 Subject: [PATCH] some bugfixes for lcc export and merging of coplanar adjacent polygons updated license file updated KSR api update examples --- .../include/CGAL/license/gpl_package_list.txt | 1 + .../fig/ksr_parameters_gray_small.png | Bin 0 -> 107066 bytes .../Kinetic_surface_reconstruction/basic.cpp | 6 +- .../building.cpp | 14 +- .../parameters.cpp | 18 +- .../CGAL/Kinetic_surface_reconstruction_3.h | 256 ++++++++++++------ 6 files changed, 190 insertions(+), 105 deletions(-) create mode 100644 Kinetic_surface_reconstruction/doc/Kinetic_surface_reconstruction/fig/ksr_parameters_gray_small.png diff --git a/Installation/include/CGAL/license/gpl_package_list.txt b/Installation/include/CGAL/license/gpl_package_list.txt index cd274cf329b..965e05314c0 100644 --- a/Installation/include/CGAL/license/gpl_package_list.txt +++ b/Installation/include/CGAL/license/gpl_package_list.txt @@ -25,6 +25,7 @@ Inscribed_areas Inscribed Areas Interpolation 2D and Surface Function Interpolation Interval_skip_list Interval Skip List Jet_fitting_3 Estimation of Local Differential Properties of Point-Sampled Surfaces +Kinetic_surface_reconstruction Kinetic Surface Reconstruction Matrix_search Monotone and Sorted Matrix Search Mesh_2 2D Conforming Triangulations and Meshes Mesh_3 3D Mesh Generation diff --git a/Kinetic_surface_reconstruction/doc/Kinetic_surface_reconstruction/fig/ksr_parameters_gray_small.png b/Kinetic_surface_reconstruction/doc/Kinetic_surface_reconstruction/fig/ksr_parameters_gray_small.png new file mode 100644 index 0000000000000000000000000000000000000000..27c334a696c4919ab1ef84a91384bb13bbc0b2d9 GIT binary patch literal 107066 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%0D?YuTHC*M< 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%0D{z1t^lzcMr95Y@REmkhu5+p}!dF24hxJas-U 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 z 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

h#+siV1h&xI9_@6TVqI=>Cd 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 UtF!jHHwc&3lV|Exs+J%A4;`*MMgRZ+ literal 0 HcmV?d00001 diff --git a/Kinetic_surface_reconstruction/examples/Kinetic_surface_reconstruction/basic.cpp b/Kinetic_surface_reconstruction/examples/Kinetic_surface_reconstruction/basic.cpp index 22d6f036fac..a6d8be51b33 100644 --- a/Kinetic_surface_reconstruction/examples/Kinetic_surface_reconstruction/basic.cpp +++ b/Kinetic_surface_reconstruction/examples/Kinetic_surface_reconstruction/basic.cpp @@ -39,15 +39,15 @@ int main(const int argc, const char** argv) { ksr.initialize_partition(param); - ksr.partition(parameters.k_intersections); + ksr.partition(1); std::vector vtx; std::vector > polylist; - ksr.reconstruct_with_ground(parameters.graphcut_beta, std::back_inserter(vtx), std::back_inserter(polylist)); + ksr.reconstruct_with_ground(0.5, std::back_inserter(vtx), std::back_inserter(polylist)); if (polylist.size() > 0) - CGAL::IO::write_polygon_soup("polylist_" + std::to_string(parameters.graphcut_beta), vtx, polylist); + ;// CGAL::IO::write_polygon_soup("polylist_" + std::to_string(parameters.graphcut_beta), vtx, polylist); else return EXIT_FAILURE; diff --git a/Kinetic_surface_reconstruction/examples/Kinetic_surface_reconstruction/building.cpp b/Kinetic_surface_reconstruction/examples/Kinetic_surface_reconstruction/building.cpp index 484ee2cbd69..92e2d493752 100644 --- a/Kinetic_surface_reconstruction/examples/Kinetic_surface_reconstruction/building.cpp +++ b/Kinetic_surface_reconstruction/examples/Kinetic_surface_reconstruction/building.cpp @@ -5,9 +5,6 @@ #include #include -#include "include/Parameters.h" -#include "include/Terminal_parser.h" - using Kernel = CGAL::Exact_predicates_inexact_constructions_kernel; using FT = typename Kernel::FT; using Point_3 = typename Kernel::Point_3; @@ -29,12 +26,9 @@ int main(const int argc, const char** argv) { input_file >> point_set; input_file.close(); - auto param = CGAL::parameters::maximum_distance(parameters.distance_threshold) - .maximum_angle(parameters.angle_threshold) - .k_neighbors(parameters.k_neighbors) - .minimum_region_size(parameters.min_region_size) - .max_octree_depth(parameters.max_octree_depth) - .max_octree_node_size(parameters.max_octree_node_size) + auto param = CGAL::parameters::maximum_distance(0.1) + .maximum_angle(10) + .minimum_region_size(100) .reorient_bbox(true) .regularize_parallelism(true) .regularize_coplanarity(true) @@ -48,7 +42,7 @@ int main(const int argc, const char** argv) { ksr.initialize_partition(param); - ksr.partition(parameters.k_intersections); + ksr.partition(2); std::vector vtx; std::vector > polylist; diff --git a/Kinetic_surface_reconstruction/examples/Kinetic_surface_reconstruction/parameters.cpp b/Kinetic_surface_reconstruction/examples/Kinetic_surface_reconstruction/parameters.cpp index 89a5d7c8eb7..ce27122e8ea 100644 --- a/Kinetic_surface_reconstruction/examples/Kinetic_surface_reconstruction/parameters.cpp +++ b/Kinetic_surface_reconstruction/examples/Kinetic_surface_reconstruction/parameters.cpp @@ -147,6 +147,8 @@ int main(const int argc, const char** argv) { std::cout << "k " << parameters.k_intersections << std::endl; std::cout << "graphcut_beta " << parameters.graphcut_beta << std::endl; + std::cout << parameters.regorthogonal << " " << parameters.regsymmetric << std::endl; + auto param = CGAL::parameters::maximum_distance(parameters.distance_threshold) .maximum_angle(parameters.angle_threshold) .k_neighbors(parameters.k_neighbors) @@ -156,12 +158,14 @@ int main(const int argc, const char** argv) { .max_octree_depth(parameters.max_octree_depth) .max_octree_node_size(parameters.max_octree_node_size) .reorient_bbox(false) - .regularize_parallelism(parameters.regparallel) - .regularize_coplanarity(parameters.regcoplanar) + .regularize_parallelism(true) + .regularize_coplanarity(true) + //.regularize_parallelism(parameters.regparallel) + //.regularize_coplanarity(parameters.regcoplanar) .regularize_orthogonality(parameters.regorthogonal) .regularize_axis_symmetry(parameters.regsymmetric) - .angle_tolerance(5) - .maximum_offset(0.02); + .angle_tolerance(3) + .maximum_offset(0.05); // Algorithm. KSR ksr(point_set, param); @@ -191,12 +195,12 @@ int main(const int argc, const char** argv) { FT after_reconstruction = timer.time(); if (polylist.size() > 0) - CGAL::IO::write_polygon_soup("polylist_" + std::to_string(parameters.graphcut_beta), vtx, polylist); + CGAL::IO::write_polygon_soup("polylist_" + std::to_string(parameters.graphcut_beta) + ".off", vtx, polylist); timer.stop(); const FT time = static_cast(timer.time()); - std::vector betas{0.3, 0.5, 0.7, 0.8, 0.9, 0.95, 0.99}; + std::vector betas{0.3, 0.5, 0.7, 0.73, 0.75, 0.77, 0.8, 0.9, 0.95, 0.99}; for (FT b : betas) { if (b == parameters.graphcut_beta) @@ -208,7 +212,7 @@ int main(const int argc, const char** argv) { ksr.reconstruct(b, external_nodes, std::back_inserter(vtx), std::back_inserter(polylist)); if (polylist.size() > 0) - CGAL::IO::write_polygon_soup("polylist_" + std::to_string(b), vtx, polylist); + CGAL::IO::write_polygon_soup("polylist_" + std::to_string(b) + ".off", vtx, polylist); } std::cout << "Shape detection: " << after_shape_detection << " seconds!" << std::endl; diff --git a/Kinetic_surface_reconstruction/include/CGAL/Kinetic_surface_reconstruction_3.h b/Kinetic_surface_reconstruction/include/CGAL/Kinetic_surface_reconstruction_3.h index b79db560bde..2c6cb8b6847 100644 --- a/Kinetic_surface_reconstruction/include/CGAL/Kinetic_surface_reconstruction_3.h +++ b/Kinetic_surface_reconstruction/include/CGAL/Kinetic_surface_reconstruction_3.h @@ -13,7 +13,7 @@ #ifndef CGAL_KINETIC_SURFACE_RECONSTRUCTION_3_H #define CGAL_KINETIC_SURFACE_RECONSTRUCTION_3_H -#include +#include #include #include @@ -93,7 +93,7 @@ public: \cgalNamedParamsEnd */ template - Kinetic_shape_reconstruction_3(PointSet& points, + Kinetic_surface_reconstruction_3(PointSet& points, const NamedParameters& np = CGAL::parameters::default_values()) : m_points(points), m_ground_polygon_index(-1), m_kinetic_partition(np) {} /*! @@ -304,8 +304,44 @@ public: KSR_3::Graphcut gc(beta); // add ground consideration here + // m_cost_matrix and m_face_neighbors_lcc should contain the original values without consideration of ground/preset cell labels + // Create copy here if necessary and fill both vectors according to parameters of reconstruction - gc.solve(m_face_neighbors_lcc, m_face_area_lcc, m_cost_matrix, m_labels); + set_outside_volumes(true, m_cost_matrix); + + std::vector > edges(m_face_neighbors_lcc.size()); + + std::size_t redirected = 0; + for (std::size_t i = 0; i < m_face_neighbors_lcc.size(); i++) { + std::size_t lower, upper; + if (m_face_neighbors_lcc[i].first < m_face_neighbors_lcc[i].second) { + lower = m_face_neighbors_lcc[i].first; + upper = m_face_neighbors_lcc[i].second - 6; + } + else { + lower = m_face_neighbors_lcc[i].second; + upper = m_face_neighbors_lcc[i].first - 6; + } + // Check if the face is on a bbox face besides the top face. + // If so and the connected volume is below the ground, redirect the face to the bottom face node. + if ((lower < 6) && m_volume_below_ground[upper]) { + redirected++; + + if (m_face_neighbors_lcc[i].second < 6) { + edges[i].first = m_face_neighbors_lcc[i].first; + edges[i].second = 0; + } + + if (m_face_neighbors_lcc[i].first < 6) { + m_face_neighbors_lcc[i].first = 0; + edges[i].second = m_face_neighbors_lcc[i].second; + } + } + else edges[i] = m_face_neighbors_lcc[i]; + } + std::cout << redirected << " faces redirected to below ground" << std::endl; + + gc.solve(edges, m_face_area_lcc, m_cost_matrix, m_labels); reconstructed_model_polylist_lcc(pit, polyit); } @@ -340,9 +376,17 @@ public: KSR_3::Graphcut gc(beta); // add node consideration here + set_outside_volumes(false, m_cost_matrix); gc.solve(m_face_neighbors_lcc, m_face_area_lcc, m_cost_matrix, m_labels); + std::size_t in = 0, out = 0; + for (std::size_t i : m_labels) + if (i == 0) out++; + else in++; + + std::cout << "total labels: " << m_labels.size() << " 0: " << out << " 1: " << in << std::endl; + reconstructed_model_polylist_lcc(pit, polyit); } @@ -463,9 +507,19 @@ private: m_faces_lcc.reserve(face_range.size()); for (auto& d : face_range) { - m_faces_lcc.push_back(m_lcc.dart_descriptor(d)); + typename LCC::Dart_descriptor dh = m_lcc.dart_descriptor(d); - std::size_t id = m_lcc.attribute<2>(m_faces_lcc.back()); + Face_attribute fa = m_lcc.attribute<2>(dh); + if (fa == m_lcc.null_descriptor) { + dh = m_lcc.beta<3>(dh); + fa = m_lcc.attribute<2>(dh); + } + + if (fa == m_lcc.null_descriptor) { + std::cout << "null dart 1 " << m_lcc.template one_dart_per_incident_cell<3, 2>(dh).size() << std::endl; + } + + m_faces_lcc.push_back(dh); auto p = m_attrib2index_lcc.emplace(std::make_pair(m_lcc.attribute<2>(m_faces_lcc.back()), m_faces_lcc.size() - 1)); CGAL_assertion(p.second); @@ -478,8 +532,8 @@ private: m_face_neighbors_lcc.resize(m_faces_lcc.size(), std::pair(-1, -1)); m_cost_matrix.resize(2); - m_cost_matrix[0].resize(m_kinetic_partition.number_of_volumes() + 6); - m_cost_matrix[1].resize(m_kinetic_partition.number_of_volumes() + 6); + m_cost_matrix[0].resize(m_kinetic_partition.number_of_volumes() + 6, 0); + m_cost_matrix[1].resize(m_kinetic_partition.number_of_volumes() + 6, 0); for (std::size_t i = 0; i < m_faces_lcc.size(); i++) { auto n = m_lcc.template one_dart_per_incident_cell<3, 2>(m_faces_lcc[i]); @@ -489,18 +543,36 @@ private: auto& finf = m_lcc.info<2>(m_faces_lcc[i]); + bool skipped = false; + + Volume_attribute va = m_lcc.attribute<3>(m_lcc.dart_descriptor(*it)); + if (va == m_lcc.null_descriptor) { + skipped = true; + it++; + } + + if (it == n.end()) { + std::cout << "face not connected to a volume" << std::endl; + continue; + } + + va = m_lcc.attribute<3>(m_lcc.dart_descriptor(*it)); + if (va == m_lcc.null_descriptor) { + write_face(m_lcc.dart_descriptor(*it), "face_wo_volume.ply"); + } + int first = m_lcc.info<3>(m_lcc.dart_descriptor(*it)).volume_id; auto& inf1 = m_lcc.info<3>(m_lcc.dart_descriptor(*it++)); auto inf2 = inf1; - if (n.size() == 2) + if (n.size() == 2 && it != n.end()) inf2 = m_lcc.info<3>(m_lcc.dart_descriptor(*it)); int second; - if (n.size() == 2) + if (n.size() == 2 && it != n.end()) second = m_lcc.info<3>(m_lcc.dart_descriptor(*it)).volume_id; - if (n.size() == 2) + if (n.size() == 2 && it != n.end()) m_face_neighbors_lcc[i] = std::make_pair(first + 6, m_lcc.info<3>(m_lcc.dart_descriptor(*it)).volume_id + 6); else m_face_neighbors_lcc[i] = std::make_pair(first + 6, -m_lcc.info<2>(m_faces_lcc[i]).input_polygon_index - 1); @@ -679,7 +751,7 @@ private: if (m_labels[n.first] != m_labels[n.second]) { Face_attribute fa = m_lcc.attribute<2>(m_faces_lcc[i]); - if (fa == m_lcc.null_dart_descriptor) + if (fa == m_lcc.null_descriptor) std::cout << "null dart 1" << std::endl; if (m_labels[m_lcc.info<3>(m_faces_lcc[i]).volume_id + 6] == 0) { @@ -717,13 +789,47 @@ private: std::cout << "outside face" << std::endl; } - KSP_3::dump_polygons(polygon_regions, "faces_by_region.ply"); + std::cout << "polygon regions " << polygon_regions.size() << std::endl; + + static bool saved = false; + + if (!saved) { + KSP_3::dump_polygons(polygon_regions, "faces_by_region.ply"); + saved = true; + } + std::vector > borders; std::vector > borders_per_region; collect_connected_border(borders, region_index, borders_per_region); for (std::size_t i = 0; i < region; i++) { if (borders_per_region[i].size() > 0) { + /*std::size_t outer = -1; + typename Intersection_kernel::FT min = (std::numeric_limits::max)(); + for (std::size_t j = 0; j < borders_per_region[i].size(); j++) + for (std::size_t k = 0; k < borders[borders_per_region[i][j]].size(); k++) { + const typename Intersection_kernel::Point_3& p = m_lcc.point(m_lcc.dart_of_attribute<0>(borders[borders_per_region[i][j]][k])); + if (p.x() < min) { + min = p.x(); + outer = j; + } + } + + for (std::size_t j = 0; j < borders_per_region[i].size(); j++) { + std::string fn; + if (j == outer) + fn = std::to_string(i) + "-outer.polylines.txt"; + else + fn = std::to_string(i) + "-" + std::to_string(j) + ".polylines.txt"; + std::ofstream vout(fn); + vout << (borders[borders_per_region[i][j]].size() + 1); + for (std::size_t k = 0; k < borders[borders_per_region[i][j]].size(); k++) { + vout << " " << from_exact(m_lcc.point(m_lcc.dart_of_attribute<0>(borders[borders_per_region[i][j]][k]))); + } + vout << " " << from_exact(m_lcc.point(m_lcc.dart_of_attribute<0>(borders[borders_per_region[i][j]][0]))) << std::endl; + vout.close(); + }*/ + if (borders_per_region[i].size() > 1) { std::vector > polygons; polygons.reserve(borders_per_region[i].size()); @@ -745,7 +851,6 @@ private: if (borders[i].empty()) continue; - /* if (false) {*/ std::vector indices(borders[i].size()); for (std::size_t j = 0; j != borders[i].size(); j++) { auto p = attrib2idx.emplace(borders[i][j], attrib2idx.size()); @@ -754,24 +859,13 @@ private: indices[j] = p.first->second; } - *polyit++ = std::move(indices); - /* - } - else { - std::vector indices(borders[i].size()); - for (std::size_t j = borders[i].size() - 1; j != std::size_t(-1); j--) { - auto p = attrib2idx.emplace(borders[i][j], attrib2idx.size()); - if (p.second) - *pit++ = from_exact(m_lcc.point(m_lcc.dart_of_attribute<0>(borders[i][j]))); - indices[j] = p.first->second; - } + if (true) + std::reverse(indices.begin(), indices.end()); - *polyit++ = std::move(indices); - }*/ + *polyit++ = std::move(indices); } } - /*! \brief Provides the reconstructed surface as a list of indexed polygons. @@ -918,8 +1012,7 @@ private: if (region_index[cur_fa] == region) continue; -// if (debug) -// write_face(cur_fdh, std::to_string(region) + "-inside-" + std::to_string(cur_fa) + ".ply"); + //write_face(cur_fdh, std::to_string(region) + "-inside-" + std::to_string(cur_fa) + ".ply"); region_index[cur_fa] = region; @@ -939,8 +1032,14 @@ private: do { Face_attribute fa = m_lcc.attribute<2>(fdh); - if (fa == m_lcc.null_descriptor) - break; + if (fa == m_lcc.null_descriptor) { + // fdh is outside of the bbox, switching back inside to check the face on the boundary + fdh = m_lcc.beta<3>(fdh); + fa = m_lcc.attribute<2>(fdh); + + if (fa == m_lcc.null_descriptor) + break; + } auto& finfo2 = m_lcc.info<2>(fdh); if (fa == cur_fa) { @@ -950,15 +1049,18 @@ private: auto& inf = m_lcc.info<2>(fdh); bool added = false; -// if (debug) -// write_face(fdh, std::to_string(region) + "-" + std::to_string(fa) + ".ply"); + //write_face(fdh, std::to_string(region) + "-" + std::to_string(fa) + ".ply"); const auto& n = m_face_neighbors_lcc[m_attrib2index_lcc[fa]]; // Belongs to reconstruction? bool internal = m_labels[n.first] == m_labels[n.second]; if (m_labels[n.first] == m_labels[n.second]) { - fdh = m_lcc.beta<2, 3>(fdh); + fdh = m_lcc.beta<2>(fdh); + Dart_descriptor fdh2 = m_lcc.beta<3>(fdh); + if (fdh2 != m_lcc.null_dart_descriptor) + fdh = fdh2; + continue; } @@ -966,7 +1068,12 @@ private: if (region_index[fa] != -1) { if (!internal) break; - fdh = m_lcc.beta<2, 3>(fdh); + + fdh = m_lcc.beta<2>(fdh); + Dart_descriptor fdh2 = m_lcc.beta<3>(fdh); + if (fdh2 != m_lcc.null_dart_descriptor) + fdh = fdh2; + continue; } @@ -1058,7 +1165,12 @@ private: if (!internal) return true; else { - edh = m_lcc.beta<2, 3>(edh); + + edh = m_lcc.beta<2>(edh); + Dart_descriptor edh2 = m_lcc.beta<3>(edh); + if (edh2 != m_lcc.null_dart_descriptor) + edh = edh2; + continue; } @@ -1067,7 +1179,11 @@ private: if (!internal) return true; else { - edh = m_lcc.beta<2, 3>(edh); + edh = m_lcc.beta<2>(edh); + Dart_descriptor edh2 = m_lcc.beta<3>(edh); + if (edh2 != m_lcc.null_dart_descriptor) + edh = edh2; + continue; }; return internal; @@ -1282,15 +1398,12 @@ private: do { /* - if (debug) { - std::ofstream vout("0-" + std::to_string(idx) + ".xyz"); - for (std::size_t p : border) - vout << from_exact(m_lcc.point(m_lcc.dart_of_attribute<0>(p))) << std::endl; - vout.close(); - } + std::ofstream vout("0-" + std::to_string(idx) + ".xyz"); + for (std::size_t p : border) + vout << from_exact(m_lcc.point(m_lcc.dart_of_attribute<0>(p))) << std::endl; + vout.close(); - if (debug) - write_edge(cur, "cur.polylines.txt");*/ + write_edge(cur, "cur.polylines.txt");*/ if (is_border_edge(cur)) { CGAL_assertion(!processed[cur]); @@ -1370,10 +1483,6 @@ private: auto finfo = m_lcc.info_of_attribute<2>(fa); const auto& n = m_face_neighbors_lcc[m_attrib2index_lcc[fa]]; - // Do not segment bbox surface - if (n.second < 6) - continue; - // Belongs to reconstruction? if (m_labels[n.first] == m_labels[n.second]) { std::cout << "face skipped" << std::endl; @@ -1389,6 +1498,8 @@ private: std::cout << "volume attribute mismatch" << std::endl; } + //write_edge(dh2, std::to_string(i) + "-starting edge"); + if (!processed[dh2] && is_border_edge(dh2)) { borders_per_region[region_index[fa]].push_back(borders.size()); @@ -1472,7 +1583,7 @@ private: } } - set_outside_volumes(m_cost_matrix); + //set_outside_volumes(m_cost_matrix); // Handling face generated by the octree partition. They are not associated with an input polygon. for (std::size_t i = 0; i < other_faces.size(); i++) { @@ -1508,31 +1619,6 @@ private: for (std::size_t i = 0; i < m_faces_lcc.size(); i++) m_face_area_lcc[i] = m_face_area_lcc[i] * 2.0 * m_total_inliers / total_area; - - std::size_t redirected = 0; - for (std::size_t i = 0; i < m_face_neighbors_lcc.size(); i++) { - std::size_t lower, upper; - if (m_face_neighbors_lcc[i].first < m_face_neighbors_lcc[i].second) { - lower = m_face_neighbors_lcc[i].first; - upper = m_face_neighbors_lcc[i].second - 6; - } - else { - lower = m_face_neighbors_lcc[i].second; - upper = m_face_neighbors_lcc[i].first - 6; - } - // Check if the face is on a bbox face besides the top face. - // If so and the connected volume is below the ground, redirect the face to the bottom face node. - if ((lower < 6) && m_volume_below_ground[upper]) { - redirected++; - - if (m_face_neighbors_lcc[i].second < 6) - m_face_neighbors_lcc[i].second = 0; - - if (m_face_neighbors_lcc[i].first < 6) - m_face_neighbors_lcc[i].first = 0; - } - } - std::cout << redirected << " faces redirected to below ground" << std::endl; } void count_volume_votes_lcc() { @@ -1557,7 +1643,7 @@ private: std::size_t idx = 0; for (std::size_t i = 0; i < m_faces_lcc.size(); i++) { - std::size_t v[] = { -1, -1 }; + std::size_t v[] = { std::size_t(-1), std::size_t(-1) }; Point_3 c[2]; std::size_t in[] = {0, 0}, out[] = {0, 0}; @@ -1739,7 +1825,7 @@ private: } // Estimate ground plane by finding a low mostly horizontal plane - if (estimate_ground) { + { std::vector candidates; FT low_z_peak = (std::numeric_limits::max)(); FT bbox_min[] = { (std::numeric_limits::max)(), (std::numeric_limits::max)(), (std::numeric_limits::max)() }; @@ -1937,7 +2023,7 @@ private: } */ - void set_outside_volumes(std::vector >& cost_matrix) const { + void set_outside_volumes(bool ground, std::vector >& cost_matrix) const { // Setting preferred outside label for bbox plane nodes // Order: // 0 zmin @@ -1955,14 +2041,14 @@ private: cost_matrix[0][4] = 0; cost_matrix[0][5] = 0; // 1 - cost for labelled as inside - cost_matrix[1][0] = force; - cost_matrix[1][1] = force; - cost_matrix[1][2] = force; - cost_matrix[1][3] = force; - cost_matrix[1][4] = force; - cost_matrix[1][5] = force; + cost_matrix[1][0] = 0; + cost_matrix[1][1] = 0; + cost_matrix[1][2] = 0; + cost_matrix[1][3] = 0; + cost_matrix[1][4] = 0; + cost_matrix[1][5] = 0; - if (m_ground_polygon_index != -1) { + if (m_ground_polygon_index != -1 && ground) { std::cout << "using estimated ground plane for reconstruction" << std::endl; cost_matrix[0][0] = force; cost_matrix[0][1] = 0;