HOG算法基础
实现思路步骤: 1.对原图像gamma校正,img=sqrt(img); 2.求图像竖直边缘,水平边缘,边缘强度,边缘斜率。 3.将图像每16*16(取其他也可以)个像素分到一个cell中。对于256*256的lena来说,就分成了16*16个cell了。 4.对于每个cell求其梯度方向直方图。通常取9(取其他也可以)个方向(特征),也就是每360/9=40度分到一个方向,方向大小按像素边缘强度加权。 5.每2*2(取其他也可以)个cell合成一个block,所以这里就有(16-1)*(16-1)=225个block。最后归一化直方图。 6.所以每个block中都有2*2*9个特征,一共有225个block,所以总的特征有225*36个。 当然一般HOG特征都不是对整幅图像取的,而是对图像中的一个滑动窗口取的。 形象化的用一个流程图显示: matlab实现代码:参考别人的修改的 clear;clc; img =imread( ' E:\mat\lena.jpg ' );% 图片位置 % 获取图像,尺寸,并将图像resize成step的最近整数倍 img = double (img); figure;imshow(img,[]); % 显示图像 step = 8 ; %step* step个像素作为一个cell [m1 ,n1] =size(img);% 获取图像尺寸 img