Harvester - A DIY 3D PHOTO SCANNER
What is Harvester?
Harvester is the name given to a project to develop a low cost DIY 3D photo scanner whilst exploring Multiview Geometry and photogammetry to capture 3D models from photos for printing on a 3D Printer. This project will build upon and adapt the Carapace-Copier work that was already started by Reece Arnott.
The name Harvester has come about due to its nature of gathering and collating images for processing and because of its expected future connections with Huxley Seedling i.e harvest the seed to grow the seedling!
Contributors to this project will include myself and my partner Bodgeit. Feedback, discussion and other constructive input from those on the RepRap forum will be most welcome.
Files - Coming Soon!
|FILE ID#||TYPE||DESCRIPTION||AVAILABLE FORMATS||CREATED/RESERVED BY|
|Your-File-Name||SOLID MODEL ASSEMBLY||These are CAD files for the Solid Model Assembly||.xml.zip, .stl.zip||--Example User 12:00, Today's Date 20xx (UTC)|
|Your-File-Name||CAD FILES FOR PARTS||These are CAD files for each part.||.xml.zip, .stl.zip||--Example User 12:00, Today's Date 20xx (UTC)|
|Your-File-Name||EVEN MORE FILES||These are are even more files.||.xml.zip, .stl.zip||--Example User 12:00, Today's Date 20xx (UTC)|-|
|Your-File-Name||SOLID MODEL ASSEMBLY||This is the final finished machine||N/A||--Example User 12:00, Tomorrow's Date, 20xx (UTC)|
Please edit this and click the links to put in your own files! --Sebastien Bailard 08:34, 10 September 2010 (UTC)
Scope of the Project
The scope of the project is to be able to scan and print small objects up to approximately a 10” (reduced from 12" due to availability and choice of materials) cubed object from a series of photographs. It is also hoped that providing a system which helps to simplify some of the mathematics involved in the processing of photo's to create 3D images will make for a more efficient and accurate system.
It is advisable for interested parties to read and be familiar with the primer “The Basics of Photogrammetry” and Multiview Geometry by RJ Radke which further explains and describes many of the terms, principles, maths and design considerations referred to in this project. A more simplified explanation is provided by T Darrell
It is also assumed readers will be familiar with RepRap 3D printing
Main Features & High Level Requirements
For the purpose of this project the high-level requirements to be considered are:
1) A moveable platform or base (e.g. turntable) upon which objects can be placed to be photographed from a variety of orientations (i.e. angles and positions). This platform should also cater for the ease of camera calibration.
2) A camera which can be easily positioned to provide acceptable field of view (FOV), focus, calibration and orientation needed for nearest accuracy of image capture and 3D object generation. The main aim here will be to have a system whereby camera positioning will be known to the software.
The initial aim will be to get the main concepts of the above process working and in the future to integrate these together as one cohesive system alongside 3D printing.
Preliminary Design Considerations
Based on the high-level requirements and research the following design decisions and requirements were considered and identified for this project:
1) Make the platform in the form of a turntable that can rotate an object to any specified angle, thus simulating X-axis functionality. This will eliminate the need for the camera to rotate around an object to capture images on all sides and at different orientations i.e. the object will be centred and rotated a full 360° on the platform.
2) To ease positioning an object centrally on the turntable, it should be engraved, marked or etched with ruler or grid type measurements (in cm/inches) along 4 axis’s at every 90° from the central point. It is considered mm measurements at intervals of 5mm should be ideal and sufficient for the purpose of this project.
3) The rotation of the turntable will be facilitated by a stepper motor controlled by Arduino with the minimum capability of 7.5° turns (approximately 1 step) i.e. ideal accurate image capture is at every 30°, however every 15° is desired for a more improved accuracy.
4) It should be possible to mount most common types of digital cameras at a suitable focus, field of view (FOV) and orientation needed for image capture. This can be achieved by providing a special camera holder unit or cradle to hold and secure the camera in position. The cradle should be adjustable in order to accommodate most common types and sizes of digital cameras or webcams.
5) It should be possible to rotate the camera cradle a full 90° (azimuth angle) to assist with self-calibration and meet the requirements to have at least one photo taken rolled at 90°.
6) The camera cradle ideally should be mounted on the Y, Z axis’s each of which can be driven by individual stepper motors controlled by Arduino. The horizontal X-axis should provide the ability to adjust the distance from the centre point of the turntable so that a full 10” high/wide (reduced from 12" due to restrictions for materials to be used) object can fit into the field of view of the camera. The vertical Z-axis will enable positioning the camera at the correct height so that it can be positioned centre to the height of an object or to capture images at various vertical elevation points. Positioning the camera directly above an object on the turntable may also need to be considered.
7) It should be possible to combine the turntable and camera cradle mounting into one unit that can be easily transported and sit comfortably on a standard table or desktop.
8) Based on preliminary line of sight calculations the dimensions between camera lens and the centre of the turntable should have a minimum measure 32” (5” turntable + 23” ideal minimum focal distance from the edge of the turntable + 4” manoeuvrable space to account for different lens protrusions). Hence the overall internal length of any container unit should at a minimum be 38” (32” + 5” for rest of turntable + 1” perimeter space around the turntable) along the line of sight between the turntable and camera.
9) It should be considered to develop the unit so that it can be expanded or collapsed to make it more portable/transportable.
10) It should be possible to shield the object being photographed from harsh or artificial lighting or under/overexposure to light. It is also ideal to block shadows. This could be achieved by providing a cover or external walls that facilitate diffused lighting (like that used in usual studio photographic situations). This could be provided with apertures in the roof or walls covered with tissue or other semi-transparent materials or attachable/detachable diffusers that can be positioned above and around the object to be photographed.
11) It should be possible to photograph the object against a dim background (e.g. black) which should also have a scale bar or rule zeroed with the turntable top (e.g. etched or marked at equal 5mm intervals in the background should be sufficient).
Given the previously outlined design considerations and requirements, the overall design for the 3D photo scanner comprises of:
1) A container unit providing a dim and scale rule or grid background with diffused lighting
2) A turntable that is stepper motor driven providing 15° turns
3) A camera cradle that can hold and rotate the camera 90°
4) The camera cradle mounted on moveable Y, Z axis with each axis being stepper motor driven
5) A digital camera (preferably high-resolution)
6) PC software to enable capture and processing photographic images into 3D image files
7) PC software to view a 3D image file viewer e.g. STL file viewer for testing (optional and out of scope of this document as there are many CAD applications available that provide this functionality)
8) PC Software to load and print a scanned object on a 3D printer (optional and out of scope of this document as this is already catered for by ReplicatorG, etc. for testing
The scope of the design focuses primarily on items 1) to 4) and 6) above. For the case of 5) at least three most common models of camera or webcam will be considered and tested.
Container Unit Design
Camera Cradle Design
Camera Cradle Mounts & Axis's Design
Photogammetry PC Software Design
The PC software will provide the following functionality:
1) Handle photoshoot mode to drive the turntable and handle camera positioning and orientation (i.e. control Arduino)
2) Enable selection of two or more photo image files to be processed. This may be via user manually selecting or by the user specifying a drive/path to monitor for file changes (i.e. new photo taken). Later on this functionality may be extended to handle remote image capture (which is only supported by some more expensive DSLR type cameras e.g. Nikon, Canon etc) as a future enhancement.
3) Manually or automatically selecting a device configuration for the camera used (will needed for camera positioning and orientation in addition to information for calculations during processing). Device used can in some cases be detected from the photo files. As an extension at a later date may include automatic loading / configuring of various devices (optional).
4) Selecting or configuring a preferred 3D file viewer to show the processed 3d image
5) Ability to specify known Camera orientation (angle and position) for each image. Even though this will be determined at the time of doing the photo shoot the user may wish to alter or change images e.g. something went wrong or image not come out right for a particular orientation etc.
6) Ability to specify known scanned object maximum dimensions if known by the user. This will help in processing the image i.e. make it more efficient and accurate.
7) Display selected photos and allow the user to remove, add, or move/change order of photos again mainly to allow user to correct or override photos before processing due to errors etc.
8) Process selected photos to generate 3D model whilst showing progress and notifying user when processing is complete or of any errors that occur with help on how to resolve issues etc.
9) Launch a 3D file viewer (optional). It may be considered to provide the viewing feature into the software at a later date i.e. java software for loading an STL file has already been provided by Carlos Pedrinaci.
For Harvester any combination of the existing "Official" Electronics can be used.
If you have not got any electronics Harvester has its own Low cost solutions.
As a starting point I am investigating the use or reuse of parts of Reece Arnott's application CarapaceCopier-0.8-beta-src. On first review there appears to be some overlap of implementation, functionality and naming conflicts with Java3D which will first need to be resolved. The code also includes a huge chunk of work for camera calibration using a points reference photo which may not be needed for this project and thus will be disabled as necessary.
Coming Soon - Things to be done!
1) Sort out some diagrams and photos for each section of the design
2) Complete update of design sections
- David Project
- What if I want to scan something bigger than a 10" cube? Sounds like a scaling issue.
- "SmartPlanes unmanned survey and mapping"
- "photomaping technique needed"
- "Creating Digital Elevation Models from Low Altitude Photographs"
- "Making Digital Elevations Models (DEM) on the cheap"
- Search SourceForge for "photogrammetry"
- Search SourceForge for "panorama" photo-stitching tools. (In particular, is there anything useful in the "Adobe Panoramas Dataset" that can be used so programmers can work on the software before the hardware is done?)