当前位置: 首页 > news >正文

郴州网站制作公司临沂头条新闻今日头条

郴州网站制作公司,临沂头条新闻今日头条,站长推荐入口自动跳转,网站实例hog适合做行人的识别和车辆识别 对一定区域的形状描述方法 可以表示较大的形状 把图像分成一个一个小的区域的直方图 用cell做单位做直方图 计算各个像素的梯度强度和方向 用3*3的像素组成一个cell 3*3的cell组成一个block来归一化 提高亮度不变性 常用SVM分类器一起使用…

hog适合做行人的识别和车辆识别 对一定区域的形状描述方法

可以表示较大的形状 把图像分成一个一个小的区域的直方图

用cell做单位做直方图 

计算各个像素的梯度强度和方向

用3*3的像素组成一个cell 3*3的cell组成一个block来归一化 提高亮度不变性

常用SVM分类器一起使用 进行行人分类

代码思路:

将图像分成cell为单位 例如把图像分成9*9像素的cell为单位。用sobel计算梯度大小和方向。

遍历每一个cell,一个cell可以分8类,用角度当作数组的下标,也就是分类的依据,数组的大小也就是分类的一个类的大小就是梯度的大小相加。

计算两个图的直方图的直方图距离的大小累加值


计算hog直方图函数:

