经典视觉处理20问--Opencv(9/20)

这里写目录标题

  • 一级目录
    • 二级目录
      • 三级目录
  • 1、颜色不变性
    • 色温
    • 白平衡
  • 2、模板匹配
  • 3、HOG
    • 3.1 图像预处理
    • 3.2 计算图像像素梯度图
    • 3.3 细胞的梯度直方图
    • 3.4 块内归一化梯度方向直方图
    • 3.5 生成Hog向量
    • 3.6 高斯空域加窗
    • 3.7 Hog优缺点:
  • 4、Hough
    • Hough直线变换原理:
    • hough圆检测
    • 梯度法缺点
  • 5、边缘检测
    • **边缘检测的一般步骤:**
    • 最优边缘检测的三个主要评价标准:
    • canny
    • sobel
    • Laplace
    • Marr-Hildreth
    • Roberts算子
    • Prewitt算子
    • 对比:
  • 6、OTSU
  • 7、Harris角点检测
  • 8、图像金字塔分层算法
  • 9、 SIFT(Scale Invariant Feature Transform)
  • 10、高斯滤波
  • 11、开运算,闭运算,腐蚀,膨胀
    • 膨胀
    • 腐蚀
    • 开运算
    • 闭运算
  • 12 高斯差分DOG
  • 13 直线检测

一级目录

二级目录

三级目录

1、颜色不变性

本模块参考该文章,侵删
颜色不变性定义:室外光线的彩色成分变化非常大,但人却能正确的感知场景中物体的颜色,并且在大部分情况下不依赖于环境照明的颜色,这种现象叫彩色不变性。

色温

  1. 色温是物理上的温度,温度低发红,高发蓝
  2. 狭义上,色温是针对光源的。

白平衡

物理世界里是无所谓「颜色」这个概念的,一切都是 光谱功率分布,所谓的「颜色」,是人类视觉过程产生的一种感受。一个物体的反射率是固定不变的,但是这个物体的「颜色」在不同条件下是不一样的。

白平衡(White Balance)要做的,就是在不同的光线条件下,根据当时得到的物体颜色,尽量恢复物体的「固有色」,或者说,尽量减小光源颜色对物体颜色的影响。

我们可以在色彩转换的过程中根据光源的情况指定不同的白点,从而得到相应正确的色彩转换结果。

白平衡的面板上总是会有两个调节滑块,一个调节黄-蓝平衡,通常叫色温(Temperature),一个调节绿-品红平衡,通常叫色调(Tint)。这两个方向互相配合,才能使得白点位于色品图中的任意位置,才能对任意光线条件下拍摄的照片进行白平衡的调节。

2、模板匹配

  • 模板匹配是一种最原始、最基本的模式识别方法,研究某一特定对象物的图案位于图像的什么地方,进而识别对象物,这就是一个匹配问题。
  • 它是图像处理中最基本、最常用的匹配方法。
  • 模板匹配具有自身的局限性,主要表现在它只能进行平行移动,若原图像中的匹配目标发生旋转或大小变化,该算法无效。

工作原理: 在待检测图像上,从左到右,从上向下计算模板图像与重叠子图像的匹配度,匹配程度越大,两者相同的可能性越大。

从上到下依次为:平方差匹配、归一化平方差匹配、相关匹配、归一化相关匹配、系数匹配、归一化系数匹配

Opencv有6种常用的模板匹配方法可供使用:
经典视觉处理20问--Opencv(9/20)_第1张图片

3、HOG

该模块参考该链接,侵删

Histogram of Oriented Gridients(HOG) 方向梯度直方图
这个特征名字起的也很直白,就是说先计算图片某一区域中不同方向上梯度的值,然后进行累积,得到直方图,这个直方图呢,就可以代表这块区域了,也就是作为特征,可以输入到分类器里面了。

HOG+SVM在行人检测上获得了巨大成功。

预备知识:

  • 在灰度图中 1个cell=8px*8px,一个block由四个cell组成
  • 在统计梯度方向时首先均是以细胞为单位进行统计,之后再以块为单位处理。

算法计算步骤概览

  • 图像预处理。伽马矫正(减少光度影响)和灰度化(也可以在RGB图上做,只不过对三通道颜色值计算,取梯度值最大的)【可选步骤】
  • 计算图像像素点梯度值,得到梯度图(尺寸和原图同等大小)
  • 图像划分多个cell,统计cell内梯度直方向方图
  • 将2×2个cell联合成一个block,对每个block做块内梯度归一化

