Systems and devices for acquiring imagery and three-dimensional (3D) models of objects

Systems and devices for acquiring imagery and three-dimensional (3D) models of objects are provided. An example device includes a platform configured to enable an object to be positioned thereon, and a plurality of scanners configured to capture geometry and texture information of the object when the object is positioned on the platform. A first scanner is positioned below the platform so as to capture an image of a portion of an underside of the object, a second scanner is positioned above the platform, and a third scanner is positioned above the platform and offset from a position of the second scanner. The scanners are positioned such that each scanner is outside of a field of view of other scanners. Scanners may include a camera, a light source, and a light-dampening element, and the device may include a control module configured to operate the scanners to individually scan the object.

BACKGROUND

In computer graphics, three-dimensional (3D) modeling involves generation of a representation of 3D features of an object. The representation may be referred to as a 3D object data model, and can be rendered or displayed as a two-dimensional image via 3D rendering or displayed as a 3D image. 3D object data models represent a 3D object using a collection of points in 3D space, connected by various geometric entities such as triangles, lines, curved surfaces, etc. Various techniques exist for generating 3D object data models utilizing point clouds and geometric shapes, for examples.

Being a collection of data, 3D models can be created by hand, algorithmically, or objects can be scanned, for example. As an example, an artist may manually generate a 3D image of an object that can be used as the 3D model. As another example, a given object may be scanned from a number of different angles, and the scanned images can be combined to generate the 3D image of the object. As still another example, an image of an object may be used to generate a point cloud that can be algorithmically processed to generate the 3D image.

3D object data models may include solid models that define a volume of the object, or may include shell or boundary models that represent a surface (e.g. the boundary) of the object. Because an appearance of an object depends largely on an exterior of the object, boundary representations are common in computer graphics.

3D models are used in a wide variety of fields, and may be displayed using a number of different types of interfaces. Example interfaces may provide functionality to enable interaction between a user and the 3D models.

SUMMARY

Within one aspect, a device is provided that comprises a platform configured to enable an object to be positioned thereon, and a plurality of scanners configured to capture geometry and texture information of the object when the object is positioned on the platform. A first scanner of the plurality of scanners is positioned below the platform so as to capture an image of a portion of an underside of the object when the object is positioned on the platform, a second scanner of the plurality of scanners is positioned above the platform, and a third scanner of the plurality of scanners is positioned above the platform and offset from a position of the second scanner. The plurality of scanners are positioned such that each scanner is outside of a field of view of other scanners.

In some examples, scanners include a camera, a light source, and a light-dampening element coupled to the light source, and the device further comprises a control module configured to operate the plurality of scanners to individually scan the object when the object is positioned on the platform to capture the geometry and texture information. The control module is configured to cause the light-dampening element to cover the light source of respective scanners during scanning by another scanner and to cause the light-dampening element to uncover the light source of a given scanner during scanning by the given scanner.

In further examples, the device comprises a support structure, a plurality of rollers coupled to the support structure, the platform mounted such that edges of the platform contact the plurality of rollers and a surface of the platform is configured to enable the object to be positioned thereon, and a drive wheel coupled to the support structure and the platform. The drive wheel is configured contact the edges of the platform and to cause the platform to rotate via contact with the drive wheel and the plurality of rollers.

In still further examples, the device comprises an enclosure, and the plurality of scanners are positioned within the enclosure, and a plurality of air ducts within the enclosure and coupled to the plurality of scanners. A given air duct is coupled to a given scanner of the plurality of scanners. The device also includes an exhaust fan positioned outside of the enclosure and coupled to the plurality of air ducts, and the exhaust fan is configured to cause heat generated by the plurality of scanners to be removed from the enclosure.

In another aspect, a device is provided that comprises a support structure, a plurality of rollers coupled to the support structure, a turntable mounted such that edges of the turntable contact the plurality of rollers and a surface of the turntable is configured to enable an object to be positioned thereon, a drive wheel coupled to the support structure and the turntable that is configured contact the edges of the turntable and to cause the turntable to rotate via contact with the drive wheel and the plurality of rollers, and a plurality of scanners configured to capture geometry and texture information of the object when the object is positioned on the surface of the turntable. A first scanner of the plurality of scanners is positioned below the turntable so as to capture an image of a portion of an underside of the object when the object is positioned on the surface of the turntable and a second scanner of the plurality of scanners is positioned above the turntable.

