Faculty of Informatics Vienna University of Technology Institute of Computer Aided Automation PRIP Home PRIP Home
Personal tools
You are here: Home People Julian Stöttinger FeEval Available Features

Available Features

FeEval Features available for download

We try to provide all publicly available video features for download. Getting everything running and (!) finishing is always time consuming and tedious. We hope to save your time, help the community and make results more comparable when we are all working on the same data and feature set. In case you got new features, please let us know! We will put them online.

Features available so far

Space time interest points

Binaries taken from Ivan Laptev's Homepage. The features are available at the FTP server for download. Unfortunately, 1080p movies are ommited as they throw a segmentation fault. We are working on it. Details are given below.

 

Dense and Scale-Invariant Spatio-Temporal Interest Point Detector

Binaries are taken from Geert Willem's Homepage. An Efficient Dense and Scale-Invariant Spatio-Temporal Interest Point Detector. Geert Willems, Tinne Tuytelaars and Luc Van Gool 10th European Conference on Computer Vision. Details are given below.

Space-Time Interest Points

We used the standard parameters ./stipdet -f movies/FeEvalvideo.mov -o stip/FeEvalvideo.stip -vis no

The detector is based on the extension of Harris operator to space-time as described in "On Space-Time Interest Points", I.Laptev, IJCV 2005. The code does not implement scale selection, instead interest points are detected at multiple spatial and temporal scales.

How I made the binaries run and make them understand H.264 FeEval videos:

  1. Binaries are only running on 32bit Linux, so a Ubuntu Karmic Koala 9.10 has been virtualized (e.g. VirtualBox) (note: strangely, somehow it seems that can access more than 4G of memory that way).
  2. Following this great HowTo, it is straightforward to compile ffmpeg as shared library with support for x264.
    Very quick and optimized for further use with opencv:
    1. Remove in case its already there: sudo apt-get remove ffmpeg x264 libx264-dev
    2. Install like... everything: sudo apt-get install build-essential subversion git-core checkinstall yasm texi2html libfaac-dev libfaad-dev libmp3lame-dev libopencore-amrnb-dev libopencore-amrwb-dev libsdl1.2-dev libx11-dev libxfixes-dev libxvidcore-dev zlib1g-dev libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg62-dev libtiff4-dev libswscale-dev libavcodec-unstripped-52 libavdevice-unstripped-52 libavformat-unstripped-52 libavutil-unstripped-49 libpostproc-unstripped-51 libswscale-unstripped-0
    3. Get, compile and install x264: git clone git://git.videolan.org/x264.git
      cd x264
      ./configure
      make
      sudo checkinstall --pkgname=x264 --pkgversion "1:0.svn`date +%Y%m%d`+`git rev-list HEAD -n 1 | head -c 7`" --backup=no --default
    4. Get, compile and install libtheora: wget http://downloads.xiph.org/releases/theora/libtheora-1.1.1.tar.gz
      tar xzvf libtheora-1.1.1.tar.gz
      cd libtheora-1.1.1
      ./configure --disable-shared
      make
      sudo checkinstall --pkgname=libtheora --pkgversion "1.1.1" --backup=no --default
    5. Get, compile and install ffmpeg: svn checkout svn://svn.ffmpeg.org/ffmpeg/trunk ffmpeg
      cd ffmpeg
      ./configure --enable-gpl --enable-version3 --enable-nonfree --enable-postproc --enable-pthreads --enable-libfaac --enable-libfaad --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libtheora --enable-libx264 --enable-libxvid --enable-x11grab
      make
      sudo checkinstall --pkgname=ffmpeg --pkgversion "4:0.5+svn`date +%Y%m%d`" --backup=no --default
      hash x264 ffmpeg
    6. Get, compile and install opencv 1.1: wget http://sourceforge.net/projects/opencvlibrary/files/opencv-unix/1.1pre1/opencv-1.1pre1.tar.gz/download
  3. Geting OpenCV 1.1 to work is tricky. I read a lot of tutorials like e.g. here, here, here. In the end I ended up doing the following:

    1. Get opencv: wget http://sourceforge.net/projects/opencvlibrary/files/opencv-unix/1.1pre1/opencv-1.1pre1.tar.gz/download
    2. extract: tar xzvf opencv-1.1pre1.tar.gz
    3. go: cd opencv-1.1.0
    4. change paths for config: sed -e 's/ffmpeg\/avcodec.h/libavcodec\/avcodec.h/' -e 's/ffmpeg\/swscale.h/libswscale\/swscale.h/' -i configure
      yes, file structure for ffmpeg changed.
    5. ./configure --prefix=/home/opencv --enable-apps --enable-shared --with-ffmpeg --with-gnu-ld --with-x --without-quicktime CXXFLAGS=-fno-strict-aliasing
      After the configure, there is a summary table displayed. libGTK-2.0 and ffmpeg have to have a yes to the right!
    6. Uncomment line 133 and 134 in cxcore/include/cxmisc.h
      /*#elif
      #error*/
    7. otherlibs/highgui/cvcap_ffmpeg.cpp will throw a lot of errors. After playing with it for a while I got it working. cvcap_ffmpeg.cpp take it and overwrite the original one. (ffmpeg includes, img_convert -> swscale, int casting, etc. fixed)
    8. export LD_LIBRARY_PATH=/usr/lib:$LD_LIBRARY_PATH
    9. make
    10. sudo make install
      in case you get the multiple defined error
      /usr/local/lib/libavcodec.a(avpacket.o): In function `av_free_packet':
      /home/julian/ffmpeg/libavcodec/avpacket.c:94: multiple definition of `av_free_packet'
      ./.libs/lib_highgui.a(cvcap_ffmpeg.o):/home/julian/opencv-1.1.0/otherlibs/highgui/_highgui.h:76: first defined here
      just do it manually
      sudo cp otherlibs/highgui/.libs/libhighgui.so.2.0.0 /usr/local/lib/.
    11. sudo echo /usr/local/lib > /etc/ld.so.conf/opencv.conf
    12. echo export LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH (put it in ~/.bashrc to make it permanent)
    13. sudo ln -s /usr/local/lib/libhighgui.so.2.0.0 /usr/local/lib/libhighgui.so.1
      sudo ln -s /usr/local/lib/libcve.so.2.0.0 /usr/local/lib/libcxcore.so.1
      sudo ln -s /usr/local/lib/libcv.so.2.0.0 /usr/local/lib/libcv.so.1
      sudo ln -s /usr/local/lib/libcvaux.so.2.0.0 /usr/local/lib/libcvaux.so.1
      sudo ln -s /usr/local/lib/libml.so.2.0.0 /usr/local/lib/libml.so.1
    14. sudo ldconfig
  4. Get the spatio-temporal interest points binary
    1. wget http://www.irisa.fr/vista/Equipe/People/Laptev/download/stip-1.0-winlinux.zip
    2. unzip and go into bin/
    3. chmod a+x stipdet
    4. ldd stipdet
    5. ./stipdet -f ../data/walk-simple.avi -o test.sift
  5. Have fun!

