自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Linear_Luo的专栏

因为理想,所以拼搏;墨迹淡淡,理解方纯。

  • 博客(58)
  • 资源 (7)
  • 收藏
  • 关注

原创 卷积理解与思考

对于具有线性和时不变性的连续时间系统或者离散时间系统,我们在进行信号处理的时候,一个基本的思路就是将原始的时间信号分解成一组基本信号。但问题是我们如何选择一组基本信号,很显然的一点就是我们选择的基本信号要有利于我们后续进行信号分析。为此,产生了两种信号的分解方式:一类是将输入信号分解成复指数(complex exponential)的线性组合,这种方式对应于傅里叶变换(FT);另

2016-08-22 01:05:57 1797 4

原创 站在数学之巅沐浴计算机的阳光

在2016年的第一个月里我看了一些专业书和杂书、学习了一套MIT关于线性代数的教学视频,闲暇之余还看了一些节目,萌发了些许感受,特在此记录一下。其实还有一些其他原因,见此文最后的备注部分。首先解释下这个标题,这个标题的灵感源自一本讲述C++11新特性的书,作者提到了一句“站在C98的峰顶沐浴C++11的阳光”。写书的作者当然已经站在C98之巅了,而我取此标题不免有“标题党”之嫌,但这只是我自己对我未

2016-08-17 11:10:37 2410 1

原创 大数定律理解

概率论中的大数定律都发端于伯努利的工作。下面我们来回顾下这个问题:假设袋中有 aa 个白球,bb 个黑球, p=aa+bp={a \over {a +b}} 。有放回的从袋中抽球 NN 次,记录抽到白球的次数为 XX,我们用 XNX \over N 去估计 pp 。伯努利视图证明的就是:用 XNX \over N 去估计 pp 的确定性——他称为道德确定性。确切的含义是:任意给定两个数 ϵ>0\ep

2016-10-08 20:28:49 7948

转载 MIT牛人解说数学体系

最近在看数学方面的知识,无意中发现了这篇文章,感觉对数学的整体架构讲得挺好的,想要深入理解的话,个人觉得可以看看《古今数学思想》以及相应方向的具体书籍。下面是正文:==============================================在过去的一年中,我一直在数学的海洋中游荡,research进展不多,对于数学世界的阅历算是有了一些长进。为什么要深入数学的世界作为计算机的学生,我

2016-10-08 19:54:47 1604

转载 typedef typename 理解

