自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Bryan_Zhang的专栏

白发须知勤学早

  • 博客(107)
  • 资源 (12)
  • 收藏
  • 关注

转载 Cuda 学习教程六:执行模型

Cuda 学习教程六:执行模型今天看到一篇讲解CUDA模型的文章,很不错,转载记录一下:CUDA编程4-执行模型(上)

2020-10-30 15:27:18 315

原创 C++ 11 新特性(更新)

先Mark一下,后面逐步的Code 实践一遍转自:C++11常用特性的使用经验总结

2020-02-23 22:18:14 278

原创 OpenCL-学习教程(二)

经过两天的摸爬滚打,基本上了解了opencl的并行处理的原理和内部调用机制,也上手写代码调试了几个工程。总体感觉opencl会比cuda比起来更复杂一些,但不得不说,平台的兼容性更好,而且调试应该方便些(虽然我的VS调试配置环境始终有问题)。 opencl线程调度方面,注意一下几个方面:kernel:是指一个用opencl c语言编写的、代表一个单一执行实例的代码单元...

2019-11-14 13:55:37 996

原创 OpenCL-学习教程(一)

最近因项目需要跨平台做算法的加速优化,需要使用opencl来做,所以准备将opencl的东西学习一遍,学习的目的在于使用,达到通用的水平,暂时不做实现硬件的最大化水平。之前做过一些Nivida的Cuda开发,现在做opencl的开发虽然有些差别,但整体变换不大,硬件层逻辑相同,主机代码环境配置模块有所不同。先放一张opencl处理的流程图: 从流程上我们可以看出,主要处理...

2019-11-08 09:46:58 1748

原创 【CUDA】grid、block、thread的关系及thread索引的计算

好久没有搞CUDA-GPU编程了,今天重新看了一下,找到一瓶文章,关于线程分配和索引方面的东西讲解的很清楚,就转载过来,留足备用了 :)【CUDA】grid、block、thread的关系及thread索引的计算...

2019-07-02 15:39:59 421

原创 使用C++ 标准库中的中的Map对自定义的结构体数据集进行排序+去重复

今天写了一个三维网格保存ply格式的小工具函数,因为ply类型是顶点按索引排列的方式,不同于STL类型的按面片索引的方式。因此,准备借助于C++中的Map类型,来进行顶点的去重复和排序。因为对Map结构的不了解,竟然花了一天的时间去实现,中间走了不少歪路,也借鉴了不少其他的方法,最终实现了自己想要的结果。纸上得来终觉浅,绝知此事要躬行,很有必要记录一下,以此为戒。首先定义STL类型的读取结构:...

2019-06-12 15:05:52 922

转载 RGB 常用颜色对照表

转自:RGB常用颜色对照表

2019-05-17 10:04:05 6346

转载 C++单元测试框架Google Test系列

随着开发工程的深入,代码量也逐渐变大,“打地鼠”的问题也逐渐暴露处理,经常这里解决一个Bug,另外一个地方有一个新的Bug,因此在考虑做项目的单元测试,接下来会仔细整理单元测试的工程。先Mark一篇博客:玩转Google开源C++单元测试框架Google Test系列(gtest)(总)...

2019-04-24 11:33:06 181

原创 并行计算——C++ AMP(2)

以下是在Visual Studio 2013下测试的AMP加速代码:转自:Wikipedia#include <amp.h> // C++ AMP 头文件#include <iostream>using namespace concurrency; //C++ AMP 命名空间const int size = 5; // 定义数组大小void TestCP...

2018-12-22 14:40:41 483

原创 并行计算——C++ AMP(1)

      之前做算法的并行优化加速时,学习过Nvida的CUDA框架,也了解过一些AMD的OpenCL的通用加速框架。最近发现了微软研究人员2011年开发的直接支持C++编程语言的C++AMP框架,简单易用,直接面向C++编程。抱着技多不压身的态度,准备系统的学习一下。以下是C++ AMP 的简要概述,转自于:C++ AMP:用Visual C++加速大规模并行计算》——1.3 C++ ...

2018-12-22 14:27:26 2126