3.1 图像预处理

gamma矫正和灰度化

作用:

  • gamma矫正通常用于电视和监视器系统中重现摄像机拍摄的画面.在图像处理中也可用于调节图像的对比度,减少图像的光照不均和局部阴影。
  • 能有效降低检测窗口局部的阴影和光照变化带来的影响,从而降低算法对光照的敏感性。
  • 但在Hog中发现用处并不大,所以实际用是可删除。

原理: 通过非线性变换,让图像从暴光强度的线性响应变得更接近人眼感受的响应,即将漂白(相机曝光)或过暗(曝光不足)的图片,进行矫正

gamma矫正公式: f(x)=xγ (即输出是输入的幂函数,指数为γ)

3.2 计算图像像素梯度图

我们需要同时计算图像的水平梯度图和垂直梯度图 。Sobel算子,分别计算水平和垂直方向梯度的。
梯度图移除了大量非显著性特征,并加强了显著特征。三通道的彩色图中,每个像素的梯度幅度是三个通道中最大的那个,而梯度方向是梯度幅度最大的那个通道上的方向。

3.3 细胞的梯度直方图

经过上一步计算之后,每个像素点都会有两个值:梯度方向和梯度幅度。

  • 梯度方向取值范围是[0,180],以每20°为一个单元,所有的梯度方向可以划分为9组,这就是统计直方图的分组数目。
  • 直方图的方向bin在0度-180度(无符号梯度)或者0度-360度(有符号梯度)之间均分。
  • 为了减少混叠现象,梯度投票在相邻bin的中心之间需要进行方向和位置上的双线性插值。
  • 投票的权重根据梯度幅值进行计算,可以取幅值本身、幅值的平方或者幅值的平方根。作者通过实验表明,使用梯度本身作为投票权重效果最好。

3.4 块内归一化梯度方向直方图

目的:降低光照的影响
方法:向量的每一个值除以向量的模长

由于局部光照的变化,以及前景背景对比度的变化,使得梯度强度的变化范围非常大。比如说,当图像值全部减少了一倍,那么梯度值也为减少一倍,但是我们不希望图像值影响到梯度值,所以需要对梯度做局部对比度归一化。

HOG在选取8×8为一个单元格的基础之上,再以2×2个单元格为一组,称为block。作者提出要对block进行归一化,由于每个单元格cell有9个向量,2×2个单元格则有36个向量,需要对这36个向量进行归一化。

3.5 生成Hog向量

遍历整个检测窗口就可以得到整个HOG特征向量,就可以用来可视化和分类了。

3.6 高斯空域加窗

对块内梯度幅值进行高斯空域加窗之后进行加权累加,可提高检测性能。

3.7 Hog优缺点:

优点:

  1. HOG表示边缘的结构特征,可以描述局部的形状信息。
  2. 位置和方向的量化一定程度上可以抑制平移和旋转带来的影响。
  3. 采用归一化,可以抵消光照带来的变化

缺点:
4. 描述子生成过程冗长,维度较高
5. 很难处理遮挡问题。
6. 对噪点敏感

4、Hough

  • 一种从图像识别几何形状的方法
  • 一般用来检测直线,后来用来检测(拓展)圆和椭圆
  • 基本原理为利用图像空间和Hough参数空间的线-点对偶性,把图像空间中的检测问题转换到参数空间中进行。
  • 把一个空间的曲线映射到另一个参数空间的一个点,从而把检测形状转为为统计峰值的问题

Hough直线变换原理:

  • 极坐标直线方程;ρ = x*cosθ + y*sinθ
  • 通过点(x0,y0)的直线簇:ρ = x0*cosθ + y0*sinθ
  • 对于一个给定点(x0,y0),在极坐标下对极径极角平面绘出所有经过他的直线,会得到一个正弦曲线:
    经典视觉处理20问--Opencv(9/20)_第2张图片
  • 对于输入的二值图像中的像素点(有值的),按照步长(rho和theta的步长)分别计算出每个点上的所有可能的直线。记录下每条直线经过的点数(即存在多个点计算出的直线有交集),按照阈值筛选符合条件的图像,如果交于一点的曲线数量超过一定阈值,认为这是这个交点所代表的参数是一条曲线
  • 具体计算时可将参数空间视为离散的,建立一个二维累计数组,然后找出峰值。
  • 原图直线是有宽度的,实际上相当于多条直线极其接近的单像素直线,往往对应参数空间中相邻的多个累加器,因此找到一个直线后,需要把其附近点清零。
  • 对于一个D*D的图像,通常rho取[ − 2 / 2 D -\sqrt{2}/2D 2 /2D: 2 / 2 D \sqrt{2}/2D 2 /2D],theta取[-90:,90]

