Ceppo
25th February 2022, 23:29
I had an idea, the idea is to compensate the interpolated field from nnedi3 while keeping the original field untouched. If you could give me some feedback on this. I tested it only on telecined material, I don't know if it works on pure interlaced stuff.
nnedi3(-2) (https://ibb.co/Wv88QkM)
Script (https://ibb.co/RDsh3bv)
nnedi3(-2)
src = last
dClip1 = Interleave(Trim(1,0),last,Trim(1,0)).ex_ReduceFlicker(3,true).SelectEvery(3,1)
dClip2 = Interleave(DuplicateFrame(0),last,DuplicateFrame(0)).ex_ReduceFlicker(3,true).SelectEvery(3,1)
aClip1 = mt_average(dClip1.Trim(1,0),dClip1.DuplicateFrame(0),u=1,v=1)
aClip2 = mt_average(dClip2.Trim(1,0),dClip2.DuplicateFrame(0),u=1,v=1)
sClip1 = mt_makediff(aClip1,dClip1,u=1,v=1).mt_edge("sobel",3,3,u=1,v=1)
sClip2 = mt_makediff(aClip2,dClip2,u=1,v=1).mt_edge("sobel",3,3,u=1,v=1)
ScriptClip("""
A = AverageLuma(sClip1)
B = AverageLuma(sClip2)
A > B ? dClip1 : dClip2
""")
dClp = last
bEvn = SeparateFields().SelectEven()
bOdd = SeparateFields().SelectOdd()
nEvn = src.SeparateFields().SelectEven()
nOdd = src.SeparateFields().SelectOdd()
Interleave( \
Interleave(nEvn,bOdd).Weave().SelectEven(),\
Interleave(bEvn,nOdd).Weave().SelectOdd())
nnedi3(-2) (https://ibb.co/Wv88QkM)
Script (https://ibb.co/RDsh3bv)
nnedi3(-2)
src = last
dClip1 = Interleave(Trim(1,0),last,Trim(1,0)).ex_ReduceFlicker(3,true).SelectEvery(3,1)
dClip2 = Interleave(DuplicateFrame(0),last,DuplicateFrame(0)).ex_ReduceFlicker(3,true).SelectEvery(3,1)
aClip1 = mt_average(dClip1.Trim(1,0),dClip1.DuplicateFrame(0),u=1,v=1)
aClip2 = mt_average(dClip2.Trim(1,0),dClip2.DuplicateFrame(0),u=1,v=1)
sClip1 = mt_makediff(aClip1,dClip1,u=1,v=1).mt_edge("sobel",3,3,u=1,v=1)
sClip2 = mt_makediff(aClip2,dClip2,u=1,v=1).mt_edge("sobel",3,3,u=1,v=1)
ScriptClip("""
A = AverageLuma(sClip1)
B = AverageLuma(sClip2)
A > B ? dClip1 : dClip2
""")
dClp = last
bEvn = SeparateFields().SelectEven()
bOdd = SeparateFields().SelectOdd()
nEvn = src.SeparateFields().SelectEven()
nOdd = src.SeparateFields().SelectOdd()
Interleave( \
Interleave(nEvn,bOdd).Weave().SelectEven(),\
Interleave(bEvn,nOdd).Weave().SelectOdd())