转载 机器学习-各种距离的定义

转自:https://www.cnblogs.com/ronny/p/4080442.html1. 欧氏距离欧氏距离是最常见的两点之间或多点之间的距离表示法,又称之为欧几里得度量,它定义于欧几里得空间中,如点 x=(x1,⋯,xn)x=(x1,⋯,xn) 和y=(y2,⋯,yn)y=(y2,⋯,yn)之间的距离为: d(x,y)=(x1–y1)2+(x2−y2)2+⋯+(xn−yn...

2018-10-26 15:06:55 6648

原创 C++调试之创建Dump文件和调试Dump文件

如何在发布后程序中捕获程序的崩溃和异常往往是比较麻烦的事情,一般采用日志记录的方法来记录程序运行的每个流程,但是通常为了程序运行的性能,日志记录的方法只是记录程序运行的每个主要的处理流程,不能进行具体详细的记录,比如for 循环中的崩溃记录。C++语言中调用window API函数CreateFile()和MiniDumpWriteDump(),可以方便的记录程序崩溃时的Dump信息,并保持dum...

2018-08-28 10:22:01 2326

转载 图像处理-海森矩阵(Hessian Matrix)及实例(图像增强)

【fishing-pan:https://blog.csdn.net/u013921430转载请注明出处】前言       Hessian Matrix(海森矩阵)在图像处理中有广泛的应用,比如边缘检测、特征点检测等。而海森矩阵本身也包含了大量的数学知识,例如泰勒展开、多元函数求导、矩阵、特征值等。写这篇博客的目的,就是想从原理和实现上讲一讲Hessian Matrix,肯定有不足的地方,希望大家...

2018-07-12 17:49:37 17219

转载 图像卷积与滤波

转载:图像卷积与滤波的一些知识点

2018-07-12 11:01:50 554

转载 C++ 内存模型

待续

2018-07-02 22:35:22 207

原创 vs 2013 "转到定义" 跳到“查看所有引用”导致 匹配项过多 的问题

