首页 > 其他分享 >特征检测

特征检测

时间:2023-06-01 15:23:49浏览次数:39  
标签:特征值 LoG 特征 检测 尺度 灰度 图像 高斯

特征点/区域

局部特征点的要求

可重复性和正确性:平面内几何变换不变,平面外几何变化不变,光照鲁邦。

局部性:特征是局部的,对遮挡物不敏感。

数量:要有足够多的特征点/区域来覆盖整个物体

特异性:区域需包含“感兴趣的”结构

有效性:接近实时

特征响应

在任何方向移动窗口,灰度值有较大的改变。

灰度改变度量/特征响应度量

基于灰度

优点:直接用图像灰度值,计算速度块,对噪声不敏感。

角点:特征点与其邻域内足够多的像素点处于不同区域

FAST

邻域Np:Bresenham圆上的16个像素。

特征响应度量:圆上有n个连续的像素点的灰度值都大于或小于中心点的值。

16个像素的轮询顺序决定检测速度(决策树决定轮询顺序)

ORB

在FAST基础上加速。

邻域Np:只包括上下左右四个像素点,效果与和16个像素比较相同。

特征响应度量:至少有一对连续像素的灰度高于Ip+t或小于Ip-t则将p作为关键点。

搜索时间缩减了四倍。

使用图像金字塔保证尺度不变。

使用执行标定方向保证旋转不变。

基于灰度一阶导数——Harris角点检测器

角点

两条直线的交点,轮廓的高曲率点。

窗口函数w(x,y)

可以是二值(窗口内为1,窗口外为0),也可以是高斯函数。

移动后[u,v]灰度值的变换SSD

梯度近似SSD

使用泰勒展开,变化后的灰度值 近似为 变化前的灰度加上梯度。

   

Ix为x方向梯度,Iy为y方向梯度。

自相关矩阵

 

自相关矩阵特征值与变化率的关系

M的特征向量决定方向,特征值λ的大小决定与特征值λ对应特征向量的模长。

在SSD中,特征向量的模长可以视为变化的快慢,也就是特征值越大,变化越快。

特征向量决定方向,特征值决定变化快慢。

特征值1表示水平方向变化率,特征值2表示竖直方向变化率。

在水平边缘上,特征值2远大于特征值1。在竖直边缘上,特征值1远大于特征值2。

在角点,任意方向的变化率都非常大,故所有的特征值都很大。

Harris角点检测器

Harris角点检测器中,因为计算特征值分解的计算量大,不直接计算特征值。

利用公式,将对特征值的运算,转换为对矩阵元素的运算

利用自相关矩阵

R=ac-b2-α(a+c)2

Harris角点检测器步骤

1.计算图像x方向和y方向的梯度Ix,Iy(梯度)

