1、 给定 0-1 矩阵,求连通域。
2、 写一个函数,求灰度图的直方图。
3、 写一个均值滤波(中值滤波)。
4、 写出高斯算子,Sobel 算子,拉普拉斯算子等,以及它们梯度方向上的区别。
4.0 sobel 算子
索贝尔算子(Sobeloperator)主要用作边缘检测,在技术上,它是一离散性差分算
子,用来运算图像亮度函数的灰度之近似值。在图像的任何一点使用此算子,将会产生对应
的灰度矢量或是其法矢量
⚫ 数学原理
Sobel 卷积因子为:
图像的每一个像素的横向及纵向灰度值通过以下公式结合:
通常,为了提高效率使用不开方的近似值:
4.1 拉普拉斯算子
Laplace 算子和 Sobel 算子一样,属于空间锐化滤波操作。起本质与前面的 Spatial
Filter 操作大同小异,下面就通过 Laplace 算子来介绍一下空间锐化滤波,并对 OpenCV
中提供的 Laplacian 函数进行一些说明。
⚫ 数学原理
离散函数的导数退化成了差分,一维一阶差分公式和二阶差分公式分别为
22xyGGG=+||||||GGxGy=+(1)()ffxfxx=+−
分别对 Laplace 算子 x,y 两个方向的二阶导数进行差分就得到了离散函数的 Laplace
算子,在一个二维函数 f(x,y)中,x,y 两个方向的二阶差分分别为,
所以 Laplace 算子的差分形式为,
写成 filter mask 的形式如下,
注意该 mask 的特点,mask 在上下左右四个 90 度的方向上结果相同,也就是说在
90 度方向上无方向性。为了让该 mask 在 45 度的方向上也具有该性质,对该 filter
mask 进行扩展定义为,
5、 常用的特征提取方法。
5.0 SIFT(尺度不变特征变换)
⚫ SIFT 特征提取的实质
在不同的尺度空间上查找关键点(特征点),并计算出关键点的方向。SIFT 所查找到的
关键点是一些十分突出、不会因光照、仿射变换和噪音等因素而变化的点,如角点、边
缘点、暗区的亮点及亮区的暗点等。
⚫ SIFT 特征提取的方法
1. 构建 DOG 尺度空间:
22(1)(1)2()ffxfxfxx=+−−−22(1,)(1,)2(,)ffxyfxyfxyx=++−−22(,1)(,1)2(,)ffxyfxyfxyy=++−−2(,)(1,)+(1,)(,1)(,1)4(,)fxyfxyfxyfxyfxyfxy=+−+++−−
模拟图像数据的多尺度特征,大尺度抓住概貌特征,小尺度注重细节特征。通过构建高
斯金字塔(每一层用不同的参数σ做高斯模糊(加权)),保证图像在任何尺度都能有对
应的特征点,即保证尺度不变性。
2. 关键点搜索和定位:
确定是否为关键点,需要将该点与同尺度空间不同σ值的图像中的相邻点比较,如果该
点为 max 或 min,则为一个特征点。找到所有特征点后,要去除低对比度和不稳定的
边缘效应的点,留下具有代表性的关键点(比如,正方形旋转后变为菱形,如果用边缘
做识别,4 条边就完全不一样,就会错误;如果用角点识别,则稳定一些)。去除这些点
的好处是增强匹配的抗噪能力和稳定性。最后,对离散的点做曲线拟合,得到精确的关
键点的位置和尺度信息。
3. 方向赋值:
为了实现旋转不变性,需要根据检测到的关键点的局部图像结构为特征点赋值。具体做
法是用梯度方向直方图。在计算直方图时,每个加入直方图的采样点都使用圆形高斯函
数进行加权处理,也就是进行高斯平滑。这主要是因为 SIFT 算法只考虑了尺度和旋转
不变形,没有考虑仿射不变性。通过高斯平滑,可以使关键点附近的梯度幅值有较大权
重,从而部分弥补没考虑仿射不变形产生的特征点不稳定。注意,一个关键点可能具有
多个关键方向,这有利于增强图像匹配的鲁棒性。
4. 关键点描述子的生成:
关键点描述子不但包括关键点,还包括关键点周围对其有贡献的像素点。这样可使关键
点有更多的不变特性,提高目标匹配效率。在描述子采样区域时,需要考虑旋转后进行
双线性插值,防止因旋转图像出现白点。同时,为了保证旋转不变性,要以特征点为中
心,在附近领域内旋转θ角,然后计算采样区域的梯度直方图,形成 n 维 SIFT 特征矢
量(如 128-SIFT)。最后,为了去除光照变化的影响,需要对特征矢量进行归一化处
理。
⚫ SIFT 特征提取的优点
1、SIFT 特征是图像的局部特征,其对旋转、尺度缩放、亮度变化保持不变性,对视角
变化、仿射变换、噪声也保持一定程度的稳定性;
2、独特性(Distinctiveness)好,信息量丰富,适用于在海量特征数据库中进行快
速、准确的匹配;
3、多量性,即使少数的几个物体也可以产生大量的 SIFT 特征向量;高速性,经优化
的 SIFT 匹配算法甚至可以达到实时的要求;
4、可扩展性,可以很方便的与其他形式的特征向量进行联合;
5、需要较少的经验主义知识,易于开发。
⚫ SIFT 特征提取的缺点
1、实时性不高,因为要不断地要进行下采样和插值等操作;
2、有时特征点较少(比如模糊图像);
3、对边缘光滑的目标无法准确提取特征(比如边缘平滑的图像,检测出的特征点过
少,对圆更是无能为力)。
⚫ SIFT 特征提取可以解决的问题:
目标的自身状态、场景所处的环境和成像器材的成像特性等因素影响图像配准/目标
识别跟踪的性能。而 SIFT 算法在一定程度上可解决:
目标的旋转、缩放、平移(RST)
图像仿射/投影变换(视点 viewpoint)
光照影响(illumination)
目标遮挡(occlusion)
杂物场景(clutter)
噪声
5.1 HOG(方向梯度直方图)
⚫ HOG 特征提取的实质
通过计算和统计图像局部区域的梯度方向直方图来构成特征。Hog 特征结合 SVM 分
类器已经被广泛应用于图像识别中,尤其在行人检测中获得了极大的成功。
⚫ HOG 特征提取的方法
1、灰度化;
2、采用 Gamma 校正法对输入图像进行颜色空间的标准化(归一化),目的是调节图
像的对比度,降低图像局部的阴影和光照变化所造成的影响,同时可以抑制噪音的干
扰;
3、计算图像每个像素的梯度(包括大小和方向),主要是为了捕获轮廓信息,同时进
一步弱化光照的干扰;
4、将图像划分成小 cells(例如 6*6 像素/cell);
5、统计每个 cell 的梯度直方图(不同梯度的个数),即可形成每个 cell 的
descriptor;
6、将每几个 cell 组成一个 block(例如 3*3 个 cell/block),一个 block 内所有 cell
的特征 descriptor 串联起来便得到该 block 的 HOG 特征 descriptor。
7、将图像 image 内的所有 block 的 HOG 特征 descriptor 串联起来就可以得到该
image(你要检测的目标)的 HOG 特征 descriptor 了。这个就是最终的可供分类使
用的特征向量了。
6、 常用的目标检测方法。
⚫ 滑动窗口目标检测
⚫ R-CNN 系列 - Two Stage 目标检测算法
1、R-CNN
2、Fast R-CNN
3、Faster R-CNN
R-FCN
⚫ YOLO、SSD - One Stage 目标检测算法
1、YOLO : You Only Look Once
2、SSD : Single Shot MultiBox Detector
7、 常用的边缘提取方法。
⚫ Canny 算子边缘检测
Canny 边缘检测算法基于一个多阶边缘算子,是由 John F. Canny 于 1986 年首
先提出的[46],他不但给出了边缘检测的方法,也提出了边缘检测的计算理论。Canny
边缘检测器使用一个基于高斯模型派生的检测模型,因为未处理图像可能含有噪声,所
以开始在原始图像上应用一个高斯滤波器,结果是一个轻度平滑的图像,以至于不至于
被单个噪声像素干扰全局重要参数。以一个 5×5 的高斯滤波模板为例(见公式 3-7),
对图像 A 应用高斯滤波可得 B。下面对图像的光强梯度统计都基于图 B。
一幅图像中的边缘可能在方向上各有所异,所以 Canny 算法用四个滤波器分别检
测图像中的水平、垂直和对角线边缘。边缘检测器值返回一个水平方向分量 Gx 和竖直
方向分量 Gy,由此边缘梯度和方向即可确定:
⚫ Sobel 算子边缘检测
同上
8、 常用的插值方法。
⚫ 最邻近元法
这是最简单的一种插值方法,不需要计算,在待求象素的四邻象素中,将距离待求象素
最近的邻象素灰度赋给待求象素。设
,
( , 为正整数, , 为大于零小
于 1 的小数,下同)为待求象素坐标,则待求象素灰度的值
如下图所示:
如果(
,
)落在 A 区,即 <0.5, <0.5,则将左上角象素的灰度值赋
给
待求 象素,同理,落在 B 区则赋予右上角的象素灰度值,落在 C 区则赋予左下角象
素的 灰度值,落在 D 区则赋予右下角象素的灰度值。
22xyGGG=+arctan()yxGG=iu+jv+ijuv(,)fiujv++iu+jv+uv
最邻近元法计算量较小,但可能会造成插值生成的图像灰度上的不连续,在灰度变化
的地方可能出现明显的锯齿状。
⚫ 双线性内插法
双线性内插法是利用待求象素四个邻象素的灰度在两个方向上作线性内插,如下图所示:
对于
、
到
的灰度变化为线性关系,则有:
同理对于
则有:
从
到
的灰度变化也为线性关系,由此可推导出待求象素
灰度 的计算式如下:
双线性内插法的计算比最邻近点法复杂,计算量较大,但没有灰度不连续的缺点,结
果基 本令人满意。它具有低通滤波性质,使高频分量受损,图像轮廓可能会有一点模
糊。
⚫ 三次内插法
该方法利用三次多项式 S(x)求逼近理论上最佳插值函数 sin(x)/x, 其数学表达式为:
待求像素(x, y)的灰度值由其周围 16 个灰度值加权内插得到,如下图:
(,)fijv+(,)fij(,1)fij+(,)[(,1)(,)]*(,)fijvfijfijvfij+=+−+(1,)ijv++(1,)[(1,1)(1,)]*(1,)fijvfijfijvfij++=++−+++(,)fijv+(1,)fijv++(,)(1)*(1)*(,)(1)**(,1)*(1)*(1,)**(1,1)fiujvuvfijuvfijuvfijuvfij++=−−+−++−++++222312||||0||1()48||5||||1||20||2xxxSxxxxxx−+=−+−
待求像素的灰度计算式如下:
9、 常用的图像分割算法。
⚫ 基于阈值的分割方法
灰度阈值分割法是一种最常用的并行区域技术,它是图像分割中应用数量最多的一类。
阈值分割方法实际上是输入图像 f 到输出图像 g 的如下变换:
其中 T 为阈值;对于物体的图像元素,
=1,对于背景的图像元素
=0。
⚫ 基于边缘的分割方法
基于边缘的分割方法是指通过边缘检测,即检测灰度级或者结构具有突变的地方,确
定一个区域的终结,即另一个区域开始的地方。不同的图像灰度不同,边界处一般有
明显的边缘,利用此特征可以分割图像。
⚫ 基于小波变换的分割方法
(,)(,)fxyfiujvABC=++=1(,)(,)0(,)fijTgijfijT=(,)gij(,)gij
基于小波变换的阈值图像分割方法的基本思想是首先由二进小波变换将图像的直方图
分解为不同层次的小波系数,然后依据给定的分割准则和小波系数选择阈值门限,最
后利用阈值标出图像分割的区域。整个分割过程是从粗到细,由尺度变化来控制,即
起始分割由粗略的 L2(R)子空间上投影的直方图来实现,如果分割不理想,则利用直
方图在精细的子空间上的小波系数逐步细化图像分割。分割算法的计算会与图像尺寸
大小呈线性变化。
⚫ 基于神经网络的分割方法
近年来,人工神经网络识别技术已经引起了广泛的关注,并应用于图像分割。基于神
经网络的分割方法的基本思想是通过训练多层感知机来得到线性决策函数,然后用决
策函数对像素进行分类来达到分割的目的。这种方法需要大量的训练数据。神经网络
存在巨量的连接,容易引入空间信息,能较好地解决图像中的噪声和不均匀问题。选
择何种网络结构是这种方法要解决的主要问题。
10、写一个图像 resize 函数(放大和缩小)。
11、彩色图像、灰度图像、二值图像和索引图像区别?(索引图像到底是啥?)
⚫ 彩色图像:每个像素由 R、G、B 三个分量表示,每个通道取值范围 0~255。数据类型
一般为 8 位无符号整形。
⚫ 灰度图像:每个像素只有一个采样颜色的图像,这类图像通常显示为从最暗黑色到最亮
的白色的灰度。
⚫ 二值图像(黑白图像):每个像素点只有两种可能,0 和 1.0 代表黑色,1 代表白色。
数据类型通常为 1 个二进制位。
⚫ 索引图像,即它的文件结构比较复杂,除了存放图像的二维矩阵外,还包括一个称之为
颜色索引矩阵 MAP 的二维数组。MAP 的大小由存放图像的矩阵元素值域决定,如矩
阵元素值域为[0,255],则 MAP 矩阵的大小为 256Ⅹ3,用 MAP=[RGB]表示。MAP
中每一行的三个元素分别指定该行对应颜色的红、绿、蓝单色值,MAP 中每一行对应
图像矩阵像素的一个灰度值,如某一像素的灰度值为 64,则该像素就与 MAP 中的第
64 行建立了映射关系,该像素在屏幕上的实际颜色由第 64 行的[RGB]组合决定。也
就是说,图像在屏幕上显示时,每一像素的颜色由存放在矩阵中该像素的灰度值作为
索引通过检索颜色索引矩阵 MAP 得到。索引图像的数据类型一般为 8 位无符号整形
(int8),相应索引矩阵 MAP 的大小为 256Ⅹ3,因此一般索引图像只能同时显示 256
种颜色,但通过改变索引矩阵,颜色的类型可以调整。索引图像的数据类型也可采用双
精度浮点型(double)。索引图像一般用于存放色彩要求比较简单的图像,如 Windows
中色彩构成比较简单的壁纸多采用索引图像存放,如果图像的色彩比较复杂,就要用
到 RGB 真彩色图像。
12、深度学习中目标检测的常用方法,异同
13、给定摄像头范围和图像大小求分辨率。
14、如何检测图片中的汽车,并识别车型,如果有遮挡怎么办?
15、数字识别的流程。
16、介绍神经网络、SVM、AdaBoost、kNN…(每一个都可能深入问各种细节)
17、写梯度下降代码。