- 博客(21)
- 问答 (3)
- 收藏
- 关注
原创 引导滤波(guided image filtering)原理及C++实现
引导滤波引导滤波是由何凯明等人与2010年提出,它本质上具有O(N)复杂度,相对于双边滤波有更好的边缘保持特性,且不会出现梯度反转现象。在不同引导图像的引导下,可广泛应用于降噪、去雾、高动态范围压缩等。该方法基于局部线性模型:代码实现0、伪代码1、MATLAB代码见参考资料【2】2、C++实现templatevoid C
2015-10-28 13:15:38 12688 4
原创 字符串转base64
一、Base64简介Base64编码,是我们程序开发中经常使用到的编码方法。它是一种基于用64个可打印字符来表示二进制数据的表示方法。它通常用作存储、传输一些二进制数据编码方法!也是MIME(多用途互联网邮件扩展,主要用作电子邮件标准)中一种可打印字符表示二进制数据的常见编码方法!它其实只是定义用可打印字符传输内容一种方法,并不会产生新的字符集!0~63对应到ABCDEFGHIJKLM
2015-10-11 16:16:01 4126
原创 文件读写操作
fopen函数原型:FILE * fopen ( const char * filename, const char * mode ); 返回值:文件顺利打开后,指向该流的文件指针就会被返回。如果文件打开失败则返回NULL,并把错误代码存在errno中 参数: mode 说明 “r” read,已只读方式打开文件,文件必须存在 “w” write,打开只写文件,若文件已存在
2015-09-10 18:56:56 632
原创 vs2008配置opencv2.4.9
一、前言vs2008是属于比较久远的版本了,解压opencv2.4.9时只有vc10,vc11,vc12对应的bin和lib文件夹,要想得到vc9(即vs2008)的dll和lib,必须自己编译opencv源码。下面介绍下方法(vs2008+opencv2.4.9 x86 debug & release)。二、编译opencv源码下载cmake,生成.sln文件,用vs2008打开
2015-07-04 17:31:06 3841
原创 FFTW的使用
FFTW首页:http://www.fftw.org/据说FFTW是世界上最快的FFT。下载地址:http://www.fftw.org/download.html一、Windows安装FFTW从网址http://www.fftw.org/install/windows.html 上获得FFTW的windows dll预编译版本;解压缩文件,打开wi
2015-06-29 00:25:20 14446 1
原创 双边滤波原理与C++实现
一、原理 双边滤波(Bilateral filter)是一种可以去噪保边的滤波器。之所以可以达到此效果,是因为滤波器是由两个函数构成:一个函数是由几何空间距离决定滤波器系数,另一个由像素差值决定滤波器系数。 原理示意图如下: 双边滤波器中,输出像素的值依赖于邻域像素的值的加权组合, 权重系数w(i,j,k,l)取决于定
2015-06-21 12:37:40 10197 7
原创 各向异性扩散PM模型原理与C++实现
本文介绍了各向异性扩散PM模型,并给出了C++代码实现。一、PM模型原理其中, 二、C++代码实现MATLAB代码可参考:http://www.csse.uwa.edu.au/~pk/re
2015-04-24 16:22:35 8373 5
原创 全变分(TV)模型原理与C++实现
本文介绍了TV模型的基本原理,并给出了C++代码实现。一、TV模型原理二、C++实现关于Matlab的程序实现,有一个经典的主页: http://visl.technion.ac.il/~gilboa/PDE-filt/tv_denoising.html
2015-04-22 13:57:36 31153 20
原创 vs2013 error:C4996
在学习如何编写移动构造函数的时候,照着文中的代码敲,用vs013编译,出现 error C4996: 'std::_Copy_impl': Function call with parameters that may be unsafe - this call relies on the caller to check that the passed values are correct. T
2015-03-30 20:55:38 2240
转载 VC中GetLastError()获取错误信息的使用,以及错误代码的含义
VC中GetLastError()获取错误信息的使用 在VC中编写应用程序时,经常需要涉及到错误处理问题。许多函数调用只用TRUE和FALSE来表明函数的运行结果。一旦出现错误,MSDN中往往会指出请用GetLastError()函数可问题是,GetLastError()返回的只是一个双字节数值(DWORD)。OH,MY GOD!目前Win32的出错编号已经从0排到11031,而这还不是错
2015-01-21 15:02:46 6848
原创 [tips] 在MFC中快速预览对话框布局的快捷键
之前在MFC中查看对话框布局,都跑一遍程序,很麻烦,今天偶然发现有快捷键可以直接预览对话框。以后再改布局,So Easy!快捷键:Ctrl + T
2015-01-13 21:51:51 2185
原创 [堆排序之番外] heap-size[A]的理解
前言自己在看《算法导论》的时候,对heap-size[A]理解不清楚,也影响了看下去的心情(逃,碰到问题就不想看了...在看完了整个算法,写过代码以后,才算是理解了些。下面写下自己的理解。正文《算法导论》中的对heap-size[A]的描述是:表示堆的数组A是一个具有两个属性的对象:length[A]是数组中的元素个数,heap-size[A]是存放在A中的堆的
2015-01-09 15:09:24 2988 2
原创 [堆排序之三]实践,C++实现
输入:数组a输出:对数组a进行堆排序(升序)注意:根节点的下标为0#include using namespace std;void AdjustHeap(int a[], int i, int heapsize){ int lchild = 2 * i + 1; int rchild = 2 * i + 2; int max = i; if (lchild
2015-01-09 13:04:01 595
原创 [堆排序之一]图文说明,快速理解
前言:在学堆排序的时候,第一份资料看的是算法导论,嚼着好晦涩,昏昏欲睡,不直观不好理解。于是又查阅了其他资料,果然网上各种总结更给力啊。我根据自己的情况,把堆排序学习分成3部分:快速理解、深入理解原理和C++实现。自我感觉,这种安排对快速理解堆排序还是很有帮助的。所谓“原创”,是在整理网友资料基础上,加上了一些自己的理解和感悟。 堆的定义:堆(heap)是一种数据结构。定义
2015-01-07 10:59:59 723
原创 结构体(struct)的不同写法和tag前缀
结构体有多种不同的声明定义写法,且在C、C++中使用略有差别,再者用typedef带来方便的同时,也造成了更多写法的混淆。本文的目的就是总结struct的各种声明定义方法,理清思路,避免混淆。总结有误之处,请大家指正。一、struct声明定义总结结构体声明由三部分组成,tag, member-list, variable-list。 struct ta
2014-12-24 15:05:03 7290
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人