Previously, I had written an encoder for the Robot 36 SSTV mode. I chose this for a simple reason: it appears to be the most common mode used in downlinks from satellites, such as the ARISSat-1. It's not a bad choice, and presents reasonable quality in just 36 seconds.
Today, I decided that I should probably go ahead and implement another of the "Robot" modes, specifically Robot 72. It transmits images with the same resolution (320x240) as Robot 36, but with a bit better quality, and I suspect a bit better fidelity. Both modes transform the RGB colors of the original into a different color space with a luminance channel (usually labeled Y for Ylluminance) and the color encoded in a R-Y and a B-Y channel. To speed transmission, Robot 36 downsamples the last two channels into half resolution images in both dimensions (it really only sends a 160x120 image in those channels). Robot 72 does a similar thing, but only downsamples in the horizontal direction, sending R-Y and B-Y in 160x240.
It wasn't too hard to modify my Robot 36 code to transmit Robot 72. For fun, I set it up and tested it. It works! Sending the resulting file to my Macbook and decoding with Multiscan 3B, I got:
(The image has been expanded by 2, to 640x480, which makes it look a bit soft)
So, anyway, I was thinking about where to take this idea a bit further. I want to create a project that others can duplicate and expand upon, and that maybe promote the SSTV in a way that is amusing and fun. I wanted to build upon the work I've done so far, but take it further, and make it into a project that others might want to duplicate.
What I envision is a small box, consisting of a Raspberry Pi, a Raspberry Pi Camera, and a PiTFT display, together with a USB sound card like this one. (You need a USB sound card because while the Pi does have sound output, it doesn't have sound input.) Add a microphone and a speaker. This collection will be interfaced with a radio: let's assume for the moment an amateur radio like a the little Baofeng BF-888S radio I've been playing with. Add some buttons for interface.
Here's what I'm imagining as the use case: it's an interface to your HT. You could talk, and have it relayed to the radio. You could listen to the radio through the speaker. But you can also click a different button, and it will capture and send an image via SSTV. And if it hears an SSTV image, it will decode it and display it on the TFT display. I'll probably initially support some of the low resolution black and white modes as well as the Robot 36 and Robot72 modes. I can also imagine a keyboard interface that will allow you to add text to your live images and send it out as well. The fastest, lowest resolution BW modes are just 160x120, and transmit in just 8 seconds. With an 8x8 character matrix, you can send the equivalent of a tweet (about 120 characters) in one image.
To make this work, I'll have to work on a demodulator. So that's the next step. Stay tuned.