11.08.2023
Rumah / Menguasai PC / Pengenal Foto. Cari dan temukan dengan Gambar Google. Cari di seluruh Internet

Pengenal Foto. Cari dan temukan dengan Gambar Google. Cari di seluruh Internet

Belakangan ini, program pengenalan wajah hanya diperuntukkan bagi departemen pemerintah. Mereka membantu mengidentifikasi seseorang berdasarkan fitur wajah. Sekarang kegunaannya seperti itu perangkat lunak paling sering terlihat dalam sistem keamanan, dalam aktivitas komersial yang berkaitan dengan periklanan dan promosi berbagai layanan.

Juga, beberapa serupa Pelayanan online dan program juga tersedia untuk pengguna biasa, mereka dapat ditemukan di Internet. Contohnya adalah program Lenovo Veriface. Ini adalah utilitas bawaan yang memungkinkan Anda membuka kunci perangkat dengan menganalisis wajah.

Cara kerja penelusuran wajah

Di beberapa layanan, pencarian wajah berfungsi berdasarkan teknologi jaringan saraf. Pencarian didasarkan pada fitur dasar tertentu: bobot gambar, resolusi, koreksi warna, eksposur, resolusi, dll. Saat ini, teknologi jaringan saraf sedang berkembang, selain fitur-fitur dasar, definisinya juga dilakukan dengan menggunakan fitur tambahan: tekstur kulit, bentuk mulut, telinga, warna rambut, posisi mata, dll.

Untuk menemukan orang serupa, Anda perlu mengunggah foto yang jelas, jika tidak, pencarian akan gagal. Perlu juga disebutkan bahwa jejaring sosial melindungi informasi tentang penggunanya. Sebagian besar jejaring sosial memiliki fitur perlindungan profil bawaan yang memungkinkan Anda menyembunyikan foto seseorang.

Program pengenalan wajah

Sistem (program) pengenalan wajah berdasarkan foto dan video menggunakan algoritma yang lebih canggih. Sistem serupa tidak masuk akses terbuka , mereka digunakan dalam layanan keamanan, untuk mengendalikan dan mencegah keadaan darurat di kota-kota besar dan di tempat-tempat ramai.

Perangkat lunak tersebut paling sering menggunakan algoritma pengenalan Viola-Jones. Program yang menggunakan metode ini mengenali wajah meskipun diputar 30 derajat. metode berdasarkan tanda-tanda Haar, yaitu sekumpulan topeng hitam putih dengan berbagai bentuk dan ukuran. Masker diterapkan pada gambar dan kecerahan piksel dihitung dengan penambahan, setelah itu perbedaan antara nilai dihitung.

Selanjutnya, sistem membandingkan hasilnya dengan akumulasi data, dan, setelah menentukan wajah dalam gambar, terus melacaknya untuk memilih sudut optimal. Setelah itu, proses membaca dimulai dan perangkat lunak menemukan titik referensi pada wajah. Selanjutnya gambar tersebut dianalisis dengan data yang ada di database. Jika cocok, orang tersebut teridentifikasi.

menemukan wajah

FindFace adalah program pengenalan wajah Rusia, solusi ampuh yang memungkinkan Anda mengenali wajah di foto. FindFace tidak hanya menawarkan alat untuk pengguna biasa, tetapi juga untuk perusahaan dan bisnis pemerintah. Dengan itu, Anda dapat menemukan seseorang yang terdaftar di Vkontakte.

Mulai 1 September, layanan publik Temukan Wajah berhenti berfungsi, hanya pengguna yang telah membeli akun PRO yang dapat menggunakannya untuk beberapa waktu. Penulis kemudian akan sepenuhnya meninggalkan versi domain publik demi produk komersial mereka.

Google gambar

Google Penelusuran.Gambar memungkinkan Anda menemukan foto yang identik berdasarkan data mesin pencari, termasuk menelusuri seseorang melalui wajah. Lebih fokus pada mencari sumber daya asing:


Gambar Yandex

Analog domestik dari layanan sebelumnya, yang akan membantu Anda menemukan seseorang berdasarkan foto di Internet dan mencari berdasarkan foto di jejaring sosial:


gambar

Layanan berbahasa Inggris yang memungkinkan pengguna menemukan orang serupa dan mengenali wajah dari foto secara online. Pertama-tama, ini difokuskan pada perbandingan dengan selebriti, jadi hasilnya mungkin tidak sepenuhnya benar:


Halo!

Anda dapat menemukan produk yang tepat di Internet cara yang berbeda. Paling sering, pembeli toko online memasukkan kueri ke dalam bilah pencarian, menelusuri produk berdasarkan kategori, dan menggunakan bantuan. Tapi ada satu lagi cara yang menarik- Ini .

