Welcome to Doom9's Forum, THE in-place to be for everyone interested in DVD conversion.

Before you start posting please read the forum rules. By posting to this forum you agree to abide by the rules.

 

Go Back   Doom9's Forum > Capturing and Editing Video > Avisynth Usage
Register FAQ Calendar Today's Posts Search

Reply
 
Thread Tools Search this Thread Display Modes
Old 11th November 2002, 22:44   #1  |  Link
Stigma
Registered User
 
Stigma's Avatar
 
Join Date: Oct 2002
Location: Norway
Posts: 56
Automatic replacement of bad frames in scene changes? need help.

Lately i have aquired several anime DVD's wich have white dirty lines at the top and the bottom of the picture whenever the scene changes. This is on the original material, so theres not much to do about it exept replace the frames with good ones. (you anime encoders out there probably know what im talking about. Berserk has very large (and thus annoying) scene change lines. I think its somethign with how the anime is shot, but thats not the point here..

The this is that i CAN edit this and make it look very good by a simple script. The frame right before and right after a scene change is allways bad, so if i have scene changes at frame 10 and 80, this script will fix it:
a=10
b=80
Freezeframe(a,a,(a-1))
FreezeFrame((a+1),(a+1),(a+2))
Freezeframe(b,b,(b-1))
FreezeFrame((b+1),(b+1),(b+2))

Problem is that it takes a LOT of time to manually find these scenes, and doing this on 26 episodes, not to mention the hundreds of DBZ eps, is incredibly slow and tedious.

so.. is there a way i can somehow link this to some scene change thing like the DivX codec uses to find out where to place the keyframes? Because the errors only appear in scene changes i could automate this and get a perfect result.

Or.. if there is another used method to deal with this that i dont allready know (not nessecarily including AVS scripting) i would like to know.

Im very computer littarate in general, and im an experienced encoder, but i have very little coding experience, so any solution would have to be within the frames of other programs i guess as i am currently unable to build my own.

Grateful for all contructive response =)
-Stigma

PS: i have attached an image of the white stuff for those that are curious about what the heck im talking about ^_^
Stigma is offline   Reply With Quote
Old 12th November 2002, 12:42   #2  |  Link
Dreassica
Registered User
 
Join Date: May 2002
Posts: 384
Hmm, i usually do that manually in Aviutil adn then feed it to avisynth using VFapi. Dont know if it can be done with avisynth though. A filteer that specifically tries to smooth and/or remove blending artifacts, that are prevalent in PAL animes too would be nice too.
Problem is that that will be nigh on impossible to do.
Dreassica is offline   Reply With Quote
Old 12th November 2002, 12:47   #3  |  Link
wotef
Registered User
 
wotef's Avatar
 
Join Date: Apr 2002
Posts: 272
the dupe could help you identify the scene changes frame numbers, which you could then feed into your trim script
wotef is offline   Reply With Quote
Old 12th November 2002, 17:00   #4  |  Link
Stigma
Registered User
 
Stigma's Avatar
 
Join Date: Oct 2002
Location: Norway
Posts: 56
I have never used aviutil, are you saying that it has a way of detecting scene changes? If thats the case then i could just feed (manually atleast) the rame numbers into my script..

-Stigma
Stigma is offline   Reply With Quote
Old 12th November 2002, 17:27   #5  |  Link
SansGrip
Noise is your friend
 
Join Date: Sep 2002
Location: Ontario, Canada
Posts: 554
It wouldn't be difficult at all to write a filter with a scene change detector that simply copies over frame new_scene with frame (new_scene + 1).

Maybe someone with a shorter to-do list than myself could take a look at it...
__________________
Regards,
SansGrip
SansGrip is offline   Reply With Quote
Old 12th November 2002, 17:37   #6  |  Link
Dreassica
Registered User
 
Join Date: May 2002
Posts: 384
Quote:
Originally posted by Stigma
I have never used aviutil, are you saying that it has a way of detecting scene changes? If thats the case then i could just feed (manually atleast) the rame numbers into my script..

-Stigma
It does have it yeah, but i do it manually. Like to have control over it myself, so i never really used it.
Dreassica is offline   Reply With Quote
Old 12th November 2002, 21:46   #7  |  Link
Stigma
Registered User
 
Stigma's Avatar
 
Join Date: Oct 2002
Location: Norway
Posts: 56
well of course, it would be near impossible to get a 100% perfect filter for this, since the errors vary in size, how they appear ect.
BUT.. it wouldbe a deinate boon to those that dont bother to frameedit in the first place... it would atleast get more then half i bet

So is there a coder out there somewhere who wants work? ^_^

-Stigma
Stigma is offline   Reply With Quote
Old 12th November 2002, 22:14   #8  |  Link
SansGrip
Noise is your friend
 
