OpenCV关于hog特征向量的个数
生活随笔
收集整理的這篇文章主要介紹了
OpenCV关于hog特征向量的个数
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
- 其實(shí)原理是很簡(jiǎn)單的, 在OpenCV實(shí)現(xiàn)的是R-HOG, 即對(duì)圖像img->窗口window->塊block->細(xì)胞單元cell進(jìn)行向量統(tǒng)計(jì) 首先看描述器的構(gòu)造函數(shù), 我用 ??????? HOGDescriptor *desc=new HOGDescriptor(cvSize(40,80),cvSize(10,20),cvSize(5,10),cvSize(5,5),9); 進(jìn)行測(cè)試.. ? 這里的window為(40, 80), block為(10, 20), block的步進(jìn)stride是(5, 10), 細(xì)胞單元cell是5 * 5像素, 每個(gè)cell的直方圖bin是9. 于是, 對(duì)每一個(gè)cell, 有9個(gè)向量 對(duì)每一個(gè)block, 有2*4個(gè)cell, 所以有72個(gè)向量 對(duì)于window而言, 計(jì)算block個(gè)數(shù)的方法是, 對(duì)兩個(gè)方向計(jì)算 (window_size - block_size)/block_stride + 1, 算得共有7*7 個(gè)block, 共有72*49=3528個(gè)向量 ? 在搜索img, 計(jì)算圖片特征的時(shí)候, 調(diào)用desc->compute(img,w,cvSize(10,20),cvSize(0,0)); 其中img是輸入圖像, w是保存向量的vector, 第三個(gè)是window的步進(jìn), 第四個(gè)是padding, 用于填充圖片以適應(yīng)大小的. ? 當(dāng)設(shè)置padding為默認(rèn)(0,0)時(shí), 計(jì)算(img_size - window_size) / window_stride +1 不一定為整數(shù) 在compute函數(shù)中可以看到: ??? padding.width = (int)alignSize(std::max(padding.width, 0), cacheStride.width);
??? padding.height = (int)alignSize(std::max(padding.height, 0), cacheStride.height);
即padding的大小會(huì)自動(dòng)適應(yīng)stride的值. gz_ricky輸入的圖片是96*160的, 對(duì)應(yīng)了5.6 * 5, 經(jīng)函數(shù)調(diào)整后變成6 * 5 =30 ? ?所以對(duì)這張96*160的圖片, 共有105840個(gè)特征向量 ? PS. 如果設(shè)置了padding的值, 圖片就會(huì)先伸展padding*2, 或許是和內(nèi)部那個(gè)paddingTL和paddingBR兩個(gè)有關(guān), 即在Top-Left和Button-Right兩個(gè)方向都擴(kuò)展. 計(jì)算特征數(shù)方法同上. ?hog特征值會(huì)生成以后,? 可以轉(zhuǎn)入svm訓(xùn)練的階段了..
總結(jié)
以上是生活随笔為你收集整理的OpenCV关于hog特征向量的个数的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: OpenCV HOGDescriptor
- 下一篇: VS和matlab混合编程的推荐书籍!