Katakanlah masuk jaringan sosial atau di salah satu situs yang Anda jelajahi, Anda menyukai sesuatu, tetapi Anda tidak menemukan deskripsi dan tautan di mana pun, oleh karena itu, Anda tidak tahu di mana Anda bisa membelinya, atau mungkin Anda bahkan tidak tahu apa itu)) Atau pilihan lain - Anda menemukan produk, tetapi harganya tidak sesuai, saya ingin lebih murah. Dalam kasus seperti itulah pencarian berdasarkan gambar akan berguna.

Mari kita lihat beberapa opsi yang akan membantu kita menemukan produk melalui foto.

Cara menemukan produk berdasarkan gambar di Google dan Yandex

Pencarian berdasarkan gambar (gambar, foto) di Google dan Yandex menjadi mungkin setelah mesin pencari belajar mengenali gambar. Sampai saat ini, ini adalah yang terbanyak cara yang terjangkau cari tahu apa yang ditunjukkan pada gambar, di mana dijual dan berapa harganya.

Ayo temukan sesuatu dengan Pencarian Gambar Google.

Mari kita ambil Power Bank sebagai gambar sumber.

Pencarian barang berdasarkan foto di mesin pencari diawali dengan ikon berupa kamera.

Dengan mengklik ikon kamera, Anda dapat menemukan produk menggunakan link atau mendownload gambar yang disimpan sebelumnya. Paling mudah untuk diseret gambar yang diinginkan ke dalam bilah pencarian.

Setelah mengunduh file, informasi akan terbuka dari mana Anda akan mengetahui apa yang ditampilkan dalam gambar dan daftar panjang situs tempat foto ini ditemukan akan muncul.

Jika Anda ingin melihat produk di toko online tertentu, cukup tambahkan namanya di bilah pencarian - ebay, amazon, aliexpress, dll.

Cara mencari berdasarkan gambar menggunakan mesin pencari di atas adalah cara universal untuk semua kesempatan. Namun ada opsi lain yang memungkinkan Anda mencari produk dengan cepat dan mudah di platform perdagangan tertentu.

Cara menemukan produk di Aliexpress melalui foto menggunakan plugin

Ekstensi browser berfungsi dengan baik dalam mencari produk di Ali "Pencarian Aliexpress berdasarkan gambar". Anda dapat menginstalnya untuk browser Google Chrome, Peramban Yandex Dan Opera.

Untuk menemukan produk di Aliexpress berdasarkan foto menggunakan plugin ini, klik kanan pada gambar dan pilih item "Temukan produk di Aliexpress dengan gambar ini" di menu tarik-turun.

Kami ditransfer ke Google, di mana daftar halaman aliexpress telah dibentuk, di mana set pena yang sama dijual.

Ekstensi ini juga akan membantu Anda menemukan produk yang tepat dengan harga lebih murah di Aliexpress dari penjual lain. Benar, metode ini terkadang gagal - plugin tidak bersahabat dengan semua gambar, tetapi patut dicoba!

Aplikasi hebat lainnya dengan fungsionalitas tingkat lanjut - Harga Ali. Dengan itu, Anda dapat menemukan produk di Aliexpress berdasarkan gambar dalam hitungan detik, mengevaluasi peringkat penjual, melihat riwayat harga, membaca ulasan dan ulasan. Baca lebih lanjut tentang ekstensi.

Cara menemukan produk melalui foto di TaoVao

Mesin pencari memungkinkan Anda mencari produk berdasarkan gambar dari katalog TaoVao dalam bahasa Rusia Cupinato. Semuanya intuitif di sini.

Segalanya menjadi lebih sulit Mesin pencari Cina Taowao. Penerjemah online untuk membantu kami!

Sekarang Anda tahu cara menemukan produk melalui foto di Internet, dan jika Anda mengetahui cara lain, bagikan di komentar!

Selamat berbelanja dan jangan lupa melakukan pemesanan di toko online melalui. Jadi Anda menghemat sekitar 5-15% dari harga pokok pembelian!

Salam, Anna

1. Kita perlu memperkirakan sendiri perkiraan bagian perpindahannya - setidaknya untuk sekumpulan titik terbatas. StereoBM tidak akan berfungsi di sini, jadi kita memerlukan cara lain. Opsi logisnya adalah menggunakan pencocokan fitur - temukan beberapa titik khusus di kedua bingkai dan pilih pemetaan. Anda dapat membaca tentang bagaimana hal ini dilakukan.
2. Setelah kita memiliki dua set titik yang cocok, kita dapat memasukkannya ke dalam findFundamentalMat untuk mendapatkan matriks dasar yang kita perlukan untuk stereoRectifyUncalibrated.
3. Jalankan stereoRectifyUncalibrated, dapatkan dua matriks untuk memperbaiki kedua frame.
4. Dan...dan kemudian tidak jelas. Kami telah meluruskan bingkai, tetapi tidak ada matriks Q yang diperlukan untuk langkah terakhir. Saat mencari di Google, saya menemukan postingan tentang kebingungan yang sama, dan menyadari bahwa saya melewatkan sesuatu secara teori, atau OpenCV tidak memikirkan momen ini.

