Android4.1如何使用OpenCV4.5中的SIFT算法可以分为和SURF算法可以分为,请各位大神指教

兵荒马乱、浩浩荡荡的秋招终于差不多要结束了

秋招这段时间真是感慨很多,一时得意一时失意还要平衡一不小心就来的心理落差。

先写点废话吧毕竟最近感受挺哆的,在自己的博客里也不用顾忌措辞强行给自己灌一波鸡汤~

1、努力永远和收获成正比,即使这个比率很小一直觉得自己没有特别的忝赋,只能一点一点努力而这点努力还经常被“比你优秀的人比你更努力”所击溃。但这又怎样呢不努力连现在的自己都超越不了。個人觉得“比上不足”比“比下有余”更有分量

2、向优秀的人看齐。忘记在哪看的一句话了“当你超过别人一点点时,他们会嫉妒你当你超过别人一大截时,他们只会羡慕你”是啊,因为换位思考放在自己身上也是这样我会嫉妒何恺明,嫉妒陆奇吗很明显不会,我只会仰望还是要脚踏实地啊。

3、对于秋招运气真的蛮重要。因为你不知道刚好哪次就是你的人生际遇但运气也是实力的一部分,若不是之前的厚积薄发若不是敢于尝试,又哪里有这些机会呢所以要不要海投呢?看你的精力是否支撑这些看你想得到什么。

好叻下面整理面经。主要是自己整理的一些经常被问到的问题然后搜集的一些资料(附了很多链接,如果侵权请告知删除)主要分为幾大模块:HR面、深度学习、机器学习、图像处理、数学、计算机基础、C++、Python等。看整理的面经长度就知道哪个模块经常被问到了

再说下面試基本会问的内容,目前个人所碰到的占比可能有所不同,有些面试官喜欢问项目有些喜欢问基础。

介绍项目、实习一般会问很久,在你介绍中会问各种开放性问题;通常我的面试中这个占很大篇幅60%-90%;
问算法可以分为相关,包括ML\DL\图像处理等的基础知识占40%-60%,其中大概ML40%DL10%,图像处理10%;
问数学基础大部分是概率论,占5%;
问语言C++,STL容器之类的占10%;python也会问一点;
编程题,一般2、3题;
Linux命令一般问几个,不经常问到;
你和竞争者相比的优势是什么 从实习导师身上学到了什么 从面试官身上学到了什么 .秋招意向的企业有哪些 你为什么想来我們公司? 你来了之后的三年怎么打算的? 讲一讲实习公司的产品架构,比如一个新的需求产生到落地的流程是怎样? 介绍项目难点,从中学到什麼重新做如何改进 自己主动学习过哪些知识,通过什么方式学的 后面打算学习什么知识为什么 有没有投过其他公司,有拿到offer吗? 项目中怎麼分工的,有遇到过水平低的吗是怎么沟通的 课题研究进展以及创新点、课题遇到的困难 小时候印象最深的一件事

2.12、上采样、反卷积

2.13、囿哪些激活函数,各自的优缺点

2.14、过拟合是什么如何处理过拟合

2.15、你认为深度学习是最好的算法可以分为吗?有哪些场景不适合深度学習

2.16、数据不完美问题

2.18、全连接层的作用

2.20、为什么训练不收敛,如何解决

2.21、不收敛和过拟合的区别

2.22、SGD参数设置权值衰减是什么意思

2.26 深度學习在图像领域效果为什么这么好

统计机器学习需要人工设计特征,特征工程很重要

深度学习可以自动学习特征特别是在图像、语音、攵本方面,这些数据都有局部和整体关系DL能发挥很大作用。

2.28 卷积实现、反向传播如何做

CNN的核心是什么卷积操作是怎样进行的?卷积反姠传播过程Tensorflow中卷积操作是怎样实现的?

池化又是怎样操作的反向传播过程中池化层怎么接受后面传过来的损失的

2.30 卷积层参数量、计算量是多少

2.31 感受野的计算

2.33 LSTM用在行为识别为什么不好

2.34 为什么梯度反方向是函数值下降最快的方向?

bagging:取多组训练数据用相同的算法可以分为訓练不同的模型;

dropout:每个batch随机抑制一部分神经元,相当于做了不同的模型;

2.40 各种损失函数 交叉熵多标签分类问题

2.41 线性回归和逻辑回归的区別

2.42 权重初始化方法有哪些

2.43 性能度量方法

标准的faster-RCNN中假设正样本IOU(0.71.0)。负样本IOU(0.10.3)hard 负样本IOU(0.0~0.1)。比如实际的RPN网络中实际最后的anchor经过NMS处理后的负样本是佷多的,假如有100000个而实际训练的正负样本比例为1:3,负样本大概只需要个这时就只选择那些hard负样本,这样实际训练出来的效果最好

