3 kilobytes (what you can store on a little fiducial QR code stamp) is a pretty large amount of data. But you don't need that much. If you just encode a 64bit identifier plus 48 bits of data encoding a bounding box in half-precision floating point for a total of 112 bits (14 bytes). Or maybe 1 byte of precision in each dimension and about 100 points defining the shape for a total of 300 bytes (and another 8 for identification).
You really can store plenty of info in a fiducial. And you can use multiple fiducials to store more if you like. This is still a pretty rich vein to mine.