Log in

View Full Version : Dotkill - spatial dotcrawl remover


Myrsloik
31st December 2015, 17:37
Outdated stuff removed. See https://github.com/myrsloik/DotKill for documentation and current release.

Now it's spatio-temporal too unlike what the topic implies. Things change...

KingLir
20th February 2017, 12:43
Thank you! Can you share macOS build ?

Myrsloik
20th February 2017, 12:44
Thank you! Can you share macOS build ?

No, it's currently a prototype filter where I try different ideas and I don't plan on releasing the source until I have added more parts to it.

KingLir
24th November 2017, 10:41
No, it's currently a prototype filter where I try different ideas and I don't plan on releasing the source until I have added more parts to it.

Download link is down.
BTW- any progress on this ? If not, maybe you can consider releasing the source or and/or macOS build ?

Myrsloik
24th November 2017, 10:45
Download link is down.
BTW- any progress on this ? If not, maybe you can consider releasing the source or and/or macOS build ?

No real progress, I try some ideas now and then but most fail horribly or require more time to prototype than I can spare. I guess I could release the source since there are about 0 other spatial only dotcrawl removers and the idea is relatively simple. Will clean it up in a few days.

KingLir
24th November 2017, 11:03
No real progress, I try some ideas now and then but most fail horribly or require more time to prototype than I can spare. I guess I could release the source since there are about 0 other spatial only dotcrawl removers and the idea is relatively simple. Will clean it up in a few days.

Thanks !!

KingLir
24th November 2017, 13:53
BTW- did you saw this script ?
https://forum.doom9.org/showthread.php?p=1673472#post1673472

Myrsloik
24th November 2017, 14:05
BTW- did you saw this script ?
https://forum.doom9.org/showthread.php?p=1673472#post1673472

Maybe I've seen it but scripts like that are just too much effort to reverse engineer.

There are some interesting tricks you could use for telecined material though (since you know fields are duplicated in a pattern) but it doesn't appear like that script uses it.

KingLir
24th November 2017, 20:54
Maybe I've seen it but scripts like that are just too much effort to reverse engineer.

There are some interesting tricks you could use for telecined material though (since you know fields are duplicated in a pattern) but it doesn't appear like that script uses it.

I see.

Will the source of DeDot will help ?

http://avisynth.nl/index.php/DeDot

Myrsloik
24th November 2017, 21:03
I see.

Will the source of DeDot will help ?

http://avisynth.nl/index.php/DeDot

Linking random stuff doesn't help. I've looked at most simple ideas already

KingLir
24th November 2017, 22:04
Sorry if it's look like I am linking to random stuff. I only linked to it because it says that it's a Spatial dot crawl removal.
Good to know you checked and invested much in this. Much appreciated.

Myrsloik
24th November 2017, 22:47
https://github.com/myrsloik/DotKill

KingLir
25th November 2017, 00:08
https://github.com/myrsloik/DotKill

Many Thanks !!

1.
I was managed to build on macOS with the following:
gcc -c -fPIC ${CFLAGS} ${CPPFLAGS} -I. $(pkg-config --cflags vapoursynth) -o main.o dotkill1.cpp
g++ -dynamiclib -undefined suppress -flat_namespace *.o -o libdotkill.dylib

2. It does seems to remove nice amount of DotCrawl but not for frames before and after scene change. It's like it takes time for it to "kick in".
Got an idea how to fix this ?

3. When you have to use de-interlacer like QTGMC ( for PAL DVD- 24fps master that was converted to 25fps ) it seems it work best when you apply DotKill before QTGMC. Does it make sense ?

Myrsloik
25th November 2017, 00:13
2. It's not temporal so I'd need a sample and script to figure out why that happens

3. It's the worst on interlaced since it will blur between fields. Progressive and after ivtc are the optimal cases. Before qtgmc is probably the best best place.

What is the source material anyway? Field duplicated 24fps to make it 25fps?

KingLir
25th November 2017, 00:24
2. It's not temporal so I'd need a sample and script to figure out why that happens

3. It's the worst on interlaced since it will blur between fields. Progressive and after ivtc are the optimal cases. Before qtgmc is probably the best best place.

What is the source material anyway? Field duplicated 24fps to make it 25fps?

Here is my test sample:
https://mega.nz/#!xwhSyCZR!pwCAjPq2q-aSKBueoQcdeEsVlUkcX6Sc8Sbpf056aM8

I am trying to remove dot crawl from the carpet and above the door (first scene) and from the kitchen wall white lines (second scene).
I only manage to remove some from the white lines but not all - and only with high napply values (I even tried napply=45 with the same result as 4 or 5).

Cool to know that it's best place before qtgmc - which is a must (unfortunately) in this case, following by srestore.

Myrsloik
25th November 2017, 18:28
The scenechanges are easily explained. The source was probably smart bobbed to make it progressive before converting it to pal framerate. And it was a really shitty filter as is customary in PAL dvds. So even static detail is discarded near scene changes for no real reason and dotcrawl detection doesn't work when fields are interpolated.

The dotcrawl most likely existed in the NTSC source that was used as input for the PAL conversion. So then you destroy the original dotcrawl structure and also any possibility of recovering detail. Blend two adjacent frames together and the dotcrawl is still there.

I guess what I'm trying to say is that your source material is shit and death is the only way out.

KingLir
26th November 2017, 11:35
I guess what I'm trying to say is that your source material is shit and death is the only way out.

Yeah, I figured :)

Another member helped me to remove all dots in a very complex way while preserving most of the details.
If you like, I can share the details (script lines) over PM.

Myrsloik
28th December 2017, 20:33
Fixed a reference leak in it. For those of you who compile it yourselves...

Myrsloik
31st July 2021, 19:12
Almost a year ago I updated the filter with many new functions and ideas. The main takeaway is that it now use the temporal redundancy of telecined material to be able to achieve much better recovery than many other filters. The only downside is that you need to manually set the telecine pattern offset.

Nobody apart from a few discord users seem to have realized this so I thought I'd post it.