算法

论文《一种改进的基于邻域信息的人口普查变换立体匹配算法》学习

你。 提交于 2020-01-01 00:32:31
《A Modified Census Transform Based on the Neighborhood Information for StereoMatching Algorithm》 2013 摘要 Census变换是一种非参数局部变换。它的缺点是结果过于依赖中心像素。提出了一种基于邻域信息的改进的Census变换用于立体匹配。通过改进经典的Census,新技术利用更多的比特来表示像素与其邻域信息之间的差异。修正后的普查变换结果图像在深度不连续处具有更详细的信息。经过立体匹配、亚像素插值和视差细化,可以得到较好的稠密视差图。实验表明,该算法机制简单,鲁棒性强。它可以提高匹配精度,适用于硬件系统。 关键词: 立体匹配;Census变换;邻域信息;深度不连续性 1. Introduction 立体视觉是一种非常有吸引力的传感技术。它产生了一个几乎瞬时的估计距离的物体在一个场景中,并提供了3D信息,使用两个摄像头并行。 它已成功地应用于机器人导航、空间任务和复杂环境下的自动驾驶车辆障碍物检测等领域。立体匹配算法是立体视觉的关键,它解决的是在两个摄像机平面上寻找同一场景点的对应投影的对应问题。 近几十年来,立体匹配因其计算复杂性和实时性要求,在计算机视觉领域得到了广泛的研究。在早期阶段,绝大多数的研究集中在实现高质量的视差图图像。但大多数算法速度较慢,几乎不可能满足实时性的要求

Hotspot 垃圾回收之CollectorPolicy (一) 源码解析

无人久伴 提交于 2019-12-31 20:50:26
目录 一、CollectorPolicy 1、定义 2、构造方法 / initialize_all /post_heap_initialize 3、satisfy_failed_metadata_allocation 二、 GCPolicyCounters 三、AdaptiveSizePolicy 四、GenCollectorPolicy 1、构造方法 /initialize_flags /initialize_size_info 2、mem_allocate_work 3、satisfy_failed_allocation 在 《Hotspot 垃圾回收之CollectedHeap 源码解析》 中讲解了CollectedHeap的类继承关系,从本篇博客开始会依次讲解CollectedHeap的子类SharedHeap和GenCollectedHeap依赖的相关基础设施类的定义和实现,先把相关的关键基础类学习完成,最后再学习GenCollectedHeap的方法实现。因为某些类在不同GC算法下有不同的实现子类且子类的实现大多跟该GC算法本身的数据结构强耦合,为了方便理解,从本篇博客开始重点关注CMS算法用到的相关子类实现,先完整的学习CMS算法的实现再考虑其他算法下特定子类的实现。 一、CollectorPolicy 1、定义 CollectorPolicy的定义在hotspot

【数据结构算法自学笔记】自学笔记 思路+伪代码 (持续更新)

别来无恙 提交于 2019-12-31 14:31:45
数据结构算法自学笔记 大话思路与伪代码 以下为笔者自学过程中觉得需要记录的东西,并不代表正确且专业的知识,所以如果大家看到有不对的地方,希望大家能高抬贵手多多指出,谢谢!(持续更新) 一、排序 一)插入排序 插入排序对于少量元素的排序是一个比较有效的算法。 白话思路 :对于一个未排列的数组,暂且称当前正在排列移动的数字称作当前数。一般当前数从数组的第二位开始,遵循从当前数的当前位置向前开始比对,例如:a[1]需要和下标为1之前的数字一一比较,即与a[0]进行比较,也就是当前数从右向左依次比较。如果比较过程中,发现比当前数大的比较数,怎么将比较数往后移动一位,同时,该比较数之前的数同意向后移动一位,直到一个比当前数小的数字,将当前数插入到该数字之后的位置上。 伪代码 : INSTERTION - SORT(A) //A为传入的参数 是一个数组 for j = 1 to A . length key = A [ j ] //将当前待排序的元素备份 i = j - 1 //将下标定位到当前待排序数的前一位 while ( i > 0 && A [ i ] > key ) //当前排序的数字依次与下标之前的元素比较 为的是找到比当前排序数大的元素 //然后将它们依次后移一位,直到找到比key小的值,停止,退出循环 A [ i + 1 ] = A [ i ] i = i - 1 A [ i

黑马程序员C++教程从0到1入门--STL标准库

丶灬走出姿态 提交于 2019-12-31 10:59:13
黑马程序员C++教程从0到1入门--STL标准库 STL 组件 STL基本结构 STL 组件 STL 是 C++ 标准程序库的核心。STL 内的所有组件都由模板构成,其元素可以是任意型别。程序员通过选用恰当的群集类别调用其成员函数和算法中的数据即可。 STL 组件主要包括容器,迭代器、算法和仿函数。 容器 容器即用来存储并管理某类对象的集合。例如鱼缸是用来盛放金鱼的容器。 在 STL 中,容器又分为序列式容器和关联式容器两大类,而迭代器的功能主要是遍历容器内全部或部分元素的对象。迭代器可划分为 5 种类属,这 5 种类属归属两种类型:双向迭代器和随机存取迭代器。 每一种容器都有其优点和缺点。为满足程序的各种需求,STL 准备了多种容器类型,容器可以是 arrays 或是 linked lists,或者每个元素有特别的键值。 迭代器 迭代器用于在一个对象群集的元素上进行遍历动作。对象群集可能是容器,也可能是容器的一部分。 迭代器的主要用途是为容器提供一组很小的公共接口。利用这个接口,某项操作可以行进至群集内的下一个元素。 每种容器都提供了各自的迭代器。迭代器了解该容器的内部结构,所以能够正确行进。迭代器的接口和一般指针类似。 算法 算法用来处理群集内的元素,可以出于不同目的搜寻、排序、修改、使用那些元素。所有容器的迭代器都提供一致的接口,通过迭代器的协助,算法程序可以用于任意容器。

卷积Strassen算法

无人久伴 提交于 2019-12-31 02:29:00
知识直通车 知乎详解: https://zhuanlan.zhihu.com/p/78657463 复杂度推导: https://zhuanlan.zhihu.com/p/85002063 复杂度推到中文论文: http://xueshu.baidu.com/usercenter/paper/show?paperid=ed57429cf879f9bd2cef1206b8ff69a0&site=xueshu_se 来源: CSDN 作者: 猪崽滚滚 链接: https://blog.csdn.net/qq_20880415/article/details/103694254

【算法•日更•第一期】查找算法:简单实现二分

旧巷老猫 提交于 2019-12-30 22:40:17
▎二分 ☞ 『算法思想』   二分也就是 二分查找 ,又叫 折半查找 。这种算法正如其名,每一次都要分一半。废话不多说,直接抛砖引玉: Q:现在来思考一个问题:在一千以内我已经心中想好了一个数(不耍赖),你可以随意询问我一个数,我只会说大了、小了和猜对了,想必你一定玩过,那么请问怎样询问才能使用次数最少?   Answer:   其实有常识的人都知道,第一次说500;第二次说(第一次大了)250或(第一次小了)750;第三次125、375、625或875……以此类推。每一次都要砍一半询问,这样无疑不需要每个数都被查找一遍。如果你这样干过,那么可以说你已经会了二分的思想了。可能我没有说清楚,那么就再举个例子吧:(我心里想着666) A:500? B:小了 A:750? B:大了 A:625? B:小了 A:687? B:大了 A:656? B:小了 A:671? B:大了 A:663? B:小了 A:667? B:大了 A:665? B:小了 A:666? B:猜对了 ☞ 『算法复杂度分析』   由于每一次都会分掉一半,因此时间复杂度就是O(log n)。   形象一些说明就是最多查找n以2为底数的 对数 次。    对数 : 在数学中,对数是对求幂的逆运算,正如除法是乘法的倒数,反之亦然。 (copy自百度)比如说n=1024,log 1024= 10 ,因为2 10 =1024。

微信扫物上线,全面揭秘扫一扫背后的识物技术!

