[comp.graphics] Grey Scale Slope Content Index

jimomura@lsuc.uucp (Jim Omura) (03/01/88)

     I don't read 'comp.graphics' regularly so please comment via
Net mail.

Cheers! -- Jim O.

TITLE: Image Fidelity, Resolution, Grey Scaling, Slope

A restatement of BIX messages graphic.disp/disc.bench #88-89

     With the advances in display technology we can now consider
using digital technology in normal consumer photographic
applications, in effect, replacing the traditional family photo
albums with computers.  The current Amigas and Atari ST's are
right on the border.  We are faced with the problem of evaluating
equipment on for their ability to represent continuous tone
images with visually satisfying detail.

     Traditional photographic measures don't work well for
digital display because photography assumes infinite grey scale
and grey scale testing in photography is really contrast testing.
Conversely, in digital technology the limits of grey scale repre-
sentation of a given system can make a big difference in the
fidelity of the resulting picture.  For instance, if you have
only black and white, you can simulate grey scale with dithering.
However, by dithering you are, in effect treating 2 or more pixels
as 1.  Thus in terms of fidelity your picture is no better than
that produced by a system with, perhaps half as many pixels,
but 3 levels of brightness.  The question is whether there's
some index possible, which will reasonably represent the ability
of a digital system to display acceptably fine detail of continuous
tone.  What I've tried to do is to integrate the characteristics
of grey scale and resolution, resulting in what I feel will be
a useful measurement for comparing and evaluting image related systems.
It won't stand on its own, but it is useful as a starting point.

     It works like this:  take 1/100th of the display in horizontal
or vertical and determine the number of grey scale steps can be
represented in that space.  The result is a "grey slope content index".

The reason for 1/100th the image size:

     Photographically, 1/100th is actually very crude.  If you
take a head and shoulder portrait, 8" * 10" and look for the
detail level of this increment, you're dealling with about 1/10".
In hard terms, you may be looking at the ability to reproduce
eyelashes, or moles or skin creases.  It is arguable that finer
increments might be used as a baseline.  However, if you try a
smaller increment than than 1/100th, you may not get meaningful
results until you're up in the 1K pixel range.  Practically
speaking, we find that image systems such as the Amiga can
produce acceptable "portraits" and "snapshot" quality images
with substantially less than 1K pixels.  Most people will agree
that the Amiga is visibly better than the ST in this application
and somewhere in around the specs. of the ST is pretty much
the bottom limit.  Some people will include the ST as acceptable
while others won't.

     This index seems to become useful at about the point where the
imaging systems become useful.  The index, being open ended,  won't
become obsolete with improving systems.  Other measures will also be
valuable, particularly where a specific factor is significant, but
this index should remain a part of system comparison.

Examples:

     For the Atari ST, we have a high res of 640 * 200 * 4 of
512 colors.  8 distinct grey scales are in the total palette,
but only 4 are usable at once.  The index works like this:
7 pixels are visible in 1/100th of the width (6 pixels in full
and a bit one the 7th), but the limit is the 4 available
colors.  The index, excluding dithering, is therefore 4.

     The vertical limit is 2 because only 2 pixels are available
at all in 1/100th of the image height.

     On the Amiga, with 16 grey levels and 16 colors available
at one time and 640 * 400 res. the index for horizontal fidelity
is 7 (7 pixels).  However, the vertical index is 4 (4 pixels).

     These examples seem to show that the index succeeds in
indicating superior image fidelity.  The question remains whether
close results show systems of roughly equivalent usefulness in
this field.  I think it does.

     Taking the ST again, and using the lower resolution 320 *
200 * 16 colors, we find that horizontally, we get 4 pixels in
1/100th the width (3 and a bit of the 4th showing).  Of the 8
grey levels, therefore, only 4 are useful in this small space.
Vertically, again you get an index of 2.  Indeed, with the ST,
in either mode you get roughly the same grey scale capabilities.
In the high mode, you can reduce the screen's effective resolution
by using dithering and come close to the same image.  Likewise,
you can "mix" the 4 colors of the high res. into 16 permutations
and come up with roughly the same image in the lower res.

Dithering:

     Dithering can be considered by using "pseudo-pixels" which
