Quantcast Avisynth: Motion Adaptive Filtering Now Possible? - Page 12 - digitalFAQ.com Forums [Archives]
  #221  
06-01-2003, 11:50 AM
rendalunit rendalunit is offline
Free Member
 
Join Date: Apr 2002
Location: san jose, Ca
Posts: 1,148
Thanks: 0
Thanked 0 Times in 0 Posts
Quote:
Originally Posted by kwag
Did you run the script with the debugging subs turned on, to see the scene changes in action
yep, I loaded the .avs into VDub and the !!! scene change detected !!! messages were right where they're supposed to be The encoding time didn't go up either

ren
Reply With Quote
Someday, 12:01 PM
admin's Avatar
Site Staff / Ad Manager
 
Join Date: Dec 2002
Posts: 42
Thanks: ∞
Thanked 42 Times in 42 Posts
  #222  
06-01-2003, 12:57 PM
Red-M Red-M is offline
Free Member
 
Join Date: Nov 2002
Posts: 20
Thanks: 0
Thanked 0 Times in 0 Posts
Hi.

I'm encoding my DVD of Holy Grail now, and so far so good (with the sample), couldn't believe the quality with the sample I got, no transition problems or variance in brightness problems like I had with red dwarf. This is encoding at 704x576 (pal) no probs.
I'll test the full movie out when it's finished.
Only thing I added to the script for Red-Dwarf was the FieldDeinterlace btw as far as I remember,

Red
Reply With Quote
  #223  
06-01-2003, 04:35 PM
kwag kwag is offline
Free Member
 
Join Date: Apr 2002
Location: Puerto Rico, USA
Posts: 13,537
Thanks: 0
Thanked 0 Times in 0 Posts
Script updated
Some minor tweaks, because of funny behaviour on variables assigned
(Order of precedence on calling YDifferenceToNext() and YDifferenceFromPrevious() )
Also, on high speed horizontal movements, sometimes it would detect scene change when in reality is was very high speed action. Now it doesn't "false" on that.

-kwag
Reply With Quote
  #224  
06-01-2003, 04:53 PM
Bchteam Bchteam is offline
Free Member
 
Join Date: Jan 2003
Posts: 275
Thanks: 0
Thanked 0 Times in 0 Posts
Hi Kwag,

Why did you change the "Scene change trigger value" from 1.0 to 10
Reply With Quote
  #225  
06-01-2003, 06:08 PM
kwag kwag is offline
Free Member
 
Join Date: Apr 2002
Location: Puerto Rico, USA
Posts: 13,537
Thanks: 0
Thanked 0 Times in 0 Posts
Quote:
Originally Posted by Bchteam
Hi Kwag,

Why did you change the "Scene change trigger value" from 1.0 to 10
Because before I was dividing the returned value by 16 and using that for the range. Now I divide only for the value to be applied to the mergeluma, and use the returned value for scene change calculations, which is a wider fluctuating range.
And the script was just updated again

-kwag
Reply With Quote
  #226  
06-01-2003, 06:30 PM
syk2c11 syk2c11 is offline
Free Member
 
Join Date: Jun 2002
Posts: 290
Thanks: 0
Thanked 0 Times in 0 Posts
Hi Kwag,
Did you purposely place this: FrameEvaluate("lf = YDifferenceToNext()") at the very end because when I first load up the script, Virtual Dub says it doesn't know the what is the vaule for "val", but after I move forward a few frames, it knows the valule and no more warning.
Reply With Quote
  #227  
06-01-2003, 06:36 PM
kwag kwag is offline
Free Member
 
Join Date: Apr 2002
Location: Puerto Rico, USA
Posts: 13,537
Thanks: 0
Thanked 0 Times in 0 Posts
Quote:
Originally Posted by syk2c11
Hi Kwag,
Did you purposely place this: FrameEvaluate("lf = YDifferenceToNext()") at the very end because when I first load up the script, Virtual Dub says it doesn't know the what is the vaule for "val", but after I move forward a few frames, it knows the valule and no more warning.
That's weird , I don't get that error.
The purpose of the "FrameEvaluate("lf = YDifferenceToNext()" at the end, is to assign the value AFTER all calculations, and retain the variable "lf" for the next iteration (next frame) so I can compare last frame to current frame difference

