Pemahaman fitur biner independen yang kuat biner ("SINGKAT")

14

Bagaimana deskriptor dalam algoritma BRIEF cocok satu sama lain?

Bagaimana gambar template ditemukan di gambar lain? Bagaimana kita membandingkan deskriptor? Saya telah membaca artikel itu tetapi tidak mengerti bagaimana mereka melakukannya.

Mereka menulis bahwa mereka membandingkan deskriptor dengan menggunakan jarak Hamming, tetapi bagaimana invariansi terhadap perubahan pencahayaan, ukuran, dll tercapai?

maximus
sumber

Jawaban:

15

Pertama-tama, tidak ada yang namanya 'templat' dalam makalah ini - kata 'templat' memiliki arti berbeda dalam Computer Vision.

Metode yang digunakan dalam makalah ini relatif lurus ke depan. Biarkan saya menjelaskannya padamu. Ada tiga hal penting yang perlu Anda lakukan ketika melakukan tugas-tugas seperti pengenalan objek, pencocokan gambar, jahitan gambar, dan yang serupa lainnya, menggunakan Fitur Lokal

Yang penting pertama adalah Deteksi; pada langkah ini Anda ingin mendeteksi titik menarik atau titik kunci, dan apa artinya adalah Anda ingin memilih titik lokal (pada dasarnya patch kecil) yang menurut Anda menarik dalam gambar, ada banyak cara untuk melakukan itu; makalah ini tidak berkontribusi dalam bidang ini. Namun, tampaknya mereka menggunakan fitur SURF detector dan CenSurE keypoints (Anda dapat mencarinya jika Anda ingin tahu lebih banyak tentang mereka, saya tidak akan berbicara tentang langkah ini kecuali bahwa mereka menggunakan fitur seperti gradien dan sebagainya, yang berarti bahwa jika Anda memiliki foto, tidak mungkin suatu titik di tengah langit akan dipilih sebagai titik minat, itu karena piksel di sekitar titik itu semua intensitas yang sama, hal-hal yang 'sibuk' cenderung dipilih sebagai titik bunga (mis. tepi meja / gedung / sudut)).

Setelah deteksi selesai, Deskripsi Fiturmengikuti. Anda tahu titik menarik dalam gambar dan sekarang Anda ingin menggambarkannya (pada dasarnya Anda ingin menggambarkan titik / tambalan di sekitar titik menarik). SIFT adalah salah satu deskriptor fitur yang populer. Dalam tulisan ini, mereka datang dengan yang baru, yang disebut SINGKAT. SINGKAT didasarkan pada perbandingan, jadi katakanlah kita memiliki tambalan (50 piksel kali 50 piksel), kita memilih dua titik dan membandingkan intensitas kedua titik itu, jika titik pertama lebih besar dari titik kedua, kami memberikan nilainya ' 1 ', atau' 0 ', kita melakukan itu untuk sejumlah pasangan dan kita berakhir dengan serangkaian nilai boolean. Sekarang pertanyaan besarnya adalah 'bagaimana Anda memilih sepasang poin?', Di koran mereka menjelaskan 5 cara, relatif sama, saya akan menjelaskan yang pertama. Apa yang Anda lakukan adalah Anda seragam (probabilitas sama) memilih titik dari -S / 2 ke S / 2, dalam contoh kami, kami mengatakan bahwa ukuran tambalan adalah 50, jadi kami memilih titik antara -25 hingga 25. Dengan asumsi bahwa koordinat 0,0 terletak di tengah tambalan. Jadi inilah sebuah contoh;

Kami ingin memilih pasangan pertama, setiap titik terdiri dari koordinat (X, Y) jadi kami memilih koordinat X dari titik pertama secara seragam, lalu koordinat Y dari titik pertama, anggap saja (10, -1) , sekarang poin kedua; kita secara seragam memilih koordinat X untuk titik kedua, dan koordinat Y untuk titik kedua, mari kita asumsikan itu (-2,20), sekarang kita mendapatkan nilai intensitas untuk setiap titik dan melihat mana yang memiliki nilai intensitas yang lebih besar - jika yang pertama lebih besar, kami menetapkan nilai boolean pertama menjadi '1', jika tidak, kami menetapkan '0'. Kami melakukan itu untuk banyak pasangan, dan kami berakhir dengan vektor nilai boolean.

* Poin yang sangat penting: Saya menganggap ini berfungsi, Anda harus menentukan nilai seed sebelum generator acak. Artinya adalah Anda ingin memilih nilai yang sama untuk setiap tambalan - ini sangat penting karena ketika Anda membandingkan / mencocokkan tambalan, seluruh sistem akan rusak jika tidak dipilih dengan cara yang sama persis. - semoga ini masuk akal ketika Anda membaca langkah yang cocok.

Jadi, kami melakukan itu untuk setiap titik minat yang terdeteksi oleh detektor. Untuk setiap poin minat, kita akan mendapatkan vektor nilai boolean.


Sekarang untuk mencocokkan dua gambar ( langkah ketiga; pencocokan ), kami melakukan hal yang sama persis untuk gambar lainnya, kami mendeteksi, kemudian menggambarkan menggunakan SINGKAT. Misalnya, kita memiliki 10 poin minat di setiap gambar (ini selalu bisa berfungsi jika kita mendapatkan 10 poin paling menarik di setiap gambar), kami menggunakan SINGKAT untuk menggambarkan setiap tambalan menggunakan misalnya 50 pasang, sehingga setiap gambar akan dijelaskan oleh 10 vektor dari 50 nilai boolean.

Untuk membandingkan dua gambar, kami menemukan tetangga terdekat dari masing-masing vektor dari gambar pertama ke masing-masing vektor dari gambar kedua. Kami menggunakan jarak Hamming yang cukup cepat, contoh jarak hamming

hammingDistance ((0, 1, 1), (0, 0, 0)) = 2

hammingDistance ((0, 1, 1), (0, 1, 1)) = 0

hammingDistance ((0, 1, 1), (1, 0, 0)) = 3

hammingDistance ((0, 1, 1), (1, 1, 1)) = 1

Pada dasarnya berapa banyak korespondensi yang salah

Semoga itu bisa membantu

Roronoa Zoro
sumber
Terima kasih banyak, saya bisa mengerti algoritma. Tetapi saya masih memiliki beberapa pertanyaan, bagaimana dengan affine, perubahan perspektif dan perubahan pencahayaan? Akankah bit string serupa jika ada perubahan penerangan atau perspektif?
maximus
Jika jumlah iluminasi-perubahan sama untuk semua piksel, ya itu akan tetap berfungsi, jika berbeda dari piksel ke piksel (beberapa piksel iluminasi meningkat, lainnya menurun), maka itu masalah. Afinitas tampaknya bekerja dengan baik (berdasarkan hasil mereka), tetapi itu pasti akan mencapai titik di mana ia berhenti bekerja (sebenarnya dalam hasil mereka (Gbr.3) menunjukkan bahwa - Anda dapat mengunduh gambar dan melihat apa yang Wall 1 | 2, Dinding 1 | 3 sesuai dengan). Metode mereka bukan invarian rotasi (itu tidak begitu sulit untuk dilihat) dan mereka secara eksplisit menyebutkan itu.
Roronoa Zoro
Terima kasih atas penjelasannya. Saya benar-benar mengerti dengan baik deskriptor SINGKAT.