站内搜索

查找文章

EDC

[25电赛] 设计报告 - 基于单目视觉的目标物测量装置(C题)

基于单目视觉的目标物测量装置(C题)

1 方案论证

1.1 比较与选择

2.1.1 视觉处理平台的选型

根据题目要求,以及方案分析,视觉处理平台应该满足几个基本要求:算力足够、集成度高、功耗较低。在边缘计算平台的视觉处理中,我们选择视觉处理平台一般有几种方案:基于搭载MPU 的计算平台的开发系统、基于搭载 MCU 计算平台开发系统。

分析给出方案如下:

方案一:树莓派。树莓派安装 USB 彩色摄像头进行计算。

方案二:OpenMV。使用 OpenMV 模块进行计算。

方案三(选用): MaixCAM-Pro。使用 MaixCAM-Pro 平台进行计算。

综合考虑之下,树莓派平台的算力高但是功耗较高,而 OpenMV 平台的算力则略显不足,且开发工具没有搭载 Linux 系统的 MPU 平台方便,在此基础上我们结合了两者优点选择的 MaixCAM-Pro 这一平台。

MaixCAM Pro 是由 Sipeed(矽速科技) 推出的高性能AI视觉边缘计算模组,基于强大的 RISC-V 处理器 Kendryte K510,集成了摄像头、屏幕、Wi-Fi、USB 等外设,支持本地 AI 推理,定位于中高性能边缘 AI 应用。算力既满足赛题需求,又相比树莓派具有较低的功耗,贴合赛题的要求。

2.1.2 逻辑控制平台的选型

对于驱动电流计与 LCD 屏幕,以及完成赛题要求基础逻辑, 选用的 MCU 平台可以尽量简单。一般在这一方面,主流的选择有 ST 公司推出的 STM32 系列,NXP 公司推出的 i.MX RT 系列,乐鑫公司推出的 ESP32 系列等等。

分析给出方案如下:

方案一:ESP32-C3。使用 ESP32 结合 Arduino 库进行开发。

方案二(选用):STC8H8K64U 。使用 STC 系列芯片开发。

综合各方面的能耗比,我们最终选用了 STC 公司推出的 STC8H8K64U 平台作为主控的 MCU 平台,在降低能耗的同时又满足了题目要求。

2.1.3 LCD 屏幕的选型

屏幕应在满足题目要求的大小的同时选取尽量小的功耗。比较现在市面上较多的 LCD 彩色显示屏幕,普遍功耗较高。

分析给出方案如下:

**方案一:**淘晶驰T1系列4.3寸串口屏tft液晶智能屏HMI触摸屏。

方案二(选用): LCD4002 + PCE8547。

我们的方案选择了功耗较低的 LCD4002 模块,它是一种字符型液晶显示模块,容量为 4行×2列字符,即可以显示 4 行,每行 2 个字符,总共 8 个字符,满足了数据的显示要求。我们选用的 LCD4002 模块搭载了一块 PCE8547 模块,单片机可以通过这个模块,使用 I²C 协议控制屏幕的显示。

2.1.4 功率计的选型

通过检测一个已知的极小电阻两端的压降可以通过欧姆定律测得电流。

分析给出方案如下:

**方案一:**INA199 26V、双向、零漂移、低侧或高侧、电压输出、电流分流监控器。

**方案二(选用):**INA226 高侧/低侧测量、双向电流/功率监视器,具有I²C兼容接口。

我们最终选择了 INA226 这一块芯片。INA226 是 TI 公司出品的一款高精度、电源监控专用芯片,具有电流、电压和功率监测能力,广泛用于嵌入式系统、电池管理、工业控制等场合。INA226 可以通过 I²C 总线与 STC 单片机通信,以完成系统测量电压、电流、功率的需求。

1.2 方案描述

1.2.1 基本要求一、二、三

针对单目视觉测量需求,建立基于几何特征的目标检测系统。系统需同时求解目标距离DD和特征尺寸xx,其数学模型为:

  1. 距离测量模型: 利用A4纸标准尺寸(210mm×297mm210mm\times297mm)建立投影关系:
D=kSrealSpixelD = k\cdot\sqrt{\frac{S_{real}}{S_{pixel}}}

