SuperPixel最初由Xiaofeng Ren提出(ICCV 2003),但我在网络上尚未找到有关这个最初想法的源代码;比较容易获得的倒是Greg Mori(CVPR 2004,ICCV 2005)基于Xiaofeng Ren算法做的代码https://www.cs.sfu.ca/~mori/research/superpixels/.代码包分为32bit版和64bit版.
这个代码用到了C与M混合编程,并非是拿来即可运行的,在代码和matlab的配置上还是有一定需要注意的问题。
搜索了下,有关Greg Mori代码的配置主要都是针对32bit的.网络上共有两个版本.一个是Linux(32bit+matlab 2010a)下的配置指导:http://kittipatkampa.wordpress.com/2011/02/28/how-to-install-greg-moris-superpixel-matlab-code/
配置的步骤非常详细,对产生的问题也是有预见性.参考价值较大.
另一个版本是国内研究者的简单修改版http://blog.csdn.net/likuan/article/details/7389761也是针对32bit版进行的测试,适用于windows版本的测试。
本人下载的是64bit的程序包,在配置上还是遇到了上述两种修改方法都不一样的地方。先把具体过程列出来。
1.从berkeley上下载image segmentation的benchmark的库,解压到你的superpixel代码的文件夹下(假设你的代码解压到名为superpixel的文件夹下),解压后的目录结构如下:
2.按照kittipatkampa的方法修改‘segbench/Dataset/bsdsRoot.m‘中的路径;
3.mex目录yu_imncut下的所有C文件,要逐个mex,‘mex *.c’不好用....这步骤和上述两种方法差不多,唯一不同由于是64bit上运行,mex命令要求带如下参数:
mex -O -largeArrayDims csparse.c mex -O -largeArrayDims ic.c mex -O -largeArrayDims imnb.c mex -O -largeArrayDims parmatV.c mex -O -largeArrayDims spmd1.c你也可以把这些命令写入一个名为‘make.m‘文件,batch运行;
4.修改sp_demo.m的头部,加入对当前路径的获取(这个基本参照likuan的指导)
s_cur_path = fileparts(mfilename(‘fullpath‘)); cd(s_cur_path); addpath(genpath(s_cur_path));
5.likuan的guidence中要求修改cncut.m中的两处spmd为spmd2,这个在64bit代码中不需要,针对64bit代码,此步可以忽略;
6.Then Enjoy It!
7.一些注记 由于不同系统 不同内置编译器(gcc,vc2008,2010 etc ),建议需要把代码移植到不同机器上的童鞋在运行代码前都要把原先mex的文件删除,然后重新mex,这样可以避免一些不必要的报错.
当然代码中还是有些warning的,本人较懒 还来不及深究 哪位同好有好的suggestion pm我