Scintilla's Guide to AVISynth Postprocessing Filters: Dealing with Dot Crawl

Checkmate - DeDot - LUTDeCrawl - TComb

( Home - Spatial Smoothers - Temporal Smoothers - Spatio-Temporal Smoothers - Sharpeners - Dealing with Rainbows )


Man, kids these days don't know how good they have it, what with their component cables and their all-digital connections over HDMI... back in MY day, we had to watch our cassette tapes and DVDs over COMPOSITE cables -- which meant sending analog data for the entire video stream over one conductor! And we LIKED it that way!

... Oh, who am I kidding? Compared to today's technologies, it sucked. Especially because it was prone to crosstalk artifacts: that is, dot crawl (in the luma) and rainbows (in the chroma). Sadly, some animé series (mostly older ones) have been transferred to DVD in such a way that these wonderful artifacts were introduced along the way and hardcoded into the video stream, so that you can't get rid of them on playback no matter how good your cables are. To make it even more annoying, even though we have AVISynth filters for dealing with these problems, they usually have to be applied BEFORE any inverse telecine (IVTC) operations in order to be effective. Those of you who edit directly with scripts will appreciate what a problem that is.

I'm sure you've all seen dot crawl at some point in your lives; for those unfamiliar with the term, it looks like this. It only shows up in the luma (Y) plane and consists of a checkerboard pattern that typically flickers back and forth every frame. Sometimes it may not be noticeable when you're just playing a DVD, but then you'll see it when you stop on a still frame. Thankfully, most modern animé releases do not have this problem; but if your source does, then this is the page for you.

I'm only going to bother with one comparison screenshot for this entire page, and I'm going to put it right up front, because all of these filters should have the same effect when things go right. It's from the opening sequence for X, which oddly enough was plagued with dot crawl despite the actual episodes themselves being pretty clean (hover mouse over image to see filtered version):

mf's solution, coded by prunedtree.

Type: Plugin
Found in file: Checkmate.dll
Author: mf and prunedtree
Colorspaces: YV12 only
Interlacing: Usually interlaced only; see usage notes
Speed: Average to kind of slow, depending on the scene

Defaults: Checkmate(thr=???, max=???, tthr2=???)

Usage notes:

According to mf, this filter "contains a robust spatial convolution" and "contains temporal blending that's a bit more prone to artifacts. The filters are applied using fuzzy logic soft-thresholding."
In my experience, it seems to work well enough at the default settings. It works best when the objects that have dot crawl on them are not moving, but it still cleans up a fair deal on moving edges as well. I have not noticed significant problems with artifacts, but the author warns that it WILL generate artifacts at default settings. Setting tthr2=0 generally prevents artifacting; mf suggests doing this only for the frames containing artifacts. Back to top
thejam79's solution. Been around since the days of AVISynth 2.0. Also capable of derainbowing.

Type: Plugin
Found in file: De.dll
Author: thejam79; AVISynth 2.5 port and YV12 support by Minamina
Homepage:; English wiki page here:
Colorspaces: YUY2 or YV12
Interlacing: Usually interlaced only; see usage notes
Speed: Blazingly FAST!!

Defaults: DeDot(luma2d=20, lumaT=20, chromaT1=15, chromaT2=5)
Recommended (if using only for dot crawl): DeDot(luma2d=20, lumaT=20, chromaT1=0, chromaT2=255)

Parameters: Usage notes: DeDot has been around a long time and still remains quite a capable dot crawl removal filter; I haven't seen an alternative yet that can match its blazing speed. Even better, it can be used to remove both dot crawl AND rainbows simultaneously if desired (see the derainbowing page for more info). However, I cannot get it to touch dot crawl on moving targets, and there's no explanation of its design principle anywhere. Back to top
My solution. No spatial component.

Type: Script function
Requires: MT_MaskTools (aka MaskTools v2.0)
Author: Scintilla
Colorspaces: YV12 only
Interlacing: Usually interlaced only; see usage notes
Speed: Average to fast, depending on the scene (because of scene change detection); even faster if usemaxdiff=false

Defaults: LUTDeCrawl(ythresh=10, cthresh=10, maxdiff=50, scnchg=25, usemaxdiff=true, mask=false)

Parameters: Usage notes: LUTDeCrawl came about in 2008 when I suddenly figured out how to properly apply my theory of operation for LUTDeRainbow to the similar problem of dot crawl (I had originally tried to tackle the problem immediately after completing LUTDeRainbow, but somehow those original attempts failed miserably). It is a purely temporal filter; the idea is that if a pixel's two temporal neighbours are very close to each other in both luma and chroma, then the pixel is likely to be dot crawl and may be replaced with the average of its own luma and the average luma of its temporal neighbours. (And if the pixel is not dot crawl, but the SAME as its neighbours instead of fluctuating, then we can still do this averaging and it'll still look the same, so no harm done there.)

But, since there are no spatial considerations in this algorithm, this filter is more prone to artifacts than some others... so I added in the capping of fluctuations and the scene change detection in order to cut down on artifacts. However, that still doesn't change the fact that this filter will usually miss dot crawl on moving targets (like DeDot). Back to top

Tritical's solution. Also capable of derainbowing. Seems to have no spatial component.

Type: Plugin
Found in file: TComb.dll
Author: Tritical
Colorspaces: YUY2 or YV12
Interlacing: Usually interlaced only; see usage notes
Speed: Below average (when mode=0)

Defaults: TComb(mode=2,fthreshl=4,fthreshc=5,othreshl=5,othreshc=6,map=false,scthresh=12.0)
Recommended (if using only for dot crawl): TComb(mode=0) (see usage notes for tweaking procedure)

Parameters: Usage notes: Like Checkmate, TComb is a relatively recent plugin that works at below-average speeds (however, TComb's kinda-slowness is more consistent, whereas Checkmate's varies depending on the scene). Advantages of TComb include the tweakability (of course, almost anything would be more tweakable than Checkmate) and the fact that it can also be used for rainbows; disadvantages include the fact that it doesn't do much on moving targets. Back to top
Home - Spatial Smoothers - Temporal Smoothers - Spatio-Temporal Smoothers - Sharpeners - Dealing with Rainbows

Last updated on 6/23/09
Questions? Comments? Concerns? Contact Scintilla
Fight Spam! Click Here!