当前位置: 首页 > news >正文

【计算机视觉】Harris角点检测

角点指的是窗口延任意方向移动,都有很大变化量的点。

用数学公式表示为:

E(u,v) = \sum _{x,y} w(x,y)[I(x+u,y+v)-I(x,y)]^2

这个公式表示移动后的窗口,与移动前的窗口对应元素相减的平方,w(x,y)为每个像素点的权重

E(u,v)反映了如何移动窗口,以及移动窗口后的响应值

为了让E(u,v)u,v 直接建立关系,不用借助I(x,y),将E(u,v)进行泰勒展开

\displaystyle E(u,v)\approx E(0,0)+\begin{bmatrix} u & v \end{bmatrix}\begin{bmatrix} E_u(0,0)\\E_v(0,0) \end{bmatrix} \\ \\ \\ +\frac{1}2{}\begin{bmatrix} u & v \end{bmatrix}\begin{bmatrix} E_{uu}(0,0) & E_{uv}(0,0) \\E_{vu}(0,0)&E_{vv}(0,0) \end{bmatrix}\begin{bmatrix} u \\ v \end{bmatrix}\displaystyle

E(0,0) = 0

E_u(u,v) = \sum _{x,y}2w(x,y)[I(x+u,y+v)-I(x,y)]I_x(x+u,y+v)

E_v(u,v) = \sum _{x,y}2w(x,y)[I(x+u,y+v)-I(x,y)]I_y(x+u,y+v)

E_u(0,0) = E_v(0,0) = 0

E_{uu}(u,v) = \sum _{x,y}2w(x,y)[I_x^2(x+u,y+v) \\\\ +[I(x+u,y+v)-I(x,y)]I_{xx}(x+u,y+v)

E_{vv}(u,v) = \sum _{x,y}2w(x,y)[I_y^2(x+u,y+v) \\\\ +[I(x+u,y+v)-I(x,y)]I_{yy}(x+u,y+v)

E_{uu}(0,0) = \sum _{x,y}2w(x,y)I_x^2(x,y)

E_{vv}(0,0) = \sum _{x,y}2w(x,y)I_y^2(x,y)

E_{uv} (u,v)=E_{vu}(u,v)\\\\=\sum _{x,y}2w(x,y)[I_xI_y +[I(x+u,y+v)-I(x,y)]I_{xy}]

E_{uv} (0,0)=E_{vu}(0,0)=\sum _{x,y)}2w(x,y)I_x(x,y)I_y(x,y)

最终:

 E(u,v) = \begin{bmatrix} u &v \end{bmatrix}M \begin{bmatrix} u\\v \end{bmatrix} \ \ \ \ \ \ \ M=\sum _{x,y}w(x,y)\begin{bmatrix} I^2_x & I_xI_y \\ I_xI_y & I^2_y \end{bmatrix}

假设I_x,I_y 是互不影响的:

M=\begin{bmatrix} \lambda _1 & 0\\0 & \lambda_2 \end{bmatrix}

E(u,v) = \begin{bmatrix} u & v \end{bmatrix}\begin{bmatrix} \lambda_1 &0 \\ 0&\lambda_2 \end{bmatrix}\begin{bmatrix} u\\v \end{bmatrix}

只有当 \lambda_1,\lambda_2都不为0时 (x,y) 才是角点

I_x,I_y 相关可以通过正交化变成前面的形式

M = \begin{bmatrix} a &c \\c & d \end{bmatrix}= R^{-1}\begin{bmatrix} \lambda_1 &0 \\ 0&\lambda_2 \end{bmatrix}R= R^{T}\begin{bmatrix} \lambda_1 &0 \\ 0&\lambda_2 \end{bmatrix}R

\lambda_1,\lambda_2就反映了点在某个方向上的变化率,之后当\lambda_1,\lambda_2都很大时,该点才是角点

为了减少计算可以用R来判定是否为角点

相关文章:

  • 【洛谷】【模板】排序
  • Log4j.xml配置说明
  • PgSQL高级
  • 一文讲解关于MCU启动原理的几个关键问题
  • 数据挖掘目标(客户价值分析)
  • 数据结构之----栈、队列、双向队列
  • matlab 最小二乘拟合空间直线(方法三)
  • 佛山陶企再造行业新风口!站在创新之上,消费需求之下
  • 微信小程序-登录
  • 第四章 Django 模板系统
  • PPT制作的几个注意事项
  • 小程序面试总结
  • 【C++】:set和map
  • WPF-附加属性《十二》
  • *上位机的定义
  • 【JavaScript】通过闭包创建具有私有属性的实例对象
  • ECMAScript6(0):ES6简明参考手册
  • ES6, React, Redux, Webpack写的一个爬 GitHub 的网页
  • ES学习笔记(10)--ES6中的函数和数组补漏
  • javascript数组去重/查找/插入/删除
  • js作用域和this的理解
  • Less 日常用法
  • NLPIR语义挖掘平台推动行业大数据应用服务
  • PHP CLI应用的调试原理
  • Windows Containers 大冒险: 容器网络
  • 模型微调
  • 提醒我喝水chrome插件开发指南
  • JavaScript 新语法详解:Class 的私有属性与私有方法 ...
  • 移动端高清、多屏适配方案
  • #【QT 5 调试软件后,发布相关:软件生成exe文件 + 文件打包】
  • #我与Java虚拟机的故事#连载02:“小蓝”陪伴的日日夜夜
  • (17)Hive ——MR任务的map与reduce个数由什么决定?
  • (C#)if (this == null)?你在逗我,this 怎么可能为 null!用 IL 编译和反编译看穿一切
  • (附源码)python旅游推荐系统 毕业设计 250623
  • (机器学习的矩阵)(向量、矩阵与多元线性回归)
  • (七)c52学习之旅-中断
  • (全部习题答案)研究生英语读写教程基础级教师用书PDF|| 研究生英语读写教程提高级教师用书PDF
  • (算法)Travel Information Center
  • (推荐)叮当——中文语音对话机器人
  • (转)Linq学习笔记
  • ... fatal error LINK1120:1个无法解析的外部命令 的解决办法
  • .axf 转化 .bin文件 的方法
  • .mat 文件的加载与创建 矩阵变图像? ∈ Matlab 使用笔记
  • .net Application的目录
  • .NET CF命令行调试器MDbg入门(三) 进程控制
  • .NET DevOps 接入指南 | 1. GitLab 安装
  • .NET6 开发一个检查某些状态持续多长时间的类
  • /3GB和/USERVA开关
  • @configuration注解_2w字长文给你讲透了配置类为什么要添加 @Configuration注解
  • [ 蓝桥杯Web真题 ]-布局切换
  • []串口通信 零星笔记
  • [2016.7 Day.4] T1 游戏 [正解:二分图 偏解:奇葩贪心+模拟?(不知如何称呼不过居然比std还快)]
  • [ACL2022] Text Smoothing: 一种在文本分类任务上的数据增强方法
  • [APIO2015]巴厘岛的雕塑
  • [BZOJ 3680]吊打XXX(模拟退火)