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 |
|