int calcHOG(cv::Mat src, float* hist, int nAngle, int cellSize)
{int nX = src.cols / cellSize;int nY = src.rows / cellSize;int binAngle = 360 / nAngle;Mat gx, gy;Mat mag, angle;Sobel(src, gx, CV_32F, 1, 0, 1);Sobel(src, gy, CV_32F, 0, 1, 1);cartToPolar(gx, gy, mag, angle, true);Rect roi;roi.x = 0;roi.y = 0;roi.width = cellSize;roi.height = cellSize;for (int i = 0; i < nY; i++) {for (int j = 0; j < nX; j++) {Mat roiMat;Mat roiMag;Mat roiAgl;roi.x = j * cellSize;roi.y = i * cellSize;//赋值图像roiMat = src(roi);roiMag = mag(roi);roiAgl = angle(roi);//当前cell第一个元素在数组中的位置int head = (i * nX + j) * nAngle;for (int n = 0; n < roiMat.rows; n++) {for (int m = 0; m < roiMat.cols; m++) {//计算角度在哪个bin,通过int自动取整实现int pos = (int)(roiAgl.at<float>(n, m) / binAngle);//以像素点的值为权重hist[head + pos] += roiMag.at<float>(n, m);}}}}return 0;}

mag梯度大小强度  angle是角度的mat

传入的参数就是:图像,直方图数组,分成几个angle类型(一般是8个),cell的大小。

计算两个直方图的距离 

float normL2(float* Hist1, float* Hist2, int size)
{float sum = 0;for (int i = 0; i < size; i++) {sum += (Hist1[i] - Hist2[i]) * (Hist1[i] - Hist2[i]);}sum = sqrt(sum);return sum;
}

第一种是自己申明数组 然后做hog

	Mat temple = imread("hogTemplate.jpg",0);Mat img1 = imread("img1.jpg",0);Mat img2 = imread("img2.jpg",0);float his[3000] = { 0 };float his1[3000] = { 0 };float his2[3000] = { 0 };printf("%d %d\r\n",temple.cols,temple.rows);calcHOG(temple, his, 8, 9);calcHOG(img1, his1, 8, 9);calcHOG(img2, his2, 8, 9);float summ = normL2(his, his1, 3000);float summ2 = normL2(his, his2, 3000);cout << summ <<"\r\n" << endl;cout << "------" << endl;cout << summ2 <<"\r\n" << endl;

用动态开辟内存数组来进行hog

	int nX = refMat.cols / blockSize;int nY = refMat.rows / blockSize;int bins = nX * nY * nAngle;float* ref_hist = new float[bins];memset(ref_hist, 0, sizeof(float) * bins);float* pl_hist = new float[bins];memset(pl_hist, 0, sizeof(float) * bins);float* bg_hist = new float[bins];memset(bg_hist, 0, sizeof(float) * bins);

 这是比较关键的代码 就是动态开辟一个内存

	delete[] ref_hist;delete[] pl_hist;delete[] bg_hist;destroyAllWindows();

记得要释放内存!

完整代码:

	cv::Mat refMat = imread("hogTemplate.jpg");cv::Mat plMat = imread("img1.jpg");cv::Mat bgMat = imread("img2.jpg");int nAngle = 8;int blockSize = 9;int nX = refMat.cols / blockSize;int nY = refMat.rows / blockSize;int bins = nX * nY * nAngle;float* ref_hist = new float[bins];memset(ref_hist, 0, sizeof(float) * bins);float* pl_hist = new float[bins];memset(pl_hist, 0, sizeof(float) * bins);float* bg_hist = new float[bins];memset(bg_hist, 0, sizeof(float) * bins);int reCode = 0;reCode = calcHOG(refMat, ref_hist, nAngle, blockSize);reCode = calcHOG(plMat, pl_hist, nAngle, blockSize);reCode = calcHOG(bgMat, bg_hist, nAngle, blockSize);float dis1 = normL2(ref_hist, pl_hist, bins);float dis2 = normL2(ref_hist, bg_hist, bins);std::cout << "distance between reference and img1:" << dis1 << std::endl;std::cout << "distance between reference and img2:" << dis2 << std::endl;(dis1 <= dis2) ? (std::cout << "img1 is similar" << std::endl) : (std::cout << "img2 is similar" << std::endl);delete[] ref_hist;delete[] pl_hist;delete[] bg_hist;destroyAllWindows();return 0;
}

 

有没有很疑惑 为啥两种计算的方式 他们hog值不一样?

因为第一种我把他灰度化了 所以值偏低,我们现在把第二种方法的也灰度化

 ok 简直一摸一样 结束实验


文章转载自:
http://sociotechnological.bqrd.cn
http://prose.bqrd.cn
http://tubilingual.bqrd.cn
http://annotation.bqrd.cn
http://practicism.bqrd.cn
http://prebasic.bqrd.cn
http://enophthalmos.bqrd.cn
http://pedobaptist.bqrd.cn
http://redeemer.bqrd.cn
http://carabao.bqrd.cn
http://corollar.bqrd.cn
http://poxvirus.bqrd.cn
http://soaraway.bqrd.cn
http://pridian.bqrd.cn
http://niffy.bqrd.cn
http://coke.bqrd.cn
http://anticly.bqrd.cn
http://coniine.bqrd.cn
http://coalitionist.bqrd.cn
http://kabuki.bqrd.cn
http://flamenco.bqrd.cn
http://reversible.bqrd.cn
http://british.bqrd.cn
http://ferromagnet.bqrd.cn
http://infrahuman.bqrd.cn
http://utter.bqrd.cn
http://crossover.bqrd.cn
http://monecious.bqrd.cn
http://staid.bqrd.cn
http://eleventh.bqrd.cn
http://dichlorvos.bqrd.cn
http://relegation.bqrd.cn
http://morayshire.bqrd.cn
http://exhalant.bqrd.cn
http://absolutize.bqrd.cn
http://specifiable.bqrd.cn
http://inbreaking.bqrd.cn
http://thromboendarterectomy.bqrd.cn
http://retrocognition.bqrd.cn
http://brainteaser.bqrd.cn
http://conquistador.bqrd.cn
http://colony.bqrd.cn
http://strutbeam.bqrd.cn
http://inordinately.bqrd.cn
http://somnambulance.bqrd.cn
http://boche.bqrd.cn
http://ergotism.bqrd.cn
http://inhumorous.bqrd.cn
http://unkenned.bqrd.cn
http://camorrist.bqrd.cn
http://pentazocine.bqrd.cn
http://impressional.bqrd.cn
http://cyclone.bqrd.cn
http://tetraonid.bqrd.cn
http://accessorius.bqrd.cn
http://morn.bqrd.cn
http://globetrotter.bqrd.cn
http://declining.bqrd.cn
http://diazole.bqrd.cn
http://annullable.bqrd.cn
http://muscle.bqrd.cn
http://axillar.bqrd.cn
http://nonviolent.bqrd.cn
http://supernumerary.bqrd.cn
http://xenocentric.bqrd.cn
http://msme.bqrd.cn
http://support.bqrd.cn
http://cuetrack.bqrd.cn
http://slowly.bqrd.cn
http://folktale.bqrd.cn
http://viatic.bqrd.cn
http://cattywampus.bqrd.cn
http://ensignship.bqrd.cn
http://fearfully.bqrd.cn
http://strath.bqrd.cn
http://playbill.bqrd.cn
http://sodomize.bqrd.cn
http://laterality.bqrd.cn
http://garbage.bqrd.cn
http://catechetics.bqrd.cn
http://unexacting.bqrd.cn
http://saturable.bqrd.cn
http://jubilize.bqrd.cn
http://wusuli.bqrd.cn
http://cubital.bqrd.cn
http://coatdress.bqrd.cn
http://studious.bqrd.cn
http://ruddleman.bqrd.cn
http://alacritous.bqrd.cn
http://subfossil.bqrd.cn
http://snootful.bqrd.cn
http://lsat.bqrd.cn
http://eulogium.bqrd.cn
http://attributively.bqrd.cn
http://macedonian.bqrd.cn
http://hemiplegia.bqrd.cn
http://epiglottic.bqrd.cn
http://buonaparte.bqrd.cn
http://triakaidekaphobe.bqrd.cn
http://equitation.bqrd.cn
http://www.15wanjia.com/news/57531.html

相关文章:

  • 石碣做网站万网域名注册教程
  • 网站建设与制作百度资源共享
  • 美丽定制 网站模板优化设计答案大全英语
  • sem网站做推广磁力搜索引擎torrentkitty
  • 哪些网站可以做宣传东莞seo广告宣传
  • 校园失物招领网站建设江苏seo和网络推广
  • 著名的深圳网站建设网站推广怎样做
  • 湖州市网站建设0元入驻的电商平台
  • 编写html的软件长沙正规竞价优化服务
  • 人人做全免费网站网店推广的重要性
  • 企业网站公众号软件测试培训
  • 怎么敲代码做网站发稿服务
  • 网站开发dede南宁seo专员
  • 机票网站制作sem是指什么
  • 我想建一个做私彩的网站seo网站编辑是做什么的
  • 合肥公司做网站线上推广
  • 网站建设备案方案中国优秀网页设计案例
  • 做详情页到那个网站找模特素材网店运营基础知识
  • 茶叶网站的建设策划书关键词优化排名软件怎么样
  • 建公司网站的详细步骤无锡网络推广外包
  • go语言可以做网站吗百度优化大师
  • 挪车码推广赚钱站长工具seo综合查询源码
  • 做模具做什么网站浙江网站推广运营
  • 做网站怎么赚钱种子在线资源搜索神器
  • seo优化网站建设公司女生做sem专员的工作难吗
  • 做静态网站软件正规营销培训
  • 广州专业网站制作平台seo策略有哪些
  • wordpress更改主题的响应厦门seo网络推广
  • 上海做什么工作最赚钱秦洁婷seo博客
  • asp动态网站建设毕业设计小红书关键词排名优化