2018年图像算法面试题目收集
目录
- 1、边缘检测算法有哪些?有什么区别?
- 2、滤波算法有哪些?有什么区别?
- 3、什么是霍夫变换
- 4、图像特征提取算法有哪些?
- 5、支持向量机的原理?和逻辑回归有什么区别?
- 6、聊一聊深度学习用过什么模型
- 7、解释一下什么是过拟合、如何防止过拟合
- 8、L1正则为何具有稀疏解
- 9、梯度提升树(Gradient Boosting Decison Tree GBDT)说一下
- 10、说一下立体视觉极线校正没有做好,后面的匹配应该怎么做?
- 11、虚函数、多态的作用
- 12、进程间通信
- 13、指针和引用的区别
- 14、对内存了解多少
- 15、如何定义一个只能在堆上生成对象的类
- 16、TCP三次握手、四次挥手?
- 17、红黑树概念以及应用?
- 18、局部变量和全局变量的区别?
- 19、怎么实现hashmap?hash冲突怎么办
- 20、进程和线程的区别
- 21、C++中容器有哪些?
- 22、数据库备份和恢复是怎么实现的?
- 23、如果网络不收敛怎么解决?
- 24.、图片字符分割
1、边缘检测算法有哪些?有什么区别?
边缘检测算子一阶的有Roberts Cross算子,Prewitt算子,Sobel算子,Canny算子, Krisch算子,罗盘算子;而二阶的还有Marr-Hildreth,在梯度方向的二阶导数过零点。
1.1.Roberts(罗伯茨交叉)算子
一种利用局部差分算子寻找边缘的算子,分别为4邻域的坐标。Roberts算子采用对角线方向相邻两像素之差近似梯度幅值检测边缘。检测水平和垂直边缘的效果好于斜向边缘,定位精度高,对噪声敏感
1.2. Sobel(索贝尔)算子
一种一阶微分算子,它利用像素邻近区域的梯度值来计算1个像素的梯度,然后根据一定的绝对值来取舍。
Sobel算子根据像素点上下、左右邻点灰度加权差,在边缘处达到极值这一现象检测边缘。对噪声具有平滑作用,提供较为精确的边缘方向信息,边缘定位精度不够高。当对精度要求不是很高时,是一种较为常用的边缘检测方法。
1.3.Prewitt(普利维特)算子
1.4.Canny 边缘检测算子
canny计算过程:
- 高斯滤波器平滑图像。
- 一阶差分偏导计算梯度值和方向。
- 对梯度值不是极大值的地方进行抑制。
- 用双阈值连接图上的联通点。
通俗说一下,
- 用高斯滤波主要是去掉图像上的噪声。
- 计算一阶差分,OpenCV 源码中也是用 sobel 算子来算的。
- 算出来的梯度值,把不是极值的点,全部置0,去掉了大部分弱的边缘。所以图像边缘会变细。
- 双阈值 t1, t2, 是这样的,t1 <= t2,大于 t2 的点肯定是边缘,小于 t1 的点肯定不是边缘,在 t1, t2 之间的点,通过已确定的边缘点,发起8领域方向的搜索(广搜),图中可达的是边缘,不可达的点不是边缘。
- 最后得出 canny 边缘图。
sobel 产生的边缘有强弱,抗噪性好。
laplace 对边缘敏感,可能有些是噪声的边缘,也被算进来了。
canny 产生的边缘很细,可能就一个像素那么细,没有强弱之分。
数字图像 - 边缘检测原理 - Sobel, Laplace, Canny算子
2、滤波算法有哪些?有什么区别?
2.1.中值滤波
中值滤波将图像的每个像素用邻域 (以当前像素为中心的正方形区域)像素的 中值 代替 。
2.2.均值滤波
输出像素值是核窗口内像素值的 均值 ( 所有像素加权系数相等)
能减弱或者消除图像中高频率分量,但不影响低频率分量,在实际应用中可用来消除噪声。
2.3.高斯滤波
是一种特殊的加权平均,只不过模板中的系数由高斯分布来确定的。
3、什么是霍夫变换
主要用来从图像中分离出具有某种相同特征的几何形状(如,直线,圆等)。
以直线检测为例,把图像笛卡尔坐标系统下的坐标转换到极坐标霍夫空间系统,然后量化霍夫参数空间为有限个值间隔等分或者累加格子。当霍夫变换算法开始,每个像素坐标点P(x, y)被转换到(r, theta)的曲线点上面,累加到对应的格子数据点,当一个波峰出现时候,说明有直线存在。
4、图像特征提取算法有哪些?
4.1. 方向梯度直方图(Histogram of Oriented Gradient, HOG)
主要用来提取图像局部纹理的特征。这个特征名字起的也很直白,就是说先计算图片某一区域中不同方向上梯度的值,然后进行累积,得到直方图,这个直方图呢,就可以代表这块区域了,也就是作为特征,可以输入到分类器里面了。
Histogram of Oriented Gridients(HOG) 方向梯度直方图
4.2.LBP(Local Binary Pattern,局部二值模式)
是一种用来描述图像局部纹理特征的算子;它具有旋转不变性和灰度不变性等显著的优点。
(1)圆形LBP算子:
(2)LBP旋转不变模式
(3)LBP等价模式
每个像素点都可以得到一个LBP“编码”,那么,对一幅图像(记录的是每个像素点的灰度值)提取其原始的LBP算子之后,得到的原始LBP特征依然是“一幅图片”(记录的是每个像素点的LBP值)。 LBP的应用中,如纹理分类、人脸分析等,一般都不将LBP图谱作为特征向量用于分类识别,而是采用LBP特征谱的统计直方图作为特征向量用于分类识别。
对LBP特征向量进行提取的步骤
(1)首先将检测窗口划分为16×16的小区域(cell);
(2)对于每个cell中的一个像素,将相邻的8个像素的灰度值与其进行比较,若周围像素值大于中心像素值,则该像素点的位置被标记为1,否则为0。这样,3*3邻域内的8个点经比较可产生8位二进制数,即得到该窗口中心像素点的LBP值;
(3)然后计算每个cell的直方图,即每个数字(假定是十进制数LBP值)出现的频率;然后对该直方图进行归一化处理。
(4)最后将得到的每个cell的统计直方图进行连接成为一个特征向量,也就是整幅图的LBP纹理特征向量;
然后便可利用SVM或者其他机器学习算法进行分类了。
4.3.尺度不变特征转换(Scale-invariant feature transform或SIFT)
Sift是一种用来描述图像特征描述子。Sift特征匹配算法可以处理两幅图像之间发生平移、旋转、仿射变换情况下的匹配问题,具有很强的匹配能力。
5、支持向量机的原理?和逻辑回归有什么区别?
利用核函数把数据从输入空间映射到特征空间,将非线性分类问题变换为线性分类问题,然后利用超平面把数据分割开来。
1、多项式核函数
2、高斯核函数
1、logistic回归采用的是log对数似然函数L(Y,P(Y|X))=-log(P(Y|X)),SVM采用的是hingle loss.损失函数的目的都是增加对分类影响较大的数据点的权重,减小对分类影响小的数据点的权重。
一般的软间隔SVM采用的是hinge损失函数进行替代,可以得到常见的软件的SVM的优化目标函数。如果采用的是对率损失函数进行替代那么就和逻辑回归的优化目标几乎相同,这就得到了软间隔SVM与逻辑回归的数学上的联系,因此一般来说SVM的性能和逻辑回归的性能差不多。
2、逻辑回归通过输出预测概率后根据阈值进行判断类别,SVM则直接输出分割超平面,然后使用0/1函数对距离进行分类,不能直接输出概率值,如果需要SVM输出概率值则需要进行特殊处理,可以根据距离的大小进行归一化概率输出。
3、逻辑回归可以使用多阈值然后进行多分类,SVM则需要进行推广。
4、SVM在训练过程只需要支持向量的,依赖的训练样本数较小,而逻辑回归则是需要全部的训练样本数据,在训练时开销更大。
6、聊一聊深度学习用过什么模型
1、分类问题:LeNet、VGG16、Incception、ResNet;
2、目标检测:Faster R-CNN、YOLO网络,SSD;
3、语义分割:FCN;
Faster R-CNN使用RPN(Region Proposal Network)区域提名网络取代了Slective Search,在提取好的特征图上,对所有可能的候选框进行判别。即在训练一个网络,对候选区进行打分。
对于任何尺寸候选区域,RoI pooling layer用来得到一个固定大小的特征图。如果特征图(feature map)上的RoI 大小是h∗w(这里忽略了通道数),将这个特征图划分为h/H∗w/W个网格,每个网格大小为H*W,对每个网格做max pooling,这样得到pooling以后的大小就是H∗W(在文章中,VGG16网络使用H=W=7的参数,上图中绘制的是6x6的)。无论原始的RoI多大,最后都转化为7*7大小的特征图。
7、解释一下什么是过拟合、如何防止过拟合
过拟合就是训练出来的模型在训练集上表现很好,但是在测试集上表现较差的一种现象:
1、提前停止;
2、正则化;
3、弃权;
8、L1正则为何具有稀疏解
L1和L2正则常被用来解决过拟合问题。而L1正则也常被用来进行特征选择,主要原因在于L1正则化会使得较多的参数为0,从而产生稀疏解,将0对应的特征遗弃,进而用来选择特征
9、梯度提升树(Gradient Boosting Decison Tree GBDT)说一下
GDBT是前项分布加法算法的特例。它利用前一轮的若、弱学习器的迭代残差,来学习一个回归数(CART),经过多次迭代,当残差小于阈值时,得到一个强分类器。
10、说一下立体视觉极线校正没有做好,后面的匹配应该怎么做?
SAD匹配算法:基本思想:差的绝对值之和。此算法常用于图像块匹配,将每个像素对应数值之差的绝对值求和,据此评估两个图像块的相似度。该算法快速、但并不精确,通常用于多级处理的初步筛选。
BM算法:
SGBM算法:作为一种全局匹配算法,立体匹配的效果明显好于局部匹配算法
GC算法
视差效果:BM < SGBM < GC
处理速度:BM > SGBM > GC
11、虚函数、多态的作用
简单地说,那些被virtual关键字修饰的成员函数,就是虚函数。虚函数的作用,用专业术语来解释就是实现多态性(Polymorphism),多态性是将接口与实现进行分离;用形象的语言来解释就是实现以共同的方法,但因个体差异而采用不同的策略。
多态还有个关键之处就是一切用指向基类的指针或引用来操作对象。指向基类的指针在操作它的多态类对象时,会根据不同的类对象,调用其相应的函数,这个函数就是虚函数。
12、进程间通信
管道、共享内存、消息队列、套接字、信号、信号量
13、指针和引用的区别
指针:指针是一个变量,只不过这个变量存储的是一个地址,指向内存的一个存储单元;而引用跟原来的变量实质上是同一个东西,只不过是原变量的一个别名而已。
14、对内存了解多少
亲爱的读者和支持者们,自动博客加入了打赏功能,陆陆续续收到了各位老铁的打赏。在此,我想由衷地感谢每一位对我们博客的支持和打赏。你们的慷慨与支持,是我们前行的动力与源泉。
日期 | 姓名 | 金额 |
---|---|---|
2023-09-06 | *源 | 19 |
2023-09-11 | *朝科 | 88 |
2023-09-21 | *号 | 5 |
2023-09-16 | *真 | 60 |
2023-10-26 | *通 | 9.9 |
2023-11-04 | *慎 | 0.66 |
2023-11-24 | *恩 | 0.01 |
2023-12-30 | I*B | 1 |
2024-01-28 | *兴 | 20 |
2024-02-01 | QYing | 20 |
2024-02-11 | *督 | 6 |
2024-02-18 | 一*x | 1 |
2024-02-20 | c*l | 18.88 |
2024-01-01 | *I | 5 |
2024-04-08 | *程 | 150 |
2024-04-18 | *超 | 20 |
2024-04-26 | .*V | 30 |
2024-05-08 | D*W | 5 |
2024-05-29 | *辉 | 20 |
2024-05-30 | *雄 | 10 |
2024-06-08 | *: | 10 |
2024-06-23 | 小狮子 | 666 |
2024-06-28 | *s | 6.66 |
2024-06-29 | *炼 | 1 |
2024-06-30 | *! | 1 |
2024-07-08 | *方 | 20 |
2024-07-18 | A*1 | 6.66 |
2024-07-31 | *北 | 12 |
2024-08-13 | *基 | 1 |
2024-08-23 | n*s | 2 |
2024-09-02 | *源 | 50 |
2024-09-04 | *J | 2 |
2024-09-06 | *强 | 8.8 |
2024-09-09 | *波 | 1 |
2024-09-10 | *口 | 1 |
2024-09-10 | *波 | 1 |
2024-09-12 | *波 | 10 |
2024-09-18 | *明 | 1.68 |
2024-09-26 | B*h | 10 |
2024-09-30 | 岁 | 10 |
2024-10-02 | M*i | 1 |
2024-10-14 | *朋 | 10 |
2024-10-22 | *海 | 10 |
2024-10-23 | *南 | 10 |
2024-10-26 | *节 | 6.66 |
2024-10-27 | *o | 5 |
2024-10-28 | W*F | 6.66 |
2024-10-29 | R*n | 6.66 |
2024-11-02 | *球 | 6 |
2024-11-021 | *鑫 | 6.66 |
2024-11-25 | *沙 | 5 |
2024-11-29 | C*n | 2.88 |

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了