fft3dGPU

Written by

in

To clean grainy video faster using FFT3dGPU, you must offload the intensive Fast Fourier Transform (FFT) denoiser calculations from your CPU to your graphics card (GPU). This GPU acceleration provides a major speed boost compared to the standard CPU-bound FFT3DFilter, allowing you to process high-resolution or heavily grained footage in a fraction of the time. Core Concepts of FFT3dGPU

Spatial-Temporal Processing (3D): It analyzes both individual frames (spatial) and surrounding frames (temporal) to separate moving video detail from random grain.

Frequency Domain Filtering: The filter breaks the image down into frequency blocks. High-frequency blocks typically contain the fine grain and noise, which are then suppressed using a Wiener filter.

Asynchronous Processing: The plugin processes the next video frame while waiting for the GPU to finish its current workload, enabling concurrent script execution. Step-by-Step Implementation

FFT3dGPU is primarily utilized as an external plugin within AviSynth or video processing GUIs like Hybrid. 1. Installation Requirements

Download the plugin files from the modern pinterf FFT3dGPU GitHub Repository.

Copy the FFT3dGPU.dll and fft3dgpu.hlsl files into your AviSynth plugins directory. 2. Basic Script Setup

To clean up standard grain efficiently, add the following line to your AviSynth .avs script after loading your source video:

MPEG2Source(“your_video.d2v”) # Or your preferred source filter FFT3dGPU(sigma=2.0, bt=3, bw=32, bh=32, ow=16, oh=16) Use code with caution. Key Parameters to Optimize for Speed and Quality

To maximize speed without destroying video detail, fine-tune these specific arguments: Recommended Value Purpose & Speed Impact sigma 1.5 to 3.0

Denoise strength. Higher numbers remove more grain but can make the video look plastic or blocky. bt 3

Temporal block type. Controls how many frames are analyzed. bt=3 looks at the current, previous, and next frame, offering the best balance of speed and grain reduction. bw / bh 32 / 32 (or 48)

Block width and height. Larger blocks (e.g., 32×32) run significantly faster on modern GPUs than smaller blocks (e.g., 16×16). ow / oh Half of bw / bh

Overlap size. Necessary to prevent grid-like artifacts. Keeping this exactly at half the block size balances visual quality with rendering speed. precision 0 (for 8-bit video)

Processing precision. Setting precision=0 forces the GPU to use 16-bit float calculations (half precision), which drastically increases processing speed over 32-bit floats. Advanced Pro-Tips for Speed Maxing

Clean Only the Dark Areas: Grain is usually most visible and distracting in dark, low-light shadows. You can use the sigma4 parameter to target low frequencies or map the filter using the only dark approach within GUI frontends like Hybrid to prevent the GPU from wasting cycles overbrightly lit regions.

Combine with AviSynth+ MT: Modern versions of FFT3dGPU automatically register as MT_SERIALIZED. This means you can run your overall script in multi-threaded mode (Prefetch), letting your CPU handle heavy decoding while the GPU focuses entirely on the FFT calculations.

Avoid Over-Sharpening: FFT3dGPU has a built-in sharpening tool (sharpen parameter). While convenient, adding sharpening directly inside the FFT pass increases the computing overhead and can result in worse video compression efficiency. Keep sharpening separated or turned off for raw speed. Contextual Recap

To process your video faster using FFT3dGPU, you need to optimize the balance between the block sizing parameters (bw/bh), temporal depth (bt), and compute precision (precision). Primary Recommendation

For the fastest throughput on 8-bit footage, explicitly enforce half-precision compute math by modifying your script string to: FFT3dGPU(sigma=2.0, bt=3, bw=32, bh=32, ow=16, oh=16, precision=0).

FFT3DFilter is 3D Frequency Domain filter – denoiser – AviSynth

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *