自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

DreamerZhang的专栏

积跬步至千里

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

原创 GPU设备架构全面解析(持续更新ing)

作为一个7年的GPU开发者,随着加速算法应用的普及以及应用GPU设备的增多,各种设备结构(比如Kepler Maxwell Pascal)和GPU系列混入脑中,经常记不住,希望用这篇博客记录下各个设备架构的特性和最新功能,当然这并不是包含所有的GPU设备,只是笔者经常接触到的或者买不起的又想用的(终究是贫穷)。目录一、GPU设备架构和系列产品二、几个卡相关对比(总览)三、K80计算卡架构及特性四、P100计算卡架构及特性五、V100计算卡架构及特性一、GP...

2021-01-21 15:23:48 9

原创 Vs下开始运行(不调试)和开始运行差别

启动程序时,调用子函数出现内部测试时间和外部测试时间不一样,找了好久才发现,启动方式居然是调试(虽然是release x64下),这肯定会耗时呀,,,,无语...

2020-03-31 11:08:53 239

原创 深度学习入门(一)安装TensorFlow的GPU版本

安装软件:VS2015 CUDA9.0 Anaconda3 TensorFlow-GPU 1.10.0一:注意问题1、选择合适的Python版本,工具Anaconda3自带的Python版本是3.7.4,(网上说的好多包没有3.7的,还是选择3.6比较稳妥)2、根据CUDA版本确定Cudnn的版本(我下载的库版本是cudnn-9.0-windows10-x64-v7.6...

2020-02-14 15:08:03 357

原创 C++常成员变量、静态变量、常成员函数初始化及定义

1、static定义的静态变量不属于某个具体类对象,它是属于类的的,只能在类的内部声明,在类外定义;即在C++中,static静态成员变量不能在类的内部初始化;2、C++中,const成员变量也不能在类定义处初始化,只能通过构造函数初始化列表进行,并且必须有构造函数。 【const数据成员只在某个对象生存期内是常量,而对于整个类而言却是可变的。因为类可以创建多个对象,不同的对象其con...

2019-10-14 23:00:47 357

原创 C++链表插入删除遍历实现

本文通过C++实现C++单链表相关操作:初始化、插入、删除、打印等操作。#pragma once#include <iostream>//定义节点typedef struct Node { int value; Node* next;};typedef Node* pNode;class CListTest{ public: CListTest()...

2019-10-14 22:18:46 331

原创 OpenCV4-入门学习(二)图像滤波

OpenCV图像滤波(也可称为模糊、平滑)实际是模板与图像卷积的过程,主要分为:1、线性滤波 方框滤波:模糊 均值滤波:模糊 高斯滤波:(广泛应用实际图像预处理)平滑处理、主要处理高斯噪声,降低图像的尖锐变化。无论在空间域还是频率域都是有效的低通滤波器。2、非线性滤波 中值滤波:去除椒盐噪声 双边滤波:包边去燥,可以理解为高斯滤波的升级版,在去燥...

2019-10-08 22:06:11 347

原创 C++类所占空间总结

1、一个空类所占字节为1:class Stu2{};2、类所占空间只包含变量,不包括普通函数;3、虚函数占8个字节(64位系统中),因为有指向虚函数的指针;4、类所占字节应满足内存对齐原则;5、静态变量或者静态函数不占类内存空间;原则:C++中,每个类对象的所占用的存储空间,只是该数据部分所占的存储空间,而不包括函数所占的存储空间。同一个类的多个对象共享函数代码。cla...

2019-10-08 21:03:34 141

原创 C++命名空间namespace的使用

C++ 除了使用标准命名空间 using namespace std,还可以使用自己命名的空间,其目的主要是限制变量或者函数的使用范围。在实际开发中,有时多个人难免会命名相同的函数名字,为了明确该函数使用范围,引进命名空间。其特性主要如下:1-命名空间将全局作用域分成不同的部分, 2-不同命名空间中的标识符可以同名而不会发生冲突 3-命名空间可以发生嵌套 4-全局作用域...

2019-10-08 20:41:02 75

原创 OpenCV4-入门学习(一)

目录图像读取及显示图像分离通道显示 图像读取及显示 //第一个例子:显示图像void loadImage() { Mat image, grayImage;/* 常用参数: IMREAD_UNCHANGED = -1, return the loaded image as is (with alpha channel, otherwise it gets ...

2019-10-08 20:18:39 7164 2

原创 CUDA-PTX代码分析

PTX- 即parallel-thread-execution,并行线程执行;是预编译后GPU代码的一种形式,开发者可以通过编译选项 “-keep”选择 输出PTX代码,当然开发人员也可以直接编写PTX级代码。另外,比较重要的是, PTX是独立于gpu架构的,因此可以重用相同的代码适用于不同的GPU架构。具体可参考CUDA-PDF之《PTX ISA reference documen...

2019-08-14 21:29:43 1892 2

原创 CUDA拷贝结构体成员指针

在网上看了好多CUDA中在拷贝结构体以及在内核中如何访问结构体成员变量的帖子,都没找到一个质量好的,so, 自己写一个吧。。。先来个结构体:struct Stu_Struct{ int count; //人数 short* score; //每个人的分数,总计count short num; //附加分数};说明 首先大家都知道在主机端和设备端...

2019-07-14 15:14:10 711 2

原创 CUDA 多GPU调用实现

当设备存在多块GPU时,为了高效利用GPU,我们常常需要使用多卡计算。本例中我们使用OpenMP来进行多线程调用多GPU运行,初学者无须详细了解OpenMP,只需知道一两句命令就行。详细步骤如下:1、建立一个普通CUDA项目:2、在项目属性C/C++设置语言:支持openMP3、在CUDA C/C++中设置预编译命令:-Xcompiler "/openm...

2019-03-06 21:45:00 4176 3

原创 VS2015下CUDA9的安装

环境:win10  VS2015    GTX  Geforce 1060由于提前安装了显卡驱动,安装CUDA9(cuda_9.0.176_win10 ) ,CUDA8 相继失败,总是说VS Integration无法安装,,,试了网上各种方法:卸载显卡驱动和所有与Nvidia有关的东西、先安装VS Integration再安装其他组件、装VS2013和CUDA8.0、均失败。。。。。就差...

2018-09-02 21:04:42 828

转载 矩阵特征值和特征向量

介绍特征向量和特征值在计算机视觉和机器学习中有许多重要的应用。众所周知的例子是PCA(主成分分析)进行降维或人脸识别是特征脸。特征向量和特征值的一个有趣应用在我的另一篇有关误差椭圆的博文中提到。此外,特征值分解形成协方差矩阵几何解释的基础。在这篇文章中,我将简单的介绍这个数学概念,并且展示如何手动获取二维方形矩阵的特征值分解。特征向量是一个向量,当在它上面应用线性变换时其方向保持不变。考虑

2018-01-02 17:02:35 4917

转载 层次聚类算法原理及实现

聚类         聚类是对点集进行考察并按照某种距离测度将他们聚成多个“簇”的过程。聚类的目标是使得同一簇内的点之间的距离较短,而不同簇中点之间的距离较大。一、聚类算法介绍     层次法聚类和点分配法聚类。1.1     点、空间和距离点集是一种适合于聚类的数据集,每个点都是某空间下的对象。一般意义上,空间只是点的全集,也就是说数据集中的点从该集合中抽样而成。特别地,欧式

2017-12-21 17:29:32 22778 2

原创 C++读写文本数据

1、C++读写二进制文件 /***************************************************************** * \author DreamerZhang * \date 2019.08.27 * \brief 读取二进制文件,数据类型为short * \param fileName-文件名 readD...

2017-10-24 14:58:23 59109 4

原创 C++之 标准库类型 Vector和String

本文对于标准库类型string和vector的基本操作学习,比较简单,,,   KEY:行字符串的获取,string::size_type的使用,vector元素的插入,迭代器的使用测试代码:#include #include #include using std::cin;using std::cout;using std::endl;using std::string;

2017-10-11 15:38:45 429

转载 (转+改)Hough变换--直线检测

1、霍夫变换(Hough Transform)是图像处理中的一种特征提取技术,它通过一种投票算法检测具有特定形状的物体。该过程在一个参数空间中通过计算累计结果的局部最大值得到一个符合该特定形状的集合作为霍夫变换结果。霍夫变换于1962年由Paul Hough 首次提出[53],后于1972年由Richard Duda和Peter Hart推广使用[54],经典霍夫变换用来检测图像中的直线,后来

2017-10-09 09:50:01 1332

转载 CUDA GPU架构-硬件和软件

掌握部分硬件知识,有助于程序员编写更好的CUDA程序,提升CUDA程序性能,本文目的是理清sp,sm,thread,block,grid,warp之间的关系。由于作者能力有限,难免有疏漏,恳请读者批评指正。  首先我们要明确:SP(streaming Process),SM(streaming multiprocessor)是硬件(GPU hardware)概念。而thread,block

2017-09-27 17:25:05 863

原创 WIN_32与_WIN64

MSDN 里说,VC 有 3 个预处理常量,分别是 _WIN32,_WIN64,WIN32。这三个常量如何使用呢?看起来简单,其实是很困惑的。  在 Win32 配置下,WIN32 在“项目属性-C/C++-预处理器-预处理器定义”里声明了,而在 x64 配置下,这个常量并不在项目预定义列表中。这是否说明可以根据 WIN32 来判断是否在 x64 平台呢?不。在 Windows SDK 的

2017-09-25 10:22:40 350

原创 图像处理 面试准备

1、矩形检测和字符识别2、读出图片中仪表的读数3、C/C++内存分配方式4、面向过程编程和面向对象编程5、走格子,比如(0,0)到(5,7)4、字符串数字转换为整数 "12345" to 123455、虚函数的作用以及实现机制

2017-09-13 00:05:56 2592

原创 二叉树的前序遍历-中序遍历-后序遍历

1、遍历是对树的一种最基本的运算,所谓遍历二叉树,就是按一定的规则和顺序走遍二叉树的所有结点,使每一个结点都被访问一次,而且只被访问一次。由于二叉树是非线性结构,因此,树的遍历实质上是将二叉树的各个结点转换成为一个线性序列来表示。二叉树的遍历分为:前序遍历、中序遍历、后序遍历。前序遍历:根节点、左子树、右子树中序遍历:左子树、根节点、右子树后序遍历:左子树、右子树、根节点先来看一个

2017-09-08 18:55:48 1033

转载 二叉树的遍历

转自:http://www.cnblogs.com/liuamin/p/6269950.html   最近学习树的概念,有关二叉树的实现算法记录下来。。。   不过学习之前要了解的预备知识:树的概念;二叉树的存储结构;二叉树的遍历方法。。    二叉树的存储结构主要了解二叉链表结构,也就是一个数据域,两个指针域,(分别为指向左右孩子的指针),从下面程序1,二叉树的存储结构可

2017-09-05 16:47:03 328

转载 线性表之顺序表和链表

线性表之顺序表与单链表的区别及优缺点标签: 单链表顺序表优缺点时间复杂度线性表2016-03-23 23:43 5200人阅读 评论(0)收藏举报分类: C/C++(44) 作者同类文章X版权声明:本文为博主原创文章,未经博主允许不得转载。这里比较的是是基于C语言实现的顺序表

2017-09-01 16:00:17 471

转载 C++ const int* p 和 int * const p的区别

const int *p与int *const p的区别标签: gccc 2012-09-29 15:13 11469人阅读 评论(6)收藏举报分类: C语言编程(13) 作者同类文章X版权声明:本文为博主原创文章,未经博主允许不得转载。本文只是一篇学习笔记,是看了《彻底搞定C指

2017-08-30 09:16:49 2299

转载 MATLAB 最小二乘法

MATLAB实现最小二乘法2017-04-17 15:10 2624人阅读 评论(0)收藏举报分类: MATLAB(12) 作者同类文章X版权声明:本文为博主原创文章,未经博主允许不得转载。目录(?)[+]最小二乘法线性函数模型一般线性情况示例MATLAB实现例一小车时间

2017-08-29 20:46:32 14512

转载 一种改进的OPenCV局部 自适应快速二值化

由于用opencv自带的函数adaptiveThreshold()在光照不均匀的图像中进行二值化时,效果不佳,之后看了Derek Bradley和Gerhard Roth于2007年写的《Adaptive Thresholding Using the Integral Image》,方法简单实现简便且速度较快,本文基于opencv用程序实现了它。其核心思想可以由下面两张图概括,先得到图像中各

2017-08-25 11:11:42 4624 2

原创 OpenCV学习之图像分割

1、sobel算子边缘检测//Sobel梯度算子void imageSobel(){ const char* name = "lena.tif"; IplImage* image = cvLoadImage(name, CV_LOAD_IMAGE_GRAYSCALE); if (image == NULL){ printf("image load failed.\n"); re

2017-08-24 17:45:59 778 2

转载 边缘检测常用算子

不同图像灰度不同,边界处一般会有明显的边缘,利用此特征可以分割图像。需要说明的是:边缘和物体间的边界并不等同,边缘指的是图像中像素的值有突变的地方,而物体间的边界指的是现实场景中的存在于物体之间的边界。有可能有边缘的地方并非边界,也有可能边界的地方并无边缘,因为现实世界中的物体是三维的,而图像只具有二维信息,从三维到二维的投影成像不可避免的会丢失一部分信息;另外,成像过程中的光照和噪声也是不可避免

2017-08-21 10:57:45 1002 1

原创 图像均值滤波的CUDA并行化优化

1、算法原理均值滤波也是线性滤波,目标点的像素为周围(模板覆盖)像素的平均值。对图像进行均值滤波处理时,每一个像素点的处理与其它像素点无关,所以,可以把对于每一个像素的处理映射到每个线程中。2、并行思路将像素映射到二维坐标空间,然后使用i*WIDTH+j的方式索引像素,本实例是寻找周围9个像素点的值。对于每一个线程都将去寻找它的领域像素,然后对其求平均值。为了简化计算,边界采用复制像素

2017-08-18 16:26:49 4314 6

原创 OJ测试数据的输入格式列举

在做一些在线编程题或者ACM训练题的时候,我们会遇到各种各种的输入要求,比如:或者又或者以下是各组输入的整理:void test1(){ //一直输入,直到文件结束 int a, b; //用 ctrl + Z 强制结束 while (scanf("%d%d", &a, &b) != EOF){ //** while (cin >> a >> b){

2017-08-17 21:00:58 1553

原创 枚举变量的使用和类型声明

1、枚举类型     什么时候会用到枚举类型呢,当一个变量只有限定值可取的时候。枚举,即将变量的值一一列举出来。C语言中,对于枚举元素是按常量处理的,定义时默认值是0 1 2 3.。。。当然,也可以改变枚举变量的值。enum color{red, green,blue};enum color mycolor;mycolor = red;enum color{red=5, gre

2017-08-09 19:58:37 15172

转载 图像处理之常用插值算法

二维图像插值算法实现2016-05-10 21:52 1805人阅读 评论(0)收藏举报分类: 医学图像处理(3) 作者同类文章X版权声明:本文为博主原创文章,转载请注明出处。       在做数字图像处理时,经常会碰到小数象素坐标的取值问题,这时就需要依据邻近象素的值来对该坐标进行插值。比

2017-08-04 09:45:24 7310 2

原创 CUDA学习之纹理内存

1、纹理存储器的特性    纹理存储器中的数据以一维、二维或者三维数组的形式存储在显存中,可以通过缓存加速访问,并且可以声明大小比常数存储器要大的多。在kernel中访问纹理存储器的操作称为纹理拾取(texture fetching)。将显存中的数据与纹理参照系关联的操作,称为将数据与纹理绑定(texture binding). 显存中可以绑定到纹理的数据有两种,分别是普通的线性存储器和c

2017-08-02 10:22:28 2850 8

转载 CUDA一维纹理内存

纹理一词来源于GPU图形世界,GPU通用并行计算“盗用”了纹理一词,定义了一个纹理内存的概念。纹理内存缓存在 设备上,在某些情况下能减少对内存的请求并降低内存带宽的使用,是专门为那些在内存访问模式中存在大量空间局部性的图形应用而设计,意味着一个线程读取的位置可能与邻近线程读取的位置“非常接近”。对于GPU内核而言,纹理内存是只读内存,并且只有通过特殊的纹理API才能对其访问。纹理内存分

2017-08-01 14:46:45 1368

转载 OpenCV 图像金字塔 pyrDown 和pyrUp函数

【图像金字塔】图像金字塔这个词,我们经常在很多地方可以看到。它是图像多尺度表达的一种,最主要的是用于图像的分割。同时,图像金字塔也被广泛用于各种视觉应用中。图像金字塔是一个图像集合,集合中所有的图像都源于同一个原始图像,而是通过对原始图像连续降采样获得,直到达到某个终止条件才停止降采样。我们可以通过下图来形象的说明图像金字塔的概念。在金字塔的底部是待处理图像的高分辨率表示,而顶部是低分辨率

2017-07-30 11:36:06 649

原创 matlab高斯滤波器

1、使用matlab自带的函数%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%clear; img = imread('lena.tif'); w = fspecial('gaussian',[5,5],1); %replicate:图像大小通过赋值外边界的值来扩展 %symmetric 图像大小通过沿自身的边界进行镜像映射扩展

2017-07-26 16:00:33 32001 15

转载 高斯滤波器原理及其实现

高斯滤波器是空间滤波器的一种,学习高斯滤波器,需要空间滤波的知识作为先验知识(各种数字图像处理的书中都有介绍,冈萨雷斯的经典教材说的还是比较清楚的,建议看英文版,个人感觉比翻译过来的更容易理解)。        高斯滤波器是一种平滑线性滤波器,使用高斯滤波器对图像进行滤波,其效果是降低图像灰度的“尖锐”变化,也就是使图像“模糊”了。高斯滤波对于抑制服从正态分布的噪声效果非常好,其代价是

2017-07-26 08:28:07 8148

转载 openCV canny边缘检测

Canny 边缘检测算法1986年,JOHN CANNY 提出一个很好的边缘检测算法,被称为Canny编边缘检测器[1]。Canny边缘检测根据对信噪比与定位乘积进行测度,得到最优化逼近算子,也就是Canny算子。类似与 LoG 边缘检测方法,也属于先平滑后求导数的方法。使用Canny边缘检测器,图象边缘检测必须满足两个条件:能有效地抑制噪声;必须尽量精确确定边缘的位置。算

2017-07-25 17:31:23 440

原创 OpenCV系列学习之图像形态学

形态学是什么呢,在生物学说的是研究动植物的形态、结构,延伸到图像莫非就是图像的轮廓、骨架、边界等等。形态学的基本操作是腐蚀与膨胀,简单的讲腐蚀就是消除掉某些小东西,膨胀就是扩大或者‘粗化’一些物体。但是,为了彻底搞清楚这两个东东,我们还是得从原理上搞清楚。1、腐蚀与膨胀的定义腐蚀:  B是结构元且有一个中心点,可以理解为移动的window或者卷积核,A是图像。公式表达的是:在图

2017-07-11 18:14:41 446

矩阵相加

这是矩阵相加的学习代码,对于初学者时很好的指导

2014-08-19

CUDA矩阵相乘

这是二维矩阵的相乘,对比了CPU和GPU的时间对比,加速效果很好

2014-08-19

QT 显示图片

这是在QT中显示2张图片,均是灰度图的显示

2014-06-11

容器类元素复制

对于初学者很有用,来源与C++ primer的教学,希望对别人有帮助

2014-06-11

银行账户管理

自己写的银行账户管理程序,用的面向对象语言,不过觉得要是结合MFC效果会好点

2013-08-11

Depends查看库工具.rar

通过depends工具可以有效解决不确定的库依赖,尤其是在不同机器上程序运行失败时可以通过该软件找到缺少的库

2019-08-27

GPU访问结构体.rar

程序示例包含了如何在GPU分配结构体及其成员变量内存,可以在内核函数中访问自定义结构体,方便C++类程序开发

2019-07-14

空空如也

空空如也

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

TA关注的人 TA的粉丝

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