一种基于Android系统的机器的视觉设备检测方法技术方案

技术编号:37713033 阅读:15 留言:0更新日期:2023-06-02 00:07
本发明专利技术提供了一种基于Android系统的机器的视觉设备检测方法,其通过共享内存进行进程间通信,并通过在驱动处建立文件节点进行同步,将算法置于APP内,保证了检测时实时与硬件交互、且提高了算法的运行速度。HAL层的32位空间检测开始时持续输出预览流,收到检测开始信号后,收集不同角度的图片,拷贝到共享内存,完成后通知APP的64位空间,APP的64位空间收到HAL层的32位空间的采图完毕通知后、读取共享内存图片并输入算法进行计算输出结果,如果结果正常,通知APP显示算法结果,摄像头关闭;否则显示当前错误原因并等待下一轮检测。则显示当前错误原因并等待下一轮检测。则显示当前错误原因并等待下一轮检测。

【技术实现步骤摘要】
一种基于Android系统的机器的视觉设备检测方法


[0001]本专利技术涉及视觉设备自动检测的
,具体为一种基于Android系统的机器的视觉设备检测方法。

技术介绍

[0002]目前市场上基于Android系统的机器的视觉设备的图像处理算法有放在CAMERA HAL层和APP直接调用两种选择,均要求快速、实时处理。现有的主流芯片如高通的SDM660、MTK的MTK6763、瑞芯微的RK3399,其芯片商提供的Android7~10的CAMERA HAL层库由于兼容、遗留原因均是32位,而APP运行于64位空间。现有技术的图像处理算法如果加在HAL层32位空间内、则速度会偏慢;而如果放在APP处,在需要快速、实时响应的环境,如自动驾驶,生产线处理,眼科设备等会丧失HAL层与硬件实时交互的便利,导致输入图片不准确,影响后续处理结果。
[0003]以视力筛查设备为例:测试我们的算法在根据12张图输出结果时在32位空间内运行大约需要耗时600ms,而在64位空间内只需300ms。
[0004]目前有两种处理方法:
[0005]1为了快速获得实时图片,至少每两帧要操作一次红外灯,抓一次图,因此将算法放在HAL层,保证实时与硬件交互,缺点是算法速度慢;
[0006]2将算法放在APP的64位空间内,输入使用APP回调的图片,由于APP回调图片与操作灯有微量的延迟,这样操作算法速度快,但牺牲了实时性,导致输入图片不准确,影响算法精度。

技术实现思路

[0007]针对上述问题,本专利技术提供了一种基于Android系统的机器视觉设备检测方法,其通过共享内存进行进程间通信,并通过在驱动处建立文件节点进行同步,将算法置于APP内,保证了检测时实时与硬件交互、且提高了算法的运行速度。
[0008]一种基于Android系统的机器的视觉设备检测方法,其特征在于:
[0009]HAL层的32位空间检测开始时持续输出预览流,收到检测开始信号后,收集不同角度的图片,拷贝到共享内存,完成后通知APP的64位空间,APP的64位空间收到HAL层的32位空间的采图完毕通知后、读取共享内存图片并输入算法进行计算输出结果,如果结果正常,通知APP显示算法结果,摄像头关闭;否则显示当前错误原因并等待下一轮检测。
[0010]其进一步特征在于,其具体步骤如下:
[0011]a、视觉设备的HAL与APP两进程加入同步文件节点进行同步,且共享内存文件初始化容量大于存储所有设定数量采集照片的总容量;
[0012]b、APP点击启动视觉设备后,HAL层32位空间持续输出预览流,APP64位空间开启算法处理线程、打开同步文件节点,在未收到算法唤醒信号前保持休眠;
[0013]c、HAL层32位空间收到检测开始信号后,收集所需设定数量张不同角度视觉图片,
之后将共享内存打开,并映射共享内存并获得地址,之后拷贝至共享内存,然后同步文件节点至驱动处唤醒APP进程,最后解除内存映射;
[0014]d、APP的64位空间收到采图完毕通知后读取共享内存图片,输入算法进行计算输出结果;
[0015]e、如果结果正常,通知APP显示算法结果,摄像头关闭;否则显示当前错误原因并等待下一轮检测。
[0016]采用本专利技术后,将抓图放在HAL层,保证实时与硬件交互;把算法放在APP的64位空间,提高了算法的运行速度,利用共享内存进行进程间通信,同时补足了共享内存无法同步的缺点,保证视觉设备检测的最佳运行效果。
附图说明
[0017]图1为本专利技术的具体设备所对应的工作原理流程图。
具体实施方式
[0018]一种基于Android系统的机器的视觉设备检测方法,其适用于基于Android系统的机器,且机器上设置有视觉设备,具体实施例中,其针对视力筛查设备进行,视觉设备为相机camera,其预设的采集图片为12张1920*1080分辨率的YUV图片,即可计算获得设定数量采集照片的总容量为36M。
[0019]由于共享内存实现的方式是进程间的数据不用传送,而是直接访问内存,可以加快程序的效率,所以选择共享内存进行进程间通信。但共享内存没有提供同步的机制,因此在驱动处建立文件节点,相机camera的HAL与APP两进程使用此文件节点利用ioctl进行同步具体步骤如下:
[0020]a.驱动加入同步文件节点,供CAMERA HAL与APP两进程同步,共享内存文件/data/algo_ipc初始化容量至40M;
[0021]b.APP点击启动camera后,HAL层32位空间持续输出预览流,APP64位空间开启算法处理线程,打开同步文件节点,在未收到算法唤醒信号前保持休眠;
[0022]c.收到检测开始信号后,收集所需12张不同角度亮度的眼睛红外图片,完成后运行如下程序:
[0023]int fd=open("/data/algo_ipc",O_RDWR);//打开共享内存文件
[0024]uint8_t*mmapAddr=(unsigned char*)mmap(NULL,IMG_SIZE*12,PROT_READ|PROT_WRITE,MAP_SHARED,fd,0);//映射共享内存并获得地址
[0025]memcpy(mmapAddr,buf,IMG_SIZE*12);//拷贝至共享内存
[0026]然后ioctl至驱动处唤醒APP进程;
[0027]最后munmap(mmapAddr,IMG_SIZE*12);//解除内存映射
[0028]d.APP的64位空间收到采图完毕通知后读取共享内存图片,程序如下:
[0029]int fd=open("/data/algo_ipc",O_RDWR);//打开共享内存文件
[0030]uint8_t*mmapAddr=(unsigned char*)mmap(NULL,(IMG_SIZE*12),PROT_READ|PROT_WRITE,MAP_SHARED,fd,0);//映射共享内存并获得地址
[0031]memcpy(buf,mmapAddr,IMG_SIZE*12);//从共享内存拷贝出
[0032]munmap(mmapAddr,IMG_SIZE*12);//解除内存映射
[0033]其测试共享内存将图片拷入再拷出需6ms,最后输入算法进行计算输出结果,检测方法总耗时306ms,相比在32位空间内600ms的耗时,效率提升将近一倍;
[0034]e.如果结果正常,通知APP显示算法结果,摄像头关闭;否则显示当前错误原因并等待下一轮检测。
[0035]其将抓图放在HAL层,保证实时与硬件交互;把算法放在APP的64位空间,提高了算法的运行速度,利用共享内存进行进程间通信,同时补足了共享内存无法同步的缺点,保证视力筛查设备的最佳运行效果,且能适用于其他Android系统的机器的视觉设备。...

【技术保护点】

【技术特征摘要】
1.一种基于Android系统的机器的视觉设备检测方法,其特征在于:HAL层的32位空间检测开始时持续输出预览流,收到检测开始信号后,收集不同角度的图片,拷贝到共享内存,完成后通知APP的64位空间,APP的64位空间收到HAL层的32位空间的采图完毕通知后、读取共享内存图片并输入算法进行计算输出结果,如果结果正常,通知APP显示算法结果,摄像头关闭;否则显示当前错误原因并等待下一轮检测。2.如权利要求1所述的一种基于Android系统的机器的视觉设备检测方法,其特征在于,其具体步骤如下:a、视觉设备的HAL与APP两进程加入同步文件节点进行同步,且共享内存文件初始化容量...

【专利技术属性】
技术研发人员:胡继松
申请(专利权)人:江苏盖睿健康科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1