itthon / A PC elsajátítása / Fényképfelismerő. Keressen és találjon a Google Képek segítségével. Keresés az egész interneten

Fényképfelismerő. Keressen és találjon a Google Képek segítségével. Keresés az egész interneten

Az utóbbi időben az arcfelismerő programok kizárólag a kormányzati szervek szolgálatában álltak. Segítenek azonosítani egy személyt az arcvonások alapján. Most az ilyenek használata szoftver leggyakrabban a biztonsági rendszerekben, a különféle szolgáltatások reklámozásával és promóciójával kapcsolatos kereskedelmi tevékenységekben látható.

Illetve néhány hasonlót online szolgáltatásokés a programok hétköznapi felhasználók számára is elérhetőek, az interneten megtalálhatóak. Példa erre a Lenovo Veriface program. Ez egy szabadalmaztatott beépített segédprogram, amely lehetővé teszi az eszköz feloldását az arc elemzésével.

Hogyan működik az arckeresés

Egyes szolgáltatásokban az arckeresés működik neurális hálózati technológián alapul. A keresés bizonyos alapvető jellemzők alapján történik: képsúly, felbontás, színkorrekció, expozíció, felbontás stb. Jelenleg a neurális hálózatok technológiája fejlődik, az alapvető jellemzők mellett a definíció segítségével történik további jellemzők: bőrszerkezet, szájforma, fülek, hajszín, szemhelyzet stb.

Hasonló személy megtalálásához tiszta fényképeket kell feltöltenie, különben a keresés sikertelen lesz. Azt is érdemes megemlíteni, hogy a közösségi hálózatok védik a felhasználóikra vonatkozó információkat. A legtöbb közösségi hálózat rendelkezik beépített profilvédelmi funkciókkal, amelyek lehetővé teszik egy személy fényképeinek elrejtését.

Arcfelismerő programok

A fényképeken és videókon alapuló arcfelismerő rendszerek (programok) fejlettebb algoritmusokat használnak. Hasonló rendszerek nincs be nyílt hozzáférésű , biztonsági szolgálatokban használják, nagyvárosokban és zsúfolt helyeken vészhelyzetek ellenőrzésére és megelőzésére.

Az ilyen szoftverek leggyakrabban a Viola-Jones felismerési algoritmust használják. A program ezzel a módszerrel 30 fokkal elforgatva is felismeri az arcokat. Módszer Haar jelei alapján, amelyek különböző formájú és méretű fekete-fehér maszkok készletei. A képre maszkokat alkalmaznak, és a képpontok fényerejét összeadással számítják ki, majd kiszámítják az értékek közötti különbséget.

Ezután a rendszer összehasonlítja az eredményeket a felhalmozott adatokkal, és miután meghatározta az arcot a képen, folytatja annak követését az optimális szög kiválasztásához. Ezt követően elindul az olvasási folyamat, és a szoftver megtalálja a referenciapontokat az arcon. Ezt követően a rendszer elemzi a képet az adatbázisokban lévő adatokkal. Ha megegyeznek, a személy azonosításra kerül.

arcot találni

A FindFace egy orosz arcfelismerő program, egy hatékony megoldás, amely lehetővé teszi az arc felismerését a fényképen. A FindFace nemcsak a hétköznapi felhasználók számára kínál eszközöket, hanem kormányzati vállalatok és vállalkozások számára is. Ezzel megtalálhatja a Vkontakte-on regisztrált személyt.

Szeptember 1-től leáll a nyilvános Find Face szolgáltatás, egy ideig csak azok a felhasználók használhatják, akik PRO fiókot vásároltak. A szerzők ezután teljesen felhagynak a közkincs verzióval a kereskedelmi termékük javára.

Google Képek

A Google Search.Images lehetővé teszi, hogy adatok alapján azonos fényképeket találjon kereső motorok, beleértve a személy arc szerinti keresését is. Inkább a külföldi forrásokban keresni:


Yandex képek

Az előző szolgáltatás hazai analógja, amely segít egy személy megtalálásában fénykép alapján az interneten, és fénykép alapján kereshet a közösségi hálózatokban:


Pictriev

Angol nyelvű szolgáltatás, amely lehetővé teszi a felhasználók számára, hogy hasonló személyt találjanak, és felismerjenek egy arcot egy fényképről online. Először is a hírességekkel való összehasonlításra összpontosít, így előfordulhat, hogy az eredmények nem teljesen helyesek:


Szia!