-kwag
Reply With Quote
  #228  
06-01-2003, 06:48 PM
ovg64 ovg64 is offline
Free Member
 
Join Date: Jan 2003
Location: Puerto Rico
Posts: 423
Thanks: 0
Thanked 0 Times in 0 Posts
Send a message via MSN to ovg64
Quote:
Originally Posted by kwag
Quote:
Originally Posted by syk2c11
Hi Kwag,
Did you purposely place this: FrameEvaluate("lf = YDifferenceToNext()") at the very end because when I first load up the script, Virtual Dub says it doesn't know the what is the vaule for "val", but after I move forward a few frames, it knows the valule and no more warning.
That's weird , I don't get that error.
The purpose of the "FrameEvaluate("lf = YDifferenceToNext()" at the end, is to assign the value AFTER all calculations, and retain the variable "lf" for the next iteration (next frame) so I can compare last frame to current frame difference

-kwag
Well you know i get an error also if a i load the script with Frame Evaluate or Script Clip im still not sure whether or not is part of the script.
However it works with out it.
Reply With Quote
  #229  
06-01-2003, 09:39 PM
Smoochie3 Smoochie3 is offline
Free Member
 
Join Date: Jun 2002
Posts: 129
Thanks: 0
Thanked 0 Times in 0 Posts
Quote:
Originally Posted by ovg64
Hey Kwag is there a way to lower the Briteness in a movie with avs 2.5
i know in 2.0 we had the tweak filter for that, or you could change the luminance when doing the d2v but this doen't work with 2.5 and i dont know of any filter for this problem. This movie is too brite and file size is too big, i want to up CQ a bit more.
Tweak is apparently built into version 2.5:

Tweak

Tweak(clip, float "hue", float "sat", float "bright", float "cont")

This function provides the means to adjust the hue, saturation, brightness, and contrast of a video clip.

Tweak requires YUY2 input. Use ConvertToYUY2() if necessary.

Hue: (-180.0 to +180.0, default 0.0) is used to adjust the color hue of the image. Positive values shift the image towards red. Negative values shift it towards green.

Sat: (0.0 to 10.0, default 1.0) is used to adjust the color saturation of the image. Values above 1.0 increase the saturation. Values below 1.0 reduce the saturation. Use sat=0 to convert to grayscale.

Bright: (-255.0 to 255.0, default 0.0) is used to change the brightness of the image. Positive values increase the brightness. Negative values decrease it.

Cont: (0.0 to 10.0, default 1.0) is used to change the contrast of the image. Values above 1.0 increase the contrast. Values below 1.0 decrease the contrast
Reply With Quote
  #230  
06-01-2003, 11:12 PM
kwag kwag is offline
Free Member
 
Join Date: Apr 2002
Location: Puerto Rico, USA
Posts: 13,537
Thanks: 0
Thanked 0 Times in 0 Posts
Thanks for the tip Smoochie3
Script updated (again!)

I've fixed a LOT of logic errors, and simplified the logic. The line that does most of the magic is this:

ScriptClip("((cf - lf) < scd_trigger) ? (val < MaxTreshold) ? MergeLuma(blur(val)) : MergeLuma(blur(MaxTreshold)) : MergeLuma(blur(1.5))")

Basically the line does this:

(1) If the frame currently being displayed is not a scene change, and the current value is below the mergeluma treshold, then it uses the returned value and applies it to mergeluma. If the value is equal to or greater than the maximum allowed ( 1.58 ), then use the maximum.
(2) If the frame is a scene change, then saturate mergeluma with a max value. This is an interesting experiment , because to the eye, we can't see a fast transition between scene changes (a single frame ), but for the encoder, it's a very heavy penalty. Every scene change causes a loss of compression because of the sharp transition. So what I did is "dampen" the frame after the scene change with a full saturation of mergeluma. The effect will probably be several extra megabytes of space saved per movie
Now, back to encoding

-kwag
Reply With Quote
  #231  
06-01-2003, 11:34 PM
kwag kwag is offline
Free Member
 
Join Date: Apr 2002
Location: Puerto Rico, USA
Posts: 13,537
Thanks: 0
Thanked 0 Times in 0 Posts
YEEEEAHHHH

