Efﬁcient and Low-Cost 3D Structured Light System Based on a Modiﬁed Number-Theoretic Approach

. 3D scanning based on structured light (SL) has been proven to be a powerful tool to measure the three-dimensional shape of surfaces, especially in biomechanics. We deﬁne a set of conditions that an optimal SL strategy should fulﬁll in the case of static scenes and then we present an e ﬃ cient solution based on improving the number-theoretic approach (NTA). The proposal is compared to the well-known Gray code (GC) plus phase shift (PS) technique and the original NTA, all satisfying the same set of conditions but obtaining signiﬁcant improvements with our implementation. The technique is validated in biomechanical applications such as the scanning of a footprint left on a “foam box” typically made for that purpose, where one of the ultimate goals could be the production of a shoe insole.


Introduction
Structured light (SL) upgrades a passive stereo camera system and becomes a powerful tool to achieve dense 3D acquisition [1]. In the simplest case, one of the cameras is typically replaced by a pattern projector such as a digital light projector (DLP) or a liquid crystal display (LCD). The task of the projector is to project patterns (images) with a given texture so that pattern pixels are coded in a certain way. Consequently, on the object's surface the projector imposes a known code (texture) that is then acquired by a camera. The detection of correspondences between projected and imaged codes allows triangulation and hence the computation of the 3D position of those codes on the measuring surface [2].
Considering the typical restrictions of the large number of SL methods, we define a set of conditions (SoCs) that optimal SL patterns should comply with the following.
(1) Every pixel of the projected pattern should contain the entire code and therefore potentially yield a corresponding 3D point. This will create the conditions for high-resolution 3D reconstruction.
(2) There should be high distance between the code words of neighboring pixels. This will allow high sensitivity to spatial depth resolution.
(3) There should be robustness to object color/albedo reflectance properties. Any particular color calibration adjustments or restrictions to the ambient light should be avoided. This will assure almost immediate system use and applicability to various types of object surfaces and ambient light scenarios.
(4) There should be robustness to objects with sharp discontinuities and depth changes. This will guard against the problem of possible code perturbation and its misinterpretation during the decodification stage.
(5) The patterns should assure full 3D reconstruction where all three spatial coordinates of the object shape are attainable. In other words, ultimately computing only the depth coordinate with respect to one reference plane will not be satisfactory. (6) Simple image processing of the acquired patterns, ideally the only image processing used, should consist 2 EURASIP Journal on Advances in Signal Processing of addition, multiplication, comparison, and look-up table indexing. More complex image processing, such as finding edges, corners, detecting various shapes, centers of stripes, and color thresholding, should be avoided. Simple image processing will allow relatively easy implementation from a software point of view and fast processing, hopefully comparable with stateof-the-art commercial products.
(7) Only off-the-shelf components should be used. No special devices such as special lights sources or colorimeters should be part of the system. This will allow easy and affordable implementation from a hardware point of view.
One of the most powerful SL methods is phase shifting (PS), classified into time multiplexing strategies [3]. PS projects a sequence of periodic intensity patterns, so that every subsequent pattern is offset by a fraction of its period with respect to the previous pattern, covering the entire period. As a result, the so-called relative phase map (also periodic) is obtained, in which values readily available from the relative phase map are said to be wrapped in the range modulo 2π. Note that if there were not unwrapping problem, PS would perfectly fit SoC. A widely accepted solution to solve ambiguity of a single PS wrapped map is to combine it with Gray code (GC) [4]. The GC+PS technique is very effective and frequently regarded as the method of choice for the reconstruction of static objects [5]. In this case, the particular pattern period used to create the PS wrapped map is usually determined by the GC word length, since GC essentially codes the areas within every pattern period. However, there are research fields such as interferometry, where it is particularly convenient to work with patterns with variable periodicity. This type of research proposed a rather simple unwrapping solution called spatial unwrapping, which basically only works well on smooth surfaces since it assumes during the unwrapping procedure that the phase difference between neighboring pixels is less than π. An extension of this technique proposed an additional color-coded pattern, giving so a rough estimate to be used during the spatial unwrapping, at the expense that a colored pattern is basically restricted to color neutral objects [6]. Specially made hardware can be used to solve the problem of unwrapping [7]. Other proposed solutions concerned temporal phase unwrapping [8], which uses several wrapped PS maps and occasionally is referred to as multiple phase shifting (MPS). The simplest MPS unwrapping principle comes down to summing the wrapped phase differences between individual PS maps. Unfortunately, in order to achieve accurate 3D reconstruction, the amount of PS maps is typically fairly large in practice, for example, 20-30 maps as shown in [8]. Significant improvements appeared when the number of PS maps was reduced from N to log 2 N [9], during which the periods of various PS maps follow a shorter exponential or other sequence [10,11]. A very appealing approach was originally introduced by Gushov and Solodkin (referred to further as the G-S method) [12]. G-S is based on the number theoretic approach (NTA) where only two patterns, with a larger number of periods, are considered, which is in theory sufficient to provide highly accurate 3D results (note that the number of periods has a direct effect on condition 2 in SoC). G-S is very fast since it comes down to the use of linear equations in which the inputs are simply the wrapped phases. Unfortunately, the straightforward implementation is very affected by unavoidable errors in wrapped phase computations. An interesting improvement is presented in [13] where the matrix of possible solutions is defined. Unfortunately, the computational time is related to the size of the search space, which dictates the probability that the right solution is contained within. Other usual improvements were offered in the form of more evolved 3D system design or the construction of look-up tables (LUTs), both of which might not be practical [14][15][16]. A typical problem with LUT is finite size, which limits the physical resolution. An alternative is to increase the size of LUT which leads to an increase in cost and computing time.
In this work we propose an MPS method based on significant improvements of a basic G-S. Our method checks and corrects, if necessary, the wrapped phase values obtained before the unwrapping computation is performed. In consequence, we do not need to use any LUT. We can readily use the wrapped values within the original G-S method to obtain a reliable unwrapped map. Consequently, our method is not influenced by wrapped phase computation inaccuracies as the original G-S method is and, besides, it is faster than common LUT-based (search) methods.
The remainder of this paper is structured as follows. In Section 2, we briefly explain the original G-S method and how it can be adapted to MPS pointing out the major problems. In Section 3, we present our proposal for overcoming such limitations and compare it to other SL techniques. Section 4 presents the setup of our system. Section 5 includes an experimental evaluation of our method compared to the original G-S and GC+PS. Finally, we conclude by recalling the major points of the presented work.