Az interneten megtalálhatja a megfelelő terméket különböző utak. Leggyakrabban az online áruházak vásárlói beírnak egy lekérdezést a keresősávba, kategóriákba böngésznek a termékek között, segítséget kérnek. De van még egy érdekes módon- ez .

Mondjuk be közösségi háló vagy valamelyik oldalon, amit böngéssz, megtetszett valami apróság, de sehol nem találtál leírást és linket, ezért nem tudod hol lehet megvásárolni, esetleg nem is tudod mi ez)) Vagy egy másik lehetőség - talált egy terméket, de az ár nem felel meg, olcsóbbat szeretnék. Ilyen esetekben jól jön a kép szerinti keresés.

Nézzünk meg néhány lehetőséget, amelyek segítségével fotó alapján találhatunk terméket.

Hogyan találhat meg egy terméket kép alapján a Google-ban és a Yandexben

A képek (képek, fényképek) szerinti keresés a Google-ban és a Yandexben azután vált lehetővé, hogy a keresőmotorok megtanulták felismerni a képeket. A mai napig ez a legtöbb megfizethető módon nézd meg, mi látható a képen, hol árulják és mennyibe kerül.

Találjunk ki valamit Google Képkereső.

Vegyük a Power Bankot forrásképnek.

Az áruk fénykép alapján történő keresése a keresőkben egy kamera formájú ikonnal kezdődik.

A kamera ikonra kattintva a link segítségével megtalálhatja a terméket, vagy letölthet egy korábban elmentett képet. A legkönnyebb húzni kívánt képet a keresősávba.

A fájl letöltése után megnyílik az információ, amelyből megtudhatja, hogy mi látható a képen, és megjelenik egy hosszú lista azokról a webhelyekről, ahol ez a fotó megtalálható.

Ha meg szeretne tekinteni egy terméket egy adott online áruházban, egyszerűen adja hozzá a nevét a keresősávhoz - ebay, amazon, aliexpress stb.

A fenti módja a képek szerinti keresésnek a keresőmotorok segítségével univerzális módon minden alkalomra. De vannak más lehetőségek is, amelyek lehetővé teszik a termékek gyors és egyszerű keresését bizonyos kereskedési platformokon.

Hogyan találhat meg egy terméket az Aliexpressen fénykép alapján egy bővítmény segítségével

A böngészőbővítmény jó munkát végez az Ali termékek keresésekor "Aliexpress keresés kép alapján". Telepítheti böngészőkhöz Google Chrome, Yandex.Browserés Opera.

Ha fénykép alapján szeretne terméket keresni az Aliexpressen ezzel a bővítménnyel, kattintson a jobb gombbal a képre, és válassza ki a "Termék keresése az Aliexpressen ezen a képen" elemet a legördülő menüben.

Átkerülünk a Google-hoz, ahol már összeállt az aliexpress-oldalak listája, amelyeken ugyanazt a tollkészletet árulják.

Ez a bővítmény abban is segít, hogy egy másik eladótól olcsóbban megtalálja a megfelelő terméket magán az Aliexpressen. Igaz, ez a módszer néha kudarcot vall – a plugin nem minden képpel barátságos, de egy próbát megér!

Egy másik nagyszerű alkalmazás fejlett funkciókkal - AliPrice. Segítségével pillanatok alatt megtalálhatja a terméket az Aliexpressen a kép alapján, kiértékelheti az eladó értékelését, megtekintheti az árelőzményeket, elolvashatja a véleményeket és véleményeket. További információ a bővítményről.

Hogyan találhat terméket fénykép alapján a TaoVao-n

A keresőmotor lehetővé teszi a termékek keresését a TaoVao katalógus orosz nyelvű képei alapján Cupinato. Itt minden intuitív.

Vele nehezebb a dolog Kínai kereső Taowao. Online fordítók a segítségünkre!

Most már tudja, hogyan találhat meg egy terméket fénykép alapján az interneten, és ha más módokat is tud, ossza meg a megjegyzésekben!

Sok sikert a vásárláshoz, és ne felejtse el leadni a rendeléseket az online áruházakban. Így a megvásárolt áruk költségének körülbelül 5-15%-át takaríthatja meg!

Üdvözlettel Anna

