HOG特征提取 matlab
来源:互联网 发布:知行乐学 编辑:程序博客网 时间:2024/05/23 02:16
网上有很多大神写的hog的原理,这里就不介绍了,本文主要用matlab实现求图像的hog特征,主要参考了
http://blog.csdn.net/dulingtingzi/article/details/51488060,
http://blog.csdn.net/hujingshuang/article/details/47337707/,
感谢博主。
求hog特征的主要步骤如下:
1、灰度化;
2、gamma校正;
3、求每个像素的梯度和方向;
4、划分cell(8*8pixel/cell),根据幅值和方向求取每个cell的梯度直方图;
5、组合block(2*2cell/block),将这4个cell的梯度直方图连在一起作为该block的特征向量;
6、将所有的block的特征向量组合起来,即为该图像的hog特征向量。
代码如下:
clear;clc;img=imread('C:\Users\Administrator\Desktop\lena.jpg');% 1、%灰度化img=rgb2gray(img);img=double(img);step=8; %step*step个像素作为一个cell[m1 n1]=size(img);%改变图像尺寸为step的最近整数倍img=imresize(img,[floor(m1/step)*step,floor(n1/step)*step],'nearest');[m n]=size(img);% 2、%伽马校正img=sqrt(img);% 3、求梯度和方向fy=[-1 0 1]; %定义竖直模板fx=fy'; %定义水平模板Iy=imfilter(img,fy,'replicate'); %竖直梯度Ix=imfilter(img,fx,'replicate'); %水平梯度Ied=sqrt(Ix.^2+Iy.^2); %梯度值Iphase=Iy./Ix; %边缘斜率,有些为inf,-inf,nan,其中nan需要再处理一下the=atan(Iphase)*180/3.14159; %求梯度角度for i=1:m for j=1:n if(Ix(i,j)>=0&Iy(i,j)>=0) %第一象限 the(i,j)=the(i,j); elseif(Ix(i,j)<=0&Iy(i,j)>=0) %第二象限 the(i,j)=the(i,j)+180; elseif(Ix(i,j)<=0&Iy(i,j)<=0) %第三象限 the(i,j)=the(i,j)+180; elseif(Ix(i,j)>=0&Iy(i,j)<=0) %第四象限 the(i,j)=the(i,j)+360; end if isnan(the(i,j))==1 %0/0会得到nan,如果像素是nan,重设为0 the(i,j)=0; end endendthe=the+0.000001; %防止角度为0% 4、划分cell,求cell的直方图( 1 cell = 8*8 pixel )clear i j;%下面是求cellstep=8; %step*step个像素作为一个cellorient=9; %方向直方图的方向个数jiao=360/orient; %每个方向包含的角度数Cell=cell(1,1); %所有的角度直方图,cell是可以动态增加的,所以先设了一个ii=1;jj=1;for i=1:step:m ii=1; for j=1:step:n Hist1(1:orient)=0; for p=1:step for q=1:step %梯度方向直方图 Hist1(ceil(the(i+p-1,j+q-1)/jiao))=Hist1(ceil(the(i+p-1,j+q-1)/jiao))+Ied(i+p-1,j+q-1); end end Cell{ii,jj}=Hist1; %放入Cell中 ii=ii+1; end jj=jj+1;end% 5、划分block,求block的特征值,使用重叠方式( 1 block = 2*2 cell )clear m n i j;[m n]=size(Cell);feature=cell(1,(m-1)*(n-1));for i=1:m-1 for j=1:n-1 block=[]; block=[Cell{i,j}(:)' Cell{i,j+1}(:)' Cell{i+1,j}(:)' Cell{i+1,j+1}(:)']; block=block./sum(block); %归一化 feature{(i-1)*(n-1)+j}=block; endend% 6、图像的HOG特征值[m n]=size(feature);l=2*2*orient;featureVec=zeros(1,n*l);for i=1:n featureVec((i-1)*l+1:i*l)=feature{i}(:);end
hog特征值的维数计算如下:
图像大小为256*256,8*8pixel/cell,9bin/cell(将360度划分为9个区域),2*2cell/block,采用重叠(overlape)方式求block的特征向量,则有32*32个block,每个block的梯度直方图为9*2*2个,总维数大小为(32-1)*(32-1)*9*2*2=34596。
然后就可以将该hog特征放到分类器中进行训练了。
2 0
- HOG特征提取 matlab
- matlab 提取HOG特征
- HOG特征提取matlab代码
- matlab Hog特征提取浅析
- Matlab 提取Hog特征方法详细解析
- Hog特征提取
- Hog特征提取
- Hog特征提取
- 特征提取--hog
- OpenCV提取HOG特征
- hog 图像特征提取
- HOG特征提取
- 特征提取-----HOG
- HOG特征提取
- HOG特征提取
- HOG特征提取分析
- HOG特征提取原理
- Dlib提取Hog特征
- 阅读列表:On the Surprising Behavior of Distance Metrics in High Dimensional Space
- 集合框架
- IIC(2402)实验
- jypyter 中导入caffe
- 【简单贪心】POJ 3069-Saruman's Army
- HOG特征提取 matlab
- 1022-Cant't write;duplicate key in table '#sql-b60_c'
- HDU1003 Max Sum
- 17.3.25 B组总结
- python实现查找算法:二分查找法
- 安卓屏幕分成两部分,其中一部分是相机,测试发现想拍摄的事物变形了,怎么办?
- 【虚拟机】VMware Workstation 12 安装win7系统 报错“二进制转换平台与此平台上的长模式不兼容……”
- ubuntu kylin下安装iNode遇到的一些问题
- BZOJ 1633: [Usaco2007 Feb]The Cow Lexicon 牛的词典