计算机双目视觉视觉角匹配算法

简介: HaaS智能门禁等应用场景需要用到双目视觉,让门禁系统可以拒绝打印图片,手机屏幕,面具,3D头套等非活体攻击。这里先从计算机双目视觉的设计出发,看看出现过的不同的变种,以及用来解决的问题。
来源 | HaaS技术社区

1 背景

HaaS智能门禁等应用场景需要用到双目视觉,让门禁系统可以拒绝打印图片,手机屏幕,面具,3D头套等非活体攻击。

这里先从计算机双目视觉的设计出发,看看出现过的不同的变种,以及用来解决的问题。

1.1 对称双目视觉

计算机的双目视觉一开始的设计就是对称双目视觉,模拟自然界中生物的双目视觉来得到只有双目才能实现的立体视觉能力,比如获取目标的深度信息。

自然界中草食动物一般是两只眼睛长在脸两边,两只眼睛的视野几乎能覆盖360°,为了能够看到四面八方的捕猎者。模拟草食动物的视野的就是全景相机。

肉食动物的眼睛一般是长在脸的前面,为了能够确定猎物空间位置用于捕猎。模拟肉食动物的视野的就是3D相机。

1.2 非对称双目视觉

随后计算机的双目视觉派生出了非对称双目视觉的设计,包括广角+长焦,彩色+黑白,彩色+红外等等。

广角+长焦相机是现今手机上很常见的组合,通过裁切来实现模拟变焦。

彩色+黑白相机是华为手机曾经使用过的设计,用高像素的黑白相机提供亮度信息,低像素的彩色相机提供颜色信息,理论上由于人眼对亮度敏感度大于颜色敏感度,这样可以在有限的成本下实现比较好的画质。

彩色+红外相机则是在普通相机的基础上增加了夜视和活体检测的功能。由于人体无时无刻不在向外散发红外线,所以红外相机可以不利来光线检测到人体,以及通过红外线来判断彩色摄像头拍摄到的图像是来自一个真人,还是一张图片,或者手机屏幕。

2 用来解决什么问题

双目计算机视觉拟合算法是用来解决什么问题的。

在各种不同的双目视觉场景下,都希望知道两个摄像头的视场角的空间关系,来进行双目视觉的计算。

比如,在彩色摄像头的一个区域发现了一张人脸,那么要知道这个人脸所在的区域,对应到红外摄像头上,是那一块区域,我们才能去进行活体计算。

也就是说,需要可靠的双目视觉视场角匹配算法,产品才能最终落地。

2.1 理想情况下,两个摄像头的空间关系

红色和蓝色的方锥分别是左右两个摄像头的取景范围

image.png

那么在这样的情况下,在某景深下,同一个物件在两个摄像头中的成像就是这样的映射关系:

(即使在理想情况下,同一个物件不同景深下的两个摄像头的映射关系也不一样)

image.png

2.2 考虑到生产工艺的问题

由于生产工艺所限,两个摄像头在间距,垂直高度,上下角度,左右角度上都会出现一些偏差,并且每台设备的偏差都不一样。

(为了表现偏差的影响,下图中画的比较夸张)

image.png

那么在考虑到生产工艺之后,在某景深下,同一个物件在两个摄像头中的成像就是这样的映射关系:

image.png

2.3 进一步考虑到摄像头的光学畸变

在单个摄像头的成像上大概是这个样子:

image.png

光学畸变分为径向畸变和切向畸变,如果想要用数学方法来拟合极其困难。

本文就不加以展开,参考论坛上其他文章。

在上图的空间关系的基础上,考虑到两个摄像头不同的区域的光学畸变的影响也不同,建立空间映射关系就变的非常复杂。

3 如何解决问题

3.1 建立固定距离的纠偏的模型

由于光学畸变导致空间数学建模变的非常复杂,而实际应用场景往往对一定距离范围内(比如0.5米-1.5米)的摄像头的视场角中心(中心25%)区域比较关心,可以采用多项式拟合的方式来建立在某个特定的距离下从摄像头A到摄像头B的映射关系,这样能保证中心区域相当精准,而边缘区域的误差也在可以接受的范围内。

在足够的采样点的情况下,更高次的多项式能够更精准的拟合结果。但是实际我们采用了3次多项式,因为在不使用高精度数学库的情况float型的精度也就只能保证3次多项式的结果足够精准了。

比如3次多项式拟合摄像头A当中点(Xa, Ya)到摄像头B当中点(Xb, Yb)的函数如下:

Xb = Xa^3 * P3 + Xa^2 * P2 + Xa * P1 + P0

Yb = Ya^3 * Q3 + Ya^2 * Q2 + Ya * Q1 + Q0

而其中P3~P0,Q3~Q0就是拟合过程中需要计算出的参数。

