0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于凌智视觉识别模块的基于单目视觉的目标物测量装置

福州市凌睿智捷电子有限公司 2025-07-31 15:35 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

1. 视觉测量整体方案

本视觉测量系统采用单目视觉技术实现目标物距离和几何尺寸的双重测量。系统首先通过深度学习模型(PaddleDetection)快速定位目标物(带黑框的A4纸),利用目标物在图像中的像素高度与物理距离的二次函数关系,解算目标到基准线的距离D。该函数模型通过实验标定获得,测量范围100-200cm,精度达±2cm。

对于内部几何尺寸测量,系统创新性地采用中心区域聚焦策略:在检测到的目标区域内,自动裁剪中心80%区域排除边框干扰,通过自适应阈值处理和形态学滤波增强几何特征。随后提取四边形轮廓,基于图像中心优选算法锁定目标几何图形,最后利用A4纸标准尺寸(210×297mm)与像素尺寸的比例关系,精确换算内部几何图形的实际边长x,测量误差≤0.6cm。

系统严格满足竞赛实时性要求,从图像采集到结果显示完整流程耗时<1s。关键创新点包括:1)动态阈值窗口技术,根据目标尺寸自动调整处理参数;2)几何特征三级过滤机制(顶点数/宽高比/中心距离);3)松耦合模块化设计,为后续扩展三角形/圆形测量预留接口。整套方案在200-1000lux照度下稳定工作,已通过基本要求三项测试验证。

2. 核心算法实现

2.1 目标检测模块

模型选择:采用PaddleDetection深度学习框架。

检测对象:A4纸目标物(带2cm黑色边框)。

关键参数:model.SetThreshold(0.7, 0.3);

输出:检测到的A4纸位置。

2.2 距离测量算法

距离测量基于目标物高度像素值与实际距离的二次函数关系,具体的实现代码如下:

doublereverseToDistance(doubley){ // 构造方程:a*x^2 + b*x + (c - y) = 0 doubleA=a; doubleB=b; doubleC=c - y; doublediscriminant=B * B -4* A * C; // 判别式小于0,无实数解 if(discriminant < 0) {        return -1.0; // 表示无效解    }    double sqrt_d = std::sqrt(discriminant);    double x1 = (-B + sqrt_d) / (2 * A);    double x2 = (-B - sqrt_d) / (2 * A);    // 选择在合理范围 [1.0, 2.0] 内的解    bool x1_valid = (x1 >=1.0&& x1 <= 2.0);    bool x2_valid = (x2 >=1.0&& x2 <= 2.0);    if (x1_valid && x2_valid) {        // 如果两个解都有效,选择更接近趋势的(通常 x2 更小,x1 更大,看哪个更合理)        // 实际上由于 a > 0, b < 0,通常 x2 是更合理的(较小的根)        // 但根据抛物线形状,我们取更靠近数据趋势的        // 可以打印调试,但通常取接近 1.0~2.0 之间的        return x2; // 通常 x2 是物理意义正确的(递减趋势)    } else if (x1_valid) {        return x1;    } else if (x2_valid) {        return x2;    } else {        return -1.0; // 无有效解    }}

物理原理:目标物表观尺寸与距离成反比。

标定方式:通过实验数据拟合参数

3. 几何特征提取流程

几何特征提取是视觉测量系统的核心环节,采用多级处理流程确保测量精度。系统首先在目标检测获取的A4纸区域内,动态裁剪中心80%区域以排除2cm黑色边框干扰,随后进行自适应二值化处理:基于目标尺寸自动计算阈值窗口(取目标短边的1/4且保证为奇数),采用高斯加权模式增强内部几何图形与背景的对比度。该自适应策略能有效应对100-200cm距离范围内目标表观尺寸的变化。

轮廓处理阶段采用三级过滤机制:先通过形态学闭运算消除噪点,再提取所有潜在轮廓;然后执行严格几何验证:1) 多边形逼近顶点数必须为4(四边形) 2) 宽高比限制在0.5-2.0范围 3) 轮廓面积大于40像素。最终通过中心优选算法:计算各轮廓点到图像中心的欧氏距离,选取距离平方和最小的轮廓作为目标几何图形,该策略可有效减少透视畸变影响,确保在物面平行于成像平面时获得最优测量结果。

