【特征检测】LIOP特征描述算法

article/2025/9/1 22:13:37

简介:

        LIOP特征描述算法,是2011ICCV上一片paper《Local Intensity Order Pattern for Feature Description》中提出的一种特征描述算法。等有空闲时间把原文仔细翻译一遍,然后放上来分享给大家。

        算法的提出者也是比较厉害的,其个人主页:http://zhwang.me/;LIOP在这里:http://zhwang.me/publication/liop/index.html

        今天我们就来讲一下这个算法,下面来详细介绍LIOP算法的整个过程,遵循paper的处理流程,我按顺序分析:

一:图像预处理、特征检测、归一化

1、高斯滤波

        使用SIGMA的高斯滤波器,对图像进行平滑滤波,由于像素强度的相对顺序对噪声敏感(稍后会提到),所以要消除噪声;

2、仿射区域检测

        检测图像中的仿射区域位置,并估计仿射区域的形状(使用Harris-AffineHessian-Affine);

3、归一化

        将检测到的仿射区域都归一化为一个固定直径的圆(文章中,圆的直径取41个pixl);

4、高斯滤波

        使用SIGMA的高斯滤波器,对图像进行平滑滤波,消除由于归一化中插值操作带来的噪声。

二:区域分割

        步骤一得到的圆形区域叫做Local Patch。现在要对其进行划分区域,将其划分成B个子区域(subregion)。然后我们来提取每个subregion的特征矢量,再将B个特征矢量连起来形成当前检测区域(Detected region)的特征矢量。

        如下图所示,图(a)是检测到的仿射区域,图(b)是归一化为固定直径的圆,图(c)是划分subregion(用不同颜色来标记),(d),(e),...,(f)是将每个subregion分离出来,以方便对每个subregion进行后续处理,用Bin 1,Bin 2,...,Bin n来表示。

注:图上画出了nBin,也就是说有nsubregion,在后面的用B来表示,其实nB都表示subregion的个数,这里我特地说一下,希望读者不要纠结于nB的含义。


三:LIOP特征描述

        对于一个圆(Local Patch),都有一个圆心这是毋庸置疑的。该圆在未发生旋转之前我们把它叫做Origina patch(如下图a),旋转之后我们把它称作Rotated patch(如下图b)。现在我们的目的是要提取圆内每一个点的LIOP特征(编码),将同属于一个subregion(即:Bin)的LIOP特征累加起来,然后将Bsubregion各自的LIOP特征串联起来,形成该Local Patch代表区域的特征矢量。

        接下来,我们来求一个点的LIOP特征,请仔细阅读。

        结合下图(a),假设圆心为X0,在Local Patch内有一个点X,以该点为圆心,R为半径画圆,取该圆上的N个采样点,记作X1,X2,...,XN,此图中N=4。旋转之后,X的位置旋转到了X' 的位置,其圆上的采样点也随之旋转(变成了X1',X2',X3',X4')。

        为了使该点的LIOP特征具有旋转不变性,我们需要按照一定的方向进行排序,在文章中,作者提出以Local Pacth的中心,与X点的连线(可以看成大圆(Local Patch)中心与小圆中心的连线)方向上,且离大圆中心最远的采样点开始,按逆时针方向将所有采样点进行排序,最终排序为:旋转前:X1,X2,X3,X4,旋转后:X1',X2',X3',X4'。该种方法能够保证待会提取的LIOP特征具有旋转不变性。


        排序方法确定了,我们还需要一个制作一个表,将N个采样点的所有排列组合方式都列出来,显然共有N!N的阶乘)中排列组合,然后每种排序方式用一个Ind(即Index)索引来表示。

        正如上图所示,现在我们要提取XLIOP特征,假如4个采样点的排序是P(X)=(86,217,152,101)。本来按像素值从小到大排应该是(86,101,152,217),看得出来86P(X)的第1个位置,101P(X)的第4个位置,152P(X)的第3个位置,217P(X)的第2个位置。因此X点的编码就为(1,4,3,2),在表中找到该排列组合的索引为6(即:Ind=6)。


        对于每个点周围的采样点,共有N!种排列方式,那么在该点的LIOP特征也即为N!位。文章中N=4,即每个点的LIOP特征矢量都是24bit的。接着上面说,上面得到了Ind=6,再根据上图所示,将X点特征矢量的第6位置1,其余为全部置0,也就得到了X点的LIOP特征矢量了,即:0000 0100 0000 0000 0000 0000

        同理可得,对于任意一个Local Patch内的点,我们都可以以相同的方式提取该点的LIOP特征矢量了,每个点的特征矢量中有且只有1bit1,其余都是0。我们将所有属于同一个subregion的点的特征矢量相加,则得到该subregion的特征矢量,再将Bsubregion的特征矢量串联起来,就可以得到该Local PatchLIOP特征了。


        由于是按照像素强度进行排序的,因此对噪比较敏感,在最后为了能够得到更具有鲁棒性的特征矢量,作者提出一种特征矢量的加权方法,其中sgn()是符号函数,Tlp是阈值。



        最后,我们来总结一下整个LIOP特征矢量提取所需要的参数:


        LIOP大概就是这样的,以上都是个人理解,一切请以作者原文为准。如跟读者理解有出入,烦请留言告知,以便交流。

