局域网网站建设步骤家具建设企业网站

bicheng/2025/10/15 2:42:14/文章来源:
局域网网站建设步骤,家具建设企业网站,佛山市水利工程建设信息网站,石家庄网络seo推广文章目录 02 RANSAC算法 及 Python 实现2.1 简介2.2 算法流程2.3 RANSAC 算法实现直线拟合2.4 利用 RANSAC 算法减少 ORB 特征点误匹配 02 RANSAC算法 及 Python 实现 2.1 简介 RANSAC #xff08;Random Sample Consensus#xff0c;随机抽样一致#xff09;算法的 基本假… 文章目录 02 RANSAC算法 及 Python 实现2.1 简介2.2 算法流程2.3 RANSAC 算法实现直线拟合2.4 利用 RANSAC 算法减少 ORB 特征点误匹配 02 RANSAC算法 及 Python 实现 2.1 简介 RANSAC Random Sample Consensus随机抽样一致算法的 基本假设 是样本中包含正确数据(inliers即内点可以被模型描述的数据)也包含异常数据(outliers 即外点偏离正常范围很远、无法适应数学模型的数据)也就是说数据集中含有噪声。 我们的目的就是找出 使内点最多的模型参数类似最小二乘法最小二乘法试图找到满足所有点的参数而 RANSAC 是为了消除误匹配尽量找到更多内点去除外点。 2.2 算法流程 RANSAC 是通过反复选择数据集去估计出模型参数一直迭代到估计出认为比较好的模型。 具体的实现步骤可以分为以下几步 1选择出可以估计出模型的最小数据集(对于直线拟合来说就是两个点对于计算单应矩阵就是 4 个点) 2使用这个最小数据集计算出模型参数 3将所有数据带入这个模型计算并记录“内点”的数目(在误差允许范围内的点的数目) 4与之前记录的最好模型的“内点”数量进行比较若表现更好则将此模型更新为最优模型 5重复以上步骤直至达到最大迭代次数或“内点”数量满足要求。 2.3 RANSAC 算法实现直线拟合 # Time : 2022/11/7 20:11 # Author : xiao cong # Function : RANSAC 算法实现直线拟合import numpy as np import matplotlib.pyplot as plt import randomITERS 1000 # 最大迭代次数 SIZE 50 # 样本数量 RATIO 0.6 # 期望为内点的比例 INLIERS SIZE * RATIO # 内点# 生成样本数据 X np.linspace(0, 5, SIZE) Y 2 * X 5 for index in range(SIZE):sigma np.random.uniform(-0.5, 0.5) # 生成高斯噪声Y[index] sigma# 绘散点图 plt.figure() plt.scatter(X, Y) plt.xlabel(x) plt.ylabel(y)# 使用 RANSAC 算法估算模型 iter 0 # 迭代次数 max_inliers 0 # 先前最多内点数量 best_a 0 # 最优参数 best_b 0 error 0.5 # 允许最小误差while iter ITERS and max_inliers INLIERS:# 随机选取两个点计算模型参数random_index random.sample(range(0, SIZE), 2) # 返回索引列表x1 X[random_index[0]]y1 Y[random_index[0]]x2 X[random_index[1]]y2 Y[random_index[1]]a (y2 - y1) / (x2 - x1) # 斜率b y1 - a * x1 # 截距inliers 0 # 本次内点数量# 代入模型计算内点数量for index in range(SIZE):y_estimate a * X[index] bif abs(Y[index] - y_estimate) error:inliers 1if inliers max_inliers:best_a abest_b bmax_inliers inliersiter 1# 画出拟合直线 Y_estimate best_a * X best_b plt.plot(X, Y_estimate, linewidth2.0, colorr) text best_a: str(round(best_a, 2)) \nbest_b: str(round(best_b, 2)) \\nmax_inliers: str(int(max_inliers)) plt.text(3, 6, text, fontdict{size: 10, color: r}) plt.title(RANSAC) plt.show()2.4 利用 RANSAC 算法减少 ORB 特征点误匹配 特征点匹配会有很多误匹配的点所以求出基础矩阵 F \boldsymbol{F} F用它来做更精准的匹配。这里以 ORB 为例FAST 特征点就是 RANSAC 算法的数据样本。 由 对极约束得到 p 2 T F p 1 0 \boldsymbol{p_2^{\mathrm{T}}}\boldsymbol{F}\boldsymbol{p_1}0 p2T​Fp1​0 其中 p 1 \boldsymbol{p_1} p1​、 p 2 \boldsymbol{p_2} p2​ 为匹配点的像素坐标 。 分别为 ORB_features.png*、all_matches.png、goodmatches.png、*after_RANSAC.png. #include iostream #include opencv2/features2d.hpp #include opencv2/opencv.hppusing namespace std; using namespace cv;int main() {// 读取图像Mat img_01 imread(/home/cong/slambook_code/test/img_01.png);Mat img_02 imread(/home/cong/slambook_code/test/img_02.png);// 提取 ORB 特征点vectorKeyPoint keypoints_01, keypoints_02; // FAST 特征点Mat descriptors_01, descriptors_02; // BRIEF 描述子PtrFeatureDetector detector ORB::create(); // 初始化PtrDescriptorExtractor descriptor ORB::create();PtrDescriptorMatcher matcher DescriptorMatcher::create(BruteForce-Hamming);//-- 第一步:检测 Oriented FAST 角点位置detector-detect(img_01, keypoints_01);detector-detect(img_02, keypoints_02);//-- 第二步:根据角点位置计算 BRIEF 描述子descriptor-compute(img_01, keypoints_01, descriptors_01);descriptor-compute(img_02, keypoints_02, descriptors_02);Mat outimg_01;drawKeypoints(img_01, keypoints_01, outimg_01, Scalar::all(-1), DrawMatchesFlags::DEFAULT);imwrite(ORB_features.png, outimg_01);imshow(ORB features, outimg_01);//-- 第三步:对两幅图像中的BRIEF描述子进行匹配计算 Hamming 距离// matches 用来存储匹配点对的信息包括//queryIdx测试图像的特征点描述符的下标//trainIdx样本图像的特征点描述符下标//distance特征点描述子的欧式距离vectorDMatch matches;matcher-match(descriptors_01, descriptors_02, matches);//-- 第四步:匹配点对筛选(距离过大的一对点将被认为误匹配)// 找出所有匹配之间的最小距离和最大距离, 即最相似的和最不相似的两组点之间的距离auto min_max minmax_element(matches.begin(), matches.end(),[] (const DMatch m1, const DMatch m2) {return m1.distance m2.distance;});double min_dist min_max.first-distance;double max_dist min_max.second-distance;//当描述子之间的距离大于两倍的最小距离时,即认为匹配有误.// 但有时候最小距离会非常小,设置一个经验值30作为下限.vectorDMatch good_matches;for(int i 0; i descriptors_01.rows; i){if(matches[i].distance max(2*min_dist, 30.0))good_matches.push_back(matches[i]);}//-- 第五步:绘制匹配结果Mat img_match;Mat img_goodmatch;drawMatches(img_01, keypoints_01, img_02, keypoints_02, matches, img_match);drawMatches(img_01, keypoints_01, img_02, keypoints_02, good_matches, img_goodmatch);imwrite(all_matches.png, img_match);imwrite(good_matches.png, img_goodmatch);imshow(all matches, img_match);imshow(good matches, img_goodmatch);/*******************************************************************/// 下面用 RANSAC 算法去除误匹配// 主要分为三个部分// 1根据matches将特征点对齐,将坐标转换为float类型// 2使用求基础矩阵方法 findFundamentalMat,得到RansacStatus// 3根据RansacStatus来将误匹配的点也即RansacStatus[i]0的点删除// 1根据 matches 将特征点对齐(也就是 使对应的一对特征点的下标相同)vectorKeyPoint R_keypoint_01, R_keypoint_02; // 存储对应的特征点for(size_t i 0; i matches.size(); i){R_keypoint_01.push_back(keypoints_01[matches[i].queryIdx]); // 存储img01中能与img02匹配的特征点的索引值R_keypoint_02.push_back(keypoints_02[matches[i].trainIdx]);}// 像素坐标转换成 floatvectorPoint2f p01, p02;for(size_t i 0; i matches.size(); i){p01.push_back(R_keypoint_01[i].pt); // 坐标p02.push_back(R_keypoint_02[i].pt);}// 利用基础矩阵剔除误匹配点vectoruchar RansacStatus;Mat Fundamental findFundamentalMat(p01, p02, RansacStatus, FM_RANSAC);vectorKeyPoint RR_keypoint_01, RR_keypoint_02;vectorDMatch RR_matches; // 筛选后的匹配点int index 0;for(size_t i 0; i matches.size(); i){if(RansacStatus[i] ! 0){RR_keypoint_01.push_back(R_keypoint_01[i]);RR_keypoint_02.push_back(R_keypoint_02[i]);matches[i].queryIdx index;matches[i].trainIdx index;RR_matches.push_back(matches[i]);index;}}Mat img_RR_matches;drawMatches(img_01, RR_keypoint_01, img_02, RR_keypoint_02, RR_matches, img_RR_matches);imwrite(after_RANSAC.png, img_RR_matches);imshow(after RANSAC, img_RR_matches);waitKey(0);return 0; }

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

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

