pythonimage-processingnoisenoise-reduction

How to denoise (noise removing) from image without losing the scale (original range of values) of pxiel


I'm trying to remove noise from the image, a DICOM image, the range of pixel value in this type of image is between (-1000, 30000), I want to keep this range after the noise removal, for further calculation (such as STD, mean, etc)

I tried skimage.restoration methods, most of them use multiplication or a standardization so after the model it changes the scale to a whole different one, however, I've found a method called 'denoise_nl_means'

denoise_nl_means(image, patch_size=7, patch_distance=11, h=0.1, multichannel=False,
fast_mode=True, sigma=0.0, *, preserve_range=False, channel_axis=None)

If I set preserve_range to True then it returns ndarray of my image with the same range of original ndarray, if false it returns ndarray with a range between 0-1

Example

org = [[0,6], [5,6],[3, 6]] # scale between 0-6
after_noise_removel = [[0, 6], [6, 6], [3,6]] # same standardization

My question is what to search in google so I can find something such a method that saves my scale range after the process, or if you guys can suggest to me any methods that fit my needs!


Solution

  • If you have filtering functions that work either in the 16 bits unsigned range (0-65535), or in the 0-1 range, floating-point (single precision), you can rescale the input values to match the requirements of the function. And after filtering, revert to the desired range.

    In these two cases, there will be little loss of accuracy.