部分核心代码如下:

// 提取 ROIcv::Matroi_frame =input_mat(safe_box);if(roi_frame.empty())continue;// 转灰度并二值化提取黑色区域cv::Matroi_gray, roi_binary;cv::cvtColor(roi_frame, roi_gray, cv::COLOR_BGR2GRAY);// 关键修改1:使用自适应阈值处理中心区域intblock_size = std::min(safe_box.width, safe_box.height) /4;if(block_size %2==0) block_size++; // 确保为奇数cv::adaptiveThreshold(roi_gray, roi_binary,255, cv::ADAPTIVE_THRESH_GAUSSIAN_C, cv::THRESH_BINARY_INV, block_size,5);// 关键修改2:创建中心区域ROI(忽略边缘黑边)intmargin = std::min(safe_box.width, safe_box.height) /5; // 忽略20%的边缘区域cv::Rectcenter_roi(margin, margin, roi_binary.cols -2* margin, roi_binary.rows -2* margin);if(center_roi.width <= 0 || center_roi.height <= 0) continue;cv::Mat roi_center = roi_binary(center_roi);// 形态学操作去噪cv::Mat kernel =    cv::getStructuringElement(cv::MORPH_RECT, cv::Size(5, 5));cv::morphologyEx(roi_center, roi_center, cv::MORPH_CLOSE, kernel);// 查找轮廓(仅在中心区域)std::vectorvectorPoint>> contours;cv::findContours(roi_center, contours, cv::RETR_EXTERNAL, cv::CHAIN_APPROX_SIMPLE);

4. 尺寸计算原理

目标物的尺寸计算原理是基于相似理论的比例来进行换算的,核心代码如下:

// A4纸实际尺寸(毫米)constdoubleA4_WIDTH_MM =210.0;constdoubleA4_HEIGHT_MM =297.0;cv::Rect a4_rect = results[0].box;doublea4_width_px = a4_rect.width;doublea4_height_px = a4_rect.height;// 计算实际尺寸比例doublescale_x = A4_WIDTH_MM / a4_width_px;doublescale_y = A4_HEIGHT_MM / a4_height_px;// 计算内部矩形的实际尺寸(单位:毫米)doubleinner_width_mm = inner_width_px * scale_x;doubleinner_height_mm = inner_height_px * scale_x;doubleinner_length_mm = ((inner_width_mm + inner_height_mm) /2) +5;inner_length_cm = inner_length_mm /10.0;// 转换为厘米

5. 性能评估

处理速度:平均推理时间:<100ms,端到端延迟:<1s

测量精度:

参数要求精度实测精度
距离D<= 5cm<= 2cm
边长x<= 1cm<= 0.6cm

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 测量
    +关注

    关注

    10

    文章

    5786

    浏览量

    117112
  • 视觉识别
    +关注

    关注

    3

    文章

    111

    浏览量

    17418
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    基于SoC的双目视觉ADAS解决方案

    相比于目视觉,双目视觉(Stereo Vision)的关键区别在于可以利用双摄像头从不同角度对同一目标成像,从而获取视差信息,推算目标距离
    发表于 11-05 03:46 3749次阅读

    基于SoC的双目视觉ADAS解决方案

    `相比于目视觉,双目视觉(Stereo Vision)的关键区别在于可以利用双摄像头从不同角度对同一目标成像,从而获取视差信息,推算目标
    发表于 08-12 15:15

    3D视觉测量原理

    其使用的算法复杂。被动测距按照使用的视觉传感器数量可分为目视觉、双目立体视觉和多目视觉三大类。  (1)
    发表于 12-01 15:08

    怎么实现目视觉车道偏离报警系统的设计?

    怎么实现目视觉车道偏离报警系统的设计?
    发表于 05-13 06:06

    目视觉SLAM仿真系统的设计与实现

    实现目视觉同时定位与建图(SLAM)仿真系统,描述其设计过程。该系统工作性能良好,其SLAM算法可扩展性强,可以精确逼近真实目视觉SLAM过程。以方便SLAM算法的研究为
    发表于 04-15 08:50 82次下载

    基于目视觉的智能车辆视觉导航系统设计

    本文设计了一种精度高,稳定性好的基于目视觉的车载追尾预警系统。它利用一种新的边缘检测算法识别前方道路,然后利用阴影检测与跟踪相结合的方法识别前方车辆,接下来根据
    发表于 10-24 16:00 2914次阅读
    基于<b class='flag-5'>单</b><b class='flag-5'>目视觉</b>的智能车辆<b class='flag-5'>视觉</b>导航系统设计

    一种基于图像处理的双目视觉校准方法

    目视觉是利用机器视觉进行障碍检测的研究热点。针对双目视频不同步,导致立体匹配不精准的问题,提出了一种基于图像处理的双目校准算法。算法首先根据道路的先验特征模型,建立
    发表于 12-18 16:26 34次下载

    目视觉在棒料全自动上下料系统中的应用_吴高德

    目视觉在棒料全自动上下料系统中的应用_吴高德
    发表于 03-19 11:41 1次下载

    目视觉车道线识别算法及其ARM实现

    目视觉车道线识别算法及其ARM实现
    发表于 09-24 11:38 6次下载
    <b class='flag-5'>单</b><b class='flag-5'>目视觉</b>车道线<b class='flag-5'>识别</b>算法及其ARM实现

    基于SIFT视觉词汇的目标识别算法

    针对被局部遮挡目标识别困难的问题,将目标图像的SIFT( Scale Invariant Feature Transform)特征矢量作为视觉单词,应用
    发表于 11-14 11:04 5次下载
    基于SIFT<b class='flag-5'>视觉</b>词汇的<b class='flag-5'>目标识别</b>算法

    目视觉识别的无限市场潜力

    目来说物体越远,测距的精度越低,硬件上的缺点可以通过算法去弥补,近日有两篇关于目视觉的研究论文曝光,一篇是目视频的深度估计,另一篇则
    的头像 发表于 12-01 11:13 4547次阅读

    目视觉简介及算法一般流程

    1.1. 双目视觉简介 双目视觉广泛应用在机器人导航,精密工业测量、物体识别、虚拟现实、场景重建,勘测领域。 什么是双目视觉? 双
    的头像 发表于 10-23 09:51 1.4w次阅读
    双<b class='flag-5'>目视觉</b>简介及算法一般流程

    基于激光雷达信息与目视觉信息的车辆识别方法

    采用单一传感器识别前方车辆易造成误判,为了提高检测准确率,提出了一种基于激光雷达信息和目视觉信息的车辆识别方法,该方法综合考虑了激光雷达传感器和
    的头像 发表于 11-03 20:56 1502次阅读

    双目立体视觉是什么?目视觉与双目立体视觉的区别?

    双目更多的是基于物理测量,而目视觉则是基于逻辑推理,通过大量的数据训练,先识别目标,再根据目标
    发表于 08-17 09:40 6391次阅读
    双目立体<b class='flag-5'>视觉</b>是什么?<b class='flag-5'>单</b><b class='flag-5'>目视觉</b>与双目立体<b class='flag-5'>视觉</b>的区别?

    基于LockAI视觉识别模块:C++目标检测

    本文档基于瑞芯微RV1106的LockAI视觉识别模块,通过C++语言做的目标检测实验。本文档展示了如何使用lockzhiner_vis
    的头像 发表于 06-06 13:56 1077次阅读
    基于LockAI<b class='flag-5'>视觉</b><b class='flag-5'>识别</b><b class='flag-5'>模块</b>:C++<b class='flag-5'>目标</b>检测