Edge detection as image fidelity test

This post is a quick follow-up to Dithering, a very interesting post by Cris Luengo, developer of DIPimage, a free Matlab image analysis toolbox.

Dithering is a graphic method that arranges black and white pixels in an image with certain patterns, to make it appear as though there are many intermediate gray levels. It is used when working with limited palettes. In his post Cris compares several algorithms that perform dithering.

As I commented in the post, after reading it I thought of a way to quantify the effectiveness of the various methods in replicating the original image: we can use Canny and Sobel filters to detect edges on the dithered results, and on the original. I show some of these in the image matrix below:

Looking at these results I argued that the structure-aware dithering did a much better job at preserving the edges in the original and the Canny and Sobel picked up on this (as do our eyes when we look at the results in the top row).