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