霍夫直线检测优缺点:

  • 优点:
    Hough直线检测的优点是抗干扰能力强,对图像中直线的残缺部分、噪声以及其它共存的非直线结构不敏感。
  • 缺点:
    Hough变换算法的特点导致其时间复杂度和空间复杂度都很高,并且在检测过程中只能确定直线方向,丢失了线段的长度信息。

Hough直线检测有的问题和改进:

  • 会进行断线重连
  • 只会保留直线的方向,没有保留长短和位置信息

逆hough变化法:
在传统方法前边加了一个边缘检测的过程,再进一步利用逆hough变换构建参数空间进行判断及运算。

  • 直线用点斜式表示y-y0 = k(x-x0)
  • 然后会形成参数空间(x,y,k)
  • hough变换将图像空间中的点转换到参数空间,逆hough变换将参数空间的点(xm,ym,k)变换到图像空间,一个参数方程对应一条直线
  • 根据图像空间点的特征来判断参数方程所对应的的直线在图像空间是否为直线

斜率分式查表法:

hough圆检测

霍夫变换检测圆形的原理跟检测直线的原理是一样的。圆的表达式为 (x-a)2+(y-b)2=r2 , 把问题转换成在求解经过像素点最多的 (a,b,r) 参数对。这里会发现(a,b,r)的参数空间特别大,计算量特别大。我们一般使用霍夫梯度法来解决圆的变换。
霍夫梯度法:
圆心:

  • 首先对图像应用边缘检测,比如用canny边缘检测
  • 对边缘图像中每一个非零点考虑其局部梯度,使用sobel算子计算所有像素的梯度
  • 初始化圆心空间N(a,b),令所有N(a,b)=0
  • 遍历canny之后的所有非0的像素点,沿着梯度方向画线,每个点有是一个累加器,有一个线经过该点,累加器加1
  • 对所有累加器进行排序,根据阈值找到所有可能的圆心

半径:(针对某一个圆心)

  • 计算canny图像中所有的非0像素点距离圆心的距离,
  • 对选取的半径设置累加器,对于满足半径r的累加器+1
  • 距离从小到大排序,选取合适的半径

梯度法缺点

  1. 在霍夫梯度法中,我们使用Sobel导数来计算局部梯度,那么随之而来的假设是,其可以视作等同于一条局部切线,并这个不是一个数值稳定的做法。在大多数情况下,这样做会得到正确的结果,但或许会在输出中产生一些噪声。
  2. 在边缘图像中的整个非0像素集被看做每个中心的候选部分。因此,如果把累加器的阈值设置偏低,算法将要消耗比较长的时间。
  3. 第三,因为每一个中心只选择一个圆,如果有同心圆,就只能选择其中的一个。
  4. 因为中心是按照其关联的累加器值的升序排列的,并且如果新的中心过于接近之前已经接受的中心的话,就不会被保留下来。且当有许多同心圆或者是近似的同心圆时,霍夫梯度法的倾向是保留最大的一个圆。可以说这是一种比较极端的做法,因为在这里默认Sobel导数会产生噪声,若是对于无穷分辨率的平滑图像而言的话,这才是必须的。

5、边缘检测

毛星云大佬的opencv原书讲解,侵删

另一个

边缘检测的一般步骤:

  1. 滤波:边缘检测的算法主要是基于图像强度的一阶和二阶导数,但导数通常对噪声很敏感,因此必须采用滤波器来改善与噪声有关的边缘检测器的性能。
  2. 增强:增强边缘的基础是确定图像各点邻域强度的变化值。增强算法可以将图像灰度点邻域强度值有显著变化的点凸显出来。
  3. 检测:经过增强的图像,往往邻域中有很多点的梯度值比较大,而在特定的应用中,这些点并不是我们要找的边缘点,所以应该采用某种方法来对这些点进行取舍。实际工程中,常用的方法是通过阈值化方法来检测。

最优边缘检测的三个主要评价标准:

  1. 低错误率: 标识出尽可能多的实际边缘,同时尽可能的减少噪声产生的误报。
  2. 高定位性: 标识出的边缘要与图像中的实际边缘尽可能接近。
  3. 最小响应: 图像中的边缘只能标识一次,并且可能存在的图像噪声不应标识为边缘

canny

具体过程可看这个链接

  1. 消除噪声。 一般情况下,使用高斯平滑滤波器卷积降噪。
  2. 计算梯度幅值和方向。 此处,按照Sobel滤波器的步骤
  3. 非极大值抑制。 这一步排除非边缘像素, 仅仅保留了一些细线条(候选边缘)。
    • sobel计算出来的边缘太粗了,需要抑制那些梯度不够大的像素点,只保留最大梯度,从而达到瘦边的目的。
    • 梯度不够大的像素点可能是某一条边缘的过渡点。
    • 判断点是不是局部最大值,如果不是,删除
    • 通过极大值抑制可以明显去除很多点,图片边缘更明显。
  4. 滞后阈值。最后一步,Canny 使用了滞后阈值,滞后阈值需要两个阈值(高阈值和低阈值)。双阈值算法检测和连接边缘。
    • > T1:强边缘
    • T1-T2:弱边缘
    • 2:不是边缘
    • 弱边缘可能是边缘,可能是噪声
    • 当弱边缘的周围8邻域有强边缘点存在时,弱变强
    • T1:T2=2:1的比例效果较好

sobel

  • 作边缘检测的离散微分算子 (discrete differentiation operator)
  • Sobel算子结合了高斯平滑和微分求导,用来计算图像灰度函数的近似梯度。在图像的任何一点使用此算子,将会产生对应的梯度矢量或是其法矢量
  • 在x,y方向求导
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 梯度对噪声很敏感,所以要先进行滤波
  • 一维卷积-1 0 1 考虑到距离远近,把近处的权重设为2,得到sobel
  • sobel根据像素点上下左右邻点灰度加权差,在边缘处达到极值这一现象检测边缘,对噪声有平滑作用,提供较为准确的边缘方向信息,边缘定位精度不够高。

Laplace

  • Laplacian 算子是n维欧几里德空间中的一个二阶微分算子
  • f的拉普拉斯算子也是笛卡儿坐标系xi中的所有非混合二阶偏导数求和:
  • 根据图像处理的原理我们知道,二阶导数可以用来进行检测边缘 。 因为图像是 “二维”, 我们需要在两个方向进行求导。使用Laplacian算子将会使求导过程变得简单。
  • 经典视觉处理20问--Opencv(9/20)_第3张图片
  • 在这里插入图片描述
  • 由于 Laplacian使用了图像梯度,它内部的代码其实是调用了 Sobel 算子的。
  • 让一幅图像减去它的Laplacian可以增强对比度。
  • 二维卷积核1 -2 1,两个方向相加得到laplacian算子
  • 与sobel不同:
    • laplacian零点交叉对应边缘
    • sobel极值对应边缘
    • 一般零点交叉点检查边缘会更准确
  • 卷积核可以旋转,用于查找不与x,y轴平行或者垂直方向上的边缘

Marr-Hildreth

详细讲解,侵删
Marr和Hildreth证明了:

  • 灰度变化与图像尺寸无关,因此他们的检测要求使用不同尺寸的算子;
  • 灰度的突然变化会在一阶导数中引起波峰或波谷,或在二阶导数中等效地引起零交叉。

据这些建议,边缘检测算子应有两个显著特点:

  • 能计算图像中每一点处的一阶导数或二阶导数的数字近似的微分算子;
  • 能被“调整”以便在任何期望的尺寸上起作用。
  • 足这些条件最令人满意得到算子是滤波器高斯拉普拉斯(LoG)

因此,大的算子可用与检测模糊边缘,小的算子可用于检测锐度集中得到精细细节。

步骤:

  1. 高斯低通滤波器对输入图像滤波
  2. 计算由第一步得到的图像的拉普拉斯
  3. 找到步骤2所得图像的零交叉。

Roberts算子

  • 又称交叉微分算法
  • Roberts算子以求对角像素之差为基础,该算子用于识别对角线方向的边缘
  • 2*2
  • 常用来处理具有陡峭的低噪音图像
  • 对边缘的定位不太准确,提取的边缘线段较粗

Prewitt算子

Prewitt算子使用3x3卷积核
经典视觉处理20问--Opencv(9/20)_第4张图片

