码迷,mamicode.com
首页 > 其他好文 > 详细

cell区域-方向梯度直方图

时间:2017-10-31 18:50:14      阅读:215      评论:0      收藏:0      [点我收藏+]

标签:ast   max   code   问题:   ret   turn   size   1.0   tco   

 1 //hog_test方向梯度直方图
 2 cv::Mat hog_feature(cv::Mat img)
 3 {
 4     //std::vector<float> v_hog(12,0.0);   //hog特征向量
 5     cv::Mat v_hog(cv::Size(12,1),CV_32FC1,cv::Scalar(0));//必须初始化,否则结果出乎意料
 6     cv::Mat v_hog_normalize;
 7     float x_gradient, y_gradient;
 8     float hog_amplitude, hog_angle;
 9     int dex;
10     for (int i = 1; i < img.rows-1;i++)
11         for (int j = 1; j < img.cols-1; j++)
12         {
13             x_gradient = img.at<uchar>(i, j + 1) - img.at<uchar>(i, j - 1);
14             y_gradient = img.at<uchar>(i + 1, j) - img.at<uchar>(i - 1, j);
15             hog_amplitude = sqrt(x_gradient*x_gradient + y_gradient*y_gradient);
16             if (x_gradient == 0.0)
17                 v_hog.at<float>(0,0) += hog_amplitude;
18             else
19             {
20                 //hog_angle = cvFastArctan(y_gradient, x_gradient)*CV_PI/180;
21                 hog_angle = atan2(y_gradient,x_gradient);
22                 //printf("%lf\n", hog_angle);
23                 dex = cvFloor( hog_angle*11/(CV_PI*2) + 5.5);//建立(-pi,pi)到(0,11)的映射
24                 
25                 v_hog.at<float>(0,dex) += hog_amplitude;
26             }
27         }
28     //向量归一化
29     normalize(v_hog, v_hog_normalize, 1.0, 0.0, cv::NORM_MINMAX);
30     return v_hog_normalize;
31 }
32 int main()
33 {
34     cv::Mat image = cv::imread("chuang.jpg");
35     cv::Mat gray_image;
36     cvtColor(image, gray_image, cv::COLOR_BGR2GRAY);
37     cv::Mat vec = hog_feature(gray_image);
38     std::cout << vec << std::endl;
39 
40     system("pause");
41     return 0;
42 }

问题:1.从for循环可以看出,边界像素没有计算

          2.v_hog在声明时必须初始化,比如Scalar(0),否则结果不正确,这是C语言基础

          3.水平方向梯度为0时,将幅值加入v_hog向量的首部,不知是否正确

          4.访问像素采用.at()的方式,是否有更高效的方式?

平台:visual studio 2013 / opencv3.0

cell区域-方向梯度直方图

标签:ast   max   code   问题:   ret   turn   size   1.0   tco   

原文地址:http://www.cnblogs.com/cv-jiang/p/7762455.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!