3.2 计算出固定距离的拟合参数

将一张棋盘格图纸放在两个摄像头都能完整拍摄到的地方,且尽量铺满图像。

如下图左边为红外摄像头的图像,右边为彩色摄像头的图像。

image.png

然后找到两边棋盘格的17*31个内顶点(opencv有现成的函数findChessboardCorners()),这样就找到了摄像头A的527个位置点以及他们分别映射到摄像头B的位置点。

然后通过最小二乘法或者其他多项式拟合算法分别对X轴和Y轴计算,算出P3~P0,Q3~Q0这8个拟合参数。

本文就不加以展开,参考论坛其他文章。

3.3 应用固定距离的拟合参数

对摄像头A的图像的每个位置点,应用拟合函数,生成在摄像头B的图像中的对应位置点。

下图是在摄像头B的图像基础上画上了计算结果来验证拟合参数。

红圈是摄像头A的图像中的某个位置点

蓝圈是根据摄像头A的图像中的该位置点拟合出来的摄像头B中的对应位置点的估算位置

红圈和蓝圈用红线相连

绿圈是摄像头B中的对应位置点的实际位置

image.png

结果可见,在固定距离下,拟合的效果还是相当精确,差异都是像素级别。对于人脸识别等场景做人脸匹配,已经完全足够了。

3.4 完善非标准距离的拟合精度

多项式拟合是在固定距离拟合的,那么一旦目标离开估计距离较远就会产生比较大的偏差。

如果想要降低距离产生的误差,可以在多个距离标定多套参数,然后根据距离插值。

比如当前目标距离是0.75米,那么把0.5m的拟合参数算出来的结果和1.0m的拟合参数算出来的结果取平均值即可。

但这由引出了一个问题,如何知道双目系统中某个目标的距离,方法一般有:

激光测距等硬件,非常精准,但是需要额外的硬件成本

根据标的物在两个摄像头视场角的相对位置估算距离,这个方案精确度一半,且对算力要求比较高

对于人脸识别等特殊场景,只要是成年人,不论男女胖瘦,人的五官所占区域都差不多大小(胖人的脸大但五官并不大),可以使用五官的尺寸来估算人脸的距离,这个方案精确度较低,且识别目标仅限成年人,但几乎没有额外成本。

4 总结

工程学的一种思想就是,没有最好的方案,只有最合适的方案。在开发成本,运行成本,维护成本,偏差范围这几个因素之前,达到一个局部最优解。

