00001
00002
00003
00004
00005 #if !defined (AQSENSE_SAL3DPP_ANGULAR_METRIC_HPP)
00006 #define AQSENSE_SAL3DPP_ANGULAR_METRIC_HPP
00007
00008 #if defined (_MSC_VER) && (_MSC_VER >= 1020)
00009 #pragma once
00010 #endif
00011
00012 #include <limits>
00013 #include <string>
00014 #include <cassert>
00015 #include <cstddef>
00016 #include <stdexcept>
00017 #include <sal3dpp/RangeMap.hpp>
00018 #include <sal3dpp/AngularMetricConfig.hpp>
00019 #include <sal3d/angularmetric.h>
00020
00021 namespace sal3d
00022 {
00023 namespace AngularMetric
00024 {
00066 inline Config
00067 calibrate (const RangeMap &rangeMap,
00068 const Metric::PatternSPPoints &points, float initialAngle,
00069 float angleStep, int left, int top, int right, int bottom,
00070 const LensDistortion::Model &dm, int filterlen = 1)
00071 {
00072 sal3d_angular_metric_config config;
00073 Error e;
00074 sal3d_angular_metric_calibrate_range_map_cropped (
00075 rangeMap.c_range_map (), points, initialAngle,
00076 angleStep, &dm.c_lens_distortion(), left, top, right,
00077 bottom, filterlen, &config, &e.e);
00078
00079 if (e.e.value < 0)
00080 throw e;
00081
00082 return Config(config);
00083 }
00084
00118 inline Config
00119 calibrate (const RangeMap &rangeMap, const Metric::PatternSPPoints &points,
00120 float initialAngle, float angleStep,
00121 const LensDistortion::Model &dm, int filterlen = 1)
00122 {
00123 sal3d_angular_metric_config config;
00124 Error e;
00125 sal3d_angular_metric_calibrate_range_map_cropped (
00126 rangeMap.c_range_map (), points, initialAngle,
00127 angleStep, &dm.c_lens_distortion(), 0, 0,
00128 rangeMap.profilesLength()-1,
00129 rangeMap.countProfiles()-1, filterlen, &config,
00130 &e.e);
00131
00132 if (e.e.value < 0)
00133 throw e;
00134
00135 return Config(config);
00136 }
00137
00167 inline Config
00168 calibrate (const RangeMap &rangeMap, const Metric::PatternSPPoints &points,
00169 float initialAngle, float angleStep, int filterlen = 1)
00170 {
00171 LensDistortion::Model dm;
00172 return calibrate(rangeMap, points, initialAngle, angleStep, dm,
00173 filterlen);
00174 }
00175 }
00176 }
00177
00178 #endif // !AQSENSE_SAL3DPP_ANGULAR_METRIC_HPP