基于matlab使用校准相机测量平面物体(附源码)

news2024/9/22 13:38:19

一、前言

此示例演示如何使用单个校准相机以世界单位测量硬币的直径。

此示例演示如何校准相机,然后使用它来测量平面对象(如硬币)的大小。这种方法的一个示例应用是测量传送带上的零件以进行质量控制。

二、校准相机

相机校准是估计镜头和图像传感器参数的过程。需要这些参数来测量相机捕获的对象。此示例演示如何以编程方式校准相机。

为了校准相机,我们首先需要从不同角度拍摄校准图案的多张图像。典型的校准模式是不对称棋盘格,其中一侧包含偶数个正方形,包括黑色和白色,另一侧包含奇数个正方形。

图案必须固定在平面上,并且与相机的距离应与要测量的对象大致相同。正方形的大小必须尽可能精确地以世界单位(例如毫米)进行测量。在本例中,我们使用 9 张图案图像,但在实践中建议使用 10 到 20 张图像进行精确校准。

三、准备校准图像

创建校准图像文件名的单元数组。

四、估计相机参数

条形图表示校准的准确性。每个条形显示相应校准图像的平均重投影误差。重投影误差是在图像中检测到的角点与投影到图像中的相应理想世界点之间的距离。

五、读取待测物体的图像

加载包含要测量的对象的图像。此图像包括校准图案,并且图案与要测量的对象位于同一平面上。在此示例中,图案和硬币都位于同一桌面上。

或者,您可以使用两个单独的图像:一个包含图案,另一个包含要测量的对象。同样,对象和图案必须位于同一平面上。此外,必须从完全相同的视点捕获图像,这意味着相机必须固定到位。

六、不扭曲图像

使用相机参数对象从图像中删除镜头失真。这对于精确测量是必要的。

请注意,此图像的镜头畸变非常小。如果您使用广角镜头或低端网络摄像头,则不失真步骤更为重要。

七、分段硬币

在这种情况下,硬币在白色背景上是彩色的。使用图像的 HSV 表示的饱和分量将它们分割出来。

八、检测硬币

我们可以假设分割图像中两个最大的连接组件对应于硬币。

九、总结

此示例展示了如何使用校准的相机来测量平面对象。请注意,测量精度在0.2毫米以内。

十、程序

使用Matlab R2022b版本,点击打开。(版本过低,运行该程序可能会报错)

程序下载:基于matlab使用校准相机测量平面物体资源-CSDN文库

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

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

相关文章

基于多站点集中汇聚需求的远程调用直播视频汇聚平台解决方案

一、行业背景 随着视频汇聚需求的不断提升,智慧校园、智慧园区等项目中需要将各分支机构的视频统一汇聚到总部,进行统一管控,要满足在监控内部局域网、互联网、VPN网络等TCP/IP环境下,为用户提供低成本、高扩展、强兼容、高性能的…

ModaHub魔搭社区:如何基于向量数据库+LLM(大语言模型),打造更懂你的企业专属Chatbot?

目录 1、为什么Chatbot需要大语言模型向量数据库? 2、什么是向量数据库? 3、LLM大语言模型ADB-PG:打造企业专属Chatbot 4、ADB-PG:内置向量检索全文检索的一站式企业知识数据库 5、总结 1、为什么Chatbot需要大语言模型向量数据库? 这个春天,最让人震感的科技产品莫过…

6.28作业

作业1 结构体不能被继承,类可以被继承结构体默认的都是公共,类默认是私有的 转载【结构体和类的区别】 结构体是值类型,类是引用类型 结构体存在栈中,类存在堆中 结构体成员不能使用protected访问修饰符,而类可以 结…

vsCode 运行 报错信息 yarn : 无法加载文件 C:\Program Files\nodejs\yarn.ps1

检索说是 PowerShell 执行策略,默认设置是Restricted不去加载配置文件或运行脚本。需要去做相应的变更, 修改配置为 RemoteSigned 管理员身份打开 PowerShell,执行命令,修改PowerShell 执行策略 set-ExecutionPolicy RemoteSigne…

2023.6.28

类和结构体区别&#xff1a; 1&#xff0c;类可以进行封装&#xff08;有访问权限等&#xff09;&#xff0c;结构体无&#xff1b; 2&#xff0c;类有&#xff1a;封装&#xff0c;继承&#xff0c;多态三大特征&#xff0c;结构体只有变量和函数。 #include <iostream&g…

面试题小计(1)

Https加密过程、与三次握手 三次握手是传输层的概念&#xff0c;HTTPS通常是 SSL HTTP 的简称&#xff0c;目前使用的 HTTP/HTTPS 协议是基于 TCP 协议之上的&#xff0c;因此也需要三次握手。要在 TCP 三次握手建立链接之后&#xff0c;才会进行 SSL 握手的过程&#xff08;…

Linux在线升级JDK版本(不用去官网下载安装包)

Linux在线升级JDK版本 ​ 只要3个命令 确保系统已连接到互联网&#xff1a;确保你的 Linux 系统已连接到互联网&#xff0c;以便下载和安装新的 JDK 版本。 更新软件包管理器&#xff1a;运行以下命令来更新系统的软件包管理器&#xff08;在不同的 Linux 发行版中&#xff0…

