利用opencv的hog+svm实现细胞识别分类器

利用opencv的hog+svm实现细胞识别分类器

图像处理中的细胞识别和人脸识别可以这样来类比,图像中的一张张人脸就是一个个细胞。

模式识别的关键在于样本库的选取,识别率也只能在和样本库比较接近的环境下才能保证。主要工作是三部分一是特征提取,二是样本库的训练train,三是目标检测detect。

一.特征提取

特征提取采用的是HOG特征即HOG描述子,该特征在行人检测中效果非常好。而一般人脸识别采用的是haar特征,这在opencv中都有实现,并都给出了相应的分类器,效果都很不错。

首先采集了正样本6000多份,然后负样本90000多份,正样本就是手动从图像中把细胞截图保存下来,为了工作方便一般先大概截个正方形就好了,然后对得到的正样本依次做三次顺时针旋转,目的是为了满足旋转不变性。之后写个程序将这些正样本的尺寸统一缩放到64*64,这个尺寸决定了最终svm算法中的特征维数。负样本就是非细胞的图像,可以用程序截图得到,不需要人工了,最终也将尺寸统一缩放到64*64即可。

二.训练样本

利用HOGDescriptor.compute计算所有的样本特征值,存入svm算法中训练用的特征矩阵train_mat中,同时将每个样本的类别保存到标签向量label_mat中,正样本的标签为1,负样本为0;然后用svm.train函数训练得到分类器文件svm_data.xml。

三.目标检测

训练好的SVM分类器保存为XML文件,然后根据其中的支持向量和参数生成OpenCV中的HOG描述子可用的检测子参数,再调用OpenCV中的多尺度检测函数进行细胞检测。

检测子参数的计算过程就是svm算法中从一开始得到的阿尔法系数转变得到w系数的过程。

---------------------------------------------------------------------------------------------------------------------

难例(Hard Example)是指利用第一次训练的分类器在负样本原图(肯定没有人体)上进行行人检测时所有检测到的矩形框,这些矩形框区域很明显都是误报,把这些误报的矩形框保存为图片,加入到初始的负样本集合中,重新进行SVM的训练,可显著减少误报。

时间: 2024-12-28 00:42:21

利用opencv的hog+svm实现细胞识别分类器的相关文章

OpenCV的HOG+SVM训练程序注意事项

行人训练:http://www.tuicool.com/articles/MvYfui 字符识别:http://www.haogongju.net/art/2328003 用OpenCV使用HOG特征进行SVM算法训练的大概流程是 1)设置训练样本集 需要两组数据,一组是数据的类别,一组是数据的向量信息. 2)设置SVM参数,参考<机器模式->libSVM之参数说明> 注意必须使用线性SVM进行训练,因为检测函数只支持线性检测!!! 3)使用HOGDescriptor计算hog特征 4)

利用opencv中的级联分类器进行人脸检測-opencv学习(1)

OpenCV支持的目标检測的方法是利用样本的Haar特征进行的分类器训练,得到的级联boosted分类器(Cascade Classification).注意,新版本号的C++接口除了Haar特征以外也能够使用LBP特征. 先介绍一下相关的结构,级联分类器的计算特征值的基础类FeatureEvaluator,功能包含读操作read.复制clone.获得特征类型getFeatureType,分配图片分配窗体的操作setImage.setWindow,计算有序特征calcOrd,计算绝对特征calc

利用opencv源代码和vs编程序训练分类器haartraining.cpp

如需转载请注明本博网址:http://blog.csdn.net/ding977921830/article/details/47733363. 一  训练框架 训练人脸检測分类器须要三个步骤: (1) 准备正负样本集,分别放到两个目录里. 我使用的是麻省理工的那个人脸库.大家能够网上搜一下. (2)把正样本集生成正样本描写叙述文件(*.vec),把负样本集生成负样本集合文件.详细怎么操作请參考我博客中的另外两篇文章,各自是http://blog.csdn.net/ding977921830/a

利用opencv中的级联分类器进行人脸检测-opencv学习(1)

OpenCV支持的目标检测的方法是利用样本的Haar特征进行的分类器训练,得到的级联boosted分类器(Cascade Classification).注意,新版本的C++接口除了Haar特征以外也可以使用LBP特征. 先介绍一下相关的结构,级联分类器的计算特征值的基础类FeatureEvaluator,功能包括读操作read.复制clone.获得特征类型getFeatureType,分配图片分配窗口的操作setImage.setWindow,计算有序特征calcOrd,计算绝对特征calcC

HOG + SVM(行人检测, opencv实现)

HOG+SVM流程 1.提取HOG特征 灰度化 + Gamma变换(进行根号求解) 计算梯度map(计算梯度) 图像划分成小的cell,统计每个cell梯度直方图 多个cell组成一个block, 特征归一化 多个block串接,并归一化 2.训练SVM分类器 原文地址:https://www.cnblogs.com/my-love-is-python/p/11110277.html

hog+svm+检测人(代替默认的参数)

#include <iostream>#include <opencv2/core/core.hpp>#include <opencv2/highgui/highgui.hpp>#include <opencv2/ml/ml.hpp>//#include <opencv2/gpu/gpu.hpp>#include <fstream>#include <iomanip> #include "opencv2/imgp

第十八节、基于传统图像处理的目标检测与识别(HOG+SVM附代码)

其实在深度学习分类中我们已经介绍了目标检测和目标识别的概念.为了照顾一些没有学过深度学习的童鞋,这里我重新说明一次:目标检测是用来确定图像上某个区域是否有我们要识别的对象,目标识别是用来判断图片上这个对象是什么.识别通常只处理已经检测到对象的区域,例如,人们总是会使在已有的人脸图像的区域去识别人脸. 传统的目标检测方法与识别不同于深度学习方法,后者主要利用神经网络来实现分类和回归问题.在这里我们主要介绍如何利用OpecnCv来实现传统目标检测和识别,在计算机视觉中有很多目标检测和识别的技术,这里

HoG SVM 目标检测分析

前一段时间开始了解HoG跟SVM行人识别,看了很多包括Dalal得前辈的文章及经验分享,对HoG理论有了些初步的认识. HoG 的全称是 Histogram of Oriented Gradient, 直译过来也就是梯度方向直方图. 就是计算各像素的梯度方向,统计成为直方图来作为特征表示目标. 下面简述一下利用HoG + SVM 实现目标检测的简要步骤 Step1:获取正样本集并用hog计算特征得到hog特征描述子.例如进行行人检测,可用IRINA等行人样本集,提取出行人的描述子. Step2:

hog&amp;svm

hog&svm的方法已经非常经典,广泛使用在多种行业,并且集成在了硬件中.应该说作为运动检测的一种重要方法,使用的情况还是非常广泛的. (opencv自带的分类器) int main() { Mat src = imread( "1.png"); HOGDescriptor hog; //HOG特征检测器 hog.setSVMDetector(HOGDescriptor::getDefaultPeopleDetector()); //设置SVM分类器为默认参数 vector&l