应用篇02-镜头标定(上)
本节主要介绍相机的标定方法,包括其内、外参数的求解,以及如何使用HALCON标定助手实现标定。
计算机视觉——相机标定(Camera Calibration)_摄像机标定-CSDN博客
1. 原理
本节介绍与相机标定相关的理论知识,不一定全,可以参考相关的专业书籍。
1.1 为什么要进行标定
实际使用的相机镜头都是光学透镜,只有通过光心的光线才是沿直线传播的,而大部分的光线在通过透镜后会发生折射,从而改变了传播的角度。越靠近透镜的边缘,改变的角度也就越大,这会造成相机所成的像产生距离上的拉伸以及形状的改变,这个现象称为相机畸变。
对相机进行标定操作其实就是通过一系列的计算校准后得到修正参数,通过这些参数修正后就可以得到与人眼看到的景象相同的图像,也就是将三维景象转换成去除畸变后的二维图像。无论是在机器视觉还是在图像测量应用中,相机标定都是非常关键的环节,其标定的精度及算法的稳定性直接影响结果的准确性。因此,做好相机标定是进行后续工作及实验的前提。
进行摄像机标定的目的主要是两方面:一是求出相机的参数(包括内参数、外参数),二是畸变参数。下面围绕着这两个方面展开介绍。
1.2 相机模型
1.2.1 四大坐标系
- 世界坐标系是一个全局坐标系,用于描述物体在真实世界中的位置。世界坐标系用 (X_w, Y_w, Z_w) 表示,独立于相机,可以任意选择原点和坐标轴的方向。
- 相机坐标系 (Camera Coordinate System)**以相机的光学中心为原点,Z ZZ轴指向相机的正前方,X XX轴和Y YY轴分别指向相机的右侧和下方,用于描述物体在相机视角下的位置。通常,相机坐标系用 ( X c , Y c , Z c ) (X_c, Y_c, Z_c)(X c,Yc,Z c ) 表示。
- 图像坐标系 (Image Coordinate System)**是二维坐标系,用于描述物体在相机成像平面上的投影位置。通常,图像坐标系用 ( x , y ) (x, y)(x,y)表示,图像坐标系的原点通常位于成像平面的中心,x xx轴和y yy轴分别指向图像的右侧和下方。
- 像素坐标系 (Pixel Coordinate System)**是二维坐标系,用于描述物体在数字图像中的像素位置。通常,像素坐标系用 ( u , v ) (u, v)(u,v) 表示,即列数和行数。像素坐标系的原点通常位于图像的左上角,u uu轴和v vv轴分别指向图像的右侧和下方。
在机器视觉领域中,为了确定空间物体表面某点的三维几何位置与其投影图像(二维)中对应点之间的关系,必须建立相机成像的几何模型,这些几何模型参数就是相机的内外参数。
1. 3 相机畸变
常见的镜头畸变包括径向畸变和切向畸变两类。其中,大多数镜头都有径向畸变,而切向畸变影响相对较小。
在正确的拍摄条件下,矩形体的像仍然是矩形。如果将矩形物体拍摄成四边向外凸的桶形影像,则称镜头具有负畸变或桶形畸变。相反,如果影像为四边凹进,则称镜头具有正畸变,或枕形畸变。
- 桶形畸变是由于视场边缘的放大率比中心部分低引起的,即缩小光圈也不能矫正;
- 枕形畸变是由于视场边缘部分的放大率比中心部分放大率高引起的,即倾斜角度大的光线的放大率比倾斜角度小的光线的放大率高。
相关文章:
应用篇02-镜头标定(上)
本节主要介绍相机的标定方法,包括其内、外参数的求解,以及如何使用HALCON标定助手实现标定。 计算机视觉——相机标定(Camera Calibration)_摄像机标定-CSDN博客 1. 原理 本节介绍与相机标定相关的理论知识,不一定全,可以参考相…...
游戏引擎学习第230天
回顾并为今天的内容定下基调 今天是我们进行“排序”工作的第二天。昨天我们在渲染器中实现了排序功能。这其实是从一开始就知道必须做的事情,只是一直没有合适的时机。而昨天终于迎来了这个时机,不知道为什么,可能就是突然有了冲动和想法&a…...
3.串口通信之SPI
—>1.串口通信之UART见这篇<— —>2.串口通信之IIC见这篇<— 1.SPI特点 SPI(Serial Peripheral Interface)即串行外设接口,有4条总线,分别是SCLK(SPI Clock),MISO(Master Input Slave Output),MOSI(Mast…...
无人机姿态稳定与动态控制模块概述!
一、设计难点 1. 动态算力需求与硬件能力的不匹配** 无人机边缘计算设备通常受限于体积和重量,导致其计算单元(如CPU、GPU)的算力有限,难以应对突发的高负载任务(如实时图像处理、AI推理)。 挑战&am…...
【shell】终端文本的颜色和样式打印
在Shell脚本中,\033[XXm 是 ANSI转义序列,用于控制终端文本的颜色和样式。以下是完整的颜色和样式代码列表: 1. 基本格式 echo -e "\033[CODEm你的文本\033[0m"\033[:转义序列开始(\e[ 或 \x1b[ 等效&#…...
模型加载常见问题
safetensors_rust.SafetensorError: Error while deserializing header: HeaderTooLarge 问题代码: model AutoModelForVision2Seq.from_pretrained( "/data-nvme/yang/Qwen2.5-VL-32B-Instruct", trust_remote_codeTrue, torch_dtypetorc…...
HCIA-Access V2.5_16_3_数据业务维护
查询ONT上的业务配置 查询ONU上的业务配置 查询OLT上网业务 查询上网业务流量 查询上网业务相关MAC地址 删除故障ONT 删除故障ONU...
Java设计开发商城抢票功能
在开发一个商城抢购功能时,需要考虑几个关键方面,包括并发控制、数据一致性、用户体验以及系统的可扩展性。下面我将通过一个简单的步骤指南来介绍如何设计这样一个功能。 1. 需求分析 首先,明确抢购功能的需求: 限制购买数量。…...
【APM】Build an environment for Traces, Metrics and Logs of App by OpenTelemetry
系列文章目录 此系列文章介绍如何搭建Observability(可观测性)环境(Opentelemetry-Collector、Tempo、Prometheus、Loki和Grafana),以及应用。 【APM】Observability Solution 【APM】Build an environment for Traces, Metrics and Logs …...
全自动驾驶(FSD,Full Self-Driving)自动驾驶热点技术的成熟之处就是能判断道路修复修路,能自动利用类似“人眼”的摄像头进行驾驶!值得学习!
全自动驾驶(FSD,Full Self-Driving)软件是自动驾驶领域中的热点技术,其核心目标是实现车辆在各种复杂交通环境下的安全、稳定、高效自动驾驶。FSD软件的技术核心涉及多个方面的交叉技术,下面将详细分析说明其主要核心技…...
需要处理哪些响应数据?
在调用淘宝商品搜索 API 时,响应数据通常是一个 JSON 对象,包含了搜索结果的详细信息。以下是需要处理的主要响应数据字段及其说明: 响应数据结构 示例 JSON 数据 JSON {"code": "0","errorMessage": &quo…...
【NLP 63、大模型应用 —— Agent】
人与人最大的差距就是勇气和执行力,也是唯一的差距 —— 25.4.16 一、Agent 相关工作 二、Agent 特点 核心特征: 1.专有场景(针对某个垂直领域) 2.保留记忆(以一个特定顺序做一些特定任务,记忆当前任务的前…...
Windows 图形显示驱动开发-WDDM 1.2功能—Windows 8 中的 DirectX 功能改进(三)
一、与目标无关的光栅化 (TIR) 独立于目标的光栅化 (TIR) 为涉及结构化图形的高质量抗锯齿的 Direct2D 使用方案提供高性能抗锯齿路径。 TIR 使 Direct2D 能够将光栅化步骤从 CPU 移动到 GPU,同时保留 Direct2D 抗锯齿语义和质量。 使用此功能,软件层可…...
总结【过往部分项目经历二(计算机图形学方向)】
过往部分项目经历二 1.加强杆自动生成算法2.牙龈线序列批量算法3.光伏多阵列排布算法 1.加强杆自动生成算法 介绍: 主要用于牙科正畸定制化应用。采用纯数字化技术,一键导入加强杆后,自动摆放、加强杆结构设计、网格重建、接触部分自动定位、…...
鸿蒙智行多款重磅新品发布,开启智慧出行新篇章
4月16日,鸿蒙智行新品发布会在上海隆重举办。问界M8、问界新M7全新配色、享界S9增程版上市;尊界S800内饰设计公布;SAIC尚界品牌首次官宣。 本次发布会后,鸿蒙智行将在4月17日举办智界品牌之夜,携手用户共同探索未来出…...
冰川流域提取分析——ArcGIS pro
一、河网提取和流域提取视频详细GIS小熊 || 6分钟学会水文分析—河网提取(以宜宾市为例)_哔哩哔哩_bilibili 首先你要生成研究区域DEM,然后依次是填洼→流向→流量→栅格计算器→河网分级→栅格河网矢量化(得到河网.shpÿ…...
SpringBoot——配置文件
目录 前言 1.参数配置化 1.1使用application.properties 2.yml配置文件 3.ConfigurationProperties 3.1ConfigurationProperties 4.总结 前言 我们在配置一个类的对象属性时如果我们直接写在类里就属于硬编码,如果我们在做项目时每设计到一个第三方服务就将其…...
Lambda 函数与 peek 操作的使用案例
Lambda 函数和 peek 操作是 Java 8 Stream API 中非常有用的特性,下面我将介绍它们的使用案例。 Lambda 函数使用案例 Lambda 表达式是 Java 8 引入的一种简洁的匿名函数表示方式。 集合操作 List<String> names Arrays.asList("Alice", "B…...
Java 中常用队列用法详解
Java 中常用队列用法详解 在Java编程中,队列是一种非常重要的数据结构,广泛应用于任务调度、消息传递以及多线程通信等场景。以下将详细介绍几种常用的Java队列及其使用方法。 1. Queue 接口概述 Queue 是Java集合框架中的一个接口,它定义…...
IoT FEM射频前端模组芯片(2.4G PA)三伍微电子GSR2401 兼容替代RFX2401
型号:GSR2401应用:适用于蓝牙(BT)、ZigBee及物联网(IoT)设备 功能:集成了功率放大器(PA)、开关(Switch)和低噪声放大器(LNAÿ…...
android如何在生产环境中做到详实的日志收集而不影响性能?
在Android应用的生命周期中,日志收集贯穿于开发、测试到生产环境的每一个阶段。特别是在生产环境中,当应用部署到成千上万的用户设备上时,开发者无法直接访问用户的运行环境,也无法像在开发阶段那样通过调试工具实时查看代码执行情况。这时,日志就成为连接开发者与用户设备…...
深入解析 Linux 系统中的动静态库:从原理到实践
引言 在 Linux 开发中,动态库(.so)和静态库(.a)如同软件开发的“乐高积木”,它们将代码模块化,提高复用性并优化系统资源。当你在终端输入 ls 时,背后可能依赖了数十个动态库&#…...
Django视图(未分离)
ListView、DetailView、CreateView、UpdateView 和 DeleteView 是 Django 框架中基于类的通用视图(Class-Based Generic Views) 配置 URL 路由 在 urls.py 中为这些视图配置路由: from django.urls import path from .views import (PostLis…...
0基础 | 开发环境 |51单片机编译环境 Keil C251和C51,STM32的编译环境Keil 5 MDK-ARM
51单片机编译环境 Keil C51 简介:Keil C51是Keil Software公司(现已被ARM收购)专门为8051微控制器家族开发的编译器,它将标准C语言与8051单片机硬件特性相结合,让开发者能够用C语言高效地开发51单片机应用程序。特点 …...
Python内置函数---all()
Python内置函数 all() 用于判断可迭代对象中的所有元素是否都为真值(Truthy),是逻辑判断的重要工具。 1. 基本语法 all(iterable) 参数: iterable 必须为可迭代对象(如列表、元组、集合、字典的值等)。…...
Windows系统安装RustDesk Server的详细步骤和客户端设置
Windows系统安装RustDesk Server的详细步骤 在Windows系统上安装RustDesk Server涉及几个关键步骤,包括安装必要的依赖、下载RustDesk Server程序、配置并启动服务。以下是详细的步骤: 1. 安装Node.js和PM2 RustDesk Server的某些版本可能需要Node.js环境来运行,而PM2是一…...
路由过滤实验
实验拓扑以及要求 此实验总结 1.ip-prefix 拒绝192.168.4.1 32,这样写的话并不会匹配192.168.4.1 32,需要加上范围less-eq 32,也就是说,192.168.4.1 32只是规则的范围,匹配还是得写范围 2.router-policy适合用在边界路由器引入 filter-policy都可以用 配置IP 配置ospf,rip …...
数据结构学习笔记 :栈、队列与表达式转换详解
目录 栈(Stack) 1.1 顺序存储实现 1.2 链式存储实现队列(Queue) 2.1 顺序存储实现 2.2 链式存储实现中缀表达式转后缀表达式后缀表达式计算总结与应用场景 一、栈(Stack) 栈是一种**后进先出(…...
项目优化中ini配置文件解析器
一、项目背景 在停车管理项目中不同道闸口的终端配置可能不同,如靠近居民楼的道闸终端LED的语音播报音量和靠近马路的道闸门口不同;不同终端道闸锁闸时间也可能不同,诸如此类放在数据库中,不同的终端在启动时必须先连接到数据库才…...
【FPGA】【DE2-115】DDS信号发生器设计
目录 一、基本概述 1.1 DDS简介 1.2 DDS工作原理 1.2.1 核心组成部分 1.2.2 工作流程 1.2.3 输出频率计算 1.3 常见的RAM、ROM、FIFO等IP核的参数设置和调用过程 1.3.1 RAM IP核的参数设置和调用过程 1.3.2 ROM IP核的参数设置和调用过程 1.3.3 FIFO IP核的参数设置和…...
使用 OpenRewrite 简化 Java 和 SpringBoot 迁移
大家好,这里是架构资源栈!点击上方关注,添加“星标”,一起学习大厂前沿架构! 移民的挑战 随着 Spring Boot 2.x 等旧版本即将到期且不再获得支持,迁移到较新版本对于安全性、兼容性和性能改进至关重要。但…...
电脑怎么设置锁屏密码 分享详细设置教程
电脑不仅仅是工作的工具,更是存储着大量个人信息和重要数据的私人空间。设置电脑锁屏密码是保护这些信息,免受未经授权访问的基本安全措施之一。那么,电脑怎么锁屏密码呢?下面便为大家介绍在一些不同操作系统中怎么设置电脑锁屏密…...
【Netty篇】Handler Pipeline 详解
目录 一、 Handler & Pipeline——流水线上的“特种部队”与“生产线”1、 ChannelHandler —— 流水线上的“特种兵”👮♂️2、 ChannelPipeline —— 生产线上的“接力赛跑”🏃♀️🏃♂️ 二、 代码实例1、 服务端代码示例2、 客…...
Postman实现接口测试(附项目实战)
Postman实现接口测试(附项目实战) Postman实现接口测试 掌握如何安装Postman 掌握Postman的基本用法 掌握全局变量与环境变量 掌握Postman断言和关联 掌握如何读取外部文件实现参数化 掌握如何使用Newman生成HTML测试报告 1.Postman介绍和安装 Postman是…...
从零上手GUI Guider学习LVGL——Button
视频教程请关注我b站:同学_好好学习,这里只是做相应的笔记文稿 从零上手GUI Guider学习LVGL——Buttton 前言: 首先我们为什么要学习LVGL设计工具呢? 1 降低开发难度 2 提高开发效率 所以我们需要学习一款合适的设计工具 在b站很少…...
软件工程知识体系全面梳理
一、软件工程概述 1. 软件工程基本概念 定义:应用系统化、规范化、可量化的方法开发、运行和维护软件的学科 目标:提高软件质量、降低开发成本、控制开发周期 三要素:方法、工具、过程 2. 软件生命周期 可行性分析 → 需求分析 → 设计 …...
操作教程|通过DataEase制作MaxKB系统数据大屏
MaxKB(Max Knowledge Brain)是一款强大易用的企业级AI助手,支持RAG检索增强生成、工作流编排、MCP工具调用能力,目前正在被广泛应用于智能客服、企业内部知识库、学术研究与教育等场景。MaxKB可以帮助用户快速搭建面向不同应用场景…...
关于webpack的知识点
一、什么是webpack?它的核心概念是什么? webpack是现代JavaScript应用程序的打包工具 它的核心概念包括: 入口输出loaderplugin(插件)模式模块依赖图 二、webPack与Grunt\Grulp有什么区别? 首先Grunt/Gulp是任务运行器,用来实现流…...
Linux系统中的 sudo 权限会导致环境变量失效。
标题为什么 sudo 会破坏 配置的环境变量? 权限切换:sudo 以 root 用户 身份执行命令,root 用户的环境变量和当前用户(user)的环境变量是隔离的。 环境变量丢失:nvm 依赖的 PATH、等环境变量是通过用户 She…...
目标分割模型优化自身参数都是梯度下降算法吗?
在计算机视觉的深度学习任务中,诸如 CNN、FCN、U-Net、DeepLab 系列模型已成为图像分类与图像分割任务的核心架构。它们在网络结构和任务上有所差异,但是否共享同一种优化机制?是否都使用梯度下降?优化过程中又有什么本质区别&…...
前端请求传参与后端匹配的接收方式Content-Type类型
文章目录 一、Content-Type简介二、Content-Type类型三、常⽤类型3.1. application/json:JSON数据格式3.2. application/x-www-form-urlencoded:普通表单格式(键值对)3.3. multipart/form-data:多部分表单格式…...
解决:VSCode C++ conan 安装第三方库后 头文件报错
文章目录 1 头文件include路径查找报错参考 1 头文件include路径查找报错 找到conan_toolchain.cmake中 INCLUDE_PATH list(PREPEND CMAKE_INCLUDE_PATH "/Users/hanliqiang/.conan2/p/b/fmte8c4f7a755477/p/include")生成C编译配置 CtrlShiftP 中选择C Edit Confi…...
(leetcode算法题)309. 买卖股票的最佳时机含冷冻期
按照题目要求,研究对象是最后一天结束后获得的最大利润 那么就可以把问题拆分成 第 1 天结束后获得的最大利润, 第 2 天结束后获得的最大利润, 第 i 天结束后获得的最大利润, 由于规则中强调不能同时参与多笔交易,…...
win10和win11系统修复工具各类故障解决
点赞关注一下哈: 在使用电脑时可能会遇到一些问题,通过上网查找解决方法费时费力,而有了这个小工具可以很方便的解决问题。有几十种解决方案,值得下载保存哦。 1、使用方法: 解压文件,双击文件夹内的exe文件…...
微硕WSP6949 MOS管在补水仪中的应用与市场分析
微硕WSP6949 MOS管在补水仪中的应用与市场分析 一、引言 补水仪作为一种常见的家用电器,其核心部件之一是驱动电路,而MOS管作为驱动电路中的关键元件,其性能直接影响到补水仪的运行效率和稳定性。微硕半导体推出的WSP6949 MOS管,…...
【通过Zadig给鼠标适配器安装驱动后,鼠标动不了,无法恢复的解决办法】
【通过Zadig给鼠标适配器安装驱动后,鼠标动不了,无法恢复的解决办法 问题产生缘由感谢这位大佬提供的解决办法解决办法 问题产生缘由 通过Zadig给鼠标适配器安装USB GAMING MOUSE这个驱动后,鼠标动不了,无法恢复(重启电脑,卸载鼠标驱动再重装也不可以), 不过还好,我用的是笔记…...
基本表单的实现即登录注册页面的实现
1.登录页面(opType.value0) 2.注册页面(opType.value1) 3.注意 el-form-item中的prop对应的是rules里面的key值 <el-form-itemlabel"邮箱"prop"email"label-width"100px"> </el-form-i…...
JVM 什么是逃逸分析?它有哪些优化手段?
JVM 逃逸分析 (Escape Analysis) 是一种编译器优化技术,主要由即时编译器 (JIT Compiler) 在运行时进行,用于分析对象的作用域,判断对象是否会逃逸出方法或线程。 什么是逃逸? 在 JVM 的上下文中,“逃逸” 指的是对象…...
Spring AI与通义千问的完美结合:构建智能对话应用
Spring AI是Spring生态系统中的新成员,它为开发人员提供了一套简单而强大的工具,用于集成各种AI大模型。本文将介绍如何使用Spring AI与阿里云通义千问大模型进行集成,构建智能对话应用,帮助你快速掌握AI应用开发的核心技能。 引言 随着人工智能技术的快速发展,越来越多的…...
CST仿真天线流程
基础操作指导 如何建模、设置边界条件、端口激励等。 材料属性设置、网格划分优化。 仿真参数配置(频域/时域仿真)。 常见仿真案例 天线设计(如微带天线、波导天线)。 微波器件(滤波器、功分器、耦合器࿰…...