孤街浪徒 提交于 2019-12-30 16:21:17
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 导语| 12月23 日,微信扫物 iOS 版本正式上线。从识别特定编码形态的图片,到精准识别自然场景中商品图片,有哪些难点需要去克服? 扫物以图片作为媒介,聚合微信内部有价值的生态内容如电商,百科,资讯进行展示, 会催生哪些新的落地场景?本文将细细道来。 作者| breezecheng,腾讯 WXG 应用研究员 编辑| sukeli、尾尾 微信长期招收计算机视觉和OCR方向的人才, 欢迎简历breezecheng@tencent.com ​一. 扫一扫识物概述 1.1 扫一扫识物是做什么的? 扫一扫识物是指以图片或者视频(商品图:鞋子/箱包/美妆/服装/家电/玩具/图书/食品/珠宝/家具/其他商品)作为输入媒介来挖掘微信内容生态中有价值的信息(电商+百科+资讯,如图 1 所示),并展示给用户。这里我们基本覆盖了微信全量优质小程序电商涵盖上亿商品 SKU,可以支持用户货比 N 家并直接下单购买,百科和资讯则是聚合了微信内的搜一搜、搜狗、百度等头部媒体,向用户展示和分享与该拍摄商品相关的资讯内容。 图1 扫一扫识物功能示意图 百闻不如一试,欢迎大家更新 iOS 新版本微信 → 扫一扫 → 识物自行体验,也欢迎大家通过识物界面中的反馈按键向我们提交体验反馈。图 2 即为扫物实拍展示。 扫一扫识物实拍展示 1.2

002-JVM部分

故事扮演 提交于 2019-12-30 14:32:33
JVM部分数据整理 一、运行时数据区域 Java内存区域主要分为线程私有区域【程序计数器、虚拟机栈、本地方法区】、线程共享区域【Java堆、方法区】、直接内存(不受JVM GC管理) 1、线程私有部分 1.1、程序计数器 程序计数器(Program Counter Register)一块较小的内存空间,是当前线程所执行的字节码的行号指示器。 1.2、虚拟机栈 生命周期与线程相同。Java虚拟机栈(Java Virtual Machine Stacks)是描述Java方法执行的内存模型,每个方法在执行的同时都会创建一个栈帧(Stack Frame)用于存储局部变量表、操作数栈、动态链接、方法出口等信息。每一个方法从调用直至执行完成的过程,就对应着一个栈帧在虚拟机栈中入栈到出栈的过程。 1.3、本地方法栈 本地方法栈(Native Method Stack)与虚拟机栈所发挥的作用是非常相似的,区别是虚拟机栈为执行Java方法服务,而本地方法栈则为Native方法服务。HotSpot VM将本地方法栈和虚拟机栈合二为一。 2、线程共享 2.1、堆区(Heap) 创建的对象和数组都保存在Java堆内存中,也是垃圾收集器进行垃圾收集的最重要的内存区域。现代VM基本都采用分代收集算法,所以Java堆中还可以细分为:新生代(Eden区、From Survivor区和To Survivor区

【论文阅读笔记】Challenging the Long Tail Recommendation(挑战长尾推荐)

為{幸葍}努か 提交于 2019-12-30 12:34:33
摘要 论文链接 Challenging the Long Tail Recommendation 针对长尾推荐问题,提出三种基于图的算法 1)Hitting Time algorithm 2)Absorbing Time algorithm 3)Absorbing Cost algorithm 算法 1、算法问题定义 三种算法都是基于图表示的user-item 信息 如上图, U i U_i U i ​ 表示用户 i i i , M j M_j M j ​ 表示电影 j j j 。上图右下角为用户-电影评分数据(称作邻接矩阵,用A表示),评分信息在图结构中用U-M连线的权重表示,U-M之间没有连线表示该用户没有看过这部电影。 此时问题就转化为如下: 给定一个 user-item 加权无向图 G(V,E),和其邻接矩阵A,以及一个用户节点 q,寻找 k 个item满足以下条件:最接近用户节点q;item在长尾部分。 2、算法: 三种算法都是基于随机游走(random work)来计算相似度 1)Hitting Time algorithm 2)Absorbing Time algorithm 3)Absorbing Cost algorithm 该算法基于以下假设:爱好广泛(例如爱好多种电影)的用户和爱好专一的用户的评分数据的价值不同。因此作者提出一种新的特征 user