基于近红外与可见光双目摄像头的活体人脸检测原理

人脸活体检测(Face Anti-Spoofing)是人脸识别系统中的重要一环,它负责验证捕捉到的人脸是否为真实活体,以抵御各种伪造攻击,如彩色纸张打印的人脸图、电子设备屏幕中的人脸数字图像及面具等。这些攻击手段若得逞,将对金融安全、门禁管理等造成严重威胁。

基于近红外与可见光双目摄像头的活体人脸检测利用红外摄像头下视频和大部分纸张不能呈现图像的特性,有效的防止了视频中伪造人脸的攻击;同时利用近红外摄像头和可见光摄像头下真实人脸与照片人脸纹理差异和颜色差异,可以有效地区分人脸是来自真实人脸还是照片中的伪造人脸。

Android实现双目红外活体检测

首先建议使用上图1 的USB 双目摄像头,能支持双头Type-C 接口UVC协议的,现在的手机平板大部分都是TypeC 接口了,千万别整公头USB口,需要特定的开发板才能开发调试。

然后 打通UVC协议摄像头预览,能正常预览才能取数据进行AI分析人脸识别等,目前Android 平台的UVC协议摄像头库最有名的就是日本大神的 saki4510t/UVCCamera,但是很久不维护了,文章最后的源码会集成到Demo 中

最后 就可以拿双目摄像头中的RGB和IR 图像进行活体检测人脸识别了。

    /**
* 初始化IR 摄像头
*
*/
private void initIRCamara() {
irCameraManager.initCameraHelper();
irCameraManager.setOpeningMultiCamera(true);
irCameraManager.setCameraView(binding.irCameraTextureView,true);
irCameraManager.selectUsbCamera(UsbCameraEnum.IR); irCameraManager.setOnDeviceStatuesCallBack(new UsbCameraManager.OnDeviceStatuesCallBack() {
@Override
public void onAttach(UsbDevice device) {
} @Override
public void onDeviceOpen(UsbDevice device, boolean isFirstOpen) { }
}); irCameraManager.setPreviewHeight(PREVIEW_HEIGHT);
irCameraManager.setFrameCallback(frame -> {
Size currentPreviewSize = irCameraManager.getCurrentPreviewSize();
int width = PREVIEW_WIDTH;
int height = PREVIEW_HEIGHT;
if (currentPreviewSize != null) {
width = currentPreviewSize.width;
height = currentPreviewSize.height;
}
Bitmap bitmap = DataConvertUtils.NV21Data2Bitmap(frame, width, height, 0, 0, false);
if (bitmap != null) {
faceVerifySetBitmap(bitmap, FaceVerifyUtils.BitmapType.IR);
}
}, UVCCamera.PIXEL_FORMAT_NV21);
}

初始化RGB和IR 数据后把数据转为Bitmap 后送入引擎开始人脸识别,双目活体检测了

faceVerifyUtils.goVerifyWithIR(irBitmap, rgbBitmap);

注意事项

  1. 目前的USB双目摄像头的带宽普遍不足,但好在人脸识别,双目活体检测不需要太高分辨率,1280*720 足够了
  2. 需要宽动态抗逆光摄像头,调试的时候经常经常用手触摸镜头需要保持镜头整洁
  3. 确保两个摄像头都正常稳定同步的输出了影像画面

演示接入代码Demo 和体验App 下载

上述的UVC 协议摄像头管理已经放在工程目了libs 下面了打包成了AAR 文件,整个项目代码GitHub 搜索AnyLifeZLB/FaceVerificationSDK

或者点击: https://github.com/AnyLifeZLB/FaceVerificationSDK

手上有双目摄像头的连接设备可以立马体验效果

