Abstract:
The invention relates to a system for the perception of images through touch. The inventive comprises hardware and software which enable any person with the sense of touch to perceive images, said system being intended for visually-impaired persons. The hardware comprises a peripheral which uses electromagnetic fields in order to represent forms, figures, colours or any image that can be displayed on a computer screen an hand device which enables the user to perceive signals. The software comprises a system with selects, process, encodes and transmits the images to be represented at the peripheral, enabling the user to select the area of the image to be represented, using a set of operations (including scrolling, approaching, changing definition). The system can also be used to establish a position of the plane of the image using a position sensor with constant updating.

Description:
PRIOR ART 
       [0001]    There are peripherals in the trade for the interaction of the visually impaired users with equipment such as Braille Displays from Keyalt with 40 to 80 Braille cells. These devices include voice recognition software or verbal description of the elements on the screen. 
         [0002]    The devices on the trade are restricted to text handling; such is the case of Braille Displays n which the text show non the computer is dynamically represented through microelectronics in Braille text. There are other devices that print any text that can be shown on the screen in Braille. 
         [0003]    Speech Software, on the other hand describes and reads what is on the screen, it is restricted by the oral description of shapes, which the computer can not do very accurately. 
         [0004]    Additionally Braille keyboards have the limitation of requiring the understanding of Braille language in order to be able to use them. 
       ADVANTAGES 
       [0005]    The most important advantage is the possibility to dynamically represent any kind of image, allowing the distinction of shapes and colors. The invention involves external sensors that can be coded in any language. 
         [0006]    Another great advantage is the design that allows the identification of a position in the processed image, and also the path followed along the image, zooming in or zooming out. 
         [0007]    Any kind of image can be represented with a possibility to represent Braille coded text, everything on the screen can be shown at any moment, any picture, or a sequence of images that becomes a video; with a webcam everything in the surroundings can be represented in real time. The objective is to represent any object on the screen the way a sighted person would see it. 
     
    
     
       DETAILED DESCRIPTION OF THE INVENTION 
         [0008]      FIG. 1  shows the block diagram of the system with a glove ( 22 ) as an output device. 
           [0009]      FIG. 2  shows the glove ( 22 ) for the use of a visually impaired person. 
           [0010]      FIG. 3  shows the application of the glove ( 22 ) in the peripheral ( 10 ) that contains the electromagnet grid ( 24 ) and the led grid ( 25 ). 
           [0011]      FIG. 4  shows the image processing procedure. 
           [0012]      FIG. 5  shows the hardware modules ( 10 ) in the peripheral and the software models ( 12 ) in the computer. 
       
    
    
       [0013]    The system basically consists of a hardware part in the peripheral ( 10 ) and a software part ( 12 ) in the computer. 
         [0014]    System configuration in its independent components can be done with Programmable Logical Devices (PLD), USB connection Electronic components, Printed Circuits, Power electronic devices, digital electronics devices, general electronic devices, coupling electronic devices, ferromagnetic materials (magnets, electromagnet cores, among others), function extension accessories, such as PDAs, webcams, cameras, scanners for module adapting, cables, wires, stationery for diffusion and other conducting elements. 
         [0015]    An example of the system configuration and application can be seen in  FIG. 1  with a frequency emitting glove according to a shape of color. 
         [0016]    In  FIG. 1  the different software layers can be seen, each one of them with a particular function. 
         [0017]    In the computer ( 12 ) processing and communication responsibilities are divided in layers, the layers below have a lower level than the ones above. The layers, in ascending order are: software modules ( 11 ), daemon ( 13 ), LibUSB ( 14 ) and USB core ( 15 ). The software was developed for the GNU/Linux platform, but it&#39;s portable for other free versions of other UNIX operating systems such as FreeBSD, OpenBSD and NetBSD. 
         [0018]    With no intention of requesting patentability protection we just want to explain this aspect related to the software. Software modules are applications in charge of handing images to be processed to the Daemon layer ( 13 ), these images come from different information sources, such as: any image ( 16 ), the full contents of the computer screen ( 17 ), an image of one or several Braille coded characters ( 18 ), a sequence of images captured in a video stream file ( 19 ). 
         [0019]    As an application it&#39;s presented according to  FIG. 4 , a prototype in which only the image module ( 16 ) was implemented, because this module is the base for all the others. This module consists in loading an image file in any format and hand it to the daemon layer ( 13 ). 
         [0020]    For implementation of this module Python language was used, Python image library (PIL) and the graphic library wxPython. 
         [0021]    The daemon layer ( 13 ) is a program in constant execution (service), and it&#39;s in charge of user interface, processing and coding of images that will then be sent to the peripheral ( 10 ), it also interprets all the data sent by the peripheral ( 10 ). For the prototype, the daemon ( 10 ) will not be executed as a service, it will be executed as a module that has to be called. 
         [0022]    In  FIG. 4  image processing ( 16 ) is shown and it&#39;s divided in four stages: filtration ( 1 ), coding ( 2 ), multiplexing ( 3 ) and structuring ( 4 ). 
         [0023]    In the filtration stage ( 1 ), the image is captured and changed into a gray scale, then it&#39;s fractioned according to the dimensions of the electromagnet matrix (rows×columns) that are in the peripheral ( 10 ), the color in every fraction is obtained with a standard image pondering algorithm, located in image processing libraries. 
         [0024]    In the coding stage ( 2 ) the image, once changed into a grayscale and fractioned can be seen as a numerical matrix in which every number has a value in the gray scale that is between 0 and 255. At this point, the coding ( 2 ) is done, depending on the definition value in which the system is working, for example, if working in an 8 tone definition, the peripheral ( 10 ) will be configured to represent only 8 different tones of gray, assigning each value in the gray scale an out tone equivalent in a smaller scale, while if the definition is 256, it would represent every tone in the gray scale. The value of the definition can be changed in the software. 
         [0025]    Then, each one of the out tones (each one of the positions in the numerical matrix) is changed into a character array of zeros and ones, which will be translated as a pulse train that is sent to one of the elements in the grids ( 24 ) and ( 25 ) in the peripheral ( 10 ) in a later stage, making possible in this way to get different signals from electromagnetic fields in the electromagnets in the grid ( 24 ). 
         [0026]    In the multiplexing stage ( 3 ), n time trains are multiplexed for each one of the parts in which the image is fractioned. For the example n=48 impulse trains, one for each one of the fractions of the coded image and these trains of pulses in time are multiplexed, making a new pulse train of 48 bits where the first bit corresponds to one of the bits in the first train, the second bit corresponds to one of the bits in the second train, and so on, depending on the instant in which it is. 
         [0027]    In the structuring stage ( 4 ) the multiplexed pulse train is handed to the LibUSB library ( 14 ), which takes care of putting together the scheme of data that is going to be sent to the peripheral ( 10 ), where the data block is the multiplexed pulse train obtained in the last layer. 
         [0028]    In the computer, the LibUSB library ( 14 ) is in charge of doing all the tasks related to communication through the USB port (Universal Serial Bus) ( 29 ). 
         [0029]    For implementing the daemon ( 13 ) Python language and the Python Image Library (PLI) were used. 
         [0030]    The LibUSB layer ( 14 ) is a library that works as a communication bridge between the USB core ( 15 ) and the daemon ( 13 ) layers. It contains the main user USB device access functions, according to USB 2.0 specifications. 
         [0031]    The library LibUSB ( 14 ) and the Python headers were used to create a dynamic language module, the USB module, in order to make calls to the libUSB ( 14 ) API form the language, this library is usually accessed through the C language. 
         [0032]    The USBcore ( 15 ) layer is a GNU/Linux module that allows USB ( 23 ) communication. Communication between the peripheral ( 10 ) and the computer ( 12 ) is done through the USB port ( 29 ), due to its features and popularity. 
         [0033]    The peripheral ( 10 ) is a low speed device, meaning, it works at 1.5 Mbps and interrupt transfer was the data transference type that was used. 
         [0034]    The peripheral ( 10 ) is made of a software part embedded in a microchip ( 26 ) and a hardware part. The software part of the microchip is divided in two layers, firmware ( 20 ) and the embedded program ( 21 ). 
         [0035]    The firmware ( 20 ) is a layer that allows the interpretation of the USB protocol through software embedded in the microchip ( 26 ), given that the selected microchip (Motorola HC08JB8) has a USB module. 
         [0036]    The program ( 21 ) is the highest level layer located on the side of the microchip ( 26 ). It&#39;s the final application in the microchip ( 26 ), and it&#39;s in charge of interpreting the information sent to the peripheral ( 10 ) from the computer ( 12 ) and representing it on the electromagnet grid ( 24 ) and the led grid ( 25 ). 
         [0037]    In  FIG. 1  the peripheral ( 10 ) is shown, it has three modules: microchip module ( 30 ), serial to parallel conversion and memory module ( 31 ) and the grid module ( 32 ) which is used for the electromagnet grid ( 24 ) and the led grid ( 25 ). The microchip module ( 30 ), is in charge of receiving and interpreting the data sent from the computer ( 12 ) and then send it to the serial to parallel conversion and memory module ( 31 ); this one is made of six 74LS259 integrated circuits, which are 8 bit addressable latches, each one of these sends a signal to a row in the grid and keep this signal until it gets new information; the grid module ( 32 ), is made by to parallel connected grids, one grid ( 25 ) made of leds ( 27 ) and the other one made of electromagnets ( 24 ), the led grid ( 25 ) which is used to run functionality tests with sighted people, while the electromagnet grid ( 24 ) is for visually impaired people. Each one of the elements of the electromagnet grid is a power circuit ( 26 ). 
         [0038]    The peripheral ( 10 ) is created by a circuit made of three resistances, transistors, leds, capacitors, a switch, clocks, power sources, protoboard, microchips, circuit board, electromagnets and wires. 
         [0039]    The glove ( 22 ) is shown on  FIG. 2 , it acts as a sensor so the user can perceive the signals sent through the electromagnet grid ( 24 ), it is necessary due to the fact that the human body is not susceptible to magnetic fields, the glove interacts through its magnet sensors ( 28 ) with the electromagnet grid ( 24 ) so that the signals are perceived as magnetic field pulses with different frequencies, that is how it is possible to establish the differences in color, according to the frequency of the pulses, as a result, it is possible to establish differences in shape and color by perceiving signals from the grid ( 24 ). 
         [0040]    An outline with a hardware part ( 10 ) in the peripheral and a software part ( 12 ) in the computer is shown on  FIG. 5 . 
       Hardware Module ( 10 ) 
       [0041]    It is a module made of two sub-modules that divide the hardware ( 10 ) functions in the user interaction through the interaction device ( 36 ) and the control of the device ( 43 ). These two parts are physically separated and they communicate through a data cable, but depend logically from each other. The hardware module ( 10 ) communicates with the computer by using the TCP/IP protocol. 
         [0042]    Control Module ( 43 ) 
         [0043]    This module is divided in two stages distinguishable by a hardware card and a module; described in detail below: 
         [0044]    Processing Unit ( 42 ) 
         [0045]    The processing unit is managed by a programmable logic device, for example an FPGA (Field Programmable Gate Array), which makes all the data digital processing, such as receiving bit map of the image that is going to be represented and generating the necessary pulses for color representation in each one of the pixels in this map, and tasks like coordinating communication between the control module and the user interaction device and the computer. 
         [0046]    Communication Module ( 41 ) 
         [0047]    The communication module ( 41 ) is in charge of receiving the data in a communication network based on a data exchange standard protocol, for example TCP/IP, and a communication port with the Processing Unit Programmable Logic Device, for example a parallel port such as EPP (Enhanced Parallel Port). 
         [0048]    Interaction Device ( 46 ) 
         [0049]    This part of the hardware ( 10 ) with which the user interacts, provides an output interface (Signal Emission) ( 44 ) and an input interface (Position Sensor) ( 45 ). 
         [0050]    These two areas are closely related, together they are a mobile device that constantly sends information on its location, according to what the position sensor ( 45 ) detects, for the signal emission system ( 44 ) to update its frequencies. 
         [0051]    Signal Emission ( 46 ) 
         [0052]    This module allows the system to perceive, through a special element located in the finger, different types of frequencies generated by the device. Each one of these frequencies represents an equivalent color from the image selected in the software, this way the user can recognize the presented signal. It also allows the system to identify shapes and figures through two frequencies that represent to opposite tones that present the limits of the represented signal. The device updates the information it represents according to what the processing unit indicates, unit that is constantly consulting the location detected by the position sensor ( 45 ). 
         [0053]    Position Sensor ( 45 ) 
         [0054]    This part of the user interaction device constantly detects the device&#39;s position on the XY plane and informs the processing unit ( 42 ) so this last one transmits the position of the image to be updated to the software module ( 10 ). 
       Software Module ( 12 ) 
       [0055]    The software module ( 12 ) is executed in the computer, divided in: Applications, interface, Processing and Communication with the hardware module. 
         [0056]    Applications ( 44 ), ( 45 ), ( 46 ) 
         [0057]    It&#39;s the software( 12 ) area that makes possible to determine the kind of use given to the device at a given time, the use can be of two kinds: text and image recognition, nevertheless interaction with other complementary modules, to extend the functionality of the device, is possible. 
         [0058]    Image Module ( 44 ) 
         [0059]    It allows the system to select and image or shape from a data base or logic file in the computer, for it to be represented on the device by areas according to what the user selects, allowing movement over the image and zooming in and out. 
         [0060]    Text Module ( 45 ) 
         [0061]    It makes possible to select a text file and make the conversion of each one of its characters to the corresponding image in Braille code and send them to the Processing layer, in order to be represented in the device, it also has current position identification functions in the whole document, as well as movement and search. 
         [0062]    Other Modules ( 46 ) 
         [0063]    These are other possible modules that can be developed to extend the functionality of the device: 
         [0064]    TTY Module: uses the Braille text module to represent text that shows on a tty or GNU/Linux standard terminal. 
         [0065]    Video Module: it&#39;s in charge of periodically sending screen captures from a video file to the Processing layer. 
         [0066]    Web Module: It makes possible to alternate between text and graphics in order to surf the websites with high multimedia content. 
         [0067]    Interface Layer ( 47 ) 
         [0068]    This layer is the part of the software ( 12 ) with which the user interacts, it has a graphic user interface that allows the system to load the modules to alternate between the different functionalities of the device. It also presents speech based complements that allow visually impaired people to work better. 
         [0069]    Processing Layer ( 48 ) 
         [0070]    It&#39;s a program in constant execution (service or daemon), image processing and coding ( 48 ) which will then be sent to the peripheral, it is also in charge of answering all the requests that come form the device through the communication layer ( 49 ). 
         [0071]    This layer makes data transmission optimization processes, sending to the device only the information that has changed. 
         [0072]    Communication Layer ( 49 ) 
         [0073]    This layer is in charge of doing all the coding process needed for transmission and reception to the device, it implements the TCP/IP protocol which is necessary for communication with the peripheral. It also makes search procedures of the device and it allows the rest of the software layers to keep working even if connection with the device is lost. 
       System Applications  
       [0074]    Image module: it loads the image and sends it to the Daemon layer. 
         [0075]    Screen module: it takes screenshots periodically and sends them to the Daemon layer. 
         [0076]    Braille text module: it reads a text file and converts each one of its characters into the corresponding Braille image and sends them to the Daemon layer. 
         [0077]    TTY module: uses the Braille text module to represent the text shown on a tty or standard GNU/Linux terminal. 
         [0078]    Video module: it periodically sends screenshots from a video stream file to the Daemon layer. 
         [0079]    Web module: it allows the system to switch between text and graphics to surf web sites with high multimedia contents. 
         [0080]    Replace USB connection with a wireless connection. 
         [0081]    Completely substituting a conventional monitor. 
         [0082]    Connecting a PDA peripheral and a WebCam so a visually impaired person can perceive a representation of the outside world while moving around. 
       INVENTION OBJECTIVES 
       [0083]    The invention is a solid base for countless applications, such as screen, Braille text, tty and web modules. 
         [0084]    The invention is a solution not only for visually impaired people but also for people who are also hearing impaired. 
         [0085]    A graph coding was also created, which allows the serial transmission of graphics and can be understood by visually impaired people who can learn shapes, figures and colors.