Patent Publication Number: US-11032490-B2

Title: Camera array including camera modules

Description:
CROSS-REFERENCE TO RELATED APPLICATIONS 
     This application is a continuation of U.S. Utility Patent Application Ser. No. 15/243,122, entitled “Camera Array Including Camera Modules” and filed on Aug. 22, 2016, which is a continuation of U.S. Utility patent application Ser. No. 14/444,938, entitled “Camera Array Including Camera Modules” and filed on Jul. 28, 2014 (now U.S. Pat. No. 9,451,162), the entirety of both of which are hereby incorporated by reference. This application claims the benefit of the following applications, the entirety of each of which is hereby incorporated by reference: U.S. Provisional Patent Application Ser. No. 61/868,527 entitled “Panoptic Virtual Presence System and Method” and filed on Aug. 21, 2013; U.S. Provisional Patent Application No. 62/004,645 entitled “Camera Array Including Camera Modules” and filed on May 29, 2014; U.S. Provisional Patent Application No. 62/008,215 entitled “Color Consensus” and filed on Jun. 5, 2014; and U.S. Provisional Patent Application No. 62/029,254 entitled “Virtual Presence” and filed on Jul. 25, 2014. 
    
    
     FIELD 
     The embodiments discussed herein are related to a camera system. More particularly, the embodiments discussed herein relate to a camera system including one or more camera modules for recording images. 
     BACKGROUND 
     Existing camera systems using multiple cameras to record videos in different locations or the same location may generate videos with poor quality. For example, cameras in a security system may capture videos independently without considering synchronization between the different cameras. Each camera may operate independently from the other cameras with no coordination between the different cameras. 
     The subject matter claimed herein is not limited to embodiments that solve any disadvantages or that operate only in environments such as those described above. Rather, this background is only provided to illustrate one example technology area where some embodiments described herein may be practiced. 
     SUMMARY 
     According to one innovative aspect of the subject matter described in this disclosure, a camera system comprises a camera array comprising camera modules, the camera modules comprising a master camera that includes a processor, a memory, a sensor, a lens, a status indicator, and a switch, the switch configured to instruct the camera modules to initiate a start operation to start recording video data using the lens and the sensor in each of the camera modules and the switch configured to instruct the camera modules to initiate a stop operation to stop recording, the status indicator configured to indicate a status of at least one of the camera modules or the camera array. 
     In general, another innovative aspect of the subject matter described in this disclosure may be embodied in methods that include: housing forming apertures for the camera modules and wherein the camera modules comprise housing that is rotationally symmetrical; housing in the shape of a honeycomb, the center of each compartment of the honeycomb forming an aperture for one of the camera modules; a microphone array configured to capture audio for enabling reconstruction of sound from any arbitrary direction; an aggregation system for generating a stream of three-dimensional video and audio data for displaying panoramic images; a viewing system configured to decode and render the three-dimensional video and play the audio data on a virtual reality display and surround sound system; a connection hub linking the camera modules and configured to transfer the video data from at least one of the camera modules to a client device, the connection hub including a battery for supplying power to each of the camera modules. 
     These and other implementations may each optionally include one or more of the following operations and features. For instance, the features include: the camera modules forming a daisy chain with the master camera being coupled to a first camera module that is coupled to an “n” camera module that is coupled to the master camera; each camera module being positioned to have at least one overlapping field of view with another camera module; the status of one of the camera modules including a faulty status and the status indicator indicating the faulty status responsive to a fault occurring in one of the camera modules; the status indicator being an overall status indicator configured to indicate the faulty status of a fault occurring in any of the camera modules and wherein the camera modules further include individual status indicators configured to indicate the fault status of the fault occurring in one of the camera modules; the camera modules being synchronized through a daisy chain to capture corresponding video data in different directions simultaneously; wherein the camera modules pass control and status messages to one another via the daisy chain. 
     According to another innovative aspect of the subject matter described in this disclosure, a method comprises identifying, with one or more processors, a device identifier and a position of each camera module in a camera array, the camera modules including a master camera; confirming an absence of faults in the camera module; initiating a start operation in the master camera, the master camera instructing the other camera modules to start recording; receiving video data comprising image frames from the camera modules; stitching the image frames together based on the video data; generating three-dimensional video; synchronize audio data; and generating a stream of the three-dimensional video and the audio data for displaying panoramic images. In some embodiments, the method is further configured to perform geometric calibration to identify a relative position of each camera module. In some embodiments, the image frames are stitched together based on calibration relative position of each camera module. In some embodiments, the method is further configured to generate a user interface for viewing video data from one of the camera modules 
     Other aspects include corresponding methods, systems, apparatus, and computer program products for these and other innovative aspects. 
     The disclosure is particularly advantageous in a number of respects. First, the camera array generates a realistic three-dimensional experience for users. Second, the camera modules are designed to be rotationally symmetrical with interchangeable components, which makes modifications easier to implement. Third, the aggregation system includes a user interface for allowing a user to view different levels of detail including a preview of the virtual reality experience, and the images from individual camera modules. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
       Example embodiments will be described and explained with additional specificity and detail through the use of the accompanying drawings in which: 
         FIG. 1  illustrates a block diagram of some embodiments of an example camera system for recording video data using one or more camera modules; 
         FIG. 2  illustrates a block diagram of some embodiments of an example aggregation system; 
         FIG. 3A  illustrates an example system comprising a camera array and a connection hub according to some embodiments; 
         FIG. 3B  illustrates an example housing according to some embodiments; 
         FIG. 3C  illustrates an example microphone array according to some embodiments; 
         FIG. 4  illustrates an example method for providing video data using a camera array according to some embodiments; and 
         FIG. 5  illustrates an example method for detecting a faulty camera module according to some embodiments. 
     
    
    
     DESCRIPTION OF EMBODIMENTS 
     The disclosure relates to a camera system that includes a camera array with one or more camera modules. Applications for the camera system may include, but are not limited to, a rear camera system for a vehicle, a robot installed with a camera array including one or more camera modules, a high-end filming tool, and other suitable applications with virtual presence. For example, one application of the camera system may include providing a virtual reality (VR) experience to users. An ideal virtual reality experience is one that creates a realistic sense of being in another place. Creating such an experience may involve reproducing three dimensional (3D) video for a scene. The disclosure may relate to a panoptic virtual presence system and method that is designed to create a realistic sense of being in another place by providing an immersive 3D viewing experience. Examples of 3D scenes that a user might enjoy experiencing include vacation spots, sporting events, a wedding, a conference, a press conference, confirming a location as part of mapping software, experiencing an underwater scene, experiencing a starling murmuration, scene changes that are accelerated with time-lapse photography, etc. 
     The camera system according to an example embodiment may include a camera array, a connection hub (e.g., a universal serial bus (USB) hub) coupled to the camera array, and a client device (e.g., a laptop computer) coupled to the connection hub. The camera array may include multiple camera modules configured to capture video data for the same object or the same scene from multiple angles at the same time. Each camera module may include a processor, a memory, a sensor, and a lens. The camera modules in the camera array may be coupled in a daisy chain for passing control and status messages to one another via the daisy chain and synchronizing timing of image frames captured by different camera modules. For example, the camera modules are synchronized to start and to stop recording video data at the same time so that image frames from the different camera modules are synchronized. 
     One of the camera modules in the camera array may be a master camera module that includes a switch (e.g., a micro switch) for controlling the operations of the camera modules. For example, a user may press the switch a first time to start recording video data simultaneously using all the camera modules in the camera array. The user may press the switch a second time to stop the recording of the video data. 
     In some embodiments, the camera array additionally includes an overall status indicator (e.g., a light-emitting diode (LED)) coupled to the last camera module in the daisy chain. The overall status indicator may indicate an overall status of the camera array. If all of the camera modules in the camera array are fault-free (e.g., all camera modules function properly), the overall status indicator indicates a normal status for the camera array. However, if a fault occurs to at least one of the camera modules, the overall status indicator indicates a faulty status for the camera array. Each camera module may additionally include a corresponding status indicator for indicating an individual status of the corresponding camera module. By utilizing the overall status indicator in the camera array and the respective status indicators in the camera modules, the overall status of the camera array and the individual statuses of the camera modules may be monitored at any time. For example, if a memory card in a camera module is full, both the overall status indicator and the individual status indicator corresponding to the camera module may indicate a faulty status, allowing a user operating the camera array to determine which camera module has a fault. 
     The camera array may be at least part of a modular camera system, with each camera forming a module of the modular camera system. The camera array has a flexible structure so that it is easy to remove a particular camera module from the camera array and to add new camera modules to the camera array. The camera modules in the camera array may be configured in different geometries. For example, the camera array includes multiple camera modules arranged in a line, a cylinder, a sphere, or another geometry. Each camera module may be configured to point to a different direction so that the camera array may capture an object or a scene from multiple directions at the same time. 
     The camera modules may be coupled to the connection hub for transferring video data captured by the camera modules to the client device via the connection hub. In some embodiments, the camera modules do not have built-in batteries, and the connection hub may include a battery for supplying power to the camera modules. The connection hub may be coupled to the client device for sending the video data to the client device. 
     The camera system described herein may include two types of communication mechanisms, including a first communication mechanism for data communication between the different camera modules (e.g., a bus for communication between the different camera modules) and a second communication mechanism for centrally controlling the operation of the camera modules (e.g., a control bus for controlling operations of the camera modules). 
     The camera system described herein may additionally include a set of algorithms for processing the video data captured by the camera array. The set of algorithms are stored on a non-transitory memory for converting the input across multiple camera modules into a single stream of 3D video (e.g., a single compressed stream of 3D video data). The set of algorithms may be implemented in one or more “modules” as described in more detail below with reference to  FIG. 2 . For example, the set of algorithms includes color correction algorithms for smoothing and correcting colors in the video data. In another example, the set of algorithms may be implemented in software that stitches the video data from multiple cameras into two large-format, panoramic video streams for left and right eye viewing, and encodes and compresses the video using a standard MPEG format or other suitable encoding/compression format. 
     Embodiments described herein contemplate various additions, modifications, and/or omissions to the above-described panoptic virtual presence system, which has been described by way of example only. Accordingly, the above-described camera system should not be construed as limiting. For example, the camera system described with respect to  FIG. 1  below may include additional and/or different components or functionality than described above without departing from the scope of the disclosure. 
     Embodiments of the specification will be explained with reference to the accompanying drawings. 
       FIG. 1  illustrates a block diagram of some embodiments of a camera system  100  arranged in accordance with at least one embodiment described herein. The illustrated system  100  includes a camera array  101 , a connection hub  123 , a client device  127 , and a server  129 . The client device  127  and the server  129  may be communicatively coupled via a network  105 . Additions, modifications, or omissions may be made to the illustrated embodiment without departing from the scope of the disclosure, as will be appreciated in view of the disclosure. 
     While  FIG. 1  illustrates one camera array  101 , one connection hub  123 , one client device  127 , and one server  129 , the disclosure applies to a system architecture having one or more camera arrays  101 , one or more connection hubs  123 , one or more client devices  127 , and one or more servers  129 . Furthermore, although  FIG. 1  illustrates one network  105  coupled to the entities of the system  100 , in practice one or more networks  105  may be connected to these entities and the one or more networks  105  may be of various and differing types. 
     In one embodiment, the system  100  includes a housing (not shown). The housing may be a single sheet of metal or other material with apertures where the camera modules  103  may be coupled to the camera array  101 . In some embodiments, the housing may be water resistant or waterproof. Water resistant housing may be used outdoors during a rain storm without damaging the camera modules  103 . Waterproof housing may be used for capturing video underwater. In some embodiments, waterproof housing also withstands pressure for capturing video deep underwater. 
     The housing may be constructed from a heat dissipating material that draws heat from the camera modules  103  for dissipation in the atmosphere. In some embodiments the camera modules  103  also including metal housing to create a path for the heat to exit the camera array  101 . Other devices for aiding in heat dissipation within the system  100  are possible, for example, the system  100  may include tubing for running water throughout the system to cool the components of the system  100 . Other examples may include a silent fan for blowing hot air out of the system  100 , heat sinks, and heat dissipating putty. Yet another example is to include slits in the housing for passive air cooling. In some embodiments, the heat dissipating materials are selected based on their absence of noise so that they avoid interfering with the audio recording. Another way to improve heat dissipation is to configure the greatest heat producing components of the camera array to be as close to the surface as possible. For example, the ISP  115  in the camera module  103  may be located along the edge of the camera module  103 . 
     In some embodiments, the system  100  includes a temperature sensor for determining the temperature of the camera array  101 . In some embodiments, the temperature sensor is communicatively coupled to the heat dissipating material and instructs the heat dissipating material to respond to temperature changes. For example, when the temperature exceeds a certain threshold, the temperature sensor instructs the fan to blow harder. In some other embodiments, the temperature sensor is communicatively coupled to the master camera module  103   a  and instructs the heat dissipating material based on information from the master camera module  103   a . For example, the temperature sensor instructs less water to run through tubing where the video recording is using a time lapse sequence and therefore produces less heat than streaming video. In another example, where the video is recording in high power states, the temperature sensor instructs the heat dissipating materials to dissipate more heat. In yet another example, the temperature sensor instructs the heat dissipating materials to more aggressively dissipate heat when the scene being filmed is poorly illuminated, and image sensor noise is more apparent. 
     The camera array  101  may be a modular camera system configured to capture raw video data including image frames. In the illustrated embodiment shown in  FIG. 1 , the camera array  101  includes camera modules  103   a ,  103   b  . . .  103   n  (also referred to individually and collectively herein as camera module  103 ). While three camera modules  103   a ,  103   b ,  103   n  are illustrated in  FIG. 1 , the camera array  101  may include any number of camera modules  103 . The camera array  101  may be constructed using individual cameras with each camera module  103 . 
     The camera array  101  may be constructed using various configurations. For example, the camera modules  103   a ,  103   b  . . .  103   n  in the camera array  101  may be configured in different geometries (e.g., a sphere, a line, a cylinder, a cone, a cube, etc.) with the corresponding lenses  113  facing in different directions. For example, the camera modules  103  are positioned within the camera array  101  in a honeycomb pattern where each of the compartments form an aperture where a camera module  103  may be inserted. In another example, the camera array  101  includes multiple lenses along a horizontal axis and a smaller number of lenses on a vertical axis. 
     In some embodiments, the camera modules  103   a ,  103   b  . . .  103   n  in the camera array  101  are oriented around a sphere in different directions with sufficient diameter and field-of-view to capture enough view disparity to render stereoscopic images. For example, the camera array  101  may comprise HERO3 +  GoPro® cameras that are distributed around a sphere. In another example, the camera array  101  may comprise 32 Point Grey Blackfly Gigabit Ethernet cameras distributed around a 20 centimeter diameter sphere. Camera models that are different from the HERO3 +  or the Point Grey Blackfly camera model may be included in the camera array  101 . For example, in some embodiments the camera array  101  comprises a sphere whose exterior surface is covered in one or more optical sensors configured to render 3D images or video. The optical sensors may be communicatively coupled to a controller. The entire exterior surface of the sphere may be covered in optical sensors configured to render 3D images or video. 
     The camera array  101  has a flexible structure so that a particular camera module  103  may be removed from the camera array  101  easily. In some embodiments, the camera modules  103  are rotationally symmetrical such that a camera module  103  may be inserted into the housing, removed, rotated 90 degrees, and reinserted into the housing. In this example, the sides of the housing may be equidistant, such as a camera module  103  with four equidistant sides. This allows for a landscape orientation or a portrait orientation of the image frames without changing the base. In some embodiments, the lenses  113  and the camera modules  103  are interchangeable. New camera modules  103  may also be added to the camera array  101 . In some embodiments, the camera modules  103  are connected to the camera array  101  via USB connectors. 
     In some embodiments, the camera modules  103  in the camera array  101  are positioned to have a sufficient field-of-view overlap so that all objects can be seen by more than one view point. In some embodiments, having the camera array  101  configured so that an object may be viewed by more than one camera may be beneficial for correcting exposure or color deficiencies in the images captured by the camera array  101 . Other benefits include disparity/depth calculations, stereoscopic reconstruction, and the potential to perform multi-camera high-dynamic range (HDR) imaging using an alternating mosaic pattern of under- and over-exposure across the camera array. 
     In some embodiments, the camera array  101  may also include a microphone array (not shown in  FIG. 1 ) for capturing sound from all directions. For example, the microphone array may include a Core Sound Tetramic soundfield tetrahedral microphone array following the principles of ambisonics, enabling reconstruction of sound from any arbitrary direction. In another example, the microphone array includes the Eigenmike, which advantageously includes a greater number of microphones and, as a result, can perform higher-order (i.e. more spatially accurate) ambisonics. The microphone may be mounted to the top of the camera array  101 , be positioned between camera modules  103 , or be positioned within the body of the camera array  101 . 
     In some embodiments, the camera modules  103  in the camera array  101  do not include built-in batteries so that the sizes of the camera modules  103  are more compact. The camera modules  103  may obtain power from a battery  125  that is part of the connection hub  123 . 
     In some implementations, the connection hub does not include a battery  125  and power is supplied by a different power source. For example, one or more of a wall outlet, generator, power inventor or any combination of these elements provides power for a load such as the camera modules  103 . The power source may be alternating current (“AC”) or direct current (“DC”). In some implementations, the power source may be an AC power supply that is converted to a DC power supply. For example, AC voltage from a generator or wall outlet is routed through a power inventor to provide DC voltage for the camera modules  103 . The power source may also include a power step down element to refine the power supply to a voltage level compatible with one or more loads. For AC voltage, the power step down element may include one or more step-down transformers or any other element or combination of elements configured to step down AC voltage. For DC voltage, the power step down element may include one or more series voltage dropping resistors, a voltage divider network or any other element or combination of elements configured to step down DC voltage. For example, AC voltage from a generator or wall outlet is routed through a power inventor to provide DC voltage, and this DC voltage is routed through one or more series voltage dropping resistors to drop the DC voltage to a level appropriate for powering the camera modules. 
     In some embodiments, the external cases of the camera modules  103  may be made of heat-transferring materials such as metal so that the heat in the camera modules  103  may be dissipated more efficiently than using other materials. In some embodiments, each camera module  103  may include a heat dissipation element. Examples of heat dissipation elements include, but are not limited to, heat sinks, fans, and heat dissipating putty. 
     As illustrated in  FIG. 1 , the camera module  103   a  includes a processor  107   a , a memory  109   a , a sensor  111   a , a lens  113   a , an ISP  115   a , a switch  117 , and a status indicator  119   a.    
     The processor  107   a  may include an arithmetic logic unit, a microprocessor, a general purpose controller or some other processor array to perform computations and provide electronic display signals to a display device. The processor  107   a  may process data signals and may include various computing architectures including a complex instruction set computer (CISC) architecture, a reduced instruction set computer (RISC) architecture, or an architecture implementing a combination of instruction sets. Although a single processor is illustrated in the camera module  103   a , the camera module  103   a  may include multiple processors. 
     The memory  109   a  includes a non-transitory memory that stores data for providing the functionality described herein. The memory  109   a  may be a dynamic random access memory (DRAM) device, a static random access memory (SRAM) device, flash memory or some other memory devices. In some embodiments, the memory  109   a  may include one or more camera memory cards for storing raw video data (e.g., image frames) captured by the camera module  103   a . Example memory cards include, but are not limited to, a secure digital (SD) memory card, a secure digital high capacity (SDHC) memory card, a secure digital extra capacity (SDXC) memory card, and a compact flash (CF) memory card, etc. 
     The sensor  111   a  is any device that senses physical changes. For example, the sensor  111   a  may be a device that converts an optical image to electrical signals. For example, the sensor  111  captures light and converts the captured light into an electrical signal. Example sensors  111   a  include, but are not limited to, semiconductor charge-coupled devices (CCD), active pixel sensors in complementary metal-oxide-semiconductor (CMOS), and N-type metal-oxide-semiconductor (NMOS, Live MOS), etc. Other example sensors  111   a  are possible. 
     In some embodiments, the sensor  111   a  may include a depth sensor. In some embodiments, the depth sensor determines depth using structured light, such as a speckle pattern of infrared laser light. For example, the depth sensor may include the PrimeSense depth sensor. In another embodiment, the depth sensor determines depth using or time-of-flight technology that determines depth based on the time it takes a light signal to travel between the camera and a subject. The depth sensor may be used to determine a depth map. 
     In one embodiment, the sensor  111   a  is a motion detector. For example, the sensor  111   a  is a gyroscope that measures orientation of the camera module  103   a . In another example, the sensor  111   a  is an accelerometer that is used to measure acceleration of the camera module  103   a . In yet another example, the sensor  111   a  includes location detection, such as a global positioning system (GPS), location detection through triangulation via a wireless network, etc. 
     In another embodiment, the sensor  111   a  includes a microphone for recording audio. Even if the camera array  101  has a separate microphone, including a microphone in each camera module  103  may be valuable for generating 3D audio to play with the 3D video. 
     The lens  113   a  may be an optical device capable of transmitting and refracting lights and converging or diverging a beam of light. For example, the lens  113   a  may be a camera lens. 
     The image signal processor (ISP)  115   a  receives an electrical signal from the sensor  111   a  and performs demosaicing to determine pixel color from the electrical signals. In some embodiments, the ISP controls autofocus, exposure, and white balance. In some embodiments, the ISP  115   a  compresses raw video data for faster transmission. In some other embodiments, the raw video data is compressed by the aggregation system  131 . The ISP embeds device identifier of the camera module  103  (e.g. the serial number) in the raw video data. The ISP  115   a  may be interchangeable. 
     In some embodiments, the ISP  115   a  generates a metadata log associated with each frame that includes attributes associated with the image frame and any image processing performed on the image file. For example, the metadata file includes what kind of exposure and color processing was used. 
     The switch  117  may be a device for controlling an operation of the camera module  103   a . For example, the switch  117  includes a micro-switch or a button used to control a start operation and a stop operation of the camera module  103   a . The switch  117  may be exterior to the camera module  103   a  and activated by a user. In another embodiment, the switch  117  is inside the camera module  103   a.    
     In some implementations, the switch  117  is controlled wirelessly. For example, the switch  117  may be controlled via dedicated short-range communication (“DSRC”), wireless fidelity (“WiFi”), Bluetooth™ or any other wireless communication protocol. In some implementations, the switch  117  is a tangible hardware device. In other implementations, the switch  117  is code and routines stored on a tangible, non-transitory memory and executed by one or more processors. For example, the switch  117  may be code and routines that are stored on a tangible, non-transitory memory and controlled by a processor-based computing device via a wired or wireless communicative coupling. The tangible, non-transitory memory that stores the code and routines of the switch  117  may or may not be an element of the processor-based computing device that controls the switch  117  via a wired or wireless communicative coupling. 
     As described below in more detail, the camera module  103   a  may be a master camera module of the camera array  101  and may control operations of other camera modules  103  in the same camera array  101 . For example, an initiation of a start operation in the camera module  103   a  may also cause an initiation of a start operation in other camera modules  103  so that all the camera modules  103  in the camera array  101  are synchronized to start recording raw video data at the same time, respectively. An initiation of a stop operation in the camera module  103   a  may also cause an initiation of a stop operation in other camera modules  103  so that all the camera modules  103  in the camera array  101  may be synchronized to stop recording video data at the same time, respectively. 
     As a result, the switch  117  not only controls the operation of the camera module  103   a , but also simultaneously controls operations of other camera modules  103  in the camera array  101 . For example, a user may press the switch  117  a first time to start recording video data using the camera modules  103  in the camera array  101 . The user may press the switch  117  a second time to stop recording video data using the camera array  101 . 
     The status indicator  119   a  may be a device configured to indicate a status of the camera module  103   a . A status of the camera module  103   a  may be one of a normal status and a faulty status. For example, the status indicator  119   a  indicates a normal status of the camera module  103   a  if the camera module  103   a  functions properly. However, the status indicator  119   a  may indicate a faulty status of the camera module  103   a  if a fault occurs at the camera module  103   a . For example, if the storage space in the memory  109   a  is full, indicating no more video data captured by the camera module  103   a  may be stored in the memory  109   a , the status indicator  119   a  may indicate a faulty status showing that a fault occurs at the camera module  103   a . The status indicator may also indicate other statuses, for example indicating the camera is booting up or shutting down. 
     In some embodiments, the status indicator  119   a  may include a light-emitting diode (LED). The LED may emit light if the status indicator  119   a  indicates a normal status. Alternatively, the LED may not emit light if the status indicator  119   a  indicates a faulty status. In some embodiments, the LED may emit multiple colors of light or emit light at different rates in order to indicate different statuses. 
     The camera module  103   b  includes a processor  107   b , a memory  109   b , a sensor  111   b , a lens  113   b , and a status indicator  119   b . The camera module  103   n  includes a processor  107   n , a memory  109   n , a sensor  111   n , a lens  113   n , and a status indicator  119   n . The processors  107   b  and  107   n  are similar to the processor  107   a , the memories  109   b  and  109   n  are similar to the memory  109   a , the sensors  111   b  and  111   n  are similar to the sensor  111   a , the lenses  113   b  and  113   n  are similar to the lens  113   a , and the status indicators  119   b  and  119   n  are similar to the status indicator  119   a . The description will not be repeated herein. 
     The camera modules  103   a ,  103   b  . . .  103   n  in the camera array  101  may form a daisy chain in which the camera modules  103   a ,  103   b  . . .  103   n  are connected in sequence. For example, camera module  103   a  is connected to camera module  103   b , which is connected to camera module  103   n , which completes the ring by being connected to camera module  103   a . As described below in more detail, the camera modules  103   a ,  103   b  . . .  103   n  in the camera array  101  are synchronized through the daisy chain. One camera module  103  (e.g., the first camera module  103   a ) in the daisy chain may be configured as a master camera module that allows the camera array  101  to act as one entity by controlling clock signals for other camera modules in the camera array  101 . The clock signals may be used to synchronize operations of the camera modules  103  in the camera array  101 . The master camera module includes a switch for controlling operations of the master camera module as well as operations of other camera modules  103  in the same camera array  101 . For example, as illustrated in  FIG. 1 , the camera module  103   a  is a master camera module including the switch  117  for controlling operations of the camera modules in the camera array  101 . In another embodiment, the camera modules perform bidirectional communication. 
     The master camera module  103   a  is connected to the camera module  103   b  via a signal line  114  for controlling a start operation or a stop operation of the camera module  103   b . For example, when the camera module  103   a  starts to record video data, a clock signal may be transmitted to the camera module  103   b  via the signal line  114 , causing the camera module  103   a  and the camera module  103   b  to start recording video data at the same time, respectively. When the camera module  103   a  stops recording video data, no clock signal is transmitted to the camera module  103   b , causing the camera module  103   a  and the camera module  103   b  to stop recording video data at the same time, respectively. 
     In one embodiment, the master camera module  103   a  communicates with camera module  103   b  directly via signal line  114 . In another embodiment, the master camera module  103   a  communicates with a connection hub  123  that is connected to a client device  127 , such as a laptop, which communicates the instructions back through the connection hub  123  to the camera module  103   b.    
     The camera module  103   b  is connected to a next camera module  103  in the daisy chain via a signal line  116  for supplying a clock signal from the camera module  103   b  to the next camera module  103 , so that operations of the next camera module  103  is synchronized with the camera module  103   b  by the clock signal. The camera module  103   n  is connected to a preceding camera module  103  in the daisy chain via a signal line  118  for obtaining a clock signal from the preceding camera module  103 , so that operation of the camera module  103   n  is synchronized with the preceding camera module  103  by the clock signal. 
     As a result, operations (e.g., the start operations, the stop operations) of the camera modules  103   a ,  103   b  . . .  103   n  in the camera array  101  are synchronized, and the image frames in the respective video data captured by the camera modules  103   a ,  103   b  . . .  103   n  are also synchronized. An initiation of a start operation (or a stop operation) in the master camera module  103   a  may simultaneously cause an initiation of a start operation (or a stop operation) of all the other camera modules  103  in the camera array  101 . Thus, the daisy chain formed by the camera modules  103   a ,  103   b  . . .  103   b  may be configured to synchronize start operations and stop operations of the camera modules  103   a ,  103   b  . . .  103   n , causing image frames captured by the camera modules  103   a ,  103   b  . . .  103   n  to be synchronized. The clock signals in the camera modules  103   a ,  103   b  . . .  103   n  may have a frequency of 60 Hz so that the camera modules  103   a ,  103   b  . . .  103   n  in the camera array  101  capture  60  image frames per second, respectively. 
     In some embodiments, an overall status indicator  121  may be connected to one of the camera modules  103  to indicate a status of at least one of the camera modules  103  or an overall status of the camera array  101 . This may also be referred to as heartbeat monitoring. For example, the overall status indicator  121  may be connected to the camera module  103   n  via a signal line  120 . A clock signal may be supplied to the overall status indicator  121  from the camera module  103   n . An overall status of the camera array  101  may be one of a normal status and a faulty status. For example, if all the camera modules  103  in the camera array  101  are fault-free, the overall status indicator  121  indicates a normal status for the camera array  101 . 
     However, if a fault occurs to at least one of the camera modules  103  in the camera array  101 , the overall status indicator  121  indicates a faulty status for the camera array  101 . For example, assume that the camera module  103   b  malfunctioned because it overheated or the memory card was full. The status indicator  119   b  in the camera module  103   b  may indicate a faulty status for the camera module  103   b , and the overall status indicator  121  may indicate an overall faulty status for the camera array  101 . By using the combination of the status indicators  119  and the overall status indicator  121 , the overall status of the camera array  101  and the individual status of the camera modules  103  may be monitored at any time. In some embodiments, the overall status indicator  121  and the individual status indicators  119  are part of a single display. 
     In some embodiments, the overall status indicator  121  performs enumeration. For example, the overall status indicator  121  counts the number of camera modules  103  that are available in the camera array  101 . 
     The camera modules  103  may be coupled to the connection hub  123 . For example, the camera module  103   a  is communicatively coupled to the connection hub  123  via a signal line  102 . The camera module  103   b  is communicatively coupled to the connection hub  123  via a signal line  104 . The camera module  103   n  is communicatively coupled to the connection hub  123  via a signal line  106 . Each of the signal lines  102 ,  104 , and  106  may represent a wired connection (e.g., a USB cable, an Ethernet cable, a HDMI cable, a RCA cable, Firewire, CameraLink, Thunderbolt or custom bus to transmit image data) or a wireless connection (e.g., wireless fidelity (Wi-Fi), Bluetooth, etc.). 
     The connection hub  123  may receive and aggregate streams of raw video data describing image frames from the respective camera modules  103 . The raw video data may be compressed. In some embodiments, the connection hub  123  includes a memory card or other non-transitory memory where the raw video data is stored. The connection hub  123  may then transfer the raw video data to the client device  127 . In some examples, the connection hub  123  may be a USB hub. In some embodiments, the raw video data is streamed through the connection hub to the client device  127 . In other examples, a user may manually remove the memory card from the hub  123  and extract the raw video data from the memory card to the client device  127 . 
     In some embodiments, the connection hub  123  includes one or more batteries  125  for supplying power to the camera modules  103  in the camera array  101 . Alternatively or additionally, one or more batteries  125  may be coupled to the connection hub  123  for providing power to the camera modules  103 . 
     The client device  127  may be a processor-based computing device. For example, the client device  127  may be a personal computer, laptop, tablet computing device, smartphone, set top box, network-enabled television or any other processor based computing device. In the illustrated embodiment, the client device  127  is coupled to the connection hub  123  via a signal line  108 . In some embodiments, the client device  127  includes network functionality and is communicatively coupled to the network  105  via a signal line  110 . The client device  127  may be configured to transmit data to the server  129  or receive data from the server  129  via the network  105 . In some embodiments, the client device  127  includes an aggregation system  131  for aggregating raw video data captured by the camera modules  103  to form 3D video data. Alternatively or additionally, the aggregation system  131  may be operable on the server  129 . 
     The aggregation system  131  may include a set of code and routines that, when executed by a processor, aggregate raw video data (e.g., image frames) received from the camera modules  103  to form 3D video data. The aggregation system  131  may be configured to process the raw video data to generate a compressed stream of 3D video data. In some embodiments, the compressed stream of 3D video may include one or more packets. The 3D video data may be configured for playback on a VR display or another suitable display. The 3D video data may describe a stereoscopic panorama of a scene. 
     As described below with reference to  FIG. 2 , the aggregation system  131  includes a video and audio module  208 . The video and audio module  208  may generate the 3D video data based on raw video data received from the camera modules  103  in the camera array  101 . The camera array  101  may include multiple camera modules  103  to capture video data or images of a scene from multiple directions or views, roughly covering an entire 360 degree sphere in some embodiments. The various views provide enough view disparity for the video and audio module  208  to generate and render stereoscopic images. In these and other embodiments, the video and audio module  208  may include a stitching algorithm for stitching images together to form a 3D panorama described by the 3D video data. For example, the video and audio module  208  may stitch the video from multiple cameras into two large-format, panoramic video streams for left and right eye viewing. 
     In some embodiments, the aggregation system  131  includes code and routines configured to filter the video data to improve its quality. The aggregation system  131  may also include code and routines to intentionally change the appearance of the video with a video effect. The aggregation system  131  is described in more detail below with reference to  FIG. 2 . In some embodiments, the aggregation system  131  includes algorithms for processing sound from the microphone associated with the camera array  101  and/or the microphones associated with the camera modules  103  to generate 3D audio data. 
     The server  129  may be a hardware server that includes a processor, a memory, and network communication capabilities. In the illustrated implementation, the server  129  is coupled to the network  105  via a signal line  112 . The server  129  sends and receives data to and from one or more of the other entities of system  100  via the network  105 . For example, the server  129  receives 3D video data (or compressed 3D video data) from the client device  127  and stores the 3D video data in a storage associated with the server  129 . In some embodiments, the server  129  includes the aggregation system  131  for receiving raw video data from the client device  127  and aggregating the raw video data to create 3D video data. 
     The network  105  may be a conventional type, wired or wireless, and may have numerous different configurations including a star configuration, token ring configuration or other configurations. Furthermore, the network  105  may include a local area network (LAN), a wide area network (WAN) (e.g., the Internet), or other interconnected data paths across which multiple devices may communicate. In some embodiments, the network  105  may be a peer-to-peer network. The network  105  may also be coupled to or include portions of a telecommunications network for sending data in a variety of different communication protocols. In some embodiments, the network  105  may include Bluetooth communication networks or a cellular communications network for sending and receiving data including via short messaging service (SMS), multimedia messaging service (MMS), hypertext transfer protocol (HTTP), direct data connection, WAP, email, etc. 
     In some embodiments, the system  100  may additionally include a viewing system (not shown). The viewing system decodes and renders the video on a VR display, adjusting the output as a user changes head orientation. The viewing system may include or use a computer to decode and render the video onto the Oculus Rift VR display or other suitable VR display. 
     Referring now to  FIG. 2 , an example of the aggregation system  131  is illustrated in accordance with at least one embodiment described herein.  FIG. 2  is a block diagram of a computing device  200  that includes the aggregation system  131 , a memory  237 , a processor  235 , a communication unit  245 , and a storage device  241 . The components of the computing device  200  are communicatively coupled by a bus  220 . In some embodiments, the computing device  200  may be one of a client device  127 , a server  129 , or another computing device. 
     The processor  235  may include an arithmetic logic unit, a microprocessor, a general purpose controller or some other processor array to perform computations and provide electronic display signals to a display device. The processor  235  is coupled to the bus  220  for communication with the other components via a signal line  238 . The processor  235  may process data signals and may include various computing architectures including a complex instruction set computer (CISC) architecture, a reduced instruction set computer (RISC) architecture, or an architecture implementing a combination of instruction sets. Although  FIG. 2  includes a single processor  235 , multiple processors may be included. Other processors, operating systems, sensors, displays and physical configurations may be possible. 
     The memory  237  includes a non-transitory memory that stores data for providing the functionality described herein. The memory  237  may be a dynamic random access memory (DRAM) device, a static random access memory (SRAM) device, flash memory or some other memory devices. In some embodiments, the memory  237  also includes a non-volatile memory or similar permanent storage device and media including a hard disk drive, a floppy disk drive, a CD-ROM device, a DVD-ROM device, a DVD-RAM device, a DVD-RW device, a flash memory device, or some other mass storage device for storing information on a more permanent basis. The memory  237  may store the code, routines and data necessary for the aggregation system  131  to provide its functionality. The memory  237  is coupled to the bus  220  via a signal line  244 . 
     The communication unit  245  may transmit data to any of the entities that comprise the system  100  depicted in  FIG. 1 . Similarly, the communication unit  245  may receive data from any of the entities that comprise the system  100  depicted in  FIG. 1 . The communication unit  245  is coupled to the bus  220  via a signal line  246 . In some embodiments, the communication unit  245  includes a port for direct physical connection to a network, such as a network  105  of  FIG. 1  or to another communication channel. For example, the communication unit  245  may include a port such as a USB, SD, RJ45 or similar port for wired communication with a client device. In some embodiments, the communication unit  245  includes a wireless transceiver for exchanging data with the client device or other communication channels using one or more wireless communication methods, including IEEE 802.11, IEEE 802.16, BLUETOOTH® or another suitable wireless communication method. 
     In some embodiments, the communication unit  245  includes a cellular communications transceiver for sending and receiving data over a cellular communications network including via short messaging service (SMS), multimedia messaging service (MMS), hypertext transfer protocol (HTTP), direct data connection, WAP, e-mail or another suitable type of electronic communication. In some embodiments, the communication unit  245  includes a wired port and a wireless transceiver. The communication unit  245  also provides other conventional connections to a network for distribution of data using standard network protocols including TCP/IP, HTTP, HTTPS and SMTP, etc. 
     The storage device  241  can be a non-transitory storage medium that stores data for providing the functionality described herein. The storage device  241  may be a dynamic random access memory (DRAM) device, a static random access memory (SRAM) device, flash memory, or some other memory devices. In some embodiments, the storage device  241  also includes a non-volatile memory or similar permanent storage device and media including a hard disk drive, a floppy disk drive, a CD-ROM device, a DVD-ROM device, a DVD-RAM device, a DVD-RW device, a flash memory device, or some other mass storage device for storing information on a more permanent basis. The storage device  241  is communicatively coupled to the bus  220  via a signal line  242 . In some embodiments, the storage device  241  may store data that was temporarily stored in the memory  237 . 
     In the implementation illustrated in  FIG. 2 , the aggregation system  131  includes a communication module  202 , a calibration module  204 , a fault detection module  206 , a video and audio module  208 , a correction module  210 , an access module  212 , and a user interface module  214 . These components of the aggregation system  131  are communicatively coupled to each other via the bus  220 . 
     The communication module  202  can be software including routines for handling communications between the aggregation system  131  and other components of the computing device  200 . In some embodiments, the communication module  202  can be a set of instructions executable by the processor  235  to provide the functionality described below for handling communications between the aggregation system  131  and other components of the computing device  200 . In some embodiments, the communication module  202  can be stored in the memory  237  of the computing device  200  and can be accessible and executable by the processor  235 . The communication module  202  may be adapted for cooperation and communication with the processor  235  and other components of the computing device  200  via a signal line  222 . 
     The communication module  202  sends and receives data, via the communication unit  245 , to and from one or more of the connection hub  123 , the client device  127 , and the server  129  depending upon where the aggregation system  131  may be stored. For example, the communication module  202  receives, via the communication unit  245 , raw video data from the connection hub  123  and sends the raw video data to the video and audio module  208 . In another example, the communication module  202  receives instructions from the video and audio module  208  for starting and stopping the camera modules  103  that the communication module  202  transmits to the switch  117 . 
     In some embodiments, the communication module  202  receives data from components of the aggregation system  131  and stores the data in one or more of the storage device  241  and the memory  237 . In some embodiments, the communication module  202  retrieves data from the storage device  241  or the memory  237  and sends the data to one or more components of the aggregation system  131 . In some embodiments, the communication module  202  may handle communications between components of the aggregation system  131 . For example, the communication module  202  receives 3D video data after color correction from the correction module  210  and sends the 3D video data to the access module  212 . 
     The calibration module  204  can be software including routines for calibrating the camera array  101 . In some embodiments, the calibration module  204  can be a set of instructions executable by the processor  235  to provide the functionality described below for calibrating the camera array  101 . In some embodiments, the calibration module  204  can be stored in the memory  237  of the computing device  200  and can be accessible and executable by the processor  235 . The calibration module  204  may be adapted for cooperation and communication with the processor  235  and other components of the computing device  200  via a signal line  224 . 
     In some embodiments, the calibration module  204  may be configured to identify a device identifier for each camera module  103  in the camera array  101  and perform geometric calibration to identify a relative position of each camera module  103  in the camera array  101 . The device identifier may include a device or lens serial number that is part of a video file. The calibration module  204  performs geometric calibration to correct for slight variations due to mechanical tolerances in production and during mounting. For example, the camera modules  103  may include slight variations in camera orientation due to human error occurring when installing or manufacturing the camera modules  115  in the camera array  101 . In some embodiments, the calibration module  204  performs geometric calibration by receiving information about recorded calibrated target images using a special rig and adjusts values accordingly. In some other embodiments, the calibration module  204  performs geometric calibration after the video is recorded using the video content. 
     In some embodiments, the calibration module  204  may receive inputs about external markers (e.g. the coordinates of external markers) and calibrate the camera modules  103  based on the inputs. The calibration module  204  may analyze the images captured by each camera module  103 , determine the errors present in the images and determine calibration factors used to calibrate the corresponding camera module  103 . The calibration factors may include data used to automatically modify the images captured by the corresponding camera module  115  so that the images include fewer errors. In some embodiments, the calibration factors are applied to the images by the calibration module  204  so that the images include no errors that are detectable during user consumption of the 3D video content. For example, the calibration module  204  may detect the deficiencies in the images caused by the calibration errors. The calibration module  204  may determine one or more pixels associated with the deficiencies. The calibration module  204  may determine the pixel values associated with these pixels and then modify the pixel values using the calibration factors so that the deficiencies are corrected. 
     In some embodiments, the calibration module  204  receives a configuration files with information about camera lens distortion that is determined by an external calibration box. 
     In some embodiments, the calibration factors may also be provided to an administrator of the camera array  101  who uses the calibration factors to manually correct the calibration deficiencies of the camera modules  103  in the camera array  101 . In some other embodiments, position and rotational offset are saved for each camera module  103  in a storage file. 
     The fault detection module  206  can be software including routines for detecting a faulty camera module  103  in the camera array  101 . In some embodiments, the fault detection module  206  can be a set of instructions executable by the processor  235  to provide the functionality described below for detecting a faulty camera module  103  in the camera array  101 . In some embodiments, the fault detection module  206  can be stored in the memory  237  of the computing device  200  and can be accessible and executable by the processor  235 . The fault detection module  206  may be adapted for cooperation and communication with the processor  235  and other components of the computing device  200  via a signal line  226 . 
     The fault detection module  206  monitors an overall status of the camera array  101  using the overall status indicator  121 . The overall status indicator  121  may indicate the overall status of the camera array  101  as a normal status if all the camera modules  103  function properly. Alternatively, the overall status indicator  121  may indicate the overall status of the camera array  101  as a faulty status if a fault occurs to at least one camera module  103 . If the overall status indicates a fault has occurred, the fault detection module  206  determines respective individual statuses of the camera modules  103  using the respective status indicators  119 . The fault detection module  206  determines a status indicator  119  associated with a faulty status. The fault detection module  206  determines a camera module  103  associated with the status indicator  119  that has the faulty status as a faulty camera module. For example, if the memory  109   b  in the camera module  103   b  is full, both the overall status indicator  121  and the status indicator  119   b  may indicate a faulty status. Thus, the fault detection module  206  determines the camera module  103   b  as a faulty camera module. If the fault detection module  206  determines an absence of faults, the video and audio module  208  may instruct the camera modules  103  to begin recording. 
     The video and audio module  208  can be software including routines for generating 3D video, synthesizing audio data, and generating a stream of 3D video and audio data. In some embodiments, the video and audio module  208  can be a set of instructions executable by the processor  235  to provide the functionality described below for generating a stream of 3D video and audio data. In some embodiments, the video and audio module  208  can be stored in the memory  237  of the computing device  200  and can be accessible and executable by the processor  235 . The video and audio module  208  may be adapted for cooperation and communication with the processor  235  and other components of the computing device  200  via a signal line  280 . 
     In some embodiments, the video and audio module  208  receives an indication from the fault detection module  206  of an absence of faults in the camera array  101 . The video and audio module  208  then instructs the master camera module to start recording. The video and audio module  208  receives raw video data describing image frames from the camera modules  103 . At some point, the video and audio module  208  initiates a stop operation in the master camera module. For example, the video and audio module  208  initiates the stop operation in response to a manual input from a user, an expiration of time according to the clock, etc. 
     The video and audio module  208  may generate the 3D video data based on the raw video data received from the camera modules  103 . For example, the video and audio module  208  may stitch the image frames together based on a frame sync signal in the video and by using audio tracks from a mounted microphone and/or microphones in each camera module  103  to time-align audio tracks from the microphones. In some embodiments, the stitching is also based on the geometric calibration. The video and audio module  208  may include a stitching algorithm for stitching images captured by the camera modules  103  together to form a 3D panorama described by the 3D video data. For example, the video module  208  may stitch the raw video data from multiple cameras into two large-format, panoramic video streams for left and right eye viewing. 
     The video and audio module  208  receives audio from multiple microphones and synthesizes audio based on timing associated with the audio tracks to generate 3D audio data that changes based on the user&#39;s head position. In some embodiments, the video and audio module  208  mixes audio from a 3D ambisonic microphone with spot microphones to create fully spatialized sound effects. The video and audio module  208  generates binaural audio. In some embodiments, the video and audio module  208  uses a head-related transfer function to generate real-time binaural audio. In some embodiments, the audio is compatible with Dolby® Atmos™. In some embodiments, the video and audio module  208  generates a stream of 3D and audio data for displaying panoramic images. 
     In some embodiments, the video and audio module  208  may construct a stereoscopic panorama using images from multiple views from different directions. For example, the camera array  101  includes multiple camera modules  103  with multiple lenses  113  arranged around all three hundred and sixty degrees of a sphere. The lenses  113  each point in different directions. Because the camera modules  103  are arranged around three hundred and sixty degrees of a sphere and taking images of the scene from multiple viewpoints, the video data includes multiple views from different directions. The resulting panoramic image is a spherical representation of the scene. Each pixel in the panorama may represent a view in a slightly different direction relative to neighboring pixels. 
     In some embodiments, the video and audio module  208  generates the stereoscopic panorama based on the location of the camera modules  103 . For example, where the camera modules  103  are daisy chained to each other and the master camera module instructs the other camera modules  103  to start recording, the video and audio module  208  uses the timestamp associated with the recordings to construct the stereoscopic panorama. 
     The correction module  210  can be software including routines for detecting and correction exposure or color deficiencies in the images captured by the camera modules  103 . In some embodiments, the correction module  210  can be a set of instructions executable by the processor  235  to provide the functionality described below for detecting and correction exposure or color deficiencies in the images captured by the camera modules  103 . In some embodiments, the correction module  210  can be stored in the memory  237  of the computing device  200  and can be accessible and executable by the processor  235 . The correction module  210  may be adapted for cooperation and communication with the processor  235  and other components of the computing device  200  via a signal line  228 . 
     For example, because the lenses  113  of the camera modules  103  are pointing in different directions, the lighting and color conditions may vary dramatically. If all the lenses  113  of the camera modules  103  are configured identically some images may be under or over exposed. The correction module  210  may detect the exposure or color deficiencies. The correction module  210  may determine one or more pixels associated with the exposure or color deficiencies. The correction module  210  may determine the pixel values associated with these pixels and then modify the pixel values so that the exposure or color deficiencies are not detectable by a user during consumption of the 3D video content using a client device. In some embodiments, the camera modules  103  have overlapping fields of view and, exposure or color deficiencies in the images captured by the camera modules  103  can be corrected or auto-corrected using this overlap. In other embodiments, exposure or color deficiencies in the images captured by the camera modules  103  can be corrected using calibration based on color charts of known values. 
     The access module  212  can be software including routines for providing access to 3D video data. In some embodiments, the access module  212  can be a set of instructions executable by the processor  235  to provide the functionality described below for providing access to 3D video data. In some embodiments, the access module  212  can be stored in the memory  237  of the computing device  200  and can be accessible and executable by the processor  235 . The access module  212  may be adapted for cooperation and communication with the processor  235  and other components of the computing device  200  via a signal line  230 . 
     In some embodiments, the access module  212  stores the 3D video data received from the video and audio module  208  or the correction module  210  in the storage device  241 . The access module  212  allows a user to access the 3D video data in response to receiving an access request from the user. In some embodiments, the access module  212  sends the 3D video data to a viewing system configured for viewing the 3D data, allowing a user to view the 3D video data from the viewing system. In some other embodiments, the access module  212  sends the 3D video data to the server  129 , allowing users to access the 3D video data from the server  129  via the network  105 . 
     The user interface module  214  can be software including routines for generating graphical data for providing user interfaces. In some implementations, the user interface module  214  can be a set of instructions executable by the processor  235  to provide the functionality described below for generating graphical data for providing user interfaces. The user interface module  214  may be adapted for cooperation and communication with the processor  235  and other components of the computing device  200  via a signal line  232 . 
     In some embodiments, the user interface module  214  generates a user interface for the user of the client device  127  to specify when to start a recording operation and when to stop a recording operation. In some embodiments, the user interface includes information about memory management, white balance, color temperature, gain, ISO, filters, clock, file name, wireless fidelity (WiFi), temperature, power consumption, serial numbers, a preview of the video stream, and the video being recorded by one or more of the camera modules  103 . The user may be able to modify some of the settings, such as the ISO, color temperature, white balance, filters, clock, file name, etc. In some other embodiments, the user interface module  214  generates information about the overall status indicator  121  and the individual status indicators  119 . For example, the user interface module  214  generates a notification for the user about which of the camera modules  103  is experiencing a problem. In some embodiments, the notification includes specific information about the problem, such as an overheated camera, full disk space, etc. 
     Referring now to  FIG. 3A , an example system  300  comprising a camera array  101  and connection hub  123  are illustrated. In this example, the camera array  101  comprises a microphone array  301  and a spherical body for the camera modules  302 . The camera modules  302  are illustrated as having a disc containing the lens  303  that couples to the housing  304 . The housing includes several slits  305  for venting heat from inside the camera array  101 . The camera array  101  is coupled to a connection hub  306  that includes multiple cables for transmitting the raw video data to a client device  127  (not shown). 
       FIG. 3B  illustrates an example housing  350  that is designed to look like a spherical honeycomb. The housing  350  includes apertures for the camera modules  103 . In this example, the aperture includes disc space for the lens and rectangular housing with substantially equidistant sides for the body of the camera modules  103 . The rectangular space allows camera modules  103  to be inserted into the rectangular space, removed, rotated 90 degrees, and reinserted into the rectangular space. In some embodiments, the camera modules  103  are physically mounted in the housing with screws to avoid extreme positional changes (e.g. camera rig geometry changes) over time. 
       FIG. 3C  illustrates an example microphone array  370 . In this example the microphone array  370  includes four soundfield microphones  371  positioned in four different directions to capture audio for generating 3D audio. The positioning of the microphones allows for recording and reconstructing sonic directionality so that the audio can be adjusted in response to a user moving his or her head during the 3D experience. The microphone unit  370  also includes a mount  372  for mounting the microphone unit  370  to the camera array  101 . The mount design is advantageous over a boom microphone, which might interfere with the field of view of the lenses. 
     Referring now to  FIG. 4 , an example of a method  400  for providing video data using the camera array  101  is described, in accordance with at least one embodiment described herein. The method  400  is described with respect to  FIGS. 1 and 2 . Although illustrated as discrete blocks, various blocks may be divided into additional blocks, combined into fewer blocks, or eliminated, depending on the desired implementation. 
     One skilled in the art will appreciate that, for this and other processes and methods disclosed herein, the functions performed in the processes and methods may be implemented in differing order. Furthermore, the outlined steps and operations are only provided as examples, and some of the steps and operations may be optional, combined into fewer steps and operations, or expanded into additional steps and operations without detracting from the essence of the disclosed embodiments. 
     In some embodiments, the method  400  is performed by an aggregation system  131  comprising a calibration module  204 , a fault detection module  206  and a video and audio module  208 . The calibration module  204  identifies  402  a device identifier and a position of each camera module  103  in a camera array  101 , the camera modules  103  including a master camera. The fault detection module  206  confirms  404  an absence of faults in the camera modules  103 . In some embodiments, the fault detection module  206  uses a threshold number of faults to determine whether to proceed. For example, the fault detection module  206  will proceed if two or fewer camera modules  103  are malfunctioning unless the camera modules  103  are next to each other. The fault detection module  206  transmits a confirmation to the video and audio module  208  that there are an absence of faults. 
     The video and audio module  208  initiates  406  a start operation in the master camera, the master camera instructing the other camera modules  103  to start recording. For example, the master camera includes a switch  117  that instructs the other camera modules  103  in the daisy chain configuration to begin recording. The video and audio module  208  may also provide a timestamp for the video data and instruct the camera modules  103  to use a particular filename. 
     The video and audio module  208  receives  408  video data comprising image frames from the camera modules  103 . The video and audio module  208  stitches  410  the image frames together based on the video data, generates  412  3D video, synthesizes  414  audio data, and generates  416  a stream of the 3D video and the audio data for displaying panoramic images. In some embodiments, the video and audio module  208  stitches the image frames together from each of the camera modules  103  based on a timestamp associated with each of the frames. 
     One skilled in the art will appreciate that, for this and other processes and methods disclosed herein, the functions performed in the processes and methods may be implemented in differing order. Furthermore, the outlined steps and operations are only provided as examples, and some of the steps and operations may be optional, combined into fewer steps and operations, or expanded into additional steps and operations without detracting from the essence of the disclosed embodiments. 
       FIG. 4  illustrates an example method  400  for detecting a faulty camera module in accordance with at least one embodiment described herein. The method  400  is described with respect to  FIGS. 1 and 2 . Although illustrated as discrete blocks, various blocks may be divided into additional blocks, combined into fewer blocks, or eliminated, depending on the desired implementation. 
     In some embodiments, the method  400  is performed by an aggregation system  131  comprising a calibration module  204 , a fault detection module  206  and a video and audio module  208 . The calibration module  204  identifies  502  a device identifier for each camera module  103  in a camera array  101 , the camera modules  103  including a master camera. The fault detection module  206  determines  504  an absence of faults in the camera modules  103 . The fault detection module  206  transmits the determination to the video and audio module  208 . 
     The video and audio module  208  initiates  506  a start operation in the master camera, the master camera instructing the camera modules  103  to start recording. The video and audio module  208  receives  508  video data describing image frames from the camera modules. The video and audio module  208  initiates  510  a stop operation in the master camera, the master camera instructing the camera modules to stop recording. 
     The video and audio module  208  then stitches  512  the image frames together based on a relative position of each camera module  103 . In some embodiments, the relative position is determined from an independently performed geometric calibration. In other embodiments, the calibration module  204  performs geometric calibration after the video is recorded using the video content. For example, the video and audio module  208  uses the relative position of each camera module  103  in combination with a stitching algorithm to perform the stitching. The video and audio module  208  generates  514  3D video data. The video and audio module  208  synthesizes  516  audio data. For example, the video and audio module  208  uses the audio from four different microphones to create audio that is adjusted depending on the angle of the user&#39;s head during the virtual reality experience. The video and audio module  208  generates  518  a stream of 3D video and audio data for displaying panoramic images. 
     The embodiments described herein may include the use of a special purpose or general-purpose computer including various computer hardware or software modules, as discussed in greater detail below. 
     Embodiments described herein may be implemented using computer-readable media for carrying or having computer-executable instructions or data structures stored thereon. Such computer-readable media may be any available media that may be accessed by a general purpose or special purpose computer. By way of example, and not limitation, such computer-readable media may include tangible computer-readable storage media including Random Access Memory (RAM), Read-Only Memory (ROM), Electrically Erasable Programmable Read-Only Memory (EEPROM), Compact Disc Read-Only Memory (CD-ROM) or other optical disk storage, magnetic disk storage or other magnetic storage devices, flash memory devices (e.g., solid state memory devices), or any other storage medium which may be used to carry or store desired program code in the form of computer-executable instructions or data structures and which may be accessed by a general purpose or special purpose computer. Combinations of the above may also be included within the scope of computer-readable media. 
     Computer-executable instructions comprise, for example, instructions and data which cause a general purpose computer, special purpose computer, or special purpose processing device (e.g., one or more processors) to perform a certain function or group of functions. Although the subject matter has been described in language specific to structural features and/or methodological acts, it is to be understood that the subject matter defined in the appended claims is not necessarily limited to the specific features or acts described above. Rather, the specific features and acts described above are disclosed as example forms of implementing the claims. 
     As used herein, the terms “module” or “component” may refer to specific hardware embodiments configured to perform the operations of the module or component and/or software objects or software routines that may be stored on and/or executed by general purpose hardware (e.g., computer-readable media, processing devices, etc.) of the computing system. In some embodiments, the different components, modules, engines, and services described herein may be implemented as objects or processes that execute on the computing system (e.g., as separate threads). While some of the system and methods described herein are generally described as being implemented in software (stored on and/or executed by general purpose hardware), specific hardware embodiments or a combination of software and specific hardware embodiments are also possible and contemplated. In this description, a “computing entity” may be any computing system as previously defined herein, or any module or combination of modulates running on a computing system. As described in U.S. Provisional Patent Application No. 62/008,215, which application is incorporated by reference herein as described above, embodiments of one or more of the modules may use the concept of a robust affine model. A robust affine model may be a set of linear weights to transform one set of color values into another. Affine color models may be expressed in their most general form as a 3×4 matrix that transforms the original pixel color values into corrected color values. It may be done in any color space (RGB, YUV, etc.). In some examples, the robust affine model may assume that data contains an affine trend plus outliers and therefor seek to downweight the outliers during the fit. 
     All examples and conditional language recited herein are intended for pedagogical objects to aid the reader in understanding the invention and the concepts contributed by the inventor to furthering the art, and are to be construed as being without limitation to such specifically recited examples and conditions. Although embodiments of the inventions have been described in detail, it may be understood that the various changes, substitutions, and alterations could be made hereto without departing from the spirit and scope of the invention.