View on GitHub


Packet Compressed Sensing Imaging (PCSI)

Packet Compressed Sensing Imaging (PCSI)

This project contains the sample program for how to use Packet Compressed Sensing Imaging (PCSI) to transmit images over unconnected, noisy, lossy channels.

PCSI Screenshot

Packet Compressed Sensing Imaging (PCSI) is a way to:

The reference software included here allows you to:

Also included is the specification for the pseudorandom datagram payload (PDP) protocol that enables PCSI, and a tutorial on how PCSI works.

Development information is available on the project Github page

Author: KD9PDP

License: GPL-3.0

What is PCSI?

PCSI is a way of transmitting imaging data over unconnected networks where receiving stations may each receive different random packets (due to corruption from noise or blocked signals) yet each receiving station can individually reconstruct the entire original image with high fidelity only with the packets it received. High quality, full frame images, can be reconstructed with as little as 10% of the original data being transmitted or received. Even if a receiver joins the broadcast mid-transmission, it will be able to reconstruct the full image. For more details, click here.

How to install?

Download from the github releases page. Unzip the folder. Find "pcsiGUI.exe" and double click on it to run.

How to use?

Transmitting Images

See the following video and text below. In the video, PCSI is controlled on the left window, the right window is a terminal running direwolf. You could use fldigi or your hardware TNC as well. Transmitting Demo

  1. Start your TNC (hardware or software)
  2. Open pcsiGUI.exe
  3. Enter in your callsign, your destination (could be a group name like "PCSI" or another callsign). Both take an optional SSID (e.g., KD9PDP or KD9PDP-3)
  4. Enter in a comma separated list of digipeaters (optional, e.g., "SOUTH-1, NORTH-1" without the quotes). Spaces are allowed. SSIDs are optional.
  5. Connect PCSI to your TNC using either serial or TCP KISS connections. For serial, select your device from the list and click "connect." for TCP, enter your hostname and port and hit connect.
  6. Click the "Load Image" button to load an image. Images will be cropped to be multiples of 16 pixels in width or height. 320x240 (typical SSTV resolution) work well.
  7. Configure PCSI for transmission:
    1. TX Bit Depth: How accurately would you like the color transmitted? This number must be in multiples of 3. Twelve bit ("12") color is default and works well for many images. High values have better color accuracy but take longer to transmit. "True color" is 24 bit (e.g., enter "24"), 9-bit color looks like a Sega Genesis game system's display. Up to user to pick what they want.
    2. TX Chroma Compression: The human eye resolves black and white with finer detail than color, so we don't have to send as much color information to receive the same quality image. A value of 1 indicates no compression. "20" works well for most images. Larger values is more compression and increases transmission speed while at a cost of image accuracy.
    3. Image ID Number: give each transmission a unique number so the decoders know a new image has started.
  8. Click "TX Start/Restart." You're up and running!

Receiving Images

See the video below and the following instructions: Receiving Demo

  1. Open pcsiGUI.exe.
  2. Connect to your TNC using serial or TCP connection as described above.
  3. Set optional settings:
    1. Click "Choose Directory" if you'd like to change the directory data will be saved. Data will be continuously saved from ALL images you receive simultaneously, even the ones you aren't actively previewing in the program!
    2. If you want to filter incoming images, enter the name of the DEST or SOURCE callsigns. Only those images with patching callsign will be processed.
  4. Click "RX Start." You are now analyzing the packets your TNC is picking up. If images are present, the list below will begin to populate
  5. To preview an image, click on the name of the image you'd like to see, then click "Select Image Preview." The image will be previewed in the program. Red pixels indicate pixels where B&W data has been received. Cyan/blue-ish pixels indicated pixels where full color data has been received.
  6. Now it's time for the magic - use PCSI to reconstruct the image! Click "Process PCSI," which will start the PCSI process. The reconstructed image will appear on the screen and automatically update as packets are received. The raw data and processed images will be saved where you selected.