[SCRÂȘIT] [FOȘIT] [CLIC] BERTHOLD HORN: Schimbăm subiectele. Până acum, ne-am concentrat pe un fel de vedere timpurie, materialul de nivel scăzut , ce să facem cu nivelurile de gri, cum să detectăm caracteristicile anumitor tipuri, în special marginile. Am vorbit despre găsirea foarte precisă a marginilor. Am putea continua pe această linie. Am putea vorbi despre găsirea așa-ziselor puncte interesante, dar să trecem la următoarea etapă în care de fapt folosim acele informații pentru a atinge un anumit scop. Și așa vom vorbi în continuare despre fotogrammetrie. Și numele este compus din două rădăcini, care înseamnă practic măsurare și imagini. Deci este vorba despre măsurarea din imagini. Și își are originile imediat după ce fotografia a fost inventată, deoarece oamenii au văzut potențialul pentru realizarea hărților. Ai trimite pe cineva sus într-un balon cu aer cald, care era popular în acele vremuri. Și apoi ai o imagine, care este un fel de hartă dacă solul este plat și ai avut camera exact în modul corect. Dacă ați fost pe teren deluros, atunci luarea mai multor imagini vă poate permite să reconstruiți o suprafață tridimensională. Deci, acesta este genul de lucru la care ne vom uita. Și, în special, vom vorbi despre patru probleme diferite, care au nume -- și acestea sunt doar probleme clasice din fotogrammetrie, care au fost reinventate de oameni în viziunea artificială și au fost date diferite nume diferite. Dar, practic, asta sunt. Deci, acesta este cel despre care vom vorbi mai întâi. Și este vorba despre găsirea relației dintre ceva în 3D și altceva în 3D. Și s-ar putea, de exemplu, să avem două sisteme coordonate diferite , doi senzori diferiți. Imaginați-vă vehiculul autonom cu doi senzori laser. Și încercăm să le raportăm la sistemele de coordonate. Deci sunt teste diferite. Una este cum folosiți măsurătorile din aceste două sisteme de coordonate pentru a obține informații 3D. Dar înainte de a face asta, mai întâi trebuie să vă dați seama cum sunt legate cele două sisteme. Deci, trebuie să aflați transformarea coordonatelor de la un sistem de coordonate senzor la altul. Deci ăsta e un fel de problemă. Și problema simetrică a acesteia este în cazul în care avem un singur sistem de coordonate, dar fie sunt două obiecte, fie obiectul se mișcă. Și vrem să știm relația dintre înainte și după. Și este de fapt aceeași problemă și vom vorbi despre asta. Există câteva avantaje în a ataca mai întâi problema 3D. Una este că are o soluție în formă închisă. Este întotdeauna drăguț, chiar dacă, într-un anumit sens în viziunea artificială, de multe ori suntem mai preocupați de a doua problemă, care este de la 2D la 2D, nu? Deci, principalul sens de care ne preocupă este o cameră și obținem imagini, imagini 2D. Și, de exemplu, am putea avea două camere, obținem două imagini 2D. Și am dori să le folosim pentru a recupera dimensiunea a treia. Deci, acesta este stereo binocular, de exemplu. Aceasta este doar o aplicație. Și din nou, există două tipuri de probleme, două tipuri de aplicații. Una este cum recuperez informațiile tridimensionale din acele două imagini. Și celălalt este cum așez mai întâi cele două camere aliniate , astfel încât să pot face asta. Cum găsesc relația dintre aceste două camere, unde sunt în spațiu și cum sunt rotite, deci orientarea exterioară. Deci este o problemă mixtă, de la 2D la 3D. Și asta are de-a face cu situația în care avem o imagine și avem, de asemenea, un model 3D al obiectului pe care îl privim. Și așa încercăm să ne dăm seama unde suntem și, din nou, cum suntem orientați în spațiu. Vom continua să auzim despre rotație și orientare, deoarece aceasta este o problemă în toate aceste domenii. Și deci nu știu. Vă puteți imagina o dronă zburând peste acestea și aveți o hartă a acestei zone. Și încerci să-ți dai seama din imagine unde te afli. Deci asta ar fi o problemă dificilă a acestei forme. Sau ești pe o navă spațială și te uiți la stele. Și încerci să-ți dai seama ce rotație în spațiu a navei tale spațiale. Și apoi ultimul este foarte asemănător. Și o scriu doar invers, de la 3D la 2D. Și asta este orientarea spre interior. Exteriorul și interiorul se referă la cameră. Deci, orientarea interioară este practic calibrarea camerei dvs. Așa că facem camera la anumite specificații. Avem lentile cu o anumită distanță focală. Și avem un fel de carcasă metalică care pune imaginea într-o poziție față de obiectiv, dar nu va fi niciodată exact conform specificațiilor. Deci, pentru a face măsurători foarte precise folosind aceste camere, trebuie să ne dăm seama mai întâi de proprietățile lor. Și am vorbit deja despre găsirea punctului principal și aceasta este forma de orientare interioară. Deci, din moment ce am ceva aici, ar trebui să am ceva în ultimul. BINE. Și în ceea ce privește aplicațiile, este cam evident. Aplicația originală în fotogrammetrie a fost realizarea de hărți topografice. Așa că ai zbura cu un avion de-a lungul unei căi predeterminate, făcând fotografii la intervale regulate, iar apoi o persoană s- ar uita printr-un instrument ca un binoclu. Cu excepția faptului că prezentați două dintre aceste imagini, iar combinația ochi-creier a persoanei le aliniază și determină practic înălțimea într-un anumit punct. Și pentru a reprezenta harta, ar exista un punct artificial în care ați introdus două puncte în cele două imagini la care se uită persoana. Iar poziția lor determină înălțimea. Și astfel, omul plasează practic acel punct artificial pe suprafața pe care o vede și îl mișcă la acea înălțime și creând astfel un contur. Și, desigur, nu mai facem asta. Totul este acum automatizat folosind corelația, apoi convoluția. Dar înainte de a face asta, trebuie să ne dăm seama cum se leagă camerele între ele. OK, doar pentru a da un exemplu foarte simplu de genul de lucru care se întâmplă în fotogrammetrie, așa că oamenii au multe indicii de adâncime, cel puțin o duzină sau cam așa ceva. Și am vorbit deja despre unele dintre ele. Am vorbit despre umbrire și am vorbit despre formă din umbrire. Și încă unul este stereo binocular. Deci, dacă vorbești cu femeia sau bărbatul de pe stradă și îi întrebi cum vedem 3D, de obicei ei spun, o, avem doi ochi. Deci, acesta este un indiciu de adâncime important, cel puțin din punctul de vedere al modului în care oamenii cred că vedem 3D, chiar dacă nu este cel mai important indiciu de adâncime. Dar să aruncăm o privire la asta și să o privim într-o situație specială extrem de simplificată. Deci, în această situație, avem două camere. Și le-am aliniat astfel încât să fie perpendiculare pe linia de bază. Deci fiecare dintre axele optice este perpendiculară pe linia de bază. Și axele optice sunt paralele. Și lentilele au aceeași distanță focală și așa mai departe. Deci, în practică, trebuie să fim mai atenți. Și trebuie să luăm în considerare diferențele dintre camere. Și de obicei, nu va fi foarte practic să le aliniați perfect în acest fel. Există cineva la Draper Lab -- Sutro era numele lui -- care a petrecut mult timp lucrând la stereo pentru roverele pe Marte cu mult înainte să existe cu adevărat un rover pe Marte. Și era preocupat să alinieze aceste camere. Și să spunem că nu a reușit niciodată. Este prea dificil să le aliniezi suficient de precis. Și, deci, ceea ce vom face mai târziu este de fapt să ne dăm seama cum se leagă aceste camere între ele. Dar doar pentru a înțelege acest lucru, să ne uităm la această situație. Și vom alege o origine care se află la jumătatea distanței dintre lentile. Și lungimea liniei de bază este b, deci b peste 2 din fiecare dintre acestea. Și apoi să presupunem că se află la o distanță f de câmpiile lor de imagine respective, unde f este, după cum știm, nu distanța focală, ci puțin mai mare. Și apoi am ales un punct aici. Și o vom fotografia cu ambele camere. Lăsăm deoparte direcția y, care este perpendiculară pe tablă pentru că este mai puțin interesant din acest punct de vedere. Și aici sus, avem un punct la X și Z. Și sarcina noastră este, de la xl și xr, poziția în acele două planuri de imagine, să determinăm X mare și Z mare. Deci avem cele două imagini. Obiectul nu se imaginează în același loc în cele două imagini. Și din diferență, putem calcula unde se află, în timp ce dintr-o imagine monoculară, desigur, avem acea ambiguitate a factorului de scară. Putem spune în ce direcție se află ceva, dar nu avem idee cât de departe este. Adăugarea celui de-al doilea ochi sau lentilă ne oferă această capacitate. Ei bine, folosim doar triunghiuri similare. Deci, folosind triunghiuri similare - deoarece x și y sunt relativ la această origine. Și deci, dacă vrem să avem această distanță, trebuie să scădem jumătate din linia de bază. Și, în mod similar, pe de altă parte, trebuie să adăugăm jumătate din linia de bază. OK, deci două ecuații, două necunoscute, putem rezolva. Deci adâncimea este invers proporțională cu disparitatea. Deci disparitatea este discrepanța de poziție dacă ar fi să suprapuneți imaginea din stânga și cea din dreapta. Și asta ne oferă direct adâncimea, distanța. Și asta ne permite, de asemenea, să determinăm sensibilitatea la eroare. Evident, dacă suntem foarte departe, diferența va fi foarte mică. Și apoi orice eroare mică în măsurarea disparității va produce o eroare mare în profunzime. OK, și xr plus xl-- și din nou, disparitatea intră în ea și linia de bază. Și de data aceasta, luăm o medie a pozițiilor. Deci putem determina poziția 3D-- ei bine, am omis și, dar asta este destul de ușor-- dacă avem acele două măsurători. Și un lucru este clar. Dacă creștem linia de bază, disparitatea devine mai mare și astfel măsurarea va fi mai precisă. Dacă creștem distanța focală, atunci disparitatea va fi mai mare și îmbunătățim precizia măsurării. Dar, desigur, aveți alte constrângeri asupra acestor cantități. Nu doriți ca cele două camere să fie prea îndepărtate una dintre ele, dacă este posibil. Deci, de exemplu, în vehiculele autonome, ar fi bine dacă cele două camere ar putea fi suficient de apropiate, astfel încât să le ascundeți în spatele oglinzii retrovizoare, mai degrabă decât să le treceți până la capăt. Și dacă sunt atât de îndepărtați unul de celălalt, atunci aveți o problemă de calibrare, deoarece este puțin probabil ca acestea să rămână perfect aliniate pe durata de viață a mașinii. Deci ar trebui să aveți o modalitate automată de a redescoperi relația dintre cele două sisteme de coordonate. OK, deci acesta este un caz foarte special, nu unul pe care să ne putem baza în practică, așa cum am menționat. Și așa va trebui să vorbim despre ce se întâmplă dacă aceste două camere nu sunt exact egale și nu sunt aranjate exact în această geometrie. Ce se întâmplă dacă există o rotație între cele două camere? Ce se întâmplă dacă linia de bază nu este perpendiculară pe axa optică și așa mai departe? Cum te calibrezi pentru asta? Și acesta va fi subiectul unei conversații ulterioare. Așa că haideți să intrăm direct în problema numărul unu. Să ne uităm la orientările absolute. Și o versiune a acesteia este că avem două LIDAR-uri, dispozitive de imagistică cu laser, care ne oferă coordonate 3D. Și vom folosi aceste informații pentru a obține o imagine a lumii din jurul vehiculului nostru autonom sau orice altceva. Și pentru a face acest lucru, trebuie să obținem relația dintre aceste două sisteme. Adică, încercăm să le aliniem într-un mod rezonabil, dar nu ne putem baza cu adevărat pe asta. În cazul reconstrucției topografice din fotografia aeriană, este evident și mai rău pentru că cele două poziții ale camerei nu sunt legate de vreun obiect rigid. Avionul zboară, face o poză. Zboară, face o poză. Și pilotul, desigur, încearcă să mențină o altitudine constantă, dar aerul nu este un mediu constant. Deci orientarea avionului nu va fi menținută exact. Și deci trebuie să compensăm pentru asta. Observați că, în toate acestea, presupunem că am găsit cumva puncte. Și am văzut cum să găsim marginile foarte precis și acesta este un tip de intrare pe care îl putem folosi. În mod similar, există metode pentru a găsi cotații, puncte „interesante”. Și știi, SIFT este un exemplu. Și cred că am lucrarea lui David Lowe pe site-ul stelar. Este puțin opac. Și de când l-a scris și l-a brevetat, au existat multe alte variante care, de obicei, sunt mult mai rapide din punct de vedere computațional, dar pot să nu fie la fel de precise și așa mai departe. Dar oricum, presupunem aici că există o modalitate de a găsi puncte interesante și de a le găsi din nou într-o altă imagine. Deci, lăsăm deoparte problema potrivirii. Presupunem că s-a făcut. Și așa, acum, avem doar problema de aici o grămadă de coordonate în cele două sisteme. Ce facem cu ei? Așa că voi numi aceste sisteme de coordonate stânga și dreapta doar pentru că una dintre marile aplicații aici este stereo binocular. Dar, desigur, ar putea fi înainte și după. Așa că vehiculul a făcut o poză a lumii, apoi s-a mișcat, apoi a făcut o altă poză. Deci, nu presupune că, pentru că sunt l și r, că asta e... deci iată un punct în mediu. Și vom descoperi că vom avea nevoie de mai mult de un punct, așa că să le punem un indice. Și o măsurăm în acest sistem de coordonate și obținem rli. Și o măsurăm în aceasta și obținem vectorul rri. Și din nou, există această dualitate în care am putea vorbi despre un obiect măsurat în două sisteme de coordonate diferite, sau am putea vorbi despre două obiecte măsurate în același sistem de coordonate. Și acesta este un fel, camera se mișcă sau obiectul se mișcă? Nu contează. Trebuie doar ocazional să fim atenți la semn, deoarece semnul se va răsturna. OK, deci acum, dacă știm unde sunt acele sisteme de coordonate, avem o situație foarte fericită. Pur și simplu proiectăm această rază în 3D și această rază în 3D, aflăm unde se intersectează și știm că pi este punctul i. Și asta este, în cele din urmă, ceea ce vrem să facem. Și de obicei nu se vor intersecta. Așa că vom găsi punctul în care au cea mai apropiată apropiere, care este locul în care linia care îi leagă este cât mai scurtă posibil. Și aceasta va fi o linie care este perpendiculară pe ambele. Deci, există o mică problemă interesantă de geometrie acolo, cum se face asta. Dar acum, ne concentrăm pe o altă problemă, și anume, înainte de a le putea proiecta în lume pentru a le găsi intersecția, trebuie să știu cum se leagă aceste două sisteme de coordonate unul cu celălalt. Și deci cum se raportează sistemele de coordonate tridimensionale între ele? Ei bine, există rotație și există translație. Și astfel, treaba noastră va fi să găsim rotația și să găsim translația. Și am mai vorbit despre asta. În 3D, există 3 grade de libertate la rotație și există 3 grade de libertate la translație. Și asta este ușor surprinzător. Știi că aș spune, oh, da, pentru că este 3D. Deci trebuie să fie trei. Dar așa cum am menționat în 2D, rotația are doar 1 grad de libertate, nu 2. Și în 4D, are 6. Deci este de n ori n minus 1 peste 2, nu n. Și deci este un accident fortuit că, în 3D, de 3 ori 2 din peste 2 este 3. Deci este ușor confuz. Face să pară că rotația este simplă atunci când nu este. Bine, deci căutăm șase numere. Și vom avea nevoie de suficientă constrângere pentru a le putea găsi. Deci căutăm o transformare a acestei forme în care aceasta este o traducere care este fixă. Aceasta este această formulă se aplică tuturor punctelor, Pi și Pj. Și aceasta este rotația noastră. Și am scris- o în mod intenționat în acest fel, cu o paranteză pentru a indica că nu vom insista ca aceasta să fie reprezentată ca o matrice ortogonală, ceea ce s-ar întâmpla dacă aș lăsa parantezele. Ați presupune că vorbesc despre o matrice 3 cu 3 înmulțită cu un vector, dar ne vom uita la altă reprezentare. Și vom vedea de ce. OK, deci astea sunt necunoscutele. Deci, cu o ecuație ca aceasta, există de obicei două moduri de a le folosi. Unul este că știți rotația și translația. Puneți în r din l și calculați r din r. Acesta este un lucru ușor și cu siguranță pentru ce îl folosim, dar este ușor. Problema noastră este alta. Știm niște perechi rl, rr. Adică, există anumite puncte pe care le-am măsurat în ambele sisteme de coordonate. Iar treaba noastră este să găsim rotația și translația. OK, acum, înainte de a continua, ar trebui să vorbim despre unele proprietăți ale rotației. Și le-am menționat deja , dar lasă-mă să o fac din nou. Deci, dacă reprezentăm r ca o matrice 3 pe 3, este mai bine să fie ortonormal. Și asta înseamnă că produsul punctual al rândurilor este 0 și că produsul punctual al rândurilor cu ele însele este 1. Și deci un mod rapid de a scrie așa este. Aceasta este matricea cu transpunerea sa este identitatea. Și poți verifica asta. Asta înseamnă că, cred, coloanele, dacă le tratăm ca vectori, acestea sunt ortogonale. Și sunt vectori unitari. Și se dovedește că puteți demonstra că, dacă coloanele au această proprietate, atunci rândurile au această proprietate. Deci am putea scrie și ca r ori r transpus este egal cu i, același lucru. Și apoi te uiți la asta și spui, stai puțin. Avem o matrice 3 pe 3 egală cu o matrice 3 pe 3. Sunt 9 constrângeri. Și asta pare excesiv pentru că am primit doar 9 numere. Deci, dacă elimini 9 constrângeri, nu mai rămâne nimic, nici grade de libertate. Ei bine, chestia este că aceasta este o matrice simetrică. Deci, de fapt, sunt doar șase constrângeri, nu? Deoarece diagonala plus, să zicem, triunghiul drept sus este 3 plus 3 este 6. Deci există 6 constrângeri. Matricea 3 cu 3 are 9 numere. Avem 6 constrângeri. 9 minus 6 este 3, 3 grade de libertate. Deci, de obicei, acolo se opresc oamenii. Acestea sunt toate condițiile de care avem nevoie pe matrice. Dar de fapt, nu este. Aveți nevoie de o constrângere suplimentară, care este diferită prin faptul că nu este calitatea unui număr față de o anumită valoare. Este într-adevăr o singură informație. Și de ce avem nevoie de asta? Ei bine, iată exemplul de ce avem nevoie de asta. Deci această matrice, dacă luați transpunerea ei -- este aceeași matrice -- și apoi o înmulțiți de la sine, obțineți identitatea. Deci această matrice satisface prima condiție, dar nu este o rotație, nu? Pentru că inversează direcția z. Deci este o imagine în oglindă. Eu stau pe podea și mai e o altă persoană care vorbește pe partea cealaltă cu picioarele ridicate. Și mâna stângă a acelei persoane ar fi mâna mea dreaptă și așa mai departe. Deci nicio rotație nu m-ar transforma în acea altă persoană. Este ca și cum ai întoarce mâna stângă în mâna dreaptă. Nu se poate face doar cu rotire. Se poate face banal cu o reflecție. Iar reflexiile satisfac acest lucru. Deci, pentru a elimina reflexiile, trebuie să introducem această constrângere. Deci, dacă, să zicem, punem ceva de genul unei probleme cu cele mai mici pătrate... încercăm să aliniem aceste camere. Și facem câteva măsurători și există unele erori pe care încercăm să le minimizăm. Ei bine, atunci trebuie să aplicăm și constrângerea de ortonormalitate. Și, în mod enervant, trebuie să aplicăm și această constrângere. si asta e greu. Deci, acesta este unul dintre motivele pentru care nu vom folosi prea mult matrici ortonormale. BINE. Apropo, asta înseamnă că inversul unei matrice de rotație este ușor de obținut. Adică, vom folosi unele dintre aceste proprietăți pe măsură ce mergem. Bine, deci un mod de a gândi la acest lucru este în termenii unui model fizic în care avem un grup de puncte, un nor de puncte pe care, să zicem, l-am obținut din sistemul de coordonate din stânga. Apoi avem un grup de puncte din sistemul de coordonate corect. Și vrem să le suprapunem. Vrem să le aliniem cât mai bine posibil. Și un model pentru asta este, dacă acesta este unul dintre punctele sistemului de coordonate din stânga și acesta este unul dintre punctele sistemului de coordonate din dreapta după ce l-am transformat, vrem să facem acea distanță cât mai scurtă posibil. Și în ceea ce privește modelul fizic, ne putem gândi la acesta ca la un arc care leagă cele două. De ce este asta? Ei bine, pentru că după legea lui Hooke... să numim această distanță e pentru eroare. După legea lui Hooke, forța este proporțională cu deplasarea față de lungimea de repaus. Să presupunem că aceste arcuri au o lungime de repaus de 0. Și atunci energia este integrala acesteia. Deci este jumătate din deplasare la pătrat. Și astfel ne putem gândi la asta ca la o problemă de minimizare a energiei , ceea ce ar face un astfel de sistem fizic . Ar dori să se ajusteze pentru a minimiza energia. Și am întâlnit asta într- un fel în ultimul model - nu ultimul, cel dinaintea ultimului unde a existat o translație și rotație în scalare bazate pe atragerea punctelor către punctele corespunzătoare și așa mai departe. OK, deci ne putem gândi la asta și putem aborda asta într-un fel de cele mai mici pătrate. Deci ceea ce încercăm să facem ar putea fi asta. Deci definim un fel de eroare. Deci alegem să transformăm vectorul din sistemul de coordonate din stânga prin rotație și translație în sistemul de coordonate al sistemului din dreapta și apoi îl comparăm cu ceea ce obținem acolo. Și, în mod ideal, ar trebui să fie la fel. Și dacă nu sunt, atunci obținem o eroare. Și acum, acest lucru introduce un fel de părtinire aparentă, că tratăm unul dintre cele două sisteme de coordonate diferit de celălalt. Și asta e de nedorit. Știi, cum ar fi, de ce ar trebui un sistem de coordonate să aibă preferință față de celălalt? Așa că vrem să fim siguri când terminăm să verificăm că, dacă am fi găsit transformarea de la sistemul de la dreapta la cel din stânga, ar fi exact inversul a ceea ce am găsit mergând de la sistemul de la stânga la cel drept. Altfel, e ceva în neregulă. Și am discutat deja despre acest lucru, de exemplu în potrivirea în linie. y egal cu mx plus c nu este de dorit, deoarece pretinde că nu există nicio eroare în x și există toată eroarea și y atunci când, în multe dintre aplicațiile noastre, eroarea este în poziția imaginii, care include atât x, cât și y. Deci, în mod similar, aici, ne vom uita la transformări și metode care au acea proprietate că există acea simetrie. Și acea simetrie nu este evidentă în acea formulă, dar va trebui să o verificăm. OK, deci ceea ce vrem să facem este, desigur, să minimizăm asta. Și cu ce trebuie să ne jucăm? Ei bine, avem r și avem traducerea r0. Deci asta este, pe scurt, problema pe care încercăm să o rezolvăm. Avem o grămadă de măsurători corespunzătoare în cele două sisteme. Și încercăm să găsim transformarea coordonatelor dintre cele două sisteme folosind-o. Și din nou, așa cum am menționat, acesta este un fel de celălalt mod de a folosi aceste ecuații. În mod normal, ați merge doar în direcția înainte a problemei. Conectați rl-ul, rotiți, traduceți și obțineți rr unde sunt cunoscute rotația și translația . Și ceea ce nu se știe este corespondența dintre coordonatele punctelor. Și aici, facem exact invers. Presupunem că știm coordonatele punctelor, perechile lor. Și încercăm să găsim transformarea care face ca asta să funcționeze. Bine, bine, există o grămadă de metode pe care le-am putea folosi pentru a face asta. Una dintre ele este de a separa problema găsirii translației de problema rotației. Și de fapt, toate metodele pe care le vom analiza adoptă această abordare, deoarece simplifică foarte mult problema. Noi, în fiecare caz acum, avem de a face doar cu 3 grade de libertate odată. Și o modalitate prin care putem face asta este să alegem un fel de punct de referință în fiecare dintre aceste puncte de nori și să mergem cu asta. Și deci iată o modalitate de a lua, să zicem, toate punctele din stânga și de a construi un sistem de coordonate în el. Deci, să presupunem că avem punctul 1 aici. Deci aceasta este o măsurare a unui punct. Și o vom folosi ca origine. Deci, din toate punctele pe care le-am măsurat, alegem unul și declarăm că acesta este originea... OK, pasul unu. Apoi ne uităm la un al doilea punct și le conectăm pe acestea două printr-o linie. Și asta va fi una dintre axele noastre. Acum, separarea dintre 1 și 2 nu va fi o unitate. Deci nu folosim diferența reală dintre 2 și 1 ca coordonată. O normalizăm. OK, deci haideți să scriem aici, x hat vector unitar rl2 minus rl1. Oh scuze. Permiteți-mi să definesc x și apoi să definesc bara x în termeni de x-- economisiți ceva scris. Bine, acum, luăm un al treilea punct. Acum, nu putem să le conectăm și să spunem, OK, aceasta este axa y pentru că atunci axa x și y nu vor fi perpendiculare. Dar ceea ce putem face este să decidem că planul definit de 1, 2 și 3 este planul xy. Deci putem face asta cu siguranță. Și, de fapt, pe baza acestei idei, putem doar să eliminam, vectorul de la 1 la 3, componenta care este în direcția de la 1 la 2. Și ceea ce rămâne va fi automat perpendicular pe noi. Și asta este axa y. Deci alegem y este egal cu rl3 minus rl1. Și apoi găsim componenta acelui rl3 minus rl1 în direcția lui x pălărie. Deci am ales acest vector de la 1 la 3. Dar scoatem o componentă care se află în direcția axei x, ceea ce facem pur și simplu luând produsul scalar al acelui vector cu vectorul unitar în direcția x. Asta ne oferă un scalar. Și apoi o înmulțim cu vectorul unitar în direcția x. Deci elimină această componentă, cea care este paralelă cu axa x. Și am rămas cu ceva care este perpendicular pe original. Și apoi, din nou, putem face un vector unitar. Deci, acesta nu va fi un vector unitar în general, desigur. BINE. Și va fi ușor să arătăm că punctul x punctul y este 0, că sunt perpendiculari unul pe celălalt. Puteți verifica acest lucru foarte ușor doar luând produsul punctual al acestuia cu definiția noastră pentru x. Sau puteți arăta doar că vectorul y este perpendicular pe vectorul x, nu pe unitatea, într-adevăr. OK, deci avem originea. Avem axa x. Avem planul xy. Da. Deci avem un obiect și am identificat puncte „interesante” pe el. Și le-am măsurat. Deci este un nor de puncte. Și ar putea fi colțuri, nu margini. Pentru că marginile nu ne oferă o constrângere 3D completă. Deci, dacă obiectul nostru de calibrare sau orice ar fi un cub, s- ar putea foarte bine să avem aceste puncte. Sau dacă este capul cuiva, atunci ar putea fi poziția irisului ochiului și așa mai departe. Și le-am măsurat în ambele sisteme de coordonate. Acesta este lucrul important. Dar acum, doar lucrăm la sistemul de coordonate din stânga. OK, bine, în acest moment, definim z ca fiind produsul încrucișat al lui x și y, deoarece produsul încrucișat este perpendicular pe ambii vectori din produsul încrucișat. Deci z va fi perpendicular atât pe x cât și pe y. Deci, acum, avem un întreg sistem de coordonate. Avem o triadă de vectori unitari care definesc sistemul de coordonate. Așa că am făcut asta pentru stânga și avem nevoie de doar trei puncte. Deci, dacă măsurăm toată grămada de puncte, nu avem nevoie de ele. Avem nevoie doar de trei. Acum, facem același lucru pentru sistemul de coordonate corect. Și știi, nu voi trece din nou prin proces. Vom primi doar o pălărie Xr, o pălărie Yr și o pălărie Zr. Și presupun că ar trebui să le numesc x pălărie stânga, y pălărie stânga și z pălărie stânga. Deci, ceea ce fac este să iau cei doi nori ai mei de puncte măsurate în aceste două sisteme de coordonate și le folosesc pentru a construi un acces, o axa x, o axa y și o axa z. Și acum, tot ce trebuie să fac -- să citez „tot ce trebuie să fac” -- este să mapez acești vectori unitari unul în celălalt. Deci trebuie să găsesc o transformare care să pună xl în Xr și transformarea care să pună yl în Yr și așa mai departe. OK, acum, pentru că am eliminat artificial o traducere alegând unul dintre puncte ca origine, nu trebuie să-mi fac griji pentru traducere pentru moment. Trebuie să mă ocup doar de rotație. Am separat problema asta. Deci am căpălăria Xr este pălăria Rxl, nu? Deci rotația necunoscută R face asta și face și asta. Adică, dacă aș avea acea primă linie, asta nu ar fixa R pentru că există o mulțime de moduri de a roti un vector în altul. Nu este unic. Deci la asta mă aștept. Și acum, problema mea este rezolvarea pentru R. Deci am aceste trei ecuații de matrice vectorială, dar cred că puteți vedea că le putem compune. Le putem lipi într-o singură ecuație. Deci am putea avea o pălărie Xr, o pălărie Yr, o pălărie Zr. Asta e acum o matrice, nu? Deoarece în reprezentarea pe care o folosim, aceștia sunt vectori coloană. Deci aceasta este o matrice 3 pe 3 și aceeași pentru partea dreaptă. Și cred că veți fi de acord că această singură ecuație este echivalentă cu aceste ecuații separate. Pentru că dacă înmulțesc matricea cu primul vector, primesc primul vector aici și așa mai departe. Deci asta face ca răspunsul să fie banal, nu? R este... să vedem, trebuie să post-multesc. Dreapta. Pentru că dacă înmulțesc ambele părți ale acelei ecuații aici sus cu inversul acestei matrice, aceasta va renunța aici. Este înmulțit cu propriul său invers, deci dă identitate. Și apoi aici, pe această parte, am această expresie. Există inversul? Întotdeauna punem această întrebare. Când eșuează acest lucru? Ei bine, ar trebui. Pentru că prin construcție, acele lucruri sunt ortogonale între ele. Deci, aveți un fel de caz ideal în care cele trei coloane ale matricei sunt ortogonale între ele, spre deosebire de a fi dependente liniar. Acesta este celălalt capăt al spectrului. OK, deci iată-ne. Am rezolvat problema. Așa că am spus că, dacă eliminăm traducerea pentru moment, mai avem 3 grade de libertate de găsit. Și apoi am spus, OK, avem trei corespondențe între cele două sisteme de coordonate. Deci asta sună corect, trei constrângeri, trei necunoscute. Dar acele constrângeri sunt mult mai puternice, deoarece nu sunt doar un scalar, ci și un scalar. Sunt vectori egali cu un vector. Deci fiecare dintre ele valorează 3 puncte. Deci avem de fapt 9 constrângeri. Spunem că punctul numărul 1 se transformă în punctul numărul 1 în celălalt sistem. Punctul numărul 2 se transformă în... și așa mai departe. Și deci fiecare dintre acestea sunt egalități vectoriale, știi? Rl de 1 va fi mapat în Rr de 1 și așa mai departe. Deci avem trei egalități vectoriale. Sau, dacă doriți, de câtă constrângere aveți nevoie pentru a fixa un punct în 3D? Ei bine, trei constrângeri, nu? Ai nevoie de x, y și z sau alte trei numere, cum ar fi distanțe de la trei... nu știu... routere Wi-Fi sau așa ceva. Ai nevoie de trei lucruri. Deci, în acest caz, avem 9. Dar așteptați un minut, rotația are doar 3 grade de libertate. Deci ce se întâmplă? Este excesiv. Deci nu avem nevoie de trei puncte. Ne putem opri cu doi, nu? Ei bine, dar am spus că cu două obținem doar axa x. Și apoi totul se poate roti în continuare în jurul axei x, așa că nu este suficient de bun. De fapt avem nevoie de toate trei. Dar ce se întâmplă este că nu folosim toate informațiile pe care le primim, nu? Deci haideți să facem un număr aici. Deci, din punctul numărul 1, folosim toate cele trei componente ale sale. Deci, aceasta oferă trei constrângeri. Apoi, aici, nu folosim distanța de la 1 la 2. Folosim doar vectorul unitar în acea direcție. Deci este o direcție. Deci, oferă într-adevăr doar două. Și atunci acesta de aici este și mai rău. De fapt, folosim doar o constrângere din asta. Și deci totalul este 3 plus 2 plus 1 este 6. Ei bine, asta include traducerea. Deci asta explică o parte din ceea ce se întâmplă, că această construcție specială ne oferă o rotație, dar nu folosim informațiile din puncte în mod egal. Deci am luat o decizie arbitrară. Am ales numărul 1 și folosim toate... așa că pare greșit, nu? Pentru că vreau să spun, cine poate spune ce punct este mai important decât altul? Adică, s-ar putea să fie asociată cu greutatea, deoarece, atunci când le-ai măsurat, ai găsit un punct care este cu adevărat distinctiv și ești foarte sigur unde se află. În alte meciuri, s- ar putea să nu fie atât de bine. Dar asta este o altă problemă. Bine, deci ăsta e un lucru în privința asta care nu este optim. Deci un altul ar fi dacă aș alege acest punct mai întâi? Deci acesta este 1 al meu. Și acesta este al meu doi, și acesta este al meu 3. Voi obține aceeași transformare? Nu, nu voi obține aceeași transformare pentru că am neglijat selectiv informațiile. Și acum, neglijez selectiv într-un mod diferit. Mai arunc ceva. Și asta vă spune și că acest lucru nu este ideal. Acum, și în practică , am putea fi înclinați să măsurăm mai mult de trei corespondențe. Dacă avem aceste două LIDAR-uri pe vehicul, ne oferă sute de puncte. Și va exista o eroare în toate aceste măsurători. Dar, din nou, după cum știm, dacă aveți o mulțime de puncte, cele mai mici pătrate sau o altă metodă vă pot îmbunătăți dramatic precizia dacă puteți folosi toate aceste corespondențe. Deci asta nu. Folosește doar trei puncte. Și da, acum ai putea să o repeți alegând alte trei puncte și să faci asta în multe moduri diferite și să faci o medie. Și asta ar fi mai bine, dar ar fi kludgy, ad hoc. OK, deci metoda ad-hoc numărul unu, este... și, într-un anumit sens, aceasta ar putea fi o modalitate de a merge dacă ai nevoie de o estimare inițială sau dacă ai nevoie de un răspuns cu adevărat gros. Să spunem că ai avut un răspuns mai precis, așa că ar putea fi ca pat rapid și pat max, unde folosești unul pentru a-ți oferi un răspuns aproximativ rapid, apoi îl folosești ca condiție inițială pentru altceva care îți oferă un răspuns mai precis. OK, deci iată metoda numărul doi. Și am vorbit pe scurt despre asta în 2D, așa că permiteți-mi doar să vă reîmprospăt memoria pentru că nu am petrecut prea mult timp cu asta. Ideea era că aveam un fel de blob, o imagine binară. Și încercăm să facem o măsurătoare pe el care ne-ar putea ajuta să identificăm sau să ne aliniem. Și am spus că o modalitate de a face asta este să te uiți la axa de inerție, nu? Deci, dacă am un nor de puncte, spre deosebire de o imagine binară, pot face același lucru. Pot găsi axele despre care... oh, o cale greșită. Scuză-mă... axa minimă, maximă. Deci de ce știu că acesta este minimul? Ei bine, pentru că inerția depinde de integrala distanței la pătrat înmulțit cu masa. Lasă-mă să pun r. Și, în ceea ce privește această axă, aceste distanțe sunt toate foarte scurte. Deci suma pătratelor acelor distanțe va fi mică, în timp ce în jurul acestei axe în unghi drept, multe dintre distanțe sunt mari. Așa că voi avea o inerție uriașă. Și poți arăta că trebuie să fie în unghi drept unul față de celălalt. Și puteți arăta că le puteți găsi găsind vectorii proprii și valorile proprii ale unei matrice 2 pe 2. OK, deci 2D. Să trecem la 3D cu aceeași idee. Deci există un obiect în spațiu, o grămadă de puncte. Așa că am identificat aceste puncte astfel încât să le putem regăsi într-o altă imagine. Acum, încercăm să stabilim un sistem de coordonate. Pentru că știm că, odată ce avem un sistem de coordonate în datele din stânga și datele din dreapta, trebuie doar să corelăm cele două sisteme de coordonate. Și acolo, folosim acea metodă pentru a găsi un sistem de coordonate. Dar am putea căuta și axa de inerție minimă în 3D, așa cum facem în 2D. Și în 3D, vom descoperi apoi că există o axă perpendiculară care are o inerție maximă. Și diferența despre 3D este că există o a treia axă, care este un punct de șa. Deci, dacă mutați axa într-o direcție, inerția devine mai mare într-un mod pătratic. Și dacă îl deplasați în altă direcție în unghi drept, inerția devine mai mică într-un mod pătratic. Deci este cam așa, cam greu de desenat. Dar iată axa punctului șei. Și apoi dacă îl miști în această direcție, inerția scade, la fel și pe această parte. Dar apoi, dacă îl mișcați în unghi drept, inerția crește pătratic. Oricum, deci dacă ne putem da seama care sunt acele axe, ar trebui să fim... ei bine, hai să facem calculul. Nu este atât de greu. OK, deci ceea ce căutăm este expresia distanței de la axă. Pentru că, din nou, inerția este integrala acelei distanțe la pătrat peste obiect. BINE. Deci asta înseamnă că trebuie să găsim o formulă pentru - deci acesta este punctul r, vectorul r. Și aici sunt topoarele. Și trebuie să găsim acea distanță. Acum, o să trișez puțin pentru că o să aleg centroidul ca origine, același truc. Vreau să separ problema găsirii translației de problema găsirii rotației. Și știm în 2D că răspunsul este că trece prin centroid. Și apoi am avut acea formulă cu... știam sinusul și cosinusul unghiului, astfel încât să putem calcula unghiul. OK, așa că vom face același lucru aici în 3D. Lasă-mă să arunc în aer poza aia. Deci aceasta este distanța r. Acesta este vectorul nostru r. Aceasta este axa noastră. Să-i spunem călăria omega este direcția axei. Și aici este r prim. O aruncăm perpendicular pe axă. Și ceea ce vrem să știm este distanța dintre r și r prim. Deci, ce este r prim? Deci, să vedem, trebuie să găsim componenta lui r în direcția omega. OK, asta e componenta. Și o vom scădea. Nu, sunt deja cu un pas înainte. Permiteți-mi să spun că r prim este doar r proiectat pe omega. Și acesta este de fapt r minus r prim. Deci aceasta este lungimea pe care o căutăm. OK, și deci avem nevoie de r pătrat. Nu vă faceți griji prea mult în legătură cu această algebră pentru că nu o vom mai folosi. Dar măcar încearcă să-l urmezi, și spune-mi când dau greșelii. Deci, dacă înmulțesc asta , primesc r punctul r. Și apoi primesc minus 2 r dot omega hat pătrat plus r dot omega hat pătrat. Asta pentru că există o pălărie cu puncte omega. Acesta este un vector unitar, deci este doar un 1. Deci pot să uit de asta. Ei bine, și din moment ce cele două lucruri au aceeași formă, așa că ajung cu r dot r minus r dot omega hat pătrat. Deci, aceasta este distanța mea față de axă. Deci asta este în formula pentru inerție. Și atunci voi spune că inerția-- și ceea ce mă interesează este modul în care aceasta variază pe măsură ce schimb omega. Așa că spune omega, vector unitar, ele pot îndrepta în orice direcție. Și caut direcțiile în care această valoare capătă una extremă sau poate un punct de șa. Dar pornind de la minim, vreau să aflu unde este minim. Și, ei bine, asta nu pare foarte simplu, dar putem rescrie asta. Deci, în primul rând, permiteți-mi să iau asta și să o rescriu. Acum, produsele punctuale sunt comutative. Așa că o pot scrie așa. Pot să scriu asta. Și apoi avem această notație în care scriem produsul punctual în acea formă. Și aceste înmulțiri ale matricelor slabe sunt asociative, așa că pot scrie așa dacă vreau. Și acesta, desigur, este produsul diadic, pe care l-am întâlnit de câteva ori înainte. Este o matrice 3 pe 3, o structură foarte simplă. OK, acum pentru următorul meu pas, aș dori să rescriu și asta. Așa că o să spun că este același cu r dot r în omega dot omega. Ei bine, de fapt, știi, am avut asta aici. Tocmai am scăpat omega dot omega pentru că este 1, dar lasă-mă să-l pun din nou. OK, atunci asta este r transpose r omega transpose. Oh scuze. Așa că vom face integrala dublă a acesteia-- integrala triplă a acesteia. Și astfel încât să pot scrie ca r punct r în-- acesta este I matricea identității. Și am scris inerția cu Iul aldine al tablei, ca să nu se confunde cu asta. BINE. Deci, acum, am totul este transpunerea omega ori omega. Și am doi termeni. Am acest lucru, care este matricea de identitate - integrala lui r punct r ori matricea de identitate. Și apoi am chestia asta, care este rr transpose. Deci, având în vedere punctele, pot... ei bine, l-am scris ca o integrală. Desigur, dacă avem un număr finit de puncte, ar fi doar o sumă. Deci, această primă parte este doar o matrice de identitate înmulțită cu un scalar. Și acesta este un produs diadic. Și deci, ceea ce caut este un extremum-- al acelei expresii. Acum, am rămas fără versiuni diferite de i. Deci nu știu, lasă-mă să-i spun A. Deci avem ceva din această formă. Și caut, să zicem, un minim. Și chiar dacă scrie A, aceasta se numește matrice de inerție. Deci, având în vedere o formă tridimensională, pot calcula această matrice de inerție 3 cu 3. Sau având în vedere un nor de puncte în 3D, pot calcula această matrice. Acesta este doar un detaliu despre cum să o faci din puncte. Și deci care este această problemă? Ei bine, asta este doar problema clasică a vectorului propriu cu valori proprii, nu? Axa pe care o vreau pentru minimizare este valoarea proprie asociată cu cea mai mică valoare proprie, evident. Și apoi pot căuta, de asemenea, cealaltă axă care o maximizează. Și acesta este vectorul propriu care corespunde celei mai mari valori proprii. Și apoi există un al treilea , care este între ele. Și acele trei axe sunt în unghi drept unul față de celălalt. În unele cazuri urâte, nu sunt, dar le putem face în acest caz în unghi drept unul față de celălalt. Deci, este o problemă foarte simplă a vectorului propriu cu valori proprii. Acum, găsirea de valori proprii și vectori proprii ai matricelor 3 cu 3 este puțin mai multă muncă decât 2 cu 2, ceea ce am făcut-o manual. Dar desigur, știi, ai tot felul de instrumente pentru a face astfel de lucruri. Și există de fapt o soluție în formă închisă. De ce? Ei bine, pentru că polinoamele de gradul 3 au o soluție de formă închisă, chiar dacă în general ne amintim doar formula pentru pătratică. OK, deci ce facem? Deci, ceea ce am făcut acum este că am luat norul de puncte din sistemul de coordonate din stânga și am construit o bază de sistem de coordonate în el. Avem trei axe care sunt în unghi drept unul față de celălalt și se bazează doar pe distribuția punctelor. Și așa avem un sistem de coordonate din stânga bazat pe acești trei vectori, cei care minimizează, cei care maximizează și cei în unghi drept, acel punct de șa. Acum, facem același lucru pentru sistemul de coordonate din dreapta , aceeași construcție, nu? Dacă există un nor de puncte alungit, axa x va fi pe lungimea acelui nor și așa mai departe. Și apoi folosim doar metoda pe care o aveam înainte. Bănuiesc că a dispărut, dar aceeași metodă pe care am folosit-o pentru metoda numărul unu. Și asta ne oferă apoi un alt mod de a relaționa cele două sisteme de coordonate sau de a lega cele două poziții ale obiectului, deoarece acele probleme sunt dueluri între ele. Deci asta sună puțin mai rezonabil. Pentru că, în primul rând, tratează toate punctele în mod egal. Toate sunt aruncate în oală în aceste sume. Nu alegem unul și folosim toate informațiile sale și folosim doar puțin din al doilea punct. De asemenea, folosim toate punctele. Și am construit o problemă cu cele mai mici pătrate care efectuează un fel de minimizare. Deci folosim toate punctele. Deci care este problema? De ce nu este folosit în general? Ei bine, pentru anumite tipuri de probleme, cum ar fi alinierea imaginilor cu microscopul electronic criogenic, este bine. Acest lucru funcționează. Nu este întotdeauna ideal. Și un motiv este că eșuează la simetrie. Ei bine, să presupunem că am o sferă. Nu are o axă minimă maximă și punct de șa deoarece inerția sa față de orice axă este aceeași. Și atunci ai putea spune, ei bine, nu este corect. Sfera este complet simetrică, așa că trebuie să acceptăm asta. Așa că am putea să spunem cu reticență, OK, deci nu funcționează pentru o sferă, dar asta este oarecum rezonabil. Ei bine, dacă ți-aș spune că, dacă îi dau un tetraedru, nici nu va funcționa? Se pare, dacă calculezi matricea de inerție, inerția este aceeași în toate direcțiile și aceeași cu octaedrul. Deci acestea sunt doar cazuri speciale. Adică, există, evident, un număr infinit de cifre care au această problemă. Din nou, inerția acestuia, în mod surprinzător, este independentă de direcție. Și mai surprinzător, dacă aș lua un cub, acum te-ai gândi cu un cub... știi, există trei axe bine definite. Deci ce se întâmplă acolo? Ei bine, problema este că inerția despre acele trei axe bine definite este aceeași dacă este un cub. Dacă este o cărămidă, atunci ești bine pentru că cele trei axe vor avea inerții diferite. Și poți alinia lucrurile așa. Dar cu cubul, din nou oarecum surprinzător, puteți alege orice axă, obțineți aceeași inerție. OK, deci ce se întâmplă? Ce am pierdut? Ce am uitat? Ei bine, nu am folosit toate corespondențele. Ei bine, în această metodă specială ad-hoc, am luat un nor de puncte. Și i-am găsit un fel de alungire și am construit aceste alte axe fără să ne gândim deloc la celălalt nor de puncte. Apoi am făcut același lucru pentru celălalt nor de puncte. Dar noi de fapt... presupunând că știm corespondențele. Deci știm că acest punct este aici și acel punct este acolo. Și asta e o problemă foarte diferită, nu? Pentru că chiar și cu o sferă, le pot alinia corect dacă am corespondențele. Deci aceasta este un fel de sabie cu două tăișuri pentru că vom vedea că există unele metode care nu depind de corespondențe. Sunt foarte la îndemână. Sunt foarte atrăgătoare. Pentru că dacă stricați corespondențele, acestea nu vor fi afectate. Pe de altă parte, te confrunți adesea cu acest tip de problemă în care metoda nu îți va oferi un răspuns din cauza unei anumite simetrii. Și deci, în general, nu sunt la fel de precise precum metodele care iau în considerare... OK. Deci destule dintre aceste metode ad-hoc. Le aduc în discuție parțial pentru că oamenii le folosesc de fapt și adesea nu știu că există o problemă cu ele. Acesta este un motiv. Și celălalt motiv este că uneori acestea sunt utile pentru a da un răspuns rapid și este sistematic. Adică, nu există nicio iterație sau căutare sau altceva. Doar calculați valorile proprii și vectorii proprii, care, pentru un 3 cu 3, este practic o operație în formă închisă. OK, deci să ne întoarcem. Deci problema nu este traducerea. Traducerea va fi destul de ușor de rezolvat. Deci, să ne concentrăm pe rotație. Deci, în general, avem o grămadă de metode diferite de reprezentare a rotațiilor. Deci, să ne uităm, în primul rând, la proprietăți. OK, păstrează produsele cu puncte , asta înseamnă... nu? Asta e cam evident. Și asta are două feluri de corolare. Una dintre ele este acea lungime de păstrare, care este exact ceea ce obțineți dacă faceți a la fel ca b. Și păstrează unghiurile, nu? Pentru că, de exemplu, și ceea ce este interesant este că păstrează și produse triple, deci R de a. Acum, produsul triplu al celor trei vectori este doar volumul paralelipipedului pe care îl desenați pe baza să presupunem că acesta este vectorul a. Acesta este vectorul b. Acesta este vectorul c. Vă puteți imagina desenând această formă tridimensională, care are suprafețe paralele. Dar, în general, nu este o cărămidă. Este înclinată în general. Și acesta este volumul acelui obiect. Și acum, imaginați-vă că luați acei trei vectori și rotiți-i pe toți cu aceeași rotație. Ei bine, asta doar rotește această cifră. Și își va păstra volumul, nu? Și asta e această cantitate. Deci asta are sens. Important este să nu răstoarne semnul. Dacă am fi înlocuit acea rotație cu o reflexie, acel produs triplu ar fi răsturnat semnul. Și ați spune, ei bine, ce este un volum negativ? Ei bine, înseamnă doar că nu aveți vectorii în secvența regulii din dreapta. Ai o regulă pentru mâna stângă. Deci știi, vorbeam despre reflexia în sol care inversează z. Ei bine, acum evident, dacă iau acel produs triplu... Presupun că ar trebui să-l scriu , un punct b cruce c. Și dacă răsturn semnul unuia dintre acestea, voi primi un semn negativ. Deci, când spun volum, ar trebui să ținem cont de semn, astfel încât mărimea acelui produs triplu să fie volumul real. Și semnul acestuia vă spune dacă a fost inversat de la sistemul de coordonate din stânga la cel din dreapta. Deși am asta aici, permiteți-mi să mă asigur că înțelegem că există un număr mare de moduri echivalente de a scrie produsul triplu. Deci, în ceea ce privește discuția noastră anterioară , toate acestea corespund ortonormalității. Și aceasta corespunde acelei condiții ca determinantul să fie mai mare decât 1. OK, deci acestea sunt toate proprietățile de care avem nevoie pentru a continua. Așa că acum, am configurat-o ca o problemă cu cele mai mici pătrate. Avem corespondențe între vectori măsurați în cele două sisteme de coordonate. Apoi încercăm să găsim transformarea dintre ei. pentru a găsi un fel de eroare. OK, vreau să încep cu [INAUDIBLE]? Oh bine. Deci primim rr. Deci asta este transformarea cu care avem de-a face. Și apoi putem defini o eroare pentru punctul i-lea. Și, desigur, ceea ce încercăm să facem este să minimizăm această eroare. Și ceea ce trebuie să alegem este offset-ul și rotația. OK, deci din nou, alegem în mod arbitrar sistemul de coordonate din stânga și îl mapam în sistemul de coordonate din dreapta și apoi comparăm rezultatul. Și ar trebui să fie la fel, în mod ideal. Va exista o mică eroare în practică. Deci încercăm să facem acea eroare cât mai mică posibil. Și încercăm să găsim parametrii transformării minimizând această eroare. OK, acum, din moment ce știu răspunsul, pot transforma lucrurile într-un mod care să simplifice problema. Așa că iau toate coordonatele din sistemul de coordonate din stânga, le adun, împart la n pentru a obține centroidul. Și fac același lucru în sistemul de coordonate din dreapta. Și le aleg pe acelea drept origini, practic. Așa că o să scad asta... OK. Și aceasta este în concordanță cu ideea că vreau să separ problema găsirii translației de găsirea rotației. Așa că așa voi scăpa de traducere. Ne vom îngrijora mai târziu. E foarte simplu. Bine, apropo, cât suntem aici, s- ar putea să ne întrebăm ce este asta. Așa că am schimbat toate coordonatele pentru a fi relative la centroid. Acum, le iau pe toate și le adun. Eu ce obțin? Ei bine, ai putea conecta asta aici și vei obține n copii ale acestuia. Și obțineți suma acestora. Și apoi te uiți la acea formulă. Și când împărțiți la n, toate se anulează, nu? Și este un vector. Deci, o caracteristică a deplasării prin centroid este că acum centroidul se află la originea în coordonate noi. Asta are sens, corect... și la fel și pentru celălalt. Și avem nevoie de această proprietate în a doua celulă. BINE. Așa că voi introduce aceste noi coordonate în formula mea de eroare . Deci, pentru a face asta, trebuie să rezolv această ecuație pentru r sub ri. Ei bine, cu greu merită scris. Doar mută asta în cealaltă parte. Și dacă fac acele înlocuiri, atunci obțin asta unde compensarea acum este diferită. Și deci noua mea problemă este... deci există un pătrat. Și le pot înmulți, dar le voi grupa. Așa că voi trata asta ca diferența dintre acel lucru și acel lucru și apoi voi anula pătratul. Și am... acum, există și alte moduri de a ajunge aici. Puteți face diferența în ceea ce privește traducerea, dar cred că aceasta este cea mai evidentă. BINE. Acum, aici, tot acest termen central dispare pentru că implică suma lui r a sub ri. Asta e 0, nu? Și apoi implică suma versiunii rotite a lui r sub li. Și știm că suma va fi și 0. Deci tot acest termen dispare. Deci, asta face viața mult mai simplă. OK, deci următoarea întrebare este, ce ar trebui să alegem pentru offset pentru translația r0. Ei bine, acest termen nu depinde deloc de traducere. Așa că uită de asta pentru moment. Acesta face. Depinde de pătratul acestuia. Deci, cum îl facem cât mai mic posibil? 0, nu? Deci acum, puteți vedea câteva lucruri. Una dintre ele este aici, constatăm că soluția optimă are r0 prim 0, ceea ce înseamnă că acesta este cazul. r0 este-- deci aceasta este formula pentru traducere. Acum, desigur, chiar acum, nu-l putem folosi pentru că nu știm care este rotația. Deci nu știm ce este R mare. Dar este foarte intuitiv. Se spune că translația este diferența dintre locul în care se află centroidul în sistemul de coordonate din dreapta și unde este centrul de coordonate din stânga după ce îl rotiți. Deci centroidul se mapează în centroid. Deci am îndeplinit un obiectiv, care este să separăm problema găsirii translației de problema găsirii rotației. Și atunci avem o formulă acolo. Dacă găsim vreodată rotația, ne întoarcem la acea formulă, o conectăm pentru a găsi traducerea. BINE. Și apoi, ceea ce a mai rămas este... deci practic, asta scapă și de acest termen. Deci asta a dispărut. Așa că am rămas cu această parte și ne facem griji doar de rotație. Deci treaba noastră este să găsim... deci noua noastră eroare... nu? Acesta este termenul de eroare. Și acum vom minimiza. Și asta înseamnă... și doar iau acest termen și îl împart. Presupun că pot scrie asta aici. Acesta este punctul. Așa că doar extind asta. Și astfel din primii doi termeni de aici, produsul punctual al acestor doi îmi dă asta. Și apoi am produsul punctual al asta cu asta. Asta îmi dă această parte, care apare de două ori. Și apoi, în sfârșit, am produsul scalar al acestor ultime lucruri. Și din moment ce am spus că rotația păstrează lungimea, aș putea la fel de bine să calculez lungimea înainte de rotație. Deci este foarte convenabil. Deci ultimele două se prăbușesc în asta și r nu apare acolo. Deci aceasta este fixată în sensul că nu depinde de rotație. Acest lucru este fixat prin faptul că nu depinde de rotație. Și așa ne concentrăm acum pe acest termen, cu excepția faptului că are un semn minus. Deci, în loc să minimizăm, dorim să maximizăm acest lucru. Deci asta este, pe scurt, problema noastră rămasă . Și dacă putem face asta, atunci am terminat. Și observați cum acest lucru are sens intuitiv. Gândiți-vă la norul de puncte și există un centroid. Acum, conectați fiecare dintre punctele din norul de puncte la centroid. Așa că există un vector de la centroid până la fiecare punct, un fel de țepător... care este termenul în sushi? Uni, asta e. Este uni. Este un arici de mare, nu? Are aceste vârfuri, bine? Și așa că ceea ce facem aici este că luăm unul dintre acești arici de mare și îl aliniem pe celălalt arici de mare. Și modul în care o facem este că spunem că spinii corespunzători ar trebui să aibă un unghi mic între ei. Produsul lor punctat ar trebui să fie mare, nu? Deoarece produsul scalar dintre doi vectori este proporțional cu cosinusul unghiului. Deci, cel mai mare pe care îl puteți obține este 1, ceea ce se întâmplă atunci când teta este egal cu 0. Deci, acest lucru are sens perfect, deoarece luăm fiecare dintre țepii corespunzători ai acestei mingi înțepătoare și spunem, puneți o contribuție proporțională cu produsul punctual și rotiți- l pentru a o face cât mai mare posibil. Deci întreaga noastră problemă de rotație a fost simplificată până la asta dacă putem rezolva asta. Și așa, ei bine, suntem oameni de calcul. Deci, un lucru la care te-ai putea gândi este -- am mai făcut acest tip de lucruri înainte -- vom diferenția în raport cu r și vom stabili rezultatul egal cu 0. Și, ei bine, nu este tocmai corect pentru că r nu este un scalar. Nici măcar nu este un vector. Știm să diferențiem față de un vector. Este o întreagă matrice. Dar am putea doar să luăm cele 9 elemente ale matricei și să le înșirăm într-un vector 9 și să le diferențiem față de vectorul 9. Deci am putea face asta. Problema este că acele 9 numere nu sunt independente. Ei trebuie să satisfacă toate aceste constrângeri enervante. Și așa că este de fapt foarte greu să impuni aceste constrângeri supuse transpunerii R R este I și determinantul lui R este plus 1. Deci poți merge pe această cale, dar devine incredibil de dezordonat. Și deci nu vom face asta. Ne vom uita la alte reprezentări pentru rotație în care această problemă apare foarte ușor. Dar este ca o mulțime de lucruri în care există un pic de efort pentru a dezvolta tehnologia, reprezentarea. Odată ce ai reprezentarea, este banal. Așa că vom petrece următoarea clasă construind acea reprezentare. BINE.