代码改变世界

sift实现的双目测距

2011-11-13 21:30 by libing64, 4756 阅读, 0 推荐, 收藏, 编辑
摘要:最近一直在做双目测距的工作,今天终于获得一定的成果~拿出来与大家分享~一、源码下载:http://download.csdn.net/detail/renshengrumenglibing/3791149二、硬件:三、匹配效果:四、基本算法 参见学习opencv中关于双目测距的算法最关键的Z = fx*T/(x2 - x1)五、基本参数:摄像头间距:T = 187mm由于在实际测量过程中,发现摄像机的焦距并非固定不变的,在标定的时候会发现,随着距离的变大,测量的焦距逐渐变大,于是采用测量多组的的数据拟合 出摄像头的焦距公式求取焦距与实际距离的拟合公式:fx = g(distance)实际距离 阅读全文

opencv图像处理9-图像金字塔

2011-11-06 10:57 by libing64, 806 阅读, 0 推荐, 收藏, 编辑
摘要:图像金字塔在分割和匹配方面有重要用途,其中在sift匹配中是重要的一环~~先看效果:PyrDown图像的下采样void cvPyrDown( const CvArr* src, CvArr* dst, int filter=CV_GAUSSIAN_5x5 );src输入图像.dst输出图像, 宽度和高度应是输入图像的一半 ,传入前必须已经完成初始化filter卷积滤波器的类型,目前仅支持 CV_GAUSSIAN_5x5函数 cvPyrDown 使用 Gaussian 金字塔分解对输入图像向下采样。首先它对输入图像用指定滤波器进行卷积,然后通过拒绝偶数的行与列来下采样图像。PyrUp图像的上采样 阅读全文

opencv图像处理8-卷积

2011-11-06 10:46 by libing64, 1582 阅读, 0 推荐, 收藏, 编辑
摘要:卷积是本章所讨论的很多转换的基础。先看看效果:抽象的说,这个术语意味着我们对图像的每一个部分所做的操作。从这个意义上讲,我们在第五章所看到的许多操作可以被理解成普通卷积的特殊情况。一个特殊的卷积所实现的功能是由所用的卷积核的形式决定的。这个核本质上是一个大小固定,由数值参数构成的数组,数组的标定点通常位于数组的中心。数组的大小被称为核支撑。单就技术而言,核支撑实际上仅仅由核数组的非零部分组成。图6-1描述了以数组中心为定标点的3×3卷积核。若要计算一个特定点的卷积值,首先将核的标定点定位到图像的第一个像素点,核的其余元素覆盖图像中其相对应的局部像素点。对于每一个核点,我们可以得到这个 阅读全文

opencv图像处理7-打开大图