1. Az elmozdulások hozzávetőleges részét magunknak kell megbecsülnünk - legalábbis korlátozott számú pontra. A StereoBM itt nem fog működni, ezért valami más módszerre van szükségünk. A logikus megoldás a jellemzőillesztés használata lenne – keressen meg néhány speciális pontot mindkét keretben, és válassza ki a leképezéseket. Olvassa el, hogyan történik ez.
2. Ha megvan a két egyező pontkészlet, betáplálhatjuk őket a findFundamentalMatba, hogy megkapjuk a stereoRectifyUncalibratedhez szükséges alapvető mátrixot.
3. Futtassa a stereoRectifyUncalibrated parancsot, szerezzen két mátrixot mindkét képkocka kiegyenlítéséhez.
4. És ... és akkor nem világos. Vannak kiegyenesített kereteink, de nincs Q mátrix, ami az utolsó lépéshez kellett volna. Googlálva találtam egy bejegyzést ugyanerről a megdöbbenésről, és rájöttem, hogy vagy elméletben kihagytam valamit, vagy az OpenCV nem gondolt erre a pillanatra.

OpenCV: 2:0 vagyunk.

4.1 A terv módosítása

De várj. Lehet, hogy kezdettől fogva rossz úton jártunk. A korábbi próbálkozások során lényegében megpróbáltuk meghatározni igazi a háromdimenziós pontok helyzete - innen kell ismerni a kamera paramétereit, a mátrixot, a képkockák kiegyenlítését stb. Valójában ez a szokásos háromszögelés: az első kamerán itt ezt a pontot látom, a másodikon pedig itt - ekkor rajzolunk két sugarat, amelyek áthaladnak a kamerák középpontjain, és ezek metszéspontja megmutatja, milyen messze van a pont tőlünk.

Ez rendben van, de általában véve nincs rá szükségünk. Az objektumok valós méreteire akkor lennénk kíváncsiak, ha modellünket később ipari célokra, egyes 3D nyomtatókban használnák. De arra megyünk (bár ez a cél már kicsit összemosódott), hogy a kapott adatokat egy neurális hálózatba és hasonló osztályozókba toljuk. Ehhez csak tudnunk kell relatív tárgyak méretei. Amint még emlékszünk rá, fordítottan arányosak a parallaxis eltolódásokkal – minél távolabb van egy tárgy tőlünk, annál kevésbé tolódik el mozgásunk során. Meg lehet valahogy találni ezeket az ellentételezéseket? több egyszerűbb, csak valahogy illik mindkét kép?

Ez egy csodálatos algoritmus, amely pontosan azt csinálja, amire szükségünk van. Belerakunk egy képet és egy pontkészletet. Aztán feltesszük a második képet. A kimenetnél megkapjuk az adott pontokhoz tartozó új helyzetüket a második képen (természetesen hozzávetőlegesen). Nincs kalibrálás, és egyáltalán nem esik szó a kameráról – az optikai áramlás a név ellenére bármi alapján kiszámítható. Bár általában tárgykövetésre, ütközésészlelésre, sőt kibővített valóság.

Céljainkra (egyelőre) Gunnar Farneback "sűrű" áramlását szeretnénk felhasználni, mert nem egyes pontokra, hanem egyszerre a teljes képre tudja kiszámítani az áramlást. A módszer a calcOpticalFlowFarneback-en keresztül érhető el, és az első eredmények kezdenek nagyon-nagyon tetszetős lenni – nézd meg, mennyivel menőbbnek tűnik, mint a korábbi stereoRectifyUncalibrated + stereoBM eredmény.


Nagyon köszönöm a csodálatos Portal 2 játéknak a lehetőséget, hogy saját szobát építhetsz és kockákkal játszhatsz. Tudományt "csinálok"!

Kód ehhez a kis demóhoz

# kódolás: utf-8 import cv2 import numpy as np from matplotlib import pyplot as plt img1 = cv2.imread("0.jpg", 0) img2 = cv2.imread("1.jpg", 0) def stereo_depth_map(img1 , img2): # 1: jellemző illő orb = cv2.ORB() kp1, des1 = orb.detectAndCompute(img1, None) kp2, des2 = orb.detectAndCompute(img2, None) bf = cv2.BFMatcher(cv2.NORM) crossCheck=True) matches = bf.match(des1, des2) matches = rendezve(egyezés, kulcs=lambda x: x.távolság) src_points = np.vstack(.pt) for m in matches]) dst_points = np.vstack( .pt) for m in matches]) # 2: findFundamentalMat F, mask = cv2.findFundamentalMat(src_points, dst_points) # 3: stereoRectifyUncalibrated _, H1, H2 = cv2.stereoRectifyUncalibrated(src_points._reshape,s. 1, 2), dst_points.reshape(dst_points.shape, 1, 2), F, img1.shape) rect1 = cv2.warpPerspective(img1, H1, (852, 480)) rect2 = cv2.warpPerspective(img2, H2, (852, 480)) # 3.5: stereoBM sztereó = cv2.StereoBM(cv2.STEREO_BM_BASIC_PRESET, ndisparities=16, SADWindowSize=15) return stereo.compute(rekt1, rect2) def optical_flow_depth_map(img1, img2): flow = cv2.calcOpticalFlowFarneback(img1, img2, 0.5, 3, 20, 10, 5, c) = 1.2, ,ang .cartToPolar(flow[..., 0], flow[..., 1]) return mag def plot(title, img, i): plt.subplot(2, 2, i) plt.title(title) plt .imshow(img, "grey") plt.gca().get_xaxis().set_visible(False) plt.gca().get_yaxis().set_visible(False) plot(u"Első képkocka", img1, 1) plot (u"Második képkocka (jobb lépés)", img2, 2) plot(u"stereoRectifyUncalibrated", stereo_depth_map(img1, img2), 3) plot(u"Első képkocka", optical_flow_depth_map(img1, img2), 4) plt. előadás()

