计算机视觉/图像处理研究中经常要用到Matlab,虽然其自带了图像处理和计算机视觉的许多功能,但是术业有专攻,在进行深入的视觉算法研究的时候Matlab的自带功能难免会不够用。本文收集了一些比较优秀的Matlab计算机视觉工具箱,希望能对国内的研究者有所帮助。
VLFeat:著名而常用
许可证:BSD
著名的计算机视觉/图像处理开源项目,知名度应该不必OpenCV低太多,曾获ACM Open Source Software Competition 2010一等奖。使用C语言编写,提供C语言和Matlab两种接口。实现了大量计算机视觉算法,包括:
- 常用图像处理功能,包括颜色空间变换、几何变换(作为Matlab的补充),常用机器学习算法,包括GMM、SVM、KMeans等,常用的图像处理的plot工具。
- 特征提取,包括 Covariant detectors, HOG, SIFT,MSER等。VLFeat提供了一个vl_covdet() 函数作为框架,可以方便的统一所谓“co-variant feature detectors”,包括了DoG, Harris-Affine, Harris-Laplace并且可以提取SIFT或raw patches描述子。
- 超像素(Superpixel)分割,包括常用的Quick shift, SLIC算法等
- 高级聚类算法,比如整数KMeans:Integer k-means (IKM)、hierarchical version of integer k-means (HIKM),基于互信息自动判定聚类类数的算法Agglomerative Information Bottleneck (AIB) algorithm等
- 高维特曾匹配算法,随机KD树Randomized kd-trees
可以在这里查看VLFeat完整的功能列表。
(欢迎访问计算机视觉研究笔记http://cvnote.info或者关注新浪@cvnote)
MexOpenCV:让Matlab支持调用的OpenCV
项目网站:http://www.cs.sunysb.edu/~kyamagu/mexopencv/
作者Kota Yamaguchi桑是石溪大学(Stony * University)的PhD,早些时候自己搞了一套东西把OpenCV的代码编译成Matlab可用的mex接口,然后这个东西迅速火了。今年夏天这个项目被OpenCV吸收为一个模块,貌似是搞了一个Google Summer of Code(GSoC)的项目,最近(大概是9、10月)已经merge到了OpenCV主包,有兴趣的可以到Github的OpenCV库下的module/matlab去玩一下,应该会在10月份的OpenCV 3 alpha里正式发布。现在OpenCV就同时有了Python和Maltab的binding(好强大)。具体的功能就不细说了,既然是OpenCV的binding,当然是可以使用OpenCV的绝大多数算法了。比如这样:
1
2
3
4
5
6
7
|
%loadanimage(Matlab)
I=imread('cameraman.tif');
%computetheDFT(OpenCV)
If=cv.dft(I,cv.DFT_COMPLEX_OUTPUT);
|
Peter Kovesi的工具箱:轻量好用,侧重图像处理
项目网站:http://www.csse.uwa.edu.au/~pk/research/matlabfns/
这位Peter大哥目前在The University of Western Australia工作,他自己写了一套Matlab计算机视觉算法,所谓工具箱其实就是许多m文件的集合,全部Matlab实现,无需编译安装,支持Octave(如果没有Matlab的话,有了这个工具箱也可以在Octave下进行图像处理了)。别看这位大哥单枪匹马,人家的工具箱可是相当有名,研究时候需要哪个Matlab的计算机视觉小功能,直接到他家主页上下几个m文件放在自己文件夹就好了。这个工具箱主要以图像处理算法为主,附带一些三维视觉的基本算法,列一些包括的功能:
- Feature Detection via Phase Congruency,求达人解释这个是啥
- Spatial Feature Detection,Harris、Canny之类的特征算法
- Edge Linking and Line Segment Fitting,边缘特征和线特征的各种操作
- Image Denoising,图像降噪
- Surface Normals to Surfaces,从法向量积分出表面
- Scalogram Calculation,求达人解释这个是啥
- Anisotropic diffusion,著名的保边缘平滑算法
- Frequency Domain Transformations,傅立叶变换
- Functions Supporting Projective Geometry,透视几何、三维视觉的一些算法
- Feature Matching、特征匹配
- Model Fitting and Robust Estimation、RANSAC
- Fingerprint Enhancement,指纹图像增强
- Interesting Synthetic Images,一些好玩儿的图像生成算法
- Image Blending,图像融合
- Colourmaps and colour conversions,颜色空间算法
可以在网站上看到全部功能的介绍和下载,非常推荐试一下,也可以学到不少算法。
Machine Vision Toolbox:侧重机器视觉、三维视觉
项目网站:http://www.petercorke.com/Machine_Vision_Toolbox.html
许可证:LGPL
以前没有用过这个工具箱,最近发现竟然非常强大,而且和我自己的工作还很相关。这个工具箱侧重机器视觉,作者是另一个Peter,Peter Corke在机器人界很有名,他在2011年写了一本书《Robotics, Vision & Control》介绍了机器视觉相关的颜色、相机模型、三维视觉、控制等研究,并配套这个工具箱。算法包括了大量常用的视觉和图像处理小函数,,这些就不提了,提几个别的工具箱一般没有的功能
- Bag of words的Matlab实现
- 各种相机模型的实现,包括普通相机、鱼眼相机、Catadioptric相机模型等等。如果你做机器人视觉、挂在各种广角相机的话,这些模型实现会很有用
- 自带简单的相机标定功能
- 对极几何(Epipolar Geomtry)的相关算法函数
- Plucker坐标的实现,做广义相机模型(Generalized camera model)很有用
DIPUM Toolbox:经典教材配套
项目地址:http://www.imageprocessingplace.com/DIPUM_Toolbox_2/DIPUM_Toolbox_2.htm
冈萨雷斯著名的图像处理教材《数字图像处理》的配套工具包,主要是书中图像处理算法的实现,名气自然是不必说了,网上可以免费下到加密后的p文件放在Matlab下面用,作为图像处理入门的上手玩具。
MATLAB Functions for Multiple View Geometry:又一个经典教材配套
项目网站:http://www.robots.ox.ac.uk/~vgg/hzbook/code/
许可证:MIT
又是一本大名鼎鼎的教材《计算机视觉中的多图几何》(Multiple View Geometry in Computer Vision),值得所有做三维视觉的研究者好好研究的书,国内很早就翻译了中文版。作者Zisserman提供了部分书中算法的Matlab实现,是深入理解书中理论的非常好的辅助材料。
其他的工具箱
- DIPImage & DIPLib,提供Matlab和C接口的图像处理功能,比较早,现在估计很少有人用或者知道了吧?
- Matlab CVPR toolbox,计算机视觉和模式识别相关的Matlab功能,好像没什么人用。
- 相关领域的工具箱,比如做机器学习的、做Markov随机场的等等,以后有机会写一下。
- 特定功能的工具箱,比如相机标定工具箱,这个可推荐的还阵挺多,以后有机会写一下。
- 这个链接里可以找到一些Matlab的开源工具箱。
(欢迎访问计算机视觉研究笔记http://cvnote.info或者关注新浪@cvnote)