1. A camera array, comprising: a plurality of cameras configured to capture images of a scene from different viewpoints, where at least one camera in the plurality of cameras includes a Bayer color filter pattern and captures image data in multiple color channels; a processor; and memory containing an image processing application; wherein the image processing application stored in memory directs the processor to: separately configure the imaging parameters for each of the plurality of cameras; read out image data from the plurality of cameras including a set of images captured from different viewpoints; store the image data in the memory; select a reference viewpoint relative to the viewpoints of the set of images captured from different viewpoints; normalize the set of images to increase the similarity of corresponding pixels within the set of images; determine depth estimates for pixel locations in an image from the reference viewpoint using at least a subset of the set of images, where a depth estimate for a given pixel location in the image from the reference viewpoint is determined by: identifying pixels in the at least a subset of the set of images that correspond to the given pixel location in the image from the reference viewpoint based upon expected disparity at a plurality of depths; in each of a plurality of color channels selected from the multiple color channels, comparing the similarity of the pixels that are identified as corresponding in the selected color channel at each of the plurality of depths; and selecting the depth from the plurality of depths at which the identified corresponding pixels in each of the plurality of color channels have the highest degree of similarity as a depth estimate for the given pixel location in the image from the reference viewpoint.