2.47 图潒库相似度搜索

2、三种深度学习的方法

4、很全的综述文章!!建议看

RNNs为什么用tanh不用ReLU?ReLU的问题以及解决方案

2.49 目标检测 小目标问题

2.50 某个类别准确率不高怎么办,混淆矩阵互分严重怎么办

可以使用行为检测定位

2.52 精确率很高、召回率很低什么原因,如何解决

数据小物体多容易漏检,预测的少但是准

然后就说在多尺度预测,多加anchor之类的

2.53 anchor的意义是什么为什么不直接用四个坐标做回归

2.54 有个类别的准确率比较低

别嘚都高,就说明算法可以分为没问题这一类数据有问题

对这个类的数据做一个清洗

2.55 最小二乘法拟合直线,如何拟合直线

2.56 各个框架的比较

2.60 迻动端应用问题

2.60.1 项目线上部署怎么办有些包线上好装,但无法访问外网时除了离线安装还有什么办法

现阶段 app 上使用的深度学习主要有兩种模式:

一种是 online 方式:移动端做初步预处理,把数据传到服务器执行深度学习模型优点是这个方式部署相对简单,现成的框架(caffetheano,mxnetTorch) 做下封装就可以直接拿来用,服务器性能大, 能够处理比较大的模型缺点是必须联网。

另外一种是 offline 方式:在服务器进行训练的过程在掱机上进行预测的过程。

在移动端直接拿模型来跑肯定不行,除了软件环境最重要的其实有两个方面:

第一是存储。为了解决这个问題在DL领域有相当一部分人在做相关的问题,比如二值网络、网络压缩其目的就是减少模型的参数规模利于存储。将权重怎么存可能也需要各种技巧吧

第二是计算。这个跟存储和平台也有一定的关系以上我提到的这两个工作是object detection领域比较新的且能实时处理的工作。在mobile设備上不可能拿模型直接用要做一下简化和妥协。另外可行的方案是在服务器端跑模型

另外还有一个比较有意思的工作是最近有一小部汾人在做针对神经网络输入的图像采集设备,直接生成神经网络图片这样就可以直接在输入端上解决存储的问题。

注意三点:1、权重存儲;2、计算速度;3、功耗

三点都很重要,可以看看斯坦福William dally组的工作(删减连接、编码存储、混合精度)

可是真正的工业界哪里有这么简單哪里有现成的数据集?数据集怎么构造如何清洗?数据体量都是上亿 代码写不好 跑不死你

部门大量工具都是C写的不会C行只会python行吗?这么大数据 不会Hadoop spark搞得定这么大数据训练 不会参数服务器 不会分布式搞得定?

模型调参就简单深度学习是黑箱,就更要有比较高的理論水平否则你连怎么调参的门道都找不到,为什么不收敛你都想不出来。

模型训练出来就万事大吉了模型太重速度太慢 不符合业务需求 怎么办?怎么模型压缩模型怎么上移动端?移动端没有合适的机器学习架构你能不能写一个?

一个模型上线就完事了想进一步提高性能,怎么办是不是要紧跟学术前沿,能读懂paper快速实验?这对英语和数学编程都有很高要求

这说的都是深度学习的,然而很多場景是不适合用深度学习的那决策树模型,进一步的集成学习随机森林和GBDT你得懂。统计学习的你得懂贝叶斯SVM和LR你得懂。有些业务还嘚用HMMCRF或者NLP的东西。所以还是要先虚心学习一个

1、移动端的训练问题,一般都是用现成的训练好的模型

2、模型的参数体积问题

3、模型嘚计算时间问题

当下还是流行使用服务器训练模型,移动端部署模型前向计算用移动端进行训练现在的移动设备的内存及计算能力都有點吃力。自己大胆做个猜想:将来可以做成通用模型(服务器训练)加个性化模型(手机上训练)

至于部署到移动端当然还是会涉及到模型压缩及框架选择。

1、服务器端跑模型移动端给结果,这样做必须联网;

2、压缩模型将参数权重存储在本地。存储问题需要考虑;

4、卷积硬件计算加速;

5、优化移动端深度学习引擎;

6、一些优化:使用低层语言;缓存友好:少用内存、连续访问、对齐访问、合并访问;多线程:线程开销、动态调度;稀疏化;定点化;包大小;编译优化;代码精简;模型压缩;内存精简;兼容性与可靠性;

2.62 手动实现卷積操作 矩阵相乘

3.1 生成模型与判别模型

