User Tools

Site Tools


tamiwiki:projects:scanning-tami

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
tamiwiki:projects:scanning-tami [2025/04/04 11:16] wissotskytamiwiki:projects:scanning-tami [2025/04/04 18:18] (current) wissotsky
Line 3: Line 3:
 </WRAP> </WRAP>
  
-{{tamiwiki:projects:mermaid-diagram-2025-04-03-220229.png}}+{{tamiwiki:projects:enqvwett3dgqvudxdpmwrsozaihfjyfszimqkpblh0dqy5wdsgwpgmx5jzlhqva_b7ckp2bga2quwfkr3_11i0yqzbjg2slv5bxgz9s3uwbvakx-eecnut0ycxoec2m1s0kv0tdhr79uaj7qhpzn2837ln67eslxckxzwc3rbzaafyc6tjgf0jaorpvpqbf5iixtewrphb1zzmvnyc.svg}}
  
 <blockquote> <blockquote>
Line 9: Line 9:
     subgraph sg1["Global Registration"]     subgraph sg1["Global Registration"]
         direction LR         direction LR
-        fd["Feature Detection"] --> fm["Feature Matching"] --> pte["Pairwise Essential Matrix"] --> pgo["Bundle Adjustment"]+        vf[(Video Frames)] --> undistort["Undistort Frames"] --> fd 
 +        fd["Feature Detection"] --> fm 
 +         
 +            subgraph fm["Feature Matching"] 
 +                direction LR 
 +                curframe@{ shape: circle, label: "Frame t" } 
 +                lcpairs[("Loop Closure Groups")] 
 +                mne["Match to all frames between t-15 and t+15"
 +                islcp{"Is frame in a loop closure group"
 +                mlcp["Match to all frames in the same loop closure group"
 +                findtransitivepairs["Find transitive pairs, If A-B and B-C match, attempt to match A-C"
 +                imgpairs[(Successfully Matched Image Pairs)] 
 + 
 +                curframe --> mne 
 +                lcpairs -..- islcp 
 +                mne --> islcp 
 +                mlcp --> findtransitivepairs 
 +                islcp --Yes--> mlcp 
 +                islcp -->|No| findtransitivepairs 
 +                findtransitivepairs --> imgpairs 
 +            end 
 + 
 + 
 +        imgpairs --> imgpair[("Image pair")]  
 +            subgraph ComputeEssentialMatrix["Compute Essential Matrix"] 
 +                direction LR 
 +                 
 +                imgpair --> ransacLoop["RANSAC Loop"
 +                 
 +                subgraph RANSACProcess["RANSAC Process"
 +                    direction LR 
 +                    ransacLoop --> randomSample["Randomly select 5 point-to-point matches"
 +                    randomSample --> computeE["Compute 10 candidate essential matrices using 5-point algorithm"
 +                    computeE --> countInliers["Count the amount of points where the algebraic epipolar error is lower than a set threshold"
 +                    countInliers --> updateBest["Update best essential matrix if more inliers found in any of the candidates"
 +                    updateBest --> checkIteration{"Max iterations 
 +                    reached?"
 +                    checkIteration -->|No| ransacLoop 
 +                end 
 +                 
 +                checkIteration -->|Yes| output[("Image Pairs With Estimated Essential Matricies and Keypoint Inlier Masks")] 
 +            end 
 +         
 +        output --> pgo["Bundle Adjustment"]
     end     end
 +
          
     subgraph sg2["Depth Estimation"]     subgraph sg2["Depth Estimation"]
         direction LR         direction LR
-        pm["Patchmatch"] --RANSAC Polyfit--> nde["Monocular Depth Estimate"] --> gsd["3D Gaussian Splat Depth"] --> kde["KDE Outlier Filtering"]+        pm["PatchMatch Multi-View Depth Estimation"] 
 +        nde["DepthAnything v2 Neural Monocular Depth Estimate"
 +        pm & nde --> preprocessing 
 + 
 +        subgraph ConfidenceWeightedDepthCorrection["Confidence-Weighted Depth Map Correction"
 +            direction LR 
 +             
 +            preprocessing["Downscale Neural Estimate to PatchMatch resolution"] --> ransacLoopPolyfit["RANSAC Loop"
 +             
 +            subgraph RANSACProcessPolyfit["RANSAC Polynomial Fitting"
 +                ransacLoopPolyfit --> sampleSelection 
 +                sampleSelection["Random sample selection 
 +                from depth maps"] --> weightSamples 
 +                 
 +                weightSamples["Weight samples by 
 +                confidence map values"] --> fitModel 
 +                 
 +                fitModel["Fit polynomial offset model 
 +                to weighted samples"] --> evaluateModel 
 +                 
 +                evaluateModel["Evaluate model by weighted error"] --> checkConvergence 
 +                 
 +                checkConvergence{"Max Iterations Reached?"} -->|No| ransacLoopPolyfit 
 +                 
 +                checkConvergence -->|Yes| bestModel["Select best polynomial 
 +                offset model"
 +            end 
 +             
 +            bestModel --> applyCorrection["Apply polynomial correction to full-res neural depth map"
 +             
 +            applyCorrection --> outputPolyfit["Merge Depth and Color into RGBD"
 +        end 
 + 
 +        outputPolyfit --> rgbdpcd["RGBD Point Cloud Projection"] --> gsd["3D Gaussian Splat Training + Depth Rasterization"] 
 +        gsd --> kde["KDE Outlier Filtering"
 +        kde --> storergbd[(RGBD Images)]
     end     end
  
     subgraph sg3["Meshing"]     subgraph sg3["Meshing"]
         direction LR         direction LR
-        tsdf["RGBD TSDF Integration"--> gltf["GLTF + Draco Mesh Compression"]+        tsdf --> gltfq["Quantize and Compress using the Draco GLTF Transcoder"]
     end     end
  
     subgraph tsdf["Hybrid RGBD TSDF Integration"]     subgraph tsdf["Hybrid RGBD TSDF Integration"]
         direction LR         direction LR
-        gpuintgr["GPU VoxelBlockGrid Integration"--> isvram{"VRAM Occupation"}+        storergbd2[(RGBD Images)] 
 +        gpuintgr["GPU VoxelBlockGrid Integration"] 
 +        isvram{"VRAM Usage"} 
 +        cpuintgr["CPU Uniform Voxel Grid Trilinear Interpolation"
 +        exportmesh[(GLTF Mesh)] 
 + 
 +        storergbd2 -.- gpuintgr 
 +        gpuintgr --> isvram
         isvram --Low--> gpuintgr         isvram --Low--> gpuintgr
-        isvram --High--> cpuintgr["CPU VBG Trilinear Interpolation"--> isvram +        isvram --High--> cpuintgr 
-        gpuintgr --o cpuintgr        +        cpuintgr --> gpuintgr 
 +        gpuintgr -.Move Data.-o cpuintgr 
 + 
 +        cpuintgr --> exportmesh
     end     end
  
tamiwiki/projects/scanning-tami.1743754589.txt.gz · Last modified: 2025/04/04 11:16 by wissotsky