Previous CQ for the movie "The Foreigner" was 63.97.
New CQ with the current script is 64.256

Here's the short sampler made by ToK: www.kvcd.net/06022003-test.mpg

Now we're cooking

*** Please update your script from the current script ***

Edit: Here's an Extreme scene change detection sample with the latest script: www.kvcd.net/extreme-scenechange.mpg
Same CQ as the previous sample (64.256)

-kwag
Reply With Quote
  #232  
06-01-2003, 11:38 PM
ozjeff99 ozjeff99 is offline
Free Member
 
Join Date: May 2002
Location: Sydney, Australia
Posts: 159
Thanks: 0
Thanked 0 Times in 0 Posts
Quote:
Originally Posted by smootchie3
Tweak requires YUY2 input. Use ConvertToYUY2() if necessary.
I think Tweak works in YV12 now. I'm at work now but sure I tried it last night .

ozjeff99
Reply With Quote
  #233  
06-02-2003, 03:57 AM
sh0dan sh0dan is offline
Free Member
 
Join Date: Mar 2003
Posts: 89
Thanks: 0
Thanked 0 Times in 0 Posts
Yes - Tweak has been built into AviSynth for nearly a year - and it works nicely in YV12. I would however still recommend using ColorYUV - much more flexible.
__________________
Regards, sh0dan // VoxPod
Reply With Quote
  #234  
06-02-2003, 04:04 AM
girv girv is offline
Free Member
 
Join Date: Sep 2002
Posts: 108
Thanks: 0
Thanked 0 Times in 0 Posts
Send a message via ICQ to girv
@kwag:

How about:
Code:
ScriptClip("MergeLuma(Blur( cf - lf < scd_trigger ? (val <  MaxTreshold ? val : MaxThreshold) : 1.5))")
...or why not leave out SCD altogether and go back to using YDifferenceFromPrevious to control the Blur? It always maxed out on scene changes anyway.

Have you considered using a non-linear motion->blur function? I wondered if something like a log function or the distance formula would be better, so that blurring would be small for low motion scenes but very quickly ramp up as motion increased. I found a PDF with graphs of some common functions that might help illustrate what I'm on about: here

I'm also not sure if I agree with lf=YDifferenceToNext being at the end of the script, but I havent decided yet so Im certainly not going to post about it before I have
Reply With Quote
  #235  
06-02-2003, 04:25 AM
jorel jorel is offline
Invalid Email / Banned / Spammer
 
Join Date: Aug 2002
Location: Brasil - MG - third stone from the sun
Posts: 5,570
Thanks: 0
Thanked 0 Times in 0 Posts
Quote:
Originally Posted by jorel


Jellygoose,

i read some about the new filter from sh0dan called MipSmooth.
i don't test it but seems good.

do you know this filter?

from sh0dan:
MipSmoother is an attempt at reinventing SmoothHiQ and Convolution3D. For now this is a proof of concept, and the first versions are for evalutation of quality and speed. MipSmooth was made to enable smoothing of larger pixel areas than 3x3(x3), to remove blocks and smoothing out low-frequency noise.
It is my hope that when this filter has been tweaked it will be better than C3D at smoothing out flat surfaces and gradients. This should be good for cartoons/anime, but it actually also helps film footage quite nicely.

i quote my own post for special news.

thank you very much to accept my invite sh0dan.


MipSmooth 0.9 released:
http://www.kvcd.net/forum/viewtopic.php?t=4281

Reply With Quote
  #236  
06-02-2003, 06:29 AM
DorvalCS DorvalCS is offline
Free Member
 
Join Date: Dec 2002
Location: Montreal, Canada
Posts: 31
Thanks: 0
Thanked 0 Times in 0 Posts
Send a message via AIM to DorvalCS
Quote:
Originally Posted by Latexxx
I hacked a little several months ago and I made a avisynth 2.5 cersion of gripfit (changed one line of code). It worked correctly using virtualdub, but not with tmpgenc, but back then I had also several other problems with tmpgenc and avisynth so test it. http://www.nic.fi/~lhahne/GripFit_YV12.zip
I have tried it with the new Script... It works fine
__________________
DorvalCS
Reply With Quote
  #237  
06-02-2003, 07:42 AM
ozjeff99 ozjeff99 is offline
Free Member
 
