CS131学习笔记(lecture6)

2024-03-26 16:48
文章标签 学习 笔记 cs131 lecture6

本文主要是介绍CS131学习笔记(lecture6),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

讲义地址:http://vision.stanford.edu/teaching/cs131_fall1718/files/06_ransac.pdf
本节内容可以看作是一种“自顶向下的介绍”。

用于边缘检测的一种模型匹配方法: random sample Consensus (RANSAC)

算法source:https://dl.acm.org/citation.cfm?id=358692
一方面,随着模型复杂度(参数个数)的增加,使用Hough transform在参数空间中拟合出一个模型将变得越来越慢;另一方面,在一个点集中,模型外点(如噪点或缺失点)将造成大量的误导。所以,引入RANSAC作为一种更加高效地解决定位问题(location determination problem,LDP)的模型拟合算法。
RANSAC的直觉解释是:主要基于外点引入的model不会得到大量内点的支持。

RANSAC算法:

维护一个(n,k,t,d)四元组,直到完成迭代。
其中:

n-每拟合一个待测试模型M所需要的点的个数(直线通常为2,圆则是3);
k-迭代次数;
t-判断一个点是否满足前述模型M(记为“好点”和“坏点”)的阈值(如距离);
d-每次迭代中判定前述生成模型是“好的模型”所需要的“好点”个数。

在第k次迭代中:

随机均匀采样n个点;
由这n个点拟合出一个模型;
对于其他每一个点:用t筛选出“好点”
若得到至少d个“好点”,则用这至少d+n个点重新拟合模型M’,并计算拟合误差。

把这k次迭代中拟合误差最小的M’作为最终结果。

举个例子:
1

有一个点集

2

随机sample2个点

3

这两个点拟合出1条直线

5

根据t区分“好点”7个,“坏点”8个。基于这7个点重新拟合,计算拟合误差。

6

新一轮迭代,随机sample2个点。

7

11个“好点”,4个“坏点”。基于这11个点重新拟合,该模型的拟合误差最小。做为最终结果返回。

