function out = max_depth_of_field(ims) dims = ndims(ims); %gradients are black and white, so they will loose a dimension %gradients = xy_gradient(ims(:,:,:,1)); gradients = o_grad(ims(:,:,:,1)); %gradients = contrast_map(ims(:,:,:,1),12); size_ims = size(ims); for i = 2:size_ims(dims) %the + .075 * i is to bias towards images in the back %gradients = cat(dims, gradients, xy_gradient(ims(:,:,:,i))); gradients = cat(dims, gradients, o_grad(ims(:,:,:,i))); %gradients = cat(dims, gradients, contrast_map(ims(:,:,:,i),12)); end max_grads = max(gradients,[],dims); a_image_red = zeros(size_ims(1:2)); a_image_green = zeros(size_ims(1:2)); a_image_blue = zeros(size_ims(1:2)); for i = 2:size_ims(dims) a_image_red = a_image_red + ims(:,:,1,i) .* ((max_grads == gradients(:,:,i)) & (a_image_red == 0)); a_image_green = a_image_green+ ims(:,:,2,i) .* ((max_grads == gradients(:,:,i)) & (a_image_green == 0)); a_image_blue = a_image_blue + ims(:,:,3,i) .* (( max_grads == gradients(:,:,i) ) & (a_image_blue == 0)); end out = cat(3, a_image_red, a_image_green, a_image_blue);