SFM(Structure from Motion)一点总结

2023-11-11

SFM(Structure from Motion)一点总结

运动结构恢复(Structure from motion)数十年来一直是计算机视觉领域的热门研究方向之一,实现了众多实际应用,尤其在近景三维重建中,该算法从获取的目标物系列影像出发,最终获取较高精度的目标物稀疏三维点云。

简介

运动结构恢复(Structure from motion),即给出多幅图像及其图像特征的一个稀疏对应集合,估计3D点的位置,这个求解过程通常涉及3D几何(结构)和摄像机姿态(运动)的同时估计[1]。由于图像之间可能是无序的,并且图像数据量大,数据来源广而丰富。针对以上特点,出现了三种SFM策略包括增量式[2-12]、层级式[13]以及全局式[14-16]。关于三种策略示例图如图1,增量式即先选出两张影像进行初始化,接着一张张图像进行配准及点的三角化;全局式即一次性将所有的影像进行配准与重建;层级式先将影像进行分组,每组进行配准,再对上一步的结果进行配准重建。其中,增量式在无序图像数据集重建中应用最广泛,Bundler[17]、VisualSfM[18]、COLMAP[19]等优秀的SFM算法的出现,为SFM的应用与研究提供了基础。
图1 SFM三种策略示意图

SFM原理

以state-of-the-art的COLMAP算法为例,阐述一般SFM的原理流程,COLMAP算法流程(图2)
图2 COLMAP算法流程图
可以将上述多步总结为两个环节,一致性搜索及增量式重建。一致性搜索即找到数据集中有场景重叠的图像,识别出有场景重叠影像中同一个目标点在多张影像上的投影。一般采用SIFT算法进行特征点的提取,利用特征描述向量找到有场景重叠的影像,传统暴力方式测试每一对影像的重叠场景,对于一张影像中的每一个特征,根据特征向量找到另一张影像中最相似的特征,时间复杂度在大场景重建中是不允许的。因此,出现了很多改进方法包括MatchMiner[20]、Vocmatch[21]、PAIGE[22]等。一致性搜索的最后一步是精选上一步得到的可能有场景重叠的影像对,采用RANSAC[23]算法估计影像对之间的单应变换矩阵或者本质矩阵或者基础矩阵,判断是否有足够的特征匹配点满足映射关系,从而决定影像对是否真相关,最终获得场景图[4,10,20,24],其中,影像为图节点,相关的图像对之间有边相连。
增量式重建阶段,输入前面得到的场景图,输出的是影像的姿态估计以及空间三维坐标点。初始化,选择场景图中有多相机视场角重叠的位置进行双目初始化,这样的初始化冗余度高,使得重建更加鲁棒和精确;影像配准,找到需配准影像中的已求解得到空间三维坐标的点,利用其2D和3D信息,通过RANSAC[18]及最小姿态解算器求解Perspective-n-Point问题[25],获得新加进来的影像的位姿;三角化,即前方交会,新配准进来的影像,既能观测到已经存在的空间三维点,也能求解新的空间三维点,多视几何的三角化算法包括[26-33];光束法平差,影像配准与三角化是一个相互联系的过程,配准的误差会影响三角化的准确性,反之亦然。随着配准及三角化过程的重复进行,累计误差越来越大,影响最终重建的结果。光束法平差[34]本质上是一个非线性优化算法,选取反向投影误差作为代价函数,该函数涉及待优化的相机内参、外参以及点云。过程中为了增加算法的鲁棒性,不受离群点的影响,增加Huber、Tukey等损失函数。求解BA问题包括严格方式[35、36]和不严格方式[37、38],严格方式通过存储与分解为稀疏或密集矩阵优化参数,不严格方式通过一个迭代求解器,粗略估计参数。

国内外研究与应用

