- 博客(87)
- 资源 (14)
- 收藏
- 关注
原创 计算机视觉、机器学习、模式识别、图像处理领域国内外期刊、会议汇总
重要国际期刊(1) IEEE Transactions on Pattern Analysis and Machine Intelligence(PAMI)(2) International Journal of Computer vision(IJCV)(3) IEEE Transactions on Image Processing(4) ACM Transactions on Graphic...
2016-03-21 11:22:54 11359
原创 设计模式之观察者模式学习笔记
定义对象间的一种一对多的依赖关系 ,让多个观察者对象同时监听某一个主题对象,当一个对象的状态发生改变时, 所有依赖于它的对象都得到通知并被自动更新,又叫发布-订阅(publish-subscribe)模式。
2022-08-20 18:28:53 1211 1
原创 openCL缓存对象的传输与映射
用GPU进行加速运行运算时,通常首先将数据copy(clEnqueueWriteBuffer)到GPU缓存对象,运算结束后,再将数据copy(clEnqueueReadBuffer)到内存;OpenCL提供了内存映射机制,无需读写操作,将设备上的内存映射到主机上,便可以通过指针方式直接修改主机上的内存对象,内存映射的运行性能远远高于普通的读写函数。用OpenCL来操作映射内存中的数据通常分为三步:Step1:调用函数clEnqueueMapBuffer或函数clEnqueueMapImage,将内存映
2020-06-20 17:14:29 4617 1
原创 设计模式学习笔记之设计模式概述
目录1、设计模式概念2、设计模式4个基本要素3、设计模式分类4、设计模式原则1、设计模式概念设计模式,是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性、程序的重用性。每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的解决方案的核心。这样,你就能一次又一次地使用该方案而不必做重复劳动。设计模式的核心在于提供了相关问题的解决方案,使得人们可以更加简单方便地复用成功的设计和体系结构。..
2020-06-16 22:15:42 444
原创 C++可调用对象学习笔记
可调用对象:对于一个对象或者表达式,如果可以对其使用函数调用运算符,则称它为可调用的;即,如果e是一个可调用的表达式,则我们可以编写 e(args),其中 args 是一个逗号分割的一个或多个参数的列表。函数调用运算符是一对圆括号(),里面放置实参列表,也可能为空。具有函数行为或功能的一组语句视为可调用对象;一组执行任务的语句都可以视为一个函数,一个可调用对象。在程序设计的过程中,我们习惯于把...
2020-05-03 19:48:00 432
原创 C++动态绑定
绑定是一个把过程调用和响应调用所需要执行的代码加以结合的过程。绑定是在编译时进行的,叫作静态绑定,也叫做静态联编。动态绑定(动态联编/运行时绑定)则是在运行时进行的,因此,一个给定的过程调用和代码的结合直到调用发生时才进行。(1)在C++语言中,当我们使用基类的引用(或指针)调用一个虚函数时将发生动态绑定,所以说虚函数是动态绑定的基础。(2)动态绑定是和类的继承以及多态相联系的,在继承关系中...
2020-05-03 19:47:28 1042 1
原创 C++拷贝控制含有指针成员的类
当定义一个类时,我们显式地或隐式地指定了此类型的对象在拷贝、赋值和销毁时做什么。一个类通过定义五种种特殊的成员函数来控制这些操作:拷贝构造函数、拷贝赋值运算符、移动构造函数、移动赋值运算符和析构函数。在一个类中,如果类 没有指针成员,一切方便,因为默认合成的析构函数会自动处理所有的内存。但是如果一个类带了指针成员,那么需要我们自己来写 析构函数来管理内存。对于含有指针成员的类的对象调用...
2020-05-03 19:47:01 894
原创 三维重建之多频外差解包裹学习笔记
通过相移公式获取条纹图相位主值后,要进行相位展开。相位展开可分为两类:空间相位展开和时间相位展开。目前在工业测量领域大多使用时间相位展开算法,其中Gray编码加相移算法与多频外差原理是使用最为广泛的两种时间相位展开算法。通常基于多频外差原理相位展开的精度与稳定性更好。
2020-04-06 15:53:02 5441 9
原创 数组作为函数参数使用方法总结
C/C++数组作为函数参数使用方法总结一维数组作为函数参数的三种方法:方法1:形参与实参都用数组;方法2:形参与实参都用对应数组的指针;方法3:实参用数组名,形参用引用;二维数组作为函数参数的四种方法:C/C++语言中把二维数组看作1个特殊的一维数组,它的数组元素又是1个一维数组。二维数组的存储也是按照一维数组来处理的,二维数组按照行展开的方式按顺序存储;所以在利用二维数组作为参数...
2019-10-24 22:18:04 26595 2
原创 理解C++传值、传址、引用调用
使用C++很长时间,对一些最基本的知识点不求甚解,有时会犯很低级的错误,并且这些bug在调试中很难发现。以前只了解传值、传址、引用调用的区别,没有深入了解,今天稍微总结一下,今后慢慢深入。1.传值调用在传值调用时,实参被拷贝了一份,然后在函数体内使用,函数体内修改参数变量时修改的只是实参的一份拷贝,而实参本身没有改变。通过例子来看,代码运行结果:void funcValue(int ...
2019-03-30 14:13:33 3118
原创 C++11多线程 互斥量与Windows临界区
1.Windows临界区Windows临界区与互斥量用法非常相似;但也有些差别在“同一个线程”(不同线程中会卡住等待)中, Windows中的“相同临界区变量”代表的临界区的进入(EnterCriticalSection)可以被多次调用,但是调用了几次EnterCriticalSection(),就得调用几次EnterCriticalSection()而在C++11中,std::mut...
2019-01-09 21:50:03 1774
原创 C++11 多线程std:: async与std::thread的区别
1. std::async与std::thread的区别std::async()与std::thread()最明显的不同,就是async并不一定创建新的线程std::thread() 如果系统资源紧张,那么可能创建线程失败,整个程序可能崩溃。std::thread()创建线程的方式,如果线程返回值,你想拿到这个值也不容易;std::async()创建异步任务,可能创建也可能不创建线...
2019-01-08 21:43:54 12984 1
原创 C++11多线程 原子操作概念及范例
互斥量:多线程编程中保护共享数据:先锁,操作共享数据,开锁大家可以把原子操作理解成一种:不需要用到互斥量加锁(无锁)技术的多线程并发编程方式;原子操作:是在多线程中不会被打断的程序片段;原子操作比互斥量更胜一筹;互斥量的加锁一般针对一个代码段,原子操作针对的一般都是一个变量,而不是一个代码段。原子操作,一般都是指“不可分割的操作”,也就是说这种操作状态要么是完成的,要么是没完成的,...
2019-01-08 21:03:26 829
原创 C++11 多线程 async、future、packaged_task、promise
1.std::async std::future创建后台任务并返回值目的:希望线程返回一个结果std::async是个函数模板,用来启动一个异步任务,启动起来一个异步任务。什么叫“启动一个异步任务”,就是自动创建一个线程并开始执行对应的线程入口函数,它返回一个std::future对象,这个std::future对象里面就含有线程函数返回的结果,我们可以通过调用std::future对象的...
2019-01-06 23:27:59 1328
原创 C++11多线程 条件变量condition_variable
1.条件变量std:: condition_variable、wait()、notify_one()std:: condition_variable实际上是个类,是一个与条件相关的类,说白了就是等待一个条件的达成。这个类是需要和互斥量来配合工作的,用的时候我们要生成这个类的对象。实例代码:线程A:等待一个条件满足线程B:专门往消息队列扔消息(数据)2.代码深思考视频教程,老...
2019-01-06 20:01:40 1766
原创 C++11单例设计模式共享数据分析
目录1.设计模式大概谈2.单例设计模式3.单例设计模式共享数据分析、解决4.std::call_once()1.设计模式大概谈“设计模式”:代码的一些写法(这些写法跟常规写法不怎么一样):程序灵活,维护起来可能很方便,但是别人接管、阅读代码都会很痛苦。用“设计模式”理念写出的代码很晦涩的。《head first》讲设计模式,可以了解一下。老外为应付特别大的项目的时候...
2019-01-06 12:04:02 1027 1
原创 C++11多线程 unique_lock详解
目录1.unique_lock取代lock_guard2. unique_lock的第二个参数2.1 std::adopt_lock2.2 std::try_to_lock2.3 std::defer_lock3. unique_lock的成员函数3.1 lock(),加锁3.2 unlock(),解锁3.3 try_lock()3.4 release()...
2019-01-06 09:07:15 79250 4
原创 C++11多线程 互斥量的概念、用法、死锁演示及解决详解
目录1.互斥量(mutex)的基本概念2.互斥量的用法2.1 lock()、unlock()2.2 std::lock_guard类模板3.死锁3.1 死锁演示3.2 死锁的一般解决方案3.3 std::lock()函数模板3.4 std::lock_guard()的std::adopt_lock参数1.互斥量(mutex)的基本概念保护共享数据,操作时...
2019-01-05 21:39:22 2176
原创 C++11多线程 创建多个线程、数据共享问题
目录1.创建和等待多个线程2.数据共享问题分析2.1 只读数据2.2 有读有写:3.共享数据的保护案例代码1.创建和等待多个线程a)多个线程执行顺序是乱的,跟操作系统内部对线程的运行调度机制有关;b)主线程等待所有子线程运行结束,最后主线程结束,推荐使用这种join的写法,更容易写出稳定的程序;c)咱们把thread对象放入到容器里管理,看起开像个thread对...
2019-01-05 15:39:16 2167
原创 C++11多线程 多线程传参详解
1.传递临时对象做线程参数1.1要避免的陷阱1用detach()时,如果主线程先结束,变量就会被回收;所以用detach()的话,不推荐用引用,同时绝对不能用指针。1.2要避免的陷阱2只要临时对象的用临时构造A类对象作为参数传递给线程,那么就一定能够在主线程结束之前,把线程函数的第二个参数构建出来,从而确保即便detach()子线程也安全运行,程序如下:#include<...
2019-01-05 13:48:25 4836 2
原创 C++11多线程 线程启动、结束、创建多线程方法
目录1、范例演示线程运行的开始和结束1.1 thread:标准库里的类1.2 join()1.3 detach()1.4 joinable()2.其他创建线程的方法2.1 用类对象(可调用对象),以及一个问题范例2.2 用lambda表达式1、范例演示线程运行的开始和结束程序运行起来,生成一个进程,该进程所属的主线程开始自动运行;main()函数就是主线程,...
2019-01-04 21:30:16 8560 1
原创 C++11多线程 并发、进程、线程基本概念和综述
目录1、并发、线程、进程的概念1.1并发1.2可执行程序1.3进程1.4线程1.5学习心得二、并发的实现方法2.1多进程并发2.2多线程并发2.3总结三:C++11新标准线程库1、并发、线程、进程的概念1.1并发两个或者多个任务(独立的活动)同时发生:一个程序同时执行多个独立的任务;单核CPU的计算机在某一个时刻只能执行一个任务,由操作系...
2019-01-03 21:56:40 834
原创 opencv基本数据类型
目录1.点的表示:Point_ Point3_2.尺寸的表示:Size_3.Vec类:描述多通道Mat的像素4.Matx:已知尺寸的小Mat模板类5.颜色类Scalar:6.Rect:矩形表示类7.Range类8.cv::Ptr指针模板1.点的表示:Point_ Point3_opencv中Point_的定义(Point3_基本相同): ...
2018-11-16 22:07:17 1873
原创 C++常类型
常类型是指定义时,使用const修饰的类型,常类型的变量或者对象的值不能被修改,所以定义常量时必修进行初始化,否者编译错误。 1. 一般常量(简单类型或数组的常量)与对象常量初始化后不能被更改;常量定义时,修饰符const可以放在类型说明符前,也可放在类型说明符后。 2. 关于指针的常量分为三种:常量指针、指向常量的指针和指向常量的常指针常量指针:地址是常量,所以地址值是不可改变的,但...
2018-11-11 16:59:18 1331
原创 Opencv 源码查看跟踪工具Source Insight
从事图像处理与计算机视觉的工作者有时需要查看跟踪opencv源码,了解函数调用关系;有时需要修改部分代码为自己所用。在Visual Studio使用opencv库时,通过 “右键 ->查看定义” 只能看到函数声明,没法看到原代码,因为OpenCV将很多函数加入了函数库,并被编译成了dll。通常解决方法:自己使用cmake生成OpenCV源代码工程的解决方案,在编译好的解决方案中,可以...
2018-11-10 20:24:12 1153
原创 Linux常用命令学习
目录(一) 文件和目录操作命令1. 切换目录命令:cd2. 显示当前目录命令: pwd3. 文件和目录浏览命令:ls4. 目录的创建(mkdir)和删除(rmdir)命令5. 文件的创建(touch)和删除(rm)命令6. 文件移动(mv)和复制(cp)命令7. find命令:(二) Shell命令的使用...
2018-10-06 19:38:45 884
原创 Git常用命令与问题
Git常用命令:查看远程分支: git branch –a 查看本地分支: git branch (*表示当前所在分支) 创建分支 : git branch namenew 删除分支 : git branch -d [branch-name] 切换分支 : git checkout namebranch git checkout -b namebranch 新建...
2018-09-26 20:28:31 239
原创 Linux文本处理三剑客awk、sed、grep入门
Linux文本处理三剑客awk、sed、grep入门 目录1.AWK命令简介2.sed命令简介3.grep命令简介1.AWK命令简介AWK是一门解释型的编程语言,它的名字来源于它的三位作者的姓氏:Alfred Aho,Peter Weinberger和Brian Kernighan。AWK能够应用于广泛的计算和数据处理任务。所有的GNU/Linux发行版都自带GAWK,...
2018-09-25 20:48:40 752
原创 生成模型与判别模型
监督学习方法又可以分成两种:1) 生产方法(Generative Approach)2) 判别方法(DiscriminativeApproach)所学到的模型分别称为生成式模型(Generative Model)和判别式模型(Discriminative Model)。监督学习的任务就是学习一个模型(分类器),应用这一模型,对给定的输入预测相应的输出。这个模型的形式有两种:
2017-09-10 16:45:41 404
转载 ILSVRC2016目标检测任务回顾(图像视频目标检测)
计算机视觉领域权威评测——ImageNet大规模图像识别挑战赛(Large Scale Visual Recognition Challenge)自2010年开始举办以来,一直备受关注。2016年,在该比赛的图像目标检测任务中,国内队伍大放异彩,包揽该任务前五名(如图1所示)。我们将根据前五名参赛队伍提交的摘要与公开发表的论文或技术文档,简析比赛中用到的图像目标检测方法。
2017-01-15 11:07:04 24725 1
转载 DPM(Deformable Parts Model)--原理
DPM是一个非常成功的目标检测算法,连续获得VOC(Visual Object Class)07,08,09年的检测冠军。目前已成为众多分类器、分割、人体姿态和行为分类的重要部分。2010年Pedro Felzenszwalb被VOC授予"终身成就奖"。DPM可以看做是HOG(Histogrrams of Oriented Gradients)的扩展,大体思路与HOG一致。先计算梯度方向直方图,然后用SVM(Surpport Vector Machine )训练得到物体的梯度模型(Model)。
2017-01-14 15:59:45 1448
原创 Opencv机器学习之CvMLdata
1. .csv是最通用的一种文件格式,它可以非常容易地被导入各种PC表格及数据库中。此文件中,一行即为数据表的一个记录。.csv可以用记事本打开,打开后,数据之间以逗号为分隔符;.csv也可以用excel打开,显示格式与正常的excel表格数据一样,而且可以将excel文件转换为.csv文件。2. Opencv 提供了CvMLdata类(数据类型)来读取.csv文件并进行相
2017-01-14 08:57:01 4287
转载 机器学习算法比较
机器学习算法太多了,分类、回归、聚类、推荐、图像识别领域等等,要想找到一个合适算法真的不容易,所以在实际应用中,我们一般都是采用启发式学习方式来实验。通常最开始我们都会选择大家普遍认同的算法,诸如SVM,GBDT,Adaboost,现在深度学习很火热,神经网络也是一个不错的选择。假如你在乎精度(accuracy)的话,最好的方法就是通过交叉验证(cross-validation)对各个算法一个个地进行测试,进行比较,然后调整参数确保每个算法达到最优解,最后选择最好的一个。但是如果你只是在寻找一个“足够好”的
2017-01-08 20:15:44 1238
转载 深度学习在计算机视觉领域的前沿进展
在今年的神经网络顶级会议NIPS2016上,深度学习三大牛之一的Yann Lecun教授给出了一个关于机器学习中的有监督学习、无监督学习和增强学习的一个有趣的比喻,他说:如果把智能(Intelligence)比作一个蛋糕,那么无监督学习就是蛋糕本体,增强学习是蛋糕上的樱桃,那么监督学习,仅仅能算作蛋糕上的糖霜
2017-01-08 08:21:49 11249 1
原创 机器学习之梯度下降、批量梯度下降与随机梯度下降
大多数的机器学习算法都涉及某种形式的优化。优化指的是改变以最小化或者最大化某个函数的任务。我们通常以最小化指代大多数优化问题。最大化可由最小化算法最小化来实现。我们把要最小化或者最大化的函数称为目标函数或准则。当我们对其进行最小化时,我们也把它称为代价函数、损失函数或者误差函数。转自:http://blog.csdn.net/wuyanyi/article/details/8003946
2017-01-07 21:16:15 7830 2
原创 图像处理之Haar特征
Haar-like特征是计算机视觉领域一种常用的特征描述算子(也称为Haar特征,这是因为Haar-like是受到一维haar小波的启示而发明的,所以称为类Haar特征),后来又将Haar-like扩展到三维空间(称为3DHaar-Like)用来描述视频中的动态特征。关于Haar的发展历程如图1所示。图1Haar-like特征的特点 目前最常用的还是Haar
2017-01-06 15:12:38 36333 4
原创 Opencv目标检测之级联分类器训练与测试
OpenCV提供了两个程序可以训练自己的级器opencv_haartraining 与opencv_traincascade。opencv_traincascade是一个新程序,使用OpenCV 2.x API 以C++编写。这二者主要的区别是opencv_traincascade支持 Haar和 LBP (Local Binary Patterns)两种特征,并易于增加其他的特征。与
2017-01-02 20:32:10 21696 9
原创 图像的仿射变换与透视变换opencv
图像有两种常见的几何转换:一种是基于2×3矩阵进行的变换,也叫仿射变换;另一种是基于3×3矩阵的变换,又称透视变换。可以把透视变换当作一个三维平面被一个特定观察者感知的计算方法,而该观察者也许不是垂直观测该平面;透视变换(Perspective Transformation)是将图片投影到一个新的视平面(Viewing Plane),也称作投影映射(Projective Mapping);也称为单应性。在计算机视觉中,我们将平面的单应性定义为从一个平面到另一个平面的投影映射,因此,二维平面上的点到相机的
2016-12-29 20:23:25 3758
原创 opencv图像角点检测
角点检测(兴趣点、关键点、特征点)是计算机视觉系统中用来获得图像特征的一种方法,广泛用于运动检测、图像匹配、视频跟踪、三维重建和目标识别等领域中,也称为特征点检测。 角点并没有明确的定义,一般将图像中亮度变化剧烈的点或图像边缘上曲率取极大值的点认为是角点。角点作为图像的重要特征,保留了图像绝大部分的特征信息,又有效地减少了信息的数据量从而有效地提高了运算速度以及匹配的可靠性。1
2016-12-20 20:35:26 8042 1
原创 机器学习之损失函数与风险函数
1.损失函数与风险函数监督学习的任务就是学习一个模型f作为决策函数,对于给定的输入X,给出相应的输出f(X),这个输出的预测值f(X)与真实值Y可能一致也可能不一致,用一个损失函数(loss function)或代价函数(cost function)来度量预测错误的程度。损失函数是f(X)与Y的非负实值函数,记作L(Y, f(X))。机器学习常用的损失函数有以下几种:(1)0-
2016-11-17 19:18:35 9835
OpenCV 2 Computer Vision Application Programming Cookbook
2016-11-26
Swift 编程语言(中文版)
2016-04-16
基于Gabor+PCA+SVM的性别识别(2)
2015-12-26
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人