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 retina to determine a location of an anatomical feature of the retina in the image by: receiving the image data; calculating, for each of a plurality of pixels of the received image data, a respective local orientation vector indicative of the orientation of any blood vessel present in the image at or adjacent 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 received image data, by: for each of the plurality of pixels, adding a respective value to an accumulator associated with a pixel of the received 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 determining the location of the anatomical feature in the image of the retina using the location of a pixel of the received image data which is associated with an accumulator having accumulated an accumulated value, which accumulated value is within a predetermined range of an extremum of the accumulated values in the accumulators. receiving the image data; calculating, for each of a plurality of pixels of the received image data, a respective local orientation vector indicative of the orientation of any blood vessel present in the image at or adjacent 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 received image data, by: for each of the plurality of pixels, adding a respective value to an accumulator associated with a pixel of the received 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 received 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 determining the location of the anatomical feature in the image of the retina using the location of a pixel of the received image data which is associated with an accumulator having accumulated an accumulated value, which accumulated value is within a predetermined range of an extremum of the accumulated values in the accumulators. <EOS>