2011-11-05 23:33 by libing64, 670 阅读, 0 推荐, 收藏, 编辑
摘要:显示大图片,当图片较大时,可以通过鼠标拖动图片上下移动先看效果:由于opencv没有滑动条,无法像VC或者java那样直接滑动浏览,但是在图片上直接拖动也是一样的。拖动时通过捕获鼠标事件,记下按下和抬起的点,CvPoint first = cvPoint(0,0);CvPoint last = cvPoint(0,0);void on_mouse(int event ,int x, int y,int flags, void*param){switch(event){case CV_EVENT_LBUTTONDOWN:{first.x = x;first.y = y;}case CV_EVEN 阅读全文

图像处理--多个平台下双目视觉的实现

2011-11-05 17:46 by libing64, 2597 阅读, 0 推荐, 收藏, 编辑
摘要:VC6.0下的实现双目视觉见另一篇博客:http://blog.csdn.net/renshengrumenglibing/article/details/6884124这里主要讲解在opencv2.3+VS10下的实现,opencv2.1+VS10跟这个类似,但是需要逆序打开摄像头。先看效果:打开三个摄像头:两个USB摄像头一个联想自带的摄像头双目视觉实现总结:一、VC6.0+opencv1.0实现双目视觉时,采用的是使用了directshow的一个类CameraDShttp://blog.csdn.net/renshengrumenglibing/article/details/68841 阅读全文

图像处理-sift算法

2011-11-02 19:01 by libing64, 2289 阅读, 1 推荐, 收藏, 编辑
摘要:sift是图像匹配的非常经典的算法,但是很复杂,要想自己拿C或C++实现很麻烦,如果只是使用的话,有国外某高人维护的sift库,前期只要自己能够调用即可,关键是要熟悉大致的流程,对sift库有个了解,具体的工作只要调用其中的函数即可。匹配效果:sift是图像匹配的非常经典的算法,但是很复杂,要想自己拿C或C++实现很麻烦,如果只是使用的话,有国外某高人维护的sift库,前期只要自己能够调用即可,关键是要熟悉大致的流程,对sift库有个了解,具体的工作只要调用其中的函数即可。一、sift简介1、sift算法应用典型场合: 物体识别 机器人定位与导航 图像拼接 三维建模 手势识别 视频跟踪 笔记鉴 阅读全文

图像处理3--摄像头标定

2011-10-22 08:29 by libing64, 2926 阅读, 0 推荐, 收藏, 编辑
摘要:这几天在做摄像机标定,主要参考了opencv的例程,但是上面还是有一些Bug的,另外摄像头读取的方式改用的directshow的CameraDS类。一、摄像机标定基本步骤道具的准备:有photoshop、画图之类的公工具自制棋盘,采用A3或A4打印出来,贴到电脑旁的某个位置。1 新建一个模拟棋盘,标明横向和竖向的角点个数我绘制的棋盘角点6*72 初始化参数,4个内参数,以及畸变参数3 打开摄像头,获取一帧图像这里采用Directshow的读取方式,便于向双目的转换。4 寻找角点并绘出,当找出全部角点(6*7)时,认为该图片有效,存储图片5每找出一张图片就进行一次标定,更新参数6对3、4、5循环 阅读全文

图像处理2--打开多个摄像头

2011-10-18 13:05 by libing64, 413 阅读, 0 推荐, 收藏, 编辑
摘要:使用双目视觉这里用到了opencv和directshow两个方面的内容,本次没有用到MFC。需要对编译器进行设置(opencv在图像处理方面很强大,但是在图像采集方面似乎只能采集一个摄像头,因此这里借用directshow进行双目图像的获取,之后就可以利用opencv进行处理)首先新建一个console应用程序,空工程,添加一个main.cpp一、与directshow有关的设置首先要去下载两个类CameraDS.h CameraDS.cpp,并要拷贝目录DirectShow,因为采集图像时会用到其中的函数。下载话在CSDN上找一个双目视觉的工程,里面一般都有。//////////////// 阅读全文

图像处理0--directshow9.0b下载地址

2011-10-09 00:01 by libing64, 336 阅读, 0 推荐, 收藏, 编辑
摘要:下载DirectX 9 SDK开发包。这个现在还是比较难搞到的,可以到微软官网上去下载。自从DirectX 9.0c sdk后,DirectShow SDK不再包含在DirectX SDK中,而是以Extras的形式发布,后来集成了一部分SDK到Windows SDK中,也就是说后来的环境(比如vs2005、vs2008环境下)比较难配置,极有可能不稳定,产生这样那样的错误。初学者可能看到如此难搞的环境配置就望而却步了,不利于学习。所以还是在VC6.0或者VC++2003环境下配置DirectX 9.0 SDK。以下是几个包含DirectShow SDK的DirectX SDK的下载地址①Di 阅读全文

图像处理1--VC6.0下directshow配置

2011-10-08 13:51 by libing64, 267 阅读, 0 推荐, 收藏, 编辑
摘要:注:网上转载,测试通过DirectShow开发环境配置及测试例程 开发环境SDK:DirectX9.0b (Summer 2003)Visual C++ 6.0参考文档:SDK文档1) DirectShow->Getting Started->Setting Up the Build Environment2) DirectShow->DirectShow Reference->DirectShow Base Classes->Using the DirectShow Base Classes3) DirectShow->Getting Started-&g 阅读全文