A feature extraction method for extracting a feature from an image includes receiving an image and measured acceleration data from a mobile device; obtaining a gravity vector in the image in a camera coordinate system based on the measured acceleration data; obtaining a vanishing point in the image in a vertical direction in a screen coordinate system using the gravity vector; obtaining differential vectors along two axes for each pixel in the screen coordinate system; obtaining a connection line vector connecting each of the pixels with the vanishing point; identifying a vertical edge based on determining that an angle formed by the differential vector and the connection line vector is within a certain threshold range; obtaining the sum of strengths of vertical edges and writing the sum in a predetermined variable array; extracting a keypoint based on the variable array; and calculating a feature quantity from the keypoint.
|
1. A feature extraction method for extracting a feature from an image by computer processing, the method comprising:
receiving an image and measured acceleration data from a mobile device including image acquiring means and acceleration measuring means;
obtaining a gravity vector in the image in a camera coordinate system on a basis of the measured acceleration data;
obtaining a vanishing point in the image in a vertical direction in a screen coordinate system by using the gravity vector;
obtaining differential vectors along two axes for each of pixels in the screen coordinate system;
obtaining a connection line vector connecting each of the pixels with the vanishing point;
identifying a vertical edge on the basis of determination that an angle formed by the differential vector and the connection line vector is within a certain threshold range;
obtaining the sum of strengths of vertical edges and writing the sum in a predetermined variable array;
extracting a keypoint on the basis of the variable array; and
calculating a feature quantity from the keypoint.
8. A computer program product comprising a non-transitory computer readable storage medium having computer readable instructions stored thereon that, when executed by a computer, implement a feature extraction method for extracting a feature from an image by computer processing, the method comprising:
receiving an image and measured acceleration data from a mobile device including image acquiring means and acceleration measuring means;
obtaining a gravity vector in the image in a camera coordinate system on the basis of the measured acceleration data;
obtaining a vanishing point in the image in a vertical direction in a screen coordinate system by using the gravity vector;
obtaining differential vectors along two axes for each of pixels in the screen coordinate system;
obtaining a connection line vector connecting each of the pixels with the vanishing point;
identifying a vertical edge on the basis of determination that an angle formed by the differential vector and the connection line vector is within a certain threshold range;
obtaining the sum of strengths of vertical edges and writing the sum in a predetermined variable array;
extracting a keypoint on the basis of the variable array; and
calculating a feature quantity from the keypoint.
2. The method according to
3. The method according to
4. The method according to
6. The method according to
7. The method according to
10. The computer program product according to
11. The computer program product according to
12. The computer program product according to
13. The computer program product according to
14. The computer program product according to
|
This application claims priority to Japanese Patent Application No. 2012-179994, filed Aug. 15, 2012, and all the benefits accruing therefrom under 35 U.S.C. §119, the contents of which in its entirety are herein incorporated by reference.
The present invention relates to a technique to extract feature quantities from an image to perform location estimation.
There is an increasing demand for techniques to estimate in-door locations for analyzing customer traffic lines in places such as shopping centers and public facilities and for inventory control in these years.
It is difficult to accurately estimate a location indoors because a wireless device such as a WiFi or RFID device when used indoors generates much noise. GPS provides a relatively accurate location estimation but cannot be used indoors. Therefore a technique has been developed in which a camera is attached to a moving object to shot an image and the shot image is analyzed to predict the location.
Existing techniques related to this include techniques disclosed in WO2008/087974. WO2008/087974 relates to a technique to calculate positional relationship between multiple cameras and a technique to generate a user interface based on the calculated positional relationship and discloses calculation of the positions of multiple cameras based on a shot image without using GPS.
Hironobu Fujiyoshi, “Gradient-Based Feature Extraction: SIFT and HOG”, Information Processing Society of Japan Technical Report, CVIM [Computer Vision and Image Media], 2007, (87), 211-224, 2007-09-03 provides a summary of the SIFT algorithm and describes detection of extrema in a DoG image and HOG.
JP2011-53181A discloses orientation estimation using SIFT (Scale-Invariant Feature Transform) feature quantities in order to provide a reliable information terminal apparatus capable of estimating the orientation of a user and controlling display information on a display according to the result of the estimation without needing incorporation of a geomagnetic sensor.
SIFT is one of image feature extraction techniques and relates to detection of feature points and a method for calculating feature vectors around a feature point. Aside from this, Structure from Motion (SfM), which is a technique to reconstruct a three-dimensional positional relationship between singularity points and camera positions from an image is known. SfM is described in JP10-40385A, JP2009-237845A and JP2009-237847A, for example.
SfM is a technique in which feature points are extracted from an image, such as corners, and the intensities of 8×8 pixels around a feature point are arranged to simply generate a 64-bit feature vector or otherwise to calculate feature vectors from pixels around the feature point and matching is performed between a plurality of pixels. In this way, the three-dimensional position of the feature point and the position of the camera can be reconstructed at the same time.
To stably obtain SfM, a feature quantity calculation method that is robust to noise, that is, robust to fluctuations in an image, and robust to rotation and scaling of the image is required. However, the conventional methods have the problem of high calculation costs. To obtain SfM, generally an amount of calculation proportional to the number of pixels is required and therefore considerations to the calculation cost are essential.
In one embodiment, a feature extraction method for extracting a feature from an image by computer processing includes receiving an image and measured acceleration data from a mobile device including image acquiring means and acceleration measuring means; obtaining a gravity vector in the image in a camera coordinate system on a basis of the measured acceleration data; obtaining a vanishing point in the image in a vertical direction in a screen coordinate system by using the gravity vector; obtaining differential vectors along two axes for each of pixels in the screen coordinate system; obtaining a connection line vector connecting each of the pixels with the vanishing point; identifying a vertical edge on the basis of determination that an angle formed by the differential vector and the connection line vector is within a certain threshold range; obtaining the sum of strengths of vertical edges and writing the sum in a predetermined variable array; extracting a keypoint on the basis of the variable array; and calculating a feature quantity from the keypoint.
In another embodiment, a feature extraction program product for extracting a feature from an image by computer processing is disclosed, the program product causing a computer to perform: receiving an image and measured acceleration data from a mobile device including image acquiring means and acceleration measuring means; obtaining a gravity vector in the image in a camera coordinate system on the basis of the measured acceleration data; obtaining a vanishing point in the image in a vertical direction in a screen coordinate system by using the gravity vector; obtaining differential vectors along two axes for each of pixels in the screen coordinate system; obtaining a connection line vector connecting each of the pixels with the vanishing point; identifying a vertical edge on the basis of determination that an angle formed by the differential vector and the connection line vector is within a certain threshold range; obtaining the sum of strengths of vertical edges and writing the sum in a predetermined variable array; extracting a keypoint on the basis of the variable array; and calculating a feature quantity from the keypoint.
In another embodiment, a feature extraction system for extracting a feature from an image by computer processing includes means for receiving an image and measured acceleration data from a mobile device including image acquiring means and acceleration measuring means; means for obtaining a gravity vector in the image in a camera coordinate system on the basis of the measured acceleration data; means for obtaining a vanishing point in the image in a vertical direction in a screen coordinate system by using the gravity vector; means for obtaining differential vectors along two axes for each of pixels in the screen coordinate system; means for obtaining a connection line vector connecting each of the pixels with the vanishing point; means for identifying a vertical edge on the basis of determination that an angle formed by the differential vector and the connection line vector is within a certain threshold range; means for obtaining the sum of strengths of vertical edges and writing the sum in a predetermined variable array; means for extracting a keypoint on the basis of the variable array; and means for calculating a feature quantity from the keypoint.
In view of the above, it is desirable to provide a technique to obtain SfM fast and robustly. Embodiments of the present invention solve the problem by taking advantage of the fact that many features used in SfM are lines parallel to the direction of gravity, and that mobile devices such as smartphones include an acceleration sensor or a gyroscope.
According to embodiments the present invention, a computer system acting as a server receives an image and results of measurements with an acceleration sensor from a smartphone through a communication function.
The computer system first extracts only vertical edges from the image. For that purpose, the computer system uses the acceleration sensor to obtain a gravity vector in a camera coordinate system. The system then uses the gravity vector to obtain a vanishing point (u′, v′) in the vertical direction in a screen coordinate system.
The computer system then calculates differential vectors in u and v directions of intensity of each pixel (u, v) in the screen coordinate system. The computer system obtains a cos component formed by each difference vector and (U′-u, v′-v), normalizes the two vectors with a length of 1, then calculates the inner product of the vectors. If the absolute value of cos is greater than or equal to a certain threshold, the computer system determines that the pixel has a vertical edge.
The computer system then obtains the sum of edge strengths in the vertical direction for a set of edges located along the vertical direction. Specifically, the computer system transforms the screen coordinates (u, v) to camera coordinates, projects the two axes of screen coordinates (u, v) to one axis. The computer system calculates the absolute value of a differential vector at (u, v) and writes the absolute value in a table sum[q].
Once having provided sum[q], the computer system assume sum[q] to be a horizontally long image of w×1 and calculates extrema by using a DoG (difference of Gaussian) function. The computer system uses the extrema to calculate feature quantities.
According to embodiments of the present invention, edges along the vertical direction are detected from an image and results of measurements with an acceleration sensor received from a mobile device and the edges are used to extract features, therefore fast position estimation can be performed with a less amount of calculation. An exemplary embodiment of the present invention will be described with reference to drawings. Throughout the drawings, like reference numerals denote like items unless otherwise specified. It should be noted that the following is a description of one embodiment of the present invention and is not intended to limit the present invention to what is described with the exemplary embodiment.
An operator 106 takes an image of an interior scene of the room 102 with a smartphone 108 including an acceleration sensor and the function of camera and transmits the taken image data and measurement data of the acceleration sensor to a computer placed in the room through wireless communication.
The computer 110 receives the transmitted image data and measurement data of the acceleration sensor, extracts features by using the data, and performs a process for estimating the location. The computer 110 may be placed in a remote site, provided that the computer 110 has a configuration capable of receiving measurement data of the acceleration sensor and image data from the smartphone 108. In that case, information is transferred to the computer 110 placed in the remote site through a receiving station such as a WiFi station. Alternatively, a process for extracting features, which will be described later, may be performed inside the smartphone 108 since smartphones these days are powerful. For convenience of explanation, it is assumed in the following description of the exemplary embodiment that feature extraction and location estimation processes are performed on a computer 110 separate from the smartphone 108.
A communication interface 216 is also connected to the system bus 202. The communication interface 216 is capable of communicating with the smartphone 108 through an antenna 218 according to a standard, for example IEEE 802.11a/b/g. Note that the method for the computer 110 to receive data from the smartphone 108 is not limited to IEEE 802.11a/b/g; any method may be used such as packet communication.
An operating system is stored in the hard disk drive 208. The operating system may be any operating system that is compatible with the CPU 204, such as Linux™, Windows 7™ or Windows XP™ from Microsoft Corporation, or Mac OSC™ from Apple Computer, Inc.
Further stored in the hard disk drive 208 are a main program 302, a sum calculation routine 306, a DoG calculation and extrema detection routine 308 and feature quantity calculation routine 310, which will be described later with respect to
In
The main program 302 activates the sum calculation routine 306, the DoG calculation and extrema detection routine 308 and the feature quantity calculation routine 310 to initiate feature extraction based on the image data and measurement data of the acceleration sensor transmitted from the smartphone 108 according to embodiments of the present invention.
More specifically, the sum calculation routine 306 performs a process for calculating sum, which is a one-dimensional array, from the image data and measurement data of the acceleration sensor transmitted from the smartphone 180. The process of the sum calculation routine 306 will be described later in detail with reference to a flowchart in
The DoG calculation and extrema detection routine 308 uses a value of sum calculated by the sum calculation routine 306 to perform a process for calculating DoG (Difference of Gaussian) and detecting extrema. The process of the DoG calculation and extrema detection routine 308 will be described later in detail with reference to a flowchart in
The feature quantity calculation routine 310 performs a process for calculating feature quantities on the basis of extrema (keypoints) detected by the DoG calculation and extrema detection routine 308. The process of the feature quantity calculation routine 310 will be described later in detail with reference to a flowchart in
The process of the sum calculation routine 306 will be described below with reference to the flowchart of
The sum calculation routine 306 obtains a vanishing point u′, v′ at block 404. Specifically, the sum calculation routine 306 calculates a vanishing point u′, v′ according to the following formula:
u′=f*xg/zg+w/2
v′=−f*yg/zg+h/2
where w is the width of the image, h is the height of the image, f is the focal length, and Vg=(xg, yg, zg) is the vector of an acceleration value representing the direction of gravity received from the smartphone 108.
At block 406, the sum calculation routine 306 obtains du(u, v), dv(u, v), and dlen(u, v) for every pixel (u, v) according to the following formula:
Here, du(u, v) is a differential at (u, v) in the u direction and dv(u, v) is a differential at (u, v) in the v direction.
While each of the differentials calculated here is the average of a forward difference and a backward difference, any method for calculating differentials may be used as appropriate. For example, only a forward difference or only a backward difference may be calculated.
At block 408, the sum calculation routine 306 then obtains a cosine component c(u, v) of the angle formed by a vector (u′-u, v′-v) pointing to the vanishing point and (−dv(u, v), du(u, v)) for every pixel (u, v) according to the following formula:
The sum calculation routine 306 then obtains a point q(u, v) projected onto a level plane at block 410. More specifically, the sum calculation routine 306 first transforms the screen coordinates of a point to camera coordinates of the point according to V=(x, y, 1)=((u−w/2)/f, −(v−h/2)/f, 1).
The sum calculation routine 306 then provides a one-dimensional array, sum, at block 412.
The sum calculation routine 306 then performs a process from block 414 through 420 for every pixel (u, v). Specifically, the sum calculation routine 306 determines whether or not |c(u, v)|>threshold for a given pixel (u, v) and, if so, adds the value of dlen(u, v) by sum[q(u, v)]+=dlen(u, v). In this exemplary embodiment, the threshold is set at 0.95. Note that the value of dlen(u, v) has been calculated beforehand for every (u, v) at block 406.
Here, the value of sum[q(u, v)] is the sum of the strengths of vertical edges along a line that is a projection of a line on the screen that passes through q(u, v) and is perpendicular to the ground surface. q(u, v) represents a line that passes through q(u, v) and is perpendicular to the ground surface.
Once the process from block 414 through block 420 for all pixels (u, v) has been completed, the value of sum required for calculation DoG and detection of extrema is yielded.
The process of the DoG calculation and extrema detection routine 308 will be described next with reference to the flowchart of
At block 504, the DoG calculation and extrema detection routine 308 applies Gaussian smoothing to the sum with standard deviations σ=σ0, σ0k, σ0k2, σ0k3, . . . to obtain sum1, sum2, sum3, sum4, . . . .
Gaussian smoothing means performing the following convolution of function:
Here k is the number of the standard deviations σ and is set as k=21/s, where s is the number of the scales in scale-space. Here, it is assumed that σ0=1.6 and the number of scales s=3 on the basis of description in, for example, Hironobu Fujiyoshi, “Gradient-Based Feature Extraction: SIFT and HOG”, Information Processing Society of Japan Technical Report, CVIM [Computer Vision and Image Media], 2007, (87), 211-224, 2007-09-03.
At block 506, the DoG calculation and extrema detection routine 308 calculates difference images to obtain dog1, dog2, dog3, . . . as follows:
The process from block 508 through block 518 is performed for every combination of q and i. At block 510, the Dog calculation and extrema detection routine 308 determines whether or not dogi[q]<dogi′[q′]-d for all q′, i′ in the neighborhood of q, i, that is, whether or not dogi[q] is an extremum. If so, the DoG calculation and extrema detection routine 308 records q, i as a detected line at block 512. Note that q′, i′ in the neighborhood of q, i are q′, i′ within q±δ and i±δ. For example, δ=2 is chosen. For the value of d, a condition is set so that the greater the value of d, the sharper extremum is chosen.
When the DoG calculation and extrema detection routine 308 determines at block 510 that dogi[q]<dogi′[q′] holds for all q′, i′ in the neighborhood of q, i, the DoG calculation and extrema detection routine 308 records q, i as a detected line at block 512.
The process from block 508 through block 514 is performed for every combination of q, i to obtain all combinations of extrema (q, i). Letting σ be the standard deviation used for obtaining the value of the i-th DoG at an extremum (q, i), then (q, σ) is called a keypoint. For dogi=sumi+1−sumi, the standard deviation σ is a standard deviation in Gaussian smoothing of sumi+1 or sumi, for example.
The process of the feature quantity calculation routine 310 will be described next with reference to the flowchart of
The loop from block 602 to block 620 in
At block 604, the feature quantity calculation routine 310 obtains a line u=av+b on the screen for q according to the following formula:
xh=(q−w/2)/f
yh=−(xg*xh+zg)/yg
uh=q
vh=−yh*f+h/2
a=(uh−u′)/(vh−v′)
b=uh−a*vh
The loop from block 606 to block 614 is a process for v of each of 0, 1, 2, . . . , h.
The feature quantity calculation routine 310 uses a, b determined at block 604 to calculate u=av+b at block 608.
At block 610, the feature quantity calculation routine 310 determines whether or not (u, v) is a vertical edge. If not, the feature quantity calculation routine 310 skips the next block 612; if so, the feature quantity calculation routine 310 calculates def=I(u−σ, v)−I(u+σ, v) and dot (u, v). Here, dot(u, v) is the inner product of (u′-u, v′-v) and (−dv(u, v), du(u, v)) and σ is the standard deviation in Gaussian smoothing used in calculation of the keypoint.
The loop from block 606 to block 614 for each of v=0, 1, . . . , h is performed in this way to obtain def=I(u−σ, v)−I(u+σ, v) and dot (u, v) for each of v=0, 1, . . . , h. Then the feature quantity calculation routine 310 sorts def in descending order and adds up dot(u, v) corresponding to def. When the accumulated sum of dot exceeds one half of the total sum of dot, the value of def at that point is chosen as the median of def.
At block 618, the feature quantity calculation routine 310 then takes the two intensities of I(u−σ, v) and I(u+σ, v) at (u, v) corresponding to def chosen as the median at block 616 as the feature quantity of the line.
The process from block 602 through block 620 is performed for all keypoints (q, σ) in this way to obtain the feature quantities for all keypoints (q, σ).
The main program 302 uses the feature quantities for the keypoints (q, σ) obtained in this way to search for a line whose feature quantity matches a feature quantity extracted from an existing image. Once matching of lines in the query image and in the existing image has been completed, Bundle Adjustment can be used to estimate the location of the smartphone 108.
While an example in which acceleration data and image data are acquired from a smartphone including an acceleration sensor and the function of camera has been described, the present invention is not limited to smartphones. The present invention can be used with any device that includes the function of measuring acceleration and the function of camera. Furthermore, acceleration may be measured with a gyroscope instead of an acceleration sensor.
Instead of WiFi, any wireless communication technique may be used for transmitting acceleration data and image data to the computer. Wired communication may also be used.
Data acquired from the acceleration sensor and camera of a smartphone are used and then the processes are performed on a separate computer to which the data have been transmitted to extract feature quantities or estimating the location in the exemplary embodiment described above. However, considering the processing power and specifications of recent smartphones, part or all of the processes performed on the separate computer may be performed on the smartphone.
Furthermore, the computer for processing acceleration data and image data is not limited to particular hardware or a particular operating system; any computer with any platform can be used.
Patent | Priority | Assignee | Title |
Patent | Priority | Assignee | Title |
6091833, | Aug 28 1996 | MATSUSHITA ELECTRIC INDUSTRIAL CO , LTD | Local positioning apparatus, and a method therefor |
7961909, | Mar 08 2006 | Electronic Scripting Products, Inc. | Computer interface employing a manipulated object with absolute pose detection component and a display |
8212878, | Jun 29 2006 | HITACHI ASTEMO, LTD | Calibration apparatus of on-vehicle camera, program, and car navigation system |
8411900, | Sep 17 2008 | HITACHI ASTEMO, LTD | Device for detecting/judging road boundary |
20050232467, | |||
20060078214, | |||
20070002015, | |||
20100208057, | |||
20120026322, | |||
20120033083, | |||
JP1040385, | |||
JP2004294421, | |||
JP2008046750, | |||
JP2009140149, | |||
JP2009237845, | |||
JP2009237847, | |||
JP2010067090, | |||
JP2011053181, | |||
JP2011113197, | |||
JP2012127896, | |||
JP2012151653, | |||
WO2008087974, |
Executed on | Assignor | Assignee | Conveyance | Frame | Reel | Doc |
Aug 13 2013 | International Business Machines Corporation | (assignment on the face of the patent) | / | |||
Aug 13 2013 | TAKAHASHI, TOSHIHIRO | International Business Machines Corporation | ASSIGNMENT OF ASSIGNORS INTEREST SEE DOCUMENT FOR DETAILS | 030997 | /0427 |
Date | Maintenance Fee Events |
Jan 15 2019 | M1551: Payment of Maintenance Fee, 4th Year, Large Entity. |
Mar 13 2023 | REM: Maintenance Fee Reminder Mailed. |
Aug 28 2023 | EXP: Patent Expired for Failure to Pay Maintenance Fees. |
Date | Maintenance Schedule |
Jul 21 2018 | 4 years fee payment window open |
Jan 21 2019 | 6 months grace period start (w surcharge) |
Jul 21 2019 | patent expiry (for year 4) |
Jul 21 2021 | 2 years to revive unintentionally abandoned end. (for year 4) |
Jul 21 2022 | 8 years fee payment window open |
Jan 21 2023 | 6 months grace period start (w surcharge) |
Jul 21 2023 | patent expiry (for year 8) |
Jul 21 2025 | 2 years to revive unintentionally abandoned end. (for year 8) |
Jul 21 2026 | 12 years fee payment window open |
Jan 21 2027 | 6 months grace period start (w surcharge) |
Jul 21 2027 | patent expiry (for year 12) |
Jul 21 2029 | 2 years to revive unintentionally abandoned end. (for year 12) |