SFM技术针对大众数据(尤其针对城市建筑物)进行大尺度的三维建模,国内外出现了很多优秀的算法软件、以及相关的基准数据集;同时对SFM技术中的数据关联建立、光束法平差、多视立体视觉与融合等方面进行很多的研究。算法软件除了前面提及的增量式SFM的三个典型算法与软件外,在全局式SFM方面,出现了Theia[39]、OpenMVG[40]。在数据关联环节,除了COLMAP[19]提出的场景图方法外,还有[41]提出的Streaming Connected Component Discovery;在光束法平差环节出现了Ceres Solver[42]、PBA[43]、SSBA[44]等优秀的算法;在多视立体视觉与融合方面,除了COLMAP[19]算法外,还有CMVS/PMVS[45]、CMP-MVS[46]、Gipuma[47]、OpenMVS[48];在基准数据集方面,有高分辨率影像与多相机视频的多视立体视觉标准数据集[49],提供的部分数据集见图3,Tanks and Temples标准数据集[50],提供的部分数据集见图4。作为目前最优秀的SFM技术的COLMAP算法[19],对传统SFM流程做了五点改进,分别是引入几何验证策略来标记场景图中的边的类型,以此提高初始化和三角化的鲁棒性;选择下一张最佳视图时充分考虑观测到的地图点数目和地图点均匀分布;一种计算成本更低,且鲁棒性更优的三角化方法;迭代BA,再三角化和异常值滤波策略能够减小累计误差,从而显著提高重建完整性和准确性;从无序图像集合挖掘相似视图,使之成组,从而减小BA计算量,提高BA准确性。在[51]中,对传统SFM流程做了三点改进:首先使用视觉索引用于影像对的选取,随机采样影像对,借助检测到的视觉单词评估场景重叠,计算tf-idf向量[52]评价相似度得分,缩短传统暴力匹配的计算时间;其次,应用图算法实现影像集压缩,采用快速多项式算法[53]计算图的近似最小支配集,从而选出可以代表输入影像集的子集,保证去除的影像在子集中至少可以找到一些有视觉重叠的影像;最后使用优先级队列分配重建的各个环节的顺序,借助优先顺序队列交叉进行影像连接与原子三维模型构建,可以保证在有限的时间内获得可靠的重建结果,每一个任务的优先权根据影像相似性集历史计算来设定。
在应用方面,[54]中介绍了利用Google Street View Pittsburgh Research Data Set进行大城市区域三维建模可视化;[55]中详细归纳了SFM技术的十类应用,包括增强现实、自主导航、运动捕捉、手眼标定、影像视频处理、基于影像的三维建模、遥感、图像组织与浏览、分割与识别、军事应用。以城市三维建模为例,获取复杂现实场景或目标物的精确真实三维模型的方式可粗略分为接触与非接触方式。非接触方式之一是基于影像的三维建模技术,因为SFM技术的广泛应用以及低成本,采用SFM三维建模是计算机视觉领域的研究热点。大到对以无人机为主要搭载平台所获取的大区域序列影像,恢复城市三维结构,小到对某一个建筑物,如利用老城区中古建筑文物的序列影像进行精细建模,结合现在的深度学习技术对古建筑中的裂缝等目标进行检测并提取,再根据SFM获取的影像姿态信息进行三维投影,可以定量地分析受损情况,便于下一步制定保护措施;甚至是网络上大量的无序相关影像,都可以利用SFM进行三维建模。图5展示了一个城市三维重建的结果。下一步针对SFM技术非实时性的问题,可以融合SLAM技术的实时性进一步优化。
图3 高分辨率影像与多相机视频的多视立体视觉标准数据集
图4 Tanks and Temples标准数据集
图5 城市三维重建示例 罗马城的重建 图片来源:论文Structure-from-MotionRevisited

SFM与摄影测量

作为计算机视觉领域的技术之一,SFM技术中的多个环节对应了传统摄影测量的多个环节。采用SIFT等特征提取算法进行特征点的提取与匹配是两者之间共有的,SFM中的极线约束在摄影测量里基于核线的影像匹配的思路一致,SFM中的三角化对应于摄影测量中的前方交会,SFM中的Bundle Adjustment正是摄影测量中的光束法平差的思路。所以SFM与传统摄影测量在三维重建方面异曲同工。同时也存在区别,SFM采用齐次坐标,且按照前文中PnP算法求解的外方位元素与传统摄影测量空三求解的外方位元素有所区别。转换过程如下:
背景:两个三维坐标系之间的变换有6个自由度:三个线元素和3个角元素,针对不同的应用可以采用不同的表达方式。由于计算机视觉界采用的外方位元素表达方式与摄影测量界惯用的表达方式不同,为了将COLMAP求解出来的外方位元素作为初值进行摄影测量光束法平差,需进行外方位元素间的变换。

