算法

PCL_点云分割_最小割算法

对着背影说爱祢 提交于 2020-03-10 04:06:28
普遍应用于前背景分割,立体视觉、抠图等。 GraphCuts图是在普通图的基础上多了2个顶点,这2个顶点分别用符号**”S”和”T”**表示,统称为终端顶点。其它所有的顶点都必须和这2个顶点相连形成边集合中的一部分。所以Graph Cuts中有两种顶点,也有两种边。 第一种顶点和边是:第一种普通顶点对应于图像中的每个像素。每两个邻域顶点(对应于图像中每两个邻域像素)的连接就是一条边。这种边也叫n-links。 第二种顶点和边是:除图像像素外,还有另外两个终端顶点,叫S(source:源点,取源头之意)和T(sink:汇点,取汇聚之意)。每个普通顶点和这2个终端顶点之间都有连接,组成第二种边。这种边也叫t-links。 PCL中实现最小割算法: (1)构造图:对于一个给出的点云,算法会以点云中每一个点,另加一个source(源点)、一个sink(汇点),作为GraphCut图的顶点;点云中每个点与其近邻连线所形成的边叫n-links,与sink、source连线形成的边叫t-links。 (2)对边赋权值: (3)最小割计算:将点云分为前景和背景。 代码: # include <iostream> # include <vector> # include <pcl/io/pcd_io.h> # include <pcl/point_types.h> # include <pcl

Huffman编码(Huffman树)

橙三吉。 提交于 2020-03-09 20:03:22
【0】README 0.1) 本文总结于 数据结构与算法分析, 源代码均为原创, 旨在 理解 “Huffman编码(Huffman树)” 的idea 并用源代码加以实现; 0.2) Huffman树的构建算法属于 贪婪算法 , 贪婪算法的基础知识参见:   http://blog.csdn.net/pacosonswjtu/article/details/50071159 【1】Huffman 编码 1.1)贪婪算法的第二个应用: 文件压缩; 1.1.1)标准的 ASCII字符集: 它由大约100个 可打印字符组成,为了把这些字符区分开, 需要 |log100|(不小于等于log100) = 7个 比特; 1.1.2)看个荔枝:(使用一个标准编码方案) 设一个文件, 它只包含字符 a, e, i, s, t, 加上一些空格和 newline(换行)。 进一步设该文件有10个a、15个e、12个i、3个s、4个t、13个空格以及一个 newline, 如图10-8所示, 这个文件需要174个bits 来表示,因为有58个字符,每个字符3个bits; 1.2)现实中的事实: 文件可能相当大。 许多大文件是某个程序的输出数据,而在使用频率最大和最小之间的字符间通常存在很大的差别; 1.2.1)出现的问题: 是否有可能提供一种更好的编码降低总的所需bits数量 2.2)解决方法:

贪婪算法核心

我与影子孤独终老i 提交于 2020-03-09 19:39:22
通常解决并理解一个动态规划问题需要以下 4 个步骤: 利用递归回溯解决问题 利用记忆表优化(自顶向下的动态规划) 移除递归的部分(自底向上的动态规划) 使用技巧减少时间和空间复杂度 来源: https://www.cnblogs.com/ZJPaang/p/11638557.html

centos7安装HFE算法

北城余情 提交于 2020-03-09 15:00:37
参考文章: https://fracpete.github.io/python-weka-wrapper/install.html 需要将JDK写到环境变量里面去 安装步骤如网站所示。 貌似还需要更新一下pip和setuptools 除此以外: 在javabridge安装时报错,需要在之前再安装一个Cython。 再安装python-weka-wrapper即可。 来源: CSDN 作者: red_west 链接: https://blog.csdn.net/red_west/article/details/104750170

有哪些令人拍案叫绝的算法?

帅比萌擦擦* 提交于 2020-03-09 13:57:06
介绍一个简单易懂然后又让你拍案叫绝的算法! 这个算法的代码量很少,却很惊艳。 它就是传说中的 洗牌算法 ! 小技巧:看到一个好答案,想点赞又嫌麻烦,可以双击屏幕自动点,既能鼓舞作者,又能很方便自己下次再看。我用这个方法,已经快速标记 10 来个好文章了。 先来思考一个问题:有一个大小为 100 的数组,里面的元素是从 1 到 100 按顺序排列,怎样随机的从里面选择 1 个数? 最简单的方法是利用系统的方法 Math.random() * 100 ,这样就可以拿到一个 0 到 99 的随机数,然后去数组找对应的位置就即可。 接下来在思考一个问题: 有一个大小为100的数组,里面的元素是从 1 到 100 按顺序排列,怎样随机的从里面选择 50 个数? 注意数字不能重复! 注意数字不能重复! 注意数字不能重复! 如果根据上面的思路,你第一想法是:随机 50 次不就行了? 但是,这样做有个很明显的 bug :数字是会重复的。 修改一下? 弄一个数组,把每一次随机的数都放到数组里,下一次随机就看这个数组里面有没有这数,有的话就继续随机,直到这个数组里面有 50 个数字就停止。 这样是可以的! 但,还是有个小问题,考虑一下极端情况:有一个大小为100的数组,里面的元素是从 1 到 100 按顺序排列,怎样随机的从里面选择 99 个数。 如果按照上面的方法操作

