DE112011102991B4 - Verfahren und Vorrichtung zur 3D-Vermessung durch Erfassung eines vorbestimmten Musters - Google Patents

Verfahren und Vorrichtung zur 3D-Vermessung durch Erfassung eines vorbestimmten Musters Download PDF

Info

Publication number
DE112011102991B4
DE112011102991B4 DE112011102991.8T DE112011102991T DE112011102991B4 DE 112011102991 B4 DE112011102991 B4 DE 112011102991B4 DE 112011102991 T DE112011102991 T DE 112011102991T DE 112011102991 B4 DE112011102991 B4 DE 112011102991B4
Authority
DE
Germany
Prior art keywords
code
sequence
projection
pattern
codes
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
DE112011102991.8T
Other languages
English (en)
Other versions
DE112011102991T5 (de
Inventor
Tetsuri Sonoda
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Canon Inc
Original Assignee
Canon Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Canon Inc filed Critical Canon Inc
Publication of DE112011102991T5 publication Critical patent/DE112011102991T5/de
Application granted granted Critical
Publication of DE112011102991B4 publication Critical patent/DE112011102991B4/de
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/50Depth or shape recovery
    • G06T7/521Depth or shape recovery from laser ranging, e.g. using interferometry; from the projection of structured light
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V20/00Scenes; Scene-specific elements
    • G06V20/60Type of objects
    • G06V20/64Three-dimensional objects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • General Engineering & Computer Science (AREA)
  • Optics & Photonics (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Multimedia (AREA)
  • Length Measuring Devices By Optical Means (AREA)
  • Image Processing (AREA)
  • Image Analysis (AREA)

Abstract

Bildinformationsverarbeitungsvorrichtung, die angepasst ist, eine dreidimensionale Vermessung eines Objekts unter Verwendung eines aufgenommenen Bilds durchzuführen, das durch Projektion eines Projektionsmusters auf das Objekt erhalten wird, wobei das Projektionsmuster erhalten wird durch Zuordnung eines Symbols, das sich von einem zu einem anderen Typ von Code einer Projektionscodefolge unterscheidet, zu jedem Code in einer Projektionscodefolge, in der eine Vielzahl von Typen von Codes zweidimensional angeordnet sind, wobei die Vorrichtung aufweist: eine Erlangungseinrichtung (105) zum Erlangen eines Abbildungsmusters durch Extrahieren von Symbolen aus dem aufgenommenen Bild; eine Umwandlungseinrichtung (106) zum Umwandeln von jedem Symbol in dem durch die Erlangungseinrichtung erlangten Abbildungsmuster in einen entsprechenden Code, um eine Abbildungscodefolge zu erlangen; eine Erzeugungseinrichtung (107) zum Erzeugen einer Informationscodefolge durch Erlangen einer vorbestimmten Anzahl von Codes aus der Abbildungscodefolge gemäß einem Abtastmuster, in dem Abtastpositionen der vorbestimmten Anzahl von Codes und eine Abfolge der Codes definiert sind, und Anordnen der erlangten Codes; und eine Messeinrichtung (109, 110) zum Durchführen einer dreidimensionalen Vermessung des Objekts durch Bestimmen einer Entsprechung zwischen der Informationscodefolge und der Projektionscodefolge basierend auf der Informationscodefolge und dem Abtastmuster, dadurch gekennzeichnet, dass die Erzeugungseinrichtung (107) angepasst ist, als das Abtastmuster zum Erzeugen der Informationscodefolge, ein Abtastmuster, das ermöglicht, die vorbestimmte Anzahl von Codes aus der Abbildungscodefolge unter Verwendung des Abtastmusters zu erlangen, aus einer Vielzahl von Typen von Abtastmustern auszuwählen, und die Messeinrichtung (109, 110) angepasst ist, als die Projektionscodefolge zum Bestimmen der Entsprechung, eine Projektionscodefolge zu ermitteln, die dem ausgewählten Abtastmuster entspricht, das zum Erzeugen der Informationscodefolge verwendet wird, und die mit der erzeugten Informationscodefolge übereinstimmt.

Description

  • TECHNISCHES GEBIET
  • Die vorliegende Erfindung bezieht sich auf eine Bildinformationsverarbeitungsvorrichtung, die eine dreidimensionale Vermessung durch Erfassung eines vorbestimmten Musters aus einem Bild durchführt, das durch Projektion des vorbestimmten Musters aufgenommen wird, sowie ein Verfahren zum Steuern der Bildinformationsverarbeitungsvorrichtung.
  • HINTERGRUNDTECHNIK
  • Vorrichtungen, die die dreidimensionale Form von Objekten ver-/messen, sind in verschiedenen Gebieten weit verbreitet, zum Beispiel zum Untersuchen von Teilen in Fabriken im industriellen Bereich oder zum Ver-/Messen der Form von lebenden Organismen im medizinischen Bereich. Insbesondere berührungslose Messverfahren sind in Fällen effektiv, in denen die Gefahr besteht, dass ein Zielobjekt durch Berührung mit einer Messvorrichtung deformiert oder beschädigt werden kann. Bei einer solchen berührungslosen dreidimensionalen Formvermessung ist eine Methode weit verbreitet, bei der ein Triangulationsverfahren unter Verwendung eines Bilds durchgeführt wird, das durch eine Bildaufnahmevorrichtung erhalten wird. Zum Beispiel beschreibt P. M. Griffin, L. S. Narashimhan und S. R. Yee: ”GENERATION OF UNIQUELY ENCODED LIGHT PATTERNS FOR RANGE DATA ACQUISITION”, Pattern Recognition, Vol. 25, Seiten 609 bis 616 (hierin nachstehend Literatur 1) ein Beispiel, bei dem eine dreidimensionale Formvermessung durchgeführt wird, indem ein Punktabfolgemuster, das durch seine Farbe gekennzeichnet ist, mit einem Projektor auf ein Objekt projiziert wird und das reflektierte Licht mit einer Kamera abgebildet wird.
  • Nachstehend wird der Vorgang einer dreidimensionalen Vermessung, der in Literatur 1 dargelegt ist, im Speziellen beschrieben. Zunächst wird eine dreifarbige RGB-Punktabfolge, in der die Farbabfolge durch eine zweidimensionale Codefolge bzw. einen zweidimensionalen Codestring in Übereinstimmung mit einer mathematischen Vorschrift bestimmt ist, als ein Projektionsmusterbild mit einem Projektor auf ein Objekt projiziert. Ein Bild des Objekts, auf das das Projektionsmusterbild projiziert wird, wird mit einer Kamera aufgenommen, und eine in dem aufgenommenen Bild beobachtete Punktabfolge wird als eine Abbildungspunktabfolge herausgegriffen. Die Abfolge von benachbarten Farben in der herausgegriffenen Abbildungs-punktabfolge wird als eine Abbildungscodefolge bzw. ein Abbildungscodestring basierend auf einer vorbestimmten Codefolge bzw. einem vorbestimmten Codestring decodiert. Unter Verwendung der mathematischen Vorschrift der Codefolge bzw. des Codestrings des Projektionsmusterbilds wird die Entsprechung bzw. Korrespondenz zwischen Teilcodefolgen bzw. -codestrings von Abschnitten, die in der erlangtem Abbildungscodefolge bzw. dem erlangten Abbildungscodestring enthalten sind, und zweidimensionalen Positionen auf/in der Codefolge bzw. dem Codestring des Projektionsmusterbilds bestimmt. Es werden alle möglichen Teilcodefolgen bzw. -codestrings in der Abbildungscodefolge bzw. dem Abbildungscodestring herausgegriffen, es wird die Entsprechung bzw. Korrespondenz zwischen den Teilcodefolgen bzw. -codestrings und zweidimensionalen Positionen wie vorstehend beschrieben bestimmt, und es werden dreidimensionale Positionen von einzelnen Punkten basierend auf dem Prinzip der Triangulation erhalten. Unter Verwendung des vorstehend beschrieben Vorgangs wird eine dreidimensionale Formvermessung eines Objekts durchgeführt.
  • Bei dem vorstehend beschriebenen herkömmlichen Beispiel besteht jedoch das Problem, dass es abhängig von der Form des Objekts nicht möglich sein kann, die Entsprechung bzw. Korrespondenz mit Bezug auf ein Gebiet eines aufgenommenen Bilds zu bestimmen, in dem eine Teilcodefolge bzw. ein Teilcodestring einer ausreichenden Größe aus der Abbildungscodefolge bzw. dem Abbildungscodestring nicht herausgegriffen werden kann, so dass eine dreidimensionale Formvermessung nicht durchgeführt werden kann. Außerdem besteht das Problem, dass in einem Fall, in dem eine Abfolge von Punkten, die ursprünglich nicht benachbart zueinander sind, fälschlicherweise aus der Abbildungspunktabfolge herausgegriffen wird, oder in dem Fall, in dem eine Farbe in der Abbildungspunktabfolge infolge von Rauschen oder aus anderen Gründen als eine falsche Farbe erkannt wird, die Codefolge bzw. der Codestring mit einer falschen zweidimensionalen Position in Zusammenhang gebracht wird und ungenaue Ergebnisse einer dreidimensionalen Vermessung ausgegeben werden. Es ist allerdings möglich, eine solche fehlerhafte Entsprechung bzw. Korrespondenz zu erfassen, indem die Länge einer Teilcodefolge bzw. eines Teilcodestrings erhöht wird, die bzw. der bei der Entsprechungs- bzw. Korrespondenzbestimmung verwendet wird, aber anderseits ergibt sich das Problem, dass sich das Gebiet, in dem eine Teilcodefolge bzw. ein Teilcodestring aus der Abbildungscodefolge bzw. dem Abbildungscodestring nicht herausgegriffen werden kann, abhängig von der Form des Objekts sogar noch vergrößern kann.
  • Weitere Hintergrundtechnik ist etwa bekannt aus dem Artikel „REAL-TIME STRUCTURED LIGHT PATTERNS CODING WITH SUBPERFECT SUB-MAPS” von X. Maurice et al., Real-Time Image and Video Processing 2010, Proc. of SPIE, Vol. 7724, 2010, S. 77240E-1, in dem die Verwendung von codiertem strukturierten Licht zur 3D-Rekonstruction thematisiert ist, sowie der Druckschrift US 2008/0118143 A1 , die sich auf geometrische 3D-Modellierung und Bewegungserfassung unter Verwendung von Einzel- und Doppelbildgebung bezieht.
  • KURZFASSUNG DER ERFINDUNG
  • Die vorliegende Erfindung wurde in Anbetracht der vorstehend beschriebenen Probleme gemacht, und es wird gemäß einem Ausführungsbeispiel der Erfindung ein robusteres dreidimensionales Ver-/Messungsverfahren bereitgestellt, das eine fehlerhafte Bestimmung einer Entsprechung bzw. Korrespondenz reduziert und dennoch sogar eine dreidimensionale Ver-/Messung von verschiedenartigeren Formen von Objekten ermöglicht.
  • Gemäß einem Aspekt der vorliegenden Erfindung ist eine Bildinformationsverarbeitungsvorrichtung bereitgestellt, wie sie in Patentanspruch 1 dargelegt ist.
  • Auch ist gemäß einem weiteren Aspekt der vorliegenden Erfindung ein Verfahren zum Steuern einer Bildinformationsverarbeitungsvorrichtung bereitgestellt, wie es in Patentanspruch 11 dargelegt ist.
  • Ferner ist gemäß einem weiteren Aspekt der vorliegenden Erfindung ein computerlesbares Speichermedium bereitgestellt, wie es in Patentanspruch 13 dargelegt ist.
  • Etwaige Modifikationen und/oder Ausgestaltungen der vorgenannten Aspekte der vorliegenden Erfindung sind in den jeweiligen abhängigen Patentansprüchen dargelegt.
  • Etwaige Modifikationen und/oder Ausgestaltungen der vorgenannten Aspekte der vorliegenden Erfindung sind in den jeweiligen abhängigen Patentansprüchen dargelegt.
  • Weitere Merkmale der vorliegenden Erfindung werden aus der folgenden Beschreibung von beispielhaften Ausführungsbeispielen unter Bezugnahme auf die beigefügten Zeichnungen deutlich.
  • KURZE BESCHREIBUNG VON ZEICHNUNGEN
  • 1 ist eine Darstellung, die eine Gesamtkonfiguration einer Dreidimensional-Messvorrichtung zeigt.
  • 2 ist eine Darstellung, die ein Beispiel eines Projektionsmusterbilds zeigt.
  • 3 ist eine Darstellung, die ein Beispiel einer Projektionscodefolge zeigt, die zum Erzeugen des Projektionsmusterbilds verwendet wird.
  • 4 ist ein Ablaufdiagramm, das den Ablauf einer Verarbeitung durch die Dreidimensional-Messvorrichtung zeigt.
  • 5A und 5B sind Darstellungen, die ein Beispiel eines aufgenommenen Bilds und ein Beispiel einer aus dem aufgenommenen Bild extrahierten Abbildungspunktabfolge zeigen.
  • 6 ist eine Darstellung, die ein Beispiel einer Abbildungscodefolge zeigt.
  • 7 ist eine vergrößerte Darstellung eines Teils der Abbildungscodefolge.
  • 8 ist ein Ablaufdiagramm, das ein Verfahren zum Erlangen einer Informationscodefolge und eines redundanten Codes (Schritt S408) veranschaulicht.
  • 9 ist eine Darstellung, die alle Abtastmerkmale eines Ausführungsbeispiels der vorliegenden Erfindung zeigt.
  • 10 ist eine Darstellung, die Informationscodefolgen in allen Abtastmerkmalen des vorliegenden Ausführungsbeispiels zeigt.
  • 11 ist ein Ablaufdiagramm, das ein Verfahren einer Codefehlererfassung/-korrektur veranschaulicht.
  • 12A bis 12D sind Darstellungen, die drei Beispiele einer abgetasteten Codefolge zum Durchführen einer Codefehlererfassung/-korrektur zeigen.
  • 13A bis 13C sind Darstellungen, die Hashwerte zeigen, die aus den drei Beispielen der abgetasteten Codefolge berechnet werden.
  • 14 ist ein Ablaufdiagramm, das ein Verfahren zum Bestimmen der Entsprechung zwischen dem Projektionsmusterbild und der Abbildungscodefolge veranschaulicht.
  • 15 ist eine Darstellung, die ein Beispiel von Projektionscodefolgetabellen zeigt, die bei dem vorliegenden Ausführungsbeispiel verwendet werden.
  • 16 ist eine Darstellung, die eine dreidimensionale Vermessung gemäß dem Ausführungsbeispiel veranschaulicht.
  • 17 ist eine Darstellung, die ein Beispiel eines weiteren Projektionsmusters zeigt.
  • BESCHREIBUNG VON AUSFÜHRUNGSBEISPIELEN
  • Nachstehend wird hierin ein Beispiel eines bevorzugten Ausführungsbeispiels der vorliegenden Erfindung unter Bezugnahme auf die beigefügten Zeichnungen beschrieben.
  • 1 zeigt eine Gesamtkonfiguration einer Bildinformationsverarbeitungsvorrichtung gemäß einem Ausführungsbeispiel der vorliegenden Erfindung. Ein Projektor bzw. eine Projektionsvorrichtung 101 dient als eine Musterprojektionseinheit, die ein Projektionsmusterbild, das aus einer Abfolge bzw. Sequenz von Punkten aufgebaut ist, die rot, grün oder blau gefärbt sind, wie es in 2 gezeigt ist, auf ein zu ver-/messendes Objekt 102 projiziert. Eine Mustererzeugungseinheit 103 erzeugt ein Projektionsmusterbild (ein Bild eines Projektionsmusters, das eine zweidimensionale Symbolabfolge enthält), das eine zweidimensionale Punktabfolge enthält, die erhalten wird, indem jedem Code in einer Projektionscodefolge bzw. einem Projektionscodestring, in der eine Vielzahl von Codetypen zweidimensional angeordnet sind, ein Punkt zugeordnet wird, dessen Farbe oder Luminanz sich für jeden Codetyp unterscheidet. Auf diese Art und Weise dienen der Projektor 101 und die Mustererzeugungseinheit 103 als eine Musterprojektionsvorrichtung. Bei dem vorliegenden Ausführungsbeispiel erzeugt die Mustererzeugungseinheit 103, als ein durch den vorstehend beschriebenen Projektor 101 zu projizierendes Projektionsmusterbild, ein Bild, in dem eine Projektionscodefolge, die aus Codes 1, 2 und 3 aufgebaut ist, wie es in 3 gezeigt ist, durch eine Punktabfolge von rot, grün und blau symbolisiert wird. Es sollte beachtet werden, dass, obwohl eine Punktabfolge als das symbolisierte Bild verwendet wird, in der rot, grün oder blau jedem Codewert entspricht, die vorliegende Erfindung nicht darauf beschränkt ist. Eine Kamera 104 dient als eine Bildaufnahmeeinheit, die ein Bild des Objekts 102 in einem Zustand aufnimmt, in dem das Projektionsmusterbild auf das Objekt projiziert wird. Hierbei sind die Position und die Ausrichtung der Kamera 104 so justiert, dass eine x-Achse eines Bildkoordinatensystems an/in der Kamera 104 und eine gerade Linie, die durch Positionen von zwei Haupt- bzw. Mittelpunkten des Projektors 101 und der Kamera 104 definiert ist, parallel zueinander liegen. Eine Musterextraktionseinheit 105 führt eine Verarbeitung zum Extrahieren einer Abbildungspunktabfolge eines Abschnitts auf dem Objekt 102, der dem Projektionsmusterbild ausgesetzt ist, aus einem aufgenommenen Bild durch, das durch die Kamera 104 erhalten wird.
  • Eine Informationserlangungseinheit 106 wandelt jeden Punkt in der durch die Musterextraktionseinheit 105 extrahierten Abbildungspunktabfolge in einen jeder Farbe entsprechenden Code um, um eine Abbildungscodefolge zu erlangen. Eine Codeabtasteinheit 107 wählt einen einer vorbestimmten Vielzahl von Typen von Abtastmerkmalen bzw. -eigenschaften bzw. -charakteristiken (die nachstehend unter Bezugnahme auf 9 und 10 beschrieben sind) aus, tastet eine vorbestimmte Anzahl von Codes aus der bzw. dem durch die Informationserlangungseinheit erlangten Abbildungscodefolge bzw. Abbildungscodestring ab, und erlangt eine Informationscodefolge bzw. einem Informationscodestring und einen redundanten Code. Eine Codefehler-Erfassungs-/Korrektureinheit 108 führt kollektiv eine Codeverifikation bzw. -prüfung der Informationscodefolge und des redundanten Codes durch, die durch die Codeabtasteinheit 107 erlangt werden, führt eine Erfassung eines Codefehlers in der Informationscodefolge und dem redundanten Code und, falls möglich, eine Korrektur des Codefehlers durch, und gibt eine verifizierte bzw. geprüfte Informationscodefolge aus. Eine Entsprechungsberechnungseinheit 109 bestimmt die Entsprechung bzw. Korrespondenz zwischen dem Projektionsmusterbild und der Abbildungscodefolge basierend auf der durch die Codefehler-Erfassungs-/Korrektureinheit 108 erlangten verifizierten bzw. geprüften Informationscodefolge, der durch die Mustererzeugungseinheit 103 verwendeten Projektionscodefolge und dem bei der Abtastung durch die Codeabtasteinheit 107 verwendeten Abtastmerkmal. Eine Dreidimensional-Formerlangungseinheit 110 berechnet die Tiefe zwischen der Kamera 104 und dem Objekt 102, auf das das Projektionsmusterbild projiziert wurde, das heißt die Form, basierend auf dem Prinzip der Triangulation unter Verwendung der entsprechungs- bzw. korrespondenzbestimmten Abbildungspunktabfolge.
  • 4 zeigt ein Ablaufdiagramm, das eine Steuerung der Bildinformationsverarbeitungsvorrichtung gemäß dem vorliegenden Ausführungsbeispiel zeigt. Nachstehend wird hierin der Betrieb der Bildinformationsverarbeitungsvorrichtung gemäß dem vorliegenden Ausführungsbeispiel in der Reihenabfolge der Schritte in dem Ablaufdiagramm beschrieben.
  • Schritt S401: Die Mustererzeugungseinheit 103 erzeugt ein Projektionsmusterbild. Wie es in 2 gezeigt ist, ist das hier erzeugte Projektionsmusterbild aus einer Abfolge von Punkten aufgebaut, die abhängig von den Codes in einer der drei Farben rot, grün und blau gefärbt sind, und die in der vertikalen und der horizontalen Richtung regelmäßig angeordnet sind. Diese Punktabfolge von rot, grün und blau dient als eine Symbolabfolge bzw. -sequenz, die eine Projektionscodefolge darstellt, und die Abfolge, in der die Punkte angeordnet sind, ist unter Verwendung der in 3 gezeigten Projektionscodefolge bestimmt. Gemäß dem vorliegenden Ausführungsbeispiel sind rot, grün und blau in dem Projektionsmusterbild 1, 2 und 3 in der Projektionscodefolge zugeordnet.
  • Die in 3 gezeigte Projektionscodefolge besteht aus einer zweidimensionalen Anordnung von Codes in Zeilen und Spalten, die sich in einer u-Richtung bzw. einer v-Richtung erstrecken, und ist unter Verwendung einer nachstehend beschriebenen Vorschrift codiert. Zunächst wird eine de Bruijn-Sequenz für jede der u-Richtung und der v-Richtung ausgewählt, das heißt zwei de Bruijn-Sequenzen für insgesamt zwei Richtungen, nämlich die horizontale Richtung und die vertikale Richtung. Eine de Bruijn-Sequenz ist eine Sequenz bzw. Folge einer Sequenzlänge kl, wobei die Anzahl von Typen von verfügbaren Einheitscodes k ist, und hat die Eigenschaft, dass jede zusammenhängende Untersequenz mit einer Untersequenzlänge l exakt einmal in der gesamten Codefolge vorkommt. Zum Beispiel ist die Anzahl von Symbolen, die in dem Projektionsmusterbild verwendet werden können, auf k eingestellt, ist die Größe eines Rechtecks, das ein (nachstehend beschriebenes) Abtastmerkmal umgibt bzw. einfasst, auf m × (n + 1) in der Reihenabfolge der u-Richtung und der v-Richtung eingestellt (eine Größe mit m Symbolen in der horizontalen Richtung und n + 1 Symbolen in der vertikalen Richtung). In diesem Fall wird eine de Bruijn-Sequenz einer Sequenzlänge km in der u-Richtung ausgewählt und wird eine de Bruijn-Sequenz einer Sequenzlänge kn in der v-Richtung ausgewählt. Bei dem vorliegenden Ausführungsbeispiel werden die drei Farben als die Symbole verwendet, und daher gilt k = 3. Außerdem sind alle (nachstehend beschriebenen) Abtastmerkmale durch Rechtecke mit einer Größe von 3 × 3 umgeben bzw. eingefasst, und daher gilt m = 3 und n = 2.
  • Die de Bruijn-Sequenz mit k = 3 und m = 3 (mit der Sequenzlänge 33 = 27), die in der u-Richtung bei dem vorliegenden Ausführungsbeispiel verwendet wird, ist eine nachstehend gezeigte Zahlenfolge: 33132131123122121113323222333 (1)
  • Gleichermaßen ist die de Bruijn-Sequenz mit k = 3 und n = 2 (mit der Sequenzlänge 32 = 9), die in der v-Richtung bei dem vorliegenden Ausführungsbeispiel verwendet wird, nachstehend gezeigt: 3311322123 (2)
  • Es sollte beachtet werden, dass die de Bruijn-Sequenzen (1) und (2), die bei dem vorliegenden Ausführungsbeispiel verwendet werden, keine Zyklizität zulassen und daher Längen aufweisen, die um m + k – 1 bzw. n + k – 1 länger sind als die ursprünglichen Sequenzlängen. (Der Fall, in dem eine Wiederholung in dem Muster vorliegt, wird nachstehend beschrieben.)
  • Als Nächstes wird ein Verfahren zum Erzeugen einer Projektionscodefolge unter Verwendung der vorstehend beschriebenen beiden de Bruijn-Sequenzen beschrieben. Zunächst wird in der ersten Zeile in der u-Richtung die de Bruijn-Sequenz in der u-Richtung als die Projektionscodefolge verwendet, wie sie ist. In und nach der zweiten Zeile in der u-Richtung wird ein Ergebnis einer Addition der Werte der de Bruijn-Sequenz in der v-Richtung mit den Werten der Codefolge in einer Zeile direkt vor der interessierenden Zeile als die Codefolge verwendet. Hier wird das Ergebnis einer Addition k-stufig ausgedrückt, wodurch das Ergebnis durch 1 bis k dargestellt wird, und werden Überträge ignoriert. Zum Beispiel wird der erste Zahlenwert ”3” in der durch (2) gezeigten Sequenz zu jedem Wert in der Codefolge in der ersten Zeile (der Codefolge in der untersten Zeile) in 3 addiert. In diesem Fall werden die Berechnungen 1 + 3 = 1, 2 + 3 = 2 und 3 + 3 = 3 durchgeführt, so dass die Codefolge in der ersten Zeile und die Codefolge in der zweiten Zeile gleich zueinander werden. Außerdem wird, im Hinblick auf die Codefolge in der vierten Zeile, der dritte Wert ”1” in der durch (2) gezeigten Sequenz zu der Codefolge in der dritten Zeile addiert. Somit gilt 1 + 1 = 2, 2 + 1 = 3 und 3 + 1 = 1, und dadurch wird eine Codefolge in der vierten Zeile durch Addition von 1 zu jedem Wert in der Codefolge in der dritten Zeile in 3 erhalten. Wie es vorstehend beschrieben ist, ist es möglich, eine zweidimensionale Projektionscodefolge in der u-Richtung und der v-Richtung, wie sie in 3 gezeigt ist, zu erzeugen, indem Codefolgen durch Addition von allen Zeilen der de Bruijn-Sequenz in der v-Richtung nacheinander erhalten werden.
  • Die durch Verwendung des vorstehend beschriebenen Verfahrens erzeugte Projektionscodefolge hat die Eigenschaft, dass in einer Teilcodefolge, die durch ein Rechteck umgeben bzw. eingefasst ist, das sich an einer beliebigen Position innerhalb der Projektionscodefolge befindet und eine Größe von m × (n + 1) aufweist, eine Informationscodefolge einer Länge von m + n, die durch Abtastung einer vorbestimmten Zeile und einer vorbestimmten Spalte in einer festgelegten Reihenabfolge erhalten wird, exakt einmal in der Projektionscodefolge vorkommt. Diese Eigenschaft wird zur Bestimmung eines Abtastmerkmals in Schritt S408 und zur Codefehlererfassung/-korrektur in Schritt S410 verwendet, die nachstehend beschrieben werden.
  • Eine Verarbeitung der folgenden Schritte wird möglich gemacht, indem ein Projektionsmusterbild erzeugt wird, in dem die Projektionscodefolge mit der vorstehend beschriebenen Eigenschaft unter Verwendung eines Punktbilds in drei Farben symbolisiert und eingebettet wird, wie es vorstehend beschrieben ist.
  • Schritt S402: Der Projektor 101 projiziert das in Schritt S401 erzeugte Projektionsmusterbild auf das Objekt 102.
  • Schritt S403: Die Kamera 104 nimmt ein Bild des Objekts 102 auf, auf das das Projektionsmusterbild projiziert wird, und erzeugt ein aufgenommenes Bild 501, das in 5A gezeigt ist.
  • Schritt S404: Die Musterextraktionseinheit 105 extrahiert eine Abbildungspunktabfolge 502, die ein Abbildungsmuster ist, das dem auf das Objekt 102 projizierten Projektionsmusterbild entspricht, wie es in 5B gezeigt ist, aus dem in Schritt S403 erzeugten aufgenommenen Bild 501. Bei dieser Verarbeitung werden Gebiete, die eine Luminanz bzw. Leuchtdichte aufweisen, die höher oder gleich einem vorbestimmten Pegel bzw. Niveau mit Bezug auf jede der Farben rot, grün und blau sind, als Symbole extrahiert, wodurch die Abbildungspunktabfolge 502 extrahiert wird. Es sollte beachtet werden, dass alle extrahierten Farbinformationen gehalten werden. Außerdem wird ein einzelnes zusammenhängendes Gebiet mit einer einzigen Farbe als ein einheitlicher Abbildungspunkt behandelt und wird eine zweidimensionale Position von jedem Abbildungspunkt (zum Beispiel, der Schwerpunkt bzw. Flächenmittelpunkt des Abbildungspunkts) auf dem x-y-Kamerakoordinatensystem gehalten.
  • Schritt S405: Die Informationserlangungseinheit 106 erlangt eine Abbildungscodefolge basierend auf der in Schritt S404 extrahierten Abbildungspunktabfolge 502. Hier können die Codes, denen Punkte von jeder Farbe als die Symbole in Schritt S401 zugeordnet wurden, umgekehrt decodiert werden. Das heißt, dass die Abbildungscodefolge durch Zuordnung von 1 zu rot, 2 zu grün und 3 zu blau erlangt wird. Als ein Einheitsabbildungscode (ein Abbildungscode für jeden Abbildungspunkt), der die Abbildungscodefolge bildet, werden der decodierte Code und die zweidimensionale Position des entsprechenden Abbildungspunkts auf den x-y-Koordinaten gehalten. 6 zeigt eine decodierte Abbildungscodefolge 601.
  • Als Nächstes werden Nachbarschaftsbeziehungen zwischen jedem Abbildungscode und benachbarten Abbildungscodes decodiert, die über, unter, links und rechts dieses Abbildungscodes liegen. 7 zeigt eine vergrößerte Darstellung eines Teils der Abbildungscodefolge. Als ein Beispiel wird eine Decodierung der Nachbarschaftsbeziehungen eines interessierenden Abbildungscodes 701 in 7 beschrieben. Da die Position und Ausrichtung der Kamera 104 so justiert sind, dass die x-Achse des Bildkoordinatensystems an/in der Kamera 104 und eine gerade Linie, die durch die Positionen der zwei Haupt- bzw. Mittelpunkte des Projektors 101 und der Kamera 104 definiert ist, parallel zueinander liegen, werden alle Abbildungspunktabfolgen in einer zu der x-Achse parallelen Richtung abgebildet. Daher können Nachbarschaftsbeziehungen zwischen den Abbildungscodefolgen in der x-Richtung auf einfache Weise decodiert werden. Zunächst werden die nächstliegenden angrenzenden Codes, die links und rechts des interessierenden Abbildungscodes 701 in der x-Richtung liegen, als benachbarte Codes gesucht. Als Nächstes werden die Nachbarschaftsbeziehungen mit Bezug auf Abbildungscodes oberhalb und unterhalb in der y-Richtung gesucht. Zu dieser Zeit ist, da die y-Richtung nicht parallel zu der y-Achse ist und eine Möglichkeit besteht, dass ein benachbarter Code in einem Zustand vorliegen kann, in dem er in der x-Richtung versetzt ist, ein Suchbereich 702 in der x-Richtung definiert und werden benachbarte Codes in diesem Bereich gesucht.
  • Die Nachbarschaftsbeziehungen zwischen jedem Abbildungscode und Abbildungscodes über, unter, links und rechts dieses Abbildungscodes werden gemäß dem vorstehend beschriebenen Vorgang wiederhergestellt, und die Ergebnisse einer Wiederherstellung werden in Einheiten von Abbildungscodes gehalten.
  • Schritt S406: Die Codeabtasteinheit 107 scannt bzw. durchsucht die durch die Informationserlangungseinheit 106 erlangte Abbildungscodefolge, und es wird der Ursprung eingestellt, der als der erste Punkt dient, von dem aus eine Codeabtastung gestartet wird, um die (nachstehend beschriebene) Informationscodefolge zu erlangen.
  • Schritt S407: Es wird beurteilt, ob das Ergebnis von Schritt S406 darin besteht, dass das Scanning bzw. die Durchsuchung abgeschlossen ist oder nicht. Falls das Scanning bzw. die Durchsuchung abgeschlossen ist, wird die vorliegende Verarbeitung beendet. Falls nicht, schreitet die Verarbeitung zu Schritt S408 voran. Das Scanning bzw. die Durchsuchung wird in einer solchen Art und Weise durchgeführt, dass der gleiche Ursprung nicht wiederholt eingestellt wird, und es wird angenommen, dass das Scanning bzw. die Durchsuchung abgeschlossen ist, sobald das Scanning bzw. die Durchsuchung durchgeführt ist, bis alle Abbildungscodefolgen als die Ursprünge eingestellt sind.
  • Schritt S408: Die Codeabtasteinheit 107 wählt einen einer vorbestimmten Vielzahl von Typen von Abtastmerkmalen aus. Dann führt die Codeabtasteinheit 107 eine Codeabtastung gemäß dem ausgewählten Abtastmerkmal ausgehend von einer Position durch, die dem Ursprung der durch die Informationserlangungseinheit 106 erlangten Informationscodefolge entspricht, der in Schritt S406 eingestellt wurde. Dann werden die Informationscodefolge und der redundante Code erlangt. 8 zeigt ein Ablaufdiagramm, das ein Verfahren zum Erlangen der Informationscodefolge und des redundanten Codes in Schritt S408 veranschaulicht. Nachstehend wird hierin der Betrieb in Schritt S408 in der Reihenabfolge der Schritte in dem Ablaufdiagramm gemäß 8 ausführlich beschrieben.
  • Schritt S801: Die Codeabtasteinheit 107 initialisiert eine Abtastmerkmalsnummer P, die das bei einer Codeabtastung verwendete Abtastmerkmal bezeichnet, auf 1. Das Abtastmerkmal definiert die Positionen einer vorbestimmten Anzahl von zu extrahierenden Punkten und die Abfolge von diesen Punkten in der Informationscodefolge. Jedes der Abtastmerkmale wählt eine vorbestimmte Anzahl von Punkten aus einer Teilpunktabfolge einer vorbestimmten Größe aus. Zum Beispiel werden, was das Abtastmerkmal des vorliegenden Ausführungsbeispiels betrifft, innerhalb eines Rechtecks, das eine 3×3-Teilpunktabfolge in der Abbildungscodeabfolge enthält, alle kombinatorischen Gestaltungen in dem Fall erstellt, in dem eine beliebige Zeile und eine beliebige Spalte in einer festgelegten Reihenabfolge abgetastet werden, und werden Nummern P den erstellten Gestaltungen im Voraus zugeordnet. Bezugszeichen 901 bis 909 in 9 bezeichnet alle Abtastmerkmale bzw. -eigenschaften bzw. -charakteristiken des vorliegenden Ausführungsbeispiels. Kreismarkierungen bezeichnen einzelne Codes, und gestrichelte Linien bezeichnen Rechtecke, die eine 3×3-Teilpunktabfolge in der Abbildungscodefolge enthalten. Nummern in den Codes bezeichnen die Abtastabfolge (die Abfolge in der Informationscodefolge), und eine Abtastung wird in numerischer Reihenabfolge durchgeführt, wobei die Abtastlaufnummer 1 dem interessierenden Code zugeordnet ist.
  • Außerdem wird ein Code, der einem anderen Punkt als der vorbestimmten Anzahl von Punkten in der vorstehend beschriebenen Teilpunktabfolge (eifern anderen Punkt als den vorstehend beschriebenen m + n Codes) entspricht, als ein redundanter Code verwendet, um einen Fehler in der Informationscodefolge zu erfassen. Zum Beispiel bezeichnen bei dem vorliegenden Ausführungsbeispiel die Abtastlaufnummern 1 bis 5 Informationscodefolgen, die zur Entsprechungsbestimmung verwendet werden und die Länge m + n = 5 aufweisen, und bezeichnen die anderen Laufnummern, nämlich die Laufnummern 6 bis 9, die sich von der Informationscodefolge unterscheiden, redundante Codes, die zur Codefehlererfassung/-korrektur verwendet werden. Die Informationscodefolgen werden aus/von unterschiedlichen Kombinationen von Codes der Abbildungscodefolge für jedes Abtastmerkmal abgetastet, wie es durch 1001 bis 1009 in 10 angedeutet ist. Zum Beispiel sind, als eine Vielzahl von Abtastmerkmalen, unter der Annahme einer Teilcodefolge mit m Punkten in der horizontalen Richtung und n + 1 Punkten in der vertikalen Richtung (in dem Fall von 10, m = 3 und n = 2), die Positionen von m + n Codes, die in einer einzelnen Zeile, die aus der horizontalen Richtung ausgewählt ist, und einer einzelnen Spalte, die aus der vertikalen Richtung ausgewählt ist, enthalten sind, und die Abfolge der Codes definiert.
  • Schritt S802: Die Codeabtasteinheit 107 initialisiert die Abtastlaufnummer N, die die Laufnummer der abzutastenden Codefolge bezeichnet, auf 1.
  • Schritt S803: Die Codeabtasteinheit 107 überprüft, ob die Abtastmerkmalsnummer P eine Höchstzahl Pmax überschreitet. Bei dem vorliegenden Ausführungsbeispiel gilt Pmax = 9, wie es in 9 gezeigt ist. Falls in Schritt S803 beurteilt wird, dass P Pmax überschreitet, wird die Verarbeitung in Schritt S406 als erfolglos betrachtet und beendet, da dies bedeutet, dass es nicht möglich war, Informationscodefolgen von allen Abtastmerkmalen zu erhalten. Falls P Pmax nicht überschreitet, wird die Verarbeitung fortgesetzt.
  • Schritt S804: Die Codeabtasteinheit 107 tastet einen Code ab, der der Abtastlaufnummer N der aktuellen Abtastmerkmalsnummer P entspricht, und sie erlangt eine Informationscodefolge. Falls diese Einheit beim Erlangen der Informationscodefolge erfolgreich ist, schreitet die Verarbeitung zu Schritt S806 voran. Falls es keinen benachbarten Code in der Informationscodefolge gibt und diese Einheit daran scheitert, die Informationscodefolge an der Position der Abtastlaufnummer N zu erlangen, schreitet die Verarbeitung zu Schritt S805 voran.
  • Schritt S805: 1 wird zu der Abtastmerkmalsnummer P addiert, und die Verarbeitung kehrt zu Schritt S803 zurück.
  • Schritt S806: Die Codeabtasteinheit 107 überprüft, ob die Abtastlaufnummer N die Länge 5 der Informationscodefolge erreicht hat oder nicht. Falls diese Länge nicht erreicht ist, schreitet die Verarbeitung zu Schritt S807 voran. Falls diese Länge erreicht ist, schreitet die Verarbeitung zu Schritt S808 voran.
  • Schritt S807: 1 wird zu der Abtastlaufnummer N addiert, und die Verarbeitung kehrt zu Schritt S804 zurück.
  • Schritt S808: Die Codeabtasteinheit 107 tastet einen Code ab, der der Abtastlaufnummer N der aktuellen Abtastmerkmalsnummer P entspricht, und sie erlangt einen redundanten Code. Falls diese Einheit beim Erlangen des redundanten Codes erfolgreich ist, schreitet die Verarbeitung zu Schritt S809 voran. Falls es keinen erlangbaren Code an der Position der Abtastlaufnummer N in der Abbildungscodefolge gibt und diese Einheit daran scheitert, den redundanten Code zu erlangen, wird eine Codeabtastung als erfolgreich betrachtet, und wird die Verarbeitung beendet.
  • Schritt S809: Die Codeabtasteinheit 107 überprüft, ob die Abtastlaufnummer N eine maximale Länge 9 erreicht hat oder nicht, die die Informationscodefolgen und die redundanten Codes zusammenfasst. Falls die maximale Länge nicht erreicht ist, schreitet die Verarbeitung zu Schritt S810 voran. Falls die maximale Länge erreicht ist, wird die Verarbeitung als erfolgreich betrachtet und beendet.
  • Schritt S810: 1 wird zu der Abtastlaufnummer N addiert, und die Verarbeitung schreitet zu Schritt S808 voran.
  • Indem die Verarbeitung gemäß dem vorstehend beschriebenen Vorgang in Schritt S408 durchgeführt wird, wird eine Abtastung von der durch die Informationserlangungseinheit 106 erlangten Abbildungscodefolge durchgeführt und werden die Informationscodefolgen und die redundanten Codes erlangt (die hierin nachstehend kollektiv als ”abgetastete Codefolge” bezeichnet werden). Wenn die Verarbeitung einer Codeabtastung in Schritt 408 abgeschlossen wurde, schreitet die Verarbeitung zu Schritt S409 voran.
  • Schritt S409: Die Codefehler-Erfassungs-/Korrektureinheit 108 beurteilt, ob die Codeabtastverarbeitung in Schritt S408 erfolgreich war oder nicht. Falls das Verarbeitungsergebnis erfolglos war, kehrt die Verarbeitung zu Schritt S406 zurück. Falls das Verarbeitungsergebnis erfolgreich war, schreitet die Verarbeitung zu Schritt S410 voran.
  • Schritt S410: Die Codefehler-Erfassungs-/Korrektureinheit 108 führt eine Codeverifikation bzw. -prüfung unter Verwendung der abgetasteten Codefolge durch und erfasst jeglichen Codefehler in der abgetasteten Codefolge. Außerdem, falls der Codefehler korrigierbar ist, korrigiert die Codefehler-Erfassungs-/Korrektureinheit den Code. 11 zeigt ein Ablaufdiagramm, das ein Verfahren einer Codefehlererfassung/-korrektur in Schritt S410 veranschaulicht. Nachstehend wird hierin der Betrieb in Schritt S410 in der Reihenabfolge der Schritte in dem Ablaufdiagramm gemäß 11 beschrieben.
  • Schritt S1101: Die Codefehler-Erfassungs-/Korrektureinheit 108 berechnet einen Hashwert, der das Ergebnis einer Codeverifikation bzw. -prüfung bezeichnet, aus der abgetasteten Codefolge. 12A bis 12C zeigen Beispiele der abgetasteten Codefolge. Alle Beispiele in 12A bis 12C haben die gleiche Informationscodefolge 1201 und unterscheiden sich nur in der Anzahl von redundanten Codes. Nachbarschaftsbeziehungen zwischen der Informationscodefolge und den redundanten Codes in der vertikalen Richtung und der horizontalen Richtung stimmen alle mit den Nachbarschaftsbeziehungen der Abbildungscodefolge überein, und die u-Koordinatenachse der Projektionscodefolge wird als eine Zeilenrichtung betrachtet und die v-Koordinatenachse wird als eine Spaltenrichtung betrachtet.
  • Um einen Hashwert zu berechnen, werden Differenzen zwischen der rechten Spalte und der linken Spalte in der Zeilenrichtung dieser Informationscodefolgen und redundanten Codes sequentiell berechnet. Bei dem vorliegenden Ausführungsbeispiel ist die Anzahl von Spalten gleich n + 1 = 3 und werden daher zwei Differenzwerte in jeder Zeile als Hashwerte berechnet. Es sollte beachtet werden, dass alle Ergebnisse von Differenzberechnungen k-stufig dargestellt werden. Bei dem vorliegenden Ausführungsbeispiel gilt k = 3 und sind die Hashwerte daher 0, 1 oder 2. Außerdem wird die Hashwertberechnung an einer Position nicht durchgeführt, an der es keine abgetastete Codefolge gibt, und wird eine Leerstelle an diese Position gesetzt. 13A bis 13C zeigen die Hashwerte der Informationscodefolgen und der redundanten Codes gemäß 12A bis 12C. Bei einer Codefehler-Erfassungs-/Korrekturverarbeitung wird eine einzelne Zeile von Hashwerten, in der ein Satz von berechneten Werten in allen Spalten vollständig ist, als ein einzelnes Ergebnis einer Codeverifikation bzw. -prüfung behandelt.
  • Schritt S1102: Die Codefehler-Erfassungs-/Korrektureinheit 108 beurteilt, ob es mehr als eine einzelne Zeile von Hashwerten gibt, die in Schritt S1101 berechnet werden konnte. Falls es nur eine einzelne Zeile von Hashwerten gibt, ist es nur die Zeile, die aus der Informationscodefolge erzeugt wurde, die die Hashwerte hat, und eine Codefehlerkorrektur ist unmöglich, so dass die Verarbeitung in Schritt S410 als erfolgreich betrachtet wird und beendet wird. Falls es mehr als eine einzelne Zeile von Hashwerten gibt, schreitet die Verarbeitung zu Schritt S1103 voran. Bei dem in 13A gezeigten Beispiel gibt es nur eine einzelne Zeile von Hashwerten, und daher wird dieser Schritt als erfolgreich betrachtet und beendet. In den in 13B und 13C gezeigten Beispielen gibt es zwei bzw. drei Zeilen von Hashwerten, das heißt, dass es bei beiden Beispielen mehr als eine einzelne Zeile gibt, und daher schreitet die Verarbeitung zu Schritt S1103 voran.
  • Schritt S1103: Die Codefehler-Erfassungs-/Korrektureinheit 108 beurteilt, ob alle Hashwerte in der Spaltenrichtung gleich sind. Falls die Werte in der Spaltenrichtung alle gleich sind, gibt es keinen Widerspruch zu den Ergebnissen einer Addition der gleichen Werte in jeder Spalte während der Erzeugung der Projektionscodefolge, und dies bedeutet, dass kein Codefehler in dem Bereich der berechneten Hashwerte erfasst wurde. Somit wird die Berechnung als erfolgreich betrachtet und wird die Verarbeitung beendet. Andererseits, falls es auch nur einen unterschiedlichen Wert in der Spaltenrichtung gibt, tritt ein Widerspruch zu den vorstehend beschriebenen Berechnungsergebnissen auf. Daher wird beurteilt, dass ein Codefehler vorliegt, und schreitet die Verarbeitung zu Schritt S1104 voran. Bei den beiden Beispielen, die in 13B und 13C gezeigt sind, sind die Werte in der Spaltenrichtung rechts unterschiedlich. Daher wird in beiden Fällen beurteilt, dass ein Codefehler vorliegt, und schreitet die Verarbeitung zu Schritt S1104 voran.
  • Schritt S1104: Die Codefehler-Erfassungs-/Korrektureinheit 108 beurteilt, ob alle drei Zeilen von Hashwerten vorhanden sind, die in Schritt S1101 berechnet wurden. Falls die Anzahl von Zeilen geringer ist als drei, ist es nicht möglich, eine Codefehlerkorrektur durchzuführen, und daher wird Schritt S410 als erfolglos betrachtet und beendet. Falls alle drei Zeilen vorhanden sind, schreitet die Verarbeitung zu Schritt S1105 voran. Bei dem in 13B gezeigten Beispiel ist ein Satz von Hashwerten in der untersten Zeile nicht vollständig, und daher wird dieser Schritt S410 als erfolglos betrachtet und beendet. Bei dem in 13C gezeigten Beispiel sind alle Sätze von Hashwerten in den drei Zeilen vollständig, und daher schreitet die Verarbeitung zu Schritt S1105 voran.
  • Schritt S1105: Die Codefehler-Erfassungs-/Korrektureinheit 108 beurteilt, ob eine Codefehlerkorrektur mit Bezug auf die als Ziel dienende abgetastete Codefolge durchgeführt werden kann. Zunächst wird aus den drei Zeilen von Hashwerten eine Zeile erfasst, die einen Hashwert enthält, der nicht der gleiche ist wie die anderen Hashwerte in der Spaltenrichtung. Falls alle Zeilen unterschiedliche Hashwerte enthalten, kann eine Codefehlerkorrektur nicht durchgeführt werden, und somit wird Schritt S410 als erfolglos betrachtet und beendet. Falls nur der Hashwert in einer Zeile unter den Hashwerten in den drei Zeilen unterschiedlich ist, wird beurteilt, dass ein korrigierbarer Codefehler in dieser Zeile vorliegt, und schreitet die Verarbeitung zu Schritt S1106 voran. Bei dem in 13C gezeigten Beispiel ist nur der Wert in der rechten Spalte in der obersten Zeile 1301 unterschiedlich, und somit wird beurteilt, dass ein korrigierbarer Codefehler in dieser Zeile vorliegt, und schreitet die Verarbeitung zu Schritt S1106 voran.
  • Schritt S1106: Die Codefehler-Erfassungs-/Korrektureinheit 108 führt eine Codefehlerkorrektur mit Bezug auf die Zeile der abgetasteten Codefolge, die in Schritt S1105 dahingehend bestimmt wurde, dass sie einen korrigierbaren Codefehler enthält, unter Verwendung eines Hashwerts in einer anderen Zeile durch. Die Codefehler-Erfassungs-/Korrektureinheit 108 untersucht in der Zeile, die als Erstes dahingehend bestimmt wurde, dass sie einen Codefehler enthält, die Spalte, in der sich der Hashwert von denjenigen in den anderen Zeilen unterscheidet.
  • Falls nur der Hashwert in der linken Spalte unterschiedlich ist, wird angenommen, dass ein Fehler in dem Codewert auf der linken Seite der relevanten Zeile der abgetasteten Codefolge vorliegt, und wird dieser Codewert korrigiert. Eine Fehlerkorrektur kann durch Ersetzen des Fehlerwerts mit dem Wert der Differenz zwischen dem Codewert in der mittleren Spalte in der relevanten Zeile der abgetasteten Codefolge und dem Hashwert in der linken Spalte in einer anderen Zeile als der relevanten Zeile durchgeführt werden. Diese Differenzberechnung wird auch unter Verwendung der k-Stufigkeit durchgeführt, bei der es keinen Übertrag gibt, das heißt unter Verwendung des ternären Zahlensystems, bei dem die Antworten nur 1, 2 und 3 sind, bei dem vorliegenden Ausführungsbeispiel.
  • Falls nur der Hashwert in der rechten Spalte unterschiedlich ist, wird angenommen, dass ein Fehler in dem Codewert auf der rechten Seite der relevanten Zeile der abgetasteten Codefolge vorliegt, und wird eine Korrektur auf die gleiche Art und Weise durchgeführt. Eine Fehlerkorrektur kann durch Ersetzen des Fehlerwerts mit dem Wert der Summe des Codewerts in der mittleren Spalte in der relevanten Zeile der abgetasteten Codefolge und des Hashwerts in der rechten Spalte in einer anderen Zeile als der relevanten Zeile in dem ternären Zahlensystem durchgeführt werden.
  • Falls die Hashwerte sowohl in der linken als auch in der rechten Spalte unterschiedlich sind, wird angenommen, dass ein Fehler in dem Codewert in der mittleren Spalte in der relevanten Zeile der abgetasteten Codefolge vorliegt, und wird eine Korrektur auf die gleiche Art und Weise durchgeführt. Eine Fehlerkorrektur kann durch Ersetzen des Fehlerwerts mit dem Wert der Differenz zwischen dem Codewert in der rechten Spalte in der relevanten Zeile der abgetasteten Codefolge und dem Hashwert in der rechten Spalte in einer anderen Zeile als der relevanten Zeile in dem ternären Zahlensystem durchgeführt werden.
  • Bei dem in 13C gezeigten Beispiel ist nur der Hashwert in der rechten Spalte in der Zeile 1301 unterschiedlich, und daher wird eine Korrektur unter der Annahme durchgeführt, dass ein Fehler in dem Codewert ”3” in der rechten der in der relevanten Zeile der abgetasteten Codefolge vorliegt. Bei einer Fehlerkorrekturberechnung wird der Fehlerwert ”3” mit einem Korrekturwert ”2” ersetzt, der die Summe des Codewerts ”2” in der mittleren Spalte in der relevanten Zeile der abgetasteten Codefolge in 12C und des Hashwerts ”0” in der rechten Spalte in einer anderen Zeile als der Zeile 1301 ist. Es kann gesehen werden, dass die Informationscodefolge ”12321” vor einer Korrektur, die in 12C gezeigt ist, mit einem Korrekturwert 1202 in ”12221” korrigiert wird, wie es in 12D gezeigt ist, indem eine Codefehlerkorrektur auf diese Art und Weise durchgeführt wird.
  • Nach den vorstehend beschriebenen Berechnungen wird dieser Schritt S410 als erfolgreich betrachtet und beendet.
  • Indem die vorstehend beschriebenen Schritte S1101 bis S1106 ausgeführt werden, wird ein Codefehler in der abgetasteten Codefolge erfasst. Außerdem, falls der Codefehler korrigierbar ist, wird eine Codekorrektur durchgeführt. Es sollte beachtet werden, dass die Informationscodefolgen, mit Bezug auf welche die Verarbeitung in diesem Schritt S410 erfolgreich war, nachstehend als ”verifizierte Informationscodefolgen” bezeichnet werden. Die Verarbeitung schreitet zu Schritt S411 in 4 voran.
  • Schritt S411: Die Codefehler-Erfassungs-/Korrektureinheit 108 bestimmt das Verarbeitungsergebnis der Codefehlerkorrektur/-erfassung in Schritt S410. Falls die Verarbeitung erfolgreich war, schreitet die Verarbeitung zu Schritt S412 voran. Falls die Verarbeitung erfolglos war, kehrt die Verarbeitung zu Schritt S406 zurück, und wird das Verarbeitungsziel auf die nächste Codeabtastposition verschoben.
  • Schritt S412: Die Entsprechungsberechnungseinheit 109 bestimmt die Entsprechung bzw. Korrespondenz zwischen dem Projektionsmusterbild und den verifizierten Informationscodefolgen, die die Abbildungscodefolge bilden. 14 zeigt ein Ablaufdiagramm, das ein Verfahren zum Bestimmen der Entsprechung bzw. Korrespondenz zwischen dem Projektionsmusterbild und der Abbildungscodefolge in Schritt S412 veranschaulicht. Nachstehend wird hierin der Betrieb in Schritt S412 in der Reihenabfolge der Schritte in dem Ablaufdiagramm gemäß 14 ausführlich beschrieben.
  • Schritt S1401: Die Entsprechungsberechnungseinheit 109 wählt eine Projektionscodefolgetabelle aus, die die gleiche Nummer wie die Abtastmerkmalsnummer P aufweist, die beim Abtasten der Informationscodefolgen in Schritt S408 verwendet wurde. 15 zeigt ein Beispiel von Projektionscodefolgetabellen, die bei dem vorliegenden Ausführungsbeispiel verwendet werden. Eine Projektionscodefolgetabelle ist eine Tabelle, die Werte von Informationscodefolgen in dem Fall speichert, in dem die Projektionscodefolge an verschiedenen zweidimensionalen Projektionen (u, v) unter Verwendung der Abtastmerkmalsnummer P abgetastet wurde, und es wird die gleiche Anzahl von Tabellen wie die Anzahl von zu verwendenden Abtastmerkmalen (bei diesem Beispiel neun) erstellt. Indem eine derartige Projektionscodefolgetabelle verwendet wird, ist es möglich, eine Berechnung zum Bestimmen der Entsprechung zwischen der Projektionscodefolge und den verifizierten Informationscodefolgen ohne Durchführung einer komplizierten Berechnung durchzuführen.
  • Schritt S1402: Die Entsprechungsberechnungseinheit 109 scannt bzw. durchsucht die in Schritt S1401 ausgewählte Projektionscodefolgetabelle zweidimensional in der u-Richtung und der v-Richtung, um nach einem Tabellenwert zu suchen, der mit einer verifizierten Informationscodefolge zusammenpasst bzw. übereinstimmt. Falls ein zusammenpassender bzw. übereinstimmender Tabellenwert vorhanden ist, wird die (u, v)-Position von diesem Tabellenwert aufgezeichnet.
  • Schritt S1403: Die Entsprechungsberechnungseinheit 109 beurteilt, ob es bei der Suche in Schritt S1402 einen Tabellenwert gab, der mit einer verifizierten Informationscodefolge zusammenpasst bzw. übereinstimmt. Falls es einen solchen Tabellenwert gab, schreitet die Verarbeitung zu Schritt S1404 voran. Falls es keinen solchen Tabellenwert gab, wird beurteilt, dass die Entsprechungsbestimmung erfolglos war, da es nicht möglich ist, die Entsprechung zu bestimmen, und wird Schritt S412 beendet.
  • Schritt S1404: Die Entsprechungsberechnungseinheit 109 gibt die verifizierte Informationscodefolge, die die (u, v)-Position des Tabellenwerts enthält, der bei der Suche in Schritt S1402 mit der verifizierten Informationscodefolge zusammengepasst bzw. übereingestimmt hat, als eine entsprechungsbestimmte Abbildungscodefolge aus und beurteilt, dass die Entsprechungsbestimmung erfolgreich war, und Schritt S412 wird beendet.
  • Indem die Verarbeitung gemäß dem vorstehend beschriebenen Vorgang durchgeführt wird, bestimmt die Entsprechungsberechnungseinheit 109 die Entsprechung zwischen dem Projektionsmusterbild und den verifizierten Informationscodefolgen, die die Abbildungscodefolge bilden. Dann schreitet die Verarbeitung zu Schritt S413 voran.
  • Schritt S413: Die Entsprechungsberechnungseinheit 109 beurteilt das Verarbeitungsergebnis der Berechnung zum Bestimmen der Entsprechung in Schritt S412. Falls die Verarbeitung erfolgreich war, schreitet die Verarbeitung zu Schritt S414 voran. Falls die Verarbeitung erfolglos war, kehrt die Verarbeitung zu Schritt S406 zurück.
  • Schritt S414: Die Dreidimensionalform-Erlangungseinheit 110 ver-/misst die dreidimensionale Form des Objekts 102 unter Verwendung der in Schritt S412 erlangten entsprechungsbestimmten Abbildungscodefolge. 16 zeigt eine schematische Darstellung für den Fall, dass die Position eines Messpunkts 1603, der der entsprechungsbestimmten Abbildungscodefolge in der Abbildungspunktabfolge entspricht, unter Verwendung eines Kamerakoordinatensystems 1602 ver- bzw. gemessen wird, in dem die Position eines Haupt- bzw. Mittelpunkts 1601 der Kamera auf den Ursprung O (0,0) eingestellt ist. In dem Projektionsmusterbild, das durch den Projektor 101 projiziert wird, sind Punkte in einer Punktabfolge mit dem gleichen u-Koordinatenwert so angeordnet, dass sie in einer einzelnen geraden Linie 1604 in der v-Richtung ausgerichtet sind. Zu dieser Zeit ist der Messpunkt 1603 ein Punkt, der auf einer Schnittlinie einer Schnittebene 1605, die in einem Raum durch die gerade Linie 1604 gebildet wird, und des Objekts 102 liegt. Hierbei wird angenommen, dass die Schnittebene 1605, die durch ein Projektionsmesslinienmuster gebildet wird, im Voraus durch nachstehende Formel (3) unter Verwendung des Kamerakoordinatensystems kalibriert ist: ax + by + cz + d = 0 (3)
  • Außerdem liegt der Messpunkt 1603 auf einer geraden Linie 1608, die durch nachstehende Formel (4) unter Verwendung der Position P (Px, Py, –f) eines Projektionspunkts 1607 auf einem aufgenommenen Bild 1606, das durch die Kamera 104 gemäß 1 aufgenommen wird, dargestellt wird. Es sollte beachtet werden, dass in dem aufgenommenen Bild 1606 eine Bildpunktabfolge ohne den Projektionspunkt 1607 um der Einfachheit Willen weggelassen ist. Außerdem hat das aufgenommene Bild 1606 gemäß 16 eine tatsächliche Größe, die gleich einem Projektionsbild auf einer Bildlesevorrichtung ist, wenn die Kamera 104 gemäß 1 als eine Lochkamera angenommen wird. Außerdem wird angenommen, dass das aufgenommene Bild 1606 parallel zu der xy-Ebene der Kamerakoordinaten liegt und die Mitte des Bilds an einer Position liegt, die um eine Brennweite –f entfernt von der Position des Ursprungs in einer z-Achsenrichtung entfernt liegt:
    Figure DE112011102991B4_0002
    wobei t ein Parameter ist, der eine beliebige reelle Zahl ist.
  • Da ein Schnittpunkt der durch Formel (3) dargestellten Schnittebene 1605 und der durch Formel (4) dargestellten geraden Linie 1608 der Messpunkt 1603 ist, wird die Position C (Cx, Cy, Cz) des Messpunkts 1603 in dem Kamerakoordinatensystem durch nachstehende Formel (5) dargestellt:
    Figure DE112011102991B4_0003
  • Falls die vorstehend beschriebenen Berechnungen auf alle entsprechungsbestimmten Abbildungscodefolgen angewandt werden, kann die Form des gesamten Objekts 102 aus einem Satz von Messpunkten 1603 erhalten werden.
  • Indem der vorstehend beschriebene Vorgang durchgeführt wird, ist es selbst mit Bezug auf ein solches Objekt, das eine diskontinuierliche Oberfläche wie etwa eine Grenze aufweist, welches mit dem herkömmlichen Verfahren dazu tendiert hat, zu einem fehlerhaften Ergebnis einer Entsprechungsbestimmung zu führen, möglich, eine fehlerhafte Bestimmung einer Entsprechung zu minimieren, indem eine Codefehlerkorrektur/-erfassung in Schritt S410 durchgeführt wird. Außerdem werden selbst mit Bezug auf ein Objekt mit einer komplizierten Form, für das es schwierig war, die Entsprechung zu bestimmen, da das herkömmliche Verfahren nur einen Typ von Abtastmerkmal verwendet, Gebiete vergrößert, in denen die Entsprechung bestimmt werden kann, indem versucht wird, Informationscodefolgen unter Verwendung einer Vielzahl von Typen von Abtastmerkmalen in Schritt S408 abzutasten. Aufgrund der vorgenannten Gründe ist es möglich, eine robustere dreidimensionale Ver-/Messung als mit dem herkömmlichen Verfahren durchzuführen.
  • Es sollte beachtet werden, dass die Mustererzeugungseinheit 103, die Musterextraktionseinheit 105, die Informationserlangungseinheit 106, die Codeabtasteinheit 107, die Codefehler-Erfassungs-/Korrektureinheit 108, die Entsprechungsberechnungseinheit 109 und die Dreidimensionalform-Erlangungseinheit 110 gemäß 1 des vorliegenden Ausführungsbeispiels nicht notwendigerweise unabhängige Vor- bzw. Einrichtungen sind. Diese Einheiten können jeweils auch als ein Teil eines Programms realisiert werden, das auf einem Computer läuft, der aus einer zentralen Verarbeitungseinheit, einem Hauptspeicher, einem externen Speicher und einem Informationsbus, der diese Bauteile miteinander verbindet, aufgebaut ist.
  • Außerdem ist es nicht notwendigerweise erforderlich, dass ein Projektionsmusterbild durch die Mustererzeugungseinheit 103 in Schritt S401 jedes Mal erzeugt wird, wenn eine Verarbeitung durchgeführt wird. Ein Projektionsmusterbild, das einmal erzeugt wurde, kann in einem Speicher gespeichert werden und das nächste Mal, wenn es benötigt wird, aus dem Speicher ausgelesen werden. In einem solchen Fall, in dem das abzubildende Objekt eingegrenzt ist und ein optimales Projektionsmusterbild im Voraus bestimmt ist, ist es möglich, die Verarbeitung durch Verwendung der vorstehend beschriebenen Konfiguration auszulassen und eine Beschleunigung zu erreichen.
  • Außerdem können in einigen Fällen Informationscodefolgen aus den meisten Gebieten unter Verwendung einer kleineren Anzahl von Abtastmerkmalen abhängig von der Form, der Größe und dem Oberflächenmaterial des Objekts 102 erlangt werde. In solchen Fällen kann die Anzahl von in Schritt S408 zu verwendenden Abtastmerkmalen auf ein Minimum von Eins reduziert werden. Wenn die Anzahl von Abtastmerkmalen abnimmt, verringert sich die Rechenlast und ist es daher möglich, einen Ausgleich zwischen der Komplexität eines abbildbaren Objekts und der Verarbeitungsgeschwindigkeit zu erreichen, indem die Anzahl von Abtastmerkmalen auf geeignete Weise reduziert wird.
  • Außerdem gibt es gleichermaßen abhängig von der Form, der Größe und dem Oberflächenmaterial des Objekts 102 Fälle, in denen ein Codefehler kaum auftritt. In solchen Fällen können die Codefehler-Erfassungs-/Korrektureinheit 108 und eine entsprechende Verarbeitung, nämlich Schritt S410, ausgelassen werden. Ein Auslassen der Verarbeitung führt zu einer Verringerung der Rechenlast, und es ist daher möglich, einen Ausgleich zwischen der Komplexität eines abbildbaren Objekts und der Verarbeitungsgeschwindigkeit zu erreichen, indem die Verarbeitung wie vorstehend beschrieben auf geeignete Weise ausgelassen wird.
  • Außerdem ist bei dem vorliegenden Ausführungsbeispiel angenommen, dass die Anzahl von Typen von Symbolen zur Verwendung in dem Projektionsmusterbild auf drei eingestellt ist, nämlich rot, blau und grün, und dass die Größe des Rechtecks, das ein Abtastmerkmal umgibt bzw. einfasst, auf 3 × 3 eingestellt ist. Daher werden dreistellige de Bruijn-Sequenzen mit Untersequenzlängen von 2 und 3 als die de Bruijn-Sequenzen ausgewählt, die zum Erzeugen der Projektionscodefolge verwendet werden. Diese Zahlenwerte können auch auf geeignete Weise verwendet werden, und es können drei- oder mehrstellige de Bruijn-Sequenzen mit Untersequenzlängen von drei oder mehr verwendet werden, abhängig von dem Typ von Symbolen, die in dem Projektionsmusterbild verwendet werden können, oder den Eigenschaften des Objekts. Falls die Anzahl von zu verwendenden Symbolen erhöht werden kann, ist es möglich, die Codefehler-Korrektur-/Erfassungsfähigkeit abhängig von den ausgewählten de Bruijn-Sequenzen zu verbessern. Wahlweise ist es auch möglich, das abbildbare Gebiet durch Vergrößerung der Größe der gesamten Projektionscodefolge zu verbessern.
  • Außerdem, obwohl die Punktabfolge, in der rot, grün oder blau jedem Codewert entspricht und als das Symbol zur Verwendung in dem Projektionsmusterbild dient, bei dem vorliegenden Ausführungsbeispiel verwendet ist, ist die vorliegende Erfindung nicht darauf beschränkt. Es kann jeder Typ von Symbolen verwendet werden, solange eine unterscheidbare Eigenschaft wie etwa Farbe, Luminanz und Form entsprechend zu jedem Codewert eingestellt ist, so dass jeder Codewert unterschieden werden kann. 17 zeigt ein Beispiel eines anderen Projektionsmusters. In dem Projektionsmusterbild dieses Beispiels sind die Symbole als die Formen an den Positionen von Schnittpunkten in einem Projektionsmuster mit horizontalen und vertikalen Linien, die ein Gitter bilden, anstelle der Punkte ausgedrückt bzw. dargestellt. In diesem Beispiel ist ein entsprechender Code auf 1 eingestellt, falls die Form an der Position eines Schnittpunkts ein Rechteck ist, ist ein entsprechender Code auf 2 eingestellt, falls die Form ein Kreuz ist, und ist ein entsprechender Code auf 3 eingestellt, falls die Form ein Kreis ist. Mit der vorstehend beschriebenen Konfiguration ist es möglich, ein monochromes Projektionsmusterbild zu verwenden, und kann daher der Projektor 101 vereinfacht werden. Außerdem ist es auch möglich, die Nachbarschaftsbeziehungen zwischen Codes einfacher zu erfassen, indem die ein Gitter bildenden horizontalen und vertikalen Linien verfolgt bzw. nachgegangen werden.
  • Außerdem kann, obwohl die Konfiguration, in der nur eine Projektionscodefolge basierend auf de Bruijn-Sequenzen verwendet wird, bei dem vorliegenden Ausführungsbeispiel angenommen ist, ein Projektionsmusterbild, in dem eine Projektionscodefolge wiederholt wird, in dem Fall verwendet werden, in dem die Änderung in einer Tiefenrichtung des Objekts hinreichend gering ist und Informationscodefolgen mit dem gleichen Wert niemals miteinander überlappen. Es sollte beachtet werden, dass in dem Fall, in dem eine Projektionscodefolge wiederholt wird, es notwendig ist, die Zyklizität mit Bezug auf zu verwendende de Brujin-Sequenzen zu berücksichtigen, so dass es notwendig ist, Sequenzen von ursprünglichen Sequenzlängen zu verwenden.
  • Die de Bruijn-Sequenz mit k = 3 und m = 3 (mit der Sequenzlänge 33 = 27), die in der u-Richtung bei diesem Beispiel zu verwenden ist, ist eine nachstehende Zahlenfolge: 331321311231221211133232223 (6)
  • Gleichermaßen ist die de Bruijn-Sequenz mit k = 3 und n = 2 (mit der Sequenzlänge 32 = 9), die in der v-Richtung bei diesem Beispiel zu verwenden ist, nachstehend gezeigt: 331132212 (7)
  • Wie es vorstehend beschrieben ist, ist es möglich, den abbildbaren Bereich durch Verwendung eines Projektionsmusterbilds zu erweitern, in dem eine Projektionscodefolge wiederholt wird.
  • Außerdem ist in Schritt S1102 in Schritt S410 des vorliegenden Ausführungsbeispiels in dem Fall, in dem es nur eine Zeile von Hashwerten gibt, eine Codefehlererfassung unmöglich und wird daher beurteilt, dass kein Codefehler vorliegt, und wird die Verarbeitung beendet. Dies kann jedoch als erfolglos beurteilt werden, falls es gewünscht ist, eine fehlerhafte Entsprechung weiter zu reduzieren. Außerdem, da die Codefehler-Korrektur-/Erfassungsfähigkeit desto mehr verbessert ist je länger der redundante Code ist, kann die Länge des redundanten Codes, der erlangt werden konnte, als ein Maß von Zuverlässigkeit behandelt werden und als ein Kriterium verwendet werden, basierend auf dem beurteilt wird, ob das Ergebnis einer Entsprechungsbestimmung zu verwenden ist oder nicht.
  • Außerdem ist es nicht notwendigerweise erforderlich, de Brujin-Sequenzen als die Projektionscodefolge zu verwenden, wie es bei dem vorliegenden Ausführungsbeispiel der Fall ist. In dem Fall, in dem nur zwei Typen von Symbolen verwendet werden können, zum Beispiel in dem Fall, in dem ein Projektionsmusterbild unter Verwendung eines monochromen Projektors projiziert wird, kann eine M-Sequenz, die aus zweistelligen Codes gebildet ist, die unter Verwendung von 0 und 1 ausgedrückt bzw. dargestellt werden, als die Projektionscodefolge verwendet werden. In dem Fall, in dem die M-Sequenz verwendet wird, kann die Projektionscodefolge auf die gleiche Art und Weise wie bei dem vorstehend beschriebenen Beispiel erzeugt werden, indem die Größe des Rechtecks, das ein Abtastmerkmal umgibt bzw. einfasst, auf m × (n + 1) eingestellt wird, zwei Typen von M-Sequenzen, nämlich M-Sequenzen der m-ten Ordnung und der n-ten Ordnung, in der u-Richtung und der v-Richtung ausgewählt werden, und eine Binärsumme berechnet wird. In dem Fall, in dem die M-Sequenz verwendet wird, sind es nur zwei Typen von Symbolen, die erforderlich sind, auch wenn die Abtastmerkmalsgröße relativ groß wird, und kann ein hochdichtes Projektionsmusterbild projiziert werden. Daher wäre es in einer Umgebung, in der wenige Codefehler auftreten, möglich, eine präzisere dreidimensionale Ver-/Messung durchzuführen.
  • Wie es vorstehend beschrieben ist, ist es gemäß dem vorliegenden Ausführungsbeispiel möglich, nicht nur eine fehlerhafte Bestimmung einer Entsprechung zu reduzieren, sondern auch mit einer breiteten Vielfalt von Objektformen umzugehen bzw. fertig zu werden, da Codefolgen erhalten werden können, mit Bezug auf die eine Codefehlerkorrektur möglich ist, während die Anzahl von Abbildungsmustern minimiert wird, die aus dem aufgenommenen Bild herausgegriffen werden.
  • Gemäß der vorliegenden Erfindung ist ein robusteres dreidimensionales Ver-/Messungsverfahren bereitgestellt, das eine fehlerhafte Bestimmung einer Entsprechung reduziert und auch eine dreidimensionale Ver-/Messung mit Bezug auf eine breitere Vielfalt von Formen von Objekten ermöglicht.
  • Obwohl eine ausführliche Beschreibung des Ausführungsbeispiels vorstehend gegeben wurde, kann die vorliegende Erfindung zum Beispiel als ein System, eine Vorrichtung, ein Verfahren, ein Programm oder eine Speichermedium ausgeführt bzw. verkörpert werden. Im Speziellen kann die vorliegende Erfindung auf ein System angewandt werden, das aus einer Vielzahl von Vor- bzw. Einrichtungen besteht, oder auf eine Vorrichtung angewandt werden, die aus einer einzigen Einrichtung bzw. einem einzigen Bauelement besteht.
  • Aspekte der vorliegenden Erfindung können auch durch einen Computer eines Systems oder einer Vorrichtung (oder Bauelemente wie etwa eine CPU oder MPU) realisiert werden, der ein auf einem Speicherbauelement aufgezeichnetes Programm ausliest und ausführt, um die Funktionen des vorstehend beschriebenen Ausführungsbeispiels durchzuführen, sowie durch ein Verfahren, dessen Schritte durch einen Computer eines Systems oder einer Vorrichtung durchgeführt werden, indem zum Beispiel ein auf einem Speicherbauelement aufgezeichnetes Programm ausgelesen und ausgeführt wird, um die Funktionen des vorstehend beschriebenen Ausführungsbeispiels durchzuführen. Zu diesem Zweck wird das Programm an dem Computer zum Beispiel über ein Netzwerk oder von einem Speichermedium verschiedener Typen bereitgestellt, das als das Speicherbauelement dient (z. B. ein computerlesbares Speichermedium).
  • Während die vorliegende Erfindung unter Bezugnahme auf beispielhafte Ausführungsbeispiele beschrieben wurde, ist es selbstverständlich, dass die Erfindung nicht auf die offenbarten beispielhaften Ausführungsbeispiele beschränkt ist. Dem Umfang der folgenden Patentansprüche ist die breiteste Auslegung zuzugestehen, so dass alle derartigen Modifikationen und äquivalente Strukturen sowie Funktionen umfasst sind.

Claims (13)

  1. Bildinformationsverarbeitungsvorrichtung, die angepasst ist, eine dreidimensionale Vermessung eines Objekts unter Verwendung eines aufgenommenen Bilds durchzuführen, das durch Projektion eines Projektionsmusters auf das Objekt erhalten wird, wobei das Projektionsmuster erhalten wird durch Zuordnung eines Symbols, das sich von einem zu einem anderen Typ von Code einer Projektionscodefolge unterscheidet, zu jedem Code in einer Projektionscodefolge, in der eine Vielzahl von Typen von Codes zweidimensional angeordnet sind, wobei die Vorrichtung aufweist: eine Erlangungseinrichtung (105) zum Erlangen eines Abbildungsmusters durch Extrahieren von Symbolen aus dem aufgenommenen Bild; eine Umwandlungseinrichtung (106) zum Umwandeln von jedem Symbol in dem durch die Erlangungseinrichtung erlangten Abbildungsmuster in einen entsprechenden Code, um eine Abbildungscodefolge zu erlangen; eine Erzeugungseinrichtung (107) zum Erzeugen einer Informationscodefolge durch Erlangen einer vorbestimmten Anzahl von Codes aus der Abbildungscodefolge gemäß einem Abtastmuster, in dem Abtastpositionen der vorbestimmten Anzahl von Codes und eine Abfolge der Codes definiert sind, und Anordnen der erlangten Codes; und eine Messeinrichtung (109, 110) zum Durchführen einer dreidimensionalen Vermessung des Objekts durch Bestimmen einer Entsprechung zwischen der Informationscodefolge und der Projektionscodefolge basierend auf der Informationscodefolge und dem Abtastmuster, dadurch gekennzeichnet, dass die Erzeugungseinrichtung (107) angepasst ist, als das Abtastmuster zum Erzeugen der Informationscodefolge, ein Abtastmuster, das ermöglicht, die vorbestimmte Anzahl von Codes aus der Abbildungscodefolge unter Verwendung des Abtastmusters zu erlangen, aus einer Vielzahl von Typen von Abtastmustern auszuwählen, und die Messeinrichtung (109, 110) angepasst ist, als die Projektionscodefolge zum Bestimmen der Entsprechung, eine Projektionscodefolge zu ermitteln, die dem ausgewählten Abtastmuster entspricht, das zum Erzeugen der Informationscodefolge verwendet wird, und die mit der erzeugten Informationscodefolge übereinstimmt.
  2. Vorrichtung gemäß Anspruch 1, wobei, falls es nicht möglich ist, die vorbestimmte Anzahl von Codes aus der Abbildungscodefolge unter Verwendung des ausgewählten Abtastmusters zu erlangen, die Erzeugungseinrichtung ein anderes Abtastmuster auswählt, um die Informationscodefolge zu erzeugen.
  3. Vorrichtung gemäß Anspruch 1, wobei das ausgewählte Abtastmuster und die Projektionscodefolge so konfiguriert sind, dass alle Informationscodefolgen, die von einem einzigen Abtastmuster erlangt werden, exakt einmal in dem Projektionsmuster vorkommen.
  4. Vorrichtung gemäß Anspruch 1, wobei das ausgewählte Abtastmuster verwendet wird, um die Informationscodefolge aus einer Teilcodefolge einer vorbestimmten Größe zu erzeugen, wobei die Vorrichtung zusätzlich aufweist: eine Fehlererfassungseinrichtung (108) zum Erfassen eines Fehlers in der Informationscodefolge unter Verwendung eines redundanten Codes, der sich von der Informationscodefolge unterscheidet, in der Teilcodefolge.
  5. Vorrichtung gemäß Anspruch 1, wobei das ausgewählte Abtastmuster Positionen einer Spalte in einer vertikalen Richtung und einer Zeile in einer horizontalen Richtung zur Extraktion von m + n Codes aus einer Teilcodefolge mit m Punkten in der horizontalen Richtung n + 1 Punkten in der vertikalen Richtung und eine Abfolge der extrahierten Codes definiert.
  6. Vorrichtung gemäß Anspruch 5, zusätzlich mit: einer Fehlerkorrektureinrichtung (108) zum Korrigieren eines Fehlers in der Informationscodefolge unter Verwendung eines anderes Codes als den m + n Codes, die zum Erzeugen der Informationscodefolge in der Teilcodefolge verwendet werden, als ein redundanter Code.
  7. Vorrichtung gemäß Anspruch 3, wobei die Projektionscodefolge basierend auf einer de Bruijn-Sequenz erzeugt wird, die aus Codes von drei oder mehr Stellen in jeder der horizontalen und der vertikalen Richtung aufgebaut ist.
  8. Vorrichtung gemäß Anspruch 7, wobei eine horizontale und eine vertikale Größe der Teilcodefolge gleich Untersequenzlängen der horizontalen und der vertikalen de Bruijn-Sequenz sind, die für die Projektionscodefolge verwendet werden.
  9. Vorrichtung gemäß Anspruch 3, wobei die Projektionscodefolge basierend auf einer M-Sequenz erzeugt wird, die aus Codes von zwei Stellen in jeder der horizontalen und der vertikalen Richtung aufgebaut ist.
  10. Vorrichtung gemäß Anspruch 9, wobei eine horizontale und eine vertikale Größe der Teilcodefolge gleich Untersequenzlängen der horizontalen und der vertikalen M-Sequenz sind, die für die Projektionscodefolge verwendet werden.
  11. Verfahren zum Steuern einer Bildinformationsverarbeitungsvorrichtung zum Durchführen einer dreidimensionalen Vermessung eines Objekts unter Verwendung eines aufgenommenen Bilds durchführt, das durch Projektion eines Projektionsmusters auf das Objekt erhalten wird, wobei das Projektionsmuster erhalten wird durch Zuordnung eines vorbestimmten Symbols, das sich von einem zu einem anderen Typ von Code einer Projektionscodefolge unterscheidet, zu jedem Code in einer Projektionscodefolge, in der eine Vielzahl von Typen von Codes zweidimensional angeordnet sind, wobei das Verfahren aufweist: Erlangen (S404) eines Abbildungsmusters durch Extrahieren von Symbolen aus dem aufgenommenen Bild; Umwandeln (S405) von jedem Symbol in dem in dem Erlangungsschritt erlangten Abbildungsmuster in einen entsprechenden Code, um eine Abbildungscodefolge zu erlangen; Erzeugen (S408) einer Informationscodefolge durch Erlangen einer vorbestimmten Anzahl von Codes aus der Abbildungscodefolge gemäß einem Abtastmuster, in dem Abtastpositionen der vorbestimmten Anzahl von Codes und eine Abfolge der Codes definiert sind, und Anordnen der erlangten Codes; und Durchführen (S412, S414) einer dreidimensionalen Vermessung des Objekts durch Bestimmen einer Entsprechung zwischen der Informationscodefolge und der Projektionscodefolge basierend auf der Informationscodefolge und dem Abtastmuster, dadurch gekennzeichnet, dass der Erzeugungsschritt (S408) einen Auswahlschritt des Auswählens, als das Abtastmuster zum Erzeugen der Informationscodefolge, eines Abtastmusters, das ermöglicht, die vorbestimmte Anzahl von Codes aus der Abbildungscodefolge unter Verwendung des Abtastmusters zu erlangen, aus einer Vielzahl von Typen von Abtastmustern, und der Messschritt (S412) einen Ermittlungsschritt (S1401, S1402) des Ermittelns, als die Projektionscodefolge zum Bestimmen der Entsprechung, einer Projektionscodefolge, die dem ausgewählten Abtastmuster entspricht, das zum Erzeugen der Informationscodefolge verwendet wird, und die mit der erzeugten Informationscodefolge übereinstimmt.
  12. Verfahren gemäß Anspruch 11, wobei in dem Erzeugungsschritt, falls es nicht möglich ist, die vorbestimmte Anzahl von Codes aus der Abbildungscodefolge unter Verwendung des ausgewählten Abtastmusters zu erlangen, ein anderes Abtastmuster ausgewählt wird, um die Informationscodefolge zu erzeugen.
  13. Computerlesbares Speichermedium, das ein Computerprogramm speichert, das einen Computer veranlasst, die Schritte des Verfahrens gemäß Anspruch 11 oder 12 auszuführen.
DE112011102991.8T 2010-09-08 2011-08-31 Verfahren und Vorrichtung zur 3D-Vermessung durch Erfassung eines vorbestimmten Musters Expired - Fee Related DE112011102991B4 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2010201341 2010-09-08
JP2010-201341 2010-09-08
PCT/JP2011/070312 WO2012033109A1 (en) 2010-09-08 2011-08-31 Method and apparatus for 3d-measurement by detecting a predetermined pattern

Publications (2)

Publication Number Publication Date
DE112011102991T5 DE112011102991T5 (de) 2013-08-14
DE112011102991B4 true DE112011102991B4 (de) 2016-09-22

Family

ID=44678000

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112011102991.8T Expired - Fee Related DE112011102991B4 (de) 2010-09-08 2011-08-31 Verfahren und Vorrichtung zur 3D-Vermessung durch Erfassung eines vorbestimmten Musters

Country Status (6)

Country Link
US (1) US9117103B2 (de)
JP (1) JP5854715B2 (de)
CN (1) CN103098091B (de)
DE (1) DE112011102991B4 (de)
GB (1) GB2497031A (de)
WO (1) WO2012033109A1 (de)

Families Citing this family (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5132832B1 (ja) 2011-07-11 2013-01-30 キヤノン株式会社 計測装置および情報処理装置
JP2013124884A (ja) 2011-12-13 2013-06-24 Canon Inc 情報処理装置、情報処理装置の制御方法、およびプログラム
JP2013206104A (ja) * 2012-03-28 2013-10-07 Sony Corp 情報処理装置、情報処理方法、及びプログラム
JP6065656B2 (ja) * 2012-05-22 2017-01-25 株式会社リコー パターン処理装置、パターン処理方法、パターン処理プログラム
TWI489079B (zh) * 2013-11-01 2015-06-21 Young Optics Inc 投影裝置與深度量測系統
JP6254849B2 (ja) 2014-01-17 2017-12-27 キヤノン株式会社 画像処理装置、画像処理方法
WO2016090113A2 (en) * 2014-12-04 2016-06-09 Perkinelmer Health Sciences, Inc. Systems and methods for facilitating placement of labware components
US9948920B2 (en) * 2015-02-27 2018-04-17 Qualcomm Incorporated Systems and methods for error correction in structured light
DE102015205187A1 (de) * 2015-03-23 2016-09-29 Siemens Aktiengesellschaft Verfahren und Vorrichtung zur Projektion von Linienmustersequenzen
US9846943B2 (en) 2015-08-31 2017-12-19 Qualcomm Incorporated Code domain power control for structured light
FR3069941B1 (fr) * 2017-08-03 2020-06-26 Safran Procede de controle non destructif d'une piece aeronautique et systeme associe
JP6880512B2 (ja) * 2018-02-14 2021-06-02 オムロン株式会社 3次元測定装置、3次元測定方法及び3次元測定プログラム
BR112020018938A2 (pt) * 2018-03-22 2020-12-29 Austria Metall Gmbh Bobina feita de uma tira de metal enrolada com uma marcação e uso dessa marcação
JP7052564B2 (ja) 2018-05-29 2022-04-12 オムロン株式会社 視覚センサシステム、制御方法およびプログラム
JP7035831B2 (ja) 2018-06-13 2022-03-15 オムロン株式会社 三次元計測装置、コントローラ、および三次元計測装置における制御方法
JP7115057B2 (ja) * 2018-06-20 2022-08-09 オムロン株式会社 計測システムおよび計測方法
JP7243513B2 (ja) * 2018-08-02 2023-03-22 オムロン株式会社 計測システムおよび計測方法
US10867225B2 (en) 2018-08-02 2020-12-15 Omron Corporation Measurement system and measurement method
JP2020201331A (ja) * 2019-06-07 2020-12-17 オムロン株式会社 三次元計測装置用光学アセンブリおよびこれを備えた三次元計測装置
JP7434761B2 (ja) 2019-09-05 2024-02-21 オムロン株式会社 三次元計測装置用光学アセンブリおよびこれを備えた三次元計測装置
WO2021111733A1 (ja) * 2019-12-05 2021-06-10 ソニーグループ株式会社 画像処理装置及び画像処理方法、並びに画像投影システム
TWI790783B (zh) * 2021-10-20 2023-01-21 財團法人工業技術研究院 編碼基板、座標定位系統及其方法

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080118143A1 (en) * 2006-11-21 2008-05-22 Mantis Vision Ltd. 3D Geometric Modeling And Motion Capture Using Both Single And Dual Imaging

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE10232690A1 (de) 2002-07-18 2004-02-12 Siemens Ag Verfahren und Vorrichtung zur dreidimensionalen Erfassung von Objekten sowie Verwendung der Vorrichtung und des Verfahrens
US8172407B2 (en) * 2007-05-16 2012-05-08 Honda Motor Co., Ltd. Camera-projector duality: multi-projector 3D reconstruction
US8142023B2 (en) * 2007-12-21 2012-03-27 Honda Motor Co., Ltd. Optimized projection pattern for long-range depth sensing
JP2010201341A (ja) 2009-03-03 2010-09-16 Seiko Epson Corp 液滴吐出装置および液状材料供給管
CN101794461B (zh) * 2010-03-09 2011-12-14 深圳大学 一种三维建模方法及系统
JP5576726B2 (ja) 2010-06-29 2014-08-20 キヤノン株式会社 三次元計測装置、三次元計測方法、及びプログラム

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080118143A1 (en) * 2006-11-21 2008-05-22 Mantis Vision Ltd. 3D Geometric Modeling And Motion Capture Using Both Single And Dual Imaging

Non-Patent Citations (7)

* Cited by examiner, † Cited by third party
Title
J. Salvi et al.; "Pattern codifcation strategies in structured light systems"; Pattern Recognition 37, 2004, S. 827 - 849 *
J. Salvi et al.; "Pattern codifcation strategies in structured light systems"; Pattern Recognition 37, 2004, S. 827 – 849
K. Claes et al.; "Robot positioning using structured light patterns suitable for self calibration and 3D tracking"; Proceedings of the 2007 International Conference on Advanced Robotics, Jeju, Korea, 2007 *
P.M. Griffin et al.; "Generation of Uniquely Encoded Light Patterns for Range Data Acquisition Pattern Recognition"; Vol. 25, No. 6, 1992, S. 609 - 616 *
P.M. Griffin et al.; "Generation of Uniquely Encoded Light Patterns for Range Data Acquisition Pattern Recognition"; Vol. 25, No. 6, 1992, S. 609 – 616
X. Maurice et al.; "Real-time structured light patterns coding with subperfect submaps"; Real-Time Image and Video Processing 2010, Proc. of SPIE Vol. 7724, 2010, S. 77240E-1 - 8 *
X. Maurice et al.; "Real-time structured light patterns coding with subperfect submaps"; Real-Time Image and Video Processing 2010, Proc. of SPIE Vol. 7724, 2010, S. 77240E-1 – 8

Also Published As

Publication number Publication date
JP2012079294A (ja) 2012-04-19
JP5854715B2 (ja) 2016-02-09
GB201303958D0 (en) 2013-04-17
US20130156268A1 (en) 2013-06-20
WO2012033109A1 (en) 2012-03-15
CN103098091A (zh) 2013-05-08
GB2497031A (en) 2013-05-29
CN103098091B (zh) 2015-12-09
DE112011102991T5 (de) 2013-08-14
US9117103B2 (en) 2015-08-25

Similar Documents

Publication Publication Date Title
DE112011102991B4 (de) Verfahren und Vorrichtung zur 3D-Vermessung durch Erfassung eines vorbestimmten Musters
EP2469224B1 (de) Verfahren zur intraoralen optischen Vermessung von Objekten unter Verwendung eines Triangulationsverfahrens
JP4915859B2 (ja) 物体の距離導出装置
DE112014004190T5 (de) Positurschätzverfahren und Roboter
DE69633908T2 (de) Anti-handzitter datenformatleser und verfahren
DE60215810T2 (de) Verfahren und gerät zur transformation eines bildes einer biologischen oberfläche
DE2703158C3 (de) Einrichtung zum Erfassen der Position eines Musters oder Zeichens
DE19604767A1 (de) Verfahren und Vorrichtung zum Dekodieren von unaufgelösten, komplexen Strichkodesymbologieprofilen mit verschiedenen Breiten
DE102016013274A1 (de) Bildverarbeitungsvorrichtung und verfahren zur erkennung eines bilds eines zu erkennenden objekts aus eingabedaten
DE69629930T2 (de) Verfahren zum Festlegen eines auf einem Objekt angebrachten optischen Codes
DE102004004528A1 (de) Verfahren, Vorrichtung und Programm zur Verarbeitung eines Stereobildes
DE112009000099T5 (de) Bildsignaturen zur Verwendung in einer bewegungsbasierten dreidimensionalen Rekonstruktion
DE10123406A1 (de) Verfahren zum Erfassen von zweidimensionalen Codes
DE112013005794T5 (de) Dreidimensionaler Scanner und Betriebsverfahren
DE102015005267A1 (de) Informationsverarbeitungsvorrichtung, Verfahren dafür und Messvorrichtung
DE112011103452T5 (de) Verfahren zum Angleichen von Pixeln einer Entfernungsdarstellung
WO2011041812A1 (de) Verfahren zur aufnahme dreidimensionaler abbilder
EP3775767B1 (de) Verfahren und system zur vermessung eines objekts mittels stereoskopie
DE2829808A1 (de) Verfahren und vorrichtung zum lesen von zeichen
DE102016100132B4 (de) Verfahren und Vorrichtung zum Untersuchen eines Objekts unter Verwendung von maschinellem Sehen
DE102013112040A1 (de) System und Verfahren zum Auffinden von sattelpunktartigen Strukturen in einem Bild und Bestimmen von Informationen daraus
DE3718620A1 (de) Verfahren und vorrichtung zur ermittlung des drehwinkels eines objektmusters
DE60129245T2 (de) Methode zum entdecken neuer körper in einer beleuchteten umgebung
DE102020207974A1 (de) Systeme und verfahren zum nachweis von bewegung während 3d-datenrekonstruktion
EP3903478A2 (de) Verfahren und verarbeitungseinrichtung zum verarbeiten von messdaten eines bildsensors

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: G06T0007000000

Ipc: G01B0011250000

R016 Response to examination communication
R018 Grant decision by examination section/examining division
R020 Patent grant now final
R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee