Basic Image Adjustment

Can you look at adding a simple Brightness/Contrast and maybe Saturation/Colour Adjustment panel within VAI? It would be so helpful to be able to adjust these parameters, particularly for old videos, before any other process is performed.

I have made the same suggestion in the forum. This would be a one time implementation and does not affect on future updates, except UI changes, so I think it’s worth to do this once.

2 Likes

I also don’t understand how such simple functions are not included in this so called “power” program? It is really disappointing.

I was trying to do this yesterday using the eq filter via CLI. But it’s not part of their ffmpeg build. So i had a look around, and it’s indeed listed under GPL Licensed Filters. So i guesss that’s why. I’m not super familiar with what others filters ffmpeg can use to set gamma, saturation, brightness, contrast etc. I’ll paste the filters generated with their ffmpeg build below, and perhaps someone else can point one or more out. I don’t see that making such a filter themselves would be overly complicated considering they’ve made models and are considered one of the leading developers in Video Enhancement using AI.

Filters in their most recent build (removed all the Audio filters as i passed the limit of amount of characters in a post - which is 32 000 for anyone interested lol):

$ ./ffmpeg.exe -filters
  T.. = Timeline support
  .S. = Slice threading
  ..C = Command support
  A = Audio input/output
  V = Video input/output
  N = Dynamic number and/or type of input/output
  | = Source or sink filter
 ... addroi            V->V       Add region of interest to frame.
 ... alphaextract      V->V       Extract an alpha channel as a grayscale image component.
 T.. alphamerge        VV->V      Copy the luma value of the second input into the alpha channel of the first input.
 TSC amplify           V->V       Amplify changes between successive video frames.
 TSC atadenoise        V->V       Apply an Adaptive Temporal Averaging Denoiser.
 T.C avgblur           V->V       Apply Average Blur filter.
 TSC backgroundkey     V->V       Turns a static background into transparency.
 T.C bbox              V->V       Compute bounding box for each frame.
 ... bench             V->V       Benchmark part of a filtergraph.
 TSC bilateral         V->V       Apply Bilateral filter.
 ... bilateral_cuda    V->V       GPU accelerated bilateral filter
 T.. bitplanenoise     V->V       Measure bit plane noise.
 .S. blackdetect       V->V       Detect video intervals that are (almost) black.
 TSC blend             VV->V      Blend two video frames into each other.
 ... blockdetect       V->V       Blockdetect filter.
 ... blurdetect        V->V       Blurdetect filter.
 TS. bm3d              N->V       Block-Matching 3D denoiser.
 TS. bwdif             V->V       Deinterlace the input image.
 T.. bwdif_cuda        V->V       Deinterlace CUDA frames
 TSC cas               V->V       Contrast Adaptive Sharpen.
 ... ccrepack          V->V       Repack CEA-708 closed caption metadata
 TSC chromahold        V->V       Turns a certain color range into gray.
 TSC chromakey         V->V       Turns a certain color into transparency. Operates on YUV colors.
 ... chromakey_cuda    V->V       GPU accelerated chromakey filter
 TSC chromanr          V->V       Reduce chrominance noise.
 TSC chromashift       V->V       Shift chroma.
 ... ciescope          V->V       Video CIE scope.
 T.. codecview         V->V       Visualize information about some codecs.
 TSC colorbalance      V->V       Adjust the color balance.
 TSC colorchannelmixer V->V       Adjust colors by mixing color channels.
 TSC colorcontrast     V->V       Adjust color contrast between RGB components.
 TSC colorcorrect      V->V       Adjust color white balance selectively for blacks and whites.
 TSC colorize          V->V       Overlay a solid color on the video stream.
 TSC colorkey          V->V       Turns a certain color into transparency. Operates on RGB colors.
 TSC colorhold         V->V       Turns a certain color range into gray. Operates on RGB colors.
 TSC colorlevels       V->V       Adjust the color levels.
 TSC colormap          VVV->V     Apply custom Color Maps to video stream.
 TS. colorspace        V->V       Convert between colorspaces.
 ... colorspace_cuda   V->V       CUDA accelerated video color converter
 TSC colortemperature  V->V       Adjust color temperature of video.
 TSC convolution       V->V       Apply convolution filter.
 TS. convolve          VV->V      Convolve first video stream with second video stream.
 ... copy              V->V       Copy the input video unchanged to the output.
 TS. corr              VV->V      Calculate the correlation between two video streams.
 ..C crop              V->V       Crop the input video.
 ... cue               V->V       Delay filtering to match a cue.
 TSC curves            V->V       Adjust components curves.
 .SC datascope         V->V       Video data analysis.
 T.C dblur             V->V       Apply Directional Blur filter.
 TS. dctdnoiz          V->V       Denoise frames using 2D DCT.
 TSC deband            V->V       Debands video.
 T.C deblock           V->V       Deblock video.
 ... decimate          N->V       Decimate frames (post field matching filter).
 TS. deconvolve        VV->V      Deconvolve first video stream with second video stream.
 TS. dedot             V->V       Reduce cross-luminance and cross-color.
 TSC deflate           V->V       Apply deflate effect.
 ... deflicker         V->V       Remove temporal frame luminance variations.
 ... deinterlace_qsv   V->V       Quick Sync Video "deinterlacing"
 ... dejudder          V->V       Remove judder produced by pullup.
 ... deshake           V->V       Stabilize shaky video.
 TSC despill           V->V       Despill video.
 ... detelecine        V->V       Apply an inverse telecine pattern.
 TSC dilation          V->V       Apply dilation effect.
 TSC displace          VVV->V     Displace pixels.
 .S. doubleweave       V->V       Weave input video fields into double number of frames.
 T.C drawbox           V->V       Draw a colored box on the input video.
 ... drawgraph         V->V       Draw a graph using input video metadata.
 T.C drawgrid          V->V       Draw a colored grid on the input video.
 T.. edgedetect        V->V       Detect and draw edge.
 ... elbg              V->V       Apply posterize effect, using the ELBG algorithm.
 T.. entropy           V->V       Measure video frames entropy.
 .S. epx               V->V       Scale the input using EPX algorithm.
 TSC erosion           V->V       Apply erosion effect.
 TSC estdif            V->V       Apply Edge Slope Tracing deinterlace.
 TSC exposure          V->V       Adjust exposure of the video stream.
 ... extractplanes     V->N       Extract planes as grayscale frames.
 TS. fade              V->V       Fade in/out input video.
 T.C feedback          VV->VV     Apply feedback video filter.
 TSC fftdnoiz          V->V       Denoise frames using 3D FFT.
 TS. fftfilt           V->V       Apply arbitrary expressions to pixels in frequency domain.
 ... field             V->V       Extract a field from the input video.
 ... fieldhint         V->V       Field matching using hints.
 ... fieldmatch        N->V       Field matching for inverse telecine.
 T.. fieldorder        V->V       Set the field order.
 T.C fillborders       V->V       Fill borders of the input video.
 T.. floodfill         V->V       Fill area with same color with another color.
 ... format            V->V       Convert the input video to one of the specified pixel formats.
 ... fps               V->V       Force constant framerate.
 ... framepack         VV->V      Generate a frame packed stereoscopic video.
 .S. framerate         V->V       Upsamples or downsamples progressive source between specified frame rates.
 T.. framestep         V->V       Select one frame every N frames.
 ... freezedetect      V->V       Detects frozen video input.
 ... freezeframes      VV->V      Freeze video frames.
 ... fsync             V->V       Synchronize video frames from external source.
 TSC gblur             V->V       Apply Gaussian Blur filter.
 TS. geq               V->V       Apply generic equation to each pixel.
 T.. gradfun           V->V       Debands video quickly using gradients.
 ..C graphmonitor      V->V       Show various filtergraph stats.
 TS. grayworld         V->V       Adjust white balance using LAB gray world algorithm
 TS. greyedge          V->V       Estimates scene illumination by grey edge assumption.
 TSC guided            N->V       Apply Guided filter.
 TSC haldclut          VV->V      Adjust colors using a Hald CLUT.
 TS. hflip             V->V       Horizontally flip the input video.
 ... histogram         V->V       Compute and draw a histogram.
 .S. hqx               V->V       Scale the input by 2, 3 or 4 using the hq*x magnification algorithm.
 .S. hstack            N->V       Stack video inputs horizontally.
 TSC hsvhold           V->V       Turns a certain HSV range into gray.
 TSC hsvkey            V->V       Turns a certain HSV range into transparency. Operates on YUV colors.
 T.C hue               V->V       Adjust the hue and saturation of the input video.
 TSC huesaturation     V->V       Apply hue-saturation-intensity adjustments.
 ... hwdownload        V->V       Download a hardware frame to a normal frame
 ... hwmap             V->V       Map hardware frames
 ... hwupload          V->V       Upload a normal frame to a hardware frame
 ... hwupload_cuda     V->V       Upload a system memory frame to a CUDA device.
 T.. hysteresis        VV->V      Grow first stream into second stream by connecting components.
 TS. identity          VV->V      Calculate the Identity between two video streams.
 ... idet              V->V       Interlace detect Filter.
 T.C il                V->V       Deinterleave or interleave fields.
 TSC inflate           V->V       Apply inflate effect.
 ... interleave        N->V       Temporally interleave video inputs.
 TSC kirsch            V->V       Apply kirsch operator.
 TSC lagfun            V->V       Slowly update darker pixels.
 T.. latency           V->V       Report video filtering latency.
 TSC lenscorrection    V->V       Rectify the image by correcting for lens distortion.
 TSC limitdiff         N->V       Apply filtering with limiting difference.
 TSC limiter           V->V       Limit pixels components to the specified range.
 ... loop              V->V       Loop video frames.
 TSC lumakey           V->V       Turns a certain luma into transparency.
 TSC lut               V->V       Compute and apply a lookup table to the RGB/YUV input video.
 TSC lut1d             V->V       Adjust colors using a 1D LUT.
 TSC lut2              VV->V      Compute and apply a lookup table from two video inputs.
 TSC lut3d             V->V       Adjust colors using a 3D LUT.
 TSC lutrgb            V->V       Compute and apply a lookup table to the RGB input video.
 TSC lutyuv            V->V       Compute and apply a lookup table to the YUV input video.
 TSC maskedclamp       VVV->V     Clamp first stream with second stream and third stream.
 TSC maskedmax         VVV->V     Apply filtering with maximum difference of two streams.
 TSC maskedmerge       VVV->V     Merge first stream with second stream using third stream as mask.
 TSC maskedmin         VVV->V     Apply filtering with minimum difference of two streams.
 TSC maskedthreshold   VV->V      Pick pixels comparing absolute difference of two streams with threshold.
 TSC maskfun           V->V       Create Mask.
 TSC median            V->V       Apply Median filter.
 ... mergeplanes       N->V       Merge planes.
 ... mestimate         V->V       Generate motion vectors.
 T.. metadata          V->V       Manipulate video frame metadata.
 T.. midequalizer      VV->V      Apply Midway Equalization.
 ... minterpolate      V->V       Frame rate conversion using Motion Interpolation.
 TSC mix               N->V       Mix video inputs.
 TSC monochrome        V->V       Convert video to gray using custom color filter.
 TSC morpho            VV->V      Apply Morphological filter.
 TS. msad              VV->V      Calculate the MSAD between two video streams.
 TSC multiply          VV->V      Multiply first video stream with second video stream.
 TSC negate            V->V       Negate input video.
 TS. nlmeans           V->V       Non-local means denoiser.
 ... noformat          V->V       Force libavfilter not to use any of the specified pixel formats for the input to the next filter.
 TS. noise             V->V       Add noise.
 T.C normalize         V->V       Normalize RGB video.
 ... null              V->V       Pass the source unchanged to the output.
 T.C oscilloscope      V->V       2D Video Oscilloscope.
 TSC overlay           VV->V      Overlay a video source on top of the input.
 ... overlay_qsv       VV->V      Quick Sync Video overlay.
 ... overlay_cuda      VV->V      Overlay one video on top of another using CUDA
 ... pad               V->V       Pad the input video.
 ... palettegen        V->V       Find the optimal palette for a given stream.
 ... paletteuse        VV->V      Use a palette to downsample an input video stream.
 T.C perms             V->V       Set permissions for the output video frame.
 ... photosensitivity  V->V       Filter out photosensitive epilepsy seizure-inducing flashes.
 ... pixdesctest       V->V       Test pixel format definitions.
 TSC pixelize          V->V       Pixelize video.
 T.C pixscope          V->V       Pixel data analysis.
 TS. premultiply       N->V       PreMultiply first stream with first plane of second stream.
 TSC prewitt           V->V       Apply prewitt operator.
 TSC pseudocolor       V->V       Make pseudocolored video frames.
 TS. psnr              VV->V      Calculate the PSNR between two video streams.
 T.. qp                V->V       Change video quantization parameters.
 ... random            V->V       Return random frames.
 TSC readeia608        V->V       Read EIA-608 Closed Caption codes from input video and write them to frame metadata.
 ... readvitc          V->V       Read vertical interval timecode and write it to frame metadata.
 ..C realtime          V->V       Slow down filtering to match realtime.
 .S. remap             VVV->V     Remap pixels.
 TS. removegrain       V->V       Remove grain.
 T.. removelogo        V->V       Remove a TV logo based on a mask image.
 ... reverse           V->V       Reverse a clip.
 TSC rgbashift         V->V       Shift RGBA.
 TSC roberts           V->V       Apply roberts cross operator.
 TSC rotate            V->V       Rotate the input image.
 ..C scale             V->V       Scale the input video size and/or convert the image format.
 ... scale_cuda        V->V       GPU accelerated video resizer
 ... scale_qsv         V->V       Quick Sync Video "scaling and format conversion"
 ..C scale2ref         VV->VV     Scale the input video size and/or convert the image format to the given reference.
 ... scdet             V->V       Detect video scene change
 TSC scharr            V->V       Apply scharr operator.
 TSC scroll            V->V       Scroll input video.
 ... segment           V->N       Segment video stream.
 ... select            V->N       Select video frames to pass in output.
 TS. selectivecolor    V->V       Apply CMYK adjustments to specific color ranges.
 ... sendcmd           V->V       Send commands to filters.
 ... separatefields    V->V       Split input video frames into fields.
 ... setdar            V->V       Set the frame display aspect ratio.
 ... setfield          V->V       Force field for the output video frame.
 ... setparams         V->V       Force field, or color property for the output video frame.
 ..C setpts            V->V       Set PTS for the output video frame.
 ... setrange          V->V       Force color range for the output video frame.
 ... setsar            V->V       Set the pixel sample aspect ratio.
 ... settb             V->V       Set timebase for the video output link.
 TSC shear             V->V       Shear transform the input image.
 ... showinfo          V->V       Show textual information for each video frame.
 ... showpalette       V->V       Display frame palette.
 T.. shuffleframes     V->V       Shuffle video frames.
 TS. shufflepixels     V->V       Shuffle video pixels.
 T.. shuffleplanes     V->V       Shuffle video planes.
 T.. sidedata          V->V       Manipulate video frame side data.
 .S. signalstats       V->V       Generate statistics from video analysis.
 ... siti              V->V       Calculate spatial information (SI) and temporal information (TI).
 TSC sobel             V->V       Apply sobel operator.
 ... split             V->N       Pass on the input to N video outputs.
 TS. ssim              VV->V      Calculate the SSIM between two video streams.
 ... ssim360           VV->V      Calculate the SSIM between two 360 video streams.
 ..C streamselect      N->N       Select video streams
 T.C swaprect          V->V       Swap 2 rectangular objects in video.
 T.. swapuv            V->V       Swap U and V components.
 TSC tblend            V->V       Blend successive frames.
 ... telecine          V->V       Apply a telecine pattern.
 ... thistogram        V->V       Compute and draw a temporal histogram.
 TSC threshold         VVVV->V    Threshold first video stream using other video streams.
 TS. thumbnail         V->V       Select the most representative frame in a given sequence of consecutive frames.
 ... thumbnail_cuda    V->V       Select the most representative frame in a given sequence of consecutive frames.
 ... tile              V->V       Tile several successive frames together.
 ... tiltandshift      V->V       Generate a tilt-and-shift'd video.
 TSC tlut2             V->V       Compute and apply a lookup table from two successive frames.
 TSC tmedian           V->V       Pick median pixels from successive frames.
 T.. tmidequalizer     V->V       Apply Temporal Midway Equalization.
 TSC tmix              V->V       Mix successive video frames.
 .S. tonemap           V->V       Conversion to/from different dynamic ranges.
 ... tpad              V->V       Temporarily pad video frames.
 .S. transpose         V->V       Transpose input video.
 ... trim              V->V       Pick one continuous section from the input, drop the rest.
 TS. unpremultiply     N->V       UnPreMultiply first stream with first plane of second stream.
 TS. unsharp           V->V       Sharpen or blur the input video.
 ... untile            V->V       Untile a frame into a sequence of frames.
 .SC v360              V->V       Convert 360 projection of video.
 TSC varblur           VV->V      Apply Variable Blur filter.
 T.. tvai_up           V->V       Apply Topaz Video AI upscale models, parameters will only be applied to appropriate models
 T.. tvai_fi           V->V       Apply Topaz Video AI frame interpolation models.
 T.. tvai_pe           V->V       Apply Topaz Video AI parameter estimation models.
 T.. tvai_cpe          V->V       Apply Topaz Video AI camera pose estimation model.
 T.. tvai_stb          V->V       Apply Topaz Video AI stabilization models
 ..C vectorscope       V->V       Video vectorscope.
 T.. vflip             V->V       Flip the input video vertically.
 ... vfrdet            V->V       Variable frame rate detect filter.
 TSC vibrance          V->V       Boost or alter saturation.
 TS. vif               VV->V      Calculate the VIF between two video streams.
 T.. vignette          V->V       Make or reverse a vignette effect.
 ... vmafmotion        V->V       Calculate the VMAF Motion score.
 ... vpp_qsv           V->V       Quick Sync Video "VPP"
 .S. vstack            N->V       Stack video inputs vertically.
 TSC w3fdif            V->V       Apply Martin Weston three field deinterlace.
 .SC waveform          V->V       Video waveform monitor.
 .S. weave             V->V       Weave input video fields into frames.
 .S. xbr               V->V       Scale the input using xBR algorithm.
 TS. xcorrelate        VV->V      Cross-correlate first video stream with second video stream.
 .S. xfade             VV->V      Cross fade one video with another video.
 TSC xmedian           N->V       Pick median pixels from several video inputs.
 T.. xpsnr             VV->V      Calculate the extended perceptually weighted peak signal-to-noise ratio (XPSNR) between two video streams.
 .S. xstack            N->V       Stack video inputs into custom layout.
 TS. yadif             V->V       Deinterlace the input image.
 T.. yadif_cuda        V->V       Deinterlace CUDA frames
 TSC yaepblur          V->V       Yet another edge preserving blur filter.
 ... zoompan           V->V       Apply Zoom & Pan effect.
 .SC zscale            V->V       Apply resizing, colorspace and bit depth conversion.
 ... hstack_qsv        N->V       "Quick Sync Video" hstack
 ... vstack_qsv        N->V       "Quick Sync Video" vstack
 ... xstack_qsv        N->V       "Quick Sync Video" xstack
 ... allrgb            |->V       Generate all RGB colors.
 ... allyuv            |->V       Generate all yuv colors.
 ... cellauto          |->V       Create pattern generated by an elementary cellular automaton.
 ..C color             |->V       Provide an uniformly colored input.
 ... colorchart        |->V       Generate color checker chart.
 ... colorspectrum     |->V       Generate colors spectrum.
 ... ddagrab           |->V       Grab Windows Desktop images using Desktop Duplication API
 .SC gradients         |->V       Draw a gradients.
 ... haldclutsrc       |->V       Provide an identity Hald CLUT.
 ... life              |->V       Create life.
 ... mandelbrot        |->V       Render a Mandelbrot fractal.
 ... nullsrc           |->V       Null video source, return unprocessed video frames.
 ... pal75bars         |->V       Generate PAL 75% color bars.
 ... pal100bars        |->V       Generate PAL 100% color bars.
 ... perlin            |->V       Generate Perlin noise
 ... rgbtestsrc        |->V       Generate RGB test pattern.
 .S. sierpinski        |->V       Render a Sierpinski fractal.
 ... smptebars         |->V       Generate SMPTE color bars.
 ... smptehdbars       |->V       Generate SMPTE HD color bars.
 ... testsrc           |->V       Generate test pattern.
 ... testsrc2          |->V       Generate another test pattern.
 ... yuvtestsrc        |->V       Generate YUV test pattern.
 .SC zoneplate         |->V       Generate zone-plate.
 ... nullsink          V->|       Do absolutely nothing with the input video.
 ..C a3dscope          A->V       Convert input audio to 3d scope video output.
 ... abitscope         A->V       Convert input audio to audio bit scope video output.
 ... adrawgraph        A->V       Draw a graph using input audio metadata.
 ..C agraphmonitor     A->V       Show various filtergraph stats.
 ... ahistogram        A->V       Convert input audio to histogram video output.
 ... aphasemeter       A->N       Convert input audio to phase meter video output.
 .SC avectorscope      A->V       Convert input audio to vectorscope video output.
 ..C concat            N->N       Concatenate audio and video streams.
 ... showcqt           A->V       Convert input audio to a CQT (Constant/Clamped Q Transform) spectrum video output.
 .S. showcwt           A->V       Convert input audio to a CWT (Continuous Wavelet Transform) spectrum video output.
 ... showfreqs         A->V       Convert input audio to a frequencies video output.
 .S. showspatial       A->V       Convert input audio to a spatial video output.
 .S. showspectrum      A->V       Convert input audio to a spectrum video output.
 .S. showspectrumpic   A->V       Convert input audio to a spectrum video output single picture.
 ... showvolume        A->V       Convert input audio volume to video output.
 ... showwaves         A->V       Convert input audio to a video output.
 ... showwavespic      A->V       Convert input audio to a video output single picture.
 ... spectrumsynth     VV->A      Convert input spectrum videos to audio output.
 ..C avsynctest        |->AV      Generate an Audio Video Sync Test.
 ..C amovie            |->N       Read audio from a movie source.
 ..C movie             |->N       Read from a movie source.
 ... abuffer           |->A       Buffer audio frames, and make them accessible to the filterchain.
 ... buffer            |->V       Buffer video frames, and make them accessible to the filterchain.
 ... abuffersink       A->|       Buffer audio frames, and make them available to the end of the filter graph.
 ... buffersink        V->|       Buffer video frames, and make them available to the end of the filter graph.

I guess there are a few filters like colorbalance, colorcontrast, colorlevels, colormap etc. However, I’ve never used them so i don’t know how well they work or what they actually do.

Also, running CLI is not really the reason people purchase TVAi.

Thanks for looking into this though. I’ve been wondering about it since people bring it up every few months.