• 大小: 10.07MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-10-06
  • 语言: 其他
  • 标签: hog  opencv  

资源简介

配置好opencv249和VS2012的环境之后,设置好工程项目的属性,运行HOGvisualize\Debug或HOGvisualize\Release目录下的opencvtest.exe程序便可看到运行结果,即objimg.jpg图片的hog特征可视化图像hogvisualize.jpg。程序里有较为详细的注释,可以帮助理解hog特征的可视化过程,希望此程序对你有帮助,谢谢。

资源截图

代码片段和文件信息

#include “opencvtest.h“

using namespace std;
using namespace cv;

// HOGDescriptor visual_imagealizer
// adapted for arbitrary size of feature sets and training images
Mat get_hogdescriptor_visual_image(Mat& origImg
vector& descriptorValues//hog特征向量
Size winSize//图片窗口大小
Size cellSize             
int scaleFactor//缩放背景图像的比例
double viz_factor)//缩放hog特征的线长比例
{   
Mat visual_image;//最后可视化的图像大小
resize(origImg visual_image Size(origImg.cols*scaleFactor origImg.rows*scaleFactor));

int gradientBinSize = 9;
// dividing 180° into 9 bins how large (in rad) is one bin?
float radRangeForOneBin = 3.14/(float)gradientBinSize; //pi=3.14对应180°

// prepare data structure: 9 orientation / gradient strenghts for each cell
int cells_in_x_dir = winSize.width / cellSize.width;//x方向上的cell个数
int cells_in_y_dir = winSize.height / cellSize.height;//y方向上的cell个数
int totalnrofcells = cells_in_x_dir * cells_in_y_dir;//cell的总个数
//注意此处三维数组的定义格式
//int ***b;
//int a[2][3][4];
//int (*b)[3][4] = a;
//gradientStrengths[cells_in_y_dir][cells_in_x_dir][9]
float*** gradientStrengths = new float**[cells_in_y_dir];
int** cellUpdateCounter   = new int*[cells_in_y_dir];
for (int y=0; y {
gradientStrengths[y] = new float*[cells_in_x_dir];
cellUpdateCounter[y] = new int[cells_in_x_dir];
for (int x=0; x {
gradientStrengths[y][x] = new float[gradientBinSize];
cellUpdateCounter[y][x] = 0;

for (int bin=0; bin gradientStrengths[y][x][bin] = 0.0;//把每个cell的9个bin对应的梯度强度都初始化为0
}
}

// nr of blocks = nr of cells - 1
// since there is a new block on each cell (overlapping blocks!) but the last one
//相当于blockstride = (88)
int blocks_in_x_dir = cells_in_x_dir - 1;
int blocks_in_y_dir = cells_in_y_dir - 1;

// compute gradient strengths per cell
int descriptorDataIdx = 0;
int cellx = 0;
int celly = 0;

for (int blockx=0; blockx {
for (int blocky=0; blocky {
// 4 cells per block ...
for (int cellNr=0; cellNr<4; cellNr++)
{
// compute corresponding cell nr
int cellx = blockx;
int celly = blocky;
if (cellNr==1) celly++;
if (cellNr==2) cellx++;
if (cellNr==3)
{
cellx++;
celly++;
}

for (int bin=0; bin {
float gradientStrength = descriptorValues[ descriptorDataIdx ];
descriptorDataIdx++;

gradientStrengths[celly][cellx][bin] += gradientStrength;//因为C是按行存储

} // for (all bins)


// note: overlapping blocks lead to multiple updates of this sum!
// we therefore keep track how often a cell was updated
// to compute average gradient strengths
cellUpdateCounter[celly][cellx]++;//由于block之间有重叠,所以要记录哪些cell被多次计算了

} // for (all cells)


} // for (all block x pos)
} // for (all block y pos)



 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件      36686  2016-03-24 18:56  HOGvisualize\Debug\hogvisualize.jpg

     文件       2064  2016-03-24 14:53  HOGvisualize\Debug\objimg.jpg

     文件      91136  2016-03-24 21:48  HOGvisualize\Debug\opencvtest.exe

     文件     529968  2016-03-24 21:48  HOGvisualize\Debug\opencvtest.ilk

     文件    2239488  2016-03-24 21:48  HOGvisualize\Debug\opencvtest.pdb

     文件       3566  2016-03-24 21:48  HOGvisualize\opencvtest\Debug\cl.command.1.tlog

     文件     141614  2016-03-24 21:48  HOGvisualize\opencvtest\Debug\CL.read.1.tlog

     文件       2560  2016-03-24 21:48  HOGvisualize\opencvtest\Debug\CL.write.1.tlog

     文件     294985  2016-03-21 20:57  HOGvisualize\opencvtest\Debug\facedetect.obj

     文件     361847  2016-03-21 20:58  HOGvisualize\opencvtest\Debug\facematch.obj

     文件          2  2016-03-24 21:48  HOGvisualize\opencvtest\Debug\link-cvtres.read.1.tlog

     文件          2  2016-03-24 21:48  HOGvisualize\opencvtest\Debug\link-cvtres.write.1.tlog

     文件          2  2016-03-24 21:48  HOGvisualize\opencvtest\Debug\link-rc.read.1.tlog

     文件          2  2016-03-24 21:48  HOGvisualize\opencvtest\Debug\link-rc.write.1.tlog

     文件          2  2016-03-24 21:48  HOGvisualize\opencvtest\Debug\link.4028-cvtres.read.1.tlog

     文件          2  2016-03-24 21:48  HOGvisualize\opencvtest\Debug\link.4028-cvtres.write.1.tlog

     文件          2  2016-03-24 21:48  HOGvisualize\opencvtest\Debug\link.4028-rc.read.1.tlog

     文件          2  2016-03-24 21:48  HOGvisualize\opencvtest\Debug\link.4028-rc.write.1.tlog

     文件          2  2016-03-24 21:48  HOGvisualize\opencvtest\Debug\link.4028.read.1.tlog

     文件          2  2016-03-24 21:48  HOGvisualize\opencvtest\Debug\link.4028.write.1.tlog

     文件          2  2016-03-24 21:48  HOGvisualize\opencvtest\Debug\link.4432-cvtres.read.1.tlog

     文件          2  2016-03-24 21:48  HOGvisualize\opencvtest\Debug\link.4432-cvtres.write.1.tlog

     文件          2  2016-03-24 21:48  HOGvisualize\opencvtest\Debug\link.4432-rc.read.1.tlog

     文件          2  2016-03-24 21:48  HOGvisualize\opencvtest\Debug\link.4432-rc.write.1.tlog

     文件          2  2016-03-24 21:48  HOGvisualize\opencvtest\Debug\link.4432.read.1.tlog

     文件          2  2016-03-24 21:48  HOGvisualize\opencvtest\Debug\link.4432.write.1.tlog

     文件          2  2016-03-24 21:48  HOGvisualize\opencvtest\Debug\link.7284-cvtres.read.1.tlog

     文件          2  2016-03-24 21:48  HOGvisualize\opencvtest\Debug\link.7284-cvtres.write.1.tlog

     文件          2  2016-03-24 21:48  HOGvisualize\opencvtest\Debug\link.7284-rc.read.1.tlog

     文件          2  2016-03-24 21:48  HOGvisualize\opencvtest\Debug\link.7284-rc.write.1.tlog

............此处省略63个文件信息

评论

共有 条评论