Kako postaviti pametne telefone i računala. Informativni portal
  • Dom
  • Recenzije
  • Mapiranje podatkovnih objekata. Podudaranje slika na temelju "osobina"

Mapiranje podatkovnih objekata. Podudaranje slika na temelju "osobina"

Ovdje je moje komentirano rješenje u ES3 (detalji nakon koda):

Object.equals = funkcija (x, y) (ako (x === y) vraća true; // ako su i x i y null ili nedefinirani i potpuno isti ako (! (X instanca objekta) ||! (Y instanceof Object)) return false; // ako nisu striktno jednaki, oba moraju biti objekti ako (x.constructor! == y.constructor) vrati false; // moraju imati potpuno isti lanac prototipa, najbliži možemo učiniti je // testirati tamo konstruktor. for (var p in x) (ako (! x.hasOwnProperty (p)) nastavi; // druga svojstva su testirana pomoću x.constructor === y.constructor if (! y .hasOwnProperty (p)) vraća false; // omogućuje usporedbu x [p] i y [p] kada je postavljeno na nedefinirano ako (x [p] === y [p]) nastavi; // ako imaju isto strogu vrijednost ili identitet onda su jednaki if (typeof (x [p])! == "object") vraća false; // Brojevi, nizovi, funkcije, Booleovi moraju biti striktno jednaki ako (! Object.equals (x [p ], y [p])) vrati false; // Objekti i nizovi moraju se rekurzivno testirati) za (p u y) (ako (y.hasOwn Svojstvo (p) &&! x.hasOwnProperty (p)) vrati false; // dopušta da se x [p] postavi na nedefinirano) return true; )

Dok sam razvijao ovo rješenje, posebno sam pažljivo pogledao kutne kutije, učinkovitost, ali pokušavajući dati jednostavno rješenje koje funkcionira s, nadamo se, malo elegancije. JavaScript to pretpostavlja nula i nedefiniran svojstva i objekti su prototipovi,što može dovesti do vrlo različitog ponašanja ako se ne testira.

Prvo sam se odlučio proširiti Objekt umjesto Objekt.prototip uglavnom zato što null ne može biti jedan od objekata za usporedbu i ono što vjerujem da jest null mora biti valjan objekt za usporedbu s drugim. Postoje i druge opravdane zabrinutosti koje su drugi primijetili u vezi s produženjem Objekt.prototip u vezi s mogućim nuspojavama za drugi kod.

Posebnu pažnju treba posvetiti omogućavanju JavaScripta tako da se svojstva objekta mogu postaviti kao nedefiniran, tj. Postoje svojstva čije su vrijednosti postavljene kao nedefiniran... Gornje rješenje potvrđuje da oba objekta imaju ista svojstva koja nije definirano prijaviti ravnopravnost. To se može postići samo provjerom postojanja svojstava korištenjem Object.hasOwnProperty (ime_svojstva)... Također imajte na umu da JSON.stringify () uklanja svojstva koja su postavljena kao nedefiniran pa će usporedbe koje koriste ovaj obrazac zanemariti svojstva postavljena na vrijednost nedefiniran.

Funkcije se trebaju smatrati jednakima samo ako koriste istu referencu, a ne samo isti kod, jer to neće uzeti u obzir prototip tih funkcija. Stoga, uspoređivanje retka koda ne funkcionira kako bi se osiguralo da imaju isti prototip objekta.

Oba objekta moraju imati isti lanac prototipa nego ista svojstva. To se može provjeriti samo usporedbom u više preglednika konstruktor oba predmeta za strogu jednakost. ECMAScript 5 će vam omogućiti da testirate njihov stvarni prototip Object.getPrototypeOf ()... Neki web preglednici također nude svojstvo __proto__, koji čini isto. Moguće poboljšanje gornjeg koda omogućilo bi korištenje jedne od ovih metoda kad god je to moguće.

Korištenje strogih usporedbi ovdje je najvažnije jer 2 ne treba smatrati jednakim "2.0000" , a lažno treba smatrati jednakim nula, neizvjesno ili 0 .

Razmatranja učinkovitosti dovela su me do usporedbe što je prije moguće radi jednakosti svojstava. Zatim, samo ako nije uspjelo, pronađite tip ova svojstva. Poboljšanje brzine može biti značajno za velike objekte s mnogim skalarnim svojstvima.

Nisu potrebne više od dvije petlje, prva je za provjeru svojstava s lijevog objekta, druga za provjeru svojstava s desne strane i samo provjera postojanja (ne vrijednosti) kako bi se uhvatila ona svojstva koja su definirana s neizvjesno vrijednost.

Sveukupno, ovaj kod obrađuje većinu kutnih slučajeva u samo 16 redaka koda (bez komentara).

Ažuriranje (13.8.2015.)... Implementirao sam učinkovitiju verziju jer je funkcija value_equals () brža, obrađuje ispravne kutne slučajeve kao što su NaN i 0 osim -0, po želji primjenjujući poredak svojstava objekta i testiranje na kružne reference koje podržava više od 100 automatiziranih testova kao dio testnog paketa projekata

Za ispravan prikaz ove stranice potreban vam je preglednik s podrškom za JavaScript.

Uparivanje objekata i obrada popravka

Obrada podudaranja i popravljanja objekata primjenjuje se ako se mapiranje u Upravljanju distribucijom promijenilo za prethodno podudarne objekte. Zatim će se u obrascu za obradu podataka za preuzimanje podataka od distributera pojaviti poveznica za ispravak dokumenata koji sadrže promijenjene podatke ( Riža. 7.16 ) .

Obrada se može započeti na dva načina:

    iz podsustava "Podaci o distributeru" za promjenu mapiranja izravno kroz obradu;

Za odabir podataka o distributeru, unesite naziv distributera u polje "Distributor" i pritisnite gumb "" za prikaz podataka preuzetih iz RS distributera.

Uzmimo primjer mapiranja stavke.

Riža. 7.13. Uparivanje objekata i obrada popravka

Tablični dio prikazuje referentni element u bazi distributera i korespondenciju uspostavljenu s njim u bazi proizvođača.

Usklađenost je naznačena iz reference " Nomenklatura". To se može učiniti ručno ili pomoću " Pronađite slične". Pretraživanje se može provesti prema broju artikla (ako je omogućena postavka "Prikaži broj artikla") ili prema nazivu.

Izmijenjeno, ali nespremljeno mapiranje je istaknuto podebljano.

Potvrdni okvir " Prikaži SKU"kontrolira prikaz SKU-a distributera i odgovarajućeg artikla.

Način prikaza popisa elemenata u tabličnom odjeljku konfiguriran je u izborniku tabličnog odjeljka "Više" ( Riža. 7.14). Ako obrada započne nakon unošenja izmjena putem " Preuzimanje podataka od distributera"ili referenca" Nomenklatura distributera", tada će popis proizvoda biti filtriran odabranim potvrdnim okvirom" Samo modificirano".

Za ispravak dokumenata potrebno je:

Ispis (Ctrl + P)

Mehanizam usporedbe podataka pri razmjeni podataka kroz univerzalni format

Mehanizam uparivanja podataka dizajniran je da riješi problem sinkronizacije podataka između izvorne baze podataka i baze podataka primatelja tijekom razmjene

Interni identifikatori objekata

U idealnom slučaju, podaci sinkroniziranih aplikacija mogli bi se uskladiti s jedinstvenim internim identifikatorima objekata (GUID-ovima). Ali za to je potrebno da se dodavanje podataka koji se sinkroniziraju obavlja samo u jednoj aplikaciji, dok se u drugoj ti podaci pojavljuju isključivo kao rezultat sinkronizacije. U ovom slučaju, GUID-ovi u dvije aplikacije za identične objekte bit će isti i bit će moguće nedvosmisleno uskladiti objekte po njima.

U praksi nije uvijek moguće ispuniti ovaj zahtjev, posebno u slučaju postavljanja sinkronizacije između aplikacija koje su radile samostalno. To je zato što će dva identična objekta stvorena paralelno u svakoj aplikaciji imati dva različita GUID-a.

U nekim slučajevima GUID ne može upariti podatke zbog njegove odsutnosti (posebni slučajevi koji nisu obuhvaćeni u ovom članku).

Identifikatori javnih objekata

Za uspješno podudaranje objekata s različitim GUID-ovima, mora postojati mjesto za pohranjivanje njihovih podudarnih informacija. Ovo mjesto je registar informacija Javni identifikatori sinkroniziranih objekata(Unaprijediti JELA).

Riža. 1 Registar informacija Javni identifikatori sinkroniziranih objekata

Struktura registra prikazana je u tablici:

Za usporedbu podataka dvaju programa, obrada "Usporedba objekata infobaze" namijenjena je u BSP 2.3 za izravnu upotrebu u sinkronizaciji podataka


Slika 2. Glavni oblik obrade "Usporedba objekata infobaze"

Popis se otvara naredbom Izvršite podudaranje Na stranici Usporedba podataka Online pomoćnik za sinkronizaciju podataka. Alternativno, možete dvaput kliknuti redak koji ima problema s podudaranjem podataka.

Popis se sastoji od dva stupca, od kojih svaki odgovara infobazi koja sudjeluje u razmjeni. Podaci se grupiraju po programskim objektima (dokumenti, liste). Informacijski redak prikazuje se na dnu popisa: koliko elemenata se podudara, koliko se ne podudara.

U polju Zaključiti možete odabrati koje podatke želite prikazati na popisu. Prema zadanim postavkama, izlaz je Neusporedivi podaci.

Podudaranje objekata

  • Kliknite na Automatski se podudaraju(preporučeno), odaberite polja koja se podudaraju pomoću potvrdnih okvira. Neka polja program odabire prema zadanim postavkama. Za potvrdu odabira pritisnite Izvršite podudaranje... Nakon pretraživanja, program prikazuje podatke koje je upario za pregled. Pritisnite za potvrdu Prijavite se.
  • Nakon automatskog mapiranja, možete ručno mapirati preostale objekte ili promijeniti mapiranje objekata. Odaberite željene objekte dvije baze, pritisnite Otkaži utakmicu, da biste pokušali ručno uskladiti objekte, pritisnite Uspostavite usklađenost kako bi se slagali objekti.
  • Pritisnite za potvrdu Zapaliti i zatvoriti.

Konfiguriranje polja tablice mapiranja

  • Kliknite na Zvučnici za dodavanje polja u stupce popisa. Pomoću potvrdnih okvira možete označiti dodatna polja, za potvrdu kliknite Prijavite se.

Dohvaćanje podataka iz drugog programa

Redoslijed podudaranja objekata

  • Preporuča se izvršiti mapiranje i učitavanje podataka uzimajući u obzir referentne veze. Pogotovo ako se polje koristi za usklađivanje objekata.
  • Na primjer, konfiguracija sadrži imenik ugovora izvođača, koji je podređen imeniku izvođača. Namirenje ugovora suradnika vrši se prema vlasničkoj knjizi, tj. prema referentnoj knjizi ugovornih strana. Stoga, da biste ispravno uskladili podatke, prvo morate uskladiti i učitati referentnu knjigu ugovornih strana, a zatim i referentnu knjigu ugovora drugih strana.
  • Inače, polja tablice mapiranja mogu sadržavati lažne veze u obliku:
    <Объект не найден>(26:).
  • Lažna veza upućuje na objekt u trenutnoj bazi podataka koji još nije učitan iz poruke razmjene.

Unosi u JELA kreiraju se i na strani pošiljatelja kada se putem mehanizma potvrde potvrđuje primitak podataka od strane korespondenta. U polju Identifikator takvi se zapisi postavljaju na izvorni identifikator objekta. Registracija takvih zapisa neophodna je kako bi se prilikom primanja drugih podataka od korespondenta moglo razumjeti da ovaj objekt treba isključiti iz postupka pretraživanja po poljima i jedinstvenom identifikatorom.

Mogućnosti identifikacije objekta po primitku

Redoslijed automatskog usklađivanja objekata po primitku sadržan je u pravilima za pretvaranje objekata (POC) namijenjenih za primanje podataka. PKO pravila su u općem modulu


Slika 3 Odjeljci zajedničkog modula Exchange Manager putem univerzalnog formata

Bilješka,što je u zajedničkom modulu Exchange Manager putem univerzalnog formata smještene su sve komponente (pravila za obradu podataka, pravila za pretvaranje objekata i sl.) koje određuju primijenjenu logiku obrade podataka u procesu njihovog primanja ili slanja. Programski kod ovog modula generira se automatski pomoću aplikacije "Pretvorba podataka, izdanje 3.0" na temelju konfiguriranih pravila razmjene. Kod modula se može izraditi ručno, ali zahtijeva veliku vještinu od programera.

Pomoću svojstva postavlja se opcija za automatsko podudaranje (identifikacija) objekata pri preuzimanju Identifikacija opcije PKO


Slika 4. Postavke provjere autentičnosti u modulu upravitelja

Postoje 3 opcije (3 vrijednosti) identifikacije objekta

  1. ByUniqueIdentifier - identifikacija po GUID-u,
  2. FirstByUniqueIdentifierThenBySearchFields identifikacija po GUID-u i poljima za pretraživanje,
  3. Po poljima za pretraživanje - identifikacija po poljima za pretraživanje,

Drugo svojstvo koje određuje logiku podudaranja je niz polja za pretraživanje, koji je definiran u svojstvu Polja pretraživanja PKO.

Algoritam pretraživanja polja

Postoji uzastopna primjena opcija pretraživanja navedenih u svojstvu Polja pretraživanja PKO se koristi prilikom utovara objekta.

Ograničenje.
Prilikom uparivanja u fazi analize podataka, primjenjuje se samo 1. opcija pretraživanja - ByUniqueIdentifier

Prijelaz na sljedeću opciju provodi se u dva slučaja:

  1. Učitani objekt nema popunjeno nijedno od polja navedenih u opciji pretraživanja.
  2. Opcija pretraživanja nije dala nikakve rezultate.

Ako učitani objekt sadrži informacije o izvornom GUID-u i opciju identifikacije za objekt "Prema GUID-u" ili "Prema GUID-u i poljima za pretraživanje", tada se pretraga izvodi među svim objektima navedene vrste, osim onih za koje se podudaraju već postavljeno u FIR.

U ostalim slučajevima, pretraga se provodi među svim objektima infobaze odgovarajućeg tipa.

Osobitosti.
Prilikom uparivanja u fazi analize podataka, učitani objekti se ne provjeravaju za popunjavanje polja uključenih u pretragu.

U fazi analize podataka, podudaranje će se utvrditi samo ako je pronađen jedan objekt primatelja za jedan objekt pošiljatelja.

U fazi učitavanja podataka uspostavit će se korespondencija i u slučaju kada je za jedan objekt pošiljatelja pronađeno više objekata primatelja. U takvoj situaciji bit će uspostavljena utakmica s jednim od njih.

U fazi učitavanja podataka, opcija pretraživanja Broj + datum za dokumente radi na sljedeći način: broj dokumenta koji se traži provjerava se na točnu podudarnost, datum određuje interval u kojem se vrši pretraga po broju. Sam interval definiran je kao razdoblje jedinstvenosti brojeva dokumenata, koje uključuje navedeni datum. Na primjer, ako su brojevi dokumenata jedinstveni unutar mjesec dana i datum je postavljen na 10. prosinca 2001., tada će se pretraga izvršiti u intervalu od 01. prosinca do 31. prosinca 2001. godine.
Tijekom faze analize podataka, ova opcija pretraživanja radit će kao i obično: oba polja će biti provjerena za točna podudaranja.

Materijal iz Tech Sighta

Prilikom rješavanja problema usporedbe slika važnu ulogu igra hijerarhijska analiza "primarnih" obilježja slika - takozvanih "karakterističnih obilježja". Takve se "značajke" mogu koristiti za usporedbu trenutnih i referentnih slika u raznim tehnikama, kao što su hijerarhijska korelacija, tehnike glasanja ili sheme volumetrijske usporedbe. U ovom slučaju, posebne točke, linije, područja i strukture (skupine značajki) koriste se kao značajke slike. Razmotrite ukratko pristupe koji se temelje na korištenju značajki točke i konture.

Usklađivanje na temelju bodovnih značajki.

Glavne prednosti korištenja točaka značajki za zadatke otkrivanja su jednostavnost i brzina ekstrakcije (u usporedbi s drugim korištenim značajkama). Osim toga, nije uvijek moguće razlikovati druge karakteristične značajke na slikama (dobre i jasne konture ili područja), dok se lokalna obilježja u velikoj većini slučajeva mogu razlikovati.

Zadatak detekcije objekta na slici svodi se na pronalaženje karakterističnih točaka i fiksiranje njihovog relativnog položaja. Ti se postupci izvode prvo na referentnoj slici, zatim na istraženoj, često u određenom ograničenom području pretraživanja. Opća shema algoritma za pronalaženje odgovarajućih točaka sastoji se od nekoliko faza:

Isticanje točkastih značajki na slikama;

Formiranje vektora točkastih značajki;

Usporedba točaka u prostoru značajki;

Odabir i opis karakterističnih točaka na slici početna je i ključna faza u identifikacijskom algoritmu o kojoj ovisi rezultat cijelog algoritma. O ovom koraku raspravljalo se ranije u odjeljku 4.1.

Međutim, koliko god invarijante bile složene, one još uvijek nisu u stanju jedinstveno okarakterizirati objekt u slučajevima od 100 $ (\%). Dvosmislenosti, odnosno slučajevi kada različite objekte (točke, područja) na slici karakteriziraju vrlo slični parametri, mogu se povezati s nesavršenošću odabranih invarijanti, s niskom razlučivosti ili šumom na slici. Dvosmislenosti nastaju i kada se na slici nalaze duplicirani objekti. Jedan od načina rješavanja dvosmislenih situacija povezan je s razvojem boljih invarijanti ili drugih deskriptora; ovaj smjer je vrlo relevantan među istraživačima koji se bave strojnim vidom. Paralelni pristup je korištenje prostornih odnosa između objekata.

Algoritmi temeljeni na prostornim odnosima, koji pripadaju višoj razini obrade od rasterskih algoritama, karakteriziraju se većom otpornošću na različita geometrijska i radiometrijska izobličenja. Jedan od pokazatelja "ispravnosti" pronađenog para može biti gomilanje velikog broja drugih ispravno usklađenih točaka oko točaka koje tvore takve parove. Još jedan kriterij na temelju kojeg je moguće filtrirati pogrešno povezane

Podjela posebnih bodova

točke, mogu biti položaj točaka u odnosu na ravne linije. Ovaj odjeljak govori o metričkim i topološkim filtrima koji filtriraju netočna podudaranja na temelju relativnog položaja objekata na slici.

Podudaranje metrike.

Za provjeru ispravnosti uparivanja kandidata koriste se dodatne informacije o međusobnom prostornom rasporedu točaka na slikovnoj ravnini. Drugim riječima, prostorni raspored točaka na desnoj i lijevoj slici trebao bi biti sličan u određenom smislu. Prostorni položaj se može opisati kao matrica udaljenosti. Razmotrimo skup točaka $ A_ (1), A_ (2), \ ldots, A_ (i), \ ldots, A_ (N) $ u ravnini slike (slika 8).

Udaljenosti između točaka mogu se zapisati kao matrica udaljenosti $ \ vert \ vert r_ (ij) \ vert \ vert $ na sljedeći način:

\ [(\ početak (niz)% & (A_1) & (A_2) & (...) & (A_i) & (...) & (A_N) \\ \ hline (A_1) & 0 & (r_ ( 12)) & (...) & (r_ (1i)) & (...) & (r_ (1N)) \\ (A_2) & & 0 & (...) & (r_ (2i)) & (...) & (r_ (2N)) \\ (...) & & & (...) & (...) & (...) & (...) \\ (A_i ) & & & & 0 & (...) & (r_ (iN)) \\ (...) & & & & & (...) & (...) \\ (A_N) & & & & & & 0 \\ \ kraj (niz)) \]

gdje je $ r_ (ik) = \ sqrt ((x_i -x_k) ^ 2- (y_i -y_k) ^ 2) $ je euklidska udaljenost između $ A_ (i) $ i $ A_ (k) $, $ x_ (i ) $, $ y_ (i) $ - koordinate točke $ A_ (i) $ na slici, $ x_ (k) $, $ y_ (k) $ - koordinate točke $ A_ (k) $ na slika.

Za provjeru ispravnosti formiranja konjugiranih parova točaka, matrice udaljenosti lijevog $ \ vert \ vert r_ (ij) ^ (L) \ vert \ vert $ i desnog $ \ vert \ vert r_ (ij) ^ ( R) \ vert \ vert $ slike se uspoređuju ... Za kvantificiranje pogrešnog povezivanja uvodi se varijabla $ \ delta _ (ij) $,

$$ \ delta _ (ij) = r_ (ij) ^ (R) - r_ (ij) ^ (L). $$

Analiza histograma distribucije $ \ delta _ (ij) $ omogućuje procjenu vrijednosti praga za odbacivanje pogrešnih parova $ \ Delta $ prema dolje opisanom kriteriju. Imajte na umu da točka s brojem $ i $ ima $ N-1 $ veze, a odgovarajuće udaljenosti u matrici $ \ vert \ vert r_ (ij) \ vert \ vert $ su: $ r_ (1i) $, $ r_ (2i) , (\ ldots), r_ (ii) $, $ r_ (i, i + 1), (\ ldots), r_ (i, N) $. Prema tome, vektor udaljenosti povezan s brojem para $ i $ je $$ \ delta_ (i) = \ (\ delta _ (1i), \ delta _ (2i), (\ ldots), \ delta _ (ii), \ delta _ (i, i + 1), (\ ldots), \ delta _ (i, N) \) $$ gdje je $$ \ vert \ vert \ delta _ (i) \ vert \ vert = \ min \ ( \ delta _ (1i), \ delta _ (2i), (\ ldots), \ delta _ (ii), \ delta _ (i, i + 1), (\ ldots), \ delta _ (i, N) \ ) $$ je norma vektora $ \ delta_ (i) $.


Filtrirani parovi točaka

Par konjugiranih točaka je prihvaćen ako je $ \ vert \ vert \ delta _ (i) \ vert \ vert< \Delta $ и отклоняется в противоположном случае. Процедура проверки выполняется для каждого $i$ от $1$ до $N$. Существенно, что предложенный критерий отбора на основе анализа матрицы (5) инвариантен к вращению изображений.

Kako bi algoritam bio učinkovitiji, koristi se piramida slika. Početna pretpostavka za točke interesa je na najvišoj razini piramide, a zatim se rafinira na sljedećim razinama korištenjem korelacije. Primjer rada algoritma pri usporedbi dva testna video okvira prikazan je na Sl. 9.

Topološko podudaranje.

Razmotrimo trojku objekata $ \ langle R_1 ^ 1, R_1 ^ 2, R_1 ^ 3 \ rangle $ na slici $ V_1 $ i odgovarajuću trojku objekata $ \ langle R_2 ^ 1, R_2 ^ 2, R_2 ^ 3 \ rangle $ na slici $ V_2 $. Pod objektom se podrazumijeva područje slike, na primjer, "zanimljiva točka" (recimo, kut ili lokalni ekstremum svjetline) i njegova blizina ili područje složenijeg oblika.

Neka je $ c_v ^ i = \ langle x_v ^ i, y_v ^ i \ rangle $ središte objekta (područja) $ R_v ^ i $. Funkcija

$$ \ započeti (okupiti) \ oznaka (1) \ textrm (strana) (R_v ^ 1, R_v ^ 2, R_v ^ 3) = \ textrm (znak) \ lijevo (\ det \ lijevo [((\ begin (niz) ) (* (20) c) (x_v ^ 3 -x_v ^ 2) & (x_v ^ 1 -x_v ^ 2) \\ (y_v ^ 3 -y_v ^ 2) & (y_v ^ 3 -y_v ^ 2) \\ \ end (niz))) \ desno] \ desno) \ kraj (skupljanje) $$

uzima vrijednost $ - \ mbox () 1 $ ako $ c_v ^ 1 $ leži na desnoj strani vektora usmjerenog od $ c_v ^ 2 $ do $ c_v ^ 2 $, ili 1 ako ova točka leži na lijevoj strani vektora mu. Dakle, jednadžba

$$ \ započeti (sakupiti) \ oznaka (2) \ textrm (strana) (R_1 ^ 1, R_1 ^ 2, R_1 ^ 3) = \ textrm (strana) (R_2 ^ 1, R_2 ^ 2, R_2 ^ 3) \ završiti (sakupiti) $$ znači da točka $ c ^ 1 $ leži na istoj strani vektora na obje slike. Ako za neku točku jednakost (9) nije zadovoljena, reći ćemo da točka narušava bočni odnos. To se događa kad barem

Bočni odnos - - točka $ c ^ 1 $ mora ležati na istoj strani (ovdje - lijevo) usmjerenog segmenta od $ c ^ 2 $ do $ c ^ 3 $ na obje slike

barem jedan od tri objekta nije ispravno vezan za svoj pandan na drugoj slici, ili ako objekti nisu komplanarni i postoji pomak kamere u smjeru okomitom na trodimenzionalnu ravninu koja sadrži njihova središta. U potonjem slučaju, točka se može pomaknuti na drugu stranu vektora (to jest, njena paralaksa će se promijeniti), ali to se događa samo s malim brojem trojki. Točke $ R_v ^ 1 $, $ R_v ^ 2 $ i $ R_v ^ 3 $ zadovoljavaju jednakost (9) ili je krše, bez obzira na redoslijed kojim se pojavljuju u trojci; potrebno je samo da su na obje slike numerirane istim cikličkim redoslijedom (u smjeru kazaljke na satu ili suprotno od kazaljke na satu). Na sl. 10 prikazane su trojke odgovarajućih točaka koje zadovoljavaju relaciju (9).

