A method of filtering noise for imaging, comprising: using a processor implementing a bilateral, BL, filter algorithm stored in a memory accessible by the processor or using BL filter hardware configured to perform the method on an image frame comprising image data including a position and a range from a plurality of pixels, the frame including a plurality of filter windows each including a center pixel and a plurality of other pixels including a first pixel and a second pixel, processing each of the plurality of filter windows including: for the first pixel, determining a space being its distance relative to the center pixel and a range difference between its range and the range of the center pixel, using the space and the range difference, choosing a selected combined 2D weight from a plurality of combined 2D weights which each include weighting for both the space and the range difference from at least one combined pre-computed 2D weight lookup table, 2D weight LUT, calculating a filtered range value by applying the selected combined 2D weight to the first pixel range, and summing the filtered range value to determine a contribution of the first pixel, repeating the determining, the choosing, the calculating, and the summing for at least the second pixel, and dividing a total sum of the contributions from the first pixel and at least the second pixel by a sum of the selected combined 2D weights from the first pixel and the second pixel to generate a final filtered range value for the center pixel as an output pixel; wherein the 2D weight LUT is quantized in at least one of the space and the range, and wherein non-linear interpolation is used to quantize the range by using a non-linear, NL, LUT for the 2D weight LUT including a finer step size at lower values for the range as compared to a larger step size at higher values for the range. for the first pixel, determining a space being its distance relative to the center pixel and a range difference between its range and the range of the center pixel, using the space and the range difference, choosing a selected combined 2D weight from a plurality of combined 2D weights which each include weighting for both the space and the range difference from at least one combined pre-computed 2D weight lookup table, 2D weight LUT, calculating a filtered range value by applying the selected combined 2D weight to the first pixel range, and summing the filtered range value to determine a contribution of the first pixel, repeating the determining, the choosing, the calculating, and the summing for at least the second pixel, and dividing a total sum of the contributions from the first pixel and at least the second pixel by a sum of the selected combined 2D weights from the first pixel and the second pixel to generate a final filtered range value for the center pixel as an output pixel; wherein the 2D weight LUT is quantized in at least one of the space and the range, and wherein non-linear interpolation is used to quantize the range by using a non-linear, NL, LUT for the 2D weight LUT including a finer step size at lower values for the range as compared to a larger step size at higher values for the range. <EOS>