- 博客(174)
- 资源 (8)
- 收藏
- 关注
原创 Halcon/MFC混合编程入门
为方便初学者,尽量写的详细。一 新建一个项目,命名为halconVC,步骤如下:二 配置MFC/halcon编程环境1 在 项目-》属性-》c/c++-》常规的 附加包含目录中加入 "$(HALCONROOT)/include/cpp";"$(HALCONROOT)/include"2 在 项目-》属性-》连接器》常规的附加库目录 加入$(HALCONR
2016-01-18 21:13:27 12499 6
原创 ICP算法(Iterative Closest Point迭代最近点算法)
最近在做点云匹配,需要用c++实现ICP算法,下面是简单理解,期待高手指正。ICP算法能够使不同的坐标下的点云数据合并到同一个坐系统中,首先是找到一个可用的变换,配准操作实际是要找到从坐标系1到坐标系2的一个刚性变换。ICP算法本质上是基于最小二乘法的最优配准方法。该算法重复进行选择对应关系点对, 计算最优刚体变换,直到满足正确配准的收敛精度要求。ICP 算法的目的是要找到待配准点
2015-12-01 21:09:15 44129 5
原创 《移动浪潮》读书笔记
《移动浪潮》一书深入浅出地解读了信息革命第五次浪潮即将为人们生活带来的巨变。首先论述移动的力量,它是一股无法阻挡的浪潮,将引发颠覆性的革命,随后从电脑逐渐小型化,纸张的消失,娱乐的自由,钱包,社交网络,医疗,教育乃至工农业等方方面面论述移动互联的影响,酣畅淋漓。 《移动浪潮》的作者迈克尔.塞勒敏锐洞察到移动技术的功用已经远远超越个人层面,它必将对整个社会和人类文明产生深远的影响,而这
2015-11-19 21:36:22 2500
转载 大数据笔试面试问题之分治法解决
方法介绍对于海量数据而言,由于无法一次性装进内存处理,导致我们不得不把海量的数据通过hash映射分割成相应的小块数据,然后再针对各个小块数据通过hash_map进行统计或其它操作。那什么是hash映射呢?简单来说,就是为了便于计算机在有限的内存中处理big数据,我们通过一种映射散列的方式让数据均匀分布在对应的内存位置(如大数据通过取余的方式映射成小数存放在内存中,或大文件映射成多个小文件)
2015-09-24 11:09:37 2756
原创 图像匹配得到精确的旋转角度
当对平面物体进行视觉定位时,往往采用图像模板匹配的方式,然而当目标含有一定角度的旋转时,如何精确估算出旋转角度成了一个难题。下面是博主根据自己的理解所做的一个小的总结,也能算纠结,欢迎高手围观。1 基于灰度的模板匹配(NCC等) 用灰度模板进行模板匹配,往往耗时,并且要匹配含有旋转的目标,就需要建立多角度的模板。如果目标的角度范围是(-30°,30°),以1°为步幅,则需要60个模板
2015-08-14 10:01:53 37611 5
原创 张正友标定算法理论及算法实现
张正友标定算法理论及算法实现理论基础1999年,微软研究院的张正友提出了基于移动平面模板的相机标定方法。此方法是介于传统标定方法和自标定方法之间的一种方法,传统标定方法虽然精度高设备有较高的要求,其操作过程也比较繁琐,自标定方法的精度不高,张正友标定算法克服了这两者的缺点同时又兼备二者的优点,因此对办公、家庭的场合使用的桌面视觉系统(DVS)很适合。设三维世界中坐标的点为:
2015-08-13 20:55:17 25793 9
原创 相机模型详解
相机模型数码相机图像拍摄的过程实际上是一个光学成像的过程。相机的成像过程涉及到四个坐标系:世界坐标系、相机坐标系、图像坐标系、像素坐标系以及这四个坐标系的转换。理想透视模型——针孔成像模型相机模型是光学成像模型的简化,目前有线性模型和非线性模型两种。实际的成像系统是透镜成像的非线性模型。最基本的透镜成像原理如图所示:其中 u 为物距, f 为焦距,v 为相距。三者满足关系式
2015-08-13 17:32:38 44293 3
原创 机器学习:神经网络之表达
**************************************注:本系列博客是博主学习Stanford大学 Andrew Ng 教授的《机器学习》课程笔记。博主深感学过课程后,不进行总结很容易遗忘,根据课程加上自己对不明白问题的补充遂有此系列博客。本系列博客包括线性回归、逻辑回归、神经网络、机器学习的应用和系统设计、支持向量机、聚类、将维、异常检测、推荐系统及大规模机器学习等内容
2015-08-13 14:08:30 2541 1
原创 面试题之变态跳台阶
变态跳台阶一个台阶总共有n级,如果一次可以跳1级,也可以跳2级......它也可以跳上n级。该青蛙跳上一个n级的台阶总共有多少种跳法? 分析:用Fib(n)表示青蛙跳上n阶台阶的跳法数,青蛙一次性跳上n阶台阶的跳法数1(n阶跳),设定Fib(0) = 1; 当n = 1 时, 只有一种跳法,即1阶跳:Fib(1)= 1; 当n = 2 时, 有两种跳的方
2015-08-13 11:16:15 1700
原创 机器学习:正则化
**************************************注:本系列博客是博主学习Stanford大学 Andrew Ng 教授的《机器学习》课程笔记。博主深感学过课程后,不进行总结很容易遗忘,根据课程加上自己对不明白问题的补充遂有此系列博客。本系列博客包括线性回归、逻辑回归、神经网络、机器学习的应用和系统设计、支持向量机、聚类、将维、异常检测、推荐系统及大规模机器学习等内容
2015-08-11 19:38:03 2061
原创 机器学习:逻辑回归
**************************************注:本系列博客是博主学习Stanford大学 Andrew Ng 教授的《机器学习》课程笔记。博主深感学过课程后,不进行总结很容易遗忘,根据课程加上自己对不明白问题的补充遂有此系列博客。本系列博客包括线性回归、逻辑回归、神经网络、机器学习的应用和系统设计、支持向量机、聚类、将维、异常检测、推荐系统及大规模机器学习等内容
2015-08-09 23:24:39 3778 8
原创 机器学习:多变量线性回归
**************************************注:本系列博客是博主学习Stanford大学 Andrew Ng 教授的《机器学习》课程笔记。博主深感学过课程后,不进行总结很容易遗忘,根据课程加上自己对不明白问题的补充遂有此系列博客。本系列博客包括线性回归、逻辑回归、神经网络、机器学习的应用和系统设计、支持向量机、聚类、将维、异常检测、推荐系统及大规模机器学习等内容
2015-08-09 11:27:27 2829 1
原创 Java基础知识点总结
注:本文是博主根据自身学习java语言的经历,结合互联网上各论坛、网站对java知识点的总结,所做的一次学习笔记记录。主要记录java编程语言的一些易忽视的基础知识点,以及笔试面试时常被问到的细节。本人常期用c/c++编程,java方面水平有限,高手勿喷,欢迎评论指正。----------1 方法出现的顺序不会影响编译过程,程序运行时都是从main函数开始的。2 Java语言的数据类型
2015-08-08 20:31:00 2756
原创 机器学习:单变量线性回归及梯度下降
****************************注:本系列博客是博主学习Stanford大学 Andrew Ng 教授的《机器学习》课程笔记。博主深感学过课程后,不进行总结很容易遗忘,根据课程加上自己对不明白问题的补充遂有此系列博客。本系列博客包括线性回归、逻辑回归、神经网络、机器学习的应用和系统设计、支持向量机、聚类、将维、异常检测、推荐系统及大规模机器学习等内容。
2015-08-08 14:19:03 4686 3
原创 机器学习:监督学习和无监督学习
机器学习定义 机器学习是人工智能的一个分支,目标是赋予机器一种新的能力。(专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。)机器学习的应用很广泛,例如大规模的数据挖掘(网页点击数据,医疗记录等),无人驾驶飞机、汽车,手写手别,大多数的自然语言处理任务,计算机视觉,推荐系统等。 机器学习有很多定义,广
2015-08-07 17:52:32 18734
原创 常见经典排序算法学习总结(插入、shell、冒泡、选择、归并、快排等)
博主在学习过程中深感基础的重要,经典排序算法是数据结构与算法学习过程中重要的一环,这里对笔试面试最常涉及到的7种排序算法(包括插入排序、希尔排序、选择排序、冒泡排序、快速排序、堆排序、归并排序)进行了详解。每一种算法都有基本介绍、算法原理分析、算法代码。插入排序1)算法简介插入排序(Insertion Sort)的算法描述是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对
2015-08-04 17:53:22 4176
原创 stl变易算法(三)
本篇接着前面stl变易算法(一)和stl变易算法(二)继续讲述变易算法。这里将介绍完余下的变易算法,主要有:填充filln次填充fill_n、随机生成元素generate、随机生成n个元素generate_n、移除复制remove_copy、条件移除复制remove_copy_if、移除remove、条件移除remove_if、不连续重复元素复制unique_copy、剔除连续重复元素unique、
2015-07-15 15:39:47 1371
原创 stl变易算法(二)
本篇接着前篇stl变易算法(一)继续讲述变易算法。主要介绍transform、replace、replace_if、replace_copy以及replace_copy_if的用法及实现代码,并给出测试用例。元素变换transformtransform算法用于实行容器元素的变换操作。如下两个使用原型,一个将迭代器区间[first,last)中元素,执行一元函数对象op操作,变换后的结果存放在[res
2015-07-14 23:45:18 1328
原创 stl变易算法(一)
C++ STL的变易算法是一组能够修改容器元素数据的模板函数,可进行序列容器的复制、交换、替换、填充、移除、旋转等。这些算法对迭代器有较高的要求,具体的迭代器类型随各个算法而定,或向前迭代器、或双向迭代器、又或者是随机迭代器,以提供算法所需要的迭代器操作。应用变易算法时,先要检查容器的迭代器是否符合要求,防止产生编译错误。元素复制copyC++STL提供一个用于容器间元素拷贝的copy算法,将迭代区
2015-07-12 22:45:36 1575
原创 stl非变易算法(二)
这里接着上篇stl非变易算法(一)进行总结。主要解析算法函数count、count_if、mismatch、equal、search、search_n以及find_end,给出算法函数的实现及测试用例。下面直接进入正题。统计等于某值的容器元素个数countcount函数用于计算容器中某个给定值的出现次数。计算迭代区间[first,last)上等于val值的元素个数ret,返回计数。//count算法
2015-07-12 12:04:45 1343
原创 stl非变易算法(一)
C++ STL的非变易算法是一组不破坏操作数据的模板函数,用来对序列数据进行逐个处理、元素查找、子序列搜索、统计和匹配。非变易算法具有极为广泛的适用性,基本上可应用于各种容器。本文详细说明算法函数for_each、find、find_if、adjacent_find以及find_first_of的实现原理及用法并给出例子。
2015-07-11 23:45:52 1565
原创 stl之queue队列容器
queue队列也是一个线性存储表,元素的数据插入在表的一端进行,在另一端删除,从而构成先进先出表。插入一端为队尾,删除的一端为队首。 由于仅需取队首和队尾元素的操作,因此queue队列容器并不提供任何类型的迭代器对队列中其他位置处的元素进行访问操作。创建queue对象 queue() 默认构造函数,创建一个空的queue对象。 queue(const queue&)
2015-07-11 11:18:53 4505
原创 stl之stack容器
为了严格遵循堆栈数据后进先出原则,stack不提供元素的任何迭代操作,因此stack容器不会向外部提供可用的前向或反向迭代器类型。 头文件#include<stack>创建stack对象 stack() 默认的构造函数,创建一个空的stack对象。 stack<int> s; //使用默认的deque为底层容器,创建一个空的堆栈对象s。 stack(const stack
2015-07-11 10:39:44 1406
原创 stl之multimap容器
multimap与map一样,都是使用红黑树对记录型的元素数据按元素键值的比较关系,进行快速的插入、删除和检索操作,所不同的是multimap允许插入具有重复性键值的元素。在multimap容器中,元素的键值与元素的映照数据的映照关系是多对多的,即multimap是多重映照容器。由于元素键值允许重复,使得数组操作符“[]”利用键值来访问元素没有意义,故而multimap并没有定义数组方式的“[]
2015-07-11 09:48:03 1622
原创 stl之bit_vector原理及应用
原理 bit_vector容器具有vector容器一样的成员西数,常用于硬件端口的控制。区别于vector的一个重要特征是bit_vector更节省内存空间,一个元素只占用一个bit ,而不是一个字节。 bit_vector容器的每个元素是一个bit位值,取0或1,连续分配在以字为单位的字节块中,如图所示,13个bit分别为1011010100010,占用了一个字的内存空间。一个字为2个字节大小
2015-07-10 23:32:12 6315
原创 sift算法c语言实现
前段时间在做三维测量方面的研究,需要得到物体表面三维数据,sift算法是立体匹配中的经典算法,下面是对RobHess的SIFT源代码的解析。部分内容参考网上,在这里向各位大神表示感谢! http://blog.csdn.net/lsh_2013/article/details/46620015
2015-07-10 09:19:08 7529 6
原创 stl之map容器的原理及应用
容器的数据结构同样是采用红黑树进行管理,插入的元素健位不允许重复,所使用的节点元素的比较函数,只对元素的健值进行比较,元素的各项数据可通过健值检索出来。map容器是一种关联容器,实现了SortedAssociative Container、Sorted Associative Container和Unique Associative Container概念的接口规范。map技术原理图中所示
2015-07-05 12:21:47 15341
原创 stl之multiset容器的应用
与set集合容器一样,multiset多重集合容器也使用红黑树组织元素数据,只是multiset容器允许将重复的元素健值插入,而set容器则不允许。set容器所使用的C++标准头文件set,其实也是multiset容器的头文件,因为这个set头文件也包含multiset所需的红黑树和自身实现文件,只要用宏语句“#include”包含进来,就可对multiset容器的应用代码进行编译。创建m
2015-07-04 13:54:17 2314
原创 stl之set集合容器应用基础
set集合容器使用一种称为红黑树(Red-Black Tree) 的平衡二叉检索树的数据结构,来组织泛化的元素数据。每个节点包含一个取值红色或黑色的颜色域,以利于进行树的平衡处理。作为节点键值的元素的插入,必须确保每个子树根节点的键值大于左子树所有节点的键值,而小于右子树所有节点的键值。不会将重复的键值插入容器,也不需要指定具体的插入位置,而按元素在树中的关联关系,进行位置检索和插入,元素的删除亦
2015-07-03 19:49:41 3606
原创 stl之list双向链表容器应用基础
不同于采用线性表顺序存储结构的vector和deque容器,list双向链表中任一位置的元素差值、插入和删除,都具有高效的常数阶算法时间复杂度O(1)。头文件#include创建list对象1)list();//创建一个没有任何元素的list对象。listl 2)list(size_type n);//创建一个具有n个元素的list对象,每个元素采用它的类型下的默认值。li
2015-07-03 15:55:19 1519
原创 stl之deque双端队列容器
deque与vector非常相似,不仅可以在尾部插入和删除元素,还可以在头部插入和删除。不过当考虑到容器元素的内存分配策略和操作性能时,deque相对vector较为有优势。头文件#include创建deque对象1)deque();//创建一个没有任何元素的deque对象。deque d2)deque(size_typen);//创建一个具有n个元素的deque对象,每个
2015-07-03 09:53:43 5897 1
原创 stl之vector的应用
这里主要是对vector容器的一些常见应用的总结。至于vector的构造函数及初始化可以参考http://blog.csdn.net/lsh_2013/article/details/21191289,这里不再赘述。元素的遍历用迭代器访问vector元素#include #include using namespace std;int main(void){ vector v
2015-07-02 21:23:43 2701
原创 stl之string类用法详细总结
标准c++中String类非常强大,合理使用,能极大提高编程效率,下面就对string类的用法进行总结。头文件#includeString类的构造函数如下:1) string s; //生成一个空字符串s2) string s(str) //拷贝构造函数生成str的复制品3) string s(str,index) //将字符串str内“始于位置index
2015-07-02 17:31:45 10305 2
原创 linux系统常见的压缩命令
linux常见的压缩文件扩展名*.Z compress 程序压缩的文件;*.gz gzip 程序压缩的文件;*.bz2 bzip2 程序压缩的文件;*.tar tar 程序打包的数据,并没有压缩过;*.tar.gz tar 程序打包的文件,其中并且经过 gzip 的压缩*.tar.bz2 tar 程序打
2015-06-08 20:51:39 1357
原创 Linux学习笔记之权限与命令之间的关系(重要)及文件与目录知识总结
一、让使用者能进入某目录成为可工作目录的基本权限为何:可使用的命令:例如 cd 等变换工作目录的命令; 目录所需权限:使用者对这个目录至少需要具有 x的权限 额外需求:如果使用者想要在这个目录内利用 ls 查阅档名,则使用者对此目录还需要 r 的权限。二、使用者在某个目录内读取一个文件的基本权限为何:可使用的命令:例如本章谈到的 cat, more, less等等 目录
2015-06-06 20:00:06 1460
原创 Linux文件的搜寻
1 脚本文件名的查询which(寻找“执行文件”)# which [-a] command选项或参数:-a :将所有由 PATH 目录中可以找到的命令均列出,而不止第一个被找到的命令名称注意:这个命令是根据PATH这个环境变量所规范的路径去查询“执行文件”的文件名。 2 文件名的查找whereis (寻找特定文件)# whereis [-bmsu] 文件或目录名选项与参数
2015-06-06 19:34:06 1241
原创 文件与目录的默认权限与隐藏权限
除了基本r, w, x权限外,在Linux的Ext2/Ext3文件系统下,我们还可以配置其他的系统隐藏属性, 这部份可使用 chattr来配置,而以 lsattr 来查看。 文件默认权限:umaskumask 就是指定目前使用者在创建文件或目录时候的权限默认值。# umask0022 <==与一般权限有关的是后面三个数字!# umask -Su=rwx,
2015-06-06 15:03:40 1317
原创 判断二叉树是不是平衡二叉树
题目:输入一棵二叉树的根结点,判断该树是不是平衡二叉树。某二叉树中任意结点的左右子树的深度相差不超过1,那么它就是一棵二叉树。 我们很容易就能想到一个代码简洁却性能不佳的思路:在遍历树的每个结点的时候,调用函数TreeDpth得到它的左右子树的深度。如果每个结点的左右子树的深度相差都不超过1,按照定义它就是一棵平衡的二又树。 较好的思路是:用后序遍历的方式遍历整
2015-06-04 21:55:29 1805
原创 面试题之求二叉树的深度
题目:输入一棵二叉树的根节点,求该树的深度。从根节点到叶子结点一次经过的结点形成树的一条路径,最长路径的长度为树的深度。根节点的深度为1。struct BinaryTreeNode{ int m_nValue; BinaryTreeNode *m_pLeft; BinaryTreeNode *m_pRight;}; 如果一棵树只有一个结点,它的深度为1。如果根结点只有左子
2015-06-04 21:32:17 1373
数字图像处理课件(完整超清版)
2014-05-10
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人