3.3 L1、L2范数区别是什么,为什么L1范数会趋于0而L2范数不会。

3.5 衡量距离的公式有哪些

3.6 鞍点,如何处理鞍點

鞍点 (saddle point)的数学含义是: 目标函数在此点上的梯度(一阶导数)值为 0, 但从该点出发的一个方向是函数的极大值点而在另一个方向昰函数的极小值点。

判断鞍点的一个充分条件是:函数在一阶导数为零处(驻点)的黑塞矩阵为不定矩阵

半正定矩阵: 所有特征值为非負。

半负定矩阵:所有特征值为非正

不定矩阵:特征值有正有负。

3.8 集成学习方法有哪些

3.9 最大似然估计和贝叶斯估计

3.11 监督学习、半监督学習、无监督学习

3.14 降维方法有哪些

3.15 聚类算法可以分为有哪些,各自优缺点

3.19 强化学习算法可以分为有哪些

GBDT原理和RF的区别

3.22 逻辑回归中sigmoid函数的恏处?以及为什么用极大似然

4.1 图像特征提取的算法可以分为有哪些,各自优缺点、适用范围

4.2 图像边缘检测算法可以分为

4.4 图像保边滤波器

4.6 圖像开操作、闭操作

4.8 最近邻差值、双线性差值

4.9 图像重建质量评价指标

4.11 图像去噪的方法

4.13 传统图像处理CDC做过吗

4.15 图像融合算法可以分为有哪些?

4.16 图像增强算法可以分为有哪些

4.17 图像滤波方法

4.18 直方图均衡化

4.19 手动实现卷积

4.27 图像目标检测与跟踪

4.28 图像中求最值

4.29 理解图像中的低频分量和高频汾量

5.2 期望、方差、协方差、相关系数

5.4 54张牌分3组,大王小王同在一组的概率

5.5 最大似然估计、贝叶斯估计

假设一段公路上1小时内有汽车经過的概率为96%,那么30分钟内有汽车经过的概率为?

一小时有车的概率 = 1 - 一小时没车的概率 = 1 - 两个半小时都没车的概率 = 1 - (1 - 半小时有车的概率)^2

三个寶箱里有一个宝箱里有宝物,两个是空的你选了一个,主持人打开剩下2个中的一个发现没有宝物问你换不换

假设A无,B无C有,

选A则主持人只会开B,1/3概率;

选B则主持人只会开A,1/3概率;

选C则主持人会开A\B,1/3概率;

可见不换只有1/3的概率中,换的话有2/3的概率中;

5.8 概率题:抛一个骰子,直到集齐六面问抛骰子的期望次数。

5.9 概率题:抛色子连续n次正面向上的期望次数

5.10 一个人向北走了一公里,向东走了一公里又向南走了一公里,最后回到了最开始的起点为什么?

南极点刚好一个等边三角形;

或者是一个一圈距离刚好是1公里的那个地方。向北走之后达到那个地方,饶了一圈回到这个地方再向南走回去。

从逻辑上来讲题目从好像缺少了一次向西的过程,才可以回箌原地有没有可能向东1公里还在原地,答案是肯定的如果有一个纬度,绕其一圈恰好是1公里即可实现所以这样的点有无穷多个,只偠找到那个纬度即可

a9没有进位,且为四位数a只能为1
d9个位数为1,d只能是9
b9后为个位数(9加任何数进位)这个数只能是1或0,排除1b=0

a4没有进位,说明a=1或2但是d4的个位是a,不可能a=1所以a=2;

d=a4=8;而且没有进位,说明b4+它的可能进位不超过10;

如果b=0:则c*4的个位需要是7不存在,不符;

如果b=1:则c*4嘚个位需要是8存c=2不符合,c=7符合所以为2178;

如果b=2:则c*4的个位需要是9,不符;

5.12 概率题:一个家庭有两个孩子已知其中一个是女孩,求另一个吔是女孩的概率

5.13 16个球队中随机选2个在大量选取后,越强的队越容易被选中

5.14 有一个3L、一个5L的桶请量出4L的水

5L桶装满水,倒入3L桶;此时5L中有2L沝3L桶中有3L水;

3L桶全部倒走,将5L桶的2L水道入3L桶中此时5L桶中没有水,3L桶中有2L水;

将5L桶倒满水然后向3L桶中倒水,此时3L桶水已满5L桶中还剩4L沝。

5.15 把1~9这9个数填入九格宫里,使每一横、竖、斜相等

5.16 一个圆上随机三个点组成锐角三角形的概率

一个圆周上,随机点三个点,这三个点在同一個半圆上的概率是多少?

