自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(194)
  • 资源 (12)
  • 收藏
  • 关注

原创 设计模式之10 - 门面模式Facade

门面模式 又称为 外观模式,是我们比较常用的模式之一,主要应用在于:1. 为一个复杂子系统提供一个简单接口,提高子系统的独立性 并简化外部的调用;2. 定义系统每一层的入口,有助于模块清晰化;        如上图所示,不管模块复杂度如何,只需要定义出来一套 调用接口即可,其模块具体的内部实现一概不管,在分组开发模式下,这种思路尤为重要,保证模块间的独立性和解耦合 是代

2017-01-13 20:17:27 388

原创 设计模式之9 - 装饰模式Decorator

我们经常会遇到这种问题,当一个类出现非常多的选择,比如 咖啡,要加 糖、抹茶、香草、牛奶……,那么多调味品,在这种情况下,考虑通过继承的方式是否合理?你会得到 很多种咖啡类,牛奶咖啡、抹茶咖啡、牛奶椰蓉咖啡、香草黑糖咖啡、曲奇巧克力蛋奶咖啡……,好像很不靠谱对吧?        发现了 上面的 子类爆炸问题 后,你可能会问,我需要定义那么多的子类吗? 咖啡就是咖啡,其他的只是酌料而已。

2017-01-13 20:17:06 382

原创 设计模式之8 - 组合Composite

组合模式Composite 也称为 整体-部分 模式,用户可以通过一致的方式 整体调用。        组合模式特点可以概括为两点:1. 复杂对象对于简单对象的组合;2. 统一的对象接口,方便抽象的整体调用;       对于第一点,从学习面向对象开始,组合模式 就表达了最基本的封装的概念,这个意义上组合模式太简单,简单到和人要吃饭睡觉一样,或者说其本身并不算一种模式。

2017-01-13 20:16:51 366

原创 设计模式之7 - 桥接模式Bridge

桥接模式 与上一节的Adapter模式类似,是 媒介模式的一种。        桥接模式 的意义是将 抽象(Abstraction)与实现(Implementation)解耦,使得二者可以独立地变化。        通过 抽象类 Abstraction 对 实现类 Implementor 的调用,实现松耦合关系,Implementor负责实现核心功能,作为一个媒介调用方

2017-01-13 20:16:20 389

原创 设计模式之6 - 适配器Adapter

先说 适配器,比如 美标的转换插座、海淘电器用的110V到220V变压器、还有安卓到苹果的usb转换接头,这些都是非常常见的适配器的案例。        Adapter模式将一个类的接口转换成另外一个接口。使得原本由于接口不兼容而无法使用的类可以被正常调用。        适配器模式 的类图如下:        其中 Target 为需要适配的目标接口,Adaptee是需要被适

2017-01-13 20:15:55 354

原创 设计模式之5 - 单例模式Singleton

单例模式 是一种创建类型的模式,通过隐藏构造和析构函数,实现在内存中仅有一个对象 的目的。        Singleton的这种实现方式是非常有价值的,在多个模块或者多个线程中进行访问,可以不需要传递对象或者指针,通过引入头文件即可实现在不同模块解耦。        先来看Singleton的代码实现:#ifndef _SINGLETON_H_#define _SI

2017-01-13 20:15:04 523

原创 设计模式之4 - 原型模式Proto Type

原型模式 核心价值在于复制(clone接口),调用类通过调用原型的 clone接口,生成原型类的一个新的实例。        原型模式被用在对象的频繁拷贝上,其作用与拷贝构造函数类似(Clone也用来屏蔽浅拷贝和深拷贝),主要有两种应用:        1)需要保存一份对象的拷贝 备份,作为数据留存;        2)克隆对象并设置改变后的部分属性。        我们来

2017-01-12 22:59:49 756

原创 设计模式之3 - 工厂方法Factory Method

工厂方法模式 又称为多态工厂模式,注意这里面的多态,意义在于定义一个创建产品对象的接口,基类本身不去创建对象,而是交给其子类或者是其实现类去创建。        通过上图可以看到,IFactory作为基类,定义了createProduct 方法,而子类Factory通过继承实现不同的createProduct方法,这就是 工厂方法的概念,比如说我们有多个子类工厂(Factory1、Fa

2017-01-12 22:58:17 474

原创 设计模式之2 - 建造模式Builder

建造者模式 源自于复杂对象的构造过程,比如我们要建造一座房子,或者建造一辆车,Builder模式包含的角色包括:        Director(Designer):指导者(或者 设计者)        Builder:建造者        Product:产品                这里我们不再强调产品的概念,以房子为例来解析Builder模式的过程:

2017-01-12 22:56:51 419

原创 设计模式之1 - 抽象工厂Abstract Factory

工厂模式整体上是一个系列,建议 大家先看完后面的工厂方法模式,再回过头来看本章。        抽象工厂模式 是一种 创建类模式,和Factory Method类似,我们不去解释这个概念,网上能搜到的解释都很绕,越看越茫然,我们只去抓住其核心点。        核心就在于抽象,比如对于下面的用例,Factory类本身定义了两个方法,CreateProductA(衣服) 和 CreatePr

2017-01-12 22:55:33 494

原创 C++基础学习之16 - 多线程与互斥锁

熟悉Linux的童鞋都对多进程比较熟,Linux下的 fork也有很多教程介绍,但这不是我们本节的重点,我们在这里主要讲的是多线程。        相对于进程来讲,线程 是一个轻量级的概念,一个进程包含多个线程(至少1个)。        线程有自己的堆栈和局部变量,但没有内存空间,而是共享进程的内存空间。        这种共享内存机制 优点在于通过数据共享的快速访问,同样这种机制

2017-01-12 22:50:11 968

原创 C++基础学习之15 - 消息机制

提到进程间通信(IPC),你可能会想到很多种方式,比如:1)消息传递(管道、FIFO、消息队列);2)同步(互斥量、条件变量、读写锁、文件和写记录锁、信号量);3)共享内存(匿名的和具名的);4)远程过程调用(Solaris门和Sun RPC)。        没错,你有很多种选择,但提到消息,很多人第一印象就是 发送者(Sender)和 接收者(Receiver)。你

2017-01-12 22:49:03 1340 1

原创 C++基础学习之14 - 再谈指针

