深圳制作网站的公司wordpress文章归档 文章显示数量

web/2025/10/8 11:23:00/文章来源:
深圳制作网站的公司,wordpress文章归档 文章显示数量,如何建立公司网站网页,杭州网站建设开发摄像机标定的目的是为了求解摄像机的内、外参数 求解投影矩阵M 通过建立特殊的场景#xff0c;我们能过得到多对世界坐标和对应图像坐标 根据摄像机几何可知 #xff1a; #xff0c;M是一个3*4的矩阵#xff0c;令 通过一对点可以得到两个方程组#xff0c;M中一共有11个…摄像机标定的目的是为了求解摄像机的内、外参数 求解投影矩阵M 通过建立特殊的场景我们能过得到多对世界坐标和对应图像坐标 根据摄像机几何可知 M是一个3*4的矩阵令 通过一对点可以得到两个方程组M中一共有11个位置量因此至少需要6对点通过最小二乘法求解 可以得到。需要注意的是在求解 这个齐次方程组中是方程组的解对于任意 也是方程组的解所以我们加了一个约束使得因此我们求解出来的值和实际值的常数倍。 求解内参矩阵K R是旋转矩阵因此 同样因为R旋转矩阵 内参矩阵全部求出。 求解外参矩阵R、T 求解畸变参数 所求得的是理想情况下的坐标下面的建模相当于对理想点进行缩放d表示坐标点离图像中心的距离d越大畸变得越厉害。若   理想点会被往里扯那对应的就是桶形畸变若   理想点会被往外扯那对应的就是枕形畸变。 由于Q中包含因此这不是一个线性模型只能用迭代法求取最优解 张正友标定法 接下来我们将介绍张正友标定法以及相应代码。 GitHub - ldx-star/Zhangzhenyou-Calibration 在张正友标定法中我们并不需要一个立体的模型只需要一个平面的标定板。 Step1  获取世界坐标和像素坐标的对应点对 张正友标定法假设Z0将世界坐标系建立在靶面上因此我们在提取世界坐标的时候只需要得到X,Y。 我们的棋盘格中每个方格的宽度是15mm将第一个角点位置定为00第二个角点就是00.15... 而像素坐标就是对应角点在图像上像素的坐标。 bool CamCalibration::getKeyPoints() {auto chessBoards chessBoards_;const float square_size square_size_;auto points_3d_vec points_3d_vec_;auto points_2d_vec points_2d_vec_;const int row row_;const int col col_;//采集世界坐标for (int i 0; i chessBoards.size(); i) {std::vectorcv::Point2f points_3d; // 一张图的世界坐标for (int r 0; r row; r) {for (int c 0; c col; c) {cv::Point2f point;point.x r * square_size;point.y c * square_size;points_3d.push_back(point);}}points_3d_vec.push_back(points_3d);}//采集像素坐标,使用opencv库提取角点for (auto img: chessBoards) {std::vectorcv::Point2f points_2d;bool found_flag cv::findChessboardCorners(img, cv::Size(col, row), points_2d, cv::CALIB_CB_ADAPTIVE_THRESH cv::CALIB_CB_NORMALIZE_IMAGE); //cv::Size(col,row)if (!found_flag) {std::cerr found chess board corner failed;return false;}//指定亚像素计算迭代标注cv::TermCriteria criteria cv::TermCriteria(cv::TermCriteria::MAX_ITER cv::TermCriteria::EPS, 40, 0.001);cv::cornerSubPix(img, points_2d, cv::Size(5, 5), cv::Size(-1, -1), criteria);//display // cv::cvtColor(img,img,cv::COLOR_GRAY2BGR); // cv::drawChessboardCorners(img, cv::Size(col, row), points_2d, found_flag); // cv::namedWindow(corner img, cv::WINDOW_NORMAL); // cv::resizeWindow(corner img, img.cols / 2, img.rows / 2); // cv::imshow(corner img, img); // cv::waitKey(300);points_2d_vec.push_back(points_2d);}std::cout getKeyPoints succeed std::endl;return true; } Step2  计算单应性矩阵H 之前我们讲过世界坐标到像素坐标的映射关系 : 为了和论文对应我们将字母都换成论文中的字母。A是之前讲的K表示内参矩阵s是之间讲的表示系数。 由于Z0 单应性矩阵 同样的 通过最小二乘法可以将H求出。 为了使计算稳定需要先对数据进行Z-Score标准化 转换成矩阵的形式 我们需要将归一化矩阵保存下来在求出H后将数据还原 /*** Z-Score 标准化均值为0方差为1* param points 原始数据点* param normal_points 输出型参数标准化后的数据点* param normT 输出型参数归一化矩阵的转置*/ void CamCalibration::Normalize(const std::vectorcv::Point2f points, std::vectorcv::Point2f normal_points,cv::Mat normT) {//求均值float mean_x 0;float mean_y 0;for (const auto point: points) {mean_x point.x;mean_y point.y;}mean_x / points.size();mean_y / points.size();//求方差for (const auto point: points) {mean_x point.x;mean_y point.y;}float variance_x 0;float variance_y 0;for (const auto point: points) {float tmp_x pow(point.x - mean_x, 2);float tmp_y pow(point.y - mean_y, 2);variance_x tmp_x;variance_y tmp_y;}variance_x sqrt(variance_x);variance_y sqrt(variance_y);for (const auto point: points) {cv::Point2f p;p.x (point.x - mean_x) / variance_x;p.y (point.y - mean_y) / variance_y;normal_points.push_back(p);}normT.atfloat(0, 0) 1 / variance_x;normT.atfloat(0, 2) -mean_x / variance_x;normT.atfloat(1, 1) 1 / variance_y;normT.atfloat(1, 2) -mean_y / variance_y; } *** 计算单应性矩阵*/ void CamCalibration::CalcH() {const auto points_3d_vec points_3d_vec_;const auto points_2d_vec points_2d_vec_;for (int i 0; i points_2d_vec.size(); i) {//每一张图的世界坐标和像素坐标const auto points_3d points_3d_vec[i];const auto points_2d points_2d_vec[i];std::vectorcv::Point2f normal_points_3d, normal_points_2d;cv::Mat normT_3d, normT_2d;Normalize(points_3d, normal_points_3d, normT_3d);Normalize(points_2d, normal_points_2d, normT_2d);cv::Mat H cv::Mat::eye(3, 3, CV_32F);int corner_size normal_points_2d.size();if (corner_size 4) {std::cerr corner size 4;exit(-1);}cv::Mat A(corner_size * 2, 9, CV_32F, cv::Scalar(0));for (int i 0; i corner_size; i) {cv::Point2f point_3d points_3d[i];cv::Point2f point_2d points_2d[i];A.atfloat(i * 2, 0) point_3d.x;A.atfloat(i * 2, 1) point_3d.y;A.atfloat(i * 2, 2) 1;A.atfloat(i * 2, 3) 0;A.atfloat(i * 2, 4) 0;A.atfloat(i * 2, 5) 0;A.atfloat(i * 2, 6) -point_2d.x * point_3d.x;A.atfloat(i * 2, 7) -point_2d.x * point_3d.y;A.atfloat(i * 2, 8) -point_2d.x;A.atfloat(i * 2 1, 0) 0;A.atfloat(i * 2 1, 1) 0;A.atfloat(i * 2 1, 2) 0;A.atfloat(i * 2 1, 3) point_3d.x;A.atfloat(i * 2 1, 4) point_3d.y;A.atfloat(i * 2 1, 5) 1;A.atfloat(i * 2 1, 6) -point_2d.y * point_3d.x;A.atfloat(i * 2 1, 7) -point_2d.y * point_3d.y;A.atfloat(i * 2 1, 8) -point_2d.y;}cv::Mat U, W, VT; // A UWV^Tcv::SVD::compute(A, W, U, VT,cv::SVD::MODIFY_A | cv::SVD::FULL_UV); // Eigen 返回的是V,列向量就是特征向量, opencv 返回的是VT所以行向量是特征向量H VT.row(8).reshape(0, 3);// H inv_N2 * H * N3cv::Mat normT_2d_inv;cv::invert(normT_2d, normT_2d_inv);H normT_2d_inv * H * normT_3d;H_vec_.push_back(H);} } Step3  计算内参矩阵A 已知 B是对称矩阵所以只需存储上半矩阵 求出B就可以得到内参矩阵中的参数需要注意的是我们之前求的B是不带尺度因子的真实的B与求出的B差一个系数 step4 计算外参矩阵R、T 由于存在噪声我们求解的R不一定满足选装矩阵的特性 因此需要求解最优的旋转矩阵: 整个优化就可以看作最小化 令 ,当时 void CamCalibration::CalcRT() {const auto K K_;const auto H_vec H_vec_;auto R_vec R_vec_;auto t_vec t_vec_;cv::Mat K_inverse;cv::invert(K, K_inverse);for (const auto H: H_vec) {cv::Mat M K_inverse * H;cv::Vec3d r1(M.atdouble(0, 0), M.atdouble(1, 0), M.atdouble(2, 0));cv::Vec3d r2(M.atdouble(0, 1), M.atdouble(1, 1), M.atdouble(2, 1));cv::Vec3d r3 r1.cross(r2);cv::Mat Q cv::Mat::eye(3, 3, CV_64F);Q.atdouble(0, 0) r1(0);Q.atdouble(1, 0) r1(1);Q.atdouble(2, 0) r1(2);Q.atdouble(0, 1) r2(0);Q.atdouble(1, 1) r2(1);Q.atdouble(2, 1) r2(2);Q.atdouble(0, 2) r3(0);Q.atdouble(1, 2) r3(1);Q.atdouble(2, 2) r3(2);cv::Mat normQ;cv::normalize(Q, normQ);cv::Mat U, W, VT;cv::SVD::compute(normQ, W, U, VT, cv::SVD::MODIFY_A | cv::SVD::FULL_UV);cv::Mat R U * VT;R_vec.push_back(R);cv::Mat t cv::Mat::eye(3, 1, CV_64F);M.col(2).copyTo(t.col(0));t_vec.push_back(t);} } step4 计算畸变参数 张正友标定法只考虑了切向畸变畸变公式如下 和 分别是理想情况的归一化图像坐标和畸变后的归一化图像坐标r为图像像素点到图像中心点的距离距离越大畸变越大。 像平面一般接近90度所以为0因此 通过最小二乘法可求得k. void CamCalibration::CalDistCoeff() {std::vectordouble r2_vec;std::vectorcv::Point2f ideal_point_vec;//用一副图进行计算const cv::Mat K K_;const cv::Mat R R_vec_[0];const cv::Mat t t_vec_[0];auto points_3d points_3d_vec_[0];auto dist_coeff dist_coeff_;for (const auto point_3d: points_3d) {cv::Mat p_3d (cv::Mat_double(3, 1) point_3d.x, point_3d.y, 0);//世界坐标转相机坐标cv::Mat p_cam R * p_3d t;//转换成欧式坐标p_cam.atdouble(0, 0) p_cam.atdouble(0, 0) / p_cam.atdouble(2, 0);p_cam.atdouble(1, 0) p_cam.atdouble(1, 0) / p_cam.atdouble(2, 0);p_cam.atdouble(2, 0) 1;double x p_cam.atdouble(0, 0);double y p_cam.atdouble(1, 0);double r2 x * x y * y;r2_vec.push_back(r2);//相机坐标转像素坐标cv::Mat p_pix K * p_cam;ideal_point_vec.emplace_back(p_pix.atdouble(0, 0), p_pix.atdouble(1, 0));}const std::vectorcv::Point2f dist_point_vec points_2d_vec_[0];double u0 K.atdouble(0, 2);double v0 K.atdouble(1, 2);cv::Mat D cv::Mat::eye(ideal_point_vec.size() * 2, 2, CV_64F);cv::Mat d cv::Mat::eye(ideal_point_vec.size() * 2, 1, CV_64F);for (int i 0; i ideal_point_vec.size(); i) {double r2 r2_vec[i];const auto ideal_p ideal_point_vec[i];const auto dist_p dist_point_vec[i];D.atdouble(i * 2, 0) (ideal_p.x - u0) * r2;D.atdouble(i * 2, 1) (ideal_p.x - u0) * r2 * r2;D.atdouble(i * 2 1, 0) (ideal_p.y - v0) * r2;D.atdouble(i * 2 1, 1) (ideal_p.y - v0) * r2 * r2;d.atdouble(2 * i, 0) dist_p.x - ideal_p.x;d.atdouble(2 * i 1, 0) dist_p.y - ideal_p.y;}cv::Mat DT;cv::transpose(D, DT); // std::cout D: D std::endl;cv::Mat DTD_inverse;cv::invert(DT * D, DTD_inverse); // std::cout DTD_inv: DTD_inverse std::endl;dist_coeff DTD_inverse * DT * d;std::cout distort coeff: dist_coeff.atdouble(0, 0) , dist_coeff.atdouble(1, 0) std::endl; } 自此张正友相机标定完成当然我们所求出来的参数都是独立的是理想情况下的值因此需要使用最大似然估计进行优化这部分大家自行了解。 参考内容 计算机视觉之三维重建深入浅出SfM与SLAM核心算法——2.摄像机标定_哔哩哔哩_bilibili 张正友标定论文的解读和C代码编写-CSDN博客 A flexible new technique for camera calibration | IEEE Journals Magazine | IEEE Xplore

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

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