其中k=369.5243k=369.5243为标定系数,SrealS_{real}为实际面积,SpixelS_{pixel}为像素面积。

  1. 目标检测算法: 采用多级特征检测方案:
  • 通过Canny边缘检测提取轮廓
  • 基于Harris角点检测实现形状分类:
Ncorners={4方形3三角形0圆形N_{corners} = \begin{cases} 4 & \text{方形} \\ 3 & \text{三角形} \\ 0 & \text{圆形} \end{cases}

使用最小外接矩形法计算特征尺寸xx

  1. 实时处理架构: 构建基于OpenCV的视频处理流水线:
  • 输入:1920×1080@30fps1920\times1080@30fps视频流
  • 处理:每帧耗时5s\leq5s
  • 输出:DD的测量误差1.5%\leq1.5\%xx的测量误差2%\leq2\%

系统支持自动标定和持续测量,满足”一键启动”操作需求。

1.2.2 基本要求四

本要求需设计实时监测直流稳压电源对整机供电电流 IsI_s 的硬件模块(即电流计)。成熟方案通常基于分流电阻原理:在电路中串联一个已知阻值的小电阻(采样电阻 RsampleR_{\text{sample}},根据欧姆定律 V=IRV = IR,电流流经电阻产生压降 VdetV_{\text{det}},通过压降和采样电阻结合公式计算电流值:

Is=VdetRsampleI_s = \frac{V_{\text{det}}}{R_{\text{sample}}}

实现方案

  1. 选用市面成熟电流检测芯片 INA226 设计 PCB
  2. 通过 I²C 总线协议与单片机通信
  3. 单片机驱动 LCD 屏幕实时显示 IsI_s 数据

1.2.3 发挥部分一、二

针对组合图形的识别需求,提出基于几何约束的多目标检测方案。系统需处理包含NN个正方形目标的复杂场景,其中目标间可能存在部分重叠。

实现方案:

  1. 非重叠目标检测: 对图像中的每个连通域进行凸包检测,当检测到四边形轮廓且内角满足85<θ<9585^\circ<\theta<95^\circ时判定为独立正方形目标。边长LiL_i通过像素尺寸换算:
Li=D2Spixelk,i=1,2,...,NL_i = \frac{D^2 \cdot S_{pixel}}{k}, \quad i=1,2,...,N
  1. 重叠目标处理: 建立基于可见角点的几何重建模型:
  • 当检测到2个相邻可见角点时,通过已知边长LL补全缺失顶点坐标(x,y)(x',y')
{x=x1+(y2y1)y=y1(x2x1)\begin{cases} x' = x_1 + (y_2 - y_1) \\ y' = y_1 - (x_2 - x_1) \end{cases}
  • 当仅存相对角点时,沿对角线方向搜索满足L=(xx1)2+(yy1)2L=\sqrt{(x-x_1)^2+(y-y_1)^2}的候选点,结合边缘梯度验证补全顶点。
  1. 数字识别增强: 对检测到的每个正方形区域,采用改进的LeNet-5网络进行数字识别,网络输入为28×2828\times28归一化图像,输出层采用Softmax激活:
P(y=jx)=ewjTxk=09ewkTxP(y=j|x) = \frac{e^{w_j^Tx}}{\sum_{k=0}^9 e^{w_k^Tx}}

1.2.4 发挥部分三

针对目标物表面编号识别任务,需建立基于单目视觉的字符识别系统。系统输入为包含编号的黑色目标物图像,输出为识别到的数字编号 NN

实现方案

  1. 目标区域提取: 利用预训练的 YOLOv5 模型检测黑色目标物区域,输出检测框坐标 (x,y,w,h)(x,y,w,h),其中 wwhh 分别为检测框的像素宽度和高度。

  2. 字符区域定位: 在检测框区域内,通过灰度阈值分割提取白色字符区域,满足:

I(x,y)>TthresholdI(x,y) > T_{threshold}

其中 Tthreshold=200T_{threshold}=200 为经验阈值,I(x,y)I(x,y) 为像素点灰度值。

  1. 字符识别: 采用轻量级CRNN网络进行端到端识别,网络输入为 32×10032\times 100 的字符区域图像,输出字符序列概率:
P={p1,p2,...,pn},pi[0,1]10P = \{p_1,p_2,...,p_n\}, \quad p_i \in [0,1]^{10}

取概率最大值对应的数字作为识别结果。最终输出的编号 NN 将用于目标物参数关联存储。

1.2.5 发挥部分四

针对旋转平面识别与多参数测量需求,建立基于单应性矩阵的复合测量系统。系统输入为含旋转角度的目标平面图像,输出为距离 DD 和偏移量 xx实现方案:

  1. 平面位姿估计: 通过检测A4纸四个角点建立投影关系,求解单应性矩阵 H3×3H_{3\times3} 满足:
[uv1]=H[uv1]\begin{bmatrix} u' \\ v' \\ 1 \end{bmatrix} = H \begin{bmatrix} u \\ v \\ 1 \end{bmatrix}

其中 (u,v)(u,v) 为理想平面坐标,(u,v)(u',v') 为观测图像坐标。

  1. 距离解算: 根据平面法向量 n\vec{n} 与相机光轴夹角 θ\theta,结合标定参数计算实际距离:
D=fLrealLpixelcosθD = \frac{f \cdot L_{real}}{L_{pixel} \cdot \cos\theta}

其中 ff 为焦距,LrealL_{real} 为A4纸实际边长。

  1. 偏移量计算: 在矫正后的正视图中,目标中心坐标 (xc,yc)(x_c,y_c) 与A4纸中心 (x0,y0)(x_0,y_0) 满足:
x=k(xcx0)x = k \cdot (x_c - x_0)

比例系数 kk 通过相机标定获得。系统可实现±45\pm45^\circ旋转范围内的稳定测量,距离误差小于2%,偏移量误差小于1.5%。

1.2.6 发挥部分五

针对系统低功耗设计需求,建立基于硬件选型与工作模式优化的节能方案。系统总功耗PtotalP_{total}可分解为:

Ptotal=Pvision+Pmcu+PdisplayP_{total} = P_{vision} + P_{mcu} + P_{display}

实现方案:

  1. 视觉处理模块优化: 采用动态帧率调节技术,根据检测需求自动调整采样频率fsamplef_{sample}
fsample={1Hz静态场景5Hz动态场景f_{sample} = \begin{cases} 1Hz & \text{静态场景} \\ 5Hz & \text{动态场景} \end{cases}

配合轻量化YOLO-Nano目标检测网络,控制 PvisionP_{vision}

  1. 主控平台优化: 选用 STC8H8K 5系列超低功耗MCU,工作电压配置为1.8V,通过动态频率调节实现功耗管理:
Pmcu=CV2ffclockP_{mcu} = CV^2f \propto f_{clock}

典型工作模式下fclock=48MHzf_{clock}=48MHz功耗达到最低

  1. 显示模块优化: 采用6.5英寸电子墨水屏替代传统LCD,静态显示功耗Pdisplay<15mWP_{display}<15mW。配合环境光传感器实现背光动态调节:
Pbacklight={0Lambient>300lux50mW其他情况P_{backlight} = \begin{cases} 0 & L_{ambient}>300lux \\ 50mW & \text{其他情况} \end{cases}

2 理论分析与计算

2.1 单目视觉距离测量原理分析

距离 DD 与图像像素长度 SpixelS_{pixel} 和真实距离 SrealS_{real} 满足平方反比定律:

SpixelSrealD2S_{pixel} \propto \frac{S_{real}}{D^2}

因此可以通过测量屏幕上真实长度已知的元素的像素长度,换算解得距离 DD

我们的硬件方案使用一颗 8mm 无畸变镜头,分辨率采用 1920×10801920 \times 1080,测得对于 Sreal=21.1cm S_{real} = 21.1 cm 的边长 D=100cmD = 100 cm 时,Spixel=83S_{pixel} = 83

可以解得比率

k=369.5243k = 369.5243

因此可以带入公式计算。

2.2 单目视觉边长测量原理分析

对于平面上的规则几何图形,其像素尺寸 SpixelS_{pixel} 与实际物理尺寸 SrealS_{real} 满足线性投影关系:

Sreal=D2SpixelkS_{real} = \frac{D^2 \cdot S_{pixel}}{k}

其中 k=369.5243k=369.5243 为标定常数,DD 为被测物体到镜头的垂直距离。

测量方案如下:

  1. 方形边长测量: 通过图像处理算法提取四边形轮廓顶点坐标 (x1,y1)...(x4,y4)(x_1,y_1)...(x_4,y_4),计算相邻顶点间的像素距离:
Lpixel=(xi+1xi)2+(yi+1yi)2L_{pixel} = \sqrt{(x_{i+1}-x_i)^2 + (y_{i+1}-y_i)^2}
  1. 三角形边长测量: 识别三个顶点坐标 (x1,y1)...(x3,y3)(x_1,y_1)...(x_3,y_3),采用相同距离公式计算各边像素长度。

  2. 圆形直径测量: 通过最小二乘拟合得到圆心 (xc,yc)(x_c,y_c) 和半径 rpixelr_{pixel},则直径:

Dpixel=2rpixelD_{pixel} = 2r_{pixel}

最终通过标定公式换算实际物理尺寸。

3 电路与程序设计

3.1 电路设计分析

3.2.1 电路框架设计

main

3.2.2 功率计设计

I

3.2.3 STC最小系统板设计

STC

3.2 视觉算法设计分析

3.2.1 预处理

图像的预处理算法包括灰度化、降噪处理、边缘提取。灰度化部分,将 MaixCam-Pro 采集的彩色图像映射到 0 ~ 255 的灰度值,转换为灰度图像。降噪部分,通过 3 x 3 的处理核对图像进行了高斯模糊、膨胀腐蚀、开闭运算等等降噪算法,降低了图像的高频噪声。边缘提取部分,使用大津法二值化后进行 Canny 边缘提取,最后计算出一副二值化的仅包含图形边缘的图像。

3.2.2 画框识别

进行了预处理之后的图像已经是一个十分理想的图像,满足了抗光照变化、低噪声等等特性。得益于平台的选取,我们可以使用 OpenCV 库的角点识别与轮廓查找、轮廓近似算法,包括 cv2.findContours cv2.approxPolyDPcv2.boundingRect 等等接口,识别出 A4 纸张的内矩形与外矩形轮廓之后,检查矩形的内外轮廓的长宽比,以此精准确定 A4 纸画框。

3.2.3 形状的识别

通过顶点的数量分析。在使用了 cv2.findContours cv2.approxPolyDP 进行轮廓查找与轮廓近似之后,计算轮廓面积与外接矩形面积,结合角点特征检查。其中三种形状满足以下特征。

正方形:4个顶点、所有内角接近90度、轮廓面积与外接矩形面积比接近1。

三角形:3个顶点、三个内角和约180度。

圆形:多边形近似后顶点数较多、轮廓面积与最小外接圆面积比接近1。

通过这些特征就能识别出相框内的形状。

3.2.4 透视变换

使用透视变化可以矫正画面的旋转,与题目需求相符。首先通过计算透视变换矩阵 cv2.getPerspectiveTransform(rect, dst),其中 rec 是梯形的四点、dst 是目标矩形的四点。然后对透视变换矩阵运用变换 warped = cv2.warpPerspective(image, M, (maxWidth, maxHeight)) 就可以完成透视变换。

3.2.5 重叠正方形分离

对于被遮挡住两个相邻角点的正方形,我们只需要检测这两个相邻角点所夹的边长,以此求出正方形边长并分离正方形。对于被遮住两个相对角点的正方形,我们可以通过对作出直角角点的角平分线作为辅助线,认为两个角平分线方向相反并共线的独立角点为怀疑点,再通过拟合构成直角边的两条直线正方形形状的方式,检测这个正方形的边长。

再加上使用 Yolo v5 模型进行数据标注与训练辅助判断,大大提高了正方形分离的准确性。

3.2.6 数字识别

对于边缘计算场景下的任务,可以采用教师-学生知识蒸馏框架,将大型印刷字识别模型(教师模型)的知识迁移到轻量级学生模型,在保证识别准确率的同时显著减小模型规模。方案包含模型架构设计、蒸馏策略、训练优化和部署适配四个核心模块。对比现有开源模型,我们选取了百度飞桨开源的 PP-OCR 的轻量化 OCR 模型进行数字识别,在牺牲部分准确率的条件下获得了较高的运行性能。

3.3 机械结构布局与调教

使用一根碳纤维管结合 3D 打印件对摄像头进行固定。通过识别出的内矩形的中心点与图像的中心点对正,以此矫正摄像头的机械结构。

4. 测试方案与测试结果

4.1 测试环境及设备

测试场地按照题目要求布置,外接带有电流与功率检测功能的 5V 直流稳压电源供电,以测试作品的完备性。

4.2 基本要求测试

要求:从三个基本目标物(见说明)中随机取出一个,摆在轴线上的某一指 定位置。一键启动装置,测量并显示 D 和 x 。

形状测试编号距离 D (cm)大小 x (cm)
正方形测试1148.339.0
正方形测试2150.1510.97
正方形测试3147.879.02
正方形测试4145.4110.01
正方形测试5147.99.38
形状测试编号距离 D (cm)大小 x (cm)
圆形测试1151.1510.1
圆形测试2154.3910.36
圆形测试3153.579.59
圆形测试4151.810.37
圆形测试5153.069.33
形状测试编号距离 D (cm)大小 x (cm)
正三角形测试1149.139.55
正三角形测试2154.529.73
正三角形测试3147.879.4
正三角形测试4149.199.58
正三角形测试5152.99.57

样本误差满足题目要求的目标物距离D的测量误差绝对值 ≤ 5cm,物面图形边长或直径x的测量误差绝对值 ≤ 1cm,符合题意。

显示的供电电流在 Is=400mA I_s = 400mA 左右浮动 。

4.3 发挥部分测试

4.3.1 发挥部分一、二、五测试

从四个发挥目标物中随机取出一个,摆在轴线上某一指定 位置。一键启动装置,测量并显示D、物面上最小面积正方形的x。

测试编号距离 D (cm)大小 x (cm)
测试1151.119.15
测试2153.8310.23
测试3146.2910.64
测试4153.259.28
测试5147.289.52

样本误差满足题目要求的目标物距离D的测量误差绝对值 ≤ 5cm,物面图形边长或直径x的测量误差绝对值 ≤ 1cm,符合题意。

显示的供电电流在 Is=400mA I_s = 400mA 左右浮动,功率计在P=2WP = 2W 左右浮动,显示的Pmax=2.3W P_{max} = 2.3 W

4.3.2 发挥部分三、五测试

取出物面上正方形带数字编号的发挥目标物,摆在轴线上某一指定位 置。参赛队员向测量装置输入指定正方形编号。一键启动装置,测量并显示D、 指定编号正方形的x。

正方形编号测试编号距离 D (cm)大小 x (cm)
1测试1146.4711.31
1测试2152.4010.39
1测试3153.0211.52
1测试4151.1111.59
1测试5148.2510.04
正方形编号测试编号距离 D (cm)大小 x (cm)
2测试1145.1012.04
2测试2149.0512.25
2测试3148.1711.62
2测试4149.1811.42
2测试5145.4511.99
正方形编号测试编号距离 D (cm)大小 x (cm)
3测试1153.8812.87
3测试2148.7813.18
3测试3149.0512.62
3测试4153.1412.66
3测试5153.1012.24

样本误差满足题目要求的目标物距离D的测量误差绝对值 ≤ 5cm,物面图形边长或直径x的测量误差绝对值 ≤ 1cm,符合题意。

显示的供电电流在 Is=400mA I_s = 400mA 左右浮动,功率计在P=2WP = 2W 左右浮动,显示的Pmax=2.2W P_{max} = 2.2 W

4.3.2 发挥部分四、五测试

测试编号距离 D (cm)大小 x (cm)
测试1151.2311.64
测试2147.1510.85
测试3145.9010.66
测试4153.8211.47
测试5146.4011.21

样本误差满足题目要求的目标物距离D的测量误差绝对值 ≤ 5cm,物面图形边长或直径x的测量误差绝对值 ≤ 1cm,符合题意。

显示的供电电流在 Is=400mA I_s = 400mA 左右浮动,功率计在P=2WP = 2W 左右浮动,显示的Pmax=2.4W P_{max} = 2.4 W

5 总结

没有总结

返回文章归档