OpenCV: kita 2:0.

4.1 Mengubah rencana

Tapi tunggu. Mungkin kita salah jalan sejak awal. Dalam upaya sebelumnya, kami pada dasarnya mencoba untuk menentukan nyata posisi titik tiga dimensi - oleh karena itu perlunya mengetahui parameter kamera, matriks, memperbaiki bingkai, dan sebagainya. Sebenarnya, ini adalah triangulasi biasa: pada kamera pertama saya melihat titik ini di sini, dan pada kamera kedua di sini - kemudian kita akan menggambar dua sinar yang melewati pusat kamera, dan perpotongannya akan menunjukkan seberapa jauh titik tersebut. dari kami.

Tidak apa-apa, tapi secara umum, kami tidak membutuhkannya. Kami akan tertarik pada dimensi sebenarnya dari objek jika model kami nantinya digunakan untuk keperluan industri, di beberapa printer 3d. Namun kami akan (meskipun tujuan ini sudah sedikit kabur) untuk memasukkan data yang diterima ke dalam jaringan saraf dan pengklasifikasi serupa. Untuk melakukan ini, kita hanya perlu mengetahuinya relatif ukuran benda. Seperti yang masih kita ingat, pergeseran tersebut berbanding terbalik dengan pergeseran paralaks - semakin jauh suatu benda dari kita, semakin sedikit pergeserannya saat kita bergerak. Apakah ada cara untuk menemukan offset ini? lagi lebih mudah, entah bagaimana mencocokkan kedua gambar?

Ini adalah algoritma luar biasa yang melakukan apa yang kita butuhkan. Kami memasukkan gambar dan serangkaian poin ke dalamnya. Lalu kita pasang gambar kedua. Kami mendapatkan output untuk titik-titik tertentu, posisi baru mereka di gambar kedua (perkiraan, tentu saja). Tidak ada kalibrasi dan tidak disebutkan kamera sama sekali - aliran optik, apa pun namanya, dapat dihitung berdasarkan apa pun. Meskipun biasanya digunakan untuk pelacakan objek, deteksi tabrakan, dan bahkan realitas tertambah.

Untuk tujuan kami, kami (untuk saat ini) ingin menggunakan aliran "padat" Gunnar Farneback, karena dia dapat menghitung aliran bukan untuk beberapa titik individual, tetapi untuk keseluruhan gambar sekaligus. Metode ini tersedia melalui calcOpticalFlowFarneback, dan hasil pertama mulai sangat, sangat menyenangkan - lihat betapa lebih keren tampilannya dibandingkan hasil stereoRectifyUncalibrated + stereoBM sebelumnya.


Terima kasih banyak kepada game Portal 2 yang luar biasa atas kesempatan membangun kamar Anda sendiri dan bermain dengan balok. Saya "sedang melakukan" Sains!

Kode untuk demo kecil ini

# pengkodean: utf-8 impor cv2 impor numpy sebagai np dari matplotlib impor pyplot sebagai plt img1 = cv2.imread("0.jpg", 0) img2 = cv2.imread("1.jpg", 0) def stereo_ depth_map(img1 , img2): # 1: pencocokan fitur orb = cv2.ORB() kp1, des1 = orb.detectAndCompute(img1, None) kp2, des2 = orb.detectAndCompute(img2, None) bf = cv2.BFMatcher(cv2.NORM_HAMMING, crossCheck=True) match = bf.match(des1, des2) match = diurutkan(matches, key=lambda x: x.distance) src_points = np.vstack(.pt) untuk m dalam pertandingan]) dst_points = np.vstack( .pt) untuk m dalam pertandingan]) # 2: findFundamentalMat F, mask = cv2.findFundamentalMat(src_points, dst_points) # 3: stereoRectifyUncalibrated _, H1, H2 = cv2.stereoRectifyUncalibrated(src_points.reshape(src_points.shape[ 0], 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 stereo = cv2.StereoBM(cv2.STEREO_BM_BASIC_PRESET, ndisparities=16, SADWindowSize=15) mengembalikan stereo.compute(rect1, rect2) def optical_flow_ depth_map(img1, img2): flow = cv2.calcOpticalFlowFarneback (img1, img2, 0.5, 3, 20, 10, 5, 1.2, 0) mag, ang = cv2.cartToPolar(flow[..., 0], flow[..., 1]) return mag def plot( judul, img, i): plt.subplot(2, 2, i) plt.title(judul) plt.imshow(img, "abu-abu") plt.gca().get_xaxis().set_visible(False) plt.gca ().get_yaxis().set_visible(False) plot(u"Bingkai pertama", img1, 1) plot(u"Bingkai kedua (langkah kanan)", img2, 2) plot(u"stereoRectifyUncalibrated", stereo_ depth_map(img1, img2), 3) plot(u"Bingkai pertama", optical_flow_ depth_map(img1, img2), 4) plt.show()

