[Blindmath] tactile images and 8-dot braille

John Miller johnmillerphd at hotmail.com
Fri Mar 30 18:48:34 UTC 2012


Hello,
It is time to review 8-dot braille and what we can do so that refreshable braille displays 
easily generate all 8-dot patterns.
This effort may be with the standards bodies such as the open braille standard.
It may be work with braille display manufacturers and developers of screen readers or both.
It will likely also include the manufacturers of braille embossers as it is difficult to generate all 8-dot braille patterns with most braille embossers.

Remember that in grayscale imagery pixels in a visual graphic range from dark to bright.
The computer uses an assignment of different symbols for different brightness levels.  Visually a grayscale image looks quite similar to the scene that it represents.  For example, a sighted person who has not seen one before or a young sighted child will view a grayscale image and recognize the scene in the image content.
A tactile image analog to a grayscale image is a relief map.  
I remember looking with interest at the approximately 6 feet by 10 feet relief map of Yosemite National Park in the visitor center.
I personally did not recognize the path I had hiked from the relief map, but the 
relief map did give me perspective on the location of the valley floor, its relation to Half Dome, and the altitude change that would occur in some of the strenuous hikes that I skipped.
3-D modeling offers the opportunity to render grayscale images as tactile images.  The materials to make such a graphic are still quite expensive and the time to form such an image is often in the tens of minutes.
A 3-D image has the drawback that bright and dark pixels can not be rendered accurately next to each other 
with high locations next to low locations.
Some bed-of-nails uninvented technology could drive various pins to various heights.  But to tactilely 
experience large changes in height from 1 pixel to its neighbor, the 
reader would have to trace the tactile graphic with a kind of pen to feel the depth of holes 
in the tactile graphic in order to experience the difference in brightness.
If 3-d graphics were free and generated instantly, I would view grayscale images with this technology 
and I believe it would be my preferred method.

For immediate viewing of grayscale images tactilely, I recommend viewing them in grayscale braille with a refreshable braille display.  
Now the question comes up, what is the best 
selection of braille symbols to represent the range from dark to bright?
This selection should be configurable by the user.  The selection depends on user preference and the kind of image being viewed.
To have a tactile experience of easily identifying dark and bright patches in an image, I find it useful to label the darkest pixel symbol as the braille space symbol, the symbol containing no dots.
In this way, dark regions appear blank in the tactile image.
Now consider the problem of comparing two grayscale images.  The first image has a collection of bright and near bright symbols at its center.  The second has the same collection of bright and near bright pixels but translated down and to the right by an arbitrary amount of pixels.
How many pixels has the second image been shifted to the right when compared to the first? 
How many pixels has it been shifted down?
Assigning the darkest pixel to a non-space braille symbol such as the "a" allows for counting rows and counting columns from the edge of the graphic to the brightness pattern.  
Now the shift can easily be measured leading to helpful conclusions.

The computer braille code provides a mapping of ASCII symbols to 8-dot braille patterns.  The ASCII code contains 256 distinct symbols.
Some of these symbols are reserved for the space symbol and the tab symbol that have the same braille dot pattern.  Some are reserved for control characters such as
carriage return, line feed, form feed, and so-on.  Some ASCII symbols are the familiar ones such as can be typed using a querty keyboard.  These include lower case and upper case letters, the numbers 0 through 9, and punctuation symbols, some common and some less common.  ASCII contains a variety of other rare print symbols.
It is no surprise that all 256 8-dot braille patterns can not be generated from the ASCII code.  I do not know if the open braille standard includes a method for generating any 8-dot pattern with a refreshable braille display.
As a blind community, we must work closely with manufacturers of refreshable braille displays and developers of screen reader software so that the user can view every 8-dot pattern with a 8-dot refreshable braille display.

I will say that every 6-dot pattern in standard braille can be generated in 8-dot braille using the ASCII code with 1 exception.
The offending symbol is the underscore, the symbol "_".  
This symbol contains dots 4, 5, 6, and 7.  
Searching the ASCII code, I found a symbol with a high ASCII value using dots 4, 5, 6, and 8.  
There is no symbol that is dots 4, 5, and 6 alone.
Please point one out to me if I have missed it.

I recommend the following dot labeling using 6-dot braille symbols from darkest to lightest.
Use the first row of the braille cell dots 1 and 4 for darkest symbols.
Use the second row for brighter symbols with dots 2 and 5.
Use the third row with dots 3 and 6 for brightest symbols.
In this way, from darkest to brightest dots are labeled dot 1, dot 4, dot 2, dot 5, dot 3, dot 6.


