View Single Post
Old 22nd March 2019, 05:16   #36  |  Link
hello_hello
Registered User
 
Join Date: Mar 2011
Posts: 4,823
Quote:
Originally Posted by mbcd View Post
Could it be possible to deblend odd and even field separate ? So you would get clean odds and evens ... dont know if that would work ...
I'm not sure.
SRestore normally works by just picking out the non-blended frames after bobbing (as far as I know), so it doesn't actually deblend (although it must look for it). Except for it's mode for deblending progressive 29.97fps video that was creating by blend de-interlaced telecined material. It can deblend that pretty well, as long as the pattern is fairly consistent, but if it's not truly blend de-interlaced telecined 29.97fps, it puts out all sorts of horrible artefacts, so it must rely on a consistent blending pattern.

Here's something else I discovered a bit by accident. It might be possible to use TFM for the whole clip. You don't get out of splitting the clip with Trims, but as TFM (I'm pretty sure) only de-interlaces where it detects combing, it should retain more detail than bobbing and deleting frames. The trick seems to be to force TFM to field match from a particular field. Try this (there's a link to a sample below):

A = last
B = A.TFM()
C = A.TFM(field=0)

B.Trim(0,292) ++ \
C.Trim(293,293) ++ \
B.Trim(294,723) ++ \
C.Trim(724,965) ++ \
B.Trim(966,966) ++ \
C.Trim(967,0)

AssumeFPS(24000,1001)
QTGMC(InputType=1, EzDenoise=1)
crop(16, 6, -14, -6)
Spline36Resize(704,528)
Gradfun3()

I think I had SelectEven and SelectOdd the wrong way around in my previous post. For the top field, which is the first field, to be at the top, I think it should have been

A = last.SeparateFields()
B = A.TDeint(mode=1).SelectEven()
C = A.TDeint(mode=1).SelectOdd()
StackVertical(B,C)

Anyway.... it seems if you change the field TFM matches from to the bottom field where the top fields are blended, when it de-interlaces, it must interpolate the pixels from the unblended field with new ones, and therefore seems to deblend the frame. I'm guessing... but I can't think of another logical reason as to why it works. When the bottom fields are blended, you field match from the top field, which is the default for a top field first video. Same for the sections without blending.

At least the above way you can get benefit from QTGMC's cleaning up the video, but it'll be much faster than bobbing with QTGMC.

I aso tried an encode with TFM taking the combed pixels from QTGMC while still running QTGMC in progressive mode to clean up the rest. I think it's an improvement bit it's also slow. Check out the railings in front of the windows as they walk past. The version with TFM using QTGMC's de-interlacing is more stable, but maybe it's not worth the hit on encoding speed.

A = last
DeintClip = A.QTGMC(Preset="medium")
DeintClipB = DeintClip.SelectEven()
DeintClipC = DeintClip.SelectOdd()
B = A.TFM(Clip2=DeintClipB)
C = A.TFM(Clip2=DeintClipC, field=0)

B.Trim(0,292) ++ \
C.Trim(293,293) ++ \
B.Trim(294,723) ++ \
C.Trim(724,965) ++ \
B.Trim(966,966) ++ \
C.Trim(967,0)

AssumeFPS(24000,1001)
QTGMC(InputType=1, EzDenoise=1)
crop(16, 6, -14, -6)
Spline36Resize(704,528)
Gradfun3()

That all works, but I'm really not all that sure I understand why at the moment.

VTS_02_1.demuxed tfm.mkv

VTS_02_1.demuxed tfm qtgmc.mkv

Last edited by hello_hello; 22nd March 2019 at 05:45.
hello_hello is offline   Reply With Quote