Subversion Repositories seema-scanner

Rev

Rev 60 | Rev 62 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 60 Rev 61
Line 114... Line 114...
114
	\item After aquisition, individual calibration sets can be re-examined. Calibration parameters are automatically determined by clicking the ''Calibrate'' button. This procedure can take up to a few minutes. The terminal output will show recalibration errors, which measure the quality of calibration. 
114
	\item After aquisition, individual calibration sets can be re-examined. Calibration parameters are automatically determined by clicking the ''Calibrate'' button. This procedure can take up to a few minutes. The terminal output will show recalibration errors, which measure the quality of calibration. 
115
	\item The calibration result can be examined by changing to the ''Point Clouds'' tab in the GUI (see fig. \ref{fig:pointclouds0}). Left and right cameras are representated by colored coordinate systems (the viewing direction is the positive z-axis, y points down, x to the right). The rotation axis, as determined by the calibration procedure is shown as a white line section. 
115
	\item The calibration result can be examined by changing to the ''Point Clouds'' tab in the GUI (see fig. \ref{fig:pointclouds0}). Left and right cameras are representated by colored coordinate systems (the viewing direction is the positive z-axis, y points down, x to the right). The rotation axis, as determined by the calibration procedure is shown as a white line section. 
116
	\item After successfull calibration, data can be aquired for later point cloud reconstruction. This is done in the ''Capture'' tab, see figure \ref{fig:capture0} for an illustration. 
116
	\item After successfull calibration, data can be aquired for later point cloud reconstruction. This is done in the ''Capture'' tab, see figure \ref{fig:capture0} for an illustration. 
117
	\item The scan object is now placed on the rotation plate, and the darkening curtain again lowered. 
117
	\item The scan object is now placed on the rotation plate, and the darkening curtain again lowered. 
118
	\item Sequences of patterns are projected onto the object. The captured images can be reviewed, and one or multiple captured sequences reconstructed using the ''Reconstruct'' button. 
118
	\item Sequences of patterns are projected onto the object. The captured images can be reviewed, and one or multiple captured sequences reconstructed using the ''Reconstruct'' button. 
119
	\item The results will show up in the ''Points Clouds'' tab. Single point clouds can be shown or hidden.
119
	\item The results will show up in the ''Points Clouds'' tab. Single point clouds can be shown or hidden, see figure \ref{fig:pointclouds1}.
120
	\item All data can be exported from the GUI program by means of the top bar menues. By exporting the point clouds into a folder, a \texttt{*.aln} is stored alongside these, which contains pose information in global coordinate space, which aligns the points clouds correctly and relative to each other.
120
	\item All data can be exported from the GUI program by means of the top bar menues. By exporting the point clouds into a folder, a \texttt{*.aln} is stored alongside these, which contains pose information in global coordinate space, which aligns the points clouds correctly and relative to each other.
121
\end{enumerate}
121
\end{enumerate}
122
	
-
 
123
\begin{figure}[h]
122
\begin{figure}[H]
124
	\centering
123
	\centering
125
		\includegraphics[width=.7\textwidth]{calibration0.png}
124
		\includegraphics[width=.7\textwidth]{calibration0.png}
126
	\caption{The GUI showing the ''Calibration'' tab.}
125
	\caption{The GUI showing the ''Calibration'' tab.}
127
	\label{fig:calibration0}
126
	\label{fig:calibration0}
128
\end{figure}
127
\end{figure}
129
\begin{figure}[h]
128
\begin{figure}[H]
130
	\centering
129
	\centering
131
		\includegraphics[width=.7\textwidth]{pointclouds0.png}
130
		\includegraphics[width=.7\textwidth]{pointclouds0.png}
132
	\caption{GUI showing the result of calibration in the ''Point Clouds'' tab.}
131
	\caption{GUI showing the result of calibration in the ''Point Clouds'' tab.}
133
	\label{fig:pointclouds0}
132
	\label{fig:pointclouds0}
134
\end{figure}
133
\end{figure}
135
\begin{figure}[h]
134
\begin{figure}[H]
136
	\centering
135
	\centering
137
		\includegraphics[width=.7\textwidth]{capture0.png}
136
		\includegraphics[width=.7\textwidth]{capture0.png}
138
	\caption{The ''Capture'' tab in the GUI.}
137
	\caption{The ''Capture'' tab in the GUI.}
139
	\label{fig:capture0}
138
	\label{fig:capture0}
140
\end{figure}	
139
\end{figure}
-
 
140
\begin{figure}[H]
-
 
141
	\centering
-
 
142
		\includegraphics[width=.7\textwidth]{pointclouds1.png}
-
 
143
	\caption{''Point Clouds'' tab with reconstructed point clouds.}
-
 
144
	\label{fig:pointclouds1}
-
 
145
\end{figure}
-
 
146
\clearpage	
141
 
147
 
142
\section{Reconstructing a surface}
148
\section{Reconstructing a surface}
143
Multiple point clouds can be merged fused into a single watertight mesh representation using Meshlab. Meshlab is available on the scanner computer, but also freely available for download for multiple platforms. The basic steps involved in merging and reconstructing are outlined below. The input data will consist of one or more sets of pointclouds aquired with the SeeMaLab GUI. Note that if multiple object poses are desired (for complex geometries/blind spots, etc.), it is recommended to close and restart the GUI for each pose, to clear the captured sequences and memory.
149
Multiple point clouds can be merged fused into a single watertight mesh representation using Meshlab. Meshlab is available on the scanner computer, but also freely available for download for multiple platforms. The basic steps involved in merging and reconstructing are outlined below. The input data will consist of one or more sets of pointclouds aquired with the SeeMaLab GUI. Note that if multiple object poses are desired (for complex geometries/blind spots, etc.), it is recommended to close and restart the GUI for each pose, to clear the captured sequences and memory.
144
\begin{enumerate}
150
\begin{enumerate}
145
	\item Load a set of point clouds, by opening the \texttt{*.aln} file in Meshlab (''File $\rightarrow$ Open Project...''). See figure \ref{fig:meshlab0} for an illustration of one full set of scans loaded into Meshlab.
151
	\item Load a set of point clouds, by opening the \texttt{*.aln} file in Meshlab (''File $\rightarrow$ Open Project...''). See figure \ref{fig:meshlab0} for an illustration of one full set of scans loaded into Meshlab.
146
	\item The PLY files do contain XYZ and RGB values for all points. You will need to estimate normals, in order for the surface reconstruction to succeed. These normals can be estimated and consistently oriented by considering the camera viewpoint. Select all point cloud in turn and for each, choose ''Filters $\rightarrow$ Point Sets $\rightarrow$ Compute Normals for Point Set''. Make sure the ''Flip normals...'' checkbox is ticked (see fig. \ref{fig:meshlab1}). Suitable neighborhood values are in the order of $10$. You can visualize the estimated normals through the ''Render'' menu.
152
	\item The PLY files do contain XYZ and RGB values for all points. You will need to estimate normals, in order for the surface reconstruction to succeed. These normals can be estimated and consistently oriented by considering the camera viewpoint. Select all point cloud in turn and for each, choose ''Filters $\rightarrow$ Point Sets $\rightarrow$ Compute Normals for Point Set''. Make sure the ''Flip normals...'' checkbox is ticked (see fig. \ref{fig:meshlab1}). Suitable neighborhood values are in the order of $10$. You can visualize the estimated normals through the ''Render'' menu.
147
	\item After estimating normals for all point clouds in a set, choose ''Filters $\rightarrow$ Mesh Layer $\rightarrow$ Flatten Visible Layers''. Make sure to retain unreferences vertices, because at this point, none of the points will be part of any triangles (see figure \ref{fig:meshlab2}). This process will alter all coordinates by applying the pose transformation to all point clouds before merging them.
153
	\item After estimating normals for all point clouds in a set, choose ''Filters $\rightarrow$ Mesh Layer $\rightarrow$ Flatten Visible Layers''. Make sure to retain unreferences vertices, because at this point, none of the points will be part of any triangles (see figure \ref{fig:meshlab2}). This process will alter all coordinates by applying the pose transformation to all point clouds before merging them.
