网站建设亿金手指花总12自动更新的网站建设

news/2025/9/29 20:49:59/文章来源:
网站建设亿金手指花总12,自动更新的网站建设,重庆建网站搜索快忻科技,星月教你做网站前言 小编研究生的研究方向是视觉SLAM#xff0c;目前在自学#xff0c;本篇文章为初学高翔老师课的第四次作业。 文章目录 前言1.图像去畸变2.双目视差的使用3.矩阵微分4.高斯牛顿法的曲线拟合实验 1.图像去畸变 现实⽣活中的图像总存在畸变。原则上来说#xff0c;针孔透…前言 小编研究生的研究方向是视觉SLAM目前在自学本篇文章为初学高翔老师课的第四次作业。 文章目录 前言1.图像去畸变2.双目视差的使用3.矩阵微分4.高斯牛顿法的曲线拟合实验 1.图像去畸变 现实⽣活中的图像总存在畸变。原则上来说针孔透视相机应该将三维世界中的直线投影成直线但是当我们使⽤⼴⾓和鱼眼镜头时由于畸变的原因直线在图像⾥看起来是扭曲的。本次作业你将尝试如何对⼀张图像去畸变得到畸变前的图像。 对于畸变用两张鲜明的照片来展示 undistort_image.cpp // // Created by ljh on 2023/11/5. //#include opencv2/opencv.hpp #include stringusing namespace std;string image_file /home/lih/video4_homework/homework1/test.png; // 请确保路径正确int main(int argc, char **argv) {// 本程序需要你自己实现去畸变部分的代码。尽管我们可以调用OpenCV的去畸变但自己实现一遍有助于理解。// 畸变参数double k1 -0.28340811, k2 0.07395907, p1 0.00019359, p2 1.76187114e-05;// 内参double fx 458.654, fy 457.296, cx 367.215, cy 248.375;cv::Mat image cv::imread(image_file,0); // 图像是灰度图CV_8UC1int rows image.rows, cols image.cols;cv::Mat image_undistort cv::Mat(rows, cols, CV_8UC1); // 去畸变以后的图// 计算去畸变后图像的内容for (int v 0; v rows; v)for (int u 0; u cols; u) {double u_distorted 0, v_distorted 0;// TODO 按照公式计算点(u,v)对应到畸变图像中的坐标(u_distorted, v_distorted) (~6 lines)// start your code here// 按照公式计算点(u,v)对应到畸变图像中的坐标(u_distorted, v_distorted) double x (u-cx)/fx, y (v-cy)/fy; // 计算图像点坐标到光心的距离 double r sqrt(x*xy*y);// 计算投影点畸变后的点 double x_distorted x*(1k1*rk2*r*r)2*p1*x*yp2*(r2*x*x); double y_distorted y*(1k1*rk2*r*r)2*p2*x*yp1*(r2*y*y); // 把畸变后的点投影回去 u_distorted x_distorted*fxcx; v_distorted y_distorted*fycy;// end your code here// 赋值 (最近邻插值)if (u_distorted 0 v_distorted 0 u_distorted cols v_distorted rows) {image_undistort.atuchar(v, u) image.atuchar((int) v_distorted, (int) u_distorted);} else {image_undistort.atuchar(v, u) 0;}}// 画图去畸变后图像cv::imshow(image undistorted, image_undistort);cv::waitKey();return 0; }string image_file “/home/lih/video4_homework/homework1/test.png”; // 填写你自己的图片路径 CMakeLists.txt cmake_minimum_required(VERSION 2.8)PROJECT(undistort_image)IF(NOT CMAKE_BUILD_TYPE) #可选如果没有指定cmake编译模式就选择Relealse模式必须写成三行SET(CMAKE_BUILD_TYPE Release) ENDIF()MESSAGE(Build type: ${CMAKE_BUILD_TYPE}) #终端打印cmake编译模式的信息set(CMAKE_C_FLAGS ${CMAKE_C_FLAGS} -Wall -O3 -marchnative ) #添加c标准支持库 set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} -Wall -O3 -marchnative) #添加c标准支持库# Check C11 or C0x support #检查c11或c0x标准支持库 include(CheckCXXCompilerFlag) CHECK_CXX_COMPILER_FLAG(-stdc11 COMPILER_SUPPORTS_CXX11) CHECK_CXX_COMPILER_FLAG(-stdc0x COMPILER_SUPPORTS_CXX0X) if(COMPILER_SUPPORTS_CXX11)set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} -stdc11)add_definitions(-DCOMPILEDWITHC11)message(STATUS Using flag -stdc11.) elseif(COMPILER_SUPPORTS_CXX0X)set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} -stdc0x)add_definitions(-DCOMPILEDWITHC0X)message(STATUS Using flag -stdc0x.) else()message(FATAL_ERROR The compiler ${CMAKE_CXX_COMPILER} has no C11 support. Please use a different C compiler.) endif()find_package(OpenCV 3.0 QUIET) #find_package(Name)命令首先会在模块路径中寻找 Findname.cmake if(NOT OpenCV_FOUND)find_package(OpenCV 2.4.3 QUIET)if(NOT OpenCV_FOUND)message(FATAL_ERROR OpenCV 2.4.3 not found.)endif() endif()include_directories(${OpenCV_INCLUDE_DIRS})add_executable(image undistort_image.cpp)#链接OpenCV库 target_link_libraries(image ${OpenCV_LIBS}) 然后 mkdir build cd build cmake … make ./image 2.双目视差的使用 双⽬相机的⼀⼤好处是可以通过左右⽬的视差来恢复深度。课程中我们介绍了由视差计算深度的过程。本题你需要根据视差计算深度进⽽⽣成点云数据。本题的数据来⾃Kitti 数据集 [2]。 Kitti中的相机部分使⽤了⼀个双⽬模型。双⽬采集到左图和右图然后我们可以通过左右视图恢复出深度。经典双⽬恢复深度的算法有 BM(Block Matching), SGBM(Semi-Global Matching)[3, 4]等但本题不探讨⽴体视觉内容那是⼀个⼤问题。我们假设双⽬计算的视差已经给定请你根据双⽬模型画出图像对应的点云并显⽰到 Pangolin 中。题给定的左右图见 code/left.png 和 code/right.png视差图亦给定见code/right.png。双⽬的参数如下 fx 718.856; fy 718.856; cx 607.1928; cy 185.2157 且双⽬左右间距即基线为 d 0.573 m 请根据以上参数计算相机数据对应的点云并显⽰到 Pangolin 中。程序请code/disparity.cpp ⽂件。 disparity.cpp // start your code here// 根据双目模型计算 point 的位置double x (u - cx) / fx;double y (v - cy) / fy;double depth fx * b / (disparity.atfloat(v, u));point[0] x * depth;point[1] y * depth;point[2] depth;// end your code here double x和double y的计算方式和上一题一样,depth就算如下 计算出depth后那么point模仿课上五对图片那个实践仿写即可。只不过实践中的d(视差)没有给出而此题中视差d已给所以公式写出来略有不同。 CMakeLists.txt: cmake_minimum_required( VERSION 2.8 ) project(stereoVision) set( CMAKE_CXX_FLAGS -stdc11 -O3)include_directories(/usr/include/eigen3) find_package(Pangolin REQUIRED) include_directories( ${Pangolin_INCLUDE_DIRS} )find_package(OpenCV 3.0 QUIET) #find_package(Name)命令首先会在模块路径中寻找 Findname.cmake if(NOT OpenCV_FOUND)find_package(OpenCV 2.4.3 QUIET)if(NOT OpenCV_FOUND)message(FATAL_ERROR OpenCV 2.4.3 not found.)endif() endif()include_directories(${OpenCV_INCLUDE_DIRS})add_executable(disparity disparity.cpp) target_link_libraries(disparity ${OpenCV_LIBRARIES}) target_link_libraries(disparity ${Pangolin_LIBRARIES})然后就是编译五部曲 mkdir build cd build cmake … make ./disparity 如果你出现了这张图片那就是你的disparity.cpp中的图片位置没有写对找不到图片所导致的 运行成功如下 3.矩阵微分 ①第一问如果大家有不理解的地方可以看看这个印度三哥的视屏我认为讲的还是非常清晰的至少我搜了很多国内的都没有这个讲得好虽然语言不通但是一点都不影响学习。高博的清华PPT还是不适合我这种人看。 链接: 矩阵求导讲解 ②第二问如果大家有不理解的地方可以看看这个印度三哥的视屏我认为讲的还是非常清晰的至少我搜了很多国内的都没有这个讲得好虽然语言不通但是一点都不影响学习。高博的清华PPT还是不适合我这种人看。 链接: 矩阵求导讲解 ③第三问 4.高斯牛顿法的曲线拟合实验 当然我觉得大家很有必要了解一下这一块的由来我的上一篇博客讲述了海斯矩阵凸函数等基本概念大家看这个之前我认为很必要学习一下 链接: SLAM第四讲实践中的最优化知识 在做这道题之前我们非常有必要了解一下什么是牛顿法法因为高斯牛顿法是牛顿法的改进我以一道最优化的简单立体让你明白什么是牛顿法 下来我们再看高斯牛顿法我搜查了很多资料很难找到一道高斯牛顿法的数学题来让大家理解所以我只能找到一个更为详细点的高斯牛顿法的计算步骤让大家理解 到这里我们开始做题 gaussnewton.cpp #include iostream #include chrono #include opencv2/opencv.hpp #include Eigen/Core #include Eigen/Denseusing namespace std; using namespace Eigen;int main(int argc, char **argv) {double ar 1.0, br 2.0, cr 1.0; // 真实参数值double ae 2.0, be -1.0, ce 5.0; // 估计参数值int N 100; // 数据点double w_sigma 1.0; // 噪声Sigma值double inv_sigma 1.0 / w_sigma;cv::RNG rng; // OpenCV随机数产生器vectordouble x_data, y_data; // 数据for (int i 0; i N; i) {double x i / 100.0;x_data.push_back(x);y_data.push_back(exp(ar * x * x br * x cr) rng.gaussian(w_sigma * w_sigma));}// 开始Gauss-Newton迭代int iterations 100; // 迭代次数double cost 0, lastCost 0; // 本次迭代的cost和上一次迭代的costchrono::steady_clock::time_point t1 chrono::steady_clock::now();for (int iter 0; iter iterations; iter) {Matrix3d H Matrix3d::Zero(); // Hessian J^T W^{-1} J in Gauss-NewtonVector3d b Vector3d::Zero(); // biascost 0;for (int i 0; i N; i) {double xi x_data[i], yi y_data[i]; // 第i个数据点double error yi - exp(ae * xi * xi be * xi ce);//计算雅可比矩阵JXk和误差f(Xk)Vector3d J; // 雅可比矩阵J[0] -xi * xi * exp(ae * xi * xi be * xi ce); // de/daJ[1] -xi * exp(ae * xi * xi be * xi ce); // de/dbJ[2] -exp(ae * xi * xi be * xi ce); // de/dcH inv_sigma * inv_sigma * J * J.transpose();b -inv_sigma * inv_sigma * error * J;cost error * error;}// 求解线性方程 HxbVector3d dx H.ldlt().solve(b);if (isnan(dx[0])) {cout result is nan! endl;break;}if (iter 0 cost lastCost) {cout cost: cost last cost: lastCost , break. endl;break;}ae dx[0];be dx[1];ce dx[2];lastCost cost;cout total cost: cost , \t\tupdate: dx.transpose() \t\testimated params: ae , be , ce endl;}chrono::steady_clock::time_point t2 chrono::steady_clock::now();chrono::durationdouble time_used chrono::duration_castchrono::durationdouble(t2 - t1);cout solve time cost time_used.count() seconds. endl;cout estimated abc ae , be , ce endl;return 0; } CMakeLists.txt cmake_minimum_required(VERSION 2.8) project(homework4) set(CMAKE_BUILD_TYPE Release) set(CMAKE_CXX_FLAGS -stdc14 -O3) list(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake) # OpenCV find_package(OpenCV REQUIRED) include_directories(${OpenCV_INCLUDE_DIRS}) # Eigen include_directories(/usr/include/eigen3)add_executable(homework4 gaussnewton.cpp) target_link_libraries(homework4 ${OpenCV_LIBS}) 然后老五套 mkdir build cd build cmake … make ./homework4

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

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

相关文章

获得网站源文件小清新网站源码

一、Mybaits的优点: 1、基于 SQL 语句编程,相当灵活,不会对应用程序或者数据库的现有设计造成任 何影响,SQL 写在 XML里,解除 sql与程序代码的耦合,便于统一管理;提供 XML 标签,支持…

凡科网站空间慢专做蓝领招聘网站有哪些

python中numpy矩阵运算操作大全(非常全) //2019.07.10晚python矩阵运算大全1、矩阵的输出形式:对于任何一个矩阵,python输出的模板是:import numpy as np #引入numpy模块np1np.array([[1,2,3],[1,3,4],[1,6,2]...]) #数…

AtCoder AGC073 A 题解

题目链接:https://atcoder.jp/contests/agc073/tasks/agc073_a 参考出题人题解 首先理解题意可以破圆为链,直接枚举肯定会超时,考虑将转化成期望,对于某一段黑色区域,当某区域包含一段弧时,我们给每个端点加上 \…

网站flash制作教程收录平台

FreeRTOS-事件标志组 一、事件标志组简介二、事件标志组API函数三、事件标志组实验 一、事件标志组简介 事件标志位:用一个位来表示事件是否发生,裸机中的中断标志位等等事件标志组:是一组事件标志位的集合,简单认为就是一个整数…

