SET-L'S SPACE

VK3STL | QF22oe | Foundation License

Using AVIF for Digital SSTV: Much higher quality for the same file size!

Digital SSTV and JPEG 2000

Digital SSTV is an easy way to send digital images over the radio, using as little as 2.2kHz of audio bandwidth. One of the most popular programs to achieve this is EasyPAL.

EasyPAL is a closed-source application, written by the late VK4ESK, that uses an open-source implementation of Digital Radio Mondial, called WinDRM. It has very limited effective baud rate but features a lot of error correction and resiliency for multipath phase, atmospheric fade and generally poor SNR conditions. It features the ability to send arbitrary digital files, along with automatic image optimisation for sending digital images.

This makes EasyPAL invaluable for HF digital image transmission. Being able to send a digital image over large distances is definitely awesome.

However, it wasn't built with modern image compression techniques in mind. It was originally written back in a time when JPEG 2000 (JP2) was the newest image format for high compression rates. This format is woeful in modern times, providing a very poor-quality image compared to WebP and other modern image compression techniques.

A typical EasyPAL net, run on VHF, limits transmissions to two minutes, allowing approximately 27kb of data to be transacted in a single over. This tiny size is why JP2 was selected as the default image compression used in EasyPAL. Alas, it is no longer the king of image compression formats it once was.

AV1 Image File Format

AV1 Image File Format (AVIF) is a next-generation image format, that provides exceptional image compression with a quantization algorithm designed for VP10, the newest image format to come from the Alliance for Open Media. Using AV1 Level 6.0 or higher, one can compress an image of 35MP, using RGB or 4:4:4, 4:2:2 and 4:2:0 chroma subsampling, HDR and SDR with colour space signalling, lossless or lossy compression and transparency. It is extremely efficient, with testing by Netflix showing significantly better results than JPEG at similar file sizes.

AVIF can be transmitted using EasyPAL's "SendAny" feature, being sent as a digital file, without too much overhead. Your effective file size should be under 20kb, allowing some overhead to remain under 2 minutes. However, results can be had where a JP2 image set for two-minute transmission window can look worse than an AVIF file that results in a 90 second transmission window.

Some demos

It's all well and good to say all that, but let's see what this means in practise. The files below are 27K over the air with EasyPAL, using default settings.

720 x 480px JPEG 2000: JPEG 2000 image 1350 x 900px AVIF (converted to lossless PNG for compatibility): AVIF image

Notice the squares in the round windows near the top of the image? They aren't noticeable in the JPEG 2000 image, but they are very distinct in the AVIF file. Not only that, but the people in the library are a more clearly defined, with the wood panelling on the desks in front of them appearing a lot sharper.

If we match the JPEG 2000 resolution, we can achieve more clarity than the JP2 file, at a lower transmission time:

720 x 480px AVIF (converted to lossless PNG for compatibility): Smaller AVIF file

This file reduced our transmission window to 82 seconds, only 13K! With this kind of compression, you can achieve more QSOs in your net. If you're planning to broadcast over VHF/UHF on a repeater, you can tune EasyPAL to get better transfer times than the defaults or send better quality images in the same transfer time window.

Making an AVIF file for EasyPAL/WinDRM

Because AVIF is very new, a lot of image exporting software won't export AVIF, and those that do, like GIMP, won't give you a very small file size.

Luckily, there is a website that can produce high-quality, low bitrate images, without needing to upload the files to someone's server. https://avif.io/ does all its compression in the browser, using Rust compiled into WASM, giving excellent performance. That being said, results like the ones shown can take a competent computer some time to produce, with the above results taking 4-5 seconds on an AMD Ryzen 9 5900X. If you are using something like an Intel Core 2 Duo in age, or an AMD FX-series CPU, this time may be in the tens of seconds, depending on the CPU performance and other tasks in the background.

When you open https://avif.io/, you'll be presented with the below: The avif.io compression interface