Application of the Number-Theoretic Approach in Multiphase Shifting
Two integer numbers Φ ABS and ϕ R are in congruence if they give the same remainder when they are divided by a given number λ. Hence, Φ ABS and ϕ R are said to be congruent modulo λ, as depicted in, G-S takes advantage of a simultaneous solution to the following congruence equations: EURASIP Journal on Advances in Signal Processing where Φ ABS and ϕ Ri are integers and λ i are positive integers but also relative primes. A solution to (2) is provided by the famous Chinese remainder theorem [17] depicted in, where the coefficients e i can be computed as follows: Next consider, as shown in Figure 1, an ideal appearance of two sinusoidal periodic patterns (corresponding to wavelengths λ 1 = 5 and λ 2 = 3, resp.) which are meant to be projected and shifted. The abscissa axis corresponds to the unwrapped phase. Hence, every abscissa coordinate has a wrapped phase value, acquired throughout the pattern projection and shifting process, relative to the beginning of a period (e.g., ϕ R1 =2 or ϕ R2 =1 as shown in Figure 1). Evidently, the following conditions hold: where k 1 and k 2 are the number of periods typically unknown in practice, but necessary to reach some corresponding Φ ABS unwrapped value given some known ϕ R1 and ϕ R2 . Note that both Φ ABS and ϕ R1 divided by λ 1 give the same remainder, ϕ R1 . Similarly Φ ABS and ϕ R2 divided by λ 2 give the same remainder, ϕ R2 . Hence, we can set up a system of congruence equations (2) and find a solution for Φ ABS (3). Until now and for simplicity we have assumed integer values for the wrapped phases ϕ R1 and ϕ R2 . Of course, in practice, ϕ R1 and ϕ R2 are real numbers. Usually, the integer part is considered as an initial guess for computing Φ ABS in (3). Then, ideally, the fractional parts ϕ R1FRAC and ϕ R1FRAC of both wrapped phases should be equal. However, in order to minimize noise influence, in practice, the mean values of both fractional parts are added to the initially computed Φ ABS in order to find the ultimate solution for the unwrapped phase. The well-known problem in the original G-S method was that ϕ R1 and ϕ R2 were rounded and then used in (3). Consider that, due to noise, just one of the wrapped phases is slightly above an integer, when it should actually be just below that integer. Evidently, rounding (discarding a fractional part) gives a wrong input in (3), which is even magnified in the computation with the corresponding coefficient e i . Consequently, the unwrapped phase Φ ABS will be quite apart from the correct one.

