完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
ADUX1020是一款集成式光学传感器和前端器件,能够进行高级单点手势识别和近距检测。光学传感器可灵敏感测入射光的强度和角度。通过光学和电子的环境光过滤,它能够在各种嘈声环境中持续稳定工作。该芯片能够在多种模式下配置,以实现非接触式手势识别和控制,还能实现近距检测。
|
|
相关推荐
3个回答
|
|
手势识别基础
ADUX1020能够灵敏感测入射光的角度,因此该芯片只需使用集成式光学传感器和单个外部LED即可检测手势。当设置为采样模式时,它可从芯片上的四个输出通道计算入射光的角度。必须使用以下程序来实现手势识别功能: 在ADUX1020工作之前,校准时钟。有关如何校准32 kHz和32 MHz时钟的信息,请参见ADUX1020数据手册。 通过将 0x3 写入寄存器 0x45 的位 [3:0],将 ADUX1020 工作模式设置为采样模式。 收集器件测量的数据。有关如何使用先进先出(FIFO)和中断从寄存器读取数据的说明,请查看ADUX1020数据手册。数据可直接从数据寄存器读取,或从寄存器0x60位[15:0]中的64字节FIFO读取。 利用ADUX1020四个输出通道中的数据计算入射光的角度。收集通道X1、通道X2、通道Y1和通道Y2数据 之后,按照以下公式计算角度和强度: 水平角度:(弧度) 垂直角度:(弧度) 强度:I = X1 + X2 + Y1 + Y2(代码) 数据示例如图1和图2所示。 图1.强度和时间,ADUX1020 的原始数据输出 图2.角度和时间,ADUX1020 的角度计算 |
|
|
|
事件检测和手势窗口算法
在本部分中,以下算法说明的伪代码基于MATLAB语法。循环、Case语句和函数遵循标准的MATLAB格式,源于实际的MATLAB代码。 ADUX1020评估软件支持五种单元手势:向上轻扫、向下轻扫、向左轻扫、向右轻扫、点击。算法等待事件发生,在事件发生后,再将数据归类为这些手势之一。 在事件检测之前,必须消除所有四个通道的失调,方法是从数字上减去失调,或者修正器件的失调。从数字上减去失调是管理失调的最简单方法;但是,修正器件失调的方法可以充分利用模数转换器(ADC)的动态范围,建议在需要高动态范围的情况下使用。 寄存器0x3A、寄存器0x3B、寄存器0x3C和寄存器0x3D包含ADC失调,其标称值设置为0x2000。为修正这些失调,以ADC代码为单位,测量每个通道的16位输出,并将其从ADC失调寄存器CHx_OFFSET中的16位数字中减去(标称值为0x2000)。然后,使用此减法的结果写入ADC失调寄存器。 事件的起始可定义为当强度数据或其时间导数超出预设的阈值时。在本应用笔记中,我们采用了使用强度导数的方法,但两种方法都是适用的。 强度数据经过低通滤波,以消除高频噪声。通常,高频噪声消除可通过10 Hz转折频率的二阶巴特沃兹低通滤波器完成。 通过提取连续滤波强度样本的差值,来计算滤波强度的导数。 强度的导数dI/dt提高到预设阈值(ITH,以ADC代码为单位)之上,就是事件的起始。通常,这个阈值设置为200个ADC代码,但它可以上下调节,以消除较小的幅度,防止意外事件被识别为手势,或者也可将更小幅度的事件识别为手势。可扫描dI/dt的每个连续值,直至到达阈值,从而找到手势的起始。 For n = 1:numel(dI/dt) if dI/dt (n) > ITH gestureStart = n break 可通过后向扫描dI/dt数据,从手势起始时间开始,加上最长手势持续时间,直至滤波强度的导数降至–ITH之下,从而找到手势的结束。图3和图4显示了确定手势起始和停止时间的示例。 For n = (gestureStart + gestureDuration):−1:gestureStart if dI/dt (n) < −ITH gestureStop = n break 图3.强度和时间,包含手势起始和停止时间 图4. dI/dt和时间,包含手势起始和停止时间 当利用起始和停止时间来描绘手势时,可以计算手势内部的最大和最小的θX和θY。如果两个数量,即max(θX) – min(θX)和max(θY) – min(θY),都小于阈值θTH,则将事件归类为点击。如果事件不是点击,则需要进一步处理,以确定手势的方向。θX和θY之间的线性最小二乘法拟合线确定手势是属于向上、向下还是向左、向右类别,使用以下公式: 其中m 是斜率。 |
|
|
|
如果此拟合线斜率m的绝对值小于1,则手势为向左和向右。如果斜率的绝对值大于1,则手势为向上和向下。请注意,基本强度阈值还可描绘手势起始和停止时间,以简化计算。
If max(θX) − min(θX) < θTH and max(θY) − min(θY) < θTH gesture = click else (m, b) = leastSquaresFit(θX, θY) if m ≤ 1 if θX(gestureStart) > θX(gestureStop) gesture = left else gesture = right else if m > 1 if θY(gestureStart) > θY(gestureStop) gesture = up else gesture = down 图5显示了最小二乘法拟合线的示例。此手势有较大的θX值扩展,并非点击。最小二乘法拟合线的斜率<1,而且θX(gestureStart) > θX(gestureStop);因此,该手势是向左轻扫。 图5. θY和θX,包含最小二乘法拟合线 调节此方法的参数(–ITH、θTH和gestureDuration)可针对任何用例来优化算法,从而提供进行手势识别的唯一可能方法。使用ADUX1020还有其他方法实现手势识别。如果担心计算负载,可以只考虑手势起始和停止点,而忽略两者之间的点。这种方法非常稳定高效,但它要求强度或强度导数阈值ITH设置得足够高,以确保起始点和停止点具有适当的信噪比。 图6显示了强度dI/dt,以及轻扫手势的手势图,如光学手势评估工具中所示。图7显示了识别为向右轻扫的单元手势。 图6.手势识别数据(强度dl/dt,以及轻扫手势的手势图),使用光学手势评估工具 图7.轻扫手势结果(识别为向右轻扫),使用光学手势评估工具 |
|
|
|
只有小组成员才能发言,加入小组>>
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-21 21:11 , Processed in 0.705560 second(s), Total 81, Slave 62 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号