With default settings in EasyPAL, to stay inside a 2 minute window, your optimum file size needs to be less than 25kb. If you set EasyPAL to use the "fastest" settings, you can extend this up to 40kb.

Your biggest factor in getting a small file size is the pixel density of the image. You should aim to have no edge longer than 800px for 25kb, or no edge longer than 1024 for 40kb. File size increases exponentially with image dimensions. For resizing images quickly, you can use Adobe's free Adobe Express online image resizer.

The cog in the window is very important. Without adjusting it, the default compression will net you a file that in in the hundreds of KBs.

avif.io compression settings panel

Having the Effort at 100% increases the CPU time required to compress the image. By giving the CU as much time as possible, we increase the compression quality drastically. This allows us to lower the quality to between 30-40% without worrying too much about lossy compression artefacts.

The Quality slider can be adjusted, with values over 70% providing very little extra clarity at the cost of a significantly higher file size. If your image is tiny, or has very little detail, increasing the quality up from 30% to 40-45% will improve the edges of objects with large amounts of contrast, and reduce "banding" compression artefacts across the image. It will also improve the kerning of text on the image.

Compressing the image itself is very easy. You simply set the settings above and drag and drop your image onto the arrow icon (make sure it's been resized first! You can use tools like GIMP or Inkscape to do this for free).

avif.io completing a file compression

As you can see, it has taken a 1.18MB PNG file, and produced an 8k AVIF file. Amazing compression ratio!

The pink button to the right will "download" the image, which will normally save the file to your Downloads folder.

At first, Windows (or your OS of choice) may not know how to deal with this file, and if you open it, you will be asked what you want to open the file with.

The file open with prompt.

A modern browser, such as Google Chrome, Mozilla Firefox or even Microsoft Edge will be able to open this file, provided they are up to date.

On Windows 10 and 11, you can use the Photos app, which is the default app for viewing images on Windows. However, you may need to install the AV1 Video Extensions from the Microsoft Store before you see any images.

If you make a mistake, you can adjust the file association settings in Control Panel or Settings, or just right click the file, choose "Open with" and "Choose another app".

Once you have done this once, EasyPAL will automatically open any AVIF files received with that app.

Sending an AVIF file with EasyPAL

Note: if your receiving party has not opened an AVIF file before, send them this link so they have an AVIF file to set their default application. Have them follow the instructions above to open the file with an appropriate program. Once they see the image, they're good to go! Example AVIF file

EasyPAL cannot handle these files natively, so you will need to load files using the "LoadAny" button in the menu. Do not drag and drop the image, EasyPAL will not handle it correctly.

EasyPAL LoadAny button

You will need to navigate to the folder with your AVIF files, select the file, and click "OK":

Loading an AVIF file into EasyPAL

Unlike older files, such as JPEG, PNG or BMP files, it is normal to see a black screen. EasyPAL does not know how to render AVIF files, and you can confirm that the file was loaded by checking the bar under the black screen, which will tell you the file name and size.

EasyPAL displaying the file name and size

When you're sure the file is the correct name, and the size/time is appropriate, you can click send just like any other image.

Assuming the receiving party has set up their environment appropriately, they will be able to see the image instantly the moment they have decoded it.

Some caveats

Obviously, being a very new image codec, AVIF support is rather limited. Most websites, like Facebook, Twitter and Mastodon, may not accept the AVIF file directly. You can convert these to a near-lossless PNG or JPG using tools like Convertio — File Converter or ⏳ Google Squoosh for upload to these sites.

Additionally, there's no support for old operating systems, like Windows Vista or XP. HAMs using these types of operating systems won't be able to see the file without transferring it to a computer that can read the file.

All in all, presuming you can use the AVIF file at the other end, it's a very effective way to send higher resolution images over the air with a little effort required by the sending party. Give it a try sometime and see how much better the image quality is for yourself!

Posted at Mon Sep 12 2022 06:39:16 GMT+0000 (Coordinated Universal Time) |

Valid HTML 4.01 Transitional