2.计算每个像素点的梯度的乘积。(梯度乘积

3.计算每个像素点的梯度的乘积的累积(直接用每个像素点梯度乘积的累积求自相关矩阵M,这里使用高斯核)(累积梯度

x方向梯度乘积累积,x方向和y方向梯度乘积的累积,y方向的梯度乘积累积。

4.定义每个像素点的矩阵M(自相关矩阵)

5.计算每个像素点的角点响应R

6.对响应R做阈值处理和非极大值抑

基于灰度的二阶导数

Harris角点检测器的问题

Harris具有平移不变性,旋转不变性,但是不具有尺度不变性

自动尺度选择

理想的特征尺度函数是突出剧烈的图像不连续性:图像与突出边缘核进行卷积。高斯核的拉普拉斯算子(LoG)是最优的。

因此在高斯金字塔/拉普拉斯金字塔上计算LoG。

二维高斯核拉普拉斯算子

一阶导

二阶导

高斯核的拉普拉斯算子LoG的导数进行卷积分析(为了简便,以一维为例)

使用高斯拉普拉斯LoG一阶导进行卷积时,边缘点就是响应值最大的点。

使用高斯拉普拉斯LoG二阶导进行卷积时,边缘点就是响应值过0的点。

LoG斑点检测

假设一组一维的像素出现斑点,也就是某段区域灰度突然变大。(这里为了简便)

从上述推论可知,使用高斯核的拉普拉斯算子(二阶导)进行卷积的时候,过0点就是其边缘点。

所以在检测斑点的时候,要检测各个边界,也就是过0点。

但是使用不同σ的LoG,得到的过0点位置不同。

当LoG的尺度与斑点的宽度匹配时,LoG的幅值在斑点的中心取得最大值。

  

因为σ可以调节的,所以LoG算子可以检测不同尺寸图片上的斑点。

二维上的过0点的响应最大值(例如一个圆)

LoG的过0点应该和圆对齐,从而推导出合适的σ参数。

所以有如下结论

边缘:灰度值跃迁,与二阶LoG卷积后的过0点。

斑点:两个阶跃之间的区域,也就是两个过0点之间的区域。

本征尺度:调整σ,过0点逐渐靠近,最终合并成一个最大值,得到的响应最大尺度。

目标:使得两个过0点逐渐接近,逐渐形成最大值,这个最大值就是斑点。

LoG可以通过调整σ,检测到不同尺寸图像的斑点。

斑点检测基本步骤

求二维LoG的梯度

再做归一化(归一化见下一节推导)

找到响应最大的尺度,也就是找到合适的σ

代入归一化的LoG即可求得。

归一化的高斯核拉普拉斯算子

用不同尺度的LoG和信号卷积,寻找幅值的最大值,选择最佳尺度。

但是随着尺度的增大,LoG的曲线由双波谷逐渐融合成单波谷。且最大幅度逐渐减小,响应尺度也不断减少,无法判断尺度是否合适,因此需要进行尺度归一化

归一化方式:对于一阶高斯核的导数的响应值乘以σ,保证σ不变。对于二阶高斯核的导数的响应值乘以σ2,从而对σ不变。

  

尺度归一化后的效果

尺度不变检测器DoG(Difference of Gaussian)

可以将LoG近似为DoG计算效率更高

检测尺度归一化的LoG在尺度空间的极值,近似于检测DoG在尺度空间的极值,且DoG效率更高。

DoG与LoG的关系

k-1是常量,不影响函数极值点

k的选择

k趋近于1时,近似程度越高,但是需要计算更多的DoG

Lowe的SIFT基本步骤

构造尺度空间——高斯金字塔:使用高斯函数和与原图像卷积,然后下采样

尺度空间极值检测:使用DoG检测。

关键点定位

关键点方向确定

关键点描述

构造高斯金字塔

对图像采用不同尺度σ的高斯函数进行平滑。

平滑操作会减少图像中的高频信息。这样也就没必要再用相同数量的像素表示,可以缩小尺寸。对图像进行下采样,逐渐形成金字塔。

平滑图像

相邻金字塔的尺度因子为2倍。

注:大尺度的高斯平滑可通过连续小尺度σ1,σ2高斯平滑,这样可以加速卷积运算。

L(x,y,σ) = g(σ) * I(x,y) = [ g(σ1) * g(σ2) ] * I(x,y)  = g(σ1) * [ g(σ2)*I(x,y)  ],其中σ21222

下采样

水平和竖直分辨率变为原来的一半

  

初始

预先模糊输入图像作为第0组第0层图像,相当于丢弃了最高的空域的采样率。

SIFT中Lowe将初始图像的尺度设定为σ-1=0.5,先将图像的尺度扩大一倍,生成第-1组图像。

构造图像金字塔

尺度空间:八度(o)和八度中的第几层(s)组成尺度空间。

一个八度中图像的长宽都相等,也就是变量八度控制图像尺寸。

一个八度中不同层(s)的图像模糊程度不同,也就会层(s)控制模糊程度。

每个八度(Octave)内有S+3层(Interval)。

相邻八度尺度相差2倍,同一组相邻层尺度相差k倍。

第0个八度的尺度:

σ0,kσ0,...,ksσ0,ks+1σ0,ks+2σ0

第1个八度的尺度:

2 σ0,2 kσ0,...,2 ksσ0,2 ks+1σ0,2 ks+2σ0

第2个八度的尺度:

4 σ0,4 kσ0,...,4 ksσ0,4 ks+1σ0,4 ks+2σ0

....

第n个八度的尺度:

2n σ0,2n0,...,2n ksσ0,2n ks+1σ0,2n ks+2σ0

上一个八度的导数第三层 和 下一个八度的第0层相同:

也就是

ksσ0=2 σ0,得到:

构造高斯差分金字塔

在高斯金字塔中,每两个相邻层进行相减,生成了高斯差分金字塔。

第一个八度中高斯差分图像的尺寸为:(系数2都是n/3次方)

第二个八度中高斯差分图像的尺寸为:

 

   去除边缘效应

DoG算子会产生较强的边缘响应,需要剔除不稳定的边缘响应点。

       类似于Harris角点检测器,使用DoG算子定义Hessian矩阵

  

为了能够剔除边缘点,det(H)和trace(H)的比值要小于一定阈值:

通常r取10。

极值点检测

每个八度的S+3个金字塔图像,得到S+2DoG图像,只能检测S个尺度的极值点。

Lowe建议S=3,也就是检测同尺度的8个相邻点,和上下相邻尺度对应的18个点,一共26个点进行比较。

 

 

 

 

标签:特征值,LoG,特征,检测,尺度,灰度,图像,高斯
From: https://www.cnblogs.com/RedNoseBo/p/17436498.html

相关文章

  • 常用的表格检测识别方法——表格结构识别方法 (下)
    常用的表格检测识别方法——表格结构识别方法(下)3.2表格结构识别方法 表格结构识别是表格区域检测之后的任务,其目标是识别出表格的布局结构、层次结构等,将表格视觉信息转换成可重建表格的结构描述信息。这些表格结构描述信息包括:单元格的具体位置、单元格之间的关系、单元格的行......
  • linphone-sdk-android网络检测分析
    原文 linphone-sdk-android网络检测分析-掘金(juejin.cn)前言好久没写linphone-sdk-android相关的文章了,上一篇文章还是一个月之前,经过上次修改linphone-sdk-android后最近没有啥问题发生,本文记录下之前遇到的linphone网络问题的坑。注:笔者的App作为Launcher......
  • 缺液检测自动加水等功能是如何实现的呢?
    很多就家电应用上都有液位检测功能:缺液提醒/自动加水/满水检测等等……一般常见于饮水机、洗地机、加湿器、咖啡机、制冰机等等应用中。通常缺液检测/自动加水/满水检测/防溢提醒等功能都是通过水位传感器实现的,通过检测有水无水给出不同信号,控制端根据此信号进行设计,实现多样化的......
  • 使用VAE、CNN encoder+孤立森林检测ssl加密异常流的初探——真是一个忧伤的故事!!!
    sslpayload取1024字节,然后使用VAE检测异常的ssl流。代码如下:fromsklearn.model_selectionimporttrain_test_splitfromsklearn.preprocessingimportStandardScalerimportnumpyasnpimporttensorflowastfimporttflearnfrommatplotlibimportpyplotaspltimport......
  • 百度飞桨(PaddlePaddle) - PP-OCRv3 文字检测识别系统 基于 Paddle Serving快速使用(服
    目录安装Docker安装PaddleOCR安装准备PaddleServing的运行环境,模型转换PaddleServingpipeline部署重启测试百度飞桨(PaddlePaddle)-PP-OCRv3文字检测识别系统预测部署简介与总览百度飞桨(PaddlePaddle)-PP-OCRv3文字检测识别系统PaddleInference模型推理(离线部署)......
  • YOLOV5实时检测屏幕
    YOLOV5实时检测屏幕目录YOLOV5实时检测屏幕思考部分先把原本的detect.py的代码贴在这里分析代码并删减不用的部分把屏幕的截图通过OpenCV进行显示写一个屏幕截图的文件用OpenCV绘制窗口并显示最终代码注:此为笔记目的:保留模型加载和推理部分,完成实时屏幕检测实现思路:1.写一......
  • fortinet sql注入 语义分析检测
    Syntax-basedSQLInjectionDetectionUsingregularexpressionbasedsignaturestodetectSQLinjectionattacksiscoretoaWAFsolutionhoweveritdoesnotgowithoutissues.DuetothenatureoftheSQLlanguagebeingsimilartotheEnglishgrammarfalse......
  • 利用CTU-13数据集进行僵尸网络检测
    写在前面,CTU-13的数据集示例:StartTime,Dur,Proto,SrcAddr,Sport,Dir,DstAddr,Dport,State,sTos,dTos,TotPkts,TotBytes,SrcBytes,Label2011/08/1009:46:59.607825,1.026539,tcp,94.44.127.113,1577,->,147.32.84.59,6881,S_RA,0,0,4,276,156,flow=Background-Established-cmpg......
  • webshell后门中执行交互命令看到的sysmon数据采集和检测
    下载phpstudy,链接:https://public.xp.cn/upgrades/phpStudy_64.zip,如下图启动wnmp。  webshell内容:<?phpecho"Yourresponseis:";?><?php@eval($_GET['cmd']);?>写入C:\phpstudy_pro\WWW下的shell.php文件。 浏览器执行命令:localhost/shell.php?cmd=syste......
  • 最大信息系数——检测变量之间非线性相关性
    最后的效果就是这样的。很明显可以看到,左下角那个有点像三角函数的关系,Pearson系数(就是线性相关系数)为0,而MIC则有0.8。 摘自:http://tech.ifeng.com/a/20180323/44917506_0.shtml最大信息系数最大信息系数(MIC)于2011年提出,它是用于检测变量之间非线性相关性的最新方法。用于进行......