Join Date: Sep 2002
Location: Ontario, Canada
Posts: 554
well of course, it would be near impossible to get a 100% perfect filter for this, since the errors vary in size, how they appear ect.

It would be very difficult to remove the errors from the bad frame, yes, but it would be very easy to completely replace the frames immediately before and immediately after a scene change.

In other words, given these frames:

A B C D - E F G H

where the dash represents the scene change, we assume D and E are bad. D gets replaced with C and E gets replaced with F.
__________________
Regards,
SansGrip
SansGrip is offline   Reply With Quote
Old 13th November 2002, 11:47   #9  |  Link
Stigma
Registered User
 
Stigma's Avatar
 
Join Date: Oct 2002
Location: Norway
Posts: 56
Well it would certainly be a HUGE timesaver, but is anyone out tehre willing to make this thing? I know i cant yet =/ i dont have the slightest idea how to use a scene detection thing in combination with this.

-Stigma
Stigma is offline   Reply With Quote
Old 23rd November 2002, 04:48   #10  |  Link
sk8r4life
Registered User
 
Join Date: Nov 2002
Posts: 1
Yea this would be very helpful and timesaving in a sense.... but the last 2 frames in every scene change are always the same, ie any motion or scrolling scene. For a filter to be effective in doin this task, it would have to work in compilation with AviUtil's scene change detection on very low settings.... which takes forever to go throu a whole episode

In short, a filter like this would be a big advance in quality of animes being ripped/encoded, but very unlikely..... very impossible if u ask me. Take the time to frame correct it yourself, if u only want to hit scene changes, use AviUtil, very useful and hits about every scene change, (plus any big change in the frames) or go throu the whole episode by hand and fix the errors...
sk8r4life is offline   Reply With Quote
Old 26th July 2006, 14:15   #11  |  Link
Tanma
Registered User
 
Join Date: Jul 2004
Posts: 24
Well, it has been almost four years, does anyone have a solution or can create a solution for this kind of problem exposed by Stigma?

I tried to use freezeframe manually, just for test, and it took 4 hours for a 22 minute anime! I had to freeze one frame before and after each keyframe.

For example, I have a bad keyframe = 20.
freezeframe(20,20,19)
freezeframe(21,21,22)

In other words:
freezeframe(a,a,a-1)
freezeframe(a+1,a+1,a+2)

If some plugin could catch ALL the keyframes when opening the encoded video on Virtualdub, one little program could easily do this function above and generate a text file with all the freezeframe lines to add it on a AVS script.

I know sometimes it appears one keyframe right after other keyframe, but it's easy to fix manually by watching the video on Virtualdub before encoding.

Does anyone know if it's something possible to do? It would be great, especially for old animes.

Last edited by Tanma; 26th July 2006 at 14:37.
Tanma is offline   Reply With Quote
Old 26th July 2006, 14:34   #12  |  Link
Dreassica
Registered User
 
Join Date: May 2002
Posts: 384
Just use Yatta to go through the video and manually freezeframe it there and save it into an avs file, eventhough Yatta is kinda awkward to use for that, any automatic attempt prolyl will fuck up at some point, because of scrolling scenes, which obviously will be noticable if u freeze it. Or it might fuck up and see an action scene as a scenechange as well.
Dreassica is offline   Reply With Quote
Old 26th July 2006, 14:49   #13  |  Link
Tanma
Registered User
 
Join Date: Jul 2004
Posts: 24
Quote:
Originally Posted by Dreassica
Just use Yatta to go through the video and manually freezeframe it there and save it into an avs file, eventhough Yatta is kinda awkward to use for that, any automatic attempt prolyl will fuck up at some point, because of scrolling scenes, which obviously will be noticable if u freeze it. Or it might fuck up and see an action scene as a scenechange as well.
I had pointed it, but the work for removing some frezeframe lines manually is easier than manually using freezeframe on ~97% of the keyframes.

Using a program like aegisub i can find where are the action scenes, by looking the keyframes through the timing bar.

Last edited by Tanma; 26th July 2006 at 14:57.
Tanma is offline   Reply With Quote
Old 27th July 2006, 14:03   #14  |  Link
Stigma
Registered User
 
Stigma's Avatar
 
Join Date: Oct 2002
Location: Norway
Posts: 56
Holy thread necromancy batman!! =P

Unfortunately I no logner think a filter like this is possible to make. not because it couldn't be coded, but because that it would either not be effective, or have too many false positives.

the best bet is to use a program to detect keyframes as was sugested... atleast it speeds up the process a lot from going through them all manually.

-Stigma
__________________
Ars Longa, Vita Brevis
"Art (is) long, life (is) short"
Stigma is offline   Reply With Quote
Old 27th July 2006, 17:53   #15  |  Link
Tanma
Registered User
 
