赞
踩
齐护机器人 AIstart 颜色追踪实操详解教程
在很多情况下我们会让机器人追踪某个目标,比如通过目标的某个特性,如光,颜色,尺寸等,这里我们以追踪颜色块的方式来实现这个目的。
应用示例:颜色追踪技术的激光点追踪应用。
操作步骤:
软硬件:
采用的是齐护机器人的 K210(AIstart)主机,软件可以齐护编程或 Mixly 图形化软件,当然你也可以用支持 micropython 的其它软件进行代码编程的方式。
概念:
LAB 颜色模型:
Lab颜色模型是有国际照明委员会(CIE)于1976年公布的一种颜色模型,Lab颜色模型弥补了RGB和CMYK两种色彩模式的不足。Lab颜色模型由三个要素组成。一个要素是亮度(L),a 和是两个颜色通道。a包括的颜色是从深绿色(低亮度值)到灰色(中亮度值)再到亮粉红色(高亮度值);b是从亮蓝色(底亮度值)到灰色(中亮度值)再到黄色《高亮度值)。因此,这种颜色混合后将产生具有明亮效果的色彩。
L(Lightness):表示颜色的亮度,取值范围从0到100,其中0表示纯黑色,100表示纯白色。
a(Green-Red Axis):表示颜色的红绿色度,取值范围从-128到+127,其中-128表示绿色,+127表示红色。
b(Blue-Yellow Axis):表示颜色的黄蓝色度,取值范围从-128到+127,其中-128表示蓝色,+127表示黄色。
Lab色彩空间是一种与人眼感知颜色相关的色彩空间,可以用来描述任何一种颜色,包括明亮的颜色、暗淡的颜色、浅色和深色等等。它具有无视觉量纲的特点,也就是说,它的三个参数相对于人眼感知颜色的差异更加均匀和稳定,因此可以更好地描述颜色之间的差异和相似度。
在色差测量中,Lab色彩空间可以用来比较标准颜色和实际颜色之间的差异,以评估产品的色彩质量和一致性。同时,Lab色彩空间也被广泛应用于颜色管理、图像处理、设计等领域,以保证颜色的准确度和稳定性。
注:传入的颜色阈值参数按照 LAB 格式 (l_lo,l_hi,a_lo,a_hi,b_lo,b_hi)
l_lo,l_hi :L颜色值的设置,最高l_hi及最低l_lo的偏差范围,其它同理为 A-B 颜色模型值的上下偏差范围。
实操:
1, LAB 值采样:上传【35 颜色识别_识别采集图片中间框区域的颜色值】例程文件,如果是 Mixly 软件例程同理,记得最后打印或显示出来的 LAB 值不要转成 RGB 值,让其直接显示 LAB 值。
Micropython 源码:
import machine, sensor, lcd, image, image as pic img = 0 color = 0 mylist = 0 sensor.reset() sensor.set_pixformat(sensor.RGB565) sensor.set_framesize(sensor.QVGA) sensor.run(1) sensor.skip_frames(10) sensor.set_hmirror(0) sensor.set_vflip(0) lcd.init(freq=15000000,color=(0xff,0xff,0xff),invert = 0) mylist = [0,0,0] while True: # 从摄像头获取图象 img = sensor.snapshot() # 颜色识别 color = img.get_histogram(roi=[135,95,50,50]) # 保存颜色到列表 mylist[0] = color.get_percentile(0.5).l_value() mylist[1] = color.get_percentile(0.5).a_value() mylist[2] = color.get_percentile(0.5).b_value() # 画出检测区域 img = img.draw_rectangle([135,95,50,50],image.lab_to_rgb(mylist),1,False) # 画个方块用于显示检测到的颜色 img = img.draw_rectangle([270,0,50,50],image.lab_to_rgb(mylist),1,True) # 显示文本 img = img.draw_string(0, 0, (str('LAB:') + str(mylist)), scale=1, color=(0x00,0x00,0x00), x_spacing=1, y_spacing=1, mono_space=False) lcd.display(img)
2,摄像头中心要全覆盖要识别的颜色区,记录 LAB 值,如图:49,-23,14 得到当前色块的L值为49,A 值为-23,B 值为14。
3,设置 LAB 值的上下偏差,如 L 值49 我们设它的区间为2070之间,A值-23设置区间为-500之间,B 值14设置区间为0~40,这个区间越小说明精度超高,反之就识别要求更低,这个要根据用户的实际使用场景要求来设置。将上面的设置以数组的方式放入程序【34 颜色追踪_追踪采集图片中设定色域的颜色】例程文件中,如果是 Mixly 软件例程同理的 ,LAB 值处填入,如图,并将识别到色块区的显示框颜色设为红色或其它你喜欢的颜色。
Micropython 源码:
import machine, lcd, sensor, image img = 0 lcd.init(freq=15000000,color=(0x61,0x74,0x63),invert = 0) sensor.reset() sensor.set_pixformat(sensor.RGB565) sensor.set_framesize(sensor.QVGA) sensor.run(1) sensor.skip_frames(10) sensor.set_hmirror(0) sensor.set_vflip(0) while True: img = sensor.snapshot() for i in img.find_blobs([(20, 70, -50, 0, 0, 40)],roi=[0,0,320,240],area_threshold=10,pixels_threshold=10,merge=True,margin=10): img = img.draw_rectangle(i.rect(),(0xff,0x00,0x00),1,False) lcd.display(img)
4,上传程序运行,这时可以看到当识别到对应的采样LAB区,移动摄像头时,红色框会一直在色块边上,这样就成功追踪到颜色区了,如果你要设计外部机构得到这个框中心的坐标值,可以在程序把这个坐标输出去控制对应的机构。这样类似于定点跟踪,目标定位。。。。项目就可以用这种方式实现。
更多详细的关于 K210的应用可以到齐护机器人资料中心去查找学习!
结束!!祝您学习愉快!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。