Infognition Super Resolution plugin for AviSynth is a video resizer
that uses technique known as
Super Resolution:
increasing resolution by
using information from neighbor frames. This process makes upsized video look sharper
and have more high frequency details. Internally this plugin uses
quarter-pixel motion compensation and a fusion process to combine
motion-compensated previously upsized frames with spatially resampled
current frame. This plugin uses the same super resolution engine as our
VirtualDub plugin
and Video Enhancer.
With a recent CPU you can now watch movies on full screen upsized with
Super Resolution in real time without having to save processed video to
a file first!
Here are some examples of 4x upsizing with our Super Resolution:
(these samples were produced by an older version of our engine)
Installation
This is a plugin for AviSynth, a tool for video processing where user writes scripts
involving different filters and plugins that manipulate video data
and then AviSynth makes these scripts act like video files.
You can find AviSynth and learn about it here:
avisynth.nl.
Just download the archive, unpack it and place .dll files to any convenient location.
Usage
First you need to load the plugin by adding to your .avs script a line
like this:
LoadPlugin("avssr.dll")
If you're using 64-bit version of AviSynth and a 64-bit player or other
host, then use this line:
LoadPlugin("avssr64.dll")
Then load a video file by using AviSource or DirectShowSource:
clip = AviSource("myvideo.avi")
To resize video using this Super Resolution plugin, apply "SR" function:
clip.SR()
By default it will upsize to 200% of original resolution in the high
quality mode using all cores. Full list of arguments looks like
clip.SR(width, height, numThreads, options)
"options" is a string. If it contains the word "fast" SR will work
in fast mode (approx. 1.5-2 times faster but with lower quality).
If options string contains "%" then "width" and "height" are in percent
of original, otherwise they are expressed in pixels.
"numThreads" is a positive number telling SR how many parallel threads
to use. If this argument is not given, SR will use by default number of
threads N equal to number of logical CPUs on your machine (number of cores
multiplied by number of hyperthreads). This number is usually optimal,
although sometimes 2*N is slightly faster.
"width" and "height" are the new dimensions of video you want SR to produce.
Either in pixels or in percent of original (if "%" is present in options
string).
If "height" value is not given, SR will calculate it automatically from
"width" to keep original aspect ratio. So you can just write
clip.SR(1920)
and it will resize your video to 1920 width and some appropriate height
that keeps the width/height ratio same as in original.
If "width" is not given either, then SR will just double the resolution.
Examples:
clip.SR() # upsize to 200% in high quality mode using all cores
clip.SR(1920) # resize to 1920 pixels width and appropriate height
# keeping original width/height ratio
clip.SR(1920,1080) # resize to 1920x1080 in high quality mode
clip.SR(1280,720,6) # resize to 1280x720 using 6 parallel threads
clip.SR(150, "%") # upsize video to 150% of original resolution
clip.SR(1280, "fast") # resize to 1280 pixels width and proper height
# in the fast mode
clip.SR(300, "% fast") # upsize video 3x (300%) in the fast mode
clip.SR("fast") # upsize to 200% in the fast mode
clip.SR(150, 150, 4, "%") # upsize to 150% using 4 threads in HQ mode
Colorspaces
This plugin can work with progressive YV12, YUY2, RGB24 and RGB32 formats.
Output format is the same as input format.
YV12 works fastest, YUY2 close to YV12. RGB modes are much slower.
Do not feed it with interlaced video, you'll get garbage output.
Applying SR() without arguments and letting your player (like MPC) rescale
the result to full screen using hardware resampling is a good way to
watch DVD rips, for example. On a cheap laptop with i3-3110M it works
in real time with 70% CPU load even in the high quality mode (default one).
The SR engine doubles the resolution, and if you tell
the plugin to resize to resolution different from 200% of original
it will first upsize to 200% and then resample to desired size.
This means it works faster when you tell it to upsize exactly 200%.
Requirements
Windows XP SP2 or higher (Vista, 7, 8). CPU with SSE2 support
(virtually any CPU since 2001). Recommended: 4 cores or more to get HD video in real time.
Quality
We've compared this technology with different plugins for VirtualDub, Adobe After Effects and AviSynth
as well as several stand-alone applications like vReveal and CinemaHD.
See Video Resize Shootout.
This plugin shares the Super Resolution engine with Video Enhancer,
so in the comparison see the results of Video Enhancer. In this comparison an older version
of our SR engine was used, current version works even better on some of the files.
That comparison demonstrates strong advantage of our super resolution implementation over all available
video resizing tools.
Frame order
The engine is suited for sequential processing, frame by frame. The more frames are processed
sequentially the more details are accumulated. When saving result to a file video is processed
from start to end in normal order and maximum quality is obtained. When seeking to random places
in preview mode, there is no good history of processed frames and accumulated information, so
the plugin takes 5 source frames (N-4 ... N) and processes them before showing you the result.
Visual results in preview mode when jumping to random frames can be worse than when rendering to a file.
|