Kada se naruši jednakost (9), može se zaključiti da jedan od objekata u trojci nije ispravno vezan, ali u ovoj fazi nije jasno koji. Jedna trojka nije dovoljna za takav zaključak, međutim, nakon razmatranja svih mogućih trojki, može se pronaći objekte za koje je vjerojatnije da će biti pogrešno pričvršćeni od ostalih. Glavna ideja predložene metode je da je veća vjerojatnost da će pogrešno upareni objekti narušiti bočni odnos.

Jednakost (9) provjerava se za sve trojke domena $ \ langle R ^ i, R ^ j, R ^ k \ rangle, R ^ i, R ^ j, R ^ k \ in \ Phi _ (12) $, gdje je $ \ Phi _ (12) $ - skup područja prisutnih i na slici $ V_1 $ i na slici $ V_2 $. Neka je $ \ Phi = \ lijevo \ ((i \ vert R ^ i \ in \ Phi _ (12)) \ desno \) $. Na početku algoritma izračunava se kazna $$ \ begin (sakupiti) \ tag (3) h (i) = \ zbroj \ limits_ (j, k \ in \ Phi \ obrnuta kosa crta i, j> k) (\ lijevo | (\ textrm (strana) (R_1 ^ i, R_1 ^ j, R_1 ^ k) - \ textrm (strana) (R_2 ^ i, R_2 ^ j, R_2 ^ k)) \ desno |), \ end (sakupi) $$ odnosno koliko puta objekt $ R ^ i $ prekrši bočnu relaciju (9), za sve $ i \ in \ Phi $. Tada se novčana kazna normalizira na najveći broj svih mogućih prekršaja:

