Path: utzoo!attcan!uunet!lll-winken!lll-lcc!ames!vsi1!altnet!datack!versatc!aden
From: aden@versatc.UUCP (Michael Aden)
Newsgroups: comp.graphics
Subject: Re: Floyd-Steinberg Errors:  What do I do with them?
Message-ID: <252@versatc.UUCP>
Date: 14 Jul 88 21:53:26 GMT
References: <6506@well.UUCP> <13172@jumbo.dec.com>
Reply-To: aden@Orion.UUCP (Michael Aden)
Organization: Versatec, Santa Clara, Ca.
Lines: 30

In article <13172@jumbo.dec.com> sclafani@jumbo.dec.com (Michael Sclafani) writes:
>In article <6506@well.UUCP>, ewhac@well.UUCP (Leo 'Bols Ewhac' Schwab) writes:
... lots of error conversation here...

>I think Steinberg posted on this newsgroup, stating that alternating
>directions on scan lines (left to right on odd, right to left on even)
>will produce even better results.  I've seen an implementation which does
>this, and it's true.

There is a relatively new book on digital halftoning which discusses Floyd-Steinberg
error terms, as well as a half-dozen others which cover this topic fairly effectively.
The book is 
_Digital Halftoning_, by Robert Ulichney, (c)1987 MIT Press.

Serpentine treatment of raster gets pretty much a full chapter near the end of the
book (the book goes generally from worst-case to best-case rasterization, hence
serpentining's later position).

The problem with Floyd-Steinberg (and all the others) when used on scanlines
is a tendency towards "worm tracks", a propagation of error in a coherent direction.
While serpentine helps this, even better would be error propagation along
a non-trivial path, which leads us back to the Peano curve discussion of a few months
back. I never saw a discussion of how to do those fast. Anybody have any hints
they'd like to share? (I'll keep my eyes open this time -> 8-) )

BTW, I'd like to do this on an 8000x8000 image, so efficiency is kind of important.


Michael Aden
Versatec, Inc.
{pyramid,vsi1,uunet}!versatc!aden