最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

opencv3/C++ HOG特征提取方式

 更新時間:2019年12月11日 09:43:29   作者:阿卡蒂奧  
今天小編就為大家分享一篇opencv3/C++ HOG特征提取方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

HOG特征

HOG(Histograms of Oriented Gradients)梯度方向直方圖

通過利用梯度信息能反映圖像目標(biāo)的邊緣信息并通過局部梯度的大小將圖像局部的外觀和形狀特征化.在論文Histograms of Oriented Gradients for Human Detection中被提出.

HOG特征的提取過程為:

Gamma歸一化;

計(jì)算梯度;

劃分cell

組合成block,統(tǒng)計(jì)block直方圖;

梯度直方圖歸一化;

收集HOG特征。

Gamma歸一化:

對圖像顏色進(jìn)行Gamma歸一化處理,降低局部陰影及背景因素的影響.

計(jì)算梯度:

通過差分計(jì)算出圖像在水平方向上及垂直方向上的梯度:

然后得到各個像素點(diǎn)的梯度的幅值及方向:

劃分cell

將整個窗口劃分成大小相同互不重疊的細(xì)胞單元cell(如8×8像素),計(jì)算出每個cell的梯度大小及方向.然后將每像素的梯度方向在0−180o0−180o 區(qū)間內(nèi)(無向:0-180,有向:0-360)平均分為9個bins,每個cell內(nèi)的像素用幅值來表示權(quán)值,為其所在的梯度直方圖進(jìn)行加權(quán)投票.

9bins:

如圖,不同數(shù)量的bins下的錯誤率:

組合成block,統(tǒng)計(jì)block直方圖

將2×2個相鄰的cell組成大小為16×16的像素塊即block.依次將block大小的滑動窗口從左到右從上到下滑動,求其梯度方向直方圖向量.

如圖,不同大小的cell與不同大小的block作用下的效果對比:

梯度直方圖歸一化

作者對比了L2-norm、L1-norm、L1-sqrt等歸一化方法,發(fā)現(xiàn)都比非標(biāo)準(zhǔn)數(shù)據(jù)有顯著的改善.其中L2-norm和L1-sqrt效果最好,而L1-norm檢測效果要比L2-norm和L1-sqrt低5%.

如圖,不同的歸一化方法效果對比:

這樣通過歸一化能夠進(jìn)一步地對光照、陰影和邊緣進(jìn)行壓縮.

收集HOG特征

由于每個cell內(nèi)的梯度方向分成了9個bins,這樣每個細(xì)胞單元的HOG特征向量長度是9.

這樣,對于大小為128×64大小的圖像,采用8*8像素的sell,2×2個cell組成的16×16像素的block,采用8像素的block移動步長,這樣檢測窗口block的數(shù)量有((128-16)/8+1)×((64-16)/8+1)=15×7.則HOG特征描述符的維數(shù)為15×7×4×9.

HOG的缺點(diǎn):

速度慢,實(shí)時性差;難以處理遮擋問題。

OpenCV應(yīng)用

利用HOG進(jìn)行行人檢測時有兩種用法:

1、采用HOG特征+SVM分類器進(jìn)行行人檢測;

2、利用HOG+SVM訓(xùn)練自己的XML文件。

采用第一種方法,使用HOG特征結(jié)合SVM分類器進(jìn)行行人檢測,簡單示例:

#include <opencv2/opencv.hpp>
#include <opencv2/objdetect.hpp>
using namespace std;
using namespace cv;

int main()
{
 Mat src, dst;
 src = imread("E:/image/image/passerby.jpg",1);
 if (src.empty())
 {
 printf("can not load the image...\n");
 return -1;
 }
 dst = src.clone();
 vector<Rect> findrects, findrect;
 HOGDescriptor HOG;
 //SVM分類器
 HOG.setSVMDetector(HOGDescriptor::getDefaultPeopleDetector());
 //多尺度檢測
 HOG.detectMultiScale(src, findrects, 0, Size(4,4), Size(0,0), 1.05, 2);
 //若rects有嵌套,則取最外面的矩形存入rect
 for(int i=0; i < findrects.size(); i++)
 {
 Rect rect = findrects[i];
 int j=0;
 for(; j < findrects.size(); j++)
  if(j != i && (rect & findrects[j]) == rect)
  break;
 if( j == findrects.size())
  findrect.push_back(rect);
 }
 //框選出檢測結(jié)果
 for(int i=0; i<findrect.size(); i++)
 {
 RNG rng(i);
 Scalar color = Scalar(rng.uniform(0,255), rng.uniform(0,255), rng.uniform(0,255));
 rectangle(dst, findrect[i].tl(), findrect[i].br(), color, 2);
 }

 imshow("src",src);
 imshow("dst",dst);
 waitKey();
 return 0;
}

