#ifndef ONF_STEPCOMPUTEROADPROBABILITYRASTERS_H #define ONF_STEPCOMPUTEROADPROBABILITYRASTERS_H #include "ct_step/abstract/ct_abstractstep.h" #include "ct_itemdrawable/ct_image2d.h" #include "ct_itemdrawable/ct_scene.h" #include "ctliblas/itemdrawable/las/ct_stdlaspointsattributescontainer.h" class ONF_StepComputeRoadProbabilityRasters: public CT_AbstractStep { Q_OBJECT using SuperClass = CT_AbstractStep; public: ONF_StepComputeRoadProbabilityRasters(); QString description() const override; QString detailledDescription() const override; QString inputDescription() const override; QString outputDescription() const override; QString detailsDescription() const override; QString URL() const override; CT_VirtualAbstractStep* createNewInstance() const final; protected: void declareInputModels(CT_StepInModelStructureManager& manager) final; virtual void fillPostInputConfigurationDialog(CT_StepConfigurableDialog* postInputConfigDialog) final; void declareOutputModels(CT_StepOutModelStructureManager& manager) final; void compute() final; private: int _gndClass; double _slopeMin; double _slopeMax; double _roughMin; double _roughMax; double _roughPtsMaxHeight; double _roughPtsRadius; double _roughMinPoints; double _roughMaxPoints; double _sobelThMin; double _sobelThMax; double _chmMin; double _chmMax; double _lowVegDensTh; double _lowVegHmin; double _lowVegHmax; double _gndDensityMinPoints; double _gndDensityMaxPoints; double _slopeAdd; double _roughnessAdd; double _sobelAdd; double _chmAdd; double _intensityAdd; double _gndDensAdd; double _lowVegAdd; float _a; float _b; float _c; float _d; float _e; float _f; float _g; float _h; float _i; CT_HandleInResultGroupCopy<> _inResult; CT_HandleInStdZeroOrMoreGroup _inZeroOrMoreRootGroup; CT_HandleInStdGroup<> _inGroup; CT_HandleInSingularItem > _inDTM; CT_HandleInSingularItem _inScene; CT_HandleInSingularItem _inLASAttributes; CT_HandleInSingularItem _inArea; CT_HandleOutSingularItem > _outSlopePourc; CT_HandleOutSingularItem > _outRoughnessPoints; CT_HandleOutSingularItem > _outSobel; CT_HandleOutSingularItem > _outCHM; CT_HandleOutSingularItem > _outIntensityRange; CT_HandleOutSingularItem > _outGndPtsDensity; CT_HandleOutSingularItem > _outLowVegDensity; CT_HandleOutSingularItem > _outSlopePourcConductivity; CT_HandleOutSingularItem > _outRoughnessPointsConductivity; CT_HandleOutSingularItem > _outSobelConductivity; CT_HandleOutSingularItem > _outCHMConductivity; CT_HandleOutSingularItem > _outIntensityRangeConductivity; CT_HandleOutSingularItem > _outGndPtsDensityConductivity; CT_HandleOutSingularItem > _outLowVegDensityConductivity; CT_HandleOutSingularItem > _outConductivity; void computeNeighbourhood(const CT_Image2D *dtm, int xx, int yy); float computeSlope(const CT_Image2D *dtm) const; float computeRoughness(const CT_Image2D *dtm) const; float computeSobel(const CT_Image2D *dtm) const; float smooth(const CT_Image2D *raster) const; float smooth5x5(const CT_Image2D *raster, int xx, int yy) const; double computePercentile(QList &array, const double &p); float activationPiecewiseLinear(float x, float th1, float th2, float minValue = 0, float maxValue = 1, bool ascending = true); float activationThresholds(float x, float th); }; #endif // ONF_STEPCOMPUTEROADPROBABILITYRASTERS_H