当前位置:网站首页>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 (gradient descent method)
- [Niuke brush questions day4] jz55 depth of binary tree
- Halcon blob analysis (ball.hdev)
- 混淆矩阵(Confusion Matrix)
- 【日常訓練--騰訊精選50】557. 反轉字符串中的單詞 III
- How many checks does kubedm series-01-preflight have
- C [essential skills] use of configurationmanager class (use of file app.config)
- Pytorch entry record
- 牛顿迭代法(解非线性方程)
- Business modeling of software model | overview
猜你喜欢
![[code practice] [stereo matching series] Classic ad census: (4) cross domain cost aggregation](/img/d8/7291a5b14160600ba73810e6dd1eb5.jpg)
[code practice] [stereo matching series] Classic ad census: (4) cross domain cost aggregation

Guess riddles (4)

微信H5公众号获取openid爬坑记

Halcon color recognition_ fuses. hdev:classify fuses by color

Guess riddles (8)

IT冷知识(更新ing~)

Guess riddles (3)

Halcon snap, get the area and position of coins

Use and programming method of ros-8 parameters

嗨 FUN 一夏,与 StarRocks 一起玩转 SQL Planner!
随机推荐
My experience from technology to product manager
Guess riddles (10)
[code practice] [stereo matching series] Classic ad census: (5) scan line optimization
Solution to the problems of the 17th Zhejiang University City College Program Design Competition (synchronized competition)
多元线性回归(梯度下降法)
【日常训练】1200. 最小绝对差
优先级队列(堆)
One dimensional vector transpose point multiplication np dot
Basic number theory -- Euler function
Pearson correlation coefficient
Multiple linear regression (gradient descent method)
Summary of "reversal" problem in challenge Programming Competition
Halcon blob analysis (ball.hdev)
Digital analog 1: linear programming
Halcon affine transformations to regions
The location search property gets the login user name
Guess riddles (5)
TF coordinate transformation of common components of ros-9 ROS
Programming implementation of subscriber node of ROS learning 3 subscriber
Codeforces Round #648 (Div. 2) D. Solve The Maze