计算机视觉图像处理之Task04

用HOG算子进行行人检测

  • 介绍
  • 算法流程
  • 图像处理
    • 运用Gamma公式对图像
      • Gamma公式
      • 图像展示
  • 计算图像梯度
    • 代码
  • 计算梯度直方图
    • 计算方法
    • BLOCK归一化
      • 目的
      • 计算
  • 代码实践

介绍

  • HOG特征算子是在深度学习之前非常流行的一种图像特征提取技术,全称为Histogram of Oriented Gradients—方向梯度直方图
  • 运用对图像局部的梯度幅值和方向进行统计,形成具有梯度特性的直方图,将图像分成很多的block,并将得到的局部特征进行拼接

算法流程

输入图像
Gamma矫正
计算图像梯度
计算梯度直方图
BLOCK特征归一化
得到HOG特征
SVM

图像处理

运用Gamma公式对图像

Gamma公式

参考文档

Gamma

图像展示

import cv2
import numpy as np
from matplotlib import pyplot as plt
img =cv2.imread('../input/webarebear/timg.jpg',0)
img =cv2.cvtColor(img,cv2.COLOR_BGR2RGB)
img2 =np.power(img/float(np.max(img)),1/2.2)
plt.imshow(img2)
plt.axis('off')
plt.show()

原图
计算机视觉图像处理之Task04_第1张图片
计算机视觉图像处理之Task04_第2张图片
好像没啥区别

计算图像梯度

计算机视觉图像处理之Task04_第3张图片
计算机视觉图像处理之Task04_第4张图片

  • 水平梯度
    在这里插入图片描述
  • 竖直梯度
    在这里插入图片描述
  • 幅值
    在这里插入图片描述
  • 可化简为
    在这里插入图片描述
  • 梯度与边缘方向–如图
    计算机视觉图像处理之Task04_第5张图片

代码

import cv2
import numpy as np
img =cv2.imread('../input/webarebear/timg.jpg')
img =np.float32(img)/255.0 
# 归一化
# 计算x y方向的梯度
dx =cv2.Sobel(img,cv2.CV_32F,1,0,ksize=1)
dy =cv2.Sobel(img,cv2.CV_32F,0,1,ksize=1)
# 计算和梯度的幅值和方向
mag,angle = cv2.cartToPolar(dx,dy,angleInDegrees=True)
# print(mag,angle)

计算梯度直方图

计算方法

计算机视觉图像处理之Task04_第6张图片
在这里插入图片描述

  • 最后得到
    计算机视觉图像处理之Task04_第7张图片

BLOCK归一化

目的

  • 为了削弱光照的影响

计算

每个数/每个数的平方和开根

代码实践

import cv2 as cv
import numpy as np
from matplotlib import pyplot as plt
if __name__ == '__main__':
    src = cv.imread("../input/dalaoheying/dalaoheying.jpg")
#     cv.imshow("input", src)
    plt.imshow(src)
    plt.show()
    hog = cv.HOGDescriptor()
    hog.setSVMDetector(cv.HOGDescriptor_getDefaultPeopleDetector())
    # Detect people in the image
    (rects, weights) = hog.detectMultiScale(src,
    winStride=(2,4),
    padding=(8, 8),
    scale=1.2,
    useMeanshiftGrouping=False)
    for (x, y, w, h) in rects:
        cv.rectangle(src, (x, y), (x + w, y + h), (0, 255, 0), 2)
#     cv.imshow("hog-detector", src)
    plt.imshow(src)
    cv.imwrite("hog-detector.jpg",src)
    plt.show()

计算机视觉图像处理之Task04_第8张图片
计算机视觉图像处理之Task04_第9张图片
效果有待加强

你可能感兴趣的:(opencv,计算机视觉)