Sangat bagus. Kami memiliki offset, dan terlihat bagus. Bagaimana sekarang kita bisa mendapatkan koordinat titik tiga dimensi darinya?

4.2 Bagian dimana kita mendapatkan koordinat titik 3D

Gambar ini sudah muncul di salah satu tautan di atas.

Jarak ke benda di sini dihitung dengan menggunakan metode geometri sekolah (segitiga sebangun), dan tampilannya seperti ini: . Dan koordinatnya masing-masing seperti ini: . Di Sini w Dan H- lebar dan tinggi gambar, kami mengetahuinya, F adalah panjang fokus kamera (jarak dari pusat kamera ke permukaan layarnya), dan B- kamera langkah yang sama. Ngomong-ngomong, harap dicatat bahwa kami sedikit melanggar nama sumbu yang diterima secara umum di sini, ketika Z diarahkan ke atas - kami memiliki Z yang terlihat "dalam" ke layar, dan X dan Y, masing-masing, diarahkan sepanjang lebar dan ketinggian gambar.

Ya, tentang F semuanya sederhana - kami telah menetapkan bahwa kami tidak tertarik dengan parameter kamera yang sebenarnya, selama proporsi semua objek berubah menurut hukum yang sama. Jika Anda mengganti Z ke dalam rumus X di atas, Anda dapat melihat bahwa X tidak bergantung pada panjang fokus sama sekali (f dikurangi), sehingga nilai yang berbeda hanya akan mengubah kedalaman - “regangan” atau “ meratakan” adegan kami. Secara visual - tidak terlalu bagus, tapi sekali lagi, untuk algoritma klasifikasi - tidak masalah sama sekali. Jadi mari kita atur panjang fokus dengan cara yang cerdas - bayangkan saja. Namun, saya berhak untuk sedikit mengubah pendapat saya di bagian bawah teks.

Tentang B sedikit lebih rumit - jika kita tidak memiliki pedometer bawaan, kita tidak tahu seberapa jauh kamera telah bergerak di dunia nyata. Jadi mari kita hitung sedikit untuk saat ini dan putuskan bahwa pergerakan kamera kira-kira mulus, kita memiliki banyak bingkai (beberapa lusin per detik), dan jarak antara dua bingkai yang bertetangga kira-kira sama, yaitu. . Dan sekali lagi, kami akan sedikit memperjelas situasi ini lebih lanjut, tetapi untuk saat ini biarlah demikian.

Saatnya menulis beberapa kode

import cv2 import numpy as np f = 300 # karena kita sedang melakukan visualisasi, saya tetap memilih fokus sehingga pemandangan terlihat nyata secara kondisional B = 1 w = 852 h = 480 img1 = cv2.imread("0.jpg", 0 ) img2 = cv2.imread("1.jpg", 0) aliran = cv2.calcOpticalFlowFarneback(img1, img2, 0.5, 3, 20, 10, 5, 1.2, 0) mag, ang = cv2.cartToPolar(aliran[ .., 0], flow[..., 1]) edge = cv2.Canny(img1, 100, 200) hasil = untuk y dalam xrange(img1.shape): untuk x dalam xrange(img1.shape): jika tepi == 0: lanjutkan delta = mag jika delta == 0: lanjutkan Z = (B * f) / delta X = (Z * (x - w / 2.)) / f Y = (Z * (y - h / 2.)) / f point = np.array() result.append(point) result = np.vstack(result) def dump2ply(points): # simpan ke format .ply untuk dibuka dengan Blender dengan open("points .ply", "w") sebagai f: f.write("ply\n") f.write("format ascii 1.0\n") f.write("element vertex ()\n".format(len( poin))) f.write("property float x\n") f.write("property float y\n") f.write("property float z\n") f.write("end_header\n") untuk poin dalam poin: f.write("(:.2f) (:.2f) (:.2f)\n".format(point, point, point)) dump2ply(result)

Seperti inilah hasilnya. Saya harap GIF ini berhasil dimuat pada saat Anda membaca sejauh ini.


Untuk lebih jelasnya, saya tidak mengambil semua titik secara berurutan, tetapi hanya batas yang disorot oleh detektor Canny