Proposition of a New Method
Our improvement is based on the fact that we actually have two major polices when computing an integer apart from the rational wrapped values: either rounding to the nearest integer or rounding to the nearest integer towards zero (alternatively infinity). In principle, all these types of rounding would work just fine. The only question is how to assure that all the wrapped phases are rounded towards the same corresponding value on the unwrapped phase axis and that, consequently, the rounding process provides the correct integer pair (ϕ R1 , ϕ R2 ) to be used in (3). This is essentially the key issue, which is neglected in the original G-S method.
Consider, as depicted in Figure  If that is the case, we simply round towards zero to the nearest integer. On the contrary, we assume that the wrapped phases are close to the integer value on the unwrapped phase axis (i.e., close to INTNUM or INTNUM+1) and it is more accurate to round towards the nearest integer. Hence, the core of our method lies in choosing an optimal value for the interval Δ. Recall that only in the ideal case ϕ RiFRAC are equal. If Δ is too small, the risk that none of the wrapped phases will fall within Δ increases. So, in the case that one wrapped phase is above INTNUM+(0.5 + Δ/2) while the other is below INTNUM+(0.5 − Δ/2), rounding to the nearest integer will cause an erroneous integer pair (ϕ R1 , ϕ R2 ). Besides, if Δ is too big, one of the wrapped phases might be within Δ, but the other could even be outside the interval [INTNUM,INTNUM+1]. In this case, rounding to the smaller integer will yield an erroneous integer pair (ϕ R1 , ϕ R2 ).
Besides making an informal and rather intuitive argument for the size of Δ, one should note the following. The rigorous mathematical formulation for the size of Δ effectively means a comprehensive analytical modeling of the noise sources, present during the computation of (un)wrapped phases. To name only a few factors, the noise sensitivity partly depends on the projector-camera physical setup and on the number of pattern periods, as explained in detail in [14]. Furthermore, the acquired image noise would have to be estimated, which depends on the quality of the camera and the projector, the lighting conditions and the object reflectance properties, among other aspects. On top of all that, the number of projected and shifted images also influences the computation of the wrapped phases. Evidently, the precise inclusion of all these factors in an a priori estimate of the size of delta is not an easy task and it is beyond the scope of this work. However, in practice, to acknowledge the influence of the abovementioned factors we use a commercially available camera and projector, assuming it to be obvious that the results can only improve using better quality equipment. The chosen camera-projector physical setup is typical for a large number of 3D scanners. Next, we show a series of experiments with various commonly used pattern periods and in which we reach the point where the increase of pattern periods does not contribute to any gain in the reconstruction accuracy. We require no special ambient light conditions. In other words, we have extensively tested our chosen Δ under "common and widely acceptable" conditions. More specifically, the size Δ is determined for our setup partly intuitively and partly (confirmed) experimentally. We started computing the unwrapped phases with Δ = 0.0 (which is equivalent to an original G-S method), gradually increasing Δ by adding 0.01. Then we realized that Δ = 0.3 assures an excellent result for the computation of the correct wrapped values, as shown in this work. We emphasize that for a given camera/projector setup and choice of pattern period, the computation of Δ has to be done only once.
For completeness, we briefly recall that PS wrapped phase values ϕ R for every pixel are computed solely from the image intensities I i of the ith shifted and projected image, as shown in: where I 0 is the intensity when no source of projection is present (ambient light), A reflects the amplitude of the projected (detected in image) sine signal, and ϕ i are the equally distributed shifts to cover the entire period. Note that the value of A implicitly includes also the effect of the albedo/reflectance variation of a surface patch in the space which is projected into a particular pixel. Fortunately, an optimum result for the wrapped ϕ R can be found through a least square minimization of the difference between the left and the right sides of (6) [18]. Then for a number of images N ≥ 3 we obtain an expression for ϕ R that ideally only depends on I i where atan is here the four quadrant inverse tangent function, yielding angle ϕ R in the interval [−π, π].
In the following paragraphs we summarize the key computational steps of our method.
Step 1. Given the periodic sine pattern, with the period length λ 1 , compute the wrapped phase values ϕ R1 using the PS approach as explained through (6) and (7). Repeat this procedure for the other periodic sine pattern with the period length λ 2 in order to find out another set of wrapped phase values ϕ R2 .
Step 2. Compute the coefficients e i in the equation using, for instance, the extended Euclidean algorithm [19].
Step 3. For any camera pixel and its corresponding wrapped phases pair (ϕ R1 , ϕ R2 ), set Δ = 0.3 and proceed as follows. Round the wrapped phase values to the closest smaller integer, if either of their fractional parts is within interval [0.5 − Δ/2, 0.5 + Δ/2]. Otherwise round it to the closest integer.
Step 4. Given the computed coefficients e i and rounded wrapped values, compute the initial unwrapped value using (3). Refine this initial solution by adding the mean value of the wrapped phases' fractional parts, which were previously discarded during the rounding process.
Step 5. Verify by visual inspection that the unwrapped phase map image is correct. This is relatively easy since an inappropriate value for Δ will give distinctly wrong unwrapped phase values (not just slightly wrong ones invisible to a human eye), for example, Figure 4(a) versus 4(b). If necessary, repeat Step 3 and Step 4 using another value for Δ. Recall that the determination of Δ size is normally executed only once after the spatial arrangement of the camera/projector setup and patterns periods are defined.
Comparing the performance of our solution to other SL methods may not be straightforward. Nevertheless, in order to appreciate MPS methods and in particular the one we propose in this paper, we now briefly review the state-of-theart in SL, pointing out that they violate at least one of the SoC (stated in the introduction of this paper) required for optimal SL patterns. According to one of the latest surveys, one group of SL strategies can be categorized as spatial neighborhood [3]. Spatial neighborhood concentrates, in the majority of cases, all the coding schemes in a unique pattern, which is evidently a clear advantage for the acquisition of moving scenes. As the name suggests, the codeword that labels a certain point of the pattern is obtained from a neighborhood of points around that point. Commonly used cues for (de)codification can be different single or EURASIP Journal on Advances in Signal Processing 5 multiple shapes, for example, stripes or slits [20,21], lines [22,23], circles [24,25], squares [26], which are either colored or have gray level intensities. The main problem here is a high sensitivity to colorful surfaces and/or code misinterpretation due to sharp changes in the object's depth (surface discontinuities). Up to a certain extent, both problems can be relaxed thanks to a color/reflectance calibration [27,28] and dynamic programming [29,30]. Another SL category is the so-called direct codification, where pattern points are encoded using a spectrum of gray level intensity [31] or colors [32], in which case the method is typically restricted for color neutral objects. Besides the problems of using color already mentioned, sometimes it is even necessary to use complicated hardware to project the color spectrum [33]. There have been some attempts to make improvements [34], but the biggest drawback in this category is the high sensitivity to noise, because the distance between adjacent codewords is nearly zero [35]. A somewhat special SL category is the Fourier transform profilometry (FTP), originally introduced in [36]. FTP is based ideally on imaging only a unique sinusoidal pattern while object depth is obtained from Fourier transformation computation, filtration in spatial frequency domain, and inverse Fourier transformation calculation [37]. Unfortunately, the computed 3D depth is commonly restricted and highly dependent on the system parameters, which can be improved through the projection of an extra π-phase shifted pattern [38]. However, an extra pattern makes the method inapplicable for moving scenes, unless a prior knowledge about the object speed is known [39]. There are attempts to perform a πphase shifted FTP constructing a single composite pattern either with or without a color codification [40,41]. Despite attempted improvements, the major drawback (motionless scenes) remains, as in any other (multi)frequency method: FTP faces the problem of blurred depth acquisition largely due to the nontrivial choice of the carrier frequencies related to the filtering step [42]. In conclusion, one of the very few known SL methods that do fulfill the SoC is the GC+PS approach which is extensively compared to our proposal. Other time-multiplexing methods aim to improve some shortcomings such as reducing the number of projection patterns at the expense of increasing the number of projected grey levels [43], or even trying to combine time-multiplexing with spatial neighborhood [44]. However, assuming that the number of patterns is not critical, all these methods are generally inferior to the classic GC+PS approach.

System Setup Description
Our 3D structured light system is composed of a calibrated pair of Point Grey Research (PGR) Dragonfly 2 FireWire camera and an Acer X1260 DLP video projector, which are rigidly attached on a bar. Camera images have a resolution of 1024 × 768 pixels. The distance of the camera and projector from the center of the calibration volume is about 900 mm and the baseline between the cameras and the projector is approximately 500 mm. The angle between the optical axes of the camera and the projector is of about 30 • .
Although a camera wand calibration is generally regarded as the most user friendly calibration approach, it normally assumes the use of infrared camera system [45,46]. Usually, a second best alternative is a plane calibration. Therefore, the camera was calibrated using a 2D calibration pattern with 11 × 8 white circles on a black background. The diameter of the circles was 15 mm and they were 10 mm apart. The camera calibration algorithm used closely resembles the one explained in [47]. We have acquired 18 images of the 2D calibration plate taken from different orientations and locations throughout the calibration volume, which was of about 400 mm (width) × 450 mm (height) × 400 mm (depth). The centroids of the white calibration circles served not only to calibrate camera, but also to calibrate the projector. For every spatial position of the 2D calibration pattern (during camera calibration) we have projected the proposed pattern both in vertical and horizontal directions with respect to the projector image axis. We have searched for unique pattern codes (along both projector image axes) of centroids in the 2D pattern, and as we knew their 3D position (defined by the 2D calibration pattern), we were able to calibrate the projector using the same camera calibration algorithm [47]. For the camera the mean error and standard deviations between the detected calibration point's positions on the images and the positions provided by the calibration model using computed calibration parameters were 0.090 pixels and 0.066 pixels, respectively. Similarly for the projector, the mean error and standard deviations were 0.149 pixels and 0.114 pixels, respectively.

