PDA

View Full Version : Black (or dark) frame insertion ?


totozero
14th January 2009, 14:47
Hi all,

I've been wondering if there was a way to reproduce/simulate the black frame insertion technique (aka dark frame insertion in sony's world) ?

So what is it all about ? :

This is something you won't see on the manufacturers' websites, but 120hz lcd panels use a process called Black Frame Insertion (BFI) - I'll explain. As was mentioned, a standard lcd has a 60hz refresh rate meaning each frame is displayed for 16.6ms as opposed to a tube television/CRT where each part of the image is displayed for less than 1ms and is followed by blackness. Most of the ghosting in LCDs with a fast response time is caused by retinal persistence, (think about what happens when you look at a lightbulb and then look away) due to the fact that the image is displayed for so long. 120hz LCDs reduce retinal persistence by halving the time each image is displayed to 8.3ms, but they are still only capable of refreshing the actual image 60 times per second, and the other 60 frames are pure black, inserted after every "real" frame. The result is a smoother looking video.

Now assuming my display can achieve 48hz, would it be possible to create an avisynth script that'd insert a black frame between each video frame ?
For instance in a 24 fps movie, it will be something like the double framerate thingie excepted there won't be any frame interpolation.
I'm just wondering if the refresh rate would B fast enough to
get something cool ?
Most of time, in new LCD TVS/PJS black frame insertion is coupled with motion interpolation (ie motion flow, trumotion or wathever) as refresh rates are improved (100/120/200hz...).

Anyone to write such a script fot relatime testing purpose, pretty please ?
AFAIK, it won't be a tough job for you, skilled people ! :thanks:.

TIA.

totozero
14th January 2009, 14:49
Some documentation with various techniques :

http://www.xbitlabs.com/articles/monitors/display/lcd-parameters_4.html

scharfis_brain
14th January 2009, 14:52
A possible script might look like this one:
input=avisource("yourmovie.avi")
black=input.blankclip()
interleave(intut,black)

But be warned: it will produce a horrible flickering result.

Guest
14th January 2009, 15:12
It will also be very hard to compress.

totozero
14th January 2009, 15:12
Dang u're right :(
It looks horrid, should have known it.

Guess the only way to make it work is to get at least a 120hz refresh rate. Thus the eye would'n't catch the flicker.

Anyways, thx.

Sagekilla
14th January 2009, 19:17
Unless you have some way to force your encoder to recognize a constantly alternating pattern of real/fake/real/fake frames, there's no way you could conceivably get this into a manageable size.

Bonus points: Use FFDShow + Avisynth ;)

PigOnWing
15th January 2009, 09:58
I doubt you would like to achieve that in the first place.

Secondly, what you describe seems to me like trying to manually simulate a technique done at hardware-level for 120Hz LCD displays, without taking into account the hardware limitations of whatever display you're using in the first place - be it LCD or CRT, it already has it's own flickering, non-flickering or non-flickering compensation. Whatever you may achieve by using such "fake" black-frames, will already be presented under that display's technique - at best, you will achieve double-compensation, which will actually interfere with what our theoretically try to achieve.

But first of all, as you think to apply it to film material in order to "preserve 24fps as it might be seen", you have a wrong grasp of how 24fps is actually made in film. When film is being projected from 35mm reels, it actually isn't 24fps per se, but could almost be described as 48 fps - each frame is being projected twice (sounds familiar, and reminds of of interlaced technique? yes and no; Interlaced material is using two half-frames from different time-points, none of which is actually a full frame by itself; in 24fps film, the full [progressive] frame is being repeated twice.

This repeat process is actually done in order to avoid that exact flickering which will be a result of what will happen if you'll project "true" 24 frames per second; So theoretically, to do something similar to your line of thought, what should be done is to replicate the movie frames, and then interleave it with black frames, and get a (theoretical) 96fps clip.

So:

Original = Avisource("Yourmovie.avi")
Double = Interleave(Original,Original)
Black=Double.Blankclip()
Interleave(Double,Black)


Should (theoretically) give you the effect you're trying to achieve, and practically would be a no-no, considering the second point mentioned above. :-)

-- Piggie

scharfis_brain
15th January 2009, 12:52
@PigOnWing: Your script won't work. It'll display Film-Film-Black-Black-Film-Film-Black-Black-Film-Film-Black-Black-....

I've altered a little bit to display: Film-Black-Film-Black-Film-Black-Film-Black-Film-Black-....
Original = Avisource("Yourmovie.avi")
Black=Original.Blankclip()
Interleave(Original,Black)
Selectevery(2,0,1,0,1)

Guest
15th January 2009, 13:25
Or:

Original = Avisource("Yourmovie.avi")
Doubled = Interleave(Original,Original)
Black=Doubled.Blankclip()
Interleave(Doubled,Black)

Not saying it's better, just different. :)

scharfis_brain
15th January 2009, 13:52
oh, yeah.

the original script should be fine...
sorry for the confusion

Leak
15th January 2009, 14:55
Errr... maybe it's just me, but everytime I've read about such displays it's said that they insert the black frames by turning off the (usually LED-based) backlight.

So if you just insert black frames you'll get a rather ugly mess since even the fastest displays liquid crystals will take several magnitudes longer to turn completely black than switching off the backlight will do...

Just saying...

np: Death Cab For Cutie - Transatlanticism (Transatlanticism)