[SCRÂTÂND] [FOȘTIT] [CLIC] BERTHOLD HORN: Deci am vorbit despre detectarea marginilor. Și am vorbit despre găsirea de obiecte în imagini bidimensionale. Și, în special, am discutat despre brevetul Pad Quick, care oferă o modalitate eficientă de a face asta prin construirea unui model bazat pe o imagine de antrenament și apoi folosind sonde pentru a colecta dovezi despre un meci și a construi un scor și apoi căutând extreme în acest sens. suprafață de scor multidimensională, unde dimensiunile multiple erau poziția -- translație și rotație, scalare etc. Și a fost o îmbunătățire mare față de ceea ce a venit înainte, care a fost analiza blob, potrivirea șablonului binar, corelația normalizată, jumătate de transformare. Ei bine, acum vom vorbi despre un alt brevet din acea categorie de găsire a lucrurilor în imagini. Și, de asemenea, aici se pune accent mai mult pe inspecție. Adică... dacă citești rezumatul, totul este despre inspecție. Dar, de fapt, brevetul se ocupă și de poziție și orientare. Și ceea ce este diferit de precedentul este că precedentul a cuantificat spațiul de poziție pentru a face o căutare completă. Și acesta presupune că ai deja o idee aproximativă despre unde sunt lucrurile. Și doar le va îmbunătăți. Deci, există o ajustare incrementală care vă va oferi o poziție foarte precisă. Și veți fi bucuroși să știți că nu vom trece prin asta în detaliu, mai ales pentru că o mare parte se bazează pe ceea ce am făcut deja. Deci iată. Acesta se numește PatMax. Și Bill Silver spune că asta a fost motivat de două idei. Prima a fost că maximizăm un fel de energie. Este o abordare iterativă. Este o abordare cu cele mai mici pătrate într-un fel. Și fiecare pas, care se numește pas de atracție în brevet, îmbunătățește potrivirea. Și apoi te oprești când potrivirea este suficient de bună. Sau, în varianta de realizare preferată, vă opriți după patru pași. Deci asta e ideea aici. Iar cealaltă motivație pentru a-l folosi pe Max a fost Maxwell. Deci știa despre electromagnetică. Iar intuiția lui pentru această abordare s-a bazat pe forțele dintre magnetice, componente electrostatice și, în special, dipoli. Și, ei bine, se dovedește că intuiția este complet greșită pentru că aceia nu au proprietățile pe care le dorește aici. Și, de fapt, o analogie mult mai bună ar fi arcurile -- analog mecanic. Deci, ideea este că dacă încerci să potriviți două lucruri împreună și puteți identifica părțile corespunzătoare, imaginați-vă că le conectați cu un arc, că se vor atrage unul pe celălalt. Și ceea ce va face sistemul după un timp este să minimizeze energia. Se va roti, se va transla și va face orice, astfel încât arcurile să fie cât mai puțin extinse din poziția lor de repaus. Și vom explora asta puțin mai departe. Dar în brevet, totul este despre domenii și chestii de genul ăsta. Deci lucrurile obișnuite -- cererea, datele și brevetele anterioare, și inventatorii, și semnatarul și referințele. Și veți vedea aici că prima referință este Hough. Acesta este cel despre care am vorbit data trecută. Și apoi există un întreg abstract, care se referă în principal la inspecție. Dar, într-adevăr, brevetul este o mare parte despre aliniere. Și aici sunt mai multe modele și alte publicații. Și dacă le citiți, veți vedea că unele dintre ele sunt din vechiul AI Lab. Și iată figura unu. Deci figura unu seamănă puțin cu o figură pe care am văzut-o înainte. Există o imagine de antrenament. Și există un proces de antrenament, care generează un model. Am numit asta un model înainte. Așa că au schimbat intenționat terminologia pentru a evita confuzia. Deci ceea ce numim înainte sonde se numesc acum dipoli. Dar sunt același lucru. Sunt o poziție și o direcție și o greutate. Așa că pregătirea în brevetul anterior a însemnat că am creat un model. Și modelul constă din sonde. Iar sondele sunt create de fiecare detectie. Deci asta e antrenament. Și, în mod similar, aici, antrenamentul aici va fi un proces de detectare a marginilor care produce dipoli de margine și un câmp, un câmp vectorial bidimensional . Și asta e antrenament. Apoi aveți o imagine de rulare. Și în timpul executării, efectuați un proces de atracție care găsește în mod iterativ o poziție bună, presupunând că aveți o ipostază de început. Deci, acesta presupune că ați făcut deja ceva pentru a obține o aproximare. De exemplu, puteți rula Pad Quick. Și de ce iterativ? Ei bine, pentru că este formulată ca o problemă cu cele mai mici pătrate. Și dacă avem noroc, problema celor mai mici pătrate are o soluție în formă închisă. Și în acest curs, încercăm să punem lucrurile în acest fel. Dar în lumea reală, de obicei nu este cazul. Și apoi o rezolvi iterativ. Și astfel opriți iterațiile atunci când credeți că aveți un răspuns suficient de bun. Deci ai o poză de început și ai poza finală. Există, de asemenea, un lucru numit hartă client. Atât de puține detalii - dacă doriți să lucrați într-un sistem de coordonate carteziene, ei bine, pozițiile dvs. de pixeli ar putea să nu fie pe o grilă pătrată. Deci, harta clientului mapează, practic, orice ai pe o grilă pătrată frumoasă. Și asta este important pentru că multe camere nu au o distanță egală în x și y. Și apoi există o eroare RMS, pe care o puteți folosi pentru a decide dacă se potrivește sau nu. Și deoarece este vorba despre inspecție, există încă două măsuri pe care le puteți folosi pentru a decide dacă obiectul este sau nu în stare bună sau nu. Și scoatem lucruri evaluate, care sunt folosite în inspecție în această diagramă. OK, să trecem la următorul. Așa că, când am văzut prima dată această figură, m-am gândit, oh, OK, au uitat să pună ceva în această figură. Dar asta pentru a ilustra harta clientului. Deci, să presupunem că camera dvs. are pixeli dreptunghiulari. Apoi trebuie să mapați de la asta la o matrice de pixeli pătrați. Deci doar un detaliu minor. OK, deci acesta este antrenamentul. Avem o imagine de antrenament. Facem detectarea caracteristicilor, detectarea marginilor. Există o grămadă de parametri care controlează, cum ar fi rezoluția la care lucrați, cât de departe veți reduce eșantionarea? Și produce o listă de dipoli de câmp, care sunt practic sondele despre care am vorbit în celălalt brevet -- poziție, direcție și greutate și poate mai multe. Dar, mai important, produce un câmp. Așadar, ideea va fi că atunci când puneți imaginea de rulare, va avea caracteristici pe care doriți să le aliniați cu caracteristicile imaginii de antrenament. Și vor fi atrași de caracteristicile imaginii antrenamentului. Deci, veți avea acest câmp vectorial, care vă spune practic cât de greu să trageți pentru a încerca să obțineți alinierea. Și acest lucru se va întâmpla pentru toate caracteristicile. Deci vor exista o mulțime de grupuri concurente, care sperăm să producă un rezultat coerent. Dacă imaginea dvs. este la dreapta, acele valori de câmp vor fi negative și vor trage lucrurile spre stânga - un fel de traducere. Dacă imaginea dvs. este rotită, atunci acestea vor fi valori de câmp care au direcții diferite în cadrane diferite. Și, în general, va avea o discuție care va îmbunătăți alinierea. Deci acesta este scopul domeniului. Și asta va fi ceva care se află pe grila de pixeli. Asta va fi... asta e nou. Asta nu a fost în precedentul. Și asta aduce și un alt aspect, și anume că poziția din brevetul anterior a fost o mapare de la model la imagine, deoarece modelul avea sondele în el și le pui în jos pe imaginea de rulare. Aici, vom merge invers. Vom rula detectarea caracteristicilor pe imaginea de rulare și o vom mapa înapoi la câmp. De ce? Ei bine, pentru că cartografierea unui număr discret de lucruri este mult mai ieftină decât transformarea unei întregi imagini. Deci, în cazul anterior, nu am vrut să luăm imaginea de rulare - și o puteți roti și traduce și face o nouă imagine. Dar, desigur, acesta este un proces foarte costisitor. Așa că, în schimb, am luat lucrul discret, modelul, și l-am mapat pe deasupra. Iată, mergem în altă direcție. Avem margini de rezultat discrete din imaginea de rulare. Și o vom mapa pe partea de sus a acestui câmp. Acum am putea, desigur, să rotim, să traducem, să scalam câmpul. Dar din nou, asta ar fi foarte scump. Deci, poziția de aici este inversă, dar aceeași idee - în principal translație, rotație și scalare, deși permit și alte lucruri. OK, partea care este nouă și interesantă este modul în care este generat câmpul. Și vom intra în asta în detaliu. Sunt mulți pași. Și, în esență, ideea este să produci ceva care să te atragă către alinierea în care lucrurile din imaginea de rulare se potrivesc cu lucrurile din imaginea de antrenament. Acest lucru ar trebui să pară foarte familiar. Acesta este un nivel scăzut. Acestea sunt chestiile noastre de detectare a marginilor, cu câteva mici modificări -- a omis lucrul [INAUDIBIL] aici. Presupuneți doar că aveți o conversie carteziană în polară - și apoi adăugați parametri care controlează procesul, pentru că în diferiți pași ai calculului, s- ar putea să doriți să schimbați lucrurile, cum ar fi cât de mult subeșantionați imaginea, ce fel de low-pass filtrul pe care îl utilizați, ce metodă folosiți pentru detectarea și interpolarea vârfurilor. Dar în afară de asta, aceasta este aceeași poveste veche. Deci, în imaginea de antrenament, calculăm acești dipoli - dipoli de câmp ei se numesc. Și așa cum am spus, sunt doar fragmente de margine. Și aceasta este structura de date pentru ei. Și există steaguri care vă spun dacă vă aflați în apropierea unui colț al obiectului. Există steaguri în care contrastul este pozitiv sau negativ. Și există o direcție de gradient. Și, opțional, există o legătură către următorul dipol de câmp. Deci asta are de-a face cu inițializarea. Deci ceea ce faceți este să aveți această matrice, care va conține câmpul vectorial. Și vectorii nu acoperă întreaga matrice. Și motivul este că atunci când te îndepărtezi foarte mult de o margine, este foarte puțin probabil să aibă vreo legătură cu... așa că aici ai un avantaj în imaginea de rulare. Și există un avantaj în imaginea antrenamentului care este departe. Convingerea ta că cei doi sunt împreună este redusă atunci când sunt departe. Așa că, la un moment dat, pur și simplu ai întrerupt-o și spui, uită. Și deci există o parte a câmpului vectorial care va conține acești markeri speciali care spun terra incognita-- nu știm ce se întâmplă aici. Așa că nu aveți această contribuție ca dovadă la scor. Și așa începi, practic, prin ștergerea întregii matrice și prin a stabili acea valoare specială peste tot. Deci, dacă nu apuci să impuni o valoare, asta pentru că ai fost prea departe de o margine. Și multe dintre aceste lucruri de nivel scăzut sunt la fel. Poate vă amintiți, este vorba despre legarea lor în lanțuri și apoi îndepărtarea lanțurilor slabe - lanțuri slabe scurte. Și deci aici avem valorile de pornire impuse acelui câmp. Deci am luat acum pixelii din câmp care corespund direct punctelor de margine despre care știm, dipolii de câmp. Și le-am dat o valoare. Și valoarea corespunde distanței de la margine și direcției. Deci nu este doar o serie de numere. Există o direcție pentru ei și o lungime. Deci fiecare dintre ele este un mic vector doi. Și astfel, fiecare dintre aceste pătrate care au fost completate are asociate cu una dintre aceste valori de câmp care vă spune cât de departe sunteți de margine. Deci asta e inițializare. Și acum trebuie să completați restul. Deci, pentru pătratele care sunt aproape de o margine, cum ar fi în patru pixeli sau indiferent de pragul pe care îl alegeți, trebuie să vă dați seama cumva cât de departe sunt de margine. Acest lucru este foarte asemănător cu ceva care este folosit adesea în viziunea artificială numită harta distanței, care este puțin mai simplă. Deci, o hartă de distanță este doar o matrice care vă spune pentru fiecare pixel cât de departe este de o margine. Acest lucru este diferit pentru că de fapt nu oferiți doar distanța, ci și direcția. Dar modul în care îl completezi este foarte asemănător. Deci este un proces iterativ. O sămânți. Puneți punctele de margine reale. Și apoi pleci la un pixel depărtare-- toți pixelii care ating un pixel care a fost deja completat. Și întrebarea este atunci, ei bine, ce valoare puneți acolo? Acum, dacă am folosi distanța Manhattan, unde este doar suma distanțelor x și y , atunci ai putea face acest lucru cu precizie. Puteți calcula oricând cu precizie în mod incremental cât de departe este ceva de o margine. Dar din moment ce folosim distanța euclidiană, ceea ce are mai mult sens aici, asta nu este de fapt banal. Și din moment ce, în plus, folosim direcția, asta o face și mai complicată. Așadar, iată exemple care explică modul în care îl calculezi. Deci acolo sus, există o margine, 906. Și am completat deja 901-- acel pătrat. Știm vectorul care trece la 906. Și acum ne uităm la blocul 900 și spunem: OK, ce completăm aici? Și ar trebui să completăm ceva pentru că atingem un pixel care a fost completat - și anume 902. Și astfel putem începe cu valoarea 902 și o putem ajusta. Și puteți vedea că există un pic de geometrie acolo. Ne putem da seama care este acea distanță, 912, dacă știm care este distanța 904 și acel unghi și așa mai departe. O să vă plictisesc trigonometria. Dar este destul de simplu. La fel acolo... avem acel pixel care se atinge acum de un colț. Dar asta este încă considerat conectat. Deci unul dintre ele a fost completat, și anume pixelul 932 are un vector, 934, care merge la margine. Și acum completăm pixelul 930 extinzând distanța pe care o avem față de celălalt pixel și așa mai departe. Și așa este procesul. Și repetăm ​​de câteva ori până când decidem că acum suntem atât de departe de margine încât probabil că nu este o idee bună să considerăm că aceste margini se potrivesc. Deci construim un fel de-- o modalitate de a o vizualiza , dacă uităm de faptul că vectorii, este ca un fel de canelura de-a lungul fiecărei margini. Deci crește pe măsură ce te îndepărtezi de margine. Asta e harta distantei. Deci harta distanței este acest teren, care în orice loc vă spune cât de departe sunteți de margine. Și acum, când cobori o margine din imaginea de rulare, vrei ca, prin gravitație, să fie împinsă în jos, să alerge în jos pe pantă. Acum, cu o margine, desigur, va trece doar prin partea de jos. Dar cu multe avantaje, toți vor avea propria lor influență locală asupra locului în care ar trebui să meargă. Și sperăm că va fi oarecum conectat, astfel încât să ajungeți cu întregul sistem să se instaleze într-o stare de energie mai scăzută. Și acest lucru este doar puțin mai sofisticat, deoarece avem de fapt o direcție, nu doar o înălțime. Și apoi devine mai interesant când ajungem în locuri unde există o coliziune, unde avem informații de la mai mult de un pixel vecin. Și dacă sunt suficient de asemănătoare, atunci puteți lua un fel de medie ponderată, puteți încerca să îmbunătățiți rezultatul. Este mereu zgomotos. Deci, dacă primiți mai mult de un răspuns, puteți îmbunătăți lucrurile combinându-le. Dar când unghiurile devin prea mari, atunci trebuie să spui, ei bine, asta nu-- este o problemă. Suntem la un colț. Deci, iată un exemplu al primului pas după însămânțare. Așa că l-am însămânțat cu marginile care sunt acolo. Și acum l-am extins, depărtând un pixel de acele semințe. Și fiecare dintre acești vectori este forța. Și vă spune cât de departe sunteți de margine și direcția către margine. Și în acest proces, vom ajunge să ne uităm la puncte de pe margine care nu sunt punctele originale de la detectarea marginii, la fel ca în celălalt caz, am început cu puncte de pe o grilă care au fost produse de acel pas de detectare a marginilor . Dar apoi ne-am interpolat propriile puncte pentru că doream un anumit număr de puncte pe unitate de distanță. Nu se bazează neapărat pe distanța dintre pixeli. În mod similar și aici, vârfurile acestor săgeți nu îndreaptă către pixelii marginii originali. Ele indică în altă parte. Și înregistrăm asta. Acum, pentru anumite scopuri, câmpul vectorial este forța, este tot ce folosești. Dar, opțional, vă permit să înregistrați mai multe informații, cum ar fi care este cel mai apropiat dipol de câmp. Deci, aveți opțiuni de potrivire. Acum, aici nu există încă conflicte. Și acum am făcut următorul pas. Ne-am mutat în afară... din nou, la un pixel de unde eram. Și am completat încă o grămadă de pixeli acum cu vectori mai lungi , forță mai mare. Pentru că suntem mai departe de destinație, ar trebui să existe o atracție mai mare. Este un pic ca un izvor. Tragem mai mult când meciul este peste un decalaj mai mare. Și x marchează primul loc în care există un conflict, pentru că am fi putut extinde acest vector aici pentru a completa acest pixel. Sau l-am fi putut extinde pe acesta. Și, evident, au idei foarte diferite despre unde se află marginile. Și așa o marchem ca o poziție de colț, care nu va mai contribui la proces mai târziu. Așa că nu vrei să folosești doar orbește această hartă. Doriți informații suplimentare. Și aceste informații suplimentare ar putea fi o direcție de contrast. Deci asta e cea mai simplă. Sau ați putea să vă uitați de fapt la direcțiile vectorilor. Cât de apropiată este potrivirea gradientului de rulare cu direcția vectorului din câmp? Sau cât de aproape este direcția gradientului din imaginea de rulare cu gradientul dipolului de câmp cel mai apropiat , pentru că atunci când ajungi aici, acea direcție poate fi diferită de aceasta. Așa că lasă deschise toate aceste opțiuni. Și procesul va fi același. Încercați să minimizați energia din sistem. Și puteți vedea cum este un model mai bun cu sistemul mecanic în care aveți arcuri. Deci, să presupunem că știți că există o greșeală de tipar de execuție care se potrivește cu acest model de dipol. Atunci vă puteți gândi ca fiind un arc între cei doi cu lungime de odihnă zero. Astfel încât, atunci când îl scoateți, va dori să se scurteze. Și astfel starea minimă de energie este soluția. Singurul lucru de reținut este că, așa cum am menționat de multe ori, de multe ori. Cu un avantaj, de multe ori, știm cu exactitate cum funcționează lucrurile într-o direcție și nu în cealaltă. Deci, aici, când vorbim despre o potrivire cu o margine, nu putem spune cu adevărat că ne potrivim cu un anumit punct de pe margine. Știm doar că se potrivește cu acea margine. Și astfel ideea primăverii nu este nici pe deplin exactă. Ceea ce ne-am dori cu adevărat este un model puțin mai sofisticat, care să aibă un mic cărucior care poate rula de-a lungul marginii. Deci există un primăvară, da. Dar nu ne interesează cu adevărat unde se duce celălalt capăt. Deci am putea avea un mic dispozitiv mecanic care poate aluneca de-a lungul marginii. Și astfel acel analog mecanic este practic algoritmul real, nu dipoli și câmpuri electrostatice și chestii de genul ăsta, chiar dacă acesta este limbajul folosit în brevet. OK, așa că am vorbit despre cum să obținem imaginea de antrenament. Acum îl folosim. Avem imaginea de rulare. Facem detectarea caracteristicilor pe imaginea de rulare. Asta produce o listă de dipoli de imagine. Îl aruncăm jos deasupra câmpului. Și asta creează multe, multe forțe mici -- una pentru fiecare caracteristică pe care am detectat-o. Și vor ajusta poziția. Acum, în cel mai simplu caz, dacă avem doar traducere, este ușor să vizualizăm acest lucru. Dacă imaginea de rulare este în partea dreaptă a imaginii modelului, va fi trasă înapoi la stânga, deoarece toate arcurile o extind spre dreapta. Deci este foarte ușor de vizualizat. Dacă este rotit, este puțin mai greu de vizualizat. Dar din nou, întindeți arcurile acum tangent la un cerc, mai degrabă decât radial. Și toate trag în aceeași direcție, fie în sensul acelor de ceasornic, fie în sens invers acelor de ceasornic. Și astfel, poziția de echilibru este atunci când l-ați lăsat acel sistem mecanic să meargă și să se ajusteze singur. Ne putem gândi la dimensiune într-un mod similar, unde dacă dimensiunea este greșită - să presupunem că imaginea de rulare este mai mare decât imaginea modelului. Ei bine, toate arcurile vor fi întinse spre exterior și cu o cantitate care crește cu raza. Și, din nou, acel sistem se va ajusta prin scalarea transformării până când acele arcuri sunt relaxate. Și cred că în acest brevet, accentul este pus pe ceea ce faci atunci. Și calculezi dezordinea și acoperirea, care sunt măsuri ale cât de bine se potrivește imaginea de rulare cu modelul și cât de bine se potrivește modelul cu imaginea de rulare. Și există diferite moduri de a evalua rezultatul. În mod ideal, acoperirea va fi de 100%, iar dezordinea va fi 0. OK, acesta este mai mult despre modul în care dipolul imaginii este atras de limita modelului. Deci, în general, creăm un sistem mare de cel mai mic pătrat. Deci spunem că fiecare dipol de rulare are o anumită forță exercitată asupra lui într-o anumită direcție. Și le vom muta pe toate într-un mod sistematic pentru a încerca să reducem tensiunea, să reducem energia din sistem. Și, de obicei, mișcarea permisă va fi translația, rotația și scalarea în acest caz. Deci, dacă scrieți totul, este un sistem uriaș de cel mai mic pătrat. Și nu există o soluție în formă închisă. Dar există un mod natural de a-l calcula, care implică o grămadă de acumulatori. Deci, să vedem dacă ajungem acolo. Acest lucru durează mult timp. Deci aceasta este matricea acumulatorului, care este practic triunghiul superior al unei matrice simetrice. Deci, cu o matrice simetrică, trebuie doar să păstrăm diagonala și totul într-o parte. Și acestea sunt sume de... deci W este greutatea. Am vorbit deja despre atribuirea de ponderi pe baza diferitelor proprietăți care ar putea indica dacă o potrivire este deosebit de bună sau nu. Și apoi pozițiile din imagine - și deci toate acestea sunt ceea ce numim momente, lucruri precum integrala a ceva ori x până la i ori y până la j. Deci puteți vedea că avem nevoie de o grămadă de ei. Am uitat. Cred că matricea este 6 cu 6. Depinde de câte grade de libertate permiteți. Dacă permiteți translația, rotația și scalarea, cred că este 4. Dar dacă permiteți toate cele 6 transformări liniare afine generale , atunci va fi 6. Și astfel treceți prin imagine. Și, desigur, o poți face în paralel, dacă ești atât de înclinat pentru că nu interacționează. Doar strângi dovezi peste tot și le aduni. Și produce o forță generală. Și apoi te adaptezi. Deci, din nou, așa cum am menționat, nu voi intra în atât de multe detalii aici ca în celălalt brevet. Deci acestea sunt cazuri simple. Deci, cel de sus aici este doar traducerea. Și acesta este translația și rotația. Nu te speria de tensor. În ceea ce privește brevetul, tensorul este doar o matrice multidimensională, inclusiv matrice cu o dimensiune sau două dimensiuni și așa mai departe. Deci se acumulează pentru a permite din ce în ce mai multe grade de libertate și rezultate emoționale. Și acesta nu este sfârșitul , pentru că presupune că este liniarizat local în ceea ce privește punctul de operare curent. Deci nu obțineți soluția finală la problema celor mai mici pătrate. Dar primești o îmbunătățire mare. Și în varianta de realizare preferată, după patru pași, este suficient de bun. Dar, desigur, puteți folosi orice criteriu doriți pentru reziliere. Să vedem dacă mai sunt și alții aici care... iată un detaliu interesant. Există o listă dublu legată. Deci, dipolii câmpului facilitează deplasarea în orice direcție de-a lungul marginii, deoarece sunt reprezentați în lista de legătură W. Deci, aici este multiscale. Deci, pentru viteză, este bine să lucrezi la rezoluție scăzută și să obții o... așa că ai o ipostază de început. Și apoi obțineți o poziție cu rezoluție scăzută la viteză mare folosind un brevet antrenat cu rezoluție scăzută. Și apoi îl folosești ca o poză de pornire pentru etapa de înaltă rezoluție. Deci ei arată doar două etape ale acestui lucru. Ai putea face mai mult. Și, de asemenea, în acest caz, nu aveți nevoie de o poziție de început la fel de înaltă ca și dacă aveți doar o etapă a acestui proces. O mulțime de diagrame de flux. Să vedem. A fost ceva aici pe care am vrut să subliniez? Este distractiv de citit pentru că te gândești la o imagine a, nu știu, o placă de circuit imprimat sau așa ceva. „Imaginile digitale sunt formate din multe dispozitive și sunt folosite în multe scopuri practice. Dispozitivele includ camere TV care funcționează pe lumină vizibilă sau infraroșie, senzori de scanare în linie, scanere pentru puncte de zbor , microscop electronic, dispozitive cu raze X, inclusiv scanere CT, imagini cu rezonanță magnetică, iar altele se găsesc în automatizarea industrială, diagnosticul medical, imagistica prin satelit”, bla, bla, bla. Așa că acesta este doar avocatul care încearcă să generalizeze asta cât mai mult posibil. Deci, dacă apoi spui, oh, dar nu l-am folosit pentru a privi o bandă transportoare, ei pot spune, ei bine, nu spune că trebuie să o restricționezi la asta. Și explică problemele cu metodele anterioare și de ce acesta este cel mai bun lucru de la feliile de pâine. Și apoi dă toate detaliile. Și apoi, în sfârșit, ajungi la revendicări. Să aruncăm o privire rapidă asupra afirmațiilor. Oh, iată-ne. Ceea ce se revendică este o metodă de potrivire a modelului geometric pentru rafinarea unei estimări a unei poziții reale a unui obiect într-o imagine de rulare, metoda cuprinzând - și apoi are aceste părți - generarea unui model de model de rezoluție scăzută și așa mai departe. Este interesant cum această primă afirmație nu spune prea multe despre metodă. Deci nu ofera detalii. Deci este foarte larg. Și probabil că va fi doborât dacă a existat vreodată o dispută pentru că primirea unei imagini de rulare - ei bine, aproape orice va primi o imagine de rulare. Folosind un model de model cu rezoluție scăzută, bla, bla, bla... ei bine, multiscale. Toată lumea face multiscale-- și așa mai departe. Deci, acest lucru este foarte, foarte general, încercând să acopere totul. Și dezavantajul este că, dacă cineva îl contestă vreodată, probabil că va fi acoperit de stadiul tehnicii. Și de aceea aveți toate pretențiile dependente. Deci una dintre afirmații este foarte generală. Dacă ai noroc, va acoperi totul. Dar există șanse mari să fii doborât. Deci, aveți revendicarea doi, care depinde de revendicarea unu și include, de asemenea, producerea unei valori de eroare cu rezoluție scăzută, producerea unei valori de dezordine agregate de rezoluție scăzută și producerea unei valori de acoperire agregată de rezoluție scăzută. Deci, acestea sunt toate valorile utilizate în inspecție. Și apoi trei depinde de unul în care valoarea erorii de rezoluție scăzută este o valoare de eroare pătrată medie de rezoluție scăzută. Deci, ați putea folosi în schimb suma valorilor absolute. Dar acesta spune în mod specific rădăcină-medie-pătrată. Și apoi patru depinde de doi și așa mai departe. Și acesta are un număr exagerat de revendicări. Coboară până la 55. Dar probabil că asta este tot ce vrem să știm despre asta, spre deosebire de Pad Quick-- deci Pad Quick, a căutat un spațiu polar complet, desigur la rezoluție scăzută. Deci nu a fost nevoie să aibă o primă presupunere. Acesta necesită o primă presupunere. Și are o rază de captură. Adică, există o regiune în spațiul polar în care, dacă reduceți valoarea inițială a unui loc în acea regiune, va ajunge să vă dea rezultatul dorit. Apoi am menționat că poziția de aici este inversă. Și asta din motive de calcul. Nu dorim să transformăm o serie întreagă de valori de gri, valori de margine sau orice altceva, sau câmpuri. Deci este invers de la Pad Quick. Și dacă îl citiți, există un accent repetat asupra modului în care încearcă să evite pragurile. Ei încearcă să evite cuantizarea la nivel de pixeli. Deci totul este subpixel. Și cred că o parte din aceasta este de a ilustra calitatea rezultatului la care vă puteți aștepta și parțial de a evita stadiul tehnicii, deoarece stadiul tehnicii era aproape bazat pe pixeli și nu era precis la subpixeli. Apoi, există un analog fizic, care, așa cum am menționat, numirea acestor lucruri dipoli este greșită. Adică, știi care este legea între doi dipoli? Adică, este o mizerie pentru că depinde nu doar de separarea dintre ele, ci și de unghiul și orientarea în spațiul liber. În plus, uită de dipoli. Gândiți-vă doar la sarcinile electrostatice. Ei bine, dacă le aduci împreună, ai o cantitate infinită de energie. Există o singularitate. Și așa, stai, aducem aceste lucruri împreună, marginile de rulare peste marginile de antrenament? Deci există o singularitate. Deci asta nu merge. Dar analogul mecanic funcționează foarte bine. Este exact ceea ce au implementat. Și implică arcuri cu acea mică schimbare pe care ar trebui să fie arcurile -- un capăt al arcului trebuie să poată aluneca pe margine. Deci, să vedem. Descrierea nu este legată de grila de pixeli. Și cred că am analizat exact ce este câmpul și elementele suplimentare opționale. Bine, atunci cum se utilizează dovezile inițiale - așa că colectăm dovezi, ca și înainte, despre dacă aceasta este o aliniere bună sau nu. Și au moduri diferite de a atribui ponderi și că există acest tip de prag. Dacă ești prea departe de margine, atunci nu știi ce se întâmplă. Și există un fel de discontinuitate neplăcută acolo, în care scoți arcul afară. Și până la o anumită separare, ea devine din ce în ce mai puternică și mai puternică. Și apoi brusc, se rupe. Deci, acesta este unul dintre motivele pentru care nu puteți găsi o soluție în formă închisă , deoarece este o problemă neliniară. Nu este o simplă problemă liniară cu cele mai mici pătrate. Și deci nu se adresează cu adevărat la asta. Există unele argumente despre un fel de chestie de logică neclară, dar nu este cu adevărat urmărită. Și aparent, în practică, nu este o problemă mare. Acum, această distanță maximă pe care o permiteți pentru separare ar trebui să depindă de cât de aproape sunteți de răspuns. Și așa ar trebui să depindă de stadiul iterației în care vă aflați. Deci, pe măsură ce repeți, te apropii din ce în ce mai mult de a avea imaginea de rulare aliniată cu imaginea modelului. Și așa că, la un moment dat, ar trebui să fie destul de bine aliniat. Și astfel puteți tăia la o valoare mai mică. Deci câmpul este un lucru fix. Și are o tăietură. Dar apoi, în timpul iterației, puteți arunca în plus meciurile care au o distanță prea mare între marginea timpului de rulare. Discuțiile duc la rotație. Forțele duc la traducere. Deci, potrivirea, inspecția... este un tipar ciudat, în sensul că rezumatul se referă la inspecție. Dar apoi citiți specificația, totul este să vă dați seama care este transformarea. Deci partea de inspecție, un fel de etichetă la sfârșit, se bazează pe două lucruri. Singurele caracteristici care lipsesc. Există lucruri care sunt în imaginea antrenată care nu au nicio potrivire în imaginea de rulare - și în caracteristicile suplimentare, lucruri care sunt în imaginea de rulare care nu sunt în model. Și în funcție de ceea ce faci, una dintre aceste două măsuri te va ajuta să decizi dacă obiectul trece sau nu de inspecție. Există și noțiunea de dezordine, care sunt dipoli de imagine cu greutate redusă, probabil lucruri datorate texturii de fundal și așa mai departe. Multiscale-- bla, bla, bla. Am văzut asta. OK, singura parte pe care chiar nu o avem-- ei bine, am parcurs-o în diagrame, care este generarea câmpului. Să vorbim puțin despre asta. Și permiteți-mi să încep prin a vorbi despre versiunea simplificată, unde avem doar distanță. Deci cum arată asta? Deci să presupunem că am un singur punct. Și nu are nicio direcție. Atunci câmpul de distanță, desigur, este doar un set de cercuri concentrice. Și apoi să presupunem că am un cerc. Deci am o margine care se învârte într-un cerc. Ei bine, atunci, desigur, câmpul de distanță este doar o grămadă de cercuri, cu excepția faptului că acum mergem și spre interior. Și apoi, dacă am un avantaj, va arăta așa. Și devine interesant când am un colț. Deci, dacă am un colț-- și apoi pe interior-- așa că în calculul asta, totul este frumos și confortabil, mai puțin chiar în colț. Acolo se întâmplă diferite lucruri. Și, deci, aceasta este o problemă potențială cu metode simple simple de completare. Acum, nu lucrăm în lumea continuă. Deci lucrăm într- o lume discretă. Și așa trebuie să ne dăm seama cum să propagam aceste valori. Și, așa cum am menționat, dacă am lucra cu distanța Manhattan, ar fi simplu, deoarece putem aduna modificările în x și modificările în y. Și am avea întotdeauna un rezultat precis. Deci, dacă aceasta este una dintre caracteristici, atunci aceasta este una departe. Asta e la una distanță. Sunt două distanță. Deci distanța din Manhattan este foarte ușoară. Euclidian nu este. Și, de fapt, există o grămadă de lucrări despre cum să faci euclidian într-un mod aproximativ, care este încă suficient de bun și este, de asemenea, foarte rapid. Adică, poți oricând să o faci în mod lent, practic, dacă adaugi un pixel, uită-te la toți ceilalți pixeli și vezi care este cel mai apropiat și calculează rădăcina pătrată a delta x pătrat plus delta y pătrat . Dar, desigur, este foarte scump. Ceea ce doriți să faceți este progresiv, pe măsură ce completați acest câmp de distanță, doar adăugați un alt strat de pixeli. Deci nu vom vorbi despre acestea. Dar doar pentru a ști că aceasta este una dintre acele probleme, cum ar fi, care este o modalitate bună de sortare? Există această problemă a modului bun de a calcula transformarea distanței. Și, așa cum am menționat, în cazul nostru, avem de fapt vectori. Iar cifrele din brevet arată destul de clar ce trebuie făcut. Adică, ecuațiile sunt dezordonate. Dar cifrele vă spun destul de clar ce trebuie să faceți. BINE. Apoi avem toate aceste mici forțe locale. Și am vorbit despre adunarea lor. Deci, un lucru pe care îl putem face este... deci Fi-urile sunt forțe la dipolii individuali din imaginea de rulare. Și Wi-urile sunt greutăți. Iar greutățile pot fi tot felul de lucruri conform brevetului. Ele pot fi predefinite. Ele pot depinde de mărimea gradientului. Deci tu crezi mai mult în lucrurile care au un gradient puternic decât în ​​lucrurile care nu și așa mai departe. Ele pot depinde de cât de bine se aliniază gradientul de rulare cu vectorul câmpului. Ele pot depinde de cât de bine se aliniază gradientul de rulare cu cel mai apropiat dipol de câmp și așa mai departe. Deci multe versiuni. Dar, în general, vrei să faci așa ceva. Și asta e destul de evident. Practic, luăm doar o sumă ponderată a acestor forțe. Și aceasta va oferi traducerea. Deci mutăm alinierea pe baza asta. Și atunci ce zici de rotație? Ei bine, foarte asemănătoare. Doar luăm un cuplu în jurul unui centru. Deci asta ne va oferi o rotație. Și astfel pot lua în mod convenabil produsul încrucișat al vectorului dintr-un anumit centru -- rotația va fi aproximativ un centru. Cel mai convenabil, este centrul imaginii. Deci ri se măsoară de acolo. Și acesta este cuplul pe care îl exercită toate aceste arcuri. Și asta va tinde să facă imaginea de rulare să se miște. Deci, este puțin amuzant pentru că-- nu, nu ar trebui să fie-- nu este un vector. Deci cuplul este un scalar, care se rotește. Este un grad de libertate. Dar aici, avem produsul încrucișat a doi vectori. Deci ce se întâmplă acolo? Ei bine, fiind puțin neglijent cu o notație, dar produsul încrucișat al celor doi... amândoi sunt în avion. Și astfel produsul lor încrucișat va ieși din avion. Deci, dacă vreau să fie pedant, aș putea spune asta. Luați componenta z - există doar o componentă z. Dar transformă-l într-un scalar, practic. Și apoi putem avea scalare, presupun, deși asta este mai puțin obișnuit. Deci asta e... dacă vrei să faci referire la brevet, cred că acestea sunt figurile 21 și 22. Și forța să fie cu tine. Îmi pare rău, nu am putut rezista. Bine, cel mai apropiat punct de limită, aliniere, minimizarea energiei... da. BINE. Deci vom avea câteva bare laterale mici aici. Una dintre ele este distanța până la o linie. Și am menționat deja asta. Dar din moment ce apare atât de mult, vreau să trec din nou peste asta. Depinde, desigur, de notația dvs. pentru o linie. Așa că, încă o dată, lasă-mă să-mi propagand favoritul. OK, așa că în primul rând, ne putem roti într-un sistem de coordonate care este aliniat cu linia. Deci obținem x prim este x plus theta plus y sine theta. Și apoi y prim este... deci acesta este pasul unu. Și apoi pasul doi este să mutăm originea acolo. Deci, vom numi acest lucru x prim dublu și y prim dublu. Deci x prim dublu este doar x prim. Și y prim dublu este y prim minus rho. Deci y prim dublu este minus x sinus theta plus y plus theta minus rho. Și linia este locul lui y prim dublu egal cu 0. Asta prin construcție. Și astfel putem scrie ecuația dreptei ca x sine theta minus y cos theta plus rho este 0. Și acea parametrizare nu are nicio singularitate. Nu explodează atunci când linia merge drept în sus sau drept peste sau orice altceva. Nu este redundant. Are doi parametri, rho și theta, care este ceea ce aveți nevoie pentru că familia de linii din plan este o familie de doi parametri. Și este destul de la îndemână. De exemplu, să presupunem că vrem să facem niște potriviri. Deci, să presupunem că în imaginea noastră avem o grămadă de puncte de margine. Și încercăm să găsim cu mare precizie o linie care să li se potrivească foarte bine. Deci, ceea ce am putea face este să minimizăm sigma distanței la pătrat. Deci, care sunt parametrii noștri pentru rho și theta? Pentru că folosind această notație, aceasta este distanța. Ei bine, sau poate negativ. Dar luăm pătratul. Deci cui îi pasă? Și, desigur, este o problemă de calcul. Deci luăm derivata și o setăm egală cu 0. Și să începem cu d rho. Apoi vom obține de 2 ori-- așa că uită de 2. Și acum sine theta îl putem aduce în afara însumării. Sine theta sigma x minus cos theta sigma yi plus rho sigma 1. Și dacă avem n puncte, putem împărți prin n. Și atunci obținem... nu? Deoarece stigma lui 1 este n. Și deci, dacă împărțiți la n, obținem doar 1. Și ce spune asta? Deci x-bar este media, este 1/n. Și, desigur, și-bar în mod corespunzător. Și asta spune că există o relație între... deci nu ne dă rho încă. Nu ne dă teta. Dar există o relație puternică între ei. Și aceasta este că linia trebuie să treacă prin centroid, pentru că dacă conectez -- dacă conectez coordonatele centroidului, x-bar, y-bar, primesc 0. Și aceasta este definiția punctelor de pe linie-- deci centroidul este pe linie. Deci, în acel moment, aș putea face un lucru sensibil de a muta toate coordonatele mele către centroid. Deci știu că acesta va fi un punct important. Așa că pot scădea asta. Și atunci dacă eu... deci tot încerc să minimizez chestia asta aici. Și dacă conectezi... așa că întoarce-l invers . OK, deci acum intru în această ecuație. Și conectez -- pentru xi și yi, conectez aceste expresii. Apoi se dovedește că centroidul se anulează deoarece avem această proprietate. Vom obține x-bar sine theta minus y-bar cosinus theta plus rho. Și știm că este 0. Așa că putem scăpa de asta. OK, deci acum suntem gata să facem pasul final, care este să luăm derivata față de theta și să o setăm egală cu 0. Și să vedem. După ce adunăm termeni-- deci asta-- ceea ce vom obține este de 2 ori această expresie de ori derivată. Și dacă înmulți toate acestea, obții asta. Și, ei bine, asta va... deci ce este asta? Aceasta este o jumătate de sinus 2 teta. Și acesta, desigur, este cos 2 theta. Deci am o expresie care implică sinusul de două ori unghiul și cosinusul de două ori unghiul. Deci, practic, pot face un atan2-- atan2-- of-- OK, deci acesta este sinusul. Deci acesta va fi acesta. De 2 ori sigma xi yi virgula sigma. Deci folosim atan2 ca să nu avem ambiguitatea în ce cadran ne aflăm. Și nu avem lucruri care să explodeze... nu, îmi pare rău. Asta pare un fel de mizerie. Dar, evident, aceasta este partea sinusoială, dacă doriți. Și aceasta este partea cosinus a tangentei. Deci luăm doar acele două cantități. Iar soluția E pătrat are avantajul că este independentă de alegerea sistemului de coordonate. Ce vreau să spun prin asta? Înseamnă că dacă am un sistem de coordonate diferit, o poziție diferită, rotații diferite, bineînțeles că voi primi un răspuns diferit. Dar în acel sistem de coordonate, aceasta va fi aceeași linie. De ce fac tam-tam din asta? Ei bine, pentru că nu este adevărat dacă potriviți y este egal cu mx plus c. Acum, există circumstanțe în care potrivirea y este egală cu mx plus c are sens dacă se întâmplă să nu aveți o eroare în x, dacă presupuneți că toată eroarea de potrivire este în y. Deci x este o cantitate asupra căreia ai control complet. Y este ceva ce măsori. Atunci potrivirea y este egală cu mx plus c are sens. Dar aici vorbim despre coordonatele imaginii. Nu este nimic diferit la x și y sau la rotații diferite și așa mai departe. Deci, aceasta este o metodă care ar putea fi folosită, de exemplu, în unele dintre lucrările de brevet despre care am vorbit despre marginile și încercăm să combinăm fragmente cu muchii scurte în fragmente cu muchii mai lungi. Deci, să ne uităm la... de ce nu ne uităm la un alt brevet? Deci, ultimul din această serie este, din nou, un fel de afacere subsidiară. are de-a face cu afacerile pe mai multe scari, și anume, cum facem eficient, așa că continuăm să vorbim despre mai multe scale. Dar cum facem eficient asta? Pentru că, potențial, calculul este foarte costisitor. Bine, deci să... OK, corect, pentru că convoluția este scumpă. Dacă avem o imagine cu n pixeli și avem un nucleu cu m pixeli, atunci calcularea convoluției este ceva de ordinul a n ori m. Deci, cu 10 milioane de pixeli sau orice altceva, dacă nucleul este rezonabil de mare, va dura foarte mult timp. Deci există mult interes în găsirea de comenzi rapide, găsirea de trucuri care ușurează această muncă. Și iată unul. Deci, din nou, ultimul pe care îl vom privi de la Bill Silver la Cognex. Și este vorba, practic, de a calcula eficient filtre pentru a face multiscale. Și astfel imaginea de aici este-- un nucleu polinomial de ordinul a n-a. Așadar, trucul aici este că vom aproxima orice nucleu vă place cu ceva care este o spline-- polinom pe bucăți. Și este o spline de ordinul a n-a. Și apoi luăm prima diferență n plus. Deci, dacă vă gândiți bine, fiecare dintre acele piese este un polinom de ordinul al n-lea. Și dacă luați n plus prima derivată, obțineți ce? Luați un polinom de ordinul doi, luați derivata a doua - obțineți-- 0. OK. Și de ce este bine? Ei bine, este ușor să convoluți cu 0. Deci, care este trucul? Ei bine, treaba este că noi îmbinați polinoamele, s-ar putea să aveți o discontinuitate, poate nu în valoare, ci poate în derivată, sau poate nu în valoare și derivată, ci în derivata a doua și așa mai departe. Rezultatul este că este rar. Indiferent ce faci, poate un pic complicat la acele tranziții. Dar părți mari din el sunt 0. Deci, dacă faci convoluția, nucleul tău are suport foarte mic. Și deci este foarte eficient. Este foarte ieftin de calculat. Deci, să vedem. Ce avem? Parametrii de filtrare - astfel încât să puteți alege diferite filtre pe baza acestui lucru. Atunci primești semnalul tău. Și aceasta este versiunea 1D. Probă tu. O combinați cu acea funcție acum rară. Dar atunci trebuie să anulezi asta. Și astfel faceți n plus prima sumă, care este inversul diferenței n plus prima. Și în sfârșit te normalizi. Și aici este semnalul tău filtrat. Deci asta este ideea de bază. Acum, există câteva lucruri ascunse acolo care sunt destul de importante -- în primul rând , că n plus prima sumă este inversul diferenței n plus prima. Dar așa ceva are sens pentru că unul -- dacă continui -- de la stânga la dreapta -- adunând lucrurile, acesta este exact inversul trecerii și scăderii vecinilor în oricare ordine. Deci are sens pe o singură diferență. Și apoi te poți convinge că, ei bine, aceste operațiuni fac naveta. Deci, dacă am... să le numim D și S. Deci, să presupunem că aceasta este identitatea. Și apoi ceea ce vrem să ne convingem că aceasta este și identitatea-- D ori D, S ori S. Deci luăm două diferențe. Și apoi luăm două sume. Ei bine, pentru că aceste operațiuni fac naveta, pot scrie asta ca DS DS. Le schimb pe astea. Și, desigur, știu că aceasta este identitatea. Și asta este identitatea. Și am terminat. Și asta se generalizează la n plus 1 diferențe și n plus 1 sume. Deci, aceasta este o idee acolo că putem sparsifica o convoluție și o face mai ieftină și că putem anula acea sparsificare luând sume. Și dacă treci prin algebra de a afla câte operații, ieși mereu... ei bine, aproape întotdeauna ieși înainte. Asta e o idee. Cealaltă idee este că amestecăm într-un fel convoluțiile și diferențierea. Și acesta este un punct puțin mai subtil. Dar putem considera integrarea și diferențierea ca circumvoluții. Deci să ne gândim la integrare. Deci cu ce te-ai asocia pentru a obține o integrală? În loc de unele, nu? Dar tot drumul de la minus infinit la plus infinit sau - deci atunci când calculăm integrala - deci avem f de x. Și vrem integrala lui f a lui x într-un anumit loc - să spunem x prim. Apoi integrăm de la minus infinit până la x prim. Și ignorăm restul lui f din x. Așa că este un pic ca și cum ai lua o funcție de pas, înmulțind cu o funcție de pas - ei bine, răsturnat, nu? Pentru că înmulțim cu aceasta și apoi adăugăm rezultatul. Așa că vom mai vorbi puțin despre asta. Deci, fără ca acest lucru să fie menționat în brevet, depinde în mod critic de faptul că operatorii derivați pot fi tratați ca convoluții - nu convoluții cu funcții reale, deoarece avem nevoie de impulsuri și chestii. Dar dacă permitem impulsuri și distribuții în loc de funcții, atunci le putem trata. Și odată ce facem asta, avem toată puterea convoluției și toate proprietățile frumoase ale convoluției. Deci, de exemplu, convoluțiile fac naveta. De ce este asta? Ei bine, pentru că transformata Fourier a convoluției, după cum vă amintiți-- 603-- este produsul în spațiul de transformare, nu? Și produsele fac naveta. Deci, dacă convoluția se transformă într-un produs și produsul face naveta, asta trebuie să însemne că acea deconvoluție face naveta. În mod similar, asociativitatea -- dacă am A ori B ori C, mă pot gândi la asta fie ca înmulțind A cu B mai întâi și apoi luând rezultatul și înmulțind cu C. Sau mă pot gândi la asta ca înmulțind B cu C mai întâi și apoi înmulțind A cu asta. Ei bine, deoarece, din nou, transformarea convoluției este înmulțire, același lucru trebuie să se aplice și în cazul convoluției. Așa că putem schimba lucrurile, ceea ce am făcut aici. Ei bine, nu. Aici, am folosit comunitatea. Dar vom avea nevoie și de asociativitate. Deci ne putem asocia în convoluție, care va fi foarte puternică și ne va permite să comutăm lucrurile între semnal și filtru și așa mai departe. OK, deci hai să continuăm cu asta. Deci aceeași imagine. Examinatorului de brevete i-a plăcut asta și l-a pus pe prima pagină. Și să ne uităm la ce avem aici. Deci tipul de curbă netedă de aici ar putea fi un nucleu pentru un fel de filtru de netezire, poate o încercare de a filtra aproximativ cu trece-jos un semnal sau de a aproxima un gaussian sau ceva de genul. Dar se dovedește că acesta este compus din segmente care sunt fiecare pătratice. Și așa că acum luăm o diferență-- sau în cuvântul continuu, derivat. Și ce obținem? Acestea sunt linii drepte? De ce sunt linii drepte? Pentru că acesta a fost de ordinul al doilea. Deci, dacă luăm o derivată, va fi de ordinul întâi. Dar nu este rar. Nu am terminat. Așa că acum repet asta. Luăm un alt derivat. Și pentru că aceasta este doar o rampă, obținem o valoare constantă. Și apoi aceasta este o rampă care coboară. Deci obținem o valoare constantă pe derivata a doua. Și asta e o rampă... obține o valoare constantă pe derivata a treia. Încă nu am terminat. Amintește-ți mai întâi n plus. Deci trebuie să facem încă o derivată. Ei bine, care este derivata unei constante? Este 0. Deci pe tot parcursul acestor lungi întinderi, potențial... Adică, aceasta este... pentru a se potrivi în figură, au făcut-o relativ compactă. Dar vă puteți imagina că am putea face asta pe o perioadă mai lungă. Toate aceste zone, nu obținem nimic. Primim 0, ceea ce ne dorim. Îl face rară. Dar la tranziții, în locurile în care aceste lucruri pătratice au fost îmbinate împreună, obținem un rezultat. Și, uimitor, există doar două valori diferite de zero. Există doar acea valoare în acea valoare. Deci, în loc să trebuiască să convoluăm cu ceva care 20 de valori diferite de zero, convoluăm implicați cu 2, ceea ce este foarte ieftin. În plus, au aceeași mărime. Deci nici nu trebuie să ne înmulțim. Doar scadem. Dar apoi nu primim răspunsul pe care ni-l dorim. Obținem a treia diferență a răspunsului pe care îl dorim. Deci acum luăm rezultatul. Și am rezumat-o de la stânga la dreapta... o dată, de două ori, de trei ori. La fel cum prima diferență este o operație atât de simplă, aceasta este, de asemenea, o operație simplă. Începem cu 0 în stânga. Și continuăm să adăugăm valorile și să le scriem într-o matrice. Și apoi facem asta cu acea nouă matrice - același lucru. Și apoi facem cu rezultatele. Și dacă am făcut-o de trei ori, am terminat. Deci există un anumit cost pentru asta. Dar nu este nimic în comparație cu costul de a face convoluția cu funcția originală care avea suport mare, avea valori diferite de zero pentru multe puncte. Deci acesta este un fel de exemplu de manual al acestei metode, deoarece ne oferă o compresie foarte mare. Rezultatul după a treia diferență este foarte mic. Să vedem... primul, al doilea, al treilea. Da, a treia diferență. OK, deci asta e ideea de bază. Și iată încă una. Oh, stai, e același? Da, este același. Și deci iată circuitul pentru a face asta. Deci iată funcția unidimensională. Gândiți-vă la asta ca la un rând din imagine. Și există un operator de eșantionare, care alege fiecare a cincea valoare -- patru dintre ele. Și acestea sunt rezultatele acelei a treia diferențe a funcției de convoluție. Și apoi ne convocăm... Îmi pare rău, cred că am greșit aici pentru că sunt și valori diferite de zero la sfârșit. Deci există această valoare aici și acea valoare. Deci, există de fapt patru valori diferite de zero în acest exemplu. Și două dintre ele au magnitudinea trei, iar două dintre ele au magnitudinea unu. Deci, de aceea, citim cele patru valori ale noastre. Iar cele exterioare se înmulțesc cu plus n minus 1. Cele interioare se înmulțesc cu plus sau minus 3. Și le adunăm. Și asta produce un nou flux unidimensional de numere. Și apoi îl împingem prin trei acumulatori. Și iese rezultatul. Să vedem. Și asta este doar o imagine a unui acumulator, în care păstrăm valoarea veche și adăugăm noua valoare. Nu sunt sigur de ce avem nevoie de o diagramă pentru asta. Și aceasta este operația de convoluție reală. Și apoi putem... de multe ori vrem să controlăm lățimea de bandă. Vrem să controlăm cât de mult reducem rezoluția imaginii. Ei bine, aici putem face asta foarte simplu, schimbând distanța dintre acele patru valori diferite de zero. Deci putem întinde acea spline pe orizontală sau o putem comprima doar schimbând S. Și aici ne uităm la al-lea pixel și la i minus S plus 1 pixel și i minus de două ori S plus 1 pixel și i minus de 3 ori S plus 1 pixel. Deci putem schimba scala foarte ușor. Și observați că nu există nicio schimbare în cantitatea de calcul, în timp ce dacă ați folosi spline originală completă, sau orice ar fi o aproximare, ca un gaussian, atunci pe măsură ce creșteți dimensiunea, desigur că calculul crește. Așa că aici, din moment ce facem doar orice lucru în care părțile coloanei vertebrale s-au îmbinat împreună, asta nu se schimbă. Astfel, putem controla cu ușurință parametrul filtrului. Iată încă una. Să trecem prin asta. Deci, aceasta... avem această curbă aici sus , care cred că este o parabolă cu susul în jos. Luăm prima diferență - deci a doua ordine este prima diferență este primul ordin. Și obținem această linie. Și apoi luăm a doua diferență și, deoarece aceasta are o pantă constantă, desigur, obținem o valoare constantă pentru a doua diferență. Încă nu am terminat pentru că încă nu e rar. Luăm a treia diferență. Și, desigur, obținem 0 până aici. Acum, de data aceasta, capetele sunt mai complicate, deoarece discontinuitatea-- există o discontinuitate nu doar în derivata superioară, ci și în prima derivată. Este continuă în funcția în sine la capete. Dar prima derivată are o discontinuitate. Și asta înseamnă că a doua și a treia derivată vor fi mai complicate. Deci avem aceste vârfuri la sfârșit. Și există două valori diferite de zero în fiecare dintre aceste vârfuri la cele două capete. Deci, este doar un alt exemplu de... deci, dacă, de exemplu, decideți că Gaussianul este un filtru bun pe care să îl utilizați din cauza proprietăților sale transformate, atunci îi puteți monta o coloană vertebrală. Și în loc să faceți calculul costisitor -- sau să presupunem că spuneți, OK, știu că filtrul trece-jos ideal are o funcție de sincronizare în domeniul spațial. Ei bine, funcția de sincronizare, pentru început, continuă pentru totdeauna. Deci asta va fi o problemă. Dar, de asemenea, nu are un suport [INAUDIBIL]. Este diferit de zero aproape peste tot. Așa că pot monta o spline. Și asta vom face. Și acesta este un aspect deosebit... de importanță pentru noi, deoarece vrem să lucrăm la mai multe scale. Deci, trebuie să eșantionăm. Nyquist ne spune... la fel ca și Shannon și cine a inventat-o ​​primul. Nu a fost Nyquist-- că trebuie să avem grijă ca eșantionarea să producă artefacte de aliasing, dacă nu am tăiat conținutul de înaltă frecvență înainte de a eșantiona. Așa că trebuie să fim capabili să ne filtram cel puțin aproximativ cu trecere jos imaginile. Și așa, cum faci asta? Ei bine, puteți convoa cu funcția de sincronizare. Dar este foarte costisitor chiar și aproximarea directă. Dacă putem aproxima funcția de sincronizare cu una dintre aceste spline, atunci putem face acea premisă rezonabilă. Nu sunt sigur că există... OK, sunt mai multe exemple. Nu trebuie să fie doar un bulgăre. Deci aici avem o funcție care are un vârf pozitiv și unul negativ. Poate că aceasta este o aproximare a unui operator derivat prima. Și din nou, luăm prima derivată. Primim rampele, derivata a doua. Obținem constantă, derivată a treia. Obținem zerouri și cu ceva la fiecare dintre tranzițiile în care țepii sunt lipiți împreună. Și reducem dramatic calculul pentru că, în acest caz, avem una, două, trei valori diferite de zero. Oh, și există... OK, cinci. Cinci valori diferite de zero. Și acestea sunt doar detalii inteligente despre cum să faci eșantionarea eficient. Și asta este în direcția y. Acum, putem face același lucru în direcția x. Putem face același lucru în direcția y. Și ideea ar fi că rulăm convoluția în direcția x. Și apoi producem o nouă imagine. Și apoi rulăm convoluția în direcția y și producem rezultatul final. Și aceasta este o modalitate de a proceda. Ceea ce arată această diagramă este că puteți face mai bine combinând aceste două operațiuni. Deci mai aveți nevoie de puțină memorie intermediară. Dar nu aveți nevoie de suficientă memorie pentru o imagine întreagă. Ai nevoie doar de o memorie suficient de mare pentru convoluția în cealaltă direcție. Deci aici trecem prin convoluția y folosind metodele pe care tocmai le-am descris. Și păstrăm câteva rânduri. Și apoi rulăm convoluția x pe fiecare dintre aceste rânduri. Și așadar, așa ceva aduce o altă problemă, care este că pare foarte eficient să faci convoluții 1D. Dar convoluțiile 2D sunt scumpe. Și deci există o problemă deschisă, și anume puteți folosi această idee inteligentă de sparsificare a convoluției în 2D. Și nu știu... ar putea fi un subiect de teză acolo. Dar ceea ce puteți face, între timp, este să spunem, în unele cazuri, poate că putem aproxima o convoluție 2D printr-o cascadă de convoluție 1D în x și o convoluție 1D în y. Și ne uităm și la asta. Și se analizează de ce acest lucru este important. Vorbește despre operatorul Canny edge și alți operatori edge și multiscale și bla, bla, bla. Acesta este mult mai scurt decât celelalte brevete. Dar folosește aproape doar ceea ce descriu eu. Doar pentru distracție, să ne uităm la afirmații. O metodă pentru procesarea digitală a unui semnal unidimensional, metoda convolând semnalul unidimensional cu funcția care este diferența n plus prima a unui nucleu polinom discret pe bucăți de ordinul al n-lea, astfel încât să furnizeze un al doilea semnal digital unidimensional, n fiind cel puțin două și așa mai departe. Și apoi efectuați integrarea discretă n plus de 1 ori pentru a produce rezultatul final. BINE. Așadar, trebuie să le completăm niște lucruri despre care nu am vorbit. Poate vă întrebați de ce am adus asta. Deci, acesta este un cristal de calcit -- vă rog să nu scăpați -- care este aproape de calitate optică. Și am luat asta într-unul din acele magazine de cristale. Știi cum funcționează cristalele în mintea ta. Cumperi asta și devii celebru sau bogat sau așa ceva. Dar acest lucru este folosit în optică. Și motivul este că este birefringent. Dacă te uiți prin ea la o suprafață, vei vedea două copii ale imaginii. Și de ce sunt cele două copii? După cum știți, materialele au indice de refracție, ceea ce face ca razele de lumină să fie deviate de legea lui Snell. Ei bine, acest material este neobișnuit prin faptul că are doi indici de refracție în funcție de polarizare. Deci, din moment ce lumina din cameră este oarecum polarizată aleatoriu, există ambele tipuri în jur. Ambele sunt deviate, dar cu grade diferite. Așa că primești două copii ale tuturor în timp ce miști cristalul. Deci de ce este relevant? Ei bine, acesta este un truc care este folosit în camere. Deci, în camere, avem o problemă cu aliasing, deoarece eșantionăm și nu putem garanta că imaginea a fost filtrată trece-jos. Așadar, unul dintre trucurile folosite este acela de a avea un strat foarte, foarte subțire din acest material, ceea ce face ca două copii ale imaginii să apară foarte apropiate unul de celălalt, la câțiva microni unul de celălalt. Și acesta nu este un filtru trece-jos perfect. Dar suprimă conținutul de înaltă frecvență. Și împreună cu alte articole, în general, face eșantionarea mai bună. Acum, dacă ești dispus să plătești și să ai o șansă, poți să-ți trimiți camera foto SLR digitală elegantă într-un loc care va elimina acest filtru pentru că... Doamne, îmi elimină conținutul de înaltă frecvență. Vreau rezoluție mai mare. Și, da, faci asta. Și camera ta are, aparent, o rezoluție mai mare. Dar atunci cerul ferește să te uiți la ceva de genul puloverului tău de tricou sau la ceva cu un model fin pe el. Și dintr-o dată, vei vedea toate aceste interferențe, modele moire. Deci, da, reduce conținutul de înaltă frecvență. Dar există un motiv bun pentru a reduce conținutul de înaltă frecvență . Și, de exemplu, când ești adus în fața unei camere de televiziune, pe vremuri, ei îți spuneau să nu porți cravată cu dungi sau să porți o rochie care are dungi înguste, apropiate, pentru că mergi. pentru a ajunge nu doar la un alias de tipul pe care îl vedem de obicei , ci va da în cap și o culoare. Așa că vei obține dungi colorate amuzante și așa mai departe. Și de atunci, au îmbunătățit filtrarea trece-jos înainte de eșantionare, astfel încât aceasta să nu mai fie o problemă atât de mare. Dar puteți găsi o mulțime de videoclipuri cu prelegeri la MIT, unde cineva nu a acordat atenție acestui lucru. Și în loc să urmărești ce se întâmplă, vezi că tricoul persoanei își schimbă culorile și formele. OK, deci oricum, vom vorbi despre asta data viitoare, despre ce trebuie făcut în cameră pentru a suprima aceste efecte de aliasing. Și acesta este materialul pe care îl folosim acolo.