最近在看有关特征提取的线特征,暑期就看了相关的论文:《基于点线综合特征的双目视觉SLAM方法_谢晓佳》,最近呢,把里面有关线特征提取LSD和描述子LBD的代码跑了一遍,记录如下:

[1]LSD: a Line Segment Detector线段检测器

LSD是一种局部提取直线的算法,速度比Hough要快。 LSD是一种直线检测分割算法,它能在线性的时间内得出亚像素级精度的检测结果。该算法被设计成可以在任何数字图像上都无需参数调节。它可以自己控制误检的数量:平均而言,每张图有一个误检。

有几篇比较好的博客是针对此算法的讲解,推荐如下:

[1]http://blog.csdn.net/tianwaifeimao/article/details/17678669#comments

[2]http://blog.csdn.net/carson2005/article/details/9326847

[3]http://blog.csdn.net/polly_yang/article/details/10085401

http://blog.csdn.net/u011630458/article/details/54645107

(1)orignal代码: 作者将自己的论文(LSD: a Line Segment Detector,2012)及代码( c++)放到自己的主页上:

http://www.ipol.im/pub/art/2012/gjmr-lsd/

(2)利用OpenCV和MATLAB进行封装: http://blog.csdn.net/subtang/article/details/39552535

  代码:https://github.com/primetang/LSD-OpenCV-MATLAB

针对orignal代码的运行过程:

编译   make

(提供了一个使用LSD作为模块编译程序的显式示例。

The compilation line for 'lsd_call_example.c' is just:   cc -o lsd_call_example lsd_call_example.c lsd.c -lm)

LSD唯一的输入图像格式是PGM,输出有两个版本,ASCII和二进制。

./lsd chairs.pgm chairs.result.txt   //这里输入的是chairs.pgm图像

将会给出结果关于一个ASCII文件 'chairs.result.txt' 其中每行对应一个检测到的线段。每行由七个数字用空格隔开,

分别是X1,Y1、X2,Y2,宽度,P,- log_nfa。

例如,行:159.232890 134.369601 160.325338 105.613616 2.735466 0.125000 17.212465

意味着一个线段的起始点(159.232890  134.369601),结束点(160.325338 105.613616)和检测到宽度2.735466,角度精度p为0.125,即p * 180=0.125×180=22.5度的梯度角公差。这个-log_10(NFA)= 17.212465,所以NFA的值为10 ^(- 17.2124656),大约6e-18。长度单位是像素,坐标原点是左上角的像素中心(0,0)。

为了更容易地显示结果,也可以输出EPS或SVG文件格式。例如,

./lsd -P chairs.result.eps chairs.pgm chairs.result.txt

除ASCII输出文件外,还将生成EPS文件'chairs.result.eps'。

注意:可选参数应该总是出现在所需参数的输入和输出之前。例如,下面的行是错误的:lsd chairs.pgm -s 0.5 chairs.result.txt   -> WRONG!!

正确的是  lsd -s 0.5 chairs.pgm chairs.result.txt

[2]LBD: line binary descriptor  线二进制描述符

[1] original code:http://www.mip.informatik.uni-kiel.de/tiki-index.php?page=Lilian+Zhang

[2]Update code:https://github.com/mtamburrano/LBD_Descriptor

如果安装[1] original code,Note that: The code is based on two open source libraries:BIAS and ARPACK( Besides, the SuperLU library is required by ARPACK). Before compiling the line matching code, you must configure the BIAS and ARPACK on your computer correctly. The code is tested by using BIAS version 2.8.0 and ARPACK++( SuperLU Version 2.0 is used for ARPACK).

安装的是[2]Update code,运行过程:

mkdir build
cd build
cmake ..
make

最后出现了错误,原来是我的opencv的版本问题,解决:http://www.cnblogs.com/Jessica-jie/p/7509460.html

./TestLineMatchingAlgorithm c_Rotation1.png c_Rotation2.png