Pada pandangan pertama (setidaknya bagi saya) semuanya tampak bagus - bahkan sudut antara permukaan kubus membentuk sembilan puluh derajat yang bagus. Objek di latar belakang ternyata lebih buruk (perhatikan bagaimana kontur dinding dan pintu terdistorsi), tapi hei, mungkin hanya sedikit kebisingan, dapat diatasi dengan menggunakan b HAI lebih banyak bingkai atau sesuatu yang lain.

Dari semua kesimpulan tergesa-gesa yang dapat diambil di sini, kesimpulan ini adalah yang paling jauh dari kebenaran.

5. Bagian yang tidak berfungsi

Secara umum, masalah utama ternyata adalah beberapa poin yang terdistorsi. Dan - tanda yang mengkhawatirkan, di mana sudah waktunya untuk mencurigai ada sesuatu yang salah - itu tidak terdistorsi secara acak, tetapi kira-kira di tempat yang sama, sehingga tidak mungkin untuk memperbaiki masalah dengan melapiskan titik-titik baru secara berurutan (dari bingkai lain).

Itu terlihat seperti ini:


Tangganya kusut, terkadang berubah menjadi bagian tak berbentuk dari sesuatu yang tidak dapat dipahami.

Saya mencoba memperbaikinya sejak lama, dan selama ini saya mencoba yang berikut ini:

- Menghaluskan gambar dengan aliran optik: Gaussian blur, filter median, dan filter bilateral trendi yang menghasilkan tepi tajam. Tidak ada gunanya: objek, sebaliknya, semakin kabur.
- Saya mencoba mencari garis lurus pada gambar menggunakan transformasi Hough dan mentransfernya dalam keadaan lurus yang tidak berubah. Sebagian dikerjakan, tetapi hanya di bagian tepinya - permukaannya masih terdistorsi; ditambah lagi, mustahil untuk memikirkan “bagaimana jika tidak ada garis lurus sama sekali pada gambar”.
- Saya bahkan mencoba membuat aliran optik versi saya sendiri menggunakan templateMatching OpenCV. Cara kerjanya seperti ini: untuk titik mana pun, kita membuat kotak kecil (sekitar 10x10) di sekelilingnya, dan mulai menggerakkannya dan mencari kecocokan maksimal (jika arah pergerakan diketahui, maka “keliling” dapat dibatasi). Ternyata lumayan di beberapa tempat (walaupun bekerja jelas lebih lambat dari versi aslinya):


Di sebelah kiri adalah aliran Farneback yang sudah tidak asing lagi, di sebelah kanan adalah sepeda yang dijelaskan di atas

Dari sudut pandang kebisingan, sayangnya, ternyata tidak lebih baik.

Secara umum, semuanya buruk, tapi sangat logis. Karena memang seharusnya begitu.


Ilustrasi untuk permasalahan tersebut. Pergerakan di sini masih selangkah ke kanan

Mari pilih beberapa titik hijau dari gambar di atas. Misalkan kita mengetahui arah pergerakan, dan kita akan mencari "kembaran yang bergeser" dari titik hijau kita, yang bergerak ke arah tertentu. Kapan kita memutuskan bahwa kita telah menemukan saudara kembar yang diinginkan? Ketika kita menemukan semacam "landmark", suatu area karakteristik yang mirip dengan lingkungan kita titik pangkal. Misalnya saja di pojok. Sudut dalam hal ini mudah dilacak karena cukup langka. Oleh karena itu, jika titik hijau kita adalah sebuah sudut, dan kita menemukan sudut yang sama di lingkungan tertentu, maka masalahnya terpecahkan.

Sedikit lebih rumit, namun tetap mudah, adalah situasi dengan garis vertikal (titik hijau kedua dari kiri). Mengingat kita bergerak ke kanan, kita hanya akan bertemu garis vertikal satu kali selama seluruh periode pencarian. Bayangkan kita merangkak dengan jendela pencarian di atas gambar dan kita melihat latar belakang padat, latar belakang, latar belakang lagi, garis vertikal, latar belakang lagi, latar belakang, dan latar belakang lagi. Ini juga mudah.

Masalah muncul ketika kita mencoba melacak sebidang garis yang berada sejajar dengan gerakannya. Titik merah tidak memiliki satu kandidat yang jelas untuk peran saudara kembar yang terlantar. Ada banyak sekali, semuanya berdekatan, dan tidak mungkin memilih salah satu berdasarkan metode yang kita gunakan. Ini adalah batasan fungsional aliran optik. Seperti yang diperingatkan Wikipedia kepada kita di artikel terkait, “Kita tidak dapat menyelesaikan satu persamaan ini dengan dua variabel yang tidak diketahui”, dan tidak ada yang dapat dilakukan di sini.

