Machine Vision Technology:Lecture3 Edge detection | Fitting

Machine Vision Technology:Lecture3 Edge detection | Fitting

    • Finite difference filters有限差分滤波器
    • Effects of noise噪声对边缘检测影响
    • Derivative theorem of convolution卷积的导数定理
    • Derivative of Gaussian filter高斯滤波器的导数
    • Smoothing vs. derivative filters平滑滤波器与导数滤波器
    • Canny edge detector
    • Fitting拟合
    • Least squares line fitting最小二乘直线拟合

计算机视觉(本科) 北京邮电大学 鲁鹏


Finite difference filters有限差分滤波器

还有其他近似的导数滤波器:
在这里插入图片描述

对于 Sobel 算子:

[ − 1 0 1 − 2 0 2 − 1 0 1 ] = [ 1 2 1 ] [ − 1 0 1 ] = A B \begin{bmatrix} -1 & 0 & 1 \\ -2 & 0 & 2 \\ -1 & 0 & 1 \end{bmatrix} = \begin{bmatrix} 1 \\ 2 \\ 1 \\ \end{bmatrix} \begin{bmatrix} -1 & 0 & 1 \\ \end{bmatrix} = A B 121000121 = 121 [101]=AB

可以发现Sobel算子先对图像使用 B B B 进行卷积:求取图像边缘,然后使用 A A A 进行卷积:高斯平滑(高斯核的近似值)。

总之:提取边缘、高斯平滑。


此外,对于Roberts算子, M x M_x Mx 提取的是 135度方向的边,在边中像素差距不大,边的两边像素差距大。同理 M y M_y My 提取的是 45度方向的边。

Effects of noise噪声对边缘检测影响

考虑一个真实的图像 f ( x ) f(x) f(x),有很大的噪声干扰:
在这里插入图片描述

使用边缘滤波器进行卷积 d d x f ( x ) \frac{d}{dx}f(x) dxdf(x)

在这里插入图片描述

由于噪声影响太大,一阶导数的极值点有很多,便很难找到边缘。于是便有下面先平滑去噪、再边缘检测。

使用高斯 g g g 滤波器去噪:

在这里插入图片描述

这时,边缘在一阶导的极值点处。

Derivative theorem of convolution卷积的导数定理

  • 因为微分是卷积,卷积具有结合律Differentiation is convolution, and convolution is associative。

这样便有如下公式:
d d x ( f ∗ g ) = f ∗ d d x g \frac{d}{dx} (f*g) = f * \frac{d}{dx}g dxd(fg)=fdxdg

在这里插入图片描述

Derivative of Gaussian filter高斯滤波器的导数

高斯函数的一阶导数不可分离。

在这里插入图片描述

白色表示权重越高,黑色表示负的权值绝对值越大。

  • Scale of Gaussian derivative filter高斯导数滤波器的大小对图像提取边缘的效果

高斯一阶导的方差可以改变高斯导数滤波器的大小。

在这里插入图片描述

1pixel可以看到斑马的胡须细节,而7pixels变得模糊了便看不到这些细节。

去除了噪声但模糊了边缘。

Smoothing vs. derivative filters平滑滤波器与导数滤波器

在这里插入图片描述

平滑滤波器:平滑去噪

  • 高斯滤波器能够去除高频成分,是低通滤波器。
  • 平滑滤波器的值没有负的。
  • 平滑滤波器的值加和为1。不改变图像的强度。

在这里插入图片描述

导数滤波器:边缘提取

  • 高斯导数滤波器:等价于先平滑去噪,再微分求边缘。
  • 导数滤波器的值可以是负的。
  • 导数滤波器的值求和为0。
  • 高对比度处的高绝对值。High absolute value at points of high contrast

Canny edge detector

  • 原始图像:

在这里插入图片描述

  • norm of the gradient:梯度的L2范数

∣ ∣ ∇ f ∣ ∣ = ( ∂ f ∂ x ) 2 + ( ∂ f ∂ y ) 2 || \nabla f || = \sqrt{(\frac{\partial f}{\partial x})^2 + (\frac{\partial f}{\partial y})^2} ∣∣∇f∣∣=(xf)2+(yf)2

对原图进行卷积操作:使用x方向的卷积模版求x方向的导数,使用y方向的卷积模版求y方向的导数。

然后求L2范数得到如下边缘强度的图:

在这里插入图片描述

  • 使用阈值thresholding对边缘强度低的进行过滤。

在这里插入图片描述

上面过程产生的问题:边缘太厚:如上图中的肩膀处。

在这里插入图片描述
在这里插入图片描述

如何将这些厚实的区域梯度变成曲线?How to turn these thick regions of the gradient into curves?

  • 非极大值抑制Non-maximum suppression:用于消除边缘检测中的冗余边缘信息,只保留最具代表性的边缘。

检查像素是否沿渐变方向是局部最大值,选择沿边缘宽度的单个最大值。

在这里插入图片描述
在这里插入图片描述
在边上的某一点,沿着该点的梯度方向(与边的方向垂直),寻找左右两个邻居像素点,如对上面的q点,找到梯度方向的两个点r和p,如果q比r与q都大,则保留q点,如果q比r与q都小,则q剔除不保留。

在这里插入图片描述

上面的过程中还有个问题就是Lena的下巴的边缘消失了。产生的原因是上面使用thresholding阈值设置太高了。但如果阈值设置的太低,一些伪边就会产生。为此便有下面的双门限法:

  • Hysteresis thresholding滞后阈值法:使用高阈值提取出强边缘、然后使用低阈值会产生许多弱边缘,此时根据噪声边缘不会与强边缘有连接关系的假设,便可以剔除一些噪声边。

在这里插入图片描述

原始图像:

在这里插入图片描述

high threshold:提取强边缘。高门限结果:

在这里插入图片描述

low threshold:提取出弱边缘。低门限结果:

在这里插入图片描述

hysteresis threshold:滞后阈值法。双门限法:

在这里插入图片描述

Canny edge detector:

  • 1.使用高斯导数滤波器处理图像。去噪、提取边缘。
  • 2.求梯度的大小和方向Find magnitude and orientation of gradient:非极大值抑制使用。
  • 3.非极大值抑制Non-maximum suppression:使边缘的厚度下降到单个像素的宽度。粗边细化。
  • 4.链接和滞后阈值法Linking and thresholding (hysteresis):定义两个阈值low and high,使用高阈值开始边缘曲线,使用低阈值继续边缘曲线
edge(image, ‘canny’); # matlab

Fitting拟合

前面我们能够检测出边缘,但边缘表示的信息我们不知道,我们不知道是不是圆形、汽车的形状等等。

我们希望通过根据简单模型对多个特征进行分组,从而形成一个更高级别、更紧凑的图像中特征的表示。

拟合:选择一个参数模型来表示一组特征Choose a parametric model to represent a set of features

在这里插入图片描述

拟合面临的问题:

  • 测量特征位置中的噪声Noise in the measured feature locations
  • 无关外部数据:杂乱(异常值),多条线Extraneous data: clutter (outliers), multiple lines
  • 缺失数据:遮蔽区域Missing data: occlusions

在这里插入图片描述


Overview概述:

  • 1.如果我们知道哪些点属于这条直线,我们如何找到“最佳”线路参数?最小二乘法Least squares

找到了属于这条线上的点,拟合这条线,使用最小二乘法。

  • 2.如果有异常值怎么办?抗差拟合Robust fitting, RANSAC

这些点中有一些噪声点。噪声点少时使用Robust fitting,噪声点多时使用RANSAC。

  • 3.如果有很多条线呢?投票方式:RANSAC、Hough变换Voting methods: RANSAC, Hough transform