怎么开个人网站阿里云 wordpress 响应时间

Redis 实现分布式Session 登录 借助 Redis 对 Session 信息进行统一的存储和管理,这样无论请求发送到哪台服务器,服务器都会去同一个 Redis 获取相关的 Session 信息,这样就解决了分布式系统下 Session 存储的问题。 【发送短信】校验手机号…

什么浏览器好用可以看任何网站android开发wordpress

「Author:Runsen」当初学Python的时候,把一些标准库和第三方开源库学的七零八落,不成系统,正好趁这个机会来系统的整理一下,先从Python常用的标准库os开始吧。osOS模块简单的来说它是一个Python的系统编程的操作模块&a…

童装网站建设目标网站建设公司做销售前景好不好

文章目录 前言一、抽象类和接口对比二、举例说明三种情况1.接口实现类接口 2.抽象类实现类抽象类实现类(子类) 3.抽象类实现接口接口抽象类三个实现类 总结 前言 抽象类和接口其实都是抽象的一种,那么他俩有何异同呢? 抽象类实现接口的意义何在? 一、抽象类和接口对比 接口…

wordpress下载网站西安哪里可以做公司网站

实时监控: 可视化大屏可以实时监控通讯网络的运行状态和性能指标。通过可视化展示网络的拓扑结构、设备状态、带宽利用率、延迟等数据,运维人员可以及时发现和解决网络故障,保障通讯网络的稳定性和可靠性。 故障诊断与分析: 可视…