相关文章

中小型网站建设报价网站系统开发流程

文章目录 0 前言1 课题背景2 具体实现3 数据收集和处理3 MobileNetV2网络4 损失函数softmax 交叉熵4.1 softmax函数4.2 交叉熵损失函数 5 优化器SGD6 最后 0 前言 🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点&a…

查企企官方网站免费在线代理网页

作者推荐 视频算法专题 本文涉及知识点 数学 网格 状态压缩 LeetCode:782 变为棋盘 一个 n x n 的二维网络 board 仅由 0 和 1 组成 。每次移动,你能任意交换两列或是两行的位置。 返回 将这个矩阵变为 “棋盘” 所需的最小移动次数 。如果不存在可行的变换&am…

简易的小企业网站建设政协网站建设要求

空间 样本空间 就是属性的所有可能情况,包括了一切可能出现或不可能出现的所有样本情况 版本空间&假设空间 假设空间就是在样本空间的基础上,给所有属性都加了一个通配符,表示任意即可;以及加上了一个空集,表示…

app与微网站的区别是什么意思电子商务网站建设初学视频教程

在做项目时&#xff0c;随着需求的不断增加&#xff0c;我们的代码文件会越来越大&#xff0c;但是在打包时&#xff0c;在 Node 中通过 JavaScript 使用内存的大小却是有限制的。于是&#xff0c;今天打算部署代码时&#xff0c;报错了: <--- JS stacktrace ---> JS st…