有很多条线,拟合一条线时,其余的点都是噪声点。噪声点比较多使用RANSAC方法,或者使用霍夫变换。

  • 4.如果我们甚至不确定这是一条线呢?Model selection

不知道图形的数学方程,如汽车边缘。可以使用Snake蛇形模型方法。

Least squares line fitting最小二乘直线拟合

在这里插入图片描述

Normal equations正规方程法。

上面是垂直Vertical最小二乘法,使用点到直线的垂直距离。会有下面问题:

  • 没有旋转不变性Not rotation-invariant。
  • 对于垂直线完全无效Fails completely for vertical lines。

Total lease squares 全最小二乘:最小化点到直线的距离。

Unit normal单位法向量: ( a , b ) a 2 + b 2 = 1 (a,b) \qquad \sqrt{a^2 + b^2}=1 (a,b)a2+b2 =1

在这里插入图片描述

对d求导,令导数等于0得到a和b表示的d,然后带入使用矩阵求:

在这里插入图片描述

最后等价于求 ( U T U ) N = 0 (U^T U)N=0 (UTU)N=0 N N N 的解,可以看成线性方程组的解,也可以看做是求 U T U U^TU UTU 的特征值0对应的特征向量 N N N

在这里插入图片描述

其中称 U T U U^TU UTU 为二阶矩矩阵second moment matrix。

在这里插入图片描述

上图中,直线 a x + b y = d ax + by = d ax+by=d 是我们要寻找的直线,单位法向量为 N = ( a , b ) N=(a,b) N=(a,b) ,带入 ( 0 , 0 ) (0,0) (0,0) 点,则 d d d 为零点到直线的距离。 ( x ˉ , y ˉ ) (\bar{x},\bar{y}) (xˉ,yˉ) 是直线上的点,则 U N UN UN 表示点在单位法向量上的投影,即求点在单位法向量上投影的和的最小值满足的 N ( a , b ) N(a,b) N(a,b)


使用概率的方式理解:

噪声点对直线的偏移服从均值为0,标准差为 σ \sigma σ 的正态分布。

在这里插入图片描述

由于要拟合的各点独立同分布iid于正态分布,利用极大似然估计,已经发生的事件概率最大化,再求对数似然估计:

在这里插入图片描述

最大化对数似然估计,等价于最小化:
∑ i = 1 n ( a x i + b y i − d ) 2 \sum_{i=1}^{n}(ax_i + by_i -d)^2 i=1n(axi+byid)2
这便转换为了上面的全最小二乘。


使用最小二乘拟合红点:

在这里插入图片描述

最小二乘与离群值(异常点)拟合:受外点影响较大。

在这里插入图片描述

使用下面的鲁棒最小二乘法。


Robust estimators稳健估计:

定义Robust function鲁棒函数 ρ \rho ρ
ρ ( u ; σ ) = u 2 σ 2 + u 2 \rho(u;\sigma) = \frac{u^2}{\sigma^2 + u^2} ρ(u;σ)=σ2+u2u2
函数图像如下:其中水平方向为 u u u σ \sigma σ 为已知参数。

在这里插入图片描述

y = x 2 y=x^2 y=x2 作为对比。

u u u 较小时,近似等价于 u u u 的平方, σ \sigma σ 越小这种近似越明显。 u u u 较大时,趋近于1。

针对上面的问题,此时可以把 u u u 看做点到直线的距离 r i ( x i , θ ) r_i(x_i,\theta) ri(xi,θ),于是最小二乘改进为最小化:
∑ i = 1 n ρ ( r i ( x i , θ ) ; σ ) \sum_{i=1}^{n} \rho(r_i(x_i, \theta) ; \sigma) i=1nρ(ri(xi,θ);σ)
σ \sigma σ 为0.1时, u u u 很小就可饱和,超过 u u u 之后的点就不用管了。 σ \sigma σ 可以形象理解为控制 u u u 超过多少以后的点不用管了。 σ \sigma σ 越小,点到直线的距离很小时该点才可以作为拟合点。 σ \sigma σ 越大,点到直线的距离大一点也可以作为拟合点。