山西企业网站建设手机app制作网站

真格这周是学习使用了不少,功能算是很不错,但在做的时候也发现了一个问题: 数据缺失:我在做回测,要求获取每天的delta值,并从中筛选条件值时,报错,显示无数据。不得不使用pass,影响我的回测连贯性。 现在开始讲下,我做的几个功能函数: 算起来,挺烦的,就是各种细节…

本地网站服务器搭建360网站建设基本情况

1 Ansible 介绍 Ansible是一个配置管理系统configuration management system, python 语言是运维人员必须会的语言, ansible 是一个基于python 开发的(集合了众多运维工具 puppet、cfengine、chef、func、fabric的优点)自动化运维工具, 其功能实现基于ss…

雄安免费网站建设公司智能建站代理

目录 问题描述 解决方案 方案1: 方案2: 结果示意图 问题描述 做UI的时候,我们很多时候需要给绘制一个圆角边框,初识Qt绘制的童鞋,可能绘制出来的圆角边框很是锯齿,而且粗细不均匀,如下图&…

郑州网站建设兄长好晋城客运东站网站开发

获取源码或者论文请私信博主 演示视频: 基于微信小程序的中医体质辨识文体活动的设计与实现(Javaspring bootMySQL) 使用技术: 前端:html css javascript jQuery ajax thymeleaf 微信小程序 后端:Java s…

郑州网站排名公司微信营销的方式有哪些

摘录自:PendingIntent详解 如何判断两个PendingIntent对等: 两个PendingIntent对等是指它们的operation一样, 且其它们的Intent的action, data, categories, components和flags都一样。但是它们的Intent的Extra可以不一样。 主要常量 FLAG_CANCEL_CUR…

Monsters And Spells

题目大意 给定一个长度为 \(n\) 的序列 \(a\),你需要构造一个序列 \(b\) 满足:\(b_0 = 0\) 对于任意一个 \(1 < i < n\),\(b_i \ge a_i\) 对于任意一个 \(1 < i < n\),\(b_i\) 为 \(0\),\(1\) 或 \(b…

Bilibili音频播放器开发 2025-9-29

🎯 前言我的网易云音乐快过期了(10-2)。📅 大致效果主窗口:下载窗口:歌单窗口:📝 总结与反思整体的实现上依靠的是GPT。 可以考虑一下嵌入式之类的方便嵌入手机进行使用。 发朋友圈没人赞......很尴尬了。其…

防爬虫逆向日志爆炸,精简追踪不崩浏览器控制台 - 详解

防爬虫逆向日志爆炸,精简追踪不崩浏览器控制台 - 详解pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas&q…

网站备案 有效期中小企业网络规划与设计方案

题目描述(力扣题库 84): 给定 n 个非负整数&#xff0c;用来表示柱状图中各个柱子的高度。每个柱子彼此相邻&#xff0c;且宽度为 1 。求在该柱状图中&#xff0c;能够勾勒出来的矩形的最大面积。 解题思想: 单调栈: 利用先进后出的思想, 先算出长度更高的柱子所能勾勒…

使用 Jenkins 的流水线方案实施 CI/CD

使用 Jenkins 的流水线方案实施 CI/CDpre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Mona…

抚松做网站wordpress小程序二开

这几天公司在排查内部数据账号泄漏&#xff0c;原因是发现某些实习生小可爱居然连带着账号、密码将源码私传到GitHub上&#xff0c;导致核心数据外漏&#xff0c;孩子还是没挨过社会毒打&#xff0c;这种事的后果可大可小。说起这个我是比较有感触的&#xff0c;之前我TM被删库…