Olyan nagy. Vannak beszámításaink, és jól néznek ki. Most hogyan kapjuk meg tőlük a háromdimenziós pontok koordinátáit?

4.2 Az a rész, ahol megkapjuk a 3D pontok koordinátáit

Ez a kép már felvillant az egyik fenti linken.

Az objektum távolságát itt az iskolai geometria módszerével számítjuk ki (hasonló háromszögek), és így néz ki: . A koordináták pedig így: . Itt wés h- a kép szélessége és magassága, ismerjük, f a kamera gyújtótávolsága (a kamera középpontja és a képernyő felülete közötti távolság), és B- kamerák ugyanazt a lépést. Egyébként kérjük, vegye figyelembe, hogy itt kissé megsértjük a tengelyek általánosan elfogadott elnevezéseit, amikor a Z felfelé irányul - Z a képernyőn "mélyen" néz, X és Y pedig a szélesség mentén, ill. a kép magassága.

Nos, kb f minden egyszerű - már kikötöttük, hogy nem érdekelnek minket a kamera valós paraméterei, amíg az összes tárgy aránya egy törvény szerint változik. Ha behelyettesíti a Z-t a fenti képletbe X helyett, láthatja, hogy X egyáltalán nem függ a gyújtótávolságtól (f csökkentett), így a különböző értékei csak a mélységet változtatják meg - „nyújtás” vagy „ lapítsuk le” jelenetünket. Vizuálisan - nem túl szép, de ismétlem, az osztályozási algoritmus szempontjából - teljesen mindegy. Állítsuk be tehát a gyújtótávolságot intelligens módon – gondoljunk csak bele. Fenntartom azonban a jogot, hogy véleményemet a szövegben lejjebb kissé megváltoztassam.

Ról ről B kicsit bonyolultabb - ha nincs beépített lépésszámlálónk, akkor nem tudjuk, mennyit mozdult el a kamera a való világban. Tehát számoljunk egy kicsit, és döntsük el, hogy a kamera mozgása megközelítőleg egyenletes, sok képkockánk van (másodpercenként pár tucat), és a két szomszédos távolság is megközelítőleg azonos, pl. . És ismét egy kicsit tovább fogjuk tisztázni ezt a helyzetet, de most legyen így.

Ideje írni egy kódot

import cv2 import numpy as np f = 300 # mivel vizualizációt végzünk, mégis úgy választottam a fókuszt, hogy a jelenet feltételesen valósnak tűnt B = 1 w = 852 h = 480 img1 = cv2.imread("0.jpg", 0 ) img2 = cv2.imread("1.jpg", 0) flow = cv2.calcOpticalFlowFarneback(img1, img2, 0,5, 3, 20, 10, 5, 1,2, 0) mag, ang = cv2.cartTolar(flow[ .., 0], flow[..., 1]) élek = cv2.Canny(img1, 100, 200) result = for y in xrange(img1.shape): for x in xrange(img1.shape): ha élek == 0: folytatás delta = mag ha delta == 0: folytatás Z = (B * f) / delta X = (Z * (x - w / 2.)) / f Y = (Z * (y - h / 2.)) / f pont = np.array() result.append(point) result = np.vstack(result) def dump2ply(points): # mentés .ply formátumba a Blenderrel megnyitáshoz open("points) .ply", "w") mint f: f.write("ply\n") f.write("ascii formátum 1.0\n") f.write("elem csúcspontja ()\n".format(len( pontok))) f.write("tulajdonság lebegés x\n") f.write("tulajdonság lebegés y\n") f.write("tulajdonság float z\n") f.write("end_header\n" ) pontban ponthoz: f.write("(:.2f) (:.2f) (:.2f)\n".format(point, point, point)) dump2ply(result)