This method has several similarities to the braille method invented by Louis Braille.  Louis Braille had in mind base ten and the French alphabet when designing the braille alphabet.
Arranging the English alphabet in 3 rows with the letters a through j in the first row, 
k through t in the second row, and u through z in the third row, these observations are apparent.
The first row contains only dots 1, 2, 3, and 4.
The second row is a repeat of the first row but with the addition of dot 3.
Louis Braille did not include the English "w" in the original braille system since it rarely appears in French.
Reviewing the third row of the braille symbols and deleting the "w" from the row,
we observe the letters "u", "v", "x", "y", and "z".
These letters are a repeat of the first 5 letters a through e of the first row in the braille system 
but with dots 3 and 6 added.
Does anyone know when and how the "w" was added to the English braille system?

The first row containing the letters a through j does not contain all 16 possible combinations of dots 1, 2, 3, and 4.
Including the space which I attribute as part of Louis Braille's system, a through j and the space include 11 symbols.
The remaining symbols are dot 2, dot 4, dot 5, dots 2 and 5, and dots 4 and 5, 
Using the labeling I describe, this set of 16 symbols leaves the bottom row of dots 3 and 6 blank.
The first 16 grayscale symbols contain 10 familiar braille symbols a through j.
Adding dot 3 forms another set of 16 symbols.
The symbols a through t appear in the first half of the 64 braille symbols.
The letters u through z appear in the second half of the symbols.
A number of punctuation symbols in 8-dot braille appear in the second half of the grayscale braille symbols because they contain dot 6.
It can be helpful to recognize the rare symbols containing dot 6 as part of the second half of the grayscale symbols.

Using the labeling I describe, it is possible to form color braille with 4 levels of brightness and 3 color channels such as red, green, and blue.
Assign row 1of the braille cell to red, row 2 to green, and row 3 to blue.  
>From dim to bright the red channel is dot 1, dot 4.
>From dim to bright the green channel is dot 2 dot 5.
>From dim to bright the blue channel is dot 3 dot 6.
The 6-dot color braille system has only 4 levels of brightness for the 3 color channels 
whereas jpeg also has 3 color channels but a total of 256 levels per channel.
If someone could provide a jpeg image of a prism, I would be interested to convert it to color braille using this scheme and share it with the members on this list.

Sometimes what is needed is a one-to-one tactile representation of a visual image.
This is necessary to review a visual image tactilely and declare that it is precisely what is wanted.
In this case, there is no information loss in rendering the visual image as a tactile image.
For a 256-level grayscale image, a good one-to-one representation 
using ASCII and grayscale braille is to represent each 
visual pixel with 2 horizontally adjacent braille symbols.
The hexidecimal system is a convenient choice for the grayscale braille symbols.  
The dimmest pixel is represented as "00" and the brightest pixel is represented as "ff". 
A simple review of hexidecimal is as follows. The first 10 symbols in the decimal sequence 
are represented as "0" through "9".  The decimal numbers 10 through 15 
are represented as "a" through "f".  This system comes at the cost of 
2 braille symbols for every visual pixel.  Aside from consuming precious braille display realestate, 
there can be confusion as to which 2 braille symbols form a visual pixel value.  
A remedy is to add a space between every hexidecimal value bringing the number of braille symbols to 3 for representing a single visual pixel.
It would be superior if we could add dot 7 to every other braille symbol to facilitate a proper pairing of 2 braille symbols to 1 visual pixel.
Unfortunately, I do not see an ASCII code to form the braille symbols 1 through 0 with dot 7 added.
Does anyone know how to do this?

I recommend that braille display manufacturers support the PGM file format.  This file format is similar to the JPG file format in that it contains an ASCII header followed by binary data.
The ASCII header describes how many rows and columns are in the image.  It also describes the highest symbol level.  If this symbol level is 255, then the binary data contained in the image is represented as 1 byte per pixel.  
One byte per pixel is a sufficient representation for all 8-dot braille symbols.  
The binary pixel data is written starting with the top row and proceeding through the remaining rows.
The pixels within a row are written out from left to right.
You can read the simple file format definition for the PGM file format by visiting wikipedia.  
Does anyone have knowledge of how to send any 8-dot braille pattern to a refreshable braille display?
Is there a unicode symbol for every 8-dot braille pattern?
We could use carriage return symbols to start new rows and unicode 8-dot braille patterns for the individual symbols.
The PGM file format is an immediate solution that would be simple for a braille driver to recognize and send to the braille display.
While viewing a PGM file, the braille user would want all of the 
usual cursor movement, arrow movement and panning functions available with a screen reader and a refreshable braille display.

Perhaps there is a solution out there already, but I believe we have some work to do to improve our control and flexability when working with 8-dot braille.
best regards,
John Miller, president
Science and Engineering Division
of the National Federation of the Blind





More information about the BlindMath mailing list