摘要: 几何变换几何变换可以看成图像中物体(或像素)空间位置改变,或者说是像素的移动。几何运算需要空间变换和灰度级差值两个步骤的算法,像素通过变换映射到新的坐标位置,新的位置可能是在几个像素之间,即不一定为整数坐标。这时就需要灰度级差值将映射的新坐标匹配到输出像素之间。最简单的插值方法是最近邻插值,就是令输出像素的灰度值等于映射最近的位置像素,该方法可能会产生锯齿。这种方法也叫零阶插值,相应比较复杂的还有一阶和高阶插值。插值算法感觉只要了解就可以了,图像处理中比较需要理解的还是空间变换。空间变换空间变换对应矩阵的仿射变换。一个坐标通过函数变换的新的坐标位置:所以在程序中我们可以使用一个2*3的数组结构 阅读全文
posted @ 2014-03-26 17:23 YCwavelet 阅读(478) 评论(0) 推荐(0) 编辑
摘要: Hough变换与Radon变换的联系与区别Hough变换把图像空间中给定的曲线按曲线的参数表达式变换成参数空间中的点,然后通过在参数空间中寻找峰值来达到在图像空间中寻找曲线的目的。可以使用Hough变换来寻找图像中的直线。Radon变换则以线积分的形式把图像空间投影到ρθ空间(等同于直线的参数空间)。直线Hough变换与Radon变换的区别在于前者是直线参数变换的离散形式,而后者则是直线参数变换的连续形式。所以Hough变换直接应用在二值图像上,而Radon变换直接应用在灰度图像上。另外,由于二值图像只需要处理前景或者背景像素,所以Hough变换速度一般更快。Hough变换通常用在几何形状检测 阅读全文
posted @ 2014-03-25 09:48 YCwavelet 阅读(2766) 评论(0) 推荐(1) 编辑
摘要: 第一步:开辟两个和原始图像一样大小的图像内存区,只是其深度为IPL_DEPTH_16S,假设原始图像为pSrc(iplimage结构)IplImage *p16SX = cvCreateImage(cvSize(pSrc->width,pSrc->height),IPL_DEPTH_16S,1);IplImage *p16SY = cvCreateImage(cvSize(pSrc->width,pSrc->height),IPL_DEPTH_16S,1);p16SX->origin = pSrc->origin;p16SY->origin = pSr 阅读全文
posted @ 2014-03-09 23:20 YCwavelet 阅读(7157) 评论(0) 推荐(0) 编辑
摘要: //针对大小为winsize的图,计算所有HaarFeature的rect,存入features返回,即获取所有特征坐标CvIntHaarFeatures* icvCreateIntHaarFeatures( CvSize winsize,int mode,int symmetric )//训练样本图集//创建结构CvHaarTrainigData,分配空间,并未填入sample数据CvHaarTrainigData* icvCreateHaarTrainingData( CvSize winsize, int maxnumsamples )//计算训练样本集的特征值,调用icvGetTrai 阅读全文
posted @ 2014-02-12 10:43 YCwavelet 阅读(4153) 评论(0) 推荐(0) 编辑
摘要: 1. Adaboost方法的引入1.1 Boosting方法的提出和发展 在了解Adaboost方法之前,先了解一下Boosting方法。 回答一个是与否的问题,随机猜测可以获得50%的正确率。如果一种方法能获得比随机猜测稍微高一点的正确率,则就可以称该得到这个方法的过程为弱学习;如果一个方法可以显著提高猜测的正确率,则称获取该方法的过程为强学习。1994年,Kearns和Valiant证明,在Valiant的PAC(Probably ApproximatelyCorrect)模型中,只要数据足够多,就可以将弱学习算法通过集成的方式提高到任意精度。实际上,1990年,SChapire就首先构造 阅读全文
posted @ 2014-02-10 20:42 YCwavelet 阅读(471) 评论(0) 推荐(0) 编辑
摘要: 1. 弱分类器在确定了训练子窗口中的矩形特征数量和特征值后,需要对每一个特征f ,训练一个弱分类器h(x,f,p,O) 。在CSDN里编辑公式太困难了,所以这里和公式有关的都用截图了。特别说明:在前期准备训练样本的时候,需要将样本归一化和灰度化到20*20的大小,这样每个样本的都是灰度图像并且样本的大小一致,保证了每一个Haar特征(描述的是特征的位置)都在每一个样本中出现。2. 训练强分类器在训练强分类器中,T表示的是强分类器中包含的弱分类器的个数。当然,如果是采用级联分类器,这里的强分类器中的弱分类器的个数可能会比较少,多个强分类器在级联起来。在c(2)步骤中,“每个特征f”指的是在20* 阅读全文
posted @ 2014-02-10 20:40 YCwavelet 阅读(329) 评论(0) 推荐(0) 编辑
摘要: 转自:http://blog.sina.com.cn/u/1789391425OpenCv中文论坛精华地址http://www.opencv.org.cn/index.php/User:Ollydbg23http://sivp.sourceforge.net/(sivp)一、基础操作1. 数据类型 数据结构了解图像相关:cvArrcvMat IplImage数据数组的维数, 与数据的通道数 见P46 (76)2. 常见的矩阵操作熟悉3. 数据的保存和读取4. 图像的加载和显示5. 视频的操作6. 内存与序列a. 内存存储器CvMemStorage双向链表动态对象(cvSeqcvSet)的内存c 阅读全文
posted @ 2014-01-12 14:29 YCwavelet 阅读(844) 评论(0) 推荐(0) 编辑
摘要: CvSeq可动态增长元素序列typedef struct CvSeq{CV_SEQUENCE_FIELDS()} CvSeq;结构CvSeq是所有OpenCV动态数据结构的基础。在1.0版本中,将前六个成员剥离出来定义成一个宏. 通过不同寻常的宏定义简化了带有附加参数的结构 CvSeq 的扩展。为了扩展 CvSeq, 用户可以定义一新的数据结构或在通过宏CV_SEQUENCE_FIELDS()所包括的 CvSeq 的域后在放入用户自定义的域。有两种类型的序列 -- 稠密序列和稀疏序列。稠密序列都派生自 CvSeq, 它们用来代表可扩展的一维数组 -- 向量,栈,队列,双端队列。数据间不存在空隙 阅读全文
posted @ 2014-01-11 23:53 YCwavelet 阅读(907) 评论(0) 推荐(0) 编辑