(3)深度学习学习笔记-简单线性模型

文章目录 一、线性模型二、实例1.pytorch求导功能2.简单线性模型&#xff08;人工数据集&#xff09; 来源 一、线性模型 一个简单模型&#xff1a;假设一个房子的价格由卧室、卫生间、居住面积决定&#xff0c;用x1&#xff0c;x2&#xff0c;x3表示。 那么房价y就可以认为yw…

大数据分析与机器学习的结合:实现智能决策

章节一&#xff1a;引言 在当今数字化时代&#xff0c;大数据分析和机器学习已经成为推动技术创新和业务发展的关键要素。大数据的快速增长和复杂性使得传统的数据处理方法变得不再有效。而机器学习作为一种自动化的数据分析方法&#xff0c;能够从海量数据中挖掘出有价值的信…

QSS样式设置及语法规则

QSS&#xff08;Qt Style Sheets&#xff09;是Qt的一个功能强大的样式表语言。它类似于CSS&#xff08;Cascading Style Sheets&#xff09;&#xff0c;可以用于定义和控制应用程序的外观和样式。QSS可以应用于Qt部件&#xff08;Widgets&#xff09;和绘制元素&#xff0c;以…

集合专题----Map篇

1、Map 接口和常用方法 &#xff08;1&#xff09;Map 接口实现类的特点 ① Map与Collection并列存在&#xff08;即平行关系&#xff09;。Map用于保存具有映射关系的数据&#xff1a;Key-Value&#xff1b; ② Map 中的 key 和 value 可以是任何引用类型的数据&#xff0c;…

先平移再旋转和先旋转再平移的区别

对于一个刚体&#xff0c;以汽车为例&#xff0c;先旋转再平移和先平移再旋转有没有区别要看这个平移旋转是以什么坐标系为基准 如果平移和旋转都以小车坐标系为基准&#xff0c;二者是有区别的 如果平移旋转以世界坐标系为基准&#xff0c;二者是没有区别的 看图就明白了 所…

v8-tc39-ecma262:concat,不只是合并数组

如上图&#xff0c;解释如下&#xff1a; 如果是对象o&#xff0c;转换为对象新建数组A设n0,用于最后赋值给A&#xff0c;确保A的长度正确预先把值设置到items(这里不知何意&#xff1f;)循环items&#xff0c;设置元素为E E是否可展开如果可展开 有len下标&#xff0c;则获取…

LLM - 第2版 GLM 中文对话模型 ChatGLM2-6B 服务配置 (2)

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://blog.csdn.net/caroline_wendy/article/details/131445696 ChatGLM-6B v1 工程&#xff1a;基于 ChatGLM-6B 模型搭建 ChatGPT 中文在线聊天 (1)ChatGLM2-6B v2 工程&#xff1a;第2版 …

react umi中使用svg线上图片不加载问题

参考链接&#xff1a; https://www.jianshu.com/p/c927122a6e82 前言&#xff1a; 在react项目中&#xff0c;我们本地通过img标签的src使用svg图片是可以加载的&#xff0c;但是发布到线上图片加载不出来。 import stopImg from /images/stop.svg; <img src{stopImg }/&…

Transformer时间序列:PatchTST引领时间序列预测进

Transformer时间序列&#xff1a;PatchTST引领时间序列预测进 引言为什么transformer框架可以应用到时间序列呢统计学模型深度学习模型 PatchTSTPatchTST模型架构原理。通道独立性Patchingpatching的优点Transformer编码器 利用表示学习改进PatchTST使用PatchTST模型进行预测初…

深入理解 Golang: 聚合、引用和接口类型的底层数据结构

Go 中有基础类型、聚合类型、引用类型和接口类型。基础类型包括整数、浮点数、布尔值、字符串&#xff1b;聚合类型包括数组、结构体&#xff1b;引用类型包括指针、切片、map、function、channel。在本文中&#xff0c;介绍部分聚合类型、引用类型和接口类型的底层表示及原理。…

如何在Microsoft Excel中快速筛选数据

你通常如何在 Excel 中进行筛选?在大多数情况下,通过使用自动筛选,以及在更复杂的场景中使用高级过滤器。 使用自动筛选或 Excel 中的内置比较运算符(如“大于”和“前10项”)来显示所需数据并隐藏其余数据。筛选单元格或表范围中的数据后,可以重新应用筛选器以获取最新…

数据结构与算法基础-学习-25-图之MST(最小代价生成树)之Prim(普利姆)算法

一、生成树概念 1、所有顶点均由边连接在一起&#xff0c;但不存在回路的图。 2、一个图可以有许多棵不同的生成树。 二、生成树特点 1、生成树的顶点个数与图的顶点个数相同。 2、生成树是图的极小连通子图&#xff0c;去掉一条边则非连通。 3、一个有n个顶点的连通图的生…

stm32f103c8t6移植U8g2

U8g2代码下载&#xff1a; https://github.com/olikraus/u8g2 1&#xff0c;准备一个正常运行的KEIL5 MDK模板 2&#xff0c;下载u8g2的源码和 u8g2的STM32实例模板 源码: https://github.com/olikraus/u8g2 STM32实例模板: https://github.com/nikola-v/u8g2_template_stm32f…