HOG 特征计算实现
// 获取HOG直方图
cv::Mat getHog(Point pt,std::vector<Mat> &integrals)
{// 判断当前点的位置是否符合条件 if( pt.x - R < 0 ||pt.y - R < 0 ||pt.x + R >= integrals[0].cols ||pt.y + R >= integrals[0].rows ){return Mat();}// 直方图Mat hist(Size(NBINS*BLOCKSIZE*BLOCKSIZE,1),CV_32F);Point tl(0,pt.y-R);int c = 0;// 遍历块for(int i = 0; i < BLOCKSIZE;i++){tl.x = pt.x - R;for(int j = 0; j < BLOCKSIZE; j++){// 获取当前窗口,计算局部直方图Rect roi(tl,tl+Point(CELLSIZE,CELLSIZE));// 计算当前bins下直方图Mat hist_temp = hist.colRange(c,c+NBINS);cacHOGinCell(hist_temp,roi,integrals);// cell步长尺寸tl.x += CELLSIZE;c += NBINS;}tl.y = CELLSIZE;}// 归一化L2范数normalize(hist,hist,1,0,NORM_L2);return hist;
}
// 计算HOG特征
std::vector<Mat> cacHOGFeature(cv::Mat srcImage)
{Mat grayImage;std::vector<Mat> HOGMatVector;cv::cvtColor(srcImage,grayImage,CV_RGB2GRAY);grayImage.convertTo(grayImage,CV_8UC1);// 生成积分图像std::vector<Mat> integrals = CalculateIntegralHOG(grayImage);Mat image = grayImage.clone();// 灰度值缩小image *= 0.5;// HOG特征矩阵cv::Mat HOGBlockMat(Size(NBINS,1),CV_32F);// cell遍历for(int y = CELLSIZE/2; y < grayImage.rows; y += CELLSIZE){for(int x = CELLSIZE / 2; x < grayImage.cols; x += CELLSIZE){// 获取当前窗口HOGcv::Mat hist = getHog(Point(x,y),integrals);if (hist.empty()) continue;HOGBlockMat = Scalar(0);for(int i = 0; i < NBINS; i++){for(int j = 0; j < BLOCKSIZE; j++){HOGBlockMat.at<float>(0,i) += hist.at<float>(0,i+j*NBINS);}}// L2范数归一化normalize(HOGBlockMat,HOGBlockMat,1,0,CV_L2);HOGMatVector.push_back(HOGBlockMat); Point center(x, y);// 绘制HOG特征图for (int i = 0; i < NBINS; i++){// 角度获取double theta = (i * THETA + 90.0 ) * CV_PI / 180.0;Point rd(CELLSIZE*0.5*cos(theta), CELLSIZE*0.5*sin(theta));// 获取绘制中心Point rp = center - rd;Point lp = center - -rd;// 绘制HOG特征块line(image, rp, lp, Scalar(255*HOGBlockMat.at<float>(0, i), 255, 255));}}}imshow("out",image);return HOGMatVector;
}
转载:http://blog.csdn.net/zhuwei1988
HOG 特征计算实现相关推荐
- 使用opencv作物件识别(一) —— 积分直方图加速HOG特征计算
使用opencv作物件识别(一) -- 积分直方图加速HOG特征计算 博客分类: 图像识别.机器学习.数据挖掘 CC++C# 方向梯度直方图(Histograms of Oriented Gradi ...
- 图像的全局特征--HOG特征、DPM特征
HOG特征:方向梯度直方图(Histogram of Oriented Gradient,)特征是一种全局图像特征描述子. 它通过计算和统计图像局部区域的梯度方向直方图来构成特征.Hog特征结合SVM ...
- svm性别识别及HOG特征原理浅析
HOG特征原理主要参考http://blog.csdn.net/abcjennifer/article/details/7365651 HOG即histogram of oriented gra ...
- OpenCV:使用python-cv2+Hog特征+SVM实现狮子识别
文章目录 SVM Hog特征 Hog特征+SVM实现狮子识别 SVM 支持向量机:寻求一个最优的超平面,实现样本的分类 下面我们用SVM实现一个根据身高体重对男女生分类的问题 import cv2 i ...
- HOG参数简介及Hog特征维数的计算
HOG构造函数 CV_WRAP HOGDescriptor() :winSize(64,128), blockSize(16,16), blockStride(8,8), cellSize( ...
- HOG特征也可以作为图像重建的目标!FAIRJHU提出新的one-stage自监督预训练模型MaskFeat!...
▊ 写在前面 在本文中,作者提出了用于视频模型自监督预训练的掩蔽特征预测(Masked Feature Prediction,MaskFeat).本文的方法首先随机掩蔽输入序列的一部分,然后预测掩蔽区 ...
- HOG特征过程解释(转)
1.HOG特征: 方向梯度直方图(Histogram of Oriented Gradient, HOG)特征是一种在计算机视觉和图像处理中用来进行物体检测的特征描述子.它通过计算和统计图像局部区域的 ...
- 分类器是如何做检测的?(2)——【续】检测中的LBP和HAAR特征计算过程
前面介绍分类器检测过程的示例中是以HOG特征为例,那LBP和HAAR特征在xml中是如何表达和测试的呢? 2.3 LBP与HAAR特征 HAAR特征的计算和表达方式与HOG很类似,在OpenCV ...
- 利用Hog特征和SVM分类器进行行人检测
1.HOG特征: 方向梯度直方图(Histogram of Oriented Gradient, HOG)特征是一种在计算机视觉和图像处理中用来进行物体检测的特征描述子.它通过计算和统计图像局部区域的 ...
最新文章
- 连接控制台_智能消防水炮视频系统连接方法
- Winform 导出成Excel打印代码
- jquery数据折叠_通过位折叠缩小大数据
- java怎么自动提示关键词_Eclipse 实现关键字自动补全功能 (转)
- Sharepoint学习笔记—习题系列--70-573习题解析 -(Q136-Q138)
- 阻塞与非阻塞 异步 与同步
- 华北电力大学依托大数据实施精准资助
- Druid数据库连接池配置
- PHP获取windows登录用户名的方法
- cophenet matlab,Matlab聚类分析[转]
- 不参与,你怎么知道能有多刺激——一个币客与市场的深入对话
- 时间窗口(Time Windows)
- 在使用renderTo中遇到的Uncaught TypeError: Cannot read property 'insertAdjacentHTML' of null
- 非标自动化设计全过程,建议收藏
- 吐槽一下程序员职场那些令人迷惑的行为
- java安全体系:JCA、JCE、JSSE、JAAS
- 离散型特征编码方式:one-hot与哑变量
- 【手动安装Python包】
- 用户使用手册与测试报告(团队作业)
- matlab的imshow, image, imagesc区别