1. A computer-implemented method comprising: receiving a forward kernel associated with a first pixel in an image, the forward kernel being centered on the first pixel and assigning forward weights to pixels located nearby the first pixel; specifying a backward kernel associated with a second pixel, located nearby the first pixel, based on an attribute of the image at the second pixel, the backward kernel being centered on the second pixel and assigning backward weights to pixels located nearby the second pixel; and producing a pixel value for the first pixel based upon a convolution weight of the second pixel, wherein the convolution weight is based on the backward kernel and the forward kernel.