Join Date: Jul 2004
Posts: 24
Stigma, i think it is something possible.

There is a program that detect keyframes, his name is ymc, that comes with yatta. With the option SCLavc checked, it generates a .yap file with all the keyframe numbers.

Unfortunatelly, I don't know how to program it, but the idea is simple, as we pointed.

For example, I have a text file with the keyframes generated by ymc, that will have something like this:

2486
2692
2725
2765
2830
3165
3374
3636
3731

The solution for avoid problems with action scenes is pretty simple: (A = current keyframe)

if A <= (previous keyframe + 10) then
jump to the next keyframe #or something like that
else
Freezeframe(A-1,A-1,A-2)
FreezeFrame(A,A,A+1)

In some videos (like the one I'm dealing), it is better to use
Freezeframe(A-1,A-2,A-3)
FreezeFrame(A,A+1,A+2)


For example, with keyframes 2486 and 2692, the output would be somethinf like this:

freezeframe(2485,2485,2484)
freezeframe(2486,2486,2487)
freezeframe(2691,2691,2690)
freezeframe(2692,2692,2693)

The best would be if we had a option to insert the number of frames we want to freeze before and after each keyframe, as I told before.

Anyone can do a program to do this stuff?

Last edited by Tanma; 27th July 2006 at 19:17.
Tanma is offline   Reply With Quote
Old 28th July 2006, 05:28   #16  |  Link
Mug Funky
interlace this!
 
Mug Funky's Avatar
 
Join Date: Jun 2003
Location: i'm in ur transfers, addin noise
Posts: 4,555
now this isn't optimal, but "improvesceneswitch" in the removedirt package will replace the frames either side of a scenechange with the next ones along.

so instead of:

1 2 3 4|5 6 7 8

you get:

1 2 3 3|6 6 7 8

this'll get rid of the film splice marks, but in action scenes you'll probably get stutter (DBZ is full of flashing stuff that'll no doubt set off a scenechange detector).

...or you could just leave them in and try not to notice them. the original editor obviously didn't care, so why should we?

you'll notice Bollywood films have this artefact a lot, as do lower budget or older TV shows shot on 16mm.
__________________
sucking the life out of your videos since 2004
Mug Funky is offline   Reply With Quote
Old 29th July 2006, 01:45   #17  |  Link
Tanma
Registered User
 
Join Date: Jul 2004
Posts: 24
Quote:
Originally Posted by Mug Funky
this'll get rid of the film splice marks, but in action scenes you'll probably get stutter (DBZ is full of flashing stuff that'll no doubt set off a scenechange detector).

...or you could just leave them in and try not to notice them. the original editor obviously didn't care, so why should we?

you'll notice Bollywood films have this artefact a lot, as do lower budget or older TV shows shot on 16mm.
That's why I had the idea to not freeze a keyframe in a interval =< 10 frames of the previous keyframe. We just need someone to do this script...
Tanma is offline   Reply With Quote
Old 29th July 2006, 15:10   #18  |  Link
Tanma
Registered User
 
Join Date: Jul 2004
Posts: 24
I'm loading removedirt.dll but the script isn't recognizing the command improvesceneswitch...
Tanma is offline   Reply With Quote
Old 31st July 2006, 10:29   #19  |  Link
MOmonster
Registered User
 
Join Date: May 2005
Location: Germany
Posts: 495
DupHQ is one of my older functions I created for such (similar) problems. I donīt used this function for a long time, but it could be helpful for your problem. Itīs worth a try.
MOmonster is offline   Reply With Quote
Old 23rd January 2008, 09:21   #20  |  Link
videoFred
Registered User
 
videoFred's Avatar
 
Join Date: Dec 2004
Location: Terneuzen, Zeeland, the Netherlands, Europe, Earth, Milky Way,Universe
Posts: 689
I am looking for a solution for this myself. I'm transfering old 8mm films and at scene change I need to delete -say- 5 frames from the previous scene and 5 frames from the next scene.

Now, Fizicks DepanEstimate is detecting scene change very well. With info=true you will see "base" is the indicator for this.

It must be possible to automize this... I hope?
It would save us a lot of work....

PS: detecting keyframes is not a problem for me.
I capture in uncompressed RGB24 so all frames are keyframes.

Fred.
__________________
About 8mm film:
http://www.super-8.be
Film Transfer Tutorial and example clips:
https://www.youtube.com/watch?v=W4QBsWXKuV8
More Example clips:
http://www.vimeo.com/user678523/videos/sort:newest

Last edited by videoFred; 23rd January 2008 at 09:26.
videoFred is offline   Reply With Quote
Reply


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT +1. The time now is 04:09.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2024, vBulletin Solutions Inc.