Experimental Results
We have compared our proposed method to the original G-S and to GC+PS. In order to evaluate the accuracy, we have reconstructed a flat color neutral surface (plane). Ideally, all the acquired 3D points should lie on the plane, but in practice they do not. Hence, a common practice to evaluate accuracy in this case is to interpolate the plane from the entire set of 3D points and then to compute the distances (errors) of all these points to the interpolated plane. In Table 1 we provide the mean and standard deviations of such distances. We show representative results from one of the flat surface positions in the calibration volume, number of pattern periods, and GC word length. Moreover, on the very same flat surface we have also taped a color pattern composed of 32 × 24 squares of various colors randomly generated as shown in Figure 3. For some other position within the calibration volume, we have conducted the same accuracy analysis as we did for the color neutral surface. The first thing to consider in Table 1 is the improvement in the obtained accuracy as long as we increase the number of periodic pattern periods and the length of the Gray codeword. This is in accordance with the theoretical expectations that increasing the code word distances between adjacent pixels should improve the depth computation accuracy. Given the other parameters of our 3D system (e.g., spatial sensor arrangement, camera and projector features, calibration), it seems that patterns of more than 20 periods do not 6 EURASIP Journal on Advances in Signal Processing Table 1: Mean error and standard deviations of distances for total of N reconstructed points with respect to the fitted plane through those N points. p 1 and p 2 show the chosen number of periods for periodic patterns used to construct wrapped PS maps. m is the Gray code word length. contribute to an increase in accuracy. In addition, eventually the three methods provide about the same level of accuracy. However, the original G-S method suffers from a serious decrease in attainable resolution. Due to the discussed noise intrinsic in G-S, for a large number of pixels it is not possible to unwrap the phase correctly. As expected, the problem becomes more serious when the periods are increased since the number of potentially noisy pixels then increases considerably. To visualize the effect of such invalid pixels, Figure 4 shows an unwrapped phase map of a flat surface using both our method and the G-S method (pattern periods used in both cases were p 1 = 15, p 2 = 19). However, it is important to note that although the reduced resolution might be acceptable, it needs costly image processing to automatically detect those invalid pixels. For all practical purposes, if the number of invalid pixels becomes excessive, it is very hard to detect them all and at the same time avoid discarding correct pixels, which leads to an additional decrease of resolution. Besides, it is possible that some of the invalid pixels remain undetected. To detect them, we have simply used a 3 × 3 pixel scanning mask, where we have computed for every pixel the abrupt changes of unwrapped values in a neighborhood of n pixels. Although it worked reasonably well, recall that according to our idea about an optimal SL strategy (see SoC), such additional image processing should certainly be avoided and full projector resolution should be used. The comparison of our method to the powerful GC+PS does not appear to be significantly different (see Table 1). However, it is not straightforward to compare our method to GC+PS, since the patterns used are not exactly the same. The fact is that the length of the GC word of m bits typically determines the number of periods 2 m to be used. The clear advantage of our method is when either GC images cannot be conveniently generated or some other arbitrary pattern periods are relatively easily available, such as in interferometry. In terms of color robustness we have appreciated a slight decrease in the accuracy for all the tested methods. That was surely expected to a certain extent, since the theoretical assumption of the full robustness to colorful surface is only a substantial idealization, which is particularly hard to fulfill in the areas where abrupt changes of albedo take place.
As part of the qualitative evaluation of our method we have chosen to scan a foot impression from a "foam box" as shown in Figure 5 from three different viewing angles. We could acquire only the sole of the foot, without any lateral parts. In that case, a view similar to Figure 5(a) would be probably sufficient. Indeed that is how many commercial laser-based 3D systems dedicated particularly to the scanning of the foot (impressions) operate. However, in many applications (foot modeling), it may also be interesting to acquire parts of the lateral foot surface. Furthermore, to overcome the problem of occluded and/or shadow regions we have taken four scans. The problem of 3D surface registration from multiple views was solved using three white circular markers on our foam box [48]. In most cases our developed software automatically detects those markers on various images. If automatic detection fails, a user can manually add a rectangle around the white markers to roughly point out, for the underlying software, where the registration markers are. Figure 6 shows a 3D reconstruction result acquired from the single view corresponding to Figure 5(a). In more detail, Figure 6(a) is a mesh visualized from the top and Figure 6(b) is the same color mesh shown from the bottom. It is customary to perform visualization with the help of colors where certain shades correspond to the depth of the impression in a foam box. Additionally, many professional software outputs 3D data in a variety of standard 3D file formats [49]. We have chosen to output our 3D scans in the STL format. Figure 7 shows the surface mesh visualization based on STL format of the registered model of the four scans. Very often the raw 3D data is smoothed prior to subsequent processing and modeling. The top row of Figure 7 shows the appearance of raw data, while the bottom row is a smoothed surface. The particular smoothing we have used is very basic: for every 3D raw data point we have defined a 1.5 mm cube in which that particular point was in the center. The new 3D position of a point was computed as the mean value of all its neighbors within a cube.
Although there are a number of systems available on the market to specifically scan the foot itself or impressions in a foam box [50][51][52][53], most of them are rather expensive and hardly applicable to a wide range of applications since they are aimed basically and exclusively at one particular application. In fact, many manufactures offer different type of scanners for different applications [54][55][56][57]. Additionally, they are frequently made from a custom-designed (often patented as well) system of laser scanning heads and/or image sensors [58,59]. However, our goal was to propose a widely applicable 3D structured light scanner that would also be cost effective, consisting of off-the-shelf components available to a large number of researchers.
Therefore, to visualize the performance of our technique reconstructing live subjects (only ideally perfectly static, but potentially moving surfaces), we have chosen as an example the reconstruction of a human face. Figure 8(a) is the camera image of the human face at a given instant of the projection; Figure 8(b) shows the dense 3D raw data obtained by our method compared to the sparse 3D raw data originally obtained by G-S. Note that due to camera occlusion, mainly the left part of the human face was measured. This is of course an inherent drawback of basically all the optical 3D scanners. Alternatively, one could add an additional camera or try to perform a multiview surface registration, as mentioned above.

Conclusion
Our proposed 3D structured light scanner is based on, one of the most powerful structured light projection strategies, multiphase shifting. MPS is a representative of the socalled time multiplexing strategy. Following a coarse-tofine paradigm, it can achieve high measurement accuracy, a feature certainly desired in biomechanics. To solve the main problem related to MPS, phase unwrapping, we have proposed a relatively simple method which involves a modification of the common G-S method. Comparing results to the original G-S method clearly demonstrated the superiority in terms of better 3D resolution and easier and faster image processing of our approach. Comparing our method to the well-known GC+PS reveals the same achieved accuracy, with the advantage that our method is easily applicable to a larger variety of chosen pattern periods. Besides, our method clearly fulfills several highly appreciated conditions (SoC) stated in the introduction concerning optimal SL strategy, which are not very common in SL methods. The acquired reconstruction accuracy is in line with most of the scanners available on the market. In addition, we have demonstrated how our approach performs for a biomechanics application: the scanning of a footprint in a given foam box. At the same time we have discussed the potential wider use in other applications involving living (moving) subjects, such as the scanning of the human face. Note that our scanner consists of a common (cheap) projector and a well-known yet affordable camera. That fact warrants its implementation by a large number of researchers.