1. A method for rotating a source image by a first non-zero angle, comprising:
defining a template for the source image, the template representing a rotation of the source image about an axis of the source image by a second angle, where the second angle is the negative of the first non-zero angle that the source image is to be rotated;
determining overlap between the template and the source image;
separating the template into a plurality of strips covering at least the area of overlap between the template and the source image;
for each strip:
identifying an initial pixel in the source image within the strip and storing the image data of the initial pixel;
storing the image data of all remaining pixels within both the strip and the overlap in a database format in which the all remaining pixels is defined by a Y and X offset from the initial pixel, wherein said storing the image data of all remaining pixels within both the strip and the overlap further comprises:
determining the initial pixel with coordinates in the source image as Ymin and Xmin; establishing an origin pixel as having Y=Ymin and X=Xmin;
obtaining the image data sequentially for the origin pixel and each horizontally adjacent pixel from the origin pixel until the end of the overlap is reached,
storing the image data in a database format in which each horizontally adjacent pixel is defined by the offset from Ymin and an offset from Xmin;
incrementing the Ymin by one if there are any remaining pixel rows within both the strip and the overlap; and
repeating at least the establishing, obtaining, storing and incrementing until all of the pixels within both the strip and the overlap are stored;
constructing a desired rotated image from the source image,
for each pixel in the rotated destination image, identifying at least one pixel from the source image that corresponds to the source image as rotated per the first angle, the identifying comprising:
identifying the strip that corresponds to the target section of the source image; and
using the X and Y offset data to locate the image data in the database format.
2. The method of claim 1, wherein the initial pixel with each strip is the highest Y coordinate and leftmost X coordinate within each strip.
3. The method of claim 1, wherein the each of the strips at least partially overlaps with adjacent strips.
4. The method of claim 1, wherein the strips are substantially parallel.
5. The method of claim 1, wherein the strips are substantially rectangular.
6. The method of claim 1, wherein the image data for portions of the strips that do not overlap the source image are ignored.
7. The method of claim 1, wherein the image data for portions of the strips that do not overlap the source image are stored in memory as representative of dead zone data.
8. A method for rotating a source image by a first non-zero angle, comprising:
defining a template for the source image, the template representing a rotation of the source image about an axis of the source image by a second angle, where the second angle is the negative of the first non-zero angle that the source image is to be rotated;
determining overlap between the template and the source image;
separating the template into a plurality of strips covering at least the area of overlap between the template and the source image;
for each strip:
determining the initial pixel with coordinates in the source image of the corresponding strip as Ymin and Xmin, wherein the initial pixel with each strip is the highest Y coordinate and leftmost X coordinate within each strip;
establishing an origin pixel as having Y=Ymin and X=Xmin;
obtaining the image data sequentially for the origin pixel and each horizontally adjacent pixel from the origin pixel until the end of the overlap is reached;
storing the image data in a database format in which each horizontally adjacent pixel is defined by the offset from Y and an offset from X;
incrementing the Ymin by one if there are any remaining pixel rows within both the corresponding strip and the overlap; and
repeating at least the establishing, obtaining, storing and incrementing until all of the pixels within both the strip and the overlap are stored;
for each pixel in the rotated destination image, identifying at least one pixel from the source image that corresponds to the source image as rotated per the first angle, the identifying comprising:
identifying the strip that corresponds to the target section of the source image;
using the X and Y offset data to locate the image data in the database format.
9. The method of claim 8, wherein the each of the strips at least partially overlaps with adjacent strips.
10. The method of claim 8, wherein the strips are substantially parallel.
11. The method of claim 8, wherein strips are substantially rectangular.
12. The method of claim 8, wherein the image data for portions of the strips that do not overlap the source image are ignored.
13. The method of claim 8, wherein the image data for portions of the strips that do not overlap the source image are stored in memory as representative of dead zone data.
The claims below are in addition to those above.
All refrences to claim(s) which appear below refer to the numbering after this setence.
1. A method for generating a structured and partially regenerable identifier comprising:
receiving a request by a mobile service provider computer or a mobile device computer to generate at least one identifier, where the at least one identifier is regenerable and includes, at least in part, a plurality of fields;
determining via a hardware processor of the mobile service provider computer or mobile device computer, data for populating respective ones of the plurality of fields;
implementing via the processor a separate hash andor encryption of the respective ones of the plurality of fields;
implementing via the processor a generation of the at least one identifier based, at least in part, on the hashed andor encrypted respective ones of the plurality of fields;
receiving another request to regenerate the at least one identifier, the another request specifying one or more but less than all of the plurality of fields;
implementing via the processor an update to the data of the one or more but less than all of the plurality of fields,
where an update frequency is determined separately for two or more of the plurality of fields; and
implementing via the processor a regeneration of the at least one identifier based, at least in part, on the update to the data.
2. The method of claim 1, further comprising:
separately rehashing andor reencrypting the respective ones of the plurality of fields to regenerate the at least one identifier based, at least in part, on the update.
3. The method of claim 2, further comprising:
implementing, at least in part, the update to occur periodically, according to a schedule, on demand, randomly, or a combination thereof.
4. The method of claim 2, further comprising:
implementing, at least in part, the rehashing andor reencrypting of the one or more but less than all of the plurality of fields based, at least in part, on one or more new hashing andor encryption parameters; and
implementing an invalidation of one or more previously used hashing andor encryption parameters.
5. The method of claim 1, further comprising:
initiating a transmission of one or more keys associated with one or more of the hashed andor encrypted respective ones of the plurality of fields to at least one service, at least one application, or a combination thereof,
wherein the one or more keys facilitate access to the one or more of the hashed andor encrypted respective ones of the plurality of fields by the at least one service, the at least one application, or a combination thereof.
6. The method of claim 5, wherein the one or more keys are determined separately for the respective ones of the plurality of fields.
7. The method of claim 5, wherein the initiating the transmission is based, at least in part, on one or more instructions from a user associated with the at least one identifier.
8. The method of claim 1, wherein the request is received from a service, an application, or a combination thereof; and the method further comprising:
implementing, at least in part, an association of the at least one identifier with log data associated with the service, the application, or a combination thereof.
9. The method of claim 1, wherein the data for populating the respective ones of the plurality of fields includes, at least in part, a seed, a service name, a device identifier, a user identifier, an application identifier, or a combination thereof.
10. An apparatus for generating a structured and partially regenerable identifier comprising:
a mobile service provider computer or a mobile device computer further comprising:
at least one hardware processor; and
at least one memory including computer program code for one or more programs,
the at least one memory and the computer program code, with the at least one processor, configuring the apparatus to perform at least the following:
receive a request to generate at least one identifier, where the at least one identifier is regenerable and includes, at least in part, a plurality of fields;
determine data for populating respective ones of the plurality of fields;
separately hash andor encrypt the respective ones of the plurality of fields;
implement, at least in part, a generation of the at least one identifier based, at least in part, on the hashed andor encrypted respective ones of the plurality of fields;
receive another request to regenerate the at least one identifier, the another request specifying one or more but less than all of the plurality of fields;
implement, at least in part, an update to the data of the one or more but less than all of the plurality of fields,
where an update frequency is determined separately for two or more of the plurality of fields; and
implement, at least in part, a regeneration of the at least one identifier based, at least in part, on the update to the data.
11. The apparatus of claim 10, wherein the apparatus is further configured to:
separately rehash andor reencrypt the respective ones of the plurality of fields to regenerate the at least one identifier based, at least in part, on the update.
12. The apparatus of claim 11, wherein the apparatus is further configured to:
implement, at least in part, the update to occur periodically, according to a schedule, on demand, randomly, or a combination thereof.
13. The apparatus of claim 11, wherein the apparatus is further configured to:
implement, at least in part, the rehashing andor reencrypting of the one or more but less than all of the plurality of fields based, at least in part, on one or more new hashing andor encryption parameters; and
implement, at least in part, an invalidation of one or more previously used hashing andor encryption parameters.
14. The apparatus of claim 10, wherein the apparatus is further configured to:
implement, at least in part, a transmission of one or more keys associated with one or more of the hashed andor encrypted respective ones of the plurality of fields to at least one service, at least one application, or a combination thereof,
wherein the one or more keys facilitate access to the one or more of the hashed andor encrypted respective ones of the plurality of fields by the at least one service, the at least one application, or a combination thereof.
15. The apparatus of claim 14, wherein the apparatus is further configured to:
determine the one or more keys separately for the respective ones of the plurality of fields.
16. The apparatus of claim 14, wherein the apparatus is further configured to:
initiate the transmission based, at least in part, on one or more instructions from a user associated with the at least one identifier.
17. The apparatus of claim 10, wherein the apparatus is further configured to:
receive the request from a service, an application, or a combination thereof; and
implement, at least in part, an association of the at least one identifier with log data associated with the service, the application, or a combination thereof.
18. The apparatus of claim 10, wherein the data for populating the respective ones of the plurality of fields includes, at least in part, a seed, a service name, a device identifier, a user identifier, an application identifier, or a combination thereof.