$$ \ započeti (sakupiti) \ tag (4) h_N (i) = \ frac (h (i)) ((n-1) (n-2)), \ quad n = \ lijevo | \ Phi \ desno |. \ završiti (sakupiti) $$

Na temelju (11), dobivamo da je $ h_N (i) \ u $. Korisnik odabire prag $ t _ (\ textrm (topo)) \ u $. Nakon analize kazne za sve objekte, utvrđuje se objekt $ R ^ w $, gdje je $ w = \ arg \ max _i h_N (i) $, koji je češće od ostalih kršio relaciju (9). Ako $ h_N (w)> t _ (\ textrm (topo)) $, tada se objekt $ R ^ w $ (odnosno, par objekata $ R_1 ^ w, R_2 ^ w) $ smatra pogrešno povezanim i uklonjen iz skupa $ \ Phi. $ Pri svakoj iteraciji kazna $ h_N (i) $ se ponovno izračunava na temelju preostalih objekata u $ \ Phi $, a parovi koji najčešće krše relaciju (9) se uklanjaju. Proces se nastavlja sve dok ne postoje objekti za brisanje, odnosno dok maksimalna kazna za preostale objekte ne bude manja od $t _ (\ textrm (topo)) $ praga.

Tijekom prvih iteracija, sve dok postoji mnogo kandidata za brisanje u skupu $ \ Phi $, čak i ispravno usidreni objekti mogu imati visoku vrijednost kazne. Međutim, za pogrešno povezane objekte kazna će biti još veća. Nakon uklanjanja najgoreg para objekata, $ h_N (i) $ za preostale objekte će se smanjiti. Kada ostanu samo ispravno usidreni parovi objekata, male promjene paralakse i dalje će rezultirati vrijednostima kazne koje nisu nula.