如何注册网站平台重庆网站建设重庆零臻科技行

简介 在网络通信编程中&#xff0c;用的最多的就是UDP和TCP通信了&#xff0c;原理这里就不分析了&#xff0c;网上介绍也很多&#xff0c;这里简单列举一下各自的优缺点和使用场景 通信方式优点缺点适用场景UDP及时性好&#xff0c;快速视网络情况&#xff0c;存在丢包 与嵌入…

上传的网站打不开怎么办如何用网页制作网站

网页中的音视频 <audio> 和 <vedio> 标签属性&#xff1a;autoplay 自动播放 controls 控制播放 loop 循环播放 表单 HTML 表单用于收集用户输入。 标签<form> 标签属性 action 数据的路径 enctype 传输文件 enctype"multipart/form-data" method …

开封网站seo工作中网页开发方案

目录 线程安全和重⼊问题 死锁和活锁 死锁 死锁四个必要条件 活锁 STL,智能指针和线程安全 线程安全的单例模式 饿汉模式 懒汉模式 懒汉模式实现单例模式(线程安全版本) 饿汉模式实现单例模式 我们来学习单例模式与线程安全 线程安全和重⼊问题 线程安全&#xff…

自己电脑上做的网站 怎么让别人看口碑好的五屏网站建设

在硅谷一线大厂所维护的系统服务中&#xff0c;我们经常可以看见SLA这样的承诺。 例如&#xff0c;在谷歌的云计算服务平台Google Cloud Platform中&#xff0c;他们会写着“99.9% Availability”这样的承诺。那什么是“99.9% Availability”呢&#xff1f; 要理解这个承诺是…