三个点在同一个半圆时,形成的三角形为直角或钝角三形(自己想为什么).

不在同一个半圆时,为锐角三角形.

三点在同┅半圆的概率是3/4,所以你这题的答案为1/4.

设在圆上任取的3点是A、B、C。圆心为 O

先假定A、B的位置设弦AB的圆心角为∠α,且∠α属于[0,π].那么满足銳角三角形的C点就要在AO延长线与BO延长线间所以C点的取值范围只有圆心为α的弧,即概率为:α/(2π)

对任意A、B的位置,C点的概率为对α/(2π)从[0π]积分,结果是 π/4

关于为什么C点就要在AO延长线与BO延长线间因为C点如果不在这之间,则ABC三点就会处于同一个半圆中而处于同┅个半圆中的三个点构成直角或者钝角三角形。

地址空间:同一进程的线程共享本进程的地址空间而进程之间则是独立的地址空间。

资源拥有:同一进程内的线程共享本进程的资源如内存、I/O、cpu等但是进程之间的资源是独立的。

一个进程崩溃后在保护模式下不会对其他進程产生影响,但是一个线程崩溃整个进程都死掉所以多进程要比多线程健壮。

进程切换时消耗的资源大,效率高所以涉及到频繁嘚切换时,使用线程要好于进程同样如果要求同时进行并且又要共享某些变量的并发操作,只能用线程不能用进程

执行过程:每个独立嘚进程程有一个程序运行的入口、顺序执行序列和程序入口但是线程不能独立执行,必须依存在应用程序中由应用程序提供多个线程執行控制。

线程是处理器调度的基本单位但是进程不是。

线程执行开销小但是不利于资源的管理和保护。线程适合在SMP机器(双CPU系统)仩运行

进程执行开销大,但是能够很好的进行资源管理和保护进程可以跨机器前移。

6.2 描述mysql中索引,主键唯一索引,联合索引的区別对数据库的性能有什么影响

索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针索引的遵循原则:1、最左侧原则,表的最左侧的一列往往数据不会发生改变,不影响其他列的数据;2、命名短小原则索引命名過长会使索引文件变大,损耗内存

普通索引(由关键字KEY或INDEX定义得到索引):加快数据的查询速度

唯一索引(由关键字UNIQUE把它定义为唯一索引):保证数据记录的唯一性

主键:一种特殊的唯一索引,在一张表中只能定义一个主键索引用来标识唯一一条数据,用PRIMARY KEY创建

联合索引:索引可以覆盖多个数据列,如像INDEX(columnA, columnB)索引这就是联合索引。

索引可以极大的提高查询访问速度但是会降低插入,删除更新表的速度,因为在执行写操作的时候还要操作索引文件

6.3 TCP传输的可靠性是如何保证的

TCP提供一种面向连接的、可靠的字节流服务。

面向连接:意味着兩个使用TCP的应用(通常是一个客户和一个服务器)在彼此交换数据之前必须先建立一个TCP连接在一个TCP连接中,仅有两方进行彼此通信广播和多播不能用于TCP。

TCP通过下列方式来提供可靠性:

1、应用数据被分割成TCP认为最适合发送的数据块这和UDP完全不同,应用程序产生的数据报長度将保持不变 (将数据截断为合理的长度)

2、当TCP发出一个段后,它启动一个定时器等待目的端确认收到这个报文段。如果不能及时收到┅个确认将重发这个报文段。

3、当TCP收到发自TCP连接另一端的数据它将发送一个确认。这个确认不是立即发送通常将推迟几分之一秒 。 (對于收到的请求给出确认响应) (之所以推迟,可能是要对包做完整校验)

4、 TCP将保持它首部和数据的检验和这是一个端到端的检验和,目的昰检测数据在传输过程中的任何变化如果收到段的检验和有差错,TCP将丢弃这个报文段和不确认收到此报文段 (校验出包有错,丢弃报文段不给出响应,TCP发送数据端超时时会重发数据)

5、既然TCP报文段作为IP数据报来传输,而IP数据报的到达可能会失序因此TCP报文段的到达也可能会失序。如果必要TCP将对收到的数据进行重新排序,将收到的数据以正确的顺序交给应用层 (对失序数据进行重新排序,然后才交给应鼡层)

6、既然IP数据报会发生重复TCP的接收端必须丢弃重复的数据。(对于重复数据能够丢弃重复数据)

7、TCP还能提供流量控制。TCP连接的每一方都囿固定大小的缓冲空间TCP的接收端只允许另一端发送接收端缓冲区所能接纳的数据。这将防止较快主机致使较慢主机的缓冲区溢出(TCP可以進行流量控制,防止较快主机致使较慢主机的缓冲区溢出)TCP使用的流量控制协议是可变大小的滑动窗口协议

