A computer-implemented method of producing a short-term cloud forecast to predict cloud occlusion of the sun comprising: in a cloud forecasting system, obtaining image data from a plurality of images of the sky captured by an image capture device; in a cloud segmentation processor, for each pixel in each image of the plurality of images of the sky, computing a cloud probability that the pixel is a cloud pixel; in a cloud motion estimation processor, comparing subsequent images of the plurality of images of the sky to calculate a global motion vector for a given image, the global motion vector indicative of a weighted pixel-wise motion field for the given image; in an uncertainty processor, calculating at least one uncertainty index representing a likelihood that a pixel in an image of the plurality of images that is identified as a cloud pixel will occlude a sun pixel of the image at a time in the future; and combining the cloud probabilities, the global motion vector and the at least one uncertainty index, in a sun occlusion prediction processor to produce a short-term cloud forecast based on the image data; wherein the calculating of a global motion vector comprises: obtaining a pixel-wise motion estimation field (F_x(x,y), F_y(x,y)) for each pixel; and weighting each pixel in the motion estimation field based on a likelihood that the pixel will represent a cloud which will occlude the sun in the short-term cloud forecast; and wherein weighting each pixel comprises: measuring an angle discrepancy between an estimated motion of the pixel and a vector from the pixel directed toward pixels in the sky images representing the sun; and assigning a larger weight to pixels having an estimated motion with a smaller angle discrepancy to the sun and assigning a smaller weight to pixels having an estimated motion with a larger angle discrepancy relative to the sun. in a cloud forecasting system, obtaining image data from a plurality of images of the sky captured by an image capture device; in a cloud segmentation processor, for each pixel in each image of the plurality of images of the sky, computing a cloud probability that the pixel is a cloud pixel; in a cloud motion estimation processor, comparing subsequent images of the plurality of images of the sky to calculate a global motion vector for a given image, the global motion vector indicative of a weighted pixel-wise motion field for the given image; in an uncertainty processor, calculating at least one uncertainty index representing a likelihood that a pixel in an image of the plurality of images that is identified as a cloud pixel will occlude a sun pixel of the image at a time in the future; and combining the cloud probabilities, the global motion vector and the at least one uncertainty index, in a sun occlusion prediction processor to produce a short-term cloud forecast based on the image data; wherein the calculating of a global motion vector comprises: obtaining a pixel-wise motion estimation field (F_x(x,y), F_y(x,y)) for each pixel; and weighting each pixel in the motion estimation field based on a likelihood that the pixel will represent a cloud which will occlude the sun in the short-term cloud forecast; and wherein weighting each pixel comprises: measuring an angle discrepancy between an estimated motion of the pixel and a vector from the pixel directed toward pixels in the sky images representing the sun; and assigning a larger weight to pixels having an estimated motion with a smaller angle discrepancy to the sun and assigning a smaller weight to pixels having an estimated motion with a larger angle discrepancy relative to the sun. measuring an angle discrepancy between an estimated motion of the pixel and a vector from the pixel directed toward pixels in the sky images representing the sun; and assigning a larger weight to pixels having an estimated motion with a smaller angle discrepancy to the sun and assigning a smaller weight to pixels having an estimated motion with a larger angle discrepancy relative to the sun.