相关文章

网站做成app需要多少钱46云虚拟主机

想要网上找代码发现github上不去了 发现之前的fastgit也用不了了 搜了很多地方终于找到了 记录保存一下 fastgithub最新下载 选择第二个下载解压就行 使用成功!

c网站开发源代码设计非常漂亮的网站

😎 作者介绍:我是程序员洲洲,一个热爱写作的非著名程序员。CSDN全栈优质领域创作者、华为云博客社区云享专家、阿里云博客社区专家博主、前后端开发、人工智能研究生。公众号:洲与AI。 🎈 本文专栏:本文收录…

微餐饮网站建设官网wordpress网标

检索增强生成(RAG)已成为增强大型语言模型(LLM)能力的一种强大技术。通过从知识来源中检索相关信息并将其纳入提示,RAG为LLM提供了有用的上下文,以产生基于事实的输出。 但是现有的单代理RAG系统面临着检索效率低下、高延迟和次优提示的挑战。这些问题在…

提供网站建设商家怎样做网站网站

个人主页:金鳞踏雨 个人简介:大家好,我是金鳞,一个初出茅庐的Java小白 目前状况:22届普通本科毕业生,几经波折了,现在任职于一家国内大型知名日化公司,从事Java开发工作 我的博客&am…

旅游类网站开发开题报告范文广东建设网站

