1. A method comprising: receiving an image comprising pixels located in the image, each pixel having a pixel value indicative of how the pixel is displayed in the image; determining a first subset of the pixels located in the image; determining a second subset of pixels located in the image, wherein at least one pixel in the first subset neighbors at least one pixel in the second subset; and for each pixel in the first subset: determining multiple overlapping patches within the image, the multiple patches containing the pixel, using an image enhancement algorithm to determine a respective patch value for each patch of the multiple overlapping patches, each patch value providing update information for updating the respective patch containing the pixel, identifying relevant patch values of the overlapping patches that provide information for updating the respective patch containing the pixel, and performing a first pixel-specific thread process by a processor to determine an aggregate patch value based on the relevant patch values; and performing a second pixel-specific thread process by the processor to update, based on the aggregate patch value for at least one pixel from the first subset, the pixel value for a neighboring pixel in the second subset.