[comp.graphics] "Different" 8-bit color to 1-bit converter

ncc1701@pawl.rpi.edu (Mark O. Chadwick) (04/15/89)

I'm stuck on a monochrome sun 3/50 with no possibility of grey scale, and I
was wondering if anyone out there knew of a program to convert an n-bit color
or grey-scale image to 1 bit monochrome using a matrix of pixels to represent
an individual pixel in the original file.
I have access to some 8 bit to 1 bit conversion programs, but quite often,
the picture is a 320x200 image, and it is sooo small on my screen, it's almost
completely useless.  
I've seen a program to do something like this before, but I can't remember
where, and I know it wasn't on a sun.

For example, there might be a 3x3 pixel array used to represent up to 10 shades
of grey...

Any help, ideas, or (preferably) code would be immensely appreciated!

Thanks!

-------------------------------------------------------------------------
ncc1701@pawl.rpi.edu       | Live long and prosper, Spock
USERGDES@rpitsmts.bitnet   | I shall do neither.  I have killed my
 (Mark Chadwick)           |    captain...and my friend 

kirby@bozo.wbst128.xerox.com (Mike Kirby (co-op)) (04/17/89)

>I'm stuck on a monochrome sun 3/50 with no possibility of grey scale, and I
>was wondering if anyone out there knew of a program to convert an n-bit color
>or grey-scale image to 1 bit monochrome using a matrix of pixels to represent
>an individual pixel in the original file.
>I have access to some 8 bit to 1 bit conversion programs, but quite often,
>the picture is a 320x200 image, and it is sooo small on my screen, it's almost
>completely useless.  
>I've seen a program to do something like this before, but I can't remember
>where, and I know it wasn't on a sun.
>
>For example, there might be a 3x3 pixel array used to represent up to 10 shades
>of grey...

What it seems that you want to do is either halftoning, or some kind of
error diffusion.  I would recommend something like a floyd-steinberg error
diffusion. (you can get the article out of proceedings of the  S.I.D, vol 17/2
1976)  

Basically, this algorithm takes a pixel, determines from it's desired
intensity what the actual intensity would be.  For example, and intensity
of 1/4 (as shown by the article) would be black (intensity 0) on a monochrome
monitor.  Thus, we have an error of 1/4.  The idea is to distribute this
error to neighboring pixels in hopes that the errors will cancle out as we
go along.

This wasn't a very good explaination.  Check out the article for a better
description of the process.  It is a good technique.

Michael Kirby
mpk9172@ritvax.bitnet		(this works)
mpk9172%ritcv@cs.rit.edu	(flaky...but with a good tail wind I'll get it)
kirby.wbst128@xerox.com		(never tried...)

raveling@venera.isi.edu (Paul Raveling) (04/20/89)

>In article <1296@rpi.edu> ncc1701@pawl.rpi.edu (Mark O. Chadwick) writes:
>
>> I'm stuck on a monochrome sun 3/50 with no possibility of grey scale, and I
>> was wondering if anyone out there knew of a program to convert an n-bit color
>> or grey-scale image to 1 bit monochrome using a matrix of pixels to represent
>> an individual pixel in the original file.

	We have a new library of simple image manipulation functions
	(imglib) that includes this, but at this moment the only routine
	that dithers to monochrome is embedded in the module that
	prints images to an Imagen printer.

	Within the next few days I'll generalize the dithering a bit
	and will make imglib available by anonymous FTP.  That'll also
	include a few programs using imglib and a collection of
	1,130 images.


----------------
Paul Raveling
Raveling@isi.edu