虹软人脸识别3.0 - 图像数据结构介绍(Android)

从虹软开放了2.0版本SDK以来,由于具有免费、离线使用的特点,我们公司在人脸识别门禁应用中使用了虹软SDK,识别效果还不错,因此比较关注虹软SDK的官方动态。近期上线了ArcFace 3.0 SDK版本,确实做了比较大的更新。首先本篇介绍一下关于Android平台算法的更新内容,下一篇将针对Windows平台的算法更新展开介绍。

  • 特征比对支持比对模型选择,有生活照比对模型人证比对模型
  • 识别率、防攻击效果显著提升
  • 特征值更新,升级后人脸库需重新注册
  • Android平台新增64位的SDK
  • 图像处理工具类
  • 人脸检测同时支持全角度及单一角度
  • 新增了一种图像数据传入方式

在实际开发过程中使用新的图像数据结构具有一定的难度,本文将从以下几点对该图像数据结构及使用方式进行详细介绍

  1. SDK接口变动
  2. ArcSoftImageInfo类解析
  3. SDK相关代码解析
  4. 步长的作用
  5. 将Camera2回传的Image转换为ArcSoftImageInfo

一、SDK接口变动

在接入3.0版SDK时,发现FaceEngine类中的detectFacesprocessextractFaceFeature等传入图像数据的函数都有重载函数,重载函数的接口均使用ArcSoftImageInfo对象作为入参的图像数据,以人脸检测为例,具体接口如下:
原始接口:

public int detectFaces(byte[] data, int width, int height, int format,
List<FaceInfo> faceInfoList)

新增接口:

public int detectFaces(ArcSoftImageInfo arcSoftImageInfo,
List<FaceInfo> faceInfoList)

可以看到,重载函数传入ArcSoftImageInfo对象作为图像数据进行检测,arcSoftImageInfo替代了原来的data, width, height, format

二、ArcSoftImageInfo类解析

在我实际使用后发现,ArcSoftImageInfo不只是简单封装一下,它还将一维数组data修改为二维数组planes,还新增了一个与planes对应的步长数组strides

步长概念介绍:
步长可以理解为一行像素的字节数。

类结构如下:

public class ArcSoftImageInfo {
   

    private int width;

    private int height;

    private int imageFormat;

    private byte[][] planes;

    private int[] strides;
    ...
}

官方文档中对该类的介绍:

  • 成员描述
类型 变量名 描述
int width 图像宽度
int height 图像高度
int imageFormat 图像格式
byte[ ][ ] planes 图像通道
int[ ] strides 每个图像通道的步长
  • 组成方式介绍

// arcSoftImageInfo组成方式举例:

 

// NV21格式数据,有两个通道,

// Y通道步长一般为图像宽度,若图像经过8字节对齐、16字节对齐等操作,需填入对齐后的图像步长

// VU通道步长一般为图像宽度,若图像经过8字节对齐、16字节对齐等操作,需填入对齐后的图像步长

ArcSoftImageInfo arcSoftImageInfo = new ArcSoftImageInfo(width, height,
FaceEngine.CP_PAF_NV21, new byte[][]{
   planeY, planeVU}, new int[]{
   yStride,
vuStride});

 

// GRAY,只有一个通道,

// 步长一般为图像宽度,若图像经过8字节对齐、16字节对齐等操作,需填入对齐后的图像步长

arcSoftImageInfo = new ArcSoftImageInfo(width, height,
FaceEngine.CP_PAF_GRAY, new byte[]
  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值