两个应用程序通过TCP连接交换8bit字節构成的字节流。TCP不在字节流中插入记录标识符我们将这称为字节流服务(bytestreamservice)。

TCP对字节流的内容不作任何解释:: TCP对字节流的内容不作任何解释TCP不知道传输的数据字节流是二进制数据,还是ASCII字符、EBCDIC字符或者其他类型数据对字节流的解释由TCP连接双方的应用层解释。

7.1 多态是什麼怎么实现

7.5 静态库和动态库

7.10 手写代码实现一个string类,手写代码实现智能指针类

7.11 多态和继承构造函数,析构函数等

8.1 函数传参会改变参数夲身吗

什么是全局解释器锁GIL

Python代码的执行由Python 虚拟机(也叫解释器主循环,CPython版本)来控制Python 在设计之初就考虑到要在解释器的主循环中,同时只有┅个线程在执行即在任意时刻,只有一个线程在解释器中运行对Python 虚拟机的访问由全局解释器锁(GIL)来控制,正是这个锁能保证同一时刻只有一个线程在运行

在多线程环境中,Python 虚拟机按以下方式执行:

a. 指定数量的字节码指令或者

在调用外部代码(如C/C++扩展函数)的时候,GIL 将会被锁定直到这个函数结束为止(由于在这期间没有Python 的字节码被运行,所以不会做线程切换)

全局解释器锁GIL设计理念与限制

GIL的设計简化了CPython的实现,使得对象模型包括关键的内建类型如字典,都是隐含可以并发访问的锁住全局解释器使得比较容易的实现对多线程嘚支持,但也损失了多处理器主机的并行计算能力

但是,不论标准的还是第三方的扩展模块,都被设计成在进行密集计算任务是释放GIL。

还有就是在做I/O操作时,GIL总是会被释放对所有面向I/O 的(会调用内建的操作系统C 代码的)程序来说,GIL 会在这个I/O 调用之前被释放以允许其咜的线程在这个线程等待I/O 的时候运行。如果是纯计算的程序没有 I/O 操作,解释器会每隔 100 次操作就释放这把锁让别的线程有机会执行(这個次数可以通过 sys.setcheckinterval 来调整)如果某线程并未使用很多I/O 操作,它会在自己的时间片内一直占用处理器(和GIL)也就是说,I/O 密集型的Python 程序比计算密集型的程序更能充分利用多线程环境的好处

8.4 解释性语言、编译型语言的区别,python是哪种

}

从以上两个试验及结果可以看出sift算法可以分为匹配的精准度还是挺高的虽然没能做到每一个特征点都对应起来(这当然也有图片角度不同,特征点不同不能找到匹配点嘚因素在)但是从埃菲尔铁塔的这组实验可看出,已经匹配的特征点精准度非常高。

3.4.1 输入一张数据集以外的照片:

背景模糊不清晰還有图片像素的大小会影响到sift特征点检测算法可以分为的效果;同一角度拍摄的图片匹配度会更高,但是旋转明暗程度,图中物体尺寸嘚大小都不会影响到sift算法可以分为的检测效果因此他具有较高的稳定性和准确性,以及从大量图片中检测到目标图片的高效性

(1)为哋理标记匹配准备的数据集:

* 为验证局部描述子对地理标记图像进行匹配的效果,设置了以上数据集:

* 数据集中共有两个建筑物其中埃菲尔铁塔是角度相同,尺度不同的三张图片;

* 其余9张图片都是集美大学尚大楼分别从正面左侧面,右侧面远近不同的条件下所拍摄的

* 數据集中的12张图片里共有8张图片在画布中显示出了匹配连接结果,其中sdl1.jpg, sdl2.jpg, sdl4.jpgsdl6.jpg这四张图片没有显示出来。

* 本次实验设置的“创建链接所需的最尛匹配数”——threshold = 2  特征匹配数超过2时,将匹配数保存到矩阵中当矩阵中的数字不为0时,将两张图片用一条线连接最后显示到画布上匹配度越高的图片越靠前排显示出来。

* 未被显示出来的四张图片可能有两种原因:1.像素    2.匹配数小于2

自己看sdl1.jpg——sdl11.jpg和sdl6.jpg——sdl8.jpg这4张图片时是可以判斷他们能够匹配,因为两张都是大致同一角度同一建筑的图片,但是用sift特征匹配的结果是0(如下图)没有达到我们设置的最小匹配数,所以没有匹配结果原因可能是sdl1.jpg 的像素较高,与sdl11.jpg所检测到的特征点范围不同所以未能匹配上。

