Embodiments of the present invention relate to key scanning.
Keys come in a variety of shapes and sizes. It may be desirable to replicate a particular (master) key. Replication involves determining an appropriate key blank to cut in order to replicate the key, determining how to cut the key blank in order to replicate the key, and then cutting the selected key blank.
According to various, but not necessarily all, embodiments of the invention there is provided a key scanning apparatus, comprising: a platform arranged to receive a key; a motor arranged to adjust a position of the platform; a camera arranged to capture at least one image of the key located on the platform; at least one light source arranged to emit a beam of light towards the key located on the platform; and at least one processor configured to control the motor to adjust a position of the platform based on data associated with the key.
The data may comprise height data indicating a height of the key. The at least one processor may be configured to retrieve the height data from at least one memory and adjust the position of the platform based on the retrieved height data.
The at least one processor may be configured to adjust a position of the platform in a first dimension. The first dimension may be a vertical dimension.
The key scanning apparatus may further comprise a further motor. The at least one processor may be configured to control the further motor to adjust a position of the light source in a second dimension. The second dimension may be a horizontal dimension.
The light source may be arranged to emit the beam of light in a direction that has a component in the first dimension and a component in the second dimension.
At least a portion of the platform may be substantially transparent. The data associated with the key may comprise at least one image of the key captured by the camera.
The key scanning apparatus may further comprise an illumination source arranged to emit light towards the key located on the platform, in order to enable the camera to capture at least one image of the key. The illumination source may be a backlight for the platform. The backlight may be arranged to emit light through the substantially transparent portion of the platform.
The at least one image captured by the camera may comprise at least one image depicting an outline of the key in two dimensions. The key may have a length, a width and a depth. The length may be greater than the width. The width may be greater than the depth. The two dimensions may be the length and width dimensions. The at least one image captured by the camera may be at least one silhouette of the key.
The key scanning apparatus may further comprise a reflector for reflecting light emitted by the illumination source towards the camera.
Following adjustment of the platform, the at least one processor may be configured to identify, based on at least in part on at least one image of the key captured by the camera, a type of key blank for use in replicating the key. Identification of the type of key blank may be based at least in part on at least one image depicting an outline of the key.
The at least one processor may be configured to determine, based on at least in part on at least one image of the key captured by the camera, how to cut the identified key blank to replicate the key.
According to various, but not necessarily all, embodiments of the invention there is provided a key scanning apparatus, comprising: a support arranged to support a key; a camera arranged to capture at least one image of the key supported by the support; at least one light source arranged to emit a beam of light towards the key supported by the support; and at least one processor configured to cause, based on data associated with the key, adjustment of at least one of: a position of the support, the camera, or the light source.
The support may be a platform for receiving the key. The light source may be a laser.
The data may comprise height data indicating a height of the key. The at least one processor may be configured to retrieve the height data from at least one memory and to adjust the position of the platform based on the retrieved height data.
Causing adjustment of the position of the support may comprise causing adjustment of a position of the support in a vertical dimension. Causing adjustment of the camera may comprise causing adjustment of at least one of a position of the camera or an optical arrangement of the camera. Causing adjustment of a position of the light source may comprise causing adjustment of a position of the light source in a horizontal dimension.
According to various, but not necessarily all, embodiments of the invention there is provided a key scanning apparatus, comprising: a platform for receiving a key; means for adjusting a position of the platform; means for capturing at least one image of the key located on the platform; means for emitting a beam of light towards the key located on the platform; and means for causing adjustment of a position of the platform based on data associated with the key.
According to various, but not necessarily all, embodiments of the invention there is provided a key scanning apparatus, comprising: at least one light source arranged to direct a beam of light towards a blade of a key; a camera arranged to capture at least a portion of the beam of light reflected by the blade of the key; memory storing at least one computer program comprising computer program instructions; and at least one processor that, when executing the computer program instructions, is configured to: determine, at least in part from stored key replication data, a plurality of decoding positions at which the blade of the key is to be scanned in order to decode the key; adjust a position of the light source in order to cause the light source to direct the beam of light towards the blade of the key at each of the plurality of decoding positions; obtain at least one image, from the camera, of at least a portion of the beam of light reflected from the blade of the key at each of the plurality of decoding positions; determine one or more properties of a shape of the blade of the key at each of the plurality of decoding positions by analysing the images, in order to decode the key.
The blade of the key may have a length in a length dimension, a width in a width dimension and a depth in a depth dimension. The length may be greater than the width. The width may be greater than the depth. Each of the plurality of positions may be a position along the length dimension of the blade of the key.
The at least one image may depict a shape of the blade of the key in a plane defined by the width dimension and the depth dimension. The one or more properties may include a position, in the width dimension, of a cut into the blade of the key. The position, in the width dimension, of the cut into the blade of the key is specified from an edge of the blade of the key.
The one or more properties may include a depth of cut into the blade of the key in the depth dimension. The one or more properties may include a width of cut into the blade of the key in the width dimension.
The at least one processor, when executing the computer program instructions, may be configured to: capture at least one image depicting an outline of at least the blade of the key in the length and width dimensions; and determine, from the at least one image, a location of a tip of the blade of the key, wherein the plurality of decoding positions at which the blade of the key is to be scanned in order to replicate the key is determined, at least in part, from the determined location of the tip of the blade of the key.
The beam of light may be shaped to define a line across the blade of the key.
The at least one processor, when executing the computer program instructions, may be configured to: for each decoding position, adjust a position of the light source to direct the beam of light towards the blade of the key at one or more positions that are offset from the decoding position, and obtain at least one image, from the camera, of the blade of the key at the one or more offset positions based on at least a portion of the beam of light reflected by the blade of the key; and for each decoding position, determine a property of a shape of the blade of the key by analysing the images of the beam of light at the decoding position and the one or more offset positions, in order to decode the key.
The one or more positions that are offset from the decoding position may be offset from the decoding position in the length dimension.
According to various, but not necessarily all, embodiments of the invention there is provided a method, comprising: determining, at least in part from stored key replication data, a plurality of decoding positions at which the blade of a key is to be scanned in order to decode the key; adjusting a position of at least one light source in order to cause the light source to direct a beam of light towards the blade of the key at each of the plurality of decoding positions; obtain at least one image, from a camera, of at least a portion of the beam of light reflected from the blade of the key at each of the plurality of decoding positions; determine one or more properties of a shape of the blade of the key at each of the plurality of decoding positions by analysing the images, in order to decode the key.
According to various, but not necessarily all, embodiments of the invention there is provided at least one computer program comprising computer program instructions that, when executed by at least one processor, cause the method described above to be performed. At least one non-transitory computer readable medium storing the at least one computer program instructions may be provided.
According to various, but not necessarily all, embodiments of the invention there is provided an apparatus, comprising: memory storing at least one computer program comprising computer program instructions; and at least one processor that, when executing the computer program instructions, is configured to: cause a camera to capture at least one image depicting an outline of a key having a length in a length dimension and a width in a width dimension, the key comprising a head and a blade; identify the blade in the at least one image; process the at least one image to simulate reconstruction of at least one edge of the blade of the key along the length dimension and thereby form a reconstructed key; determine a travel distance, for the reconstructed key in the length dimension, into each of a plurality of two-dimensional areas by comparing a width of the reconstructed key with a width of a two-dimensional area at multiple positions along a length of the reconstructed key from a tip of the reconstructed blade, wherein the travel distance corresponds with a distance from the tip of the reconstructed blade to a position along the length dimension at which the width of the reconstructed key becomes greater than the width of the two-dimensional area, and wherein each two-dimensional area corresponds with a blade of a key blank;
determine, for each two-dimensional area, a width of the reconstructed key at a position along the length dimension that corresponds, at least approximately, with the travel distance; determine, for each two-dimensional area, whether the travel distance of the reconstructed key in the length dimension matches, at least approximately, the length of the two-dimensional area and determine, for each two-dimensional area, whether the determined width of the reconstructed key, at a position along the length of the reconstructed key based on the travel distance, at least approximately matches the width of the two-dimensional area; and identify one or more key blanks associated with one or more of the two-dimensional areas that have a length that matches, at least approximately, the travel distance and a width that matches, at least approximately, the width of the reconstructed key at a position along the length dimension that corresponds, at least approximately, with the travel distance.
The at least one processor may be configured, when executing the computer program instructions, to: control at least one light source to direct a beam of light to a position on the blade in the length dimension that corresponds, at least approximately, with the travel distance.
The at least one processor may be configured, when executing the computer program instructions, to: cause a camera to capture at least one image of a reflection, from the blade of the key, of at least a portion of the beam of light.
The at least one processor may be configured, when executing the computer program instructions, to: compare the at least one image of the reflection with a two-dimensional profile of each of the one or more identified key blanks.
The at least one processor may be configured, when executing the computer program instructions, to: control the light source to move into a plurality of different positions in order to direct the beam of light to a plurality of different positions on the blade in the length dimension, each of which corresponds, at least approximately, with the travel distance; and cause the camera to capture at least one image of a reflection, from the blade of the key, of at least a portion of the beam of light in respect of each of the plurality of different positions of the light source.
The plurality of images may be combined using image averaging to form a combined image. The combined image may be compared with a two-dimensional profile of each of the one or more identified key blanks.
According to various, but not necessarily all, embodiments of the invention there is provided a method, comprising: causing a camera to capture at least one image depicting an outline of a key having a length in a length dimension and a width in a width dimension, the key comprising a head and a blade; identify the blade in the at least one image; process the at least one image to simulate reconstruction of at least one edge of the blade of the key along the length dimension and thereby form a reconstructed key; determining a travel distance, for the reconstructed key in the length dimension, into each of a plurality of two-dimensional areas by comparing a width of the reconstructed key with a width of a two-dimensional area at multiple positions along a length of the reconstructed key from a tip of the reconstructed blade, wherein the travel distance corresponds with a distance from the tip of the reconstructed blade to a position along the length dimension at which the width of the reconstructed key becomes greater than the width of the two-dimensional area, and wherein each two-dimensional area corresponds with a blade of a key blank; determining, for each two-dimensional area, a width of the reconstructed key at a position along the length dimension that corresponds, at least approximately, with the travel distance; determining, for each two-dimensional area, whether the travel distance of the reconstructed key in the length dimension matches, at least approximately, the length of the two-dimensional area and determine, for each two-dimensional area, whether the determined width of the reconstructed key, at a position along the length of the reconstructed key based on the travel distance, at least approximately matches the width of the two-dimensional area; and identifying one or more key blanks associated with one or more of the two-dimensional areas that have a length that matches, at least approximately, the travel distance and a width that matches, at least approximately, the width of the reconstructed key at a position along the length dimension that corresponds, at least approximately, with the travel distance.
According to various, but not necessarily all, embodiments of the invention there is provided at least one computer program comprising computer program instructions that, when executed by at least one processor, cause the method described above to be performed. The at least one computer program may be stored on at least one non-transitory computer readable medium.
According to various, but not necessarily all, embodiments of the invention there is provided an apparatus, comprising: memory storing at least one computer program comprising computer program instructions; and at least one processor that, when executing the computer program instructions, is configured to: cause at least one image of a key to be captured, the image depicting a blade of the key that includes cuts in an edge of the blade, wherein the blade in the at least one image has a length in a length dimension and a width in a width dimension; determine, at least in part from stored key replication data, a plurality of decoding positions for the cuts in the blade; determine a plurality of examining positions, for each decoding position, at which to examine each of the cuts in the edge of the blade depicted in the image, wherein each examining position in a plurality of examining positions for a decoding position has a corresponding examining position in each of the other plurality of examining positions for the other decoding positions, each corresponding examining position being the same distance from its decoding position, wherein corresponding examining positions form a set of examining positions; for each set of examining positions, examine the cuts in the edge of the blade by determining, for each corresponding examining position in a set of examining positions, how long the edge of the blade remains substantially parallel to the length dimension; determine at least one value to store, for each set of examining positions, corresponding with how long the edge of the blade remains substantially parallel to the length dimension; determine, from the stored values, an optimum set of examining positions at which to determine, from the at least one image, a size of each cut in the blade of the key; and decode the key at least in part by determining a size of a cut in the blade of the key at each of the examining positions in the optimum set of examining positions.
The at least one processor, when executing the computer program instructions, may be configured to: determine, from the stored key replication data, valid sizes of cut; and compare a size of cut at each examining position in the optimum set of examining positions with the valid sizes of cuts.
The at least one processor, when executing the computer program instructions, may be configured to: decide whether to cut a replication of the key by code or by trace based, at least in part on the comparisons.
The at least one processor, when executing the computer program instructions, may be configured to: determine a trace by which to cut the key from the at least one image captured of the key.
Comparing a size of a size of cut at each examining position in the optimum set of examining positions with valid sizes of cuts may comprise determining a difference between a size of cut at an examining position in the optimum set of examining positions and a valid size of cut.
The at least one processor, when executing the computer program instructions, may be configured to: determine that a cut in the edge of the blade at an examining position in the set of optimum examining positions does not correspond with a valid size of cut, if the difference between the cut in the edge of the blade at the examining position in the set of optimum examining positions and the valid size of the cut does not fall within a particular range.
The at least one processor, when executing the computer program instructions, may be configured to: decide to cut a replication of the key by trace if the cut in the edge of the blade at the examining position in the set of optimum examining positions does not correspond with any of the expected sizes of the cuts at the decoding position.
According to various, but not necessarily all, embodiments of the invention there is provided a method, comprising: causing at least one image of a key to be captured, the image depicting a blade of the key that includes cuts in an edge of the blade, wherein the blade in the at least one image has a length in a length dimension and a width in a width dimension; determining, at least in part from stored key replication data, a plurality of decoding positions for the cuts in the blade; determining a plurality of examining positions, for each decoding position, at which to examine each of the cuts in the edge of the blade depicted in the image, wherein each examining position in a plurality of examining positions for a decoding position has a corresponding examining position in each of the other plurality of examining positions for the other decoding positions, each corresponding examining position being the same distance from its decoding position, wherein corresponding examining positions form a set of examining positions; for each set of examining positions, examining the cuts in the edge of the blade by determining, for each corresponding examining position in a set of examining positions, how long the edge of the blade remains substantially parallel to the length dimension; determining at least one value to store, for each set of examining positions, corresponding with how long the edge of the blade remains substantially parallel to the length dimension; determining, from the stored values, an optimum set of examining positions at which to determine, from the at least one image, a size of each cut in the blade of the key; and decoding the key at least in part by determining a size of a cut in the blade of the key at each of the examining positions in the optimum set of examining positions.
According to various, but not necessarily all, embodiments of the invention there is provided at least one computer program comprising computer program instructions that, when executed by at least one processor, cause the method described above to be performed. The at least one computer program may be stored on at least one non-transitory computer readable medium.
For a better understanding of various examples of embodiments of the present invention reference will now be made by way of example only to the accompanying drawings in which:
The key scanning apparatus 100 comprises a housing 120. In the illustrated example, the housing 120 includes a hinged door 22 that may be opened to reveal a support for supporting a key to be scanned (not shown in
The illustrated elements 112, 14, 30, 32, 34, 36, 38, 40 and 42 are operationally coupled. Any number of intervening elements can exist between them (including no intervening elements).
The display 30 is an electronic display which may comprise an array of pixels formed in rows and columns. The display 30 can be any type of electronic display, including a liquid crystal display (LCD) and an organic light emitting diode (OLED) display. The processor 112 is configured to provide outputs to the display 30 to control content that is displayed by the display 30.
The user input circuitry 32 is configured to receive inputs from a user of the key scanning apparatus 100. The user may be a person that wishes to have an existing (master) key scanned for future replication of that existing key. The user input circuitry 32 might, for example, comprise one or more keys and/or one or more buttons. In some embodiments, some or all of the user input circuitry 32 might be integrated with the display 30 in a touch sensitive display.
The camera 34 is a digital camera that includes an image sensor, such as a charge coupled device (CCD) or a complementary metal oxide semiconductor (CMOS) sensor. The camera 34 is under the control of the processor 112 and is configured to provide images to the processor 112. Each image may be in the form of two-dimensional images formed of an array of pixels arranged in columns and rows. The camera 34 is arranged to capture at least one image of a key supported by a support that is accessible via the hinged door 22.
The illumination source 36 is controlled by the processor 112. The illumination source 36 is configured to provide illumination that enables the camera 34 to capture at least one image of a key supported by the support. The image(s) might depict an outline of the key in two dimensions (e.g. length and width dimensions defined by the x and y axes respectively in the figures). The illumination provided by the illumination source 36 may include incoherent light. The illumination might be substantially white in colour. Where the support is a platform that has at least a portion that is substantially transparent, the illumination source 36 may be a backlight for the platform. This is described in further detail below.
The light source 38 is controlled by the processor 112. The light source 38 is different from the illumination source 36. It is arranged to emit a beam of light towards the key supported by the support. The beam of light may comprise or consist of coherent light. In this regard, the light source 38 might be a laser. The beam of light provided by the light source 38 may enable the camera 34 to capture at least one image of a key supported by the support. For instance, the beam of light might be reflected, at least in part, towards the camera 34 by the key. The image(s) might depict a two-dimensional profile of the key (e.g. in width and depth dimensions defined by the y and z axes respectively in the figures).
The first and second motors 40, 42 are controlled by the processor 112. The processor 112 may control the first motor 40 to adjust a position of the support/platform supporting a key based on data associated with the key. The second motor 42 is arranged to adjust a position of the light source 38. This is described in further detail below.
The processor 112 and the memory 114 may be considered collectively to be control circuitry 11. The processor 112 is configured to read from and write to the memory 114. The processor 112 may also comprise an output interface via which data and/or commands are output by the processor 112 and an input interface via which data and/or commands are input to the processor 112.
The memory is a non-transitory computer-readable storage medium. The memory 114 stores a computer program 116 comprising computer program instructions (computer program code) that controls the operation of the key scanning apparatus 100 when loaded into the processor 112. The computer program instructions, of the computer program 116, provide the logic and routines that enables the key scanning apparatus 100 to perform the methods illustrated in
The memory 114 may store data 118. The data 118 may include, for example, key height data 181, key blank outline data 182, key blank blade data 183 and/or key replication data 184. This is described in further detail below.
The height data 181 may indicate a height of a key. The processor 112 may, for example, be configured to retrieve the height data 181 from the memory 114 and adjust the position of the support/platform based on the retrieved height data. This is described in further detail below.
Although the memory 114 is illustrated as a single component/circuitry it may be implemented as one or more separate components/circuitry some or all of which may be integrated/removable and/or may provide permanent/semi-permanent/dynamic/cached storage.
Although the processor 112 is illustrated as a single component/circuitry it may be implemented as one or more separate components/circuitry some or all of which may be integrated/removable. The processor 112 may be a single core or multi-core processor.
The processor 112, the memory 114, the display 30, the user input circuitry 32, the camera 34, the illumination source 36, the light source 38, the first motor 40 and the second motor 42 may be housed by the housing 120 illustrated in
Cartesian co-ordinate axes 70 having x, y and z axes are illustrated in
In the illustrated example, the light source 38 is a laser that is supported by a movable support 45. The movable support 45 is arranged to move along a track 44 that is located on a platform 41. The track 44 extends in a dimension defined by the x-axis in the figures. The movable support 45 is coupled to the second motor 42 by a shaft 43. The second motor 42 is also supported by the platform 41. The second motor 42 is configured to move the shaft 43 in order to cause the support 45, and therefore the laser 38, to move along the track 44. The processor 112 may therefore control the second motor 42 to adjust the position of the laser 38 in the dimension defined by the x-axis in
The dotted line marked with the reference numeral 39 in
A support/platform 50 for receiving and supporting a key to be scanned is illustrated in
At least a portion of the platform 50 is substantially transparent. In the illustrated example, a majority of the platform 50 is substantially transparent. In use, a user places a key to be scanned on the substantially transparent portion. A visual indicator 170 may be present on or near the platform 50 to indicate to the user how to position the key on the platform 50 for optimum results. In this example, the visual indicator 170 is an arrow located on the support 45. The visual indicator 170 indicates where the user should position the tip of the blade of the key to be scanned.
The illumination source 36 is configured to emit light towards a key located on the platform 50, in order to enable the camera 34 to capture at least one image of the key. As explained above, the illumination source 36 may be a backlight for the platform 50 that is arranged to emit light through the substantially transparent portion of the platform 50. In the example illustrated in
After being reflected, the light travels in a −x direction, as shown by the dotted line marked with the reference numeral 59 in
At least one image of a key located on the platform 50 may be captured by the camera 34 using the light emitted by the illumination source 36 of the light source 38. The image captured by the camera 34 depicts at least a portion of an outline of the key in two dimensions. Consider a key with a length, a width and a depth, where the length is aligned with the x-axis (the length dimension), the width is aligned with the y-axis (the width dimension) and the depth is aligned with the z-axis (the depth dimension) in
The platform 41 comprises an aperture 149. A beam of light emitted by the light source 38 may pass through the aperture 149, towards the platform 50. In the absence of a key on the platform 50, the beam of light from the laser 38 passes through the substantially transparent portion of the platform 50. If a key is present on the platform 50 and the beam of light is appropriately directed towards a blade of the key, the beam of light is at least partially reflected by the blade of the key towards the reflector 60 (such that the reflected light travels in in a +z direction, as shown by the dotted line marked with the reference numeral 49). The light is then reflected by the reflector 60 towards the camera 34, travelling in a −x direction, as shown by the dotted line marked with the reference numeral 59 in
When a beam of light is emitted by the light source 38, the image captured by the camera 34 may depict a portion of the outline of the key in the width and depth dimensions (defined by the y and z axes in the figures), where the portion corresponds the portion of the upper surface of the key on the platform 50 that is exposed to the beam of light emitted by the light source 38. The beam of light might be shaped to define a line that extends across the key in the width dimension.
The first motor 40 is configured to move the platform 50 in the dimension defined by the z-axis in
The key scanning apparatus 100 is for scanning many different types of key. In some implementations, it may be for scanning any type of key. In order to scan a (master) key so that it can be replicated, the type of key must be identified. This is so that an appropriate key blank can be identified for cutting. The manner in which the key has been cut from the blank must also be determined in order to replicate the key.
Many different types of key (and therefore many different types of key blank) exist. Some examples of key blanks are illustrated in
It will be appreciated from the above description that keys and key blanks come in many different shapes and sizes. Indeed, there are a number of other different key types beyond those that are illustrated in
It was explained above that the illumination source 36 is configured to provide illumination that enables the camera 34 to capture at least one image of a key supported by the platform 50, such as a silhouette of the key. The inventors have realised that the focal/optical distance from the camera 34 to the key may vary depending on the height of the key that is situated on the platform 50. Key heights may vary significantly from one key type to another. The processor 112 is configured to process images captured by the camera 34 based on a predetermined optical distance from the camera 34 to the key. The predetermined optical distance is a fixed optical distance from the camera 34 to the key. If the optical distance from the camera 34 to the key is different from the predetermined optical distance, the key will appear larger (if the optical distance is smaller than the predetermined optical distance) or smaller (if the optical distance is greater than the predetermined optical distance). In such circumstances the image processing performed by the processor 112 will be inaccurate, potentially leading to incorrect key scanning.
It can be seen by comparing
The “height” of a key may be considered to be the height of the uppermost surface of the key 2100, 2400/2500 in the dimension defined by the z-axis in
The height of the key on the platform 50 will depend on the orientation of the key when it is placed on the platform 50. The height of the key usually corresponds with the extent of the key in a dimension extending into and out of the page in respect of
The predetermined optical distance may correspond to a particular height above the platform 50. If the height of the key does not correspond to the particular height, the processing of an image captured of the key might be inaccurate.
At block 1001 in
The key height data 181 comprises data indicating the height of various keys. As explained above, the height may correspond to the uppermost surface of a key, or the height of a blade of a key (which might be the same in some instances). The data may explicitly state the height of the keys, or be data that enables height to be determined.
The processor 112 may use the information provided by the user to determine a height of the key to be scanned. Answers to the questions presented to the user might be associated with a particular key or keys in the key height data 181, and thereby enable the processor 112 to determine the height of the key to be replicated, from the key height data 181, based on the answers provided by the user. For instance, the key height data 181 stored in the memory 114 may be a look-up table that comprises data explicitly indicating the height of various different keys.
In block 1002 of
If the processor 112 decides to adjust a position of the platform 112 (for example, based on the answers to the questions provided by the user, e.g. the key type), the processor 112 retrieves the relevant (portion of the) height data 181, indicating the height of the key to be scanned, and adjusts a position of the platform 50 based on the retrieved height data 181. In this example, the processor 112 adjusts the position of the platform 50 in the dimension defined by the z-axis in the figures. The dimension defined by the z-axis is a vertical dimension in the figures.
In circumstances in which the processor 112 decides to move the platform 50, prior to moving the platform 50, the optical distance from the camera 34 to the key is a first optical distance which does not correspond with the predetermined optical distance at which accurate image processing may be performed by the processor 112. Movement of the platform 50 changes the optical distance from the camera 34 to the key on the platform 50 from the first optical distance to a second optical distance. The second optical distance corresponds with the predetermined optical distance at which accurate image processing can be performed by the processor 112. That is, the calibration of the apparatus 100 is such that the processor 112 is able to determine one or more properties of the key from the images of the key. The one or more properties may be geometrical properties, such as one or more distances.
In addition to, or as an alternative to, using the answers provided by the user in block 1001 of
In respect of each key blank, the key blank outline data 182 might define a series of points in two dimensions (e.g. x and y dimensions) that define the outline of a key blank. The data might define the outline of the head 212, 222, 232, 242, 252 and the blade 214, 224, 236, 244, 254 of a key blank 210, 220, 230, 240, 250. The processor 112 compares one or more images of the key on the platform 50 (captured when the platform 50 is in its default position) with the key blank outline data 182 to determine a match. If a match is found, the processor 112 determines the height data 181 associated with the match and adjusts the position of the platform 50 based on the height data 181.
Each of the key blank outlines for comparison with images captured when the platform 50 is at its default position might not correspond with a single real-world key blank. In these embodiments, the key blank outlines are used as a guide to determine whether to adjust the position of the platform 50 and the extent to which to adjust it (as indicated in the height data 181), so that more precise image processing can be performed based on images captured after the position of the platform 50 has been adjusted.
In this regard, it is possible to assume from analysing an image of an outline of a key (e.g. showing that the key has a particular shape/type of head) that, based on that outline, the blade of the key is likely to be positioned at a particular height.
In some embodiments, the data that is used by the processor 112 to adjust a position of the platform 50 might not be height data 181. For example, the processor 112 might instead control the camera 34 to capture one or more images of the key on the platform 50, prior to moving the platform 50, using light emitted by the light source 38 and/or the illumination source 36. The processor 112 might then control movement of the platform 50 in discrete steps (using the first motor 40) and capture one or more images after each movement step. The processor 112 may determine after each step whether the key in the image has moved into focus or further out of focus relative to a previously captured image when the platform 50 was in the previous position. The platform 50 might start at an initial position at which the optical distance from the camera 34 to a key on the platform 50 is as small as it is expected to be (i.e. an optical distance corresponding to a key with the lowest expected height). The processor 112 might move the platform 50 in steps in one direction (e.g. downwards), capturing at least one image at each step. The processor 112 might continue moving the platform 50 away from the camera 34 until, when comparing an image with a previous image, it determines that the key is moving out of focus. When this occurs, the processor 112 may control the first motor 40 to revert the platform 50 back to the previous position at which the image of the key was in optimum focus.
Generally, however, is it preferred to use height data 181 to determine how to adjust the position of the platform 50 because it enables the platform 50 to be positioned in its desired position more quickly than the imaging method described above, and requires less processing power.
In some alternative embodiments of the invention, a position of the platform 50 might not be adjusted. It might instead remain stationary. An alternative to moving the platform 50 might instead be to adjust the camera 34. In this regard, an optical arrangement of the camera 34 might be adjusted or a position of the camera 34 might be adjusted (e.g. by changing the position of the first motor 40 to move the camera 34 instead) or both.
When the platform 50 has been appropriately positioned in block 1002, the method in
In embodiments in which the processor 112 controls the camera 34 to capture images in order to determine whether to move the platform 50, if the platform 50 is not adjusted in block 1002, it is unnecessary to capture further images in block 1003 in
The key blank outline data 182 comprises data defining the outlines of a plurality of key blanks, for comparison with images of keys captured at the predetermined optical distance. In respect of each key blank, the data might define a series of points in two dimensions (e.g. x and y dimensions) that define the outline of a key blank. The data might define the outline of the head 212, 222, 232, 242, 252 and the blade 214, 224, 236, 244, 254 of a key blank 210, 220, 230, 240, 250 (and, where appropriate such as in the case of a lever key blank 230, the shaft 234).
In block 1004 in
It might be difficult to match the key in the image(s) with a corresponding key blank in the key blank outline data 182 if the outline of the (whole) key is not very distinctive. For example, the inventors have found that general outline matching typically works well for lever keys (e.g. cut from the lever key blank 230 illustrated in
The inventors have found that a more precise analysis of the blade of the key in the image enable an appropriate type of key blank to be identified more accurately and consistently for many key types. If a match is found in block 1004, the method proceeds to block 1005 in
In some examples, at block 1001 the user might be asked (e.g. by the processor 112 controlling the display 30) to provide an indication as to the type of key to be scanned. If, for example, an indication is provided by the user (e.g. via the user input circuitry 32) indicating a type of key that for which is known not to be easily identifiable by general outline matching, the processor 112 might not attempt to carry out any general outline matching in block 1004.
In block 1007 in
The blade 214 has a tip 217. The tip 217 of the key 2100 is located at the opposite end of the blade 214 from the head 212 in the length dimension. It is the extremity of the blade 214.
In the illustrated example, the head 212 of the key blank 2100 is substantially flat, but the blade 214 is not (as shown in
A lengthwise edge 216 of the blade 214 has been cut to provide a functional key. In this example, given that the key 2100 is single-sided, the opposite lengthwise edge 215 of the blade 214 has not been cut. In other examples in which the key is double-sided, the opposite edge 215 is also cut.
The key 2100 comprises a shoulder/stop 211. The stop 211 defines the end of the blade 214. When the blade 214 of the key 2100 is placed into a compatible keyhole of a lock tip 217 first, the stop 211 prevents the remainder of the key 2100 from entering the keyhole.
In block 1007A in
The processor 112 may seek to determine the location of the stop 211 in order to determine when to cease carrying out the reconstruction process. In this regard, the processor 112 may determine the angle of edge 216 of the blade 214 (e.g. at each of the series of the positions mentioned above, or a subset of those positions). If an angle at a particular position is determined to be within a particular angular range, the processor 112 might determine that that position corresponds with the position of the stop 211. For example, if the angle is determined to be substantially 90° as measured from the length dimension (defined by the x-axis in
By carrying out the above process, the processor 112 is able to determine a length L of the reconstructed blade and a maximum width W of the reconstructed blade, as shown in
The length L of the reconstructed blade corresponds with a maximum “travel distance” of the blade 214 into a keyhole of a lock. That is, if the lock is compatible with the key 2100 the blade 214 will travel fully into the keyhole, such that the travel distance corresponds with the length L of the reconstructed blade.
Next, the processor 112 seeks to identify one or more key blanks that might match the key blank from which the key 2100 was cut (in this case, the key blank 210 illustrated in
The key blank blade data 183 stored in the memory 114 comprises data defining the blades of key blanks. In respect of each key blank, a length value and a width value of the blade is stored. In effect, the length value and the width value define a two-dimensional area that represents the area of the blade of the key blade in a plane defined by the length dimension and the width dimension.
In block 1007C, the processor 112 determines a travel distance, for the reconstructed key in the length dimension, into each of the plurality of two-dimensional areas that define a blade of a key blank. This is done by comparing the width of the reconstructed key with the width of a two-dimensional area at multiple positions along a length L of the reconstructed key from the tip 217 of the reconstructed blade.
The travel distance corresponds with a distance from the tip 217 of the reconstructed blade to a position along the length dimension at which the width of the reconstructed key becomes greater than the width of the two-dimensional area.
After the travel distance has been determined, in block 1007D in
In block 1007D in
In carrying out this process, the processor 112 is simulating the entry of the reconstructed blade of the key into a virtual two-dimensional aperture that corresponds with the dimensions of a blade of a key blank.
If the travel distance of the reconstructed key matches the length of the two-dimensional area and the determined width of the reconstructed key (at a position along the length of the reconstructed key defined by the travel distance) matches the width of the two-dimensional area, the key blank defined by the two-dimensional area represents a good match and might be the key blank from which the key was cut. In block 1007D in
The processor 112 repeats the process described above in relation to blocks 1007C to 1007E in order to identify possible key blanks for the key 2100.
If only a single key blank is identified as part of the above process, the processor 112 may determine at this point that that key blank is the correct key blank. Further filtering might not be necessary. In some embodiments, however, further processing may be performed to verify that the identified key blank is the correct key blank. Further processing may also be performed if multiple possible matching key blanks are identified. In order to perform the further processing, the method moves to block 1008 in
In block 1008 of
The processor 112 controls the light source 38 to direct the beam of light to the portion of the blade 214 that is adjacent to the stop 211 (immediately above the stop 211 in
The processor 112 may cause the camera 34 to capture at least one image of the reflection, from the blade 214 of the key 2100, of at least a portion of the beam of light. The beam of light emitted by the light source 38 might be shaped to define a line that extends across the blade 214 of the key 2100 in the width dimension.
The key blank blade data 183 may include a two-dimensional profile of a plurality of key blanks, including the two-dimensional profile of each of the key blanks that were identified in block 1007F in
In block 1009 in
The key blank blade data 183 may be associated with the key replication data 184. The key replication data 184 stored in the memory 114 comprises data, for a plurality of key blanks, defining a plurality of decoding positions/spacings (in the length dimension of the blade) for each key blank at which a cut in the key blank, having one or more particular properties, would correspond to a particular alphanumeric character in a code for a key.
Thus, if the processor 112 determines a matching key blank in the key blank blade data 183 in block 1009 of
In some cases, the processor 112 might control the display 30 to instruct the user to turn the key over so that the other face of the blade 214 (defined by the length and width dimensions) can be imaged using the light source 38 and the camera 34.
In some embodiments, the processor 112 is configured to control the light source 38 to move into a plurality of different positions in order to direct the beam of light to a plurality of different positions on the blade 214 in the length dimension, each of which corresponds, at least approximately, with the travel distance. At least some of those different portions are smaller than the travel distance and are offset from the travel distance in the length dimension (e.g. by a small distance). The processor 112 may cause the camera 34 to capture at least one image of a reflection, from the blade 214 of the key 2100, of at least a portion of the beam of light in respect of each of the plurality of different positions of the light source 38.
The plurality of images may be combined, by the processor 112, using image averaging to form a combined image. The combined image may be compared with a two-dimensional profile of each of the one or more identified key blanks.
If one or more outline matches is found in block 1004 in
The key blanks identified in the key blank outline data 182 may be associated with the key replication data 184.
If the processor 112 determines a matching key blank in the key blank outline data 182 in block 1004 or 1006 of
The positions/spacings A-F may be defined from the tip 247 of the key 2400. The tip 247 of the key 2400 is located at the opposite end of the blade 244 from the head 242 in the length dimension. It is the extremity of the blade 244. Alternatively, the positions/spacings may be defined from a shoulder/stop near the head 242 of the key 2400. The shoulder/stop of the key 2400 is a portion of the key 2400 that limits the extent to which the blade 244 may enter a lock before it can go no further. The shoulder/stop abuts a portion of the lock to prevent the blade 244 from entering further. In some instances, the positions/spacings may be defined from a “virtual shoulder/position” near the head 242. The position of the (virtual) shoulder/stop is a known distance in the length dimension from the tip 247 of the blade 244.
The location and/or size of the dimple cut at each of the locations A-F is set by a particular code. Each alphanumeric character in the code may correspond to a dimple cut of a particular size at a particular spacing along the length dimension of the blade 244, and/or may correspond to the position of the dimple cut in the width dimension at a spacing along the length dimension of the blade 244. The plurality of predefined positions/spacings A-F can be considered to be “decoding positions” in that the code for the key 2500 can be determined by determining the size of the dimple cut (e.g. in the depth dimension and/or the width dimension) and/or the position of the dimple cut in the width dimension at each spacing.
In other examples, the key might not be a dimple key 2400 and therefore the cuts might not be dimple cuts. The cuts might be discrete cuts into the face of the blade 246, as is the case with the dimple key 2400, or there might instead be a single continuous cut.
In other examples, the key might not be a dimple key 2400 or a high security key 2500 as illustrated in
If the user is asked such questions, answers to the questions presented to the user might be associated with a particular key or keys in the key replication data 184, and thereby enable the processor 112 to determine the height of the key to be replicated, from the key replication data 184, based on the answers provided by the user. Additionally or alternatively, the processor 112 might carry out the method illustrated in
As explained above, the key replication data 184 stored in the memory 114 comprises data, for a plurality of keys, defining a plurality of decoding positions/spacings (in the length dimension of the blade) for each key at which a cut having one or more particular properties corresponds to a particular alphanumeric character in a code for the key. The processor 112 may use the information provided by the user to determine the relevant decoding positions/spacings for the key to be scanned.
For instance, the key replication data 184 stored in the memory 114 may be a look-up table that comprises data explicitly indicating the decoding positions/spacings of various different keys. The decoding positions/spacings in the key replication data 184 are defined in reference frame of the key itself. Those skilled in the art will appreciate that while a visual marker 170 may be provided indicating where to position the tip 247, 257 of the key 2400, 2500 on the support/platform 50, a user may in practice fail to position the key 2400, 2500 correctly.
The processor 112 controls the illumination source 36 to provide illumination. As explained above, the illumination provided by the illumination source 36 enables the camera 34 to capture at least one image of the key on the platform 50 that depicts an outline of the key 2400, 2500 in two dimensions. The two dimensions are length and width dimensions defined by the x and y axes respectively in the figures. The key has a length in the length dimension, a width in the width dimension and a depth in a depth dimension defined by the z-axis in the figures. The length may be greater than the width, and the width may be greater than the depth.
The image(s) may be that/those captured in block 1003 in
The processor 112 processes the images to determine the location of the tip 247, 257 of the key 2400, 2500. The processor 112 may then, based on both the determination of the location of the tip 247, 257 of the key 2400, 2500 and the predefined decoding positions/spacings in the key replication data 184, determine the actual decoding positions that the beam of light from the light source 38 should be directed towards in order to scan (and thereby decode) the key, in the reference frame of the key scanning apparatus 100. If the decoding positions are defined in the key replication data 184 in relation to the stop 211 or a virtual stop, the key replication data 194 might also indicate the distance from the tip 217 to the stop/virtual stop 211, thereby enabling the decoding positions to be determined.
At block 1802 in
The beam of light emitted by the light source 38 might be shaped to define a line across the blade 244, 254 of the key 2400, 2500, in the width dimension.
By way of example,
At block 1803 in
For instance, in the example illustrated in
In other examples, other properties may be determined instead of or in addition to a position, in the width dimension, of a cut into the face 256 of the blade 254. The property or properties that is determined will depend upon the property or properties that must be determined in order to decode the key (which will, in turn, depend on the type of key being decoded). For instance, in other examples, additionally or alternatively, a depth of cut 259b into the blade 254 of the key 2500 in the depth dimension and/or a width of cut 259c into the blade 254 of the key 2500 in the depth dimension might be determined. These correspond with the portions of the distances 1259b and 1259c marked in
In order to improve the quality of the decoding, for each decoding position, the processor 112 might cause the light source 38 to direct the beam of light to positions that are positioned adjacent to each decoding position. These positions may be offset from each decoding position by a (small) distance in the length dimension. The processor 112 may obtain an image, from the camera 34, of the reflected beam of light in respect of each of those offset positions. Any images that are captured in respect of the decoding position or positions that are slightly offset from it are then considered to pertain to the decoding position.
In respect of each decoding position, the processor 112 might then combine the images (captured at the decoding position or positions that are slightly offset from it) and determine an average value for a property when determining the one or more properties of the shape of the blade of the key. For example, multiple images might be captured and average values determined when determining a position of cut from an edge 258 of the blade 254, a depth of cut 259b into the blade 254 and/or a width of cut 259c into the blade 254. This might help to overcomes issues that could arise due to imperfections in the key 2500, such as wear of the tip 257 that has reduced the length of the blade 256, or the presence of foreign matter (e.g. dirt) in the cut that could result in a reflected line of light 1250 being captured that does not accurately reflect the nature of the cut in the key 2500.
An edge 216 of the key 2100 illustrated in
The positions/spacings A-E may be defined from the tip 217 of the key 2100. The tip 217 of the key 2100 is located at the opposite end of the blade 214 from the head 212 in the length dimension. It is the extremity of the blade 214. Alternatively, the positions/spacings may be defined from the shoulder/stop 211 near the head 212 of the key 2100. The shoulder/stop 211 of the key 2100 is a portion of the key 2100 that limits the extent to which the blade 214 may enter a lock before it can go no further. The shoulder/stop abuts a portion of the lock to prevent the blade 214 from entering further. In some instances, the positions/spacings may be defined from a “virtual shoulder/position” near the head 212. The position of the (virtual) shoulder/stop is a known distance in the length dimension from the tip 217 of the blade 214.
The size of the cut at each of the locations A-E is set by a particular code. The “size” of the cut may be the extent of the cut in the width dimension, defined by the y-axis in the figures. Each alphanumeric character in the code may correspond to a cut of a particular size in the edge 216 of the blade 214 at a particular spacing along the length dimension of the blade 214. The plurality of predefined positions/spacings A-E can be considered to be “decoding positions” in that the code for the key 2100 can be determined by determining the size of cut (in the width dimension) at each spacing.
The user input circuitry 32 of the key scanning apparatus 100 receives inputs from a user indicating that she wishes to replicate a key. These may be the same inputs provided in block 1001 in
The key replication data 184 stored in the memory 114 comprises data, for a plurality of keys, defining a plurality of decoding positions/spacings (in the length dimension of the blade) for each key at which a cut having one or more particular properties corresponds to a particular alphanumeric character in a code for the key. The processor 112 may use the information provided by the user to determine the relevant decoding positions/spacings for the key to be scanned. For instance, the key replication data 184 stored in the memory 114 may be a look-up table that comprises data explicitly indicating the decoding positions/spacings of various different keys.
The decoding positions/spacings in the key replication data 184 are defined in reference frame of the key itself. Those skilled in the art will appreciate that while a visual marker 170 may be provided indicating where to position the tip 217 of the key 2100 on the support/platform 50, a user may in practice fail to position the key 2100 correctly.
The processor 112 controls the illumination source 36 to provide illumination and causes the camera 34 to capture one or more images of the key 2100. As explained above, the illumination provided by the illumination source 36 enables the camera 34 to capture at least one image of the key 2100 on the platform 50 that depicts an outline of the key 2100 in two dimensions. The two dimensions are length and width dimensions defined by the x and y axes respectively in the figures. The blade 214 of the key 2100 has a length in the length dimension, a width in the width dimension and a depth in a depth dimension defined by the z-axis in the figures. The length may be greater than the width, and the width may be greater than the depth.
The image(s) may be that/those captured in block 1003 in
In block 2002 in
The processor 112 processes the images to determine the location of the tip 217 of the key 2100. The processor 112 may then, based on both the determination of the location of the tip 217 of the key 2100 and the predefined decoding positions/spacings in the key replication data 184, determine the where the “theoretical” decoding positions are located in the image. If the decoding positions are defined in the key replication data 184 in relation to the stop 211 or a virtual stop, the key replication data 194 might also indicate the distance from the tip 217 to the stop/virtual stop 211, thereby enabling the theoretical decoding positions to be determined.
The theoretical decoding positions that are determined using the key replication data 184 might not match the positions of the cuts in the edge 216 of the blade 214 in practice. This might be because the tip 217 has worn through use, for instance, or due to differences in the length of the blade 217 or key 2100 that can occur due to manufacturing tolerances.
At block 2003 in
There might be at least one examining position, spaced from the theoretical decoding position, on either side of the theoretical decoding position in the length dimension (defined by the x-axis in the figures). For instance, the examining position corresponding with the theoretical decoding position could be examining position 10 illustrated in
There are a plurality of examining positions 1-20 that are associated with each theoretical decoding position A-E. That is, examining positions A1-A20 for theoretical decoding position A, examining positions B1-B20 for theoretical decoding position B, examining positions C1-C20 for theoretical decoding position C, examining positions D1-D20 for theoretical decoding position D and examining positions E1-E20 for theoretical decoding position E.
An examining position in each plurality corresponds with another examining position in each other plurality. Each corresponding examining position is the same distance from the theoretical decoding position that it is associated with. That is, each corresponding examining position is offset from its associated theoretical decoding position in the length dimension by the same distance (and the offset might be zero).
The corresponding examining positions form a set of corresponding examining positions. For example, A5, B5, C5, D5 and E5 are corresponding examining positions and together form a set of corresponding examining positions. Each corresponding examining position is the same distance in the length dimension from its theoretical decoding position, each of which might be located at A10, B10, C10, D10 and E10, for instance.
In block 2004 in
For example, consider a situation in which the processor 112 is determining, in relation to examining position A10, how long the edge 216 of the blade 214 remains substantially parallel from examining position A10 in the length dimension. The processor 112 might measure an angle (e.g. with respect an axis that is parallel to or co-incident with the length dimension) of a virtual line between the examining position A10 and other positions that are given distances away from the examining position (e.g. the other examining position A1-A9, A11-A20 in the plurality of examining positions for that theoretical decoding position A).
If the angle that the virtual line makes with the x-axis falls outside a particular range, e.g. −2° to +2°, the processor 112 may determine that the edge 216 of the blade 214 is not flat between those positions. For example, the processor 112 would determine that the edge 216 between positions 10 and 14 in
In block 2005 in
In some examples, the processor 112 might record a zero value if it determines that the edge 216 is not substantially flat between a particular pair of positions (e.g. positions 10 and 16 in illustrated
In respect of a particular examining position, the processor 112 might perform the virtual line angle analysis for a number of positions along the edge 216 of the blade 214 in each direction in the length dimension. The processor 112 might perform the virtual line analysis in a direction in the length dimension until it determines that the edge 216 is not flat between the two positions. Thus, in respect of examining position 10, the processor 112 might perform the virtual line analysis in the rightwards direction in relation to positions 10 and 11 (substantially flat), then positions 10 and 12 (substantially flat), then positions 10 and 13 (substantially flat), then positions 10 and 14 (substantially flat) before stopping the analysis in the rightwards direction after determining that the virtual line between positions 10 and 15 is not substantially flat. Alternatively, the virtual line analysis might be performed between adjacent positions (e.g. between positions 10 and 11, then between positions 11 and 12, then between positions 12 and 13, the between positions 13 and 14, then between positions 14 and 15). This might achieve the same result.
The spacing between each pair of adjacent positions might be the same, and is smaller than the spacing between adjacent theoretical decoding positions A-E. For example, the analysis could be performed for a certain maximum number of positions either side of the particular examining position (e.g. 50).
In respect of examining position 13 in
The processor 112 performs this process in respect of each corresponding examining position in a set of examining positions. The processor 112 might then combine those values (e.g. by adding) to determine at least one value to store for the set of corresponding examining positions. For example, a set of examining positions might include the corresponding examining positions A13, B13, C13, D13, E13. The value that is recorded for each examining position might or might not be the same, depending on the results of the analysis performed by the processor 112. For example, it might be 7+7+6+7+6=33.
The processor 112 performs this process for each set of examining positions. For instance, the value stored for the set of examining positions A13, B13, C13, D13 and E13 might be 33 as indicated above, whereas the value stored for the set of examining positions A16, B16, C16, D16 and E16 scored on the same basis might be 0.
It will be appreciated by those skilled in the art that the manner in which a score/value is derived that is indicative of how long the edge 216 of the blade 214 remains substantially parallel to the length dimension may differ from that described above. For example, the processor 112 might instead perform the virtual line analysis in relation to a limited (maximum) number of “nearest neighbour positions” in each direction from a particular examining position (e.g. positions 7-9 and 11-13 for examining position 10), and then derive scores in the manner described above or a different manner.
In block 2006 in
For example, the processor 112 may compare the one or more values that have been stored for each set of corresponding examining positions with the one or more values that have been stored for the other sets of corresponding examining positions (e.g. the score for A10, B10, C10, D10 and E10 vs the score for A16, B16, C16, D16 and E16). In making this comparison, the processor 112 can determine an optimum set of examining positions at which decoding should be performed. For example, the processor 112 may determine that a value stored for the set of examining positions A10, B10, C10, D10 and E10 is greater than the value stored for each of the other sets of corresponding examining positions, and therefore determine that that set of corresponding examining positions is the optimum set of corresponding examining positions.
The distance between adjacent examining positions (e.g. A10 and B10) in the optimum set of examining positions A10, B10, C10, D10 and E10 is the same as the distance between adjacent decoding positions (e.g. A and B) in the “theoretical” decoding positions that are stored as part of the key replication data 184.
In block 2007 in
The stored key replication data 184 might indicate valid sizes of cuts in the edge 216 of the blade 214. Each valid size of cut might be a correspond with an extent of a cut in the width dimension. For example, there might be five different valid sizes of cut at a decoding position (e.g. a 1 mm, 2 mm, 3 mm, 4 mm or 5 mm cut). The processor 112 might compare the size of cut at each examining position in the optimum set of examining positions with each valid size of cuts.
For example, if the optimum examining positions are determined to be A10, B10, C10, D10 and E10, the size of the cut in the edge 216 of the blade 214 at each of those examining positions is compared with the valid sizes of cut as defined in the key replication data 184. If the size of the cut at any of the optimum examining positions does not correspond with one of the valid sizes of cut, the decoding process may fail.
For instance, consider a situation where the valid sizes of cuts in the edge 216 of the blade 214 are 1 mm, 2 mm, 3 mm, 4 mm or 5 mm. If the measured size of the cut at a particular optimum examining position (e.g. A10) is 1.5 mm, it is unclear whether that corresponds with a 1 mm cut or a 2 mm cut. Under the specification set out by the manufacturer (which is stored in the key replication data 184), a 1.5 mm cut is not a valid size of cut. Thus, in such circumstances, the processor 112 might determine that the decoding process has failed.
The size of the cut at a particular optimum examining position (e.g. A10) might be considered not to correspond with a particular valid size of cut if the difference between the size of the cut and the particular valid size of cut is greater than a threshold value. In some examples, the size of the cut at a particular optimum examining position (e.g. A10) might be considered not to correspond with a particular valid size of cut if it does not fall within a particular range of the valid size of cut.
The threshold(s) or the range could be any suitable value(s). For example, a size of cut at the optimum examining position in the edge 216 of the blade 214 might be considered to correspond with a valid size of cut if the size of the cut is between 35% greater and 45% shallower than the valid size of cut.
The processor 112 may decide whether or not to pass or fail the decoding process based on the comparisons. For example, in some examples, if the processor 112 determines that a cut in the edge 216 of the blade 214 at any one of the optimum examining positions (e.g. 010) does not correspond with one of the valid sizes of cuts, the processor 112 may decide to fail the decoding process. If the processor 112 determines that each of the cuts at the optimum examining positions corresponds with a valid size of cut, the processor 112 may pass the decoding process.
If the processor 112 passes the decoding process, the processor 112 may determine the code that corresponds with the key 2100 and may decide that a replication of the key should be cut in accordance with the code.
If the processor 112 fails the decoding process, the processor 112 may decide instead that a replication of the key should be cut by trace rather than by code. The processor 112 may determine a trace of the edge 216 of the blade 214, by processing the image of the blade 214 of the key 2100, from which a replication of the key 2100 may be cut.
The blocks 2002-2007 or 2003-2007 may be repeated in respect of the other lengthwise edge 215 of a key if the key is a double-sided edge cut key.
With reference to
In block 2040, the key scanning apparatus 100 may use a special purpose computing module or computer code or computer software 116, stored in a non-transitory memory 114 and executed by a process, to simulate sliding virtual lock pins over the cuts in the key blade as provided in the image of the key blade. This process accommodates at least 40% of the average cut spacing for cuts or bittings in a key blade but may accommodate more or fewer cut spacings or bittings for certain key blade types. The process starts by sliding, in an incremental fashion, the virtual pins a short distance before the centre of each key blade cut. The virtual pins are slid or moved through the centres of the key blade cuts and then the movement of the virtual pins is stopped after the virtual pins have passed through the centres of the key blade cuts.
In block 2060, each cut in the key blade is analysed at each sliding increment (called an “examining position” in the method described above in relation to
In block 2140, a value to store for each sliding increment is determined. This value may be deriving by determining a sum of the maximum value for each cut for a particular sliding increment. In block 2160, the pins are slid incrementally and a new value is determined for each incremental location for all of the cuts on the key blade. In block 2180, an optimum or best position for decoding a set of features which may be a set of key cut depths or bitting information is determined. Here, a “key cut depth” is the extent of a cut in the dimension defined by the y-axis in
In block 2200, the key blade is decoded at the optimum position. In block 2220, both sides of the key blade are decoded using the information determined in blocks 2020-2180. Decoding fails on any one side of the key blade if any measured depth falls outside of a predetermined range where +35% of an allowable cut depth is too high and −45% of an allowable cut depth is too deep. In block 2240, the cut depths as measured for the key blade of the master key have the depth for an OEM key subtracted from them to obtain a set of scores. A set of scores where each score is “0” would be ideal and would indicate a direct match to an OEM key as determined by an OEM key code.
The OEM key code comprises a set of measurements for a key blade. The OEM key code may be, for example, the key cut depths or bitting information for each cut position on one or both sides of a key blade. Determining whether to cut by code or by trace may be based in part on whether or not an OEM key code can be identified for comparison to the master key to be copied. Known OEM key codes are used to determine a set of maximum cut depth differences or specific cut depths for every cut position on a key blade. There are a predetermined or set number of key codes for any particular OEM key, and these codes may be used to cut, correct, or reject a decoded key for cutting.
A best fit line is then applied to the differences in the key cut or bitting depths for the key blade of the master key from a “perfect” line for an OEM key as determined by an OEM key code. The best fit line is used to generate or determine a set of errors including the accuracy of fit, skew angle, and shift bias. The set of errors are summed together to determine a final score for the decoded key.
In block 2300 the side of the key blade with the lowest error score as determined by comparing the final error scores for each side of the key blade is identified. In block 2320, the side with the lowest error score is compared to a predetermined pass/fail value. Decoding of the key fails if both sides of the key blade have at least cut being determined to be too deep or too high or if neither of the sides of the key have an error less than the predetermined pass/fail value. In block 2340, a copy key or replacement key is cut based on either the decoded key value if one side of the master key as decoded has a final score or error value under the predetermined pass/fail value, or on a trace of the master key if neither side of the master key as decoded has a final score or error value under the predetermined pass/fail value.
The blocks illustrated in
References to ‘control circuitry’, ‘computer’, ‘processor’, etc. should be understood to encompass not only computers having different architectures such as single/multi-processor architectures and sequential (Von Neumann)/parallel architectures but also specialized circuits such as field-programmable gate arrays (FPGA), application specific circuits (ASIC), signal processing devices and other processing circuitry. References to computer program, instructions, code etc. should be understood to encompass software for a programmable processor or firmware such as, for example, the programmable content of a hardware device whether instructions for a processor, or configuration settings for a fixed-function device, gate array or programmable logic device etc.
Although embodiments of the present invention have been described in the preceding paragraphs with reference to various examples, it should be appreciated that modifications to the examples given can be made without departing from the scope of the invention as claimed. For example, the key height data 181, the key blank outline data 182, the key blank blade data 183 and the key replication data 184 are shown as being stored in a local memory 114 in
The support 50 might not necessarily be a platform. It might, for example, be a key clamp.
The apparatus 100 may comprise a transmitter that is under the control of the processor 112. Once data has been determined that defines how to cut a key in order to replicate the key (by performing one or more of the methods described above), that data may be transmitted to a remote location in order for the key to be replicated from an appropriate key blank that is also specified in the data. The data may be transmitted over or more networks. The one or more network may include the internet.
Alternatively, the apparatus 100 may comprise cutting apparatus to cut a key blank in accordance with the data and thereby replicate the key.
While the key scanning apparatus 100 is described above as potentially being of a size that is suitable for desktop or tabletop use, that might not necessarily be the case in all examples. For example, it could be a larger apparatus that suitable for positioning on a floor and is tall enough for a person to use comfortably when standing. The key scanning apparatus 100 might, in some embodiments, be a semi-automated or fully automated key vending machine.
The light source 38 might not be a laser in some examples. It might, for example, be or comprise a light emitting diode or an incandescent light source that is arranged to direct a line of light onto the platform 50 (e.g. through a slit).
In some examples, the processor 112 might perform image processing to detect details of the head of a key, such as one or more buttons, text and/or colours.
Features described in the preceding description may be used in combinations other than the combinations explicitly described.
Although functions have been described with reference to certain features, those functions may be performable by other features whether described or not.
Although features have been described with reference to certain embodiments, those features may also be present in other embodiments whether described or not.
Whilst endeavouring in the foregoing specification to draw attention to those features of the invention believed to be of particular importance it should be understood that the applicant claims protection in respect of any patentable feature or combination of features hereinbefore referred to and/or shown in the drawings whether or not particular emphasis has been placed thereon.
Number | Date | Country | Kind |
---|---|---|---|
2019160.7 | Dec 2020 | GB | national |
Filing Document | Filing Date | Country | Kind |
---|---|---|---|
PCT/GB2021/050264 | 2/5/2021 | WO |
Number | Date | Country | |
---|---|---|---|
62970661 | Feb 2020 | US |