计算机视觉处理算法基础及视觉特征提取

1. 画图解释图像卷积滤波的基本原理,并进一步简述常见的图像平滑滤波算法。

图像滤波即为图像卷积,其基本原理是对图像像素进行卷积运算。
图像平滑滤波指的是图像操作进行噪声去除,常见的图像平滑滤波算法有:平均滤波,加权平均滤波(类似草帽状 为高斯滤波),中值滤波,高斯滤波最为常用。
在这里插入图片描述

2D卷积需要4个嵌套循环4-double loop,所以它并不快,除非我们使用很小的卷积核。这里一般使用3x3或者5x5。而且,对于滤波器,也有一定的规则要求:

  1)滤波器的大小应该是奇数,这样它才有一个中心,例如3x3,5x5或者7x7。有中心了,也有了半径的称呼,例如5x5大小的核的半径就是2。

  2)滤波器矩阵所有的元素之和应该要等于1,这是为了保证滤波前后图像的亮度保持不变。当然了,这不是硬性要求了。

  3)如果滤波器矩阵所有元素之和大于1,那么滤波后的图像就会比原图像更亮,反之,如果小于1,那么得到的图像就会变暗。如果和为0,图像不会变黑,但也会非常暗。

  4)对于滤波后的结构,可能会出现负数或者大于255的数值。对这种情况,我们将他们直接截断到0和255之间即可。对于负数,也可以取绝对值。

2. 简述边缘检测的基本原理,以及Sobel、LoG和Canny算子的原理差异。

边缘检测的本质是微分,由于像素值是离散的数值,所以实际操作中,使用差分运算。当相邻两个像素点的灰度值差异越大时,也就是其斜率越陡,也就是微分值越大,进而通过这个来判断边缘。

  • Sobel算子

使用sobel算子卷积核分别于原始图像相乘,得到横向和纵向的亮度差分近似值,sobel算子计算得出的像素灰度值存在幅值和方向,分别如下:Ex与Ey分别为经过sobel算子卷积核与横向纵向灰度值相乘得到的值。
在这里插入图片描述

sobel算子对噪声具有平滑作用,可以提供较为精确的边缘方向信息,但是边缘定位精度不够高,不能将图像的主题与背景严格地区分开。

  • LoG算子

LoG算子即将laplace算子中先进行噪声去噪处理,再进行边缘检测,由于二维高斯函数的性质,可以将二维高斯函数直接进行Laplace变换,求卷积,进而得到最终图像。
在这里插入图片描述

  • Canny算子

Canny算子在使用卷积操作进行图像平滑的同时计算微分,计算出相应的幅值和方向,对幅值进行非极大值抑制,最后进行自动边缘连接,canny算子对噪声不敏感,检测准确。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

非极大值抑制,使用3*3的领域,对中心像素沿梯度方向两个梯度幅值差值比较,仅保留极大值点;
在这里插入图片描述
使用分段函数,将像素值进行边缘连接;

candy算子虽然步骤相对于sobel、LoG算子较多,但是candy算子考虑了去噪、非极大值抑制,断裂边缘问题,是实际生活中使用较多。

# -*- coding:utf-8 -*-
#本程序用于边缘检测
import cv2  #导入opencv模块
import numpy as np

print("Hellow word!")     #打印“Hello word!”,验证模块导入成功

img = cv2.imread("lena.jpg")  #导入图片,图片放在程序所在目录
cv2.namedWindow("imagshow", 2)   #创建一个窗口
cv2.imshow('imagshow', img)    #显示原始图片

#高斯模糊
blurred = cv2.GaussianBlur(img, (3, 3), 0)
#转换为灰度图
out_img_GRAY=cv2.cvtColor(blurred,cv2.COLOR_BGR2GRAY)#将图片转换为灰度图
cv2.namedWindow("img_GRAY", 2)   #创建一个窗口
cv2.imshow('img_GRAY', out_img_GRAY)    #显示原始图片


#使用sobel算子进行边缘检测
sobel = cv2.Sobel(out_img_GRAY,-1,1,0,ksize=3)
cv2.namedWindow("sobel", 2)   #创建一个窗口
cv2.imshow('sobel', sobel)    #显示原始图片


#使用laplace算子进行边缘检测
laplacian = cv2.Laplacian(out_img_GRAY,-1)
cv2.namedWindow("laplacian", 2)   #创建一个窗口
cv2.imshow('laplacian', laplacian)    #显示原始图片


#使用Canny算子进行边缘检测
edge_output = cv2.Canny(out_img_GRAY, 10, 300)
cv2.namedWindow("Canny", 2)   #创建一个窗口
cv2.imshow('Canny', edge_output)    #显示原始图片

cv2.waitKey()

3. 简述图像直方图的基本概念,及使用大津算法进行图像分割的基本原理。

