Blob检测
一 Laplace 算子
使用一阶微分算子可以检测图像边缘。对于剧烈变化的图像边缘,一阶微分效果比较理想。但对于缓慢变化的图像边缘,通过对二阶微分并寻找过零点可以很精确的定位边缘中心。二阶微分即为 Laplace 算子,在 "图像边缘检测" 中进行的推导。以一维图像为例,下图给出边缘的一阶与二阶运算结果:

红色区曲线表示原始边缘,绿色曲线表示一阶微分结果,蓝色区域表示二级微分结果。
如何使用 Laplace 算子检测到图像边缘呢?其基本方法如下:
1)使用 Laplace 算子与图像卷积;
2)在邻域(3*3, 5*5, 7*7等)中寻找卷积后最大值与最小值;
3)当最大值大于0,最小值小于0,最大值大于某固定阈值,最小值小于某固定阈值的负值时认为找到边缘(避免噪声干扰);
二 Laplacian of Gaussian(LoG)
Laplace 算子检测边缘同时也检测到噪声,可以首先使用 Gaussian Kernel 对图像去噪,然后在去噪后图像上应用 Laplace 算子。
由于线性运算可结合性质,有如下结论:
;
以下给出证明:
;
。
根据以上结论,由于 Gaussian Kernel 在卷积运算前已知且相对固定,可以先对求解 LoG,然后再使用 LoG 对图像卷积。
;
;
;
。

上图给出一维高斯函数的一阶微分(绿色)与二阶微分(蓝色)。
通过离散化近似处理,可以得到 LoG 核模板(5*5),
,使用该模板检测图像边缘,步骤如下:
1)计算 LoG 核;
2)使用 LoG 核与图像卷积;
3)在5*5邻域中寻找卷积后最大值与最小值;
4)当最大值大于0,最小值小于0,最大值大于某固定阈值,最小值小于某固定阈值的负值时认为找到边缘;
三 Difference of Gaussian(DoG)
使用 DoG 可以得到与 LoG 近似的效果,步骤如下:
1)使用宽度
高斯核与原图像卷积
;
2)使用宽度
高斯核与原图像卷积
;
3)求两卷积之差
;
可以提前计算出来
;

上图给出两个不同宽度的一维高斯函数的一阶微分(红色与绿色)与DoG(蓝色),观察发现 DoG 与 LoG 形状基本一致,所有可以使用 DoG 求二阶过零点。
四 Blob检测
使用 LoG 可以检测函数过零点,以一维图像为例,如下图:

对不同尺寸Blob块使用 LoG ,可得如下结果:

由上图可知,对于不同尺寸Blob块,二阶微分响应不同。当Gaussian函数尺度与Blob块直径基本一致时,产生最大响应。
对于一个固定尺寸Blob块,使用不同尺度Gaussian函数时,响应如下:

Laplacian 响应随着
增大而减小,需要对对响应值进行归一化处理。
高斯函数的一阶微分对理想阶跃边缘的响应随着
增大而降低,在一阶微分卷积前乘以
以归一化响应,在二阶微分卷积前乘以
以归一化响应。
以下给出二维归一化 LoG 表达式:
。
使用不同尺度归一化Gassian二阶微分,响应如下:

通过以上图像可知,当Gassian函数尺度与Blob块直径基本一致时,产生最大响应。
通过以上观察,可得到Blob块检测方法:
1)使用不同尺度Gassian函数的归一化二阶梯度分别于图像卷积;
2)合并不同尺度下卷积图像形成三维图像;
3)在三维图像中寻找局部极大值,该极大值即为检测到的Blob块,其中Blob块中心由所在图像坐标决定,Blob块半径由所在尺度决定,其值为
。
五 Blob 特征点描述
当检测到特征点后,使用自相关函数可以描述 Blob 特征点形状特征:
;
令
,在 uv 平面上可以得到一个椭圆,如下:

