Disclosure of Invention
According to the embodiment of the disclosure, a high-precision calibration scheme of a high-resolution camera of a high-resolution six-number satellite is provided, which can effectively eliminate and compensate the external system error of a satellite platform and the internal system error of the camera, and improve the scalability of remote sensing satellite images.
In a first aspect of the present disclosure, a high-precision calibration method for a high resolution camera of a high resolution six-numbered satellite is provided, including:
performing external calibration on a current image according to a preset rule to generate external calibration image data, converting the external calibration image data into a space fixed coordinate system, and generating converted image data, wherein the current image is an image acquired by a fourth probe array in the middle of a high resolution camera of the high resolution six-satellite;
and correcting the converted image data by utilizing pre-generated internal calibration data to generate a verified satellite image.
As to the above-mentioned aspects and any possible implementation manner, there is further provided an implementation manner, where the performing external scaling on the current image according to a preset rule to generate external scaled image data, and converting the external scaled image data into a spatial fixed coordinate system to generate converted image data includes:
acquiring quaternion of a star sensor of a high-resolution six-number satellite and a triaxial attitude angle of a gyroscope according to a first line image of a current image;
calculating a first rotation matrix from a body coordinate system to a space fixed coordinate system according to quaternions of the star sensor, calculating a second rotation matrix from the body coordinate system to the space fixed coordinate system according to three-axis attitude angles of the gyroscope, expressing the first rotation matrix and the second rotation matrix in a quaternion mode, and calculating an included angle between two quaternions;
updating gyroscope data according to the included angle, and calculating a third rotation matrix from the body coordinate system to the space fixed coordinate system through the updated gyroscope data;
and converting the first row image of the current image into a space fixed coordinate system according to the first rotation matrix, and converting the subsequent row image of the current image into the space fixed coordinate system according to the third rotation matrix to generate converted image data.
The above-described aspects and any possible implementations further provide an implementation in which the intra-scale data is generated by:
and selecting a flat terrain image with check points distributed with control points along the direction of the track, aligning corresponding points on the image corresponding to the image data converted from the body coordinate system to the space fixed coordinate system according to the third rotation matrix with the control points on the image with check points, and determining internal calibration data.
The above-described aspects and any possible implementation further provide an implementation, further including:
unifying time systems of the high-resolution camera, the star sensor and the gyro device according to the GPS time, and determining the conversion relation between the space fixed coordinate system and the earth fixed coordinate system according to the unified time.
The above-described aspect and any possible implementation further provide an implementation in which the transformation relationship between the spatially-fixed coordinate system and the earth-fixed coordinate system is:
wherein the content of the first and second substances,
represents a nutation matrix;
representing a rotation matrix of the earth;
representing a polar shift matrix;
representing the age matrix.
The above-described aspects and any possible implementation further provide an implementation, further including:
and converting the verified satellite image into a satellite image under the earth fixed coordinate system according to the conversion relation between the space fixed coordinate system and the earth fixed coordinate system.
In a second aspect of the present disclosure, there is provided a high-precision calibration apparatus for a high resolution camera of a high resolution six-wheeled satellite, including:
the external scaling module is used for performing external scaling on a current image according to a preset rule to generate external scaling image data, converting the external scaling image data into a space fixed coordinate system and generating converted image data, wherein the current image is an image acquired by a fourth probe element array in the middle of a high resolution camera of the high resolution six-satellite;
and the internal calibration module is used for correcting the converted image data by utilizing pre-generated internal calibration data to generate a verified satellite image.
In a third aspect of the present disclosure, an electronic device is provided, comprising a memory having stored thereon a computer program and a processor implementing the method as described above when executing the program.
In a fourth aspect of the present disclosure, a computer-readable storage medium is provided, on which a computer program is stored, which program, when being executed by a processor, is adapted to carry out the method as set forth above.
It should be understood that the statements herein reciting aspects are not intended to limit the critical or essential features of the embodiments of the present disclosure, nor are they intended to limit the scope of the present disclosure. Other features of the present disclosure will become apparent from the following description.
By the high-precision calibration method for the high resolution camera of the high resolution six-satellite, the external system error of the satellite platform and the internal system error of the camera can be effectively eliminated and compensated, and the scalability of the remote sensing satellite image is improved.
Detailed Description
To make the objects, technical solutions and advantages of the embodiments of the present disclosure more clear, the technical solutions of the embodiments of the present disclosure will be described clearly and completely with reference to the drawings in the embodiments of the present disclosure, and it is obvious that the described embodiments are some, but not all embodiments of the present disclosure. All other embodiments, which can be derived by a person skilled in the art from the embodiments disclosed herein without making any creative effort, shall fall within the protection scope of the present disclosure.
In addition, the term "and/or" herein is only one kind of association relationship describing an associated object, and means that there may be three kinds of relationships, for example, a and/or B, which may mean: a exists alone, A and B exist simultaneously, and B exists alone. In addition, the character "/" herein generally indicates that the former and latter related objects are in an "or" relationship.
Specifically, as shown in fig. 1, it is a flowchart of a high-precision calibration method for a high resolution camera of a high resolution six-numbered satellite according to a first embodiment of the present disclosure. As shown in fig. 1, the method of this embodiment may include the following steps:
s101: and performing external calibration on the current image according to a preset rule to generate external calibration image data, converting the external calibration image data into a space fixed coordinate system, and generating converted image data, wherein the current image is an image acquired by a fourth probe array in the middle of a high resolution camera of the high resolution six-satellite.
Specifically, a quaternion of a star sensor of the high-resolution six-number satellite and a three-axis attitude angle of a gyroscope are obtained according to a first line image of the current image.
In the embodiment, the measurement accuracy of the star sensor to the inertial space attitude is 0.003 degrees, the measurement error has a large influence on high-accuracy calibration, and although the gyro has constant drift, the error of the gyro is larger and larger in a long period, the accuracy of the gyro is higher in a short time. Although the stability of the star sensor is inferior to that of the gyro in the monoscopic data, the absolute positioning accuracy of the gyro is inferior to that of the star sensor due to the constant drift, and therefore, in the present embodiment, the star sensor data and the gyro data are used in combination.
For one frame (namely the current image) in the multi-frame images acquired by the satellite, the quaternion of the star sensor of the high-resolution six-number satellite and the three-axis attitude angle of the gyroscope can be determined through interpolation according to the DN value of the first line of the current image acquired by the high-resolution six-number satellite, and the quaternion of the star sensor and the three-axis attitude angle of the gyroscope are used for representing the positions of the star sensor and the gyroscope in a satellite body coordinate system (namely the body coordinate system).
And calculating a first rotation matrix from the body coordinate system to the space fixed coordinate system according to the quaternion of the star sensor, calculating a second rotation matrix from the body coordinate system to the space fixed coordinate system according to the three-axis attitude angle of the gyroscope, and converting the star sensor from the body coordinate system to the space fixed coordinate system through the first rotation matrix.
Specifically, the transformation between the satellite body coordinate system and the star sensor coordinate system may be established first, and then the transformation between the star sensor coordinate system and the space-fixed coordinate system may be established, so that the rotation matrix from the satellite body coordinate system to the space-fixed coordinate system, that is, the first rotation matrix, may be established through the star sensitivity period.
Although the attitude determination process can be realized by using the single star sensor mounting matrix and the star sensor quaternion, the accuracy of the transverse axis of the star sensor is lower than that of the optical axis direction, so that the transverse axis of the star sensor is not used in the embodiment. Three star sensors are carried on the high-grade six-numbered satellite, the optical axes of any two star sensors can be used for double-vector star sensor attitude determination to determine the three-axis attitude of the high-grade six-numbered satellite at the running time, and the main principle is as follows:
firstly, vector directions of the optical axis of the star sensor in a body coordinate system and a J2000 coordinate system (a space fixed coordinate system) are respectively calculated. The design documents of the high-resolution six-numbered satellite respectively give the included angles of 3 star sensor optical axes in a satellite body coordinate system, so that the vector directions of star sensor optical axis vectors in the body coordinate system can be easily obtained:
[cos(α),cos(β) ,cos(λ)]
wherein: alpha, beta and lambda are respectively star sensor optical axes in a satellite body coordinate system
The angle of the axes.
The vector direction of the star sensor optical axis under the J2000 coordinate system can be obtained through quaternion transmitted by the star sensor of the satellite:
wherein:
being the vector part of a quaternion, q
0Is the scalar part of a quaternion.
Set the coordinate system of the body
Coordinate system R
J2000The rotation matrix from the body coordinate system to the J2000 coordinate system is
(ii) a The optical axes of the two star sensors are on
And R
J2000The direction vectors under the coordinate system are respectively
And
. Then, a reference coordinate system is established by the two observation vectors
,
In that
The orthogonal coordinate base under the coordinate system is as follows:
to
The attitude rotation matrix of (a) is:
in the same way, the method for preparing the composite material,
in that
The orthogonal coordinate base under the coordinate system is as follows:
to
The attitude rotation matrix of (a) is:
finally, the rotation matrix (i.e., the first rotation matrix) between the body coordinate system and the J2000 coordinate system can be obtained as follows:
and calculating a second rotation matrix from the body coordinate system to the space fixed coordinate system according to the three-axis attitude angle of the gyroscope by establishing conversion between the satellite body coordinate system and the orbit coordinate system and conversion between the orbit coordinate system and the space fixed coordinate system.
Specifically, a satellite body coordinate system and an orbit coordinate system conversion matrix are determined by utilizing three-axis attitude data of a satellite gyroscope, wherein a rolling angle, a pitch angle and a yaw angle respectively represent rotation angles around an X axis, a Y axis and a Z axis and are angles relative to the orbit coordinate system.
The roll angle is rotated about the X-axis, and the rotation matrix can be expressed as:
the pitch angle is rotated about the Y-axis, and the rotation matrix can be expressed as:
if the yaw angle is rotated about the Z-axis, the rotation matrix can be expressed as:
therefore, the transformation matrix of the body coordinate system and the spatially-fixed coordinate system can be expressed as:
then, the conversion between the orbit coordinate system and the space fixed coordinate system is determined, the geographical coordinate data of the GPS downloaded in the high score six is under the WGS84 coordinate system (geocentric coordinate system), so that the geographical position information can be calculated by the method, the geographical coordinate data of the GPS is converted into the data under the space fixed coordinate system, and the speed of the satellite in the space fixed coordinate system can be calculated according to the position and time information because the satellite in the high score six can be considered as a smooth flight in the short time generally in the space.
Therefore, the transformation matrix of the orbital coordinate system and the spatially-fixed coordinate system can be expressed as:
wherein:
and expressing the first rotation matrix and the second rotation matrix in a quaternion mode, and calculating an included angle between the two quaternions. After the first rotation matrix and the second rotation matrix are obtained through calculation, the first rotation matrix and the second rotation matrix can be expressed in a quaternion mode, and then an included angle between the first rotation matrix and the second rotation matrix can be calculated through two quaternion modes, wherein the included angle is an included angle between the star sensor and the gyroscope. The quaternion in this embodiment may be (q 1, q2, q3, q 0) for example, where q1, q2, q3 respectively indicate the angles of the star sensor or gyroscope with the X-axis, Y-axis, and Z-axis, and q0 respectively indicates the distance of the star sensor or gyroscope from the origin.
And updating the gyro data according to the included angle, and calculating a third rotation matrix from the body coordinate system to the space fixed coordinate system according to the updated gyro data. The calculation method of the third rotation matrix is referred to the calculation method of the second rotation matrix, and only the used gyro data is different.
And after the included angle between the star sensor and the gyroscope is obtained through calculation, updating gyroscope data according to the included angle, and calculating a third rotation matrix from the body coordinate system to the space fixed coordinate system through the updated gyroscope data.
And converting the first row image of the current image into a space fixed coordinate system according to the first rotation matrix, and converting the subsequent row image of the current image into the space fixed coordinate system according to the third rotation matrix to generate converted image data.
The absolute positioning accuracy of the star sensor is high, but the updating frequency of the star sensor is lower than that of a gyroscope, so that the relative positioning accuracy is poor. The gyro has poor absolute positioning accuracy, but its relative attitude is stable, and the relative positioning accuracy is high in a short time. Therefore, the respective advantages of the star sensor and the gyroscope are fully utilized in the embodiment.
The satellite images are generated by scanning one by one, so that the calibration matrixes of the star sensor and the gyroscope are respectively calculated in the initial scanning line of each image, and the included angle between the star sensor and the calibration matrix of the gyroscope is calculated, namely after the first rotation matrix and the second rotation matrix are obtained by calculation, the first rotation matrix and the second rotation matrix can be expressed in a quaternion mode to calculate the included angle between the star sensor and the gyroscope, and the included angle is used for updating the subsequent gyroscope angle. The data with absolute positioning accuracy of the star sensor is used in the initial scanning line of the image, and the data with relative positioning accuracy of the data after the gyro data and the included angle are used in the subsequent scanning line of the image. After the scanning of one satellite image is finished, when the scanning of the next satellite image is started, the data of the star sensor is continuously used in the initial scanning line of the image, and the data of the gyroscope is used in the subsequent scanning line until the scanning of the whole satellite image is finished.
S102: and correcting the converted image data by utilizing pre-generated internal calibration data to generate a verified satellite image.
The inner calibration data is generated by:
and selecting a flat terrain image with check points distributed with control points along the direction of the track, aligning corresponding points on the image corresponding to the image data converted from the body coordinate system to the space fixed coordinate system according to the third rotation matrix with the control points on the image with check points, and determining internal calibration data.
After generating image data under a space fixed coordinate system, correcting the image data through the determined internal calibration data to generate a verified satellite image.
In some embodiments, when scanning a satellite image, the data of the star sensor may be used for a plurality of times according to a preset condition, and the data obtained by adding the included angle between the star sensor and the gyroscope to the data of the gyroscope is used to generate the satellite image after the data of the star sensor is used until the data of the star sensor is used next time. The preset condition can use the data of the star sensor according to the refreshing frequency of the star sensor or use the data of the star sensor according to the scanning line number of the satellite image. For example, using data from a primary star sensor after 5000 rows of satellite images have been generated.
In the high-precision calibration method for the high resolution camera of the high resolution six-numbered satellite, during the internal calibration process, only the *** image and the data which are easy to obtain, such as the global DEM with the resolution of 1KM, are disclosed, that is, the calibration image with the flat terrain on which the control points are distributed is selected along the track direction, and the data which are difficult to obtain (high-precision ground artificial target range data, satellite image data covering the ground artificial target range, data passing through a high-precision geometric calibration laboratory, high-precision DEM data and a large number of ground control points) do not need to be obtained.
Specifically, as shown in fig. 2, it is a block flow diagram of converting the space-fixed inertial coordinate system into the earth-fixed coordinate system according to the second embodiment of the disclosure. When the space-fixed inertial coordinate system is converted into a coordinate system fixed with the earth, the time systems of the high resolution camera, the star sensor and the gyro device need to be unified according to the GPS time. And taking the unified time as standard time, calculating a nutation matrix, an earth rotation matrix, a polar shift matrix and a time matrix, establishing conversion between a space fixed coordinate system and an earth fixed coordinate system, and determining the conversion relation between the space fixed coordinate system and the earth fixed coordinate system.
The calendar year polar shift value and the UT1-UTC value in fig. 2 can be obtained from the IERS website, and the corresponding calculation function can be obtained from the sofa source code provided by the IERS.
The transformation between the spatially-fixed inertial frame (J2000) and the earth-fixed frame (WGS 84) is as follows:
wherein:
represents a nutation matrix;
representing a rotation matrix of the earth;
representing a polar shift matrix;
representing the age matrix.
Through the matrix, GPS data acquired by a high-grade six-number satellite can be projected onto the earth and converted into data under the earth fixed coordinate system (WGS 84).
The high-precision calibration method for the high resolution camera of the high resolution six-satellite can effectively eliminate and compensate the external system error of the satellite platform and the internal system error of the camera, and improves the scalability of remote sensing satellite images.
The embodiment of the present disclosure may further include a process of performing absolute external calibration on the high resolution camera, where the absolute external calibration includes: and taking the CCD image of the fourth film in the middle of the high-resolution camera as an absolute external calibration image.
It is noted that while for simplicity of explanation, the foregoing method embodiments have been described as a series of acts or combination of acts, it will be appreciated by those skilled in the art that the present disclosure is not limited by the order of acts, as some steps may, in accordance with the present disclosure, occur in other orders and concurrently. Further, those skilled in the art should also appreciate that the embodiments described in the specification are exemplary embodiments and that acts and modules referred to are not necessarily required by the disclosure. It can be clearly understood by those skilled in the art that, for convenience and brevity of description, the specific working process of the described module may refer to the corresponding process in the foregoing method embodiment, and is not described herein again.
The above is a description of embodiments of the method, and the embodiments of the apparatus are further described below.
Fig. 3 is a schematic structural diagram of a high-precision calibration apparatus for a high-resolution camera of a high-resolution six-satellite according to a third embodiment of the present disclosure. The high accuracy calibration equipment of high branch's camera of high branch satellite number six of this embodiment includes:
the data acquisition module 301 is configured to acquire a quaternion of the star sensor of the high-resolution six-numbered satellite and a three-axis attitude angle of the gyroscope according to the first row image of the current image.
The image data generation module 302 is configured to calculate a first rotation matrix from the body coordinate system to the space-fixed coordinate system according to the quaternion of the star sensor, calculate a second rotation matrix from the body coordinate system to the space-fixed coordinate system according to the three-axis attitude angle of the gyroscope, express the first rotation matrix and the second rotation matrix in a quaternion manner, and calculate an included angle between two quaternions; updating gyroscope data according to the included angle, and calculating a third rotation matrix from the body coordinate system to the space fixed coordinate system through the updated gyroscope data; and converting the first row image of the current image into a space fixed coordinate system according to the first rotation matrix, and converting the subsequent row image of the current image into the space fixed coordinate system according to the third rotation matrix to generate converted image data.
The satellite image generating module 303 is configured to modify the image data by using pre-generated internal calibration data, and generate a verified satellite image.
It can be clearly understood by those skilled in the art that, for convenience and brevity of description, the specific working process of the described module may refer to the corresponding process in the foregoing method embodiment, and is not described herein again.
Fig. 4 shows a schematic structural diagram of a high-precision calibration device of a high-resolution camera of a high-resolution six-satellite according to an embodiment of the present disclosure. The terminal device shown in fig. 4 is only an example, and should not bring any limitation to the functions and the scope of use of the embodiments of the present application.
As shown in fig. 4, the computer system includes a Central Processing Unit (CPU) 401 that can perform various appropriate actions and processes based on a program stored in a Read Only Memory (ROM) 402 or a program loaded from a storage section 408 into a Random Access Memory (RAM) 403. In the RAM403, various programs and data necessary for system operation are also stored. The CPU 401, ROM 402, and RAM403 are connected to each other via a bus 404. An input/output (I/O) interface 405 is also connected to bus 404.
The following components are connected to the I/O interface 405: an input section 406 including a keyboard, a mouse, and the like; an output section 407 including a display device such as a Cathode Ray Tube (CRT), a Liquid Crystal Display (LCD), and the like, and a speaker; a storage section 408 including a hard disk and the like; and a communication section 409 including a network interface card such as a LAN card, a modem, or the like. The communication section 409 performs communication processing via a network such as the internet. Drivers 410 are also connected to the I/O interface 405 on an as needed basis. A removable medium 411 such as a magnetic disk, an optical disk, a magneto-optical disk, a semiconductor memory, or the like is mounted on the drive 410 on an as-needed basis, so that a computer program read out therefrom is mounted on the storage section 408 on an as-needed basis.
In particular, based on the embodiments of the present disclosure, the processes described above with reference to the flowcharts may be implemented as computer software programs. For example, embodiments of the present disclosure include a computer program product comprising a computer program embodied on a computer readable medium, the computer program comprising program code for performing the method illustrated in the flow chart. In such an embodiment, the computer program may be downloaded and installed from a network through the communication section 409, and/or installed from the removable medium 411. The computer program performs the above-described functions defined in the method of the present application when executed by a Central Processing Unit (CPU) 401.
The functions described herein above may be performed, at least in part, by one or more hardware logic components. For example, without limitation, exemplary types of hardware logic components that may be used include: a Field Programmable Gate Array (FPGA), an Application Specific Integrated Circuit (ASIC), an Application Specific Standard Product (ASSP), a system on a chip (SOC), a load programmable logic device (CPLD), and the like.
Program code for implementing the methods of the present disclosure may be written in any combination of one or more programming languages. These program codes may be provided to a processor or controller of a general purpose computer, special purpose computer, or other programmable data processing apparatus, such that the program codes, when executed by the processor or controller, cause the functions/operations specified in the flowchart and/or block diagram to be performed. The program code may execute entirely on the machine, partly on the machine, as a stand-alone software package partly on the machine and partly on a remote machine or entirely on the remote machine or server.
In the context of this disclosure, a machine-readable medium may be a tangible medium that can contain, or store a program for use by or in connection with an instruction execution system, apparatus, or device. The machine-readable medium may be a machine-readable signal medium or a machine-readable storage medium. A machine-readable medium may include, but is not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, or device, or any suitable combination of the foregoing. More specific examples of a machine-readable storage medium would include an electrical connection based on one or more wires, a portable computer diskette, a hard disk, a Random Access Memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or flash memory), an optical fiber, a portable compact disc read-only memory (CD-ROM), an optical storage device, a magnetic storage device, or any suitable combination of the foregoing.
Further, while operations are depicted in a particular order, this should be understood as requiring that such operations be performed in the particular order shown or in sequential order, or that all illustrated operations be performed, to achieve desirable results. Under certain circumstances, multitasking and parallel processing may be advantageous. Likewise, while several specific implementation details are included in the above discussion, these should not be construed as limitations on the scope of the disclosure. Certain features that are described in the context of separate embodiments can also be implemented in combination in a single implementation. Conversely, various features that are described in the context of a single implementation can also be implemented in multiple implementations separately or in any suitable subcombination.
Although the subject matter has been described in language specific to structural features and/or methodological acts, it is to be understood that the subject matter defined in the appended claims is not necessarily limited to the specific features or acts described above. Rather, the specific features and acts described above are disclosed as example forms of implementing the claims.
As shown in fig. 4, the computer system includes a Central Processing Unit (CPU) 401 that can perform various appropriate actions and processes based on a program stored in a Read Only Memory (ROM) 402 or a program loaded from a storage section 408 into a Random Access Memory (RAM) 403. In the RAM403, various programs and data necessary for system operation are also stored. The CPU 401, ROM 402, and RAM403 are connected to each other via a bus 404. An input/output (I/O) interface 405 is also connected to bus 404.
The following components are connected to the I/O interface 405: an input section 406 including a keyboard, a mouse, and the like; an output section 407 including a display device such as a Cathode Ray Tube (CRT), a Liquid Crystal Display (LCD), and the like, and a speaker; a storage section 408 including a hard disk and the like; and a communication section 409 including a network interface card such as a LAN card, a modem, or the like. The communication section 409 performs communication processing via a network such as the internet. Drivers 410 are also connected to the I/O interface 405 on an as needed basis. A removable medium 411 such as a magnetic disk, an optical disk, a magneto-optical disk, a semiconductor memory, or the like is mounted on the drive 410 on an as-needed basis, so that a computer program read out therefrom is mounted on the storage section 408 on an as-needed basis.
In particular, based on the embodiments of the present disclosure, the processes described above with reference to the flowcharts may be implemented as computer software programs. For example, embodiments of the present disclosure include a computer program product comprising a computer program embodied on a computer readable medium, the computer program comprising program code for performing the method illustrated in the flow chart. In such an embodiment, the computer program may be downloaded and installed from a network through the communication section 409, and/or installed from the removable medium 411. The computer program performs the above-described functions defined in the method of the present application when executed by a Central Processing Unit (CPU) 401.
The functions described herein above may be performed, at least in part, by one or more hardware logic components. For example, without limitation, exemplary types of hardware logic components that may be used include: a Field Programmable Gate Array (FPGA), an Application Specific Integrated Circuit (ASIC), an Application Specific Standard Product (ASSP), a system on a chip (SOC), a load programmable logic device (CPLD), and the like.
Program code for implementing the methods of the present disclosure may be written in any combination of one or more programming languages. These program codes may be provided to a processor or controller of a general purpose computer, special purpose computer, or other programmable data processing apparatus, such that the program codes, when executed by the processor or controller, cause the functions/operations specified in the flowchart and/or block diagram to be performed. The program code may execute entirely on the machine, partly on the machine, as a stand-alone software package partly on the machine and partly on a remote machine or entirely on the remote machine or server.
In the context of this disclosure, a machine-readable medium may be a tangible medium that can contain, or store a program for use by or in connection with an instruction execution system, apparatus, or device. The machine-readable medium may be a machine-readable signal medium or a machine-readable storage medium. A machine-readable medium may include, but is not limited to, an electronic, magnetic, optical, electromagnetic, infrared, or semiconductor system, apparatus, or device, or any suitable combination of the foregoing. More specific examples of a machine-readable storage medium would include an electrical connection based on one or more wires, a portable computer diskette, a hard disk, a Random Access Memory (RAM), a read-only memory (ROM), an erasable programmable read-only memory (EPROM or flash memory), an optical fiber, a portable compact disc read-only memory (CD-ROM), an optical storage device, a magnetic storage device, or any suitable combination of the foregoing.
Further, while operations are depicted in a particular order, this should be understood as requiring that such operations be performed in the particular order shown or in sequential order, or that all illustrated operations be performed, to achieve desirable results. Under certain circumstances, multitasking and parallel processing may be advantageous. Likewise, while several specific implementation details are included in the above discussion, these should not be construed as limitations on the scope of the disclosure. Certain features that are described in the context of separate embodiments can also be implemented in combination in a single implementation. Conversely, various features that are described in the context of a single implementation can also be implemented in multiple implementations separately or in any suitable subcombination.
Although the subject matter has been described in language specific to structural features and/or methodological acts, it is to be understood that the subject matter defined in the appended claims is not necessarily limited to the specific features or acts described above. Rather, the specific features and acts described above are disclosed as example forms of implementing the claims.