are groups of adjacent pixels which represent a single pixel
with a greater range of grey scale than each individual pixel.

     For example, we can again take the Atari ST in its monochrome
display mode which had 640 * 400 * 2 colors (black and white).
The basic usage of the display yields indexes of 2 in either
axis because there are only 2 real grey values available.  However,
if you allow 2 pixels per pseudo-pixel, then you have 4 pseudo
pixels in the X axis, but 3 grey values.  This gives an index
of 3 in the X axis and 3 again in the Y axis.  Note that this
is close to the 4 and 2 indices of the color screens.  In fact,
the pictures produced are fairly comparable.

     The problem with dithering is that it creates complexity
in the analysis.  Notice that you can also use groups of 3 pixels
in the X axis for the Atari ST yielding 4 grey levels.  However,
the limit becomes the number of pseudo-pixels in the 1/100th
measurement and again, you have a maximum of 3 grey values
in the X axis.  In the Y axis, the grouping limits the display
to 2 pseudo-pixels for an index of 2.  The best result is
therefore not to group pixels in the Y axis.

     The determining of the absolute best result for dithered
displays becomes even more difficult when each pixel can have
more than the 2 simplest grey values.

     The difficulty of calculating the permutations increases
with the number of pixels in the zone evaluated.  This is
another reason why a small zone (1/100th) is used rather
than a larger one (1/16th the dimension tested, for example
would yield 20 pixels in the X axis of the Atari ST at its
lowest resolution).

-- 
Jim Omura, 2A King George's Drive, Toronto, (416) 652-3880
ihnp4!utzoo!lsuc!jimomura
Byte Information eXchange: jimomura

lou@bearcat.rutgers.edu (Lou Steinberg) (03/04/88)

In article <1988Feb29.223957.20454@lsuc.uucp> jimomura@lsuc.uucp (Jim Omura) writes:

>      I don't read 'comp.graphics' regularly so please comment via
> Net mail.
> 
> [...] With the advances in display technology we can now consider
> using digital technology in normal consumer photographic
> applications, in effect, replacing the traditional family photo
> albums with computers.  The current Amigas and Atari ST's are
> right on the border.  We are faced with the problem of evaluating
> equipment on for their ability to represent continuous tone
> images with visually satisfying detail.
> [and] goes on to propose a measure of this ability]

One major problem with your proposed measure of quality is that it
does not measure the ability to render large areas of smoothly
changing brightness.  For instance, you say

>     Taking the ST again, and using the lower resolution 320 *
>200 * 16 colors, we find that horizontally, we get 4 pixels in
>1/100th the width (3 and a bit of the 4th showing).  Of the 8
>grey levels, therefore, only 4 are useful in this small space.

This does reflect in some way the ability to show fine detail, but it
implies that a system with the same spatial resolution and only 4 grey
levels would be no worse at displaying pictures.  If you imagine a
picture that has a large area shading gradually from white to black,
you will see that those second 4 grey levels are a real help.  Of
course you can dither among the smaller number of grey levels, but
that effectively costs you spatial resolution.  

In fact, it is hard to see how you could get one single measure that
applies equally to pictures with fine detail or texture and those with
large areas of smooth shading.  Perhaps what you want is a graph,
rather than a single number.  The horizontal axis might measure
spatial resolution and the vertical axis might give the brightness
resolution for regions of that size.  E.g. for the ST described above,
for the horizontal direction, for a spatial resolution of 1/320 we get
a brightness range of 8, while for a spatial resolution of 4/320 we
get (8-1)*4+1 = 29 levels.  (For grey level all that matters is the
total brightness of the 4 pixels, i.e. the number of different totals
we can get by adding up the brightness of each of the 4 pixels, where
each pixel can be considered to be in the range 0-7.  In general for p
pixels each of which can have one of b brightnesses, we can get
(b-1)*p+1 different totals.  This assumes the palette for each pixel
is the same.  Hmm.. interesting idea: if alternate pixels, say, used
different palettes we could get a better brightness resolution for all
spatial resolutions above 1 pixel, using only a few more bits of
memory (to hold the second palette).)

Of course, only certain regions of this graph would be of interest for
any given application, depending on the picture to be displayed and
also on the visual angle subtended per pixel.  (There is no point
in displaying more resolution than the human visual system is capable
of perceiving, but that depends on the visual angle a region subtends
and not the fraction of the full picture it takes up.)
-- 
					Lou Steinberg

