Because I’m stuck waiting on the post, I’m very very bored. And when I’m bored, I get very frustrated until I have something to do. That something is looking at macro-blocks calibration versus calculation.
There’s 3 sides to this:
- What do the macro-block vectors actually mean? i.e. what are the units for the values? I’m currently assuming is the number of macro-blocks that a frame has moved base upon the fact that the values are only a single byte, so can only cover 255 pieces of movement; based on that assumption, the maximum frame size would be 255 x 16 (pixels per macro-block) = 4080 pixel maximum screen resolution which is plausible. Zoe is shooting to 400 x 400 resolution, so she should get ±25 as the output values. I need to test this theory..
- I need to work out how to use the SAD readings; the low the value, the more confidence there is that the shift in the macro-blocks is accurate. I need to look into this in more detail.
- Finally, I need to know the units of macro-blocks, and how to convert the values to meters. This is where I’ve made progress.
v /|\ ^ / | \ | / | \ | /\__θ__/\ | / | \ h / | \ | / | \ | / | \ | /________|________\v | | |<--------d---------|
I’ve found out that the camera angle of view is 62.2 x 48.8 degrees for the V2 camera. As I’m videoing a square frame, the angle θ in the diagram is 48.8°.
d can be calculated
- in meters as 2 h tan(48.8 / 2) where h is also measured in meters
- in macro blocks as frame size (400) / macro block size (16) = 25
So 1 macro block is 2 h tan(48.8 / 2) / 25 = 0.03628960 x h meters. At one meter height, d works out as ≈0.907m which matches up with my testing.