• 大小: 16.42MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-07-14
  • 语言: 其他
  • 标签: Hog  源码  

资源简介

Hog特征提取,详细代码,输出的是特征大数组.

资源截图

代码片段和文件信息

 #include 
 #include 
 #include 
 #include 
 #include 
#define PI 3.14
#define BIN_SIZE 20
#define BIN_NVM 9
#define NORM_WIDTH 130
#define NORM_HEIGHT 82
#define CELL_SIZE 8
#define BLOCK_SIZE 2
#define PIC_CELL_WH 50
#define CELL_W_NVM  ((NORM_WIDTH-2) / CELL_SIZE)
#define CELL_H_NVM  ((NORM_HEIGHT-2) / CELL_SIZE)
#define BLOCK_W_NVM  (CELL_W_NVM - BLOCK_SIZE + 1)
#define BLOCK_H_NVM  (CELL_H_NVM - BLOCK_SIZE + 1)
#define CELL_NVM (CELL_W_NVM * CELL_H_NVM)
#define BLOCK_NVM (BLOCK_W_NVM * BLOCK_H_NVM)
#define ARRAY_ALL (BLOCK_W_NVM * BLOCK_H_NVM * BLOCK_SIZE * BLOCK_SIZE * BIN_NVM)


void  func(int i_x int i_y int i_w IplImage* Img_in float* fbin)
{
memset(fbin 0 9*sizeof(float));
float f_x = 0.0f f_y = 0.0f f_Nvm = 0.0f f_theta = 0.0f;
for (int ii = i_y; ii < i_y + i_w; ii++)
{
for (int jj = i_x; jj < i_x + i_w; jj++)
{
uchar* pData = (uchar*)(Img_in->imageData + ii * Img_in->widthStep + jj);
f_x = pData[1] - pData[-1];
f_y = pData[Img_in->widthStep]- pData[-Img_in->widthStep];
f_Nvm = pow( f_x*f_x + f_y*f_y  0.5f); 

float fAngle = 90.0f;
if (f_x == 0.0f)
{
if (f_y > 0)
{
fAngle = 90.0f;
}
}
else if (f_y == 0.0f)
{
if (f_x > 0)
{
fAngle == 0.0f;
}
else if (f_x < 0)
{
fAngle == 180.0f;
}
}
else
{
f_theta = atan(f_y/f_x); //// atan() 范围为 -Pi/2 到 pi/2 所有9个bin范围是 0~180°
fAngle = (BIN_SIZE*BIN_NVM * f_theta)/PI;
}

if (fAngle < 0)
{
fAngle += 180;
}

int iWhichBin = fAngle/BIN_SIZE;
fbin[iWhichBin] += f_Nvm;
}
}
}
 
 void main()
 {
  IplImage* img = cvLoadImage(“./003.jpg“);
  IplImage *img1 = cvCreateImage(cvGetSize(img)IPL_DEPTH_8U1);
  IplImage *img2 = cvCreateImage(cvGetSize(img)IPL_DEPTH_8U1);
  CvMat* mat = cvCreateMat(img->width img->heightCV_32FC1);

//// 灰度图
  cvCvtColor(imgimg1CV_BGR2GRAY); 
  cvNamedWindow(“GrayImage“CV_WINDOW_AUTOSIZE);
  cvShowImage(“GrayImage“img1); 

//// gamma校正
  uchar* uData  = (uchar*)(img1->imageData);
  float* fMat = mat->data.fl;
 
  for (int ii = 0; ii < img1->imageSize; ii++)
  {
  fMat[ii] = pow( uData[ii]  0.5f); 
  ((uchar*)img2->imageData)[ii] = (uchar)(fMat[ii]);
  } 

//// 缩放原有图片
IplImage* img3 = 0;
CvSize dst_cvsize;
dst_cvsize.width = NORM_WIDTH;
dst_cvsize.height = NORM_HEIGHT;
img3 = cvCreateImage(dst_cvsize IPL_DEPTH_8U1 );
cvResize(img2 img3 CV_INTER_LINEAR);

//// 计算每个cell每个梯度的大小和方向
int i_binNvm = 0;
float f_bin_out[CELL_NVM][BIN_NVM];
float i_AllbinNvm[][BLOCK_SIZE*BLOCK_SIZE*BIN_NVM] = {0.0f};
int ii_nvm1 = 0 ii_nvm2 = 0;
for (int ii = 1; ii + CELL_SIZE < img3->height; ii+=CELL_SIZE)
{
for (int jj = 1; jj + CELL_SIZE < img3->width; jj+=CELL_SIZE)
{
func(jj ii CELL_SIZE img3 f_bin_out[i_binNvm++]);
}
}

//// 创建了一个img 画每个cell的9个bin的方向大小 注意 X正方形向右 Y正方

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2015-07-15 08:49  cHog\
     目录           0  2015-07-21 16:22  cHog\MyTest_Hog\
     文件       49685  2015-07-21 11:14  cHog\MyTest_Hog\003.jpg
     目录           0  2015-07-21 15:47  cHog\MyTest_Hog\Debug\
     文件       15572  2015-07-21 15:47  cHog\MyTest_Hog\Debug\CL.read.1.tlog
     文件         728  2015-07-21 15:47  cHog\MyTest_Hog\Debug\CL.write.1.tlog
     文件        1527  2015-07-16 15:34  cHog\MyTest_Hog\Debug\Hog.obj
     文件        3164  2015-07-16 15:34  cHog\MyTest_Hog\Debug\MyTest_Hog.Build.CppClean.log
     文件       35840  2015-07-21 15:47  cHog\MyTest_Hog\Debug\MyTest_Hog.exe
     文件         406  2015-07-16 15:34  cHog\MyTest_Hog\Debug\MyTest_Hog.exe.embed.manifest
     文件         472  2015-07-16 15:34  cHog\MyTest_Hog\Debug\MyTest_Hog.exe.embed.manifest.res
     文件         381  2015-07-21 15:47  cHog\MyTest_Hog\Debug\MyTest_Hog.exe.intermediate.manifest
     文件      430024  2015-07-21 15:47  cHog\MyTest_Hog\Debug\MyTest_Hog.ilk
     文件          57  2015-07-21 15:47  cHog\MyTest_Hog\Debug\MyTest_Hog.lastbuildstate
     文件        3599  2015-07-21 15:47  cHog\MyTest_Hog\Debug\MyTest_Hog.log
     文件       42501  2015-07-21 15:47  cHog\MyTest_Hog\Debug\MyTest_Hog.obj
     文件      617472  2015-07-21 15:47  cHog\MyTest_Hog\Debug\MyTest_Hog.pdb
     文件         210  2015-07-16 15:34  cHog\MyTest_Hog\Debug\MyTest_Hog_manifest.rc
     文件        1702  2015-07-21 15:47  cHog\MyTest_Hog\Debug\cl.command.1.tlog
     文件           2  2015-07-21 15:47  cHog\MyTest_Hog\Debug\link-cvtres.read.1.tlog
     文件           2  2015-07-21 15:47  cHog\MyTest_Hog\Debug\link-cvtres.write.1.tlog
     文件           2  2015-07-21 15:47  cHog\MyTest_Hog\Debug\link.11180-cvtres.read.1.tlog
     文件           2  2015-07-21 15:47  cHog\MyTest_Hog\Debug\link.11180-cvtres.write.1.tlog
     文件           2  2015-07-21 15:47  cHog\MyTest_Hog\Debug\link.11180.read.1.tlog
     文件           2  2015-07-21 15:47  cHog\MyTest_Hog\Debug\link.11180.write.1.tlog
     文件           2  2015-07-21 15:47  cHog\MyTest_Hog\Debug\link.14316-cvtres.read.1.tlog
     文件           2  2015-07-21 15:47  cHog\MyTest_Hog\Debug\link.14316-cvtres.write.1.tlog
     文件           2  2015-07-21 15:47  cHog\MyTest_Hog\Debug\link.14316.read.1.tlog
     文件           2  2015-07-21 15:47  cHog\MyTest_Hog\Debug\link.14316.write.1.tlog
     文件           2  2015-07-21 15:47  cHog\MyTest_Hog\Debug\link.4416-cvtres.read.1.tlog
     文件           2  2015-07-21 15:47  cHog\MyTest_Hog\Debug\link.4416-cvtres.write.1.tlog
............此处省略52个文件信息

评论

共有 条评论