Vrijednost praga $ t _ (\ textrm (topo)) $ utječe na broj objekata preostalih nakon topološkog filtriranja. Vrijednost praga od nule rezultira malim brojem preostalih objekata, ali svi oni u potpunosti zadovoljavaju topološki odnos strana-na-strana. Ovaj izbor praga razuman je na relativno ravnim, plitkim slikama. U većini slučajeva treba imati na umu da mala vrijednost praga dovodi do neželjenog učinka pogrešnog brisanja određenog broja točaka/područja kao pogrešno usidrenih. Na temelju brojnih eksperimenata sa zemaljskim i zračnim fotografijama, najpoželjnije je odabrati prag $ t _ (\ textrm (topo)) $ iz raspona [$ 0 (,) 03 $, $ 0 (,) 15 $].

Ilustrirajmo rad algoritma na primjeru. Neka neki algoritam pronađe i poveže jedni s drugima 50 $ parova točaka (slika 11). Na oko možete utvrditi da određeni broj točaka nije ispravno vezan jedna za drugu, odnosno točke označene istim brojem nalaze se na različitim mjestima lijeve i desne slike.

Sada prođimo koordinate parova točaka kroz topološki filtar s $ t _ (\ textrm (topo)) = 0 (,) 15 $ - bit će par točaka od $ 21 $ (slika 12). Ako primijenimo strožiju

