把hog的特徵個數弄懂了一點

2021-06-17 17:34:20 字數 1207 閱讀 1314

今天腦袋終於開竅了, 把hog的特徵個數弄懂了一點

其實原理是很簡單的, 在opencv實現的是r-hog, 即對影象img->視窗window->塊block->細胞單元cell進行向量統計

首先看描述器的建構函式, 我用

hogdescriptor *desc=new hogdescriptor(cvsize(40,80),cvsize(10,20),cvsize(5,10),cvsize(5,5),9);

進行測試..

這裡的window為(40, 80), block為(10, 20), block的步進stride是(5, 10), 細胞單元cell是5 * 5畫素, 每個cell的直方圖bin是9.

於是,對每乙個cell, 有9個向量

對每乙個block, 有2*4個cell, 所以有72個向量

對於window而言, 計算block個數的方法是, 對兩個方向計算 (window_size - block_size)/block_stride + 1, 算得共有7*7 個block, 共有72*49=3528個向量

在搜尋img, 計算特徵的時候, 呼叫desc->compute(img,w,cvsize(10,20),cvsize(0,0));

其中img是輸入影象, w是儲存向量的vector, 第三個是window的步進, 第四個是padding, 用於填充以適應大小的.

當設定padding為預設(0,0)時, 計算(img_size - window_size) / window_stride +1 不一定為整數

在compute函式中可以看到:

padding.width = (int)alignsize(std::max(padding.width, 0), cachestride.width);

padding.height = (int)alignsize(std::max(padding.height, 0), cachestride.height);

即padding的大小會自動適應stride的值.

gz_ricky輸入的是96*160的, 對應了5.6 * 5, 經函式調整後變成6 * 5 =30

所以對這張96*160的, 共有105840個特徵向量

ps. 如果設定了padding的值, 就會先伸展padding*2, 或許是和內部那個paddingtl和paddingbr兩個有關, 即在top-left和button-right兩個方向都擴充套件. 計算特徵數方法同上.

索引最左列特徵的一點認識

索取最左列特性,的秘密都在於順序排序與儲存這個最簡單的道理。比如有表tabname上有abc三個列是這樣的。行號 a b c 0 1 a e 1 2 7 g 2 9 5 7 3 5 0 4 alter table tabname add index idx1 a,b,c 用a,b,c三個單列組合成乙...

深度學習關鍵一點 特徵的自動提取。

深度學習與傳統模式識別方法的最大不同在於它是從大資料中自動學習特徵,而非採用手工設計的特徵。好的特徵可以極大提高模式識別系統的效能。在過去幾十年模式識別的各種應用中,手工設計的特徵處於同統治地位。它主要依靠設計者的先驗知識,很難利用大資料的優勢。由於依賴手工調引數,特徵的設計中只允許出現少量的引數。...

老闆,請給我換一把好一點的椅子

序言 你是it人麼?你的椅子坐著舒服麼?給你的老闆看看這封具有普遍性的信吧!老闆 來到公司這麼久,第一次向您提出我的乙個小小的要求 如果可能的話,請給我換一把好一點的椅子,好嗎?首先允許我簡單的計算一下 作為乙個普通的員工,從早晨九點到晚上六點 很多時候還要加班 我要在公司起碼有9個小時,至少有八個...