typedef和typename分开的时候,大家基本没什么问题的,但是当二者连起来用的时候,就有点迷糊了。下面这篇博文的讲解我感觉讲得蛮好,就mark一下了===========C++ typedef typename 作用C++的一些语法让人看着费解,其中就有:typedef typename std::vector<T>::size_type size_type;详见《C++ Primer》(第

2016-10-07 10:37:45 1004

转载 积分图像与积分直方图

最近看文章,出现了integral image概念,发现了这篇文章,下面是正文:   在[1]中,有两个重要的思想:    1级联弱分类器可以组成强分类器,且最终的结果可以媲美甚至于超越很多强的分类器。这也是至今仍然常用的一种分类器框架---EnsembleClassifier。    2为了能够快速实时有效的检测物体,利用pre-compute理念,形成积分图像的模式。到要用到p

2016-10-02 22:29:34 1477

原创 union理解与妙用

最近在看PCL中关于自定义PointT类型的文档,发现其中广泛使用了union,以前学习的时候用不到这个,也就没有留心,借此机会学习下union的使用方法,理解下union的本质。一 struct和union内存结构我们先来简单看下struct的内存结构,如下定义一个结构体:struct student{ char mark; long num; float score;

2016-10-02 12:57:44 4005

转载 THE EVILS OF UNITY BUILDS

Unity builds. I don’t like them.Of all the tools at your disposal to make a build faster, this is the worst. And it’s not just the “hey let’s #include .cpp files” weirdness, but the way that it can

2016-09-29 10:13:38 790

转载 加快C++代码的编译速度方法

C++代码一直以其运行时的高性能高调面对世人, 但是说起编译速度,却只有低调的份了。比如我现在工作的源代码,哪怕使用Incredibuild调动近百台机子,一个完整的build也需要四个小时,恐怖!!!虽然平时开发一般不需要在本地做完整的build,但编译几个相关的工程就够你等上好一段时间的了(老外管这个叫monkey around,相当形象)。想想若干年在一台单核2.8GHZ上工作时的场景 -

2016-09-29 10:09:03 11814 1

原创 #include 理解与思考

关于#include的用法和作用网上大致有如下说法,其实大致思想是相同的:#include 就是复制粘贴xxx到这个位置C++ include本质上就是插入替换语法上,扩展名并没有什么特殊的地方,它只是文件名字符串的一部分,并不具有什么特殊的地位。不管你include啥扩展名都可以,你就是#include < a.txt > 都可以。不过习惯上cpp一般是做函数体实现的,编译的时候每个cpp单

2016-09-29 00:22:37 1238

转载 C++虚函数与纯虚函数的区别

今天在做一道面试题的时候遇到一个纯虚函数的概念,就翻了下书,查资料,对比下虚函数,现在整理一下和大家分享: 什么是虚函数? 那些被virtual关键字修饰的成员函数,就是虚函数。虚函数的作用,用专业术语来解释就是实现多态性(Polymorphism),多态性是将接口与实现进行分离;用形象的语言来解释就是实现以共同的方法,但因个体差异而采用不同的策略。虚函数声明如下:virtual ReturnT

2016-09-28 23:47:41 631

转载 纯虚函数和虚函数的区别

首先:强调一个概念 定义一个函数为虚函数,不代表函数为不被实现的函数。 定义他为虚函数是为了允许用基类的指针来调用子类的这个函数。 定义一个函数为纯虚函数,才代表函数没有被实现。 定义纯虚函数是为了实现一个接口,起到一个规范的作用,规范继承这个类的程序员必须实现这个函数。简介假设我们有下面的类层次:class A{public: virtual void foo() {

2016-09-28 23:43:07 650

原创 PCL1.8之features模块编译预处理PCL_ONLY_CORE_POINT_TYPES

最近要用到PCL,先编译了1.7版本,发现features模块下面的pcl_features_release.lib和pcl_features_debug.lib都接近40M大小;但是后来编译了1.8版本之后,发现这两个文件都是6M多一点。在理论上1.8版本这个模块还多几个.cpp和.hpp,1.8生成的.lib应该要大一些啊,但是事实却相反,不禁引起了我的兴趣,想要一探究竟。   后来发现原来是

2016-09-28 23:35:05 1067

原创 PCL读取PCD文件

#include <iostream>#include <pcl/io/pcd_io.h>#include <pcl/point_types.h>int main(int argc, char ** argv){ pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>); if (p

2016-09-26 22:10:41 3413

转载 k-d tree算法的研究

动机先前写了一篇文章《SIFT算法研究》讲了讲SIFT特征具体是如何检测和描述的,其中也提到了SIFT常见的一个用途就是物体识别,物体识别的过程如下图所示:如上图(a),我们先对待识别的物体的图像进行SIFT特征点的检测和特征点的描述,然后得到了SIFT特征点集合。接下来生成物体目标描述要做的就是对特征点集合进行数据组织,形成一种特殊的表示,其作用是为了加速特征点匹配的过程。所谓的特征

2016-09-26 21:30:03 894

原创 'static_cast': cannot convert from 'double' to 'pcl::visualization::LookUpTableRepresentationPropert

在win10上用vs2013编译PCL1.8的时候,编译到visualization模块时,如下语句会报错。if (!pcl::visualization::getColormapLUT (static_cast<LookUpTableRepresentationProperties>(value), table)) break;解决方案: 将所有的static_cast<LookUpTa

2016-09-25 11:13:02 2314 3

原创 CMake构建PCL项目

当我们下载、编译并安装好PCL之后,我们来看看如何利用CMake来构建依赖PCL的项目。最关键的一点是CMakeLists.txt文件的编写,例子如下:cmake_minimum_required(VERSION 2.6 FATAL_ERROR)project(HELLO_WORLD)#设置PCL_DIR这个变量,你安装PCL的cmake文件夹路径。或者直接设置为环境变量应该也是可以的set(P

2016-09-24 15:24:48 5935 2

翻译 PCL-基本结构PointCloud

PCL中的基本数据结构是PointCloud,PointCloud是一个C++类,包含了如下数据域:width (int) 用点云数据集中的点数初始化width,width其实有两个含义: (1)对于无组织或者说无结构的点云来说,width就是指点云中点的个数。 (2) 对于有结构的点云来说,width是指点云数据集一行上点的个数。有结构的点云可以理解成这个点云像image(或者说是一个矩阵

2016-09-24 06:48:32 20329

转载 OpenMP并行程序设计(一)

OpenMP是一个支持共享存储并行设计的库,特别适宜多核CPU上的并行程序设计。今天在双核CPU机器上试了一下OpenMP并行程序设计,发现效率方面超出想象,因此写出来分享给大家。   在VC8.0中项目的属性对话框中,左边框里的“配置属性”下的“C/C++”下的“语言”页里,将OpenMP支持改为“是/(OpenMP)”就可以支持OpenMP了。在其他VS中设置也是相同的。   先看一个简单的

2016-09-23 22:42:03 2093

原创 认识OpenMP优点

进入多核时代后,必须使用多线程编写程序才能让各个 CPU 核得到利用。在单核时代,通常使用操作系统提供的 API 来创建线程,然而,在多核系统中,情况发生了很大的变化, 如果仍然使用操作系统 API 来创建线程会遇到一些问题。具体来说,有以下三个问题:#1 CPU 核数扩展性问题  多核编程需要考虑程序性能随 CPU 核数的扩展性,即硬件升级到更多核后,能够丌修改程序就让程序性能增长,这要求程序中创

2016-09-23 22:19:14 2542

转载 超像素分割技术发展情况梳理(Superpixel Segmentation)

一. 基于图论的方法(Graph-basedalgorithms):1.Normalized cuts, 2000.Jianbo Shi and Jitendra Malik.Normalized cuts and image segmentation. IEEE Transactions onPattern Analysis and Machine Intelligence

2016-09-19 19:25:52 3860

原创 超像素(Superpixel)理解

最近看点云处理的文章,有些文章中提到了superpixel这个概念,查了一些资料,对其理解记录如下:超像素就是把一幅原本是像素级(pixel-level)的图,划分成区域级(district-level)的图。可以将其看做是对基本信息进行的抽象。超像素分割属于图像分割(image segmentation),再细化应该属于过分割(over segmentation)。比如我们对一幅图像进行超像

2016-09-19 19:21:33 30363 7

原创 ICP算法理解

1 经典ICP  ICP的目的很简单,就是求解两堆点云之间的变换关系。怎么做呢?思路很自然,既然不知道R和t(针对刚体运动),那我们就假设为未知量呗,然后通过某些方法求解。下面我们来看看具体怎么求的~没办法,要把问题描述清楚,数学是少不了的了。假设有两堆点云,分别记为两个集合X=x1,x2,...,xmX=x_1,x_2,...,x_m和Y=y1,y2,...,ymY=y_1,y_2,...,y_m

2016-09-18 17:15:13 20443 4

转载 Kinect与KinectFusion重建

有关Kinect应用开发正日新月异,稍有懈怠就会被远远甩在身后。不过,Kinect目前带给我们的仍只是一个充满无限可能的远景,正如App store能吸引年仅11岁的开发者一样,Kinect未来将对“全民开发者”产生重要推动作用。另一方面,一些基于Kinect的应用研究仍颇复杂,主要是因为一些关键环节的滞后而导致的。2011年的siggraph talks上,KinectFusion首次展示了实时、

2016-09-17 15:39:36 4065 1

原创 DIP关键算法-去噪算法评价标准

去噪算法是图像处理里面一个基础的问题,对于去噪算法的好坏一个直接的判断就是视觉上的感知,但是这只能作为一个定性的判断,在实际的应用中,我们还需要进行定量分析,进而做出最终的判断。在实际中往往采用原始图像IoriginI_{origin}和去噪图像IdenoiseI_{denoise}之间的残差图像Iresidual=Iorigin−IdenoiseI_{residual}=I_{origin}-I_

2016-09-15 17:57:55 4235

原创 格拉姆-斯密特过程

在线性代数中,格拉姆-斯密特过程应该是个比较基础的东西,一直都只是有个模糊的印象,不知道具体的操作,其实我以为这是个高大上的算法,没想到这个算法是这么地亲民。   格拉姆-斯密特过程是实现正交化的一个方法:给定矩阵AA,若AA中各列向量线性无关,则AA可以产生一个正交矩阵QQ,可以简单地将QQ理解为各列向量之间互相垂直的矩阵。下面在二维平面上对这个过程进行具体的描述。1 二维情形假设我们有两个线性

2016-09-14 15:46:15 3910 1

原创 DIP关键算法-自适应直方图均衡化

1 自适应直方图均衡化(AHE)  自适应直方图均衡化(AHE)用来提升图像的对比度的一种计算机图像处理技术。和普通的直方图均衡算法不同,AHE算法通过计算图像的局部直方图,然后重新分布亮度来来改变图像对比度。因此,该算法更适合于改进图像的局部对比度以及获得更多的图像细节。但是,AHE有过度放大图像中相同区域的噪音的问题,另外一种自适应的直方图均衡算法即限制对比度直方图均衡(CLAHE)算法能有限地

2016-09-13 17:04:23 7574

原创 DIP关键算法-直方图均衡化

直方图均衡化中均衡的含义指图像的直方图是平直的,即各灰度级具有相同的出现频数,而均衡化则是将原图像的直方图通过变换函数修正为均匀的直方图,使图像看起来更清晰。即直方图均衡化的本质就是找到合理的映射,将原图像中的亮度重新调整,以使亮度的分配更加均匀。matlab实现如下,结合代码来看思路更加清晰。  %直方图均衡化 I = imread('rice.png'); [height,width]

2016-09-13 09:27:53 1830

原创 VCG笔记-mesh元素的创建/删除

1 创建mesh元素  我们在创建简单的网格模型或者为已存在的网格模型添加元素的时候,我们应该使用AddVertices和AddFaces这两个函数,新的元素被添加到网格模型的尾部,函数会返回指向第一个新分配(或者说是添加)的第一个元素的指针。向vector添加元素会引起存储空间的重新分配(reallocation),因此可能会出现无效的指针指向网格元素。而上述的AddVertices和AddFac

2016-09-11 10:29:40 2819

原创 VCG笔记-如何定义mesh

VCG lib提供了很多对mesh进行编码的方式,最常见的就是由一个顶点(vertices )集合和一个三角形(triangles )集合构成,(即三角形构成三角形网格,四面体构成四面体网格)。如下面这行代码就是VCG中定义mesh类型的一个例子:class MyMesh : public vcg::tri::TriMesh< std::vector<MyVertex>, std::vector<M

2016-09-08 10:44:46 3966

原创 VCG简介与安装

1 学习背景  最近在需要用到meshlab中的网格简化与平滑功能并要嵌到自己的项目中,虽然meshlab提供的meshlabserver插件可以用命令行的方式实现,但是在执行的时候会弹出窗口,这样很不友好,于是开始研究meshlab的源码,最后发现meshlab中的简化和平滑功能原来是依赖于VCG这个库的,并且VCG是可以单独使用的,于是就开始学习VCG,然后封装成项目需要的接口。2 VCG简介

2016-09-07 17:58:53 5839

原创 meshlabserver+mlx 模型自动化处理

1 介绍meshlabserver是meshlab中一个很有用的插件,其以命令行的方式运行,基本的语法格式为:meshlabserver arg1 arg2 ...其中可用的参数(args)如下:-i [filename…]   mesh(s) that has to be loaded-o [filename…]  mesh(s) where to write the result(s)-s

2016-09-01 09:44:19 6692 2

原创 qmake概念理解(二)

操作符qmake提供了很多的可供使用的操作符,但是其中的一些需要谨慎地使用,因为它们也许会比你期待的改变的更多。“=”操作符这个操作符简单分配一个值给一个变量。使用方法如下:TARGET = myapp这将会设置TARGET变量为myapp。这将会删除原来对TARGET的任何设置。“+=”操作符这个操作符将会向一个变量的值的列表中添加一个值。使用方法如下:DEFINES += QT_DLL这将会

2016-08-31 16:42:21 1787

原创 qmake概念理解(一)

qmake介绍  qmake是用来为不同的平台的开发项目创建makefile的Trolltech开发一个易于使用的工具。qmake简化了makefile的生成,所以为了创建一个makefile只需要一个只有几行信息的文件。qmake可以供任何一个软件项目使用,而不用管它是不是用Qt写的,尽管它包含了为支持Qt开发所拥有的额外的特征。qmake基于一个项目文件这样的信息来生成makefile。项目文件

2016-08-31 16:27:00 3322

原创 QMAKESPEC理解与使用

qmake生成的vs工程与环境变量中的 QMAKESPEC相关,有两种使用方法:  1.默认情况下,即环境变量QMAKESPEC为你装的qt for vs的版本,默认生成的为该版本的vs工程,如,你装的是QT for vs2010,那么环境变量QMAKESPEC=win32-msvc2010,默认情况下生成的是vc2010的工程。   (1)当你的xx.pro的TEMPLATE = subdirs时

2016-08-31 15:56:11 6996 1

原创 meshlab1.3.3 + QT5.7 编译

1 编译环境visual studio 2013qt-opensource-windows-x86-msvc2013_64-5.7.0qt-vs-addin-1.2.52 源代码(1)下载源代码meshlab v1.3.3下载地址:https://sourceforge.net/projects/meshlab/files/meshlab/MeshLab%20v1.3.3/ (2)解压过程

2016-08-31 11:26:41 5277 10

原创 视差和深度分析与计算

我们先来看opencv给出的一个教程[http://docs.opencv.org/3.1.0/dd/d53/tutorial_py_depthmap.html]里面对概念的说明。先看下面这张图:   通过这张图,我们得出视差的计算表达式为: disparity=x−x′=BFZdisparity=x-x^{'}=\frac{BF}{Z}   其中xx和x′x^{'}对应的是场景中的3D点

2016-08-27 14:16:26 17644

转载 计算机视觉开源项目

特征提取SURF特征: http://www.vision.ee.ethz.ch/software/index.de.html(当然这只是其中之一)LBP特征(一种纹理特征):http://www.comp.hkbu.edu.hk/~icpr06/tutorials/Pietikainen.htmlFast Corner Detection(OpenCV中的Fast算法):FASTCorner Detection -- Edward Rosten机器视觉A simple object de

2016-08-27 13:43:57 6235 1

原创 cin/getline/gets

cin是C++编程语言中的标准输入流对象,即istream类的对象。cin主 要用于从标准输入读取数据,这里的标准输入,指的是终端的键盘。此外,cout是流的对象,即ostream类的对象,cerr是标准错误输出流的对象, 也是ostream 类的对象。这里的标准输出指的是终端键盘,标准错误输出指的是终端的屏幕。在理解cin功能时,不得不提标准输 入缓冲区。当我们从键盘输入字符串的时候需要敲一下回车键才能够将这个字符串送入到缓冲区中,那么敲入的这个回车键(\r)会被转换为一个换行符\n,这 个换行符\n

2016-08-25 22:39:27 1323

原创 计算机编程词汇

application 应用程式 应用、应用程序application framework 应用程式框架、应用框架 应用程序框架architecture 架构、系统架构 体系结构argument 引数(传给函式的值)。叁见 parameter 叁数、实质叁数、实叁、自变量array 阵列 数组arrow operator arrow(箭头)运算子 箭头操作符assembly

2016-08-25 21:49:48 4286

MeshLabSrc_v133 + msvc2013可直接编译源码

经过修改的meshlab v1.3.3版本,可以在vs2013+QT5.7环境下直接编译,编译教程可以参考http://blog.csdn.net/linear_luo/article/details/52383243

2016-09-01

谷歌C/C++编程规范

完整的google使用的C/C++编程规范

2016-08-23

C++程序设计(第四版)

C++程序设计的最新版本,包含了C11的相关知识

2016-08-22

CMake构建OpenGL项目

利用CMake来构建依赖glfw、glew、glm以及opengl核心库等库的OpenGL项目

2016-08-20

matlab中将txt文件转换为mat格式

在matlab中将txt文件转换为mat格式文件

2016-08-18

空空如也

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

TA关注的人

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