VisionPro二开之九点标定

VisionPro二开之九点标定

方式1:

CogCalibNPointToNPointTool

方式2

安装

平移九点标定

usingSystem;usingSystem.Collections.Generic;usingMathNet.Numerics.LinearAlgebra;namespace平移标定的数学公式{publicclassCoordinateCalibration{// 存储标定点对privateList<(PointF image,PointF robot)>calibrationPoints=newList<(PointF,PointF)>();// 仿射变换参数 [a, b, c; d, e, f]privateMatrix<double>transformMatrix;publicstructPointF{publicfloatX;publicfloatY;publicPointF(floatx,floaty){X=x;Y=y;}}// 添加标定点publicvoidAddCalibrationPoint(PointFimagePoint,PointFrobotPoint){calibrationPoints.Add((imagePoint,robotPoint));}// 执行标定计算publicboolCalculateCalibration(){if(calibrationPoints.Count<3){Console.WriteLine("至少需要3个标定点");returnfalse;}// 构建矩阵方程 A * params = B// 参数矩阵 params = [a, b, c, d, e, f]^Tintn=calibrationPoints.Count;Matrix<double>A=Matrix<double>.Build.Dense(2*n,6);Matrix<double>B=Matrix<double>.Build.Dense(2*n,1);for(inti=0;i<n;i++){var(image,robot)=calibrationPoints[i];// 填充A矩阵 - X坐标相关行A[2*i,0]=image.X;// xA[2*i,1]=image.Y;// yA[2*i,2]=1;// 1A[2*i,3]=0;A[2*i,4]=0;A[2*i,5]=0;// 填充A矩阵 - Y坐标相关行A[2*i+1,0]=0;A[2*i+1,1]=0;A[2*i+1,2]=0;A[2*i+1,3]=image.X;// xA[2*i+1,4]=image.Y;// yA[2*i+1,5]=1;// 1// 填充B矩阵B[2*i,0]=robot.X;B[2*i+1,0]=robot.Y;}// 使用最小二乘法求解try{// A * params = B => params = (A^T * A)^-1 * A^T * BvarAtA=A.Transpose()*A;varAtA_inv=AtA.Inverse();varAtB=A.Transpose()*B;varparamsVector=AtA_inv*AtB;// 转换为2x3变换矩阵transformMatrix=Matrix<double>.Build.Dense(2,3);transformMatrix[0,0]=paramsVector[0,0];// atransformMatrix[0,1]=paramsVector[1,0];// btransformMatrix[0,2]=paramsVector[2,0];// ctransformMatrix[1,0]=paramsVector[3,0];// dtransformMatrix[1,1]=paramsVector[4,0];// etransformMatrix[1,2]=paramsVector[5,0];// freturntrue;}catch(Exceptionex){Console.WriteLine($"标定计算失败:{ex.Message}");returnfalse;}}// 图像坐标转机械手坐标publicPointFImageToRobot(PointFimagePoint){if(transformMatrix==null){thrownewInvalidOperationException("尚未执行标定计算");}// 构建输入向量 [x, y, 1]Vector<double>input=Vector<double>.Build.Dense(new[]{imagePoint.X,imagePoint.Y,1.0});// 计算输出 [X, Y]Vector<double>output=transformMatrix*input;returnnewPointF((float)output[0],(float)output[1]);}// 机械手坐标转图像坐标(逆变换)publicPointFRobotToImage(PointFrobotPoint){if(transformMatrix==null){thrownewInvalidOperationException("尚未执行标定计算");}// 仿射变换的逆变换需要计算矩阵的逆Matrix<double>invTransform=Matrix<double>.Build.Dense(3,3);invTransform[0,0]=transformMatrix[0,0];invTransform[0,1]=transformMatrix[0,1];invTransform[0,2]=transformMatrix[0,2];invTransform[1,0]=transformMatrix[1,0];invTransform[1,1]=transformMatrix[1,1];invTransform[1,2]=transformMatrix[1,2];invTransform[2,0]=0;invTransform[2,1]=0;invTransform[2,2]=1;try{varinv=invTransform.Inverse();Vector<double>input=Vector<double>.Build.Dense(new[]{robotPoint.X,robotPoint.Y,1.0});Vector<double>output=inv*input;returnnewPointF((float)output[0],(float)output[1]);}catch{Console.WriteLine("逆变换计算失败,可能矩阵不可逆");returnnewPointF(0,0);}}}}

二 使用

usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;usingSystem.Windows.Forms;namespace平移标定的数学公式{publicpartialclassForm1:Form{publicForm1(){InitializeComponent();}privatevoidbutton1_Click(objectsender,EventArgse){varcalibrator=newCoordinateCalibration();// 添加9个标定点(示例数据,实际应用中需要真实测量)// 格式:(图像坐标X, 图像坐标Y), (机械手坐标X, 机械手坐标Y)calibrator.AddCalibrationPoint(newCoordinateCalibration.PointF(1588.7726f,596.46368f),newCoordinateCalibration.PointF(140,10));calibrator.AddCalibrationPoint(newCoordinateCalibration.PointF(2092.5125f,601.88007f),newCoordinateCalibration.PointF(140,-10));calibrator.AddCalibrationPoint(newCoordinateCalibration.PointF(2599.6616f,608.51514f),newCoordinateCalibration.PointF(140,-30));calibrator.AddCalibrationPoint(newCoordinateCalibration.PointF(1586.8936f,1092.2368f),newCoordinateCalibration.PointF(160,10));calibrator.AddCalibrationPoint(newCoordinateCalibration.PointF(2088.5759f,1099.787f),newCoordinateCalibration.PointF(160,-10));calibrator.AddCalibrationPoint(newCoordinateCalibration.PointF(2588.5093f,1111.1132f),newCoordinateCalibration.PointF(160,-30));calibrator.AddCalibrationPoint(newCoordinateCalibration.PointF(1573.5547f,1592.8459f),newCoordinateCalibration.PointF(180,10));calibrator.AddCalibrationPoint(newCoordinateCalibration.PointF(2082.4187f,1601.0065f),newCoordinateCalibration.PointF(180,-10));calibrator.AddCalibrationPoint(newCoordinateCalibration.PointF(2583.4763f,1615.3347f),newCoordinateCalibration.PointF(180,-30));// 执行标定计算if(calibrator.CalculateCalibration()){// 测试转换vartestImagePoint=newCoordinateCalibration.PointF(1200,1500);varrobotPoint=calibrator.ImageToRobot(testImagePoint);MessageBox.Show($"图像坐标({testImagePoint.X},{testImagePoint.Y}) -> 机械手坐标({robotPoint.X},{robotPoint.Y})");// 测试逆转换varbackToImage=calibrator.RobotToImage(robotPoint);MessageBox.Show($"机械手坐标({robotPoint.X},{robotPoint.Y}) -> 图像坐标({backToImage.X},{backToImage.Y})");}}}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1125348.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Design Fluid Viscous Dampers in SAP2000 and Peform3D

在 SAP2000 和 Perform3D 中设计粘滞流体阻尼器课程基本信息- 发布时间&#xff1a;2026年 - 格式与规格&#xff1a;MP4 格式 - 语言&#xff1a;英语 - 时长&#xff1a;1小时 - 大小&#xff1a;950 MB - 核心主题&#xff1a;基于 SAP2000 的实用抗震阻尼器建模、非线性分析…

2026新测!这几款款亲测有效的降ai率工具推荐,含手把手教你论文降ai,查重率从红变绿只需几分钟!

写论文最怕什么&#xff1f;不是卡在查重&#xff0c;而是AI率高得离谱。明明自己码了一万多字&#xff0c;检测报告一出来&#xff0c;红到眼晕。别急&#xff0c;我这篇就是给你准备的——从免费降ai率方法到收费工具实测&#xff0c;帮你彻底搞清楚怎么降低ai率、怎么用靠谱…

VisionPro之九点标定

VisionPro之九点标定

全网最全ai降ai方法:亲测能有效降低ai痕迹,论文降aigc从此不求人,导师看了都说好!

写论文最怕什么&#xff1f;不是卡在查重&#xff0c;而是AI率高得离谱。明明自己码了一万多字&#xff0c;检测报告一出来&#xff0c;红到眼晕。别急&#xff0c;我这篇就是给你准备的——从免费降ai率方法到收费工具实测&#xff0c;帮你彻底搞清楚怎么降低ai率、怎么用靠谱…

程序媛失业第七天

这是小红书上一位上海的Java程序员失业想转行的分享贴。 Java开发的就业市场正在经历结构性调整&#xff0c;竞争日益激烈 传统纯业务开发岗位&#xff08;如仅完成增删改查业务的后端工程师&#xff09;的需求&#xff0c;特别是入门级岗位&#xff0c;正显著萎缩。随着企业…

基于Python+Django的社区服务管理系统设计与实现

前言 &#x1f31e;博主介绍&#xff1a;✌CSDN特邀作者、全栈领域优质创作者、10年IT从业经验、码云/掘金/知乎/B站/华为云/阿里云等平台优质作者、专注于Java、小程序/APP、python、大数据等技术领域和毕业项目实战&#xff0c;以及程序定制化开发、文档编写、答疑辅导等。✌…

终极降AI指南!这款能让你相见恨晚的论文降aigc神器,实测降ai效果立竿见影

写论文最怕什么&#xff1f;不是卡在查重&#xff0c;而是AI率高得离谱。明明自己码了一万多字&#xff0c;检测报告一出来&#xff0c;红到眼晕。别急&#xff0c;我这篇就是给你准备的——从免费降ai率方法到收费工具实测&#xff0c;帮你彻底搞清楚怎么降低ai率、怎么用靠谱…

【AI】各类型开源模型排行

开源翻译模型 Top5 截至 2025 年第四季度的公开评测与赛果&#xff0c;综合 WMT-25、TransBench 以及社区人工打分&#xff0c;开源翻译模型 Top5 如下&#xff08;按“多语种平均 BLEURT COMET 人工分”排序&#xff0c;括号内为亮点语向&#xff09;&#xff1a;Tencent Hun…

论文jiangAI干货!4款aigc免费降重工具,亲测降低ai率的同时保留原意,让你的文章更有“人味”

写论文最怕什么&#xff1f;不是卡在查重&#xff0c;而是AI率高得离谱。明明自己码了一万多字&#xff0c;检测报告一出来&#xff0c;红到眼晕。别急&#xff0c;我这篇就是给你准备的——从免费降ai率方法到收费工具实测&#xff0c;帮你彻底搞清楚怎么降低ai率、怎么用靠谱…

吐血推荐9个AI论文网站,专科生毕业论文轻松搞定!

吐血推荐9个AI论文网站&#xff0c;专科生毕业论文轻松搞定&#xff01; 1.「千笔」—— 一站式学术支持“专家”&#xff0c;从初稿到降重一步到位&#xff08;推荐指数&#xff1a;★★★★★&#xff09; 对于专科生而言&#xff0c;撰写一篇符合要求的毕业论文不仅需要扎实…

还在为AI率爆表发愁吗?这几款降ai率工具推荐,实测免费降低ai率只需三步,建议反复观看!

写论文最怕什么&#xff1f;不是卡在查重&#xff0c;而是AI率高得离谱。明明自己码了一万多字&#xff0c;检测报告一出来&#xff0c;红到眼晕。别急&#xff0c;我这篇就是给你准备的——从免费降ai率方法到收费工具实测&#xff0c;帮你彻底搞清楚怎么降低ai率、怎么用靠谱…

30岁大厂java程序媛被裁第2个月零10天

这是小红书上一位上海的Java程序员失业想转行的分享贴。 Java开发的就业市场正在经历结构性调整&#xff0c;竞争日益激烈 传统纯业务开发岗位&#xff08;如仅完成增删改查业务的后端工程师&#xff09;的需求&#xff0c;特别是入门级岗位&#xff0c;正显著萎缩。随着企业…

基于大数据的健康风险评估系统的设计与实现

大数据健康风险评估系统的背景 随着全球人口老龄化加剧和慢性病发病率攀升&#xff0c;传统健康管理模式面临巨大挑战。医疗资源分布不均、诊疗效率低下、预防性干预不足等问题日益突出&#xff0c;亟需通过技术手段实现健康管理的精准化和个性化。大数据技术的成熟为这一领域提…

深度测评8个AI论文写作软件,研究生高效选题与格式规范必备!

深度测评8个AI论文写作软件&#xff0c;研究生高效选题与格式规范必备&#xff01; AI 工具如何改变论文写作的未来 在研究生阶段&#xff0c;论文写作不仅是学术能力的体现&#xff0c;更是时间与精力的巨大挑战。随着 AI 技术的不断进步&#xff0c;越来越多的 AI 工具被引入…

【记录】LLM|魔搭社区加载本地模型Qwen-Image-Layered(附可运行的代码)

文章目录【记录】LLM&#xff5c;魔搭社区加载本地模型 Qwen-Image-Layered前言一、准备环境二、在线加载&#xff08;网络可用时&#xff09;三、常见报错与解决四、运行效果结语【记录】LLM&#xff5c;魔搭社区加载本地模型 Qwen-Image-Layered 运行环境&#xff1a; CPU&am…

CentOS系统安装Python3.12.10

参考&#xff1a; https://cloud.tencent.com/developer/article/1565709 1、安装编译对应的依赖&#xff1a; yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make​ 2、改名Python cd /usr/binmv python pyth…

亲测好用自考必看TOP10AI论文工具

亲测好用自考必看TOP10AI论文工具 一、不同维度核心推荐&#xff1a;10款AI工具各有所长 在自考论文写作过程中&#xff0c;从选题、开题到初稿撰写、查重降重&#xff0c;再到最终排版&#xff0c;每一个环节都离不开高效的工具支持。而不同的AI论文工具在功能覆盖和适用场景…

AI框架之Spring AI与Spring Cloud Alibaba AI使用讲解

文章目录 1 AI框架 1.1 Spring AI 简介1.2 Spring AI 使用 1.2.1 pom.xml1.2.2 可实现的功能 1.3 Spring Cloud Alibaba AI1.4 Spring Cloud Alibaba AI 实践操作 1.4.1 pom.xml1.4.2 配置文件1.4.3 对接文本模型1.4.4 文生图模型1.4.5 语音合成模型 1 AI框架 1.1 Spring …

AFP87432输入/输出端子板

AFP87432 输入/输出端子板是一块用于PLC系统的扩展模块&#xff0c;主要功能是让PLC与现场设备&#xff08;如开关、传感器、继电器、指示灯等&#xff09;进行信号交互。主要功能输入信号接收接入现场数字信号&#xff0c;例如按钮、限位开关或传感器的开关量。常见输入电压为…