# Patent

## Title
Modeling anisotropic surface reflectance with microfacet synthesis

## Abstract

Described is a search technology in which spatially varying anisotropic reflectance is modeled using image data captured from a single view. Reflectance at each point is represented using a microfacet-based Bidirectional Reflectance Distribution Function (BRDF). Modeling processes the image data, which provides a partial normal distribution function (NDF) for each surface point. The NDF at each selected point is completed by texture synthesis using similar, overlapping partial NDFs from other points. Also described is a scanning device that illuminates a sample surface from a two-dimensional set of light directions using a linear array of LEDs moved over a flat sample.

## Background
BACKGROUND
The physical world contains many complex materials whose reflectance properties need to be modeled or captured to produce realistic computer graphics imagery. The effects of spatial variation and anisotropy of such materials can be represented by the six-dimensional Spatially Varying Bidirectional Reflectance Distribution Function (SVBRDF), but are particularly challenging to reproduce. Traditional approaches represent the BRDF (Bidirectional Reflectance Distribution Function) at each surface point using parametric models.
Simple parametric models are unable to realistically capture the reflectance properties of many real-world materials. More complicated, multi-lobe models may represent any BRDF to an arbitrary accuracy, but their many parameters are very difficult to specify and control.
As a result, SVBRDF measurement systems have been employed to measure six-dimensional SVBRDFs directly from surface samples. However, the high dimensionality of SVBRDFs necessitates lengthy capture processes, using expensive devices that densely scan the light and view directions, and are thus impractical for many applications. Alternatively, brute-force acquisition techniques may be employed, but they also require precise calibration of multiple and/or moving cameras, adding to the cost and fragility of such measurement systems.
SUMMARY
This Summary is provided to introduce a selection of representative concepts in a simplified form that are further described below in the Detailed Description. This Summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used in any way that would limit the scope of the claimed subject matter.
Briefly, various aspects of the subject matter described herein are directed towards a technology by which a set of images are captured and processed to perform surface modeling, in which each image of the set is captured (e.g., from a single view) while being illuminated from a different illumination position with respect to the sample surface. The images are processed into partial normal distribution functions corresponding to points of the sample surface. At least some of those normal distribution functions/points are selected and completed into completed normal distribution functions based upon other partial normal distribution functions corresponding to other points. The completed normal distribution function at each point is used to obtain a bidirectional reflectance distribution function, e.g., by using the completed normal distribution function to compute a specular coefficient and shadowing term, and estimating a relative refraction index, thereby providing SVBRDFs.
In one aspect, the illumination positions are changed among different illumination positions in two dimensions by a scanning mechanism. One suitable scanning mechanism includes a linear array of light sources (e.g., LEDs) that are individually illuminated in one direction (e.g., along the Y-axis with respect to the sample). A motor moves the linear array in another direction, (e.g., along the X-axis with respect to the sample), thereby providing the different illumination positions in two dimensions.
Other advantages may become apparent from the following detailed description when taken in conjunction with the drawings.



BRIEF DESCRIPTION OF THE DRAWINGS
The present invention is illustrated by way of example and not limited in the accompanying figures in which like reference numerals indicate similar elements and in which:
FIG. 1 is a block diagram showing an example scanning mechanism for capturing images of a sample surface illuminated from different lighting positions in two dimensions at a single view for use in modeling the reflectance of that sample surface.
FIG. 2 is a representation illustrating various aspects of microfacet modeling.
FIG. 3 is a block diagram showing example components of a modeling process for modeling the reflectance of a sample surface.
FIG. 4 is a flow diagram showing example steps of a modeling process for modeling the reflectance of a sample surface.
FIGS. 5 and 6 are representations of domains of a partial normal distribution function (NDF) for an illuminated point, including the partial NDF (FIG. 5) and its shadowing term (FIG. 6).
FIGS. 7-10 are representations of overlap regions that are approximated in search pruning to find search candidates for processing partial NDFs into completed NDFs.
FIG. 11 shows an illustrative example of a computing environment into which various aspects of the present invention may be incorporated.



DETAILED DESCRIPTION
Various aspects of the technology described herein are generally directed towards a process and mechanism for visually modeling spatially varying anisotropic reflectance using data captured from a single view (camera). To this end, reflectance is represented using a microfacet-based Bidirectional Reflectance Distribution Function (BRDF) that tabulates the facets' normal distribution function (NDF) as a function of surface location. Data from a single view provides a two-dimensional slice of the four-dimensional BRDF at each surface point, from which a partial NDF is fitted; (note that the fitted NDF is partial because the single view direction coupled with the set of light directions covers only a portion of the “half-angle” hemisphere, as described below). The NDFs (or representative NDFs) are completed by applying texture synthesis at each point using similar, overlapping partial NDFs from other points.
While various examples are described herein, it should be understood that any of the examples described herein are non-limiting examples. For example, a certain implementation is described that captures the data, however many variations of such an implementation are feasible, e.g., with different light sources, more than one camera (although having one view is advantageous), and so forth. Indeed any suitable mechanism for capturing the data may be used. As such, the present invention is not limited to any particular embodiments, aspects, concepts, structures, functionalities or examples described herein. Rather, any of the embodiments, aspects, concepts, structures, functionalities or examples described herein are non-limiting, and the present invention may be used in various ways that provide benefits and advantages in computer-based modeling in general.
FIG. 1 shows a reflectance data acquisition device 100 that collects a set of images (including the reflectance data therein) 102 over a two-dimensional set of light directions by scanning a linear array 104 of LEDs (one LED 105 is explicitly illustrated) over a relatively flat surface sample 106. The individually illuminated LEDs along with the scanning that moves the linear array 104 illuminates the surface sample 106 from different directions, whereby the set of different images may be acquired by capturing each image's reflectance data from a single view, that is, the camera 108. Note that it is feasible to have more than one view captured per illumination, however this adds additional complexity in processing. The images 102 are processed by a suitable computing device 120 (e.g., a computer system) to obtain the desired reflectance data as described herein. Further note that FIG. 1 shows the computing device 120 controlling a scanning motor/LED drivers (block 122) in conjunction with triggering the camera 108, however it is understood that any suitable synchronization mechanism may be used.
In one implementation, the linear array 104 is mounted above the flat sample 106 and controlled by a stepping motor. A typical dimension of the surface sample 106 is 10 cm×10 cm. In this implementation, the linear array 104 comprises forty LEDs, with the distance between neighboring LEDs being 0.6 cm. The step length may be equal to the LED separation size, but this is not a requirement. The camera 108 is a commercially available device set with an image resolution of 3504×2336 pixels, and is configured with EF-100 2.8 lens placed approximately 1.0 meter away and 0.6 meters above the center of the surface sample, making an angle of roughly θ=60° from vertical.
Before capturing, the camera's position and orientation are calibrated; a colored checker pattern (not explicitly shown) on the underlying surface plane 124 may be used to calibrate the color and intensity of each LED. After geometric and photometric calibration, the flat material sample 106 is placed onto the XY plane, generally centered at the origin. Based on the size and thickness of the material sample, the height h of the LED array 104 above the sample plane may be adjusted, however a typical value is 4 cm. The LED array 104 moves from a starting position p0, generally as far as possible away from the sample 106, and translated over the sample 106 in the scan direction shown in FIG. 1, that is, towards the stop position, p1. Alternatively, the scan may be performed in the opposite direction, and similarly, the LEDs may be illuminated in any direction and/or even in another illumination pattern, as long as the scan direction and/or illumination pattern are known to the computing device 120 so that each illumination position can be matched to its corresponding image.
For each LED position, images of different exposures are taken to reconstruct a high dynamic range (HDR) image. In the exemplified direction, the scan is completed when the LED array 104 reaches p1, generally where the LED array 104 starts to occlude the sample 106 from the camera's view. The result is a sequence of images Iq(x) where the subscript qε{1,2, . . . ,n} indicates a different point light source (i.e., a different LED with different Y translation). The positions p0 and p1 are measured so that the light source positions can be recovered.
Microfacet theory represents surface microstructure with a large number of tiny mirror facets, each purely reflective and having the same refraction index. FIG. 2 and the following table illustrate and describe various symbols used in the BRDF definition:
















x
Surface point



i
Lighting direction



o
Viewing direction



h
Half-angle vector



n
Upward normal direction



ρ(x, i, o)
BRDF at surface point x



F(x, i, o)
Fresnel term



D(x, h)
Microfacet Normal Distribution Function



S(x, k)
Shadowing term



W(x, h)
Confidence function



Ω+
Hemisphere of {h|h · n > 0}



Ψ(x)
Partial NDF tuple



Ψ*
Exemplar set



Ω
Domain covered by partial NDF tuple



Ω∩
Overlap region of two partial NDF tuples










The BRDF ρ(x,i,o) at a surface point x can be decomposed into a specular part and a diffuse part:

ρ(x,i,o)=ρd(x,i,o)+ks(x)ρs(x,i,o)   (1)

where ρd(x,i,o) is the diffuse part resulting from subsurface scattering and multiple-bounce reflections, ρs(x,i,o) is the specular part due to single-bounce reflections, and ks(x) controls the diffuse-to-specular ratio. The diffuse part may be modeled with the known Lambertian model ρd(x,i,o)=kd(x)/π.

Assuming the microfacets form a height field, the specular term is given by:




  
    
      
        
          
            ρ
            s
          
          ⁡
          
            (
            
              x
              ,
              o
              ,
              i
            
            )
          
        
        =
        
          
            
              D
              ⁡
              
                (
                
                  x
                  ,
                  h
                
                )
              
            
            ⁢
            
              G
              ⁡
              
                (
                
                  x
                  ,
                  o
                  ,
                  i
                
                )
              
            
            ⁢
            
              F
              ⁡
              
                (
                
                  x
                  ,
                  o
                  ,
                  i
                
                )
              
            
          
          
            4
            ⁢
            
              (
              
                i
                ·
                n
              
              )
            
            ⁢
            
              (
              
                o
                ·
                n
              
              )
            
          
        
      
    
    
      
        (
        2
        )
      
    
  




where h=(o+i)/|o+i| is the half-angle vector, and n is the upward surface normal at x. Note that for a flat sample, n=(0,0,1). As set forth in the above table, the model comprises three spatially-varying components, namely the Fresnel term F, the microfacet Normal Distribution Function (NDF) D, and the shadowing-masking term G.

The Fresnel term F(x,o,i) affects the specular shape near grazing angles, and is given by:




  
    
      
        
          F
          ⁡
          
            (
            
              x
              ,
              o
              ,
              i
            
            )
          
        
        =
        
          
            
              
                (
                
                  g
                  -
                  c
                
                )
              
              2
            
            
              2
              ⁢
              
                
                  (
                  
                    g
                    +
                    c
                  
                  )
                
                2
              
            
          
          ⁢
          
            (
            
              1
              +
              
                
                  
                    (
                    
                      
                        c
                        ⁡
                        
                          (
                          
                            g
                            +
                            c
                          
                          )
                        
                      
                      -
                      1
                    
                    )
                  
                  2
                
                
                  
                    (
                    
                      
                        c
                        ⁡
                        
                          (
                          
                            g
                            -
                            c
                          
                          )
                        
                      
                      +
                      1
                    
                    )
                  
                  2
                
              
            
            )
          
        
      
    
    
      
        (
        3
        )
      
    
  




for unpolarized light. Here g2=η(x)2+c2−1 and c=|i·h| where η(x) denotes the relative refraction index at surface location x.

The NDF (normal distribution function) D(x,h) describes the distribution of microfacet orientations on the surface. It satisfies D(x,h)≧0 and ∫Ω+(n·h)D(x,h)dωh=1 where the integration is done in half-angle space over the hemisphere Ω+=Ω+(n)={h|h·n>0}. High-frequency characteristics of surface reflectance such as glossiness and anisotropy are dominated by D(x,h), so no assumptions are made, and it is represented in tabular form.
G(x,o,i) represents the shadowing and masking effects of microfacets on both incoming and outgoing light. It can be approximately decomposed into the product of two directional shadowing terms S:

G(x,o,i)=S(x,i)S(x,o)   (4)

A known derivation may be used to compute the shadowing term S(x,k) for a given direction k from the NDF D(x,h) via





  
    
      
        
          S
          ⁡
          
            (
            
              x
              ,
              k
            
            )
          
        
        =
        
          
            (
            
              k
              ·
              n
            
            )
          
          
            
              ∫
              
                
                  
                    Ω
                    +
                  
                  ⁡
                  
                    (
                    k
                    )
                  
                
                ⋂
                
                  
                    Ω
                    +
                  
                  ⁡
                  
                    (
                    n
                    )
                  
                
              
              
                
              
            
            ⁢
            
              
                (
                
                  h
                  ·
                  k
                
                )
              
              ⁢
              
                D
                ⁡
                
                  (
                  
                    x
                    ,
                    h
                  
                  )
                
              
              ⁢
              
                
              
              ⁢
              
                d
                
                  ω
                  h
                
              
            
          
        
      
    
    
      
        (
        5
        )
      
    
  




The shadowing term is smooth, which is used in partial NDF recovery (as described below) to constrain the shadowing term. The full SVBRDF model is therefore:





  
    
      
        
          ρ
          ⁡
          
            (
            
              x
              ,
              o
              ,
              i
            
            )
          
        
        =
        
          
            
              
                k
                d
              
              ⁡
              
                (
                x
                )
              
            
            π
          
          +
          
            
              
                k
                s
              
              ⁡
              
                (
                x
                )
              
            
            ⁢
            
              
                
                  D
                  ⁡
                  
                    (
                    
                      x
                      ,
                      h
                    
                    )
                  
                
                ⁢
                
                  S
                  ⁡
                  
                    (
                    
                      x
                      ,
                      i
                    
                    )
                  
                
                ⁢
                
                  S
                  ⁡
                  
                    (
                    
                      x
                      ,
                      o
                    
                    )
                  
                
                ⁢
                
                  F
                  ⁡
                  
                    (
                    
                      x
                      ,
                      o
                      ,
                      i
                    
                    )
                  
                
              
              
                4
                ⁢
                
                  (
                  
                    i
                    ·
                    n
                  
                  )
                
                ⁢
                
                  (
                  
                    o
                    ·
                    n
                  
                  )
                
              
            
          
        
      
    
    
      
        (
        6
        )
      
    
  




and is represented by four quantities: an NDF D, a scalar Fresnel refraction index η, and scalar specular and diffuse coefficients, kd and ks. Each is a function of surface location x.

Given the SVBRDF, outgoing radiance L(x,o) at each point x can be computed by the rendering equation as

L(x,o)=∫Ω+ρ(x,i,o)(i·n)L(x,i)dωi   (7)

where L(x,i) is the incoming radiance from direction i.

One implementation parameterizes direction space with a hemicube, typically subdivided into 32×32 cells on the top face and 32×16 cells on each side. For more specular materials such as aluminum, the hemicube may be divided more finely. Note that “direction space” refers to half-angle directions h for the NDF, and light directions i for the two-dimensional BRDF slice for a single view direction, o.
After capturing, the HDR images are reconstructed and rectified. As described below, a BRDF sample at each surface point x can then be computed from the image sequence Iq, as




  
    
      
        
          ρ
          ⁡
          
            (
            
              x
              ,
              
                
                  i
                  q
                
                ⁡
                
                  (
                  x
                  )
                
              
              ,
              
                o
                ⁡
                
                  (
                  x
                  )
                
              
            
            )
          
        
        =
        
          
            
              I
              q
            
            ⁡
            
              (
              x
              )
            
          
          
            
              (
              
                n
                ·
                
                  
                    i
                    q
                  
                  ⁡
                  
                    (
                    x
                    )
                  
                
              
              )
            
            ⁢
            
              L
              q
            
            ⁢
            
              
                
                
                  
                    P
                    q
                  
                  -
                  x
                
                
              
              2
            
          
        
      
    
    
      
        (
        8
        )
      
    
  




where Pq is the position of the light source in image q and Lq is its intensity. The lighting direction i is computed as iq(x)=(Pq−x)/∥Pq−x∥. Because the camera 108 is relatively far from the sample 106, the viewing direction at the sample center is used for the surface points, o=VI∥V∥, where V is the calibrated camera position.

The diffuse components are separated from the specular components using:




  
    
      
        
          
            ρ
            d
          
          ⁡
          
            (
            x
            )
          
        
        =
        
          
            min
            q
          
          ⁢
          
            {
            
              
                ρ
                ⁡
                
                  (
                  
                    x
                    ,
                    
                      
                        i
                        q
                      
                      ⁡
                      
                        (
                        x
                        )
                      
                    
                    ,
                    o
                  
                  )
                
              
              |
              
                
                  
                    I
                    q
                  
                  ⁡
                  
                    (
                    x
                    )
                  
                
                >
                
                  0.05
                  ⁢
                  
                    
                  
                  ⁢
                  
                    I
                    avg
                  
                
              
            
            }
          
        
      
    
    
      
        (
        9
        )
      
    
  




where ρ(x,iq(x),o)=Iq(x)/(Iq(x)·n). Intensity measurements below five percent of average Iavg tend to be noisy and unreliable, and in one implementation are removed. After separation the scaled specular measurement {tilde over (ρ)}s(x,iq(x),o)=ρ(x,iq(x),o)−ρd(x)=ks(x)ρs(x,iq(x),o) is obtained at densely-sampled lighting directions. These scattered measurements are interpolated with a known push-pull method, yielding a two-dimensional slice of the specular component {tilde over (p)}s(x,i,o) that is uniformly sampled over the hemicube of incident lighting directions i. A next phase uses {tilde over (ρ)}s to fit the NDF and the BRDF model's other parameters.

Note that it is possible that a single view can fail to provide enough exemplars for NDF synthesis, if there is insufficient spatial redundancy or local frame variation over the material sample. An example is brushed metal whose brush direction is constant over the entire sample. Such cases can be addressed by capturing image sequences for different rotations of the sample. BRDF slices from these different rotations can then be put together as if they were captured from a larger sample in a single pass.
Turning to example-based microfacet synthesis, FIGS. 3 and 4 show various example mechanisms and steps by which the surface's SVBRDF may be modeled by a modeling process 330 using the captured two-dimensional BRDF data at each surface point via the images 102. In general, the mechanisms are described with reference to FIG. 3 and are labeled 3xx, while the steps are described with reference to FIG. 4 and are labeled 4xx, beginning at step 400 which represents performing the scan.
A first operation represented by block 332 (FIG. 3) and steps 402-405 (FIG. 4) constructs the partial NDF of the microfacets at each point. The NDF is partial because the single view direction generates half-angle reflected directions covering only a portion of the hemisphere. In another step (block 334 and step 412), microfacet synthesis completes the partial NDF by “stitching” partial NDFs of similar regions together. In a later step (block 348 and step 414), the shadowing and Fresnel terms are derived from the completed NDFs 345. With this information, the SVBRDF data 349 or other appropriate results are output (step 416).
To perform the partial NDF fitting step, given a two-dimensional slice of specular BRDF data at each surface point, each surface point's NDF is computed independently. To avoid effects from the Fresnel term that is derived later, reflectance data near the grazing angle is excluded, assuming that F(x,i,o)=1. As shown in FIG. 5, with a fixed view direction o and light directions i over the whole hemisphere, the sampled half-angle reflectance directions cover only a sub-region W of the hemisphere:




  
    
      
        Ω
        =
        
          
            {
            
              
                
                  i
                  +
                  o
                
                
                  
                  
                    i
                    +
                    o
                  
                  
                
              
              |
              
                i
                ∈
                
                  Ω
                  +
                
              
            
            }
          
          =
          
            {
            
              h
              |
              
                
                  
                    refl
                    ⁡
                    
                      (
                      
                        o
                        ,
                        h
                      
                      )
                    
                  
                  ·
                  n
                
                >
                0
              
            
            }
          
        
      
    
    
      
        (
        10
        )
      
    
  




where refl(o,h)=2(h·o)h−o reflects the unit vector o about h. Thus, the captured data specifies the NDF only partially, over Ω.

A straightforward solution for fitting this partial normal distribution function D(x,h) starts from constant shadow term S(x,k)=1; the partial NDF is computed as:




  
    
      
        
          D
          ⁡
          
            (
            
              x
              ,
              h
            
            )
          
        
        =
        
          {
          
            
              
                
                  
                    
                      
                        
                          
                            4
                            ⁢
                            
                              
                            
                            ⁢
                            π
                            ⁢
                            
                              
                            
                            ⁢
                            
                              
                                ρ
                                ~
                              
                              s
                            
                            ⁢
                            x
                          
                          ,
                          o
                          ,
                          
                            i
                            ⁡
                            
                              (
                              h
                              )
                            
                          
                        
                        )
                      
                      ⁢
                      
                        (
                        
                          
                            i
                            ⁡
                            
                              (
                              h
                              )
                            
                          
                          ·
                          n
                        
                        )
                      
                      ⁢
                      
                        (
                        
                          o
                          ·
                          n
                        
                        )
                      
                    
                    
                      
                        S
                        ⁡
                        
                          (
                          
                            x
                            ,
                            
                              i
                              ⁡
                              
                                (
                                h
                                )
                              
                            
                          
                          )
                        
                      
                      ⁢
                      
                        S
                        ⁡
                        
                          (
                          
                            x
                            ,
                            o
                          
                          )
                        
                      
                    
                  
                  ,
                
              
              
                
                  h
                  ∈
                  Ω
                
              
            
            
              
                
                  0
                  ,
                
              
              
                
                  h
                  ∉
                  Ω
                
              
            
          
        
      
    
    
      
        (
        11
        )
      
    
  




where i(h)=refl(o,h). The shadowing term is then derived from the NDF using equation (5). This leads to a scheme that iteratively updates first D and then S until convergence. However, although this method fits the captured data well, it is biased, and does not accurately predict specular response at other views. More particularly, the problem arises because single-view data determines a partial NDF over Ω (FIG. 5), while the shadowing term requires the full NDF over Ω+ (FIG. 6). If D=0 is assumed outside Ω and used to estimate the shadowing term in equation (5), S is overestimated; after iterating, the NDF becomes biased.

To solve this problem, the process constrains S to its minimum value over all azimuthal angles via S(x, i)=mini′{S(x, i′)|i′·n=i·n}. With this isotropically constrained S, the NDF is iteratively updated via equation (11) and its shadowing term via equation (5) until convergence, as in the straightforward method above. Note that the constrained shadowing term is only used to fit the partial NDF; the final S is derived from the completed NDF in the last step. Further, note that other schemes to extend the domain of D outside Ω in order to define S may be used, including projection to low-order spherical harmonics and push/pull.
To represent the partial NDF's domain Ω, a confidence function is defined via




  
    
      
        
          W
          ⁡
          
            (
            
              x
              ,
              h
            
            )
          
        
        =
        
          
            [
            
              
                (
                
                  
                    refl
                    ⁡
                    
                      (
                      
                        o
                        ,
                        h
                      
                      )
                    
                  
                  ·
                  n
                
                )
              
              
                1
                2
              
            
            ]
          
          +
        
      
    
    
      
        (
        12
        )
      
    
  




where [·]+ denotes max{·,0}. W is positive for h within Ω, and gradually decreases to 0 at its boundary, and remains 0 outside it. Low confidence is assigned near the boundary of Ω where BRDF values tend to be extrapolated and dominated by the Fresnel term. The partial NDF D(x,h) and its confidence function W(x,h) are represented as a hemicube over h.

Note that it is possible to explicitly represent spatial variation in the set of light directions iq(x) and view direction o(x), by using a spatially varying NDF domain Ω(x). This accounts for the finite lighting span and camera distance.
After recovering the partial NDF D(x,h) at each surface point, synthesis (block 344 of FIG. 3 and step 412 of FIG. 4) completes the NDF using partial NDFs at other points. Note that on a sample surface, the process can find surface points having similar NDFs but different local frames; i.e., different azimuthal rotations around the normal. Thus, the captured data actually reveals different parts of the common NDF at such points. The process exploits this by finding rotated partial NDFs at other surface points that are similar within their shared half-space domain and merging them. Given the partial NDF tuple Ψ(x)=<D(x,h),W(x,h)> defined on each surface point, an exemplar set Ψ* is generated by rotating Ψ(x) around the normal n by all possible azimuthal angles φ:




  
    
      
        
          
            
              
                Ψ
                *
              
              =
              
              ⁢
              
                
                  {
                  
                    Ψ
                    ⁡
                    
                      (
                      
                        x
                        ,
                        φ
                      
                      )
                    
                  
                  }
                
                =
                
                  {
                  
                    〈
                    
                      
                        
                          D
                          φ
                        
                        ⁡
                        
                          (
                          
                            x
                            ,
                            h
                          
                          )
                        
                      
                      ,
                      
                        
                          W
                          φ
                        
                        ⁡
                        
                          (
                          
                            x
                            ,
                            h
                          
                          )
                        
                      
                    
                    〉
                  
                  }
                
              
            
          
        
        
          
            
              =
              
              ⁢
              
                {
                
                  
                    〈
                    
                      
                        D
                        ⁡
                        
                          (
                          
                            x
                            ,
                            
                              
                                R
                                ⁡
                                
                                  (
                                  φ
                                  )
                                
                              
                              ⁢
                              h
                            
                          
                          )
                        
                      
                      ,
                      
                        W
                        ⁡
                        
                          (
                          
                            x
                            ,
                            
                              
                                R
                                ⁡
                                
                                  (
                                  φ
                                  )
                                
                              
                              ⁢
                              h
                            
                          
                          )
                        
                      
                    
                    〉
                  
                  |
                  
                    φ
                    ∈
                    
                      [
                      
                        0
                        ,
                        
                          2
                          ⁢
                          
                            
                          
                          ⁢
                          π
                        
                      
                      ]
                    
                  
                
                }
              
            
          
        
      
    
    
      
        (
        13
        )
      
    
  




where R(φ) is the azimuthal rotation of φ.

The process completes each point's partial NDF with iterative synthesis using logic as represented by the pseudo-code below:















NDFSynthesis(Ψ(x),Ψ*)



 For each surface point x



  Ψ0(x) = Ψ(x)



  While (Ωi(x) < Ω+)



   Ψ(x′, φ′) = BestMatch(Ψi(x),Ψ*)



   Ψi+1(x) = Merge(Ψi(x),Ψ(x′, φ′))










For each surface point x, starting from the initial NDF tuple Ψ(x)=Ψ(x)=<D(x,h),W(x,h)>, the process updates the NDF and its confidence function iteratively, yielding Ψi(x)=<Di(x,h),Wi(x,h)> at each iteration i. Each iteration extends the NDF domain incrementally in counter-clockwise order around the azimuth, as described below.
The update searches the exemplar set Ψ* to find a match of the current NDF tuple Ψi(x), Ψ(x′, φ′), via




  
    
      
        
          (
          
            
              x
              ′
            
            ,
            
              φ
              ′
            
          
          )
        
        =
        
          
            
              arg
              ⁢
              
                
              
              ⁢
              min
            
            
              
                x
                ~
              
              ,
              
                φ
                ~
              
            
          
          ⁢
          
            (
            
              dist
              ⁡
              
                (
                
                  
                    
                      Ψ
                      i
                    
                    ⁡
                    
                      (
                      x
                      )
                    
                  
                  ,
                  
                    Ψ
                    ⁡
                    
                      (
                      
                        
                          x
                          ~
                        
                        ,
                        
                          φ
                          ~
                        
                      
                      )
                    
                  
                
                )
              
            
            }
          
        
      
    
    
      
        (
        14
        )
      
    
  




The distance between two partial NDF tuples Ψ1=<D1,W1> and Ψ2=<D2,W2> is defined using the integral





  
    
      
        
          dist
          ⁡
          
            (
            
              
                Ψ
                1
              
              ,
              
                Ψ
                2
              
            
            )
          
        
        =
        
          
            
              ∫
              
                Ω
                ⋂
              
              
                
              
            
            ⁢
            
              
                
                  
                    
                      W
                      1
                    
                    ⁡
                    
                      (
                      h
                      )
                    
                  
                  ⁢
                  
                    
                      W
                      2
                    
                    ⁡
                    
                      (
                      h
                      )
                    
                  
                
              
              ⁢
              
                
                  
                  
                    
                      
                        
                          D
                          1
                        
                        ⁡
                        
                          (
                          h
                          )
                        
                      
                      
                        s
                        1
                      
                    
                    -
                    
                      
                        
                          D
                          2
                        
                        ⁡
                        
                          (
                          h
                          )
                        
                      
                      
                        s
                        2
                      
                    
                  
                  
                
                2
              
              ⁢
              
                
              
              ⁢
              
                d
                
                  ω
                  h
                
              
            
          
          
            
              ∫
              
                Ω
                ⋂
              
              
                
              
            
            ⁢
            
              
                
                  
                    
                      W
                      1
                    
                    ⁡
                    
                      (
                      h
                      )
                    
                  
                  ⁢
                  
                    
                      W
                      2
                    
                    ⁡
                    
                      (
                      h
                      )
                    
                  
                
              
              ⁢
              
                
              
              ⁢
              
                d
                
                  ω
                  h
                
              
            
          
        
      
    
    
      
        (
        15
        )
      
    
  




over their overlapping region

Ω∩={Ω1∩Ω2}={h|W1(h)W2(h)>0}.

The scalars s1 and s2 normalize the partial NDFs over the overlapped region and are defined as sk=∫Ω∩Dk(h)dωh for k=1,2.

To maintain synthesis quality, the process excludes candidates from the search set Ψ* whose partial domains overlap insufficiently with Ψi(x). Also excluded are candidates that insufficiently extend Ψi(x). In one implementation, candidates need to have between a fifty percent and eighty-five percent overlap with Ψi(x). After determining the best match, the new NDF tuple Ψi+1(x) is updated by merging in the optimal extension Ψ(x′,φ′) via




  
    
      
        
          
            
              D
              
                i
                +
                1
              
            
            ⁡
            
              (
              
                x
                ,
                h
              
              )
            
          
          =
          
            
              
                
                  
                    W
                    i
                  
                  ⁡
                  
                    (
                    
                      x
                      ,
                      h
                    
                    )
                  
                
                ⁢
                
                  
                    D
                    i
                  
                  ⁡
                  
                    (
                    
                      x
                      ,
                      h
                    
                    )
                  
                
              
              +
              
                
                  
                    s
                    1
                  
                  
                    s
                    2
                  
                
                ⁢
                
                  
                    W
                    
                      φ
                      ′
                    
                  
                  ⁡
                  
                    (
                    
                      
                        x
                        ′
                      
                      ,
                      h
                    
                    )
                  
                
                ⁢
                
                  
                    D
                    
                      φ
                      ′
                    
                  
                  ⁡
                  
                    (
                    
                      
                        x
                        ′
                      
                      ,
                      h
                    
                    )
                  
                
              
            
            
              
                
                  W
                  i
                
                ⁡
                
                  (
                  
                    x
                    ,
                    h
                  
                  )
                
              
              +
              
                
                  W
                  
                    φ
                    ′
                  
                
                ⁡
                
                  (
                  
                    
                      x
                      ′
                    
                    ,
                    h
                  
                  )
                
              
            
          
        
        ,
      
    
    
      
        (
        16
        )
      
    
  
  
    
      
        
          
            W
            
              i
              +
              1
            
          
          ⁡
          
            (
            
              x
              ,
              h
            
            )
          
        
        =
        
          max
          ⁢
          
            
              {
              
                
                  
                    W
                    i
                  
                  ⁡
                  
                    (
                    
                      x
                      ,
                      h
                    
                    )
                  
                
                ,
                
                  
                    W
                    
                      φ
                      ′
                    
                  
                  ⁡
                  
                    (
                    
                      
                        x
                        ′
                      
                      ,
                      h
                    
                    )
                  
                
              
              }
            
            .
          
        
      
    
    
      
        (
        17
        )
      
    
  




Continuing with the new partial NDF tuples Ψi+1(x) at each surface point, the above steps are repeated until each point's NDF covers the hemisphere. The NDF coverage Ωi(x) after each iteration can be reconstructed from Wi(x,h) via Ωi(x)={h|Wi(x,h)>0}. There may be small uncovered regions left in some NDFs after synthesis, which can be interpolated with the push-pull method. In general, NDFs are suitably completed after five to seven iterations.
Synthesis implementations may be prohibitively slow due to the expensive distance calculation in the candidate search and the large number of surface points. Two mechanisms are described herein to speed up synthesis, including NDF clustering (block 340 and step 336) and search pruning (block 340 and step 410).
NDF clustering reduces both the number of NDFs that need to be synthesized as well as searched. Because many surface points have similar reflectance and can be approximated well by a linear combination of a few representatives, expensive NDF completion may be performed on a smaller set of representatives, with a high-resolution result obtained by interpolating their completions. To find the set 337 of representatives, k-means clustering may be applied to the partial NDFs of the surface points. A representative in each cluster is selected that is closest to the cluster center where distance is computed according to equation (15). For example, the number of representatives may be one percent of the number of surface points. A large number of clusters ensures that each contains only samples that are similar.
Interpolation weights are then found on the partial data. Each (non-representative) partial NDF, D(xi,h), is approximated by linear interpolation on a set of neighbor representatives, D(xj*, h), via




  
    
      
        
          D
          ⁡
          
            (
            
              
                x
                i
              
              ,
              h
            
            )
          
        
        =
        
          
            ∑
            
              j
              ∈
              
                N
                i
              
            
          
          ⁢
          
            
              w
              ij
            
            ⁢
            
              D
              ⁡
              
                (
                
                  
                    x
                    j
                    *
                  
                  ,
                  h
                
                )
              
            
          
        
      
    
    
      
        (
        18
        )
      
    
  




where jεNi indexes one of the neighbor representatives of xi, and wij are the interpolation coefficients. To determine the neighbor set Ni for xi, its k=16 nearest representatives are collected, excluding those whose distance is larger than 5λ where λ is the smallest distance between two representative NDFs. The process then solves for the weights wij in the linear equation system represented by equation (18), augmented by the single equation ΣjεNiwij=1. Note that k may be set to sixteen based on the observation that the intrinsic dimension of the BRDF space is roughly sixteen.

The other acceleration mechanism, search pruning (block 340 and step 410), accelerates the search by pruning the set of candidates 339 into a reduced subset 341. Pruning is generally represented in FIGS. 7-10 which represents overlap region approximation. In general, FIG. 7 represents a current Ψi(x), formed by an earlier merge of two partial NDFs.
Initially, the region Ψi(x) is extended differently at each point and each iteration, depending on which candidate is selected for the merge. The overlap region therefore cannot be predetermined. However, as shown in FIG. 8 which represents the overlap region Ω∩ (enclosed by the dark line 880) of Ψi(x) and a candidate 882, as the NDF domain extends azimuthally, the overlap region is mostly determined by the last merged candidate and the current candidate. Therefore, the overlap region can be represented as the intersection of Ω with a rotated version of itself, Ω(φ)=Ω∩R(φ)Ω, as generally represented in FIG. 9. Because the candidates have a fifty to eighty five percent overlap with Ψi(x), φ need only be chosen in a limited range which may be uniformly sampled using nφ=20 angles. The result is a set of regions {Ω(φi)|i=1,2, . . . , nφ} as shown in FIG. 10, that is, a range of rotations, φi, are uniformly sampled to get a discrete set of overlap regions used for search pruning. Within each Ω(φi), the histogram of D(x,h) is computed at each surface point x using m=32 buckets over D's range [0,1]. The resulting 32 dimensional vector is used as a search key to find merge candidates that are similar within the region of overlap. To accelerate this search, an ANN tree of the histogram vectors may be pre-computed before synthesis; a separate tree is built for each φi.
During synthesis, for each φi, the process computes the histogram of the current region Ψi(x) over Ω(φi). The corresponding ANN tree quickly finds the five best matches in terms of L2 distance in histogram space. For each match, gradient descent obtains the optimal φ′ by minimizing equation (14) using the distance computation in equation (15). The minimal error match over all φ is then selected to merge. In a final iteration, the overlaps between the first as well as the last merged domain are considered because azimuthal rotation is periodic. The process performs the ANN search over both these domains to form a larger candidate set before applying the φ optimization.
To estimating the remaining parameters, the specular coefficient is computed given the completed NDF D via ks(x)=∫Ω+(n·h)D(x,h)dωh·. The NDF is normalized by D(x,h)/ks(x) and use it to compute the shadowing term from equation (5).
The relative refraction index h(x) at each surface point is estimated by minimizing

E(η(x))=∫Ω+∥Fc(i,o,η(x))−Fm(x,i,o)∥2dω  (19)

where Fc(i,o,η(x)) is computed according to equation (3), and Fm(x,i,o) is computed from the measured rs(x,o, i) as





  
    
      
        
          
            F
            m
          
          ⁡
          
            (
            
              x
              ,
              i
              ,
              o
            
            )
          
        
        =
        
          
            
              4
              ⁢
              
                
              
              ⁢
              π
              ⁢
              
                
              
              ⁢
              
                
                  ρ
                  s
                
                ⁡
                
                  (
                  
                    x
                    ,
                    o
                    ,
                    i
                  
                  )
                
              
              ⁢
              
                (
                
                  i
                  ·
                  n
                
                )
              
              ⁢
              
                (
                
                  o
                  ·
                  n
                
                )
              
            
            
              
                S
                ⁡
                
                  (
                  
                    x
                    ,
                    i
                  
                  )
                
              
              ⁢
              
                S
                ⁡
                
                  (
                  
                    x
                    ,
                    o
                  
                  )
                
              
              ⁢
              
                
                  k
                  s
                
                ⁡
                
                  (
                  x
                  )
                
              
              ⁢
              
                D
                ⁡
                
                  (
                  
                    x
                    ,
                    h
                  
                  )
                
              
            
          
          .
        
      
    
    
      
        (
        20
        )
      
    
  




The process solves for η (x) with the Levenberg-Marquardt algorithm.

As can be seen, the above process models the BRDF as a tabular microfacet normal distribution function that is spatially variant, and is independent of any particular surface. The visual modeling of spatially varying anisotropic reflectance may be obtained using data captured from a single view. By synthesizing the partial NDF fitted at each different surface point using similar, overlapping partial NDFs from other points, the process captures angular variation without decreasing spatial resolution. Reflectance is represented using a microfacet-based BRDF which tabulates the facets' normal distribution (NDF) as a function of surface location.
Exemplary Operating Environment
FIG. 11 illustrates an example of a suitable computing and networking environment 1100 on which the examples of FIGS. 1-10 may be implemented, such as to output the query results with integrated query suggestions. The computing system environment 1100 is only one example of a suitable computing environment and is not intended to suggest any limitation as to the scope of use or functionality of the invention. Neither should the computing environment 1100 be interpreted as having any dependency or requirement relating to any one or combination of components illustrated in the exemplary operating environment 1100.
The invention is operational with numerous other general purpose or special purpose computing system environments or configurations. Examples of well known computing systems, environments, and/or configurations that may be suitable for use with the invention include, but are not limited to: personal computers, server computers, hand-held or laptop devices, tablet devices, multiprocessor systems, microprocessor-based systems, set top boxes, programmable consumer electronics, network PCs, minicomputers, mainframe computers, distributed computing environments that include any of the above systems or devices, and the like.
The invention may be described in the general context of computer-executable instructions, such as program modules, being executed by a computer. Generally, program modules include routines, programs, objects, components, data structures, and so forth, which perform particular tasks or implement particular abstract data types. The invention may also be practiced in distributed computing environments where tasks are performed by remote processing devices that are linked through a communications network. In a distributed computing environment, program modules may be located in local and/or remote computer storage media including memory storage devices.
With reference to FIG. 11, an exemplary system for implementing various aspects of the invention may include a general purpose computing device in the form of a computer 1110. Components of the computer 1110 may include, but are not limited to, a processing unit 1120, a system memory 1130, and a system bus 1121 that couples various system components including the system memory to the processing unit 1120. The system bus 1121 may be any of several types of bus structures including a memory bus or memory controller, a peripheral bus, and a local bus using any of a variety of bus architectures. By way of example, and not limitation, such architectures include Industry Standard Architecture (ISA) bus, Micro Channel Architecture (MCA) bus, Enhanced ISA (EISA) bus, Video Electronics Standards Association (VESA) local bus, and Peripheral Component Interconnect (PCI) bus also known as Mezzanine bus.
The computer 1110 typically includes a variety of computer-readable media. Computer-readable media can be any available media that can be accessed by the computer 1110 and includes both volatile and nonvolatile media, and removable and non-removable media. By way of example, and not limitation, computer-readable media may comprise computer storage media and communication media. Computer storage media includes volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information such as computer-readable instructions, data structures, program modules or other data. Computer storage media includes, but is not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical disk storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired information and which can accessed by the computer 1110. Communication media typically embodies computer-readable instructions, data structures, program modules or other data in a modulated data signal such as a carrier wave or other transport mechanism and includes any information delivery media. The term “modulated data signal” means a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal. By way of example, and not limitation, communication media includes wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, RF, infrared and other wireless media. Combinations of the any of the above may also be included within the scope of computer-readable media.
The system memory 1130 includes computer storage media in the form of volatile and/or nonvolatile memory such as read only memory (ROM) 1131 and random access memory (RAM) 1132. A basic input/output system 1133 (BIOS), containing the basic routines that help to transfer information between elements within computer 1110, such as during start-up, is typically stored in ROM 1131. RAM 1132 typically contains data and/or program modules that are immediately accessible to and/or presently being operated on by processing unit 1120. By way of example, and not limitation, FIG. 11 illustrates operating system 1134, application programs 1135, other program modules 1136 and program data 1137.
The computer 1110 may also include other removable/non-removable, volatile/nonvolatile computer storage media. By way of example only, FIG. 11 illustrates a hard disk drive 1141 that reads from or writes to non-removable, nonvolatile magnetic media, a magnetic disk drive 1151 that reads from or writes to a removable, nonvolatile magnetic disk 1152, and an optical disk drive 1155 that reads from or writes to a removable, nonvolatile optical disk 1156 such as a CD ROM or other optical media. Other removable/non-removable, volatile/nonvolatile computer storage media that can be used in the exemplary operating environment include, but are not limited to, magnetic tape cassettes, flash memory cards, digital versatile disks, digital video tape, solid state RAM, solid state ROM, and the like. The hard disk drive 1141 is typically connected to the system bus 1121 through a non-removable memory interface such as interface 1140, and magnetic disk drive 1151 and optical disk drive 1155 are typically connected to the system bus 1121 by a removable memory interface, such as interface 1150.
The drives and their associated computer storage media, described above and illustrated in FIG. 11, provide storage of computer-readable instructions, data structures, program modules and other data for the computer 1110. In FIG. 11, for example, hard disk drive 1141 is illustrated as storing operating system 1144, application programs 1145, other program modules 1146 and program data 1147. Note that these components can either be the same as or different from operating system 1134, application programs 1135, other program modules 1136, and program data 1137. Operating system 1144, application programs 1145, other program modules 1146, and program data 1147 are given different numbers herein to illustrate that, at a minimum, they are different copies. A user may enter commands and information into the computer 1110 through input devices such as a tablet, or electronic digitizer, 1164, a microphone 1163, a keyboard 1162 and pointing device 1161, commonly referred to as mouse, trackball or touch pad. Other input devices not shown in FIG. 11 may include a joystick, game pad, satellite dish, scanner, or the like. These and other input devices are often connected to the processing unit 1120 through a user input interface 1160 that is coupled to the system bus, but may be connected by other interface and bus structures, such as a parallel port, game port or a universal serial bus (USB). A monitor 1191 or other type of display device is also connected to the system bus 1121 via an interface, such as a video interface 1190. The monitor 1191 may also be integrated with a touch-screen panel or the like. Note that the monitor and/or touch screen panel can be physically coupled to a housing in which the computing device 1110 is incorporated, such as in a tablet-type personal computer. In addition, computers such as the computing device 1110 may also include other peripheral output devices such as speakers 1195 and printer 1196, which may be connected through an output peripheral interface 1194 or the like.
The computer 1110 may operate in a networked environment using logical connections to one or more remote computers, such as a remote computer 1180. The remote computer 1180 may be a personal computer, a server, a router, a network PC, a peer device or other common network node, and typically includes many or all of the elements described above relative to the computer 1110, although only a memory storage device 1181 has been illustrated in FIG. 11. The logical connections depicted in FIG. 11 include one or more local area networks (LAN) 1171 and one or more wide area networks (WAN) 1173, but may also include other networks. Such networking environments are commonplace in offices, enterprise-wide computer networks, intranets and the Internet.
When used in a LAN networking environment, the computer 1110 is connected to the LAN 1171 through a network interface or adapter 1170. When used in a WAN networking environment, the computer 1110 typically includes a modem 1172 or other means for establishing communications over the WAN 1173, such as the Internet. The modem 1172, which may be internal or external, may be connected to the system bus 1121 via the user input interface 1160 or other appropriate mechanism. A wireless networking component 1174 such as comprising an interface and antenna may be coupled through a suitable device such as an access point or peer computer to a WAN or LAN. In a networked environment, program modules depicted relative to the computer 1110, or portions thereof, may be stored in the remote memory storage device. By way of example, and not limitation, FIG. 11 illustrates remote application programs 1185 as residing on memory device 1181. It may be appreciated that the network connections shown are exemplary and other means of establishing a communications link between the computers may be used.
An auxiliary subsystem 1199 (e.g., for auxiliary display of content) may be connected via the user interface 1160 to allow data such as program content, system status and event notifications to be provided to the user, even if the main portions of the computer system are in a low power state. The auxiliary subsystem 1199 may be connected to the modem 1172 and/or network interface 1170 to allow communication between these systems while the main processing unit 1120 is in a low power state.
Conclusion
While the invention is susceptible to various modifications and alternative constructions, certain illustrated embodiments thereof are shown in the drawings and have been described above in detail. It should be understood, however, that there is no intention to limit the invention to the specific forms disclosed, but on the contrary, the intention is to cover all modifications, alternative constructions, and equivalents failing within the spirit and scope of the invention.