灰度直方图:将图像的灰度以统计的方法展示在直方图中,横轴是灰度值,纵轴是各灰度出现的次数。

将图像的灰度图中灰度值做二值化分割,是的背景和目标之间的差异最大化。

大津算法:遍历灰度取值,设定最佳阈值,使得背景和目标之间的类间方差值最大,但是大津算法对灰度渐变的场景不适用。

4. 简述Harris算子对角点的定义,进行角点检测的基本原理,并说明引入角点响应函数的意义。

角点(Corner)是在任意方向移动时,灰度积分都会剧烈变化。

通过对灰度进行计算,得到灰度积分变化,将灰度积分变化最终的值转为二次型,以二次型直观的展示灰度信息。通过比较二次型的参数从而判定该点是否角点。

引入角点响应函数后,不需要再因图像去具体分析阈值。将原有的灰度积分函数结果划分更为直观和方便,通过比较最终的R的值即可判断该点是否为角点。

角点响应函数如下:
在这里插入图片描述
5. 简述Hough变换的基本原理(包括参数空间变换及参数空间划分网格统计)。

直角坐标系中的一条直线对应极坐标系中的一个点,直角坐标系中的一个点对应极坐标系中的一条曲线。判断离散点是否在一条直线上,取离散点用极坐标表达,若若干条曲线相交于一点,则表示这些曲线所表示的离散点在一条直线上。

因直角坐标系中,k、b两个参数的取值范围均为(-∞,+∞),而极坐标系中,θ的取值范围为[0,2π],ρ的取值范围不会超过原始图像的对角线长度。

参数空间划分网格统计:依据同一条直线上的点,转到极坐标系下,会相交于一个点,将图划分网格,统计里面的曲线数量,进行投票来判断。

6. 简述SIFT原理(重点是尺度空间和方向直方图原理)及ORB算子原理(重点是FAST和BRIEF)。

SIFT原理:建立尺度空间,高斯金字塔,减法操作得到DoG镜子塔,对比出特征点,筛选,精确定位特征点,为特征点分配方向值,生成描述子。

SIFT算法分为如下四步:

  • 尺度空间极值检测:搜索所有尺度上的图像位置。通过高斯微分函数来识别潜在的对于尺度和旋转不变的兴趣点。

  • 关键点定位:在每个候选的位置上,通过一个拟合精细的模型来确定位置和尺度。关键点的选择依据于它们的稳定程度。

  • 方向确定:基于图像局部的梯度方向,分配给每个关键点位置一个或多个方向。所有后面的对图像数据的操作都相对于关键点的方向、尺度和位置进行变换,从而提供对于这些变换的不变性。

  • 关键点描述:在每个关键点周围的邻域内,在选定的尺度上测量图像局部的梯度。这些梯度被变换成一种表示,这种表示允许比较大的局部形状的变形和光照变化。

尺度空间理论的基本思想是:在图像信息处理模型中引入一个被视为尺度的参数,通过连续变化尺度参数获得多尺度下的尺度空间表示序列,对这些序列进行尺度空间主轮廓的提取,并以该主轮廓作为一种特征向量,实现边缘、角点检测和不同分辨率上的特征提取等。

方向直方图原理:为了使描述符具有旋转不变性,需要利用图像的局部特征为给每一个关键点分配一个基准方向。使用图像梯度的方法求取局部结构的稳定方向。对于在DOG金字塔中检测出的关键点点,采集其所在高斯金字塔图像3σ邻域窗口内像素的梯度和方向分布特征。

  • ORB算子

ORB(Oriented FAST and Rotated BRIEF)是一种快速特征点提取和描述的算法,采用FAST(features from accelerated segment test)算法来检测特征点,采用BRIEF算法来计算一个特征点的描述子。

BRIEF算法计算出来的是一个二进制串的特征描述符。

  • FAST具体计算过程:

oFAST从图像中选取一点P,以P为圆心画一个半径为3像素的圆。圆周上如果有连续N个像素点的灰度值比P点的灰度值大或下,则认为P为特征点(这里的N常为9、10、11、12)。

oFAST通过矩(moment)来计算特征点以r为半径范围内的质心,特征点坐标到质心形成一个向量作为该特征点的方向,以此实现特征点的旋转不变性。

  • BRIEF具体计算过程:

BRIEF算法的核心思想是在关键点P的周围以一定模式选取N个点对,把这N个点对的比较结果组合起来作为描述子。

BRIEF算法计算出来的是一个二进制串的特征描述符。它是在一个特征点的邻域内,选择n对像素点pi、qi(i=1,2,…,n)。

比较每个点对的灰度值的大小,如果I(pi)> I(qi),则生成二进制串中的1,否则为0。

所有的点对都进行比较,则生成长度为n的二进制串。一般n取128、256或512,opencv默认为256。

rBRIEF改进特征点描述子的相关性
在这里插入图片描述
在这里插入图片描述

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值