HOG特征计算的python实现

        用于行人检测(Pedestrian Detection)的hog特征于2005年被N. Dalal和B. Triggs提出来。他们提出的算法可用于计算96×160图像的HOG特征提取。使用的数据集为INRIA Person Dataset

下面的python代码片段用来为计算一张图片的HOG特征:

import numpy as np
from scipy import signal
import scipy.misc
def s_x(img):
    kernel = np.array([[-1, 0, 1]])
    imgx = signal.convolve2d(img, kernel, boundary='symm', mode='same')
    return imgx
def s_y(img):
    kernel = np.array([[-1, 0, 1]]).T
    imgy = signal.convolve2d(img, kernel, boundary='symm', mode='same')
    return imgy
def grad(img):
    imgx = s_x(img)
    imgy = s_y(img)
    s = np.sqrt(imgx**2 + imgy**2)
    theta = np.arctan2(imgx, imgy) #imgy, imgx)
    theta[theta<0] = np.pi + theta[theta<0]
    return (s, theta)

 

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
可以,以下是一个Python实现HOG特征提取代码示例: ```python import cv2 import numpy as np # 读取图片 img = cv2.imread('your_image_file.jpg') # 将图片转为灰度图 gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 计算图像梯度 gx = cv2.Sobel(gray, cv2.CV_32F, 1, 0) gy = cv2.Sobel(gray, cv2.CV_32F, 0, 1) # 计算梯度幅值和方向 mag, angle = cv2.cartToPolar(gx, gy, angleInDegrees=True) # 将方向范围从0~360度改为0~180度 angle = angle % 180 # 将图像分成若干个块,每个块9个直方图bin,计算直方图 cell_size = (8, 8) block_size = (2, 2) nbins = 9 # 计算每个块的梯度直方图 hog = cv2.HOGDescriptor(_winSize=(gray.shape[1] // cell_size[1] * cell_size[1], gray.shape[0] // cell_size[0] * cell_size[0]), _blockSize=(block_size[1] * cell_size[1], block_size[0] * cell_size[0]), _blockStride=(cell_size[1], cell_size[0]), _cellSize=(cell_size[1], cell_size[0]), _nbins=nbins) hist = hog.compute(mag, winStride=(cell_size[1], cell_size[0]), padding=(0, 0)) # 将直方图展开为特征向量 features = np.array(hist).reshape(-1) ``` 这段代码通过opencv库实现HOG特征提取,具体实现过程如下: 1. 读取图像并将其转换为灰度图; 2. 计算图像的梯度,包括x和y方向的梯度; 3. 计算梯度幅值和方向,并将方向范围从0~360度改为0~180度; 4. 将图像分成若干个块,并计算每个块的梯度直方图; 5. 将直方图展开为特征向量。 这段代码可以用于目标检测、行人识别、人脸识别等计算机视觉任务中。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值