uucp:   {pretty much any major site}!rutgers!aramis.rutgers.edu!lou 
arpa:   lou@aramis.rutgers.edu

ksbooth@watcgl.waterloo.edu (Kelly Booth) (03/05/88)

In article <704@bearcat.rutgers.edu> lou@bearcat.rutgers.edu (Lou Steinberg) writes:
>
>...........................  This assumes the palette for each pixel
>is the same.  Hmm.. interesting idea: if alternate pixels, say, used
>different palettes we could get a better brightness resolution for all
>spatial resolutions above 1 pixel, using only a few more bits of
>memory (to hold the second palette).)

This idea has in fact been proposed in a paper we wrote some years
ago.  The suggestion was to generalize the video output of a frame
buffer "just a little" by considering a pixel as it comes out of the
frame buffer to have more than just the standard RGB fields (at the
time we wrote the paper, Z-buffers were common, but the Z-field was not
part of the output, just the input -- since then the A (or
alpha/opacity) channel has become popular and is treated both on input
and output).

The "generalized" pixel would be "R:G:B:A:X:Y:Z:...".  The relevant
point here is that the X and Y address for the pixel is already
available implicitly in the video board.  It could be passed to the
color look up tables (LUTs).  This would of course add 20 extra data
bits (for a 1024x1024 display), which would make the LUTs way too big
if these bits were simply used as additional addressing bits.  The
proposal was to pass all of the generalized pixel through a cross-bar
switch similar to what is implemented in the Adage/Ikonas RDS 3000
frame buffer.

For those not familiar with the Ikonas cross-bar, it considers each
pixel to be a 32-bit quantity from the frame buffer (assuming you have
that many bit planes) plus two "magic" bits that are not explicitly
stored in the frame buffer but can be things like overlay and cursor
information.  From these, 24 bits are selected by setting a register
for each output bit that selects one of the input bits (or a constant
value).  If the XY bits were also part of the input (which would fairly
easy to do), the cross-bar switch could be set to pass the low-order
bits of X and Y as part of the RGB bits into the LUT.  This would
achieve what Steinberg proposes.  Of course to get full color
resolution, one would want probably 10-bit or even 12-bit inputs to the
LUT to enable at least 8 full bits of color information in addition to
the extra funny bits that effectively select alternate LUTs depending
on the XY coordinates of a pixel.

Note:  Using the cross-bar switch, the same input bit can be sent to
multiple output bits.  Thus the low-order X or Y bits could be sent to
each of the RGB output buts if the cross-bar were configured (in
software) to do this.

For smaller frame buffers (with maybe only 8 bits in the frame buffer
to start with), 10-bit input to the LUTs is really not an
extravagance.  The chips used for LUTs in fact often support 10 bits in
even if the frame buffer only has 8 bits in.  Early frame buffers for
image processing had 12-bit input to the LUTs.

The cross-bar switch is not trivial.  But if "all" frame buffers had
one, there would be a standard chip for it.  It is almost certainly
possible to make a combined cross-bar/LUT chip that would be almost as
cheap as the current LUTs if there were sufficient demand.  The problem
is that most hardware designers don't look at the applications people
have for frame buffers, so these features are deemed too costly.

Credits:  The idea for the Ikonas cross-bar switch came from Henry
Fuchs at UNC.  It was implemented by Nick England (co-founder of Ikonas
with Mary Whitton, both of whom now work for Transcept as part of
Sun).

The idea of switching palettes (LUTs) is implicit in the overlay
techniques in many frame buffers (this was one thing that the Ikonas
cross-bar switch and LUT supported) and is similar to the idea of
"sprites", where certain bit patterns in the frame buffer trigger
selection of alternate output images for certain regions of the
screen.

shoup@trane.UUCP (Dick Shoup) (03/09/88)

The frame buffer crosspoint switch idea is a good one, especially if
encapsulated in a chip or two.  Some of the current frame buffer cards
for the pc bus have something like this, notably the VXP chip in
Truevision's Vista board.

	Dick Shoup, Aurora Systems
	{ucbvax,sun}!pacbell!trane!shoup