08 2011 档案

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 伪君 阅读(11076) 评论(0) 推荐(1)

VC6.0上安装OpenGL的glut库
摘要:Windows环境下的GLUT下载地址:(大小约为118k)http://www.openglsource.com/download/download.htmOpenGL的例子大都需要用到OpenGL应用工具包:GLUT库,下面讲讲怎样安装Visual C++ 6.0 安装glut库:1。下载GLUT库:http://www.openglsource.com/download/download.htm2。将压缩包内的glut.h放到.../Microsoft Visual Studio/VC98/Include/GL目录下 将glut32.lib放到.../Microsoft Visual S 阅读全文

posted @ 2011-08-30 13:27 伪君 阅读(1283) 评论(0) 推荐(0)

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 伪君 阅读(6792) 评论(0) 推荐(0)

sba FAQ
摘要:sba FAQQ1 --什么是sba?sba是一个C/C++软件包对广义稀疏光束平差,在GNU公共许可证下分发。sba是通用的,提供关于定义涉及光束法平差的图像投影的参数选择和函数关系增强的灵活性。Q2 --什么是光束法平差?假设给定一系列图像中观测到的一组对应点集相应的三维坐标的初始估计,以及关于每张图像的viewing参数的初始估计。光束法平差(BA)是一个大的最优化的问题,包括同时精化三维结构和viewing参数(即相机姿态和可能的本征校准和径向畸变),为了获得一个在特定的假设下最优化的重建,考虑与观测的图像特征有关的噪声:如果图像误差满足均值为零的正态分布,那么BA是最大似然法估计。它 阅读全文

posted @ 2011-08-24 09:04 伪君 阅读(708) 评论(1) 推荐(0)

vector作为参数传递到dll问题
摘要:2010-08-05 12:09今天写程序的时候要给一个模块的dll传递一个参数,由于参数数量是可变的,因此设计成了vector<string>类型,但调试过程中发现在exe中的参数传递到dll中的函数后,vector变成空的,改成传引用类型后,vector竟然变得很大,并且是无意义的参数。对于这个问题,两种办法:1.传递vector指针2.传递const vector<TYPE>。究其原因:是因为vector在exe和dll之间传递的时候,由于在dll内可能对vector插入数据,而这段内存是在dll里面分配的,exe无法知道如何释放内存,从而导致问题。而改成cons 阅读全文

posted @ 2011-08-23 10:36 伪君 阅读(1756) 评论(0) 推荐(0)

MFC下VECTOR释放debug错误
摘要:If your DLL and Exe use the static CRT, this won't work properly. Use the DLL CRT in both Exe and DLL. (/MD or /MDd)Unjedai wrote:Can I have the following method in a DLL and call it from a Client, like this?// DLL filevoid DllFunction (std::vector<int> &B){ B.push_back(1);}----------- 阅读全文

posted @ 2011-08-06 11:08 伪君 阅读(1108) 评论(0) 推荐(0)

文档类,视图类,框架类,应用程序类句柄获取
摘要:VC中常用的文档类,视图类,框架类,应用程序类,自定义类中获取其它四个类的方法A:GET App AfxGetInstanceHandle() AfxGetApp()GET Frame->View->Document SDI AfxGetMainWnd() -> GetActiveView() -> GetDocument() MDI AfxGetMainWnd() -> MDIGetActive() -> GetActiveView() -> GetDocument()GET Menu CMenu *pMenu=AfxGetApp()->m_p 阅读全文

posted @ 2011-08-05 20:19 伪君 阅读(1081) 评论(0) 推荐(0)

CVMAT操作
摘要:综述:OpenCV有针对矩阵操作的C语言函数. 许多其他方法提供了更加方便的C++接口,其效率与OpenCV一样.OpenCV将向量作为1维矩阵处理.矩阵按行存储,每行有4字节的校整.分配矩阵空间:CvMat* cvCreateMat(int rows, int cols, int type);type: 矩阵元素类型. 格式为CV_<bit_depth>(S|U|F)C<number_of_channels>.例如: CV_8UC1 表示8位无符号单通道矩阵, CV_32SC2表示32位有符号双通道矩阵.例程:CvMat* M = cvCreateMat(4,4,CV 阅读全文

posted @ 2011-08-05 09:53 伪君 阅读(326) 评论(0) 推荐(0)

在刷新窗口时经常要调用重绘函数
摘要:在刷新窗口时经常要调用重绘函数MFC提供了三个函数用于窗口重绘InvalidateRect(&Rect)Invalidate()UpdateWindow()当需要更新或者重绘窗口时,一般系统会发出两个消息WM_PAINT(通知客户区有变化)和WM_NCPAINT(通知非客户区有变化)--WM_NVPAINT系统会自己搞定--WM_PAINT消息对应的函数是OnPaint(),它是系统默认的接受WM_PAINT消息的函数,但我们一般在程序中做重绘时都在OnDraw函数中进行的,因为在ONPAIN函数中调用了ONDRAW函数。///CView默认的标准的重画函数void CView::On 阅读全文

posted @ 2011-08-04 13:13 伪君 阅读(1088) 评论(0) 推荐(0)

动态链接库与静态链接库
摘要:静态库包括.lib和.h文件,在工程中使用静态库分为3步:1在工程中加入静态库,有两种方法:方法一:项目设置中引用.lib,project-setting-link-object/library modules中添加.lib;(需要在tools/options设置正确的引用路径)方法二:在项目中直接加入lib,project-add to project-files,选择正确的.lib。2在工程中包括.h文件;(可能需要在tools/options设置正确的引用路径)3在工程中使用静态库中的函数.动态链接库一般包括.lib(导出函数),.h,.dll,使用动态库有两种情况:1隐式链接,同使用静 阅读全文

posted @ 2011-08-01 21:50 伪君 阅读(426) 评论(0) 推荐(0)

不同级目录文件的#include
摘要:本文主要介绍了如何不同文件夹下使用预处理器指示符#include。假设我们有如下一个工程,其中包含了几个源代码文件和头文件。其中main.c是主源代码文件,里面包含main函数。在base中包含:func3.h,func3.c,文件夹main和文件夹func4在main中包含:main.c,func1.h,func1.c和文件夹func2。在func2中包含:func2.h和func2.c在func4中包含:func4.h和func4.c在main中包含头文件func1.h:#include "func1.h"这里main.c和func1.h在同一个文件下。在main中包含 阅读全文

posted @ 2011-08-01 08:55 伪君 阅读(1581) 评论(0) 推荐(0)

导航