摘要: 主要涉及两个类型:指向const类型对象的指针和const指针。1。指向const对象的指针我们可以使用指针来修改其所指对象的值,但是如果指针指向const对象,则不允许用指针来修改其所指对象的值。比如 const double *cptr;cptr本身并不是const,在定义时不需要对其进行初始化,允许对其重新赋值.这这里存在一个比较容易混淆的东西!!!将一个const类型对象的指针赋值给一个普通指针会导致错误:如const double pi=3.14; double *p=π//error但是允许将一个... 阅读全文
posted @ 2012-11-26 21:40 ideawu 阅读(165) 评论(0) 推荐(0) 编辑
摘要: 以前学习微机原理的时候,对大端小端的理解感觉很模糊,反正也不怎么使用到。现在在看另外一本讲计算机操作系统的书的时候,发现要在存储器中表示一个多字节的对象的时候,很自然就会考虑到多个字节的排列顺序问题。比如一个int类型的变量,它占有4个字节大小,假如说它的起始地址是0x100,那么它就会只能用0x100,0x101,0x102,0x103这四个地址,然后我们假设这个二进制数为10000000,11000000,00000011,00000001。一个32位2进制数,每八个位组成一组。所以这四个组按怎样的顺序放到4个地址中,就构成了大端和小端的区分。 ... 阅读全文
posted @ 2012-11-23 16:47 ideawu 阅读(315) 评论(0) 推荐(0) 编辑
摘要: 这里研究一下psf2otf.m这个函数。主要关注的是函数怎样实现psf的size的变化的。我们使用的是OTF = PSF2OTF(PSF,OUTSIZE)这个形式。同样的在psf2otf.m中存在parseinputs函数,用于检验参数和赋值变量。[psf, psfSize, outSize] = ParseInputs(varargin{:});该函数分别给psf,psfSize,outSize三个变量赋值。如果psf不全为0,则执行下面语句:padSize = outSize - psfSize;padSize表示需要填充的大小,这里理解起来还是比较直观,把psf扩充成跟outSize一样 阅读全文
posted @ 2012-11-15 20:58 ideawu 阅读(1155) 评论(1) 推荐(0) 编辑
摘要: 前面讲到psf的傅里叶变换尺度与图像不统一而带来的计算上的问题。后面我就根据matlab维纳滤波的源代码进行分析,找出计算流程。首先从deconvwnr.m开始。函数的编写提供了比较广泛的接口输入,我们抛去这些只关注核心计算步骤。在deconvwnr.m里还定义了其他两个函数,parse_inputs和CreateNDfrom1D.第一个函数式用来检验输入参数的类型及判别是否正确;第二个函数是针对输入参数有噪声自相关和图像自相关而设计的,如果采用K值来设定滤波器的话,该函数用不到,这里只研究输入为k值的情况。[I, PSF, ncorr, icorr, sizeI, classI, sizeP 阅读全文
posted @ 2012-11-15 17:23 ideawu 阅读(2642) 评论(0) 推荐(0) 编辑
摘要: 在图像复原应用中,在含有噪声的情况下进行简单的逆滤波会带来很大的失真,最常见的滤波方法就是维纳滤波。在频率域中做滤波的话,根据表达式:F(u,v)为滤波后清晰图像的傅里叶频谱图像,H(u,v)为模糊核频谱图像,G(u,v)为模糊图像频谱图像。理解该公式有一点要求,就是上述三个频谱图像矩阵的维度必须一致,其实也就是模糊核和模糊图像一致就可以。计算时,取相对应位置上的值出来进行计算既可以,假设维度为300*400,也就是说要进行120000次该公式的计算就可以求出清晰图像频谱图,且这120000次计算之间相互独立不干扰,这点是很重要的,120000次计算可以并行执行,为计算提速带来了极大方便。但是 阅读全文
posted @ 2012-11-14 20:50 ideawu 阅读(3017) 评论(1) 推荐(0) 编辑
摘要: C++程序通常由多个文件组成,为了让多个文件访问相同的变量,区分了声明和定义。在一个程序中,变量有且仅有一个定义。extern关键字声明变量名而不定义:extern int i;//声明并不定义,只是说明变量定义在程序的其他地方 int i;//声明并且定义声明有初始化可被当做是定义,虽然有extern,如:extern double pi=3.14;名字的作用域:作用域是程序的一段区域,大多数作用域使用花括号来界定。主要有全局作用域、局部作用域和语句作用域。通常把一个对象定义在它首次使用的地方是个很好的办法。const限定符。设计该限定符的缘由:1.程序中用到很多常数,如果需要修改的话,到. 阅读全文
posted @ 2012-11-13 20:41 ideawu 阅读(159) 评论(0) 推荐(0) 编辑
摘要: 概念:强静态类型:编译时会对类型进行检查,如果操作和对象不相匹配就会报错。变量提供了程序可操作的有名字的存储区。左值:可以出现在赋值语句的左边或者右边。 右值:只能在右边。定义对象:以类型说明符开始,后面紧跟说明符的列表。初始化:两种初始化的形式:复制初始化和直接初始化。复制初始化用语法等号(=),直接初始化把初始化式子放在括号中。int ival(1024); int ival =1024;“初始化不是赋值”初始化内置类型:提供一个值。类类型变量初始化:直接初始化和构造函数。当定义没有初始化式的变量时,系统有时候会帮我们初始化。(1)内置类型(取决于位置):函数体外初始化为0,函数体内不进. 阅读全文
posted @ 2012-11-12 22:07 ideawu 阅读(167) 评论(0) 推荐(0) 编辑
摘要: void是一种特殊类型,属于基本内置类型。仅用作无返回值函数的返回类型。C++标准规定的是每个算数类型的最小存储空间。可以将算术类型的任何值赋给bool对象。整型int、short、和long都默认为带符号的。int和short的区别在于,int的长度是根据机器字长所决定的,16位机的int就是16位,32位机为32位,而short的长度保持不变。float有效数字6位,double10位。字面值整数常量默认为int或long型,通过增加后缀L和U。浮点字面值默认为double类型。后缀为L和f。unsigned类型是unsigned int 类型的缩写。 阅读全文
posted @ 2012-11-12 20:38 ideawu 阅读(192) 评论(0) 推荐(0) 编辑
摘要: 最近在学习斯坦福的机器学习课程,发现这类人工智能的东西都跟概率统计意义结合紧密,这里就阐述一下自己的理解。1.linear regression在线性回归中我们是用线性模型ΘTX来拟合feature和target的线性关系的,其中Θ是确定的。但是我们拟合的线性模型并不能完全准确的拟合数据,所以当我们将真实的观测数据带入到模型中会产生误差,我们用y(i)=ΘTx(i)+ε(i) 来表示,误差由于是由多种因素产生,根据中心极限定理以及我们平时对误差的一般假设,都可以将其看做服从期望为0的正态分布,将误差看做随机变量的话,y(i)也可以看做随机变量,其服从期望为ΘTx(i)的正态分布。由于线性回归大 阅读全文
posted @ 2012-11-07 20:50 ideawu 阅读(1228) 评论(0) 推荐(0) 编辑