Hi Friends,
I have a clip here, and the credits look strange. Is this what would be characterized as "dot crawl"? Would checkmate fix this?
http://files.videohelp.com/u/183506/beauty.demuxed.m2v
Thanks!
Try StreamFab Downloader and download from Netflix, Amazon, Youtube! Or Try DVDFab and copy Blu-rays! or rip iTunes movies!
+ Reply to Thread
Results 1 to 26 of 26
Thread
-
-
Yes it's dot crawl. Checkmate should mitigate it, but as with anything, be careful of unwanted side effects.
-
is dedot better? I have been playing with both, but not having that much luck. thanks!
-
Yes, those are dot crawl artifacts but the MPEG 2 encoding (or something) has screwed them up so they're no longer "clean". Try values around Checknate(thr=10, max=20, tthr2=20). Be sure to run Checkmate before IVTC or other filters. Note that 3d comb filters really only work well in still areas.
Last edited by jagabo; 12th Oct 2013 at 17:51.
-
Is it possible to apply a filter like checkmate to only part of a clip, but leave the rest untouched? I have been playing around for hours trying to do this with no luck :P
Thanks for the help, Video Gods! -
WhateverSource()
part1=Trim(0,99) # first 100 frames
part2=Trim(100,0) # rest of video
part1=Checkmate(part1, ...)
return(part1++part2) -
Hi!
I tried this, but it's all messed up :P
Mpeg2Source("BEAUTY INVESTIGATOR.d2v")
part1=Trim(0,2751) # first 2751 frames
part2=Trim(2751,0) # rest of video
part1=Checkmate(part1).TFM(part2).TDecimate(part2)
part2=TFM(part2).TDecimate(part2)
return(part1++part2)
What I would like to do is apply checkmate, TFM & Tdecimate to the first 2752 frames or so. Afterwards I would like to apply just TFM & Tdecimate.
Man, Avisynth is hard! Thanks you for all the help!!!Last edited by hizzy7; 12th Oct 2013 at 21:21.
-
Code:
Mpeg2Source("BEAUTY INVESTIGATOR.d2v") part1=Trim(0,2751) # first 2751 frames part2=Trim(2751,0) # rest of video part1=Checkmate(part1).TFM().TDecimate() part2=TFM(part2).TDecimate() return(part1++part2)
Code:Mpeg2Source("BEAUTY INVESTIGATOR.d2v") part1=Trim(0,2751) # first 2751 frames part2=Trim(2751,0) # rest of video Checkmate(part1)++part2 TFM().TDecimate()
Code:Mpeg2Source("BEAUTY INVESTIGATOR.d2v") Trim(0,2751).Checkmate()++Trim(2751,0) TFM().TDecimate()
Code:last = Mpeg2Source("BEAUTY INVESTIGATOR.d2v") last = Trim(last, 0,2751).Checkmate()++Trim(last,2751,0) last = TFM(last).TDecimate()
Oh, note that Trim() includes the first and last frames. So your two trims end up repeating frame 2751. So you want this instead:
Code:part1=Trim(0,2751) # first 2752 frames part2=Trim(2752,0) # rest of video
Last edited by jagabo; 12th Oct 2013 at 22:05.
-
Wow! so many variants! I have a question - If i wanted to apply the following parameters to checkmate, where would they fit in the script below?:Checkmate(thr=10, max=20, tthr2=20),
Mpeg2Source("BEAUTY INVESTIGATOR.d2v")part1=Trim(0,2751) # first 2751 frames
part2=Trim(2751,0) # rest of video
part1=Checkmate(part1).TFM().TDecimate()
part2=TFM(part2).TDecimate()
return(part1++part2)
Thanks, Jagabo!Last edited by hizzy7; 12th Oct 2013 at 22:15.
-
part1=Checkmate(part1, thr=10, max=20, tthr2=20)
or
part1=part1.Checkmate(thr=10, max=20, tthr2=20)
There are many different ways you can format the syntax
With those settings, there is still a bit of dot crawl left over. You can stack other filters to remove more, but dot crawl filters are VERY damaging at the settings required to remove most of the dot crawl - I think this is what vaporeon800 was getting at
So assuming you just wanted to affect the yellow characters, one approach would be to use a mask e.g a hue mask affecting only a range of yellow . This way only the yellow characters are filtered by the dot crawl filters, the rest of the picture isn't damaged . But if the dot crawl artifacts affects other areas that you want to filter as well, this approach won't work very well . If this is something you want to try out , say so
-
Since the framecount begins with zero, that's the first 2752 frames. Maybe that won't make much of a difference to you, if any. But this will:
part2=Trim(2751,0) # rest of video -
-
If you look at the U channel you'll see that the yellow characters stand out from the rest of the picture. So this will serve as a basis for our alpha mask.
Code:UtoY()
But the U channel is half the size (each dimension) of the full picture so we need to upscale it. We also want to massage it so that the characters are white and the rest of the image black
Code:mask=UtoY().Invert().ColorYUV(off_y=-128).ColorYUV(gain_y=512).BilinearResize(width, height)
But the dot crawl artifacts extend outside the characters. So we need to blur and expand the mask to cover an area slightly larger than the characters:
Code:mask=mask.Blur(1.0).ColorYUV(gain_y=50) mask=mask.Blur(1.0).ColorYUV(gain_y=50) mask=mask.Blur(1.0).ColorYUV(gain_y=50) mask=mask.Blur(1.0).ColorYUV(gain_y=50) mask=mask.Blur(1.0).ColorYUV(gain_y=50) mask=mask.Blur(1.0).ColorYUV(gain_y=50) mask=mask.Blur(1.0).ColorYUV(gain_y=50)
Now we have a suitable alpha mask. The parts of the mask that are black will show the original image, the parts where the mask is white will show the filtered image, and the greys in between will be a blend of the original and filtered images.
Let's make a highly filtered image that eliminates the dot crawl artifacts.
Code:CheckMate(thr=10, max=20, tthr2=20) # removes lots of the dot crawl TTempSmooth(maxr=6, strength=6, lthresh=200, cthresh=100, lmdiff=10, cmdiff=15) # removes more of the dot crawl aWarpSharp(depth=15) # sharpen the result a little
It's not very visible in this picture but the strong temporal filter causes blurring and ghosting of moving objects. So we want to use our mask so that only the yellow characters and the area immediately around them are filtered:
Code:Overlay(src, last, 0, 0, mask)
Notice how the boat behind the right-most character is much clearer than in the highly filtered image.
The full script:
Code:Mpeg2Source("D:\Downloads\beauty.demuxed.d2v", Info=3) CheckMate(thr=10, max=20, tthr2=20) TFM().TDecimate() src=last mask=UtoY().Invert().ColorYUV(off_y=-128).ColorYUV(gain_y=512).BilinearResize(width, height) mask=mask.Blur(1.0).ColorYUV(gain_y=50) mask=mask.Blur(1.0).ColorYUV(gain_y=50) mask=mask.Blur(1.0).ColorYUV(gain_y=50) mask=mask.Blur(1.0).ColorYUV(gain_y=50) mask=mask.Blur(1.0).ColorYUV(gain_y=50) mask=mask.Blur(1.0).ColorYUV(gain_y=50) mask=mask.Blur(1.0).ColorYUV(gain_y=50) TTempSmooth(maxr=6, strength=6, lthresh=200, cthresh=100, lmdiff=10, cmdiff=15) aWarpSharp(depth=15) Overlay(src, last, 0, 0, mask)
-
IF the rest of the title section is like the sample you posted, then that approach might be appropriate. But if there are other areas that need filtering, you might need other manipulations. Dot crawl usually occurs in areas that are bright and saturated where this is Y/C crosstalk . So if there were bright red letters, they would probably be affected by dot crawl as well (You can actually see some in the background neon sign) - those won't be affected because they would be EXcluded by the yellow hue mask
Also there is another section before the yellow letters. I would filter that section without the mask, because other things are affected other than yellow
There are many methods to generate masks. The simplest ways usually involve one isolatable characteristic to that distinguishes the region of interest from everything else . For example you might use a chroma key if you had a green screen shot. You might use edges in an edge mask. You might use luma values above a certain threshold value, or below a certain value, etc... In this case you have yellow, so you can use maskhs() with a hue range narrowing on yellow, +/- some masktools operators to tidy up the mask . It's included in the most recent avisynth 2.6 versions, but as a separate function in earlier ones . You could use a chroma key in other programs as well - the principle is the same
When viewing and adjusting the mask, you can think of areas in white as transparent. You can think of it as a top layer that has filters applied "covering up" areas on a bottom layer. Those corresponding areas in white in the mask layer are "seen" from the top layer. 100% black are areas shown on the bottom layer. Intermediate transparency are greyscale values, so a mix of top and bottom layers. So you would adjust the starthue and endhue values while previewing the mask . If you didn't want abrupt transitions, you would feather the mask (essentially blur the edges) - this is more important for things like applying denoisers/degrainers where the sections don't look like they match as well. That greyscale area would be a transitions zone that smooths the blending of the top/bottom layer
I added tcomb to checkmate with santiag (an antialiaser) for the dotcrawl . The settings used are very damaging to fine details because of temporal smoothing, and shouldn't be used without a mask. awarpsharp2 is to thin the edges and mergechroma(awarpsharp2) is to fix the color bleeding out of the characters
For the masktools operators, mt_expand is to grow the mask, the vertical call is in the vertical direction. You need the mask to "cover up" larger than the letters over the color bleed areas
Code:orig=MPEG2Source("beauty.demuxed.d2v", cpu=0) orig crop(14,56,-2,-64,true) #be careful mod4 rules for vertical interlaced crop (cropped before ivtc) cropped=last cropped assumetff() tfm() tdecimate() ivtced=last cropped tcomb(fthreshL=16, othreshL=20) checkmate tfm tdecimate santiag(3,3) awarpsharp2(depth=4) mergechroma(awarpsharp2(depth=10)) filtered=last ivtced converttoyv24() maskhs(starthue=135, endhue=205, coring=false) mt_expand(thy=255).mt_expand(thy=255).mt_expand(thy=255, mode="vertical") binomialblur(1) mymask=last #mymask overlay(ivtced, filtered, mask=mymask) addborders(14,56,2,64)
Filtered , no mask (notice the blurring of details in the background, the boats)
Mask
Filtered with mask (notice the missing background and boat details are intact)
Edit: I see jagabo posted another solution as I was typing. There are many ways to isolate masks, and the general concept of masks is really the key message that you want to learn about hereLast edited by poisondeathray; 13th Oct 2013 at 09:15.
-
This masks stuff is fascinating! I have been experimenting with both scripts. The improvement is incredible. I am trying to apply jagabo's script to this one, with no luck:
Mpeg2Source("BEAUTY INVESTIGATOR.d2v")part1=Trim(0,2751) # first 2751 framespart2=Trim(2751,0) # rest of videopart1=part1=Checkmate(part1, thr=10, max=20, tthr2=20)).TFM().TDecimate()part2=TFM(part2).TDecimate()ret urn(part1++part2)
When I try to apply jagabo's solultion, I get the message "splice: video framerates doesn't match. What am I doing wrong now? OMG, this is so complex! You guys should be brain surgeons!!! Thanks!
Edit: Does anyone know where I can find the santiag.dll? Thanks again!Last edited by hizzy7; 13th Oct 2013 at 09:57.
-
I find masktools very confusing and the documentation unhelpful. I barely know the basics , and always looking for examples to learn from
I get the message "splice: video framerates doesn't match.
Does anyone know where I can find the santiag.dll?
Santiag
http://forum.doom9.org/showthread.php?p=1393006#post1393006
Santiagmod
http://forum.doom9.org/showthread.php?p=1419815#post1419815 -
Code:
Mpeg2Source("BEAUTY INVESTIGATOR.d2v") CheckMate(thr=10, max=20, tthr2=20) TFM().TDecimate() src=last mask=UtoY().Invert().ColorYUV(off_y=-128).ColorYUV(gain_y=512).BilinearResize(width, height) mask=mask.Blur(1.0).ColorYUV(gain_y=50) mask=mask.Blur(1.0).ColorYUV(gain_y=50) mask=mask.Blur(1.0).ColorYUV(gain_y=50) mask=mask.Blur(1.0).ColorYUV(gain_y=50) mask=mask.Blur(1.0).ColorYUV(gain_y=50) mask=mask.Blur(1.0).ColorYUV(gain_y=50) mask=mask.Blur(1.0).ColorYUV(gain_y=50) TTempSmooth(maxr=6, strength=6, lthresh=200, cthresh=100, lmdiff=10, cmdiff=15) aWarpSharp(depth=15) Overlay(src, last, 0, 0, mask)
At least I think i got the code box!!!! -
Ok, is it possible to add this:
Code:Mpeg2Source("BEAUTY INVESTIGATOR.d2v") part1=Trim(0,2751) # first 2752 frames part2=Trim(2752,0) # rest of video part1=Checkmate(part1).TFM().TDecimate() part2=TFM(part2).TDecimate() return(part1++part2)
Code:Mpeg2Source("D:\Downloads\beauty.demuxed.d2v", Info=3) CheckMate(thr=10, max=20, tthr2=20) TFM().TDecimate() src=last mask=UtoY().Invert().ColorYUV(off_y=-128).ColorYUV(gain_y=512).BilinearResize(width, height) mask=mask.Blur(1.0).ColorYUV(gain_y=50) mask=mask.Blur(1.0).ColorYUV(gain_y=50) mask=mask.Blur(1.0).ColorYUV(gain_y=50) mask=mask.Blur(1.0).ColorYUV(gain_y=50) mask=mask.Blur(1.0).ColorYUV(gain_y=50) mask=mask.Blur(1.0).ColorYUV(gain_y=50) mask=mask.Blur(1.0).ColorYUV(gain_y=50) TTempSmooth(maxr=6, strength=6, lthresh=200, cthresh=100, lmdiff=10, cmdiff=15) aWarpSharp(depth=15) Overlay(src, last, 0, 0, mask)
-
There are many ways to format that, here is one:
Code:Mpeg2Source("D:\Downloads\beauty.demuxed.d2v", Info=3) CheckMate(thr=10, max=20, tthr2=20) TFM().TDecimate() src=last mask=UtoY().Invert().ColorYUV(off_y=-128).ColorYUV(gain_y=512).BilinearResize(width, height) mask=mask.Blur(1.0).ColorYUV(gain_y=50) mask=mask.Blur(1.0).ColorYUV(gain_y=50) mask=mask.Blur(1.0).ColorYUV(gain_y=50) mask=mask.Blur(1.0).ColorYUV(gain_y=50) mask=mask.Blur(1.0).ColorYUV(gain_y=50) mask=mask.Blur(1.0).ColorYUV(gain_y=50) mask=mask.Blur(1.0).ColorYUV(gain_y=50) TTempSmooth(maxr=6, strength=6, lthresh=200, cthresh=100, lmdiff=10, cmdiff=15) aWarpSharp(depth=15) Overlay(src, last, 0, 0, mask) filtered=last Mpeg2Source("D:\Downloads\beauty.demuxed.d2v", Info=3) TFM().TDecimate() ivtced=last filtered.trim(0,2751) ++ ivtced.trim(2752,0)
Also, poisondeathray, I am reading your script, but I don't see how the wrapper works. Is the santiag wrapper just a text file that I copy into my plugin folder? Thanks!!!!!
Either copy & paste that text into your script, or use Import() for an .avs (copy & paste it into notepad, rename .txt to .avs), or rename it .avsi and put it in the plugins folder to autoload -
You might find it easier to use ReplaceFramesSimple (part of RemapFrames.dll) rather than Trim. Especially when you have multiple sections. From its docs:
Code:ReplaceFramesSimple(original, replacements, Mappings="[0 99] [500 699]")
By the way, the moving NT logo looks really bad with the filter sequence I gave earlier. It was meant to use only with the later yellow text. -
Here's an example using ReplaceFramesSimple.
Code:Mpeg2Source("D:\Downloads\beauty.demuxed.d2v", Info=3) # first make a unfiltered version (except for TFM TDecimate) unfiltered = TFM().TDecimate() # then make a highly filtered version CheckMate(thr=10, max=20, tthr2=20) TFM() TDecimate() mask=UtoY().Invert().ColorYUV(off_y=-128).ColorYUV(gain_y=512).BilinearResize(width, height) mask=mask.Blur(1.0).ColorYUV(gain_y=50) mask=mask.Blur(1.0).ColorYUV(gain_y=50) mask=mask.Blur(1.0).ColorYUV(gain_y=50) mask=mask.Blur(1.0).ColorYUV(gain_y=50) mask=mask.Blur(1.0).ColorYUV(gain_y=50) mask=mask.Blur(1.0).ColorYUV(gain_y=50) mask=mask.Blur(1.0).ColorYUV(gain_y=50) TTempSmooth(maxr=6, strength=6, lthresh=200, cthresh=100, lmdiff=10, cmdiff=15) aWarpSharp(depth=15) Overlay(unfiltered, last, 0, 0, mask) # At this point you have two videos: "unfiltered" and the heavily filtered "last" # Assuming the sample is the same as the start of the full movie, use # only the heavily filter frames from 166 to 1751 ReplaceFramesSimple(unfiltered, last, Mappings="[166 2751]")
-
Sometimes I'll use Animate() and view the results in an editor. Some examples:
https://forum.videohelp.com/threads/357064-Advice-on-what-filters-to-use-when-convertin...=1#post2253304
https://forum.videohelp.com/threads/343257-How-to-Fix-Patchy-Colour-with-Avisynth?p=214...=1#post2140148
https://forum.videohelp.com/threads/356457-Removing-hue-but-preserving-saturation?p=224...=1#post2246555
Similar Threads
-
Grain reduction and removal of dot crawl among other things.
By cbg in forum RestorationReplies: 19Last Post: 20th May 2013, 12:59 -
Help with Dot Crawl or whatever this is...
By low-fat-al in forum RestorationReplies: 16Last Post: 8th Mar 2013, 11:30 -
Hideous dot crawl
By Mephesto in forum RestorationReplies: 27Last Post: 22nd Feb 2012, 04:51 -
Why does checkmate() anti dot crawl do this to my video?
By darkdream787 in forum RestorationReplies: 3Last Post: 17th Jan 2012, 22:28 -
DVD Playback Dot Crawl?
By darkdream787 in forum DVD & Blu-ray PlayersReplies: 12Last Post: 9th Jan 2012, 23:09