自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(71)
  • 资源 (2)
  • 收藏
  • 关注

原创 Linux 常用指令

Linux CommandFile Operation查找文件 find -name “*.txt”查找文件夹下的文件个数 ls -l |grep “^-“|wc -l 或 find ./company -type f | wc -l 查看某文件夹下文件的个数,包括子文件夹里的。 ls -lR|grep “^-“|wc -l 查看某文件夹下文件夹的个数,包括子文件夹里的。

2018-11-02 10:32:27 267

原创 Markdown语法汇总

本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl + Q插入链接 Ctrl +

2017-04-14 11:13:07 484

原创 itk::Image在使用时的注意事项

ITK::image在使用时的注意事项

2016-03-10 17:07:01 2476

原创 std_vector使用注意事项

std::vector使用注意事项

2016-03-10 17:05:39 766

原创 vtk中Register函数的妙用

VTK中Register函数的妙用众所周知,VTK中的智能指针vtkSmartPointer给了我们方便操作内存的方法,使我们不用为内存的管理而操心。VTK会自动识别分配的内存是否仍在使用,并且释放已经不再使用的内存。 VTK实现这样的机制与C++11中的智能指针类似,是通过ReferenceCount来实现,简单来说,就是使用ReferenceCount对内存的使用进行计数。通常有以下几种

2016-03-03 21:53:52 779

转载 C++中ShallowCopy和DeepCopy的区别

C++中ShallowCopy和DeepCopy的区别

2016-03-02 17:23:01 2118

转载 【转载】C/C++字符串操作函数

【转载】C/C++字符串操作函数汇总转载自:http://blog.csdn.net/kangroger/article/details/24383571 常常见到面试时让写str系列函数,用的少,经常忘记,记录一下。1、strcat()此函数原型为 char *strcat(char *dest, const char *src). 功能为连接两个字符串,把src连接到dest后面;返回des

2016-02-25 17:54:06 592

转载 QT发布时经常出现的问题

【转自:http://www.cnblogs.com/mmix2009/p/3536825.html】1.首先要搞清楚动态链接库还是静态链接本文只涉及动态链接库,就是编译出来的exe文件加上Qt 的必要dll文件。一般跟别人一样的操作,直接双击 XX.exe,提示缺少什么dll,就去Qt的安装目录下的bin文件夹里去找。我找的目录是D:\Qt\Qt5.2.0\5.2.0\m

2016-01-27 14:31:36 596

原创 C/C++编译过程

C/C++编译过程这段时间一直使用C/C++编程,发现对其编译过程理解不深,查阅了相关内容后,现整理如下:C++的编译主要需要以下几个步骤: 1. 使用C++编译器进行Compiling,生成目标文件.obj或.o。 2. 将目标文件与外部库进行Linking,使用linker进行连接。这里的外部库通常包括lib,dll文件等。 3. 最终通过linker程序,生成exe可执行文件。

2016-01-27 14:14:39 399

原创 Debug和Release版本的区别

Debug和Release版本的区别Debug 和 Release 并没有本质的区别,他们只是预定义提供的两组编译选项的集合,编译器只是按照预定的选项行动。既然Debug和 Release仅仅是编译选项的不同,那么为什么要区分Debug和Release版本呢? Debug和Release,在我看来主要是针对其面 向的目标不同的而进行区分的。Debug通常称为调试版本,通过一系列编译选项的配合,编

2016-01-27 13:56:58 1463

原创 递归算法

