Abstract:
Systems and methods are disclosed for matching computer models of two sets of teeth includes calculating a difference for two sets of teeth shapes; finding the position of one set of teeth with respect to the other set of teeth; calculating a positional difference of the corresponding teeth; and finding a corrective path to bring one set of teeth to the other set of teeth.

Description:
BACKGROUND 
   The present invention is related generally to the field of orthodontics, and more particularly to systems and methods for measurement of teeth movements. 
   One objective in orthodontics is to move a patient&#39;s teeth to positions where the teeth function optimally and aesthetically. Conventionally, appliances such as braces are applied to the teeth of the patient by an orthodontist. Each appliance exerts continual force on the teeth and gradually urges the teeth toward their ideal positions. Over a period of time, the orthodontist adjusts the appliances to move the teeth toward their final destination. 
   Generally, the orthodontist specifies in a prescription the final tooth arrangement. The prescription is based on the orthodontist&#39;s knowledge and experience in selecting the intended final position of each tooth. The process of attaching the braces to teeth is tedious and painful to the patient. Additionally, each visit reduces the “chair-time” available to the orthodontist that could be used for another patient. Hence, the process of treating teeth using braces can be expensive. 
   New methods, such as those described in U.S. Pat. No. 5,975,893, allow the treatment to be planned in advance and all individual appliances to be fabricated at the outset of treatment. The appliances may thus be provided to the patient as a single package or system. Unlike braces, the patient need not visit the treating professional every time an adjustment in the treatment is made. While the patients will usually want to visit their treating professionals periodically to assure that treatment is going according to the original plan, eliminating the need to visit the treating professional each time an adjustment is to be made allows the treatment to be carried out in many more, but smaller, successive steps while still reducing the time spent by the treating professional with the individual patient. Moreover, the ability to use polymeric shell appliances that are more comfortable, less visible, and removable by the patient, greatly improves patient compliance, comfort, and satisfaction. 
   In the above system, and in other computer-aided teeth treatment systems, as a first step, a digital data set representing an initial tooth arrangement is obtained, referred to hereinafter as the IDDS. The IDDS may be obtained in a variety of ways. For example, the patient&#39;s teeth may be scanned or imaged using well known technology, such as X-rays, three-dimensional x-rays, computer-aided tomographic images or data sets, magnetic resonance images, etc. Methods for digitizing such conventional images to produce data sets useful in the present invention are well known and described in the patent and medical literature. Usually, however, the present invention will rely on first obtaining a plaster cast of the patient&#39;s teeth by well known techniques, such as those described in Graber,  Orthodontics: Principle and Practice , Second Edition, Saunders, Philadelphia, 1969, pp. 401–415. After the tooth casting is obtained, it can be digitally scanned using a conventional laser scanner or other range acquisition system to produce the IDDS. The data set produced by the range acquisition system may, of course, be converted to other formats to be compatible with the software which is used for manipulating images within the data set, as described in more detail below. General techniques for producing plaster casts of teeth and generating digital models using laser scanning techniques are described, for example, in U.S. Pat. No. 5,605,459. After scanning, computer models of teeth on an upper jaw and a lower jaw are generated. 
   One advantage of the digital model teeth is the possibility of accurate measurements. Traditionally, dentists depend on manual measurement to measure dental features and orthodontic properties. They use rulers on teeth impression or X-rays images. Such manual measurements have limitations because they are manual processes and two dimensional measurements. Thus, the measurement results are not very precise and the rotation is difficult to measure. With the digital model, precise measurement and movement analysis can be performed. Using three-dimensional rigid body analysis accurate and complete movement of a tooth or the entire jaw can be calculated. 
   One application of the measurement is analyzing an orthodontic treatment. After any orthodontic treatment is performed, the outcome of the treatment needs to be examined. With the conventional measurement methods, such as measuring impressions or superimposing X-rays, there are many sources of uncertainties in the conclusions. Using the digital models, one can get a precise and complete analysis of treatment. The complete analysis can be achieved by taking two digital models, one before treatment and one after treatment, superimposing them in a virtual space, and calculating the movement of each tooth. 
   SUMMARY OF THE INVENTION 
   The present invention includes a system, apparatus and computer-implemented method for analyzing an orthodontic treatment by using computer models of teeth. 
   In one aspect, a method for matching computer models of two sets of teeth includes calculating a difference for two sets of teeth shapes; finding the position of one set of teeth with respect to the other set of teeth; calculating a positional difference of the corresponding teeth; and finding a corrective path to bring one set of teeth to the other set of teeth. 
   Implementations of the above aspect may include one or more of the following. The calculation of a difference can include calculating and displaying shape difference for each tooth of the jaw; and identifying a corresponding location for each shape difference. Finding the position can include placing two jaw impressions in a single coordinate system; selecting a positioning reference; and determining a positional difference for each of the corresponding teeth in the jaw impression. The method can also include matching two impressions of a jaw having teeth thereon; calculating proclination, extrusion, distalization of the teeth; and calculating rotation and orientation changes of the teeth. Moreover, the method can also include finding a correction path from current teeth positions to planned treatment teeth positions. 
   The advantage of the invention may include one or more of the following. It provides accurate teeth matching and jaw matching results. It reveals the shape difference between two different sets of impressions from the same teeth. It can provide a complete rigid body movement, three translations and three rotations, for each and every tooth. 

   
     BRIEF DESCRIPTION OF THE DRAWINGS 
       FIG. 1  is an elevational diagram showing the anatomical relationship of the jaws of a patient. 
       FIG. 2A  illustrates in more detail the patient&#39;s lower jaw and provides a general indication of how teeth may be moved by the methods and apparatus of the present invention. 
       FIG. 2B  illustrates a single tooth from  FIG. 2A  and defines how tooth movement distance is determined. 
       FIG. 2C  illustrates the jaw of  FIG. 2A  together with an incremental position adjustment appliance. 
       FIG. 3  shows an exemplary bite set process. 
       FIG. 4  shows an exemplary process for matching of original teeth data with current teeth data. 
       FIG. 5  shows a process for positioning of a newly scanned jaw in the original coordinate system 
       FIG. 6  shows an exemplary report analysis generation process. 
       FIG. 7  shows an exemplary process to create reboot appliances in case the patient&#39;s teeth are out of synchronization with the treatment plan. 
       FIG. 8  shows an exemplary functional summary process. 
       FIGS. 9A and 9B  illustrate exemplary shape differences between two corresponding teeth. 
       FIG. 10  is a block diagram illustrating a system for generating appliances in accordance with the present invention. 
   

   DESCRIPTION 
     FIG. 1  shows a skull  10  with an upper jaw bone  22  and a lower jaw bone  20 . The lower jaw bone  20  hinges at a joint  30  to the skull  10 . The joint  30  is called a temporal mandibular joint (TMJ). The upper jaw bone  22  is associated with an upper jaw  101 , while the lower jaw bone  20  is associated with a lower jaw  100 . A computer model of the jaws  100  and  101  is generated, and a computer simulation models interactions among the teeth on the jaws  100  and  101 . The computer simulation allows the system to focus on motions involving contacts between teeth mounted on the jaws. The computer simulation allows the system to render realistic jaw movements that are physically correct when the jaws  100  and  101  contact each other. The model of the jaw places the individual teeth in a treated position. Further, the model can be used to simulate jaw movements including protrusive motions, lateral motions, and “tooth guided” motions where the path of the lower jaw  100  is guided by teeth contacts rather than by anatomical limits of the jaws  100  and  101 . Motions are applied to one jaw, but may also be applied to both jaws. Based on the occlusion determination, the final position of the teeth can be ascertained. 
   Referring now to  FIG. 2A , the lower jaw  100  includes a plurality of teeth  102 , for example. At least some of these teeth may be moved from an initial tooth arrangement to a final tooth arrangement. As a frame of reference describing how a tooth may be moved, an arbitrary centerline (CL) may be drawn through the tooth  102 . With reference to this centerline (CL), each tooth may be moved in orthogonal directions represented by axes  104 ,  106 , and  108  (where  104  is the centerline). The centerline may be rotated about the axis  108  (root angulation) and the axis  104  (torque) as indicated by arrows  110  and  112 , respectively. Additionally, the tooth may be rotated about the centerline, as represented by an arrow  112 . Thus, all possible free-form motions of the tooth can be performed. 
     FIG. 2B  shows how the magnitude of any tooth movement may be defined in terms of a maximum linear translation of any point P on a tooth  102 . Each point P 1  will undergo a cumulative translation as that tooth is moved in any of the orthogonal or rotational directions defined in  FIG. 2A . That is, while the point will usually follow a nonlinear path, there is a linear distance between any point in the tooth when determined at any two times during the treatment. Thus, an arbitrary point P 1  may in fact undergo a true side-to-side translation as indicated by arrow d 1 , while a second arbitration point P 2  may travel along an arcuate path, resulting in a final translation d 2 . Many aspects of the present invention are defined in terms of the maximum permissible movement of a point P 1  induced on any particular tooth. Such maximum tooth movement, in turn, is defined as the maximum linear translation of that point P 1  on the tooth that undergoes the maximum movement for that tooth in any treatment step. 
     FIG. 2C  shows one adjustment appliance  111  which is worn by the patient in order to achieve an incremental repositioning of individual teeth in the jaw as described generally above. The appliance is a polymeric shell having a teeth-receiving cavity. This is described in U.S. application Ser. No. 09/169,036, filed Oct. 8, 1998, now U.S. Pat. No. 6,450,807, which claims priority from U.S. application Ser. No. 08/947,080, filed Oct. 8, 1997, now U.S. Pat. No. 5,975,893, which in turn claims priority from provisional application No. 60/050,342, filed Jun. 20, 1997 (collectively the “prior applications”), the full disclosures of which are incorporated by reference. 
   As set forth in the prior applications, each polymeric shell may be configured so that its tooth-receiving cavity has a geometry corresponding to an intermediate or final tooth arrangement intended for the appliance. The patient&#39;s teeth are repositioned from their initial tooth arrangement to a final tooth arrangement by placing a series of incremental position adjustment appliances over the patient&#39;s teeth. The adjustment appliances are generated at the beginning of the treatment, and the patient wears each appliance until the pressure of each appliance on the teeth can no longer be felt. At that point, the patient replaces the current adjustment appliance with the next adjustment appliance in the series until no more appliances remain. Conveniently, the appliances are generally not affixed to the teeth and the patient may place and replace the appliances at any time during the procedure. The final appliance or several appliances in the series may have a geometry or geometries selected to overcorrect the tooth arrangement, i.e., have a geometry which would (if fully achieved) move individual teeth beyond the tooth arrangement which has been selected as the “final.” Such over-correction may be desirable in order to offset potential relapse after the repositioning method has been terminated, i.e., to permit movement of individual teeth back toward their pre-corrected positions. Over-correction may also be beneficial to speed the rate of correction, i.e., by having an appliance with a geometry that is positioned beyond a desired intermediate or final position, the individual teeth will be shifted toward the position at a greater rate. In such cases, the use of an appliance can be terminated before the teeth reach the positions defined by the appliance. 
   The polymeric shell  111  can fit over all teeth present in the upper or lower jaw. Often, only certain one(s) of the teeth will be repositioned while others of the teeth will provide a base or an anchor region for holding the appliance  111  in place as the appliance  111  applies a resilient repositioning force against the tooth or teeth to be repositioned. In complex cases, however, multiple teeth may be repositioned at some point during the treatment. In such cases, the moved teeth can also serve as a base or anchor region for holding the repositioning appliance. 
   The polymeric appliance  111  of  FIG. 2C  may be formed from a thin sheet of a suitable elastomeric polymer, such as Tru-Tain 0.03 in, thermal forming dental material, available from Tru-Tain Plastics, Rochester, Minn. Usually, no wires or other means will be provided for holding the appliance in place over the teeth. In some cases, however, it will be desirable or necessary to provide individual anchors on teeth with corresponding receptacles or apertures in the appliance  111  so that the appliance can apply an upward force on the tooth that would not be possible in the absence of such an anchor. 
   Referring on  FIG. 3 , Treatment Outcome Analysis by Teeth Matching process  200  is shown. First, an original treatment case is loaded ( 202 ). Next, a current jaw impression is loaded ( 204 ). The teeth data from the original treatment case is compared against the teeth data from the current jaw impression ( 206 ). Next, the new jaw data is positioned in the original coordinate system ( 208 ). The process  200  then compares the original jaw data against the new jaw data ( 210 ). Based on the comparison, the Process  200  generates an analysis report ( 220 ). Alternatively, it can create a mid-course correction data file (MCC ADF) ( 230 ). And yet another option, the process  200  can generate a visualization showing the discrepancy ( 240 ). 
   The process  206  of  FIG. 3  matches data using a tooth by tooth approach. By matching tooth by tooth, the process determines the difference between tooth geometry in two different impressions. Even though the same tooth is scanned, there may be slight differences between impressions. This process reveals the difference between two different impressions. 
   The process also determines necessary coordinate transformations from the expected 3D coordinates for each tooth to the 3D coordinates for the corresponding tooth in the impression. Once this process is done, the difference of the impression of the individual tooth is ascertained. Based on the information, the process determines tooth alignment data in the current position. 
   In the next process  208 , a second matching operation is performed to determine the position of the new jaw relative to the original coordinate system. The current teeth alignment data previously determined is then compared against the current stage. This process positions the scanned jaw impression relative to the original jaw position. Once each tooth is placed, the process can determine the individual difference between the current jaw and original jaw. The process then provides three options: visualize any discrepancy; report the discrepancy in a report or a failure analysis; and create MCC ADF (the file that moves the tooth from its current tooth impression to the expected tooth location). 
   Referring onto  FIG. 4 , the matching of the original teeth data with the current teeth data of box  206  is detailed. In  FIG. 4 , the process approximates the current positioning of the current teeth ( 300 ). Next, the process ( 304 ) is iterated for each tooth in  302 . The process  304  creates sample points Pi on the current tooth crown surface ( 306 ). Next, it finds the corresponding closet point Qi for each Pi on the original tooth crown surface ( 308 ). The process then calculates an error of value in this case, the error value is computed as the sum of the distance between Pi and Qi ( 310 ). The process then computes a rigid transformation between two teeth that minimizes the error ( 312 ). The current tooth is then repositioned with the transform ( 314 ). The process of  FIG. 4  is repeated until an error value is less than a predetermined termination criterion or the number of iterations exceeds a predetermined value ( 316 ). Finally, the process provides a visual report of the deviation ( 318 ). 
   The process of  FIG. 4  positions the current teeth with respect to original teeth using an approximate position. In one embodiment, the process positions two teeth approximately based on each crown center and tooth local coordinate system. Then, for each tooth, a matching operation is performed. The matching operation is an iteration process that minimizes an error value while trying to find the appropriate tooth location. The process finds points on the original tooth crown and finds corresponding points on the current tooth. The process finds each Pi on the current tooth and Qi of the original tooth and calculates the distance between Pi and Qi. The process determines a transformation that minimizes the square sum of these errors. Then the process positions the teeth and starts again. A new point Pi and a new point Qi are selected, and the process finds the difference and determines the transformation that minimizes the error. The above steps are iterated until the error is less than termination criteria or a maximum number of iteration is reached. Then the process graphically illustrates the difference. 
   Turning now to  FIG. 5 , the positioning of the new jaw in the original coordinate system ( 208 ) is detailed. First, the process receives a positioning option from a user ( 319 ). If the user specifies stationary teeth option ( 320 ), the process uses stationary teeth as a set of reference teeth ( 322 ). Alternatively, if the users specify a low velocity model ( 330 ), the process uses low velocity teeth as reference teeth ( 332 ). From the positioning option  319 , if the users specify statistical filtering ( 340 ) the process uses teeth with small standard error as reference teeth ( 342 ). 
   From boxes  322 , 332 , or  342 , the process generates various sample points on the reference teeth and corresponding points on the current teeth ( 344 ). Next, it calculates position transformation using the sample points ( 346 ). It processes and positions the current teeth with the transformation ( 348 ) and generates a visualization of the difference ( 350 .) 
   The process provides three different options to position the new jaw in the original coordinate system. User can choose one of the options freely. The first option relies on stationary teeth that are expected to remain stationary throughout the stages. The stationary teeth are then used as a landmark for comparison purposes. Low velocity option allows the user to pick a tooth that moves at a relatively low velocity as a landmark approximation. The statistical filtering approach can be used for selecting small standard error as reference teeth. 
   Turning onto  FIG. 6 , the report analysis generation process  220  is detailed. For each individual tooth, the report generates discrepancy information in terms of translation, rotation, movement distance and deviation, and an average for all of the teeth. First, the teeth are positioned ( 221 ). Next, the process obtains a first transform for an original position and a second transform for the current position ( 352 ). From  352 , the process calculates the translation ( 354 ) and proceeds to determine the average, maximum and minimum of the translations ( 356 ). Alternatively, the process  220  can also calculate rotation for Rx, Ry, Rz ( 358 ) and again determines the average, maximum and minimum ( 360 ). From  352 , the process can also calculate move distance of a tooth ( 362 ) and generates a report of the average, maximum, and minimum ( 364 ). Additionally, the process  220  can also calculates the deviation ( 366 ) and generates a report with the average, maximum and minimum ( 368 ). From  356 ,  360 ,  364 , and  368 , the process  220  can generate an export to a text file (TXT) ( 370 ) or to a comma separated file (CSV) for the user to perform subsequent analysis ( 372 ). 
   Turning now to  FIG. 7 , a mid-course correction data file (MCC ADF) create operation  230  is detailed. For treatment plans whose teeth movements have deviated from the treatment plan, the process generates files to bring the treatment back on track. 
   First, the process obtains the deviation stage and a target stage ( 380 ). Next, the process sets the position at a deviation stage as the initial position ( 382 ). Additionally, the process sets a position at a target stage as the final position ( 384 ). Finally, the process creates a new ADF using the initial position and the final position ( 386 ). The process obtains the deviation stage, or the stage where the current impression is taken and where the patient&#39;s teeth have gone off the planned path so the aligner fails to fit the teeth. The system also obtains the target stage, which is the stage that the patient&#39;s teeth is expected to be. The process uses the current teeth position as the initial position and the target stage of the original treatment plan as the final position. 
   Referring onto  FIG. 8 , a functional summary process  400  is shown. First, treatment outcome analysis is performed ( 402 ). From the treatment outcome analysis, the process  400  performs four operations in sequence. The first operation is to match the treatment with a correction ADF ( 404 ). In this operation, the tooth is matched tooth by tooth ( 406 ) deviations are quantified ( 408 ). The deviation is visualized, for example using color code or transparency values, among others ( 410 ). In a second operation where the teeth are positioned ( 412 ), the operation includes specifying reference stage ( 414 ), manually selecting a set of reference teeth ( 416 ), automatically selecting a set of reference teeth ( 418 ), specifying an error reference ( 420 ), specifying color representation ( 422 ) and visualizing the discrepancy ( 424 ). 
   In the third operation, analysis of the match result is performed ( 426 ). First, the position discrepancy is computed ( 428 ). Next, a text file is generated ( 430 ) or alternatively, a CSV file can be generated ( 432 ). 
   In the final operation, the process  400  creates the MCC ADF ( 440 ). In this operation, the target stage can be specified ( 442 ) and the result in the MCC file is exported for correction treatment ( 444 ). 
   The above described system matches two different impressions of a patient, one before treatment and one after treatment, the method positions them together in a single three-dimensional space, and calculates the individual tooth movement. This also includes finding the intermediate treatment if the patient&#39;s current teeth are off from the intended treatment course. 
   In this system, there are two different sets of digital models of teeth, the original teeth and the new teeth. First, a comparison between two corresponding teeth in the different set is found by an iterative searching algorithm. The search algorithm finds the relative position of the teeth by minimizing the distance between two superimposed teeth. The matching process is completed throughout the entire teeth of a jaw. After matching the teeth, the shape difference between each of the corresponding teeth, one before treatment and one after treatment, can be identified as a by-product of the matching. This teeth matching provides a foundation for jaw matching so that each new tooth position can be represented relative to the original tooth position. Then, the matched position of individual teeth is used to position the entire jaw. The entire jaw needs an external reference to set the position. A fixed external reference such as rugae in the patient&#39;s mouth can be used. If a fixed external reference is not available, some teeth can be used for the reference as well. Once the entire jaw is positioned, the relative movement or discrepancy is precisely calculated. The calculated results are reported in text and also visualized on computer screen. 
     FIGS. 9A and 9B  illustrate that the shape difference of two corresponding teeth can be the average deviation, maximum deviation, or coverage percentage, among others. The deviation is defined as the distance between the sampled point on one tooth and its projection point on the other tooth. For displaying the difference in teeth position variance a color-coded model and a transparent tooth model are used in these exemplary figures. 
     FIG. 10  is a simplified block diagram of a data processing system  500 . Data processing system  500  typically includes at least one processor  502  that communicates with a number of peripheral devices over bus subsystem  504 . These peripheral devices typically include a storage subsystem  506  (memory subsystem  508  and file storage subsystem  514 ), a set of user interface input and output devices  518 , and an interface to outside networks  516 , including the public switched telephone network. This interface is shown schematically as “Modems and Network Interface” block  516 , and is coupled to corresponding interface devices in other data processing systems over communication network interface  524 . Data processing system  500  may include a terminal or a low-end personal computer or a high-end personal computer, workstation or mainframe. The user interface input devices typically include a keyboard and may further include a pointing device and a scanner. The pointing device may be an indirect pointing device such as a mouse, trackball, touchpad, or graphics tablet, or a direct pointing device such as a touchscreen incorporated into the display. Other types of user interface input devices, such as voice recognition systems, may be used. User interface output devices may include a printer and a display subsystem, which includes a display controller and a display device coupled to the controller. The display device may be a cathode ray tube (CRT), a flat-panel device such as a liquid crystal display (LCD), or a projection device. The display subsystem may also provide nonvisual display such as audio output. Storage subsystem  506  maintains the basic programming and data constructs that provide the functionality of the present invention. The software modules discussed above are typically stored in storage subsystem  506 . Storage subsystem  506  typically comprises memory subsystem  508  and file storage subsystem  514 . Memory subsystem  508  typically includes a number of memories including a main random access memory (RAM)  510  for storage of instructions and data during program execution and a read only memory (ROM)  512  in which fixed instructions are stored. In the case of Macintosh-compatible personal computers the ROM would include portions of the operating system; in the case of IBM-compatible personal computers, this would include the BIOS (basic input/output system). File storage subsystem  514  provides persistent (nonvolatile) storage for program and data files, and typically includes at least one hard disk drive and at least one floppy disk drive (with associated removable media). There may also be other devices such as a CD-ROM drive and optical drives (all with their associated removable media). Additionally, the system may include drives of the type with removable media cartridges. The removable media cartridges may, for example be hard disk cartridges, such as those marketed by Syquest and others, and flexible disk cartridges, such as those marketed by Iomega. One or more of the drives may be located at a remote location, such as in a server on a local area network or at a site on the Internet&#39;s World Wide Web. In this context, the term “bus subsystem” is used generically so as to include any mechanism for letting the various components and subsystems communicate with each other as intended. With the exception of the input devices and the display, the other components need not be at the same physical location. Thus, for example, portions of the file storage system could be connected over various local-area or wide-area network media, including telephone lines. Similarly, the input devices and display need not be at the same location as the processor, although it is anticipated that the present invention will most often be implemented in the context of PCS and workstations. Bus subsystem  504  is shown schematically as a single bus, but a typical system has a number of buses such as a local bus and one or more expansion buses (e.g., ADB, SCSI, ISA, EISA, MCA, NuBus, or PCI), as well as serial and parallel ports. Network connections are usually established through a device such as a network adapter on one of these expansion buses or a modem on a serial port. The client computer may be a desktop system or a portable system. Scanner  520  is responsible for scanning casts of the patient&#39;s teeth obtained either from the patient or from an orthodontist and providing the scanned digital data set information to data processing system  500  for further processing. In a distributed environment, scanner  520  may be located at a remote location and communicate scanned digital data set information to data processing system  500  over network interface  524 . Fabrication machine  522  fabricates dental appliances based on intermediate and final data set information received from data processing system  500 . In a distributed environment, fabrication machine  522  may be located at a remote location and receive data set information from data processing system  500  over network interface  524 . 
   Various alternatives, modifications, and equivalents may be used in lieu of the above components. Although the final position of the teeth may be determined using computer-aided techniques, a user may move the teeth into their final positions by independently manipulating one or more teeth while satisfying the constraints of the prescription. Additionally, the techniques described here may be implemented in hardware or software, or a combination of the two. The techniques may be implemented in computer programs executing on programmable computers that each includes a processor, a storage medium readable by the processor (including volatile and nonvolatile memory and/or storage elements), and suitable input and output devices. Program code is applied to data entered using an input device to perform the functions described and to generate output information. The output information is applied to one or more output devices. Each program can be implemented in a high level procedural or object-oriented programming language to operate in conjunction with a computer system. However, the programs can be implemented in assembly or machine language, if desired. In any case, the language may be a compiled or interpreted language. Each such computer program can be stored on a storage medium or device (e.g., CD-ROM, hard disk or magnetic diskette) that is readable by a general or special purpose programmable computer for configuring and operating the computer when the storage medium or device is read by the computer to perform the procedures described. The system also may be implemented as a computer-readable storage medium, configured with a computer program, where the storage medium so configured causes a computer to operate in a specific and predefined manner. Further, while the invention has been shown and described with reference to an embodiment thereof, those skilled in the art will understand that the above and other changes in form and detail may be made without departing from the spirit and scope of the following claims.