## Claims

1. In a computing environment, a method comprising, processing a set of images associated with a sample surface into partial normal distribution functions corresponding to points of the sample surface, each image captured from a different illumination position with respect to illuminating the sample surface, completing the partial normal distribution functions into completed normal distribution functions for at least some selected partial normal distribution functions corresponding to at least some selected points of the sample surface, including by synthesizing each partial normal distribution corresponding to a different selected point using overlapping partial normal distribution functions of other points of the sample surface, and using the completed normal distribution functions to obtain bidirectional reflectance distribution functions representing reflectance information at a plurality of points of the sample surface.

2. The method of claim 1 further comprising, performing clustering to select which partial normal distribution functions to complete.

3. The method of claim 1 wherein for each selected partial normal distribution function, the other partial normal distribution functions correspond to a set of search candidates, and further comprising, pruning the search candidates into a smaller subset of search candidates.

4. The method of claim 1 wherein for each selected partial normal distribution function, the other partial normal distribution functions correspond to a search space, and further comprising, pruning the search space based upon how much the partial normal distribution function domains overlap, and how similar the normal distribution functions are over that overlapping domain.

5. The method of claim 1 wherein for each selected partial normal distribution function, the other partial normal distribution functions correspond to a search space, and further comprising, extending the search space using synthesis operations on initially measured data of the normal distribution functions.

6. The method of claim 1 wherein using the completed normal distribution functions to obtain the bidirectional reflectance distribution functions further comprises normalizing each completed normal distribution function.

7. The method of claim 1 wherein using the completed normal distribution functions to obtain the bidirectional reflectance distribution functions further comprises computing a shadowing term for each selected point based upon the completed normal distribution function corresponding to that point.

8. The method of claim 5 further comprising estimating a relative refraction index for each selected point.

9. The method of claim 1 further comprising, changing each illumination position to a different illumination position by: (a) setting a linear array of light sources at a start position; (b) individually illuminating light sources of the linear array; (c) moving the linear array towards a stop position in a direction that is substantially perpendicular to the linear array; and (d) repeating from step (b) until the stop position is reached.

10. The method of claim 1 further comprising, capturing the images corresponding to the different illumination positions with a single camera that is fixed with respect to the different illumination positions.

11. The method of claim 1 further comprising, outputting spatially varying bidirectional reflectance distribution functions corresponding to the bidirectional reflectance distribution functions for use in rendering computer graphics.

12. In a computing environment, a system comprising, a scan mechanism configured to illuminate a sample surface from a plurality of illumination positions in two dimensions via a set of individually illuminated light sources, the scan mechanism coupled to a camera that is configured to capture, from at least one fixed view direction, a set of images corresponding to the illumination positions, the illumination positions comprise positions where the set of individually illuminated light sources does not occlude the camera, the images provide overlapping partial normal distribution functions that are processed into normal distribution functions for selected points of the sample surface to determine a bidirectional reflectance distribution function at each selected point, the overlapping partial normal distribution functions corresponding to other points of the sample surface.

13. The system of claim 12 wherein the set of individually illuminated light sources scan mechanism comprises a linear array of LEDs.

14. The system of claim 13 wherein the scan mechanism comprises a motor configured to move the linear array of LEDs in a direction that is perpendicular to the linear array.

15. The system of claim 14 wherein the motor is further configured to move the linear array towards or away from the camera.

16. The system of claim 12 wherein the modeling process is configured to compute the normal distribution function for each selected point based upon the partial normal distribution function corresponding to that point and other partial normal distribution functions corresponding to other points.

17. The system of claim 12 wherein the modeling process includes a clustering mechanism by which the selected points are selected.

18. One or more computer-readable storage media having computer-executable instructions not consisting of a signal, which when executed perform steps, comprising:
processing a set of images associated with a sample surface into partial normal distribution functions corresponding to points of the sample surface, each image being captured from a single viewing direction with respect to a different illumination position for illuminating the sample surface, including changing to the different illumination position by, (a) setting a linear array of light sources at a start position, (b) individually illuminating light sources of the linear array, (c) moving the linear array towards a stop position, and (d) repeating from step (b) until the stop position is reached;
modifying reflectance data associated with a grazing angle;
selecting a set of partial normal distribution functions, each selected partial normal distribution function corresponding to a selected point of the sample surface;
and for each selected partial normal distribution function, choosing search candidates corresponding to other partial normal distribution functions of other points of the sample surface, and completing that partial normal distribution function into a completed normal distribution function by applying a texture synthesis using the search candidates.

19. The one or more computer-readable storage media of claim 18 having further computer-executable instructions comprising, using the completed normal distribution functions to obtain bidirectional reflectance distribution functions, including, for each selected point, computing a specular coefficient based upon the completed normal distribution function, computing a shadowing term based upon the completed normal distribution function corresponding to that point, and estimating a relative refraction index.

20. The one or more computer-readable storage media of claim 18 having further computer-executable instructions comprising, synthesizing each partial normal distribution corresponding to a different selected point using overlapping partial normal distribution functions of the other points of the sample surface, and using the completed normal distribution functions to obtain bidirectional reflectance distribution functions representing reflectance information at a plurality of points of the sample surface.