Project Splinescan Open Source 3D Scanning for Everyone Andrew Lewis, 2006 ** Released Under Creative Commons **

Slides:



Advertisements
Similar presentations
Uncertainty Representation. Gaussian Distribution variance Standard deviation.
Advertisements

3D Scanning. How can we get the form? Projection.
Content Subdivision First some basics (control point polygon, mesh)
Graphics Systems I-Chen Lin’s CG slides, Doug James’s CG slides Angel, Interactive Computer Graphics, Chap 1 Introduction to Graphics Pipeline.
2D TO 3D MODELLING KCCOE PROJECT PRESENTATION Student: Ashish Nikam Ashish Singh Samir Gaykar Sanoj Singh Guidence: Prof. Ashwini Jaywant Submitted by.
Computer Graphics Computer Graphics is everywhere: Visual system is most important sense: High bandwidth Natural communication Fast developments in Hardware.
Copyright © 2012 Pearson Education, Inc. Chapter 1 Introduction to Computing and Programming.
Computer Graphics Texture Mapping
Computer Graphics An Introduction. What’s this course all about? 06/10/2015 Lecture 1 2 We will cover… Graphics programming and algorithms Graphics data.
Reconstructing 3D mesh from video image sequences supervisor : Mgr. Martin Samuelčik by Martin Bujňák specifications Master thesis
Under Supervision of Dr. Kamel A. Arram Eng. Lamiaa Said Wed
Computer Graphics Bitmaps & Sprites CO2409 Computer Graphics Week 3.
Introduction to Algorithms (2 nd edition) by Cormen, Leiserson, Rivest & Stein Chapter 1: The Role of Algorithms in Computing (slides by N. Adlai A. DePano)
Fundamental Programming: Fundamental Programming K.Chinnasarn, Ph.D.
Computer Graphics The Rendering Pipeline - Review CO2409 Computer Graphics Week 15.
Advanced Computer Graphics Advanced Shaders CO2409 Computer Graphics Week 16.
MACHINE VISION Machine Vision System Components ENT 273 Ms. HEMA C.R. Lecture 1.
Raster data models Rasters can be different types of tesselations SquaresTrianglesHexagons Regular tesselations.
CS 127 Introduction to Computer Science. What is a computer?  “A machine that stores and manipulates information under the control of a changeable program”
Computer Software Types Three layers of software Operation.
Autonomous Robots Vision © Manfred Huber 2014.
By: David Gelbendorf, Hila Ben-Moshe Supervisor : Alon Zvirin
Processing Hardware, Software. Hardware Hardware Processing is performed by a computer ’ s central processing unit and is measured by the clock speed.
Oman College of Management and Technology Course – MM Topic 7 Production and Distribution of Multimedia Titles CS/MIS Department.
Lecture VIII: Software Architecture
Machine Vision Edge Detection Techniques ENT 273 Lecture 6 Hema C.R.
Best Practice T-Scan5 Version T-Scan 5 vs. TS50-A PropertiesTS50-AT-Scan 5 Range51 – 119mm (stand- off 80mm / total 68mm) 94 – 194mm (stand-off.
Applications and Rendering pipeline
Introduction to Computer Graphics
INTRO. To I.T Razan N. AlShihabi
A little more App Inventor and Mind the GAP!
3D Scanning Based on Computer Vision
SNS COLLEGE OF ENGINEERING
Model Optimization Wed Nov 16th 2016 Garrett Morrison.
What is Computer Graphics?
Java Programming: From the Ground Up
Danfoss Visual Inspection System
- Introduction - Graphics Pipeline
Topics Designing a Program Input, Processing, and Output
Character Animation Forward and Inverse Kinematics
INTRODUCTION TO GEOGRAPHICAL INFORMATION SYSTEM
Chapter 10 Computer Graphics
Topics Introduction to Repetition Structures
Chapter 2: System Structures
Bashar Mu’ala Ahmad Khader
The Graphics Rendering Pipeline
CS451Real-time Rendering Pipeline
Understanding Theory and application of 3D
Computer Graphics.
Chapter 1: Introduction to Computers and Programming
دکتر سعید شیری قیداری & فصل 4 کتاب
Project Innovational software from Graphics and CAD area.
Application Solution: 3D Inspection Automation with SA
Computer software.
Structures and Mechanisms.
NC,CNC machines and Control Programming.
Unit 20 Software Part 2.
NC and CNC machines and Control Programming
Structures and Mechanisms.
Unit 20 Software Part 2.
Chapter 1 Introduction(1.1)
CS105 Introduction to Computer Concepts Intro to programming
Topics Designing a Program Input, Processing, and Output
Topics Designing a Program Input, Processing, and Output
Computer Graphics Lecture 15.
Chapter 14 Shading Models.
Introduction to spagetti and meatballs
CS105 Introduction to Computer Concepts Intro to programming
Web Application Development Using PHP
Presentation transcript:

Project Splinescan Open Source 3D Scanning for Everyone Andrew Lewis, 2006 ** Released Under Creative Commons **

Introduction ● What is Project Splinescan? – 3D Scanner Toolkit – Platform Independent (MacOS/Win32/Linux) – Open-source – GPL ● Splinescan is NOT a 3D Scanner – Many 3D Scanners Already – Some Expensive, Some Cheap – 3D Scanning Technology is Well Established in Industry

3D Scanning Hardware ● Large number of devices in the wild:

Splinescan in Detail ● Software Toolkit for: – Fixed Sensor – Non-Contact (aka. Passive) – Visible Laser Line 3D Scanning ● Facilities for: – Computer Control or Time-Based Analysis – Linear or Rotary Target Motion – Single or Multiple Laser Emitters – Client / Server Interfacing

Useful OSS Tools ● Coding: – Python ● Python Imaging Language ● Numerical Python ● PySerial and PyParallel ● Blender API – Perl – Bluefish HTML & PHP – QT/PyQT – C

Useful OSS Tools ● Visualisation: – Blender ● Blender API for Script-Fu ● Converts Different Formats ● Has Animation Support – OpenDX – Gimp ● Other Tools – Linux – The Free Operating System – Streamer / VirtualDUB – XAMPP

A Typical Rotary Scanning Rig

Laser Emitters Camer a Clien t Serve r Jac k Turntab le

Client / Server Technology ● Server: – Carries out Processing / Motor Control – Can be Remotely Located – Can Support Multiple Access – Win32/Linux/OSX ● Client: – HTML based GUI or SSH Connection – Platform Independent – Can be on Same Machine as Server

Framework Example Graphical Interface Physical Storage Control Script Imag e Capt ure Line Detecti on Hole Fillin g Mesh Generati on Log Files

Server Side Technology ● Language Independent – Generally Interpreted (python/perl/java) – Compiled is OK, too (Streamer/Virtualdub) – SSH Server – Apache Webserver (XAMPP Platform) ● Pathways and Filters – Filter: A small application that performs a specific task – Pathway: A route through the filters from input ---> output

How Does it Work? Input Raster Data ● Captured Sequence: – Known Order – One Revolution – Colour images – Evenly Lit – Fixed Laser Position – Known COR ● Mathematically: – Matrix of [x,y,c] tuples – Stored as ordered set

Basic Algorithm: Finding the Laser Line ● Many Possible Options – Chroma or Luminosity based – Contrast, Range or Threshold – Inner Edge, Outer Edge, Mean ● Many Different Implementations – Brute Force – Line / Edge Following – Hybrid Methods

Basic Algorithm: Finding the Laser Line ● Many Possible Options – Chroma or Luminosity based – Contrast, Range or Threshold – Inner Edge, Outer Edge, Mean ● Many Different Implementations – Brute Force ● Left to Right,Top to Bottom ● Inefficient ● Thorough

Basic Algorithm: Finding the Laser Line ● Many Possible Options – Chroma or Luminosity based – Contrast, Range or Threshold – Inner Edge, Outer Edge, Mean ● Many Different Implementations – Line/Edge Following ● Scan area near line or edge ● Fast ● Problems with broken lines ● Needs a starting point

Basic Algorithm: Finding the Laser Line ● Many Possible Options – Chroma or Luminosity based – Contrast, Range or Threshold – Inner Edge, Outer Edge, Mean ● Many Different Implementations – Hybrid Methods ● Combine Multiple Approaches ● Compromise - Speed Vs. Efficiency ● Can be Tailored to Specific Applications ● Google “Line Detection Algorithms”

How Does it Work? Initial Processing – For each Y position ● Find the laser line ● Measure distance from COR ● Store X for each Y ● Repeat for each image X Y – Distortion ● Problem: Laser is at an angle ● Result: X value is incorrect ● Solution: Distortion is Uniform, correct it later with an anamorphic transform.

How Does it Work? Making 2D into 3D ● We have a stored X value for each Y position in every image ● The first step is to take the 2D line data and revolve it around the y-axis to generate a 'cage' – Basic 3D Rotation around Y axis: ● Y = y ● X = z(sin(r)) + x(cos(r)) ● Z = z(cos(r)) - x(sin(r)) note: r = angle of rotation around the y-axis =(360/NumImages)ImageNum

How Does it Work? Speeding up the Process ● We can do something quite clever here. – The scanner always starts with a 2D image – FOR EACH CASE: z = 0 ● The formula gets even more basic: – X = 0(sin(r)) + x(cos(r)) ---> X = x(cos(r)) – Z = 0(cos(r)) - x(sin(r)) ---> Z = -x(sin(r))

How Does it Work? Generating Meaningful Output ● We have a basic [x,y,z] matrix (aka. 'point cloud') for the object ● Model may be incomplete: – Missing Data (occlusion, reflection, transparency) – Noise (laser speckle, lighting, surface texture, interlacing) – Distortion (camera pitch, camera roll, optics, bad COR) ● Improvements: – Point Cloud is not much use – there is no surface attached to it – Try to fix missing data, noise, distortion, etc....

Noise and Occlusion Oscillation on Y axis Laser Speckle Occlusion Interlaced Source Footage Variable Lighting

Recovering Missing Data Noise ● Occurs when an undesirable effector distorts raw data ● Laser speckle – A quantum effect, best handled with time-space analysis – Requires multiple revolutions when not using motor control ● Reflection/Refraction – Chalk dust or poster paint can minimise the effect ● Other effects – Interlacing can be removed with de-interlace filters – Different laser frequencies can sometimes help (green/red)

Recovering Missing Data Occlusion ● Occurs when a prominence obscures part of laser line ● Angle of laser relative to object can reduce this effect ● A contralateral laser will also minimise this problem ● A hole in the [x,y] data – Treatment depends on magnitude of hole in 2D and 3D – Small holes can be 'smoothed out' with averaging – Large Holes can be solved as equations in 3D – Some meshing algorithms deal with this automatically – Vectorising laser line ???

Recovering Missing Data Distortion ● Occurs when a rigging is misconfigured ● Distortion is usually uniform ● Can be fixed ● Better to fix hardware and then rescan

Generating a Mesh ● Point cloud is disparate, it has no surfaces defined: – Can not be textured – Can not be 'closed' – Has no integumentary boundaries ● Mesh algorithms create a surface – Too many algorithms to explore in 12 lectures – Meshing is a 'Hot Topic' in computer graphics – Sometimes erroneously called a 'triangulation algorithm'

Basic Algorithm: Voronoi Diagram ● The voronoi diagram encapsulates each point from the cloud into a polygon called a Dirichlet region – Each region contains only one point – Each region is closer to its own generator point than any other point on the surface – A Voronoi diagram is associated with 2D not 3D ● A Voronoi diagram is sometimes called a Dirichlet Tesselation – The tesselation pattern is closely linked to Delaunay Triangulation Images from: Eric W. Weisstein. "Voronoi Diagram." From MathWorld--A Wolfram Web Resource.

Basic Algorithm: Delaunay Triangulation ● Very simple instructions – Join the points into triangles – The Circumcircle of each triangle should be empty ● Simple theory: Complex implementation – Brute force approach is inefficient – Dozens of implementations – Simpler to implement for regular data – Google 'delaunay algorithm' Images from: Eric W. Weisstein. "Voronoi Diagram." From MathWorld--A Wolfram Web Resource.