基于近红外与可见光双目摄像头的活体人脸检测,文末附Demo的更多相关文章

  1. [C#][Windows]]基于ArcFace2.0+红外双目摄像头的活体检测

    废话不多说 直接上图 这个是demo中用到的双目摄像头,一个是红外的,一个是正常的rgb摄像头两个usb接口,在电脑上呈现两路摄像头通道程序检测RGB输出图像,当检测到有人脸时,用RGB人脸的位置到红 ...

  2. [Windows][C#][.NET][WPF]基于ArcFace2.0+红外双目摄像头的活体检测

    废话不多说 直接上图这个是demo中用到的双目摄像头,一个是红外的,一个是正常的rgb摄像头两个usb接口,在电脑上呈现两路摄像头通道程序检测RGB输出图像,当检测到有人脸时,用RGB人脸的位置到红外 ...

  3. 基于AdaBoost算法——世纪晟结合Haar-like特征训练人脸检测识别

      AdaBoost 算法是一种快速人脸检测算法,它将根据弱学习的反馈,适应性地调整假设的错误率,使在效率不降低的情况下,检测正确率得到了很大的提高.   系统在技术上的三个贡献: 1.用简单的Haa ...

  4. 基于cyusb3014的usb3.0双目摄像头开发测试小结(使用mt9m001c12stm)

    测试图像 摄像头分辨率为1280*1024,双目分辨率为2560*1024 ps:时钟频率太高,时序约束还得进一步细化,图像偶尔会出现部分雪花,下一步完善

  5. 基于Socket通讯(C#)和WebSocket协议(net)编写的两种聊天功能(文末附源码下载地址)

    今天我们来盘一盘Socket通讯和WebSocket协议在即时通讯的小应用——聊天. 理论大家估计都知道得差不多了,小编也通过查阅各种资料对理论知识进行了充电,发现好多demo似懂非懂,拷贝回来又运行 ...

  6. 手把手教你基于SqlSugar4编写一个可视化代码生成器(生成实体,以SqlServer为例,文末附源码)

    在开发过程中免不了创建实体类,字段少的表可以手动编写,但是字段多还用手动创建的话不免有些浪费时间,假如一张表有100多个字段,手写有些不现实. 这时我们会借助一些工具,如:动软代码生成器.各种ORM框 ...

  7. 30分钟玩转Net MVC 基于WebUploader的大文件分片上传、断网续传、秒传(文末附带demo下载)

    现在的项目开发基本上都用到了上传文件功能,或图片,或文档,或视频.我们常用的常规上传已经能够满足当前要求了, 然而有时会出现如下问题: 文件过大(比如1G以上),超出服务端的请求大小限制: 请求时间过 ...

  8. 基于MTCNN多任务级联卷积神经网络进行的人脸识别 世纪晟人脸检测

    神经网络和深度学习目前为处理图像识别的许多问题提供了最佳解决方案,而基于MTCNN(多任务级联卷积神经网络)的人脸检测算法也解决了传统算法对环境要求高.人脸要求高.检测耗时高的弊端. 基于MTCNN多 ...

  9. 基于 HTML5 的 WebGL 自定义 3D 摄像头监控模型

    前言 随着视频监控联网系统的不断普及和发展, 网络摄像机更多的应用于监控系统中,尤其是高清时代的来临,更加快了网络摄像机的发展和应用. 在监控摄像机数量的不断庞大的同时,在监控系统中面临着严峻的现状问 ...

  10. 爬坑!OpenCV打开双目摄像头

    1.首先找到双目摄像头的VideoCapture的设备号,记住定义时要采用降序的方法定义:cv::VideoCapture Rcap(1); cv::VideoCapture Lcap(0); 2.分 ...

随机推荐

  1. 使用 Docker Compose 安装 MongoDB

    最近学习 Docker ,试着在 Docker 里安装 MongoDB,按照镜像 mongo 文档一顿操作猛如虎. 快速开始 写个 docker-compose.yml 文件: version: '3 ...

  2. Specifications动态查询

    [前言说明] 针对CRUD种的查询,因为我们的查询总是具有各种各样的筛选条件 为了我们的程序能够更加适应筛选条件的变化,SpringDataJpa提供了Specifications这种解决方案 Spe ...

  3. idea中terminal的配置

    idea中terminal的配置流程: File->settings->Tools->terminal 然后根据需要进行配置: 显示git操作界面 Shell path ==> ...

  4. Qt编写地图综合应用57-跨平台(win、linux、mac、uos、kylin等)

    一.前言 跨平台着实花了不少的精力,为了从Qt4.7兼容到Qt6.2及后续版本,头发掉了不少,仅有的几根毛所剩无几,哎,可能这就是程序员的命,本人写Qt程序这么多年,比较喜欢支持多个Qt版本,尤其是钟 ...

  5. Qt编写安防视频监控系统37-onvif预置位

    一.前言 预置位在视频监控系统中是不可或缺的存在,响应预置位功能的前提是要带预置位的云台球机,有些普通的云台球机其实不带预置位的,这个要检查清楚,硬件上不支持该功能的,你再怎么点也没反应.在这个视频监 ...

  6. Ubuntu 装卸Opencv

    buntu中卸载opencv的方法: 1.打开ubuntu: 2.找到当初安装opencv的build目录,进入该build目录执行卸载操作: 3.通过rm命令清理/usr中所有opencv相关项即可 ...

  7. Intellij IDEA如何导入 Maven 项目

    Intellij IDEA如何导入 Maven 项目 选择 File->Import Module,选择 Maven 模块路径,如下图所示: 选择"Import module from ...

  8. 一套亿级用户的IM架构技术干货(上篇):整体架构、服务拆分等

    1.引言 经历过稍有些规模的IM系统开发的同行们都有体会,要想实现大规模并发IM(比如亿级用户和数十亿日消息量这样的规模),在架构设计上需要一些额外的考虑,尤其是要解决用户高并发.服务高可用,架构和实 ...

  9. c# 免注册调用大漠插件100%完美识别文字

    c# 免注册调用大漠插件100%完美识别文字 下载:https://download.csdn.net/download/xxq931123/10875122 绑定 模式:http://zy.anji ...

  10. 第六章 dubbo源码解析目录

    13.1 dubbo服务降级源码解析 从 9.1 客户端发起请求源码 的客户端请求总体流程图中,截取部分如下: //代理发出请求 proxy0.sayHello(String paramString) ...