观察椭圆可知,在短轴方向上 Blob 特征点变化速度最快,在长轴方向上变化最慢。同时,自相关矩阵描述了特征点形状及旋转关系。
当采集图像发生了射影变换(旋转,拉伸),其 Blob 特征点的自相关矩阵所描述的椭圆也会发生 旋转,拉伸变换。在描述 Blob 特征点前,首先对其进行拉伸变化将椭圆转换为正圆,这样方便对特征点进行统一描述。
以上操作使特征点具有相同的拉伸变换,但仍旧需要使特征点具有统一的旋转角度,使用梯度方向直方图可以估计特征点旋转。具体如下:
1)使用特征点周边固定区域内的梯度方向形成方向直方图;
2)使用直方图中最大 bin 作为特征点方向(零点方向);
3)在 Blob 区域内(正圆,去除拉伸)统计方向直方图,该直方图可作为特征描述符。
参考: https://www.cs.unc.edu/~lazebnik/spring11/lec08_blob.pdf
Blob检测的更多相关文章
- 斑点检测(LoG,DoG)(下)
斑点检测(LoG,DoG)(下) LoG, DoG, 尺度归一化 上篇文章斑点检测(LoG,DoG)(上)介绍了基于二阶导数过零点的边缘检测方法,现在我们要探讨的是斑点检测.在边缘检测中,寻找的是二阶 ...
- Python: scikit-image Blob detection
这个用例主要介绍利用三种算法对含有blob的图像进行检测,blob 或者叫斑点,就是在一幅图像上,暗背景上的亮区域,或者亮背景上的暗区域,都可以称为blob.主要利用blob与背景之间的对比度来进行检 ...
- CVPR 2019 行人检测新思路:
CVPR 2019 行人检测新思路:高级语义特征检测取得精度新突破 原创: CV君 我爱计算机视觉 今天 点击我爱计算机视觉置顶或标星,更快获取CVML新技术 今天跟大家分享一篇昨天新出的CVPR 2 ...
- TB3_Autorace之交通杆检测
利用blob检测算法识别交通杆,控制TB3机器人完成对交通杆的起停动作! 上一篇博文中<TB3_Autorace之路标检测>订阅了原始图像信息,经过SIFT检测识别出道路交通标志,这里我们 ...
- paper 64:尺度空间(Scale space)理论
尺度空间方法的基本思想是:在视觉信息处理模型中引入一个被视为尺度的参数,通过连续变化尺度参数获得不同尺度下的视觉处理信息,然后综合这些信息以深入地挖掘图像的本质特征.尺度空间方法将传统的单尺度视觉信息 ...
- OpenCV SIFT原理与源码分析
http://blog.csdn.net/xiaowei_cqu/article/details/8069548 SIFT简介 Scale Invariant Feature Transform,尺度 ...
- [Object Tracking] Overview of algorithms for Object Tracking
From: https://www.zhihu.com/question/26493945 可以载入史册的知乎贴 目标跟踪之NIUBILITY的相关滤波 - 专注于分享目标跟踪中非常高效快速的相关滤波 ...
- V-rep学习笔记:视觉传感器2
视觉传感器的属性设置栏中还有如下几个选项: Ignore RGB info (faster): if selected, the RGB information of the sensor (i.e. ...
- 【OpenCV】SIFT原理与源码分析
SIFT简介 Scale Invariant Feature Transform,尺度不变特征变换匹配算法,是由David G. Lowe在1999年(<Object Recognition f ...
随机推荐
- springboot 开启事务回滚
在数据库操作时如果发生异常,回滚的方法 在方法上添加注解@Transactional,作用域是方法级的 参考资料: https://www.cnblogs.com/c2g5201314/p/13163 ...
- a href 鼠标滑过变成小手图标
<a id="l05" style="cursor:pointer;text-decoration:none;" href="<%=pat ...
- Allwinner F1C100s coremark测试
ccu register base:0x01c20000 devmem 0x01c20000 The PLL output=(24MHz*N*K)/(M*P) N=31 K=1 M=1 P=/1 re ...
- Flink SQL任务自动生成与提交
目录 起因 思路 实现 1.配置 2.界面如下 3.环境 问题 起因 事情的起因,是看到一篇公众号文章Apache Flink 在汽车之家的应用与实践,里面提到了"基于 SQL 的开发流程& ...
- Java基础(十)——枚举与注解
一.枚举 1.介绍 枚举类:类的对象只有有限个,确定的.当需要定义一组常量时,强烈建议使用枚举类.如果枚举类中只有一个对象,则可以作为单例模式的实现. 使用 enum 定义的枚举类默认继承了 java ...
- JavaScript中数字常用方法
数字常用方法 (1)返回0-1(不包含1)随机小数(random()) 格式:Math.random() var num=parseInt(Math.random()*11) //拿到0-10中的随机 ...
- Git:解决报错:fatal: The remote end hung up unexpectedly
使用全局代理即可.字面意思连接时间过长,被github中断了连接.
- Tomcat-默认访问的工程和默认访问的资源
Tomcat(默认访问的工程和默认访问的资源) ROOT的工程的访问,以及默认index.html页面的访问 当我们在浏览器地址栏中输入访问地址如下: http://ip:port/ ====== ...
- 集合框架-工具类-Collections-其他方法将非同步集合转成同步集合的方法
集合框架TXT Collections-其他方法将非同步集合转成同步集合的方法
- (2)RabbitMQ架构设计与应用场景
1.什么是消息中间件? 消息是指应用间传输的数据.消息体包括文本字符串.Json.内嵌对象等.消息中间件是基于队列模型实现异步和同步传输数据的.作用:解耦,冗余(存储).扩展性.削峰.可恢复性.顺序保 ...