前面已经讲过C++指针的概念,指针是一个特殊变量,里面保存了一个内存地址。        那么指针本身占了多大内存呢? 在32位平台上是 32位(4字节),在64位平台上就是 64 位。        我们通过代码来看一下指针的寻址方式。int a[5] = { 1,2,3,4,5 }; int *p = a; for(i=0;i<5;i++) { (*p)

2017-01-12 22:46:53 345

原创 C++基础学习之13 - 可视化设计

讲到C++的可视化设计,一般都会想到 类图、流程图、交互图、部署图等,没错,UML设计是C++代码设计之前的必选项(当然对于产品经理们更关注UI,他们更愿意使用Axure),但是这些不是我们所关心的,本节我们要谈的是系统开发完成以后的设计图、文档。        这些内容可以通过UML给出吗?当然可以,但我相信大多数人无法做到这一点,因为在开发过程中大部分的设计早已面目全非,想保持同步的更

2017-01-12 22:45:02 3468

原创 C++基础学习之12 - 测试驱动开发

测试驱动开发,英文全称 Test-Driven Development,简称TDD,是一种不同于传统软件开发流程的新型的开发方法。它要求在编写某个功能的代码之前先编写测试代码,然后只编写使测试通过的功能代码,通过测试来推动整个开发的进行。这有助于编写简洁可用和高质量的代码,并加速开发过程。        测试驱动开发的基本过程如下:1. 快速新增一个测试;2. 运行所有的测试(有时

2017-01-12 22:41:51 736

原创 C++基础学习之11 - 初谈代码风格

什么样的代码格式是正确的?相信这个问题很难回答,每个人都有自己的习惯,作者就自己对于代码风格的理解整理如下:1. 优秀的代码必须足够简洁,用最少的代码实现最多的功能,不冗余;2. 良好的代码风格是易读的,包括良好的命名和一定的注释;3. 良好的代码风格必须是模块化的,功能单一且没有歧义;        我们来看以下一段代码: /** 可选项*/ const int T

2017-01-12 22:39:33 429

原创 C++基础学习之10 - 插件开发

相信有过大型软件开发经验的人都会熟悉 插件开发(Plugin),这是一种轻内核的开发机制,通过独立的插件开发能够将不同的插件功能进行组合,从而实现灵活的即插即用。        目前支持插件功能的软件非常多,从Linux下的 Vim、Emacs、Sublime编辑器,到windows下的PS、3DMax、Maya、AutoCAD,再到 ArcGIS,几乎每个行业的软件都会有插件开发的影子,

2017-01-12 22:34:56 2742 1

原创 C++基础学习之9 - MVC机制

MVC 是指 Model(模型)、View(视图)、Controller(控制器),旨在通过控制器 实现 数据(Model) 和 视图(View)的隔离。        这样做的优点在于能够实现有效的 模块解耦合,对于数据的变化能够通过 控制器 来进行响应和控制,而不需要修改视图。我们来看一个概念解释:1. 模型(Model):数据        模型是整个业务的核心,代表

2017-01-12 22:33:28 1552

原创 C++基础学习之8 - 玩转DLL

在编程中,一个关键的问题就是 代码或模块复用,对于 模块复用 来说,LIB 和 DLL是最好的复用方式。        先来说静态库LIB,LIB库有两种可能:1. 在 Windows下是静态库(对应Linux下的 .a 文件);2. 对应 DLL 的入口或说明文件;        再来说 DLL,动态链接库(dynamic link library),是程序运行时用到的。

2017-01-12 22:31:42 834

原创 C++基础学习之7 - 与C程序对话

C++当初设计该语言的初衷是 “C”扩展,所以C++一般被认为是C的超集,但“这并不意味着C++兼容C语言的所有东西”。C++保留了一部分过程式语言的特点,大部分的C代码可以很轻易地在C++中正确编译,但仍有少数差异,导致某些有效的C代码在C++中无法通过编译。因此,从C到C++,我们要因为这些差异而做出一些改变,我们应当熟悉这些差异,使用原有的丰富的C库为现在的C++工程更好地服务。那么在C++

2017-01-12 22:26:56 666

原创 C++基础学习之6 - STL解构

在C++编程里面,STL 是必不可少的,我们先列出来常用的几种容器:      vector,list,Map,set,deque,queue+ vector        vector是一种动态数组,其内容在内存中是连续存放的,正是由于这种特征,决定了vector 的代表特征:        随机访问速度很快,插入和删除效率较低。        其内存分配 是按照 1、2、4

2017-01-12 22:23:32 784

原创 C++基础学习之5 - 认识C11新特征

C++11可以说是一个里程碑,针对C++本身的诸多问题,提供了优秀的思路和解决方案,作者从其中的几个点来介绍下C++11的几个典型特征。        概括新特性包括:auto类型推断、右值引用、智能指针、lambda表达式,另外还有 类型初始化列表、decltype、模板改进等,不在本节讨论范围内,感兴趣的同学请自行搜索。一. Auto类型推断        在C++11之前,与

2017-01-12 22:20:33 1105

原创 C++基础学习之4 - 改善既有代码的设计

《重构,改善既有代码的设计》 是程序员必须的一本书,让现有的代码更加简洁,更加可靠永远是程序员要追求的目标,本节我们就结合书里的关键点进行说明,希望能够起到引入的效果。        作者从以下几个方面来介绍重构的内容:1. 代码风格        表现为 命名不能够表达实际意义;                    可读性差 或 缺少注释;

2017-01-12 22:17:47 621

原创 C++基础学习之3 - 编译器

编译器(Compiler) 是指将一种语言 翻译为另一种语言的工具,对于C++来讲,是将我们写的代码语言 转换为二进制语言(EXE或者ELF),从而能够在Windows或者Linux下运行。        很多新同学可能对编译器并不敏感,直接用 IDE(VS、Eclipse)编译一下就可以了,没有感觉到编译器的存在,这其实就是一个问题,作者建议对于初学者尽量不要直接就用 IDE,先用 Linu

2017-01-12 22:15:26 787

原创 C++基础学习之2 - 内存对象模型

内存对象模型 是同学们在面试过程中经常会被问到的问题,一堆的 Sizeof 求答案,怎么破?听作者讲完本节,也许你会有个简单的认识,先说对于C++,其内存是如何存放的:        先说说C++的存储区,有4种类型,堆、栈、全局存储区、常量存储区。堆:  通过new来初始化,delete释放,一般是由程序员来创建和管理;栈:  栈 是指临时或局部变量的存放位置,一般由操作系统分配和释

2017-01-12 22:13:51 880

原创 C++基础学习之1 - 指针与引用

指针和引用 是困扰初学者的问题之一,我们知道,指针和引用 都能够指向一个对象(&对该对象进行操作),那么他们之间有什么区别呢?        我们先来看定义:指针:指针是一个特殊的变量,这个变量指向一个内存地址,即对象存储空间的首地址;引用:所指向对象的一个别名,与直接访问对象的方式一致;        ok,看上去有点类似,也有些差别,我们通过代码示例来看:char *p1

2017-01-12 22:11:32 1129

原创 全景拼接

图像和视频缝合 在全景图生成、360°全景相机以及VR全景领域有非常多的应用,常用的图像缝合工具有Microsoft的ICE、PTGui、开源软件Hugin等,基于视频的拼接可以参考VideoStitch、StitcHD (github.com/lukeyeager/StitcHD)以及stitching_with_cuda。        图像缝合的算法步骤可以描述为:Step1.

2017-01-12 13:21:22 10258 5

原创 SLAM系列之1 - ORB SLAM

•  ORB        ORB(Oriented FAST and Rotated BRIEF)是oFAST和rBRIEF的组合,特点在于:a)速度快:通过FAST(featuresfrom accelerated segment test)作为特征检测算子,速度非常快,能达到SIFT算法的100倍;        FAST特征点检测是公认的比较快速的特征点检测方法,其

2017-01-11 21:12:59 1298

原创 运动目标检测(GMM、Code Book、Vibe)

运动目标检测(前景背景分离)被认为是视频分析学习的入门基础,分为以像素为特征的方法和以纹理为特征的方法,以纹理为特征的方法主要参考上节所讲的LBP和SILTP,这里我们重点介绍像素方法,像素方法是最常用也是最直观的方法。        像素方法假设的基础是背景建模,即建立背景像素的模型,符合该模型的像素判断为背景并且作为新的输入对背景进一步更新,不符合该模型的像素点判断为前景(即运动目标),主

2017-01-11 17:49:53 23845 8

原创 目标检测-RCNN系列

•   RCNN        RCNN(Regions with CNN features)是将CNN方法应用到目标检测问题上的一个里程碑,由年轻有为的RBG大神提出,借助CNN良好的特征提取和分类性能,通过RegionProposal方法实现目标检测问题的转化。        算法可以分为四步:        1)候选区域选择        Region Proposal是一类传统的区域提取方