递归算法是一种常用的方法,其最大的特点就是在函数内部不断地调用自身函数,从而对问题进行求解。 递归方法的举例如下: 下面是利用折线逼近曲线的算法示例。在该算法中,我们首先将曲线的首尾进行连接,然后求解曲线中到连线距离最大的点,作为折线的一个顶点。如果顶点到连线的距离大于设定的阈值,则重复上述的划分过程,直到折线的顶点到首尾连线的距离小于阈值为止。void calMidIndex(int begi

2015-10-29 22:25:26 443

原创 C# 托管内存与非托管内存之间的转换

C# 托管内存与非托管内存之间的转换c#有自己的内存回收机制,所以在c#中我们可以只new,不用关心怎样delete,c#使用gc来清理内存,这部分内存就是managed memory,大部分时候我们工作于c#环境中,都是在使用托管内存,然而c#毕竟运行在c++之上,有的时候,(比如可能我们需要引入一些第三方的c++或native代码的库,在Unity3d开发中很常见)我们需要直接在c#中操纵非托管

2015-09-25 15:42:53 6419

原创 C++内存分配方式详解——堆、栈、自由存储区、全局/静态存储区和常量存储区

C++内存分配方式详解——堆、栈、自由存储区、全局/静态存储区和常量存储区  栈:就是那些由编译器在需要的时候分配,在不需要的时候自动清除的变量的存储区。里面的变量通常是局部变量、函数参数等。在一个进程中,位于用户虚拟地址空间顶部的是用户栈,编译器用它来实现函数的调用。和堆一样,用户栈在程序执行期间可以动态地扩展和收缩。  堆:就是那些由 new 分配的内存块,他们的释放编译器不去管,由我们的应用程

2015-09-23 11:13:49 545

原创 C#学习1——指针的使用

C#学习1——指针的使用C#是一门解释型语言,其中对指针进行了封装,因此用户无法直接调用对象的指针。但是当使用C#调用C/C++的DLL时,常常会函数参数或者返回值为指针的情况。这种情况下就需要对指针进行操作。在C#中使用指针,需要首先回答以下几个问题:1. C#提供了哪几种指针类型C#提供的指针为IntPtr或者UIntPtr,用于表示指针或句柄的平台特定类型。因此,IntPtr 可以用来表示指针

2015-09-23 11:12:03 2320

原创 数据结构与算法学习1——算法复杂度分析

数据结构与算法学习1——算法复杂度分析1. 常见的表示方法算法复杂度分析是数据结构与算法学习的基础,算法复杂度包括时间复杂度和空间复杂度。这里主要探讨时间复杂度。时间复杂度分析的方法称为渐进记法,常用的表示符号包括大OO标记,大Ω\Omega标记,大Θ\Theta标记等。这三种标记的区别和联系在于:- 大OO标记:表示法f(n)=O(g(n))f(n)=O(g(n)),代表f(n)f(n)渐近小于或

2015-09-17 22:41:57 564

原创 如何生成DLL工程

如何生成,调用和调试DLL工程在使用其他语言调用C/C++程序,通常会使用DLL工程文件。本篇文章介绍的内容包括以下几点:如何生成C/C++的DLL文件如何在C#中调用DLL文件如何调试DLL文件如何生成C/C++的DLL文件新建工程,选择“Visual C++”工程中的“Win32控制台程序”类型。工程设置中,将“应用程序类型”设置为“DLL”,“附加选项”设置为“空项目”。点击“完成”

2015-09-17 18:40:26 3157

原创 如何编译CUDA工程

如何编译CUDA工程这里介绍的是当得到CUDA源程序(.cu文件)时,如何添加到自己已有的Visual Studio项目中。一共包括以下几步:第一步——添加现有文件在已有工程上右键单击,选择添加已有.cu文件。 第二步——添加编译规则添加编译规则。右键单击工程文件,选择自定义生成规则,在弹出的对话框中选择CUDA Build Rule x.x。第三步——修改.cu文件编译规则修改.cu文件的编译器。

2015-09-15 14:29:19 1583

转载 C++模板详解(二)

转载自:http://www.cnblogs.com/gw811/archive/2012/10/25/2736224.htmlC++模板  四、类模板的默认模板类型形参  1、可以为类模板的类型形参提供默认值,但不能为函数模板的类型形参提供默认值。函数模板和类模板都可以为模板的非类型形参提供默认值。  2、类模板的类型形参默认值形式为:

2015-08-09 18:12:11 321

转载 c++模板详解(一)

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

2015-08-09 18:10:35 345

原创 ITK/VTK对DICOM文件的读取

在ITK中,对dicom的读取使用的是GDCM库,而在VTK库中使用的是直接是DicomFileReader库。在ITK中,读取DICOM文件的程序示例如下:

2015-08-09 18:02:30 6684

原创 开源库的选择策略

开源库的选择策略: 要先使用有例⼦,可以验证的算法。实在没有的话可以⾃己写算法!此外,在选择了⼀个开源库后,就不要轻易换掉它,否则会导致你更加的被动,浪费更多的时间![⾃己做选择时的策略]:⾃己做选择时的策略也一样,要先选择可以验证的策略。

2015-08-09 17:39:20 326

原创 ITK与VTK数据转换

引言ITK和VTK都是kitware推出的强大开源库,前者专注于图像分析和处理,后者专注于三维显示和三维模型操作。在实际应用的过程中,常常需要将两个库中的图像数据进行互传,实现二者之间的无缝连接。ITK/VTK图像数据差别ITK与VTK的图像数据坐标的原点都在图像的左下角,但是在读取图像时,二者的存储方式不同。以常用的dicom图像为例,图像的第一个像素定义为左上角。当使用VTK进行读

2015-08-04 22:44:05 5902

转载 常用数值计算库

转载自:http://www.xuebuyuan.com/1706852.html最近在使用数值库进行稀疏矩阵线性方程组的求解,接触了一些数值计算库,主要包括:MKL, GMM++等库。MKL库是intel的一个运算库,大名鼎鼎的matlab中都使用MKL进行数值运算,但唯一的缺点是它是需要收费的。MKL有30天的试用版,其功能与完整的版本一样。GMM++库是一个GNU开源库,其无需安

2015-08-02 18:14:32 3941

原创 VTK中图像像素位置的提取

当使用VTK对图像进行显示,图像像素点的提取是其中一个重要的应用,包括对像素位置的判断,以及对像素值的读取。对像素点提取的思路包括三个步骤:获取renderer的指针,然后使用picker类来获得点击的点。 int *pos = this->GetInteractor()->GetEventPosition(); this->picker->Pick( pos[0], pos

2015-07-27 17:59:06 4629

转载 STL使用概述

转载自:http://net.pku.edu.cn/~yhf/UsingSTL.htm其余资源:http://www.cnblogs.com/yxnchinahlj/archive/2011/03/06/1972435.htmlhttp://www.weixueyuan.net/view/5890.htmlhttp://blog.csdn.net/byxdaz/arti

2015-07-27 17:42:56 357

原创 Random Walk分割算法

引言RandomWalk是基于图论分割方法的一个重要分支。在根据图像建立的图模型上,RandomWalk根据随机游走模型,来求解未标记的像素(unseeded pixels)到达已标记的种子点(seeded pixels)的概率,根据未标记的像素到达不同目标区域的概率大小,来判断未标记像素的归属。RandomWalk图像分割算法分为三个步骤:(1)图模型的建立;(2)根据随机游走模型计算u

2015-07-27 16:31:55 8012

原创 C/C++类型强制转换

C和C++中都有针对类型强制转换的运算符。在C语言中,通常使用如下的运算符。该种类型的运算符作用十分直接,即直接将element转换为T类型。 (T)element //或者 T(element)在C++语言中,通常使用如下四种运算符。这四类运算符除了可以实现C语言中类型转换符的作用之外,还能满足完整类类型之间的转换:reinterpret_cast (expressi

2015-07-27 15:59:03 635

转载 C C++ 文件输入与输出

转载自:http://www.cnblogs.com/Yogurshine/p/3677201.html C语言:一 打开关闭文件1 fopen函数 用于打开文件FILE *fopen(char *filename, *type);fopen("c:\\ccdos\\clib", "rb");  如果成功的打开一个文件, fopen()函数返回文件指针,

2015-07-22 22:15:37 657

原创 vtk事件响应机制

vtk中大致有三种时间响应机制:command/observer模式之callback functionvtk中的command/observer模式是最常用的,也是各种处理方式的基础。这里首先介绍如何使用callback function的方法:void KeyPressCallbackFunction ( vtkObject* caller, long unsigned i

2015-07-22 22:01:45 5335 1

转载 GPU并行编程方法

转载自:http://blog.sina.com.cn/s/blog_a43b3cf2010157ph.html编写利用GPU加速的并行程序有多种方法,归纳起来有三种:1.      利用现有的GPU函数库。Nvidia 的CUDA工具箱中提高了免费的GPU加速的快速傅里叶变换(FFT)、基本线性代数子程序(BLAST)、图像与视频处理库(NPP)。用户只要把源代码中C

2015-07-15 16:12:17 2441

转载 【转载】Random Walker在图像分割中的应用

基于随机游走的图像分割算法基于随机游走的图像分割算法是属于图论分割方法中的一种,这个算法比较偏,网上的paper比较少,刚开始学习找个资料都不容易,其实这个算法的原理就是通过求解一个邻接矩阵方程组,跟三维空间三角网格曲面的调和场求解有点类似。1、算法开始前,先简单描述一下随机游走模型一维随机游走问题:设一个质点(随机游走者)沿着一条直线运动,单位时间内只能运动一个单位长度,且只

2015-07-13 14:32:45 3821

原创 C++静态数组和动态数组的区别

静态数组的长度是固定的,不能根据应用程序的需要改变,而动态内存分配可满足此需求。比如,你写一个数组用来存放一个班所有人的数学成绩,如果你知道这个班一共有50个人,那好办,直接 int grade[50];这样编译器在编译阶段就知道该为这个数组分配多少内存了,这就叫静态分配。那要是这个班的人数是未知的,需要用户手

2015-06-29 15:06:52 7782 4

原创 体绘制算法

三维绘制包括面绘制和体绘制。体绘制可以提供最接近人眼视觉的绘制效果。体绘制的方法包括:RayCastingSplattingShear WarpTexture based volume rendering   其中RayCasting是最常用的方法之一。包括四个步骤:Ray casting, Sampling, Shading and Composition。具体的描述如下:

2015-06-12 13:48:17 7068

原创 QT菜单栏添加

QT中的菜单包括以下几个部分:    首先,QMenuBar是QT中菜单的载体,可以在上添加各个QMenu。在QMenu中,可以添加各个栏目(QAction),添加隔断线(addSeperator()),在其中添加子菜单等操作。具体操作如下: menuBarInstance = new QMenuBar(ui.tab); menuBarInstance->setGeometry(0,0,

2015-06-11 18:12:21 1316

原创 如何设置QWidget的背景颜色

IntroductionQWidget is the base class of all user interface objects which means that the same approaches for changing the background color can be used with them too. Using the PaletteThe first

2015-06-11 11:43:11 6714

原创 OpenCascade开源库的使用

1 文档网站:http://dev.opencascade.org/doc/overview/html/occt_user_guides__vis.html2 相关模块:(1)与VTK联合使用:http://dev.opencascade.org/doc/overview/html/occt_user_guides__vis.html(2)布尔运算:http://dev.o

2015-05-07 18:11:54 2533

转载 半边数据结构

A common way to represent a polygon mesh is a shared list of vertices and a list of faces storing pointers for its vertices. This representation is both convenient and efficient for many purposes, h

2015-04-28 21:29:34 693

原创 使用SVN进行项目管理

SVN是最常用的开发版本管理软件,这段时间在使用tortise SVN进行项目管理,现在对使用的方法进行整理。    1 首先需要在公司的服务器上创建空间,用于存放代码。这里的服务器空间为http://largev-server/svn/3d。    2 将服务器空间拷贝到本地电脑中。使用tortoise SVN的checkout功能,将服务器地址拷贝到本地。这里拷贝的本地地址为:E:/3

2015-04-28 18:05:23 1839

转载 Random Walker分割的原理

http://en.wikipedia.org/wiki/Random_walker_algorithmThe random walker algorithm is an algorithm for image segmentation. In the first description of the algorithm,[1] a user interactively l

2015-04-27 17:59:40 4787 1

原创 VTK之交互方式(interactor style)

VTK提供了多种交互方式,最常用的包括joystick和trackball,并且可以分别对actor和camera进行操作。    在VTK中,可以通过集成已有的交互方式类,然后添加自己的功能,则可以完成在触发响应时,完成响应的操作。    以下是自定义交互方式类的一个实例。该实例实现的是对鼠标点击的物体进行高亮显示。    #include #include #include

2015-04-27 17:27:33 13480

deep learning book

2016-05-20

A Simple Algorithm for Surface Denoising

三维表面去噪方法,可以实现简单快速的表面去噪。

2015-03-04

空空如也

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

TA关注的人

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