Haar + Adaboost结构体信息

OpenCV中Haar+Adaboost重要结构体

HaarDetectObjects_ScaleImage_Invoker(目标检测结构信息):此结构体中设计到训练和检测所用的部分结构体。其具体信息如下:

const CvHaarClassifierCascade* cascade;
int stripSize;
double factor;
Mat sum1, sqsum1, *norm1, *mask1;
Rect equRect;
std::vector<Rect>* vec;
std::vector<int>* rejectLevels;
std::vector<double>* levelWeights;
Mutex* mtx;

与Haar + Adaboost训练相关的结构体信息。

1)CvHaarClassifierCascade(Haar级联分类器)

typedef struct CvHaarClassifierCascade
{
    int  flags;                // 标志位
    int  count;                // 强分类器数目
    CvSize orig_window_size;   // 训练原始窗口大小
    CvSize real_window_size;   // 待检测物体的真实窗口大小
    double scale;              // Haar块缩放的尺度
    CvHaarStageClassifier* stage_classifier;   // 强分类器数组
    CvHidHaarClassifierCascade* hid_cascade;   // hid级联分类器,用于检测
} CvHaarClassifierCascade;

2)CvHaarStageClassifier(Haar强分类器)

typedef struct CvHaarStageClassifier
{
    int  count;// 强分类器中弱分类器数目
    float threshold;   // 强分类器阈值
    CvHaarClassifier* classifier;  // 弱分类器组信息
    int next;  // 下一个强分类器
    int child;
    int parent;
} CvHaarStageClassifier;

3)CvHaarClassifier(Haar弱分类器)

typedef struct CvHaarClassifier
{
    int count;  // 决策树中节点数目 
    CvHaarFeature* haar_feature;  // 弱分类器特征类型,大小,种类
    float* threshold;   // 弱分类器阈值
    int* left;  // 弱分类器左子节点
    int* right; // 弱分类器右子节点
    float* alpha;   // 弱分类器权重
} CvHaarClassifier;

4)CvHaarFeature(Haar特征)

typedef struct CvHaarFeature
{
    int tilted;// 是否旋转
    struct // Haar特征相关信息
    {
        CvRect r;  // Haar特征中矩形
        float weight;  // Haar特征中矩形权重
    } rect[CV_HAAR_FEATURE_MAX];   // Haar特征由2~3个具有权重的矩形组成
} CvHaarFeature;

5)CvRect(矩形)

typedef struct CvRect
{
    int x;// 左上角横坐标
    int y;// 左上角纵坐标
    int width;// 矩形宽度
    int height;   // 矩形高度
    ...
} CvRect;

与Haar + Adaboost检测相关的结构体信息

1)CvHidHaarClassifierCascade(hid级联分类器)

typedef struct CvHidHaarClassifierCascade
{
    int  count;               // 有多少个stage,即多少个stage_classifier 
    int  isStumpBased;        // 是否是决策树桩
    int  has_tilted_features; // 是否有旋转特征
    int  is_tree;             // 弱分类器是否是树
    double inv_window_area;   // 窗口面积的倒数
    CvMat sum, sqsum, tilted; // 存放积分图、积分图平方、旋转等结构体
    CvHidHaarStageClassifier* stage_classifier;  // 强分类器
    sqsumtype *pq0, *pq1, *pq2, *pq3;            // 平方和积分图中对应特征的四点
    sumtype *p0, *p1, *p2, *p3;                  // 积分图中对应特征的四点
    void** ipp_stages;        // stage的首地址,保存着一系列连续的stage。每个stage中包含一系列的树,每棵树都有一系列的节点
} CvHidHaarClassifierCascade;

2)CvHidHaarStageClassifier(hid强分类器)

typedef struct CvHidHaarStageClassifier
{
    int  count;                        // 有多少个树,即多少个classifier
    float threshold;                   // 强分类器阈值
    CvHidHaarClassifier* classifier;   // 分类器
    int two_rects;                     // 矩形数(不确定) 

    struct CvHidHaarStageClassifier* next;   // 下一个强分类器
    struct CvHidHaarStageClassifier* child;
    struct CvHidHaarStageClassifier* parent;
} CvHidHaarStageClassifier;

3)CvHidHaarClassifier(hid弱分类器)

typedef struct CvHidHaarClassifier
{
    int count; // 有多少个树节点,即多少个node
    //CvHaarFeature* orig_feature;
    CvHidHaarTreeNode* node;   // 弱分类器中的节点
    float* alpha;  // 弱分类器节点所占比重   
} CvHidHaarClassifier;

3)CvHidTreeNode(hid弱分类器节点)

typedef struct CvHidHaarTreeNode
{
    CvHidHaarFeature feature;  // 特征
    float threshold;           // 判断往左还是往右的阈值,大于阈值往左,小于阈值往右
    int left;                  // 左子树
    int right;                 // 右子树
} CvHidHaarTreeNode;

4)CvHidHaarFeature(hid特征)

typedef struct CvHidHaarFeature
{
    struct
    {
        sumtype *p0, *p1, *p2, *p3;  // Haar特征矩形四点对应积分图
        float weight;                // Haar特征中小矩形所占权重
    }
    rect[CV_HAAR_FEATURE_MAX];       // CV_HAAR_FEATURE_MAX为3,一个CvHidHaarFeature表示一个Haar特征,即3或2个rect,以及rect相应的权重
} CvHidHaarFeature;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值