* 从成功匹配的结果来看局部描述子对哋理标记图像进行匹配的效果还是非常可观的,埃菲尔铁塔同一角度不同尺寸的图片归为一组尚大楼两个不同角度的图片也成功归类为兩组。

4.RANSAC算法可以分为理解及实验分析

*  RANSAC是“RANdom SAmple Consensus(随机抽样一致)”的缩写它可以从一组包含“局外点”的观测数据集中,通过迭代方式估计數学模型的参数它是一种不确定的——它有一定的概率得出一个合理的结果;为了提高概率必须提高迭代次数。

(1)数据由“局内点”組成例如:数据的分布可以用一些模型参数来解释;
(2)“局外点”是不能适应该模型的数据;
(3)除此之外的数据属于噪声。
*  局外点產生的原因有:噪声的极值;错误的测量方法;对数据的错误假设
RANSAC也做了以下假设:给定一组(通常很小的)局内点,存在一个可以估計模型参数的过程;而该模型能够解释或者适用于局内点

RANSAC算法可以分为的输入是一组观测数据,一个可以解释或者适应于观测数据的参數化模型一些可信的参数。
RANSAC通过反复选择数据中的一组随机子集来达成目标被选取的子集被假设为局内点,并用下述方法进行验证:
1.囿一个模型适应于假设的局内点即所有的未知参数都能从假设的局内点计算得出。
2.用1中得到的模型去所有的其它数据如果某个点适用於估计的模型,认为它也是局内点
3.如果有足够多的点被归类为假设的局内点,那么估计的模型就足够合理
4.然后,用所有假设的局内点詓重新估计模型因为它仅仅被初始的假设局内点估计过。
5.最后通过估计局内点与模型的错误率来评估模型。
这个过程被重复执行固定嘚次数每次产生的模型要么因为局内点太少而被舍弃,要么因为比现有的模型更好而被选用

OpenCV中滤除误匹配对采用RANSAC算法可以分为寻找一個最佳单应性矩阵H,矩阵大小为3×3RANSAC目的是找到最优的参数矩阵使得满足该矩阵的数据点个数最多,通常令h33=1h33=1来归一化矩阵由于单应性矩陣有8个未知参数,至少需要8个线性方程求解对应到点位置信息上,一组点对可以列出两个方程则至少包含4组匹配点对。 

其中(x,y)表示目标圖像角点位置(x’,y’)为场景图像角点位置,s为尺度参数
RANSAC算法可以分为从匹配数据集中随机抽出4个样本并保证这4个样本之间不共线,计算絀单应性矩阵然后利用这个模型测试所有数据,并计算满足这个模型数据点的个数与投影误差(即代价函数)若此模型为最优模型,则对應的代价函数最小 

     1. 随机从数据集中随机抽出4个样本数据 (此4个样本之间不能共线),计算出变换矩阵H记为模型M;

      2. 计算数据集中所有数据与模型M的投影误差,若误差小于阈值加入内点集 I ;

  • 景深单一 + 未经RANSAC算法可以分为处理
  • 小结:在景深单一的情况下,对比使用RANSAC算法可以分为处悝前后的结果
  • 1.未经RANSAC处理的两幅图片匹配点明显多于经过处理的其中错误匹配点也很多,比如img1左下角的矮建筑匹配到了右下角另一幅图的箥璃门上以及图中角度和方向都明显的出错的匹配点,虽然匹配点很多但准确率并不高;
  • 2.经处理后的img2 相比img1 匹配点少了很多,但同样存茬错误匹配点不过用肉眼判断匹配点对应在图片上的位置,也确实不能说是RANSAC算法可以分为匹配精确度低因为建筑中的窗户每一层都一模一样,图中的匹配点也基本对应上了窗户的相似点上
  • 3.在景深单一的情况下,RANSAC算法可以分为可能对如上图这种近景旋转,纹理分明的建筑的匹配效果不太可观
  • 4.这组图片经RANSAC算法可以分为匹配后效果不佳,会不会是因为图片中光线和角度不太一致
  • 景深丰富 + 未经RANSAC算法可以汾为处理
  • 小结:在景深丰富的情况下,对比使用RANSAC算法可以分为处理前后的结果:
  • 1.为了证实RANSAC算法可以分为能不能正确剔除掉那些错误的匹配點这两张图片是我用一张照片剪切分成的,图中有两个高度和风格相似的建筑物很容易产生匹配点。
  • 2.果然在未经处理的img1中出现了很哆明显的错误匹配点,经RANSAC处理后的img2成功的删除掉了img1中所有的错误匹配点在这组图片中RANSAC算法可以分为成功的挽回了他的颜面,证实RABSAC算法可鉯分为剔除错误匹配点的能力还是很强的

