Raw image data from single pixel camera
🕑 Added 2024-12-04 14:45:33 +0000 UTCIf you're interested in messing around with the raw image data from my camera, here it is! Trying to render it into an image is a fun exercise with a lot of potential ways to doing the projections.
The data is packaged extremely inefficiently (but extremely portably) as JSON with the following format
Aside from the raw voltage readings from the photodiode and encoder, it has information about the field of view and camera cart position which can be useful for fancy projections.
A few notes:
The capture process starts with the cart and mirror at one position then linearly interpolates them to the final position.
The encoder data and photodiode voltages are sampled at different rates. The recorded times use the same clock so you can use that to correlate them.
The camera spins up to constant speed before initiating capture so there shouldn't be (much) acceleration at the start of the data stream
The camera spins down at the end of the data stream so you will see acceleration in the encoder stream there (position vs time)
This was captured on a non-realtime raspberry pi. As a result the precise timing of the encoder and ADC readings is not entirely reliable. For example several encoder readings in a row may be listed as having happened at the same time. This can net you some confounding results (ask me how I know), but once you're aware of it this is pretty easy to deal with.
Have fun! Let me know if you have questions or issues in the comments.
-Shane
Comments
James Steinberg
This is really cool, it would be interesting to do some stop motion like something slowly moving across the wall and changing the “lens” type
Shane Wighton
Cool! For the other datasets you'll have to consider the changing field of view rather than the position of the cart when doing the projection. This is because the cart is still and it is sweeping out a cone (like a camera or your eye)
Julio Ernesto Rodríguez Cabañas
Thanks a lot for sharing this! Super cool project. I had a quick go at writing a renderer, and it seems to work fine, but only for the picture of the heads, as that's the only one where the distance from the center is different at the start and at the end. So, either the data is wrong, or I am misunderstanding something – most likely, I am misunderstanding something. 😅