前言 1Panel 是一个现代化、开源的 Linux 服务器运维管理面板。1Panel 的功能和优势包括: 快速建站:深度集成 Wordpress 和 Halo,域名绑定、SSL 证书配置等一键搞定;高效管理:通过 Web 端轻松管理 Linux 服务器,包括主机监控、文件管理、数据库管理、容器管理等;安全可…

铁道部售票网站多少钱建设建立自我追求无我是什么意思

未来已来!AI大模型正以惊人的速度引领着科技革命。随着科技的发展,人工智能在各个领域展现出了非凡的能力和潜力,大模型更是成为了科技领域的明星。从自然语言处理到图像识别,从智能推荐到语音识别,大模型的应用正在改…

网站建设的电销湖南手机网站制作公司

案例目标 文字部分自适应并且居中 图中是一个弹窗&#xff0c;我现在使用flex的布局来实现&#xff0c;标题和关闭按钮。因为是uni-app,所以标签是view 。你可以自行替换为 代码 <view class"popup-box"><view class"title"><view class&…

品牌查询网站 优帮云wordpress 发短信

Redis SETNX 特性 当然&#xff0c;让我们通过一个简单的例子&#xff0c;使用 Redis CLI&#xff08;命令行界面&#xff09;来模拟获取锁和释放锁的过程。 在此示例中&#xff0c;我将使用键“lock:tcaccount_[pk]”和“status:tcaccount_[pk]”分别表示锁定键和状态键。 获…

众筹那些网站可以做广西网站建设软件推广

1、什么是网关&#xff1f; API Gateway&#xff08;APIGW / API 网关&#xff09;&#xff0c;顾名思义&#xff0c;是系统对外的唯一入口。API 网关封装了系统内部架构&#xff0c;为每个客户端提供定制的 API。 近几年来移动应用与企业间互联需求的兴起。从以前单一的 Web …

合肥网站建设 乐云seo如何自己做网站手机软件

