mirror of https://github.com/CGAL/cgal
Handle deprecated code (deprecated warnings + test)
This commit is contained in:
parent
71f9425256
commit
9a5a4770a5
|
|
@ -28,6 +28,7 @@
|
||||||
#include <CGAL/Classification/Local_eigen_analysis.h>
|
#include <CGAL/Classification/Local_eigen_analysis.h>
|
||||||
|
|
||||||
/// \cond SKIP_IN_MANUAL
|
/// \cond SKIP_IN_MANUAL
|
||||||
|
#ifndef CGAL_NO_DEPRECATED_CODE
|
||||||
|
|
||||||
namespace CGAL {
|
namespace CGAL {
|
||||||
|
|
||||||
|
|
@ -92,6 +93,7 @@ public:
|
||||||
|
|
||||||
Its default name is "linearity".
|
Its default name is "linearity".
|
||||||
*/
|
*/
|
||||||
|
CGAL_DEPRECATED_MSG("you are using the deprecated feature Linearity, please update your code with Eigenvalue instead")
|
||||||
class Linearity
|
class Linearity
|
||||||
#ifdef DOXYGEN_RUNNING
|
#ifdef DOXYGEN_RUNNING
|
||||||
: public Feature_base
|
: public Feature_base
|
||||||
|
|
@ -139,6 +141,7 @@ public:
|
||||||
|
|
||||||
Its default name is "planarity".
|
Its default name is "planarity".
|
||||||
*/
|
*/
|
||||||
|
CGAL_DEPRECATED_MSG("you are using the deprecated feature Planarity, please update your code with Eigenvalue instead")
|
||||||
class Planarity
|
class Planarity
|
||||||
#ifdef DOXYGEN_RUNNING
|
#ifdef DOXYGEN_RUNNING
|
||||||
: public Feature_base
|
: public Feature_base
|
||||||
|
|
@ -186,6 +189,7 @@ public:
|
||||||
|
|
||||||
Its default name is "sphericity".
|
Its default name is "sphericity".
|
||||||
*/
|
*/
|
||||||
|
CGAL_DEPRECATED_MSG("you are using the deprecated feature Sphericity, please update your code with Eigenvalue instead")
|
||||||
class Sphericity
|
class Sphericity
|
||||||
#ifdef DOXYGEN_RUNNING
|
#ifdef DOXYGEN_RUNNING
|
||||||
: public Feature_base
|
: public Feature_base
|
||||||
|
|
@ -233,6 +237,7 @@ public:
|
||||||
|
|
||||||
Its default name is "omnivariance".
|
Its default name is "omnivariance".
|
||||||
*/
|
*/
|
||||||
|
CGAL_DEPRECATED_MSG("you are using the deprecated feature Omnivariance, please update your code with Eigenvalue instead")
|
||||||
class Omnivariance
|
class Omnivariance
|
||||||
#ifdef DOXYGEN_RUNNING
|
#ifdef DOXYGEN_RUNNING
|
||||||
: public Feature_base
|
: public Feature_base
|
||||||
|
|
@ -277,6 +282,7 @@ public:
|
||||||
|
|
||||||
Its default name is "anisotropy".
|
Its default name is "anisotropy".
|
||||||
*/
|
*/
|
||||||
|
CGAL_DEPRECATED_MSG("you are using the deprecated feature Anisotropy, please update your code with Eigenvalue instead")
|
||||||
class Anisotropy
|
class Anisotropy
|
||||||
#ifdef DOXYGEN_RUNNING
|
#ifdef DOXYGEN_RUNNING
|
||||||
: public Feature_base
|
: public Feature_base
|
||||||
|
|
@ -324,6 +330,7 @@ public:
|
||||||
|
|
||||||
Its default name is "eigentropy".
|
Its default name is "eigentropy".
|
||||||
*/
|
*/
|
||||||
|
CGAL_DEPRECATED_MSG("you are using the deprecated feature Eigentropy, please update your code with Eigenvalue instead")
|
||||||
class Eigentropy
|
class Eigentropy
|
||||||
#ifdef DOXYGEN_RUNNING
|
#ifdef DOXYGEN_RUNNING
|
||||||
: public Feature_base
|
: public Feature_base
|
||||||
|
|
@ -377,6 +384,7 @@ public:
|
||||||
|
|
||||||
Its default name is "surface_variation".
|
Its default name is "surface_variation".
|
||||||
*/
|
*/
|
||||||
|
CGAL_DEPRECATED_MSG("you are using the deprecated feature Surface_variation, please update your code with Eigenvalue instead")
|
||||||
class Surface_variation
|
class Surface_variation
|
||||||
#ifdef DOXYGEN_RUNNING
|
#ifdef DOXYGEN_RUNNING
|
||||||
: public Feature_base
|
: public Feature_base
|
||||||
|
|
@ -417,6 +425,7 @@ public:
|
||||||
|
|
||||||
} // namespace CGAL
|
} // namespace CGAL
|
||||||
|
|
||||||
|
#endif
|
||||||
/// \endcond
|
/// \endcond
|
||||||
|
|
||||||
#endif // CGAL_CLASSIFICATION_FEATURES_EIGEN_H
|
#endif // CGAL_CLASSIFICATION_FEATURES_EIGEN_H
|
||||||
|
|
|
||||||
|
|
@ -29,6 +29,7 @@
|
||||||
#include <CGAL/Classification/Feature_base.h>
|
#include <CGAL/Classification/Feature_base.h>
|
||||||
|
|
||||||
/// \cond SKIP_IN_MANUAL
|
/// \cond SKIP_IN_MANUAL
|
||||||
|
#ifndef CGAL_NO_DEPRECATED_CODE
|
||||||
|
|
||||||
namespace CGAL {
|
namespace CGAL {
|
||||||
|
|
||||||
|
|
@ -83,6 +84,7 @@ namespace Feature {
|
||||||
is `CGAL::Classification::RGB_Color`.
|
is `CGAL::Classification::RGB_Color`.
|
||||||
*/
|
*/
|
||||||
template <typename GeomTraits, typename PointRange, typename ColorMap>
|
template <typename GeomTraits, typename PointRange, typename ColorMap>
|
||||||
|
CGAL_DEPRECATED_MSG("you are using the deprecated feature Hsv, please update your code with Color_channel instead")
|
||||||
class Hsv : public Feature_base
|
class Hsv : public Feature_base
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
|
@ -169,6 +171,7 @@ public:
|
||||||
|
|
||||||
} // namespace CGAL
|
} // namespace CGAL
|
||||||
|
|
||||||
|
#endif
|
||||||
/// \endcond
|
/// \endcond
|
||||||
|
|
||||||
#endif // CGAL_CLASSIFICATION_FEATURE_HSV_H
|
#endif // CGAL_CLASSIFICATION_FEATURE_HSV_H
|
||||||
|
|
|
||||||
|
|
@ -281,6 +281,64 @@ public:
|
||||||
/// @}
|
/// @}
|
||||||
|
|
||||||
/// \cond SKIP_IN_MANUAL
|
/// \cond SKIP_IN_MANUAL
|
||||||
|
|
||||||
|
#ifndef CGAL_NO_DEPRECATED_CODE
|
||||||
|
// deprecated
|
||||||
|
template <typename VectorMap = Default,
|
||||||
|
typename ColorMap = Default,
|
||||||
|
typename EchoMap = Default>
|
||||||
|
CGAL_DEPRECATED_MSG("you are using a deprecated constructor of CGAL::Classification::Point_set_feature_generator, please update your code")
|
||||||
|
Point_set_feature_generator(Feature_set& features,
|
||||||
|
const PointRange& input,
|
||||||
|
PointMap point_map,
|
||||||
|
std::size_t nb_scales,
|
||||||
|
VectorMap normal_map = VectorMap(),
|
||||||
|
ColorMap color_map = ColorMap(),
|
||||||
|
EchoMap echo_map = EchoMap(),
|
||||||
|
float voxel_size = -1.f)
|
||||||
|
: m_input (input), m_point_map (point_map)
|
||||||
|
{
|
||||||
|
m_bbox = CGAL::bounding_box
|
||||||
|
(boost::make_transform_iterator (m_input.begin(), CGAL::Property_map_to_unary_function<PointMap>(m_point_map)),
|
||||||
|
boost::make_transform_iterator (m_input.end(), CGAL::Property_map_to_unary_function<PointMap>(m_point_map)));
|
||||||
|
|
||||||
|
CGAL::Real_timer t; t.start();
|
||||||
|
|
||||||
|
m_scales.reserve (nb_scales);
|
||||||
|
|
||||||
|
m_scales.push_back (new Scale (m_input, m_point_map, m_bbox, voxel_size));
|
||||||
|
|
||||||
|
if (voxel_size == -1.f)
|
||||||
|
voxel_size = m_scales[0]->grid_resolution();
|
||||||
|
|
||||||
|
for (std::size_t i = 1; i < nb_scales; ++ i)
|
||||||
|
{
|
||||||
|
voxel_size *= 2;
|
||||||
|
m_scales.push_back (new Scale (m_input, m_point_map, m_bbox, voxel_size, m_scales[i-1]->grid));
|
||||||
|
}
|
||||||
|
t.stop();
|
||||||
|
CGAL_CLASSIFICATION_CERR << "Scales computed in " << t.time() << " second(s)" << std::endl;
|
||||||
|
t.reset();
|
||||||
|
|
||||||
|
typedef typename Default::Get<VectorMap, typename GeomTraits::Vector_3 >::type
|
||||||
|
Vmap;
|
||||||
|
typedef typename Default::Get<ColorMap, RGB_Color >::type
|
||||||
|
Cmap;
|
||||||
|
typedef typename Default::Get<EchoMap, std::size_t >::type
|
||||||
|
Emap;
|
||||||
|
|
||||||
|
generate_point_based_features (features);
|
||||||
|
generate_normal_based_features (features, get_parameter<Vmap>(normal_map));
|
||||||
|
generate_color_based_features (features, get_parameter<Cmap>(color_map));
|
||||||
|
generate_echo_based_features (features, get_parameter<Emap>(echo_map));
|
||||||
|
}
|
||||||
|
|
||||||
|
// Functions to remove when deprecated constructor is removed
|
||||||
|
void generate_normal_based_features(const CGAL::Constant_property_map<Iterator, typename GeomTraits::Vector_3>&) { }
|
||||||
|
void generate_color_based_features(const CGAL::Constant_property_map<Iterator, RGB_Color>&) { }
|
||||||
|
void generate_echo_based_features(const CGAL::Constant_property_map<Iterator, std::size_t>&) { }
|
||||||
|
#endif
|
||||||
|
|
||||||
virtual ~Point_set_feature_generator()
|
virtual ~Point_set_feature_generator()
|
||||||
{
|
{
|
||||||
clear();
|
clear();
|
||||||
|
|
|
||||||
|
|
@ -85,10 +85,17 @@ if( WIN32 )
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
create_single_source_cgal_program( "test_classification_point_set.cpp" CXX_FEATURES ${needed_cxx_features} )
|
create_single_source_cgal_program( "test_classification_point_set.cpp" CXX_FEATURES ${needed_cxx_features} )
|
||||||
|
|
||||||
if(TARGET test_classification_point_set)
|
if(TARGET test_classification_point_set)
|
||||||
target_link_libraries(test_classification_point_set PUBLIC ${classification_linked_libraries})
|
target_link_libraries(test_classification_point_set PUBLIC ${classification_linked_libraries})
|
||||||
if (TBB_FOUND)
|
if (TBB_FOUND)
|
||||||
CGAL_target_use_TBB( test_classification_point_set )
|
CGAL_target_use_TBB( test_classification_point_set )
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
create_single_source_cgal_program( "deprecated_test_classification_point_set.cpp" CXX_FEATURES ${needed_cxx_features} )
|
||||||
|
if(TARGET deprecated_test_classification_point_set)
|
||||||
|
target_link_libraries(deprecated_test_classification_point_set PUBLIC ${classification_linked_libraries})
|
||||||
|
if (TBB_FOUND)
|
||||||
|
CGAL_target_use_TBB( deprecated_test_classification_point_set )
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,136 @@
|
||||||
|
#include <CGAL/internal/disable_deprecation_warnings_and_errors.h>
|
||||||
|
|
||||||
|
#if defined (_MSC_VER) && !defined (_WIN64)
|
||||||
|
#pragma warning(disable:4244) // boost::number_distance::distance()
|
||||||
|
// converts 64 to 32 bits integers
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <cstdlib>
|
||||||
|
#include <fstream>
|
||||||
|
#include <iostream>
|
||||||
|
#include <string>
|
||||||
|
|
||||||
|
#include <CGAL/Simple_cartesian.h>
|
||||||
|
#include <CGAL/Classification.h>
|
||||||
|
#include <CGAL/Point_set_3.h>
|
||||||
|
#include <CGAL/Random.h>
|
||||||
|
|
||||||
|
typedef CGAL::Simple_cartesian<double> Kernel;
|
||||||
|
typedef Kernel::Point_3 Point;
|
||||||
|
typedef Kernel::Vector_3 Vector;
|
||||||
|
|
||||||
|
typedef CGAL::Point_set_3<Point> Point_set;
|
||||||
|
typedef Point_set::Point_map Point_map;
|
||||||
|
|
||||||
|
typedef Kernel::Iso_cuboid_3 Iso_cuboid_3;
|
||||||
|
|
||||||
|
namespace Classification = CGAL::Classification;
|
||||||
|
|
||||||
|
typedef Classification::Label_handle Label_handle;
|
||||||
|
typedef Classification::Feature_handle Feature_handle;
|
||||||
|
typedef Classification::Label_set Label_set;
|
||||||
|
typedef Classification::Feature_set Feature_set;
|
||||||
|
|
||||||
|
typedef Classification::Sum_of_weighted_features_classifier Classifier;
|
||||||
|
|
||||||
|
typedef Classification::Point_set_feature_generator<Kernel, Point_set, Point_map> Feature_generator;
|
||||||
|
|
||||||
|
typedef Point_set::Property_map<std::size_t> Size_t_map;
|
||||||
|
typedef Point_set::Property_map<Classification::RGB_Color> Color_map;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
int main (int, char**)
|
||||||
|
{
|
||||||
|
Point_set pts;
|
||||||
|
|
||||||
|
pts.add_normal_map();
|
||||||
|
|
||||||
|
bool map_added = false;
|
||||||
|
Size_t_map echo_map;
|
||||||
|
Color_map color_map;
|
||||||
|
|
||||||
|
boost::tie (echo_map, map_added) = pts.add_property_map<std::size_t> ("echo");
|
||||||
|
CGAL_assertion (map_added);
|
||||||
|
boost::tie (color_map, map_added) = pts.add_property_map<Classification::RGB_Color> ("color");
|
||||||
|
CGAL_assertion (map_added);
|
||||||
|
|
||||||
|
for (std::size_t i = 0; i < 1000; ++ i)
|
||||||
|
{
|
||||||
|
Point_set::iterator it
|
||||||
|
= pts.insert (Point (CGAL::get_default_random().get_double(),
|
||||||
|
CGAL::get_default_random().get_double(),
|
||||||
|
CGAL::get_default_random().get_double()),
|
||||||
|
Vector (CGAL::get_default_random().get_double(),
|
||||||
|
CGAL::get_default_random().get_double(),
|
||||||
|
CGAL::get_default_random().get_double()));
|
||||||
|
echo_map[*it] = std::size_t(CGAL::get_default_random().get_int(0, 4));
|
||||||
|
color_map[*it] = CGAL::make_array ((unsigned char)(CGAL::get_default_random().get_int(0, 255)),
|
||||||
|
(unsigned char)(CGAL::get_default_random().get_int(0, 255)),
|
||||||
|
(unsigned char)(CGAL::get_default_random().get_int(0, 255)));
|
||||||
|
}
|
||||||
|
|
||||||
|
Feature_set features;
|
||||||
|
Feature_generator generator (features, pts, pts.point_map(),
|
||||||
|
5, // using 5 scales
|
||||||
|
pts.normal_map(),
|
||||||
|
color_map, echo_map);
|
||||||
|
|
||||||
|
CGAL_assertion (generator.number_of_scales() == 5);
|
||||||
|
CGAL_assertion (features.size() == 80);
|
||||||
|
|
||||||
|
Label_set labels;
|
||||||
|
|
||||||
|
std::vector<int> training_set (pts.size(), -1);
|
||||||
|
for (std::size_t i = 0; i < 20; ++ i)
|
||||||
|
{
|
||||||
|
std::ostringstream oss;
|
||||||
|
oss << "label_" << i;
|
||||||
|
Label_handle lh = labels.add(oss.str().c_str());
|
||||||
|
|
||||||
|
for (std::size_t j = 0; j < 10; ++ j)
|
||||||
|
training_set[std::size_t(CGAL::get_default_random().get_int(0, int(training_set.size())))] = int(i);
|
||||||
|
}
|
||||||
|
CGAL_assertion (labels.size() == 20);
|
||||||
|
|
||||||
|
Classifier classifier (labels, features);
|
||||||
|
|
||||||
|
classifier.train<CGAL::Sequential_tag> (training_set, 800);
|
||||||
|
#ifdef CGAL_LINKED_WITH_TBB
|
||||||
|
classifier.train<CGAL::Parallel_tag> (training_set, 800);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
std::vector<int> label_indices(pts.size(), -1);
|
||||||
|
|
||||||
|
Classification::classify<CGAL::Sequential_tag>
|
||||||
|
(pts, labels, classifier, label_indices);
|
||||||
|
|
||||||
|
Classification::classify_with_local_smoothing<CGAL::Sequential_tag>
|
||||||
|
(pts, pts.point_map(), labels, classifier,
|
||||||
|
generator.neighborhood().sphere_neighbor_query(0.01f),
|
||||||
|
label_indices);
|
||||||
|
|
||||||
|
Classification::classify_with_graphcut<CGAL::Sequential_tag>
|
||||||
|
(pts, pts.point_map(), labels, classifier,
|
||||||
|
generator.neighborhood().k_neighbor_query(12),
|
||||||
|
0.2f, 10, label_indices);
|
||||||
|
|
||||||
|
#ifdef CGAL_LINKED_WITH_TBB
|
||||||
|
Classification::classify<CGAL::Sequential_tag>
|
||||||
|
(pts, labels, classifier, label_indices);
|
||||||
|
|
||||||
|
Classification::classify_with_local_smoothing<CGAL::Sequential_tag>
|
||||||
|
(pts, pts.point_map(), labels, classifier,
|
||||||
|
generator.neighborhood().sphere_neighbor_query(0.01f),
|
||||||
|
label_indices);
|
||||||
|
|
||||||
|
Classification::classify_with_graphcut<CGAL::Sequential_tag>
|
||||||
|
(pts, pts.point_map(), labels, classifier,
|
||||||
|
generator.neighborhood().k_neighbor_query(12),
|
||||||
|
0.2f, 10, label_indices);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
Classification::Evaluation evaluation (labels, training_set, label_indices);
|
||||||
|
|
||||||
|
return EXIT_SUCCESS;
|
||||||
|
}
|
||||||
|
|
@ -74,12 +74,12 @@ int main (int, char**)
|
||||||
features.begin_parallel_additions();
|
features.begin_parallel_additions();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
Feature_generator generator (features, pts, pts.point_map(), 5); // using 5 scales
|
Feature_generator generator (pts, pts.point_map(), 5); // using 5 scales
|
||||||
|
|
||||||
generator.generate_point_based_features();
|
generator.generate_point_based_features(features);
|
||||||
generator.generate_normal_based_features(pts.normal_map());
|
generator.generate_normal_based_features(features, pts.normal_map());
|
||||||
generator.generate_color_based_features(color_map);
|
generator.generate_color_based_features(features, color_map);
|
||||||
generator.generate_echo_based_features(echo_map);
|
generator.generate_echo_based_features(features, echo_map);
|
||||||
|
|
||||||
#ifdef CGAL_LINKED_WITH_TBB
|
#ifdef CGAL_LINKED_WITH_TBB
|
||||||
features.end_parallel_additions();
|
features.end_parallel_additions();
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue