BOW( opencv源码)

opencv中的SVM图像分类(二) 原创作品 转载请注明出http://blog.csdn.net/always2015/article/details/47107129 阅读详情

物体目标分类

这章描述了局部2维图像特征相关算法和基于这些特征的二维图像中的物体目标分类。

BOWTrainer

class  BOWTrainer

给定训练图像的特征描述子集,该抽象基类用于训练 视觉词典包 词典. 具体参考文章 Visual Categorization with Bags of Keypoints by Gabriella Csurka, Christopher R. Dance, Lixin Fan, Jutta Willamowski, Cedric Bray, 2004.

class BOWTrainer
{
public:
    BOWTrainer(){}
    virtual ~BOWTrainer(){}

    void add( const Mat& descriptors );
    const vector<Mat>& getDescriptors() const;
    int descripotorsCount() const;

    virtual void clear();

    virtual Mat cluster() const = 0;
    virtual Mat cluster( const Mat& descriptors ) const = 0;

protected:
    ...
};

BOWTrainer::add

向训练集中增加特征描述子.

C++:  void  BOWTrainer:: add (const Mat&  descriptors )
Parameters:
  • descriptors – 向训练集中增加特征描述子. descriptors 矩阵中每一行就是一个特征描述子.

训练集可以用 clustermethod 聚类来构造视觉词典。

BOWTrainer::getDescriptors

返回训练集中的特征描述子.

C++:  const vector<Mat>&  BOWTrainer:: getDescriptors ( )  const

BOWTrainer::descripotorsCount

返回训练集中所有存储的特征描述子的数量.

C++:  const vector<Mat>&  BOWTrainer:: descripotorsCount ( )  const

BOWTrainer::cluster

根据训练集进行聚类.

C++:  Mat  BOWTrainer:: cluster ( )  const
C++:  Mat  BOWTrainer:: cluster (const Mat&  descriptors )  const
Parameters:
  • descriptors – 用于聚类的特征描述子. descriptors 矩阵中每一行 是一个特征描述子. 特征描述子不会被添加到训练集中部.

视觉词典包含聚类中信. 因此,这个方法返回的是视觉词典. 在输入为空的条件下, 存储在训练集中的特征描述子被用来聚类. 在输入特定的特征描述子矩阵条件下, 输入的特征描述子被用来聚类.

BOWKMeansTrainer

class  BOWKMeansTrainer

kmeans() -用于训练视觉词典的基类. 采用 视觉词典包 算法实现。

class BOWKMeansTrainer : public BOWTrainer
{
public:
    BOWKMeansTrainer( int clusterCount, const TermCriteria& termcrit=TermCriteria(),
                      int attempts=3, int flags=KMEANS_PP_CENTERS );
    virtual ~BOWKMeansTrainer(){}

    // Returns trained vocabulary (i.e. cluster centers).
    virtual Mat cluster() const;
    virtual Mat cluster( const Mat& descriptors ) const;

protected:
    ...
};

BOWKMeansTrainer::BOWKMeansTrainer

构造函数.

C++:   BOWKMeansTrainer:: BOWKMeansTrainer (int  clusterCount, const TermCriteria&  termcrit=TermCriteria(), int attempts=3, int  flags=KMEANS_PP_CENTERS  )

See kmeans() function parameters.

BOWImgDescriptorExtractor

class  BOWImgDescriptorExtractor

基于 视觉词典包 算法来计算一个图像的特征描述子的类. 算法步骤如下:

  1. 给定一幅图像及其图像特征检测子(关键点)集,计算特征描述子.
  2. 给定每一个图像特征检测子对应的特征描述子,从视觉词典中寻找最近的词.
  3. 计算视觉词典包图像特征描述子.该结果为一个归一化后的直方图.直方图向量中第``i``个 值是视觉词典中的第``i``个词在给定图像中的频率.

这个类的描述如下:

class BOWImgDescriptorExtractor
{
public:
    BOWImgDescriptorExtractor( const Ptr<DescriptorExtractor>& dextractor,
                               const Ptr<DescriptorMatcher>& dmatcher );
    virtual ~BOWImgDescriptorExtractor(){}

    void setVocabulary( const Mat& vocabulary );
    const Mat& getVocabulary() const;
    void compute( const Mat& image, vector<KeyPoint>& keypoints,
                  Mat& imgDescriptor,
                  vector<vector<int> >* pointIdxsOfClusters=0,
                  Mat* descriptors=0 );
    int descriptorSize() const;
    int descriptorType() const;

protected:
    ...
};

BOWImgDescriptorExtractor::BOWImgDescriptorExtractor

构造函数.

C++:   BOWImgDescriptorExtractor:: BOWImgDescriptorExtractor (const Ptr<DescriptorExtractor>&  dextractor, const Ptr<DescriptorMatcher>&  dmatcher )

:param dextractor:给定一幅图像及其图像特征检测子(关键点)集,计算对应的特征描述子.

Parameters:
  • dmatcher – 给定一幅图像及其图像特征检测子(关键点)集,用于寻找训练后的视觉词典中最近的词.

BOWImgDescriptorExtractor::setVocabulary

设置一个视觉词典.

C++:  void  BOWImgDescriptorExtractor:: setVocabulary (const Mat&  vocabulary )
Parameters:
  • vocabulary – 视觉词典 (是 BOWTrainer 的继承类). 视觉词典中的每一行是一个词 (聚类中心).

BOWImgDescriptorExtractor::getVocabulary

返回视觉词典集.

C++:  const Mat&  BOWImgDescriptorExtractor:: getVocabulary ( )  const

BOWImgDescriptorExtractor::compute

用视觉词典计算图像特征描述子.

C++:  void  BOWImgDescriptorExtractor:: compute (const Mat&  image, vector<KeyPoint>&  keypoints, Mat&  imgDescriptor, vector<vector<int>>*  pointIdxsOfClusters=0, Mat*  descriptors=0  )
Parameters:
  • image – 输入图像.
  • keypoints – 对于给定输入图像输出的图像特征检测子(关键点).
  • imgDescriptor – 待输出的特征描述子.
  • pointIdxsOfClusters – 属于该聚类中心的关键点的标号. pointIdxsOfClusters[i] 是在非空条件下,属于第``i``个聚类中心 (视觉词典的词)的关键点的标号.
  • descriptors – 在非空条件下,返回图像检测子(关键点)对应的图像特征描述子.

BOWImgDescriptorExtractor::descriptorSize

如果字典已经生成,返回图像特征描述子矩阵的尺寸. 否则,返回0.

C++:  int  BOWImgDescriptorExtractor:: descriptorSize ( )  const

BOWImgDescriptorExtractor::descriptorType

返回图像特征描述子类型.

C++:  int  BOWImgDescriptorExtractor:: descriptorType ( )  const

翻译者

bittnt@ OpenCV中文网站 <kylezheng04@gmail.com>

转http://www.opencv.org.cn/opencvdoc/2.3.2/html/modules/features2d/doc/object_categorization.html#bowimgdescriptorextractor-compute

opencv 中模板匹配的完整例子 特征点提取和匹配的通用方法 在opencv中应用 并做了大量的翻译和多中算法的结合 基于这个就可以做项目开发了! 立即下载

相关推荐

Zabbix安装与部署 系统环境:centos7.0

Zabbix安装与部署 系统环境:centos7.0

weixin_42485027的博客 2600

python-opencv-SVM (-215:Assertion failed) !_descriptors.empty() in function ‘cv::BOWTrainer::add‘

今天对python使用svm过程中出现的问题进行一下记录 先将代码插入进来 import cv2 import numpy as np from os.path import join datapath = r"D:/BaiduNetdiskDownload/opencv/CarData/TrainImages" def path(cls,i): return "%s/%s%d.pgm" % (datapath,cls,i+1) pos, neg = "pos-","neg-" detect

qq_24027337的博客 719

AS5600磁编码器选型与安装避坑指南:磁铁形状、间隙距离到底怎么选?(附实测数据)

本文详细解析了AS5600磁编码器的选型与安装要点,包括磁铁形状、间隙距离等关键参数的选择,并附有实测数据支持。特别针对Arduino和I2C接口的应用场景,提供了硬件选型和机械安装的实用指南,帮助开发者避免常见陷阱,提升系统精度和稳定性。

weixin_27038245的博客 287

BoW(SIFT/SURF/...)+SVM/KNN的OpenCV 实现

本文转载了文章(沈阳的博客),目的在于记录自己重复过程中遇到的问题,和更多的人分享讨论。 程序包:猛戳我 物体分类 物体分类是计算机视觉中一个很有意思的问题,有一些已经归类好的图片作为输入,对一些未知类别的图片进行预测。 下面会说明我使用OpenCV实现的两种方法,第一种方法是经典的bag of words的实现;第二种方法基于第一种方法,但使用的分类方法有所不同。 在此之前,有必要...

weixin_30621959的博客 530

FFmpeg + OBS 低延迟直播串流实战:从H264裸流到RTP组播的完整配置

本文详细介绍了如何利用FFmpeg将H264裸流转码为RTP协议,并通过组播技术实现与OBS客户端的超低延迟直播串流。文章深入剖析了FFmpeg关键参数调优、SDP文件生成与配置,以及OBS客户端的无缝拉流方法,为需要毫秒级实时交互的场景提供了一套去中心化、高效稳定的完整解决方案。

fanta的博客 827

通过声音识别鸟类

根据野生鸟类的外表来识别它是一回事。仅仅根据声音来识别同一只鸟是另一回事。除非你是一个熟练的观鸟者,通过声音识别鸟类可能相当具有挑战性德国马尔堡大学的一组数学、计算机科学和生物学研究人员设计了一种快速识别鸟类和监测当地生物多样性的方法。他们使用连接到 NVIDIA 的便携式设备拍摄的录音根据研究人员的说法是一个边缘人工智能系统,“基于分布式系统中运行的嵌入式边缘设备,能够对森林中记录的声景进行高效、连续的评估。”要了解更多信息,请参阅。

分享AI前沿科技 1680

[学习opencv]bow 算法实现图片分类bag of word

BOW其实就是bag of word的缩写,在OpenCV中关于此框架的有3个类。       第一个是一个基类,算是BOW训练的类型,       class BOWTrainer       {       public:             BOWTrainer(){}             virtual ~BOWTrainer(){}               v...

开源节流 1746

DTI-ALPS处理笔记

前段时间刚好学习了一下DTI-ALPS处理(diffusion tensor image analysis along the perivascular space ),记录一下,以便后续学习。ALPS是2017年发表在《Japanese Journal of Radiology》的一篇文章首次提出的 (),主要用于无创评估脑内淋巴系统功能的衡量数值。C图和D图中的蓝色部分是投射纤维,绿色部分是联合纤维,红色部分是皮下纤维。

weixin_52073820的博客 4788

图像检索(3):BoW实现

在上一篇文章中图像检索(2):均值聚类-构建BoF中,简略的介绍了基于sift特征点的BoW模型的构建,以及基于轻量级开源库vlfeat的一个简单实现。 本文重新梳理了一下BoW模型,并给出不同的实现。 基于OpenCV的BoW实现 BoWTrainer的使用 词袋模型开源库DBoW3 BoW BoW模型最初是为解决文档建模问题而提出的,因为文本本身就是由单词组成的。它忽略文本的词序,语法...

weixin_34233679的博客 528

C#与倍福Plc通信——使用仿真软件模拟倍福PLC运行

安装这个软件之前先安装VisualStudio,本文安装这个软件时已经安装了VisualStudio2019。1、下载倍福PLC编程软件TwinCAT。

qq_34059233的博客 3664

7.工具高级参数—CogPMAlignTool

CogPMAlign工具是用于图像模式匹配的视觉检测工具,主要包含训练参数和运行参数两类设置。训练参数包括弹性参数(处理图像非线性变形,建议不超过8像素)和特征粒度限制(控制边缘点密度)。运行参数涉及对比度阈值(影响特征点识别)、自动边缘阈值、接受阈值(0-1.0分值判定匹配有效性)和XY重叠(过滤重叠结果)等关键设置。该工具通过PatMax/PatQuick算法实现模板匹配,匹配分数0-1.0反映匹配度,受模板形状匹配度、自由度、特征缺失等因素影响。通过合理配置参数,可在执行速度和匹配精度间取得平衡,最高

934

BOW--创建和训练目标检测器

BOW--创建和训练目标检测器 1、bow方法的实现步骤 去一个样本数据集 对样本集中的每幅图像提取描述符(采用SIFT,SURF等方法) 将每一个描述符都加入到BOW训练器中 将描述符聚类到K簇中(聚类的中心就是视觉单词) 接下来要测试一下分类器,并尝试进行检测,这个过程和前面介绍的非常相似:给定测试的图像,提取特征,然后基于这些特征到最近簇心的距离来实现向量化,已形成直方图。 下图...

庾信平生最萧瑟 2343

让 RAP 弹窗参数真正变成必填:Excel Upload Action 的两种实现路径

摘要 在RAP应用中,action弹窗参数经常缺乏必填校验,导致用户体验差。本文提出两种解决方案:1)在action实现中手动校验,简单但交互不流畅;2)通过root abstract entity和abstract BDEF建模,利用field(mandatory)实现框架级校验,推荐此长期方案。后者将约束集中到模型层,使UI与执行期校验一致,特别适合ABAP Cloud环境。以Excel导入为例,强制填写备注和明确选择试运行,可避免审计问题,提升系统可靠性。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 197

BOW(opencv源码)

BOW其实就是bag of word的缩写,在OpenCV中关于此框架的有3个类。       第一个是一个基类,算是BOW训练的类型, [cpp] view plaincopy class BOWTrainer   {   public:         BOWTrainer(){}         virtual ~BOWTrainer

552

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

【opencv源码解析】 二、 cvtColor

这里以CV_BGR2YUV_I420来讲 core.cpp void cv::cvtColor( InputArray _src, OutputArray _dst, int code, int dcn ) { ... case COLOR_RGB2YUV_YV12: case COLOR_BGR2YUV_YV12: case COLOR_RGBA2YUV_YV12: ca...

weixin_30873847的博客 937

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

基于opencv实现SVM分类器【附源码】

本文主要使用opencv实现图像分类器源码已在博客中,不过也可以直接下载整个工程源码。

ctu_sue的博客 1216

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

opencv中的SVM图像分类

原创作品 转载请注明出http://blog.csdn.net/always2015/article/details/47107129 上一篇博文对图像分类理论部分做了比较详细的讲解,这一篇主要是对图像分类代码的实现进行分析。理论部分我们谈到了使用BOW模型,但是BOW模型如何构建以及整个步骤是怎么样的呢?可以参考下面的博客http://www.cnblogs.com/yxy8023ustc/p

u010394105的博客 2771

【opencv、机器学习】opencv中的SVM图像分类(二)

上一篇博文对图像分类理论部分做了比较详细的讲解,这一篇主要是对图像分类代码的实现进行分析。理论部分我们谈到了使用BOW模型,但是BOW模型如何构建以及整个步骤是怎么样的呢?可以参考下面的博客http://www.cnblogs.com/yxy8023ustc/p/3369867.html,这一篇博客很详细讲解了BOW模型的步骤了,主要包含以下四个步骤: 提取训练集中图片的feature将这些

古月的博客 4204

手把手用FanControl搞定Windows静音散热:4步完成免费风扇控制

FanControl 是一款免费的 Windows 风扇控制软件,它把 CPU、GPU 和机箱风扇统一接入温度管理,靠可调转速曲线在散热与噪音之间找平衡。按本文走完四步,你的机器就能安静下来,还能顺手学会插件扩展和故障排查。 ## 准备阶段:环境确认与软件获取 🖥️ 先确认三件事,再决定怎么装: | 检查项 | 说明 | | 操作系统 | Windows 10 / Windows 11 |

gitblog_00224的博客 810

opencv3.x+opencv_contrib安装

由于在学习图像识别中的特征点检测中,需要用到Surf和Sift,但是这两个算法在3.1.0的Release版本中并不存在,因为他们是存放在opencv_contrib目录下面的未稳定功能模块,所以如果我们想要使用这个目录的功能,就需要自己重新进行OpenCV的编译。据官方说法,目前还不是太稳定的模块都在opencv_contrib里边,由于不稳定,所以不能在release版本里发行,只有在稳定以后才会放进release里边。

eeeeety6208的博客 784

如何设计好词袋模型BoW模型的类类型

回顾过去自己写过的一些词袋模型,比如BoW图像检索Python实战、图像检索(CBIR)三剑客之BoF、VLAD、FV以及Bag of Words cpp实现,这些写出来的要么只是助于自己理解词袋模型的有关理论,要么也只是面向实验的一些验证,或者更直接点可以说只是些小玩具摆了。 在我2016年的计划列表里,存放着一条由2015年拖过来的目标,就是写出一个可以面向商业级别的词袋模型,这

凌风探梅的专栏 1514

OpenCV物体识别检测系统 Python语言 计算机毕业设计(包含文档+源码+部署教程)

OpenCV物体识别检测系统 Python语言 计算机毕业设计(包含文档+源码+部署教程)

公众号:源码之屋,十多年程序猿资深互联网人,目前专注于Python/Java/大数据项目解决方案制定,提供各行业各编程语言的全套开发服务,喜爱code,喜爱分享,生命不止,编码不息! 407

OpenCV物体识别检测系统 Python语言

1、项目介绍OpenCV物体识别检测系统 计算机毕业设计(包含文档+源码+部署教程) Python语言识别80多种物体2、项目界面(1)物体识别检测------小狗(2)物体识别检测------小鸟(3)物体识别检测------钟(4)物体识别检测------椅子(5)物体识别检测------剪刀(6)物体识别检测------公共汽车。

qq_80213251的博客 443

360全景拼接 opencv_OpenCV中的全景拼接例程

使用Stitcher类,通过createDefault()方法创建拼接对象,通过stitch()方法执行默认的自动拼接。自动拼接和07年Brown和Lowe发表的论文描述的步骤基本一致,只不过使用的特征提取算法是ORB,而不是慢吞吞、有专利保护的SIFT和SURF。开源万岁!代码内容:设置几张图片,扔到向量里面,然后计算全景图。opencv-3.0.0源码中没有找到测试图片,很蛋碎。到github...

weixin_39973410的博客 603
上一篇: BOW(opencv源码)
下一篇: Word标题:自动编号
Savitch
博客等级 码龄16年 84粉丝 130原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值