导航定位向高精定位的演进与实践

大城市里の小女人 提交于 2020-03-09 11:00:24
导读 地图软件现在已成为人们出行必备的重要辅助工具。为了实现准确的导航,首先必须准确确定人或车的当前位置。因此,定位技术就是实现导航功能的基石。 本文较系统的介绍了手机、车机导航定位中使用的关键技术,以及高德地图在这些关键技术中的进展。最后,讨论了在传统导航向自动驾驶的演进过程中,定位技术的演进路径。 1.导航定位框架 导航定位的核心业务目标是为导航服务提供连续可靠的定位依据,包括:当前在哪条路上,是否偏离路线,距离下一个路口有多远,等等。 为实现这一目标,首先需要接收定位信号输入。最常见的定位信号是GPS,其可以提供全域米级精度(5~10m)的位置信息。在此基础上,大部分手机同时配置了惯性传感器(陀螺仪、加速度计)和磁力计,还有部分手机配置了气压计,可以感知高程方向的位置变化。 对于车机,通过CAN总线获取的车速脉冲、方向盘转角等信息是另一类重要的定位输入。基于上述定位信号,应用姿态融合、航位推算等算法,计算出连续可靠的位置和姿态。再依据地图数据将人/车的实际位置与地图道路关联,实时判断当前是否已经偏离导航路线,或更新当前在导航路线中的相对位置。 图1 导航定位框架 在上述定位框架中,针对不同端的形态(手机/车机),输入定位信号的配置不同,使用的定位技术及覆盖的定位场景也不同。 对于手机,存在步行、骑行、驾车等多种使用场景,需要对用户行为进行识别。在步行场景下,由于速度较低

MySQL索引背后的数据结构及算法原理

夙愿已清 提交于 2020-03-09 10:02:21
摘要 本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话题。特别需要说明的是,MySQL支持诸多存储引擎,而各种存储引擎对索引的支持也各不相同,因此MySQL数据库支持多种索引类型,如BTree索引,哈希索引,全文索引等等。为了避免混乱,本文将只关注于BTree索引,因为这是平常使用MySQL时主要打交道的索引,至于哈希索引和全文索引本文暂不讨论。 文章主要内容分为三个部分。 第一部分主要从数据结构及算法理论层面讨论MySQL数据库索引的数理基础。 第二部分结合MySQL数据库中MyISAM和InnoDB数据存储引擎中索引的架构实现讨论聚集索引、非聚集索引及覆盖索引等话题。 第三部分根据上面的理论基础,讨论MySQL中高性能使用索引的策略。 摘要 数据结构及算法基础 索引的本质 B-Tree和B+Tree 为什么使用B-Tree(B+Tree) MySQL索引实现 MyISAM索引实现 InnoDB索引实现 索引使用策略及优化 示例数据库 最左前缀原理与相关优化 索引选择性与前缀索引 InnoDB的主键选择与插入优化 后记 参考文献 数据结构及算法基础 索引的本质 MySQL官方对索引的定义为: 索引(Index)是帮助MySQL高效获取数据的数据结构。 提取句子主干,就可以得到索引的本质:索引是数据结构。 我们知道,数据库查询是数据库的最主要功能之一

基础排序算法

a 夏天 提交于 2020-03-09 10:01:50
1.冒泡排序 比较大小,互换顺序 2.选择排序 选出最小值,插入新数组 3.插入排序 比较大小,将基值插入到合适的位置 4.快速排序 分组排序,递归调用,当长度为1时返回结果 来源: https://www.cnblogs.com/chujunqiao/p/12446891.html

字符串匹配算法-KMP

耗尽温柔 提交于 2020-03-09 04:50:15
文章目录 字符串匹配问题 KMP算法 简介 前缀/后缀/部分匹配表 甲的疑问1:k = next[k-1]是什么鬼? 结论 得到部分匹配表后匹配过程 算法特点 字符串匹配问题 引用知乎用户 灵茶山艾府 的举例,假设我们有两个角色,甲和乙 甲 : abbaabbaaba 乙 : abbaaba 一天清晨,乙对甲说,你心里到底有没有我,告诉一下我在你心中的位置。甲心中一紧,从头开始一一与乙的字符进行比较。 但是,前面的六位都能匹配,当比较到第七位时,不匹配。甲试着像往常一样暴力匹配,回退到自己的第二个字符,从乙的开头开始继续比较。这一位匹配,则继续匹配下一位,不匹配再回退到上一次开始匹配的下一个字符重头开始匹配。如下图所示: 这样没过一会儿,甲就对乙说,我找到了,放心吧,我心里一直有你呢,然后骄傲地告诉了乙在自己心中的具体位置。乙表示还不错,一是觉得心里面有它,二是甲的查询速度这么快,说明甲没有其他相好的再心里(甲心里存放的字符数目较少). 但终有一天,甲心中想的相好的越来越多,而且这些相好的很大一部分还和乙很像,这样,甲的字符串就变得越来越长。 又是一个清晨,乙又对甲说,你心里到底还有没有我。甲JH一紧,捏了一把冷汗,心想自己心里现在不是那么干净,相好的那么多,要是还像以前那么暴力搜索,不知道要找到什么时候。果然,乙又开口了,快告诉我在你心中的位置。不过,乙又说,今天天气好