Converting blob position to 3d position

Considering the impracticality of installing tracking cameras in perfect birds-eye perspective of a floor, how would I go about calibrating the position of blobs tracked from a camera with an arbitrary perspective to usable 3d coordinates? Essentially I need to scale out the blob positions to a flat birds-eye view.
Initially I thought I would just correct the perspective of the camera top before running it through the tracker, but the relative size and position of the object changes too much as it travels through the depth of the scene.
The objective is to have a system where I can calibrate it by standing at each corner of the floor being tracked and scale it correctly to those bounds but it’s melting my mind a little.
From what I’ve read this will almost certainly end in some kind of matrix math which I’ve not tried before.
Can anybody offer me some help or advice with this?

Are your blobs people? Do you care about their height or are you just trying to remove the perspective so you can get accurate xy coordinates from overhead? There’s not a good way of truly converting their coordinates to 3d space with what I assume is a 2d camera because you have no easy way of determining their height. If you’re okay with making assumptions about their height, you might be able to make this work. Why not just use a kinect? Then you could reconstruct the scene in 3d, render it from an arbitrary perspective (birds eye) and then do your blob tracking on that render.

Hi mji
Yes it will be people and considering the blob track top gives you blob height I figured I would subtract height/2 from the blob pos to get their foot position. Wouldn’t that work? Then it would be a case of converting the floor space in the camera shot to accurate de-perspectified coordinates.
Kinect range is not adequate unfortunately.
I wonder if there’s something we could concoct by creating a virtual camera with the same properties as the real camera using camschnapper and matching the real world positions etc