Így néz ki az eredmény. Remélem, ez a GIF sikerült betölteni, mire idáig elolvasta.


Az egyértelműség kedvéért nem vettem sorra az összes pontot, hanem csak a Canny detektor által kiemelt határokat

Első pillantásra (legalábbis nekem) minden nagyszerűnek tűnt - még a kockák lapjai közötti szögek is szép kilencven fokot alkottak. A háttérben lévő tárgyak rosszabbul sikerültek (figyelje meg, hogy a falak és az ajtó körvonalai eltorzulnak), de hát ez valószínűleg csak egy kis zaj, ez gyógyítható a b használatával ról ről több keret vagy valami más.

Az itt levonható összes lehetséges elhamarkodott következtetés közül ez állt a legtávolabb az igazságtól.

5. A nem működő rész

Általánosságban elmondható, hogy a fő probléma az volt, hogy néhány pont meglehetősen torz volt. És - riasztó jel, ahol már ideje volt valami bajt sejteni - nem véletlenszerűen torzult el, hanem megközelítőleg ugyanazokon a helyeken, így nem lehetett a hibát szekvenciálisan új pontok (más képkockákból) egymásra helyezésével korrigálni.

Valahogy így nézett ki:


A lépcsőház gyűrött, néha érthetetlen valami amorf darabká változik.

Nagyon sokáig próbáltam ezt kijavítani, és ez idő alatt a következőket próbáltam:

- Simítsa ki a képeket optikai áramlással: Gauss-elmosódás, medián szűrő és divatos kétoldali szűrő, amely éles széleket hagy maga után. Hiábavaló: a tárgyak éppen ellenkezőleg, még jobban elmosódnak.
- Megpróbáltam Hough transzformációval egyenes vonalakat keresni a képen és változatlan egyenes állapotban átvinni. Részben megmunkált, de csak a szegélyeken - a felületek továbbra is ugyanolyan torzak voltak; plusz a „mi van, ha egyáltalán nincsenek egyenes vonalak a képen” szellemében nem lehetett sehova elhelyezni egy gondolatot.
- Megpróbáltam saját optikai áramlási verziót készíteni az OpenCV templateMatching segítségével. Ez így működött: bármelyik pontra építünk egy kis (kb. 10x10) négyzetet, és elkezdjük mozgatni és keresni a maximális egyezést (ha ismert a mozgás iránya, akkor a „körbe” korlátozható). Helyenként nem lett rossz (bár egyértelműen lassabban működött, mint az eredeti verzió):


Bal oldalon a már jól ismert Farneback patak, jobb oldalon a fentebb leírt bicikli

A zaj szempontjából sajnos nem lett jobb.

Általában minden rossz volt, de nagyon logikus. Mert ennek így kellett volna lennie.


Illusztráció a problémához. A mozgás itt még mindig egy lépés jobbra

Válasszunk ki egy zöld pontot a fenti képről. Tegyük fel, hogy ismerjük a mozgás irányát, és meg fogjuk keresni a zöld pontunk "eltolt ikerpárját", amely egy adott irányba mozog. Mikor döntjük el, hogy megtaláltuk a kívánt ikertestvért? Amikor belebotlunk valamiféle „tereptárgyba”, egy jellegzetes területre, amely hasonló a környezetünkhöz kiindulópont. Például a sarkon. A szögek ebben a tekintetben könnyen követhetők, mert önmagukban meglehetősen ritkák. Tehát ha a zöld pontunk egy szög, és egy adott környéken találunk hasonló szöget, akkor a probléma megoldódott.

Kicsit bonyolultabb, de még mindig egyszerű a helyzet a függőleges vonallal (balra a második zöld pont). Tekintettel arra, hogy jobbra haladunk, a teljes keresési időszak alatt csak egyszer találkozunk a függőleges vonallal. Képzelje el, hogy a keresőablakkal a kép felett mászunk, és látunk egy tömör hátteret, hátteret, újra hátteret, függőleges vonalat, újra hátteret, hátteret és újra hátteret. Ez is könnyű.

