稀疏表示中压缩感知库Kl1p的配置方法

1 浅谈稀疏表示和压缩感知

写这篇博客是应为需要用稀疏表示做人脸识别(当时还没有做完,,效果也还不清楚),要求用C++实现,理所应当想到应该借用opencv这个开源工具,可惜发现仅仅opencv还是不够,需要用到压缩感知,详见:

可以说稀疏表示是借用了压缩感知的理论基础(零范数和一范数最小化问题),至于稀疏表示的原理,在这里就不在赘述,网上讲得已经十分清楚。

稀疏表示用matlab代码实现的话要相对容易些,各种科研代码网上都能下载得到,但用C++实现的例子则不多,上面那篇博客实现了稀疏表示中最早也是最经典的SRC方法,对于入门非常有帮助,但问题是需要用到一个压缩感知库kl1p,关于它的配置方法网上中文资料不多。

2 什么是kl1p

kl1p是一个压缩感知方面的C++库,里面封装了很多压缩感知方法,在稀疏表(SRC)示中主要是借助它来求取l1范数最小化问题。

3 配置kl1p

事实上kl1p是有官方的配置文档的,支持unix,windows,ios等等,可以是英文,原配置文档的地址:https://svn.code.sf.net/p/kl1p/code-0/trunk/README.txt官方文档中讲解的比较详细,下面只说一下其在windows中vs2012编译器下的配置方法。

3.1 下载软件

Kl1p下载地址:,得到一个压缩包,解压一个路径下即可使用,例如D:\ kl1p-0.4.2-sources;

3.2 编译Kl1p

在" build\win"目录下有一个名为“KLab.vcxproj”的VC++工程文件,接下来只需对它进行编译就OK了。

打开visual studio 2012,按SHIFT+CTRL+O组合键,在“打开项目”窗口中打开上面的这个工程文件,按F5进行编译运行,将弹出如下窗口,点击确定:

点击确定后将弹出一个提示框,询问是否要有新的vs2012编译器编译编译这些早期项目,这里一定要选择“更新”:

项目打开后,按F5调试运行,编译器开始编译生成.lib文件:

生成成功后,可能会弹出一个报错对话框,直接点击确认即可关闭

在Realse模式下载进行同样的生成操作:

至此,在“bin\win”目录下将生成两个.lib文件:KLab.lib和KLab_d.lib,其中以“_d”结尾的是Debug模式下链接的库文件,我们要用Kl1p这个压缩感知库,实际上指的就是这两个。

3.3 在VS2012中配置Kl1p

在VS2012中配置Kl1p主要分为两个步骤:加载头文件以及加载链接库文件。

3.3.1 加载头文件

新建一个win32控制台应用程序,把最开始提到的博客中的代码复制到里面,此时应为还未配置,所以显示include的文件不存在:

在菜单中选择“项目->属性”,弹出属性对话框,在“配置属性->VC++目录”中找到包含目录的选项:

在“包含目录”中加入以下include路径:

D: \kl1p-0.4.2-sources\KL1p-0.4.2\libs\KSci\include

D: \kl1p-0.4.2-sources\KL1p-0.4.2\libs\KLab\include

D:\ kl1p-0.4.2-sources\KL1p-0.4.2\libs\KLab\include\win

D: \kl1p-0.4.2-sources\KL1p-0.4.2\libs\KL1p\include

D: \kl1p-0.4.2-sources\KL1p-0.4.2\libs\Armadillo\include\armadillo_bits

D: \kl1p-0.4.2-sources\KL1p-0.4.2\libs\Armadillo\include

D: \kl1p-0.4.2-sources\KL1p-0.4.2\include

3.3.2 加载库文件

同样,在属性对话框“配置属性->VC++目录”中找到“库目录”,在其中加入以下条目:D: \kl1p-0.4.2-sources\KL1p-0.4.2\bin\win;

在属性对话框“配置属性->链接器->输入”的“附加依赖项”中,加入以下条目:

KLab_d.lib(Release中则用KLab.lib)

4 运行工程

完成以上配置后,按F5来运行工程,有可能会出现以下错误:

始终调整好自己观风景的心态,

稀疏表示中压缩感知库Kl1p的配置方法

相关文章:

你感兴趣的文章:

标签云: