随笔分类 -  算法思想

堆和栈
摘要:CvPoint3D32f ray_cross( CvMat* intr1, CvMat* rot1, CvMat* tran1, CvPoint2D32f pt1, CvMat* intr2, CvMat* rot2, CvMat* tran2, CvPoint2D32f pt2, double* err, int* f1, int* f2){ // alloc data structure CvMat* Q1 = cvCreateMat(3,3,CV_64F); CvMat* Q2 = cvCreateMat(3,3,CV_64F); CvMat* q1 = cvCrea... 阅读全文

posted @ 2011-10-12 15:36 伪君 阅读(381) 评论(0) 推荐(0)

stereo
摘要:void stereo_rectify(double*_K, CvSize image_size, double* _rot, double* _tran, double* _R1, double* _R2, double* _P1, double* _P2){ CvMat K_matrix = cvMat(3,3, CV_64F, _K); CvMat rot_mat = cvMat(3,3, CV_64F, _rot); CvMat tran_mat = cvMat(3, 1, CV_64F, _tran); CvMat R1_mat = cvMat(3,3, CV_64F, _R1); 阅读全文

posted @ 2011-10-12 14:39 伪君 阅读(530) 评论(0) 推荐(0)

decompose
摘要:void decompose_fundamental_matrix(double* mK, double* mF, double* mR, double* vt, CvMat* left_points, CvMat* right_points){ CvMat K_matrix = cvMat(3,3, CV_64F, mK); CvMat rotation_matrix = cvMat(3,3, CV_64F, mR); CvMat translate_vector = cvMat(3,1, CV_64F, vt); int i; int pcount = left_points->ro 阅读全文

posted @ 2011-10-12 14:36 伪君 阅读(826) 评论(0) 推荐(0)

递归与字符串
摘要:以前做过类似字符串的题目,当时觉得字符串也能用递归来做非常神奇,后来思考了下,觉得只要抓住字符串是由一个个字符组成的,从第一个字符到最后一个字符每一个都可以作为一次递归,把index作为参数传进去就行,以这种思想为指导才把此题解了出来。 对于每个字符只有两种情况,设当前字符串指针为x, 目标字符串指针为y: GetString(x,y)= GetString(x+1,y), 不取当前字符 GetString(x,y) = GetString(x+1,y+1), 取当前字符 1 ///////////////////////////////////////////////////... 阅读全文

posted @ 2011-09-21 21:41 伪君 阅读(965) 评论(0) 推荐(0)

SURF与SIFT
摘要:共同点:SIFT/SURF为了实现不同图像中相同场景的匹配,主要包括三个步骤:1、尺度空间的建立;2、特征点的提取;3、利用特征点周围邻域的信息生成特征描述子4、特征点匹配。 从博客上看到一片文章,http://blog.csdn.net/cy513/archive/2009/08/05/4414352.aspx,这一段的大部分内容源于这篇文章,推荐大家去看看。 如果两幅图像中的物体一般只是旋转和缩放的关系,加上图像的亮度及对比度的不同,要在这些条件下要实现物体之间的匹配,SIFT算法的先驱及其发明者想到只要找到多于三对物体间的匹配点就可以通过射影几何的理论建立它们的一一对应。 如... 阅读全文

posted @ 2011-08-31 09:19 伪君 阅读(11077) 评论(0) 推荐(1)

Thin Plate Spline (薄板样条函数)(TPS)
摘要:一直不太明白TPS是什么东西,今天特地上网查了一下,总结如下:1. TPS是一种插值方法,它寻找一个通过所有的控制点的弯曲最小的光滑曲面;就像一个薄铁板,通过所给定的几个“样条”(比如木条),铁板表面是光滑的。弯曲最小由一个能量函数定义,就是wiki上的那个双重积分。2. 对于3个不共线的控制点,TPS是一个平面,多于三个是一个曲面,少于三个则是未定义的。3. TPS常用来对形状进行non-rigid变形,比如给定原始形状的有限点集A,变形后的对应目标点集B,设C=B-A,对(Ax,Ay, Cx)拟合出一个TPS,就可以得到x方向的内插函数;对(Ax,Ay, Cy)拟合出来的TPS则可以得到y 阅读全文

posted @ 2011-08-27 11:09 伪君 阅读(6801) 评论(0) 推荐(0)

仿射变换
摘要:开始做模拟时钟的bean了,看dW上Java2D的那个例子很有意思,比JDK自带的applet要简单,因为用到了仿射变换(AffineTransformation),只用简单得多的运算就可以绘制较高质量的动画。乘SUN的JavaDoc中文化之东风,先把java.awt.geom.AffineTransform的APIdoc之一部分简单翻译一下,只涉及到一点几何和线性代数的小常识:=============================================AffineTransform类描述了一种二维仿射变换的功能,它是一种二维坐标到二维坐标之间的线性变换,保持二维图形的“平直性” 阅读全文

posted @ 2011-06-23 13:21 伪君 阅读(824) 评论(0) 推荐(0)

解SVD和最小二乘clapack
摘要:用IntelMKL解SVD和最小二乘Posted on04月 2, 2010byxuanmanstein2010年4月2日星期五这几天赶着移植算法,要把MATLAB程序用C++改写。涉及6000多维的方阵运算,幸亏笔记本上2008R2是64位的,64位MATLAB还能算出数来,32位电脑上的MATLAB直接就存储空间不足罢工了。研究了几个C++下矩阵运算的库,boost带的BLAS太矬,lapack,clapack,cpplapack全是在Linux上的设置多,讲windows下配置的太少,都得用Makefile慢慢编译……搞科学计算的牛人都是用Linux,可对我这种半路出家的矬人实在是过于高 阅读全文

posted @ 2011-06-09 10:38 伪君 阅读(1559) 评论(0) 推荐(0)

常见排序算法稳定性和复杂度分析
摘要:常见排序算法稳定性和复杂度分析1.排序算法的稳定性分析:若待排序的序列中,存在多个具有相同关键字的记录,经过排序,这些记录的相对次序保持不变,则称该算法是稳定的;若经排序后,记录的相对次序发生了改变,则称该算法是不稳定的。(1)冒泡排序冒泡排序就是把小的元素往前调或者把大的元素往后调。比较是相邻的两个元素比较,交换也发生在这两个元素之间。所以,如果两个元素相等,我想你是不会再无聊地把他们俩交换一下的;如果两个相等的元素没有相邻,那么即使通过前面的两两交换把两个相邻起来,这时候也不会交换,所以相同元素的前后顺序并没有改变,所以冒泡排序是一种稳定排序算法。(2)选择排序选择排序是给每个位置选择当前 阅读全文

posted @ 2011-05-26 16:25 伪君 阅读(470) 评论(0) 推荐(0)

链表反转
摘要:http://www.douban.com/note/81699216/单向链表的反转是一个经常被问到的一个面试题,也是一个非常基础的问题。比如一个链表是这样的: 1->2->3->4->5 通过反转后成为5->4->3->2->1。最容易想到的方法遍历一遍链表,利用一个辅助指针,存储遍历过程中当前指针指向的下一个元素,然后将当前节点元素的指针反转后,利用已经存储的指针往后面继续遍历。源代码如下:struct linka { int data; linka* next;};void reverse(linka*& head){ if(he 阅读全文

posted @ 2011-05-20 09:24 伪君 阅读(248) 评论(0) 推荐(0)

排序算法代码汇总
摘要:原文:http://blog.csdn.net/Sunboy_2050/archive/2010/06/03/5645831.aspx各种基本算法实现小结(五)—— 排序算法(均已测试通过)*选择排序|____简单选择排序 |____堆排序 |____归并排序*交换排序|____冒泡排序 |____快速排序*插入排序|____直接插入排序 |____折半排序 |____希尔排序*分配排序|____箱排序 |____基数排序======================================================================简单排序算法1、 冒泡排序测试环境 阅读全文

posted @ 2011-05-19 16:04 伪君 阅读(1399) 评论(0) 推荐(0)

BLAS dgemm矩阵乘法的用法小注
摘要:BLASdgemm矩阵乘法的用法小注Posted on04月 5, 2010byxuanmansteinhttp://xuanmanstein.wordpress.com/2010/04/05/blas-dgemm%E7%9F%A9%E9%98%B5%E4%B9%98%E6%B3%95%E7%9A%84%E7%94%A8%E6%B3%95%E5%B0%8F%E6%B3%A8/矩阵乘法C = A*BA:M*kB:k*N C:M*Ndgemm(&transa,&transb,&m,&n,&k,&alpha,A[0],&lda,B[0],&am 阅读全文

posted @ 2011-05-09 16:32 伪君 阅读(2011) 评论(0) 推荐(0)

双目测距与三维重建
摘要:OPENCV 中文参考资料:http://www.opencv.org.cn/index.php/Cv%E7%85%A7%E7%9B%B8%E6%9C%BA%E5%AE%9A%E6%A0%87%E5%92%8C%E4%B8%89%E7%BB%B4%E9%87%8D%E5%BB%BA#Rodrigues2原帖地址:http://blog.csdn.net/chenyusiyuan/archive/2010/10/24/5961769.aspx双目测距的基本原理如上图所示,双目测距主要是利用了目标点在左右两幅视图上成像的横向坐标直接存在的差异(即视差)与目标点到成像平面的距离Z存在着反比例的关系: 阅读全文

posted @ 2011-05-09 14:22 伪君 阅读(12187) 评论(3) 推荐(3)

深度优先搜索和广度优先搜索的深入讨论
摘要:一、深度优先搜索和广度优先搜索的深入讨论http://henuzhouhui.blog.163.com/blog/static/16686275720106107326583/(一)深度优先搜索的特点是无论问题的内容和性质以及求解要求如何不同,它们的程序结构都是相同的,即都是深度优先算法(一)和深度优先算法(二)中描述的算法结构,不相同的仅仅是存储结点数据结构和产生规则以及输出要求。(2)深度优先搜索法有递归以及非递归两种设计方法。一般的,当搜索深度较小、问题递归方式比较明显时,用递归方法设计好,它可以使得程序结构更简捷易懂。当搜索深度较大时,当数据量较大时,由于系统堆栈容量的限制,递归容易产 阅读全文

posted @ 2011-05-07 10:32 伪君 阅读(1497) 评论(0) 推荐(0)

导航