双目标定与生成深度图

news/2025/2/7 16:14:59/

基于C#联合Halcon实现双目标定整体效果

一,标定

1,标定前准备工作 (获取描述文件与获取相机参数)

针对标准标定板可以直接调用官方提供描述文件,也可以自己生成描述文件后用PS文件打印

2,相机标定

(获取标定信息通过find_calib_object将标定信息添加到calibDataID中,通过“获取最终标定信息”将左相机,右相机,设置的参考位姿进行信息整合)其原理与前面单相机标定原理一样,单相机标定可以参考:如何做一个C#仿Halcon Calibration插件-CSDN博客

多相机标定可以参考Halcon 多相机统一坐标系(标定)_多相机标定统一坐标系-CSDN博客

3,显示相机标定信息

(双目标定用到的参数:左相机参数,右相机参数,右相机相对位姿这三组参数,其他为辅助鉴定标定效果)

二,验证

1,通过标定板图像进行数据验证

    RowsL := []ColsL := []RowsR := []ColsR := []for I := 1 to NumImages by 1select_obj (ImagesRectL, ImageRectifiedL, I)select_obj (ImagesRectR, ImageRectifiedR, I)find_caltab (ImageRectifiedL, CaltabL, CaltabFile, SizeGauss, MarkThresh, MinDiamMarks)find_marks_and_pose (ImageRectifiedL, CaltabL, CaltabFile, RectCamParL, StartThresh, DeltaThresh, MinThresh, Alpha, MinContLength, MaxDiamMarks, RCoordL, CCoordL, StartPoseL)find_caltab (ImageRectifiedR, CaltabR, CaltabFile, SizeGauss, MarkThresh, MinDiamMarks)find_marks_and_pose (ImageRectifiedR, CaltabR, CaltabFile, RectCamParR, StartThresh, DeltaThresh, MinThresh, Alpha, MinContLength, MaxDiamMarks, RCoordR, CCoordR, StartPoseR)RowsL := [RowsL,RCoordL]ColsL := [ColsL,CCoordL]RowsR := [RowsR,RCoordR]ColsR := [ColsR,CCoordR]endforX := RowsR - RowsLEpipolarError := [mean(X),deviation(X)]

2,通过生成深度图像进行验证

2.1),加载图像并进行校正效果

map_image (Image, Map, ImagesRect)

2.2)生成深度图像与分值图像

binocular_distance (ImageRectifiedL, ImageRectifiedR, DistanceImage, ScoreImageDistance, RectCamParL, RectCamParR, RectLPosRectR, 'ncc', MaskWidth, MaskHeight, TextureThresh, MinDisparity, MaxDisparity, NumLevels, ScoreThresh, 'left_right_check', 'interpolation')

通过外部参数修改生成的深度图像效果

拟合平面,优化图像并获取最终高度范围内图像

图像优化可以参Halcon深度图高度测量


http://www.ppmy.cn/news/1570100.html

相关文章

ESP32学习-1.环境安装vscode+idf

环境安装参考来链接:https://www.bilibili.com/video/BV1vTCUYyETZ?vd_source476e6e79f95e0d72f309fdd720cc0eaa&p2&spm_id_from333.788.videopod.episodes 1.报错 non zero exit code 1 The following Python requirements are not satisfied: Require…

恢复Exchange数据库

步骤: 1、备份原有Exchange数据库 2、重新安装Exchange 3、恢复数据库 过程: 重新安装Exchange 在ECP中创建数据库,创建时不要选择“装入数据库” 然后,下面是在命令行创建的过程 例子设置属性重写时注意是数据库名字&#…

Elasticsearch 指南 [8.17] | Search APIs

Search API 返回与请求中定义的查询匹配的搜索结果。 http GET /my-index-000001/_search Request GET /<target>/_search GET /_search POST /<target>/_search POST /_search Prerequisites 如果启用了 Elasticsearch 安全功能&#xff0c;针对目标数据流…

2024第十五届蓝桥杯网安赛道省赛题目rc4

查壳&#xff0c;无壳&#xff0c;64位&#xff0c;ida打开&#xff0c;查看main函数 int __cdecl main_0(int argc, const char **argv, const char **envp) {size_t v4; // [esp50h] [ebp-3Ch]char v5[44]; // [esp54h] [ebp-38h] BYREFchar Str[12]; // [esp80h] [ebp-Ch] …

读书笔记--分布式架构的异步化和缓存技术原理及应用场景

本篇是在上一篇的基础上&#xff0c;主要对分布式应用架构下的异步化机制和缓存技术进行学习&#xff0c;主要记录和思考如下&#xff0c;供大家学习参考。大家知道原来传统的单一WAR应用中&#xff0c;由于所有数据都在同一个数据库中&#xff0c;因此事务问题一般借助数据库事…

【后端开发】系统设计101——Devops,Git与CICD,云服务与云原生,Linux,安全性,案例研究(30张图详解)

【后端开发】系统设计101——Devops&#xff0c;Git与CICD&#xff0c;云服务与云原生&#xff0c;Linux&#xff0c;安全性&#xff0c;案例研究&#xff08;30张图详解&#xff09; 文章目录 1、DevopsDevOps与SRE与平台工程的区别是什么&#xff1f;什么是k8s&#xff08;Ku…

Page Assist - 本地Deepseek模型 Web UI 的安装和使用

Page Assist Page Assist是一个开源的Chrome扩展程序&#xff0c;为本地AI模型提供一个直观的交互界面。通过它可以在任何网页上打开侧边栏或Web UI&#xff0c;与自己的AI模型进行对话&#xff0c;获取智能辅助。这种设计不仅方便了用户随时调用AI的能力&#xff0c;还保护了…

理解 C 与 C++ 中的 const 常量与数组大小的关系

博客主页&#xff1a; [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C语言 文章目录 &#x1f4af;前言&#x1f4af;数组大小的常量要求&#x1f4af;C 语言中的数组大小要求&#x1f4af;C 中的数组大小要求&#x1f4af;为什么 C 中 const 变量可以作为数组大小&#x1f4af;进一步的…