西部数码上传网站柳州网站虚拟主机销售价格

介绍 本篇Codelab我们将教会大家如何构建一个简易的OpenHarmony新闻客户端&#xff08;JS版本&#xff09;。应用包含两级页面&#xff0c;分别是主页面和详情页面&#xff0c;两个页面都展示了丰富的UI组件&#xff0c;其中详情页的实现逻辑中还展示了如何通过调用相应接口&a…

广州网站建设电话咨询wordpress最新版本

较为官方的概念&#xff1a; 当且仅当规格说明是存在的并且正确&#xff0c;程序与规格说明之间的 不匹配才是错误。 当需求规格说明书没有提到的功能&#xff0c;判断标准以最终用户为准&#xff1a;当程序没有实现其最终用户合理预期的 功能要求时&#xff0c;就是软…

房地产网站建设策划书北京公司电话大全黄页

低功耗技术 功耗构成静态功耗(漏电功耗)动态功耗翻转功耗(Switch Power)短路功耗(Internal Power) 不同类型的标准单元的功耗 低功耗设计方法降低芯片工作电压多阈值工艺方法电源门控&#xff08;Power Gating&#xff09;多电压域(Multi-Voltage Domain)体偏置门控时钟一个简单…

班级响应式网站html格式游戏开发物语破解版

