图像特征与目标检测1-HOG

迷南。 2023-01-10 15:55 285阅读 0赞

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dpbmdneW4_size_16_color_FFFFFF_t_70

HOG实现过程:

1灰度化(将图像看做一个x,y,z(灰度)的三维图像)

2采用Gamma校正法对输入图像进行颜色空间的标准化(归一化)

3计算图像每个像素的梯度(包括大小和方向)

4将图像划分为cells

5统计每个cell的梯度直方图(不同梯度的个数),得到cell的描述子

6将每几个cell组成一个block,得到block的描述子

7将图像image内的所有block的HOG特征descriptor串联起来就可以得到HOG特征,该特征向量就是用来目标检测或分类的特征。

  1. import cv2
  2. import numpy as np
  3. #判断矩形i是否完全包含在矩形O中
  4. def is_inside(o,i):
  5. ox,oy,ow,oh = o
  6. ix,iy,iw,ih = i
  7. return ox > ix and oy > iy and ox+ow < ix + iw and oy +oh < iy + ih
  8. #对人体绘制颜色框
  9. def draw_person(image,person):
  10. x,y,w,h = person
  11. cv2.rectangle(image,(x,y),(x+w,y+h),(0,255,255),2)
  12. img = cv2.imread("test5.jpg")
  13. hog = cv2.HOGDescriptor()
  14. hog.setSVMDetector(cv2.HOGDescriptor_getDefaultPeopleDetector())
  15. found,w = hog.detectMultiScale(img,0.1,(1,1))
  16. print(found)
  17. print(w)
  18. #丢弃某些完全被其他矩形包含在内的矩形
  19. found_filtered=[]
  20. for ri,r in enumerate(found):
  21. for qi,q in enumerate(found):
  22. if ri != qi and is_inside(r,q):
  23. break
  24. else:
  25. found_filtered.append(r)
  26. print(found_filtered)
  27. #对不包含在内的有效矩形进行颜色框定
  28. for person in found_filtered:
  29. draw_person(img,person)
  30. cv2.imshow("people detection",img)
  31. cv2.waitKey(0)
  32. cv2.destroyAllWindows()

结果:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dpbmdneW4_size_16_color_FFFFFF_t_70 1

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dpbmdneW4_size_16_color_FFFFFF_t_70 2

原图来源:百度图库

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dpbmdneW4_size_16_color_FFFFFF_t_70 3

步长为(1,1)时候:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dpbmdneW4_size_16_color_FFFFFF_t_70 4

代码中由 watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dpbmdneW4_size_16_color_FFFFFF_t_70 5

(1,1)->(2,2)

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dpbmdneW4_size_16_color_FFFFFF_t_70 6

改成(3,3)结果如下:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dpbmdneW4_size_16_color_FFFFFF_t_70 7

改成(7,7),据说。。最多检测5人。

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dpbmdneW4_size_16_color_FFFFFF_t_70 8

发表评论

表情:
评论列表 (有 0 条评论,285人围观)

还没有评论,来说两句吧...

相关阅读

    相关 HOG特征

    引言 HOG 全名为Histogram of Gragient,表示梯度方向直方图; 梯度,作为一个向量,包括大小(幅值)和方向(角度)两部分。图像中像素点的