计算机视觉基础之Task03

用Harr特征描述算子进行人脸检测

  • 介绍
  • 理论介绍
    • Haar-like 特征
    • 计算特征
    • 积分图
    • 计算特征值
    • 归一化
  • 级联训练分类器
  • 代码实践

介绍

Harr+AdaBoost 可视为目标检测,人脸检测的开山鼻祖

理论介绍

Haar-like 特征

  • Haar(哈尔)特征分为三类:边缘特征、线性特征、中心特征和对角线特征

计算特征

计算机视觉基础之Task03_第1张图片

  • 通过改变特征模板的大小和位置,可在图像子窗口中穷举出大量的特征。上图的特征模板称为“特征原型”; 特征原
    型在图像子窗口中扩展(平移伸缩)得到的特征称为“矩形特征”;矩形特征的值称为“特征值”。
    计算机视觉基础之Task03_第2张图片

积分图

定义

  • 积分图是-种能够描述全局信息的矩阵表示方法。积分图的构造方式是:位置(i,j) 处的值i(,j)是原图像(i,j)左上角方向所有像素f(k,I)的和:
    在这里插入图片描述
    计算机视觉基础之Task03_第3张图片
    计算机视觉基础之Task03_第4张图片

计算特征值

(没太看懂,以后补上)

归一化

这里的归一化和深度学习中的对数据进行归一化的处理相一致,来减少特征值的变化范围,使特征值便于计算

  • 公式为
  • 灰度值和灰度值平方和:
    计算机视觉基础之Task03_第5张图片
  • 计算平均值
    计算机视觉基础之Task03_第6张图片
  • 归一化分母
    *计算机视觉基础之Task03_第7张图片
  • 进行归一化
    -计算机视觉基础之Task03_第8张图片

级联训练分类器

  • 要先进过筛选,在用adaBoost训练,属于传统的训练方法 以后有空再了解
  • 在深度学习上,yolo和ssd,Faster RCNN等用法更高效

代码实践

import cv2
import numpy as np
import matplotlib.pyplot as plt
haar_front_face_xml='../../opt/conda/envs/env/lib/python3.7/site-packages/cv2/data/haarcascade_frontalface_default.xml'
# haar_front-face_xml ="home/aistuido/xml_file/haarcascade_frontalface_default_2.xml"
haar_eye_xml = 'home/xml_file/haarcascade_eye.xml'
def StaticDetect(filename):
# create an cascade and load a file of .xml and it can be Haar also can be LBP
    face_cascade =cv2.CascadeClassifier(haar_front_face_xml)
    img =cv2.imread(filename)
    gray_img =cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
    # 进行人脸检测,
    faces = face_cascade.detectMultiScale(gray_img , 1.3, 5)
    for (x, y, w, h) in faces:
        img=cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2)
        # cv2.namme
        img=cv2.cvtColor(img,cv2.COLOR_RGB2BGR)
        print(img.shape)
        plt.imshow(img)
        plt.show()
if __name__=='__main__':
    # filename ="hough_result.png"
    list = [1,2,4]
    for i in list:
        filename=str(i) + '.jpg'
        if i==4:
            filename=str(i) + '.png'
        StaticDetect(filename)

结果
计算机视觉基础之Task03_第9张图片
计算机视觉基础之Task03_第10张图片
计算机视觉基础之Task03_第11张图片
计算机视觉基础之Task03_第12张图片

(这篇博客写的比较匆忙,很多的地方还需要改正)

你可能感兴趣的:(计算机视觉基础之Task03)