Denoise

<< Click to Display Table of Contents >>

Navigation:  Nodes > Tasks > Image Processing >

Denoise

 

Purpose

 

Denoise input images, either by using optical flow techniques (tracking individual image features over the time) or by using spatial analysis only (traditional denoise).

Optical flow is a powerful technique to remove noise, but in some cases it can introduce artifacts. For example rain drops and other fast moving details could produce false positives, and also similar objects crossing on top of each other.  Meanwhile, spatial denoise does not produce optical flow artifacts but it can miss noisy pixels.

To get the best of both methods, this effect is capable to calculate the probability of having optical flow artifacts on each pixel, and given a user defined threshold it can combine both methods, thus using spatial denoise in the risky areas and optical flow in the rest of the image.

This node does not create new media files by itself, the output needs to be connected to an encoder node specialized on your desired output format.

As a difference to other denoisers this particular one is GPU based and highly optimised, providing faster than realtime processing in most cases.

 

 

Inputs

 

Input_1: Input media files to be denoised.

 

Outputs

 

Output:

 

 

Standard properties

 

Object Name

Color

Bypass

Lock

 

 

Node specific properties

 

Denoise scope (3 frames ... 11 frames): How many frames are used for optical flow comparisons. Optical flow will track each individual image feature over the time, and then it will consider noise any details that are only in one frame but not in the previous and posterior frames of that feature.  Using more frames can produce more quality, but it is slower to process.

 

Denoise mode, Denoise Spatial:

 

Temporal: Optical flow denoise, it can remove more noise  but it an introduce optical flow artifacts.

 

Spatial: Spatial de-noise only. No optical flow artifacts can appear, but less noise reduction possible.

 

Combined: It creates and composes both denoised versions, temporal and spatial, with the composition mask being based on the probability of finding optical flow artifacts on each pixel. The Denoise Spatial property defines the compositing threshold (the values of the mask used for Spatial denoise). The higher the Denoise Spatial is the lower probability of creating optical flow artifacts, but at the potential cost of leaving more noise in the images.

 

Mask (NGamma, Filter, Level, Scale): Controls the creation of the composition mask mentioned in the previous point. Default values work well in general, but optimal values really depend on the type of image content and potential color transformations that can make the noise more evident. If you want fine tuning it is recommended to find the optimal values in another application that can provide interactive visual feedback for those parameters such as Mistika Boutique, and then bring the desired values to Mistika Workflows.

 

NGamma: This has significant influence in optical flow algorithms, so it is one of the things to check when having image artifacts.  This parameter will tell Mistika  was gamma curve to apply to the image for the calculations (check for it in your camera documentation, or if the source images have been pre-processed ask the originator). Setting the correct value will improve the algorithms.

 

Filter, Level, Scale: Mask filtering (blur), leveling, and scaling.

 

Optical Flow (Min Level, Levels, Iterations, Smoothness): Controls the optical flow algorithm.  Default values work well in general,  but as in the previous case if you want to find optimal values for a particular case it is recommended to have visual feedback while adjusting those values, for example by using Mistika Boutique.

 

Min Level: Resolution factor. The higher the value, the lower the resolution of the smallest features to track, thus accelerating the processing at the potential cost of precision. A value 0 will track at pixel level, bigger values will half the resolution for each unit increment.

 

- Decreasing it to 0 may provide some extra accuracy or small features and fine textures,  but it is only indicated for images with excellent focus, little movement and very little noise. Otherwise it can be counter productive.

 

- Increasing it will provide faster processing, but some artifacts may appear.

 

Levels: Refines the calculation of the direction of motion vectors.  Increase it in case of complex movements with multiple features crossing their paths.

 

Iterations: Revises movement in areas with little detail. If there is not enough texture or details in the images then the algorithm may fail to track each little feature correctly. Increasing this parameter will force to calculate more iterations to try more possible solutions of the solver equations, then comparing the accuracy of each solution to find the optimal one.

 

Smoothness: Tells the algorithm if the features that are moving are following smooth paths or if they can experience abrupt changes in direction. In that way, in case of doubt the solver will choose motion vectors more parallel between them rather than solutions producing motion vectors that are crossing with each other.

 

Example: Imagine two similar persons wearing identical clothes and walking on collision course.  From the algorithm perspective, an action where the two persons crash into each other and rebound may produce very similar images to one where they avoid collision and simply pass one behind each other.  In a situation like this the Mistika OF algorithm could be confused  and choose the wrong solution, thus creating artifacts like warped limbs from the first person sticking to the second person for a few frames (the algorithm may find similar limbs without knowing which one is from which person).  In these situations you can help the Mistika solver by telling it to expect smoother movements (persons passing in front of each other in the example) or to permit abrupt changes (persons crashing into each other and rebounding in this example).

 

 

 

 

 

 

 

Developer reference (API Rest - node/Denoise/property/[Property ID])

 

Property Label

Property ID

Scope

Denoise_scope

Mode

Denoise_Mode

Spatial

Denoise_Spatial

NGamma

Mask_NGamma

Filter

Mask_Filter

Level

Mask_Level

Scale

Mask_Scale

Min Level

OpticalFlow_MinLevel

Levels

OpticalFlow_Levels

Iterations

OpticalFlow_Iterations

Smoothness

OpticalFlow_Smoothnes