线特征---LSD and LBD程序运行(一)的更多相关文章

  1. 线特征---LSD算法(二)

    上一节介绍了一些资源和实验结果,这节主要是介绍LSD算法理论. 直线段检测算法---LSD:a Line Segment Detector LSD的核心是像素合并于误差控制.利用合并像素来检测直线段并 ...

  2. 线特征---LineMatching原理(四)

    参考文章:An efficient and robust line segment matching approach based on LBD descriptor and pairwise geo ...

  3. 1、Java语言概述与开发环境——Java程序运行机制

    Java语言是一种特殊的高级语言,它既有解释型语言的特性,也具有编译型语言的特征,因为Java要经过先编译后解释两个步骤. 一.高级语言的运行机制 计算机高级语言按程序的执行方式可以分为编译型和解释型 ...

  4. 内存模型 Memory model 内存分布及程序运行中(BSS段、数据段、代码段、堆栈

    C语言中内存分布及程序运行中(BSS段.数据段.代码段.堆栈) - 秦宝艳的个人页面 - 开源中国 https://my.oschina.net/pollybl1255/blog/140323 Mem ...

  5. golang获取程序运行路径

    golang获取程序运行路径: /* 获取程序运行路径 */ func getCurrentDirectory() string { dir, err := filepath.Abs(filepath ...

  6. linux下实现在程序运行时的函数替换(热补丁)

    声明:以下的代码成果,是参考了网上的injso技术,在本文的最后会给出地址,同时非常感谢injso技术原作者的分享. 但是injso文章中的代码存在一些问题,所以后面出现的代码是经过作者修改和检测的. ...

  7. 放在NSArray、NSDictionary等容器内的对象Item,Item中的property在程序运行过程中被无故释放

    可能是被释放的property本身是OC对象而它的属性被误写成assign,例如: @interface MyItem : Object @property (nonatomic, assign) N ...

  8. ABAP程序运行锁定

    转自http://www.cnblogs.com/aBaoRong/archive/2012/06/15/2550458.html ABAP 程序运行锁 1. create a Table ZRUNN ...

  9. 孙鑫MFC学习笔记3:MFC程序运行过程

    1.MFC中WinMain函数的位置在APPMODUL.cpp APPMODUL.cpp中是_tWinMain,其实_tWinMain是一个宏#define _tWinMain WinMain 2.全 ...

随机推荐

  1. linux shell实现 URL 编码/解码方法

    (1)编码的两种方法 # echo '手机' | tr -d '\n' | xxd -plain | sed 's/\(..\)/%\1/g' # echo '手机' |tr -d '\n' |od ...

  2. JAVA 泛型的参数的传递示意图

    泛型的两种参数传递方式

  3. Android 操作UI线程的一些方法

    我们经常会在后台线程中去做一些耗时的操作,比如去网络取数据.但是当数据取回来,需要显示到页面上的时候,会遇到一些小麻烦,因为我们都知道,android的UI页面是不允许在其他线程直接操作的.下面总结4 ...

  4. 第七次Scrum冲刺

    第七次Scrum冲刺 1.今日完成的任务 队员 今日完成任务 刘佳 前端与后端对接 李佳 后端与数据库对接 周世元 数据库与后端对接 杨小妮 博客编写 许燕婷 管理团队当日及次日任务 陈水莲 综合测试 ...

  5. Structs复习 通配符

    1.jar包 web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app version= ...

  6. JS简单示例

    首先感谢海棠学院提供的优质视频资源 学习总是一个由简单到难的过程,由浅入深,一步一个脚印,将学过的点玩的深入一点,才能有所进步,单学习总是枯燥而乏味的,切忌焦躁; 示例代码另存放在github:htt ...

  7. windows7 IIS7报错:如果要使用托管的处理程序,请安装 ASP.NET

    IIS7报错:如果要使用托管的处理程序,请安装 ASP.NET windows7,部署在本地的IIS7里以后,结果不能访问承载SL的.aspx页面,而如果用.html承载则可以访问. 亲测可用修复办法 ...

  8. jira-6.0.1-x64下载地址

    http://downloads.atlassian.com/software/jira/downloads/atlassian-jira-6.0.1-x64.bin

  9. centos 卸载和安装软件

    rpm -qa 列出所有已安装软件包 rpm -e packagename  删除软件包 rpm -e --nodeps packagename  强制删除软件和依赖包 rpm -q 包名     查 ...

  10. 八皇后问题-dfs

    一.题意解析 国际象棋中的皇后,可以横向.纵向.斜向移动.如何在一个8X8的棋盘上放置8个皇后,使得任意两个皇后都不在同一条横线.竖线.斜线方向上?八皇后问题是一个古老的问题,于1848年由一位国际象 ...