00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036 #include <structureColoring/StrColParams.h>
00037 #include <math.h>
00038 #include <stdio.h>
00039
00040 StrColParams::StrColParams() {
00041 init();
00042 }
00043
00044 StrColParams::~StrColParams() {
00045
00046 }
00047
00048 void StrColParams::init(){
00049
00050 mMaxSACDistanceThreshold = 0.05f;
00051 mMinSACDistanceThreshold = 0.02f;
00052 mSACOctreeFactor = 0.1f;
00053 mSACOutlierRatioThreshold = 0.6f;
00054
00055 mAngleEps = M_PI / 10.f;
00056 mAngleEpsOnMinOctreeRes = mAngleEps;
00057 mMinPointsInCC = 200;
00058 mMinNodesInCC = 3;
00059 mTexelSizeFactor = 2.f;
00060 mDilateIterations = 0;
00061 mPhi_resolution = 25;
00062 mRho_max = 20.0f;
00063 mMaxHTDistanceThreshold = 0.2f;
00064 mHTOctreeBinSizeFactor = 2.f;
00065 mHTDistanceDeviationFactor = 1.f;
00066 mMinOctreeResolution = 0.005f;
00067 mSqDistFactor = 0.002f;
00068 mMinPointsForNormal = 15;
00069 mCurvThreshold = 1.f / 10.f;
00070 mCurv2Threshold = 0.2f;
00071 mPrincipalVarFactor = 0.f;
00072 mMinOctreeNodes = mMinNodesInCC;
00073 mMinNodesInCylinder = 20;
00074 mTriesOnEachDepth = 25;
00075 mPostProcessing = 3;
00076 mMergePlanesSimilarityFactor = 1.f;
00077 mNodeToBBDistance = 0.2f;
00078 mDebugSteps = -1;
00079 mConnectionNeighbors = 2;
00080 mNodeSegmentedRatio = 1.f;
00081 mNormalDistanceWeight = 0.1f;
00082 mMinRadiusFactor = 0.5f;
00083 mMaxRadiusFactor = 10.f;
00084 mMinCylinderRadius = 0.025f;
00085 mMaxCylinderRadius = 1.0f;
00086 mCylinderBins = 30;
00087 mCylinderPairNeighbors = 2;
00088 mMidPointBinSizeFactor = 0.25f;
00089 mRadiusDevFactor = 1.5f;
00090 mOccupiedRatio = 0.2f;
00091 mCylinderHeightDev = 0.2f;
00092
00093 mPclSACmaxIter = 10000;
00094 mOnlyDepth = 0;
00095 mVerbose = false;
00096 mPGM = false;
00097 mKinect = false;
00098 mLaser = false;
00099 mABW = false;
00100 mPerceptron = false;
00101 mLoadPCD = false;
00102 mPCDnoRGB = false;
00103 mTextures = false;
00104 mCylinder = false;
00105 mPclSAC = false;
00106 mNoRansacStep = false;
00107 mWriteRawPic = false;
00108 mRawPicFilename = "rawPic";
00109 mLaserTopic = "";
00110 mRawPicCounter = 0;
00111 mRuntimeFilename = "elapsed.time";
00112 }
00113
00114 void StrColParams::parseParamFile(std::string filename)
00115 {
00116 FILE* file = fopen(filename.c_str(), "r");
00117 if (file == NULL) {
00118 printf("cannot open paramfile, using defaults\n");
00119 return;
00120 }
00121 if (!fscanf(file, "%f", &mMaxHTDistanceThreshold)) {
00122 printf("could not read param mMaxHTDistanceThreshold\n paramfile has wrong format, using defaults\n");
00123 fclose(file);
00124 return;
00125 }
00126 if (!fscanf(file, "%f", &mHTOctreeBinSizeFactor)) {
00127 printf("could not read param mHTOctreeBinSizeFactor\n paramfile has wrong format, using defaults\n");
00128 fclose(file);
00129 return;
00130 }
00131 if (!fscanf(file, "%f", &mHTDistanceDeviationFactor)) {
00132 printf("could not read param mHTDistanceDeviationFactor\n paramfile has wrong format, using defaults\n");
00133 fclose(file);
00134 return;
00135 }
00136 if (!fscanf(file, "%f", &mMaxSACDistanceThreshold)) {
00137 printf("could not read param mMaxSACDistanceThreshold\n paramfile has wrong format, using defaults\n");
00138 fclose(file);
00139 return;
00140 }
00141 if (!fscanf(file, "%f", &mMinSACDistanceThreshold)) {
00142 printf("could not read param mMinSACDistanceThreshold\n paramfile has wrong format, using defaults\n");
00143 fclose(file);
00144 return;
00145 }
00146 if (!fscanf(file, "%f", &mSACOctreeFactor)) {
00147 printf("could not read param mSACOctreeFactor\n paramfile has wrong format, using defaults\n");
00148 fclose(file);
00149 return;
00150 }
00151 if (!fscanf(file, "%f", &mSACOutlierRatioThreshold)) {
00152 printf("could not read param mSACOutlierRatioThreshold\n paramfile has wrong format, using defaults\n");
00153 fclose(file);
00154 return;
00155 }
00156 if (!fscanf(file, "%f", &mMinOctreeResolution)) {
00157 printf("could not read param mMinOctreeResolution\n paramfile has wrong format, using defaults\n");
00158 fclose(file);
00159 return;
00160 }
00161 if (!fscanf(file, "%f", &mSqDistFactor)) {
00162 printf("could not read param mSqDistFactor\n paramfile has wrong format, using defaults\n");
00163 fclose(file);
00164 return;
00165 }
00166 if (!fscanf(file, "%d", &mPhi_resolution)) {
00167 printf("could not read param mPhi_resolution\n paramfile has wrong format, using defaults\n");
00168 fclose(file);
00169 return;
00170 }
00171 if (!fscanf(file, "%d", &mConnectionNeighbors)) {
00172 printf("could not read param mConnectionNeighbors\n paramfile has wrong format, using defaults\n");
00173 fclose(file);
00174 return;
00175 }
00176 if (!fscanf(file, "%f", &mAngleEps)) {
00177 printf("could not read param mAngleEps\n paramfile has wrong format, using defaults\n");
00178 fclose(file);
00179 return;
00180 }
00181 if (!fscanf(file, "%f", &mRadiusDevFactor)) {
00182 printf("could not read param mRadiusDevFactor\n paramfile has wrong format, using defaults\n");
00183 fclose(file);
00184 return;
00185 }
00186 if (!fscanf(file, "%d", &mTriesOnEachDepth)) {
00187 printf("could not read param mTriesOnEachDepth\n paramfile has wrong format, using defaults\n");
00188 fclose(file);
00189 return;
00190 }
00191 if (!fscanf(file, "%f", &mOccupiedRatio)) {
00192 printf("could not read param mOccupiedRatio\n paramfile has wrong format, using defaults\n");
00193 fclose(file);
00194 return;
00195 }
00196 if (!fscanf(file, "%f", &mNormalDistanceWeight)) {
00197 printf("could not read param mNormalDistanceWeight\n paramfile has wrong format, using defaults\n");
00198 fclose(file);
00199 return;
00200 }
00201 fclose(file);
00202 }