View Full Version : Ghetto bobbing
Katie Boundary
12th June 2017, 22:53
When meth addicts steal your bobbers and you're too poor to buy new ones, what can you use instead? Here are two options:
mpeg2source("212.d2v").converttorgb().separatefields()
A=selecteven().GeneralConvolution(0,"0 0 0 0 3 0 0 1 0")
B=selectodd().GeneralConvolution(0,"0 1 0 0 3 0 0 0 0")
Interleave(A,B).spline64resize(720,480)
mpeg2source("212.d2v").converttorgb().separatefields().spline64resize(720,480)
A=selecteven().GeneralConvolution(0,"0 0 0 0 1 0 0 1 0")
B=selectodd().GeneralConvolution(0,"0 1 0 0 1 0 0 0 0")
Interleave(A,B)
The second method yields slightly less horrible results. Both suffer from the fact that using generalconvolution as a sub-pixel shifter results in unnecessary blurring. It would make more sense to do the shifting during the resize step, but that would require cropping (including negative cropping), which I'd rather avoid...
mpeg2source("212.d2v").converttorgb().separatefields()
A=selecteven().spline64resize(720,480,src_left=0,src_top=0.25,src_width=720,src_height=240)
B=selectodd().spline64resize(720,480,src_left=0,src_top=-0.25,src_width=720,src_height=240)
interleave(A,B)
Is ghetto bobbing possible without destruction of the original data?
EDIT: wait. I think that's what I accidentally succeeded in doing... can anyone check and make sure I'm not crazy?
wonkey_monkey
12th June 2017, 23:11
...what?
Both suffer from the fact that using generalconvolution as a sub-pixel shifter results in unnecessary blurring.
They also suffer from being stupid things to do to a video. It's frankly mindboggling that you invest so much time in deliberately screwing up videos.
Why don't you just use bob(), for goodness' sake? Or one of the far, far better alternatives you've been told about over and over and over?
I dread to think what a newbie would make of this place if he accidentally thought something you'd posted was what counted as reasonable, well-informed advice here.
TheFluff
12th June 2017, 23:16
Bobbing is by its nature a subpixel shift, which means it is by definition an interpolating operation. You want to move the sampling points (pixel centers) by a fractional distance between two such points, so you have to interpolate between the samples to find new ones.
Speaking of which though, what's your stance on considering pixels as square areas rather than sampling points, these days?
FranceBB
13th June 2017, 00:14
what can you use instead?
QTGMC( Preset="Slow", EdiMode="EEDI3+NNEDI3")
Katie Boundary
13th June 2017, 00:27
Speaking of which though, what's your stance on considering pixels as square areas rather than sampling points, these days?
It hasn't changed, though I'm more consciously aware of the difference between physical display pixels, which are always rectangular and nearly always square, and recorded data pixels, which aren't anything (not even infinitely small sample points) until interpreted.
QTGMC( Preset="Slow", EdiMode="EEDI3+NNEDI3")
That's not ghetto. That's a fancy rich-people bobber. This thread is about ghetto bobbing.
StainlessS
13th June 2017, 00:39
That's a fancy rich-people bobber.
Nah, tis free, Open Source bobber. rich or poor alike can use it. :)
EDIT: Considered by many, a "Sane Person bobber" :)
Katie Boundary
13th June 2017, 01:01
Nah, tis free, Open Source bobber. rich or poor alike can use it. :)
EDIT: Considered by many, a "Sane Person bobber" :)
Regardless, it does not advance the extremely important study of ghetto bobbing (bob-deinterlacing video without a proper bob-deinterlacer)
Sharc
13th June 2017, 09:10
@Katie
You gave the answers yourself, I think ....
You can compare (frame by frame...) your 3 proposals with standard bobbers easily by interleaving all versions and stepping through, or by arranging the versions as rows and columns for simultaneous real time playback.
At the end of your scripts you should add
AssumeFrameBased()
What comes next? A ghetto resizer?
Edit:
So here is what I got from a 1920x1080i25 video source:
http://www.mediafire.com/file/034d1j06slbz0od/Katie%27s_Ghetto_Bobber1.mkv
Katie Boundary
13th June 2017, 13:44
What comes next? A ghetto resizer?
It's called crop lol
VS_Fan
14th June 2017, 02:04
I don’t see how your experiment would be faster or result in higher quality/ fidelity than Bob(0.0, 1.0), which will “strictly preserve the original fields and just fill in the missing lines”. See bottom of this page (http://avisynth.nl/index.php/Bob).
It works for RGB and both luma and chroma in YV16 and YUY2. More details in the following two forum posts (https://forum.doom9.org/showthread.php?p=826073#post826073).
Sharc
14th June 2017, 06:59
I don’t see how your experiment would be faster or result in higher quality/ fidelity than Bob(0.0, 1.0), which will “strictly preserve the original fields and just fill in the missing lines”. See bottom of this page (http://avisynth.nl/index.php/Bob).
It works for RGB and both luma and chroma in YV16 and YUY2. More details in the following two forum posts (https://forum.doom9.org/showthread.php?p=826073#post826073).
Yes, but I think you missed the point. She didn't claim that her proposals are faster or better. In her hypothetical meth addict scenario she assumed that there exisit no bob, tdeint, yadif, QTGMC etc. and wanted to know whether her ghetto proposals for bobbing are insane.
TheFluff
14th June 2017, 07:57
Experimenting with doing simple operations using only basic video processing tools like convolutions shouldn't be discouraged even if it has no practical use in reality.
Katie Boundary
14th June 2017, 18:56
Yes, but I think you missed the point. She didn't claim that her proposals are faster or better. In her hypothetical meth addict scenario she assumed that there exisit no bob, tdeint, yadif, QTGMC etc. and wanted to know whether her ghetto proposals for bobbing are insane.
http://makeameme.org/media/created/this-guy-gets-11xabx.jpg
Experimenting with doing simple operations using only basic video processing tools like convolutions shouldn't be discouraged even if it has no practical use in reality.
https://i.imgflip.com/g3qgz.jpg
poisondeathray
14th June 2017, 19:14
In the first post shouldn't it be ConvertToRGB(interlaced=true) since you're using it right after the source filter ? Or are ghetto rules different ? :D
Ghetto Supastar. That is what you are.
https://www.youtube.com/watch?v=RtIGCGu9L90
Katie Boundary
19th June 2017, 04:43
What difference would it make? Remove converttorgb() entirely if it makes you feel better. It's only there for TMPEGEnc compatibility, and as a prerequisite for generalconvolution.
poisondeathray
19th June 2017, 04:59
What difference would it make? Remove converttorgb() entirely if it makes you feel better. It's only there for TMPEGEnc compatibility, and as a prerequisite for generalconvolution.
The difference is chroma artifacts from progressive upsampling of chroma, but since you put it after the source filter, you're still interlaced. You'll get "chroma ghosting" interlaced artifacts as demonstrated below in the field, before you even do anything else
You can't remove it completely if you plan to use generalconvolution - and wasn't that the main idea you were playing with ?
The solution is put it after separatefields() , or use interlaced=true if you leave it as you initially had it
https://s12.postimg.org/9a3xqr8vx/default.png
https://s9.postimg.org/j7d4e9uzj/interlaced_true.png
Katie Boundary
23rd June 2017, 03:52
"chroma ghosting" interlaced artifacts
:eek:
Those are exactly the artifacts that I've been seeing in the early seasons of South Park. This warrants further investigation. Thank you.
Katie Boundary
23rd December 2018, 01:04
BTW, ghetto bobbing can be fed into Yadifmod2, with VERY good results,
A=separatefields().selecteven().spline144resize(720,480,src_left=0,src_top=0.25,src_width=720,src_height=240)
B=separatefields().selectodd().spline144resize(720,480,src_left=0,src_top=-0.25,src_width=720,src_height=240)
C=interleave(A,B)
yadifmod2(mode=3,edeint=C)
However, I have no idea why you would want to do this, seeing as how using yadifmod defeats the point of ghetto bobbing. Maybe, due to the difference in interpolation methods, it would use slightly fewer CPU cycles than normal Yadif or any other temporally-aware bobber?
wonkey_monkey
23rd December 2018, 01:29
A plea to anyone reading this thread: don't.
However, I have no idea why you would want to do this
We can agree on that, at least.
johnmeyer
23rd December 2018, 02:26
A plea to anyone reading this thread: don't.Yeah, why necro your own really dumb thread in order to ... say absolutely nothing new?
vBulletin® v3.8.11, Copyright ©2000-2026, vBulletin Solutions Inc.