A computer-implemented method comprising: upscaling (304,604) a low resolution image with a first resolution that depicts particular content to a second resolution greater than the first resolution to create an upscaled image; creating (306,606), using the upscaled image, multiple patches of the upscaled image that each include one or more pixels from the upscaled image, each pixel in the upscaled image included in a patch from the multiple patches; assigning (306,610) each patch in the multiple patches to a bucket from multiple buckets using a value of a property of the respective patch, each of the buckets from the multiple buckets having a different value of the property; determining, for each bucket in the multiple buckets, and from a plurality of filters previously generated for patches of pixels of an upscaled low resolution image by an upscaling training system from upscaled low resolution images and high resolution output images, a filter to apply to each of the patches in the respective bucket to create a corresponding filtered patch; and applying, for each bucket in the multiple buckets, the determined filter to each of the patches in the bucket to create the corresponding filtered patch, a combination of all of the filtered patches representing a higher resolution image of the particular content with a third resolution greater than the first resolution; wherein assigning each patch in the multiple patches to a bucket from the multiple buckets comprises: for each patch in the multiple patches: determining a value of the property of the respective patch using the data for the respective patch and data for at least one patch adjacent to the respective patch; and in response to determining the value of the property, selecting, as the bucket to which the respective patch will be assigned, the bucket with the value of the property that was determined for the respective patch. upscaling (304,604) a low resolution image with a first resolution that depicts particular content to a second resolution greater than the first resolution to create an upscaled image; creating (306,606), using the upscaled image, multiple patches of the upscaled image that each include one or more pixels from the upscaled image, each pixel in the upscaled image included in a patch from the multiple patches; assigning (306,610) each patch in the multiple patches to a bucket from multiple buckets using a value of a property of the respective patch, each of the buckets from the multiple buckets having a different value of the property; determining, for each bucket in the multiple buckets, and from a plurality of filters previously generated for patches of pixels of an upscaled low resolution image by an upscaling training system from upscaled low resolution images and high resolution output images, a filter to apply to each of the patches in the respective bucket to create a corresponding filtered patch; and applying, for each bucket in the multiple buckets, the determined filter to each of the patches in the bucket to create the corresponding filtered patch, a combination of all of the filtered patches representing a higher resolution image of the particular content with a third resolution greater than the first resolution; wherein assigning each patch in the multiple patches to a bucket from the multiple buckets comprises: for each patch in the multiple patches: determining a value of the property of the respective patch using the data for the respective patch and data for at least one patch adjacent to the respective patch; and in response to determining the value of the property, selecting, as the bucket to which the respective patch will be assigned, the bucket with the value of the property that was determined for the respective patch. determining a value of the property of the respective patch using the data for the respective patch and data for at least one patch adjacent to the respective patch; and in response to determining the value of the property, selecting, as the bucket to which the respective patch will be assigned, the bucket with the value of the property that was determined for the respective patch.