Notes on halftone approximations

Billy Biggs <vektor@dumbterm.net>

Wed Aug 13 22:34:06 EDT 2003

At CCCG03 I saw an interesting talk by Tetsuo Asano on halftone algorithms that caught my attention. My first remark after searching for dithering examples was that many images appear too bright. The following is a comparison of images dithered using raw R'G'B' against images using values gamma corrected for an sRGB display device.

These images were dithered using a simple 8x8 Bayer matrix with values between 1 and 64. Each value in the matrix is tested against the scaled input channel value, if the image value is higher, we dither to 1, otherwise we dither to 0. The 8x8 matrix is tiled over the image. The matrix is as follows:

  [   1  33   9  41   3  35  11  43 ]
  [  49  17  57  25  51  19  59  27 ]
  [  13  45   5  37  15  47   7  39 ]
  [  61  29  53  21  63  31  55  23 ]
  [   4  36  12  44   2  34  10  42 ]
  [  52  20  60  28  50  18  58  26 ]
  [  16  48   8  40  14  46   6  38 ]
  [  64  32  56  24  62  30  54  22 ]
        

For applications which need results without a complexity penalty, it is sufficient to change our matrix to compensate for gamma directly. While I have not done an analysis to measure the error, I decided to increase the precision of the dither matrix from 1-64 valued to using values from 1 to 255. The corrected matrix is as follows:

  [  34 190 105 209  61 195 115 214 ]
  [ 227 141 242 168 231 148 246 174 ]
  [ 124 218  79 200 133 223  93 205 ]
  [ 250 179 235 155 253 185 239 162 ]
  [  71 198 120 216  49 193 110 212 ]
  [ 233 152 248 177 229 145 244 171 ]
  [ 137 225  99 207 129 220  86 202 ]
  [ 255 188 240 165 251 182 237 158 ]
        

This matrix is applied on each colour component individually to return a 3-bit per pixel image, one bit for each of red, green and blue.

First, we compare the original image to our 8-coloured dithered version.

Original and dithered image using the gamma corrected light intensity

Original
Dithered using intensity values

Next, we show a dithered image that uses the original matrix.

Original and dithered image using the non-gamma corrected voltage values

Original
Dithered using voltage values
[ICO]NameLast modifiedSizeDescription

[PARENTDIR]Parent Directory   -  
[IMG]img0023-512x384-dith..>2003-08-13 19:27 22K 
[IMG]img0023-512x384-dith..>2003-08-13 19:27 31K 
[IMG]img0023-512x384.png 2003-08-13 19:27 288K