参考文献:

[1] Zhenhua Wang, Bin Fan and Fuchao Wu. Local Intensity Order Pattern for Feature Description. Computer Vision(ICCV), 2011 IEEE International Conference on.

[2] Bin Fan, Fuchao Wu and Zhanyi Hu. Aggregating Gradient Distributions into Intensity Orders:A Novel Local Image Descriptor. Computer Vision and Pattern Recognition (CVPR), 2011 IEEE Conference on.

[3] Hong Cheng, Zicheng Liu, Nanning Zheng and Jie Yang. A deformable local image descriptor. Computer Vision and Pattern Recognition, 2008. CVPR 2008. IEEE Conference on.


http://chatgpt.dhexx.cn/article/vL1AQkCU.shtml

相关文章

php把字符串日期转成时间戳,php怎样把日期转成时间戳

php把日期转成时间戳的方法:可以利用strtotime()函数来实现。strtotime()函数可以将任何字符串的日期时间描述解析为Unix时间戳,若成功则返回时间戳,失败则返回false。 strtotime() 函数将任何字符串的日期时间描述解析为 Unix 时间戳&#x…

java日期转时间戳精确到毫秒

代码如下: import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; public class Test {public static void main(String[] args) {long daytimeToStamp("2019-08-06 11:22:32");System.out.println(day);//输出1…

go 日期时间戳转换

一、日期字符串转成时间戳 //设置时区 var LOC, _ time.LoadLocation("Asia/Shanghai") //日期时间字符串 timeStr : "2022-10-10 10:00:00" //要转换成时间日期的格式模板(go诞生时间,模板必须是这个时间) timeTmepla…

java中如何把字符串日期转时间戳

定义一个字符串日期; String dataStr"2022-06-01"; public static java.sql.Timestamp parseTimestamp(String dateStr) {return parseTimestamp(dateStr, "yyyy/MM/dd HH:mm:ss"); } public static java.sql.Timestamp parseTimestamp(String dateStr,…

C语言 日期转时间戳

C语言 日期转时间戳 废话先说啥时候开始数?站在2022的肩膀上!一年能“嘀嗒”多少下?言归正传 废话先说 关于用C实现日期转时间戳,面对这样一个很基础的功能,作为一个小白白当然是,先百度,再看C…

制作持久化U盘Kali 用U盘启动 使用fluxion破解WIFI密码(上)

这次文章包含两部分, 一部分是如何制作U盘KALI, 另一部分说明如何使用这新制作的U盘启动, 再使用fluxion 破解WIFI密码. 等以后有空写一份如何用airmon-ng来破WIFI密码吧. 本文针对有一定基础的初学者, 主要是说明有哪些坑要避开。因为装了几次发现太多坑了, 不想大家再走弯…

fluxion破解wifi

https://streamja.com/P30oE 上面有教程可以看一下,最近搞一个会爆炸的小玩意,如果搞成功了就可以理论上100%拿到wifi密码

使用aircrack和fluxion工具获取wifi密码的教程

首先,本教程仅供技术参考用,切勿非法获取他人wifi使用权!! 本教程在kali2020下使用,aircack与fluxion均使用(2020.7.22)最新版本。 有两个注意事项写在前面: 第一:flux…

Fluxion无线攻击

使用步骤 github地址 https://github.com/deltaxflux/fluxion 进入到fluxion目录下 ./fluxion 启动fluxion 启动之后会先检测没有安装的项,讲红色没有安装的 安装完 也许会到依赖项 问题 先看看你的源有没有问题,不行的话,就按提示 安装指定…

实战-Fluxion与wifi热点伪造、钓鱼、wifi破解

今天周末遇到了断网,听说是修路挖到了电缆,作为难得的周末没网是不能接受的,这时我看上了邻居家的WiFi,奈何又没密码,只能动手白嫖一下了。 现在的家用路由器支持WiFi一般是wpa/wpa2,没有连接密码我们能够做…

Fluxion 实战答疑

实战文章《实战-Fluxion与wifi热点伪造、钓鱼、中间人攻击、wifi破解》发布之后,大家响应热烈,不过也遇到了很多问题。微信后台被各种提问挤爆了,于是抓紧时间出了这篇答疑。 0x00-设置更新源 在apt-get install xxx前要记得更新源哦&#xf…

基于fluxion 6.9 钓鱼wifi

前言 本文章仅用来学习,切勿用于违法乱纪,出现问题后果自负。 利弊 利就是对于安全意识弱的很快知晓秘密,不用像跑字典一样那么久 弊就是对于安全意识高和有过类似操作经历的人容易被识破 下载安装,依赖配置 下载 git clone…

Fluxion钓鱼攻击

Fluxion简介 Fluxion是技术和社会工程学自动化的一个混合,它的特点在于诱骗用户自己输入并移交wifi密码。它是唯一一个通过使用WAP握手功能来控制登录页面的行为和控制整个脚本的行为的工具。它会阻塞原始网络并创建一个具有相同名称的克隆网络,引起断开连接后的用户加入。并…

第四篇 kali Linux 下安装fluxion

第四篇 kali Linux 下安装fluxion 第一篇kali linux 安装 https://blog.csdn.net/qq_43632394/article/details/109121233 第二篇 kali Linux换源 https://blog.csdn.net/qq_43632394/article/details/109128692 第三篇 kali Linux中文输入法 https://blog.csdn.net/qq_4363…

Fluxion安装教程

首先在终端执行:git clone https://gitee.com/youzicha123/fluxion.git 通过cd fluxion进入子目录 查看目录内容并安装./fluxion.sh 红色字体部分显示需要安装缺少的依赖包 ./fluxion.sh -i 按回车接着安装 安装结束后出现 在debian下载缺少的依赖包 在kali浏览…

fluxion5.9 踩坑

1.环境缺少pyrit 在linux安装pyrit_pinro的博客-CSDN博客_pyrit 安装# WPA/WPA2-PSK# Fluxion依赖网上给的apt资源好像都失效了,可以找个git资源安装1.下载python2及相关依赖apt-get install libpcap-devapt-get install python2.7-dev libssl-dev zlib1g-dev libpcap-dev2.从…

Fluxion

破解WiFi密码,除了Aircrack-ng的暴力跑字典外,还有一种新“姿势”,就是WiFi钓鱼,利用Fluxion可以很简单的实现。 首先下载fluxion:https://github.com/MuhammadOmar125/fluxion 下载之后解压运行,保证源正确…

利用fluxion进行WIFI钓鱼攻击的实验

#利用fluxion进行WIFI钓鱼攻击的实验 免责声明: 本博客旨在提供有关wifi钓鱼攻击的基本知识和防范方法,仅供参考和教育目的。本博客不鼓励或支持任何非法或不道德的网络活动,也不对任何因使用或滥用本博客中的信息而造成的损失或损害承担任何…

实例二——Fluxion-钓鱼破解WiFi笔记( 2.4GHz网络)

Fluxion-钓鱼破解WiFi( 2.4GHz网络) 1.安装fluxion 解压安装包,可以看见桌面上出现了fluxion-master,进入之后运行./fluxion.sh -i安装依赖包; 安装完成所有的依赖包 这里选17中文模式 然后选择1对2.4GHz进行抓包 可…

fluxion部分功能的使用

fluxion部分功能的使用 首先下载kali系统并进行fluxion的安装如果fluxion.sh显示有错误进入fluxion三次握手创建AP开启钓鱼等待用户往钓鱼页面输入密码找到路径查看密码 首先下载kali系统并进行fluxion的安装 git clone https://github.com/FluxionNetwork/fluxion.git等待几分…