在OpenCV中有关于级联分类器的更详细的参考吗?
Is there more detailed reference on Cascade Classifiers in OpenCV?
我正试图修改OpenCV的haar级联分类器到特定的目的,并从上到下查看其源代码。但是我坚持理解了最后一部分,即在cascadedetect.hpp
的第361行计算特征值。return optfeaturesPtr[featureIdx].calc(pwin) * varianceNormFactor;
及其子部分用于(a)计算cascaddetect .hpp第398-407行中每个矩形的加权和
inline float HaarEvaluator::OptFeature :: calc( const int* ptr ) const
{
float ret = weight[0] * CALC_SUM_OFS(ofs[0], ptr) +
weight[1] * CALC_SUM_OFS(ofs[1], ptr);
if( weight[2] != 0.0f )
ret += weight[2] * CALC_SUM_OFS(ofs[2], ptr);
return ret;
}
和(b)计算cascaddetect .cpp的691-697和701行的varianceNormFactor
pwin = &sbuf.at<int>(pt) + s.layer_ofs;
const int* pq = (const int*)(pwin + sqofs);
int valsum = CALC_SUM_OFS(nofs, pwin);
unsigned valsqsum = (unsigned)(CALC_SUM_OFS(nofs, pq));
double area = normrect.area();
double nf = area * valsqsum - (double)valsum * valsum;
line:701 varianceNormFactor = (float)(1./nf);
根据我的一点知识,我猜'pwin'代表当前正在进行的实际窗口,但是(Q1) pq是什么意思?我找不到任何行给值到sbuf变量(以某种方式连接到上面的所有内容)
根据OpenCV团队提到的Rainer Lienhart的论文,他们使用这个方程进行光校正。但在论文中,他们说我们可以通过从每个像素的正方形中观察积分图像中的4个值来计算σ。(Q2)但是我们不应该在取平方和之前从每个像素中减去平均值,以便计算本文中的标准差或σ代表不同的东西吗?
从源头上看,我认为他们使用的方程应该和这个相似。如果可能的话,我从哪里可以得到这些代码背后的数学或这部分的详细参考资料?我已经阅读了OpenCV的参考手册,但没有找到任何关于它的内容。
(Q1) What does pq mean:
我认为这可能意味着"指针指向正方形";OpenCV可以计算所有像素的平方,并将其附加到缓冲区B。因此,当进行规范化时,它可以通过:
快速引用它。当前窗口在B中的偏移量,即pwin。
基于pwin的B中当前窗口内每个像素的正方形值的偏移量,即sqofs。
(Q2) But aren't we supposed to subtract average from each pixels BEFORE taking sum of squares in order to calculate standard deviation > or σ in this paper represent something different?
我已经在OpenCV 3.4.4上检查了它,是的,它不减去平均值。我猜因为哈尔图是对称的,例如对于水平2,一个区域减去一个相同面积的区域。因此,效应总和为零,我们可以忽略它。
- 为我的 c++ 类介绍制作一个三角形分类器.我有几个问题
- 只有级联分类器会发出未定义的引用错误
- 将svm分类器设置为HOG检测器
- 在C /OBJ-C 中运行Tensorflow分类器模型与Python的结果不同
- 贝叶斯和SVM分类器在OpenCV3中的实现
- 如何在OpenCV中从3D模型训练HAAR分类器?
- Tensorflow - Deep MNIST 教程 - 将分类器导出到C++
- OpenCV SVM 分类器图像识别
- 哪个分类器可用于使用C 和OPENCV进行铁路线检测
- CNTK中的二进制分类器,带有C
- 是时候训练分类器了
- SVM 分类器未保存在 ".xml" 中?
- 带有级联或 SVM 分类器的 HOG.C++ OpenCV (V2.4.5) 中的程序
- 如何在C++和OpenCV中测量KNN分类器训练的训练时间
- OpenCV级联分类器检测输入Mat边界外的MultiScale结果Rect
- 如何使用多个 SVM 分类器(每个分类器都有一个特定的内核)作为"one vs rest classification"方案?
- 在哪里可以获得用于detectMultiScale调用的新的经过训练的分类器级联类型
- opencv训练分类器从未连续3个阶段
- 修改OpenCV随机树分类器
- 在OpenCV中有关于级联分类器的更详细的参考吗?