当前位置: 代码迷 >> 综合 >> Hessian-Affine extractor and the SIFT descriptor
  详细解决方案

Hessian-Affine extractor and the SIFT descriptor

热度:56   发布时间:2024-01-04 12:59:15.0

前情提要:在利用著名图像检索库yael测试vlad和fisher vector算法时发现使用INRIA实验室提供的提取好的holidays 数据集和对应的特征点能够达到论文中说的精度。但是当利用Opencv提取的sift特征点进行测试,发现效果很差。经过分析发现,opencv提取的sift特征点和siftgeo中的特征点数据类型不同。所以选择采用和INRIA实验室相同的方法来提取特征。

脚本如下:

 10 infile=test.jpg11 tmpfile=${infile/jpg/pgm}12 outfile=${infile/jpg/siftgeo}13 14 #Rescaling and intensity normalization15 cmd_pgm_1=$(echo djpeg $infile)16 cmd_pgm_2=$(echo ppmtopgm)17 cmd_pgm_3=$(echo pnmnorm -bpercent=0.01 -wpercent=0.01 -maxexpand=400)18 cmd_pgm_4=$(echo pamscale -pixels $[1024*768])19 20 echo "time $cmd_pgm_1 |$cmd_pgm_2|$cmd_pgm_3|$cmd_pgm_4>$tmpfile"21 22 time $cmd_pgm_1|$cmd_pgm_2|$cmd_pgm_3|$cmd_pgm_4>$tmpfile23 24 #Compute descriptors25 CMD_PATH=/superdb/jl/extract_sift26 COMPUTE_DESCRIPTORS_CMD=compute_descriptors27 cmd_compute=$(echo time \28               ${CMD_PATH}/${COMPUTE_DESCRIPTORS_CMD}\29               -i $tmpfile\30               -o4 $outfile\31               -hesaff\32               -sift)33 34 echo $cmd_compute35 $cmd_compute

结果如下:
这里写图片描述

下面来说一下具体的配置过程和使用方法:
1、http://lear.inrialpes.fr/~jegou/data.php 打开该网页下载具体的提取compute_descriptors可行性程序。由于我的是ubuntu系统我下载的是这个:
这里写图片描述
注意:这里下载这个新版本后面就不需要安装ImageMagick了。
2、下载djpeg 并且安装
http://libjpeg.sourceforge.net/
安装步骤:
./configure
make
sudo make install
注意这里可能会遇到 ./configure: /bin/sh^M: bad interpreter: No such file or directory 问题
解决方法如下: vim configure :set fileformat=unix

3、下载和安装netpbm
https://sourceforge.net/projects/netpbm/files/archive_of_old_release_system/
这里可以下载不同的版本。
安装步骤:
cd $netpbm
mkdir netpbmbuild #这是为了保护源代码的干净,名字随你便
cd netpbmbuild
../configure
make
make package
cd ..
installnetpbm
注意:
(1)在../configure时候要根据提示指定lbjpeg的路劲
(2)如果make的时候出现我make的时候
报这个错误,libpm.c:25:21: fatal error: compile.h: No such file or directory include “compile.h”是因为前面的文件没有权限因此没能生成compile.h。仔细阅读错误提示。
全部安装完以后就会在/usr/local/netpbm下生成一下bin lib等文件。这时候要配置一下系统环境变量我是在.bashrc文件下配置的。

export PATH=$PATH:/usr/local/netpbm/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/netpbm/lib

配置完成以后注意如果运行上面的脚本出现symbol link error等情况,可能是和系统中自带的netpbm中的命令冲突,我这里把/usr/bin下面的冲突命令删除了。也可以在脚本中显示的指明用的是哪个命令。

  相关解决方案