PDA

View Full Version : Improving high speed blocky low rez footage


NerdWithNoLife
24th October 2009, 19:05
I was interested in the Ex-F1 camera, which can shoot up to 1200fps at low resolutions. So I asked a guy who owns that camera for some sample footage to see what could be done with it. I won't post it yet, in case you feel it would be a rules violation.

The original files are MOV's. I'm working with a 600fps video that is 432x192. Even at its native resolution, it looks blocky and jagged, so EDIUpsizer didn't didn't do its usual magic on jagged edges, though in some ways it was still better than Bilinear, Bicubic, and Spline resizing.

So far it's:
QTInput("airplane1.mov").ConvertToYV12() #Original was YUY2, thus the conversion.
And I'm open to suggestions.

poisondeathray
24th October 2009, 19:32
If "blocking" is your prevalent concern, did you try any of the deblocking filters?

I don't see how this could violate any rules, since this is from a home video camera (unless the original owner doesn't want it posted or the content is "questionable" in nature like adult content)

NerdWithNoLife
24th October 2009, 20:05
I have his permission. It's an airplane prop spinning. (http://www.mediafire.com/file/dhmetzbjjmk/airplane1.MOV) Definitely not adult content. Perhaps blocking was not the correct word. It's more jaggies on the diagonals. The jagged edges that video is so good at. Also, uprezzing, at least to SD size, is the intent since they're so small already.

poisondeathray
24th October 2009, 20:17
This is aliasing. In order to get higher fps, the camera "samples" pixels from the full array of the sensor, instead of taking the full image and downsizing it using a resize algorithm. The internal processing isn't fast enough for that, and as a result of this "pixel skipping" you get "jaggies" or aliasing

You can try some of the anti-aliasing filters like AAA(), Antialiasing(), but they tend to blur and degrade the image. I doubt you will will get satisfactory results, but hopefully others will have better suggestions

e.g.
QTInput("airplane1.MOV")
nnedi2_rpow2(rfactor=2,cshift="Spline36Resize")
AAA()

NerdWithNoLife
24th October 2009, 20:31
Not all the clips are this bad. This is sort of a worst case scenario, to see if anything can be done with it. Perhaps the extreme contrast of the paint on the plane, on a diagonal, exposes the weakness of the camera's slow motion technique.

Didée
24th October 2009, 20:34
Hey ... if it's really the discard-pixel type of sampling, then this one of those cases where the conditions for true temporal superresolution are met. Finally a chance to check the correspending tools for effective-ness, instead of the usual deadborn trials on lowpass-sampled sources. :)

(Sorry I won't look into this right now - having a bad flu', the brain feels like pudding...)


edit - aaah of course for this sample, TSR isn't possible either, since there's virtually no motion that could provide useful information. On this scene, you're more or less stuck with NNEDI2.

poisondeathray
24th October 2009, 20:40
I should clarify that I am assuming that's what the camera is doing (pixel skipping) - I don't know this for a fact with that model - because that is the method most "point and shoot" cameras use.

But I'm sure the great Didee will figure it out and provide some insight into this when he gets better

scharfis_brain
25th October 2009, 00:32
there is a very disgusting way to get back straight diagonals:

interpolate the height with nnedi2.
discard all ORIGINAL lines.
interpolate the previously interpolated lines again.


loadplugin("c:\x\nnedi2.dll")
directshowsource("airplane1.MOV")
converttoyuy2()
nnedi2(dh=true) #double height
separatefields().selectodd() #discard original lines
nnedi2(dh=true) #interpolate again

# uprez to 4x.
converttoyv12()
turnleft().nnedi2(dh=true).turnright()
nnedi2(dh=true)
turnleft().nnedi2(dh=true).turnright()

henryho_hk
26th October 2009, 02:11
Yet another "disgusting" way:


directshowsource("airplane1.mov")
#TempGaussMC_beta1mod(tr0=1,tr1=1,tr2=1,rep0=0,rep1=0,rep2=0,sharpness=0,Smode=0,SLmode=0,Sbb=0,SVthin=0.0,EdiMode="NNEDI").selecteven() # less sharp and less aliasing
TempGaussMC_beta1mod().selecteven() # sharper but more aliasing

nnedi2_rpow2(rfactor=2,cshift="Spline36Resize") #if you need to enlarge the size