A probléma akkor jelentkezik, amikor megpróbáljuk nyomon követni a vonal egy darabját párhuzamos a mozgással. A piros pontnak nincs egy egyértelműen meghatározott jelöltje az elköltözött iker szerepére. Sok van belőlük, mindegyik a közelben van, és egyszerűen lehetetlen kiválasztani egyet az általunk használt módszerrel. Ez az optikai áramlás funkcionális korlátja. Ahogy a Wikipédia a megfelelő cikkben figyelmeztet minket: „Ezt az egyenletet nem tudjuk megoldani két ismeretlen változóval”, és itt semmit sem lehet tenni.

Semmi sem?

Általában véve, hogy őszinte legyek, ez valószínűleg nem teljesen igaz. Megtalálod a piros pontot a jobb oldali képen? Ez szintén nem túl nehéz, de ehhez mentálisan más módszert használunk - megkeressük a legközelebbi „zöld pontot” (alsó sarkot), megbecsüljük a távolságot, és félretesszük a megfelelő távolságot a kocka második oldalán. Az optikai áramlási algoritmusoknak van hova fejlődniük – ez a módszer alkalmazható (ha ez még nem történt meg).

6. FTW zöld pontok

Valójában, amint azt ezen a ponton a megkésett józan ész sugallja, még mindig igyekszünk olyan többletmunkát végezni, amely nem fontos végső célunk – elismerés, minősítés és egyéb intelligencia – szempontjából. Miért próbálunk betolni háromdimenziós világ összes képpontok? Még akkor sem, ha 2D-s képekkel dolgozunk, általában nem próbálunk minden pixelt felhasználni az osztályozáshoz – a legtöbbnek nincs értéke. hasznos információ. Miért nem csinálod ugyanezt itt is?

Valójában minden olyan egyszerűnek bizonyult. Ugyanazt az optikai áramlást fogjuk kiszámítani, de csak "zöld", stabil pontokra. És mellesleg az OpenCV már gondoskodott rólunk. Amire szükségünk van, az a Lucas-Canade patak.

Kicsit unalmas lesz ugyanazokra az esetekre kódot és példákat adni, mert ugyanazt kapod, de sokkal kevesebb ponttal. Útközben tegyünk még valamit: például adjuk hozzá az algoritmusunkhoz a kameraforgatások kezelésének képességét. Azelőtt kizárólag oldalt haladtunk, ami a vonatok ablakain kívüli való világban elég ritka.

A forgatások megjelenésével nálunk keveredik az X és Z koordináták. Hagyjuk meg a régi képleteket a kamerához viszonyított koordináták kiszámításához, és a következőképpen konvertáljuk abszolút koordinátákká (itt - a kamera pozíciójának koordinátái, alfa - a forgási szög):

(y csalás; ez azért van, mert úgy gondoljuk, hogy a kamera nem mozog fel és le)

Valahol problémáink vannak a gyújtótávolsággal – emlékszel, úgy döntöttünk, hogy tetszőlegesre állítjuk be? Tehát most, hogy lehetőségünk van ugyanazt a pontot különböző szögekből értékelni, ez kezdett számítani - pontosan annak a ténynek köszönhetően, hogy az X és Z koordináták interferálnak egymással. Valójában, ha az előzőhöz hasonló kódot tetszőleges fókuszálással futtatjuk, valami ilyesmit fogunk látni:


Ez nem nyilvánvaló, de ez egy kísérlet arra, hogy egy szabályos kocka köré kamera bypass-t rendezzenek. Minden képkocka egy becslés látható pontok a kamera következő elforgatása után. Felülnézet, mint a minitérképen.

Szerencsére még mindig van optikai áramlásunk. Tekeréskor láthatjuk, hogy melyik pont melyikhez megy, és két látószögből kiszámoljuk a koordinátákat. Innen könnyen lekérhető a gyújtótávolság (csak vegyük a fenti két képletet a különböző alfa értékekhez, egyenlítsük ki a koordinátákat, és fejezzük ki az f-et). Sokkal jobban:


Nem mintha az összes pont tökéletesen illeszkedik egymáshoz, de legalább sejtheti, hogy ez egy kocka.

