You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

55 lines
1.2 KiB
C

4 years ago
#ifndef D2CornerDetector_h__
#define D2CornerDetector_h__
#include "SimpleCornerDetector.h"
#include <deque>
using std::deque;
namespace pagic
{
class AngDeltaInfo
{
public:
AngDeltaInfo()
: m_ld(0)
, m_rd(0)
, m_leftIdx(-1)
, m_rightIdx(-1)
, m_cenIdx(-1)
{
}
double m_ld, m_rd;
int m_leftIdx, m_rightIdx, m_cenIdx;
};
class D2CornerDetector : public SimpleCornerDetector
{
public:
D2CornerDetector();
virtual void detectCorners(const vector<Point2d>& posVec, vector<CornerInfo*>& cornerVec,
vector<CornerInfo*>* pCifVec = 0,
vector<double>* pDVec = 0,
int* pStartIdx = 0,
int* pEndIdx = 0);
virtual void detectCorners(const deque<Point2d>& posVec, deque<CornerInfo*>& cornerVec,
deque<CornerInfo*>* pCifVec = 0,
deque<double>* pDVec = 0,
int* pStartIdx = 0,
int* pEndIdx = 0);
AngDeltaInfo* genAngDeltaInfo(const vector<double>& angDeltaVec, int cenIdx);
CornerInfo* isCorner(const vector<Point2d>& posVec, int cenIdx);
bool isCorner(const vector<double>& dVec, int cenIdx);
void genDVec(const vector<CornerInfo*>& cifVec, vector<double>& dVec,
int startIdx = 1);
void genDDeq(const deque<CornerInfo*>& cifVec, deque<double>& dVec,
int startIdx = 1);
};
}
#endif // D2CornerDetector_h__