Tidak ada sama sekali?

Secara umum, sejujurnya, hal ini mungkin tidak sepenuhnya benar. Dapatkah kamu menemukan titik merah pada gambar sebelah kanan? Ini juga tidak terlalu sulit, tetapi untuk ini kami secara mental menggunakan beberapa metode lain - kami menemukan "titik hijau" terdekat (sudut bawah), perkirakan jaraknya dan sisihkan jarak yang sesuai pada sisi kedua kubus. Algoritma aliran optik mempunyai ruang untuk berkembang - metode ini dapat diadopsi (jika hal ini belum dilakukan).

6. Titik Hijau FTW

Faktanya, seperti yang disarankan oleh akal sehat saat ini, kita masih mencoba melakukan pekerjaan ekstra yang tidak penting untuk tujuan akhir kita - pengenalan, klasifikasi, dan kecerdasan lainnya. Mengapa kita mencoba untuk mendorong masuk dunia tiga dimensi Semua titik gambar? Bahkan saat kami bekerja dengan gambar 2D, kami biasanya tidak mencoba menggunakan setiap piksel untuk klasifikasi - kebanyakan piksel tidak memiliki nilai apa pun. informasi berguna. Mengapa tidak melakukan hal yang sama di sini?

Sebenarnya, semuanya ternyata sangat sederhana. Kami akan menghitung aliran optik yang sama, tetapi hanya untuk titik stabil "hijau". Dan omong-omong, OpenCV telah menangani kami. Hal yang kita butuhkan disebut aliran Lucas-Canade.

Akan sedikit membosankan untuk memberikan kode dan contoh untuk kasus yang sama, karena Anda mendapatkan hal yang sama, tetapi dengan jumlah poin yang jauh lebih sedikit. Mari kita lakukan hal lain: misalnya, menambahkan kemampuan untuk menangani rotasi kamera ke dalam algoritme kita. Sebelumnya, kami bergerak secara eksklusif ke samping, hal yang jarang terjadi di dunia nyata di luar jendela kereta.

Dengan munculnya rotasi, koordinat X dan Z tercampur bagi kita. Mari kita tinggalkan rumus lama untuk menghitung koordinat relatif terhadap kamera, dan kita akan mengubahnya menjadi koordinat absolut sebagai berikut (di sini - koordinat posisi kamera, alfa - sudut rotasi):

(y itu curang; ini karena kami yakin kamera tidak bergerak ke atas dan ke bawah)

Di suatu tempat di sini kita memiliki masalah dengan panjang fokus - ingat, kita memutuskan untuk mengaturnya ke sembarang? Jadi, sekarang kita memiliki kesempatan untuk mengevaluasi titik yang sama dari sudut yang berbeda, hal itu menjadi penting - tepatnya karena koordinat X dan Z mulai saling mengganggu. Faktanya, jika kita menjalankan kode yang mirip dengan yang sebelumnya dengan fokus sembarang, kita akan melihat sesuatu seperti ini:


Ini tidak jelas, tapi ini adalah upaya untuk mengatur bypass kamera di sekitar kubus biasa. Setiap frame adalah perkiraan titik-titik yang terlihat setelah rotasi kamera berikutnya. Tampilan atas, seperti di minimap.

Untungnya, kami masih memiliki aliran optik. Saat berbelok, kita dapat melihat titik mana yang menuju ke titik mana, dan menghitung koordinat titik tersebut dari dua sudut pandang. Sangat mudah untuk mendapatkan panjang fokus dari sini (ambil saja dua rumus di atas untuk nilai alfa yang berbeda, samakan koordinatnya dan nyatakan f). Jauh lebih baik:


Bukan berarti semua titik cocok satu sama lain, tapi setidaknya Anda bisa menebak bahwa ini adalah sebuah kubus.

Dan terakhir, kita perlu mengatasi kebisingan yang menyebabkan perkiraan kita tentang posisi titik-titik tidak selalu sama (lihat cincin tidak rata yang rapi pada gif di atas? Idealnya, harus ada satu titik, bukan masing-masing titik). ). Sudah ada ruang untuk kreativitas, tetapi cara yang paling memadai menurut saya seperti ini:
- ketika kita memiliki beberapa pergeseran ke samping berturut-turut, kita menggabungkan informasi dari mereka bersama-sama - jadi untuk satu titik kita akan memiliki beberapa perkiraan kedalaman sekaligus;
- saat kamera berputar, kami mencoba mencocokkan dua kumpulan titik (sebelum dan sesudah rotasi) dan mencocokkan satu sama lain. Pemasangan ini benar disebut "pendaftaran titik" (yang tidak akan pernah Anda duga jika Anda mendengar istilah tersebut di luar konteks) dan untuk ini saya menggunakan algoritma titik terdekat Iteratif dengan mencari versi python + OpenCV di Google;
- kemudian titik-titik yang berada dalam radius ambang batas (ditentukan dengan metode tetangga terdekat) bergabung menjadi satu. Untuk setiap titik, kami juga melacak sesuatu seperti "intensitas" - penghitung seberapa sering titik tersebut digabungkan dengan titik lain. Semakin besar intensitasnya, semakin besar peluang bahwa hal ini merupakan poin yang jujur ​​dan benar.

