当前位置:网站首页>Rebuild my 3D world [open source] [serialization-1]
Rebuild my 3D world [open source] [serialization-1]
2022-07-05 08:55:00 【Li Yingsong~】
I want to do something interesting recently : Rebuild around me 3D The world . This sounds like a cool thing , In fact, many people have done , And did well , I know there is a big wisdom map 、Pix4D、PhotoScan、ContextCapture And other commercial software that has already been done very well . But it doesn't need business to spend a little time License Ready to use software still seems to make sense , Anyway, I want to write some code .
thank Github The open source community , I plan to use it first VS2019+QT+ Open source algorithm library OpenMVG+OpenMVS To do this , Simply take the first step , If there is time later , Maybe there will be more interesting things to do .
As QT beginner , It is bound to appear rough in interface development ( Very slow, too !).
Please forgive me .
compile OpenMVG+OpenMVS
First , We went to the Github On Clone OpenMVG as well as OpenMVS Source code , And then use cmake-gui Compile . This is a troublesome process , The process doesn't show .
PS. compiled OpenMVG(vs2019) engineering , I put it on Baidu online disk , link :https://pan.baidu.com/s/1X9nBeWHXeHR8ETSIqH23XQ Extraction code :1i42, Interested students download by themselves .
then , download QT, The version number I selected is 5.12.9, Largely because this version is free .
Last , Build a QT UI engineering , Take a pretending name :TellusBuilder.
Besides , I also use third-party libraries Eigen For matrix operations and OpenCV For images IO, The version numbers are 3.2.8 and 3.1.0.
1. Add an image and display
After building the project , The first function we need to achieve is to add images and display , Add a name "Add Images" The menu item of , And write the slot function in the main framework class , What the slot function needs to do is to open the dialog box and import multiple images .
At the same time, design and implement a QTreeView, It is attached to a DockPane above , Imported image information ( The most intuitive is the image name ) Will be in Tree Control is displayed one by one .
I also implemented a simple interactive function : double-click Tree Control , It's on the right 2D The image is displayed in the view window . Concrete , After double clicking the command , I will follow the absolute path of the image , Import the image and render .
Um. , Simple and full of temptation to Xiaobai !
These operations took not a long time , Under the final rendering :
At present only 2K There is such an interface effect on the display .( cough , Adaptive window adjustment is not done yet , food !)
2. link OpenMVG, Realization SFM
SFM, It is well known Structure From Motion( Exercise restores structure ), This term sounds very professional , Simply speaking , This step does two things :
- Restore the camera of each image at the time of shooting Postures ( Position and posture ), There are two ways of expression , One is commonly used in the field of photogrammetry X , Y , Z , ϕ , ω , κ X,Y,Z,\phi,\omega,\kappa X,Y,Z,ϕ,ω,κ Expression ; The second is commonly used in the field of computer vision R , t R,t R,t Expression . They are equivalent , It's just in different forms , To describe the position and attitude of the camera , Popular said , It is to determine where and in which direction each image is taken by the camera .
- Restore the intrinsic internal parameters of the camera , Like focal length 、 Principal point 、 Distortion parameters, etc , This is optional , Because in some cases, the camera has calibrated these internal parameters in advance .
There are many open source libraries that can complete this step , such as OpenMVG、Colmap、MVE etc. , This time I choose OpenMVG, It integrates incremental 、 Global 、 Hybrid SFM, For unordered image sets , I expect it to have a more robust performance .
OpenMVG Of Github Address :Github : openMVG
OpenMVG Document address :OpenMVG : The Open Multiple View Geometry Library
stay OpenMVG Introduction , There is a picture , The description is SFM Basic steps : First, extract the feature descriptor , Then match the feature points between the images , And then through SFM Complete the recovery of the whole structure . Of course, the actual algorithm implementation will be far more complex than the description , There is no extension here .
( The picture is from OpenMVF Of Github Introduce )
Okay , That's all for today , The first step of the long march , I feel more like a software development exercise at present , Even the whole cycle, I think, may be like this , But I think it doesn't matter , Build the software framework , We can do more . The visual interface is still more comfortable than the console , It's not excluding the console , It may be that there are too many algorithms developed to find something new , Some people must think the console is cooler !
Next, let's see how to use OpenMVG Library to complete SFM The process , So as to get the position and posture of each figure , At the same time, there will be some sparse points in 3D space and camera rendering .
I will put the code in my Github Warehouse :TellusBuilder in , Interested students , It is suggested to click star and watch, Of course, based on my work, what I want to do in the future is also welcome fork ah .
If you think this series is good , Please let me know in the comments section , Maybe I will update more diligently !
边栏推荐
- Guess riddles (7)
- 微信H5公众号获取openid爬坑记
- How many checks does kubedm series-01-preflight have
- 12. Dynamic link library, DLL
- Golang foundation -- map, array and slice store different types of data
- Codeworks round 638 (Div. 2) cute new problem solution
- Add discount recharge and discount shadow ticket plug-ins to the resource realization applet
- 优先级队列(堆)
- Warning: retrying occurs during PIP installation
- Causes and appropriate analysis of possible errors in seq2seq code of "hands on learning in depth"
猜你喜欢
Count of C # LINQ source code analysis
AUTOSAR从入门到精通100讲(103)-dbc文件的格式以及创建详解
Business modeling of software model | overview
Understanding rotation matrix R from the perspective of base transformation
How to manage the performance of R & D team?
TF coordinate transformation of common components of ros-9 ROS
混淆矩阵(Confusion Matrix)
Guess riddles (6)
Confusing basic concepts member variables local variables global variables
Programming implementation of ROS learning 2 publisher node
随机推荐
RT thread kernel quick start, kernel implementation and application development learning with notes
Latex improve
notepad++
Array,Date,String 对象方法
Program error record 1:valueerror: invalid literal for int() with base 10: '2.3‘
Ros- learn basic knowledge of 0 ROS - nodes, running ROS nodes, topics, services, etc
Redis实现高性能的全文搜索引擎---RediSearch
多元线性回归(sklearn法)
Guess riddles (10)
Guess riddles (7)
Guess riddles (142)
uni-app 实现全局变量
Count of C # LINQ source code analysis
C [essential skills] use of configurationmanager class (use of file app.config)
容易混淆的基本概念 成员变量 局部变量 全局变量
我从技术到产品经理的几点体会
Characteristic Engineering
[牛客网刷题 Day4] JZ35 复杂链表的复制
Ecmascript6 introduction and environment construction
Chris LATTNER, the father of llvm: why should we rebuild AI infrastructure software