当前位置:网站首页>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 !
边栏推荐
- Multiple linear regression (sklearn method)
- Guess riddles (2)
- 生成对抗网络
- Ros- learn basic knowledge of 0 ROS - nodes, running ROS nodes, topics, services, etc
- 我从技术到产品经理的几点体会
- Array, date, string object method
- Chris LATTNER, the father of llvm: why should we rebuild AI infrastructure software
- EA introduction notes
- Guess riddles (6)
- location search 属性获取登录用户名
猜你喜欢
TF coordinate transformation of common components of ros-9 ROS
Wechat H5 official account to get openid climbing account
Guess riddles (5)
[matlab] matlab reads and writes Excel
Programming implementation of ROS learning 2 publisher node
Huber Loss
Halcon shape_ trans
Hello everyone, welcome to my CSDN blog!
Beautiful soup parsing and extracting data
Codeworks round 639 (Div. 2) cute new problem solution
随机推荐
LLVM之父Chris Lattner:为什么我们要重建AI基础设施软件
Halcon snap, get the area and position of coins
Halcon color recognition_ fuses. hdev:classify fuses by color
IT冷知识(更新ing~)
Guess riddles (2)
Halcon blob analysis (ball.hdev)
Digital analog 1: linear programming
Multiple linear regression (gradient descent method)
Summary and Reflection on issues related to seq2seq, attention and transformer in hands-on deep learning
Adaboost使用
Blue Bridge Cup provincial match simulation question 9 (MST)
Pytorch entry record
多元线性回归(梯度下降法)
Solutions of ordinary differential equations (2) examples
Task failed task_ 1641530057069_ 0002_ m_ 000000
It cold knowledge (updating ing~)
Use and programming method of ros-8 parameters
Warning: retrying occurs during PIP installation
2011-11-21 training record personal training (III)
Programming implementation of ROS learning 5-client node