A non-transitory computer-readable storage medium storing computer program instructions which, when executed by a processor, cause the processor to process image data defining an image of a vascular structure of temporal vascular arcades of a retina to estimate a location of the fovea of the retina in the image by: receiving the image data; transforming the received image data such that the vascular structure in the image defined by the transformed image data is more circular than the vascular structure in the image defined by the received image data; calculating, for each of a plurality of pixels of the transformed image data, a respective local orientation vector indicative of the orientation of any blood vessel present in the image at or adjacent to the pixel; calculating a normalised local orientation vector for each of the plurality of pixels by normalising the local orientation vector calculated for each of the pixels so that the magnitude of the normalised local orientation vector at each of the pixels takes a common predetermined value; operating on an array of accumulators, wherein each accumulator in the array is associated with a respective pixel of the transformed image, by: for each of the plurality of pixels, adding a respective value to an accumulator associated with a pixel of the transformed image data that is offset from the pixel of the plurality of pixels by the predetermined value in a predetermined direction relative to the direction of the local orientation vector at the pixel of the plurality of pixels; and smoothing the values in the accumulators; and estimating the location of the fovea in the image of the retina using the location of a pixel of the transformed image data which is associated with an accumulator having accumulated an accumulated value which is within a predetermined range of an extremum of the accumulated values in the accumulators. receiving the image data; transforming the received image data such that the vascular structure in the image defined by the transformed image data is more circular than the vascular structure in the image defined by the received image data; calculating, for each of a plurality of pixels of the transformed image data, a respective local orientation vector indicative of the orientation of any blood vessel present in the image at or adjacent to the pixel; calculating a normalised local orientation vector for each of the plurality of pixels by normalising the local orientation vector calculated for each of the pixels so that the magnitude of the normalised local orientation vector at each of the pixels takes a common predetermined value; operating on an array of accumulators, wherein each accumulator in the array is associated with a respective pixel of the transformed image, by: for each of the plurality of pixels, adding a respective value to an accumulator associated with a pixel of the transformed image data that is offset from the pixel of the plurality of pixels by the predetermined value in a predetermined direction relative to the direction of the local orientation vector at the pixel of the plurality of pixels; and smoothing the values in the accumulators; and for each of the plurality of pixels, adding a respective value to an accumulator associated with a pixel of the transformed image data that is offset from the pixel of the plurality of pixels by the predetermined value in a predetermined direction relative to the direction of the local orientation vector at the pixel of the plurality of pixels; and smoothing the values in the accumulators; and estimating the location of the fovea in the image of the retina using the location of a pixel of the transformed image data which is associated with an accumulator having accumulated an accumulated value which is within a predetermined range of an extremum of the accumulated values in the accumulators. <EOS>