In still another aspect, a device is provided that comprises an enclosure, a plurality of scanners positioned within the enclosure and configured to be operated to capture geometry and texture information of an object when the object is positioned within the enclosure, and a plurality of air ducts within the enclosure and coupled to the plurality of scanners. A given air duct is coupled to a given scanner of the plurality of scanners. The device also includes an exhaust fan positioned outside of the enclosure and coupled to the plurality of air ducts, and the exhaust fan is configured to cause heat generated by the plurality of scanners to be removed from the enclosure.

DETAILED DESCRIPTION

Within examples, a system is provided that is configured to capture images of an object and generate a 3D object data model of the object. The system may include a turntable upon which an object is placed for scanning, a number of scanheads including cameras and projectors, and an enclosure for the system. To scan an object, at each incremental position of the turntable and for each scan head, a camera is configured to capture texture images, the projector is configured to project patterns onto the object while the camera captures images, and a decoding of the images of patterns projected onto the object is performed to output a raw mesh of data representing the object. The raw mesh of data may be substantially aligned, and a merged model of the object can be generated in post-processing.

Within examples, the projectors are configured to project many different patterns onto the object, including graycodes to identify pixel-level locations, alternate phase graycodes for robustness, stripes to obtain sub-pixel correspondences, “XY” horizontal and vertical patterns (for graycodes and stripes), and multiple pattern intensities for high-dynamic range image processing to name a few. One example system may be configured to utilize 191 patterns and perform a scan within about 25 seconds.

Referring now to the figures,FIG. 1illustrates an example system100for object data modeling, in accordance with one example. The system100includes an input source102coupled to a server104and a database106. The server104is also shown coupled to the database106and an output target108. The system100may include more or fewer components, and each of the input source102, the server104, the database106, and the output target108may comprise multiple elements as well, or each of the input source102, the server104, the database106, and the output target108may be interconnected as well. Thus, one or more of the described functions of the system100may be divided up into additional functional or physical components, or combined into fewer functional or physical components. In some further examples, additional functional and/or physical components may be added to the examples illustrated byFIG. 1.

Components of the system100may be coupled to or configured to be capable of communicating via a network (not shown), such as a local area network (LAN), wide area network (WAN), wireless network (Wi-Fi), or Internet, for example. In addition, any of the components of the system100may be coupled to each other using wired or wireless communications. For example, communication links between the input source102and the server104may include wired connections, such as a serial or parallel bus, or wireless links, such as short-range wireless, IEEE 802.11 (IEEE 802.11 may refer to IEEE 802.11-2007, IEEE 802.11n-2009, or any other IEEE 802.11 revision), or other wireless based communication links.

The input source102may be any source from which a 3D object data model may be received. In some examples, 3D model acquisition (shape and appearance) may be achieved by working with venders or manufacturers to scan objects in 3D. For instance, structured light scanners may capture images of an object and a shape of the object may be recovered using monochrome stereo cameras and a pattern projector. In other examples, a high-resolution SLR camera may be used to capture images for color texture information. In still other examples, a raw computer-aided drafting (CAD) set of drawings may be received for each object. Thus, the input source102may provide a 3D object data model, in various forms, to the server104. As one example, multiple scans of an object may be processed into a merged mesh and assets data model, and provided to the server104in that form.

The server104includes a model builder110, an object data model processor112, a semantics and search index114, and a graphics library116, a shader application118, a materials application120, and an object data model renderer/viewer122. Any of the components of the server104may be coupled to each other. In addition, any components of the server104may alternatively be a separate component coupled to the server104. The server104may further include a processor and memory including instructions executable by the processor to perform functions of the components of the server104, for example, and may take the form of a computing device.

The model builder110receives the mesh data set for each object from the input source102, which may include a data set defining a dense surface mesh geometry, and may generate an animated model of the object in 3D. For example, the model builder110may perform coherent texture unwrapping from the mesh surface, and determine textures of surfaces emulated from the geometry.

