Some of my findings:
Deinterlace video mostly exist on “old” DVD sources. After industry moved to better bandwidth/TVs the video became progressive.
DVD interlaced sourced are of different frame rates:
25fps
29.97 fps
And nearly all of them have mixed content. I mean some scenes are progressive and some are fully interlaced. By fully interlaced I mean that each field represent a frame.
Mpeg source can contain flags that show where progressive frames and where interlaced scenes but as I’v found in most cases there are no such flags.
Here is the problem of current Topaz Labs deinterlacer. It is trained to deinterlace only content where each field is a different frame (there is a movement between fields).
If there is no movement and fields can be combed (bottom field + top field = full frame without movement) - deinterlacer fails (artifacts, strange movement to another frame).
Like for example if I deinterlace 25 fps movie that has mixed scenes using Robust version. Then progressive scenes are ok, but fully interlaced have weird movement.
If I deinterlace using not robust version, then progressive frames loose details (because different half of same frame are used to reconstruct same frame 2 times resulting in same frame with lost detail). But fully interlaced scenes are deinterlaced very fine (except that they should be only deinterlaced without any other processing - denoise/sharpening etc).
So process of properly deinterlacing such mixed content is quite a hard task.
Here are what needs to be done.
- You need to find out which scene is progressive and which is full interlace.
Progressive scene can be recovered by correctly combing fields.
Progressive scenes in 29.97 source also need pulldown to remove duplicate fields.
From content to content which field is duplicated for pullup is different. - Full interlaced scenes need deinterlacer like Topaz Labs one that interpolates (guesses) dropped fields.
But in result you get 2x fps (better to retain double fps and not to drop half of them)
At last we need to have movie with different frame rate scenes. Like scene 1 with frame rate 24000/1001 (progressive combed scene with pulldown), scene 2 (30000/1001 * 2 - fully deinterlaced scene). Mixed frame rate is fine for mkv files with timecodes.
This will retain the movie as it should be viewed.
And then there are some other complications may be.
Sometimes source contain bad fields (not frames). For example there can be a field that looks like two fields were blended together. Its impossible to do something good with this field. It must be dropped. And it can be 2 or 3 such fields one after another.
In film source such frames can be replaced using frame interpolation (Apollo/Chronos). But in animation Apollo & Chronos will not help much.
As you see its nearly impossible to create automatic solution. Maybe its better to program some user interface where user can get help from models and can tweak what to do on each scene.
And also one idea for deinterlace topic.
There are sources of improperly deinterlaced video where instead of pull down - interlaced frames (because of pull up field duplication) were blended. So video in result contain progressive frames mixed with blended frames.
We need model that drops blended frames and optionally interpolates them with chronos/apollo.
Optionally because chronos/apollo can’t interpolate animation normally and for animation its better to just drop them.