VirtualDub and Avisynth filter help?
Hello again,
This is originally what i wanted to ask during my first thread, but that led to various other topics that helped me understand half of what i was trying to do. But now i'm trying to figure out filters.. I've found a couple tutorials but they have left me confused 1/4 of the way through. There isn't much for information for beginners other than personal threads, so i figured i would start a thread for myself. I'm capturing vhs to prores422 and opening with qtsource in avisynth/virtualdub. I was going through a tutorial that had me open up the avisynth script in virtualdub, but i got an error with qtsource. I tried going through some of the filters in both programs, but to be honest there is just so many options and information i feel like this would take me years to even come close to something one might consider a 'good script'. So i'm hoping I can get some better knowledge here.. Example.. https://www.dropbox.com/s/hifa7eqd7kj5cvz/example.mov |
http://sourceforge.net/projects/fcch...time%20Plugin/
Try this. Worked on Windows 7 for me but there's a few alternatives if it doesn't load. |
i'm pretty sure i already installed that plugin because i can open the file fine in virtualdub. but for some reason qtsource won't transfer from as to vd?
|
LordSmurf is actually working on a script that has the best of what most tapes need. I am not sure when he'll be finish, but when he does, it should simplify a lot.
I like to use AvsP, which can feel a little easier, but depending on the filter I actually use XVID4PSP as it can make applying a single filter or two a lot easier. |
Quote:
The VirtualDub QT plugin .vdf file opens various .mov files (if it can), converts the video to RGB (whch you might not want, especially with the video sample submitted), and makes certain assumptions about the video's structure that you might not need or want. I don't know what "transfer from as to vd" means. I guess you mean "avs to virtualdub" ?? If you see VirtualDub or Avisynth error messages, you have to give more detail about what the message says. Avisynth's qtSource plugin consists of qtSource.dll and an html documentation file. The only file that belongs in the Avisynth plugins folder is the .dll. DO NOT COPY html files to Avisynth's plugins folder. The only files that belong in that folder are those that installed with Avisynth, along with plugins that you add as .dll, .avs, and .avsi . Don't keep your own user-created .avs scripts in the plugins folder, as your own scripts are temporary anyway and you'll soon have a plugins folder the size of the Congressional Library if you keep all your scripts there. Don't download plugins or .zip, .rar. or .7z packages into a plugins folder. Somewhere on your computer -- and NOT in the program folder for Avisynth or VirtualDub -- make a separate folder for Avisynth downloads and another for Virtualdub downloads. In those folders, make subfolders for each plugin or filter. Why? Because many zip packages contain such things as files with duplicate names ("readme.txt" comes in hundreds of versions, each with different content). Many plugin packages come with subfolders and uncompiled C++ project files. Some plugin packages contain different versions of a .dll or .avsi filter, but the different versions have identical names. Obviously, that won't work. Keep plugin downloads in their own subfolders, or they will be impossible to manage. Once the package is unzipped or opened, look over the contents or instructions if any, and load the plugin itself into the proper plugins folder for Avisynth or Virtualdub. How plugins are detected for Avisynth and VirtualDub: VirtualDub recognizes .vdf files as plugins. When VirtualDub opens, it scans the plugins folder and internally makes a list of all its plugins, so they will appear in VDub's filter dialog window. Avisynth recognizes .dll, .avs, and .avsi files as plugins. A .dll or an .avsi is automatically detected when an Avisynth script runs. An ".avs" plugin is not an auto loader, they must be explicitly imported using Avisynth's "Import()" function if the script needs them. There are a handful of other .dll's that require a special loading function because of the way they are compiled, but instructions for those plugins always tell you what to do. Two such plugins are yadif.dll and ffms2.dll. If you look at the html document that came with the qtSource plugin, you'll probably notice that "qtSource" is not shown as a function. The name of the plugin isn't always the name of its main function. For example, the QTGMC deinterlacer downloads as an autoloader script over 200 lines long named "QTGMC-3.32.avsi". If you type that name in a script as QTGMC-3.32.avsi or just QTGMC-3.32, you'll get an error. The name of the main function is simply "QTGMC". Many functions and plugins have a long list of parameters that can be set for different values, but most filters -- that's most, but not 100% of them -- can be run with their default settings. Here is how some familiar plugins would be typed using their default settings: QTGMC() LSFmod() MCTemporalDenoise() SangNom() But there are just as many functions and plugins that require at least one parameter to be specified. For example, you don't run these built-in Avisynth functions without setting one or more specific parameters: ColorYUV() Tweak() Trim() AviSource() How do you know what to specify? You look over the documenation and you look at the way others use them. True, much documentation is over the heads of newcomers, but the basic stuff is, well, pretty basic. If you have the qtSource.dll plugin in your Avisynth plugins folder, you can write this script and save it as something named "first run.avs" or whatever name you want, then open it in Virtualdub. Code:
qtInput("Drive:\path\to\video\example.mov",audio=1) Code:
qtInput("E:\forum\pinheadlarry\Aug09\example.mov", audio=1) Code:
qtInput("Drive:\path\to\video\example.mov",audio=1) Code:
info() # <-- info() will run, but it is followed by comment text which is ignored. Like most editors, VirtualDub converts input to RGB32, but for viewing only. What happens to this file if you view it in VirtualDub and then just close it without doing anything? Nothing. If you use "Save as avi..." to output another copy of it, by default VirtualDub outputs uncompressed RGB24. Otherwise you have to specify a colorspace and compressor for output. If saved in other colorspaces or compressors, your original 244kb example.mov would by default save the file as follows: (uncompressed RGB24): 1,233 kb (comcompressed YUY2): 825 kb (lossless huffyuv YUY2): 255 kb (lossless Lagarith YUY2): 235 kb By default audio is saved as uncompressed PCM unless you specify otherwise. |
Thanks sanlyn for the very informative post. My ego hopes i didn't come off as incompetent as to not know do simple tasks as install or call a plugin. But I still do appreciate the answer don't get me wrong.
i double checked and yes, i did have that quicktime plugin installed for virtualdub. After removing some filters i blindly added to the avs script, i was able to open the script in virtualdub. So obviously that was my fault for just assuming the script wouldn't transfer. Here is the tutorial i was following. I know it's using a cartoon, but i figured i could adjust the settings to my liking. But half way through i got confused and just stopped. Is the article worth a revisit? http://www.animemusicvideos.org/guid...spostqual.html I'll have to reread your post and do some googling before i ask more technical questions. But when you said 'filters depend on what i want to do', i didn't realize there were different spectrums to cleaning up a video? I'm sure knowledge in this field probably leads to some very technical options, but what about just a standard clean up? I'm not sure i have the right vocabulary to explain what i'd like to do. But similar to the tutorial above, i'd like to just make a better picture. I'm just not sure what they means as far as filters or time spent. I'm not even sure what the stand out problems are in a video. |
The AMV site is mostly about toons, but its principles apply to any video. The link you posted is version 2 of the AMV guide. Version 3 is at http://www.animemusicvideos.org/guides/avtech31/. You'll find many of the procedures are about the same. The newer Avisynth sampler is at http://www.animemusicvideos.org/guid...post-qual.html.
Then there's another old guide (old = 2009) from Scintilla at http://www.aquilinestudios.org/avsfi...dex.html#intro. There's an index at the top of the the intro page. Both of the links above are decent sources for samples of what various problems look like. About 90% of the filters can be used on "real" video. Degrainers, anti-alias, smoothers, dot crawl and chroma cleaners work on almost anything, but something like a line darkener....well, that would apply mostly to line art, but you never can tell when some offbeat technique just might be handy. Many current "official" Avisynth plugins are at http://avisynth.nl/index.php/External_filters, though it hardly covers all. One handy feature is that it lists plugins by category. It also has links to some geeky discussion threads. Don't discount VirtualDub, either. It's far more extensive than you'd expect. But it's best to work with Avisynth first. As for a "standard" cleanup script, no one has ever concocted one. No such thing as a standard video problem. There are "common" problems. But no one script could even cover the different problems seen in your sample from scene to scene. Looking over your new sample now. Will try to post some specifics a little later. |
Thanks sanlyn, I'm going to spend a chunk of my night going through those tutorials.
i'm not sure if my first exmaple was the best so i uploaded 2 more short clips that may be better to work with. https://www.dropbox.com/s/7m1x45xvb1od7qa/example2.mov https://www.dropbox.com/s/hax4ztlo7bgliok/example3.mov |
You need to be careful with the AMV site. Some of the "help" there is terrible.
|
Yeah, some of their other procedures strike me as mysterious, often too simple. Fairly OK page on the plugins, though. They left out a lot of heavy hitters and some details, but I guess one has to start somewhere.
@pinheadlarry, somewhere the AMV site advertises a big download file full of filters. Avoid that one. It's behind the times and overwrites stuff you need. |
So here are a few simple scripts to show how this stuff works. And to get into analyzing some problems.
Have you had a look at the first short shot in your sample "example.mov" (frames 0 to 130)? Note that in the code below I've used the path where that .mov clip is stored on my PC. You'll have to modify that path to point to the file on your system. In Avisynth it's easy to make a clip using only frames 0 to 130 and its audio: Code:
qtInput("E:\forum\pinheadlarry\Aug09\example.mov",audio=1) This shot was encoded as interlaced. If it's interlaced, we should be able to deinterlace it. Deinterlacing will take the 2 fields in each frame, separate them, and expand each of those fields to full-frame size. It will double the number of frames and double the frame rate. Because each field in an interlaced video represents 2 instants of time in a single frame, deinterlacing should reveal two "frames" for each original field, and each new frame should be a different image when the original object moves. The simplest and least talented of deinterlacers is the Bob() function. But it's fast and OK for analyzing stuff. So, the code below deinterlaces this clip using Bob(): Code:
qtInput("E:\forum\pinheadlarry\Aug09\example.mov",audio=1) In this case it's not fixable because the images are actually field-blended progressive video, encoded as interlaced. If you try to use inverse telecine and deblenders (it won't unblend anyway), you'll usually get a blended result that is somewhere around home-camera speed of 18 or 20 FPS. You can use other methods that will get 23.976FPS film speed, but still with blended frames. You can try a whole slew of over 20 de-blend filters found on Doom9, but none of them will restore this clip to its original state. Field-blending is the worst. Now you know. Maybe someone else can come up with a fix. |
6 Attachment(s)
More scripts, and some plugins you need to learn...
Even if you decide to use that first shot in "example.mov", there's little you can do with it. Too much luma and chroma data is destroyed. I'm guessing, but this shot looks like a special effect applied on purpose ? ? Any histogram or vectorscope will describe the problem. Below is a capture of frame 37 from the original .mov: http://www.digitalfaq.com/forum/atta...1&d=1407870046 Whether it's a special effect or not, this image has hardly any pixel data. It's washed out and very like a reddish-sepia print. This is evident from the YUV histogram, shown below. You get the YUV histogram in the form of a waveform monitor wih this code: Code:
qtInput("E:\forum\pinheadlarry\Aug09\example.mov",audio=1) The waveform has several sections. The yellow-orange side borders represent the undesirable luma and chroma range that are darker than RGB 16 (left side) or brighter than RGB 235 (right side). The desirable area lies in the dark area between those two borders. The green line down the middle represents the middle of the spectrum, or RGB 128. Pixel values would normally populate most of that black area. But we see that 90% of the pixels have been squeezed ("crushed") into a thick vertical line around RGB 200 on the right. There's a small scatter of "dust" around the middle of the black area representing stray pixels that have survived, such as those in the darker shadow areas and hair. There is no other data to work with. You couldn't widen or exapnd that thick bright line of crushed pixels. Crushed=detroyed. The two 'scopes below are the way this image displays in RGB. These are an RGB "parade" histogram on the right, and an RGB vectorscope on the left. This VirtualDub histogram filter doesn't work in Win7 or 8. http://www.digitalfaq.com/forum/atta...1&d=1407870264 RGB histogram (left-hand chart): This histogram shows average luminance (the white section at the top) and has one section each for Red, Green, Blue. Dark values are at the left, bright values on the right. The histogram mirrors the YUV info -- all of the data in this image has been squished into 4 small "spikes' at the right-hand side. There's no other data to work with. RGB Vectorscope (right-hand chart): Luminance and color are joined in this 'scope. The spread of pixels has the dark values in the center, while brighter pixels radiate outward. The small circle of boxes indicates the limits of the RGB 16-235 range. You can see that the only data is a small blotch of flesh-tone pixels near the center that radiates toward the upper left. Other colors aren't present. If you want, you can try to add a little pizzaz to frame 37 by using the Avisynth COLORYV() function and the SmoothLevels function (a function of the SmoothAdjust plugin). The code below attempts to do this: Code:
qtInput("E:\forum\pinheadlarry\Aug09\example.mov",audio=1) ColorYUV is used to shift that thick white line of pixel data toward the left (darker) part of the spectrum, while lume contrast (cont_y) increases the darks and brights to try to widen the available values. Off_u shifts blue 7 points to the brighter right side, and Off_v shifts red a little to the darker left side. ConvertToYV12() converts the colorspace properly for use by the next plugin. Then SmoothLevels() is used to smooth luma and chroma to prevent hot spots and to make the colors look less banded. The resulting frame 37 is below: http://www.digitalfaq.com/forum/atta...1&d=1407870565 No, doesn't look so great. Most flesh colors have values in the middle of the spectrum, but there aren't many real midtones around. Almost everything is in that thick vertical line above the midtones. But it does have some dimension to it and looks sharper. Unfortunately, all these fixes look like garbage when you get to the fade to black (frame 54, below): http://www.digitalfaq.com/forum/atta...1&d=1407870719 The proposed luma and chroma fix results in some bizarre posterization and oversaturation effects during the fade. It looks progressively more gruesome as the fade continues toward black. You can see that dark detail under the wood fixture has turned completely black, although some details were clearly visible in the original frame. So this image "fix" is really impractical and, at the end, it's an ugly fadeout with a wild flurry of huge clumps of simmering black blobs by the time it's over. Finally, there's the fade to black in frame 130. Again, the YUV waveform has a single thick white line of data at the far right, around RGB 11 to 16, to indicate that a black screen has hardly more data than the other images. http://www.digitalfaq.com/forum/atta...1&d=1407870785 Probably better to leave that shot as-is except for some denoising to calm down that fade a little. |
i guess i found what i'm doing for the rest of the night lol. will report back after i go through all this. but thank you in advance :)
|
from my post #12:
Quote:
:o :smack: Here's a tip I saw posted some time ago, even though the content might be so obvious it seems silly: The code in an Avisynth script is executed line by line in the order that the statements appear. The ouput from Line 1 becomes the inpit for line 2. Output from line 2 becomes the input for line 3. And so on. What this means is that you can insert comment markers (the # symbol) to cause a line to be ignored. So you could comment-out the lines and then start un-commenting them one by one to see what accumulated lines do. For example, take this fictional script where all 4 lines will be executed in order: Code:
line 1 Code:
line 1 You once remarked that you'd like some sort of "standard script" to use for everything. That might be possible, especially if you have a video with shots that all have the same problems. Most video doesn't work that way -- however, VHS has some fairly common problems that require pretty much the same cleanup. It's possible to have a standard filter set and a standard sequence, but quite often some of the defaults or specific parameter settings might have to change to suit the content. The filter samples shown in the earlier links to the AMV filter page and Scintilla's discussions are old standby's that people use frequently. As I said, line darkeners are really for use with cartoon line art, but anti-alias fllters, denoiers and sharpeners are useful everywhere. Meanwhile I played with some of the shots in your samples and can try to come up with some sample scripts later. Sometimes the documentation can make things look more complex than necessary. Seeing how it's done in practice and in scripts from other threads will make it look easier, I'm sure. |
Quote:
|
No problem. Most scripts you'll see are fairly short. You only have to learn it once. Most of the time you'll use the same filters for similar videos, just change the settings when needed.
Got very busy around here the last couple of days, but I'm preparing a couple of samples for later. Sorry for the delay. Yeah, the text of some of the heavy-hitter plugins like QTGMC is really big. Good thing the designer worked all that out for us --you can run that monster with only one line of code in your own script. |
Looking forward to the script, sanlyn.
I've been playing around with different filters you guys have recommended on this thread and the last, specifically QTGMC. But i just can't get it right. I can always find one out of so many frames that are still interlaced. Going to continue more tonight. I'll try and post some screens of what i'm talking about later on. |
QTGMC deintelaces completely. If you refer to camera shots such as the one discussed in post #12, that shot was encoded as interlaced but has been field-blend deinterlaced before it got to you. It's rare to be able to restore that kind of fake deinterlace, as deinterlacers can't do it and most unblend plugins wouldn't be able to help very much. You might be encountering a few clips like that one. You might also be looking at telecined shots that should be inverse-telecined, not deinterlaced. The shot in post #12 appears to have been a PAL to NTSC conversion that was telecined to get 25fps up to 29.97 fps, then incorrectly field-blend deinterlaced. Blended means there aren't two separate top-and-bottom fields in the frame that contain two different images: the original two fields were blended into one. Both fields contain the same image, with a blended "ghost" instead of two separate images.
If you run the statement "QTGMC()" as-is, it's the same as running QTGMC with "slow" default settings. The slowest settings run slowest because they make more repairs and do more denoising. The faster prwesets don't clean clean up as well, but they're usually adequate for most purposes. I've been using these variations: Code:
AssumeTFF().QTGMC(preset="medium") Code:
AssumeTFF().QTGMC(preset="medium",EZdenoise=2) Code:
AssumeTFF().QTGMC(preset="medium",EZdenoise=3,denoiser="dfttest") 1. The html that comes with the plugin 2. The avsi script itself. Opens best with Windows Notepad. Don't use "wrap text" when viewing it. The first several dozen lines of text describe all the defaults for each of the presets. 3. The doom9 thread on QTGMC: http://forum.doom9.org/showthread.php?t=156028. Don't get into too big a rush trying to get thru that thread. It's over 50 web pages! Note that for final output, DVD is usually interlaced, and standard defintion BluRay/AVCHD is interlaced for disc output. Interlaced usually displays fast motion and camera pans more smoothly. Deinterlace or inverse telecine are usually used for cleanup purposes that require it, then are usually reinterlaced or telecined at the end. |
5 Attachment(s)
Quote:
I took 3 more camera shots from your example.mov clip. Earlier I posted notes about that clip's first shot. I'm calling that scene "A". The next three shots I'll call B, C, and D. Some sample scripts might help you define what a "better picture" means in terms of cleaning up problems, even if "better" has different meanings for different people. I'll try to focus on problems that are common and obvious (at least, they should be obvious). To start, for the moment I'll skip scene "B" (the night-time shot) and move to scene C. This is the guy leaping into the scene in early dawn light, or maybe it's late afternoon. If you consider that the first frame in that shot as number 0, the image below is frame 59 from the original clip (it's still interlaced): http://www.digitalfaq.com/forum/atta...1&d=1408313284 Minor points: there's the usual head switching noise at the bottom border. The top border is a broken black and white line. A "standard" filter and procedure would be to crop off the noisy border stuff with Crop() and replace it with clean blacks using AddBorders(). The black borders will blend in with any TV screen background, but noisy borders won't. The sky has some magenta blotches. Not much grainy noise, but clearing the blotches will remove pixel data and cause banding effects where the sky colors gradually change. So a debanding filter (gradfun2DBMod) and a little fine film-like grain (AddGrainC) were used. Along the right side of the guy's head and on some of the fence posts you'll see a bright edge line called a halo. You'll have to sharpen this scene, but most sharpeners will worsen halo effects. So a de-halo filter will be needed (DeHalo_Alpha) after sharpening with LimitedSharpenFaster. And if you look closer at his arms you'll see a small amount of reddish smear against the sky. Increasing saturation will increase that discoloration, so some chroma cleaners would be needed to control it (FFT3Dfilter in chroma-only mode and CNR2). Interlace combing is always seen on a computer. On these videos it seems excessive, even with deinterlacing media players. It might look a little worse because (I guess) some of these shots appear to be sharpened while still interlaced (a non-no in anyone's book). Rough sawtooth edges isn't interlace combing -- look at the guy's head, arms, and slacks. Those can be smoothed a bit without totally obscuring the soft detail in the figure. But my guess is that this shot has already been denoised and, again, done while interlaced. Anti-alias filters are nearly as destructive as dot crawl filters. Better to take it easy with those and live with some imperfection in the edges rather than destroy everything that's left from the original processing. I actually used three anti-alias and edge smoothers in filtering this shot, all of them mild. Otherwise, the guy's face would be totally smeared. Which brings up a major problem here. It's really poor lighting, made worse by the camera's autogain and auotcolor features. You can't use just a primitive "Bright" control here to reveal darker detail. Well, you could, but you'll soon see that all the "detail" you'll get from the darks is what you already see. Part of the trouble is that the brightest part of the guy's face is at about RGB 30 to 45 -- an extremely narrow range. But most of the background and trees and other stuff are in the same tonal range. A brightness filter would simply gray out everything "down there", making it look like an unreal blur. Worse than that, the camera's autogain changes levels three times between the start frame and the end frames. If you brighten the darks in this part of the shot, the start and end of the shot will be blown away. What the camera crew needed was light in the shadows to begin with. The contrast and level changes in this shot are far beyond the capacity of video to manage it. Lighting did change overall during the shot, but shadow lighting remained the same. Brightening part of the scene will brighten all of it. Below are three YUV histograms of how black levels change between the first frame, the middle frames, and the end. The histograms also show that black levels are already too high to begin with, so this scene looks undersaturated and washed out all the way through. http://www.digitalfaq.com/forum/atta...1&d=1408313376 Above, the YUV white section shows luma values. Darks are to the left, brights to the right. You can see that blacks at the start and end are rather high, at about RGB 40 to 50, and the middle is depressed in all the frames. With so little midtone data, you won't get clear skin tones. In the right-hand histogram's far right side you see a sharp white spike that indicates bright clipping. ColorYUV() and the SmoothAdjust plugin were used to level things out, along with an avs scripted plugin called ContrastMask.avs, which mimics some Photoshop masking techniques. After blacks were lowered to real-world values, this mask raised the darkest stuff just enough to be able to see something. Deinterlacing was required for some of the plugins. QTGMC was used for that and to get some motion noise reduction. Then the clip was re-interlaced at the end for smooth motion in this fast scene. The script below looks twice as long as it should because I added comment lines. Notice the first line. It uses the Import() function to copy the ContrastMask.avs scripted function. An avs scripted function that's in your plugins folder doesn't autoload. You have to Import() it. Change the path statement to match the location of your plugins folder. The ContrastMask.avs filter is attached at the bottom of this post. Copy it into your Avisynth plugins. ContrastMask() also requires the VariableBlur plugin, attached. Code:
Import("D:\AVisynth 2.5\plugins\ContrastMask.avs") ## <<-- Change path to your plugins folder !! The other question is, did this work make a vast difference? Not that much. The shot was incorrectly photographed and improperly over filtered to begin with. The usual playback dnr didn't help much, either -- look at the foreground as the camera pans and you'll see its details disappear entirely for several frames . At least a TV screen won't blink when the overwrought chroma levels hit it, and it no longer looks like almost-black-and-white. Scene "D" is next. |
2 Attachment(s)
Scene D: Daytime jump, public building.
You don't need a histogram to see what's happening with hot red saturation and blown-out highlights. Contrast has been pumped to make this look (I guess) like bright sunlight. In fact it was shot in overcast light -- the end frames have more detail that show what's missing, and there are no shadows on the ground. Apparently it previously rained, as there appear to be remnants of two rain puddles. The green leaves are almost turning olive with all that red. You can't do anything with the color because Autocolor changed it at the end of the shot, so adding blue will turn sidewalks purple at the end. This one's easy because there's little you can do. Levels are calmed a bit, then deinterlace and some decombing with vInverse() is used to clean up some of the bad twitter when the camera pans across the brick wall. The shot was sharpened while interlaced or during dub or playback, as can be seen from the jaggy edges and dark combing on the figures. Undoing it would just inflict more wreckage. Notice that the script below uses many of the filters and plugins used earlier. A few specific values change to suit the circumstances: Code:
qtInput("E:\forum\pinheadlarry\Aug09\example.mov",audio=1) ##<<- Adjust the path to match your system Fixing this shot poses a problem. When using Trim() to detach this shot from the main video, I left an extra 30 frames at the end to handle the dissolve into the next scene. It's a 1-second 30-frame dissolve that begins at frame 73 and ends at frame 102 of this scene. Do these filters affect the next scene? They sure do, which means that the guys who made this video forced you into one of three choices: (1) Accept this shot as-is and allow it to dissolve into the next shot, which already has depressed levels and a lot of low-light noise, or (2) Correct this scene but don't correct the next one, which will be too dark and noisy, or (3) correct both shots and learn to rework your own dissolve between two corrected scenes, which can be done in Avisynth. That would be another long demo, which I didn't get into at this point. The RGB histogram below is taken from frame 55 of the "D" scene. The sharp peaks at the right show serious bright clipping, caused by raising midtones so far to the bright end that brighter detail was destroyed. You can darken the image, but it won't restore anything. http://www.digitalfaq.com/forum/atta...1&d=1408313991 |
4 Attachment(s)
The two scenes following the D shot have low-light noise. That brings me back to the "B" scene bypassed earlier. The noise in these low-light and night shots is CCD/CMOS noise. It's from using a camera that's unsuitable for low light shooting. The signal strength of the CMOS residual noise is stronger than the signal strength of the low-light objects. Think of it as audio tape where the hiss is louder than the music. CMOS noise is clumpy, thick, very coarse grain. But it doesn't look like it these scenes. Below, a 200% blowup from the upper right section of the 94th frame from scene "B":
http://www.digitalfaq.com/forum/atta...1&d=1408314741 The noise isn't heavy grain any more. It's been hit with a simple blurring filter that converted it from distinct grain into a swirl of simmering sludge. Sludge is tougher to remove than grain. It doesn't help, either, that this is another shot with high IRE (black levels) that looks filtered and sharpened while still interlaced, or perhaps during earlier playback or recording. Avisynth has a handful of filters to address CMOS stuff, but they don't work so well after it's turned to mush. Having seen this before, IMO it's best to use two heavy-hitters but with more moderate settings, rather than one big brute that tears everything apart. So I made this a two-step process. Two steps, because running both sets of these plugins in the same script slows the script to a crawl. The first step uses a modification of a favorite cleaner called MDegrain, which is part of the MVTools v2 plugin (Motion Vector Tools). MDegrain comes in two flavors, 2 and 3. Flavor 3 is used here. The function is a separate avs script that can be saved as a plugin. It's modded to use interlaced video without deinterlacing it, using SeparateFields() instead. Use MDegrain before deinterlacing, in this example. Why? To prevent that ugly swirling junk from being interpolated across multiple frames during deinterlace, thus smearing it even more. I attached a copy of the function as a script called "MDegrain2i2.avs". Save that avs attachment as-is in your Avisynth plugins folder. To use an avs scripted function in your own script, you have to import it into your script using the Import() function as shown in the previous post, and as shown in the script below for STEP #1: Code:
# ---------------------------- STEP #2 uses some familiar filters you saw earlier. Notice that the video isn't opened with qtsource(), but uses AviSource() instead: Code:
AviSource("E:\forum\pinheadlarry\Aug09\B\Step1.avi") ## <<-- Change path to your video's folder !! I took another step (call it STEP 3), running NeatVideo at about 1/3 power on the output of step 2. NV made things just a little more visibly smoother. No script there. NeatVideo is a paid plugin, often abused and bad-mouthed by people who don't read its extensive user guide. Clip attached as "mov_B00mv3_Q_NV.mpg". I think you can see how much trouble it is to clean up careless work, and how much it's possible to lose in the process. The cardinal rule is this: "garbage in, garbage out". A good VHS original can look pretty good. But watch out for careless analog work. It's a real pain. |
This is awesome so far and i'm not even half way through. Before i really get started i have to download all of these plugins. I'm having trouble finding a couple of these, such as maa(). Not sure if i should use maa2 or not. Are there any resourceful plugin packs?
|
4 Attachment(s)
maa2 is a special version of maa that requires a bunch of AVisynth_MT plugins. It won't run in other versions of Avisynth. It's aggressive, not recommended for soft or over processed video.
The plugins package for QTGMC contains a lot of support files used by many of these filters, including the versions of masktool and mvtools called by many filters. It also includes support files for FFT3dFilter. http://forum.doom9.org/showthread.php?t=156028. You want the "Plugins Package" offered, not the modded package. Attached: -LimitedSharpenFaster.zip -Santiag.zip -maa.avs -SangNom.zip (this might come with QTGMC. Used by several anti-alias plugins) |
This is a response to post #19
My content will primarily be seen on a computer screen. In that case, should i ignore the restore interlace and interlace=true steps? Also a workflow question that may sound noobish, but there aren't many resources out there. I assume you skim through frames throughout the video and find frames to fix. You add filters to one frame, but what do you do when you approach a frame that needs more filtering? Do you add filters on the existing script? Or is there a different way? I just figure if you keep adding filters on the script for different frames it would do more damage. |
3 Attachment(s)
Quote:
Since you don't see some of these videos that well, you probably haven't noticed that some of the shots in your samples are not interlaced. This scene is not interlaced: http://www.digitalfaq.com/forum/atta...1&d=1408535813 This scene isn't interlaced, either: http://www.digitalfaq.com/forum/atta...1&d=1408535833 The scene in the upper image is slightly but visibly underexposed. The scene in the lower image has the opposite levels problem: it's over-exposed. Would you apply the same filter to both scenes? If you deinterlace both scenes and leave them deinterlaced, you will have duplicates of every frame. If you discard duplicate frames, you will have scenes of effectively lower-resolution frames. For a specific problem that affects only a few specific frames, below is a 2X blowup of part of the the 9th frame in one of the scenes. It affects 6 consecutive frames. The glitch can be fixed, but you'd need about 30 more lines of code and two more plugins. You can't use that same code on the entire video. You'd also have to save the audio as a separate file and rejoin the audio after repairing those frames, because the code will affect audio sync. When working with this scene, I decided it's probably better to just leave the problem as-is and live with it. I see several bugs in the scene pictured below, some of which don't exist in some other shots. The image is not interlaced. See if you can spot the problems in the image below: http://www.digitalfaq.com/forum/atta...1&d=1408535848 Quote:
Quote:
Yes, there is a different way. Keep the videos intact, run them through FCP and set up three or four filters for the entire video. Or use FCP to cut and join scenes into a different arrangement, then use the same filters for that entire compilation. Of course, the scenes joined in that way will come from different sources with different problems, but isn't that the way your sample videos were originally produced? Noise and visual defects are usually more obvious on a computer screen than on TV. That aside, if you see no apparent problem with any of the scenes in your samples, you're wasting your time with Avisynth and VirtualDub. Almost all NLE's in every price range have the same or similar cut and join features as another NLE, similar timeline and audio features, similar simplified color balance and denoisers, and similar scaled-down encoders and authoring tools. If differences between the original scenes aren't a problem in your view, and if basically they all seem to look alike, then why allow others to program everything you're doing? That wouldn't be learning anything, it would just be following rote procedure. I don't skim through frames looking for something to fix. All you have to do to is watch. The boo-boo's jump right off the screen, no searching required. But as I say, if you don't see problems or differences in an assemblage of badly processed video clips, you should be feeding everything intact through a single NLE and not worrying about it. If the friend that you mentioned earlier claims that he uses a single universal Avisynth script to fix all his videos and doesn't need to do any specific repair work, then realize that you, too, have lossless media and can run his script or any other's script just as well as they can. You might want to rethink the purpose of fixing up several really bad videos. Or leave them as-is and do a simpler and quicker re-edit into custom scenarios using a single set of a few NLE filters to make them look the way you want. |
1 Attachment(s)
8 segments from the first example.mov, A thru H, filtered separately and rejoined. Encoder TMPGEnc Plus 2.5, with edit/join/audio sync/AC3 resampling in TMPGEnc MPEG Editor V3. Auditioned with MPC-BE and VLC players (*I hate VLC). Could use more tweaks.
|
Quote:
interlaced=true and interlaced=false are relevant for colorspace conversation depending on whether or not the video is in an interlaced state when the conversion statement is run. Remember that different colorspaces store chroma information differently. Doing the conversion properly requires that avisynth is informed about the interlace state. Doing it the wrong way screws up chroma. Colorspace and interlace factors also affect the Crop() function. Be carefulo how you crop. The following rule is quoted from the Avisynth online help concerning Crop(): Quote:
mod-4 means that a number must be evenly divisible by 4. http://avisynth.nl/index.php/Crop |
I always like Avisynth discussions. I see an item or two I never use. :)
Although themaster1 never attaches scripts to the forum (WHY?), he has some good ones too. He gave me an idea last week, and the script turned out very nice indeed. It's something to add to repertoire, and onto an "advanced multiscript" when I finish the typical one. |
Quote:
Quote:
The thing with other programs like FCP is that you need to buy additional software filters. And with avisynth or virutaldub, you get powerful software for free. There's a high learning curve, but i think it would be worth it incase i want to go scene by scene in the future. Also, I got ahold of the 3rd party i mentioned before and he sent me his script. Thoughts? Code:
#SetMemoryMax(1200) # Optional line. See below for value M |
LOL!
Okay, fellas, have it your way. All the script does is create an invalid frame height for anything except PC playback or YouTube (invalid altogether for BluRay), some degraining, frame-decimation deinterlace, plays back at one-half it's original vertical resolution, and ends up as pretty much what you started with except for jerky playback on TV -- if you can find a way to play it on TV, anyway. Definitely amateur work. Try it. You'll need Avisynth_MT or the 2.6 mod downloaded from the Doom9 QTGMC thread. |
Not sure why I would try the script after you just put it down like that lol
|
After all, it does work. It just do very much and makes a couple of mistakes. On the other hand, one can improve most of those shots only minimally, while a handful or so could just stay as-is, and perhaps another handful are so bad that even a small effort could make them look, well, noticeably better. But for your vids you'd have to make some adjustments. For one thing, the crop() was obviously designed for 720x480 mpeg's but doesn't give a 3:4 image back, leaves the video at a nonstandard height that's invalid for several formats, and doesn't clean the upper border twitter.
You can leave your videos at 640x480 for PC playback or YouTube, but that frame size can't be used for DVD, etc., and DVD/BluRay are usually interlaced formats or at least encoded that way. So you could use that QTGMC statement but reinterlace afterwards to keep your original resolution and to be able to resize for other formats (which should be either 704x480 or 720x480). So, with Avisynth 2.5.8 you could do it this way and customize for your particular set of 640x480 captures: First, you can't open with dgdecode, you have open your .mov files with qtinput. Dropping the Avisynth 2.6 requirements (since QTGMC won't run much faster in 2.6 "MT" anyway): Code:
ConvertToYV12(interlaced=true) Code:
AviSource("path\and\whatever\deinterlaced archive name.avi") Code:
AviSource("path\and\whatever\deinterlaced archive name.avi") Whatever you do, don't use low bitrates on noisy action video, and don't use huge GOP sizes if you want clean motion encoding. Noise, fast action, and swift and jumpy camera pans require higher bitrates than clean static scenes with steady cameras and normal motion or less. |
hmm the QTGMC line doesn't work. I'm getting the script error "qtgmc does not have a named argument "rt2"
For the plugins below qtgmc i'm getting "evaluate: system exception - access violation" :huh1: :hmm: :question: edit. i believe rt2 was a typo, i changed it to TR2=2 but got the same access violation error :( |
OOoops. Yes, it's TR2. But that's what I get for being in a rush, because you don't even need to specify it. At "Very slow", TR2 is already set to 2 by default. So this line:
Code:
QTGMC(Preset="Very Slow", RT2=2,EZDenoise=2) Code:
QTGMC(Preset="Very Slow", EZDenoise=2) |
Few notes from me:
- I prefer to do all my cropping in VirtualDub. - I don't much care for the multi-threaded version on Avisynth. It never made a difference in my encoding times, and just made the scripting longer. NOTE: Remember to use the [code][/code] bbcode to display the scripts. :old: The # symbol in the quick reply or advanced reply make it easy. Otherwise forum smiley bbcode can mess up the script. The smileys don't work inside the CODE blocks, however. |
Ok. so after i export to the deinterlaced archive version (first script). I run the second script which is just SelectEven.
Now, what would be the proper way to get the video into FCP. That program doesn't accept the lagarith AVI. I'm not sure if it's the compression or the container, that FCP doesn't recognize The only solution i know would be to use handbrake on the progressive Youtube copy. Then pull the handbrake version into FCP. Is that acceptable or will that kill the quality? |
I'm not familar with FCP but in many pro softwares (like sony vegas) you can use a little app called avs2avi (google it) which create a pseudo .avi (only a few kb) and you can import it thereafter.
This way you avoid a compression step [always better;) ], the downside is if you use a complex script it'll be slow as hell on your timeline to move back/forth |
i realized it doesn't matter if they are compressed because they're going on youtube anyway.
I used the scripts on a full VHS capture and i think it came out well. I still have to compare scenes, but i can definitely noticed less interlacing. But thank you sanlyn, you really came through big time helping me out and explaining all this. I'm going to use the scripts you provided and continue to reference this thread and all the filters you have been mentioning. I'm slowly starting to understand avisynth and hopefully i can start to figure out what all these filters actually do lol. Thanks again! edit- Actually one last question.. When i pull the script into VirtualDub and save as AVI. I'm confused on the input and output video it shows in VirtualDub. It doesn't show the changes between the original video and avisynth filters, correct? These two screens only show the differences in VirtualDub filters? |
Quote:
Quote:
Unless you plan to do some complicated processing, why would you need FCP? I thought you were going to encode the results, a progressive encode for mp4 or something for PC-only or web, and then an interlaced version for DVD, BluRay, or AVCHD. Those two steps can be done in Windows. along with some simple cut/join, using free software. |
I didn't touch anything but compression so i'll have to check the settings.
I only use FCP to split the video and upload it directly to youtube. I may be overthinking this but if i wanted to save one of these video files on my ps3 and play it on my TV, would i use the interlaced DVD version? |
Site design, images and content © 2002-2024 The Digital FAQ, www.digitalFAQ.com
Forum Software by vBulletin · Copyright © 2024 Jelsoft Enterprises Ltd.