一.题目要求 给定一个非负整数 numRows&#xff0c;生成「杨辉三角」的前 numRows 行。 在「杨辉三角」中&#xff0c;每个数是它左上方和右上方的数的和。 二.题目难度 简单 三.输入样例 示例 1: 输入: numRows 5 输出: [[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1]] 示…

清远市住房与城乡建设局的网站查网站加背景音乐

已知有三个数据库mysql,mongodb和redis&#xff0c;已经分别存储了不同的学生信息&#xff0c;数据全部采用字符串类型&#xff0c;只有id和name两个字段(在mongo和redis中键为id,值为name)&#xff0c;现需编写代码实现需求&#xff1a;根据指定id获取对应的name和存储该条信息…

网站商城建站app是程序员做出来的吗

1 问题 app,自定义消息通知的时候,在Android8.0手机上收不到通知 2 解决办法 NotificationManager需要创建NotificationChannel,然后调用createNotificationChannel把NotificationChannel传递进去,并且通过setChannelId设置相应的id 3 普通样本代码实现 private static fina…

站长工具综合查询ip情人做网站

在上传文件时&#xff0c;想使用setRequestMethod&#xff08;“GET”&#xff09;。结果无效 因为需要使用输出流上传文件&#xff0c;而使用输出流时&#xff0c;HttpURLConnection默认使用post请求。是无法更改的 conn.setDoOutput(true); //允许输出流 与 conn.setR…

计算机网络 网站开发与设计网站推广的方式

背景 闲鱼目前已经是国内最大的闲置物品交易平台&#xff0c;每天都有数以千万计的用户过来闲鱼&#xff0c;以C2C交易为主。在闲鱼里面&#xff0c;用户的C2C购物频率其实是很低的&#xff0c;而纯粹地逛商品feed流是一件挺无聊的事情。在业务上做加法&#xff0c;突破闲鱼用…

jsp网站开发pdf市场营销与网络营销

Linux的 /etc/hosts 文件用于静态地映射主机名到 IP 地址。 通常用于本地网络中的名称解析&#xff0c;它可以覆盖 DNS 的设置。当你访问一个域名时&#xff0c;系统会首先检查 /etc/hosts 文件&#xff0c;如果找到了匹配项&#xff0c;就会使用该 IP 地址&#xff0c;否则会…

进入城乡建设网站怎么竣工备案网站被攻击

1.Local Binary Pattern( LBP) 算法原理 局部二值模式(Local Binary Pattern, LBP)是一种用于描述图像纹理特征的算法。它通过对图像的每个像素点与其邻域像素进行比较,得到一个二进制编码来表示该像素点的纹理信息。 LBP 算法的基本步骤如下: 选择一个中心像素点,并定…

网站资源做外链邢台网站建设免费做网站排名

SPU(Standard Product Unit) 标准化产品单元 SPU是能够描述一个产品的单元&#xff0c;比如说&#xff0c;iPhone8就是一个SPU&#xff0c;与商家、颜色、款式、套餐无关。 SKU(Stock Keeping Unit) 库存量单元 SKU是用来定价和管理库存的&#xff0c;比如说&#xff0c;iPhon…

吉林省级建设行政主管部门政务网站wordpress设置404

在数字化的时代洪流中&#xff0c;开源与闭源的选择不断成为技术界的重要分水岭。随着特斯拉CEO埃隆马斯克的言论及其决策&#xff0c;公开支持开源&#xff0c;并糅合商业理念与技术革新&#xff0c;使得这场辩论再次成为公众关注的焦点。那么&#xff0c;在这场关乎技术发展脉…