当前位置:网站首页>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 !
边栏推荐
- Basic number theory - fast power
- 迁移学习和域自适应
- Wheel 1:qcustomplot initialization template
- Array, date, string object method
- 牛顿迭代法(解非线性方程)
- 696. Count binary substring
- 某公司文件服务器迁移方案
- 【日常訓練--騰訊精選50】557. 反轉字符串中的單詞 III
- Halcon: check of blob analysis_ Blister capsule detection
- How to manage the performance of R & D team?
猜你喜欢

2020 "Lenovo Cup" National College programming online Invitational Competition and the third Shanghai University of technology programming competition

资源变现小程序添加折扣充值和折扣影票插件

IT冷知识(更新ing~)

Digital analog 1: linear programming

Redis implements a high-performance full-text search engine -- redisearch

容易混淆的基本概念 成员变量 局部变量 全局变量

Confusing basic concepts member variables local variables global variables

Introduction Guide to stereo vision (2): key matrix (essential matrix, basic matrix, homography matrix)

优先级队列(堆)

Programming implementation of ROS learning 5-client node
随机推荐
Meta tag details
【日常训练--腾讯精选50】557. 反转字符串中的单词 III
Latex improve
[code practice] [stereo matching series] Classic ad census: (6) multi step parallax optimization
My university
Huber Loss
图解网络:什么是网关负载均衡协议GLBP?
kubeadm系列-00-overview
Jenkins Pipeline 方法(函数)定义及调用
容易混淆的基本概念 成员变量 局部变量 全局变量
【日常训练】1200. 最小绝对差
Halcon shape_ trans
[daily training -- Tencent selected 50] 557 Reverse word III in string
Guess riddles (7)
Guess riddles (9)
Guess riddles (10)
EA introduction notes
Blue Bridge Cup provincial match simulation question 9 (MST)
某公司文件服务器迁移方案
Guess riddles (11)