148
	\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}).
154
	\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}).
149
\end{enumerate}
155
\end{enumerate}
150
 
156
 
151
\begin{figure}[h]
157
\begin{figure}[H]
152
	\centering
158
	\centering
153
		\includegraphics[width=\textwidth]{meshlab0.png}
159
		\includegraphics[width=\textwidth]{meshlab0.png}
154
	\caption{One full set of scans (9 point clouds covering $360^\circ$ in $40^\circ$ intervals).}	
160
	\caption{One full set of scans (9 point clouds covering $360^\circ$ in $40^\circ$ intervals).}	
155
	\label{fig:meshlab0}
161
	\label{fig:meshlab0}
156
\end{figure}
162
\end{figure}
157
\begin{figure}[h]
163
\begin{figure}[H]
158
	\centering
164
	\centering
159
		\includegraphics[width=.4\textwidth]{meshlab1.png}
165
		\includegraphics[width=.4\textwidth]{meshlab1.png}
160
	\caption{Estimate normals, and orient them consistenly towards the camera (positive z-axis).}
166
	\caption{Estimate normals, and orient them consistenly towards the camera (positive z-axis).}
161
	\label{fig:meshlab1}
167
	\label{fig:meshlab1}
162
\end{figure}
168
\end{figure}
163
\begin{figure}[h]
169
\begin{figure}[H]
164
	\centering
170
	\centering
165
		\includegraphics[width=.4\textwidth]{meshlab2.png}
171
		\includegraphics[width=.25\textwidth]{meshlab2.png}
166
	\caption{Flatten visible layers and retain ''unreferences vertices'', i.e. points not in a triangle.}
172
	\caption{Flatten visible layers and retain ''unreferences vertices'', i.e. points not in a triangle.}
167
	\label{fig:meshlab2}
173
	\label{fig:meshlab2}
168
\end{figure}
174
\end{figure}
169
\begin{figure}[h]
175
\begin{figure}[H]
170
	\centering
176
	\centering
171
		\includegraphics[width=.7\textwidth]{meshlab3.png}
177
		\includegraphics[width=.7\textwidth]{meshlab3.png}
172
	\caption{Save the merged point clouds, and include the estimated normals in the output file.}
178
	\caption{Save the merged point clouds, and include the estimated normals in the output file.}
173
	\label{fig:meshlab3}
179
	\label{fig:meshlab3}
174
\end{figure}
180
\end{figure}
Line 185... Line 191...
185
	\label{fig:meshlab4}
191
	\label{fig:meshlab4}
186
\end{figure}
192
\end{figure}
187
 
193
 
188
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. 
194
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. 
189
 
195
 
190
The full Poisson code is available at \url{http://www.cs.jhu.edu/~misha/Code/PoissonRecon/Version6.11/}, and also installed on the scanner computer. The full software allows for finer control over the process, and also to remove mesh membranes with little point support.
196
The full Poisson code is available at \url{http://www.cs.jhu.edu/~misha/Code/PoissonRecon/Version6.11/}, and also installed on the scanner computer. The full software allows for finer control over the process, and also to remove mesh membranes with little point support. We refer to the documentation provided by the authors of the PoissonRecon code.
191
 
197
 
192
The Poisson reconstruction algorithm does not keep color information. In order to obtain a colored mesh, one needs to reproject the per-point color information from the full point cloud to the mesh. This can be done in Meshlab through the ''Filters $\rightarrow$ Color Creation and Processing $\rightarrow$ Disk Vertex Coloring'' functionality. 
198
The Poisson reconstruction algorithm does not keep color information. In order to obtain a colored mesh, one needs to reproject the per-point color information from the full point cloud to the mesh. This can be done in Meshlab through the ''Filters $\rightarrow$ Color Creation and Processing $\rightarrow$ Disk Vertex Coloring'' functionality. 
193
\end{document}
199
\end{document}
194
 
200