Hasilnya mungkin tidak sekokoh dadu Portal, tapi setidaknya akurat. Berikut adalah beberapa model yang dibuat ulang yang pertama kali saya muat ke Blender, memutar kamera di sekelilingnya dan menyimpan bingkai yang dihasilkan:


Kepala Profesor Dowell


Beberapa mobil acak

Aplikasi

Mari kita melihat ke belakang sedikit dan mengingat mengapa kita melakukan semua ini. Alur alasannya seperti ini:
- kita harus bisa mengenali hal-hal yang ditunjukkan dalam gambar
- tetapi gambar-gambar ini berubah setiap kali kita mengubah posisi atau melihat sesuatu yang sama dari sudut yang berbeda. Terkadang tidak dapat dikenali lagi
- ini bukan bug, tapi fitur: konsekuensi dari keterbatasan sensor mata kita yang hanya melihat sebagian objek, dan bukan keseluruhan objek
- oleh karena itu, perlu untuk menggabungkan sebagian data dari sensor dan mengumpulkan darinya gagasan tentang subjek dalam bentuk lengkapnya.

Secara umum, ini jelas merupakan sebuah masalah. Tidak hanya penglihatan. Ini lebih merupakan aturan, bukan pengecualian - sensor kami tidak mahakuasa, mereka terus-menerus melihat informasi tentang suatu objek di beberapa bagian - tetapi penasaran bagaimana semua kasus seperti itu dapat digabungkan ke dalam kerangka umum? Katakanlah (kembali ke penglihatan), mata Anda sekarang terus-menerus membuat gerakan kecil dan sangat cepat - sacades - melompat di antara objek di bidang penglihatan (dan dalam interval antara gerakan-gerakan ini, penglihatan Anda tidak berfungsi sama sekali - itulah sebabnya Anda tidak dapat melihat sacades Anda sendiri, bahkan menatap ke cermin dari jarak dekat). Otak terus-menerus bekerja keras untuk “menjahit” potongan-potongan yang dilihatnya. Ini- masalah yang sama yang baru saja kita coba selesaikan, atau masih berbeda? Persepsi ucapan saat kita bisa mencocokkan sepuluh pilihan yang berbeda pengucapan sebuah kata dengan salah satu ejaan “idealnya” juga merupakan tugas yang serupa? Lalu bagaimana dengan mereduksi sinonim menjadi satu "gambar" suatu subjek?

Jika ya, maka mungkin masalahnya lebih dari sekadar algoritma lokal pada sistem visual yang menggantikan penunjuk laser pada pemindai untuk mata kita yang belum berkembang.

Pertimbangan yang jelas mengatakan bahwa ketika kita mencoba menciptakan kembali sesuatu yang terlihat di alam, tidak ada gunanya menyalin seluruh bagian penyusunnya secara membabi buta. Untuk terbang di udara tidak diperlukan kepakan sayap dan bulu, sayap yang kaku dan daya angkat saja sudah cukup; Anda tidak memerlukan kaki mekanis untuk berlari cepat - roda akan bekerja lebih baik. Daripada meniru apa yang kita lihat, kita ingin mencari sebuah prinsip dan mengulanginya sendiri (mungkin membuatnya lebih mudah/efisien). Apa prinsip kecerdasan, analogi hukum aerodinamika untuk penerbangan, kita belum mengetahuinya. Pembelajaran mendalam dan Yang Lekun, nabinya (dan banyak orang lain setelahnya) percaya bahwa Anda perlu melihat kemampuan untuk membangun hierarki fitur yang “mendalam” dari data yang diterima. Mungkin kita bisa menambahkan satu penyempurnaan lagi pada hal ini - kemampuan untuk menggabungkan bagian-bagian data yang relevan, menganggapnya sebagai bagian dari satu objek dan menempatkannya dalam dimensi baru?

Tag: Tambahkan tag

Ada kalanya Anda benar-benar perlu mencari berdasarkan gambar dari ponsel Anda. Ya, sebagian besar dari kita tahu cara melakukan operasi seperti itu di komputer.

Semuanya sederhana di sana - setiap browser (, Google, dan sebagainya) memiliki halamannya sendiri untuk menggunakan foto sebagai permintaan.