Pronađeni i međusobno povezani 50 $ parova bodova. Oko 2/3 podudaranja su lažne

Nakon primjene topološkog filtra s $ t _ (\ textrm (topo)) = 0 (,) 15 $ $ 29 $ parovi točaka uklonjeni su kao lažna podudaranja, ostalo je 21 $ par

Nakon primjene topološkog filtra s $ t _ (\ textrm (topo)) = 0 (,) 05 $ $ 34 $ parovi točaka se uklanjaju kao lažna podudaranja, ostaje $ 16 $ parova

filtrirajući s $ t _ (\ textrm (topo)) = 0 (,) 05 $, tada će biti $ 16 $ parova točaka (slika 13), a sva podudaranja su istinita. Nijedna podudarna podudaranja nisu uklonjena, a ova metoda je uspješno filtrirala parove od 34 $, što znači da je 68 $ \% $ originalnih podudaranja bilo lažno.

Kao što vidite, metoda topološkog filtriranja nije toliko osjetljiva na točnu prostornu lokalizaciju točaka. Glavni naglasak u metodi stavljen je upravo na relativni položaj točaka na slici.

Računska složenost metode ovisi o broju pogrešno usidrenih parova i, u većoj mjeri, o početnom broju parova usidrenih objekata. Najveći dio proračuna otpada na izračun determinante u formuli (8) za provjeru svih mogućih trojki objekata. U izvornom skupu $ \ lijevo | \ Phi \ desno | = n $ parova kandidata treba provjeriti $ C_n ^ 3 = \ frac (n (n-1) (n-2)) (6) $ utrostručuje, tako da je ukupna složenost algoritma $ O ( n ^ 3) $, što je dosta, a to je jedan od nedostataka metode. Kako se objekti odbacuju, broj svih mogućih trojki se smanjuje, a da bi se ubrzao rad, ne može se preračunavati kazne u formuli (10), već se izračunavaju samo oni pojmovi koji su uključivali udaljeni objekt, a zatim se ti pojmovi oduzimaju od izraz za $ h (i) $ ...

Treba napomenuti da se ova metoda ne nosi dobro sa situacijama u kojima slika ima izražen prednji plan i pozadinu. Na primjer, ako je većina regija u prvom planu, tada će pozadinske regije često narušiti omjer stranica (9) zbog nekoplanarnosti s regijama prednjeg plana. U tom će slučaju neka od ispravnih područja biti odbijena.

Usklađivanje na temelju značajki konture.

Glavni nedostatak točkastih značajki je nestabilnost radiometrijskih promjena na slici. Istodobno, na stvarnim slikama, ova se vrsta izobličenja javlja prilično često: odsjaj, sjene i drugi efekti povezani s promjenama uvjeta osvjetljenja, vremena ili sezone snimanja. Još jedan nedostatak točkastih značajki je njihova nestabilnost na izobličenje kuta. Ova vrsta izobličenja također se nalazi u mnogim problemima od praktičnog interesa. Stoga je potrebno privući informacije o obliku samog objekta kao najotpornijeg na promjene ove vrste, kako bi se riješili problemi koordinatno-planske reference. Oblik predmeta je njegova daleko najstabilnija karakteristika. Jedna od poteškoća postavljenog problema je ta što su u praksi prilično česti slučajevi sezonskih promjena oblika prirodnih (šume, vodena tijela) i umjetnih objekata (cesta) koje nisu povezane s radiometrijskim izobličenjima. Nedostatak apriornih informacija o modelima sezonskih promjena oblika objekata značajno otežava rješavanje ovog problema.

S intuitivnog stajališta, oblik objekta uvelike je određen njegovim granicama. Na ravnoj slici granice su obrisi. Psihološka istraživanja pokazuju da se ljudski mozak uvelike oslanja na informacije o konturama za prepoznavanje slike. Konture su otpornije na promjene u osvjetljenju, izobličenje kuta, nepromjenjive su na rotaciju i promjene u mjerilu. Prednosti konturnog prikaza mogu se pripisati i značajnom smanjenju količine informacija koje se obrađuju pri usporedbi dviju ili više slika, zbog činjenice da točke konture čine mali dio svih točaka na slici.

U ovom odjeljku, obrisi se shvaćaju kao oštre promjene svjetline na slikama. U procesu korištenja informacija o konturi za automatsku usporedbu (povezivanje) slika mogu se razlikovati četiri glavne faze:

  1. odabir točaka konture;
  2. praćenje kontura;
  3. opis kontura;
  4. usporedba kontura u odabranom prostoru značajki.

Metode za isticanje konturnih točaka već su detaljno razmotrene u odjeljku 3.4. Zadaci praćenja i opisivanja kontura razmatrani su u odjeljku 4.1. Razmotrimo sada problem uspoređivanja kontura.