Hessian Spatio-Temporal Interest Points

 

How I got VXL running on Ubuntu 64:

  1. Get everything from above, so opencv 1.1 with ffmpeg support
  2. download vxl, cmake it to bin/ directory
  3. add to source dir/core/lib/vidl_ffmpeg_istream.cxx the following:
    void av_free_packet(AVPacket *pkt)
    {
    if (pkt) {
    if(pkt->destruct) pkt->destruct(pkt);
    pkt->data = NULL; pkt->size=0;
    }
    }
    the file is supposed to handle the various structures of ffmpeg over the versions, apparently it doesn't really work for ubuntu.
  4. edit CMakeCache.txt to
    CMAKE_CXX_FLAGS:STRING=-fPIC
    CMAKE_C_FLAGS:STRING=-fPIC
  5. make
  6. sudo make install
  7. wget http://homes.esat.kuleuven.be/~gwillems/research/Hes-STIP/hesstip.zip
  8. unzip it and go into hesstip/
  9. export LD_LIBRARY_PATH=./:$LD_LIBRARY_PATH
  10. sudo ln -s /usr/lib/libtiff.so.4.2.1 /usr/lib/libtiff.so.3
  11. install latest boost with ./bootstrap.sh
  12. ./bjam
  13. ./bjam install
  14. In the HessStip dir:
    ln -s /usr/lib64/libboost_filesystem.so.5 libboost_filesystem.so.3
    ln -s /usr/lib64/libboost_program_options.so.5 libboost_program_options.so.3
    ln -s /usr/lib64/libboost_serialization.so.5 libboost_serialization.so.3
  15. Have fun!