针孔相机模型可以表示为:
在这里插入图片描述
两边同时乘以内参矩阵的逆,假设γ=0且fx=fy=f
在这里插入图片描述
展开左右两边即可得到针孔模型投影公式的等价形式:
在这里插入图片描述
摄影测量界常用的投影公式为:
在这里插入图片描述
计算机视觉界所采用的坐标系Z轴方向与摄影测量界相反且旋转角的定义也不同,上式进一步转换得到:
在这里插入图片描述
对比两个投影公式,即可得到外方位元素间的变换关系,转换后的外方位元素可以作为初值进行光束法平差:
在这里插入图片描述
在COLMAP中,求解出来的外方位元素形式为:四元数形式的旋转矩阵q(w,x,y,z)和平移矩阵(tx,ty,tz),转化为旋转矩阵形式,才可进一步求解:
在这里插入图片描述
上式带入上一页求解结果,可以得到最终转换关系:
在这里插入图片描述
在这里插入图片描述

参考文献

[1]: Szeliski R. Computer Vision: Algorithms and Applications[M]. Springer-Verlag New York, Inc. 2010
[2]: Agarwal S, Snavely N, SimonI, et al. Building Rome in a day[J]. Communications of the Acm, 2011,54(10):105-112.
[3]: Frahm J M, Fite-Georgel P,Gallup D, et al. Building Rome on a cloudless day[C]// European Conference on Computer Vision. Springer-Verlag, 2010:368-381.
[4]: Heinly J, Schönberger J L,Dunn E, et al. Reconstructing the world* in six days[C]// Computer Vision and Pattern Recognition. IEEE, 2015:3287-3295.
[5]: Schönberger J L, Frahm J M. Structure-from-Motion Revisited[C]// IEEE Conference on Computer Vision and Pattern Recognition. IEEE, 2016.
[6]: Wu C. Towards Linear-Time Incremental Structure from Motion[C]// International Conference on 3d Vision.IEEE Computer Society, 2013:127-134.
[7]: Snavely N,Seitz S M, Szeliski R. Modeling the World from Internet Photo Collections[J].
International Journal of Computer Vision, 2008, 80(2):189-210.
[8]: Snavely K N.Scene reconstruction and visualization from internet photo collections[M].
University of Washington, 2008.
[9]: Snavely N,Seitz S M, Szeliski R. Photo Tourism: Exploring Photo Collections In 3D[J]. Acm Transactions on Graphics, 2006, 25(3):págs. 835-846.
[10]: Snavely N,Seitz S M, Szeliski R. Skeletal graphs for efficient structure from motion[C]//Computer Vision and Pattern Recognition, 2008. CVPR 2008. IEEE Conference on.
IEEE, 2008:1-8.
[11]: Sweeney C,Fragoso V, Hollerer T, et al. Large Scale SfM with the Distributed Camera
Model[C]// Fourth International Conference on 3d Vision. IEEE, 2016:230-238.
[12]: Moulon P,Monasse P, Marlet R. Adaptive Structure from Motion with a Contrario Model Estimation[M]// Computer Vision – ACCV 2012. Springer Berlin Heidelberg,
2012:257-270.
[13]: R. Gherardi, M. Farenzena, and A. Fusiello.Improving the efficiency of hierarchical structure-and-motion[C]. CVPR,2010.
[14]: D. Crandall, A. Owens, N. Snavely, and D. P. Huttenlocher. Discrete-Continuous Optimizationfor Large-Scale Structure from Motion[C]. CVPR, 2011.
[15]: C. Sweeney, T. Sattler, T. Hollerer, M. Turk,and M. Pollefeys. Optimizing the viewing graph for structure-frommotion[C].CVPR, 2015.
[16]: K. Wilson and N. Snavely. Robust global translations with 1dsfm[C]. ECCV, 2014.
[17]: http://www.cs.cornell.edu/~snavely/bundler/
[18]: http://ccwu.me/vsfm/
[19]: https://colmap.github.io/
[20]: Y. Lou, N. Snavely, and J. Gehrke. MatchMiner: Efficient Spanning Structure
Mining in Large Image Collections[C]. ECCV, 2012.
[21]: M. Havlena and K. Schindler. Vocmatch: Efficient multiview correspondence for structure from motion[C]. ECCV, 2014.
[22]: J. L.Sch¨onberger, A. C. Berg, and J.-M. Frahm. PAIGE: PAirwise Image Geometry
Encoding for Improved Efficiency in Structure-from-Motion. CVPR, 2015.
[23]: M. A.Fischler and R. C. Bolles. Random sample consensus: a paradigm for model fitting with applications to image analysis and automated cartography. ACM, 1981.
[24]: J. L. Sch¨onberger, A. C. Berg, and J.-M. Frahm. Efficient two-view geometry classification. GCPR, 2015.
[25]: Lepetit V, Moreno-Noguer F, Fua P. EPnP: An Accurate O(n) Solution to the PnP Problem[J]. International Journal of Computer Vision, 2009, 81(2):155-166.
[26]: Hartley R I, Sturm P. Triangulation[J]. Comput Vision Image Understanding, 1995,68(2):146-157.
[27]: Aholt C, Agarwal S, Thomas R. A QCQP Approach to Triangulation[M]// Computer Vision –ECCV 2012. Springer Berlin Heidelberg, 2012:654-667.
[28]: Hartley R , Schaffalitzky F . L-∞Minimization in Geometric Reconstruction Problems[C]// IEEE Computer Society Conference on Computer Vision & Pattern Recognition. IEEE, 2004.
[29]: H. Li. A practical algorithm for L∞ triangulation with outliers[C]. CVPR, 2007.
[30]: Lu F ,Hartley R . A Fast Optimal Algorithm for L2 Triangulation[C]// Asian Conference
on Computer Vision. Springer-Verlag, 2007.
[31]: Agarwal S ,Snavely N , Seitz S M . Fast algorithms for L∞problems in multiview geometry[C]// IEEE Conference on Computer Vision & Pattern Recognition. IEEE, 2008.
[32]: Olsson C,Eriksson A, Hartley R. Outlier removal using duality[C]// Computer Vision and Pattern Recognition. IEEE, 2010:1450-1457.
[33]: Kang L ,Lingda W U , YANG, et al. Robust multi-view L2 triangulation via optimal inlier
selection and 3D structure refinement[J]. Pattern Recognition, 2014,47(9):2974-2992.
[34]: Triggs B ,Zisserman A , Szeliski R . [Lecture Notes in Computer Science] Vision Algorithms: Theory and Practice Volume 1883 || Bundle Adjustment — A Modern Synthesis[J]. VisionAlgorithms Theory & Practice, 2000, 10.1007/3-540-44480-7(Chapter 21):298-372.
[35]: Chen Y , Chen Y , Davis T A , et al. Algorithm 887: CHOLMOD, supernodal sparse Cholesky factorization and update/downdate[J]. Acm Transactions on Mathematical
Software, 2008, 35(3):1-14.
[36]: Lourakis M I A . SBA : A software package for generic sparse bundle adjustment[J]. AcmTrans.math.softw, 2009, 36(1):2.
[37]: Agarwal S ,Snavely N , Seitz S M , et al. Bundle Adjustment in the Large[J]. 2010.
[38]: Wu C, Agarwal S, Curless B, et al. Multicore bundle adjustment[C]// Computer Vision and Pattern Recognition. IEEE, 2011:3057-3064.
[39]: http://www.theia-sfm.org/
[40]: https://github.com/openMVG/openMVG
[41]: https://github.com/jheinly/streaming_connected_component_discovery
[42]: http://ceres-solver.org/
[43]: https://grail.cs.washington.edu/projects/mcba/
[44]: https://github.com/chzach/SSBA
[45]: https://www.di.ens.fr/cmvs https://www.di.ens.fr/pmvs
[46]: http://ptak.felk.cvut.cz/sfmservice/websfm.pl?menu=cmpmvs
[47]: https://hithub.com/kysucix/gipuma
[48]: https://github.com/cdcseacave/openmvs
[49]: https://www.eth3d.net/datasets
[50]: A. Knapitsch, J. Park, Q. Zhou, V. Koltun. SIGGRAPH 2017. https://www.tanksandtemples.org/
[51]: Michal Havlena. Incremental Structure from Motion for Large Ordered and Unordered Sets of Images[D]. Czech Technical University,2012.
[52]: Sivic J ,Zisserman A . Video Google: Efficient Visual Search of Videos[J]. Lncs, 2006,
4170:127-144.
[53]: Guha S ,Khuller S . Approximation Algorithms for Connected Dominating Sets[J]. Algorithmica,1998, 20(4):374-387.
[54]: Torii A ,Havlena M , Tomás Pajdla.Omnidirectional Image Stabilization by Computing Camera Trajectory[C]//Advances in Image and Video Technology, Third Pacific Rim Symposium, PSIVT 2009, Tokyo, Japan, January 13-16, 2009. Proceedings. Springer Berlin
Heidelberg, 2009.
[55]:Ying-meiWEI, LaiKANG, BingYANG, et al. Applications of structure from motion : a survey[J]. 信息与电子工程前沿 (英文),2013(7).

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SFM(Structure from Motion)一点总结 的相关文章

  • html 跨域_跨域方案总结

    平时在开发中总是会遇到各种跨域问题 一直没有很好地了解其中的原理 以及其各种实现方案 今天在这好好总结一下 本文完整的源代码请猛戳 xiangxingchen blog github com 博客 建议大家动手敲敲代码 1 什么是跨域 为什
  • MATLAB使用技巧笔记

    1 遍历查询 find的效率要高于for循环的效率 2 return 直接退出程序或函数返回了 3 keyboard 通常应用在Debug模式下面 所以你的程序不是为了debug 请使用input函数 也就是说 我可以进行新的参数赋值等 这
  • 将html文件设置为安卓背景桌面,WinXP下将HTML文档设置为屏保的方法

    WinXP的屏幕保护程序多种多样 很多用户喜欢将一些自己的文档图片等设为屏保 今天我们要向大家介绍的是另一种新方法 将HTML文档设置为屏保 下面大家跟随小编一起设置吧 WinXP系统除将HTML文档设置为桌面背景之外 WinXP的活动桌面
  • 动态平衡网格交易_网格交易 套利:期货经典书籍

    期货市场技术分析 墨菲 这是一部技术分析的工具书 教科书 本书涵盖了技术分析自道氏以来所有重要的研究成果 因此 是期货交易者的入门必读书目之一 我在 货的前几年也至少读了三遍以上 日本蜡烛 图技术 尼森 蜡烛图是目前最常见的看盘的基本工具
  • 串口服务器的通讯模式

    串口服务器 一个为RS 232 485 422到PC IP之间完成数据转换的具有强大功能的方便快捷的通讯接口转换器 串口服务器通过作为服务器端 提供RS 232 485 422终端串口与TCP IP网络的数据双向透明传输 提供串口转网络功能
  • 各种排序比较

    直接插入排序 void InsertSort ElemType A int n int i j for i 2 i lt n i 依次将A 2 A n 插入到前面已排序序列 if A i key lt A i 1 key 若A i 的关键码
  • dataframe普通切片与loc,iloc选取数据

    import pandas as pd import numpy as np url https raw githubusercontent com HoijanLai dataset master PoliceKillingsUS csv
  • git合并多条提交记录

    git合并多条提交记录 git log 查看提交历史 上述有五个 commit 记录 如果我想合并四个 commit 记录 git rebase i HEAD 4 合并前面四个 commit 记录 也可以指定合并某个版本之前的版本 git
  • Elasticsearch学习(一)—— 虚拟机上搭建Elasticsearch

    Elasticsearch学习 一 虚拟机上搭建Elasticsearch 本文开始前已通过 VMware 创建好三个虚拟机并安装好jdk 操作系统 CentOS Linux release 7 2 1511 Core 64位 JDK版本
  • (四十二)MySQL最牛的RR隔离级别,是如何基于ReadView机制实现的?

    今天来接着给大家讲解 MySQL中最牛的RR隔离级别 是如何同时避免不可重复读问题和幻读问题的 其实大家现在应该都知道 在MySQL中让多个事务并发运行的时候能够互相隔离 避免同时读写一条数据的时候有影响 是依托undo log版本链条和R
  • 揭示实时定位控件在配送小程序中的作用与价值

    随着互联网技术的发展 配送小程序在生活中扮演着越来越重要的角色 而实时定位控件作为配送小程序中不可或缺的一部分 具有极大的作用与必要性 本文将以 乔拓云 第三方工具为例子 从商家的方面 对实时定位控件在配送小程序中的作用与必要性进行解析 一
  • 掌握Python的X篇_21_局部变量与全局变量

    文章目录 1 python中的局部变量 2 python中的全局变量 3 显式声明全局变量 1 python中的局部变量 函数内部定义的变量 是局部变量 局部变量只在当前函数中有效 各个函数之间的局部变量是互相独立 互不影响的 首先看一段代
  • 测试:用例篇

    上一章讲述的是测试的基本概念 在我们开始做了一段时间基础测试 熟悉了业务之后 往往会 分配来写测试用例 并且在日常测试中 有时也需要补充测试用例到现有的案例库中 在开始之前先讲讲测试中经典的测试方法 黑盒测试 白盒测试 按照是否需要知道程序
  • 贪吃蛇详细教程-C++实现

    和小白一起做贪吃蛇吧 会C 就可以上车 小白第一次写文章 如有不足之处 欢迎大家指出 因为本人是新手 所以尽量使用通俗易懂的话 没有太多专业术语 不太会用目录 大佬还请多多包涵 前言 本文所有的方向用8 2 4 6表示 对应小键盘上的 这么
  • Unity Shader总结(二)——矢量和矩阵

    Unity Shader总结 二 矢量和矩阵 一 向量的点乘 用途 二 向量的叉乘 用途 三 矩阵 正交矩阵 仿射变换 平移 缩放 旋转 复合变换 坐标空间变换 子空间到父空间 模型空间到世界空间 父空间到子空间 特殊情况 四 总结 一 向
  • 接口自动化持续集成实战

    本文为实战练习 具体内容来自 接口自动化持续集成 接口自动化测试持续集成主要包括以下内容 流程方面 在回归阶段加强接口异常场景的覆盖 并逐步向系统测试 冒烟测试阶段延伸 最终达到全流程自动化 结果展示 更加丰富的结果展示 趋势分析 质量统计
  • sizeof与strlen使用中的问题

    概述 直接上代码 使用中经常会涉及到sizeof与strlen计算的问题 下面看例子 char pstr hello char pstr hellonini char pstr 6 hello 上述求sizeof pstr 的值 分别为 4
  • python中获取指定目录下所有文件名列表的程序

    http blog csdn net rumswell article details 9818001 coding utf 8 module wlab Filename wgetfilelist py Function def IsSub
  • 开发团队工作中遇到的问题复盘

    来到团队中20多天了 其实整体是不顺利的 1 团队开发效率还需要提高 没有达到预期的想法 2 有几次忙乱了心 把本身简单的事情处理复杂了 增加了团队成员和公司的对立 3 自己的工作内容变多了 总是感觉有很多事忙不完 又不能刷刷刷马上解决掉