És végül valahogy kezelnünk kell a zajt, ami miatt a pontok helyzetére vonatkozó becsléseink nem mindig esnek egybe (lásd a fenti gif takaros egyenetlen gyűrűit? Ideális esetben mindegyik helyett egy pont legyen ). A kreativitásnak már van helye, de a legmegfelelőbb mód számomra így tűnt:
- amikor egymás után több oldalra tolódásunk van, az azokból származó információkat kombináljuk - így egy pontra több mélységbecslésünk lesz egyszerre;
- amikor a kamera forog, igyekszünk a két ponthalmazt (az elforgatás előtt és után) összeilleszteni és egymáshoz illeszteni. Ezt az illesztést helyesen "pontregisztrációnak" hívják (amit soha nem gondolnánk, ha a kifejezést a szövegkörnyezeten kívül hallanák), ​​és ehhez az Iteratív legközelebbi pont algoritmust használtam a python + OpenCV verzió guglizásával;
- ekkor a (legközelebbi szomszéd módszerrel meghatározott) küszöbsugáron belüli pontok összeolvadnak. Minden pontnál nyomon követünk valamit, például az „intenzitást” – azt a számlálót, hogy milyen gyakran kombinálódott más pontokkal. Minél nagyobb az intenzitás, annál nagyobb az esély arra, hogy ez egy őszinte és helyes pont.

Az eredmény nem biztos, hogy olyan szilárd, mint a Portal kockával, de legalább pontos. Íme néhány újraalkotott modell, amelyeket először betöltöttem a Blenderbe, elforgattam körülöttük a kamerát, és elmentettem a kapott képkockákat:


Dowell professzor feje


Valami véletlenszerű autó

Alkalmazás

Nézzünk vissza egy kicsit, és emlékezzünk, miért tettük mindezt. A gondolatmenet így hangzott:
- fel kell tudnunk ismerni a képeken látható dolgokat
- de ezek a képek minden alkalommal változnak, amikor pozíciót váltunk, vagy ugyanazt a dolgot más-más szögből nézzük. Néha a felismerhetetlenségig
- ez nem hiba, hanem jellemző: annak a következménye, hogy korlátozott szemérzékelőink a tárgynak csak egy részét látják, és nem az egész tárgyat
- ezért valamilyen módon össze kell kapcsolni ezeket a részleges adatokat az érzékelőkből, és össze kell gyűjteni belőlük a tárgyról alkotott elképzelést a maga teljes formájában.

Általánosságban elmondható, hogy ez mindenképpen probléma. Nem csak látomás. Ez inkább szabály, nem kivétel - szenzoraink nem mindenhatóak, folyamatosan, részenként érzékelik az objektumról szóló információkat -, de azért érdekes, hogy az összes ilyen esetet hogyan lehet valamiféle közös keretbe foglalni? Tegyük fel (visszatérve a látáshoz), a szemed most folyamatosan apró és nagyon gyors mozdulatokat - szakkádokat - ugrál a látómezőben lévő tárgyak között (és e mozgások közötti intervallumokban a látásod egyáltalán nem működik - ezért nem látja a saját szakkádját, még ha üresen is a tükörbe néz). Az agy folyamatosan keményen dolgozik azon, hogy „összefűzze” a látott darabokat. azt- ugyanaz a probléma, amit most próbáltunk megoldani, vagy mégis más? A beszédészlelés, amikor tízet tudunk egyeztetni különböző lehetőségeket egy szó kiejtése az egyik „ideális” írásmódjával is hasonló feladat? És mi a helyzet azzal, hogy a szinonimákat az alany egyetlen „képévé” redukáljuk?

Ha igen, akkor a probléma talán több, mint a vizuális rendszer lokális algoritmusa, amely a szkenner lézermutatóját helyettesíti fejletlen szemünk számára.

Nyilvánvaló megfontolások azt mondják, hogy amikor megpróbálunk újrateremteni valamit, ami a természetben látható, nincs értelme vakon lemásolni minden alkotórészét. A levegőben való repüléshez nincs szükség szárnycsapásra és tollra, elég egy merev szárny és emelő; nincs szükség mechanikus lábakra a gyors futáshoz – egy kerék sokkal jobban teljesít. Ahelyett, hogy lemásolnánk a látottakat, szeretnénk találni egy elvet, és magunk is megismételni (talán megkönnyítve/hatékonyabbá téve). Még nem tudjuk, hogy mi az intelligencia elve, amely a repülés aerodinamikai törvényeinek analógja. A mély tanulás és Yang Lekun, a prófétája (és utána sok más ember) úgy gondolja, hogy a kapott adatokból „mély” jellemzői hierarchiát kell felépíteni. Esetleg még egy finomítást adhatunk ehhez: a releváns adatok összekapcsolásának képességét, egy objektum részeként való felfogását és új dimenzióba helyezésének lehetőségét?

Címkék: Címkék hozzáadása

Vannak esetek, amikor valóban kép alapján kell keresnie a telefonjáról. Igen, a legtöbben tudjuk, hogyan kell végrehajtani egy ilyen műveletet számítógépen.

Ott minden egyszerű - minden böngészőnek (a Google-nak és így tovább) saját oldala van a fényképek kérésként történő felhasználásához.

