计算机视觉目标跟踪系统人工智能开源硬件与python编程实践情境导入乒乓球、足球等机器人中涉及的关键技术是利用计算机机器视觉技术实现对球形的 识别和实时跟踪,引导机械臂完成击球动作。对足球、乒乓球的快速识别并持续跟踪,利用的是计算机机器视觉中的颜色区块和形状的自动检测技术 ,在居家生活、工业生产等领域有着广泛应用。任务与目标了解图像处理与目标跟踪技术的基本原理、相关算法和应用框架;掌握运用人工智能开源 硬件设计智能应用系统的方法,掌握Python语言的编程方法;应用计算机视觉开源硬件和Python编程,编写色块及形状综合识别算法, 实现对目标的跟踪功能;针对生活应用场景,进一步开展创意设计,设计具有实用价值的目标跟踪应用系统。知识拓展:Lab颜色空间模型参数 L是亮度,取值范围是L∈(0,100);a为颜色在红绿轴的分量,取值范围是a∈(-128,127);b为颜色在蓝黄轴的分量,取值范 围是b∈(-128,127)。一些算法库对Lab模型参数做了量化对齐处理,使其处于0-255范围,具体做法是:L=L2.55,a =a+128,b=b+128。 LAB各分量的阈值设定一般是根据先验知识。实际应用中,现场光照情况不尽相同,摄像头也会带来偏色情况 ,顺光、逆光、色温、噪声等情况,各分量的阈值需要调整。LAB各分量的阈值设定LAB各分量的阈值设定一般是根据先验知识。实际应用中, 现场光照情况不尽相同,常常出现所给定的阈值并不是最合适。设计阈值计算算法,为每种颜色选定一个小样本采集区域,然后计算样本区域中这种 颜色的平均值,作为颜色追踪过程的阈值参数。颜色阈值设置工具OpenAIE IDE开发工具中提供有颜色阈值选择器,利用Lab阈值编辑 器,可以根据视频采集现场的光照、背景光、环境噪声、摄像头工作状态等实际情况,进行针对性的Lab模型参数设置。以下图中的红色色块La b建模为例:启动阈值编辑器在OpenAIE IDE开发环境中,从顶部菜单的“工具”栏里,依次进行操作:选择工具->机器视觉->阈值 编辑器选择建模源图像阈值编辑器操作界面左上是源图像显示区,显示导入的图像帧。右上是色块跟踪区,显示按照当前Lab阈值参数进行颜色跟 踪的情况。该区域显示的是二值化图像,白色像素是被跟踪的像素。下部是各组参数调节区,包括L参数、A参数、B参数的最小值和最大值。阈值 参数调节拖动L参数的最大值和最小值的指针,寻找到尽可能的目标区域阈值是白色的情况将最小值的指针拖到最左边,最大值的指针拖到最右边。 阈值参数调节继续拖动各B参数的最大值和最小值通道上的指针,尽量消除非红色像素点,得到最好的效果拖动A参数的最大值和最小值通道上的指 针,尽量消除非红色像素点,排除其余颜色的干扰。设计与实践镜头畸变的校正通过像素统计进行颜色检测调试、验证及完善程序镜头畸变的校正 摄像头会遇到镜头畸变的问题。根据近大远小的光学原理,在感光芯片的边缘位置会出现桶型畸变,成像中会产生鱼眼效果;在OpenAIE开源 算法库中,image对象提供了lens_corr()的方法,可以用来矫正2.8mm焦距镜头产生的边缘畸变 。校正后的形状追踪 im port sensor, image, time clock.tick() img = sensor.snapshot ().lens_corr(1.8) for c in img.find_circles(threshold = 2500, x_margin = 10, y_margin = 10, r_margin = 10, r_min = 2 , r_max = 100, r_step = 2): area = (c.x()-c.r(), c.y()-c.r (), 2c.r(), 2c.r())通过像素统计进行颜色检测 image.get_statistics() 方法,用于计算r oi中每个颜色通道的平均值、中值、标准偏差、最小值、最大值、下四分值和上四分值,并返回一个数据对象。也可以使用image.get_ stats来调用这一方法。如果传递 thresholds列表,则直方图信息将仅从阈值列表中的像素计算得出。利用get_statis tics统计的方法,可以计算出指定区域内占面积最大的颜色。 例程 #area为识别到的圆的区域,即圆的外接矩形框 sta tistics = img.get_statistics(roi=area)#像素颜色统计 print(statistic s) #(35, 72, 9, 80, 20, 72) 为红色的阈值, (53, 77, -56, -3, -7, 63)为绿色阈值,#(30, 82, -29, 39, -85, -3) 为蓝色阈值。检测时,当区域内的众数(也就是最多的颜色), 范围在这个阈值内,就说明是红色的圆。#l_mode()、a_mode()、b_mode()分别是L通道、A通道、B通道的众数。 if 35 nd 20 draw_circle(c.x(), c.y(), c.r(), color = (255, 0, 0)) eli f 53 _circle(c.x(), c.y(), c.r(), color = (0, 255, 0)) elif 30 atistics.b_mode()<-3:#识别到的蓝色圆形用蓝色的圆框出来 img.draw_circle (c.x(), c.y(), c.r(), color = (0, 0, 255)) else: #将非红绿蓝色的圆用白色的矩形框出来 img.draw_rectangle(area, color = (255, 255, 255))分析与思考如果利用get_statistics函数进行颜色检测的效果不理想,会有哪些原因?实际视 频采集环境对此会有什么影响吗?请加以分析,提升颜色追踪的效果。比较利用find_blobs和get_statistics方法进行颜 色检测的异同之处,思考各自适合哪些应用场合?编写Python程序进行尝试。所提供案例利用get_statistics、find_c ircles方法,先搜寻圆形目标,再分辨圆形区域的颜色。如果需要搜寻矩形和某种色块,应该如何设计程序?更进一步的需求,如果需要同时 对圆形与矩形,以及红绿蓝颜色进行追踪?请设计出解决流程,并尝试编程解决。综合拓展实践任务 图中的目标追踪机器人,包括2个舵机控制系统,实现摄像头云台的功能,可以驱动摄像头在水平和垂直两个方向转动,可以识别前方特定颜色的物品,并跟随目标物体而运动。参加项目实践,推动及形状自动追踪检测技术在智能校园中的进一步应用,如学校安全防护、学生健康、智慧校园等方面; |
|