2017-01-11 16:26:12 72373 12

原创 深度学习基础

AI技术研究的兴起,伴随着两种最直观的思维技巧,即遗传算法与神经网络,这是对生物学研究最直观的技术抽象。深度学习的前身就是神经网络,这个80年代灵光乍现的技术,在那一波人工智能的大潮驱使下,带着人们对于未来AI时代的憧憬,迅速蔓延,一时风头无两,和今天深度学习的火热几乎如出一辙。        某乎友的观点给出了这两种技术的鲜明对比,如同麻汁与芝麻酱,换汤不换药,所谓深度在于把二两变成了三斤,

2017-01-11 14:45:18 4429

原创 CNN基础

卷积神经网络(ConvolutionalNeural Networks,简称CNN)提出于20世纪60年代,由Hubel和Wiesel在研究猫脑皮层中用于局部敏感和方向选择的神经元时发现。        CNN是目前深度学习最大的一个流派,其应用优点在于避免了对图像的复杂前期预处理,可以直接处理原始图像。CNN核心在于“卷积”,传统机器学习中LBP、HOG等特征都可以看作是卷积的一种特殊形式,

2017-01-11 14:21:07 2971

原创 角点检测算子(Harris, KLT, SIFT,SUSAN)

角点检测:        角点:最直观的印象就是在水平、竖直两个方向上变化均较大的点,即Ix、Iy都较大 。        边缘:仅在水平、或者仅在竖直方向有较大的变化量,即Ix和Iy只有其一较大。        平坦地区:在水平、竖直方向的变化量均较小,即Ix、Iy都较小。一:Harris角点检测        用 Harris 算法进行检测,有三点不足:(1)不

2017-01-11 13:39:28 11048

原创 ADAS技术概要

先进驾驶辅助系统(Advanced DriverAssistant System),简称ADAS,是智能交通领域的一个大方向,近几年ADAS迅速发展,在车道线检测、前车防撞、疲劳驾驶、紧急壁障、信号灯识别等方面都取得了长足的进步,这也是我们把ADAS单独作为一节来进行阐述的原因。        当然ADAS系统会用到多种传感器,比如激光雷达、深度摄像头等,这里我们仅通过传统的RGB摄像头来

2017-01-11 13:37:43 2613

ICDAR2017数据集说明

ICDAR2017数据集说明,包括数据集分类,相关数据的说明,标注格式等。

2018-09-26

ICCV2017 Person Re-Id

ICCV 2017 相关论文下载,文章共9篇,包含 Cross View 方法、Unsupervised 方法、改进的 Triplet Loss 方法等。

2017-09-06

CVPR2017 Person Re-Id

CVPR 2017 相关论文下载,提供最新的文章链接,2017年12篇相关的论文,从数据集到算法,包括 Triplet改进方法、Re-Ranking等。

2017-09-06

Re-ID Paper

CVPR 2017 相关论文下载,提供最新的文章链接,2017年12篇相关的论文,从数据集到算法,包括 Triplet改进方法、Re-Ranking等。

2017-09-04

TrAdaBoost算法实现

TrAdaBoost算法实现

2017-06-25

YOLO v2配置文档

YOLO v2

2017-06-05

【极市】第15期分享 王蒙蒙-基于计算机视觉的目标跟踪算法概览

目标跟踪算法概览

2017-05-25

TensorFlow安装-Windows

TensorFlow安装-Windows

2017-04-24

TensorFlow技术白皮书

TensorFlow技术白皮书

2017-04-18

网络结构图SSD

SSD网络图

2017-03-31

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除