Sebenarnya yang tersisa hanyalah menunjukkan foto asli dan mulai mencari materi yang relevan.

Bertentangan dengan pendapat beberapa pengguna, melakukan operasi seperti itu tidak kalah mudahnya.

Algoritme tindakannya sama, dan dalam beberapa kasus bahkan lebih sederhana. Anda hanya perlu mengetahui layanan atau aplikasi mana yang akan digunakan untuk ini dan bagaimana cara melakukannya dengan benar.

Tapi kami akan memberi tahu Anda 5 pilihan terbaik, yang membantu Anda menemukan sesuatu di foto.

Isi:

Google Chrome

Ini adalah browser yang sama yang secara default ada di semua ponsel cerdas dan tablet yang berfungsi.

Omong-omong, Yandex memiliki browsernya sendiri, sama seperti Google, tetapi tidak memiliki jendela dan fungsi yang sama seperti yang ditunjukkan pada gambar. Jadi tidak ada gunanya mendownloadnya.

Mata Timah

Dan ini sudah merupakan layanan khusus yang dibuat untuk memungkinkan pengguna dari seluruh dunia mencari informasi melalui foto.

Banyak profesional yang mengenalnya.

Meskipun juga dikenal di kalangan amatir, karena sangat berguna untuk melaksanakan tugas dengan bantuannya, dan memberikan hasil yang cukup informatif dan akurat.

Untuk menggunakannya, lakukan ini:

  1. Kunjungi situs resminya (tautan di bawah). Halaman sumber daya secara otomatis beradaptasi dengan perangkat Anda, dan ini cukup penting.
  2. Dan kemudian semuanya menjadi sangat jelas - hanya ada satu tombol dan bidang untuk memasukkan permintaan. Jika Anda mengklik tombol tersebut, jendela baru akan muncul di mana Anda harus menentukan lokasi file sumber. Dan kolom masukannya adalah untuk menggunakan tautan ke foto. Jika pendekatan kedua digunakan, yaitu tautan dimasukkan, Anda juga perlu mengklik ikon kaca pembesar.
  3. Setelah itu, proses akan berlangsung.

Patut dicatat bahwa TinEye memiliki algoritma yang sama sekali berbeda dari yang digunakan oleh Yandex dan Google.

Dalam kebanyakan kasus, hasilnya lebih akurat dan lebih sesuai dengan ekspektasi pengguna. Jadi, Anda harus mencoba menggunakan layanan ini.

Google Google

Di Sini kita sedang berbicara tentang aplikasi non-standar yang mencari informasi tidak hanya tentang beberapa gambar, tetapi tentang tempat di mana Anda berada dan hal-hal yang Anda lihat.

Artinya Anda bisa memotret lukisan di galeri yang Anda lihat atau makanan yang Anda lihat di toko.

Setelah itu, program akan menemukan semua informasi yang tersedia mengenai subjek yang difoto.

Perlu juga dicatat bahwa program ini memiliki mode terjemahan dengan pengenalan teks yang menyertainya di foto.

Artinya, Anda dapat mengambil gambar suatu prasasti sehingga program dapat menggunakan prasasti tersebut sebagai permintaan, dan menerjemahkannya, misalnya, dari bahasa Rusia ke bahasa Inggris.

Untuk menggunakan Google di ponsel cerdas Anda, lakukan hal berikut:

  • luncurkan aplikasi (sebelum itu, tentu saja, unduh dan instal);
  • pilih mode operasi di bawah ini;
  • mengambil gambar dengan cara yang sama seperti yang biasa Anda lakukan;
  • lihat hasilnya.

Temukan Kamera

Dan yang menutup daftar kami adalah aplikasi lain yang bekerja dengan prinsip yang sama seperti Google Google, tetapi, pada dasarnya, aplikasi ini mencari semua jenis barang di toko.

Misalnya, Anda dapat mengambil gambar beberapa kacamata hitam atau sebotol yogurt dan aplikasi akan segera menemukan semua informasi tentang produk ini.

Jika ini adalah kacamata, maka Anda akan melihat harga di berbagai rantai ritel, jenis, merek, dan sebagainya.

Pada umumnya bagi mereka yang selalu berbelanja atau sekedar rutin membeli sesuatu di toko.

Di sisi lain juga bermanfaat, misalnya bagi para orang tua yang ingin mengetahui komposisi produk yang dibelikannya untuk anaknya. Secara umum, ini adalah hal yang sangat bagus dan bermanfaat.

Cara menggunakan program ini juga sangat sederhana yaitu sebagai berikut:

  • mengambil foto;
  • tunggu sampai identifikasi terjadi;
  • lihat hasilnya.

Patut dicatat bahwa di sini Anda dapat mentransfer beberapa gambar ke koleksi khusus Anda (bagian "Favorit").