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

如果觉得这篇文章对您有所启发,欢迎关注我的公众号,我会尽可能积极和大家交流,谢谢。 



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

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

http://blog.csdn.net/hechenghai/article/details/41777585

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

稀疏表示用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下载地址:http://kl1p.sourceforge.net/download.html,得到一个压缩包,解压一个路径下即可使用,例如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来运行工程,有可能会出现以下错误:


此时只要对程序做一下小小的修改即可:在属性对话框中“配置属性->C/C++ ->代码生成”中找到“运行库”,选择“多线程调试 (/MTd)”即可。

至此,Kl1p库在VS2012中的配置已经完成,当然,如果想把这段代码完全运行出来,还需要配置opencv并且准备人脸的训练样本和测试样本。opencv的配置在网上已有很多教程,至于样本库的准备,对于做人脸识别的人来说肯定不会陌生,这里就不在赘述了。

需要说明的一点是,官方给出的配置文档中的做法比较复杂,需要用的Cmake之类的,上面个的方法算是一种利用vs2012编译器兼容功能的投机取巧的方法,大家也可以按照官方文档的方法配置,有兴趣的可以加QQ群51701853一起交流。

最后一点建议:想研究稀疏表示,还是有Matlab吧,C++的参考代码实在太少了。



如果觉得这篇文章对您有所启发,欢迎关注我的公众号,我会尽可能积极和大家交流,谢谢。


评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值