The object data model processor112may also receive the mesh data set for each object from the input source102and generate display meshes. For instance, the scanned mesh images may be decimated (e.g., from 5 million to 120,000 surfaces) utilizing texture-preserving decimation. Texture map generation can also be performed to determine color texture for map rendering. Texture map generation may include using the mesh data sets H that have colors but no UV (coordinate system of a 2D texture space) unwrapping to generate a mesh D with UV unwrapping but no colors. As an example, for a single output texture pixel of an image processing may include, for a given point in UV determine a triangle in the mesh's UV mapping D, and using triangle-local coordinates, move to an associated 3D point on the mesh. A bidirectional ray may be cast along the triangle's normal to intersect with the mesh H, and color, normal and displacement may be used for an output. To generate an entire texture image, each pixel in the image can be processed.

In some examples, the model builder110or the object data model processor112may output a 3D object data model of an object that includes one file with a combination of all data needed to render a 3D image of the object. In other examples, the model builder110or the object data model processor112may output a 3D object data model in the form of multiple files so that the 3D object data model file is divided into smaller parts.

The semantics and search index114may receive captured images or processed images that have been decimated and compressed, and may perform texture resampling and also shape-based indexing. For example, for each object, the semantics and search index114may index or label components of the images (e.g., per pixel) as having a certain texture, color, shape, geometry, attribute, etc. The semantics and search index114may receive the 3D object data model file or the files comprising the 3D object data model from the model builder110or the object data model processor112, and may be configured to label portions of the file or each file individually with identifiers related to attributes of the file.

In some examples, the semantics and search index114may be configured to provide annotations for aspects of the 3D object data models. For instance, an annotation may be provided to label or index aspects of color, texture, shape, appearance, description, function, etc., of an aspect of a 3D object data model. Annotations may be used to label any aspect of an image or 3D object data model, or to provide any type of information. Annotations may be performed manually or automatically. In examples herein, an annotated template of an object in a given classification or category may be generated that includes annotations, and the template may be applied to all objects in the given classification or category to apply the annotations to all objects.

The graphics library116may include a WebGL or OpenGL mesh compression to reduce a mesh file size, for example. The graphics library116may provide the 3D object data model in a form for display on a browser, for example. In some examples, a 3D object data model viewer may be used to display images of the 3D objects data models. The 3D object data model viewer may be implemented using WebGL within a web browser, or OpenGL, for example.

The shader application118may be configured to apply a shader to portions of the 3D object data model file or to files of the 3D object data model according to the indexes of the file (as labeled by the semantics and search index114) to generate a 3D image. The shader application118may be executed to apply a shader from a number of shaders according to the indexes of the file. The shader may include information related to texture, color, appearance, etc., of a portion of the 3D image.

In one example, the shader application118may be executed to render an image with shading attributes as defined by indexes of the files. For example, objects with multiple surfaces may have different attributes for each surface, and the shader application118may be executed to render each surface accordingly.

The materials application120may be configured to apply a material to portions of the 3D object data model file or to files of the 3D object data model according to the indexes of the file (as labeled by the semantics and search index114) to generate a 3D image. The materials application120may be executed to apply a material from a number of materials according to the indexes of the file. The materials application may apply any material, such as leather, metal, wood, etc., so as to render an appearance of a portion of the 3D image.

In one example, the materials application120may access a database that includes information regarding a number of reference materials (e.g., brass, fur, leather), and objects with multiple materials may be separated into distinct portions so that the materials application120can be executed to render the separate distinct portions. As an example, a hood on a car may include a hood ornament, and the hood may be painted and the ornament may be chrome. The materials application120and the shader application118can be executed to identify two separate materials and render each material with an appropriate shade.

The object data model renderer/viewer122may receive the 3D object data model file or files and execute the shader application118and the materials application120to render a 3D image.

The database106may store all data sets for a 3D object data model in any number of various forms from raw data captured to processed data for display.

The output target108may include a number of different targets, such as a webpage on the Internet, a search engine, a database, a computing device, etc. The output target108may include a 3D object data model viewer that enables product advertisements or product searches based on the 3D object data model.

In examples herein, the system100may be used to acquire data of an object, process the data to generate a 3D object data model, and render the 3D object data model for display.

FIG. 2illustrates another example system200for object data modeling, in accordance with one example. The system200includes the input source102coupled to the server104, which is coupled to a client device124. The input source102and the server104may be as described inFIG. 1. The client device124may receive outputs from any of the components of the server124, and may be configured to render a 3D image.