选择的 σ \sigma σ 刚刚好just right,优化的结果异常值的影响被最小化

在这里插入图片描述

选择的 σ \sigma σ 太小too small:每个点的误差值几乎相同,拟合很差。

在这里插入图片描述

选择的 σ \sigma σ 太大too large:和最小二乘差不多。

在这里插入图片描述

Robust estimations:Details

  • 鲁棒拟合是一个非线性优化问题,必须通过迭代求解。
  • 最小二乘法求出的(a,b,d)参数可用于初始化。
  • σ \sigma σ 的选择:approx. 1.5 times median residual大约1.5倍平均残差 u u u

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/748477.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

后端系统开发之——创建SpringBoot工程

原文地址:后端框架系统开发之——创建SpringBoot工程 - Pleasure的博客 下面是正文内容: 前言 现在的市场环境,如果你单单只是作为前端工程师或者是后端工程师,在开发Web应用的时候都需要去读取企业提供的接口文档。而当你前后端…

【ARM】UBL本地服务器离线激活license

【更多软件使用问题请点击亿道电子官方网站查询】 1、 文档目标 UBL本地服务器离线激活license。 2、 问题场景 解决有用户外出时激活 license。 3、软硬件环境 1)、软件版本:MDK5.39 2)、电脑环境:Ubuntu 20.04 LTS 3&…

NCV4275CDT50RKG稳压器芯片中文资料规格书PDF数据手册引脚图图片价格功能

产品概述: NCV4275C 是一款低漏稳压器,可用于严酷汽车环境。它包括了较宽的运行温度范围和输出电压范围。输出调节为 5.0 V 或 3.3 V,额定输出电流为 450 mA。它还提供过电流保护、超温保护和可编程微处理器重置等多种功能。NCV4275C 采用 D…

linux ffmpeg编译

下载源码 https://ffmpeg.org/ csdn下载源码包 不想编译可以直接下载使用静态版本 https://ffmpeg.org/download.html https://johnvansickle.com/ffmpeg/ 根据cpu类型,下载解压后就可以直接使用了。 linux编译 安装底层依赖 yum install gcc yum isntall …

接口测试和功能测试有什么区别

本文主要分为两个部分: 第一部分:主要从问题出发,引入接口测试的相关内容并与前端测试进行简单对比,总结两者之前的区别与联系。但该部分只交代了怎么做和如何做?并没有解释为什么要做? 第二部分&#xff1…

vue3项目随笔1

1,Eslint Prettier 报错情况: 解决办法: (1)下载Prettier - code formatter (2)配置setting.json文件 文件 -> 首选项 -> 设置 -> 用户 -> Eslint "editor.defaultFormatter":…

浅易理解:非极大抑制NMS

什么是非极大抑制NMS 非极大值抑制(Non-Maximum Suppression,简称NMS)是一种在计算机视觉和图像处理领域中广泛使用的后处理技术,特别是在目标检测任务中。它的主要目的是解决目标检测过程中出现的重复检测问题,即对于…

认清趋势的力量!北大请摆摊鹅姨做演讲!阿伟告白失败,AI有资格做僚机?——早读(逆天打工人爬取热门微信文章解读)

趋势的力量,AWSL 引言Python 代码第一篇 人民日报 【夜读】最好的伯乐,是努力的自己第二篇 来啦新闻早班车要闻社会政策 结尾 “识时务者为俊杰,通机变者为英豪” 生活中,我们如骑行者穿越车水马龙 察觉人潮车流的趋势 不论体能优…

DCAI:Data-Centric AI 以数据为中心的AI

