Subversion Repositories seema-scanner

Rev

Rev 253 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 253 Rev 254
Line 27... Line 27...
27
 
27
 
28
\maketitle
28
\maketitle
29
 
29
 
30
\begin{figure}[h]
30
\begin{figure}[h]
31
	\centering
31
	\centering
32
		\includegraphics[width=.9\textwidth]{mesh0.png}
32
		\includegraphics[width=.9\textwidth]{images/mesh0.png}
33
	\label{fig:mesh0}
33
	\label{fig:mesh0}
34
\end{figure}
34
\end{figure}
35
 
35
 
36
\begin{abstract}
36
\begin{abstract}
37
This is the manual for the Seeing Machines Lab Structured Light Scanner (SeeMa-Scanner). The scanner consists of both hardware components (including cameras, projector and rotation stage), and software for calibration, scanning and reconstruction. While most of the components should be self-explanatory, we describe the hardware, and each software component, making it possible for students and staff to extend the scanner with new functionality. We also give a brief step-by-step guide on how to get from a physical object to a digital mesh model of it. 
37
This is the manual for the Seeing Machines Lab Structured Light Scanner (SeeMa-Scanner). The scanner consists of both hardware components (including cameras, projector and rotation stage), and software for calibration, scanning and reconstruction. While most of the components should be self-explanatory, we describe the hardware, and each software component, making it possible for students and staff to extend the scanner with new functionality. We also give a brief step-by-step guide on how to get from a physical object to a digital mesh model of it. 
Line 64... Line 64...
64
Table \ref{tbl:hardwareparts} lists the main hardware parts of the SeeMaLab 3D scanner with their specifications. The hardware consists of a set of industrial cameras and a projector mounted on a sturdy aluminum optical breadboard. A microtranslation stage holds the circular object plate, which can accurately rotate the scan object, in order to capture point clouds from different angles. 
64
Table \ref{tbl:hardwareparts} lists the main hardware parts of the SeeMaLab 3D scanner with their specifications. The hardware consists of a set of industrial cameras and a projector mounted on a sturdy aluminum optical breadboard. A microtranslation stage holds the circular object plate, which can accurately rotate the scan object, in order to capture point clouds from different angles. 
65
 
65
 
66
The cameras, projector and rotation stage are mounted rigidly with respect to each other, which is important for high quality results. See figure \ref{fig:hardware0} for an image of the inside of the main scanner assembly. A darkening curtain can be lowered, to prevent ambient light from interfering with the measurement procedure. 
66
The cameras, projector and rotation stage are mounted rigidly with respect to each other, which is important for high quality results. See figure \ref{fig:hardware0} for an image of the inside of the main scanner assembly. A darkening curtain can be lowered, to prevent ambient light from interfering with the measurement procedure. 
67
\begin{figure}[h]
67
\begin{figure}[h]
68
	\centering
68
	\centering
69
		\includegraphics[width=.9\textwidth]{hardware0.jpg}
69
		\includegraphics[width=.9\textwidth]{images/hardware0.jpg}
70
	\caption{The scanner hardware. Two industrial cameras and one projector constitute the optical parts. An angel figurine acts as the scan object, and is placed on top of the circular rotation plate. The calibration target is also seen on its holder.}
70
	\caption{The scanner hardware. Two industrial cameras and one projector constitute the optical parts. An angel figurine acts as the scan object, and is placed on top of the circular rotation plate. The calibration target is also seen on its holder.}
71
	\label{fig:hardware0}
71
	\label{fig:hardware0}
72
\end{figure}
72
\end{figure}
73
 
73
 
74
The geometry of the scanner is illustrated on figure \ref{fig:hardwaredimensions}, which also indicates the minimum focus range of the cameras and projector.
74
The geometry of the scanner is illustrated on figure \ref{fig:hardwaredimensions}, which also indicates the minimum focus range of the cameras and projector.
75
\begin{figure}[h]
75
\begin{figure}[h]
76
	\centering	
76
	\centering	
77
		\includegraphics[width=.9\textwidth]{hardwaredimensions.pdf}
77
		\includegraphics[width=.9\textwidth]{images/hardwaredimensions.pdf}
78
	\caption{The physical dimensions of the breadboard, and throw angles of the cameras and projector.}
78
	\caption{The physical dimensions of the breadboard, and throw angles of the cameras and projector.}
79
	\label{fig:hardwaredimensions}
79
	\label{fig:hardwaredimensions}
80
\end{figure}
80
\end{figure}
81
 
81
 
82
\subsection{Projector}
82
\subsection{Projector}
Line 328... Line 328...
328
	\item Save the resulting merged point cloud. In the save dialog, make sure to include the normals in the output file (see fig. \ref{fig:meshlab3}).
328
	\item Save the resulting merged point cloud. In the save dialog, make sure to include the normals in the output file (see fig. \ref{fig:meshlab3}).
329
\end{enumerate}
329
\end{enumerate}
330
 
330
 
331
\begin{figure}[h]
331
\begin{figure}[h]
332
	\centering
332
	\centering
333
		\includegraphics[width=\textwidth]{meshlab0.png}
333
		\includegraphics[width=\textwidth]{images/meshlab0.png}
334
	\caption{One full set of scans (9 point clouds covering $360^\circ$ in $40^\circ$ intervals).}	
334
	\caption{One full set of scans (9 point clouds covering $360^\circ$ in $40^\circ$ intervals).}	
