当前位置: 首页 > news >正文

做网站一定需要icp么中国建设协会官网

做网站一定需要icp么,中国建设协会官网,网络推广文案有哪些,静态网站开发百科本文适合初学者系统掌握鱼眼镜头的标定与矫正原理,图文结合,带你从 0 到 1 理解 K, D, u,v 等参数的真实含义。 📌 一句话总结 鱼眼相机由于镜头视角宽、畸变大,拍出来的画面会“鼓起来”或者变形。通过标定得到的参数&#xff0…

本文适合初学者系统掌握鱼眼镜头的标定与矫正原理,图文结合,带你从 0 到 1 理解 K, D, u,v 等参数的真实含义。


📌 一句话总结

鱼眼相机由于镜头视角宽、畸变大,拍出来的画面会“鼓起来”或者变形。通过标定得到的参数,可以让计算机“理解”这种变形是怎么发生的,并据此把图像“拉回正形”。


📐 一、什么是内参矩阵 K

🔹 定义

在 OpenCV 中,内参矩阵(Camera Intrinsic Matrix)通常是一个 3x3 的矩阵:

cfg.K = cv::Matx33d(fx, 0, cx,0, fy, cy,0, 0, 1
);

你可能会看到这样的数值:

cfg.K = cv::Matx33d(436.38, 0,     966.97,0,     436.01, 556.57,0,     0,      1
);
矩阵元素含义
fxX 方向焦距(单位:像素)
fyY 方向焦距(单位:像素)
cx主点横坐标(图像中心 X)
cy主点纵坐标(图像中心 Y)

✅ 这个矩阵定义了相机如何将三维空间的点 (X, Y, Z) 投影到图像上的像素点 (u, v)


🌀 二、什么是畸变系数 D

鱼眼镜头会让图像产生严重的边缘弯曲,OpenCV 提供了畸变系数来描述这种变形。

cfg.D = cv::Vec4d(k1, k2, k3, k4);

示例:

cfg.D = cv::Vec4d(0.0130, 0.0029, -0.0016, 0.000017
);
  • k1, k2, k3, k4 是四个畸变参数
  • 适用于 OpenCV 的 fisheye 模块(与普通畸变模型不同)

🔍 三、如何进行图像矫正?

OpenCV 使用以下 API:

cv::Mat map1, map2;
cv::fisheye::initUndistortRectifyMap(cfg.K, cfg.D, cv::Mat::eye(3, 3, CV_64F),  // 内参、畸变、旋转矩阵cfg.K, image.size(),                      // 新的投影矩阵、图像尺寸CV_16SC2, map1, map2
);cv::Mat undistorted;
cv::remap(inputImage, undistorted, map1, map2, cv::INTER_LINEAR);

步骤解释:

  1. initUndistortRectifyMap() 生成像素映射规则(map)
  2. remap() 按照 map 把每个像素“搬”回它该在的位置

🧠 四、图像坐标系 (u, v) 是啥?

坐标含义
u水平方向像素坐标(从左到右)
v垂直方向像素坐标(从上到下)

图像坐标从左上角 (0,0) 开始,右下角是 (width-1, height-1)


🧮 五、像素点是如何计算出来的?

相机模型里有这样一组公式:

u = fx * (X/Z) + cx
v = fy * (Y/Z) + cy

📌 表示一个 3D 世界点 (X,Y,Z) 被投影成 2D 图像坐标 (u,v)

变量含义
(X,Y,Z)世界坐标系中的 3D 点
(u,v)相应的图像坐标(像素)
fx, fy焦距乘以像素密度,缩放比例
cx, cy图像中心(主点),像素偏移量

🎥 六、实际标定流程

拍摄棋盘格图像后,OpenCV 提供了函数可直接求出 K, D

cv::fisheye::calibrate(objectPoints, imagePoints, imageSize,K, D, rvecs, tvecs,cv::fisheye::CALIB_RECOMPUTE_EXTRINSIC,cv::TermCriteria(3, 20, 1e-6)
);
  • objectPoints: 棋盘格上每个点在 3D 空间的坐标
  • imagePoints: 图像中检测到的角点像素坐标
  • K, D: 得到的内参和畸变参数

🧾 七、总结表格

项目含义
K相机内参,描述镜头成像方式
D鱼眼畸变系数,描述弯曲程度
u, v图像上的像素坐标
fx, fy像素缩放系数(与镜头焦距有关)
cx, cy主点位置,决定图像中心偏移
矫正流程利用 initUndistortRectifyMap + remap 实现

如果这篇文章帮你理清了思路,欢迎 👍点赞 / ⭐收藏 / 💬留言交流!


http://www.dtcms.com/a/403065.html

相关文章:

  • Selenium使用教程
  • 多线程——单例模式
  • 镜头调焦的 调整的是焦距还是像距?
  • (四)React+.Net+Typescript全栈(错误处理)
  • @ant-design/icons-vue 打包成多格式库
  • 什么是营销型网站?杭州建设教育网站
  • C++开发环境(VSCode + CMake + gdb)
  • JAVA CodeX精选实用代码示例
  • 肥东网站建设南京医院网站建设
  • Qt 多线程解析
  • ZooKeeper与Kafka分布式:从基础原理到集群部署
  • 免费网站服务器安全软件下载wordpress权限设置方法
  • three.js射线拾取点击位置与屏幕坐标映射
  • AutoMQ × Ververica:打造云原生实时数据流最佳实践!
  • Laravel5.8 使用 snappyPDF 生成PDF文件
  • 自己做网站的图片手机芒果tv2016旧版
  • L4 vs L7 负载均衡:彻底理解、对比与实战指南
  • wordpress站群软件自己的网站怎么赚钱
  • 零知IDE——基于STM32F407VET6和MCP2515实现CAN通信与数据采集
  • 若依框架-Spring Boot
  • 全新 CloudPilot AI:嵌入 Kubernetes 的 SRE Agent,降本与韧性双提升!
  • 自建网站推广的最新发展wordpress同步到报价号
  • 4、导线、端子及印制电路板元器件的插装、焊接及拆焊
  • 【Java八股文】13-中间件面试篇
  • (四)优雅重构:洞悉“搬移特性”的艺术与实践
  • 网站建设专用图形库商务网站建设方案
  • 快速入门HarmonyOS应用开发(三)
  • Easysearch 国产替代 Elasticsearch:8 大核心问题解读
  • 【机器学习】搭建对抗神经网络模型来实现 MNIST 手写数字生成
  • 做推广的网站那个好中国机房建设公司排名