1. 什么是DCAI? 1.1. 当下的研究背景 想象当中的数据集:通常是干净且精选的(例如猫或狗的图片)。 猫就是猫,狗就是狗 实际现实生活中的数据集:非常混乱~ https://labelerrors.com/ 比如这个网站里提供了一些人们常用的开源数据集…

产品推荐 - ALINX XILINX FPGA开发板 Artix-7 XC7A100T-2FGG484I

01开发板介绍 此款开发板采用核心板扩展板的模式,方便用户对核心板的二次开发利用。FPGA使用的是Xilinx公司的ARTIX-7系列的芯片,型号为XC7A100T-2FGG484I。在核心板使用了2片MICRON公司的MT41J256M16HA-125 DDR3芯片,组合成32bit的数据总线…

栈的应用——括号匹配

用栈实现 1、初始化一个栈,用来存左括号 2、遍历扫描括号字符串 如果遇到左括号,无脑入栈如果遇到右括号,此时栈空返回false,不空的话进行括号匹配。匹配不成功返回false,匹配成功将栈顶的那个左括号出栈。 遍历完之后…

【PyTorch】成功解决ModuleNotFoundError: No module named ‘torch’

【PyTorch】成功解决ModuleNotFoundError: No module named ‘torch’ 🌈 个人主页:高斯小哥 🔥 高质量专栏:Matplotlib之旅:零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程👈 希…

Java多线程实战-异步操作日志记录解决方案(AOP+注解+多线程)

🏷️个人主页:牵着猫散步的鼠鼠 🏷️系列专栏:Java全栈-专栏 🏷️本系列源码仓库:多线程并发编程学习的多个代码片段(github) 🏷️个人学习笔记,若有缺误,欢迎评论区指正…

C++笔记:从零开始一步步手撕高阶数据结构AVL树

文章目录 高度平衡二叉搜索树实现一颗AVL树结点与树的描述——定义类AVL树的插入操作步骤1:按照二叉搜索树的方法插入结点步骤2:自底向上调整平衡因子步骤3:触发旋转操作(AVL树平衡的精髓)右单旋左单旋左右双旋右左双旋…

TSINGSEE青犀视频AI方案:数据+算力+算法,人工智能的三大基石

背景分析 随着信息技术的迅猛发展,人工智能(AI)已经逐渐渗透到我们生活的各个领域,从智能家居到自动驾驶,从医疗诊断到金融风控,AI的应用正在改变着我们的生活方式。而数据、算法和算力,正是构成…

【矩阵】48. 旋转图像【中等】

旋转图像 给定一个 n n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。你必须在 原地 旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。 示例 1: 输入:matrix [[1,2,3],[4,5,6],[7,8,…

rust学习笔记(1-7)

原文 8万字带你入门Rust 1.包管理工具Cargo 新建项目 1)打开 cmd 输入命令查看 cargo 版本 cargo --version2) 使用 cargo new 项目名 在文件夹,按 shift 鼠标右键 ,打开命令行,运行如下命令,即可创建…

基于springboot的七彩云南文化旅游网站的设计与实现(论文+源码)_kaic

摘 要 传统办法管理信息首先需要花费的时间比较多,其次数据出错率比较高,而且对错误的数据进行更改也比较困难,最后,检索数据费事费力。因此,在计算机上安装七彩云南文化旅游网站软件来发挥其高效地信息处理的作用&am…

【使用postman测试python接口】

打开python服务 设置postman如下,并发送: postman新建请求设置请求方式为post设置地址、raw、json方式、内容如下 结果: python如下: from flask import Flask, request, jsonifyapp Flask(__name__) # 实例化对象app.route…

你为什么是你,而不是别人?认识人格的力量

你为什么是你,而不是别人?让你做自我介绍,你会怎么描述自己呢? 人格心理学是心理学的一门重要分支学科。探求、描述和揭示个体思想、情绪及行为的独特模式,综合个人与环境诸多影响因素,对现实社会中的个人作…