335
	\label{fig:meshlab0}
335
	\label{fig:meshlab0}
336
\end{figure}
336
\end{figure}
337
\begin{figure}[h]
337
\begin{figure}[h]
338
	\centering
338
	\centering
339
		\includegraphics[width=.4\textwidth]{meshlab1.png}
339
		\includegraphics[width=.4\textwidth]{images/meshlab1.png}
340
	\caption{Estimate normals, and orient them consistenly towards the camera (positive z-axis).}
340
	\caption{Estimate normals, and orient them consistenly towards the camera (positive z-axis).}
341
	\label{fig:meshlab1}
341
	\label{fig:meshlab1}
342
\end{figure}
342
\end{figure}
343
\begin{figure}[h]
343
\begin{figure}[h]
344
	\centering
344
	\centering
345
		\includegraphics[width=.25\textwidth]{meshlab2.png}
345
		\includegraphics[width=.25\textwidth]{images/meshlab2.png}
346
	\caption{Flatten visible layers and retain ''unreferences vertices'', i.e. points not in a triangle.}
346
	\caption{Flatten visible layers and retain ''unreferences vertices'', i.e. points not in a triangle.}
347
	\label{fig:meshlab2}
347
	\label{fig:meshlab2}
348
\end{figure}
348
\end{figure}
349
\begin{figure}[h]
349
\begin{figure}[h]
350
	\centering
350
	\centering
351
		\includegraphics[width=.7\textwidth]{meshlab3.png}
351
		\includegraphics[width=.7\textwidth]{images/meshlab3.png}
352
	\caption{Save the merged point clouds, and include the estimated normals in the output file.}
352
	\caption{Save the merged point clouds, and include the estimated normals in the output file.}
353
	\label{fig:meshlab3}
353
	\label{fig:meshlab3}
354
\end{figure}
354
\end{figure}
355
 
355
 
356
If you have acquired multiple $360^\circ$ scans of your object in different position, proceed as above for each set. Then, you will need to align and merge these point cloud. Meshlab has manual coarse and automated ICP alignment integrated. Note that the automatic alignment procedure in Meshlab requires high quality point normal estimates for all point cloud to succeed. If this is not given, the alignment process will fail without warning or errors.
356
If you have acquired multiple $360^\circ$ scans of your object in different position, proceed as above for each set. Then, you will need to align and merge these point cloud. Meshlab has manual coarse and automated ICP alignment integrated. Note that the automatic alignment procedure in Meshlab requires high quality point normal estimates for all point cloud to succeed. If this is not given, the alignment process will fail without warning or errors.
Line 358... Line 358...
358
	\item Load the point clouds of interest (''File $\rightarrow$ Import Mesh''). The imported point cloud will not be properly aligned. Open the alignment tool (a big yellow A tool button). See figure \ref{fig:meshlab4} for an image of this tool. ''Glueing'' in Meshlab means setting an initial rough alignment. You can ''glue'' the first mesh, and rough ''glue'' the others to it by selecting a small number (minimum 4) of surface point correspondences with the mouse. When all point clouds have been ''glued'', you can initiate automatic fine-alignment (group-wise ICP) by pressing ''Process''. A good alignment should be confirmed by selecting ''False colors'', and seeing a good mix of colours in overlap areas. 
358
	\item Load the point clouds of interest (''File $\rightarrow$ Import Mesh''). The imported point cloud will not be properly aligned. Open the alignment tool (a big yellow A tool button). See figure \ref{fig:meshlab4} for an image of this tool. ''Glueing'' in Meshlab means setting an initial rough alignment. You can ''glue'' the first mesh, and rough ''glue'' the others to it by selecting a small number (minimum 4) of surface point correspondences with the mouse. When all point clouds have been ''glued'', you can initiate automatic fine-alignment (group-wise ICP) by pressing ''Process''. A good alignment should be confirmed by selecting ''False colors'', and seeing a good mix of colours in overlap areas. 
359
	\item Merge the aligned point cloud ''Filters $\rightarrow$ Mesh Layer $\rightarrow$ Flatten Visible Layers''.
359
	\item Merge the aligned point cloud ''Filters $\rightarrow$ Mesh Layer $\rightarrow$ Flatten Visible Layers''.
360
\end{enumerate}
360
\end{enumerate}
361
\begin{figure}[h]
361
\begin{figure}[h]
362
	\centering
362
	\centering
363
		\includegraphics[width=.9\textwidth]{meshlab4.png}
363
		\includegraphics[width=.9\textwidth]{images/meshlab4.png}
364
	\caption{The alignment tool in Meshlab.}
364
	\caption{The alignment tool in Meshlab.}
365
	\label{fig:meshlab4}
365
	\label{fig:meshlab4}
366
\end{figure}
366
\end{figure}
367
 
367
 
368
The next step is to reconstruct a surface from a point cloud. This can be done using the Poisson surface reconstruction built into Meshlab. It is accessible through ''File $\rightarrow$ Point Set $\rightarrow$ Surface Reconstruction: Poisson''. You will most probably have to vary the parameters for this step, to obtain pleasing results for your particular data. 
368
The next step is to reconstruct a surface from a point cloud. This can be done using the Poisson surface reconstruction built into Meshlab. It is accessible through ''File $\rightarrow$ Point Set $\rightarrow$ Surface Reconstruction: Poisson''. You will most probably have to vary the parameters for this step, to obtain pleasing results for your particular data.