The client device124includes an object data model renderer/viewer126, a shader application128, and a materials application130. The object data model renderer/viewer126, the shader application128, and the materials application130may all be configured as described with respect to the object data model renderer/viewer122, the materials application120, and the shader application118of the server104as described with respect toFIG. 1.

In some examples, the client device124may receive the 3D object data model file or files from the server104and render a 3D image of the object by executing the shader application128and the materials application130. When executing the shader application128and the materials application130, the client device124may access separate databases to retrieve appropriate shader and material information to apply to the image, access the server104to receive appropriate shader and material information from the shader application118and the materials application120, or may store information locally regarding the appropriate shader and material information to apply.

In some examples, the client device124may receive the 3D object data model file or files from the server104and render a 3D image of the object. In other examples, the server104may render a 3D image of the object and stream the 3D image to the client device124for display.

As described, in some examples, the 3D object data model may include various forms of data, such as raw image data captured, mesh data, processed data, etc. Data of the 3D object data model may be encoded and compressed so as to store information related to 3D geometry of an object associated with information related to appearance of the object for transmission and display within a web browser or application on a device.

In one example, data of the 3D object data model may be compressed by initially encoding a triangle mesh representing the 3D object as a list including a plurality of vertices and a plurality of indices. Each vertex in the list may have several arbitrary parameters associated with the vertex, including, but not limited to, position, surface normal, and texture coordinates. The triangle indices may be stored in a 16-bit unsigned integer format and vertex attributes may be stored in a 32-bit floating point format. The 32-bit floating point format vertex attributes may be reduced to 15-bits. In instances in which compressed data is for a version of a web browser or application that does not have the ability to decompress dictionary encoded data, a delta compression may be used to store differences between the triangle indices and vertex attributes, either in an array of structures layout or a transposed layout. After delta compression, post-delta data may be ZigZag encoded (e.g., using open-source Protocol Buffer library available from Google Inc.). Encoding may follow the format ZigZag(x): (x<<1)^(x>>15) with a corresponding decoding (during decompression) to follow the format UnZigZag(x): (x>>1)^(−(x & 1)). ZigZag encoding may be followed by multi-byte character encoding using UTF-8 encoding. Finally, the UTF-8 encoded data may be compressed using GNU Gzip or bzip2 to generate a compressed 3D object data model file.

The compressed copy of the 3D object data model file may be stored in a database, such as the database106inFIG. 1, in the server104, or on the client device124, for example. In some examples, the compressed 3D object data model file may be provided by the server104to the client device124in response to a request from the client device124. If using a web browser to view the 3D object data model file, the client device124may decompress the compressed 3D object data model file according to Java instructions provided in the object browser web page. A local copy of the object browser web page and a local copy of the uncompressed, searchable data of the 3D object data model file can be stored in local memory of the client device124. The client device124may display exemplary screenshots of an initial default view of a 3D object, based on the searchable data of the 3D object data model file loaded in the web browser.

In some examples, the 3D object data file includes information as to geometry of an object sorted by material and divided into portions to be loaded as fragments and reassembled in portions by the client device. As one example, for a mobile phone comprising multiple parts, each part may be rendered using a separate or distinct shader for each material. Thus, the 3D object data file may be divided into multiple portions and compressed as described above to retain all portions. The client device may receive the compressed 3D object data file, decompress the file, and reassemble the portions of the object one-by-one by loading each fragment of the file, streaming file requests for each shader, and reassembling an image of the object.

Components of the system200inFIG. 2(or the system200itself), and components of the system100inFIG. 1(or the system100itself) may be configured to perform functions, processes and methods disclosed herein. In this regard, any described functions, processes, or methods may be represented by a module, a segment, or a portion of program code, which includes one or more instructions executable by a processor (e.g., the object data model processor112) for implementing specific logical functions or steps in the process. The program code may be stored on any type of computer readable medium or memory, for example, such as a storage device including a disk or hard drive. The computer readable medium may include a non-transitory computer readable medium or memory, for example, such as computer-readable media that stores data for short periods of time like register memory, processor cache and Random Access Memory (RAM). The computer readable medium may also include non-transitory media or memory, such as secondary or persistent long term storage, like read only memory (ROM), optical or magnetic disks, compact-disc read only memory (CD-ROM), for example. The computer readable media may also be any other volatile or non-volatile storage systems. The computer readable medium may be considered a computer readable storage medium, a tangible storage device, or other article of manufacture, for example. The computer readable medium may be tangible and may differ from a wireless or transitory communication medium.

As described above, the systems100or200may be used to acquire data (e.g., images) of an object, process the data to generate a 3D object data model, and render the 3D object data model for display. The systems100and200are illustrated as block diagrams inFIGS. 1 and 2.

FIG. 3illustrates a block diagram of an example system300for image acquisition, in accordance with an embodiment. The system300includes a turntable300coupled to a motor304that is configured to rotate the turntable302based on instructions received from a computer306. A scanhead308is positioned proximate to the turntable302to capture images of an object on the turntable302. The scanhead308includes two machine vision cameras310and312configured to capture RGB or high-resolution images of the object, a texture camera312configured to capture depth information of the object, and a projector316configured to project patterns onto the object. The scanhead308may be coupled to the computer306and may be configured to capture images when triggered to do so by the computer306.

FIG. 4Aillustrates a top view of another example system400for image acquisition, in accordance with an embodiment andFIG. 4Billustrates a front view of the example system for image acquisition, in accordance with an embodiment. The system400may be an example of the input source102inFIGS. 1-2, for example.

The system400inFIGS. 4A-4Bmay include a rotatable surface402that a computing device may be configured to cause to incrementally rotate to multiple angles using a drive system404. The rotatable surface402is shown as a circular surface for illustration only. Other shapes are possible. The drive system404may, for example, include one or more motors and motor drive systems configured to receive commands from the computing device and control rotation of the one or more motors. In some examples, the rotating surface402may be configured to be rotated manually. Other drive systems are possible.

The system400may include scanners406A-C positioned around the rotatable surface402. Three projectors406A-C are shown for illustration only. More or less scanners may be used. In the example system400, the scanners406A-C are positioned around the rotatable surface402such that the computing device is configured to cause the rotatable surface402to rotate using the drive system404. The scanners406A-C may include projectors and cameras.

The system400may include a support408, as shown inFIG. 4B, that is configured to support the rotatable surface402, and the drive system404. Configuration of the support408shown inFIG. 4Bis for illustration only. Other support configurations are possible.

The system400may be configured to acquire images of an object410that is placed on the rotatable surface402. The object410can be any object (e.g., a bag, a shoe, a phone, etc.). The computing device may be configured to cause the rotatable surface402to rotate to eight discrete angles (e.g., 45°, 90°, 135°, 180°, 225°, 270°, 315°, and 360°) from a given starting point. In one example, the rotatable surface402may comprise a transparent material and the scanners406A-C may be configured to capture images of the object from a given elevation (e.g., below the rotatable surface402) that allows capturing images of a bottom view of the object410through the transparent rotatable surface402.

In an example, each of the scanners406A-C may include a respective light source. In this example, the computing device may be configured to control the light source to project a pattern on the object410, where the pattern is made of light emitted from the light source. The pattern may be simple (e.g., dots tracing a curve), or complex (e.g., a flower).

The light source may generally include any type of an electromagnetic radiation source. Light source and electromagnetic radiation source are used interchangeably herein. The electromagnetic radiation source may be configured to project light of any wavelength, visible or invisible. For example, the electromagnetic radiation source may be configured to project visible light such as laser beams with different colors and may additionally or alternately be configured to project invisible light such as infrared light. The computing device may be configured to switch on or activate the scanners406A-C to project the pattern on the object412, and may be configured to switch off or deactivate the projectors406A-C to remove the pattern. Multiple patterns can be projected on the object410. In examples, patterns may be projected on substantially all parts (e.g., sides, edges, etc.) of the object410and may include multiple colors.

One or more of the scanners406A-C may be configured to capture, and capable of capturing, while the pattern is projected on the object410, images that depict the pattern projected by the projectors of the scanners406A-C on the object410. For example, if the projectors include electromagnetic radiation sources that project invisible infrared light patterns on the object, the cameras may be configured images while the infrared light pattern is projected on the object410.

In one example, the scanners406A-C include multiple cameras mounted adjacent each other. The multiple cameras may include a high-resolution SLR camera configured to capture color images of the object410, and a depth camera configured to capture depth information of the object410. The multiple cameras may be mounted in the same enclosure or adjacent each other to capture images and information about the object410from the same or substantially same viewpoint.

The rotatable surface402may be rotated a number of times to rotate through a number of angles. As an example for illustration, the computing device may be configured to cause the rotatable surface402to incrementally rotate to eight discrete angles and repeat capturing respective images of the object410using the scanners406A-C. A number of angles of the multiple angles of rotation may vary based on complexity of the object410, for example. Images from fewer angles may be captured for a symmetric object, for example, than for a more complex object that is not symmetric. In addition, various lighting or backgrounds may be applied to the object410, and images may be captured depicting the variations.

In some examples, upon capturing images of the object410from the multiple angles of rotation, a given computing device may be configured to match portions of the pattern in each image of the images to corresponding portions of the pattern in subsequent images that are spatially neighboring, based on respective capture angles/locations, so as to spatially align the images. The system400may be configured to acquire the images and process the data to generate a 3D object data model of the object410.

FIG. 5illustrates a front view of another example system500and layout for image acquisition, in accordance with an embodiment. InFIG. 5, the system500includes three scanheads502A-C in a fixed layout for scanning an object504positioned on a turntable506(or platform) that is configured to be rotated by a motor508. The layout of the scanheads502A-C covers angles above and below the turntable506, for example.

Within the example shown inFIG. 5, scanhead502A is positioned below the turntable506so as to capture an image of a portion of an underside of the object, scanhead502bis positioned above the turntable506, and scanhead502cis positioned above the turntable506and offset from a position of the scanhead502b. All the scanheads502a-care positioned such that each scanner is outside of a field of view of other scanners.

In one example, the scanhead502ais positioned below the platform and is oriented at an angle of about 45 degrees below the platform. From this angle, the scanhead502acan capture images on an underside of the object504. The scanhead502awill project light during scanning, and the glass surface of the turntable506may reflect the light, which can cause poor image capture. Thus, within examples, the system500may be included within an enclosure510, and an area in the enclosure opposite the scanhead502amay include a light-absorbing element512to absorb light projected by the scanhead502athat is reflected off an underside of the turntable506. The light-absorbing element may include a dark object, dark coating, or dark color material, for example. The enclosure510may include a door or opening to enable the object504to be provided on the turntable506.

In another example, the scanhead502bmay be positioned above the turntable506and oriented at an angle of about 20 degrees above the turntable506. The scanhead502cmay be positioned above the turntable506and offset from the position of the scanhead502b, and oriented at an angle of about 80 degrees above the turntable506and about 15 degrees offset from the position of the scanhead502b. The scanhead502cmay be configured to provide a birds-eye view or top-down view into the object504, but not directly down or perpendicular to the turntable506so as to avoid direct reflection of light. The turntable506may include a glass surface, and the scanheads502b-care positioned above the glass surface and oriented at an angle with respect to a plane normal to the glass surface.

The configuration and layout of the scanheads502a-cprovides desirable image capture positioning, and none of the scanheads502a-care within a field of view of any other scanhead. In this configuration, images captured by the scanheads502a-cwill not include images of other scanheads, and thus, image processing may be performed more quickly to generate a 3D object data model of the object504. In addition, the scanheads502a-care positioned such that the motor508is not within the field of view of any scanhead as well. Using the example scanhead layout inFIG. 5, the scanheads502a-ccapture images of the object504and avoid capturing within those images any unnecessary or unwanted components of the system500.

FIGS. 6A-6Dillustrate example configurations and layouts of a platform and motor for an object-image acquisition system.

FIG. 6Aillustrates a support structure602and a plurality of rollers604A-B coupled to the support structure602, as well as a drive wheel606coupled to the support structure602. A platform602, which may be a glass turntable as within examples discussed above, has edges mounted to contact the plurality of rollers604A-B and the drive wheel606is configured contact the edges of the platform602. The drive wheel606may be operated to cause the platform608to rotate via contact with the drive wheel606and the plurality of rollers604a-b. Configuration of the rollers604a-band drive wheel606in this manner enables an edge-mounted and edge-driven platform608with low visibility mounting.

The example shown inFIG. 6Aincludes two rollers604A-B, and the platform608is configured to have a front edge that contacts the drive wheel606, a back edge opposite the front edge, and side edges between the front edge and the back edge that contact the two rollers604a-b. Within examples, the two rollers604a-band the drive wheel606are coupled to the support structure602in a triangle configuration to provide three points of support for the platform608that are oriented to minimize interference with a field of view of any scanners. For example, a scanner610may be positioned underneath the platform608facing upward to capture an image of an underside of an object positioned on the platform608, and no mounts for the platform608may be visible in images captured by the scanner610.

In some examples, a plurality of scanners may be provided that are configured to capture geometry and texture information of an object when the object is positioned on a surface of the platform608. The scanners may be positioned generally as described in the example inFIG. 5. Since the platform608is positioned in the configuration shown inFIG. 6A, the scanners field of view will be free from any visible support to enable capture of images without any visible support as well to simplify image processing and lower an amount of shadows from the lighting system.

As shown, the scanner610may be to have a field of view of the back edge of the platform608so that the rollers604a-band the drive wheel606are outside of a field of view of the scanner610. The scanner610may project light that can reflect off of a surface of the platform608, and a light-absorbing element612may be positioned to absorb any reflected light, for example.

FIG. 6Billustrates a view of a roller and platform configuration. The roller604bmay include a wheel internal to a mount that contacts an edge surface of the platform608and allows the platform to rotate via rotation of the wheel.

FIG. 6Cillustrates a side view of the drive wheel and platform configuration, andFIG. 6Dillustrates a front view of the drive wheel and platform configuration. The drive wheel606contacts an edge surface of the platform608and also couples to a motor through motor controls616. The drive wheel606may be powered to rotate, and via contact with the platform608, the platform608will also rotate. The drive wheel606is mounted on the support structure602and includes a spring614to be spring loaded to provide contact with the platform608in a rigid manner. Thus, the drive wheel606pushes the platform608into the static rollers604a-b.

Within examples, a scanning apparatus, such as the system500inFIG. 5, may be used to capture color and texture of an object. Within the system, it is desirable that colors of an object not be affected by curvatures or shadows of the object. Thus, within examples, a system is provided that may be configured to create a diffuse lighting environment, where there is about a same amount of light present from all angles onto the object. In one example, a diffuse lighting setup for capture of color and texture of an object is provided. The system is configured to include a diffusion curtain and light tunnels (lights aimed between an interior of the scanner and the diffusion curtain) to obtain a diffuse lighting configuration. Diffuse light may enable capturing a texture of the object that can merge well from multiple views (e.g., as lighting varies over a surface of the object, there may be less compatible images from different angles). Thus, it may be desirable for the lighting on the object to be about the same from all angles.

FIGS. 7A-7Dillustrates an active ducted cooling system, in accordance with some examples herein.

InFIG. 7A, a system800is shown, similar to those previously described, that includes a turntable802on which an object804is placed for imaging. Scanners806a-care positioned around the object to capture images as the turntable802is rotated via a motor808. The system800may be enclosed within an enclosure810. The scanners806a-cmay generate heat, and a cooling system can be provided to cool the system800.

The cooling system may include a plurality of air ducts812a-cwithin the enclosure810that are coupled to respective scanners806a-c. The air ducts812a-care each coupled to an exhaust fan814that is positioned outside of the enclosure810and is configured to cause heat generated by the scanners806a-cto be removed from the enclosure810. The air ducts812a-cmay merge into an exhaust pipe816that couples to the exhaust fan814.

Within examples, the exhaust814pulls hot air out of the enclosure810. Specifically, the air ducts812a-cmay be coupled to the scanners806a-cthrough respective seals, such that hot air is maintained within the air ducts812a-cand exits the enclosure810through the exhaust fan814. The scanners806a-cmay include a camera and a light source, and the air ducts812a-cmay be coupled to the light sources of the scanners806a-cthat generate a majority of heat in the scanner. The scanners806a-cmay also include respective fans that couple to the air ducts812a-cand cool the scanners806a-c.

The air ducts812a-cmay be flexible and enable the scanners806a-cto move within the enclosure810and maintain a coupling to the air ducts812a-c.

The enclosure810may prevent light exterior to the enclosure810from entering the enclosure810, and the air ducts812a-care coupled to the exhaust fan814positioned outside of the enclosure810in a manner configured to prevent light exterior to the enclosure810from entering the enclosure810. Using the active cooling system, light may be sealed within the enclosure810in contrast to adding a vent to the enclosure810.

