转自:http://cvnote.info/matlab-cv-ip-toolbox/
计算机视觉/图像处理研究中经常要用到Matlab,虽然其自带了图像处理和计算机视觉的许多功能,但是术业有专攻,在进行深入的视觉算法研究的时候Matlab的自带功能难免会不够用。本文收集了一些比较优秀的Matlab计算机视觉工具箱,希望能对国内的研究者有所帮助。
VLFeat:著名而常用项目网站:http://www.vlfeat.org
许可证: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 Brook 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的绝大多数算法了。比如这样:
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文件放在自己文件夹就好了。这个工具箱主要以图像处理算法为主,附带一些三维视觉的基本算法,列一些包括的功能:
可以在网站上看到全部功能的介绍和下载,非常推荐试一下,也可以学到不少算法。
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)很有用
Piotr's Image & Video Matlab Toolbox:侧重物体识别项目网站:http://vision.ucsd.edu/~pdollar/toolbox/doc/index.html
许可证:Simple BSD
(补充一个工具箱)由UCSD的Piotr Dollar编写,侧重物体识别(Object Recognition)检测相关的特征提取和分类算法。这个工具箱属于专而精的类型,主要就是Dollar的几篇物体检测的论文的相关算法,如果做物体识别相关的研究,应该是很好用的。同时它的图像操作或矩阵操作函数也可以作为Matlab图像处理工具箱的补充,功能主要包括几个模块:
- channels模块,图像特征提取,包括HOG等,Dollar的研究工作提出了一种Channel Feature的特征1,因此这个channels主要包括了提取这一特征需要的一些基本算法梯度、卷及等基本算法
- classify模块,一些快速的分类相关算法,包括random ferns, RBF functions, PCA等
- detector模块,与Channel Feature特征对应的检测算法1
- filters模块,一些常规的图像滤波器
- images模块,一些常规的图像、视频操作,有一些很实用的函数
- matlab模块,一些常规的Matlab函数,包括矩阵计算、显示、变量操作等,很实用
- videos模块,一些常规的视频操作函数等
1. P. Dollár, Z. Tu, P. Perona and S. Belongie, "Integral Channel Features", BMVC 2009.
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的开源工具箱