随机推荐

  • JS逆向——建筑市场监管公共服务平台

    全国建筑市场监管公共服务平台 四库一平台 问题 1 接口返回值加密 1 接口返回的数据为加密后的文本 先根据密文长度无法直接判断具体的加密方式 2 个人比较喜欢用hook 所以先对几个常用的加解密函数进行hook 并进行控制台输出 hook
  • QT基本使用

    目录 一 QWidget QDialog QMainWIndow的异同点 二 信号与槽 1 信号与槽 2 自动关联信号与槽 3 自定义信号与槽 设定槽 设定信号 四 模态 非模态窗口 1 新窗口的创建 2 模态 非模态窗口的创建 五 加载资
  • 程序员求职之道(《程序员面试笔试宝典》)之面试笔试技巧?

    不是看了本C语言编程书籍 就可以说精通C语言 会写一句hello world 就可以自称程序员 程序员是一种职业 更是一种精神 他们天资聪颖 不拘小节 他们个性十足 幽默风趣 他们工作努力 任劳任怨 他们是21世纪最可爱的人 选择程序员作为
  • 需求着急上线,是写烂代码的理由吗?

    软件开发大师Martin Fowler说过 Any fool can write code that a computer can understand Good programmers write code that humans can
  • C++学习笔记(三)--继承中的异常处理

    继承中的异常处理 include
  • Docker部署seata Nacos作为注册配置中心

    Docker部署seata Nacos作为注册配置中心 一 Seata服务端安装 一 Seata clint使用 一 Seata服务端安装 1 1 要注意和spring cloud boot alibaba等版本对应上 避免出现版本不兼容问
  • 开源项目:ZXing(三)二维码解码

    继续上一节的内容 本节我们将对上一节的QQ群号二维码进行解码 QQ群号二维码图片另存为后 将下载的 jpg拷贝到项目assets目录下 1 解码配置 Map
  • JavaWeb——Servlet(全网最详细教程包括Servlet源码分析)

    JavaWeb Servlet Tomcat工作机制动画演示 点击动图可全屏观看 什么是Servlet Servlet Server Applet 全称Java Servlet 未有中文译文 是用Java编写的服务器端程序 其主要功能在于交
  • netbeans6.0 javafx 插件安装

    netbeans6 0 beta1已经发布有一段时间了 netbeans现在确实是越来越好了 随着新版本的发布 我们也应该来熟悉一下这个好产品 javafx自从2007javaone sun公布以来 一直收到热捧 今天我们来看看netbea
  • Platt SMO算法

    Platt SMO算法 1996年 John Platt 发布了一个称为SMO的强大算法 用于训练SVM SMO表示序列最小优化 SequentialMinimal Optimization Platt 的 SMO 算法是将大优化问题分解为
  • 涂抹CANVAS,判断清除完毕执行操作

    涂抹CANVAS 判断清除完毕执行操作 clearCanvas js代码如下 如清除时断续将 for var i 0 i lt Math round Math PI r i 5 改为 for var i 0 i lt Math round
  • 2021美赛D题

    2021年ICM问题D 音乐的影响 音乐自古以来就是人类社会的一部分 是文化遗产的重要组成部分 为了理解音乐在人类集体经验中所扮演的角色 我们被要求开发一种量化音乐进化的方法 当艺术家创作一首新的音乐作品时 有许多因素会影响他们 包括他们与
  • miscellany-在idea里创建properties文件

    在idea里创建properties文件 在resources里创建即可
  • C++this指针

    C this指针 this是C 中的一个关键字 也是一个const指针 它指向当前对象 通过它可以访问当前对象的所有成员 例如 class A private char name public void show cout lt lt he
  • ubuntu22.04安装YouCompleteMe

    先建一个文件夹 sudo mkdir vim bundle 然后进入这个文件夹 hunter hunter desktop vim bundle ls command t sparkup vim fugitive Vundle vim 接下
  • Qt入门超级简单小项目(3)布局管理器

    环境 Windows10 Qt5 完善菜单 1 新建Qt Widgets应用 项目名称为myMainWindow1 基类选择QMainWindow 类名为MainWindow 2 完成后 在设计模式添加菜单项 并添加资源文件 向其中添加菜单
  • sharding-jdbc 实现按月分表

    最近生产上发现了一个大表 因为数据太多导致新增查询都很慢 考虑先对历史数据进行归档 新数据按月分表存储 使用到的框架主要是 sharding jdbc spring boot mybatis durid 先建个demo简单实践下 首先 准备
  • wsl Hyper-V 与 安卓模拟器虚拟机同时共存方案

    最新消息 雷电9 0版本 已经支持共存了 不必搞那么麻烦了 WSL 在开发者手里是必不可少的 仿真服务器开发模式 安卓虚拟机 有时调试起来更加方便 但可惜的是 市面上的安装模拟器 都不支持与wsl友好共存 要么是版本低 要么是卡到要死 既然
  • 日志定期压缩、清除

    1 背景 定位问题 打印日志的一个目的是为了快速定位线上问题 日志打印的越详细 问题原因就越容易定位 磁盘空间有限 随着业务量提升 磁盘空间满了 日志将无法打印了 为了平衡上面两个条件 我们可以压缩文件和保留一定时间 如7天 的历史文件 2
  • SFM(Structure from Motion)一点总结

    SFM Structure from Motion 一点总结 运动结构恢复 Structure from motion 数十年来一直是计算机视觉领域的热门研究方向之一 实现了众多实际应用 尤其在近景三维重建中 该算法从获取的目标物系列影像出