In addition, within examples, it is desirable to maintain a positive air pressure within the enclosure to avoid dust entering when the enclosure810is opened to replace the object804with a new object for scanning. Thus, the exhaust fan814is configured to pull air out of the scanners806a-c, rather than push air into the scanners806a-c, so that air movement within system800is maintained still and there is little or no airflow within an interior of the enclosure810.

The cooling system may be always on to cool the scanners806a-c, or always on during scanning. In other examples, a sensor may be coupled to each respective scanner806a-cthat is configured to determine a temperature of the scanner or of components of the scanner, and is configured to output a signal indicating to activate the exhaust fan814based on a temperature of a component of the respective scanner exceeding a threshold. The scanners806a-cmay have operating temperatures in the range of 60-90 degrees Fahrenheit, and the exhaust fan814may be configured to activate when a temperature is within such operating temperature range so as to maintain the operating temperature, for example.

FIGS. 7B-7Dillustrate alternate views of the scanners806a-cand air ducts812a-cas may be configured within examples for the system800.

FIGS. 8A-8Cillustrate example configurations for a scanner.

FIG. 8Aillustrates a scanner900that includes machine vision cameras902and904mounted in a stereo arrangement, a texture camera906, a projector908, and a light-dampening element910. To scan an object, the projector908projects light (e.g., in a pattern) onto the object, and the cameras902,904, and906may be configured to capture an image of the object with the light pattern projected thereon. A scanning system may be configured to include multiple scanheads (such as multiple scanners900) and each may interfere with each other if one scanner is projecting light and capturing images while another scanner is doing the same. In some instances, it is desirable to operate one scanner at a time to capture images, and to turn off the projector on other, idle scanners. However, based on light sources used for the projector908, such as halogen or xenon lamps, turning off the projector908may require an amount of time and may not be instant (e.g., a warm-down period may be required). And, to scan one object, a given projector of each scanner in the scanning system may need to be turned on and off to generate various patterns about eight times or more to capture a sequence of images of the object with various patterns. Thus, a large amount of time may be required to perform the scan if the projectors are turned on and off during the scanning process. Still further, even when the light source of the projector908is turned off, the light source may provide residual light for some time.

Within examples, to avoid interference or a need to cycle power to the light sources of projectors, the light-dampening element910is provided, and may act as an active projector damper. The light-dampening element910may include a dark (black) plastic material that is configured to cover the projector908to block all light that may exit the projector908. When not in use, the projector908may be turned off, and the light-dampening element910may cover the projector908to block any residual light.

In some examples, the scanner900may include or be coupled to a control module912that is configured to operate the scanner900, and possibly to operate all scanners of a scanning system to individually scan the object when the object is positioned on a platform to capture geometry and texture information of the object. The control module912causes the light-dampening element910to cover the light source or the projector908of the scanner900during scanning by another scanner of the system and causes the light-dampening element910to uncover the light source or the projector908of the scanner900during scanning by the scanner900.

Thus, during scanner by a scanner of the system, the light-dampening element910may be configured in a position as shown inFIG. 8B. During scanner by other scanners, the light-dampening element910may be configured in a position as shown inFIG. 8C. As a result, during scanning by any given scanner, all other scanners of the system may have respective light-dampening elements in a down position to cover all other potential light sources. In one example, the scanning system may include three scanheads (e.g., one above, below, and to a side of a turntable), and the scanheads each have light-dampening elements that work together to avoid interference with each other. Inactive scanners will have light-dampening elements covering their light sources so that light of one scanner does not project into a given camera of another scanner.

The control module912may be configured to operate the multiple scanners in the scanning system in sequence to individually scan the object using one of the scanners at a time, and light sources of the scanners are configured to be on during scanning of the object. Light-dampening elements cover light sources of respective scanners in the sequence so as to lower interfering light projected by the light source of the respective scanners to the another scanner.

Within examples, a configuration of the scanner, such as the scanner900inFIGS. 8A-8C, may be configured to be rigidly mounted. A rigid configuration enables the scanner to be locked in placed so that after a calibration, the scanners may be in optimized positions. The mount may include a machined scanhead comprising aluminum. The rigid mount enables calibrations to be performed a low number of times since the components will remain rigidly attached. In addition, the aluminum material may provide or act as a heat sink for the machine vision cameras or other components of the scanner. The scanner attaches to the scanner frame via an aluminum bar which further may carry heat away from the scanner.