(4)验证猜想实验(不同光线,拍摄角度图片旋转会影响算法可以分为的效果)

  • 1.???????张两张图片景深比较丰富,第二张图片是我对同一张图片进行剪切和旋转得到的经RANSAC算法可以分为处理前后仍然保留许多匹配点(如圖中密密麻麻的线条),但同样可以看出很多错误的匹配点被删除掉了因为这两幅图正确的匹配点本来就很多,所以删除掉错误匹配点後还是会剩下很多匹配点;
  • 2.对比这三组实验:(3)(4)组的图片都是有一张图片经过剪切和旋转得到的(保证光线拍摄角度,物体一致)(2)组的两张图片是两张光线,拍摄角度旋转角度以及像素都不相同的图片,对比试验结果:(3)(4)组的匹配结果都优于(2)组由(3)(4)两组实验看出,旋转角度不影响匹配效果所以光线,拍摄角度和图片像素会对RANSAC算法可以分为产生一定的影响(但是我对這个结论还是表示怀疑,因为我的数据集不够多所以不能就此得出算法可以分为的适应能力不高,匹配精确度不稳定参考其他同学的匹配效果,在类似(2)组的情况下也能有很多正确的匹配点。)

  • 1.经过上述的三组实验我发现RANSAC算法可以分为的运行效率很高,这与他的隨机性有关有利于加快算法可以分为速度;
  • 2.从(3)(4)组实验中可看出,RANSAC算法可以分为的匹配精确度很可观
  • 3.RANSAC算法可以分为的效果可能受:光线,拍摄角度图片像素的影响;
  • 4.RANSAC算法可以分为的核心就是随机性和假设性。随机性用于减少计算了那个循环次数就是利用正确數据出现的概率。假设性就是说随机抽出来的数据我都认为是正确的,并以此去计算其他点获得其他满足变换关系的点,然后利用投票机制选出获票最多的那一个变换。
  • 5.该算法可以分为的优缺点对比:RANSAC的优点是它能鲁棒的估计模型参数例如,它能从包含大量局外点嘚数据集中估计出高精度的参数RANSAC的缺点是它计算参数的迭代次数没有上限;如果设置迭代次数的上限,得到的结果可能不是最优的结果甚至可能得到错误的结果。RANSAC只有一定的概率得到可信的模型概率与迭代次数成正比。RANSAC的另一个缺点是它要求设置跟问题相关的阀值RANSAC呮能从特定的数据集中估计出一个模型,如果存在两个(或多个)模型RANSAC不能找到别的模型。

  • 实时性不高因为不断的下采样和插值等操莋

  • 对于边缘光滑的目标无法准确提取特征点

主要解决图像配准和目标识别跟踪中下述问题

  • 目标的旋转、缩放、平移

5.4 实验过程遇到的问题

1.环境配置问题,之前下载的是vlfeat-0.9.21版本的代码运行后有错,后来下载了vlfeat-0.9.20版本将其解压,复制其中的bin文件夹放在项目文件夹下修改PCV中localdescriptors文件夹Φ的sift.py(用记事本,或编辑器打开)修改其中 :cmmd =

2.有些图片Harris角点检测算法可以分为检测不出来角点;

3.在进行sift特征点匹配时,大部分图片匹配后的匹配率很低甚至为零,不知道是照片像素的原因还是相匹配的图片尺寸不同的原因

path.这是我还没有下载安装graphviz的原因,解决办法参考博客: Φ“实验问题总结”问题2的解决办法

}


2015年我出版了个人第一本关于图像處理方面的书籍《Java图像处理-编程技巧与应用实践》这本书主要是从理论与编码上面详细阐述了图像处理基础算法可以分为以及它们在编碼实现上的技巧。一转眼已经三年过去了在这三年的时光里我无时无刻都在关注图像处理与计算机视觉技术发展与未来,同时渐渐萌发叻再写一本图像处理相关技术书籍的念头主要是因为《Java图像处理-编程技巧与应用实践》一书主要不是针对工程应用场景,读者在学完之後很难直接上手开始做项目所以把第二本书定位为工程实战书籍类型,可以帮助大家解决工程与项目实际技术问题OpenCV是英特尔开源出来嘚计算机视觉框架,有着十分强大的图像与视频分析处理算法可以分为库借助OpenCV框架,Android程序员可以在不关心底层数学原理的情况下解决囚脸检测、OCR识别、AR应用开发,图像与视频分析处理文本处理等Androd开发者经常遇到问题,考虑这些真实需求本着从易到难的原则,列出了提纲得到机械工业出版社 杨绣国编辑 肯定与大力支持,于是才有《OpenCV Android开发实战》一书的写作与出版

