1. A camera array, comprising: a plurality of cameras configured to capture images of a scene from different viewpoints in complementary occlusion zones around a reference viewpoint; a processor; and memory containing an image processing application; wherein the image processing application stored in memory directs the processor to: separately configure 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; normalize the set of images to increase the similarity of corresponding pixels within the set of images; determine initial depth estimates for pixel locations in an image from the reference viewpoint based upon the disparity at which corresponding pixels in the set of images have the highest degree of similarity; compare the similarity of the corresponding pixels in the set of images to detect mismatched pixels; when an initial depth estimate does not result in the detection of a mismatch between corresponding pixels in the set of images, selecting the initial depth estimate as the depth estimate for the pixel location in the image from the reference viewpoint; and when an initial depth estimate results in the detection of a mismatch between corresponding pixels in the set of images, updating the depth estimate for the pixel location in the image from the reference viewpoint by: determining a set of candidate depth estimates using a plurality of competing subsets of the set of images based upon disparities at which corresponding pixels in each of the plurality of competing subsets of images have the highest degree of similarity, where the competing subsets correspond to patterns of visibility within the scene; and selecting the candidate depth of the subset having the corresponding pixels with the highest degree of similarity as the updated depth estimate for the pixel location in the image from the reference viewpoint.