Friday, December 26, 2008

Use WTL under VCExpress

VCExpress was released in 11/7
We can use it for our wtl programming free.

1,Download and Install VCExpress 2005 from MSDN.
http://msdn.microsoft.com/vstudio/express/visualc/
2,Download, Install PSDK, and Update VCExpress Setting. Detail:
http://msdn.microsoft.com/vstudio/express/visualc/usingpsdk/default.aspx
3,Update the Visual C++ directories in the Projects and Solutions
section in the Options dialog box.Add atl path.
Include files: C:\Program Files\Microsoft Platform SDK\include\atl

4, Change atlwin.h and atlbase.h in PSDK\ATL folder

Change SetChainEntry function at L1725 of atlwin.h,define "int i" at first。
---------------------------------------------------------------
BOOL SetChainEntry(DWORD dwChainID, CMessageMap* pObject, DWORD
dwMsgMapID = 0)
{
int i;
// first search for an existing entry

for(i = 0; i < m_aChainEntry.GetSize(); i++)
---------------------------------------------------------------

Change AllocStdCallThunk and FreeStdCallThunk at L287 of atlbase.h,to new
macro
---------------------------------------------------------------
/* Comment it
PVOID __stdcall __AllocStdCallThunk(VOID);
VOID __stdcall __FreeStdCallThunk(PVOID);

#define AllocStdCallThunk() __AllocStdCallThunk()
#define FreeStdCallThunk(p) __FreeStdCallThunk(p)

#pragma comment(lib, "atlthunk.lib")
*/
#define AllocStdCallThunk() HeapAlloc(GetProcessHeap(),0,sizeof(_stdcallthunk))
#define FreeStdCallThunk(p) HeapFree(GetProcessHeap(), 0, p)
---------------------------------------------------------------

3,Download and Install the WTL from http://wtl.sf.net
4, Download AppWizard for VCExpress from
http://groups.yahoo.com/group/wtl/files/setup80express.zip
Unzip and Copy JS file into WTL\AppWiz folder, double click it to
install WTL Wizard into VCExpress

Enjoy VCExpress&WTL

Wednesday, December 24, 2008

blender 资源

http://blog.163.com/casper_163/blog/static/33997012200882391122913/

下面这个网站分章节提供了一些视频教程下载,非常清楚

http://www.geneome.net/blender-tutorials/

搜集了三本教程,都是英文版的!值得参考一下!
Blender基础
Blender建筑设计
Blender卡通造型

还有一个个人视频教程网站

Greybeard's Blender Tutorials

一个图文教程集中页面

http://tutlinks.tripod.com/tlinks.html


blender建模部分视频教程下载(摘自blendercn)
2007年07月10日 星期二 16:34

大家好,为了方便大家能够快速的学习,我对建模部分的视频教程做了一个汇总,视频教程分为两个部分,中文教程和英文教程,如果上传新教程我会更新帖子的内容。如有什么需求可向版主询问,我会尽力给大家收集更多更好的视频教程,欢迎大家下载!

下面是中文建模视频教程

一.基础部分 作者:icebird

1. A-01 认识blender 10'23"
ftp://ftp.linuxeden.com/blender/Blender_ZH/Icebird_BasicModling/chapter01/A-01.avi

2.A-02 基本物体操作 15'21"
ftp://ftp.linuxeden.com/blender/Blender_ZH/Icebird_BasicModling/chapter01/A-02.avi

3. A-03 视图操作 13'38"
ftp://ftp.linuxeden.com/blender/Blender_ZH/Icebird_BasicModling/chapter01/A-03.avi

4.A-04 操作中心点 12'00"
ftp://ftp.linuxeden.com/blender/Blender_ZH/Icebird_BasicModling/chapter01/A-04.avi

5.B-01-01 创建网格模型 10'05"
ftp://ftp.linuxeden.com/blender/Blender_ZH/Icebird_BasicModling/chapter02/B-01-01.avi

6.B-01-02 点层级修改 11'51"
ftp://ftp.linuxeden.com/blender/Blender_ZH/Icebird_BasicModling/chapter02/B-01-02.avi

7.B-01-03 线层级修改 14'21"
ftp://ftp.linuxeden.com/blender/Blender_ZH/Icebird_BasicModling/chapter02/B-01-03.avi

8.B-01-04 面层级修改 9'33"
ftp://ftp.linuxeden.com/blender/Blender_ZH/Icebird_BasicModling/chapter02/B-01-04.avi

9.B-01-05 复制合并物体 9'46"
ftp://ftp.linuxeden.com/blender/Blender_ZH/Icebird_BasicModling/chapter02/B-01-05.avi

10.B-01-06 常用脚本工具和网格工具的使用 11'29"
ftp://ftp.linuxeden.com/blender/Blender_ZH/Icebird_BasicModling/chapter02/B-01-06.avi

11.B-01-07 布尔运算 2'52"
ftp://ftp.linuxeden.com/blender/Blender_ZH/Icebird_BasicModling/chapter02/B-01-07.avi

12.B-01-08 网格细分与建模练习 20'08"
ftp://ftp.linuxeden.com/blender/Blender_ZH/Icebird_BasicModling/chapter02/B-01-08.avi



二.曲线文字部分 作者:kidux
121 总体概要 5:43
ftp://ftp.linuxeden.com/blender/Blender_ZH/Kidux_curve&Text/121.avi

122 曲线概要 1:57
ftp://ftp.linuxeden.com/blender/Blender_ZH/Kidux_curve&Text/122.avi

123 贝齐尔曲线属性(编辑) 8:28
ftp://ftp.linuxeden.com/blender/Blender_ZH/Kidux_curve&Text/123.avi

124 NURBS曲线属性 10:40
ftp://ftp.linuxeden.com/blender/Blender_ZH/Kidux_curve&Text/124.avi

125 曲线编辑面板介绍 17:38
ftp://ftp.linuxeden.com/blender/Blender_ZH/Kidux_curve&Text/125.avi

126 taperOb&BevOb的操作 17:07
ftp://ftp.linuxeden.com/blender/Blender_ZH/Kidux_curve&Text/126.avi

127 曲线变形和路径动画的简单介绍 5:52
ftp://ftp.linuxeden.com/blender/Blender_ZH/Kidux_curve&Text/127.avi

128 文字模型的介绍 14:01
ftp://ftp.linuxeden.com/blender/Blender_ZH/Kidux_curve&Text/128.avi

下面是英文建模视频教程部分

http://www.51nova.com/blender/chapter01.rar
http://www.51nova.com/blender/chapter02.rar

Tuesday, December 23, 2008

一种基于OpenCV的三维重建实现方案

[日期:2008-06-24] 来源: 作者:李健 史进 [字体: ]
摘 要 本文以 计算 机视觉三维重建技术为 研究 对象, 分析 了开放计算机视 觉函数库OpenCV中的三维重建模型,通过六个步骤,特别是摄像机标定和立体匹配中极线约束 方法 的使用,给出了基于OpenCV的三维重建算法。该算法充分发挥了OpenCV的函数库功能,提高了计算的精度效率,具有良好的跨平台移植性,可以满足各 种计算机视觉系统的需要。
关键词 计算机视觉;三维重建;OpenCV;摄像机标定;极线约束

1 引言

三维重建技术是计算机视觉、人工智能、虚拟现实等前沿领域的热点和难点,也是人类在基础研究和 应用 研究中面临的重大挑战之一。基于图像的三维重建是图像处理的一个重要研究分支,作为当今热门的虚拟现实和 科学 可视化的基础,它被广泛应用于检测和观察中。一个完整的三维重建系统通常可分为图像获取、摄像机标定、特征点提取、立体匹配、深度确定和后处理等6大部分[1] [3]。其中精确标定摄像机内外参数和立体匹配是三维重建中最重要也是最困难的 问题 。
开放源代码的计算机视觉类库OpenCV(Open Source Computer Vision Library)由英特尔公司位于俄罗斯的研究实验室所开发,它是一套可免费获得的由一些C函数和C++类所组成的库,用来实现一些常用的图像处理及计算机视觉算法[2]。 OpenCV与英特尔公司所开发的另一图像处理库IPL(Image Processing Library)兼容, IPL用于实现对数字图像的一些低级处理,而OpenCV则主要用于对图像进行一些高级处理,比如说特征检测与跟踪、运动分析、目标分割与识别以及3D重 建等。由于OpenCV的源代码是完全开放的,而且源代码的编写简洁而又高效,特别是其中大部分的函数都已经过汇编最优化,以使之能高效而充分地利用英特 尔系列处理芯片的设计体系,对于Pentium MMX, Pentium, Pentium Ⅲ及Pentium Ⅳ这些处理器而言,OpenCV的代码执行效率是非常高的,所以近年来在国外的图像处理相关领域中被广泛地使用,成为一种流行的图像处理软件。 OpenCV中的摄像机标定模块为用户提供了良好的接口,同时支持Windows、Linux 平台,有效地提高了开发效率,并且执行速度快,具有良好的跨平台移植性,因此可以很好地应用于工程实际当中。

2 三维重建的基本原理

2.1 图像获取

立体图像的获取是立体视觉的基础,图像获取的方式很多,主要取决于应用的场合和目的,还要考虑视点差异、光照条件、摄像机性能以及景物特点等因素的 影响 ,以利于立体计算。

2.2 摄像机标定[4]

摄像机标定是为了建立成像模型、确定摄像机的位置和属性参数,以确定空间坐标系中物体点同它的像点之间的对应关系。两个摄像机都要标定,如果摄像机是固定的,当从2-D计算机图像坐标推导3-D信息时,只需一次标定。
摄像机的标定方法可分为两大类:第一类是直接估计摄像机的位置、光轴方向、焦距等参数;第二类是通过最小二乘法拟合,确定三维空间点映射为二维图像点的变换矩阵。一个有效的摄像机模型,除了能够精确地恢复出空间景物的三维信息外,还有利于解决立体匹配问题。

2.3 特征提取

由多视点的视差确定3-D信息,关键是确定场景中同一物点在不同图像中的对应关系,解决该问题的方 法之一是选择合适的图像特征并进行匹配。特征是像素或像素集合或它们的抽象表达,常用的匹配特征主要有点状特征、线状特征和区域特征等。一般来讲,大尺度 特征含有较丰富的信息,本身数目较少,易于得到快速匹配,但对它们的提取与描述相对复杂,定位精度也差;而小尺度特征本身的定位精度高,表达描述简单,但 数目较多,所含信息量却较少,因而在匹配时需要采用较强的约束准则和匹配策略。
合理的选择匹配特征对立体匹配工作有十分重要的意义,应综合考虑各种因素,根据不同的景物特点和应 用要求选择。一般的,对于包含有大量非规则形状和高度突变的场景,比较适合提取点状特征,因为提取线段、区域等特征既困难又会引入误差:对于具有规则结构 的场景,若线段和区域特征的提取和描述比较容易且误差较小,应提取线段特征以实现快速匹配。

2.4 立体匹配[5]

立体匹配是根据对所选特征的计算,建立特征间的对应关系,将同一个空间点在不同图像中的映像点对应 起来,并由此得到相应的视差图像,立体匹配是双目视觉中最重要也是最困难的问题。当空间三维场景被投影为二维图像时,同一景物在不同视点下的图像会有很大 不同,而且场景中的诸多因素,如光照条件、景物几何形状和物理特性、噪声干扰和畸变以及摄像机特性等,都被综合成单一的图像灰度值。因此,要准确的对包含 了如此之多不利因素的图像进行无歧义匹配十分困难。
立体匹配的方法主要分为两大类,即灰度相关和特征匹配。灰度相关直接用象素灰度进行匹配,该方法优 点是匹配结果不受特征检测精度和密度的影响,可以得到很高的定位精度和密集的视差表面;缺点是依赖于图像灰度统计特性,对景物表面结构以及光照反射较为敏 感,因此在空间景物表面缺乏足够纹理细节、成像失真较大(如基线长度过大)的场合存在一定困难。基于特征的匹配方法的优点是使用从强度图像得到的特征作为 匹配基元,所以在环境照明发生变化的情况下较为稳定;缺点是特征提取需要额外计算量,另外由于特征是离散的,所以不能在匹配后直接得到密集的视差场。
匹配方法需要解决以下问题:选择正确的匹配特征;寻找特征间的本质属性;建立能正确匹配所选特征的稳定算法。

2.5 深度信息确定

当通过立体匹配得到视差图像后,就可以确定深度图像并恢复场景3-D信息了。影响距离测量精度的因 素主要有摄像机标定误差、数字量化效应、特征检测与匹配定位精度等,一般来讲,距离测量精度与匹配定位精度成正比,与摄像机基线长度成反比。增大基线长度 可以改善深度测量精度,但同时会增大图像间的差异,增加匹配的困难程度。因此,要设计一个精确的立体视觉系统,必须综合考虑各方面的因素,保证各环节都具 有较高的精度。

2.6 后处理[6]

后处理包括深度插值、误差校正和精度改善。立体视觉的最终目的是恢复景物可视表面的完整信息, 目前 ,无论哪种匹配方法都不可能恢复出所有图像点的视差,因此对于一个完整的立体视觉系统,必须进行最终的表面内插重建。

3 基于OpenCV的三维重建

OpenCV[2]中采用的定标方法是介于传统定标方法和自定标方法之间的一种方法,由张正友在其论文[3]中 提出的。这种方法不需要知道摄像机运动的具体信息,这点比传统定标技术更为灵活,同时仍需要一个特定的标定物以及一组已知的特征基元的坐标,这点不如自定 标灵活。它通过在至少3个不同的位置获取标定物的图像,计算出摄像机所有的内外参数。由于它比传统定标技术更为灵活,又可以得到不错的定标精度,所以被 OpenCV所采纳。
在这个模型的定标过程中将用到的三个坐标系:图像坐标系,摄像机坐标系和世界坐标系。通过坐标系之间的变换可以通过下面的公式把图像坐标系的点和世界坐标系[7] [8]
由于矩阵A包含了摄像机全部的6个内参数,所以称A为摄像机内参数矩阵。PC为模型的外参数矩阵,可以通过以下公式得到:

其中,为旋转矩阵,为平移向量。
基于OpenCV的摄像机标定采用通用的棋盘标定模板,先用函数 cvFindChessboardCorners()粗略提取出棋盘的角点,然后再使用FindCornerSubPix()函数,进一步精确得到角点亚 象素级的坐标值。最后把坐标值代入cvCalibrateCamera2()函数,得到摄像机的内外参数值(效果如图1所示)。
图1 提取角点并显示的效果图(棋盘取自OpenCV)
OpenCV中有Sobel,Laplace,Canny等几种用于边缘检测的算子。但一般使用坎尼(Canny)算子也就是cvCanny()函数做边缘检测和特征提取(如图2)。
图2 做Canny处理后的比较图
三维重建中最大的难点也是最重要的部分就是立体匹配部分。在OpenCV中选用基于特征匹配中的极线约束 方法 [9]
假设空间一点P,它在两个摄像机成像平面上的投影点分别为P1P2,如图3所示。其中,C1C2分别为两个摄像机的中心,即摄像机坐标系的原点。
在极线几何中,我们称C1C2的连线为基线。基线和两摄像机成像平面的交点e1e2分别为两摄像机的极点,它们分别为两个摄像机中心C1C2在对应的摄像机成像平面上的投影坐标。P、C1C2组成的三角平面称为极平面π。π和两个摄像机成像平面的交线l1l2称为极线,一般称l1为点P2对应的极线,l2为点P1对应的极线,l1l2互为对应极线。
图3
我们在极平面π上另取一点P′,从图中可以看到,它在两摄像机平面上的投影点为P1P2′,其中,P2P2′都在极线l2上。这就是极线约束,即当给定一点P1, 它的匹配点一定出现在它所对应的极线上,由此,可以将我们的搜索空间压缩到一维的直线,即极线上。在OpenCV中可以先使用函数 cvFindFundamentalMat()求出图像的基础矩阵,然后用把求得的基础矩阵代入函数 cvComputeCorrespondEpilines()函数中求出一幅图像中的点在另一幅图像中的对应极线。
求得极线后,对图像上沿极线方向上的像素点进行灰度相似性的匹配,能很方便的找出该点在对应图像上的匹配点。

4 实验结果

基于上述原理和OpenCV的函数,利用VC6.0开发了一个全套的三 维重建系统。通过上述的6个步骤最终还原出了物体的图形。程序经过严格的测试,运行稳定。在进行相机标定时,要注意的是:照片越多(至少3幅) 计算 的内外参数就越精确。而且其中任意两幅图像所对应的摄像机光轴不能是平行的。
图4 实验所用到的左右对应图像
图5 提取到的轮廓
图6 匹配过程(图中白点标记为一对对应点)
图7 点重建的效果图(使用OpenGL重建)

5 结束与展望

三维重建视觉作为计算机视 觉中的一个重要分支,一直是计算机视觉 研究 的重点和热点之一。它直接模拟了人类视觉处理景物的方式,可以在多种条件下灵活地测量景物的立体信息。对它的研究,无论是在视觉生理的角度还是在工程 应用 的角度都具有十分重要的意义。三维重建视觉技术在由物体的二维图像获得物体的深度信息上具有很大的优越性。
本文利用OpenCV开发的三维重建的系统具有计算简单,结果精确,运行效率高,可以跨多平台等优点。系统可以有效的应用于各种可使用计算机视觉的应用中。
本试验系统适宜于测量范围不太大、遮挡较少的空间物体的三维测量,对于遮挡较严重的情况,我们需要增加摄像机的数目,从更多方向对物体进行摄像,通过在多个方向上运用双目立体视觉原理进行三维重建。

参考 文献

[1] Park J S. Interactive 3D reconstruction from multiple images:a primitive-based approach [J]. Pattern Recognition Letters, 2005, 26(16) : 2558-2571
[2] Intel Corporation. Open Source Computer Vision Library Reference Manual [S]. 2001-12
[3] 马颂德, 张正友. 计算机视觉-计算 理论 与算法基础[M]北京: 科学 出版社, 2003
[4] 毛剑飞,邹细勇,诸静. 改进的平面模板两步法标定摄像机 [J]. 中国 图像图形学报, 2004, 9(7):846-852
[5] 徐奕,周军,周源华.立体视觉匹配技术.计算机工程与应用,2003,39(15):1-5
[6] Pollefeys M, Koch R, Van Gool L. Self-calibration and Metric Reconstruction in Spite of Varying and Unknown Internal Camera Parameters[C]. Proc. of International Conference on Computer Vision, Bombay, India, 1998: 90
[7] Hartley R I, Zisserman A. Multiple View Geometry in Computer Vision [M]. Cambridge University Press, 2000
[8] Wu Fuchao, Li Hua, Hu Zhanyi. A New Camera Self-calibration Method Based on Active Vision System [J]. Chinese Journal of Computers, 2000,23(11): 1130-1139
[9] 文贡坚, 王润生. 一种稳健的直线提取算法[J ]. 软件学报 2001 , 12 (11) : 1660-1666

深刻了解OPENCV

深刻了解OPENCV

作者刘瑞祯 文章来源http://blog.csdn.net/hunnish 点击数12240 更新时间:2007-1-12 15:36:36

OpenCVIntel资助的开源计算机视觉库。它由一系列 C 函数和少量 C++ 类构成,实现了图像处理和计算机视觉方面的很多通用算法。

OpenCV 拥有包括 300 多个C/C++函数的跨平台的中、高层 API。它不依赖与其它的外部库,尽管也可以使用某些外部库。

OpenCV 对非商业应用和商业应用都是免费(FREE)的。(细节参考发布版本的 license)。 另外OpenCV 也为Intel公司的 Integrated Performance Primitives (IPP) 提供了透明接口。 这意味着如果有为特定处理器(当然是INTEL的处理器了)优化的的 IPP 库, OpenCV 将在运行时自动加载这些库。

更多关于 IPP 的信息请参考: http://www.intel.com/software/products/ipp/index.htm

总纲:

C/C++编写的开源计算机视觉库。

目的是为了实时应用。

独立于操作系统/硬件/图形管理器。

通用的图像/视频载入、保存和获取模块。

底层和高层的应用开发包。

特征:

图像数据的操作 ( 分配、释放、复制、设置和转换)

图像是视频的输入输出I/O (文件与摄像头的输入、图像和视频文件输出)。

矩阵和向量的操作以及线性代数的算法程序(矩阵积、解方程、特征值以及奇异值等)。

各种动态数据结构(列表、队列、集合、树、图等)。

基本的数字图像处理(滤波、边缘检测、角点检测、采样与差值、色彩转换、形态操作、直方图、图像金字塔等)。

结构分析(连接部件、轮廓处理、距离变换、各自距计算、模板匹配、Hough变换、多边形逼近、直线拟合、椭圆拟合、Delaunay 三角划分等)。

摄像头定标(发现与跟踪定标模式、定标、基本矩阵估计、齐次矩阵估计、立体对应)。.

运动分析(光流、运动分割、跟踪)。

目标识别(特征法、隐马尔可夫模型:HMM)。

基本的GUI (图像与视频显示、键盘和鼠标事件处理、滚动条)。

图像标注(线、二次曲线、多边形、画文字)

OpenCV 模块:

cv 主要的OpenCV 函数。

cvaux 辅助的(实验性的)OpenCV 函数。

cxcore 数据结构与线性代数支持。

highgui 图像界面函数。

目前OpenCV方面的资源已经很多了,当然最简单的方法还是在网上搜索一下,比如在在 Google (http://www.google.com )中输入 "OpenCV" 进行相关搜索。这里给出一些作为参考:

参考手册:

英文:/docs/index.htm

中文:http://www.opencv.org.cn/

网络资源::

官方网站:http://www.intel.comhttp://www.china-vision.net/technology/computing/opencv/

中文官方网站:http://www.opencv.org.cn/

软件下载:http://sourceforge.net/projects/opencvlibrary/

书籍:

Open Source Computer Vision Library by Gary R. Bradski, Vadim Pisarevsky, and Jean-Yves Bouguet, Springer, 1st ed. (June, 2006).

视频处理的样例程序 ( /samples/c/)

彩色跟踪:camshiftdemo

点跟踪:lkdemo

运动分割:motempl

边缘检测: laplace

图像处理的样例程序(在 /samples/c/):

边缘检测: edge

分割:pyramid_segmentation

形态学操作: morphology

直方图:demhist

距离变换:distrans

椭圆拟合:fitellipse

目前OpenCV的最新版本是 200611月发布的 OpenCV 1.0 版,它的一些新特性包括:

新函数与新特征

支持的新编译器/环境:

- GCC 4.x

- Visual Studio .NET 2005.

注意:

工程文件 .vcproj's 以及相应的环境文件均被转换成 VS.NET 2005 的格式,因此它们不能被 VS.NET 2003 打开。作为工作区,可以将工程文件和工作区转换为 Visual Studio 6.0,再转换到 VS.NET 2003。工程可以在 Win32 以及 x64 (a.k.a. EM64T/AMD64) 平台上编译。默认情况下支持 OpenMP.

- MacOSX 上,通用的 OpenCV 二进制代码可以在缺省情况下编译,因此 PPC INTEL MAC‘S 系统全部都支持。

- 取消了对 Borland C++ 的支持,但是仍然有一个脚本文件 utils\gen_make.py 可以通过生成文件makefile.bcc's 来编译 (没有在 RC1 上测试)。

- 新的命令行 makefiles _make\makefile.* 被引入,允许用户在 Win64 (EM64T/AMD64 and Itanium) 平台上编译 OPENCV。具体细节参考文件 INSTALL

cxcore

- 增加了一些新的函数:cvMixChannels, cvRandShuffle, cvRange, cvCalcPCA, cvProjectPCA, cBackProjectPCA, cvNormalize, cvReduce, cvGetNumThreads, cvSetNumThreads, cvGetThreadNum. 更多细节参考 /docs/ref/opencvref_cxcore.htm

- 扩展了函数 cvCalcCovarMatrix, cvMulTransposed

- 为库增加宏: cxcore/include/cvver.h

- CvImage CvMatrix 增加 C++ 类:cxcore/include/cxcore.hpp 以及样例 samples/c/image.cpp

- 矩阵的最大通道数增加到 64 个,尽管只有一些特殊函数才处理这样的图像。

cv

- 新函数:cvPyrMeanShiftFiltering, cvWatershed, cvGetAffineTransform. 更多细节见docs/ref/opencvref_cv.htm

- 扩展:cvDistTransform (true distance transform algorithm), cvThresh (Otsu adaptive algorithm), cvCanny (使用真实梯度)

- 所有的滤波函数重新编写过,为线性可分以及不可分滤波增加了新的 C++ ,并增加了morphology, laplace, box filer . cv/include/cv.hpp.

API 的变化:

cvCamShift, cvBoxPoints 以及所有其它与角度有关的函数,现在都用角度而不是弧度返回

cvaux:

- 增加了新的大型视频监控模块,见(cvaux/src/vs and cvaux/include/cvvidsurv.h)。该模块完善了智能目标跟踪功能,见 docs/vidsurv 中的描述。

ml (机器学习)

- 这是一个全新的为统计分类、回归以及聚类而写的 C++ 类库. docs/ref/opencvref_ml.htm.

-

highgui

- 所有的视频捕捉的代码在结构上都重新构造并且按模块划分,采用了更好的函数名字(原有的函数名字通过宏仍然支持)。

- 增加了对 Quicktime (MacOSX) Xine (Linux, (注意查看相关的许可)!)) 的支持.

捆绑与界面:

- 现在支持 IPP 5.1.*,而这是一个推荐与OPENCV一起使用的版本。用户可以执行建立单独的IPP DLL 作为二进制版本的分发。见(interfaces/ipp)

- 大大提高并扩展了与 Python 的绑定( interfaces/swig[/python] 以及 samples/python).

优化

应用新的 IPP5.1 功能,下列的滤波函数都被大大优化:cvSobel, cvLaplace, cvErode, cvDilate.

cvFilter2D 对于大的内核运行得更快 (使用基于 DFT 的算法)

一些函数可以使用 OPENMP 做并行处理:cvHaarDetectObjects, cvCalcOpticalFlowPyrLK, cvDistTransform (只是对于新算法适用)。因此它们的运行速度在双核CPU上要快 ~50-80% , 当代码用 Intel compiler 或者 MSVC2005 编译时。

OpenCV是一个开源的项目,它的成长与完善均依赖于广大而热情的参与者,因此了解OpenCV的最有效方法无疑是通过互联网来自我学习和认识。当你拿到一个OpenCV版本时,要做的事情,简单而言是:

参考本书以及OpenCV安装包中提供的例子:大量的样例程序是了解OpenCV最直接的方法,OpenCV本身所提供的例子均放置于:\samples\ 目录下,表示安装OpenCV后的系统目录。

Visual Studio 中加载 OpenCV workspace

Microsoft Visual Studio 6.0 使用 opencv.dsw

Miscrosoft Visual Studio .NET 2003 使用 opencv.sln

Borland C++ BuilderX 使用 cbuilderx/opencv.bpgr
选择 cvsample 项目,编译并运行。阅读代码并且按照自己的想法更改它。

http://groups.yahoo.com/group/OpenCVOpenCV archives 搜索你感兴趣的主题。

scratch 创建新的项目,或者修改现有的 cvsample 有专门为 Microsoft Visual Studio 设计的 application wizard 用来创建 OpenCV-aware 项目;它们从 http://groups.yahoo.com/group/OpenCV Files section - 你必须注册为 OpenCV@yahoogroups.com 用户)查找到。

参加OpenCV的邮件组,具体方法是发送邮件到 OpenCV-subscribe@yahoogroups.com,成为成员後并登录後,你可以在 http://groups.yahoo.com/group/OpenCV 阅读内容。 另外也可以访问国内的一些OpenCV站点,如:OpenCV中文站点(http://www.opencv.org.cn)以及 阿须数码 中文OPENCV论坛http://www.assuredigit.com/forum ),可以在那里找到很多有用资料。

 

作者介绍:

刘瑞祯,1990年获北京航空航天大学学士学位,1998年入中科院自动化所模式识别国家重点实验室攻读博士学位,主要从事数字水印、图形图像、视频处理及计算机视觉等领域的研究。