How to Remove Temporal and Fixed Pattern Noise and Apply Tone Mapping?

I have a video, whose frames I have extracted and require to work with. 16 bits and grayscale images. My task is to improve the quality of the images, by removing the noise + adding tone mapping and gamma. I want do this because I want to compare how it holds up against a specilized technique I found to do the same. I basically want to know if this specilized technique has something unique to offer, or if I can get the same output by just denoising and doing some image corrections.

I am fairly new to programming and denoising images, so I am not sure what the best technique to do this is. I have listed what I'd like to do and how I am approaching it below, please let me know if there is a better way.

1. Measure the noise level across a given frame in the image: I want to quantify how much noise exists in the image before/after my corrections are applied and compare it to the noise levels from the technique. The frames have a lot of detail in them so is noise measurement across the whole frame even possible? Or will I have to comapre wrt a flatfield within the image? How do I know the noise level at a different part of the image isn't different?

2. Remove row noise and column noise, both temporal and fixed from the image. If I take a row value and the frame value, and correct each pixel so that the row vlaue = frame value, will I be correcting for temporal noise? I have multiple frames because they were extracted from a video, but the contents of the image are not the same. Could I find a flatfield across all images and find the average pixel value in that region, and then apply that average across the image? I do not have the dark frames of the images (only the images themselves) so how can I do a dark frame subtraction for removing fixed pattern noise?

3. Apply a gamma curve to do some tone mapping

1 Answer

1. Noise Measurement
You may use the MAD (Median of Absolute Deviation, See Relation to the Standard Deviation) Trick for noise estimation. Basically applying an High Pass Filter on the image and scale it:

$$\mathrm{median} \frac{ \left| {d}_{i} \right|}{0.67449}$$

Where $${d}_{i}$$ are the pixels values after The filtration. I am simplifying here the method, but you may read more at David L. Donoho - Denoising by Soft Thresholding.

Some other methods you may have a look at:

1. Fixed Pattern Noise
Since you don't have access to the black frames you may only assume all images have the same pattern of noise and try to estimate statistics based on flat areas on the images. You need to segment flat areas and try to estimate the noise pattern on them. Hopefully on the whole image set you'll have enough flat zones to cover any pixel multiple times.

2. Gamma Curve
This is the easiest pixel wise operation. You may need to pay attention to the color space of the images (for instance if they are in sRGB).

• Thanks for the direction, I shall try this and get back to you Jul 15, 2021 at 21:55
• Hi Royi, I am yet to execute the method, as I found another way that I'm testing out. I'll mark the answer once I'm done, if it works. Jul 21, 2021 at 17:24
• @SrirakshaVR, Have you reviewed the answer? Could you please mark it?
– Royi
Mar 24, 2023 at 6:54