Making
your footage Progressive
This is a much expanded version of part of the guide which previously
only took one paragraph. The guides are much more focused on showing
you how to analyse your footage and how to deal with it depending on
the footage you have. Hopefully by this point you will know (or at
least have a good idea) whether your source is Telecined, Hybrid,
Blended or Pure Interlaced.
Armed with this knowledge I can show the different ways of handling
this
footage. If, on the other hand, you read the Analysing
your Footage
page and couldn't decide which type of interlacing your source had then
you may want to try each method one by one and see what looks best to
you.
Fore ease of reference, you can go directly to a section:
Methodology
The information contained on this page are general rules of thumb and
like all rules there are exceptions. When reading this document you
should try to understand why certain options are being used so that you
can modify these depending on your own source footage. There are
different solutions to different problems and although I have tried to
cover numerous possibilities it is very likely that you may find better
solutions yourself so don't be afraid to experiment.
The Decomb
Plugin
Decomb is an plugin for Avisynth developed by Donald Graft which will
be used for the majority of our attempts to recover progressive frames.
The version used in the last guide was decomb 4 but these days decomb 5
is recommended. If for some reason you would prefer to use Decomb 4
(with all the old options) then you can do so by adding LoadOldDecomb()
to your script before using Telecide and Decimate. You can also
LoadLegacyDecomb() which is the same as the version for avisynth 2.0x
that operates in YUY2 colourspace.
Decomb works in two stages using two functions - Telecide and Decimate.
Telecide: This part of the filter chain looks
for the original progressive frames in the source and attempts to
restore them. If it can't find a progressive frame it can use Post
Processing to adaptively deinterlace the frame for you.
Decimate: This removes any duplicate frames created by
Telecine
and removed frames in an attempt to restore a source to its original
framerate. For Telecined PAL
material this is not required.
Each of these fuctions have settings which will differ depending on the
kind of interlacing you have, so let's have a look at the different
ways of dealing with your source.
Telecined
Footage
The simple stuff - or so we hope. The decomb functions should be able
to deal with this sort of footage very easily by using Inverse
Telecine. This will take your footage and restore the original
progressive frames. With NTSC footage this will also restore the
framerate to 23.976fps whereas PAL will keep the its framerate of 25fps.
For NTSC footage you you make a script like this:
MPEG2Source("C:\yourfolder\blah.d2v")
Telecide(order=1,guide=1)
#1 for Top Field First or Telecide(order=0) for Bottom.
Decimate(cycle=5, mode=2)
and for PAL you do
MPEG2Source("C:\yourfolder\blah.d2v")
Telecide(order=1,guide=2)
#1 for Top Field First or Telecide(order=0) for Bottom.
So you can understand what is going on with these functions and
settings, allow me to explain the options that are being used.
Telecide:
Order - This dictates the field order of the
source. Top Field First or Bottom Field First - you should know this
from the analysis stage you did earlier.
Guide - This tells Telecide what sort of pattern to
look for.
Use 1 for NTSC Pulldown and 2 for PAL pulldown. 0 is default and does
blind pattern matching which is pretty decent too - if the pattern
guidance looks like it's getting it wrong, try guide=0
Decimate:
Cycle - The number tells decimate how
regularly to remove a frame. For NTSC IVTC it is 1 in every 5 frames.
Later
you will see some examples where decimation is used differently or not
at all..
Mode - The mode will govern what frame in a sequence
gets deleted. This decision will affect how smooth the output will
be. For a simple NTSC Telecine of anime, mode of 2 is best - you can
read the decomb manual for info on the other modes.
You will notice that there is no decimate for PAL Telecine. This is
because if a source has used a simple Telecine process for PAL then
once the frames are recoverable they will be at the correct framerate
of 25fps.
Again, I must stress that it is unlikely that a PAL source has been
encoded like this.
Remember it is common for a Telecine pattern to be hard to find, which
in turn makes it difficult for the filters to restore the orignal
frames. One
difficulty which you can try and overcome is when Telecide has trouble
finding good mathches when it looks for the progressive frames - if you
believe this to be true then you will want to refer to the Decomb 5 FAQ
which you should have in your start menu under AMVapp/Avisynth
Filters/Documentation/. Yes, that's right, I'm telling you to RTFM -
I'd only be repeating things if I put them here. All the decomb
documentation file are great and well worth reading. Here's a quick
rundown of what you need to do to tweak your settings:
- Add show=true to telecide
- Look for a frame that is still interlaced
- a) If the info says that the frame is Progressive then you
need to lower your vthresh to be lower than the "matching"
number.
- b) If the info says the frame is interlaced then you need
to lower your dthresh
This is actually very easy to do and very worthwhile.
If you are still having trouble, there are some alternatives.
Alternative Method 1: SmartDecimate
Some sources respond better to the filter SmartDecimate which is a
decomb alternative. For NTSC footage use SmartDecimate(24,60). For more information see the
Smart Decimate documentation in the Start Menu - AMVapp/Avisynth
Filters/Documentation. This filter can be used in other creative ways
as described in the documentation so mess around with it.
Alternative Method 2: Better deinterlacing in Post-processing
When Telecide cannot match a field, it has to deinterlace the
frame. By default it uses FieldDeinterlace... but FieldDeinterlace
isn't all that good. You can specify other filters to do the
interlacing on those frames. Two deinterlacers that can do this are
KernelDeinterlace and TDeinterlace. To use these, do as follows:
To use KernelDeint:
MPEG2Source("C:\yourfolder\blah.d2v")
Telecide(order=1,guide=1,hints=true=,post=1) #1 for Top Field First or order=0 for
Bottom.
KernelDeinterlace(order=1) #See
readme for kerneldeinterlace options.
Decimate(cycle=5, mode=2)
To use Tdeint:
MPEG2Source("C:\yourfolder\blah.d2v")
orig = last
loadTdeint()
Telecide(order=1,guide=1,hints=true,post=1) #1 for Top Field 1st or
order=0 for Bottom.
Tdeint(order=1,clip2=orig)
Decimate(cycle=5, mode=2)
Hybrid Footage
This stuff is marginally more complicated and you'll need to make a
decision on the nature of your hybrid footage - is it more basic FILM
or more pure interlaced NTSC? This will govern how the thing is
Decimated. If it's more FILM then you can decimate it easily (like with
regular Telecine) but if it's more pure interlacing then doing so will
make all the motion jerky so you need to be careful. Note that Hybrid
Sources basically are an NTSC phenomenon so there's no PAL option here.
Mostly FILM:
MPEG2Source("C:\yourfolder\blah.d2v")
Telecide(order=1)
Decimate(cycle=5, mode=3, threshold=1.0)
Note that this will blend the frames in the pure interlaced
areas to keep the smoothness of the motion at 23.976fps. On the Hybrid
source I was messing with earlier, Super GALS these settings seem to
work pretty well but I didnt go into it too thoroughly.
However, if there are too
many pure interlaced sections then you will get far too much blending
and you want to avoid that if you can. Using Decimate
mode 2 stops the blending but gives you jerky motion - if you don't
want blending or jerky motion treat it as 'mostly pure interlaced':
Mostly pure interlaced:
MPEG2Source("C:\yourfolder\blah.d2v")
Telecide(order=1)
Decimate(mode=1, threshold=1.0)
The two changes to notice here are that there is no pattern guidance
and no decimate cycle. This method will give you 29.97fps footage
with
progressive frames restored as best as telecide can manage. Extra
smoothness can be
obtained by using Telecide(order=1, post=4)
With Hybrid footage some parts of your video stream will have to be
deinterlaced - these are the pure interlaced parts. Decomb contains
pretty decent adaptive deinterlacing in its post-processing options and
the settings I've referred to here should be fine. If, however, you
find that the deinterlacer is hurting good frames or isn't catching all
the deinterlacing then you should tweak the vthresh and dthresh
options in Telecide. These are advanced settings that you
should refer to the Decomb 5 Reference Manual and the Decomb 5 Tutorial
pages for full explanation about how this works.
If you have lots of pure interlaced frames and decomb isn't helping
then it may be best to just treat it like completely pure interlaced
material.
The third way:
If you have hybrid footage and Decomb is getting you nowhere
fast then the answer for you is to use BlendBob. BlendBob works in a
similar but opposite way to decomb - where decomb tries to match fields
and deinterlaces when it can't, BlendBob bob deinterlaces all the
fields and then does the matching, blending the matched fields together
or discarding on if they don't match. This is very very effective at
getting rid of interlacing but it should be used only when decomb fails
because decomb does produce better wuality when it works well.
To use BlendBob you can use this chain of commands:
LoadTDeint()
TDeint(mode=1,order=1)
#user order=0 for bottom field first
BlendBob()
You can actually use any bob function provided you set it to output
double framerate. TDeint gives the best results in my tests but KernelBob is also a good option (and much
faster than TDeint).
Half Field
Blended Fooatage
This is where no solution will ever be satisfactory and is where you
will really want to experiment as much as possible to find a solution
you are happy with. This will often vary from source to source but here
are some approaches that I found useful:
MPEG2Source("C:\yourfolder\blah.d2v")
Telecide(order=1,post=2,blend=true,vthresh=30,back=1)
Decimate(cycle=5,mode=3,quality=3)
These settings I found to really help reduce the prevalence of
the
blending (frames that contained blends were often removed during
decimation) but this approach would often leave the footage looking
very jerky in scenes with
linear motion. Some scenes were so jerky they were unusable and so I
generally had a second avisynth script importing footage and doing a
different approach for scenes where I wanted to retain smoothness of
motion:
MPEG2Source("C:\yourfolder\blah.d2v")
ConvertToYUY2(interlaced=true)
SmoothDeinterlace(tff=true,
doublerate=false)
[Note, if you are doing to be converting your
footage to RGB32 for editing then you can use ConvertToRGB32(interlaced=true) instead and avoid converting twice.]
This is full deinterlacing and worked well on the particular source I
was using at the time - other methods may work better for your
sources so you should refer to the section on pure interlacing or even
the method used in 'mostly pure interlaced' for some
alternative approaches. In particular TDeint and/or BlendBob should
also work well. Note that the 2nd script produces 29.97fps
footage - you can use the assumefps in avisynth to make it match the
first script for editing.
Note well: if you try any bob deinterlacing on this kind
of footage it can often produce situations where you have different
parts of an image moving in different frames which looks really nasty.
There is no quick fix with this kind of footage and there
is definitely no perfect solution, only different ways with different
pros and cons. When you have footage this bad, you have to experiment -
try as many methods as you can to see which works best.
Full Field
Blended Footage
Unfortunately, I do not have much hands-on experience of this kind of
footage. I can, however, give you some pointers.
PAL users:
- Use one of the deinterlacing options described in
the 'pure interlacing' section below. They will not remove the blends
but will retain the smoothness of the footage.
- Use TDeint (see below) as its motion compensation can massively
assist with blended footage.
- Try removing the blending (see below)
NTSC users (less likely):
- Try treating it just like the half-field blending
type above and see how it comes out.
- If you don't mind the blends then try treating it as pure interlaced.
- Use TDeint (see below) as its motion compensation can massively
assist with blended footage.
- Try removing the blending (see below)
Pure Interlaced
- Deinterlacing options
When you have a source where looking for progressive frames is mostly
futile, it is often best to just attempt to deinterlace the source.
There are many different ways to deinterlace things and, like many
things, the best method will depend on your source.
Adaptive and Motion Compensated Deinterlacing:
These techniques generally search for areas of movement and deinterlace
those
areas or, from the other viewpoint, search for areas without motion and
leave them alone. It's a useful approach but is often made difficult by
the fact
that it is so easy to have false matches. If you set the threshold too
low
you get interlacing coming through... too high and you start messing
with frames that were decent to start with. It's problematic but these
techniques are worth a shot to see if they can help you out.
There are a number of deinterlacers that use this approach:
FieldDeinterlace() - this is the Avisynth Version of the
old virtualdub Smart Deinterlacer. You will want to tweak the
thresholds of this manually to fit your source if you use it. The
numerous parameters are described in the Decomb 5 Reference Manual.
I've never
really found this deinterlacer to give me entirely satisfactory results
but different sources require different methods so you should
experiment. Each source is different so any of these deinterlacers
could give the best results.
SmoothDeinterlace(tff=true,
doublerate=false) - this is an
updated version of the old Area
Based Deinterlacer and I think it's pretty decent at what it does. You
need to specify field
order and it will only accept YUY2 or RGB32 footage so you will want to
use something like:
ConvertToYUY2(interlaced=true)
SmoothDeinterlace(tff=true,
doublerate=false)
[If you are going to be converting your
footage to RGB32 for editing then you can use ConvertToRGB32(interlaced=true) instead and save converting it twice.]
KernelDeint(order=1, threshold=10) - This is a nice new deinterlacing
approach. Order is just like the same setting in Telecide. 'Threshold'
detects motion areas for deinterlacing - if too many areas are being
deinterlaced then increase the threshold; if too few then reduce it. As
with all Donald Graft filters, the settings are well documented and can
be found in the start menu.
TomsMoComp(1,5,1) - This
deinterlacer uses both adaptive
and motion compensated deinterlacing and is generally considered to be
a pretty worthy all-rounder and the deinterlacer everything else is
compared to.
It's not perfect, no deinterlacer is, but it is good at what it does.
The commands are given as numbers in order. 1 specifies this is Top
Field First (0 would be BFF). 5 is the search effort (which is
the value recommended) and 1 turns on the vertical filter. If you get a
lot of
noise then try setting the last number to 0 to turn off the vertical
filter. This deinterlacer has some other interesting modes too, which
you may wish to investigate in the documentation.
Bobbing and Field Interpolation Deinterlacing:
This is a technique that takes the fields and resizes them to full
frame size. That's the start at least. Different bob deinterlacers do
all sorts of different things after that that give different results.
If you have a problem with interlacing appearing in your video with
other methods then bob deinterlacing will definitely get rid of that -
unfortunately they have other problems such as shimmering, aliasing
(jagged edges) and so on but they are worth trying out as they are
usually smooth and almost always interlacing free. Note that some
bobbing methods double the framerate and so Decimate(2) has been added to the end to keep these
29.97fps. You can remove this if you so desire.
DGbob(order=1,mode=0) - Order is just like with Telecide.
Mode=0 will keep the frame rate the same as the source although it
works best at double framerate (mode=1) you may not want to edit with
that. For tweaking read the DGBob Help documentation in the amvapp
start menu directory.
SangNom(order=1,aa=32)
- Very different approach -
not your usual bob at all. This filter interpolates fields and is very
powerful when dealing with pure interlaced material. Order means field
order just like Telecide,
aa means Anti-Aliasing and will try to smooth out those lines when
interpolating making it particularly useful for anime. Can be very
pretty.
ConvertToYUY2(interlaced=true).SSTomsMoComp("tff") - tff obviously for
Top Field First, replace with "bff" as required. This is a 29.97fps bob
that uses a mix of supersampling and TomsMoComp. Works pretty well imo.
KernelBob(4).Decimate(2) - Bob deinterlacer that takes advantage
of kerneldeint's processing. The number is the threshold used - see
KernelDeint.
TMCkernelbob(th=7,tff=true).Decimate(2) Another bob deinterlacer which uses both
TomsMoComp and KernelDeint for constructing the frame. th is threshold
(deafult 7) and tff is Top Field First - true or false.
LoadTDeint().TDeint(mode=0,order=1) Tdeint is a bob deinterlacer that uses motion
adaptation and all kinds of interesting interpolation tricks. This is a
really excellent bobber and worth trying. mode=0 outputs the
original framerate, mode=1 outputs double framerate.
LoadTDeint().TDeint(mode=1,order=1).BlendBob()
BlendBob is a special way of processing bobbed footage that tries to
match fields from the same original frame and blends them to restore
the original quality. Can work with any bobber set to output double
frames - simply replace the TDeint commands with one of the bobbers
above.
Removing
Blending
This is complicated stuff and success is the exception not the rule. I
can give you some general pointers but a lot of this is advanced and
experimental so you are largely on your own. Essentially the theory
goes like this:
1) Do bob deinterlacing
2) Find the frames which are blended
3) Compare them to their neighbours
4) Use this comparison to construct the original frames if possible
5) Decimate to get the original framerate.
There have been a few attempts at doing this: Unblend, RePal,
Restore24, UnblendPattern and PFR (Progressive Frame Restorer). RePal
is for footage that was originally
pal and converted to NTSC, however, so it's unlikley to be any use for
anime.
Here's an example of how you would try removing blending on PAL footage.
KernelBob(4) #or some other
frame-doubling bob deinterlacer
Unblend()
Decimate(4).Decimate(3) #to
get the frames back to normal
Frankly if you can work this stuff out then I take my hat off to you.
Doing searched on the doom9 forums for the above filters will give you
clues as to how to attempt this kind of thing but it's not the kind of
filtering that has been acheived with any amazing and easily
duplicatable level of success.
Dealing with
the new FPS
Now that you have successfully made your footage progressive you need
to think about what effect this change has on things. This all depends
on the new framerate.
23.976fps Footage
You have done IVTC on NTSC material and now have progressive frames at
23.976fps. This is good, particularly when editing with programs such
as Vegas which support 23.976fps projects.
Be warned that Adobe Premiere can't handle 23.976fps without
screwing up and yes that includes Premiere Pro (well, mostly...
you'll need to read this page for more
information on that). 23.98fps is NOT
the same as 23.976 and you will get things mistimed and miscalculated.
If you are using
Premiere you basically have two options
1) Convert to 24fps and edit with that or
2) Convert to 29.97fps, have sped up footage and produce progressive
NTSC video.
I use option 1 in all my videos with the exception of some multi-editor
projects where I often create progressive 29.97fps videos just so they
are easy to intergrate with other people's videos.
If you want to edit the video at 24fps then you will need to read this
page on how.
If you want to just edit it as progressive 29.97fps then add AssumeFPS(29.97) after
your have done your IVTC filtering. Remember that your footage is now
progressive so you should set any field rendering options to "no
fields" or disabled.
29.97fps Footage
Your interlacing removal has left you with a 29.97fps source. You can
go straight ahead and edit this as NTSC. It does not have a field order
(set rendering to "no fields" in your editing program) but it can be
considered either top field or bottom field by any playback device so
it is good for converting to DV or MPEG2 or anything you like for
conventions. It's also fine for making internet distribution encodes as
the frames are progressive.
25fps
If you have progressive 25fps footage then you can quite simply edit
with the regular PAL profiles in your editing application. Remember
that field rendering should be set to "no fields" if you now have
progressive frames and that you can
create DV and mpeg2 files with any field order you like as it will be
look the same.
xx.xxfps
If you have a framerate that is not one of the above then you have
either a) Used a bob deinterlacer that has doubled the framerate or b)
done frame decimation on a source that should not be decimated such as
PAL footage. If your answer is a) and you want the framerate returned
then try putting Decmate(2) at the end. If the answer is b) then you
should check your settings and re-read this page - you may be trying to
do something silly like IVTC PAL footage with cycle=5 or do IVTC on a
source that has already been put (incorrectly?) through Force FILM in
DGIndex.
OK so you've now dealt with your interlaced footage, you need to have a
quick think about what to do about Aspect Ratios.
AbsoluteDestiny -
September 2004
|