Valójában csak az maradt jelezze az eredeti fényképetés kezdje el keresni a releváns anyagokat.

Egyes felhasználók véleményével ellentétben egy ilyen művelet végrehajtása nem kevésbé egyszerű.

A műveletek algoritmusa ugyanaz, és néhány esetben még egyszerűbb is. Csak azt kell tudnia, hogy mely szolgáltatásokat vagy alkalmazásokat használja ehhez, és hogyan tegye ezt helyesen.

De elmondjuk, hogy 5 a legjobb lehetőségeket, amelyek segítenek megtalálni valamit a fényképen.

Tartalom:

Google Chrome

Ez ugyanaz a böngésző, amely alapértelmezés szerint minden működő okostelefonon és táblagépen megtalálható.

A Yandexnek egyébként van saját böngészője, akárcsak a Google-nak, de nem ugyanaz az ablak és funkció, mint az ábrán. Tehát nincs értelme letölteni.

TinEye

Ez pedig már egy speciális szolgáltatás, amelyet azért hoztak létre, hogy a felhasználók a világ minden tájáról fotó alapján kereshessenek információkat.

Sok szakember ismeri.

Bár az amatőrök körében is ismert, hiszen rendkívül hasznos a feladat végrehajtása a segítségével, és meglehetősen informatív és pontos eredményeket produkál.

Használatához tegye a következőket:

  1. Menjen a hivatalos weboldalra (link lent). Az erőforrásoldal automatikusan alkalmazkodik az eszközhöz, ami nagyon fontos.
  2. És akkor minden nagyon világos - egyetlen gomb és egy mező található a kérés beviteléhez. Ha a gombra kattint, egy új ablak jelenik meg, amelyben meg kell adnia a forrásfájl helyét. A beviteli mező pedig a fényképekre mutató hivatkozások használatára szolgál. Ha a második megközelítést alkalmazzák, azaz egy hivatkozást adnak meg, akkor emellett a nagyító ikonra kell kattintania.
  3. Ezt követően kerül sor a folyamatra.

Figyelemre méltó, hogy a TinEye teljesen eltérő algoritmussal rendelkezik, mint a Yandex és a Google.

A legtöbb esetben az eredmények pontosabbak és jobban megfelelnek a felhasználói elvárásoknak. Tehát mindenképpen meg kell próbálnia használni ezt a szolgáltatást.

Google Googles

Itt beszélgetünk egy meglehetősen nem szabványos alkalmazásról, amely nem csak néhány képről keres információt, hanem az Ön tartózkodási helyéről és a látott dolgokról.

Ez azt jelenti, hogy lefotózhat egy festményt a galériában, amelyet éppen néz, vagy egy élelmiszert, amelyet egy boltban lát.

Ezt követően a program minden elérhető információt megtalál a fényképezett témáról.

Azt is érdemes megjegyezni, hogy a programnak van egy fordítási módja a képen kísérő szövegfelismeréssel.

Vagyis készíthet képet valamilyen feliratról, hogy a program ezt a feliratot kérésként tudja használni, és lefordíthatja például oroszról angolra.

A Google használatához okostelefonján tegye a következőket:

  • indítsa el az alkalmazást (előtte természetesen töltse le és telepítse);
  • válassza ki az alábbi üzemmódot;
  • ugyanúgy készítsen képet, mint általában;
  • nézd meg az eredményeket.

CamFind

A listánkat pedig egy másik alkalmazás zárja, amely ugyanazon az elven működik, mint a Google Googles, de alapvetően mindenféle árut keres a boltokban.

Például lefényképezhet néhány napszemüveget vagy egy üveg joghurtot, és az alkalmazás azonnal megtalálja a termékkel kapcsolatos összes információt.

Ha ezek szemüvegek, akkor a különböző kiskereskedelmi láncokban látni fogja az árakat, fajtákat, márkákat stb.

Általában azoknak, akik folyamatosan vásárolnak, vagy csak rendszeresen vásárolnak valamit az üzletekben.

Másrészt hasznos lesz például azoknak a szülőknek is, akik szeretnék tudni a gyermekeiknek vásárolt termék összetételét. Általában véve ez egy nagyon jó és hasznos dolog.

A program használata szintén nagyon egyszerű, és a következő:

  • fotózni;
  • várja meg, amíg megtörténik az azonosítás;
  • nézd meg az eredményeket.

Figyelemre méltó, hogy itt átvihet néhány képet speciális gyűjteményébe ("Kedvencek" szakasz).