METHOD AND SYSTEM FOR X-RAY IMAGE GENERATION
20170248840 ยท 2017-08-31
Assignee
Inventors
Cpc classification
G09B23/286
PHYSICS
G06T19/20
PHYSICS
International classification
Abstract
A method of creating an image including retrieving three-dimensional image data of an anatomy, retrieving a model of a portion of the anatomy, associating the model with the three-dimensional image data such that the model defines a bounded volume within the three-dimensional image data corresponding to the portion of the anatomy, and creating a virtual radiograph of the portion of the anatomy. Creating the virtual radiograph includes casting a plurality of rays from an origin point through the bounded volume, sampling, for each ray, the bounded volume at a plurality of sampling steps along the ray, the sampling steps separated by a sampling distance, and calculating, for each ray, an accumulated attenuation value of the bounded volume along the ray based on the samples.
Claims
1. A method of creating an image, comprising: retrieving three-dimensional image data of an anatomy; retrieving a model of a portion of the anatomy; associating the model with the three-dimensional image data such that the model defines a bounded volume within the three-dimensional image data corresponding to the portion of the anatomy; and creating a virtual radiograph of the portion of the anatomy, wherein creating the virtual radiograph comprises: casting a plurality of rays from an origin point through the bounded volume; sampling, for each ray, the bounded volume at a plurality of sampling steps along the ray, the sampling steps separated by a sampling distance; and calculating, for each ray, an accumulated attenuation value of the bounded volume along the ray based on the samples.
2. The method of claim 1, wherein the portion of the anatomy is a first portion of the anatomy, the model is a first model, and the bounded volume is a first bounded volume, the method further comprising: retrieving a second model of a second portion of the anatomy, wherein the second portion of the anatomy is a subset of the first portion of the anatomy; and associating the second model with the three-dimensional image data such that the second model defines a second bounded volume within the three-dimensional image data corresponding to the second portion of the anatomy, wherein the second bounded volume is a subset of the first bounded volume; wherein creating the virtual radiograph further comprises: casting a plurality of rays from the origin point through the second bounded volume; sampling, for each ray, the second bounded volume at a plurality of sampling steps along the ray, the sampling steps separated by the sampling distance; calculating, for each ray, an accumulated attenuation value of the second bounded volume along the ray based on the samples; and subtracting the accumulated attenuation values for the second bounded volume from the accumulated attenuation values for the first bounded volume.
3. The method of claim 2, further comprising: receiving a modification of the second model; wherein creating the virtual radiograph further comprises: modifying the accumulated attenuation values for the second bounded volume according to the modification of the second model; and adding the modified accumulated attenuation values to the accumulated attenuation values for the first bounded volume.
4. The method of claim 3, wherein the modification of the second model comprises at least one of a translation of the second model, a rotation of the second model, or a resection of the second model.
5. The method of claim 3, wherein the modification of the second model is according to a preoperative plan.
6. The method of claim 1, further comprising: retrieving a model of an implant; wherein creating the virtual radiograph further comprises: selecting a view for the implant model; determining a view-dependent thickness for the implant model; calculating accumulated attenuation values for the implant model for the selected view, based on the view-dependent thickness; and adding the accumulated attenuation values for the implant to the accumulated attenuation values for the bounded volume.
7. The method of claim 6, wherein the implant is at least one component of a hip implant.
8. The method of claim 6, wherein the accumulated attenuation values for the implant are added to the accumulated attenuation values for the bounded volume according to a preoperational plan.
9. The method of claim 1, further comprising: converting each accumulated attenuation value to a color; and displaying an image of the virtual radiograph based the converted colors.
10. The method of claim 1, wherein the model is a segmented bone model.
11. An image generation system, comprising: an input/output interface; a display coupled to the input/output interface; and a processing circuit having a processor and a memory, the processing circuit configured to: retrieve three-dimensional image data of an anatomy; retrieve a model of a portion of the anatomy; associate the model with the three-dimensional image data such that the model defines a bounded volume within the three-dimensional image data corresponding to the portion of the anatomy; create a virtual radiograph of the portion of the anatomy, wherein creating the virtual radiograph comprises: casting a plurality of rays from an origin point through the bounded volume; sampling, for each ray, the bounded volume at a plurality of sampling steps along the ray, the sampling steps separated by a sampling distance; and calculating, for each ray, an accumulated attenuation value of the bounded volume along the ray based on the samples; and display an image of the virtual radiograph on the display.
12. The system of claim 11, wherein the portion of the anatomy is a first portion of the anatomy, the model is a first model, and the bounded volume is a first bounded volume, and wherein the processing circuit is further configured to: retrieve a second model of a second portion of the anatomy, wherein the second portion of the anatomy is a subset of the first portion of the anatomy; associate the second model with the three-dimensional image data such that the second model defines a second bounded volume within the three-dimensional image data corresponding to the second portion of the anatomy, wherein the second bounded volume is a subset of the first bounded volume; and create the virtual radiograph of the first portion of the anatomy by: casting a plurality of rays from the origin point through the second bounded volume; sampling, for each ray, the second bounded volume at a plurality of sampling steps along the ray, the sampling steps separated by the sampling distance; calculating, for each ray, an accumulated attenuation value of the second bounded volume along the ray based on the samples; and subtracting the accumulated attenuation values for the second bounded volume from the accumulated attenuation values for the first bounded volume.
13. The system of claim 12, wherein the processing circuit is further configured to: receive a modification of the second model; and create the virtual radiograph by: modifying the accumulated attenuation values for the second bounded volume according to the modification of the second model; and adding the modified accumulation attenuation values to the accumulated attenuation values for the first bounded volume.
14. The system of claim 13, wherein the modification of the second model comprises at least one of a translation of the second model, a rotation of the second model, or a resection of the second model.
15. The system of claim 11, wherein the modification of the second model is according to a preoperative plan.
16. The system of claim 11, wherein the processing circuit is further configured to: retrieve a model of an implant; and create the virtual radiograph by: selecting a view for the implant model; determining a view-dependent thickness for the implant model; calculating accumulated attenuation values for the implant model for the selected view, based on the view-dependent thickness; and adding the accumulated attenuation values for the implant to the accumulated attenuation values for the bounded volume.
17. The system of claim 16, wherein the implant is at least one component of a hip implant.
18. The system of claim 16, wherein the processing circuit is configured to add the accumulated attenuation values for the implant to the accumulated attenuation values for the bounded volume according to a preoperational plan.
19. The system of claim 11, wherein the processing circuit is further configured to: convert each accumulated attenuation value to a color; and display the image of the virtual radiograph based on the converted colors.
20. The system of claim 11, wherein the model is a segmented bone model.
Description
BRIEF DESCRIPTION OF THE FIGURES
[0022] The disclosure will become more fully understood from the following detailed description, taken in conjunction with the accompanying figures, wherein like reference numerals refer to like elements, in which:
[0023]
[0024]
[0025]
[0026]
[0027]
[0028]
[0029]
[0030]
[0031]
DETAILED DESCRIPTION
[0032] Before turning to the figures, which illustrate the exemplary embodiments in detail, it should be understood that the application is not limited to the details or methodology set forth in the description or illustrated in the figures. It should also be understood that the terminology is for the purpose of description only and should not be regarded as limiting.
[0033] Referring generally to the figures, systems and methods for creation of two-dimensional (2-D) x-ray images are shown and described. The systems and methods described herein may generally create interactive high-quality virtual radiographs, also referred to herein as x-ray images, using a patient computed tomography (CT) scan, segmented bone models, and a preoperative plan for an operation. The x-ray images generated may provide a full antero-posterior view for implant planning (or any other surgical planning). The generated x-ray images may further be used as a comparison with a post-operative record. The images are displayed on a user interface augmented with digital tools that may assist a user during a preoperative surgical planning process.
[0034] In one embodiment, the systems and methods herein may be used to provide a customizable view of the pelvis and femur of a patient. For example, an x-ray image of the pelvis and the femur may be created, then may be manipulated in such a way to provide a pure antero-posterior or lateral perspective of the anatomy. This may provide an improvement on traditional x-ray imaging techniques in that a limitation of traditional x-ray imaging techniques relates to the effect of a patient's position on the x-ray table. Further, implant models may be added to the x-ray image to be utilized in preparation of the surgical plan and to be used for comparison with a post-operative record.
[0035] The x-ray images are manipulated to provide various views for preparation in an operation. Referring generally to
[0036] System 100 may generate x-ray images using data representing the anatomy of a patient, such as a patient CT scan from an imaging system 132 or a statistical deformable model, segmented bone models, and a preoperative plan for an operation. In one example of a preoperative plan a doctor and/or assistants to a doctor may map out anticipated tissue resections, implant placements, and/or other intended actions to be performed during or outcomes to be realized from the surgery. System 100 may receive such information from a user via an input/output (I/O) interface 108, and/or retrieve the information from a database 110. Segmented bone models may be created by such methods as a livewire segmentation technique, Mimics software, or other methods known in the art.
[0037] System 100 generally includes a processing circuit 102 having a processor 104 and memory 106. Processor 104 may be or include one or more microprocessors, an application specific integrated circuit (ASIC), a circuit containing one or more processing components, a group of distributed processing components, circuitry for supporting a microprocessor, or other hardware configured for processing. According to an exemplary embodiment, processor 104 is configured to execute computer code stored in memory 106 to complete and facilitate the activities described herein. Memory 106 can be any volatile or non-volatile memory device capable of storing data or computer code relating to the activities described herein. For example, memory 106 is shown to include various modules which are computer code modules (e.g., executable code, object code, source code, script code, machine code, etc.) configured for execution by processor 104. When executed by processor 104, processing circuit 102 is configured to complete the activities described herein.
[0038] Memory 106 is shown to include various modules for executing process 200. Process 200 for generating an x-ray image may generally include a volume ray casting component where additive and subtractive models are drawn, a component for drawing constant attenuation models, and a component for computing the output color from the attenuation and thickness values computed by the first two components. Memory 106 is shown to include a volume ray casting module 112, an attenuation model module 114, and a color module 116 for executing the components of process 200. Ray casting module 112 may generally be configured to rotate or resect one or more features in a provided CT scan image. Attenuation model module 114 may generally be configured to indicate such a feature in an x-ray image output by system 100, and color module 116 may be configured to provide grayscale color settings for the image for display. The activities of modules 112-116 are described in greater detail below with respect to subsequent figures.
[0039] Memory 106 may include one or more buffers 118-124 for temporarily storing data during the x-ray image generation process. Memory 106 includes an attenuation buffer 118 for storing additive and subtractive attenuation values computed during the ray casting process. Memory 106 also includes a thickness buffer 120 for storing a thickness of input models and a front buffer 122 and back buffer 124 to store XYZ coordinates of the front and back fragments of an input model. The use of buffers 118-124 are described in greater detail below with respect to subsequent figures.
[0040] Memory 106 further includes a display module 126. Display module 126 may be configured to generate a display for a user including the generated x-ray image. Display module 126 may further be configured to generate a user interface for display on a display 130 that allows a user to interact with the x-ray image, as described with reference to
[0041] System 100 further includes an input/output (I/O) interface 108. I/O interface 108 may be configured to receive information from an imaging system 132, and to receive information from and transmit information to an external display 130. I/O interface 108 may be configured to transmit one or more x-ray images for display on display 130, either wirelessly or via a wired connection. Display 130 may be any type of display, such as a display for a computer or other device. An example of an x-ray image that may be displayed via display 130 is shown in greater detail in
[0042] Referring again to
[0043] Process 200 may generally include, after clearing attenuation buffer 118 and thickness buffer 120 (steps 202, 204), a volume ray casting process 206. Ray casting process 206 may be executed by, for example, volume ray casting module 112. Ray casting process 206 may generally include creating an x-ray image from a CT scan by casting a ray from an origin point 608 through the bounding box of the CT volume for each pixel in the image from the CT scan. The attenuation computed from the CT values along the rays is accumulated. An x-ray image created by the volume ray casting process 206 is illustrated in image 300 of
[0044] Ray casting process 206 may also generally include, using the same viewing parameters, creating an image of the CT volume inside certain of the segmented bone models selected for manipulation, for example both femur bones, as in an exemplary embodiment. The accumulated attenuation values may then be subtracted from the previous computed attenuation, to assist with surgical planning and any necessary manipulation of the anatomy shown in the x-ray image. Referring to image 310 of
[0045] In order to obtain an x-ray image of the patient's anatomy in a desired position, ray casting process 206 may also generally include creating an image of the CT volume inside bone models that have been translated, rotated, resected, and/or otherwise modified. In one embodiment these modifications are made according to a preoperative plan. The accumulated attenuation values may then be added to the previous computed attenuation in the desired position. Referring also to image 320 of
[0046] After ray casting process 206, process 200 includes an attenuation model process 208 in which attenuation models are drawn. Process 208 may generally include creating an image of the implant models, where the attenuation is proportional to the aggregate view-dependent thickness of the models and the implant model is placed according to a preoperative plan. The generated attenuation values are added to the attenuation computed in process 206. Referring to image 330 of
[0047] Process 200 further includes mapping the computed attenuation values to grayscale color (step 210) and providing the x-ray image with the color information to a screen or other display 130. Step 210 utilizes data in attenuation buffer 118 generated during ray casting process 206 and data in thickness buffer 120 generated during attenuation model process 208.
[0048] By executing process 200, x-ray images, such as those shown in images 310, 320, and 330 of
[0049] Referring now to
[0050] Ray casting process 206 further includes ray casting, and computing and saving an accumulated attenuation resulting from the ray casting (process 408). Process 408 is described in greater detail in
[0051] Referring to
[0052] Process 408 further includes looking up a data value and computing and accumulating the attenuation (step 506). The activities of step 506 are illustrated in
A=(p.sub.k)d(1)
where (p.sub.k) is the attenuation coefficient computed from the CT value v(p.sub.k) at a sampling location (p.sub.k) along ray 606 and d is the step length (e.g., sampling distance 622).
[0053] After each step the position of ray 606 is updated (for advancing ray 606 through the volume of volume 604). The length variable is increased by sampling distance 622 as well. If the length variable is not greater than the computed working volume distance (step 508), then process 408 includes returning to step 506 for advancing the sampling position along the ray in volume 604. Once the length variable is greater than the computed working volume distance, the accumulated attenuation may be saved in attenuation buffer 118 (step 510). If attenuation has been calculated, or an NaN or infinity determination has been made, for each pixel in the screen space rectangle 602 process 408 may terminate, otherwise the process may continue for each remaining pixel in the screen space rectangle 602. In one embodiment process 408 may be executed for each pixel in parallel by processor 104. The result of process 408 is an accumulated attenuation stored in attenuation buffer 118 for each pixel in the screen space rectangle 602 that is to be used in generating the X-ray image for display. Attenuation buffer 118 is generally configured to store additive and subtractive accumulated attenuation values as described below.
[0054] The volume ray casting process of step 506 supports arbitrary bounding models such as closed oriented manifold surfaces. For example, to generate an X-ray view of a femur only, the segmented femur model may be used as the bounding box for the ray casting component. An arbitrary number of bounding models may be added to the visualization. The accumulated attenuation from each bounding model is either added or subtracted from the total attenuation, depending on the type of model. Subtracting the accumulated attenuation is used to mask the contribution of a given bone in the X-ray image (as shown in
A.sup.+=.sup.+(p.sub.k)d(2)
A.sup.=.sup.f(p.sub.k)d(3)
[0055] The accumulated attenuation is converted to greyscale color (step 210):
c=1exp(A)(4)
[0056] The color calculation may be modified to handle subtractive models:
c=1exp(A.sup.++A.sup.)(5)
[0057] Although Equation 5 includes a negative A.sup.+ added to a positive A.sup., as used herein this and similar operations are considered a subtraction of A.sup. values from A.sup.+ values, as this operation is performed within a negative exponential function. In a similar manner, this and similar operations could also be considered an addition, as used herein, of A.sup.+ values to A.sup. values. The result being that A.sup.+ values tend to increase the brightness of their respective pixels, while A.sup. values tend to decrease the brightness of their respective pixels. In an alternative embodiment in which it may be desirable for more radiodense volumes to appear darker, and less radiodense volumes to appear lighter, the signs in front of A.sup.+ and A.sup. may be interchanged without altering the nature of addition and subtraction operations as used herein. The calculated color (c) may then be utilized to display a grayscale image. For example, in an 8-bit RGB display, the calculated color (c) may be utilized to calculate Red, Green, and Blue values according to:
Red=255c(6)
Green=255c(7)
Blue=255c(8)
[0058] As mentioned above, the CT value v(p.sub.k) may be converted to an attenuation coefficient value (p.sub.k) via a transfer function. Attenuation of X-ray intensity through homogenous materials is characterized by the Beer-Lambert law:
I=I.sub.0exp(x)(9)
[0059] I.sub.0 is the incoming intensity, I is the outgoing intensity, is the linear attenuation coefficient representing the radiodensity of the material, and x is the distance the X-ray beam travels in the material. For inhomogeneous media, the equation may be approximated by a discrete summation, according to the following equation:
I=I.sub.0exp(.sub.kx)(10)
[0060] Each line segment is assumed to be the same length crossing homogeneous material with a constant attenuation coefficient .sub.k.
[0061] In radiology the Hounsfield scale is used as a standardized way of characterizing the radiodensity of materials. The relationship between the Hounsfield unit (HU) and the linear attenuation coefficient is expressed by the following equation:
HU=1000*(.sub.0)/.sub.0(11)
where .sub.0 is the linear attenuation coefficient of water. Attenuation is a function of incident X-ray photon energy. For example, for a 100 keV X-ray beam, .sub.0=0.17 cm.sup.1, which means that 1 cm of water attenuates 1e.sup.0.17=15.6% of the photons in the beam. Under the same conditions, if an attenuation coefficient in a bone is given as =0.3 cm.sup.1, this results in an HU value of 765. In general, the HU value for bone ranges from 700 for cancellous to 3000 for a cortical bone.
[0062] CT values may be stored in DICOM (digital imaging and communications in medicine) files. The CT values (v) are related to the HU values as follows:
HU=v*slope+intercept(12)
where the slope and intercept are parameters of the scanner and are stored in the data files. The slope and intercept values may differ based on various standards of different manufacturers.
[0063] The combination of equations (11) and (12) yields that the relative attenuation coefficient is a linear function of the CT values:
/.sub.0=max(*v+,0)(13)
where =slope/1000 and =intercept/1000+1. Since the lower end of the CT data value range is either zero or negative, additional clamping is needed to ensure that the computed attenuation coefficient is a non-negative number.
[0064] A characteristic property of X-ray images is that tissue structures with higher X-ray attenuation appear brighter in the image. To highlight or suppress tissue structures in the generated X-ray visualization, the HU values are rescaled in a process called windowing:
HU=clamp((HUHU.sub.0)/(HU.sub.1HU.sub.0),0,1)*(HU.sub.maxHU.sub.min)HU.sub.min(14)
where HU.sub.0 and HU.sub.1 specify the window range and HU.sub.min and HU.sub.max are the minimum and maximum HU values from the data. Substituting equation (9) into equation (11) yields that windowing can be performed directly on the CT values:
v=clamp((vv.sub.0)/(v.sub.1v.sub.0),0,1)*(v.sub.maxv.sub.min)+v.sub.min(15)
where v.sub.min and v.sub.max are the minimum and maximum CT values in the data.
[0065] Windowing rescales the CT value range, so tissues with CT values below v.sub.0 are suppressed and tissues with CT values above v.sub.1 are highlighted with a smooth transition for tissues with CT values between v.sub.0 and v.sub.1. Windowing allows the user to include only a selected CT value range in the visualization.
[0066] A user interface (see
v.sub.0=v.sub.min+(v.sub.maxv.sub.min)*k.sub.0(16)
v.sub.1=v.sub.min+(v.sub.maxv.sub.min)*k.sub.1(17)
where:
k.sub.1=(1B)*1.25(18)
k.sub.0=C*k.sub.1(19)
and 0B, C1 are the values of the brightness and contrast sliders.
[0067] To simplify the computations, equations (10) and (12) may be combined:
=max(clamp(v,v.sub.0,v.sub.1)*v.sub.scale+v.sub.offset,0)(20)
where:
v.sub.scale=(v.sub.maxv.sub.min)/(v.sub.1v.sub.0)**.sub.0(21)
v.sub.offset=v.sub.min**.sub.0+*.sub.0v.sub.0*v.sub.scale(22)
Equations (20), (21) and (22) are the equations that may be used to convert the CT values obtained in process 408 to attenuation values. The attenuation values are then accumulated as described with reference to equations (2) and (3).
[0068] The IGS (image guided system) files used may contain data values that are not identical to the original CT values from the scanner. During the DICOM to IGS conversion process, the original CT values are rescaled using the scale and offset parameters in the DICOM header resulting in standard HU values. Next, the HU values are modified using the windowing parameters in the DICOM header if the average HU value falls within the window. Otherwise, the data is shifted so the smallest HU value is mapped to zero in the output. This process may prevent recovery of the HU values, because it is not clear from the IGS header which conversion has been applied. To accommodate both conversions, both equations (21) and (22) are used with slope set to 1 and intercept set to 1000, resulting in = 1/1000 and =0. The max function in equation (20) is not necessary in such an implementation.
[0069] Referring to
[0070] Since implant components (that are part of a preoperative plan) are not part of the CT volume, the data may be added in a separate rendering pass. In one embodiment, for the sake of speed it is assumed that each component of the implant is made of the same material, a view-dependent thickness t may be computed for each implant component. The accumulated attenuation (A.sup.imp) is then computed from the thickness:
A.sup.imp=*t(23)
where is the linear attenuation coefficient of the implant material computed from the corresponding HU value as:
/.sub.0=HU/1000+1(24)
The color calculation of equation (5) may be modified to include the contribution from all implant components:
c=1exp(A.sup.++A.sup.A.sup.imp)(25)
Contributions from the implant components are not affected by the brightness and contrast sliders, according to an exemplary embodiment.
[0071] Referring also to
[0072] Referring to
[0073] The user may activate the x-ray view when the user toggles on an x-ray view toggle button in the icon toolbar or elsewhere on user interface 900. User interface 900 may include brightness and contrast sliders for adjusting the visual appearance of the image, as described in
[0074] One alternative approach is to use a rasterized representation for the bone and implant models, similarly to a segmentation mask. While the visual quality would not be affected, the extra texture lookups required to use the raster data could result in reduced rendering performance.
[0075] Another alternative approach to the x-ray image manipulation is implementing implant visualization and rotation correction by manipulating the data values in the CT volume during segmentation. Such an approach requires moving and calculating large amounts of data, and may be constrained by the resolution of the CT scan.
[0076] A third alternative approach may first include computing the accumulated data values along the viewing ray:
v.sub.sum=v(p.sub.k)(26)
Next, the accumulated values are normalized to the range of the input data values:
v.sub.norm=v.sub.sum/v.sub.maxsum*v.sub.max(27)
where v.sub.maxsum is the maximum of all v.sub.sum values computed for the X-ray image and v.sub.min is assumed to be zero. The normalization may be helpful to reduce the sensitivity of the computation to the selected step size.
Finally, the normalized accumulated values are mapped to grayscale color according to:
c=(clamp(v.sub.norm,v.sub.0,v.sub.1)v.sub.0)/(v.sub.1v.sub.0)(28)
where v.sub.0 and v.sub.1 are computed using equations (13) and (14). Since the brightness and contrast values are only used in equation (25) to control how the normalized accumulated values are mapped to color, the implementation does not need to perform the accumulation step of equation (23) when the user changes the brightness and contrast values in the application.
[0077] By creating a two-dimensional x-ray image from data, such as data acquired during a CT scan, and performing a method of x-ray visualization according to the present disclosure, a medical professional may continue to use the x-ray visualization with which he/she is familiar, with added capabilities for manipulating the image to assist in surgical planning and performance.
[0078] The construction and arrangement of the systems and methods as shown in the various exemplary embodiments are illustrative only. Although only a few embodiments have been described in detail in this disclosure, many modifications are possible (e.g., variations in sizes, dimensions, structures, shapes and proportions of the various elements, values of parameters, mounting arrangements, use of materials, colors, orientations, etc.). For example, the position of elements may be reversed or otherwise varied and the nature or number of discrete elements or positions may be altered or varied. Accordingly, all such modifications are intended to be included within the scope of the present disclosure. The order or sequence of any process or method steps may be varied or re-sequenced according to alternative embodiments. Other substitutions, modifications, changes, and omissions may be made in the design, operating conditions and arrangement of the exemplary embodiments without departing from the scope of the present disclosure.
[0079] The present disclosure contemplates methods, systems and program products on any machine-readable media for accomplishing various operations. The embodiments of the present disclosure may be implemented using existing computer processors, or by a special purpose computer processor for an appropriate system, incorporated for this or another purpose, or by a hardwired system. Embodiments within the scope of the present disclosure include program products comprising machine-readable media for carrying or having machine-executable instructions or data structures stored thereon. Such machine-readable media can be any available media that can be accessed by a general purpose or special purpose computer or other machine with a processor. By way of example, such machine-readable media can comprise RAM, ROM, EPROM, EEPROM, CD-ROM or other optical disk storage, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to carry or store desired program code in the form of machine-executable instructions or data structures and which can be accessed by a general purpose or special purpose computer or other machine with a processor. When information is transferred or provided over a network or another communications connection (either hardwired, wireless, or a combination of hardwired or wireless) to a machine, the machine properly views the connection as a machine-readable medium. Thus, any such connection is properly termed a machine-readable medium. Combinations of the above are also included within the scope of machine-readable media. Machine-executable instructions include, for example, instructions and data which cause a general purpose computer, special purpose computer, or special purpose processing machines to perform a certain function or group of functions.
[0080] Although the figures may show a specific order of method steps, the order of the steps may differ from what is depicted. Also two or more steps may be performed concurrently or with partial concurrence. Such variation will depend on the software and hardware systems chosen and on designer choice. All such variations are within the scope of the disclosure. Likewise, software implementations could be accomplished with standard programming techniques with rule based logic and other logic to accomplish the various connection steps, processing steps, comparison steps and decision steps.