对比:

  • robert:对陡峭的低噪音图像效果较好,有其是45度边缘多的图像,但定位准确率较差
  • prewitt:没有考虑相邻点距离的远近
  • sobel:考虑了相邻点距离的远近,对噪音多的图片处理效果较好,边缘定位效果不错,但检测出的边缘容易出现多像素宽度。
  • 对噪声敏感,产生双像素边界,常用来判断边缘像素位于图像明区或者暗区,很少用来检测边缘

6、OTSU

大津算法详解,侵删

OTSU是阈值分割中一种常用的算法,它可以根据图像自动生成最佳分割阈值。OTSU的核心思想是类间方差最大化。

  • 首先是每个图像有不同的灰度阶,同时在每个灰度阶有相应的像素个数,所以就可以计算出像素点在每个灰度阶的概率
  • 然后假设有一个灰度级k可以把整个图像分成两部分,就可以就算出来这两个部分的平均灰度,和整张图片的平均灰度,所以可以知道类间方差的公式
  • 因为两个均值隔得越远,方差最大,表明类间方差是类之间的可分性度量,所以我们要求最佳的阈值k,使得类间方差最大。

7、Harris角点检测

超级详细,直接转,侵删
数学推导,加上理论特点分析,侵删

目前角点检测算法主要可归纳为3类:

  • 基于灰度图像的角点检测
  • 基于二值图像的角点检测
  • 基于轮廓的角点检测

什么是角点?

  • 角点就是轮廓之间的交点。
  • 像素点附近区域像素无论是在梯度方向、还是在梯度幅值上都发生较大的变化。

角点检测的算法思想是:
选取一个固定的窗口在图像上以任意方向的滑动,如果灰度都有较大的变化,那么就认为这个窗口内部存在角点。

角点与其他类型区域的不同之处:

  • 平坦区域:梯度方向各异,但是梯度幅值变化不大
  • 线性边缘:梯度幅值改变较大,梯度方向改变不大
  • 角点:梯度方向和梯度幅值变化都较大

有一个矩阵M,利用其矩阵进行角点检测:

  • 如果矩阵对应的两个特征值都较大,那么窗口内含有角点
  • 如果特征值一个大一个小,那么窗口内含有线性边缘
  • 如果两个特征值都很小,那么窗口内为平坦区域

检点检测算法的流程如下:

  1. 利用公式求出输入图像每个位置的角点强度响应
  2. 给定阈值,当一个位置的强度大于阈值则认为是角点
  3. 画出角点

详细算法流程,共分以下五步:
经典视觉处理20问--Opencv(9/20)_第5张图片
特点:

  • Harris角点检测算子对亮度和对比度的变化不敏感
  • Harris角点检测算子具有旋转不变性
    Harris角点检测算子使用的是角点附近的区域灰度二阶矩矩阵。而二阶矩矩阵可以表示成一个椭圆,椭圆的长短轴正是二阶矩矩阵特征值平方根的倒数。当特征椭圆转动时,特征值并不发生变化,所以判断角点响应值R也不发生变化,由此说明Harris角点检测算子具有旋转不变性。
  • Harris角点检测算子不具有尺度不变性

优缺点:

  • 优点:
    • 计算简单:Harris算子中只用到灰度的一阶差分以及滤波,操作简单
    • Harris算子在计算时用到了图像数据的一阶导数,具有各向同性。因此对图像旋转、亮度变化、视角变化和噪声的影响具有较好的鲁棒性。
    • 可以定量的提取特征点:Harris算子最后一步是对所有的局部极值进行排序,所以可以根据需要提取一定数量的最优点;
  • 缺点:
    • Harris算子不具有尺度不变性,为了满足对图像尺度的不变性,又提出了多尺度Harris算子。
    • 该算法检测时间不是很令人满意。

改进:

  • 针对尺度空间不具有不变形
    多尺度Harris角点检测,在位置空间和尺度空间都满足条件的Harris角点。
  • 针对并不具备仿射不变性
    Harris-Affine是一种新颖的检测仿射不变特征点的方法,可以处理明显的仿射变换,包括大尺度变化和明显的视角变化。

Harris-Affine主要是依据了以下三个思路:

  • 特征点周围的二阶矩的计算对区域进行的归一化,具有仿射不变性;
  • 通过在尺度空间上归一化微分的局部极大值求解来精化对应尺度;
  • 自适应仿射Harris检测器能够精确定位牲点;