引言 在数字存储技术的领域中&#xff0c;闪存&#xff08;Flash&#xff09;是一种非易失性存储器&#xff0c;以其高速读写、低功耗和较高的可靠性而备受关注。相比于传统的磁盘存储技术&#xff0c;闪存具有更小的体积、更高的数据密度和更长的寿命&#xff0c;因此在各种应…

北京时间网站建设做lt行业的人让我登网站

综合类网站 那些免费的砖 统计推荐免费工具网站 那些免费的砖 - 优雅地白嫖各种免费资源 (thosefree.com)https://www.thosefree.com/ CSS样式网站 毒蘑菇-配色 CSS 配色&#xff0c;阴影网站 一个好用的配色网站! 毒蘑菇 - 配色 (dumogu.top)https://color.dumogu.top/ …

静态网页怎么做网站wordpress 注册页面插件

1. 数据类型 1.1 常量 整数&#xff1a;整数可以用二进制b或B&#xff0c;八进制o或O&#xff0c;十进制d或D&#xff0c;十六进制h或H表示&#xff0c;例如&#xff0c;8’b00001111表示8位位宽的二进制整数&#xff0c;4’ha表示4位位宽的十六进制整数。 X和Z&#xff1a;X…

中国国音电商平台官网乐陵seo营销

​ web安全渗透 1.通过URL访问http://靶机IP/1&#xff0c;对该页面进行渗透测试&#xff0c;将完成后返回的结果内容作为flag值提交&#xff1b; 访问该网页后发现F12被禁用&#xff0c;使用ctrlshifti查看 ctrlshifti 等效于 F12 flag{fc35fdc70d5fc69d269883a822c7a53e} …

广州市公司网站建设企业河北专业网络营销收费公司

✍✍计算机毕业编程指导师 ⭐⭐个人介绍&#xff1a;自己非常喜欢研究技术问题&#xff01;专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目&#xff1a;有源码或者技术上的问题欢迎在评论区一起讨论交流&#xff01; ⚡⚡ Java、…

天宁区建设局网站门户网站营销怎么做

文章目录 SqlClient工具的使用 一、​​​​​​​入门

黑马程序员前端培训费用seo程序专员

回答者&#xff1a; 凌波微步- 高级工程师&nbsp&nbsp第11级2009-03-09 08:54:18您可以评论本回答&#xff0c;或直接点击“提交”按钮推荐本回答...我可以取出来&#xff0c;但显示不了。我显示时用的是ms listbox 2.0控件&#xff0c;不过没成功显示出来&#xff0c;多…

网站设计与制作专业软件销售具体怎么做的

框架设计远没有大家想的那么简单&#xff0c;并不是说只把功能开发完成&#xff0c;能用就算完事儿了&#xff0c;这里面还是有很多学问的。比如说&#xff0c;我们的框架应该给用户提供哪些构建产物&#xff1f;产物的模块格式如何&#xff1f;当用户没有以预期的方式使用框架…

云服务器网站解析做公司官网需要哪些数据

题目描述 小明是蓝桥王国的骑士&#xff0c;他喜欢不断突破自我。 这天蓝桥国王给他安排了 N 个对手&#xff0c;他们的战力值分别为 a_1,a_2,…,a_n&#xff0c;且按顺序阻挡在小明的前方。对于这些对手小明可以选择挑战&#xff0c;也可以选择避战。 身为高傲的骑士&#xff…

网站结构形式有哪些昌吉市建设局网站

目录 先分个类吧&#xff1a; 1.对于有向无环图&#xff0c;我们直接拓扑排序&#xff0c;和AOE网类似&#xff0c;把取max改成min即可。 2.边权全部相等&#xff0c;直接BFS即可 3.单源点最短路 从一个点出发&#xff0c;到达其他顶点的最短路长度。 Dijkstra算法&#x…

网站加入地图导航seo公司推广宣传

配电系统中谐波电流的计算涉及很多因素。对于改造项目&#xff0c;可使用专业电能质量分析仪测得所需谐波数据&#xff1b;对于新建项目&#xff0c;设计人员并不能直接获得供电系统的的谐波数据&#xff0c;因此&#xff0c;我司研发人员通过众多不同行业、不同类型的项目&…