Join Date: May 2002
Location: Sydney, Australia
Posts: 159
Thanks: 0
Thanked 0 Times in 0 Posts
Hi DorvalCS good pickup and a much-valued refinement Latexxx. Thought we might have to start another "Where's Sansgrip" thread. :P

Couple of questions for anyone:

Interesting, both Vdub (through ffvfw codec) and Tmpgenc pick up the script OK but WMP9 inverts it . Anyone else had this prob?

shOdan mentions YUY2 space gives more flexibility however if all filters used work OK, is YV12 better because it is faster?

ozjeff99
Reply With Quote
  #238  
06-02-2003, 08:10 AM
kwag kwag is offline
Free Member
 
Join Date: Apr 2002
Location: Puerto Rico, USA
Posts: 13,537
Thanks: 0
Thanked 0 Times in 0 Posts
Quote:
Originally Posted by girv

Have you considered using a non-linear motion->blur function?
No, because the whole idea of the linear adaptation is indeed to produce the sharpest result on slowest motion, and increase the blur in a linear manner as the activity increases. That's exactly what the function does now! But then, right after a scene change, it applies maximum merluma, which is a very heavy blur at that point. It does basically the same as we used blur.
Quote:
I wondered if something like a log function or the distance formula would be better, so that blurring would be small for low motion scenes but very quickly ramp up as motion increased.
That's exactly what it does, but I'm not sure if logarithmically would be better than linear
Quote:
I found a PDF with graphs of some common functions that might help illustrate what I'm on about: here
I'll take a look at the link. Thanks!
Quote:
I'm also not sure if I agree with lf=YDifferenceToNext being at the end of the script,
That's just to read the value of the following frame, and use it as the variable as last frame for comparison on the next iteration. At least, that's the way I was able to make it work!. If you add debugging variables as subtitles, you can see the changes as you step frames, and you see the differences between cf and lf.

-kwag
Reply With Quote
  #239  
06-02-2003, 09:44 AM
Racer99 Racer99 is offline
Free Member
 
Join Date: Sep 2002
Location: Massachusetts
Posts: 119
Thanks: 0
Thanked 0 Times in 0 Posts
Quote:
Originally Posted by kwag
Thanks for the tip Smoochie3
Script updated (again!)

I've fixed a LOT of logic errors, and simplified the logic. The line that does most of the magic is this:
-kwag
Kwag and the rest of you genius's are AWESOME!!!

Keep it up and pretty soon we'll be able to put a whole movie on my 256mb Thumb Drive.

Hey I realize this is just the beginning, but if this is the beginning then I can't wait until it reaches full maturity. Yeah Baby, Yeah!

Racer99
Reply With Quote
  #240  
06-02-2003, 10:03 AM
kwag kwag is offline
Free Member
 
Join Date: Apr 2002
Location: Puerto Rico, USA
Posts: 13,537
Thanks: 0
Thanked 0 Times in 0 Posts
Quote:
Originally Posted by Racer99
Keep it up and pretty soon we'll be able to put a whole movie on my 256mb Thumb Drive.
If you have a Pocket PC, you can put "The Matrix" on one 128MB flash card , and it looks pretty damn good on the iPaq screen
I did that a long time ago, without any of the latest techniques, so now it would probably look even better

-kwag
Reply With Quote
Reply




Similar Threads
Thread Thread Starter Forum Replies Last Post
Avisynth: Dynamic Linear Adaptive Filtering and Scene Change Detection supermule Avisynth Scripting 3 09-15-2006 01:45 AM
Avisynth: Message from linear motion adaptive filtering? holgerschlegel Avisynth Scripting 7 08-27-2003 04:08 AM
Avisynth: Help with Linear Motion Adaptive Filtering pitoman Avisynth Scripting 2 08-05-2003 12:51 PM
Avisynth: Motion adaptive filtering good enough? bicho_visacoso Avisynth Scripting 6 06-15-2003 06:30 AM
Avisynth: AVS 2.5x Script, Motion Adaptive Filtering problems? Bchteam Avisynth Scripting 15 05-31-2003 12:38 PM

Thread Tools



 
All times are GMT -5. The time now is 01:01 PM  —  vBulletin Jelsoft Enterprises Ltd