第二章-基础知识准备
非常详细的视频和文字教程,讲解常见的openmv教程包括 巡线、物体识别、圆环识别、阈值自动获取等。非常适合学习openmv、K210、K230等项目
视频合集链接在:
openmv教程合集 openmv入门到项目开发 openmv和STM32通信 openmv和opencv区别 openmv巡线 openmv数字识别教程LCD
2.1 python基础知识
通过网站学习(有C语言基础)
根据菜鸟教程网站学习,跟着网站敲一遍代码或者仔细看一遍 有印象就行
链接:https://www.runoob.com/python/python-tutorial.html
跟着视频学习(无其他语言基础)
如果没有编程语言基础可以跟着小甲鱼视频教程学习,学习到 大概函数就够用了。
【Python教程】《零基础入门学习Python》最新版(完结撒花🎉)_哔哩哔哩_bilibili
2.2 图像处理背景知识
什么是摄像头
下图是我们生活中常见的摄像头
摄像头 是一种将光学信号变成电信号的一个装置。在计算机视觉中,最简单的相机模型是小孔成像模型。
小孔模型是一种理想相机模型,没有考虑实际相机中存在的场曲、畸变等问题。但是在实际使用时,这些问题可以通过在标定的过程中引入 畸变参数 解决,所以小孔模型仍然是目前最广泛使用的相机模型。
图像透过镜头,照在一个感光芯片上,感光芯片可以把光照的波长和强度等信息转成计算机(数字电路)可以识别的数字信号。
(注意: 一定不要给我们的图像感光芯片CMOS 弄上 灰尘或者指纹)
如果弄脏了,可以淘宝搜:CMOS清洁棒套装 然后购买套装去清洁一下。
什么是像素和分辨率
感光元件是有很多个感光点构成的,比如有640480个点,每个点就是一个像素,把每个点的像素收集整理起来,就是一副图片,那么这张图片的分辨率就是640480。
什么是帧率
帧率(FPS)就是每秒钟处理的图片数量,如果超过20帧,人眼就基本分辨不出卡顿。当然,如果用在机器上,帧率是越高越好的,OpenMV的最大帧率对比:
注:没有标注均为不传输图像给IDE,因为这个过程很耗费时间。
分辨率与处理性能的权衡: 分辨率越高,处理的计算量越大,可能影响帧率和实时性。在实际应用中,要根据场景和硬件挑选适合的分辨率。
什么是颜色
物理上,颜色就是不同波长的电磁波。
但是,根据人眼的视觉效果,可以通过 RGB,CMYK,HSB,LAB 色域,来将可见光的颜色描述出来。
RGB 三原色
三原色的原理不是物理原因,而是由于人的生理原因造成的。人的眼睛内有几种辨别颜色的锥形感光细胞,分别对黄绿色、绿色和蓝紫色(或称紫罗兰色)的光最敏感(波长分别为564、534和420纳米)。
所以 RGB 经常用于显示器上,用来显示图片。
LAB亮度-对比度
Lab颜色空间中,L亮度;a的正数代表红色,负端代表绿色;b的正数代表黄色,负端代表兰色。不像RGB和CMYK色彩空间,Lab颜色被设计来接近人类视觉。
因此L分量可以调整亮度对,修改a和b分量的输出色阶来做精确的颜色平衡。
(注意:在OpenMV的查找色块的算法中,运用的就是这个LAB模式!)
光源的选择
如果你的机器是在工业上,或者24小时长时间运行的设备,保持一个稳定的光源是至关重要的,尤其在颜色算法中。亮度一变,整个颜色的值会变化的很大!
所以无论完成的项目是商业工业项目或者比赛项目,都应该注意光源对摄像头的影响,后面我们会讲解如何通过补光或者调节阈值完成 不同光源或者环境的适应。
镜头的焦距
因为图像是通过镜头的光学折射,照到感光元件上的。那么镜头就决定了,整个画面的大小和远近。一个最重要的参数就是焦距。
还有一点是镜头的畸变,因为光学原理,在感光芯片上不同的位置,与镜头的距离不同的,简单说就是近大远小,所以在边缘会出现鱼眼效果(桶型畸变)。为了解决这个问题,可以在代码中使用算法来矫正畸变,注:OpenMV中使用image.lens_corr(1.8)来矫正2.8mm焦距的镜头(一般我们openmv摄像头都是2.8mm焦距的)。也可以直接使用无畸变镜头。无畸变镜头加入了额外的矫正透镜部分,价格自然会高不少。
一般在一下特殊场景可以使用对应摄像头:
广 角 摄 像 头: 广角摄像头拥有更大的视野,能够捕捉更多的场景信息,适合需要覆盖较大范围的应用场景。
适合场景: 机器人导航获得更多周围信息、监控录制 减少监控盲区、比如小车跟着小球或者小车抓取地上垃圾。
无畸变摄像头: 无畸变摄像头优化了广角摄像头的畸变问题,提供更加真实的图像。
适合场景:测量物体尺寸等。
长焦摄像头: 长焦摄像头能够捕捉远距离的细节信息,适合目标距离较远的应用场景。
适合场景:识别远距离物体,需要对物体放大识别,比如2023电赛E题 识别远处的黑色框。
下图是 如何给openmv 更换长焦镜头(更换其他镜头也是一样操作)。
镜头的滤片
在镜头上,通常会有一个滤片
这个滤片是做什么的呢?
我们知道,不同颜色的光,是波长不一样。在正常环境中,除了可见光,还有很多红外光,在夜视中,用的就是红外光。
但是,在正常颜色应用中,是不需要红外光的,因为红外光也会使感光元件受到反应,就使得整个画面泛白。所以我们在镜头上放一个只能通过波长 650nm 以内的滤光片,将红外光进行过滤。