今天生成了一个开源工程后,需要用VS2013编译,遇到了比较麻烦的两个小问题:1. VS2013 一个解决方案下包含多个项目时,多个项目之间如果存在非常多的耦合关系,会导致VS界面的跳转和查看变得非常卡顿,而且再次卸载其他的工程时也会变得很卡,经常卡死。因此,建议一个解决方案下的工程数目不要超过100个,避免卡死崩溃 :(2. 在新打开的一个包含比较多工程的的解决方案中,再次添加一个新的工

2018-04-17 14:58:59 3147

转载 pip的安装,更新,卸载模块以及使用方法 python

转自:点击打开链接在python的学习过程中,肯定会遇到很多安装模块的地方,可以使用easy_install安装,但是easy_install相对于pip而言,最大的缺陷就是它所安装的模块是不能够卸载的,其他功能是和pip一样的。下面介绍一下pip的安装:安装我总结了两个方法 1 通过下载安装文件来安装 2 通过easy_install安装1 下载pip安装包 https://pypi.pytho...

2018-04-07 22:14:07 1767

转载 c++ 多态、覆盖、重载的综述

转自:点击打开链接,代码部分做部分修改;1、多态: 在基类中定义了一个虚拟函数,然后在派生类中又定义一个同名,同参数表的函数,这就是多态。多态是这3种情况中唯一采用动态绑定技术的一种情况。也就是说,通过一个基类指针来操作对象,如果对象是基类对象,就会调用基类中的那个函数,如果对象实际是派生类对象,就会调用派声类中的那个函数,调用哪个函数并不由函数的参数表决定,而是由函数的实际类型决定。一个操作随着...

2018-03-18 12:10:35 223

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

转载:虚函数和纯虚函的区别虚函数的属性:1. 定义一个函数为虚函数,不代表函数为不被实现的函数。2. 定义为虚函数是为了允许用基类的指针来调用子类的这个函数。3. 当想要在基类中抽象出一个方法,且该类被继承类而不能被实例化时。4. 基类的方法必须在派生类中被实现时。5. 多个对象具有公共的抽象属性,但却有不同的实现要求时,实现多态。

2018-03-18 11:48:29 441

原创 关于VS调试的几个小问题:Edit and Continue(ENC)

1.VS中的“Edit and Continue”(ENC)功能,即在调试的过程中,修改了局部代码,然后继续调试,即时编译(修改后的代码)并调试出结果,而无需重新退出调试线程,再次编译。在VS2013前的所有VS版本(VS2005, VS2008,VS2010,VS2012)中,不支持ENC功能,VS2013中只支持Debug-x32编译平台下ENC功能,而不支持Debug-x64平台;VS2

2018-03-15 21:29:37 1950

转载 #ifdef __cplusplus extern "C" { #endif 的细节原理

原文转载:点击打开链接#ifdef __cplusplus extern "C" { #endif 的解释1、在好多程序中我们会遇到下面代码段#ifdef __cplusplus        extern "C" {        #endif//c语法代码段#ifdef __cplusplus        }      

2018-02-02 20:20:19 471

转载 c++ 设计模式1:单件模式

单件模式应该是所有设计模式中最简单的一个了,但是如果使用不当会出现很多问题,下面我们就分析一下单件模式作用:保证一个class只有一个实体(instance),并为它提供一个全局唯一的访问点 适用性:1、对于一个类(对象),如果它比较大(占用的系统资源非常多),而且这些资源可以被全局共享,则可以设计为singleton模式。2、对于一个类,需要对实例进行计数。可以在In

2018-01-15 15:11:00 223

转载 Visual C++线程同步技术剖析:临界区,时间,信号量,互斥量

详情请参考:线程同步技术

2018-01-04 11:46:09 252

转载 曲率-通俗讲解

怎么说它有多弯?  曲線與曲面的特性在其彎曲。在數學上,我們不似要說它們是彎曲的,而且還得說它們彎曲到什麼程度。衡量彎曲的程度,在數學上叫做曲率。我們先談小面曲線的曲率。先說直線,它到處都平直不彎曲,所以曲率到處都是 0。再看圓,一個圓的彎曲程度到處都一樣,所以曲率是個常數;但大的圓比小的圓平直些,所以大的圓的曲率要較小的來得小。若大

2017-10-24 15:13:54 33641

原创 CUDA 同步函数

这里主要区别三个同步函数:cudaStreamSynchronize、CudaDeviceSynchronize 和 cudaThreadSynchronize。在文档中,这三个函数叫做barriers,只有满足一定的条件后,才能通过barriers向后执行。三者的区别如下: cudaDeviceSynchronize():该方法将停止CPU端线程的执行,直到GPU端完成之前CUDA的任务,包

2017-09-12 14:54:57 5597

转载 C++ 多态

参考: C++ 多态C++ 多态定义当类之间存在层次结构,并且类之间是通过继承关联时,可以有多个不同的类,都带有同一个名称但具有不同实现的函数,函数的参数甚至可以是相同的,类的多态通过虚函数实现。虚函数虚函数 是在基类中使用关键字 virtual 声明的函数。在派生类中重新定义基类中定义的虚函数时,会告诉编译器不要静态链接到该函数。 我们想要的是在程序中任意点可以根据所调用的对象类型来选择调用的函

2017-08-08 23:39:21 1098

原创 Cuda 学习教程:Cuda 程序初始化

Cuda程序初始化目前,cuda里面没有对设备的初始化函数InitDevice(),只能每次调用的api函数的时候,加载设备的上下文,自动进行初始化,这将带来问题:First函数调用的时候,需要自动初始化设备,因此耗时过长无法分析第一个api函数的耗时处理办法在程序前加设置初始化函数: cudaFree(0),后面程序就不会再次初始化,cudamalloc()也将很快;一次初始化后,程序

2017-08-04 11:55:24 3216

转载 C++模板

转自:C++模板一C++模板  模板是C++支持参数化多态的工具,使用模板可以使用户为类或者函数声明一种一般模式,使得类中的某些数据成员或者成员函数的参数、返回值取得任意类型。  模板是一种对类型进行参数化的工具;  通常有两种形式:函数模板和类模板;  函数模板针对仅参数类型不同的函数;  类模板针对仅数据成员和成员函数类型不同的类。  使

2017-07-31 16:01:20 207

原创 Cuda 学习教程四:GPU和Cuda逻辑关系

工欲善其事必先利其器,再次补充下GPU和Cuda之间的逻辑对应关系:每个SM中有大量的寄存器资源,可以养活成千上万的线程。SM中另外一个重要资源是Shared Memory,没错,它正是软件抽象中Shared Memory的对应物。到这里,SM在软件抽象里的对应也呼之欲出了,没错,正是Block。我们不妨先摆出这个对应:Block <-> SMThread执行 <-&g...

2017-07-28 15:13:28 1686

原创 Cuda 学习教程(五):GPU架构-Sp,sm,thread,block,grid,warp

SP(streaming Process),SM(streaming multiprocessor)是硬件(GPU hardware)概念。而thread,block,grid,warp是软件上的(CUDA)概念。需要指出,每个SM包含的SP数量依据GPU架构而不同,Fermi架构GF100是32个,GF10X是48个,Kepler架构都是192个,Maxwell都是128个,Gefo

2017-07-28 14:58:45 8981 2

原创 Cuda 学习教程(四):Cuda程序的优化

本文大多数内容来源于《GPU高性能运算之CUDA》-张舒1. 线程和线程块的分配如果线程块过大,线程过少,而每个SM中包括两个block,这样会导致每个SM中的线程过少,即warp(每个warp包括32个线程)过少,这样会造成延时;另外,每个block块中的线程数最好是32的倍数,这样每个warp机会分配到一个SM中计算,从而隐藏延时。2.  优化策略为了在最佳的时

2017-07-27 14:41:56 492

原创 Cuda 学习教程三:CUDA硬件架构

本文大多数内容来源于《GPU高性能运算之CUDA》-张舒GPU内存GPU的内存结构和CPU类似,但也存在一些区别,GPU的内存中可读写的有:寄存器(registers)、Local memory、共享内存(shared memory)和全局内存(global memory),只读的有:常量内存(constant memory)和纹理内存(texture memory)。1. 共

2017-07-27 14:03:40 871

原创 Cuda 学习教程二:GeForce GTX 950M 显卡参数

CUDA Device Query (Runtime API) version (CUDART static linking)Detected 1 CUDA Capable device(s)Device 0: "GeForce GTX 950M"  CUDA Driver Version / Runtime Version         8.0 / 8.0

2017-07-27 09:56:08 9598

原创 VS 优化C++代码几点注意事项

1.VS Release和Debug版本对程序的处理机制不同,特比是对变量的初始化,需要格外注意,可以参考博客:Debug与Release版本的区别详解2.C++ 代码中使用openmp并行运算:omp_set_num_threads(8);#pragma omp parallel for schedule(static,1)  for() {};需要注意:1) 将VS

2017-07-19 15:45:27 4108

转载 图像卷积与滤波的一些知识点

一、线性滤波与卷积的基本概念线性滤波可以说是图像处理最基本的方法,它可以允许我们对图像进行处理,产生很多不同的效果。做法很简单。首先,我们有一个二维的滤波器矩阵(有个高大上的名字叫卷积核)和一个要处理的二维图像。然后,对于图像的每一个像素点,计算它的邻域像素和滤波器矩阵的对应元素的乘积,然后加起来,作为该像素位置的值。这样就完成了滤波过程。对图像和滤波矩阵进行逐个元素相乘再

2017-06-08 11:39:51 580

原创 方差、协方差、马氏距离-总结

最近在做3D点云配准,遇到精度上的瓶颈,考虑到可能需要从细节方面进行突破。基于典型的ICP算法,在每次迭代计算两组点云数据之间的欧氏距离,并作为最终收敛阈值的条件,总感觉有些不妥,所以就考虑用概率统计里面的马氏距离来替换欧式距离,不知效果如何,还在验证中。如果朋友也在做这方面的研究,欢迎深入讨论~下面是统计学数据分析中,几个常用的名词,在前人的基础上,我再次做些总结和修改:方差:很

2017-06-05 14:39:44 3916

转载 贝叶斯定理

1、贝叶斯定理每次提到贝叶斯定理,我心中的崇敬之情都油然而生,倒不是因为这个定理多高深,而是因为它特别有用。这个定理解决了现实生活里经常遇到的问题:已知某条件概率,如何得到两个事件交换后的概率,也就是在已知P(A|B)的情况下如何求得P(B|A)。这里先解释什么是条件概率:      表示事件B已经发生的前提下,事件A发生的概率,叫做事件B发生下事件A的条件概率。其基本求解公式为:

2017-04-20 15:38:37 605

转载 OpenMP学习笔记<一>

##并行程序设计思路 并行程序设计和串行的稍微不同, 大概经历下面四个阶段: 划分: 将计算分解成尽可能多的小任务, 可以按处理对象数据进行域分解, 也可以按计算任务进行功能分解. 这两种分解要做到数据集和计算集不相交. 通信: 划分产生的任务, 一般不能完全独立执行, 需要进行数据通信 组合: 根据任务的局部性, 将小任务组合成更大的任务 映射: 将组合后的多个任务分配到多个处理器上, 并期

2017-03-01 13:46:26 440

转载 MATLAB 超定方程组 最小二乘法

根据解的存在情况,线性方程可以分为:有唯一解的恰定方程组, 解不存在的超定方程组, 有无穷多解的欠定方程组。  对于方程组Ax=b,A为n×m矩阵,如果A列满秩,且n>m。则方程组没有精确解,此时称方程组为超定方程组。线性超定方程组经常遇到的问题是数 据的曲线拟合。对于超定方程,在MATLAB中,利用左除命令(x=A\b)来寻求它的最小二乘解;还可以用广义逆来求

2016-12-01 19:51:51 40792 1

转载 SVD分解(奇异值分解)求旋转矩阵

参考文献:http://igl.ethz.ch/projects/ARAP/svd_rot.pdf一 问题描述假设P={p1,p2,...,pn}和Q={q1,q2,...,qn}是两组Rd空间中的对应点集,现在想要根据这个两个点集的数据来计算出它们之间的刚性转置信息,可以知道这其实是一个最小二乘求优问题,问题可以用如下计算式描述:其中wi>0,是点集中每个

2016-11-18 10:19:31 28228 13

黒克拉矩阵求摄像机标定外参

摄像机标定中,用黑克拉矩阵求外参,测量精度达到毫米级。

2015-10-08

马尔科夫问题

马尔科夫问题的Matlab实现,一个很好的例子,方便理解马尔科夫问题。

2015-10-08

哈希校验(SHA)

哈希校验,完成单片机传输时的数据校验,是目前使用范围很广的方法。

2015-10-08

循环冗长校验(CRC)

循环冗长校验(CRC),在单片机进行数据传输时进行数据的校验。

2015-10-08

BP算法(Matlab)

BP算法在Matlab中的实现,方便神经网络的学习,调试可运行。

2015-10-08

ZEMAX2008破解版(含破解方法和教程)

ZEMAX2008破解版,附带含破解方法和相关学习教程,亲测可用,适合光学设计工作者使用。

2015-08-28

基于Kinect的openNI开发包

基于Kinect的openNI开发包,直接安装可用,适合学习Kinect开发的的使用

2015-07-28

BP神经网络算法

在matlab中实现BP(神经网络),包含实际的例子和训练参数,详细的注释,很适合初学者。

2015-07-28

在C++中实现文本编辑

功能:输入一页文字,程序可以统计出文字、数字、空格的个数。 静态存储一页文章,每行最多不超过80个字符,共N行。

2015-06-18

matlab中的角点提取

实现在matlab中,对棋盘格的角点提取

2015-01-16

图像相减的MATLAB 仿真及光栅滤波法

图像相减的MATLAB 仿真及光栅滤波法相册

2014-12-28

图像相减的MATLAB 仿真及光栅滤波法实验实现

图像相减的MATLAB 仿真及光栅滤波法实验实现

2014-12-28

空空如也

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

TA关注的人

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