RoseyCubesat-1 Image Decoding

full

Hi All,

RoseyCubesat-1 carries two small cameras which take raw images at 480 x 360 pixel resolution. The images are composed of a single byte per pixel with bayer colour filter. These images have recently started being downloaded successfully from the satellite, and several people have already noticed this increased activity: https://twitter.com/EU1SAT/status/1659864466907963392?s=20

The RoseyCubesat-1 team has shared the image packet format, allowing us all to try to decode images. The description, given by @depegasus is as follows:

The satellite sends UI AX.25 packets. Images are transmitted in chunks of 80 pixels with a chunk ID. Packets contain the following data struct:

struct{
uint16_t packetId; //0xA4 0x0C
uint16_t sequenceId; //ignore
uint8_t isPreview; //one indicates 48x36 pixel preview, zero indicates 480x360 full resolution image
uint16_t elementId; //image chunk number. 0-21 for previews, 0-2159 for full
uint8_t pixels[80]; //pixel data
}

Since images are sent in raw format, as opposed to jpeg, even partial images can be seen, and the image can be shown filling-in live as more chunks are received.

To test your own decoding use the audio from the following good observation run through gr-satellites:
https://network.satnogs.org/observations/7591261/

Resultant image attached. Conversion to colour requires conversion of the bayer filter data. This can be achieved, for example, using the Python open-cv command:
cv2.cvtColor(im, cv2.COLOR_BayerGR2RGB)

Happy decoding!

7 Likes

@MVP_alex welcome in the community and thank you for the info!

Please keep us updated when these image transmissions will happen to help by scheduling observations in the Network!

gdfs
This is my attempt, but I didn’t replace lost packets with empty frames

4 Likes

Congrats on the image processing!

Could you (or anyone) please outline the steps involved to extract an image from the downlink?

Thanks!

1 Like

Here is another attempt for decoding:

out

using the combination of observations 7591263, 7597434 and 7597475.

8 Likes

The team has a good pass coming up over Switzerland on 29/05/2023 11:29 CET. Expecting good image download.

Thanks to those recording and decoding images so far. I have a Python image decoder I can post next week if there is demand for it.

Have a good weekend!

@MVP_alex Thank you for the update!

Checking in gpredict when the pass will happen I see that the time is on 29/05/2023 11:29 CEST (not CET), which is 29/05/2023 09:29 UTC. Please correct me if I’m wrong and please use UTC timestamps in the future at it helps a lot to avoid any confusion.

2 Likes

Decoding attempt:

Still a few things missing, but I like the way it’s going.

Processing attempt:

cubsat

1 Like

Finalized my decoder, and got good imagery out of it!
output

Here’s the github: radio-satellites/RoseyCubesat-1-tools: Decode data from RoseyCubesat-1! (github.com).

Sorry for the poor documentation… as of now, it’s harder to document than writing the script itself!

2 Likes

Unfortunately this morning’s predicted download did not occur due to the team working on other objectives during the pass. We will try to keep you updated on future planned downloads. Apologies to anyone waiting for new data to test image decoders.

3 Likes

Would it be possible to have any downloads over NA? It would be pretty awesome for people here to download imagery as well…