Jedan od ključnih problema pri usporedbi kontura u dvije digitalne slike je izbor atributa koji određuju pojedinačne karakteristike konture. U ovom slučaju može se razlikovati nekoliko glavnih vrsta obilježja: metričke (dužina, širina, orijentacija, kut), analitičke (paralelnost, ravnost, zakrivljenost), topološke (gniježđenje, susjedstvo, sjecište, susjedstvo, prekrivanje). U praksi se koristi prilično velik broj atributa konture: duljina, zakrivljenost, površina, perimetar, broj i položaj singularnih točaka, pokazatelj kompaktnosti, položaj težišta. Za stvaranje pouzdanijih algoritama za prepoznavanje, preporučljivo je koristiti kombinacije značajki različitih vrsta.

Također imajte na umu da nije uvijek moguće razlikovati dovoljan broj zatvorenih kontura u stvarnim slikama. Stoga je za problem identificiranja kontura bolje koristiti atribute koji ne ovise o svojstvima zatvaranja konture.

Koriste se različite metode usporedbe kontura ovisno o odabranim atributima.

Usporedba kontura u prirodnom prikazu.

Neka referentna slika sadrži $ N $ različitih kontura $ i = 1, \ ldots, N $, tada je $ C_L ^ i $ $ i $ -ta kontura $ l_L ^ i $ duga. Područje pretraživanja na drugoj slici sadrži $ M $ različitih kontura $ j = 1, \ ldots, M $, tada je $ C_R ^ j $ $ j $ ta kontura područja pretraživanja duljine $ l_R ^ j $. $ C_L ^ i $ i $ C_R ^ j $ predstavljeni su funkcijama zakrivljenosti (infleksije) $ K_L (l) $ i $ K_R (l) $, redom.

Da bi se riješio ovaj problem, može se koristiti postupak za uspoređivanje dviju kontura, čija je bit uzastopno kretanje funkcije $ K _ (\ textrm (E)) (l) $ (kontura $ C _ (\ textrm (E) )) $) prema funkciji $ K_ ( \ textrm (OP)) (l) $ (kontura $ C _ (\ textrm (OP)) $), a u svakoj trenutnoj poziciji izračunava se vrijednost normaliziranog koeficijenta korelacije $$ k (m, C _ (\ textrm (E)), C_ (\ textrm (OP))) = \ frac (\ sum \ limits_ (i = 1) ^ (l_ \ textrm (E)) (\ lijevo ((K _ (\ textrm (E)) \ lijevo ((l_i) \ desno) - \ bar (K) _ (\ textrm (E))) \ desno) \ lijevo ((K _ (\ textrm (OP) ) \ lijevo ((l_ (i + m)) \ desno) - \ bar ( K) _ (\ textrm (OP)) ^ m) \ desno))) (\ sqrt (\ zbroj \ limits_ (i = 1)) ^ (l _ (\ textrm (E))) (\ lijevo ((K _ (\ textrm (E)) \ lijevo ((l_i) \ desno) - \ bar (K) _ (\ textrm (E))) \ desno) ^ 2)) \ sqrt (\ zbroj \ limits_ (i = 1) ^ ( l _ (\ textrm (E))) (\ lijevo ((K _ (\ textrm (OP)) \ lijevo ((l_ (i + m)) \ desno) - \ bar (K) _ (\ textrm (OP)) ^ m) \ desno) ^ 2))), $$ gdje je $ m = 1, \ ldots, l _ (\ textrm (OP)) -l _ (\ textrm (E)) $; $ K _ (\ textrm (E)) (l) $ - - funkcija zakrivljenosti $ C _ (\ textrm (E)) $ konture; $ K _ (\ textrm (OP)) (l) $ - - funkcija zakrivljenosti $ C _ (\ textrm (OP)) $ konture; $ \ bar (K) _ (\ textrm (E)) $, $ \ bar (K) _ (\ textrm (OP)) ^ m $ - - prosječne vrijednosti intenziteta zakrivljenosti konture $ C _ (\ textrm (E)) $ i fragment obrisa $ C _ (\ textrm (OP)) $, redom.

U ovom slučaju potrebno je da bude ispunjen sljedeći uvjet: $ l _ (\ textrm (E))

Položaj na kojem se postiže maksimalna vrijednost koeficijenta korelacije je fiksan, dok je par kontura $ C _ (\ textrm (E)) $ i $ C _ (\ textrm (OP)) $ povezan s vrijednošću koeficijent korelacije u ovoj poziciji.

Nakon što se pronađu koeficijenti korelacije za sve konture područja pretraživanja, potrebno je odabrati par kontura ($ C_ (L) ^ i $ i $ C_R ^ j) $, za koje koeficijent korelacije poprima maksimalnu vrijednost . Međutim, maksimalna vrijednost koeficijenta u ograničenom području pretraživanja ne jamči pouzdanost rezultata, stoga je potrebno koristiti dodatne informacije o relativnom položaju kontura. Korištenje takvih informacija omogućuje otkrivanje lažnih identifikacija.

U ovom radu, za provjeru pouzdanosti identifikacije, koristili smo udaljenosti između težišta kontura, dok su pronađeni parovi kontura ($ C_ (L) ^ i $, $ C_R ^ j) $ i ($ C_ (L) ^ l $, $ C_R ^ m) $ može se smatrati točnim ako je $$ \ lijevo | (L_ (i, l) -L_ (j, m)) \ desno | \ le \ Delta, $$ gdje je $ L_ (i, l) $ - udaljenost između težišta kontura $ C _ ( _ L) ^ i $ i $ C _ (_ L) ^ l $; $ L_ (j, m) $ - je udaljenost između težišta kontura $ C_R ^ j $ i $ C_R ^ m $.

Ova shema za identifikaciju krivulja ne dopušta međusobno uspoređivanje ravnih segmenata konture, što je, naravno, nedostatak metode. To je zbog činjenice da će pri usporedbi bilo koja dva segmenta koeficijent korelacije poprimiti vrijednosti bliske jedan. Ova značajka korelacije funkcije zakrivljenosti zahtijeva uvođenje dodatnih uvjeta filtriranja. Sve ravne segmente treba isključiti iz skupa kontura odabranih na slici.

