Log in

View Full Version : Diagonal distortion on vertical lines


bizz & buzz
15th August 2010, 19:38
Hi,
I'm trying to to remedy this NBA games DVD, and this strange artifact is driving me nuts! It's appears throughout the DVD and I don't know how to handle it.
Help would be much appreciated :)

Sample Link (http://www.mediafire.com/?65nq2bvc5frcuyc)

Pic (far end of the corridor, around his tie, etc..)

http://img834.imageshack.us/img834/8814/diagonaldistortionpic.jpg

pandy
16th August 2010, 13:41
http://forum.doom9.org/showthread.php?t=132194
http://forum.doom9.org/showthread.php?t=154863

bizz & buzz
16th August 2010, 23:50
Thanks for your suggestions Pandy.
I fiddled with these filters but unfortunately they helped only a little bit.
It got me thinking that maybe something like NNEDI3 (modified to work vertically) might do the trick. But I don't know how to build a mask so that it will only influence the artifacted area and not the whole frame... :(

pandy
17th August 2010, 12:22
try to crop this area and analyze only this particular fragment of frame - this artifact looks like create by some constant frequency source - maybe poorly implemented adaptive combfilter - so don't give-up those mentioned threads are best to solve Your problem - just try (removing constant frequency pattern in frequency domain) - spatial domain are far from optimal to deal with this.

2Bdecided
17th August 2010, 12:42
Pandy's right - it's residual dot-crawl. I don't think NNEDI is going to be any good for this at all.

btw, it's trivial to make nnedi work vertically - just turnright().nnedisomething().turnleft() - but I doubt this will solve your problem.

Cheers,
David.

Wilbert
17th August 2010, 14:16
Try CNR2.

markanini
18th August 2010, 16:01
Mdegrain can sometimes do wonders for analogue artifacts like this. Worth a try.

bizz & buzz
19th August 2010, 13:38
* Sorry for the late reply, my computer crashed on me a few days ago *
thanks for your help guys, I'll follow you offers and report the results back.

*.mp4 guy
20th August 2010, 07:56
None of the real world applicable dot crawl removers work at all on this. However it is a dot crawl related artifact, and an extremely brute force dot crawl removal method is reasonably succesfull in removing it, but it introduces a lot of blur.

Mt_convolution( Horizontal = " -1 3 -3 5 -9 14 -16 26 -107 490 512 490 -107 26 -16 14 -9 5 -3 3 -1 ", vertical = " 1 ", u=2, v=2)
Mt_convolution( Horizontal = " -1 3 -3 5 -9 14 -16 26 -107 490 512 490 -107 26 -16 14 -9 5 -3 3 -1 ", vertical = " 1 ", u=2, v=2)
Mt_convolution( Horizontal = " -1 3 -3 5 -9 14 -16 26 -107 490 0 490 -107 26 -16 14 -9 5 -3 3 -1 ", vertical = " 1 ", u=2, v=2)

None of the methods for mitigating sharpness loss that I tried worked very well, this was the best.

FIR = Mt_convolution( Horizontal = " -1 3 -3 5 -9 14 -16 26 -107 490 512 490 -107 26 -16 14 -9 5 -3 3 -1 ", vertical = " 1 ", u=2, v=2)\
.Mt_convolution( Horizontal = " -1 3 -3 5 -9 14 -16 26 -107 490 512 490 -107 26 -16 14 -9 5 -3 3 -1 ", vertical = " 1 ", u=2, v=2)\
.Mt_convolution( Horizontal = " -1 3 -3 5 -9 14 -16 26 -107 490 0 490 -107 26 -16 14 -9 5 -3 3 -1 ", vertical = " 1 ", u=2, v=2)
Diff = mt_makediff(FIR, last)
THR=string(240000)
Median = MT_Luts(Diff, Diff, mode="med", pixels = " 2 0 -2 0 4 0 -4 0 " , expr = " X Y - X Y - X Y - abs 1 + * X Y - abs 1 + \
"+THR+" 1 >= "+THR+" 0.5 ^ "+THR+" ? + / - 128 +", u=1,v=1)
ReconstructedMedian = mt_makediff(Diff, Median)
mt_adddiff(FIR, ReconstructedMedian)

Maybe someone else can do better, I didn't do an exhaustive search by any means. Unfortunately it looks like the interference is much stronger then any signal in the effected frequencies, so doing significantly better then this will be difficult. Also, both scripts are purely horizontal, so you don't need to bob or deinterlace if you don't want to.

bizz & buzz
21st August 2010, 19:08
[Side Note]

The reason I thought NNEDI3 might be of help is that on similar artifact, only on horizontal lines, I managed to get good results with NNEDI3(nsize=3) in combination with TGMC:

left: source.tdeint(mode=1), right: source.TempGaussMC_beta2(edimode="nnedi3",search=5,SVthin=0.5,Sbb=3)
http://img801.imageshack.us/img801/3163/source1.th.jpg (http://img801.imageshack.us/img801/3163/source1.jpg) http://img841.imageshack.us/img841/5111/result1.th.jpg (http://img841.imageshack.us/img841/5111/result1.jpg)

left: source.tdeint(mode=1), right: source.TempGaussMC_beta2(edimode="nnedi3",search=5,SVthin=0.5,Sbb=3)
http://img442.imageshack.us/img442/1070/source2.th.jpg (http://img442.imageshack.us/img442/1070/source2.jpg) http://img829.imageshack.us/img829/4551/result2.th.jpg (http://img829.imageshack.us/img829/4551/result2.jpg)

bizz & buzz
21st August 2010, 19:09
Replying after attempting the previously suggested options:

First thread (Dfttest) - My comprehension of how things work in the frequency domain is seriously lacking, so Although I played with it a lot and did try to make sense of the Readme, I failed in getting good results with it.

Second thread (Mp4guy's Destripe function) - got some nice results from it, but the tailored script he posted later in this thread was better.

Cnr2 - Couldn't get much out of it.

Mdegrain - Couldn't get much out of it too.

Mp4guy's tailored script - Best so far, in spite of it's blurring. I tried to improve the result with different sharpeners, but to no avail...