相关文章
|
15天前
|
机器学习/深度学习 算法 TensorFlow
动物识别系统Python+卷积神经网络算法+TensorFlow+人工智能+图像识别+计算机毕业设计项目
动物识别系统。本项目以Python作为主要编程语言,并基于TensorFlow搭建ResNet50卷积神经网络算法模型,通过收集4种常见的动物图像数据集(猫、狗、鸡、马)然后进行模型训练,得到一个识别精度较高的模型文件,然后保存为本地格式的H5格式文件。再基于Django开发Web网页端操作界面,实现用户上传一张动物图片,识别其名称。
46 1
动物识别系统Python+卷积神经网络算法+TensorFlow+人工智能+图像识别+计算机毕业设计项目
|
14天前
|
机器学习/深度学习 算法 TensorFlow
交通标志识别系统Python+卷积神经网络算法+深度学习人工智能+TensorFlow模型训练+计算机课设项目+Django网页界面
交通标志识别系统。本系统使用Python作为主要编程语言,在交通标志图像识别功能实现中,基于TensorFlow搭建卷积神经网络算法模型,通过对收集到的58种常见的交通标志图像作为数据集,进行迭代训练最后得到一个识别精度较高的模型文件,然后保存为本地的h5格式文件。再使用Django开发Web网页端操作界面,实现用户上传一张交通标志图片,识别其名称。
43 6
交通标志识别系统Python+卷积神经网络算法+深度学习人工智能+TensorFlow模型训练+计算机课设项目+Django网页界面
|
10天前
|
机器学习/深度学习 人工智能 算法
【新闻文本分类识别系统】Python+卷积神经网络算法+人工智能+深度学习+计算机毕设项目+Django网页界面平台
文本分类识别系统。本系统使用Python作为主要开发语言,首先收集了10种中文文本数据集("体育类", "财经类", "房产类", "家居类", "教育类", "科技类", "时尚类", "时政类", "游戏类", "娱乐类"),然后基于TensorFlow搭建CNN卷积神经网络算法模型。通过对数据集进行多轮迭代训练,最后得到一个识别精度较高的模型,并保存为本地的h5格式。然后使用Django开发Web网页端操作界面,实现用户上传一段文本识别其所属的类别。
22 1
【新闻文本分类识别系统】Python+卷积神经网络算法+人工智能+深度学习+计算机毕设项目+Django网页界面平台
|
26天前
|
前端开发 搜索推荐 算法
中草药管理与推荐系统Python+Django网页界面+推荐算法+计算机课设系统+网站开发
中草药管理与推荐系统。本系统使用Python作为主要开发语言,前端使用HTML,CSS,BootStrap等技术和框架搭建前端界面,后端使用Django框架处理应用请求,使用Ajax等技术实现前后端的数据通信。实现了一个综合性的中草药管理与推荐平台。具体功能如下: - 系统分为普通用户和管理员两个角色 - 普通用户可以登录,注册、查看物品信息、收藏物品、发布评论、编辑个人信息、柱状图饼状图可视化物品信息、并依据用户注册时选择的标签进行推荐 和 根据用户对物品的评分 使用协同过滤推荐算法进行推荐 - 管理员可以在后台对用户和物品信息进行管理编辑
57 12
中草药管理与推荐系统Python+Django网页界面+推荐算法+计算机课设系统+网站开发
|
10天前
|
机器学习/深度学习 人工智能 算法
【果蔬识别系统】Python+卷积神经网络算法+人工智能+深度学习+计算机毕设项目+Django网页界面平台
【果蔬识别系统】Python+卷积神经网络算法+人工智能+深度学习+计算机毕设项目+Django网页界面平台。果蔬识别系统,本系统使用Python作为主要开发语言,通过收集了12种常见的水果和蔬菜('土豆', '圣女果', '大白菜', '大葱', '梨', '胡萝卜', '芒果', '苹果', '西红柿', '韭菜', '香蕉', '黄瓜'),然后基于TensorFlow库搭建CNN卷积神经网络算法模型,然后对数据集进行训练,最后得到一个识别精度较高的算法模型,然后将其保存为h5格式的本地文件方便后期调用。再使用Django框架搭建Web网页平台操作界面,实现用户上传一张果蔬图片识别其名称。
29 0
【果蔬识别系统】Python+卷积神经网络算法+人工智能+深度学习+计算机毕设项目+Django网页界面平台
|
15天前
|
机器学习/深度学习 存储 人工智能
文本情感识别分析系统Python+SVM分类算法+机器学习人工智能+计算机毕业设计
使用Python作为开发语言,基于文本数据集(一个积极的xls文本格式和一个消极的xls文本格式文件),使用Word2vec对文本进行处理。通过支持向量机SVM算法训练情绪分类模型。实现对文本消极情感和文本积极情感的识别。并基于Django框架开发网页平台实现对用户的可视化操作和数据存储。
20 0
文本情感识别分析系统Python+SVM分类算法+机器学习人工智能+计算机毕业设计
|
2月前
|
机器学习/深度学习 人工智能 算法
【眼疾病识别】图像识别+深度学习技术+人工智能+卷积神经网络算法+计算机课设+Python+TensorFlow
眼疾识别系统,使用Python作为主要编程语言进行开发,基于深度学习等技术使用TensorFlow搭建ResNet50卷积神经网络算法,通过对眼疾图片4种数据集进行训练('白内障', '糖尿病性视网膜病变', '青光眼', '正常'),最终得到一个识别精确度较高的模型。然后使用Django框架开发Web网页端可视化操作界面,实现用户上传一张眼疾图片识别其名称。
71 9
【眼疾病识别】图像识别+深度学习技术+人工智能+卷积神经网络算法+计算机课设+Python+TensorFlow
|
2月前
|
机器学习/深度学习 人工智能 自然语言处理
探索计算机人工智能算法
在信息科技飞速发展的今天,人工智能(AI)炙手可热。计算机AI算法作为核心,使系统能模拟乃至超越人智。本文探索AI算法原理,涵盖机器学习(监督与无监督学习)、深度学习及自然语言处理等关键技术,展示其如何通过数据分析、模式识别等实现预测、分类及理解人类语言等复杂任务,引领科技创新潮流。
54 0
|
3月前
|
机器学习/深度学习 人工智能 算法
【坚果识别】果实识别+图像识别系统+Python+计算机课设+人工智能课设+卷积算法
坚果识别系统,使用Python语言进行开发,通过TensorFlow搭建卷积神经网络算法模型,对10种坚果果实('杏仁', '巴西坚果', '腰果', '椰子', '榛子', '夏威夷果', '山核桃', '松子', '开心果', '核桃')等图片数据集进行训练,得到一个识别精度较高的模型文件,让后使用Django搭建Web网页端界面操作平台,实现用户上传一张坚果图片 识别其名称。
38 0
|
3月前
|
机器学习/深度学习 人工智能 算法
计算机算法基础概述与常用算法解析
计算机算法基础概述与常用算法解析
下一篇
无影云桌面