python 建筑物识别_OpenCV+Python 指定物体识别

本文介绍一种基于HoG+Pyramids+Sliding Windows+SVM的物体识别方法基本流程(1)确定最小检测物体,对原图img缩放,缩放比例为(滑动窗大小/最小物体大小)。(2)缩放后的图片,构建金字塔。(3)对金字塔的每一层,通过滑动窗获取patch(类似ROI的概念),对patch归一化处理,之后给训练好的物体检测器识别,将识别成功的窗口位置和概率保存。(特征使用HoG,分类算法使...
摘要由CSDN通过智能技术生成

本文介绍一种基于HoG+Pyramids+Sliding Windows+SVM的物体识别方法

基本流程

(1)确定最小检测物体,对原图img缩放,缩放比例为(滑动窗大小/最小物体大小)。

(2)缩放后的图片,构建金字塔。

(3)对金字塔的每一层,通过滑动窗获取patch(类似ROI的概念),对patch归一化处理,之后给训练好的物体检测器识别,将识别成功的窗口位置和概率保存。(特征使用HoG,分类算法使用SVM)

(4)将物体窗口映射到原图img中的物体位置,概率不变。

(5)NMS处理重叠窗口。

HoG

论文

HoG原理简书1

HoG原理简书2

Histogram of Oriented Gradients 方向梯度直方图,是特征描述符算法大家庭的一份子,家庭成员还有SIFT,SURF,ORB。

统计图像局部区域的梯度方向信息来作为该局部图像区域的表征。

基本步骤

灰度化。如果使用彩色图像,每个像素的梯度幅值取三个通道最大的,梯度方向取梯度幅值最大通道的方向。

归一化。对图像进行Gamma矫正,一般对每个像素的灰度值开根号。

计算每个像素的梯度。梯度方向一般分为9的区间(bin)。20°/bin for 无符号方向(0~180°),40°/bin for 有符号方向(0~360°)

统计每个Cell的梯度方向直方图。一般一个Cell是8*8个像素。9个特征值,对应9个bin。

统计每个Block的梯度方向直方图图。一般一个Block是2*2个Cell。36个特征值的向量,同时做归一化。

计算HoG特征向量。根据Block的总个数,生成总的HoG向量(36*n维向量)。

HoG存在的问题

不知道物体在图像的哪个位置。

不知道图像的尺度。

Image Pyramids

解决图像的尺度问题

图像金字塔简书1

OpenCV中图像金字塔的基本步骤

根据系数改变图像的大小。

平滑图像。

def resize(img, scaleFactor):

return cv2.resize(img, (int(img.shape[1] * (1 / scaleFactor)), int(img.shape[0] * (1 / scaleFactor))), interpolation=cv2.INTER_AREA)

def pyramid(image, scale=1.5, minSize=(200, 80)):

yield image

while True:

image = resize(image, scale)

if image.shape[0] < minSize[1] or image.shape[1] < minSize[0]:

break

yield image

Sliding Window

通过扫描图像的不同区域来解决图像中物体所在位置的问题。

def sliding_window(image, step, window_size):

for y in

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值