Log in

View Full Version : 4 ways to create 3D SBS-Half videos


tiffytaffy
6th October 2011, 12:08
I'd like to know your opinions about 4 ways to create 3D SBS-Half videos from 2 individual streams.

1) First combine then resize:

1a) comb=stackhorizontal(left, right)
comb=LanczosResize(comb, width(comb) / 2, heigh(comb))
1b) comb = HorizontalReduceBy2(StackHorizontal(left, right))

2) First resize then combine

2a) left=LanczosResize(left, width(left) / 2, height(left))
right=LanczosResize(right, width(right) / 2, height(right))
comb=stackhorizontal(left, right)
2b) comb = StackHorizontal(HorizontalReduceBy2(left), HorizontalReduceBy2(right))

Which one should have the best quality and which is the fastest. I guess that Lanzos has the better quality. But is it possible that Lanzoz change the left view and right view pixels in a different way, so that the result is not 3D friendly? The original relatively differences between left and right view should be as accurate as possible after resizing.
I checked a few scripts from other guys:
Pantarheon and SSIFsucka are using 2b
3DBDBuster is using 1a but with BicubicResize instead of LanczosResize

Thanks

tiffytaffy
13th October 2011, 20:41
Can no one give a hint?
I want to avoid, that the resize filter gives me a better result on left or right side. Maybe it could happens that the filter gives me a better result on the left side. In this case the different between both sides is bigger than before. But witch filter is the best to prevent it?

IanB
13th October 2011, 22:22
The Avisynth resizers are quite accurate so order relation should not be an issue.

HorizontalReduceBy2() is a bash pixel averaging filter with no anti-aliasing filtering, so may not be that ideal.

If you really want to be certain about left and right processing paths being identical you could interleave the frames, process the combined stream with common code then select out the result, i.e....
Interleave(Left, Right)

# any original processing

Spline16Resize(width()/2, height())

# any half width processing

StackHorizontal(SelectEven(), SelectOdd())

tiffytaffy
22nd October 2011, 18:40
This is a good idea. I will try out next time.