-
Technisches Gebiet
-
Die vorliegende Erfindung bezieht sich auf eine Methode zum Extrahieren von Merkmalmengen aus einem Bild, um eine Standortschätzung durchzuführen.
-
Hintergrund
-
In den vergangenen Jahren ist eine steigende Nachfrage nach Methoden zum Schätzen von Standorten in Innenräumen zu beobachten, um den Verlauf des Kundenverkehrs an Orten wie Einkaufszentren und öffentlichen Einrichtungen zu analysieren und den Warenbestand zu kontrollieren.
-
Ein Standort lässt sich in einem Innenraum nur schwer genau schätzen, da eine drahtlose Einheit wie z.B. eine WLAN- oder RFID-Einheit bei der Nutzung in Innenräumen stark rauscht. GPS (Global Positioning System, Globales Positionsbestimmungssystem) stellt eine vergleichsweise genaue Standortschätzung bereit, kann jedoch in Innenräumen nicht genutzt werden. Aus diesem Grund rückte eine Methode ins Blickfeld, bei der eine Kamera an einem sich bewegenden Objekt befestigt ist, um ein Bild aufzunehmen, und das aufgenommene Bild analysiert wird, um Aussagen zu dem Standort zu treffen.
-
Hiermit in Zusammenhang stehende, existierende Methoden beinhalten Methoden, wie sie in
WO2008/087974 offenbart werden.
WO2008/087974 bezieht sich auf eine Methode zum Berechnen einer Positionsbeziehung zwischen mehreren Kameras und eine Methode zum Erzeugen einer Benutzeroberfläche auf der Grundlage der berechneten Positionsbeziehung und offenbart eine Berechnung der Positionen mehrerer Kameras auf der Grundlage eines aufgenommenen Bilds ohne Verwendung von 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), Seiten 211 bis 224, 03.September 2007, stellt eine Zusammenfassung des SIFT-Algorithmus (Scale-Invariant Feature Transform, skaleninvariante Merkmaltransformation) bereit und beschreibt die Erkennung von Extremwerten in einem DoG-Bild (Difference of Gaussian, Differenz von zwei Gaußkernen) und in HOG (Histograms of Oriented Gradients, Histogramme von orientierten Gradienten).
-
Die Veröffentlichung „Computation of ego-motion and structure from Visual and Internal Sensors Using the Vertical Cue” betrifft ein Verfahren zur Gewinnung von Ansichten einer 3D-Struktur und Bewegung einer Szene für den Fall eines virtuellen, sich bewegenden Beobachters mit visuellen und odometrischen Sensoren. Der Beobachter versucht, eine 3D-Tiefen- und kinematische Karte seiner Umgebung zu bilden, die fixierte oder bewegte Objekte umfassen kann. Dabei werden Vertikalen im Bild zur Structure from Motion – Bildung genutzt, wobei die Schwerkraft als Indikator für die vertikale Achse dient, und es wird ferner der Umstand genutzt, dass sich vertikale Linien in einem Fluchtpunkt schneiden (Viéville, Thierry; Clergue, Emmanuelle; Facao, P.E. Dos Santos: „Computation of ego-motion and structure from Visual and Internal Sensors Using the Vertical Cue"; Computer Vision, 1993 Proceedings, Fourth International Conference on IEEE, 1993, S. 5.).
-
JP2011-53181 A offenbart eine Orientierungsschätzung unter Verwendung von SIFT-Merkmalmengen, um eine zuverlässige Informationsterminal-Vorrichtung bereitzustellen, die in der Lage ist, die Orientierung eines Benutzers zu schätzen und Anzeige-Informationen auf einer Anzeige gemäß dem Ergebnis der Schätzung zu steuern, ohne dass hierfür ein geomagnetischer Sensor einbezogen werden muss.
-
SIFT ist eine von mehreren Methoden zur Extraktion von Bildmerkmalen und bezieht sich auf eine Erkennung von Merkmalpunkten und ein Verfahren zum Berechnen von Merkmalvektoren um einen Merkmalpunkt. Bekannt ist daneben auch SfM (Structure from Motion, Struktur aus Bewegung), wobei es sich um eine Methode handelt, um aus einem Bild eine dreidimensionale Positionsbeziehung zwischen Singularitätspunkten und Kamerapositionen zu rekonstruieren. SfM wird z.B. in
JP10-40385A ,
JP2009-237845A und
JP2009-237847A beschrieben.
-
SfM ist eine Methode, bei der Merkmalpunkte wie z.B. Ecken aus einem Bild extrahiert und die Intensitätswerte von 8 × 8 Bildpunkten um einen Bildpunkt herum so angeordnet werden, dass auf einfache Weise ein 64-Bit-Merkmalvektor erzeugt wird oder dass andernfalls Merkmalvektoren aus Bildpunkten um den Merkmalpunkt herum berechnet werden, sowie ein Abgleich einer Vielzahl von Bildpunkten durchgeführt wird. Auf diese Weise können die dreidimensionale Position des Merkmalpunkts und die Position der Kamera zur gleichen Zeit rekonstruiert werden.
-
Für einen stabilen SfM-Erhalt ist ein Verfahren zur Merkmalmengenberechnung erforderlich, das widerstandsfähig gegenüber Rauschen ist, d.h. das widerstandsfähig gegenüber Schwankungen in einem Bild sowie widerstandsfähig gegenüber einer Drehung und Skalierung des Bilds ist. Bei herkömmlichen Verfahren besteht hier jedoch das Problem eines hohen Berechnungsaufwands. Für einen SfM-Erhalt ist im Allgemeinen ein Ausmaß an Berechnung erforderlich, das proportional zu der Anzahl von Bildpunkten ist, weshalb Überlegungen zum Berechnungsaufwand von grundlegender Bedeutung sind.
-
Liste der Anführungen
-
Patentliteratur
-
- Patentliteratur 1 WO2008/087974
- Patentliteratur 2 JP2011-53181A
- Patentliteratur 3 JP10-40385A
- Patentliteratur 4 JP2009-237845A
- Patentliteratur 5 JP2009-237847A
-
Nichtpatentliteratur
-
Nichtpatentliteratur 1 Hironobu Fujiyoshi, „Gradient-Based Feature Extraction: SIFT and HOG", Information Processing Society of Japan Technical Report, CVIM [Computer Vision and Image Media], 2007, (87), Seiten 211 bis 224, 03. September 2007
-
Kurzdarstellung der Erfindung
-
Technische Problemstellung
-
Eine Aufgabe der vorliegenden Erfindung besteht somit darin, eine Methode für einen schnellen und widerstandsfähigen SfM-Erhalt bereitzustellen.
-
Problemlösung
-
Die vorliegende Erfindung löst das Problem, indem sie sich die Tatsache zunutze macht, dass viele bei SfM verwendete Merkmale Linien sind, die parallel zur Richtung der Schwerkraft verlaufen, und dass mobile Einheiten wie beispielsweise Smartphones einen Beschleunigungssensor bzw. ein Gyroskop beinhalten.
-
Gemäß der vorliegenden Erfindung empfängt ein als ein Server dienendes Computersystem von einem Smartphone über eine Datenübertragungsfunktion ein Bild und Ergebnisse von Messungen mit einem Beschleunigungssensor.
-
Das Computersystem extrahiert zunächst nur vertikale Kanten aus dem Bild. Zu diesem Zweck verwendet das Computersystem den Beschleunigungssensor, um einen Schwerkraftvektor in einem Kamerakoordinatensystem zu erhalten. Anschließend verwendet das System den Schwerkraftvektor, um in der vertikalen Richtung eines Bildschirmkoordinatensystems einen Fluchtpunkt (u', v') zu erhalten.
-
Danach berechnet das Computersystem in u- und v-Richtungen des Bildschirmkoordinatensystems Differenzvektoren einer Intensität eines jeden Bildpunkts (u, v). Das Computersystem erhält eine cos-Komponente, die durch jeden Differenzvektor und (U' - u, v' - v) gebildet wird, normalisiert die beiden Vektoren mit einer Länge von 1 und berechnet im Anschluss daran das innere Produkt der Vektoren. Wenn der absolute Wert von cos größer als oder gleich einem bestimmten Schwellenwert ist, stellt das Computersystem fest, dass der Bildpunkt eine vertikale Kante aufweist.
-
Danach erhält das Computersystem die Summe von Kantenstärken in der vertikalen Richtung für einen Satz von Kanten, der entlang der vertikalen Richtung angeordnet ist. Genauer gesagt wandelt das Computersystem die Bildschirmkoordinaten (u, v) in Kamerakoordinaten um und projiziert die beiden Achsen von Bildschirmkoordinaten (u, v) auf eine Achse. Das Computersystem berechnet den absoluten Wert eines Differenzvektors bei (u, v) und schreibt den absoluten Wert in eine Tabelle sum[q].
-
Nach der Bereitstellung von sum[q] nimmt das Computersystem an, dass sum[q] ein in horizontaler Richtung gestrecktes Bild mit w × 1 ist, und berechnet anhand einer DoG-Funktion Extremwerte. Das Computersystem verwendet die Extremwerte zum Berechnen von Merkmalmengen.
-
Vorteilhafte Wirkung der Erfindung
-
Gemäß der vorliegenden Erfindung werden Kanten entlang der vertikalen Richtung aus einem Bild erkannt und Ergebnisse von Messungen mit einem Beschleunigungssensor von einer mobilen Einheit empfangen, und die Kanten werden zum Extrahieren von Merkmalen verwendet, so dass eine schnelle Positionsschätzung mit einem geringeren Berechnungsaufwand durchgeführt werden kann.
-
Figurenliste
-
- 1 ist eine Darstellung, die eine Erlangung von Beschleunigungsdaten und Bilddaten unter Verwendung eines Smartphones und eine Übertragung der Daten an den Computer zur Verarbeitung in einem Innenraum veranschaulicht;
- 2 ist ein Blockschaubild, das ein Beispiel einer Hardware eines Computers veranschaulicht, das mit der vorliegenden Erfindung verwendet werden kann;
- 3 ist ein Funktionsblockschaubild eines Prozesses gemäß der vorliegenden Erfindung;
- 4 ist ein Ablaufplan eines Prozesses zum Berechnen von sum;
- 5 ist ein Ablaufplan eines Prozesses zum Berechnen von DoG und Erkennen von Extremwerten;
- 6 ist ein Ablaufplan eines Prozesses zum Berechnen einer Merkmalmenge;
- 7 ist eine Darstellung, die eine Beziehung zwischen einem Kamerakoordinatensystem, einem Bildschirm und der Richtung der Schwerkraft veranschaulicht;
- 8 ist eine Darstellung, die ein Verfahren veranschaulicht, um Koordinaten eines Bildpunkts auf zwei Achsen auf eine Achse zu projizieren, die orthogonal zur Richtung der Schwerkraft verläuft;
- 9 ist eine Darstellung, die eine Projektion von Linien, welche Bildpunkte mit einem Fluchtpunkt verbinden und senkrecht zu einer Bodenoberfläche verlaufen, auf einen Bildschirm veranschaulicht; und
- 10 ist eine Darstellung, die extrahierte Schlüsselpunkte in einem Bild veranschaulicht.
-
Beschreibung der Ausführungsformen
-
Mit Blick auf die Zeichnungen wird eine als Beispiel dienende Ausführungsform der vorliegenden Erfindung beschrieben. Sofern nicht anderweitig festgelegt, bezeichnen gleichlautende Bezugsziffern gleichartige Elemente. Dabei sei darauf verwiesen, dass die folgenden Erörterungen eine Beschreibung einer Ausführungsform der vorliegenden Erfindung sind und die vorliegende Erfindung nicht auf das beschränken sollen, was in Zusammenhang mit der als Beispiel dienenden Ausführungsform beschrieben wird.
-
1 ist eine Darstellung, die eine allgemeine Konfiguration eines Beispiels zum Durchführen der vorliegenden Erfindung schematisch veranschaulicht. In 1 befinden sich standortbezogene Merkmalobjekte wie z.B. ein Schrank 104 in einem Raum 102.
-
Eine Bedienperson 106 macht mit einem Smartphone 108, das einen Beschleunigungssensor und die Funktion einer Kamera beinhaltet, eine Aufnahme von einer Innenraumszene des Raums 102 und überträgt die Daten des aufgenommenen Bilds und Messdaten des Beschleunigungssensors mittels drahtloser Datenübertragung an einen Computer, der sich in dem Raum befindet.
-
Der Computer 110 empfängt die übertragenen Bilddaten und Messdaten des Beschleunigungssensors, extrahiert anhand der Daten Merkmale und führt einen Prozess zum Schätzen des Standorts durch. Der Computer 110 kann sich an einem entfernten Ort befinden, sofern der Computer 110 eine Konfiguration aufweist, die in der Lage ist, Messdaten des Beschleunigungssensors und Bilddaten von dem Smartphone 108 zu empfangen. In diesem Fall werden die Daten über eine Empfangsstation wie z.B. eine WLAN-Station an den Computer 110 übertragen, der sich an einem entfernten Ort befindet. Alternativ dazu kann in dem Smartphone 108 ein später beschriebener Prozess zum Extrahieren von Merkmalen durchgeführt werden, da heutige Smartphones eine hohe Leistungsfähigkeit aufweisen. Um die Erläuterung zu vereinfachen, sollen die Prozesse zur Merkmalextraktion und Positionsschätzung in der folgenden Beschreibung der als Beispiel dienenden Ausführungsform auf einem Computer 110 durchgeführt werden, der von dem Smartphone 108 getrennt ist.
-
2 ist ein Blockschaubild, das eine Hardwarekonfiguration des Computers 110 veranschaulicht. In 2 sind eine Zentraleinheit 204 (Central Processing Unit, CPU), ein Hauptspeicher (Random Access Memory, RAM) 206, ein Festplattenlaufwerk (Hard Disk Drive, HDD) 208, eine Tastatur 210, eine Maus 212 und eine Anzeige 214 mit einem Systembus 202 verbunden. Die CPU 204 beruht vorzugsweise auf einer 32-Bit- oder 64-Bit-Architektur und kann z.B. ein Core (Handelsmarke) i7 oder Core (Handelsmarke) i5 der Intel Corporation oder ein AMD Athlon (Handelsmarke) II sein. Der Hauptspeicher 206 hat vorzugsweise eine Kapazität von mindestens 4 GB.
-
Eine Datenübertragungsschnittstelle 216 ist ebenfalls mit dem Systembus 202 verbunden. Die Datenübertragungsschnittstelle 216 ist in der Lage, über eine Antenne 218 gemäß einem Standard wie beispielsweise IEEE 802.11a/b/g mit dem Smartphone 108 Daten auszutauschen. Dabei ist zu beachten, dass das Verfahren, mit dem der Computer 110 Daten von dem Smartphone 108 empfängt, nicht auf IEEE 802.11a/b/g beschränkt ist; vielmehr kann jedes beliebige Verfahren wie z.B. eine Paketdatenübertragung verwendet werden.
-
Auf dem Festplattenlaufwerk 208 ist ein Betriebssystem gespeichert. Bei dem Betriebssystem kann es sich um ein beliebiges mit der CPU 204 kompatibles Betriebssystem handeln, z.B. Linux (Handelsmarke), Windows 7 (Handelsmarke) bzw. Windows XP (Handelsmarke) der Microsoft Corporation oder Mac OSC (Handelsmarke) von Apple Computer Inc.
-
Auf dem Festplattenlaufwerk 208 sind des Weiteren ein Hauptprogramm 302, eine Routine 306 zur Berechnung von sum, eine Routine 308 zur DoG-Berechnung und Extremwerterkennung sowie eine Routine 310 zur Merkmalmengenberechnung gespeichert, die weiter unten mit Blick auf 3 beschrieben werden. Die Programme/Routinen können in einer beliebigen vorhandenen Programmsprache wie z.B. C, C++ und Java (R) geschrieben sein.
-
3 ist ein Blockschaubild einer Softwarekonfiguration eines Teils des Computers 110, die Funktionen in Zusammenhang mit der vorliegenden Erfindung ausführt.
-
In 3 wird als Reaktion auf eine Betätigung der Tastatur 210 oder der Maus 210 das Hauptprogramm 302 aktiviert, empfängt über einen Mechanismus wie z.B. WLAN anhand der Funktion des Datenübertragungsmoduls 304 Bilddaten und Messdaten des Beschleunigungssensors von dem Smartphone 108 und speichert die Daten vorzugsweise auf dem Festplattenlaufwerk 208.
-
Das Hauptprogramm 302 aktiviert die Routine 306 zur Berechnung von sum, die Routine 308 zur DoG-Berechnung und Extremwerterkennung und die Routine 310 zur Merkmalmengenberechnung, um gemäß der vorliegenden Erfindung auf der Grundlage der Bilddaten und Messdaten des Beschleunigungssensors, die von dem Smartphone 108 übertragen wurden, eine Merkmalextraktion zu beginnen.
-
Genauer gesagt, führt die Routine 306 zur Berechnung von sum einen Prozess durch, um sum, bei dem es sich um ein eindimensionales Array handelt, aus den Bilddaten und Messdaten des Beschleunigungssensors zu berechnen, die von dem Smartphone 180 übertragen wurden. Der Prozess der Routine 306 zur Berechnung von sum wird weiter unten mit Blick auf einen Ablaufplan in 4 ausführlich erläutert.
-
Die Routine 308 zur DoG-Berechnung und Extremwerterkennung verwendet einen Wert von sum, der durch die Routine 306 zur Berechnung von sum berechnet wurde, um einen Prozessor zum Berechnen von DoG und Erkennen von Extremwerten durchzuführen. Der Prozess der Routine 308 zur DoG-Berechnung und Extremwerterkennung wird weiter unten mit Blick auf einen Ablaufplan in 5 beschrieben.
-
Die Routine 310 zur Merkmalmengenberechnung führt einen Prozess zum Berechnen von Merkmalmengen auf der Grundlage von Extremwerten (Schlüsselpunkten) durch, die durch die Routine 308 zur DoG-Berechnung und Extremwerterkennung erkannt wurden. Der Prozess der Routine 310 zur Merkmalmengenberechnung wird weiter unten mit Blick auf einen Ablaufplan in 6 ausführlich beschrieben.
-
Der Prozess der Routine 306 zur Berechnung von sum wird im Folgenden mit Blick auf den Ablaufplan aus 4 beschrieben. Wie in Schritt 402 veranschaulicht, wird die Routine 306 zur Berechnung von sum durch das Hauptprogramm 302 aufgerufen, wobei die Intensitätswerte I(u, v) eines Bilds und ein Schwellenwert als Argumente verwendet werden. Dabei ist jeder der Intensitätswerte I(u, v) des Bilds die Intensität eines Bildpunkts an Bildpunktkoordinaten (x, y) = (u, v). In einer als Beispiel dienenden Ausführungsform wird der Schwellenwert auf einen Wert von 0,95 gesetzt.
-
Die Routine
306 zur Berechnung von sum erhält in Schritt 404 einen Fluchtpunkt u', v'. Genauer gesagt berechnet die Routine
306 zur Berechnung von sum einen Fluchtpunkt u', v' gemäß der folgenden Formel:
wobei w die Breite des Bilds, h die Höhe des Bilds, f die Brennweite und V
g = (x
g, y
g, z
g) der Vektor eines Beschleunigungswerts ist, der die von dem Smartphone
108 empfangene Richtung der Schwerkraft angibt.
-
In Schritt 406 erhält die Routine
306 für die Berechnung von sum gemäß der folgenden Formel du(u, v), dv(u, v) und dlen(u, v) für jeden Bildpunkt (u, v):
-
Dabei ist du(u, v) ein Differenzial bei (u, v) in u-Richtung, und dv(u, v) ist ein Differenzial bei (u, v) in v-Richtung.
-
Obwohl jedes der hier berechneten Differenziale der Mittelwert aus einer Vorwärtsdifferenz und einer Rückwärtsdifferenz ist, kann gegebenenfalls jedes beliebige Verfahren zum Berechnen von Differenzialen verwendet werden. So kann z.B. nur eine Vorwärtsdifferenz oder nur eine Rückwärtsdifferenz berechnet werden.
-
Danach erhält die Routine
306 zur Berechnung von sum in Schritt 408 gemäß der folgenden Formel für jeden Bildpunkt (u, v) eine Cosinuskomponente c(u, v) des Winkels, der von einem auf den Fluchtpunkt zeigenden Vektor (u' - u, v' - v) und (-dv(u, v), du(u, v)) gebildet wird:
-
Im Anschluss daran erhält die Routine 306 zur Berechnung von sum in Schritt 410 einen auf eine plane Ebene projizierten Punkt q(u, v). Genauer gesagt wandelt die Routine 306 zur Berechnung von sum zunächst gemäß V = (x, y, 1) = ((u - w/2)/f, - (v - h/2)/f, 1) die Bildschirmkoordinaten eines Punkts in Kamerakoordinaten des Punkts um. 7 ist eine Darstellung, die eine Beziehung zwischen dem Kamerakoordinatensystem, dem Bildschirm und der Richtung der Schwerkraft auf schematische Weise veranschaulicht. Die Routine 306 zur Berechnung von sum erhält daraufhin eine Position, an der eine durch Vh = (xh, yh, 1) = V - Vg*<V, Vg>/<Vg, Vg> und (xg/zg, yg/zg, 1) verlaufende Linie Vg auf dem Bildschirm (z = 1) orthogonal schneidet, und rundet die x-Koordinate xh von Vh auf die nächste Ganzzahl ab, um einen Wert q(u, v) zu erhalten. Somit ist q(u, v) = (int) xh. Dabei steht <V, Vg> für das innere Produkt der Vektoren V und Vg. 8 veranschaulicht auf schematische Weise die Projektion zum Erhalt von q(u, v).
-
Die Routine 306 zur Berechnung von sum stellt danach in Schritt 412 ein eindimensionales Array, sum, bereit.
-
Danach führt die Routine 306 zur Berechnung von sum für jeden Bildpunkt (u, v) einen Prozess von Schritt 414 bis einschließlich Schritt 420 durch. Genauer gesagt, ermittelt die Routine 306 zur Berechnung von sum, ob |c(u, v)| größer als ein Schwellenwert für einen gegebenen Bildpunkt (u, v) ist, und addiert, falls dies der Fall ist, den Wert von dlen(u, v) durch sum[q(u, v)] += dlen(u, v). In dieser als Beispiel dienenden Ausführungsform ist der Schwellenwert auf einen Wert von 0,95 gesetzt. Dabei ist zu beachten, dass der Wert von dlen(u, v) zuvor in Schritt 406 für jeden Bildpunkt (u, v) berechnet wurde.
-
Dabei ist der Wert von sum[q(u, v)] die Summe der Stärken vertikaler Kanten entlang einer Linie, die eine Projektion einer Linie auf dem Bildschirm ist, welche durch q(u, v) verläuft und senkrecht zur Bodenoberfläche ist. q(u, v) steht für eine Linie, die durch q(u, v) verläuft und senkrecht zur Bodenoberfläche ist.
-
Nachdem der Prozess aus Schritt 414 bis einschließlich Schritt 420 für alle Bildpunkte (u, v) abgeschlossen wurde, ergibt sich der Wert von sum, der für die Berechnung von DoG und die Erkennung von Extremwerten benötigt wird.
-
Der Prozess der Routine 308 zur DoG-Berechnung und Extremwerterkennung wird nun mit Blick auf den Ablaufplan aus 5 beschrieben. Wie in Schritt 502 veranschaulicht, wird die Routine 308 zur DoG-Berechnung und Extremwerterkennung durch das Hauptprogramm 302 aufgerufen, wobei als Eingaben die durch die Routine 306 zur Berechnung von sum berechnete Summe und ein Parameter d verwendet werden.
-
In Schritt 504 wendet die Routine 308 zur DoG-Berechnung und Extremwerterkennung unter Verwendung von Standardabweichungen σ = σ0, σ0k, σ0k2, σ0k3, ... eine Gauß-Glättung auf die Summe an, um sum1, sum2, sum3, sum4, ... zu erhalten.
-
Bei der Gauß-Glättung wird die Funktion wie folgt gefaltet:
-
Dabei ist k die Anzahl der Standardabweichungen σ und wird als k = 21/s definiert, wobei s die Anzahl der Skalen im Skalenraum ist. Im vorliegenden Fall soll σ0 = 1,6 und die Anzahl von Skalen s = 3 sein, z.B. auf der Grundlage von Hironobu Fujiyoshi, „Gradient-Based Feature Extraction: SIFT and HOG", Information Processing Society of Japan Technical Report, CVIM [Computer Vision and Image Media], 2007, (87), Seiten 211 bis 224, 03. September 2007.
-
In Schritt 506 berechnet die Routine
308 zur DoG-Berechnung und Extremwerterkennung wie folgt Differenzbilder, um dog
1, dog
2, dog
3, ... zu erhalten:
-
Der Prozess von Schritt 508 bis einschließlich Schritt 518 wird für jede Kombination von q und i durchgeführt. In Schritt 510 ermittelt die Routine 308 zur DoG-Berechnung und Extremwerterkennung, ob dogi[q] < dogi'[q'] - d für alle Werte q', i' in der Nachbarschaft von q, i liegt, d.h. ob dogi[q] ein Extremwert ist. Wenn dies der Fall ist, protokolliert die Routine 308 zur DoG-Berechnung und Extremwerterkennung q, i in Schritt 512 als eine erkannte Linie. Dabei ist zu beachten, dass die Lage von q', i' in der Nachbarschaft von q, i bedeutet, dass die Werte q', i' innerhalb von q ± δ und i ± δ liegen. Für δ wird beispielsweise ein Wert von 2 ausgewählt. Für den Wert d wird eine Bedingung definiert, so dass bei steigendem Wert von d der schärfere Extremwert gewählt wird.
-
Wenn die Routine 308 zur DoG-Berechnung und Extremwerterkennung in Schritt 510 ermittelt, dass dogi[q] < dogi'[q'] für alle Werte q', i' in der Nachbarschaft von q, i, zutrifft, protokolliert die Routine 308 zur DoG-Berechnung und Extremwerterkennung q, i in Schritt 512 als eine erkannte Linie.
-
Der Prozess von Schritt 508 bis einschließlich Schritt 514 wird für jede Kombination von q, i durchgeführt, um alle Kombinationen von Extremwerten (q, i) zu erhalten. Wenn σ als die Standardabweichung für den Erhalt des Werts der i-ten DoG bei einem Extremwert (q, i) verwendet wird, wird (q, σ) als ein Schlüsselpunkt bezeichnet. Für dogi = sumi+1 - sumi ist die Standardabweichung σ z.B. eine Standardabweichung bei einer Gauß-Glättung von sumi+1 oder sumi.
-
10 veranschaulicht als Beispiel dienende Schlüsselpunkte, die in einem Bild extrahiert werden.
-
Als Nächstes wird mit Blick auf den Ablaufplan aus 6 der Prozess der Routine 310 zu Merkmalmengenberechnung beschrieben. Die Routine 310 zu Merkmalmengenberechnung wird durch das Hauptprogramm 302 aufgerufen, wobei als Eingaben die Werte (q, σ) aller Schlüsselpunkte verwendet werden. Die Routine 310 zur Merkmalmengenberechnung führt eine Merkmalextraktion auf der Grundlage von HoG (Histograms of Oriented Gradients, Histogramme von orientierten Gradienten) durch, wie beschrieben in Hironobu Fujiyoshi, „Gradient-Based Feature Extraction: SIFT and HOG“, Information Processing Society of Japan Technical Report, CVIM [Computer Vision and Image Media], 2007, (87), Seiten 21 1 bis 224, 03. September 2007.
-
Die Schleife von Schritt 602 zu Schritt 620 in 6 ist ein Prozess für jeden Wert (p, σ) eines jeden Schlüsselwerts. Dabei ist σ eine Standardabweichung bei der Gauß-Glättung von sumi+1 oder sumi, die zur Berechnung von dogi bei einem Extremwert (q, i) verwendet wird.
-
In Schritt 604 erhält die Routine
310 zur Merkmalmengenberechnung für q gemäß der folgenden Formel eine Linie u = av + b auf dem Bildschirm:
-
Die Schleife von Schritt 606 zu Schritt 614 ist ein Prozess für v für jeden Wert 0, 1, 2, ..., h.
-
Die Routine 310 zur Merkmalmengenberechnung verwendet den in Schritt 604 bestimmten Wert a, b, um in Schritt 608 u = av + b zu berechnen.
-
In Schritt 610 ermittelt die Routine 310 zur Merkmalmengenberechnung, ob (u, v) eine vertikale Kante ist. Falls nein, überspringt die Routine 310 zur Merkmalmengenberechnung den darauffolgenden Schritt 612; falls ja, berechnet die Routine 310 zur Merkmalmengenberechnung def = I(u - σ, v) - I(u + σ, v) und dot (u, v). Dabei ist dot(u, v) das innere Produkt von (u' - u, v' - v) und (-dv(u, v), du(u, v)), und σ ist die Standardabweichung bei einer Gauß-Glättung, die zur Berechnung des Schlüsselpunkts verwendet wird.
-
Die Schleife von Schritt 606 zu Schritt 614 wird auf diese Weise für jeden Wert v = 0, 1, ..., h durchgeführt, um def = I(u - σ, v) - I(u + σ, v) und dot (u, v) für jeden Wert v = 0, 1, ..., h zu erhalten. Danach sortiert die Routine 310 zur Merkmalmengenberechnung def in absteigender Reihenfolge und summiert dot(u, v) entsprechend def. Wenn die Gesamtsumme von dot größer als die Hälfte der Gesamtsumme von dot ist, wird der Wert von def an dieser Stelle als Median von def ausgewählt.
-
In Schritt 618 verwendet die Routine 310 zur Merkmalmengenberechnung dann die beiden Intensitätswerte I(u - σ, v) und I(u + σ, v) bei (u, v), die dem in Schritt 616 als Median ausgewählten def entsprechen, als die Merkmalmenge der Linie.
-
Der Prozess von Schritt 602 bis einschließlich 620 wird auf diese Weise für alle Schlüsselpunkte (q, σ) durchgeführt, um die Merkmalmengen für alle Schlüsselpunkte (q, σ) zu erhalten.
-
Das Hauptprogramm 302 verwendet die dergestalt für die Schlüsselpunkte (q, σ) erhaltenen Merkmalmengen, um eine Linie zu suchen, deren Merkmalmenge mit einer Merkmalmenge übereinstimmt, die aus einem vorhandenen Bild extrahiert wurde. Nachdem der Abgleich von Linien in dem Abfragebild und dem bestehenden Bild abgeschlossen wurde, kann mittels Bündelausgleichung der Standort des Smartphones 108 geschätzt werden.
-
Obwohl ein Beispiel beschrieben wurde, bei dem Beschleunigungsdaten und Bilddaten von einem Smartphone erlangt werden, das einen Beschleunigungssensor und die Funktion einer Kamera beinhaltet, ist die vorliegende Erfindung nicht auf Smartphones beschränkt. Die vorliegende Erfindung kann mit jeder Einheit verwendet werden, welche die Funktion einer Beschleunigungsmessung und die Funktion einer Kamera beinhaltet. Darüber hinaus kann eine Beschleunigung anstelle eines Beschleunigungssensors mit einem Gyroskop gemessen werden.
-
Anstelle von WLAN kann jede beliebige drahtlose Datenübertragungsmethode verwendet werden, um Beschleunigungsdaten und Bilddaten an den Computer zu übertragen. Auch eine verdrahtete Datenübertragung kann verwendet werden.
-
Von dem Beschleunigungssensor und der Kamera eines Smartphones erlangte Daten werden verwendet, und anschließend werden die Prozesse auf einem getrennten Computer durchgeführt, an den die Daten übertragen wurden, um in der oben beschriebenen, als Beispiel dienenden Ausführungsform Merkmalmengen zu extrahieren oder den Standort zu schätzen. Angesichts der Verarbeitungsleistung und der technischen Daten moderner Smartphones können die auf dem getrennten Computer durchgeführten Prozesse allerdings auch teilweise oder in ihrer Gesamtheit auf dem Smartphone durchgeführt werden.
-
Des Weiteren ist der Computer zum Verarbeiten von Beschleunigungsdaten und Bilddaten nicht auf bestimmte Hardware oder ein bestimmtes Betriebssystem beschränkt; vielmehr kann jeder Computer mit jeder Plattform verwendet werden.
-
Bezugszeichenliste
-
- 108 ...
- Smartphone
- 110 ...
- Computer
- 204 ...
- CPU
- 206 ...
- RAM
- 208 ...
- Festplattenlaufwerk
- 216 ...
- Datenübertragungsschnittstelle
- 304 ...
- Datenübertragungsmodul
- 306 ...
- Routine zur Berechnung von sum
- 308 ...
- Routine zur DoG-Berechnung und Extremwerterkennung
- 310 ...
- Routine zur Merkmalmengenberechnung