以上這篇opencv3/C++ HOG特征提取方式就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • c++學(xué)習(xí)之構(gòu)造函數(shù)

    c++學(xué)習(xí)之構(gòu)造函數(shù)

    類多么重要我就不多說了,只講講學(xué)習(xí),因?yàn)閭€人認(rèn)為類的學(xué)習(xí)無論從概念的理解還是實(shí)際代碼的編寫相對其他C兼容向的代碼都是比較有難度的, 對于以前學(xué)C 的人來說這才是真正的新概念和內(nèi)容,STL其實(shí)還比較好理解,不就是一個更大的函數(shù)庫和代碼可以使用嘛。
    2015-06-06
  • C++實(shí)現(xiàn)LeetCode(42.收集雨水)

    C++實(shí)現(xiàn)LeetCode(42.收集雨水)

    這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(42.收集雨水),本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • C語言實(shí)現(xiàn)簡易連連看游戲

    C語言實(shí)現(xiàn)簡易連連看游戲

    這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)簡易連連看游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • C++?各種map特點(diǎn)對比分析

    C++?各種map特點(diǎn)對比分析

    文章比較了C++中不同類型的map(如std::map,?std::unordered_map,?std::multimap,?std::unordered_multimap,?hash_map)的底層實(shí)現(xiàn)、元素順序、鍵的唯一性以及查找和插入刪除操作的效率,感興趣的朋友一起看看吧
    2025-03-03
  • C語言進(jìn)階可變參數(shù)列表

    C語言進(jìn)階可變參數(shù)列表

    這篇文章主要為大家介紹了C語言進(jìn)階可變參數(shù)列表的示例詳解有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2022-02-02
  • C語言實(shí)現(xiàn)3*3數(shù)組對角線之和示例

    C語言實(shí)現(xiàn)3*3數(shù)組對角線之和示例

    今天小編就為大家分享一篇C語言實(shí)現(xiàn)3*3數(shù)組對角線之和示例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • Cocos2d-x人物動作類實(shí)例

    Cocos2d-x人物動作類實(shí)例

    這篇文章主要介紹了Cocos2d-x人物動作類實(shí)例,本文用大量代碼和圖片講解Cocos2d-x中的動作,代碼中同時包含大量注釋說明,需要的朋友可以參考下
    2014-09-09
  • C++中priority_queue模擬實(shí)現(xiàn)的代碼示例

    C++中priority_queue模擬實(shí)現(xiàn)的代碼示例

    在c++語言中數(shù)據(jù)結(jié)構(gòu)中的堆結(jié)構(gòu)可以通過STL庫中的priority_queue 優(yōu)先隊(duì)列來實(shí)現(xiàn),這樣做極大地簡化了我們的工作量,這篇文章主要給大家介紹了關(guān)于C++中priority_queue模擬實(shí)現(xiàn)的相關(guān)資料,需要的朋友可以參考下
    2021-08-08
  • C語言數(shù)學(xué)問題與簡單DP01背包問題詳解

    C語言數(shù)學(xué)問題與簡單DP01背包問題詳解

    這篇文章主要介紹了C語言數(shù)學(xué)問題買不到的數(shù)目、螞蟻感冒、飲料換購與簡單DP01背包問題的解決,屬于藍(lán)橋杯省賽中的題目,感興趣的同學(xué)來看看吧
    2022-04-04
  • C++?Boost?ScopeExit超詳細(xì)講解

    C++?Boost?ScopeExit超詳細(xì)講解

    最近研究了boost中的ScopeExit,發(fā)現(xiàn)是個這是個很高級的特性,可以在作用域結(jié)束時自動關(guān)閉已經(jīng)打開的資源或做某些清理操作,這篇文章主要介紹了C++?Boost?ScopeExit
    2022-11-11

最新評論

双牌县| 临西县| 周口市| 双流县| 和平区| 肥乡县| 交口县| 安泽县| 墨玉县| 大方县| 钟山县| 克什克腾旗| 蒲江县| 临清市| 丹阳市| 喀什市| 南昌县| 靖宇县| 江口县| 蓬莱市| 军事| 大邑县| 藁城市| 金溪县| 彩票| 黔江区| 台南市| 镇平县| 金塔县| 永定县| 宾阳县| 同德县| 湖州市| 青川县| 囊谦县| 凤城市| 诸城市| 新干县| 新丰县| 舞钢市| 化州市|