A method for restoring a degraded tile of a degraded frame resulting from reconstruction of a source tile, the method comprising: for a scaling factor of at least some scaling factors: domain transform recursively filtering the degraded tile, using the scaling factor, to generate a respective restored tile, wherein domain transform recursively filtering the degraded tile comprises transforming the degraded tile from a pixel domain to a gradient domain; and determining a respective error for the respective restored tile with respect to the source tile, wherein the scaling factor is a function of a filter variance over a spatial domain of the degraded tile and a filter variance over a range of pixel values of the degraded tile, wherein the filter variance over the spatial domain controls a filter kernel size and the filter variance over the range of pixel values determines how strongly edges affect filtering operations, and wherein the at least some scaling factors are selected by fixing one of the filter variance over a spatial domain and the filter variance over a range of the pixel values of the degraded tile and varying the other; selecting an optimal scaling factor from the at least some scaling factors, the optimal scaling factor corresponding to a smallest respective error; and encoding, in an encoded bitstream, either: the optimal scaling factor, or the one of the filter variance over a spatial domain and the filter variance over a range of the pixel values that was not fixed corresponding to the optimal scaling factor; wherein domain transform recursively filtering the degraded tile comprises: for an iteration number of a predetermined number of iterations: determining row weights using the scaling factor and the iteration number; performing a recursive row filtering operation on rows of the degraded tile; determining column weights using the scaling factor and the iteration number; and performing a recursive column filtering operation on columns of the degraded tile. for a scaling factor of at least some scaling factors: domain transform recursively filtering the degraded tile, using the scaling factor, to generate a respective restored tile, wherein domain transform recursively filtering the degraded tile comprises transforming the degraded tile from a pixel domain to a gradient domain; and determining a respective error for the respective restored tile with respect to the source tile, domain transform recursively filtering the degraded tile, using the scaling factor, to generate a respective restored tile, wherein domain transform recursively filtering the degraded tile comprises transforming the degraded tile from a pixel domain to a gradient domain; and determining a respective error for the respective restored tile with respect to the source tile, wherein the scaling factor is a function of a filter variance over a spatial domain of the degraded tile and a filter variance over a range of pixel values of the degraded tile, wherein the filter variance over the spatial domain controls a filter kernel size and the filter variance over the range of pixel values determines how strongly edges affect filtering operations, and wherein the at least some scaling factors are selected by fixing one of the filter variance over a spatial domain and the filter variance over a range of the pixel values of the degraded tile and varying the other; selecting an optimal scaling factor from the at least some scaling factors, the optimal scaling factor corresponding to a smallest respective error; and encoding, in an encoded bitstream, either: the optimal scaling factor, or the one of the filter variance over a spatial domain and the filter variance over a range of the pixel values that was not fixed corresponding to the optimal scaling factor; the optimal scaling factor, or the one of the filter variance over a spatial domain and the filter variance over a range of the pixel values that was not fixed corresponding to the optimal scaling factor; wherein domain transform recursively filtering the degraded tile comprises: for an iteration number of a predetermined number of iterations: determining row weights using the scaling factor and the iteration number; performing a recursive row filtering operation on rows of the degraded tile; determining column weights using the scaling factor and the iteration number; and performing a recursive column filtering operation on columns of the degraded tile. determining row weights using the scaling factor and the iteration number; performing a recursive row filtering operation on rows of the degraded tile; determining column weights using the scaling factor and the iteration number; and performing a recursive column filtering operation on columns of the degraded tile.