METHOD FOR DETERMINING THE POSITION OF A PORTABLE DEVICE
20170357873 · 2017-12-14
Assignee
Inventors
Cpc classification
G01C21/3679
PHYSICS
G06T19/00
PHYSICS
G06V10/462
PHYSICS
International classification
Abstract
An augmented reality method for displaying information comprises: capturing a sequence of image frames by a camera of a portable device, obtaining movement data by using an inertial sensor of the portable device, determining a sampling frame rate according to the movement data, selecting a tracking image from the captured image frames according to the sampling frame rate, determining a position of the portable device by comparing the tracking image with a point cloud, and displaying information on a display of the device based on the determined position.
Claims
1-20. (canceled)
21. A method, comprising: obtaining a sequence of captured image frames from a camera of a portable device, obtaining movement data by using an inertial sensor of the portable device, determining a sampling frame rate according to the movement data, selecting a tracking image from the captured image frames according to the sampling frame rate, determining a position of the portable device by comparing the tracking image with a point cloud, and displaying information on a display of the portable device based on the determined position.
22. The method according to claim 21, wherein the sequence is captured at a first frame rate, and the sampling frame rate is equal to the first frame rate divided by an integer.
23. The method according to claim 22, wherein said integer is greater than or equal to two when the angular velocity of the portable device is lower than a first predetermined limit and the acceleration of the portable device is lower than a second predetermined limit.
24. The method according to claim 21, wherein the sampling frame rate is equal to the first frame rate when the angular velocity of the portable device is equal to or higher than the a third predetermined limit and/or the acceleration of the portable device is equal to or higher than a fourth predetermined limit.
25. The method according to claim 21 further comprising: determining a blurring value for a point of the point cloud based on the position of said point and based on the movement data, comparing the blurring value with a predetermined limit, selecting said point to a subset of the point cloud or rejecting said point from said subset based on the comparison, and determining the position of the portable device by comparing the tracking image with the subset.
26. The method according to claim 21 further comprising: determining a change of position by using the movement data, and determining a corrected position by using said change and a previous determined position.
27. The method according to claim 21 further comprising: determining an indicator value indicative of the number of matching features appearing in an image frame, and increasing the sampling frame rate when the number of the matching features is lower than a predetermined limit.
28. A portable device, comprising: a display, a camera caused to capture a sequence of image frames, an inertial sensor caused to provide movement data, a control unit is caused to determine a sampling frame rate according to the movement data, to determine a position of the portable device by comparing the tracking image with a point cloud, and to control displaying information on the display based on the determined position.
29. The portable device according to claim 28, wherein the camera is caused to capture the sequence of image frames at a first frame rate, and the sampling frame rate is equal to the first frame rate divided by an integer.
30. The portable device according to claim 29, wherein the control unit is caused to determine the sampling frame rate such that said integer is greater than or equal to two when the angular velocity of the portable device is lower than a first predetermined limit and the acceleration of the portable device is lower than a second predetermined limit.
31. The portable device according to claim 28, wherein the camera is caused to capture the sequence of image frames at a first frame rate, and the control unit is configured to determine the sampling frame rate such that the sampling frame rate is equal to the first frame rate when the angular velocity of the portable device is equal to or higher than the a third predetermined limit and/or the acceleration of the portable device is equal to or higher than a fourth predetermined limit.
32. The portable device according to claim 28, wherein the control unit is further caused to: determine a blurring value for a point of the point cloud based on the position of said point and based on the movement data, compare the blurring value with a predetermined limit, select said point to a subset of the point cloud or reject said point from said subset based on the comparison, and determine the position of the portable device by comparing the tracking image with the subset.
33. The portable device according to claim 28, wherein the control unit is further caused to: determine a change of position by using the movement data, and determine a corrected position by using said change and a previous determined position.
34. The portable device according to claim 28, wherein the control unit is further caused to: determine an indicator value indicative of the number of matching features appearing in an image frame, and increase the sampling frame rate when the number of the matching features is lower than a predetermined limit.
35. A computer program product embodied on a non-transitory computer readable medium, comprising computer program code configured to, when executed on at least one processor, cause an apparatus or a system to: obtain a sequence of captured image frames from a camera of a portable device, obtain movement data from an inertial sensor of the portable device, determine a sampling frame rate according to the movement data, select a tracking image from the captured image frames according to the sampling frame rate, determine a position of the portable device by comparing the tracking image with a point cloud, and display information on a display of the portable device based on the determined position.
36. The computer program product according to claim 35, wherein the camera is caused to capture the sequence of image frames at a first frame rate, and the sampling frame rate is equal to the first frame rate divided by an integer.
37. The computer program product according to claim 36, wherein the control unit is caused to determine the sampling frame rate such that said integer is greater than or equal to two when the angular velocity of the portable device is lower than a first predetermined limit and the acceleration of the portable device is lower than a second predetermined limit.
38. The computer program product according to claim 35, wherein the camera is caused to capture the sequence of image frames at a first frame rate, and the control unit is configured to determine the sampling frame rate such that the sampling frame rate is equal to the first frame rate when the angular velocity of the portable device is equal to or higher than the a third predetermined limit and/or the acceleration of the portable device is equal to or higher than a fourth predetermined limit.
39. The computer program product according to claim 35, wherein the control unit is further caused to: determine a blurring value for a point of the point cloud based on the position of said point and based on the movement data, compare the blurring value with a predetermined limit, select said point to a subset of the point cloud or reject said point from said subset based on the comparison, and determine the position of the portable device by comparing the tracking image with the subset.
40. The computer program product according to claim 35, wherein the control unit is further caused to: determine a change of position by using the movement data, and determine a corrected position by using said change and a previous determined position.
Description
BRIEF DESCRIPTION OF THE DRAWINGS
[0037] In the following examples, several variations will be described in more detail with reference to the appended drawings, in which
[0038]
[0039]
[0040]
[0041]
[0042]
[0043]
[0044]
[0045]
[0046]
[0047]
[0048]
[0049]
[0050]
DETAILED DESCRIPTION
[0051] Referring to
[0052] A point cloud PC.sub.k may comprise a plurality of points P. The points may represent one or more objects OBJ1, OBJ2. The device 500 may comprise a memory for storing a point cloud PC.sub.k. The device 500 may be configured to determine the instantaneous position POS.sub.k of the device by comparing a tracking image IMG.sub.k with the point cloud PC.sub.k.
[0053] The device 500 may comprise a display DISP1 for displaying a captured image and information INF1, INF2. The display DISP1 may be e.g. a touch screen.
[0054] The device 500 may be arranged to display information INF1, INF2 on the display DISP1 such that information INF1, INF2 is selected from a database based on the determined position POS of the device 500. The device 500 may be arranged to display information INF1, INF2 such that the position of the displayed information INF1, INF2 on a display DISP1 is selected based on the determined position of the device 500. The determined position POS may be used as user input to an application running on the device 500.
[0055] The determined position POS may be used as user input to control e.g. an augmented reality application running on the device 500. For example, the device may determine that the device is close to a door OBJ1 of a store, which is associated with information INF1, (e.g. “ABC”). The device may search relevant information from a database based on the determined position of the device. The information INF1 may be retrieved from a database based on the determined position POS. The device 500 may display an image SUB1 of the door OBJ1 together with the information INF1, in order to provide additional information to the user of the device 500. For example, the device may determine that the device is close to a door OBJ3 of a metro station. The device 500 may display an image SUB3 of the door OBJ3 together with the information INF2 (e.g. “M”), in order to provide additional information to the user of the device 500. The display DISP1 may be configured to display an image DIMG1. The displayed image DIMG1 may comprise images of objects which are in the field of view of the device 500. The displayed image DIMG1 may comprise displayed information INF1, INF2. The images SUB1, SUB3 of the objects OBJ1, OBJ3 may be called e.g. as sub-images.
[0056] The objects OBJ1, OBJ2, OBJ3, OBJ4 and the device 500 may have a position in a real space defined by the orthogonal directions SX, SY and SZ, and by a stationary reference point REF1. The position of the device 500 may refer to the position of a predetermined point C1 of the device 500. The point C1 may be e.g. at the center of a lens LNS1 of the camera CAM1. The device 500 may be moved in three spatial dimensions and in three angular dimensions. The position POS.sub.k of the device 500 at a time t.sub.k may be fully defined by specifying the spatial position of the device 500 and by defining the angular position of the device 500. The spatial position may be specified by three spatial coordinates (x.sub.k,y.sub.k,z.sub.k), and the angular position may be specified by three angular coordinates (α.sub.k,β.sub.k,γ.sub.k). The device 500 may have a mobile coordinate system defined by orthogonal directions SU, SV, SW. The mobile coordinate system is fixed to the device 500 and moves together with the device 500.
[0057] Referring to
[0058] The virtual display DISP1 may comprise a first optical engine 10a. The virtual display DISP1 may optionally comprise an exit pupil extender (EPE) 20a for expanding the exit pupil of the optical engine 10a. The exit pupil extender may also be called e.g. as a beam expander. The virtual display DISP1 may generate one or more light beams B1, which may impinge on an eye E1 of a user U1 in order to form an optical image on the retina of the eye E1 of the user U1. The light beams B1 may form an optical image on the retina. The virtual display DISP1 may be arranged to display one or more virtual images VOB1, VOB2 to the user U1. The device 500 may be arranged to display information INF1, INF2 on the display DISP1 based on the determined position of the device 500. The virtual image VOB1 may represent the information INF1, and the virtual image VOB1 may represent information the INF2. The device 500 may display the virtual image VOB1 such that the position of the virtual image VOB1 matches with the position of the real object OBJ1, when viewed by the user U1 of the device 500, in order to provide additional information to the user of the device 500. The device 500 may display the virtual image VOB1 such that the position of the virtual image VOB1 is related with the position of the real object OBJ1, when viewed by the user U1 of the device 500.
[0059] For augmented reality applications, the exit pupil extender 20a may be at least partly transparent such that the user U1 may view the real objects of the environment ENV1 through the exit pupil extender 20a. However, the virtual display DISP1 may also display an image of the real objects of the environment ENV1 to the user U1. In this case, the exit pupil extender 20a does not need to allow direct viewing of the real objects through the exit pupil extender 20a.
[0060] The device 500 may optionally comprise a second optical engine 10b and/or a second exit pupil extender 20b for displaying virtual images to the other eye E2 of the user U1. The virtual display DISP1 may generate one or more light beams B2, which may impinge on a second eye E2 of the user U1 in order to form an optical image on the retina of the eye E2 of the user U1. The light beams B2 may form an optical image on the retina. The optical engines 10a, 10b may be arranged to generate the same image for both eyes E1, E2. The optical engine 10a may be arranged to generate a first image to the eye E1, and the optical engine 10b may be arranged to generate a second different image to the eye E2, in order to display a stereo image.
[0061] The device 500 may optionally comprise e.g. one or more earpieces 91a, 91b to facilitate wearing the device 500. The device 500 may also be attached e.g. to a headgear or to a helmet.
[0062] Referring to
[0063] The device 500 may comprise a camera CAM1 for capturing video. The camera CAM1 may capture an image sequence SEQ1, which comprises a plurality of consecutive image frames F.sub.j, F.sub.j+, F.sub.j+2, . . . of external objects OBJ1, OBJ2. The camera CAM1 may comprise imaging optics LNS1 and an image sensor DET1. The image sensor DET1 may comprise a two-dimensional array of detector pixels. The image sensor DET1 may be e.g. CMOS device (Complementary Metal Oxide Semiconductor) or a CCD device (Charge-Coupled Device).
[0064] The device 500 may comprise a sensor SEN1, a sensor SEN2, and/or a sensor SEN3, which may be arranged to provide movement data MDAT. The movement data MDAT may also be called as motion sensor data.
[0065] The device 500 may comprise an inertial sensor SEN1, which comprises a gyroscope. The gyroscope may be e.g. a laser gyroscope or a vibrating structure gyroscope. The inertial sensor SEN1 may be implemented e.g. by using Microelectromechanical systems (MEMS). The inertial sensor SEN1 may be arranged to provide a sensor signal S.sub.MV, which is indicative of the angular velocity ω.sub.u, ω.sub.v, and/or ω.sub.w. The sensor signal S.sub.MV obtained from the inertial sensor SEN1 may comprise movement data MDAT, which is indicative of the angular velocity ω.sub.u, ω.sub.v, and/or ω.sub.w. ω.sub.u denotes angular velocity about the axis SU. ω.sub.v denotes angular velocity about the axis SV. ω.sub.w denotes angular velocity about the axis SW. The gyroscope may be a three-axis gyroscope.
[0066] The device 500 may comprise an inertial sensor SEN2, which comprises an acceleration sensor. The inertial sensor SEN2 may be implemented e.g. by using Microelectromechanical systems (MEMS). The inertial sensor SEN2 may be arranged to provide a sensor signal S.sub.MV, which is indicative of the acceleration a.sub.u, a.sub.v, and/or a.sub.w. The sensor signal S.sub.MV obtained from the inertial sensor SEN2 may comprise movement data MDAT, which is indicative of the acceleration a.sub.u, a.sub.v, and/or a.sub.w. a.sub.u denotes acceleration in the direction SU. a.sub.v denotes acceleration in the direction SV. a.sub.w denotes acceleration in the direction SW. The inertial sensor SEN2 may be a three-axis acceleration sensor. The acceleration sensor SEN2 may also provide information for determining the direction of gravity.
[0067] The device 500 may comprise a magnetic compass SEN3. The a magnetic compass SEN3 may be arranged to provide a sensor signal S.sub.MV, which is indicative of the orientation angle α, β, and/or γ of the device 500. The sensor signal S.sub.MV obtained from the magnetic compass SEN3 may comprise movement data MDAT, which is indicative of the orientation angle α, β, and/or γ of the device 500. The orientation of the device 500 with respect to the directions SX, SY and SZ may be measured by measuring the orientation of the device 500 with respect to the magnetic field of the earth and with respect to the direction of gravity. An angular velocity of the device 500 may be determined from the rate of change of the orientation angle α, β, and/or γ of the device 500. The device 500 may be configured to determine one or more angular velocity values from a sensor signal S.sub.MV obtained from the sensor SEN3. The device 500 may be configured to determine one or more angular velocity values from a movement data MDAT obtained from the sensor SEN3.
[0068] The device 500 may comprise a user interface UIF1. The user interface UIF1 may comprise a display DISP1. The display DISP1 may be e.g. a virtual display or a touch screen. The user interface UIF1 may comprise an input unit KEY1 for receiving user input form the user U1. The input unit KEY1 may comprise e.g. a touch screen, one or more keys, a mouse, a gaze tracking unit, and/or voice recognition unit (and a microphone). User input may also be determined from the position POS of the device 500. For example shaking of the device 500 in a certain way may represent a predetermined user input.
[0069] The device 500 may comprise a communication unit RXTX1 for receiving data from a second device and for transmitting data to a second device. The second device may be e.g. an internet server SERV1. COM1 denotes a communication signal.
[0070] The device 500 may comprise a battery BAT1 for providing electrical energy to the other units of the device 500. The battery may be e.g. a rechargeable lithium ion battery or a rechargeable nickel metal hydride battery. In particular, the battery BAT1 may provide energy to the control unit CNT1.
[0071] The device 500 may comprise a memory MEM1 for storing computer program PROG1 for controlling operation of the device 500. The device 500 may comprise a memory MEM2 for storing a point cloud PC.sub.k. The device 500 may comprise a memory MEM3 for storing e.g. the determined position of the device 500.
[0072] Referring to
[0073] Visual tracking may normally run at the frame rate f.sub.SEQ1 of the camera CAM1.
[0074] The frame rate f.sub.SEQ1 may be e.g. in the range of 24 Hz to 120 Hz. If the camera CAM1 is not actually moving or rotating, the differences between consecutive images may be small, and a large part of the tracking computations may become redundant. If the sensor signal S.sub.MV indicates that there is little or no rotation, this also indicates that the differences between consecutive image frames may be small. In this case, the frame rate f.sub.A for the visual tracking computations may be reduced when compared with the frame rate f.sub.SEQ1 of the camera CAM1.
[0075] The position of the device 500 may be determined by comparing visual features F1, F2 of tracking images IMG with a point cloud PC. Tracking images IMG.sub.k−1, IMG.sub.k, IMG.sub.k+1, IMG.sub.k+2, IMG.sub.k+3, IMG.sub.k+4 may be selected from the consecutive image frames F.sub.j−2, . . . F.sub.j, F.sub.j+, F.sub.j+2, . . . , F.sub.j+11 according to a frame sampling rate f.sub.A. The frame sampling rate f.sub.A may be e.g. ½, ⅓, ¼, ⅙, ⅙, 1/7, or ⅛ times the frame rate f.sub.SEQ1. The sequence SEQ1 may be captured at a first frame rate frame rate f.sub.SEQ1, and the sampling frame rate f.sub.A may be equal to the first frame rate divided by an integer N.sub.DIV. The sampling frame rate f.sub.A may be determined such that the sampling frame rate f.sub.A is equal to the frame rate f.sub.SEQ1 divided by an integer N.sub.DIV. The integer number N.sub.DIV may have a first value during a first time period, and the integer number N.sub.DIV may have a second different value during a second time period. For example, the integer number N.sub.DIV may be equal to 3 during a first time period from tk.sub.−1 to t.sub.k+1, and the integer number N.sub.DIV may be equal to 2 during a second time period from t.sub.k+1 to t.sub.k+4.
[0076] The movement of the portable device 500 may be detected e.g. by using an inertial sensor SEN1 and/or SEN2. The inertial sensor may comprise e.g. a three-axis accelerometer and/or a three-axis gyroscope. The gyroscope may be e.g. a laser gyroscope or a vibrating structure gyroscope. The inertial sensor SEN1 may be implemented e.g. by using Microelectromechanical systems (MEMS). The inertial sensor SEN1 may be arranged to provide a sensor signal S.sub.MV, which is indicative of the movement of the portable device. The sensor signal S.sub.MV may comprise movement data MDAT, which specifies the movement of the portable device 500. The movement data MDAT may specify e.g. the acceleration a.sub.k of the device 500 in a direction (e.g. in direction SU), and/or the angular velocity ω.sub.k of the device about an axis (e.g. about the direction SU).
[0077] The sensor signal S.sub.MV may also comprise movement data MDAT obtained from a compass. The sensor signal may comprise movement data MDAT obtained from a magnetic compass.
[0078] The frame rate f.sub.A for the visual tracking may be e.g. ½ of the frame rate f.sub.SEQ1 by analyzing every second image frame captured by the camera CAM1. The frame rate f.sub.A for the visual tracking may be e.g. ⅓ of the frame rate f.sub.SEQ1 by analyzing every third image frame captured by the camera CAM1. The frame rate f.sub.A for the visual tracking may be e.g. ¼ of the frame rate f.sub.SEQ1 by analyzing every fourth image frame captured by the camera CAM1. The frame rate f.sub.A for the visual tracking may be e.g. ½, ⅓, ¼, ⅕, ⅙, 1/7, ⅛, . . . , 1/15, 1/16, 1/17 . . . 1/31, 1/32, 1/33, . . . of the frame rate f.sub.SEQ1. The position of the portable device 500 may be determined from the sensor signal. The position of the portable device 500 may be extrapolated by determining a previous position from an image frame, and by determining a change of position from the sensor signal. The frame rate f.sub.A for the visual tracking may be increased when the sensor signal indicates that the portable device 500 starts to move or turn more rapidly. The frame rate f.sub.A may be increased such that the frame rate f.sub.A for the visual tracking becomes equal to the frame rate f.sub.SEQ1 of the camera CAM1, i.e. every image frame captured by the camera CAM1 may be analyzed. In an embodiment, the frame rate f.sub.SEQ1 of the camera CAM1 may be reduced from a nominal frame rate f.sub.0.
[0079] The tracking image IMG.sub.k−1 may be an image frame F captured at the time t.sub.k−1.
[0080] The tracking image IMG.sub.k may be an image frame F captured at the time t.sub.k. The tracking image IMG.sub.k+1 may be an image frame F captured at the time tk.sub.+1.
[0081] The point cloud may be reconstructed or updated. A point cloud PC.sub.k may be determined by updating a previous point cloud PC.sub.k−1. A next point cloud PC.sub.k+1 may be determined by updating the point cloud PC.sub.k.
[0082] The point cloud PC.sub.k may have been formed by analyzing a plurality of previously captured images IMG.sub.k−2, IMG.sub.k−1. The point cloud PC.sub.k may be a re-constructed point cloud. The point cloud PC.sub.k may be updated based on analysis of the captured image IMG.sub.k. An updated point cloud PC.sub.k+1 may be determined from the previous point cloud PC.sub.k and based on analysis of one or more previous images IMG.sub.k−2, IMG.sub.k−1, IMG.sub.k.
[0083] The point cloud PC.sub.k or PC.sub.k+1, may also be obtained e.g. from a database or from a memory of a second device. The point cloud PC.sub.k or PC.sub.k+1, may be communicated to the device 500 e.g. via the Internet or via a mobile communications system.
[0084] Image frames captured at times t.sub.k−1, t.sub.k, t.sub.k+1, t.sub.k+2, t.sub.k+3, t.sub.k+4, . . . may be used as tracking images IMG.sub.k, IMG.sub.k+1, IMG.sub.k+2, IMG.sub.k+3, IMG.sub.k+4, . . . The method may comprise determining a plurality of consecutive point clouds PC.sub.k−1, PC.sub.k+1, PC.sub.k+2, PC.sub.k+3, PC.sub.k+4, corresponding to the times t.sub.k−1, t.sub.k, t.sub.k+1, t.sub.k+2, t.sub.k+3, t.sub.k+4, . . . One or more captured image frames are not used as tracking images when the sampling frame rate f.sub.A is lower than the frame rate f.sub.SEQ1. For example, captured image frames F.sub.j+1 and F.sub.j+4 may be used as tracking images IMG.sub.k, IMG.sub.k+1 such that the image frames F.sub.j+2 and F.sub.j+3 are not used as tracking images. The image frame F.sub.j+3 may be captured at a time t.sub.j+3. The image frame F.sub.j+3 may be captured after capturing the image frame F.sub.j+1, and before capturing the image frame F.sub.j+4.
[0085] Comparison of a tracking image with the point cloud may consume electric power. The frame sampling rate f.sub.A may be lower than the frame rate f.sub.SEQ1 in order to save energy. The frame sampling rate f.sub.A may be adjusted based on a sensor signal S.sub.MV obtained from the inertial sensor SEN1. The frame sampling rate f.sub.A may be adjusted based on a sensor signal S.sub.MV obtained from the inertial sensor SEN2. The frame sampling rate f.sub.A may be adjusted based on a sensor signal S.sub.MV obtained from the magnetic compass SEN3.
[0086] Referring to
[0087] Referring to
[0088] The point cloud PC.sub.k may comprise a plurality of points in a three-dimensional virtual space. Each point of the point cloud may represent a candidate feature appearing in an image frame.
[0089] The virtual space may be defined by orthogonal directions SX′, SY′, SZ′ and by a reference point REF2. The spatial position of each point P of the point cloud PC.sub.k may be defined by spatial coordinates (x′,y′,z′). The device 500 may comprise a memory for storing the positions of the points of the point cloud PC.sub.k.
[0090] The device 500 may have a virtual position POS2.sub.k in the virtual space. The virtual position POS2.sub.k of the device 500 may be defined by specifying the virtual spatial position of the device 500 and by defining the virtual angular position of the device 500. The spatial position may be specified by three spatial coordinates (x′,y′,z′), and the angular position may be specified by three angular coordinates (α′,β′,γ′).
[0091] The device 500 may be configured to determine the virtual position POS2.sub.k by comparing the visual features F1, F2, . . . of the tracking image IMG.sub.k with the points P of the point cloud PC.sub.k. The device 500 may be configured to determine a virtual position POS2.sub.k of the device 500 in the virtual space such that the visual features F1, F2, . . . of the tracking image IMG.sub.k match with the points P of the point cloud PC.sub.k to sufficient degree. The position POS2.sub.k may specify the position of the device with respect to the points P of the point cloud PC.sub.k, i.e. in the virtual space. The position POS.sub.k of the device 500 in the environment ENV1 may be subsequently determined from the virtual position POS2.sub.k by coordinate conversion. The coordinate system of the virtual space may also be selected such that the position POS.sub.k of the device 500 is equal to the virtual position POS2.sub.k. In that case, coordinate conversion is not needed.
[0092] The device 500 may be configured to determine one or more candidate images from the point cloud PC.sub.k. The candidate image means an image of the points P of the point cloud PC.sub.k, when the points P are viewed from the virtual position POS2.sub.k. Each point P of the point cloud PC.sub.k may correspond to a point of the candidate image. The device 500 may be configured to calculate a plurality of points of the candidate image, and to check whether the points of the candidate match with the points of the tracking image IMG.sub.k.
[0093] In other words, the device 500 may be configured to make tracking calculations. The point cloud PC.sub.k typically looks different when viewed from different directions. The device 500 may be configured to determine the position POS2.sub.k such that the points of the candidate image match with the features F1, F2 of the tracking image.
[0094] The position of the device may be determined by a method, which comprises: [0095] obtaining a sequence SEQ of captured image frames F.sub.j, F.sub.j+1, F.sub.j+2 from the camera CAM1 of the portable device 500, [0096] obtaining movement data MDAT by using an inertial sensor SEN1, by using an inertial sensor SEN2, and/or by using a compass SEN3 of the portable device 500, [0097] determining a sampling frame rate f.sub.A according to the movement data MDAT, [0098] selecting a tracking image IMG.sub.k from the captured image frames F.sub.j, F.sub.j+1, F.sub.j+2 according to the sampling frame rate f.sub.A, and [0099] determining a position POS.sub.k, POS2.sub.k of the portable device 500 by comparing the tracking image IMG.sub.k with a point cloud PC.sub.k.
[0100] Information INF1, INF2 may be subsequently displayed on a display DISP1 of the device 500 based on the determined position POS.sub.k, POS2.sub.k. The display DISP1 may be e.g. a virtual display or a touch screen.
[0101] The comparison of the tracking image IMG.sub.k may require high amount of data processing if each visual feature of the tracking image IMG.sub.k is compared with each point of the point cloud PC.sub.k.
[0102] A subset SC.sub.k of the point cloud PC.sub.k may be formed in order to facilitate the comparison. The number of points of the subset SC.sub.k may be substantially lower than the number of points of the point cloud PC.sub.k.
[0103] For example, the visual feature F1 may represent a point of an object OBJ1, which is close to the device, and the visual feature F2 may represent a point of an object OBJ3, which is far away from the device 500. If the device 500 is moved at a fast rate, the visual feature F1 is more likely to be blurred in the tracking image IMG.sub.k than the visual feature F2. In case of a translational movement of the device 500, the visual feature F1 is more likely to be blurred in the tracking image IMG.sub.k than the visual feature F2 of the remote object OBJ3. The device 500 may save power by omitting comparison operations related to blurred features.
[0104] The device 500 may be configured to form the subset SC.sub.k of the point cloud PC.sub.k by selecting those points P, which are likely to correspond to a sharp feature in the tracking image IMG.sub.k. The device 500 may be configured to form a subset SC.sub.k of the point cloud PC.sub.k by rejecting those points P, which are likely to correspond to a blurred feature in the tracking image IMG.sub.k. The device 500 may be configured to determine a blurring value BV for each point of the point cloud PC.sub.k. The blurring value BV of a point may indicate the estimated degree of blurring of a feature, which corresponds to said point.
[0105] When the camera is turning or moving too rapidly, the features appearing in the image frames may be blurred. In this case visual tracking is likely to fail. Sometimes visual features cannot be identified at all. However, the degree of blurring of features corresponding to the points of the point cloud may be calculated based on the sensor signal. The degree of blurring may be specified e.g. by a blurring value. If the blurring value of a feature exceeds a threshold value, this may indicate that the feature is too blurred to be recognized. Points associated with the blurred features may be ignored in the tracking computations. The feature matching may be performed only on those points which correspond to relatively sharp features. The sensor signal may be used for determining the position of the portable device during the rapid motion. The threshold value may depend e.g. on the resolution of the camera and/or on exposure time of the camera.
[0106] The device 500 may move at a velocity v.sub.k and/or the device may rotate at an angular velocity ω.sub.k. One or more visual features F1, F2 of the tracking image IMG.sub.k may be blurred if the velocity v.sub.k is too high and/or if the angular velocity ω.sub.k. For example, a user U1 wearing the device 500 may run or turn his head such that the tracking image IMG.sub.k comprises blurred visual features F1, F2. One or more visual features F1, F2 of the tracking image IMG.sub.k may also be blurred if the camera CAM1 accelerates rapidly. The degree of blurring of a feature of an object may depend on the distance between the camera CAM1 and the object OBJ1, OBJ2. The degree of blurring may also depend on the resolution of the camera CAM1, and/or on the lighting conditions.
[0107] The device 500 may comprise an inertial sensor SEN1, SEN2 for providing one or more sensor signals S.sub.MV. The device 500 may comprise one or more inertial sensors SEN1, SEN2 for providing sensor signals S.sub.MV. The inertial sensor SEN1, SEN2 may be e.g. an acceleration sensor and a gyroscope. The sensor signal S.sub.MV may be indicative of the acceleration and/or angular velocity ω.sub.k of the device 500. The velocity v.sub.k may be determined by integrating the acceleration of the device 500.
[0108] Referring to
[0109] The device 500 may be configured to determine the virtual position POS2.sub.k of the device 500 by comparing the visual features F1, F2, . . . of the tracking image IMG.sub.k with the points P of subset SC.sub.k. The device 500 may be configured to determine a virtual position POS2.sub.k of the device 500 in the virtual space such that the visual features F1, F2, . . . of the tracking image IMG.sub.k match with the points P of the subset SC.sub.k to a sufficient degree.
[0110]
[0111] In step 810, a sequence of captured image frames F.sub.j, F.sub.j+1, F.sub.j+2 may be obtained from the camera CAM1 of the device 500. The sensor signal S.sub.MV may be obtained from the sensor SEN1, SEN2, and/or SEN3. The movement data MDAT may be obtained from the sensor SEN1, SEN2, and/or SEN3.
[0112] In step 815, the frame sampling rate f.sub.A may be determined based on the sensor signal S.sub.MV. The frame sampling rate f.sub.A may be determined based on the movement data MDAT. For example, the frame sampling rate f.sub.A may be determined as a function of the acceleration and the angular velocity of the device. For example, the frame sampling rate f.sub.A may be determined to be lower than the frame rate of the sequence SEQ1 e.g. when the acceleration of the device 500 is lower than a predetermined limit a.sub.LIM1 and the angular velocity of the device is lower than a predetermined limit ω.sub.LIM1. For example, the frame sampling rate f.sub.A may be determined to be equal to the frame rate f.sub.SEQ1 of the sequence SEQ1 when the acceleration of the device 500 is higher than a predetermined limit a.sub.LIM2 and/or the angular velocity of the device is higher than a predetermined limit ω.sub.LIM2.
[0113] The sampling frame rate f.sub.A may be determined such that the sampling frame rate f.sub.A is equal to the frame rate f.sub.SEQ1 divided by an integer number N.sub.DIV. The integer number N.sub.DIV may be e.g. greater than or equal to two when the angular velocity ω of the device is lower than a first predetermined limit ω.sub.LIM1 and the acceleration of the device is lower than a second predetermined limit a.sub.LIM1.
[0114] In step 820, one or more tracking images may be sampled from the image frames of the sequence SEQ1 according to the frame sampling rate f.sub.A.
[0115] In step 850, the position POS.sub.k of the device 500 may be determined by comparing visual features F1, F2 of the tracking image IMG.sub.k with points of the point cloud PC.sub.k.
[0116] In step 890, the operation of the device 500 may be controlled based on the determined position POS.sub.k. For example, information may be retrieved from a database based on the position POS.sub.k. For example, information may be retrieved from a database based on the position POS.sub.k when running an augmented reality application. For example, displayed information INF1, INF2 may be selected based on the position POS.sub.k. For example, the position of information on the display may be determined based on the position POS.sub.k. For example, the determined position POS.sub.k may be used as user input, e.g. for making a selection from two or more options.
[0117] Referring to
[0118] The method may comprise: [0119] determining a blurring value BV for a point P of the point cloud PC.sub.k based on the position of said point P and based on the movement data MDAT, [0120] rejecting said point P from the subset SC.sub.k of the point cloud PC.sub.k if the blurring value BV exceeds a predetermined limit BV.sub.BLUR, and [0121] determining the position POS.sub.k of the portable device 500 by comparing the tracking image IMG.sub.k with the subset SC.sub.k.
[0122] A higher blurring value BV may indicate a higher degree of blurring. In that case a point P may be rejected from the subset SC.sub.k of the point cloud PC.sub.k if the blurring value BV of said point is higher than a predetermined limit BV.sub.BLUR. Alternatively, a lower blurring value BV may indicate a higher degree of blurring. In that case a point P may be rejected from the subset SC.sub.k of the point cloud PC.sub.k if the blurring value BV of said point is lower than a predetermined limit BV.sub.BLUR.
[0123] The method may comprise: [0124] determining a blurring value BV for a point P of the point cloud PC.sub.k based on the position of said point P and based on the movement data MDAT, [0125] comparing said blurring value BV with a predetermined limit BV.sub.BLUR, [0126] selecting said point to the subset SC.sub.k of the point cloud PC.sub.k or rejecting said point from the subset SC.sub.k of the point cloud PC.sub.k based on the comparison, and [0127] determining the position POS.sub.k of the portable device 500 by comparing the tracking image IMG.sub.k with the subset SC.sub.k.
[0128] Referring to
[0129] The time delay Δt.sub.A may be checked in step 860. If the time delay Δt.sub.A is smaller than a predetermined value, the intermediate position POS.sub.k determined in step 850 may be used as the position POS(t) of the device 500 at the time t (step 880). If the time delay Δt.sub.A is not smaller than the predetermined value, the position may be corrected by using the movement data MDAT. In step 865, the lateral displacement DPOS of the device and/or an angular change of the orientation of the device may be calculated by using the sensor signal S.sub.MV and based on the time delay Δt.sub.A. The lateral displacement DPOS of the device and/or an angular change of the orientation of the device may be calculated by using movement data MDAT obtained from the sensor SEN1, SEN2 and/or SEN3 and based on the time delay Δt.sub.A.
[0130] The method may comprise: [0131] determining a change of position DPOS by using the movement data MDAT, and [0132] determining a corrected position POS(t) by using said change DPOS and a previous determined position POS.sub.k.
[0133] In step 870, the instantaneous position POS(t) of the device 500 at the time t may be subsequently determined by adding the change DPOS to the intermediate position POS.sub.k.
[0134] In step 890, the operation of the device 500 may be controlled based on the determined instantaneous position POS(t).
[0135] Referring to
[0136] In step 852, the number N.sub.MP of the matching points may be counted. The matching points of the point cloud PC.sub.k may be found in the comparison operation. Thus, counting the number N.sub.MP of the matching points may require very low or negligible amount of data processing power.
[0137] The number N.sub.MP may be checked in step 855. If the number N.sub.MP of the matching points is lower than a predetermined value N.sub.MP,LIM1, then the frame sampling rate f.sub.A may be temporarily increased in step 856. A timer value TIM may also be reset in step 856.
[0138] The method may comprise: [0139] determining an indicator value N.sub.MP indicative of the number of matching features appearing in an image frame, and [0140] increasing the sampling frame rate f.sub.A when the number of the matching features N.sub.MP is lower than a predetermined limit N.sub.MP,LIM1.
[0141] If the number N.sub.MP of the matching points is higher than a predetermined value and if the timer value TIM is lower than a predetermined value INTERVAL1, then the frame sampling rate f.sub.A may be kept at the value determined in step 815.
[0142] The timer value TIM may be increased with time or e.g. in the step 852. The timer value TIM may be checked in step 857. If the timer value TIM is higher than a predetermined value INTERVAL1, then the frame sampling rate f.sub.A may be temporarily reduced in step 858.
[0143] The position determined in step 850 of
[0144] The robustness of the visual tracking may be monitored. In particular, the robustness may be monitored in a situation where the device 500 is substantially stationary. The robustness may be compromised when using a low frame rate for the analysis. The robustness may be compromised e.g. due to low lighting intensity, which may cause image noise. If the visual tracking appears to provide a low number of matching features when the sensor signal does not indicate significant motion, then the frame rate for the tracking may be temporarily increased until robust tracking is resumed. Later, the frame rate for the tracking may be decreased in order to test whether robust tracking can be maintained at a lower frame rate. In this way, the device may be automatically adapted to challenging and/or varying tracking conditions. A visual quality assessment method may be used for monitoring the quality of the visual tracking. The assessment method may comprise e.g. counting the number of matching features. The assessment method may be implemented without increasing the computational cost and/or power consumption.
[0145] The video sequence SEQ1 may be stored and/or communicated by using a data compression codec, e.g. by using MPEG-4 Part 2 codec, H.264/MPEG-4 AVC codec, H.265 codec, Windows Media Video (WMV), DivX Pro codec, or a future codec (e.g. High Efficiency Video Coding, HEVC, H.265). The video data VDATA1, VDATA2 may encoded and/or decoded e.g. by using MPEG-4 Part 2 codec, H.264/MPEG-4 AVC codec, H.265 codec, Windows Media Video (WMV), DivX Pro codec, or a future codec (e.g. High Efficiency Video Coding, HEVC, H.265). The video data may also be encoded and/or decoded e.g. by using a lossless codec.
[0146]
[0147]
[0148] For the person skilled in the art, it will be clear that modifications and variations of the devices and the methods according to the present invention are perceivable. The figures are schematic. The particular embodiments described above with reference to the accompanying drawings are illustrative only and not meant to limit the scope of the invention, which is defined by the appended claims.