可行性分析
假设待处理的点集中,真实最优模型“好点”所占总的点数的比率为 w w w,则采 n n n个点都是“好点”(意味着此次迭代能拟合出一个好的模型)的概率是 w n w^n wn(私以为此处应当采用排列组合的方法计算,而不是简单粗暴地用幂,不过原论文中是用b来代替这个数而已,一个轻微的放大不影响结果的收敛性), n n n个点中存在“坏点”(意味着此次迭代不能拟合出一个好的模型)的概率是 1 − w n 1-w^n 1wn(记为 1 − b 1-b 1b)。计算迭代次数 k k k的期望( E ( k ) = 1 b E(k)=\dfrac{1}{b} E(k)=b1)和标准差( S D ( k ) = 1 − b b ≈ 1 b = E ( k ) SD(k)=\dfrac{\sqrt{1-b}}{b}\approx\dfrac{1}{b}=E(k) SD(k)=b1b b1=E(k)
前面说了,RANSAC不仅仅用在拟合直线上,其可以拟合的对象在part 2中做了说明-——

局部不变特征(local invariant feature)

通过前面提到的cross-correlation等全局表示来实现图像匹配通常是不切实际的如:
匹配?
匹配。
而通过局部的、突出的特征对图片进行描述和匹配,这种方法具有更强的鲁棒性。其算法如下:

1.在两幅图中分别获得一些“关键点”(key point);
2.在关键点周围定义一个“局部区域”(local region)
3.提取区域内容并归一化(如获得均值为0,方差为1 的像素直方图)
4.计算得到一个局部描述子(local descriptor)
5.从两幅图中匹配上述局部描述子

所以定义一个具有如下特征的、好的局部描述算法就很重要:

1.可重复性(repeatability):对象在不同的视角、光照下应当可被检测及比较。换而言之,算法应当在不同的亮度、噪声和平滑等处理下具体有鲁棒性;
2.局部性(locality):算法应当仅仅关注局部特性,以免受到遮挡部分的干扰;
3.数量(quantity)足够:要能获得足够多的特征来描述对象;
4.可分辨(distinctiveness):不同的区域要有一定的结构,可以分辨;
5.效率(efficiency):算法对新图片的实时执行效率应当有保证。

基于以上要求,本节介绍了Harris角检测器,在下一节又介绍了和尺度不变特征变换(SIFT)算法。

Harris角检测器

原文:A COMBINED CORNER AND EDGE DETECTOR// Chris Harris & Mike Stephens
如果像素周围不存在边,我们就认为这个点在一个区域的内部;如果像素周围只存在一个方向的边,我们就认为该点是在区域的边缘上;而如果一个像素周围存在多于一个方向的边,我们就认为该点是角点。对于图中的每一个像素 [ x , y ] [x, y] [x,y],首先获得方向 [ u , v ] [u, v] [u,v]上的密度偏移量: E ( u , v ) = ∑ x , y w ( x , y ) [ I ( x + u , y + v ) − I ( x , y ) ] 2 E(u,v) =\sum_{x,y} w(x, y) [I(x + u, y + v) − I(x, y)]^2 E(u,v)=x,yw(x,y)[I(x+u,y+v)I(x,y)]2其中 w ( x , y ) w(x,y) w(x,y)是窗函数,可以把它理解为一个方形mask,用于筛选局部特征,在实际操作中通常用高斯平滑卷积的形式。 [ I ( x + u , y + v ) − I ( x , y ) ] 2 [I(x + u, y + v) − I(x, y)]^2 [I(x+u,y+v)I(x,y)]2用于提取给定方向的密度变化量,二次方的处理一方面是忽略方向的影响,另一方面是比绝对值的处理更加方便计算(可微)。
这里写图片描述
上式泰勒展开:
E ( u , v ) ≈ [ u , v ] M [ u v ] E(u,v)\approx[u, v]M \left[ \begin{matrix} u\\ v \end{matrix} \right] E(u,v)[u,v]M[uv]
其中: M = ∑ x , y w ( x , y ) [ I x I x I x I y I x I y I y I y ] = [ ∑ I x I x ∑ I x I y ∑ I x I y ∑ I y I y ] = ∑ [ I x I y ] [ I x , I y ] M=\sum_{x,y}w(x,y) \left[ \begin{matrix} I_xI_x & I_xI_y\\ I_xI_y & I_yI_y\end{matrix} \right] =\left[ \begin{matrix} \sum I_xI_x & \sum I_xI_y\\ \sum I_xI_y & \sum I_yI_y\end{matrix} \right] =\sum \left[ \begin{matrix} I_x\\ I_y \end{matrix} \right][I_x,I_y] M=x,yw(x,y)[IxIxIxIyIxIyIyIy]=[IxIxIxIyIxIyIyIy]=[IxIy][Ix,Iy]
这里写图片描述
该像素点处的response即为 R [ x , y ] = d e t ( M ) − k T r ( M ) 2 = λ 1 λ 2 − k ( λ 1 + λ 2 ) 2 R[x,y]=det(M)-kTr(M)^2=\lambda_1\lambda_2-k(\lambda_1+\lambda_2)^2 R[x,y]=det(M)kTr(M)2=λ1λ2k(λ1+λ2)2,其中 λ 1 λ 2 \lambda_1\lambda_2 λ1λ2是M的特征值, α \alpha α是0.04~0.06的常数修正因子。R>0时该点是角点,R<0时改点是边缘点。R在0附近时该点可认为是平面内的点。
一些思考:
该算法对于平移变换和旋转变换都是robust,但是尺度变换可能会造成误差,原因是算法中的窗函数具有局部性,在图像尺度变换后会改变这种局部特性。
尺度变换
由此,我们可以使用另外一种在尺度变换下依然保持高效的检测方法SIFT。

这篇关于CS131学习笔记(lecture6)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/849188

相关文章

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

线性代数|机器学习-P36在图中找聚类

文章目录 1. 常见图结构2. 谱聚类 感觉后面几节课的内容跨越太大,需要补充太多的知识点,教授讲得内容跨越较大,一般一节课的内容是书本上的一章节内容,所以看视频比较吃力,需要先预习课本内容后才能够很好的理解教授讲解的知识点。 1. 常见图结构 假设我们有如下图结构: Adjacency Matrix:行和列表示的是节点的位置,A[i,j]表示的第 i 个节点和第 j 个

Node.js学习记录(二)

目录 一、express 1、初识express 2、安装express 3、创建并启动web服务器 4、监听 GET&POST 请求、响应内容给客户端 5、获取URL中携带的查询参数 6、获取URL中动态参数 7、静态资源托管 二、工具nodemon 三、express路由 1、express中路由 2、路由的匹配 3、路由模块化 4、路由模块添加前缀 四、中间件