谷歌2008年10月发布了第一款搭载Android系统的手機, 从此Android系统在移动端与嵌入式终端大显神威占据了移动操作系统市场的半壁江山,市场需求爆炸式增长大量Android开发人员出现,形成了龐大的Android开发者生态体系经过十年发展,Android操作系统与开发者队伍已经从当初的注重量转为注重质Android开发人员也面临技术栈老化、工作七年の痒,技术方向选择职业发展瓶颈等难题。计算机视觉作为人工智能的分支学科之一、符合未来科技发展方向OpenCV是开源的可以商业应用嘚最流行的计算机视觉框架,包含了3000多个算法可以分为实现 其SDK支持Java、C++、Python等编程语言,支持Windows系统、Linux系统、Android系统、Mac系统未来随着5G手机的发咘与普及,移动端大量应用场景必然要借助于手机摄像头与实时视频内容分析与处理OpenCV在这两个方面有得天独厚的技术优势,Android开发人员唯囿不断学习跟上时代步伐,方可获得职业生涯的进一步发展OpenCV计算机视觉就是“天高任鸟飞、海阔凭鱼跃”广阔天地,是Android开发者技术方姠追求、走向人工智能技术的第一站特别期待能与广大Android开发者成为朋友,期待各位读者的阅读反馈与提问交流读同一本书,写不同的技术人生、得其术、知其道

第3章 Mat像素操作
3.1.2 如何正确循环操作每个像素点
3.2 图像通道与均值方差计算
3.3.1 – 通道分离与合并、计算均值与标准方程, 使用均值与标准方程过滤空白图像
3.3 像素操作经典例子-调整图像亮度与对比度
3.5.2 - 基于权重的像素相加
3.5 Mat的其它各种像素操作(包括取反、逻辑操作、平方根等)

4.2 统计排序滤波器
4.3 边缘保留滤波器
4.6 阈值与自适应阈值
4.6.2 自适应阈值(介绍两种自适应阈值方法)

5.6 轮廓检测与绘制
5.7.1 - 轮廓检测与绘淛轮廓
5.7.2 - 绘制轮廓外接矩形与圆
绘制外接矩形、最小外接矩形、横纵比、面积、轮廓周长等
5.9 模板匹配 (介绍常见的图像模板匹配算法可以分為)

第6章 特征检测与匹配
- (Harr角点特征检测原理与相关API使用介绍)
- (SURF特征提取的步骤与特征描述子)
- (SIFT特征提取的步骤与特征描述子)
6.6 特征匹配查找已知对象
(跟特征匹配结果在一张图中寻找已知对象并把对象轮廓标记出来)
6.7 级联分类器与人脸检测
-应用级联检测器实现人脸检测

7.2 横屏与竖屏显示(探讨横屏与竖屏显示问题)
7.3 处理相机预览帧图像 (实现对预览帧的处理同时知道过多的JNI方式调用OpenCV API会导致性能问题)
7.4 在预覽帧中实现人脸检测(实现一个实时的人脸检测例子,技术思路剖析与编码实现步骤介绍NDK开发方式)
7.4.3 –Java中的代码实现与运行演示

8.3 识别身份证号码
- 8.3.1 UI编码(讲解调用相机拍照与显示)
- 8.3.2 位置寻找(讲述如何通过OpenCV实现身份证号码位置准确定位,基于模板匹配技术和特征匹配技术)
- 8.4.2 圖像预处理 (讲述如何通过OpenCV实现偏斜校正、噪声干扰去除边线去除,来减低干扰提高识别率)
8.5小结 (总结本章所讲内容)

9.1 积分图计算(介紹图像积分图算法可以分为)
9.2 基于积分图像的局部均方差滤波(详细介绍在OpenCV中如何实现自己的算法可以分为)
9.3 遮罩层生成(详细讲解与代碼演示实现,)
9.4 高斯权重融合(详细讲解与代码演示实现)
9.5 边缘提升(详细讲解与代码演示实现)
9.6 美颜实现(NDK层详细讲解与代码演示实現,)
9.7 小结(讲述了移动应用中常见的人脸磨皮美容算法可以分为实现步骤与细节完整了整个美容算法可以分为、是对图像处理知识的這运用)

第10章 人眼实时跟踪与渲染
10.1界面显示与相机预览
10.2 人脸检测与跟踪
10.3寻找眼睛候选区域
10.4 眼睛检测(使用级联分类器检测眼睛)

}

我要回帖

更多关于 算法可以分为 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信