Usporedba karakterističnih točaka konture.

Neka se $ N _ (\ textrm (E)) $ singularne točke nađu na neki način za konturu $ C _ (\ textrm (E)) ^ i $ referentne slike, a za konturu $ C _ (\ textrm (OP)) ^ j $ iz područja pretraživanja pronađeno je $ N _ (\ textrm (OP)) $ bodova. U ovom slučaju, samo područje pretraživanja $ C _ (\ textrm (E)) ^ i $ sadrži $ N $ kontura. Tada se bilo koja kontura $ C ^ i $ može predstaviti kao funkcija $ F ^ i (l) $, uzimajući vrijednosti koje se razlikuju od nule samo u pronađenim karakterističnim točkama konture. Štoviše, ako se pri usporedbi kontura koristi samo relativni položaj točaka, tada se vrijednosti funkcije u singularnim točkama mogu postaviti jednake jedan (slika 14).

Prikaz konture kao funkcije $ F (l) $

Potrebno je za svaku konturu $ C_L ^ i $ referentne slike pronaći odgovarajuće konture $ C_R ^ j $ iz područja pretraživanja.

Za rješavanje problema koristi se postupak za uspoređivanje dviju kontura čija je bit sekvencijalno poravnanje točke $ i $ konture $ C _ (\ textrm (E)) $ ($ i = 1, \ ldots , N _ (\ textrm (E))) $ i $ j $ konturne točke $ C _ (\ textrm (OP)) $ ($ j = 1, \ ldots, N _ (\ textrm (OP))) $. U ovom slučaju potrebno je da uvjet $ l _ (\ textrm (E))

Na svakoj fiksnoj poziciji određuje se broj odgovarajućih točaka za koje je uvjet

\ započeti (skupiti *) F _ (\ textrm (E)) (l _ (\ textrm (E)) ^ i + \ Delta _m) = F _ (\ textrm (OP)) (l _ (\ textrm (OP) )) ^ j + \ Delta _m) \ ne 0, \\ \ Delta _m = l _ (\ textrm (E)) ^ (i + m) -l _ (\ textrm (E)) ^ i, \ quad m = 1, \ ldots, N_ ( \ textrm (E)) -i. \ end (gather *) Kao rezultat izvođenja $ N $ operacija usporedbe kontura, potrebno je odabrati konturu $ C _ (\ textrm (OP)) ^ \ ast $, koja sadrži maksimalni broj odgovarajućih točaka. Međutim, kako bi se smanjio broj lažnih identifikacija, potrebno je ograničiti maksimalni broj pronađenih odgovarajućih točaka odozdo. Konture $ C _ (\ textrm (E)) ^ i $ i $ C _ (\ textrm (OP)) ^ \ ast $ smatraju se prikladnima ako je broj pronađenih točaka veći od određenog praga $ T $.

Ova metoda usporedbe je jedna od najbržih i ne zahtijeva izračun dodatnih karakteristika u točkama, ali je pouzdanost takvog algoritma niska. Nestabilnost algoritma je posljedica činjenice da je za stvarne podatke $$ F _ (\ textrm (E)) (l _ (\ textrm (E)) ^ i + \ Delta_m) = F _ (\ textrm (OP) ) (l _ (\ textrm ( OP)) ^ j + \ Delta _m \ pm \ Delta E_m) \ ne 0, $$ gdje je $ \ Delta E_m $ vrijednost pogreške zbog diskretnosti početnih podataka i utjecaja raznih zvukova.

Alternativni način pronalaženja odgovarajućih točaka na dvije konture je shema u kojoj se, za usporedbu, ne koristi svjetlina, već geometrijske značajke objekta, a sve karakteristike se izračunavaju ne pomoću dvodimenzionalne funkcije intenziteta $ I ( x, y) $, ali jednodimenzionalnom funkcijom $ F (l ) $. Algoritam pretraživanja za uparivanje točaka sastoji se od tri glavne faze:

  1. izbor atributa;
  2. traženje odgovarajućih točaka u višedimenzionalnom prostoru znakova;
  3. provjera pouzdanosti identifikacije pomoću relativnog položaja točaka na slici .;

Sljedeće karakteristike se koriste kao atributi točaka: $ M_ (0) $, $ D $, koeficijent zakrivljenosti. Koeficijent asimetrije izračunava se po formuli $$ a = \ frac ((\ bar M) _3) (\ sigma ^ 3), $$ gdje je $ (\ bar M) _3 $ središnji moment trećeg reda.

Za razliku od prethodne metode, problem identificiranja točaka rješava se geometrijskim pretraživanjem u višedimenzionalnom prostoru značajki. Za navedene atribute mjera sličnosti točaka u prostoru značajki imat će oblik $$ S_ (ij) = \ frac (\ vert M ^ (\ textrm (E)) _ (0i) -M ^ (\ textrm (OP)) _ (0j ) \ vert) (M_ (0 \ max) -M_ (0 \ min)) + \ frac (\ vert D ^ (\ textrm (E)) _ i -D ^ (\ textrm ( OP)) _ j \ vert) ( D _ (\ max) -D _ (\ min)) + \ frac (\ vert a ^ (\ textrm (E)) _ i -a ^ (\ textrm (OP)) _ j \ vert) (a _ (\ max) -a_ (\ min)) $$ Traženje odgovarajućih točaka sastoji se od određivanja para točaka $ \ langle i, j \ rangle $, $ i \ u C _ (\ textrm (E)) $, $ j \ u C _ (\ textrm (OP) ) $, za koji $ S_ (ij) $ zauzima najmanju vrijednost u području pretraživanja konture.

Ovaj algoritam identifikacije točaka je pouzdaniji. To je zbog činjenice da je euklidska udaljenost između točaka korištena za provjeru valjanosti.

Vrhunski povezani članci