8、图像金字塔分层算法

毛星云,opencv教程,侵删

  • 图像金字塔是图像中多尺度表达的一种,最主要用于图像的分割,是一种以多分辨率来解释图像的有效但概念简单的结构。
  • 图像金字塔最初用于机器视觉和图像压缩,一幅图像的金字塔是一系列以金字塔形状排列的分辨率逐步降低,且来源于同一张原始图的图像集合。其通过梯次向下采样获得,直到达到某个终止条件才停止采样。
  • 金字塔的底部是待处理图像的高分辨率表示,而顶部是低分辨率的近似。我们将一层一层的图像比喻成金字塔,层级越高,则图像越小,分辨率越低

图像金字塔种类:

  1. 高斯金字塔(Gaussianpyramid): 用来向下采样,主要的图像金字塔。
    高斯金字塔工作原理:
  • 对图像的向下取样
    <1>对图像i进行高斯内核卷积
    <2>将所有偶数行和列去除
    结果图像只有原图的四分之一。
  • 如果想放大图像,则需要通过向上取样操作得到,具体做法如下:
    <1>将图像在每个方向扩大为原来的两倍,新增的行和列以0填充
    <2>使用先前同样的内核(乘以4)与放大后的图像卷积,获得 “新增像素”的近似值

得到的图像即为放大后的图像,但是与原来的图像相比会发觉比较模糊,因为在缩放的过程中已经丢失了一些信息,如果想在缩小和放大整个过程中减少信息的丢失,这些数据形成了拉普拉斯金字塔。

  1. 拉普拉斯金字塔(Laplacianpyramid): 用来从金字塔低层图像重建上层未采样图像,在数字图像处理中也即是预测残差,可以对图像进行最大程度的还原,配合高斯金字塔一起使用。
    拉普拉斯金字塔就是记录高斯金字塔每一级下采样后再上采样与下采样前的差异
    拉普拉斯金字塔工作原理:
    拉普拉斯金字塔是通过源图像减去先缩小后再放大的图像的一系列图像构成的。
    经典视觉处理20问--Opencv(9/20)_第6张图片

这里的向下与向上采样,是对图像的尺寸而言的(和金字塔的方向相反),向上就是图像尺寸加倍,向下就是图像尺寸减半。

图像金字塔的应用:
主要解决图像分析尺度问题的,许多图像分析任务,包括超分辨、目标检测等等都是一种很重要的手段。
更多的是构造特征时:1、适应尺度变化。2、增加特征维度,构造高维特征。

9、 SIFT(Scale Invariant Feature Transform)

大佬链接,侵删
这个可能更详细一点,侵删

尺度不变特征转换匹配算法,是在计算机视觉任务中的特征提取算法。

  • SIFT可以帮助定位图像中的局部特征,通常称为图像的“关键点”。这些关键点是比例尺和旋转不变量
  • SIFT特征的主要优势在于它们不受图像大小或方向的影响。
  • 整个过程可以分为四个部分:
    • 构造比例空间:确保要素与比例无关
      • 使用高斯模糊技术(Gaussian Blur)来降低图像中的噪点,强调了图像的重要特征。
      • 比例空间是从单个图像生成的具有不同比例的图像的集合。
      • 理想的需要缩放图像为四次,并且每个缩放图像需要创建五后续的模糊图像。
      • 使用称为高斯差异(DoG)的技术来增强特征。高斯差异是一种特征增强算法,涉及从原始图像的另一个模糊版本中减去原始图像的一个模糊版本。
      • DoG通过从前一个图像中以相同比例尺减去每个图像,创建另一组图像。
    • 关键点本地化:确定合适的特征或关键点
      • 从图像中找到可用于特征匹配的重要关键点。即找到图像的局部最大值和最小值。
      • 分为两个步骤
        • 1.找到局部最大值和最小值
          当我说“邻近”时,它不仅包括该图像的周围像素(像素所在的像素),还包括八度中上一张和下一张图像的九个像素。这意味着将每个像素值与其他26个像素值进行比较,以确定是否为局部最大值/最小值。
        • 2.删除低对比度的关键点(关键点选择)
          但是这些关键点中的一些可能对噪声没有鲁棒性。
          将为每个关键点计算二阶泰勒展开(second-order Taylor expansion)。如果结果值小于0.03(大小),则剔除该关键点。
    • 方向分配:确保关键点是角度不变
      将该步骤分为两个较小的步骤:
      1. 计算幅度和方向
      2. 创建大小和方向的柱状图
        该柱状图将在某个点达到峰值。可以看出峰值的位置将是关键点的方向。此外,如果存在另一个显着的峰值(在80 – 100%之间),则将生成另一个关键点,其大小和比例与用于生成直方图的关键点相同。角度或方向将等于具有峰值的新bin。
    • 关键点描述符:为每个关键点分配独一的指纹
      我们将使用相邻像素,它们的方向和大小为该关键点生成一个唯一的指纹,称为“描述符”。

10、高斯滤波

详细,可转,侵删

  • 由于高斯函数可以写成可分离的形式,因此可以采用可分离滤波器来实现加速
  • 可分离滤波器,就是可以把一个多维的卷积转化成多个一维的卷积。具体到二维的高斯滤波,就是指先对行做一维卷积,再对列做一维卷积。这样就可以将计算复杂度从O(MMNN)降到O(2MMN)(行和列加起来),其减少的原因是卷积核由二维变为一维乘法的次数减少了。M、N分别是图像和滤波器的窗口大小。
    在这里插入图片描述
  • 在图形上,正态分布是一种钟形曲线,越接近中心,取值越大,越远离中心,取值越小。
  • 计算平均值的时候,我们只需要将"中心点"作为原点,其他点按照其在正态曲线上的位置,分配权重,就可以得到一个加权平均值。
  • 高斯核的表达式是可分离的。那么高斯核矩阵又可以改写成归一化常数乘以一个行向量乘以一个列向量的形式

11、开运算,闭运算,腐蚀,膨胀

形态学操作一般作用于二值化图,来连接相邻的元素或分离成独立的元素。

膨胀

膨胀就是求局部最大值的操作。
按数学方面来说,膨胀或者腐蚀操作就是将图像(或图像的一部分区域,我们称之为A)与核(我们称之为B)进行卷积。
而膨胀就是求局部最大值的操作,核B与图形卷积,即计算核B覆盖的区域的像素点的最大值,并把这个最大值赋值给参考点指定的像素。这样就会使图像中的高亮区域逐渐增长。
经典视觉处理20问--Opencv(9/20)_第7张图片
膨胀可以简单理解为将B与A接触的所有背景点合并到A中的过程。

腐蚀

  • 与膨胀相反,腐蚀就是求局部最小值的操作。
  • A中能完全包含B的像素被留下来了。
  • 腐蚀可以简单理解为消除物体A所有边界点的过程。
    经典视觉处理20问--Opencv(9/20)_第8张图片

开运算

先腐蚀后膨胀
开运算能够去除掉孤立的小点,毛刺和小桥(联通两块区域的小点),而总的位置和形状保持不变。

闭运算

先膨胀后腐蚀
闭运算能够填平小湖(即小孔),弥合小裂纹,而总的位置和形状不变。

经典视觉处理20问--Opencv(9/20)_第9张图片

12 高斯差分DOG

参考这个连接,侵删

DOG(Difference of Guassian)高斯函数的差分,是灰度图像增强和角点检测的一种方法。

它是可以通过将图像与高斯函数进行卷积得到一幅图像的低通滤波结果,即去噪过程
在某一尺度上的特征检测可以通过对两个相邻高斯尺度空间的图像相减,得到DoG的响应值图像。

经典视觉处理20问--Opencv(9/20)_第10张图片
具体步骤如下所示:

  1. 第一步,计算不同参数下的DOG;
  2. 第二步,根据DOG,求角点。
    根据理论:三维图中的最大值和最小值点是角点,如图所示:
    经典视觉处理20问--Opencv(9/20)_第11张图片
    标记红色当前像素点,绿色的圈标记邻接像素点,用这个方式,最多检测相邻尺度的26个像素点。如果它是所有邻接像素点的最大值或最小值点,则标记红色被标记为特征点,如此依次进行,则可以完成图像的特征点提取。

13 直线检测

除了hough还有如下:
里边总结很清楚,侵删

LSD直线检测算法:
侵删
LSD是一种直线检测分割算法,Line Segment Detector
检测效果优于Hough算法,而且具有较好的检测速度,推荐使用。
它能在线性的时间内得出亚像素级精度的检测结果。该算法被设计成可以在任何数字图像上都无需参数调节。它可以自己控制误检的数量:平均而言,每张图有一个误检。

你可能感兴趣的:(20问系列)