#ifndef CT_HOUGHTRANSFORM_H #define CT_HOUGHTRANSFORM_H #include "ct_shapedata/ct_linedata.h" #include "ct_shape2ddata/ct_circle2ddata.h" #include #include #include class CTLIBSTRUCTUREADDON_EXPORT CT_HoughTransform { public: struct HoughObject { HoughObject(const QVector& coords, void* object) : _houghCoords(coords), _object(object) { } double operator()(int idx) const { if (idx < 0 || idx >= _houghCoords.size()) {return 0;} return _houghCoords[idx]; } double& operator[](int idx) { return _houghCoords[idx]; } int size() const {return _houghCoords.size();} QVector _houghCoords; void* _object; }; static void sortHoughtObjects(QList &objects, double minDist, QMultiMap &scoreMap); static void getHoughtDistances(QList &objects, double maxDist, QMultiMap* > &outDistMap); static double findBestHoughtObjects(QList &objects, double minDist, CT_HoughTransform::HoughObject* bestObject); static void createHoughObjectsFromVerticalLines(QList &lines, double referenceHeight, QList &outObjects); static void createHoughObjectsFromHorizontalCircles(QList &circles, double radiusWeight, QList &outObjects); }; #endif // CT_HOUGHTRANSFORM_H